From 65e380c339135d725ee411cac90abdc94deadf24 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sat, 11 Mar 2023 13:20:31 +0100 Subject: [PATCH 001/327] std.math.exponential: Fix wrong placement of 1.0 in log1p coefficient --- std/math/exponential.d | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/std/math/exponential.d b/std/math/exponential.d index b1922037e60..2c28ebaf017 100644 --- a/std/math/exponential.d +++ b/std/math/exponential.d @@ -3033,13 +3033,13 @@ private 4.5270000862445199635215E-5, ]; static immutable double[7] logp1Q = [ - 1.0000000000000000000000E0, 6.0118660497603843919306E1, 2.1642788614495947685003E2, 3.0909872225312059774938E2, 2.2176239823732856465394E2, 8.3047565967967209469434E1, 1.5062909083469192043167E1, + 1.0000000000000000000000E0, ]; static immutable double[7] log10P = [ @@ -3101,13 +3101,13 @@ private 4.5270000862E-5, ]; static immutable float[7] logp1Q = [ - 1.00000000000E0, 6.01186604976E1, 2.16427886144E2, 3.09098722253E2, 2.21762398237E2, 8.30475659679E1, 1.50629090834E1, + 1.00000000000E0, ]; // log2 and log10 uses the same coefficients as log. @@ -3323,7 +3323,7 @@ private T logImpl(T, bool LOG1P = false)(T x) @safe pure nothrow @nogc } static foreach (F; AliasSeq!(float, double, real)) {{ - F[2][24] vals = [ + scope F[2][] vals = [ [F(1), F(0x0p+0)], [F(2), F(0x1.62e42fefa39ef358p-1)], [F(4), F(0x1.62e42fefa39ef358p+0)], [F(8), F(0x1.0a2b23f3bab73682p+1)], [F(16), F(0x1.62e42fefa39ef358p+1)], [F(32), F(0x1.bb9d3beb8c86b02ep+1)], @@ -3335,6 +3335,9 @@ private T logImpl(T, bool LOG1P = false)(T x) @safe pure nothrow @nogc [F(17), F(0x1.6aa6bc1fa7f79cfp+1)], [F(31), F(0x1.b78ce48912b59f12p+1)], [F(33), F(0x1.bf8d8f4d5b8d1038p+1)], [F(63), F(0x1.09291e8e3181b20ep+2)], [F(65), F(0x1.0b292939429755ap+2)], [F(-0), -F.infinity], [F(0), -F.infinity], + [F(0.1), F(-0x1.26bb1bbb5551582ep+1)], [F(0.25), F(-0x1.62e42fefa39ef358p+0)], + [F(0.75), F(-0x1.269621134db92784p-2)], [F(0.875), F(-0x1.1178e8227e47bde4p-3)], + [F(10), F(0x1.26bb1bbb5551582ep+1)], [F(100), F(0x1.26bb1bbb5551582ep+2)], [F(10000), F(0x1.26bb1bbb5551582ep+3)], ]; testLog(vals); @@ -3572,7 +3575,7 @@ Ldone: } static foreach (F; AliasSeq!(float, double, real)) {{ - F[2][24] vals = [ + scope F[2][] vals = [ [F(1), F(0x0p+0)], [F(2), F(0x1.34413509f79fef32p-2)], [F(4), F(0x1.34413509f79fef32p-1)], [F(8), F(0x1.ce61cf8ef36fe6cap-1)], [F(16), F(0x1.34413509f79fef32p+0)], [F(32), F(0x1.8151824c7587eafep+0)], @@ -3584,7 +3587,9 @@ Ldone: [F(17), F(0x1.3afeb354b7d9731ap+0)], [F(31), F(0x1.7dc9e145867e62eap+0)], [F(33), F(0x1.84bd545e4baeddp+0)], [F(63), F(0x1.cca1950e4511e192p+0)], [F(65), F(0x1.d01b16f9433cf7b8p+0)], [F(-0), -F.infinity], [F(0), -F.infinity], - [F(10000), F(0x1p+2)], + [F(0.1), F(-0x1p+0)], [F(0.25), F(-0x1.34413509f79fef32p-1)], + [F(0.75), F(-0x1.ffbfc2bbc7803758p-4)], [F(0.875), F(-0x1.db11ed766abf432ep-5)], + [F(10), F(0x1p+0)], [F(100), F(0x1p+1)], [F(10000), F(0x1p+2)], ]; testLog10(vals); }} @@ -3758,7 +3763,7 @@ private T log1pImpl(T)(T x) @safe pure nothrow @nogc } static foreach (F; AliasSeq!(float, double, real)) {{ - F[2][24] vals = [ + scope F[2][] vals = [ [F(1), F(0x1.62e42fefa39ef358p-1)], [F(2), F(0x1.193ea7aad030a976p+0)], [F(4), F(0x1.9c041f7ed8d336bp+0)], [F(8), F(0x1.193ea7aad030a976p+1)], [F(16), F(0x1.6aa6bc1fa7f79cfp+1)], [F(32), F(0x1.bf8d8f4d5b8d1038p+1)], @@ -3770,6 +3775,9 @@ private T log1pImpl(T)(T x) @safe pure nothrow @nogc [F(17), F(0x1.71f7b3a6b918664cp+1)], [F(31), F(0x1.bb9d3beb8c86b02ep+1)], [F(33), F(0x1.c35fc81b90df59c6p+1)], [F(63), F(0x1.0a2b23f3bab73682p+2)], [F(65), F(0x1.0c234da4a23a6686p+2)], [F(-0), F(-0x0p+0)], [F(0), F(0x0p+0)], + [F(0.1), F(0x1.8663f793c46c69cp-4)], [F(0.25), F(0x1.c8ff7c79a9a21ac4p-3)], + [F(0.75), F(0x1.1e85f5e7040d03ep-1)], [F(0.875), F(0x1.41d8fe84672ae646p-1)], + [F(10), F(0x1.32ee3b77f374bb7cp+1)], [F(100), F(0x1.275e2271bba30be4p+2)], [F(10000), F(0x1.26bbed6fbd84182ep+3)], ]; testLog1p(vals); @@ -3981,7 +3989,7 @@ Ldone: } static foreach (F; AliasSeq!(float, double, real)) {{ - F[2][24] vals = [ + scope F[2][] vals = [ [F(1), F(0x0p+0)], [F(2), F(0x1p+0)], [F(4), F(0x1p+1)], [F(8), F(0x1.8p+1)], [F(16), F(0x1p+2)], [F(32), F(0x1.4p+2)], @@ -3993,6 +4001,9 @@ Ldone: [F(17), F(0x1.0598fdbeb244c5ap+2)], [F(31), F(0x1.3d118d66c4d4e554p+2)], [F(33), F(0x1.42d75a6eb1dfb0e6p+2)], [F(63), F(0x1.7e8bc1179e0caa9cp+2)], [F(65), F(0x1.816e79685c2d2298p+2)], [F(-0), -F.infinity], [F(0), -F.infinity], + [F(0.1), F(-0x1.a934f0979a3715fcp+1)], [F(0.25), F(-0x1p+1)], + [F(0.75), F(-0x1.a8ff971810a5e182p-2)], [F(0.875), F(-0x1.8a8980abfbd32668p-3)], + [F(10), F(0x1.a934f0979a3715fcp+1)], [F(100), F(0x1.a934f0979a3715fcp+2)], [F(10000), F(0x1.a934f0979a3715fcp+3)], ]; testLog2(vals); @@ -4178,7 +4189,7 @@ private T logbImpl(T)(T x) @trusted pure nothrow @nogc } static foreach (F; AliasSeq!(float, double, real)) {{ - F[2][24] vals = [ + scope F[2][] vals = [ [F(1), F(0x0p+0)], [F(2), F(0x1p+0)], [F(4), F(0x1p+1)], [F(8), F(0x1.8p+1)], [F(16), F(0x1p+2)], [F(32), F(0x1.4p+2)], @@ -4190,6 +4201,9 @@ private T logbImpl(T)(T x) @trusted pure nothrow @nogc [F(17), F(0x1p+2)], [F(31), F(0x1p+2)], [F(33), F(0x1.4p+2)], [F(63), F(0x1.4p+2)], [F(65), F(0x1.8p+2)], [F(-0), -F.infinity], [F(0), -F.infinity], + [F(0.1), F(-0x1p+2)], [F(0.25), F(-0x1p+1)], + [F(0.75), F(-0x1p+0)], [F(0.875), F(-0x1p+0)], + [F(10), F(0x1.8p+1)], [F(100), F(0x1.8p+2)], [F(10000), F(0x1.ap+3)], ]; testLogb(vals); From 5b3afa59874768d42118441cbf5136ec9577127c Mon Sep 17 00:00:00 2001 From: RazvanN7 Date: Tue, 14 Mar 2023 18:29:41 +0200 Subject: [PATCH 002/327] Fix std.random to not use this in static contexts --- std/random.d | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/std/random.d b/std/random.d index 93be764abd1..066ed1713e2 100644 --- a/std/random.d +++ b/std/random.d @@ -812,7 +812,7 @@ Parameters for the generator. // Bitmasks used in the 'twist' part of the algorithm private enum UIntType lowerMask = (cast(UIntType) 1u << r) - 1, - upperMask = (~lowerMask) & this.max; + upperMask = (~lowerMask) & max; /* Collection of all state variables @@ -905,17 +905,17 @@ Parameters for the generator. private static void seedImpl(UIntType value, ref State mtState) @nogc { mtState.data[$ - 1] = value; - static if (this.max != UIntType.max) + static if (max != UIntType.max) { - mtState.data[$ - 1] &= this.max; + mtState.data[$ - 1] &= max; } foreach_reverse (size_t i, ref e; mtState.data[0 .. $ - 1]) { e = f * (mtState.data[i + 1] ^ (mtState.data[i + 1] >> (w - 2))) + cast(UIntType)(n - (i + 1)); - static if (this.max != UIntType.max) + static if (max != UIntType.max) { - e &= this.max; + e &= max; } } From 67a47cf39d52b3cb3ae4117c0237415e03737f8a Mon Sep 17 00:00:00 2001 From: RazvanN7 Date: Mon, 13 Mar 2023 14:52:47 +0200 Subject: [PATCH 003/327] Fix Issue 23776 - getSymbolsByUDA fails to fetch symbols from module --- std/traits.d | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/std/traits.d b/std/traits.d index bbbca69b22b..f4d011bbad9 100644 --- a/std/traits.d +++ b/std/traits.d @@ -8812,6 +8812,30 @@ template getSymbolsByUDA(alias symbol, alias attribute) static assert(is(getSymbolsByUDA!(X, X) == AliasSeq!())); } +// https://issues.dlang.org/show_bug.cgi?id=23776 +@safe pure nothrow @nogc unittest +{ + struct T + { + struct Tag {} + @Tag struct MyStructA {} + @Tag struct MyStructB {} + @Tag struct MyStructC {} + } + alias tcomponents = getSymbolsByUDA!(T, T.Tag); + static assert(tcomponents.length > 0); + + struct X + { + struct Tag {} + @Tag enum MyEnumA; + @Tag enum MyEnumB; + @Tag enum MyEnumC; + } + alias xcomponents = getSymbolsByUDA!(X, X.Tag); + static assert(xcomponents.length > 0); +} + // getSymbolsByUDA produces wrong result if one of the symbols having the UDA is a function // https://issues.dlang.org/show_bug.cgi?id=18624 @safe unittest @@ -8866,7 +8890,8 @@ private template getSymbolsByUDAImpl(alias symbol, alias attribute, names...) alias member = __traits(getMember, symbol, names[0]); // Filtering not compiled members such as alias of basic types. - static if (isAliasSeq!member || isType!member) + static if (isAliasSeq!member || + (isType!member && !isAggregateType!member && !is(member == enum))) { alias getSymbolsByUDAImpl = tail; } From 8d03d52db44d6a9ce7325f326f54950bb5247da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nordl=C3=B6w?= Date: Wed, 15 Mar 2023 11:40:01 +0100 Subject: [PATCH 004/327] Add doc hints between read and readText --- std/file.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/std/file.d b/std/file.d index b7bd3fc91cf..5b8925d5eb4 100644 --- a/std/file.d +++ b/std/file.d @@ -310,6 +310,8 @@ Params: Returns: Untyped array of bytes _read. Throws: $(LREF FileException) on error. + +See_Also: $(REF readText, std,file) for reading and validating a text file. */ void[] read(R)(R name, size_t upTo = size_t.max) @@ -497,6 +499,8 @@ version (linux) @safe unittest Throws: $(LREF FileException) if there is an error reading the file, $(REF UTFException, std, utf) on UTF decoding error. + + See_Also: $(REF read, std,file) for reading a binary file. +/ S readText(S = string, R)(auto ref R name) if (isSomeString!S && (isSomeFiniteCharInputRange!R || is(StringTypeOf!R))) From d8c627e037d994f3121b7a45f5c05fdfd2269994 Mon Sep 17 00:00:00 2001 From: Robert burner Schadek Date: Tue, 14 Mar 2023 13:07:26 +0100 Subject: [PATCH 005/327] Better std.algorithm.comparison.clamp error messages --- changelog/clamp_assert_message.dd | 8 ++++++++ std/algorithm/comparison.d | 23 ++++++++++++----------- 2 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 changelog/clamp_assert_message.dd diff --git a/changelog/clamp_assert_message.dd b/changelog/clamp_assert_message.dd new file mode 100644 index 00000000000..abaf3929c49 --- /dev/null +++ b/changelog/clamp_assert_message.dd @@ -0,0 +1,8 @@ +Better static assert messages for `std.algorithm.comparison.clamp` + +Until now, `clamp` used a template constraint to check if the passed types +could be used. If they were not, it was very tedious to figure out why. + +As the template constraint is not used for overload resolution +the constrains are moved into static asserts with expressive error +messages. diff --git a/std/algorithm/comparison.d b/std/algorithm/comparison.d index 5ecb4f601a5..5c70960a711 100644 --- a/std/algorithm/comparison.d +++ b/std/algorithm/comparison.d @@ -577,19 +577,20 @@ Returns: and `T3` are different. */ T1 clamp(T1, T2, T3)(T1 val, T2 lower, T3 upper) -if (is(typeof(val.lessThan(lower) ? lower : val.greaterThan(upper) ? upper : val)) - && (is(T2 : T1) && is(T3 : T1))) -// cannot use : -// `if (is(typeof(val.lessThan(lower) ? lower : val.greaterThan(upper) ? upper : val) : T1)) -// because of https://issues.dlang.org/show_bug.cgi?id=16235. -// Once that is fixed, we can simply use the ternary in both the template constraint -// and the template body -in { + static assert(is(T2 : T1), "T2 of type '", T2.stringof + , "' must be implicitly convertible to type of T1 '" + , T1.stringof, "'"); + static assert(is(T3 : T1), "T3 of type '", T3.stringof + , "' must be implicitly convertible to type of T1 '" + , T1.stringof, "'"); + assert(!lower.greaterThan(upper), "Lower can't be greater than upper."); -} -do -{ + + // `if (is(typeof(val.lessThan(lower) ? lower : val.greaterThan(upper) ? upper : val) : T1)) + // because of https://issues.dlang.org/show_bug.cgi?id=16235. + // Once that is fixed, we can simply use the ternary in both the template constraint + // and the template body if (val.lessThan(lower)) return lower; else if (val.greaterThan(upper)) From 3c74c2b88a9ac726ab824d64e0c359ad7f0d3a57 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 21 Mar 2023 22:01:15 +1300 Subject: [PATCH 006/327] Add an introduction to the std.json documentation, fix some mistakes in std.curl and replace broken links in std.stdio (#8724) * Fix some mistakes in curl.d * Add an introduction for std.json * Fix more documentation in curl.d * Fix broken links in std.stdio documentation --- std/json.d | 5 ++++- std/net/curl.d | 35 +++++++++++++++++------------------ std/stdio.d | 28 ++++++++++++++-------------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/std/json.d b/std/json.d index 1a743125693..219af714373 100644 --- a/std/json.d +++ b/std/json.d @@ -1,7 +1,10 @@ // Written in the D programming language. /** -JavaScript Object Notation +Implements functionality to read and write JavaScript Object Notation values. + +JavaScript Object Notation is a lightweight data interchange format commonly used in web services and configuration files. +It's easy for humans to read and write, and it's easy for machines to parse and generate. Copyright: Copyright Jeremie Pelletier 2008 - 2009. License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). diff --git a/std/net/curl.d b/std/net/curl.d index 42a34b9bd55..2fcbf943122 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -23,7 +23,7 @@ SMTP) ) ) Note: -You may need to link to the $(B curl) library, e.g. by adding $(D "libs": ["curl"]) +You may need to link with the $(B curl) library, e.g. by adding $(D "libs": ["curl"]) to your $(B dub.json) file if you are using $(LINK2 http://code.dlang.org, DUB). Windows x86 note: @@ -32,20 +32,19 @@ $(LINK2 https://downloads.dlang.org/other/index.html, download archive page). This module is not available for iOS, tvOS or watchOS. -Compared to using libcurl directly this module allows simpler client code for +Compared to using libcurl directly, this module allows simpler client code for common uses, requires no unsafe operations, and integrates better with the rest -of the language. Futhermore it provides $(MREF_ALTTEXT range, std,range) +of the language. Furthermore it provides $(MREF_ALTTEXT range, std,range) access to protocols supported by libcurl both synchronously and asynchronously. A high level and a low level API are available. The high level API is built entirely on top of the low level one. The high level API is for commonly used functionality such as HTTP/FTP get. The -$(LREF byLineAsync) and $(LREF byChunkAsync) provides asynchronous -$(MREF_ALTTEXT range, std,range) that performs the request in another -thread while handling a line/chunk in the current thread. +$(LREF byLineAsync) and $(LREF byChunkAsync) functions asynchronously +perform the request given, outputting the fetched content into a $(MREF_ALTTEXT range, std,range). -The low level API allows for streaming and other advanced features. +The low level API allows for streaming, setting request headers and cookies, and other advanced features. $(BOOKTABLE Cheat Sheet, $(TR $(TH Function Name) $(TH Description) @@ -79,18 +78,18 @@ byChunk("dlang.org", 10)) returns a range of ubyte[10] containing the dlang.org web page.) ) $(TR $(TDNW $(LREF byLineAsync)) $(TD $(D -byLineAsync("dlang.org")) returns a range of char[] containing the dlang.org web - page asynchronously.) +byLineAsync("dlang.org")) asynchronously returns a range of char[] containing the dlang.org web + page.) ) $(TR $(TDNW $(LREF byChunkAsync)) $(TD $(D -byChunkAsync("dlang.org", 10)) returns a range of ubyte[10] containing the -dlang.org web page asynchronously.) +byChunkAsync("dlang.org", 10)) asynchronously returns a range of ubyte[10] containing the +dlang.org web page.) ) $(LEADINGROW Low level ) -$(TR $(TDNW $(LREF HTTP)) $(TD `HTTP` struct for advanced usage)) -$(TR $(TDNW $(LREF FTP)) $(TD `FTP` struct for advanced usage)) -$(TR $(TDNW $(LREF SMTP)) $(TD `SMTP` struct for advanced usage)) +$(TR $(TDNW $(LREF HTTP)) $(TD Struct for advanced HTTP usage)) +$(TR $(TDNW $(LREF FTP)) $(TD Struct for advanced FTP usage)) +$(TR $(TDNW $(LREF SMTP)) $(TD Struct for advanced SMTP usage)) ) @@ -135,10 +134,10 @@ http.perform(); First, an instance of the reference-counted HTTP struct is created. Then the custom delegates are set. These will be called whenever the HTTP instance receives a header and a data buffer, respectively. In this simple example, the -headers are written to stdout and the data is ignored. If the request should be +headers are written to stdout and the data is ignored. If the request is stopped before it has finished then return something less than data.length from the onReceive callback. See $(LREF onReceiveHeader)/$(LREF onReceive) for more -information. Finally the HTTP request is effected by calling perform(), which is +information. Finally, the HTTP request is performed by calling perform(), which is synchronous. Source: $(PHOBOSSRC std/net/curl.d) @@ -147,8 +146,8 @@ Copyright: Copyright Jonas Drewsen 2011-2012 License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: Jonas Drewsen. Some of the SMTP code contributed by Jimmy Cao. -Credits: The functionally is based on $(HTTP curl.haxx.se/libcurl, libcurl). - LibCurl is licensed under an MIT/X derivative license. +Credits: The functionality is based on $(HTTP curl.haxx.se/libcurl, libcurl). + libcurl is licensed under an MIT/X derivative license. */ /* Copyright Jonas Drewsen 2011 - 2012. diff --git a/std/stdio.d b/std/stdio.d index 92e4906b4f4..a606d6ac31d 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -534,7 +534,7 @@ Params: name = range or string representing the file _name stdioOpenmode = range or string represting the open mode (with the same semantics as in the C standard library - $(HTTP cplusplus.com/reference/clibrary/cstdio/fopen.html, fopen) + $(HTTP cplusplus.com/reference/cstdio/fopen, fopen) function) Throws: `ErrnoException` if the file could not be opened. @@ -619,7 +619,7 @@ file. Detaches from the current file (throwing on failure), and then attempts to _open file `name` with mode `stdioOpenmode`. The mode has the same semantics as in the C standard library $(HTTP -cplusplus.com/reference/clibrary/cstdio/fopen.html, fopen) function. +cplusplus.com/reference/cstdio/fopen, fopen) function. Throws: `ErrnoException` in case of error. */ @@ -933,7 +933,7 @@ Throws: `ErrnoException` in case of error. /** Returns `true` if the file is at end (see $(HTTP -cplusplus.com/reference/clibrary/cstdio/feof.html, feof)). +cplusplus.com/reference/cstdio/feof, feof)). Throws: `Exception` if the file is not opened. */ @@ -961,7 +961,7 @@ Throws: `Exception` if the file is not opened. /** If the file is closed or not yet opened, returns `true`. Otherwise, returns -$(HTTP cplusplus.com/reference/clibrary/cstdio/ferror.html, ferror) for +$(HTTP cplusplus.com/reference/cstdio/ferror, ferror) for the file handle. */ @property bool error() const @trusted pure nothrow @@ -1018,7 +1018,7 @@ Throws: `ErrnoException` on failure if closing the file. /** If the file was closed or not yet opened, succeeds vacuously. Otherwise closes the file (by calling $(HTTP -cplusplus.com/reference/clibrary/cstdio/fclose.html, fclose)), +cplusplus.com/reference/cstdio/fclose, fclose)), throwing on error. Even if an exception is thrown, afterwards the $(D File) object is empty. This is different from `detach` in that it always closes the file; consequently, all other `File` objects @@ -1046,7 +1046,7 @@ Throws: `ErrnoException` on error. /** If the file is closed or not yet opened, succeeds vacuously. Otherwise, returns -$(HTTP cplusplus.com/reference/clibrary/cstdio/_clearerr.html, +$(HTTP cplusplus.com/reference/cstdio/clearerr, _clearerr) for the file handle. */ void clearerr() @safe pure nothrow @@ -1058,7 +1058,7 @@ _clearerr) for the file handle. /** Flushes the C `FILE` buffers. -Calls $(HTTP cplusplus.com/reference/clibrary/cstdio/_fflush.html, _fflush) +Calls $(HTTP cplusplus.com/reference/cstdio/fflush, _fflush) for the file handle. Throws: `Exception` if the file is not opened or if the call to `fflush` fails. @@ -1125,7 +1125,7 @@ Throws: `Exception` if the file is not opened or if the OS call fails. } /** -Calls $(HTTP cplusplus.com/reference/clibrary/cstdio/fread.html, fread) for the +Calls $(HTTP cplusplus.com/reference/cstdio/fread, fread) for the file handle. The number of items to read and the size of each item is inferred from the size and type of the input array, respectively. @@ -1220,7 +1220,7 @@ Throws: `ErrnoException` if the file is not opened or the call to `fread` fails. } /** -Calls $(HTTP cplusplus.com/reference/clibrary/cstdio/fwrite.html, fwrite) for the file +Calls $(HTTP cplusplus.com/reference/cstdio/fwrite, fwrite) for the file handle. The number of items to write and the size of each item is inferred from the size and type of the input array, respectively. An error is thrown if the buffer could not be written in its entirety. @@ -1290,7 +1290,7 @@ Throws: `ErrnoException` if the file is not opened or if the call to `fwrite` fa } /** -Calls $(HTTP cplusplus.com/reference/clibrary/cstdio/fseek.html, fseek) +Calls $(HTTP cplusplus.com/reference/cstdio/fseek, fseek) for the file handle to move its position indicator. Params: @@ -1420,7 +1420,7 @@ Throws: `Exception` if the file is not opened. } /** -Calls $(HTTP cplusplus.com/reference/clibrary/cstdio/_rewind.html, _rewind) +Calls $(HTTP cplusplus.com/reference/cstdio/rewind, _rewind) for the file handle. Throws: `Exception` if the file is not opened. @@ -1434,7 +1434,7 @@ Throws: `Exception` if the file is not opened. } /** -Calls $(HTTP cplusplus.com/reference/clibrary/cstdio/_setvbuf.html, _setvbuf) for +Calls $(HTTP cplusplus.com/reference/cstdio/setvbuf, _setvbuf) for the file handle. Throws: `Exception` if the file is not opened. @@ -1450,7 +1450,7 @@ Throws: `Exception` if the file is not opened. } /** -Calls $(HTTP cplusplus.com/reference/clibrary/cstdio/_setvbuf.html, +Calls $(HTTP cplusplus.com/reference/cstdio/setvbuf, _setvbuf) for the file handle. Throws: `Exception` if the file is not opened. @@ -2253,7 +2253,7 @@ $(CONSOLE /** Returns a temporary file by calling - $(HTTP cplusplus.com/reference/clibrary/cstdio/_tmpfile.html, _tmpfile). + $(HTTP cplusplus.com/reference/cstdio/tmpfile, _tmpfile). Note that the created file has no $(LREF name).*/ static File tmpfile() @safe { From 17b1a11afd74f9f8a69af93d77d4548a557e1b89 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Fri, 24 Mar 2023 21:32:56 +0100 Subject: [PATCH 007/327] Remove redundant `assumeUnique` in std.path --- std/path.d | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/std/path.d b/std/path.d index 4b5a7efe07f..63d60d1d77f 100644 --- a/std/path.d +++ b/std/path.d @@ -1758,7 +1758,6 @@ immutable(C)[] buildNormalizedPath(C)(const(C[])[] paths...) if (isSomeChar!C) { import std.array : array; - import std.exception : assumeUnique; const(C)[] chained; foreach (path; paths) @@ -1770,7 +1769,7 @@ if (isSomeChar!C) } auto result = asNormalizedPath(chained); // .array returns a copy, so it is unique - return () @trusted { return assumeUnique(result.array); } (); + return result.array; } /// From 72da9916851572cfc84e447d61c01cd39ce48523 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 31 Mar 2023 13:38:47 +0100 Subject: [PATCH 008/327] [std.algorithm.searching] Fix 2 typos in docs (#8728) --- std/algorithm/searching.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 15f7ca99e66..e2c99363d5a 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1313,8 +1313,8 @@ returned. Params: map = custom accessor for the comparison key selector = custom mapping for the extrema selection - seed = custom seed to use as initial element r = Range from which the extreme value will be selected + seedElement = custom seed to use as initial element Returns: The extreme value according to `map` and `selector` of the passed-in values. @@ -1552,7 +1552,7 @@ Complexity: `find` performs $(BIGOH walkLength(haystack)) evaluations of `pred`. There are specializations that improve performance by taking advantage of $(REF_ALTTEXT bidirectional, isBidirectionalRange, std,range,primitives) - or $(REF_ALTTEXT random access, isRandomAccess, std,range,primitives) + or $(REF_ALTTEXT random access, isRandomAccessRange, std,range,primitives) ranges (where possible). Params: From 9c0723519a838449efeb09a81519cc721b5f867e Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sat, 1 Apr 2023 18:16:31 +0000 Subject: [PATCH 009/327] purge changelog --- changelog/grapheme_walker_update.dd | 8 -------- changelog/joiner_assert_message.dd | 8 -------- changelog/sort_assert_messaged.dd | 8 -------- 3 files changed, 24 deletions(-) delete mode 100644 changelog/grapheme_walker_update.dd delete mode 100644 changelog/joiner_assert_message.dd delete mode 100644 changelog/sort_assert_messaged.dd diff --git a/changelog/grapheme_walker_update.dd b/changelog/grapheme_walker_update.dd deleted file mode 100644 index 490a3085896..00000000000 --- a/changelog/grapheme_walker_update.dd +++ /dev/null @@ -1,8 +0,0 @@ -Unicode grapheme walking updated to conform to Unicode version 15 - -Up until now `graphemeStride`, `byGrapheme` and `decodeGrapheme` functions in -`std.uni` have used obsolete rules from earlier Unicode standards. - -This release brings grapheme breaking rules up to date with Unicode version 15. -This means Phobos functions now recognise extended pictogram sequences and -prepend characters. diff --git a/changelog/joiner_assert_message.dd b/changelog/joiner_assert_message.dd deleted file mode 100644 index a638ba623b3..00000000000 --- a/changelog/joiner_assert_message.dd +++ /dev/null @@ -1,8 +0,0 @@ -Better static assert messages for `std.algorithm.iteration.joiner` - -Up until now `filter` used a template constraint to check if the passed Data -could be used. If it were not, it was very tedious to figure out why. - -As the template constraint is not used to overload the symbol template -function, the constrains are move into static asserts with expressive error -messages. diff --git a/changelog/sort_assert_messaged.dd b/changelog/sort_assert_messaged.dd deleted file mode 100644 index c80f33f7abd..00000000000 --- a/changelog/sort_assert_messaged.dd +++ /dev/null @@ -1,8 +0,0 @@ -Better static assert messages for `std.algorithm.sorting.sort` - -Up until now `sort` used a template constraint to check if the passed Range -could be used. If it were not, it was very tedious to figure out why. - -As the template constraint is not used to overload the symbol template -function, the constrains are move into static asserts with expressive error -messages. From 128f75181c00a805cce29ccbd2b8927105b5eb88 Mon Sep 17 00:00:00 2001 From: Ate Eskola Date: Fri, 7 Apr 2023 13:41:04 +0300 Subject: [PATCH 010/327] Optimised std.range.chain (#8713) * Optimised std.range.chain Chain now remembers which subrange has the first and the last elements, eliminating needless work on each usage. * Style fix. * No longer needless `.empty` calls in the constructor. * Improvements based on Razvans observations. --- std/range/package.d | 470 ++++++++++++++++++++++++++++++++------------ 1 file changed, 340 insertions(+), 130 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index 6689a38009b..99fb733f63a 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -235,7 +235,7 @@ public import std.range.primitives; public import std.typecons : Flag, Yes, No; import std.internal.attributes : betterC; -import std.meta : allSatisfy, anySatisfy, staticMap; +import std.meta : aliasSeqOf, allSatisfy, anySatisfy, staticMap; import std.traits : CommonType, isCallable, isFloatingPoint, isIntegral, isPointer, isSomeFunction, isStaticArray, Unqual, isInstanceOf; @@ -872,6 +872,11 @@ result is a range that offers the `front`, `popFront`, and $(D empty) primitives. If all input ranges offer random access and $(D length), `Chain` offers them as well. +Note that repeated random access of the resulting range is likely +to perform somewhat badly since lengths of the ranges in the chain have to be +added up for each random access operation. Random access to elements of +the first remaining range is still efficient. + If only one range is offered to `Chain` or `chain`, the $(D Chain) type exits the picture by aliasing itself directly to that range's type. @@ -907,7 +912,12 @@ if (Ranges.length > 0 && enum sameET = is(.ElementType!A == RvalueElementType); } - enum bool allSameType = allSatisfy!(sameET, R); + enum bool allSameType = allSatisfy!(sameET, R), + bidirectional = allSatisfy!(isBidirectionalRange, R), + mobileElements = allSatisfy!(hasMobileElements, R), + assignableElements = allSameType + && allSatisfy!(hasAssignableElements, R); + alias ElementType = RvalueElementType; static if (allSameType && allSatisfy!(hasLvalueElements, R)) @@ -925,17 +935,44 @@ if (Ranges.length > 0 && } } - // This is the entire state R source; - // TODO: use a vtable (or more) instead of linear iteration + size_t frontIndex; + // Always points to index one past the last non-empty range, + // because otherwise decrementing while pointing to first range + // would overflow to size_t.max. + static if (bidirectional) size_t backIndex; + else enum backIndex = source.length; public: this(R input) { - // Must be static foreach because of https://issues.dlang.org/show_bug.cgi?id=21209 - static foreach (i, v; input) + frontIndex = source.length; + static if (bidirectional) backIndex = 0; + + foreach (i, ref v; input) source[i] = v; + + // We do this separately to avoid invoking `empty` needlessly. + // While not recommended, a range may depend on side effects of + // `empty` call. + foreach (i, ref v; input) if (!v.empty) + { + frontIndex = i; + static if (bidirectional) backIndex = i+1; + break; + } + + // backIndex is already set in the first loop to + // as frontIndex+1, so we'll use that if we don't find a + // non-empty range here. + static if (bidirectional) + static foreach_reverse (i; 1 .. R.length + 1) { - source[i] = v; + if (i <= frontIndex + 1) return; + if (!input[i-1].empty) + { + backIndex = i; + return; + } } } @@ -948,120 +985,207 @@ if (Ranges.length > 0 && } else { - @property bool empty() + @property bool empty() => frontIndex >= backIndex; + } + + static if (allSatisfy!(isForwardRange, R)) + { + @property auto save() { - foreach (i, Unused; R) + auto saveI(size_t i)() => source[i].save; + + // TODO: this has the constructor needlessly refind + // frontIndex and backIndex. It'd be better to just copy + // those from `.this`. + auto saveResult = + Result(staticMap!(saveI, aliasSeqOf!(R.length.iota))); + + return saveResult; + } + } + + void popFront() + { + sw1: switch (frontIndex) + { + static foreach (i; 0 .. R.length) { - if (!source[i].empty) return false; + case i: + source[i].popFront(); + break sw1; } - return true; + + case R.length: + assert(0, "Attempt to `popFront` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - } - static if (allSatisfy!(isForwardRange, R)) - @property auto save() + sw2: switch (frontIndex) { - auto saveSource(size_t len)() + static foreach (i; 0 .. R.length) { - import std.typecons : tuple; - static assert(len > 0); - static if (len == 1) - { - return tuple(source[0].save); - } - else + case i: + if (source[i].empty) { - return saveSource!(len - 1)() ~ - tuple(source[len - 1].save); + frontIndex++; + goto case; } + else break sw2; } - return Result(saveSource!(R.length).expand); - } - void popFront() - { - foreach (i, Unused; R) - { - if (source[i].empty) continue; - source[i].popFront(); - return; + // Only possible to reach from goto of previous case. + case R.length: + break; + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to `popFront` of empty `chain` range"); } @property auto ref front() { - foreach (i, Unused; R) + switch (frontIndex) { - if (source[i].empty) continue; - return fixRef(source[i].front); + static foreach (i; 0 .. R.length) + { + case i: + return fixRef(source[i].front); + } + + case R.length: + assert(0, "Attempt to get `front` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to get `front` of empty `chain` range"); } - static if (allSameType && allSatisfy!(hasAssignableElements, R)) + static if (assignableElements) { // @@@BUG@@@ //@property void front(T)(T v) if (is(T : RvalueElementType)) @property void front(RvalueElementType v) { - foreach (i, Unused; R) + sw: switch (frontIndex) { - if (source[i].empty) continue; - source[i].front = v; - return; + static foreach (i; 0 .. R.length) + { + case i: + source[i].front = v; + break sw; + } + + case R.length: + assert(0, "Attempt to set `front` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to set `front` of empty `chain` range"); } } - static if (allSatisfy!(hasMobileElements, R)) + static if (mobileElements) { RvalueElementType moveFront() { - foreach (i, Unused; R) + switch (frontIndex) { - if (source[i].empty) continue; - return source[i].moveFront(); + static foreach (i; 0 .. R.length) + { + case i: + return source[i].moveFront(); + } + + case R.length: + assert(0, "Attempt to `moveFront` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to `moveFront` of empty `chain` range"); } } - static if (allSatisfy!(isBidirectionalRange, R)) + static if (bidirectional) { @property auto ref back() { - foreach_reverse (i, Unused; R) + switch (backIndex) { - if (source[i].empty) continue; - return fixRef(source[i].back); + static foreach_reverse (i; 1 .. R.length + 1) + { + case i: + return fixRef(source[i-1].back); + } + + case 0: + assert(0, "Attempt to get `back` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to get `back` of empty `chain` range"); } void popBack() { - foreach_reverse (i, Unused; R) + sw1: switch (backIndex) { - if (source[i].empty) continue; - source[i].popBack(); - return; + static foreach_reverse (i; 1 .. R.length + 1) + { + case i: + source[i-1].popBack(); + break sw1; + } + + case 0: + assert(0, "Attempt to `popFront` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); + } + + sw2: switch (backIndex) + { + static foreach_reverse (i; 1 .. R.length + 1) + { + case i: + if (source[i-1].empty) + { + backIndex--; + goto case; + } + else break sw2; + } + + // Only possible to reach from goto of previous case. + case 0: + break; + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to `popBack` of empty `chain` range"); } - static if (allSatisfy!(hasMobileElements, R)) + static if (mobileElements) { RvalueElementType moveBack() { - foreach_reverse (i, Unused; R) + switch (backIndex) { - if (source[i].empty) continue; - return source[i].moveBack(); + static foreach_reverse (i; 1 .. R.length + 1) + { + case i: + return source[i-1].moveBack(); + } + + case 0: + assert(0, "Attempt to `moveBack` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to `moveBack` of empty `chain` range"); } } @@ -1069,13 +1193,21 @@ if (Ranges.length > 0 && { @property void back(RvalueElementType v) { - foreach_reverse (i, Unused; R) + sw: switch (backIndex) { - if (source[i].empty) continue; - source[i].back = v; - return; + static foreach_reverse (i; 1 .. R.length + 1) + { + case i: + source[i-1].back = v; + break sw; + } + + case 0: + assert(0, "Attempt to set `back` of empty `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to set `back` of empty `chain` range"); } } } @@ -1084,11 +1216,24 @@ if (Ranges.length > 0 && { @property size_t length() { - size_t result; - foreach (i, Unused; R) + size_t result = 0; + sw: switch (frontIndex) { - result += source[i].length; + static foreach (i; 0 .. R.length) + { + case i: + result += source[i].length; + if (backIndex == i+1) break sw; + else goto case; + } + + case R.length: + break; + + default: + assert(0, "Internal library error. Please report it."); } + return result; } @@ -1099,64 +1244,91 @@ if (Ranges.length > 0 && { auto ref opIndex(size_t index) { - foreach (i, Range; R) + switch (frontIndex) { - static if (isInfinite!(Range)) + static foreach (i; 0 .. R.length) { - return source[i][index]; - } - else - { - immutable length = source[i].length; - if (index < length) return fixRef(source[i][index]); - index -= length; + case i: + static if (!isInfinite!(R[i])) + { + immutable length = source[i].length; + if (index >= length) + { + index -= length; + goto case; + } + } + + return fixRef(source[i][index]); } + + case R.length: + assert(0, "Attempt to access out-of-bounds index of `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to access out-of-bounds index of `chain` range"); } - static if (allSatisfy!(hasMobileElements, R)) + static if (mobileElements) { RvalueElementType moveAt(size_t index) { - foreach (i, Range; R) + switch (frontIndex) { - static if (isInfinite!(Range)) + static foreach (i; 0 .. R.length) { + case i: + static if (!isInfinite!(R[i])) + { + immutable length = source[i].length; + if (index >= length) + { + index -= length; + goto case; + } + } + return source[i].moveAt(index); } - else - { - immutable length = source[i].length; - if (index < length) return source[i].moveAt(index); - index -= length; - } + + case R.length: + assert(0, "Attempt to move out-of-bounds index of `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to move out-of-bounds index of `chain` range"); } } static if (allSameType && allSatisfy!(hasAssignableElements, R)) void opIndexAssign(ElementType v, size_t index) { - foreach (i, Range; R) + sw: switch (frontIndex) { - static if (isInfinite!(Range)) + static foreach (i; 0 .. R.length) { - source[i][index] = v; - } - else - { - immutable length = source[i].length; - if (index < length) + case i: + static if (!isInfinite!(R[i])) { - source[i][index] = v; - return; + immutable length = source[i].length; + if (index >= length) + { + index -= length; + goto case; + } } - index -= length; + + source[i][index] = v; + break sw; } + + case R.length: + assert(0, "Attempt to write out-of-bounds index of `chain` range"); + + default: + assert(0, "Internal library error. Please report it."); } - assert(false, "Attempt to write out-of-bounds index of `chain` range"); } } @@ -1164,40 +1336,74 @@ if (Ranges.length > 0 && auto opSlice(size_t begin, size_t end) return scope { auto result = this; - foreach (i, Unused; R) + + sw: switch (frontIndex) { - immutable len = result.source[i].length; - if (len < begin) + static foreach (i; 0 .. R.length) { - result.source[i] = result.source[i] - [len .. len]; - begin -= len; - } - else - { - result.source[i] = result.source[i] - [begin .. len]; - break; + case i: + immutable len = result.source[i].length; + if (len <= begin) + { + result.source[i] = result.source[i] + [len .. len]; + begin -= len; + result.frontIndex++; + goto case; + } + else + { + result.source[i] = result.source[i] + [begin .. len]; + break sw; + } } + + case R.length: + assert(begin == 0, + "Attempt to access out-of-bounds slice of `chain` range"); + break; + + default: + assert(0, "Internal library error. Please report it."); } - auto cut = length; - cut = cut <= end ? 0 : cut - end; - foreach_reverse (i, Unused; R) + + // Overflow intentional if end index too big. + // This will trigger the bounds check failure below. + auto cut = length - end; + + sw2: switch (backIndex) { - immutable len = result.source[i].length; - if (cut > len) - { - result.source[i] = result.source[i] - [0 .. 0]; - cut -= len; - } - else + static foreach_reverse (i; 1 .. R.length + 1) { - result.source[i] = result.source[i] - [0 .. len - cut]; - break; + case i: + immutable len = result.source[i-1].length; + if (len <= cut) + { + result.source[i-1] = result.source[i-1] + [0 .. 0]; + cut -= len; + result.backIndex--; + goto case; + } + else + { + result.source[i-1] = result.source[i-1] + [0 .. len - cut]; + break sw2; + } } + + case 0: + assert(cut == 0, end > length? + "Attempt to access out-of-bounds slice of `chain` range": + "Attempt to access negative length slice of `chain` range"); + break sw2; + + default: + assert(0, "Internal library error. Please report it."); } + return result; } } @@ -1293,6 +1499,10 @@ pure @safe nothrow unittest auto s = chain(arr1, arr2, arr3); assert(s[5] == 6); assert(equal(s, witness)); + assert(s[4 .. 6].equal(arr2)); + assert(s[2 .. 5].equal([3, 4, 5])); + assert(s[0 .. 0].empty); + assert(s[7 .. $].empty); assert(s[5] == 6); } { From 106038f2eaa70045bf25b29bb1c789304a6065f7 Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Mon, 10 Apr 2023 04:08:33 -0400 Subject: [PATCH 011/327] Add bind to the header table (#8731) --- std/functional.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/std/functional.d b/std/functional.d index 70aaee39aeb..588a9c8a547 100644 --- a/std/functional.d +++ b/std/functional.d @@ -48,6 +48,9 @@ $(TR $(TH Function Name) $(TH Description) $(TD Create a unary or binary function from a string. Most often used when defining algorithms on ranges. )) + $(TR $(TD $(LREF bind)) + $(TD Passes the fields of a struct as arguments to a function. + )) )) Copyright: Copyright Andrei Alexandrescu 2008 - 2009. From 01a12f919e624b3f7b73171ae03d4d0a91a0b87b Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 10 Apr 2023 17:10:18 +0100 Subject: [PATCH 012/327] [std.algorithm.searching] Don't instantiate template pred in `all` and `any` constraints (#8715) Fixes Issue 23769 - Lambda isn't a unary predicate for lambda that doesn't compile. --- std/algorithm/searching.d | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index e2c99363d5a..f891056a78c 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -119,12 +119,9 @@ template all(alias pred = "a") Performs (at most) $(BIGOH range.length) evaluations of `pred`. +/ bool all(Range)(Range range) - if (isInputRange!Range) + if (isInputRange!Range && + (__traits(isTemplate, pred) || is(typeof(unaryFun!pred(range.front))))) { - static assert(is(typeof(unaryFun!pred(range.front))), - "`" ~ (isSomeString!(typeof(pred)) - ? pred.stringof[1..$-1] : pred.stringof) - ~ "` isn't a unary predicate function for range.front"); import std.functional : not; return find!(not!(unaryFun!pred))(range).empty; @@ -172,7 +169,8 @@ template any(alias pred = "a") Performs (at most) $(BIGOH range.length) evaluations of `pred`. +/ bool any(Range)(Range range) - if (isInputRange!Range && is(typeof(unaryFun!pred(range.front)))) + if (isInputRange!Range && + (__traits(isTemplate, pred) || is(typeof(unaryFun!pred(range.front))))) { return !find!pred(range).empty; } From 51e5a1b9cb5ccfeeedc1df20a0fb7cc3f2c04f95 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Mon, 17 Apr 2023 10:46:33 +0100 Subject: [PATCH 013/327] Add bind to the header table (#8731) (#8733) Co-authored-by: Steven Schveighoffer --- std/functional.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/std/functional.d b/std/functional.d index 70aaee39aeb..588a9c8a547 100644 --- a/std/functional.d +++ b/std/functional.d @@ -48,6 +48,9 @@ $(TR $(TH Function Name) $(TH Description) $(TD Create a unary or binary function from a string. Most often used when defining algorithms on ranges. )) + $(TR $(TD $(LREF bind)) + $(TD Passes the fields of a struct as arguments to a function. + )) )) Copyright: Copyright Andrei Alexandrescu 2008 - 2009. From 336730e4716bad99be9bb93e43560bc676f9191d Mon Sep 17 00:00:00 2001 From: Hiroki Noda Date: Mon, 17 Apr 2023 18:47:12 +0900 Subject: [PATCH 014/327] std.regex: Refactor kicked (#8732) --- std/regex/internal/backtracking.d | 7 +------ std/regex/internal/thompson.d | 7 +------ 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/std/regex/internal/backtracking.d b/std/regex/internal/backtracking.d index 21766fc2d0c..ac73f70f0f3 100644 --- a/std/regex/internal/backtracking.d +++ b/std/regex/internal/backtracking.d @@ -73,12 +73,7 @@ final: override @property ref size_t refCount() { return _refCount; } override @property ref const(RegEx) pattern(){ return re; } - static if (__traits(hasMember,Stream, "search")) - { - enum kicked = true; - } - else - enum kicked = false; + enum kicked = __traits(hasMember, Stream, "search"); static size_t initialMemory(const ref RegEx re) { diff --git a/std/regex/internal/thompson.d b/std/regex/internal/thompson.d index ab28d37ecb7..f4643ae1bcb 100644 --- a/std/regex/internal/thompson.d +++ b/std/regex/internal/thompson.d @@ -759,12 +759,7 @@ final: } - static if (__traits(hasMember,Stream, "search")) - { - enum kicked = true; - } - else - enum kicked = false; + enum kicked = __traits(hasMember, Stream, "search"); static size_t getThreadSize(const ref Regex!Char re) { From c26d25eecd231d057c77717b4b5d56cc361eaf1e Mon Sep 17 00:00:00 2001 From: FeepingCreature <540727+FeepingCreature@users.noreply.github.com> Date: Tue, 18 Apr 2023 10:33:17 +0200 Subject: [PATCH 015/327] Implement Rebindable for non-class/non-array types. (#8722) Note that you cannot access a reference to the contained value in struct Rebindable. --- changelog/rebindable_all_types.dd | 10 ++ std/typecons.d | 279 ++++++++++++++++++++++++++++-- 2 files changed, 277 insertions(+), 12 deletions(-) create mode 100644 changelog/rebindable_all_types.dd diff --git a/changelog/rebindable_all_types.dd b/changelog/rebindable_all_types.dd new file mode 100644 index 00000000000..8855a383cff --- /dev/null +++ b/changelog/rebindable_all_types.dd @@ -0,0 +1,10 @@ +`std.typecons.Rebindable` now supports all types + +`Rebindable` can now be used to store and rebind values of any type, including +`immutable struct` values. + +To ensure const safety is preserved, the stored values cannot be accessed +by reference. + +The implementation used for all previously supported types (classes, interfaces +and arrays) is unchanged. diff --git a/std/typecons.d b/std/typecons.d index bde8439a5fc..689bc627e67 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -2332,7 +2332,7 @@ break the soundness of D's type system and does not incur any of the risks usually associated with `cast`. Params: - T = An object, interface, array slice type, or associative array type. + T = Any type. */ template Rebindable(T) if (is(T == class) || is(T == interface) || isDynamicArray!T || isAssociativeArray!T) @@ -2395,15 +2395,120 @@ if (is(T == class) || is(T == interface) || isDynamicArray!T || isAssociativeArr static assert(!__traits(compiles, &r.get())); } +/// ditto +struct Rebindable(T) +if (!is(T == class) && !is(T == interface) && !isDynamicArray!T && !isAssociativeArray!T) +{ +private: + align(T.alignof) + static struct Payload + { + static if (hasIndirections!T) + { + void[T.sizeof] data; + } + else + { + ubyte[T.sizeof] data; + } + } + + Payload data; + +public: + + static if (!__traits(compiles, { T value; })) + { + @disable this(); + } + + /** + * Constructs a `Rebindable` from a given value. + */ + this(T value) @trusted + { + set(value); + } + + /** + * Overwrites the currently stored value with `value`. + */ + void opAssign(this This)(T value) @trusted + { + clear; + set(value); + } + + /** + * Returns the value currently stored in the `Rebindable`. + */ + T get(this This)() @property @trusted + { + return *cast(T*) &this.data; + } + + ~this() @trusted + { + clear; + } + + /// + alias get this; + +private: + + void set(this This)(T value) + { + // As we're escaping a copy of `value`, deliberately leak a copy: + static union DontCallDestructor + { + T value; + } + DontCallDestructor copy = DontCallDestructor(value); + this.data = *cast(Payload*) © + } + + void clear(this This)() + { + // work around reinterpreting cast being impossible in CTFE + if (__ctfe) + { + return; + } + + // call possible struct destructors + .destroy!(No.initialize)(*cast(T*) &this.data); + } +} + +/// Using Rebindable in a generic algorithm: @safe unittest { - class CustomToHash + import std.range.primitives : front, popFront; + + // simple version of std.algorithm.searching.maxElement + typeof(R.init.front) maxElement(R)(R r) { - override size_t toHash() const nothrow @trusted { return 42; } + auto max = rebindable(r.front); + r.popFront; + foreach (e; r) + if (e > max) + max = e; // Rebindable allows const-correct reassignment + return max; } - Rebindable!(immutable(CustomToHash)) a = new immutable CustomToHash(); - assert(a.toHash() == 42, "Rebindable!A should offer toHash()" - ~ " by forwarding to A.toHash()."); + struct S + { + char[] arr; + alias arr this; // for comparison + } + // can't convert to mutable + const S cs; + static assert(!__traits(compiles, { S s = cs; })); + + alias CS = const S; + CS[] arr = [CS("harp"), CS("apple"), CS("pot")]; + CS ms = maxElement(arr); + assert(ms.arr == "pot"); } // https://issues.dlang.org/show_bug.cgi?id=18615 @@ -2453,6 +2558,34 @@ if (is(T == class) || is(T == interface) || isDynamicArray!T || isAssociativeArr ~ " comparable against Object itself and use Object.opEquals."); } +/// +@system unittest +{ + static struct S + { + int* ptr; + } + S s = S(new int); + + const cs = s; + // Can't assign s.ptr to cs.ptr + static assert(!__traits(compiles, {s = cs;})); + + Rebindable!(const S) rs = s; + assert(rs.ptr is s.ptr); + // rs.ptr is const + static assert(!__traits(compiles, {rs.ptr = null;})); + + // Can't assign s.ptr to rs.ptr + static assert(!__traits(compiles, {s = rs;})); + + const S cs2 = rs; + // Rebind rs + rs = cs2; + rs = S(); + assert(rs.ptr is null); +} + // https://issues.dlang.org/show_bug.cgi?id=18755 @safe unittest { @@ -2473,13 +2606,119 @@ if (is(T == class) || is(T == interface) || isDynamicArray!T || isAssociativeArr })); } +@safe unittest +{ + class CustomToHash + { + override size_t toHash() const nothrow @trusted { return 42; } + } + Rebindable!(immutable(CustomToHash)) a = new immutable CustomToHash(); + assert(a.toHash() == 42, "Rebindable!A should offer toHash()" + ~ " by forwarding to A.toHash()."); +} + +// Test Rebindable!immutable +@safe unittest +{ + static struct S + { + int* ptr; + } + S s = S(new int); + + Rebindable!(immutable S) ri = S(new int); + assert(ri.ptr !is null); + static assert(!__traits(compiles, {ri.ptr = null;})); + + // ri is not compatible with mutable S + static assert(!__traits(compiles, {s = ri;})); + static assert(!__traits(compiles, {ri = s;})); + + auto ri2 = ri; + assert(ri2.ptr == ri.ptr); + + const S cs3 = ri; + static assert(!__traits(compiles, {ri = cs3;})); + + immutable S si = ri; + // Rebind ri + ri = si; + ri = S(); + assert(ri.ptr is null); + + // Test RB!immutable -> RB!const + Rebindable!(const S) rc = ri; + assert(rc.ptr is null); + ri = S(new int); + rc = ri; + assert(rc.ptr !is null); + + // test rebindable, opAssign + rc.destroy; + assert(rc.ptr is null); + rc = rebindable(cs3); + rc = rebindable(si); + assert(rc.ptr !is null); + + ri.destroy; + assert(ri.ptr is null); + ri = rebindable(si); + assert(ri.ptr !is null); +} + +// Test disabled default ctor +@safe unittest +{ + static struct ND + { + int i; + @disable this(); + this(int i) inout {this.i = i;} + } + static assert(!__traits(compiles, Rebindable!ND())); + + Rebindable!(const ND) rb = const ND(1); + assert(rb.i == 1); + rb = immutable ND(2); + assert(rb.i == 2); + rb = rebindable(const ND(3)); + assert(rb.i == 3); + static assert(!__traits(compiles, rb.i++)); +} + +// Test copying +@safe unittest +{ + int del; + int post; + struct S + { + int* ptr; + int level; + this(this) + { + post++; + level++; + } + ~this() + { + del++; + } + } + + // test ref count + { + Rebindable!S rc = S(new int); + } + assert(post == del - 1); +} + /** Convenience function for creating a `Rebindable` using automatic type inference. Params: - obj = A reference to an object, interface, associative array, or an array slice - to initialize the `Rebindable` with. + obj = A reference to a value to initialize the `Rebindable` with. Returns: A newly constructed `Rebindable` initialized with the given reference. @@ -2514,6 +2753,26 @@ if (is(T == class) || is(T == interface) || isDynamicArray!T || isAssociativeArr assert(c3.payload == 2); } +/// ditto +Rebindable!T rebindable(T)(T value) +if (!is(T == class) && !is(T == interface) && !isDynamicArray!T && !isAssociativeArray!T + && !is(T : Rebindable!U, U)) +{ + return Rebindable!T(value); +} + +/// +@safe unittest +{ + immutable struct S + { + int[] array; + } + auto s1 = [3].idup.rebindable; + s1 = [4].idup.rebindable; + assert(s1 == [4]); +} + /** This function simply returns the `Rebindable` object passed in. It's useful in generic programming cases when a given object may be either a regular @@ -2626,10 +2885,6 @@ Rebindable!T rebindable(T)(Rebindable!T obj) static assert(is(Rebindable!(T[]) == T[])); } - // https://issues.dlang.org/show_bug.cgi?id=12046 - static assert(!__traits(compiles, Rebindable!(int[1]))); - static assert(!__traits(compiles, Rebindable!(const int[1]))); - // Pull request 3341 Rebindable!(immutable int[int]) pr3341 = [123:345]; assert(pr3341[123] == 345); From 656ae7905ef5e20b4e87b831ee210ed43af52293 Mon Sep 17 00:00:00 2001 From: FeepingCreature <540727+FeepingCreature@users.noreply.github.com> Date: Thu, 20 Apr 2023 00:59:19 +0200 Subject: [PATCH 016/327] Fix issue 22785: `joiner` should `Unqual` child ranges. (#8737) * Fix issue 22785: `joiner` should `Unqual` child ranges. This allows use with `immutable T[][]` and similar. --------- Co-authored-by: Petar Kirov --- std/algorithm/iteration.d | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index 82360763adc..9f5a6ac7bc9 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -3632,18 +3632,18 @@ auto joiner(RoR, Separator)(RoR r, Separator sep) /// Ditto auto joiner(RoR)(RoR r) -if (isInputRange!RoR && isInputRange!(ElementType!RoR)) +if (isInputRange!RoR && isInputRange!(Unqual!(ElementType!RoR))) { static struct Result { private: RoR _items; - ElementType!RoR _current; + Unqual!(ElementType!RoR) _current; enum isBidirectional = isForwardRange!RoR && isForwardRange!(ElementType!RoR) && isBidirectionalRange!RoR && isBidirectionalRange!(ElementType!RoR); static if (isBidirectional) { - ElementType!RoR _currentBack; + Unqual!(ElementType!RoR) _currentBack; bool reachedFinalElement; } @@ -4293,6 +4293,28 @@ if (isInputRange!RoR && isInputRange!(ElementType!RoR)) assert([only(S(null))].joiner.front == S(null)); } +// https://issues.dlang.org/show_bug.cgi?id=22785 +@safe unittest +{ + + import std.algorithm.iteration : joiner, map; + import std.array : array; + + static immutable struct S + { + int value; + } + + static immutable struct T + { + S[] arr; + } + + auto range = [T([S(3)]), T([S(4), S(5)])]; + + assert(range.map!"a.arr".joiner.array == [S(3), S(4), S(5)]); +} + /++ Implements the homonym function (also known as `accumulate`, $(D compress), `inject`, or `foldl`) present in various programming From b818901e6351d8fb8ef75cba11df3278a0a25bcf Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Tue, 18 Apr 2023 11:08:45 +0200 Subject: [PATCH 017/327] Fix issue 22786 (immutable element in maxElement) by always using Rebindable. --- std/algorithm/searching.d | 50 ++++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index f891056a78c..44663084e1f 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1292,17 +1292,6 @@ if (isInputRange!R && private enum bool hasConstEmptyMember(T) = is(typeof(((const T* a) => (*a).empty)(null)) : bool); -// Rebindable doesn't work with structs -// see: https://github.com/dlang/phobos/pull/6136 -private template RebindableOrUnqual(T) -{ - import std.typecons : Rebindable; - static if (is(T == class) || is(T == interface) || isDynamicArray!T || isAssociativeArray!T) - alias RebindableOrUnqual = Rebindable!T; - else - alias RebindableOrUnqual = Unqual!T; -} - /** Iterates the passed range and selects the extreme element with `less`. If the extreme element occurs multiple time, the first occurrence will be @@ -1326,10 +1315,19 @@ in } do { + import std.typecons : Rebindable; + alias Element = ElementType!Range; - RebindableOrUnqual!Element seed = r.front; + Rebindable!Element seed = r.front; r.popFront(); - return extremum!(map, selector)(r, seed); + static if (is(Rebindable!Element == T[], T)) + { + return extremum!(map, selector)(r, seed); + } + else + { + return extremum!(map, selector)(r, seed.get); + } } private auto extremum(alias map, alias selector = "a < b", Range, @@ -1339,13 +1337,14 @@ if (isInputRange!Range && !isInfinite!Range && !is(CommonType!(ElementType!Range, RangeElementType) == void) && is(typeof(unaryFun!map(ElementType!(Range).init)))) { + import std.typecons : Rebindable; + alias mapFun = unaryFun!map; alias selectorFun = binaryFun!selector; alias Element = ElementType!Range; alias CommonElement = CommonType!(Element, RangeElementType); - RebindableOrUnqual!CommonElement extremeElement = seedElement; - + Rebindable!CommonElement extremeElement = seedElement; // if we only have one statement in the loop, it can be optimized a lot better static if (__traits(isSame, map, a => a)) @@ -1406,7 +1405,15 @@ if (isInputRange!Range && !isInfinite!Range && } } } - return extremeElement; + // Rebindable is an alias to T for arrays + static if (is(typeof(extremeElement) == T[], T)) + { + return extremeElement; + } + else + { + return extremeElement.get; + } } private auto extremum(alias selector = "a < b", Range)(Range r) @@ -1522,6 +1529,17 @@ if (isInputRange!Range && !isInfinite!Range && assert(arr.extremum!"a.val".val == 0); } +// https://issues.dlang.org/show_bug.cgi?id=22786 +@nogc @safe nothrow pure unittest +{ + struct S + { + immutable int value; + } + + assert([S(5), S(6)].extremum!"a.value" == S(5)); +} + // find /** Finds an individual element in an $(REF_ALTTEXT input range, isInputRange, std,range,primitives). From 2f6b2efaf741ca19f9cc92fca1c91f6a19f8f26c Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Tue, 18 Apr 2023 12:04:06 +0200 Subject: [PATCH 018/327] Change struct Rebindable to just use `cast()` if this is sufficient. This works better at compiletime. --- std/algorithm/searching.d | 4 ++ std/typecons.d | 99 +++++++++++++++++++++++++++++++-------- 2 files changed, 84 insertions(+), 19 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 44663084e1f..ee318c88a0f 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1498,6 +1498,10 @@ if (isInputRange!Range && !isInfinite!Range && assert(d.extremum!`a > b` == 10); assert(d.extremum!(a => a, `a > b`) == 10); } + + // compiletime + enum ctExtremum = iota(1, 5).extremum; + assert(ctExtremum == 1); } @nogc @safe nothrow pure unittest diff --git a/std/typecons.d b/std/typecons.d index 689bc627e67..d267e711e6a 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -2400,20 +2400,31 @@ struct Rebindable(T) if (!is(T == class) && !is(T == interface) && !isDynamicArray!T && !isAssociativeArray!T) { private: - align(T.alignof) - static struct Payload + static if (isAssignable!(typeof(cast() T.init))) { - static if (hasIndirections!T) - { - void[T.sizeof] data; - } - else + enum useQualifierCast = true; + + typeof(cast() T.init) data; + } + else + { + enum useQualifierCast = false; + + align(T.alignof) + static struct Payload { - ubyte[T.sizeof] data; + static if (hasIndirections!T) + { + void[T.sizeof] data; + } + else + { + ubyte[T.sizeof] data; + } } - } - Payload data; + Payload data; + } public: @@ -2427,7 +2438,14 @@ public: */ this(T value) @trusted { - set(value); + static if (useQualifierCast) + { + this.data = cast() value; + } + else + { + set(value); + } } /** @@ -2444,12 +2462,22 @@ public: */ T get(this This)() @property @trusted { - return *cast(T*) &this.data; + static if (useQualifierCast) + { + return cast(T) this.data; + } + else + { + return *cast(T*) &this.data; + } } - ~this() @trusted + static if (!useQualifierCast) { - clear; + ~this() @trusted + { + clear; + } } /// @@ -2459,13 +2487,20 @@ private: void set(this This)(T value) { - // As we're escaping a copy of `value`, deliberately leak a copy: - static union DontCallDestructor + static if (useQualifierCast) { - T value; + this.data = cast() value; + } + else + { + // As we're escaping a copy of `value`, deliberately leak a copy: + static union DontCallDestructor + { + T value; + } + DontCallDestructor copy = DontCallDestructor(value); + this.data = *cast(Payload*) © } - DontCallDestructor copy = DontCallDestructor(value); - this.data = *cast(Payload*) © } void clear(this This)() @@ -2713,6 +2748,32 @@ private: assert(post == del - 1); } +@safe unittest +{ + int del; + int post; + struct S + { + immutable int x; + int level; + this(this) + { + post++; + level++; + } + ~this() + { + del++; + } + } + + // test ref count + { + Rebindable!S rc = S(0); + } + assert(post == del - 1); +} + /** Convenience function for creating a `Rebindable` using automatic type inference. From 3ccd2783ab946fb04088c3eda7d1952c9514fb77 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 24 Apr 2023 02:54:42 -0700 Subject: [PATCH 019/327] clarify documentation for std.traits.isIntegral (#8741) --- std/traits.d | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/std/traits.d b/std/traits.d index 666c1b29866..689f0aef809 100644 --- a/std/traits.d +++ b/std/traits.d @@ -6202,8 +6202,15 @@ enum bool isBoolean(T) = __traits(isUnsigned, T) && is(T : bool); } /** - * Detect whether `T` is a built-in integral type. Types `bool`, - * `char`, `wchar`, and `dchar` are not considered integral. + * Detect whether `T` is a built-in integral type. + * Integral types are `byte`, `ubyte`, `short`, `ushort`, `int`, `uint`, `long`, `ulong`, `cent`, `ucent`, + * and enums with an integral type as its base type. + * Params: + * T = type to test + * Returns: + * `true` if `T` is an integral type + * Note: + * this is not the same as $(LINK2 https://dlang.org/spec/traits.html#isIntegral, `__traits(isIntegral)`) */ template isIntegral(T) { From a3a4bdbb273c79c36153f9c428ec9930d907edd0 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 24 Apr 2023 10:55:48 +0100 Subject: [PATCH 020/327] Fix cstdio links (#8740) * Fix cstdio links Fixes Issue 23834 - std.file : File links to c functions are invalid and need updating * Fix whitespace * No need for prefix underscore --- std/stdio.d | 50 ++++++++++++++++++++------------------------------ 1 file changed, 20 insertions(+), 30 deletions(-) diff --git a/std/stdio.d b/std/stdio.d index a606d6ac31d..5ed685fe7fc 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -43,6 +43,8 @@ License: $(HTTP boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: $(HTTP digitalmars.com, Walter Bright), $(HTTP erdani.org, Andrei Alexandrescu), Alex Rønne Petersen +Macros: +CSTDIO=$(HTTP cplusplus.com/reference/cstdio/$1/, $1) */ module std.stdio; @@ -534,8 +536,7 @@ Params: name = range or string representing the file _name stdioOpenmode = range or string represting the open mode (with the same semantics as in the C standard library - $(HTTP cplusplus.com/reference/cstdio/fopen, fopen) - function) + $(CSTDIO fopen) function) Throws: `ErrnoException` if the file could not be opened. */ @@ -618,8 +619,7 @@ file. /** Detaches from the current file (throwing on failure), and then attempts to _open file `name` with mode `stdioOpenmode`. The mode has the -same semantics as in the C standard library $(HTTP -cplusplus.com/reference/cstdio/fopen, fopen) function. +same semantics as in the C standard library $(CSTDIO fopen) function. Throws: `ErrnoException` in case of error. */ @@ -735,8 +735,7 @@ Reuses the `File` object to either open a different file, or change the file mode. If `name` is `null`, the mode of the currently open file is changed; otherwise, a new file is opened, reusing the C `FILE*`. The function has the same semantics as in the C standard -library $(HTTP cplusplus.com/reference/cstdio/freopen/, freopen) -function. +library $(CSTDIO freopen) function. Note: Calling `reopen` with a `null` `name` is not implemented in all C runtimes. @@ -832,8 +831,8 @@ Throws: `ErrnoException` in case of error. Params: fd = File descriptor to associate with this `File`. stdioOpenmode = Mode to associate with this File. The mode has the same semantics - semantics as in the C standard library - $(HTTP cplusplus.com/reference/cstdio/fopen/, fdopen) function, and must be compatible with `fd`. + semantics as in the C standard library $(CSTDIO fdopen) function, + and must be compatible with `fd`. */ void fdopen(int fd, scope const(char)[] stdioOpenmode = "rb") @safe { @@ -932,8 +931,7 @@ Throws: `ErrnoException` in case of error. } /** -Returns `true` if the file is at end (see $(HTTP -cplusplus.com/reference/cstdio/feof, feof)). +Returns `true` if the file is at end (see $(CSTDIO feof)). Throws: `Exception` if the file is not opened. */ @@ -961,8 +959,7 @@ Throws: `Exception` if the file is not opened. /** If the file is closed or not yet opened, returns `true`. Otherwise, returns -$(HTTP cplusplus.com/reference/cstdio/ferror, ferror) for -the file handle. +$(CSTDIO ferror) for the file handle. */ @property bool error() const @trusted pure nothrow { @@ -1017,8 +1014,7 @@ Throws: `ErrnoException` on failure if closing the file. /** If the file was closed or not yet opened, succeeds vacuously. Otherwise -closes the file (by calling $(HTTP -cplusplus.com/reference/cstdio/fclose, fclose)), +closes the file (by calling $(CSTDIO fclose)), throwing on error. Even if an exception is thrown, afterwards the $(D File) object is empty. This is different from `detach` in that it always closes the file; consequently, all other `File` objects @@ -1046,8 +1042,7 @@ Throws: `ErrnoException` on error. /** If the file is closed or not yet opened, succeeds vacuously. Otherwise, returns -$(HTTP cplusplus.com/reference/cstdio/clearerr, -_clearerr) for the file handle. +$(CSTDIO clearerr) for the file handle. */ void clearerr() @safe pure nothrow { @@ -1058,8 +1053,7 @@ _clearerr) for the file handle. /** Flushes the C `FILE` buffers. -Calls $(HTTP cplusplus.com/reference/cstdio/fflush, _fflush) -for the file handle. +Calls $(CSTDIO fflush) for the file handle. Throws: `Exception` if the file is not opened or if the call to `fflush` fails. */ @@ -1125,7 +1119,7 @@ Throws: `Exception` if the file is not opened or if the OS call fails. } /** -Calls $(HTTP cplusplus.com/reference/cstdio/fread, fread) for the +Calls $(CSTDIO fread) for the file handle. The number of items to read and the size of each item is inferred from the size and type of the input array, respectively. @@ -1220,7 +1214,7 @@ Throws: `ErrnoException` if the file is not opened or the call to `fread` fails. } /** -Calls $(HTTP cplusplus.com/reference/cstdio/fwrite, fwrite) for the file +Calls $(CSTDIO fwrite) for the file handle. The number of items to write and the size of each item is inferred from the size and type of the input array, respectively. An error is thrown if the buffer could not be written in its entirety. @@ -1290,7 +1284,7 @@ Throws: `ErrnoException` if the file is not opened or if the call to `fwrite` fa } /** -Calls $(HTTP cplusplus.com/reference/cstdio/fseek, fseek) +Calls $(CSTDIO fseek) for the file handle to move its position indicator. Params: @@ -1374,7 +1368,7 @@ Throws: `Exception` if the file is not opened. } /** -Calls $(HTTP cplusplus.com/reference/cstdio/ftell.html, ftell) +Calls $(CSTDIO ftell) for the managed file handle, which returns the current value of the position indicator of the file handle. @@ -1420,8 +1414,7 @@ Throws: `Exception` if the file is not opened. } /** -Calls $(HTTP cplusplus.com/reference/cstdio/rewind, _rewind) -for the file handle. +Calls $(CSTDIO rewind) for the file handle. Throws: `Exception` if the file is not opened. */ @@ -1434,8 +1427,7 @@ Throws: `Exception` if the file is not opened. } /** -Calls $(HTTP cplusplus.com/reference/cstdio/setvbuf, _setvbuf) for -the file handle. +Calls $(CSTDIO setvbuf) for the file handle. Throws: `Exception` if the file is not opened. `ErrnoException` if the call to `setvbuf` fails. @@ -1450,8 +1442,7 @@ Throws: `Exception` if the file is not opened. } /** -Calls $(HTTP cplusplus.com/reference/cstdio/setvbuf, -_setvbuf) for the file handle. +Calls $(CSTDIO setvbuf) for the file handle. Throws: `Exception` if the file is not opened. `ErrnoException` if the call to `setvbuf` fails. @@ -2252,8 +2243,7 @@ $(CONSOLE } /** - Returns a temporary file by calling - $(HTTP cplusplus.com/reference/cstdio/tmpfile, _tmpfile). + Returns a temporary file by calling $(CSTDIO tmpfile). Note that the created file has no $(LREF name).*/ static File tmpfile() @safe { From 8a9cfa26779a04dcf59d1d16194be69b9d3efea2 Mon Sep 17 00:00:00 2001 From: FeepingCreature <540727+FeepingCreature@users.noreply.github.com> Date: Mon, 24 Apr 2023 11:57:21 +0200 Subject: [PATCH 021/327] Fix issue 19642: slide!(No.withPartial): Correctly handle first slide exhausting input range. (#8738) --- std/range/package.d | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index 99fb733f63a..dd05d1b7ffc 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -8995,7 +8995,8 @@ public: { // `nextSource` is used to "look one step into the future" and check for the end // this means `nextSource` is advanced by `stepSize` on every `popFront` - nextSource = source.save.drop(windowSize); + nextSource = source.save; + auto poppedElems = nextSource.popFrontN(windowSize); } if (source.empty) @@ -9008,7 +9009,7 @@ public: { static if (needsEndTracker) { - if (nextSource.empty) + if (poppedElems < windowSize) hasShownPartialBefore = true; } else @@ -9016,14 +9017,13 @@ public: if (source.length <= windowSize) hasShownPartialBefore = true; } - } else { // empty source range is needed, s.t. length, slicing etc. works properly static if (needsEndTracker) { - if (nextSource.empty) + if (poppedElems < windowSize) _empty = true; } else @@ -9980,6 +9980,15 @@ public: assert([1].map!(x => x).slide(2).equal!equal([[1]])); } +// https://issues.dlang.org/show_bug.cgi?id=19642 +@safe unittest +{ + import std.algorithm.comparison : equal; + import std.algorithm.iteration : splitter; + + assert("ab cd".splitter(' ').slide!(No.withPartial)(2).equal!equal([["ab", "cd"]])); +} + private struct OnlyResult(Values...) if (Values.length > 1) { From 2bd1b833f813556557a0144ebd4acc889a3594fd Mon Sep 17 00:00:00 2001 From: Denis Feklushkin Date: Fri, 28 Apr 2023 17:17:21 +0300 Subject: [PATCH 022/327] Redundant stack grow direction checks removed --- .../allocator/building_blocks/region.d | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/std/experimental/allocator/building_blocks/region.d b/std/experimental/allocator/building_blocks/region.d index 8c397849f43..a23746a236b 100644 --- a/std/experimental/allocator/building_blocks/region.d +++ b/std/experimental/allocator/building_blocks/region.d @@ -695,25 +695,15 @@ struct InSituRegion(size_t size, size_t minAlign = platformAlignment) import std.conv : to; import std.traits : hasMember; import std.typecons : Ternary; + import core.thread.types : isStackGrowingDown; static assert(minAlign.isGoodStaticAlignment); static assert(size >= minAlign); - version (X86) enum growDownwards = Yes.growDownwards; - else version (X86_64) enum growDownwards = Yes.growDownwards; - else version (ARM) enum growDownwards = Yes.growDownwards; - else version (AArch64) enum growDownwards = Yes.growDownwards; - else version (HPPA) enum growDownwards = No.growDownwards; - else version (PPC) enum growDownwards = Yes.growDownwards; - else version (PPC64) enum growDownwards = Yes.growDownwards; - else version (RISCV32) enum growDownwards = Yes.growDownwards; - else version (RISCV64) enum growDownwards = Yes.growDownwards; - else version (MIPS32) enum growDownwards = Yes.growDownwards; - else version (MIPS64) enum growDownwards = Yes.growDownwards; - else version (SPARC) enum growDownwards = Yes.growDownwards; - else version (SPARC64) enum growDownwards = Yes.growDownwards; - else version (SystemZ) enum growDownwards = Yes.growDownwards; - else static assert(0, "Dunno how the stack grows on this architecture."); + static if (isStackGrowingDown) + enum growDownwards = Yes.growDownwards; + else + enum growDownwards = No.growDownwards; @disable this(this); From d35dafbde8427afb639da8989809b587ba1f28eb Mon Sep 17 00:00:00 2001 From: WebFreak001 Date: Mon, 1 May 2023 17:41:25 +0200 Subject: [PATCH 023/327] fix 14478: support non-copyable elements in many range algorithms --- std/range/package.d | 132 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 119 insertions(+), 13 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index dd05d1b7ffc..7a724b0f718 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -313,12 +313,16 @@ if (isBidirectionalRange!(Unqual!Range)) { @property void front(ElementType!R val) { - source.back = val; + import std.algorithm.mutation : move; + + source.back = move(val); } @property void back(ElementType!R val) { - source.front = val; + import std.algorithm.mutation : move; + + source.front = move(val); } } @@ -330,7 +334,9 @@ if (isBidirectionalRange!(Unqual!Range)) { void opIndexAssign(ElementType!R val, size_t n) { - source[retroIndex(n)] = val; + import std.algorithm.mutation : move; + + source[retroIndex(n)] = move(val); } } @@ -474,6 +480,19 @@ pure @safe nothrow @nogc unittest foreach (x; data.retro) {} } +pure @safe nothrow unittest +{ + import std.algorithm.comparison : equal; + + static struct S { + int v; + @disable this(this); + } + + immutable foo = [S(1), S(2), S(3)]; + auto r = retro(foo); + assert(equal(r, [S(3), S(2), S(1)])); +} /** Iterates range `r` with stride `n`. If the range is a @@ -585,7 +604,9 @@ do { @property void front(ElementType!R val) { - source.front = val; + import std.algorithm.mutation : move; + + source.front = move(val); } } @@ -864,6 +885,20 @@ pure @safe nothrow unittest assert(equal(s, [1L, 4L, 7L])); } +pure @safe nothrow unittest +{ + import std.algorithm.comparison : equal; + + static struct S { + int v; + @disable this(this); + } + + immutable foo = [S(1), S(2), S(3), S(4), S(5)]; + auto r = stride(foo, 3); + assert(equal(r, [S(1), S(4)])); +} + /** Spans multiple ranges in sequence. The function `chain` takes any number of ranges and returns a $(D Chain!(R1, R2,...)) object. The @@ -1069,12 +1104,14 @@ if (Ranges.length > 0 && @property void front(RvalueElementType v) { + import std.algorithm.mutation : move; + sw: switch (frontIndex) { static foreach (i; 0 .. R.length) { case i: - source[i].front = v; + source[i].front = move(v); break sw; } @@ -1193,12 +1230,14 @@ if (Ranges.length > 0 && { @property void back(RvalueElementType v) { + import std.algorithm.mutation : move; + sw: switch (backIndex) { static foreach_reverse (i; 1 .. R.length + 1) { case i: - source[i-1].back = v; + source[i-1].back = move(v); break sw; } @@ -1304,6 +1343,8 @@ if (Ranges.length > 0 && static if (allSameType && allSatisfy!(hasAssignableElements, R)) void opIndexAssign(ElementType v, size_t index) { + import std.algorithm.mutation : move; + sw: switch (frontIndex) { static foreach (i; 0 .. R.length) @@ -1319,7 +1360,7 @@ if (Ranges.length > 0 && } } - source[i][index] = v; + source[i][index] = move(v); break sw; } @@ -1602,6 +1643,28 @@ pure @safe unittest assert(equal(r, "foobar")); } +pure @safe nothrow @nogc unittest +{ + // support non-copyable items + + static struct S { + int v; + @disable this(this); + } + + S[2] s0, s1; + foreach (ref el; chain(s0[], s1[])) + { + int n = el.v; + } + + S[] s2, s3; + foreach (ref el; chain(s2, s3)) + { + int n = el.v; + } +} + /** Choose one of two ranges at runtime depending on a Boolean condition. @@ -2035,6 +2098,23 @@ pure @safe unittest auto chosen2 = chosen.save; } +pure @safe nothrow unittest +{ + static struct S { + int v; + @disable this(this); + } + + auto a = [S(1), S(2), S(3)]; + auto b = [S(4), S(5), S(6)]; + + auto chosen = choose(true, a, b); + assert(chosen.front.v == 1); + + auto chosen2 = choose(false, a, b); + assert(chosen2.front.v == 4); +} + /** Choose one of multiple ranges at runtime. @@ -2332,6 +2412,20 @@ pure @safe unittest assert(equal(r.save, "fboaor")); assert(equal(r.save, "fboaor")); } +pure @safe nothrow unittest +{ + import std.algorithm.comparison : equal; + + static struct S { + int v; + @disable this(this); + } + + S[] a = [ S(1), S(2) ]; + S[] b = [ S(10), S(20) ]; + auto r = roundRobin(a, b); + assert(equal(r, [ S(1), S(10), S(2), S(20) ])); +} /** Iterates a random-access range starting from a given point and @@ -2904,10 +2998,12 @@ if (isInputRange!R) { @property auto ref front(ElementType!R v) { + import std.algorithm.mutation : move; + assert(!empty, "Attempting to assign to the front of an empty " ~ typeof(this).stringof); - return _input.front = v; + return _input.front = move(v); } } } @@ -4139,7 +4235,9 @@ if (isForwardRange!R && !isInfinite!R) /// ditto @property void front(ElementType!R val) { - _original[_index] = val; + import std.algorithm.mutation : move; + + _original[_index] = move(val); } } @@ -4249,7 +4347,9 @@ if (isForwardRange!R && !isInfinite!R) /// ditto @property auto front(ElementType!R val) { - return _current.front = val; + import std.algorithm.mutation : move; + + return _current.front = move(val); } } @@ -7263,7 +7363,9 @@ struct FrontTransversal(Ror, { @property void front(ElementType val) { - _input.front.front = val; + import std.algorithm.mutation : move; + + _input.front.front = move(val); } } @@ -7320,7 +7422,9 @@ struct FrontTransversal(Ror, { @property void back(ElementType val) { - _input.back.front = val; + import std.algorithm.mutation : move; + + _input.back.front = move(val); } } } @@ -7353,7 +7457,9 @@ struct FrontTransversal(Ror, { void opIndexAssign(ElementType val, size_t n) { - _input[n].front = val; + import std.algorithm.mutation : move; + + _input[n].front = move(val); } } mixin ImplementLength!_input; From b9c6e3ca4b6fec799964394ad3e080d7b347f658 Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Tue, 18 Apr 2023 14:31:00 +0200 Subject: [PATCH 024/327] Fix issue 23844: Support ranges with immutable fields (like `only` with `immutable struct`) in `chain`. `only` is a range that may be *mutable*, but not *assignable*. `chain` falls over here because it assumes it can make a struct with ranges, and reassign them with new values, which isn't necessarily the case even if the ranges are not `const`. Solved by creating a separate tuple of `Rebindable` ranges for this case. --- std/range/package.d | 51 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 11 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index 7a724b0f718..80571e28ba4 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -232,7 +232,7 @@ module std.range; public import std.array; public import std.range.interfaces; public import std.range.primitives; -public import std.typecons : Flag, Yes, No; +public import std.typecons : Flag, Yes, No, Rebindable, rebindable; import std.internal.attributes : betterC; import std.meta : aliasSeqOf, allSatisfy, anySatisfy, staticMap; @@ -978,6 +978,11 @@ if (Ranges.length > 0 && static if (bidirectional) size_t backIndex; else enum backIndex = source.length; + this(typeof(this.tupleof) fields) + { + this.tupleof = fields; + } + public: this(R input) { @@ -1376,25 +1381,34 @@ if (Ranges.length > 0 && static if (allSatisfy!(hasLength, R) && allSatisfy!(hasSlicing, R)) auto opSlice(size_t begin, size_t end) return scope { - auto result = this; + // force staticMap type conversion to Rebindable + static struct ResultRanges + { + staticMap!(Rebindable, Ranges) fields; + } + auto sourceI(size_t i)() => rebindable(this.source[i]); + auto resultRanges = ResultRanges(staticMap!(sourceI, aliasSeqOf!(R.length.iota))).fields; + size_t resultFrontIndex = this.frontIndex; + static if (bidirectional) + size_t resultBackIndex = this.backIndex; sw: switch (frontIndex) { static foreach (i; 0 .. R.length) { case i: - immutable len = result.source[i].length; + immutable len = resultRanges[i].length; if (len <= begin) { - result.source[i] = result.source[i] + resultRanges[i] = resultRanges[i] [len .. len]; begin -= len; - result.frontIndex++; + resultFrontIndex++; goto case; } else { - result.source[i] = result.source[i] + resultRanges[i] = resultRanges[i] [begin .. len]; break sw; } @@ -1418,18 +1432,18 @@ if (Ranges.length > 0 && static foreach_reverse (i; 1 .. R.length + 1) { case i: - immutable len = result.source[i-1].length; + immutable len = resultRanges[i-1].length; if (len <= cut) { - result.source[i-1] = result.source[i-1] + resultRanges[i-1] = resultRanges[i-1] [0 .. 0]; cut -= len; - result.backIndex--; + resultBackIndex--; goto case; } else { - result.source[i-1] = result.source[i-1] + resultRanges[i-1] = resultRanges[i-1] [0 .. len - cut]; break sw2; } @@ -1445,7 +1459,10 @@ if (Ranges.length > 0 && assert(0, "Internal library error. Please report it."); } - return result; + static if (bidirectional) + return Result(resultRanges, resultFrontIndex, resultBackIndex); + else + return Result(resultRanges, resultFrontIndex); } } return Result(rs); @@ -1643,6 +1660,18 @@ pure @safe unittest assert(equal(r, "foobar")); } +// https://issues.dlang.org/show_bug.cgi?id=23844 +pure @safe unittest +{ + struct S + { + immutable int value; + } + + auto range = chain(only(S(5)), only(S(6))); + assert(range.array == [S(5), S(6)]); +} + pure @safe nothrow @nogc unittest { // support non-copyable items From 9eb1f834039d13cf7da5691f5599fbb86cd025bf Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sun, 7 May 2023 18:28:07 -0700 Subject: [PATCH 025/327] std.conv handle default integer-to-string with core.internal.string --- std/conv.d | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/std/conv.d b/std/conv.d index aef23655f2a..e52847b6b31 100644 --- a/std/conv.d +++ b/std/conv.d @@ -1023,7 +1023,15 @@ if (!(is(S : T) && else static if (isIntegral!S && !is(S == enum)) { // other integral-to-string conversions with default radix - return toImpl!(T, S)(value, 10); + + import core.internal.string : signedToTempString, unsignedToTempString; + + alias EEType = Unqual!(ElementEncodingType!T); + EEType[long.sizeof * 3 + 1] buf = void; + EEType[] t = isSigned!S + ? signedToTempString!(10, false, EEType)(value, buf) + : unsignedToTempString!(10, false, EEType)(value, buf); + return t.dup; } else static if (is(S == void[]) || is(S == const(void)[]) || is(S == immutable(void)[])) { From 6ff44ed66699e69c4d70308c3d6eb06d54b9267e Mon Sep 17 00:00:00 2001 From: Cameron Ross Date: Tue, 9 May 2023 09:37:29 -0300 Subject: [PATCH 026/327] fix issue 23881: add std.system.instructionSetArchitecture and std.system.ISA (#8744) --- ...std_system_instruction_set_architecture.dd | 15 ++++ std/system.d | 72 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 changelog/std_system_instruction_set_architecture.dd diff --git a/changelog/std_system_instruction_set_architecture.dd b/changelog/std_system_instruction_set_architecture.dd new file mode 100644 index 00000000000..264ac493383 --- /dev/null +++ b/changelog/std_system_instruction_set_architecture.dd @@ -0,0 +1,15 @@ +Added `std.system.instructionSetArchitecture` and `std.system.ISA` + +A new enum representing the instruction set architecture for the targeted +system was added. It is intended for cases where a targeted CPU's ISA is only +needed at runtime, such as providing human-readable messages as demonstrated +below. +------- +import std.stdio; +import std.system; + +void main() +{ + writeln("Hello ", instructionSetArchitecture, " world!"); +} +------- diff --git a/std/system.d b/std/system.d index 55fcfd773b7..aa672a59dd3 100644 --- a/std/system.d +++ b/std/system.d @@ -82,5 +82,77 @@ immutable /// The endianness that the program was compiled for. version (LittleEndian) Endian endian = Endian.littleEndian; else Endian endian = Endian.bigEndian; + /++ + Instruction Set Architecture. + + Note: + This is intended for cases where you need a value representing the + instruction set architecture at runtime. If you're doing something + which should compile differently depending on instruction set + architecture, then please use `version (X86_64)`, `version (ARM)`, + etc. + + See_Also: + $(DDSUBLINK spec/version,PredefinedVersions, Predefined Versions) + +/ + enum ISA + { + x86, /// Intel and AMD 32-bit processors + x86_64, /// Intel and AMD 64-bit processors + arm, /// The ARM architecture (32-bit) (AArch32 et al) + aarch64, /// The Advanced RISC Machine architecture (64-bit) + asmJS, /// The asm.js intermediate programming language + avr, /// 8-bit Atmel AVR Microcontrollers + epiphany, /// The Epiphany architecture + ppc, /// The PowerPC architecture, 32-bit + ppc64, /// The PowerPC architecture, 64-bit + ia64, /// The Itanium architecture (64-bit) + mips32, /// The MIPS architecture, 32-bit + mips64, /// The MIPS architecture, 64-bit + msp430, /// The MSP430 architecture + nvptx, /// The Nvidia Parallel Thread Execution (PTX) architecture, 32-bit + nvptx64, /// The Nvidia Parallel Thread Execution (PTX) architecture, 64-bit + riscv32, /// The RISC-V architecture, 32-bit + riscv64, /// The RISC-V architecture, 64-bit + sparc, /// The SPARC architecture, 32-bit + sparc64, /// The SPARC architecture, 64-bit + s390, /// The System/390 architecture, 32-bit + systemZ, /// The System Z architecture, 64-bit + hppa, /// The HP PA-RISC architecture, 32-bit + hppa64, /// The HP PA-RISC architecture, 64-bit + sh, /// The SuperH architecture, 32-bit + webAssembly, /// The WebAssembly virtual ISA (instruction set architecture), 32-bit + alpha, /// The Alpha architecture + unknown, /// Unknown + } + + /// The instruction set architecture that the program was compiled for. + version (X86) ISA instructionSetArchitecture = ISA.x86; + else version (X86_64) ISA instructionSetArchitecture = ISA.x86_64; + else version (ARM) ISA instructionSetArchitecture = ISA.arm; + else version (AArch64) ISA instructionSetArchitecture = ISA.aarch64; + else version (AsmJS) ISA instructionSetArchitecture = ISA.asmJS; + else version (AVR) ISA instructionSetArchitecture = ISA.avr; + else version (Epiphany) ISA instructionSetArchitecture = ISA.epiphany; + else version (PPC) ISA instructionSetArchitecture = ISA.ppc; + else version (PPC64) ISA instructionSetArchitecture = ISA.ppc64; + else version (IA64) ISA instructionSetArchitecture = ISA.ia64; + else version (MIPS32) ISA instructionSetArchitecture = ISA.mips32; + else version (MIPS64) ISA instructionSetArchitecture = ISA.mips64; + else version (MSP430) ISA instructionSetArchitecture = ISA.msp430; + else version (NVPTX) ISA instructionSetArchitecture = ISA.nvptx; + else version (NVPTX64) ISA instructionSetArchitecture = ISA.nvptx64; + else version (RISCV32) ISA instructionSetArchitecture = ISA.riscv32; + else version (RISCV64) ISA instructionSetArchitecture = ISA.riscv64; + else version (SPARC) ISA instructionSetArchitecture = ISA.sparc; + else version (SPARC64) ISA instructionSetArchitecture = ISA.sparc64; + else version (S390) ISA instructionSetArchitecture = ISA.s390; + else version (SystemZ) ISA instructionSetArchitecture = ISA.systemZ; + else version (HPPA) ISA instructionSetArchitecture = ISA.hppa; + else version (HPPA64) ISA instructionSetArchitecture = ISA.hppa64; + else version (SH) ISA instructionSetArchitecture = ISA.sh; + else version (WebAssembly) ISA instructionSetArchitecture = ISA.webAssembly; + else version (Alpha) ISA instructionSetArchitecture = ISA.alpha; + else ISA instructionSetArchitecture = ISA.unknown; } From 4a1210ea1cc1a9658ba848fd1de2bbbb4c4f2bb2 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 20 May 2023 23:23:26 -0700 Subject: [PATCH 027/327] std.conv integer to string: use core.internal.string --- std/conv.d | 49 +++++++------------------------------------------ 1 file changed, 7 insertions(+), 42 deletions(-) diff --git a/std/conv.d b/std/conv.d index e52847b6b31..89d4e5eafa2 100644 --- a/std/conv.d +++ b/std/conv.d @@ -102,21 +102,6 @@ private auto convError(S, T)(S source, string fn = __FILE__, size_t ln = __LINE_ return new ConvException(msg, fn, ln); } -private auto convError(S, T)(S source, int radix, string fn = __FILE__, size_t ln = __LINE__) -{ - string msg; - - if (source.empty) - msg = text("Unexpected end of input when converting from type " ~ S.stringof ~ " base ", radix, - " to type " ~ T.stringof); - else - msg = text("Unexpected '", source.front, - "' when converting from type " ~ S.stringof ~ " base ", radix, - " to type " ~ T.stringof); - - return new ConvException(msg, fn, ln); -} - @safe pure/* nothrow*/ // lazy parameter bug private auto parseError(lazy string msg, string fn = __FILE__, size_t ln = __LINE__) { @@ -5734,33 +5719,13 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && { void initialize(UT value) { - bool neg = false; - if (value < 10) - { - if (value >= 0) - { - lwr = 0; - upr = 1; - buf[0] = cast(char)(cast(uint) value + '0'); - return; - } - value = -value; - neg = true; - } - auto i = cast(uint) buf.length - 1; - while (cast(Unsigned!UT) value >= 10) - { - buf[i] = cast(ubyte)('0' + cast(Unsigned!UT) value % 10); - value = unsigned(value) / 10; - --i; - } - buf[i] = cast(char)(cast(uint) value + '0'); - if (neg) - { - buf[i - 1] = '-'; - --i; - } - lwr = i; + import core.internal.string : signedToTempString, unsignedToTempString; + + char[] t = value < 0 + ? signedToTempString!(10, false, char)(value, buf) + : unsignedToTempString!(10, false, char)(value, buf); + + lwr = cast(uint) (buf.length - t.length); upr = cast(uint) buf.length; } From 171a780728685145ea1eeea158c11e7325a20ef2 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Sat, 20 May 2023 22:47:51 -0700 Subject: [PATCH 028/327] delete unused overload of std.conv.convError() --- std/conv.d | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/std/conv.d b/std/conv.d index e52847b6b31..c87fc1369b1 100644 --- a/std/conv.d +++ b/std/conv.d @@ -102,21 +102,6 @@ private auto convError(S, T)(S source, string fn = __FILE__, size_t ln = __LINE_ return new ConvException(msg, fn, ln); } -private auto convError(S, T)(S source, int radix, string fn = __FILE__, size_t ln = __LINE__) -{ - string msg; - - if (source.empty) - msg = text("Unexpected end of input when converting from type " ~ S.stringof ~ " base ", radix, - " to type " ~ T.stringof); - else - msg = text("Unexpected '", source.front, - "' when converting from type " ~ S.stringof ~ " base ", radix, - " to type " ~ T.stringof); - - return new ConvException(msg, fn, ln); -} - @safe pure/* nothrow*/ // lazy parameter bug private auto parseError(lazy string msg, string fn = __FILE__, size_t ln = __LINE__) { From 9fadf8ad49ade95a84192c742755297e59fe48c9 Mon Sep 17 00:00:00 2001 From: Dmytro Katyukha Date: Mon, 22 May 2023 17:13:24 +0300 Subject: [PATCH 029/327] std.path.expandTilde: make compatible with scope and preview='in' When using `expandTilde` with 'priview=in' enabled, it requires to duplicate value to be able to call this function. Within this commit the signature of expandTilde function is changed from `string expandTilde(string inputPath) @safe nothrow` to `string expandTilde(return scope const string inputPath) @safe nothrow` thus, after this commit it is possible to use this func in scope context. Example case: ```d /+ dub.sdl: name "dub-example" dflags "-preview=in" "-preview=dip1000" +/ import std.stdio; import std.path; @safe: string fun(in string path) { return path.expandTilde; } void main() { string p = fun("~/tests/1"); writefln("P: %s", p); } ``` --- std/path.d | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/std/path.d b/std/path.d index 63d60d1d77f..e81f2b6b855 100644 --- a/std/path.d +++ b/std/path.d @@ -3955,7 +3955,7 @@ if (isConvertibleToString!Range) } ----- */ -string expandTilde(string inputPath) @safe nothrow +string expandTilde(return scope const string inputPath) @safe nothrow { version (Posix) { @@ -4138,7 +4138,7 @@ string expandTilde(string inputPath) @safe nothrow } /// -@system unittest +@safe unittest { version (Posix) { @@ -4153,7 +4153,7 @@ string expandTilde(string inputPath) @safe nothrow } } -@system unittest +@safe unittest { version (Posix) { @@ -4205,6 +4205,26 @@ string expandTilde(string inputPath) @safe nothrow } } +@safe unittest +{ + version (Posix) + { + import std.process : environment; + + string testPath(scope const string source_path) { + return source_path.expandTilde; + } + + auto oldHome = environment["HOME"]; + scope(exit) environment["HOME"] = oldHome; + + environment["HOME"] = "dmd/test"; + assert(testPath("~/") == "dmd/test/"); + assert(testPath("~") == "dmd/test"); + } +} + + version (StdUnittest) { private: From e1f7edae5765013b2527aeb8c8785c71b7fe6fe1 Mon Sep 17 00:00:00 2001 From: Robert burner Schadek Date: Thu, 25 May 2023 22:37:14 +0200 Subject: [PATCH 030/327] Better std.algorithm.iteration.permutations error messages --- changelog/permutation_assert_message.dd | 8 ++++++++ std/algorithm/iteration.d | 12 ++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 changelog/permutation_assert_message.dd diff --git a/changelog/permutation_assert_message.dd b/changelog/permutation_assert_message.dd new file mode 100644 index 00000000000..90fafc0ef0a --- /dev/null +++ b/changelog/permutation_assert_message.dd @@ -0,0 +1,8 @@ +Better static assert messages for `std.algorithm.iteration.permutations` + +Until now, `permutations` used a template constraint to check if the passed types +could be used. If they were not, it was very tedious to figure out why. + +As the template constraint is not used for overload resolution +the constrains are moved into static asserts with expressive error +messages. diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index 9f5a6ac7bc9..55ccb512b73 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -7939,15 +7939,23 @@ See_Also: $(REF nextPermutation, std,algorithm,sorting). */ Permutations!Range permutations(Range)(Range r) -if (isRandomAccessRange!Range && hasLength!Range) { + static assert(isRandomAccessRange!Range, Range.stringof, + " must be a RandomAccessRange"); + static assert(hasLength!Range, Range.stringof + , " must have a length"); + return typeof(return)(r); } /// ditto struct Permutations(Range) -if (isRandomAccessRange!Range && hasLength!Range) { + static assert(isRandomAccessRange!Range, Range.stringof, + " must be a RandomAccessRange"); + static assert(hasLength!Range, Range.stringof + , " must have a length"); + private size_t[] _indices, _state; private Range _r; private bool _empty; From cca8661113066fd3cabd12584531c5b12560dcd1 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Sat, 27 May 2023 11:52:07 +0000 Subject: [PATCH 031/327] Fix Issue 23940 - std.getopt does not assert with options that only differ in case with config.caseInsensitive --- std/getopt.d | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/std/getopt.d b/std/getopt.d index 42aeb4099e7..cb97eebe31b 100644 --- a/std/getopt.d +++ b/std/getopt.d @@ -685,6 +685,7 @@ private void getoptImpl(T...)(ref string[] args, ref configuration cfg, import std.algorithm.mutation : remove; import std.conv : to; + import std.uni : toLower; static if (opts.length) { static if (is(typeof(opts[0]) : config)) @@ -708,7 +709,10 @@ private void getoptImpl(T...)(ref string[] args, ref configuration cfg, if (optionHelp.optLong.length) { - assert(optionHelp.optLong !in visitedLongOpts, + auto name = optionHelp.optLong; + if (!cfg.caseSensitive) + name = name.toLower(); + assert(name !in visitedLongOpts, "Long option " ~ optionHelp.optLong ~ " is multiply defined"); visitedLongOpts[optionHelp.optLong] = []; @@ -716,7 +720,10 @@ private void getoptImpl(T...)(ref string[] args, ref configuration cfg, if (optionHelp.optShort.length) { - assert(optionHelp.optShort !in visitedShortOpts, + auto name = optionHelp.optShort; + if (!cfg.caseSensitive) + name = name.toLower(); + assert(name !in visitedShortOpts, "Short option " ~ optionHelp.optShort ~ " is multiply defined"); @@ -1779,6 +1786,14 @@ void defaultGetoptFormatter(Output)(Output output, string text, Option[] opt, st assertThrown!AssertError(getopt(args, "abc", &abc, "abc", &abc)); assertThrown!AssertError(getopt(args, "abc|a", &abc, "def|a", &def)); assertNotThrown!AssertError(getopt(args, "abc", &abc, "def", &def)); + + // https://issues.dlang.org/show_bug.cgi?id=23940 + assertThrown!AssertError(getopt(args, + "abc", &abc, "ABC", &def)); + assertThrown!AssertError(getopt(args, config.caseInsensitive, + "abc", &abc, "ABC", &def)); + assertNotThrown!AssertError(getopt(args, config.caseSensitive, + "abc", &abc, "ABC", &def)); } // https://issues.dlang.org/show_bug.cgi?id=17327 repeated option use From 75a507f883e19242b8e157a100191542e74b5fdd Mon Sep 17 00:00:00 2001 From: Johan Engelen Date: Mon, 29 May 2023 15:00:15 +0200 Subject: [PATCH 032/327] typecons: fix use-after-scope bug in RefCounted unittest (#8751) * typecons: fix use-after-scope bug in RefCounted unittest The access through `p` to `rc1` outside the scope of `rc1` is undefined behavior. We have to artificially end the scope of `rc1` and `rc2`, such that within the same scope we can check that the destructor calls do the correct thing of nulling the `_store`. * fixup * fixup --- std/typecons.d | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/std/typecons.d b/std/typecons.d index d267e711e6a..0748d5251e0 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -7406,11 +7406,11 @@ pure @system unittest foreach (MyRefCounted; AliasSeq!(SafeRefCounted, RefCounted)) { MyRefCounted!int* p; + auto rc1 = MyRefCounted!int(5); + p = &rc1; + assert(rc1 == 5); + assert(rc1._refCounted._store._count == 1); { - auto rc1 = MyRefCounted!int(5); - p = &rc1; - assert(rc1 == 5); - assert(rc1._refCounted._store._count == 1); auto rc2 = rc1; assert(rc1._refCounted._store._count == 2); // Reference semantics @@ -7421,6 +7421,8 @@ pure @system unittest rc1 = rc2; assert(rc1._refCounted._store._count == 2); } + // Artificially end scope of rc1 by calling ~this() explicitly + rc1.__xdtor(); assert(p._refCounted._store == null); // [Safe]RefCounted as a member From f8c80db44ee3a35f013318e74a547f9c3ca2d4e8 Mon Sep 17 00:00:00 2001 From: Jan Jurzitza Date: Tue, 30 May 2023 08:42:02 +0200 Subject: [PATCH 033/327] Fix upcoming D-Scanner argument warnings (#8753) * upgrade D-Scanner * Fix upcoming D-Scanner argument checks --- posix.mak | 2 +- std/bigint.d | 10 +++++----- std/checkedint.d | 8 ++++---- std/experimental/allocator/mallocator.d | 18 +++++++++--------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/posix.mak b/posix.mak index 2f05370dbfa..f246c0c9e60 100644 --- a/posix.mak +++ b/posix.mak @@ -74,7 +74,7 @@ ROOT_OF_THEM_ALL = generated ROOT = $(ROOT_OF_THEM_ALL)/$(OS)/$(BUILD)/$(MODEL) DUB=dub TOOLS_DIR=../tools -DSCANNER_HASH=d5d6920502bf1bfdb29474007a59fd606df0aadc +DSCANNER_HASH=5a53c538d0aa832f03840840271b6631fbbfc53d DSCANNER_DIR=$(ROOT_OF_THEM_ALL)/dscanner-$(DSCANNER_HASH) # Set DRUNTIME name and full path diff --git a/std/bigint.d b/std/bigint.d index 33d0eae7ced..50f88da6055 100644 --- a/std/bigint.d +++ b/std/bigint.d @@ -254,11 +254,11 @@ public: static if (op=="+") { - data = BigUint.addOrSubInt(data, u, sign != (y<0), sign); + data = BigUint.addOrSubInt!ulong(data, u, wantSub: sign != (y<0), sign); } else static if (op=="-") { - data = BigUint.addOrSubInt(data, u, sign == (y<0), sign); + data = BigUint.addOrSubInt!ulong(data, u, wantSub: sign == (y<0), sign); } else static if (op=="*") { @@ -613,7 +613,7 @@ public: static if (op == "-") { r.sign = sign; - r.data = BigUint.addOrSubInt(data, u, sign == (y<0), r.sign); + r.data = BigUint.addOrSubInt!ulong(data, u, wantSub: sign == (y<0), r.sign); r.negate(); } return r; @@ -670,12 +670,12 @@ public: { static if (op=="++") { - data = BigUint.addOrSubInt(data, 1UL, sign, sign); + data = BigUint.addOrSubInt!ulong(data, 1UL, wantSub: sign, sign); return this; } else static if (op=="--") { - data = BigUint.addOrSubInt(data, 1UL, !sign, sign); + data = BigUint.addOrSubInt!ulong(data, 1UL, wantSub: !sign, sign); return this; } } diff --git a/std/checkedint.d b/std/checkedint.d index 79597e8dacc..cec1dc1a2db 100644 --- a/std/checkedint.d +++ b/std/checkedint.d @@ -2129,16 +2129,16 @@ static: { // Not value convertible, only viable option is rhs fits within the // bounds of Lhs - static if (ProperCompare.hookOpCmp(Rhs.min, Lhs.min) < 0) + static if (ProperCompare.hookOpCmp!(Rhs, Lhs)(lhs: Rhs.min, rhs: Lhs.min) < 0) { // Example: hookOpCast!short(int(42)), hookOpCast!uint(int(42)) - if (ProperCompare.hookOpCmp(rhs, Lhs.min) < 0) + if (ProperCompare.hookOpCmp!(Rhs, Lhs)(lhs: rhs, rhs: Lhs.min) < 0) return defaultValue!Lhs; } - static if (ProperCompare.hookOpCmp(Rhs.max, Lhs.max) > 0) + static if (ProperCompare.hookOpCmp!(Rhs, Lhs)(lhs: Rhs.max, rhs: Lhs.max) > 0) { // Example: hookOpCast!int(uint(42)) - if (ProperCompare.hookOpCmp(rhs, Lhs.max) > 0) + if (ProperCompare.hookOpCmp!(Rhs, Lhs)(lhs: rhs, rhs: Lhs.max) > 0) return defaultValue!Lhs; } return cast(Lhs) rhs; diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index de9afbbf7d5..02d5cf8b6d3 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -376,17 +376,17 @@ version (Posix) { // https://issues.dlang.org/show_bug.cgi?id=16398 // test the "pseudo" alignedReallocate for Posix - void[] s = AlignedMallocator.instance.alignedAllocate(16, 32); - (cast(ubyte[]) s)[] = ubyte(1); - AlignedMallocator.instance.alignedReallocate(s, 32, 32); + void[] b = AlignedMallocator.instance.alignedAllocate(16, 32); + (cast(ubyte[]) b)[] = ubyte(1); + AlignedMallocator.instance.alignedReallocate(b, 32, 32); ubyte[16] o; o[] = 1; - assert((cast(ubyte[]) s)[0 .. 16] == o); - AlignedMallocator.instance.alignedReallocate(s, 4, 32); - assert((cast(ubyte[]) s)[0 .. 3] == o[0 .. 3]); - AlignedMallocator.instance.alignedReallocate(s, 128, 32); - assert((cast(ubyte[]) s)[0 .. 3] == o[0 .. 3]); - AlignedMallocator.instance.deallocate(s); + assert((cast(ubyte[]) b)[0 .. 16] == o); + AlignedMallocator.instance.alignedReallocate(b, 4, 32); + assert((cast(ubyte[]) b)[0 .. 3] == o[0 .. 3]); + AlignedMallocator.instance.alignedReallocate(b, 128, 32); + assert((cast(ubyte[]) b)[0 .. 3] == o[0 .. 3]); + AlignedMallocator.instance.deallocate(b); void[] c; AlignedMallocator.instance.alignedReallocate(c, 32, 32); From 5d61a311339d2e7442f5b13a68b48e9c34b0a518 Mon Sep 17 00:00:00 2001 From: RazvanN7 Date: Tue, 30 May 2023 18:20:21 +0300 Subject: [PATCH 034/327] Don't use this in static context in std.range.package --- std/range/package.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index 80571e28ba4..d37c6416434 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -978,7 +978,7 @@ if (Ranges.length > 0 && static if (bidirectional) size_t backIndex; else enum backIndex = source.length; - this(typeof(this.tupleof) fields) + this(typeof(Result.tupleof) fields) { this.tupleof = fields; } From ac19f9474c579275ef01c7fe39232e964155f1ae Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Fri, 2 Jun 2023 10:05:15 +0000 Subject: [PATCH 035/327] purge changelog --- changelog/clamp_assert_message.dd | 8 -------- changelog/rebindable_all_types.dd | 10 ---------- 2 files changed, 18 deletions(-) delete mode 100644 changelog/clamp_assert_message.dd delete mode 100644 changelog/rebindable_all_types.dd diff --git a/changelog/clamp_assert_message.dd b/changelog/clamp_assert_message.dd deleted file mode 100644 index abaf3929c49..00000000000 --- a/changelog/clamp_assert_message.dd +++ /dev/null @@ -1,8 +0,0 @@ -Better static assert messages for `std.algorithm.comparison.clamp` - -Until now, `clamp` used a template constraint to check if the passed types -could be used. If they were not, it was very tedious to figure out why. - -As the template constraint is not used for overload resolution -the constrains are moved into static asserts with expressive error -messages. diff --git a/changelog/rebindable_all_types.dd b/changelog/rebindable_all_types.dd deleted file mode 100644 index 8855a383cff..00000000000 --- a/changelog/rebindable_all_types.dd +++ /dev/null @@ -1,10 +0,0 @@ -`std.typecons.Rebindable` now supports all types - -`Rebindable` can now be used to store and rebind values of any type, including -`immutable struct` values. - -To ensure const safety is preserved, the stored values cannot be accessed -by reference. - -The implementation used for all previously supported types (classes, interfaces -and arrays) is unchanged. From f263028f11ccea5969c44b0ef66db60ddbed8d71 Mon Sep 17 00:00:00 2001 From: Dmytro Katyukha Date: Fri, 2 Jun 2023 22:17:54 +0300 Subject: [PATCH 036/327] std.path.absolutePath: make compatible with scope and preview='in' When using `absolutePath` with 'priview=in' enabled, it requires to duplicate value to be able to call this function. Within this commit the signature of `absolutePath` function is changed from `string absolutePath(string path, lazy string base = getcwd())` to `string absolutePath(return scope const string path, lazy string base = getcwd())` thus, after this commit it is possible to use this func in scope context. Example case: ```d /+ dub.sdl: name "dub-example" dflags "-preview=in" "-preview=dip1000" +/ import std.stdio; import std.path; @safe: string fun(in string path) { return path.absolutePath; } void main() { string p = fun("~/tests/1"); writefln("P: %s", p); } ``` --- std/path.d | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/std/path.d b/std/path.d index e81f2b6b855..7dd77802396 100644 --- a/std/path.d +++ b/std/path.d @@ -2745,7 +2745,7 @@ else version (Posix) See_Also: $(LREF asAbsolutePath) which does not allocate */ -string absolutePath(string path, lazy string base = getcwd()) +string absolutePath(return scope const string path, lazy string base = getcwd()) @safe pure { import std.array : array; @@ -2792,6 +2792,19 @@ string absolutePath(string path, lazy string base = getcwd()) assertThrown(absolutePath("bar", "foo")); } +// Ensure that we can call absolute path with scope paramaters +@safe unittest +{ + string testAbsPath(scope const string path, scope const string base) { + return absolutePath(path, base); + } + + version (Posix) + assert(testAbsPath("some/file", "/foo/bar") == "/foo/bar/some/file"); + version (Windows) + assert(testAbsPath(`some\file`, `c:\foo\bar`) == `c:\foo\bar\some\file`); +} + /** Transforms `path` into an absolute path. The following algorithm is used: From e6ed40182187ea4f3caf1127102136f9aa5fd0ac Mon Sep 17 00:00:00 2001 From: Ate Eskola Date: Wed, 14 Jun 2023 20:12:42 +0300 Subject: [PATCH 037/327] fix issue 23361 - std.uni.normalize made pure --- changelog/normalization_pure.dd | 3 +++ std/uni/package.d | 39 ++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 18 deletions(-) create mode 100644 changelog/normalization_pure.dd diff --git a/changelog/normalization_pure.dd b/changelog/normalization_pure.dd new file mode 100644 index 00000000000..7e99231dcf4 --- /dev/null +++ b/changelog/normalization_pure.dd @@ -0,0 +1,3 @@ +`std.uni.normalize` pure, `std.uni.decomposeJamo` pure nothrow + +Up until now, these functions didn't have any attributes besides `@safe`. diff --git a/std/uni/package.d b/std/uni/package.d index e2a0de73535..6ab6ba0f631 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -8592,7 +8592,7 @@ public: Decomposes a Hangul syllable. If `ch` is not a composed syllable then this function returns $(LREF Grapheme) containing only `ch` as is. */ -Grapheme decomposeHangul(dchar ch) @safe +Grapheme decomposeHangul(dchar ch) nothrow pure @safe { immutable idxS = cast(int) ch - jamoSBase; if (idxS < 0 || idxS >= jamoSCount) return Grapheme(ch); @@ -8709,7 +8709,15 @@ enum { In cases where the string in question is already normalized, it is returned unmodified and no memory allocation happens. +/ -inout(C)[] normalize(NormalizationForm norm=NFC, C)(return scope inout(C)[] input) +/* + WARNING: @trusted lambda inside - handle with same care as @trusted + functions + + Despite being a template, the attributes do no harm since this doesn't work + with user-defined range or character types anyway. +*/ +pure @safe inout(C)[] normalize(NormalizationForm norm=NFC, C) + (return scope inout(C)[] input) { import std.algorithm.mutation : SwapStrategy; import std.algorithm.sorting : sort; @@ -8790,20 +8798,24 @@ inout(C)[] normalize(NormalizationForm norm=NFC, C)(return scope inout(C)[] inpu // reset variables decomposed.length = 0; () @trusted { - decomposed.assumeSafeAppend(); + // assumeSafeAppend isn't considered pure as of writing, hence the + // cast. It isn't pure in the sense that the elements after + // the array in question are affected, but we don't use those + // making the call pure for our purposes. + (cast(void delegate() pure nothrow) {decomposed.assumeSafeAppend();})(); ccc.length = 0; - ccc.assumeSafeAppend(); + (cast(void delegate() pure nothrow) {ccc.assumeSafeAppend();})(); } (); input = input[anchors[1]..$]; // and move on anchors = splitNormalized!norm(input); - }while (anchors[0] != input.length); + } while (anchors[0] != input.length); app.put(input[0 .. anchors[0]]); return () @trusted inout { return cast(inout(C)[]) app.data; } (); } /// -@safe unittest +@safe pure unittest { // any encoding works wstring greet = "Hello world"; @@ -8817,7 +8829,7 @@ inout(C)[] normalize(NormalizationForm norm=NFC, C)(return scope inout(C)[] inpu assert(normalize!NFKD("ϓ") == "\u03A5\u0301"); } -@safe unittest +@safe pure unittest { import std.conv : text; @@ -8825,18 +8837,9 @@ inout(C)[] normalize(NormalizationForm norm=NFC, C)(return scope inout(C)[] inpu assert(normalize!NFKD("2¹⁰") == "210", normalize!NFKD("2¹⁰")); assert(normalize!NFD("Äffin") == "A\u0308ffin"); - // check example - - // any encoding works - wstring greet = "Hello world"; + // test with dstring + dstring greet = "Hello world"; assert(normalize(greet) is greet); // the same exact slice - - // An example of a character with all 4 forms being different: - // Greek upsilon with acute and hook symbol (code point 0x03D3) - assert(normalize!NFC("ϓ") == "\u03D3"); - assert(normalize!NFD("ϓ") == "\u03D2\u0301"); - assert(normalize!NFKC("ϓ") == "\u038E"); - assert(normalize!NFKD("ϓ") == "\u03A5\u0301"); } // canonically recompose given slice of code points, works in-place and mutates data From f22cc260f87c5d8ce4ce7eac2c675771db5a44ce Mon Sep 17 00:00:00 2001 From: "Richard (Rikki) Andrew Cattermole" Date: Thu, 15 Jun 2023 18:44:40 +1200 Subject: [PATCH 038/327] Improve std.regex wordMatcher build times by delaying its work from CT to RT if possible (#8699) --- std/regex/internal/ir.d | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/std/regex/internal/ir.d b/std/regex/internal/ir.d index ec0cb66631e..3b38f9c9fbc 100644 --- a/std/regex/internal/ir.d +++ b/std/regex/internal/ir.d @@ -49,10 +49,29 @@ CharMatcher[CodepointSet] matcherCache; } } -@property ref wordMatcher()() +// Force pure because that is needed +// Templated so that we don't pull in std.uni wordCharacter unnecessarily. +@property ref wordMatcher()() pure { - static immutable CharMatcher matcher = CharMatcher(wordCharacter); - return matcher; + static auto actual() + { + static CharMatcher matcher; + static bool haveMatcher; + + if (!haveMatcher) + { + matcher = CharMatcher(wordCharacter); + haveMatcher = true; + } + + return &matcher; + } + + // WORKAROUND: if the compiler won't memoize the output of the function for us, + // we'll do it with pure and there will be casts and it'll be happy about it. + // This is unfortunately needed to make std.regex as a whole faster to import & use + // in build times ~500ms. + return *(cast(immutable(CharMatcher)* function() @safe nothrow @nogc pure)&actual)(); } // some special Unicode white space characters From fdd3a2d9611e331148ee873fc1398a5eac90ec47 Mon Sep 17 00:00:00 2001 From: Ate Eskola Date: Thu, 15 Jun 2023 19:00:57 +0300 Subject: [PATCH 039/327] Removed changelog entry. --- changelog/normalization_pure.dd | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 changelog/normalization_pure.dd diff --git a/changelog/normalization_pure.dd b/changelog/normalization_pure.dd deleted file mode 100644 index 7e99231dcf4..00000000000 --- a/changelog/normalization_pure.dd +++ /dev/null @@ -1,3 +0,0 @@ -`std.uni.normalize` pure, `std.uni.decomposeJamo` pure nothrow - -Up until now, these functions didn't have any attributes besides `@safe`. From f715941036c10ae1664f0afa3566084f0d6ee524 Mon Sep 17 00:00:00 2001 From: FeepingCreature Date: Thu, 15 Jun 2023 19:05:46 +0200 Subject: [PATCH 040/327] Fix issue 23993: Discard Rebindable before passing extremum to comparator. --- std/algorithm/searching.d | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index ee318c88a0f..25c0b7fb1a2 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1349,13 +1349,23 @@ if (isInputRange!Range && !isInfinite!Range && // if we only have one statement in the loop, it can be optimized a lot better static if (__traits(isSame, map, a => a)) { - + CommonElement getExtremeElement() + { + static if (is(typeof(extremeElement) == T[], T)) + { + return extremeElement; + } + else + { + return extremeElement.get; + } + } // direct access via a random access range is faster static if (isRandomAccessRange!Range) { foreach (const i; 0 .. r.length) { - if (selectorFun(r[i], extremeElement)) + if (selectorFun(r[i], getExtremeElement)) { extremeElement = r[i]; } @@ -1365,7 +1375,7 @@ if (isInputRange!Range && !isInfinite!Range && { while (!r.empty) { - if (selectorFun(r.front, extremeElement)) + if (selectorFun(r.front, getExtremeElement)) { extremeElement = r.front; } @@ -3880,6 +3890,14 @@ if (isInputRange!Range && !isInfinite!Range && assert(arr.maxElement!"a.val".val == 1); } +// https://issues.dlang.org/show_bug.cgi?id=23993 +@safe unittest +{ + import std.bigint : BigInt; + + assert([BigInt(2), BigInt(3)].maxElement == BigInt(3)); +} + // minPos /** Computes a subrange of `range` starting at the first occurrence of `range`'s From 5cd77a6e328f91d659a38b64aaa6b84c1d417c40 Mon Sep 17 00:00:00 2001 From: Dennis Date: Fri, 16 Jun 2023 13:45:44 +0200 Subject: [PATCH 041/327] User hyperlinks to refer to bugzilla issues (#8766) --- std/algorithm/iteration.d | 4 ++-- std/algorithm/mutation.d | 2 +- std/algorithm/searching.d | 6 ++--- std/complex.d | 4 ++-- std/container/array.d | 2 +- std/conv.d | 22 +++++++++---------- std/exception.d | 2 +- .../building_blocks/kernighan_ritchie.d | 2 +- std/format/internal/floats.d | 12 +++++----- std/format/internal/write.d | 8 +++---- std/math/operations.d | 2 +- std/path.d | 7 +++--- std/random.d | 4 ++-- std/range/package.d | 2 +- std/signals.d | 4 ++-- std/stdio.d | 6 ++--- std/traits.d | 2 +- 17 files changed, 46 insertions(+), 45 deletions(-) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index 55ccb512b73..39927be9bbb 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -2026,7 +2026,7 @@ private struct ChunkByGroup(alias eq, Range, bool eqEquivalenceAssured) } } - // Cannot be a copy constructor due to issue 22239 + // Cannot be a copy constructor due to https://issues.dlang.org/show_bug.cgi?id=22239 this(this) @trusted { import core.lifetime : emplace; @@ -2128,7 +2128,7 @@ if (isForwardRange!Range) }(); } - // Cannot be a copy constructor due to issue 22239 + // Cannot be a copy constructor due to https://issues.dlang.org/show_bug.cgi?id=22239 this(this) @trusted { import core.lifetime : emplace; diff --git a/std/algorithm/mutation.d b/std/algorithm/mutation.d index 9b1d9207b9a..61b6a5e4eff 100644 --- a/std/algorithm/mutation.d +++ b/std/algorithm/mutation.d @@ -3049,7 +3049,7 @@ if (isBlitAssignable!T && !is(typeof(lhs.proxySwap(rhs)))) swap(b1, b2); } -// issue 20732 +// https://issues.dlang.org/show_bug.cgi?id=20732 @safe unittest { static struct A diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index ee318c88a0f..9ad7d2c297f 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1282,7 +1282,7 @@ if (isInputRange!R && @safe pure unittest { - //example from issue 19727 + //example from https://issues.dlang.org/show_bug.cgi?id=19727 import std.path : asRelativePath; string[] ext = ["abc", "def", "ghi"]; string path = "/foo/file.def"; @@ -2309,7 +2309,7 @@ private R1 simpleMindedFind(alias pred, R1, R2)(R1 haystack, scope R2 needle) @safe: string _impl; - // This is what triggers issue 7992. + // This is what triggers https://issues.dlang.org/show_bug.cgi?id=7992. @property size_t length() const { return _impl.length; } @property void length(size_t len) { _impl.length = len; } @@ -2322,7 +2322,7 @@ private R1 simpleMindedFind(alias pred, R1, R2)(R1 haystack, scope R2 needle) @property CustomString save() { return this; } } - // If issue 7992 occurs, this will throw an exception from calling + // If https://issues.dlang.org/show_bug.cgi?id=7992 occurs, this will throw an exception from calling // popFront() on an empty range. auto r = find(CustomString("a"), CustomString("b")); assert(r.empty); diff --git a/std/complex.d b/std/complex.d index 3b860fe476b..347e351c26a 100644 --- a/std/complex.d +++ b/std/complex.d @@ -1066,7 +1066,7 @@ Complex!T asin(T)(Complex!T z) @safe pure nothrow @nogc { import std.math.operations : isClose; import std.math.constants : PI; - version (DigitalMars) {} else // Disabled because of issue 21376 + version (DigitalMars) {} else // Disabled because of https://issues.dlang.org/show_bug.cgi?id=21376 assert(isClose(asin(complex(0.5f)), float(PI) / 6)); } @@ -1092,7 +1092,7 @@ Complex!T acos(T)(Complex!T z) @safe pure nothrow @nogc { import std.math.operations : isClose; import std.math.constants : PI; - version (DigitalMars) {} else // Disabled because of issue 21376 + version (DigitalMars) {} else // Disabled because of https://issues.dlang.org/show_bug.cgi?id=21376 assert(isClose(acos(complex(0.5f)), float(PI) / 3)); } diff --git a/std/container/array.d b/std/container/array.d index f5efe6d1f2a..0d6be93a1c1 100644 --- a/std/container/array.d +++ b/std/container/array.d @@ -1566,7 +1566,7 @@ if (!is(immutable T == immutable bool)) r2[0 .. 0] += 0; } -// Test issue 11194 +// Test https://issues.dlang.org/show_bug.cgi?id=11194 @system unittest { static struct S { diff --git a/std/conv.d b/std/conv.d index 89d4e5eafa2..aabcd784229 100644 --- a/std/conv.d +++ b/std/conv.d @@ -209,14 +209,14 @@ template to(T) return toImpl!T(args); } - // Fix issue 6175 + // Fix https://issues.dlang.org/show_bug.cgi?id=6175 T to(S)(ref S arg) if (isStaticArray!S) { return toImpl!T(arg); } - // Fix issue 16108 + // Fix https://issues.dlang.org/show_bug.cgi?id=16108 T to(S)(ref S arg) if (isAggregateType!S && !isCopyable!S) { @@ -423,7 +423,7 @@ template to(T) assert(c == "abcx"); } -// Tests for issue 6175 +// Tests for https://issues.dlang.org/show_bug.cgi?id=6175 @safe pure nothrow unittest { char[9] sarr = "blablabla"; @@ -432,7 +432,7 @@ template to(T) assert(sarr.length == darr.length); } -// Tests for issue 7348 +// Tests for https://issues.dlang.org/show_bug.cgi?id=7348 @safe pure /+nothrow+/ unittest { assert(to!string(null) == "null"); @@ -454,7 +454,7 @@ template to(T) assert(text("a", s) == "aS"); } -// Tests for issue 11390 +// Tests for https://issues.dlang.org/show_bug.cgi?id=11390 @safe pure /+nothrow+/ unittest { const(typeof(null)) ctn; @@ -463,7 +463,7 @@ template to(T) assert(to!string(itn) == "null"); } -// Tests for issue 8729: do NOT skip leading WS +// Tests for https://issues.dlang.org/show_bug.cgi?id=8729: do NOT skip leading WS @safe pure unittest { import std.exception; @@ -1370,7 +1370,7 @@ if (is (T == immutable) && isExactSomeString!T && is(S == enum)) S2 s2; assert(to!string(s2) == "S2(42, 43.5)"); - // Test for issue 8080 + // Test for https://issues.dlang.org/show_bug.cgi?id=8080 struct S8080 { short[4] data; @@ -1972,7 +1972,7 @@ $(UL private T toImpl(T, S)(S value) if (isInputRange!S && isSomeChar!(ElementEncodingType!S) && !isExactSomeString!T && is(typeof(parse!T(value))) && - // issue 20539 + // https://issues.dlang.org/show_bug.cgi?id=20539 !(is(T == enum) && is(typeof(value == OriginalType!T.init)) && !isSomeString!(OriginalType!T))) { scope(success) @@ -5560,7 +5560,7 @@ private bool isHexLiteral(String)(scope const String hexData) static assert( ("5A 01A C FF de 1b"d).isHexLiteral); static assert( ("0123456789abcdefABCDEF"d).isHexLiteral); static assert( (" 012 34 5 6789 abcd ef\rAB\nCDEF"d).isHexLiteral); - // library version allows what's pointed by issue 10454 + // library version allows what's pointed by https://issues.dlang.org/show_bug.cgi?id=10454 static assert( ("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF").isHexLiteral); } @@ -5931,7 +5931,7 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && } } -@safe unittest // opSlice (issue 16192) +@safe unittest // opSlice (https://issues.dlang.org/show_bug.cgi?id=16192) { import std.meta : AliasSeq; @@ -5959,7 +5959,7 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && for (; !r.empty; r.popFront(), ++i) { assert(original[i .. original.length].tupleof == r.tupleof); - // tupleof is used to work around issue 16216. + // tupleof is used to work around https://issues.dlang.org/show_bug.cgi?id=16216. } // opSlice vs popBack diff --git a/std/exception.d b/std/exception.d index 6ffc0f7750a..1d93d351d99 100644 --- a/std/exception.d +++ b/std/exception.d @@ -1035,7 +1035,7 @@ Params: Bugs: The function is explicitly annotated `@nogc` because inference could fail, - see $(LINK2 https://issues.dlang.org/show_bug.cgi?id=17084, issue 17084). + see $(LINK2 https://issues.dlang.org/show_bug.cgi?id=17084, Bugzilla issue 17084). Returns: `true` if `source`'s representation embeds a pointer that points to `target`'s representation or somewhere inside diff --git a/std/experimental/allocator/building_blocks/kernighan_ritchie.d b/std/experimental/allocator/building_blocks/kernighan_ritchie.d index 65226e7f4cb..6883d33adae 100644 --- a/std/experimental/allocator/building_blocks/kernighan_ritchie.d +++ b/std/experimental/allocator/building_blocks/kernighan_ritchie.d @@ -827,7 +827,7 @@ version (StdUnittest) // Both sequences must work on either system - // A sequence of allocs which generates the error described in issue 16564 + // A sequence of allocs which generates the error described in https://issues.dlang.org/show_bug.cgi?id=16564 // that is a gap at the end of buf from the perspective of the allocator // for 64 bit systems (leftover balance = 8 bytes < 16) diff --git a/std/format/internal/floats.d b/std/format/internal/floats.d index 632bf7674a6..afe0bfa3cb5 100644 --- a/std/format/internal/floats.d +++ b/std/format/internal/floats.d @@ -1449,7 +1449,7 @@ if (is(T == float) || is(T == double) assert(printFloat(-0.1L, f) == "-1.000000e-01"); assert(printFloat(10.0L, f) == "1.000000e+01"); assert(printFloat(-10.0L, f) == "-1.000000e+01"); - version (Windows) {} // issue 20972 + version (Windows) {} // https://issues.dlang.org/show_bug.cgi?id=20972 else { assert(printFloat(1e4000L, f) == "1.000000e+4000"); @@ -1472,7 +1472,7 @@ if (is(T == float) || is(T == double) { // log2 is broken for x87-reals on some computers in CTFE // the following tests excludes these computers from the tests - // (issue 21757) + // (https://issues.dlang.org/show_bug.cgi?id=21757) enum test = cast(int) log2(3.05e2312L); static if (real.mant_dig == 64 && test == 7681) { @@ -2120,7 +2120,7 @@ if (is(T == float) || is(T == double) assert(printFloat(-0.1L, f) == "-0.100000"); assert(printFloat(10.0L, f) == "10.000000"); assert(printFloat(-10.0L, f) == "-10.000000"); - version (Windows) {} // issue 20972 + version (Windows) {} // https://issues.dlang.org/show_bug.cgi?id=20972 else { auto result1 = printFloat(1e4000L, f); @@ -2145,7 +2145,7 @@ if (is(T == float) || is(T == double) { // log2 is broken for x87-reals on some computers in CTFE // the following tests excludes these computers from the tests - // (issue 21757) + // (https://issues.dlang.org/show_bug.cgi?id=21757) enum test = cast(int) log2(3.05e2312L); static if (real.mant_dig == 64 && test == 7681) { @@ -2803,7 +2803,7 @@ if (is(T == float) || is(T == double) assert(printFloat(-0.1L, f) == "-0.1"); assert(printFloat(10.0L, f) == "10"); assert(printFloat(-10.0L, f) == "-10"); - version (Windows) {} // issue 20972 + version (Windows) {} // https://issues.dlang.org/show_bug.cgi?id=20972 else { assert(printFloat(1e4000L, f) == "1e+4000"); @@ -2826,7 +2826,7 @@ if (is(T == float) || is(T == double) { // log2 is broken for x87-reals on some computers in CTFE // the following tests excludes these computers from the tests - // (issue 21757) + // (https://issues.dlang.org/show_bug.cgi?id=21757) enum test = cast(int) log2(3.05e2312L); static if (real.mant_dig == 64 && test == 7681) { diff --git a/std/format/internal/write.d b/std/format/internal/write.d index 7f127c09847..8eb70eaa268 100644 --- a/std/format/internal/write.d +++ b/std/format/internal/write.d @@ -738,7 +738,7 @@ if (is(FloatingPointTypeOf!T) && !is(T == enum) && !hasToString!(T, Char)) assert(FloatingPointControl.rounding == FloatingPointControl.roundToNearest); } - // issue 20320 + // https://issues.dlang.org/show_bug.cgi?id=20320 real a = 0.16; real b = 0.016; assert(format("%.1f", a) == "0.2"); @@ -749,7 +749,7 @@ if (is(FloatingPointTypeOf!T) && !is(T == enum) && !hasToString!(T, Char)) assert(format("%.1f", a1) == "0.2"); assert(format("%.2f", b1) == "0.02"); - // issue 9889 + // https://issues.dlang.org/show_bug.cgi?id=9889 assert(format("%.1f", 0.09) == "0.1"); assert(format("%.1f", -0.09) == "-0.1"); assert(format("%.1f", 0.095) == "0.1"); @@ -907,7 +907,7 @@ if (is(FloatingPointTypeOf!T) && !is(T == enum) && !hasToString!(T, Char)) // log2 is broken for x87-reals on some computers in CTFE // the following test excludes these computers from the test - // (issue 21757) + // (https://issues.dlang.org/show_bug.cgi?id=21757) enum test = cast(int) log2(3.05e2312L); static if (real.mant_dig == 64 && test == 7681) // 80 bit reals { @@ -3334,7 +3334,7 @@ if (isSomeString!T1 && isSomeString!T2 && isSomeString!T3 && isSomeString!T4) long fractsWidth = fracts.length; // TODO: does not take graphemes into account long suffixWidth; - // TODO: remove this workaround which hides issue 21815 + // TODO: remove this workaround which hides https://issues.dlang.org/show_bug.cgi?id=21815 if (f.width > 0) { prefixWidth = getWidth(prefix); diff --git a/std/math/operations.d b/std/math/operations.d index f2e18005e25..d4d1b83b8e3 100644 --- a/std/math/operations.d +++ b/std/math/operations.d @@ -1950,7 +1950,7 @@ if (isFloatingPoint!T) // log2 is broken for x87-reals on some computers in CTFE // the following test excludes these computers from the test - // (issue 21757) + // (https://issues.dlang.org/show_bug.cgi?id=21757) enum test = cast(int) log2(3.05e2312L); static if (F.realFormat == RealFormat.ieeeExtended && test == 7681) { diff --git a/std/path.d b/std/path.d index 7dd77802396..449235a6820 100644 --- a/std/path.d +++ b/std/path.d @@ -1595,7 +1595,7 @@ if (isSomeChar!C) @safe unittest { - // Test for issue 7397 + // Test for https://issues.dlang.org/show_bug.cgi?id=7397 string[] ary = ["a", "b"]; version (Posix) { @@ -1875,7 +1875,7 @@ if (isSomeChar!C) @safe unittest { - // Test for issue 7397 + // Test for https://issues.dlang.org/show_bug.cgi?id=7397 string[] ary = ["a", "b"]; version (Posix) { @@ -3572,7 +3572,8 @@ if (isConvertibleToString!Range) assert(!globMatch("foo.bar", "[gh]???bar")); assert(!globMatch("foo.bar"w, "[!fg]*bar"w)); assert(!globMatch("foo.bar"d, "[fg]???baz"d)); - assert(!globMatch("foo.di", "*.d")); // test issue 6634: triggered bad assertion + // https://issues.dlang.org/show_bug.cgi?id=6634 + assert(!globMatch("foo.di", "*.d")); // triggered bad assertion assert(globMatch("foo.bar", "{foo,bif}.bar")); assert(globMatch("bif.bar"w, "{foo,bif}.bar"w)); diff --git a/std/random.d b/std/random.d index 066ed1713e2..87e63f3f6ee 100644 --- a/std/random.d +++ b/std/random.d @@ -2842,7 +2842,7 @@ auto ref choice(Range)(ref Range range) "Choice did not return a valid element from the given Range"); } -@safe unittest // issue 18631 +@safe unittest // https://issues.dlang.org/show_bug.cgi?id=18631 { auto rng = MinstdRand0(42); const a = [0,1,2]; @@ -2855,7 +2855,7 @@ auto ref choice(Range)(ref Range range) auto z1 = choice(cast(const)[1, 2, 3], rng); } -@safe unittest // Ref range (issue 18631 PR) +@safe unittest // Ref range (https://issues.dlang.org/show_bug.cgi?id=18631 PR) { struct TestRange { diff --git a/std/range/package.d b/std/range/package.d index d37c6416434..25de70489d5 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -10339,7 +10339,7 @@ if (!is(CommonType!Values == void)) /// ditto auto only()() { - // cannot use noreturn due to issue 22383 + // cannot use noreturn due to https://issues.dlang.org/show_bug.cgi?id=22383 struct EmptyElementType {} EmptyElementType[] result; return result; diff --git a/std/signals.d b/std/signals.d index e5dc67eb83d..97004d52ddd 100644 --- a/std/signals.d +++ b/std/signals.d @@ -624,7 +624,7 @@ void linkin() { } a.value6 = 46; } -// Triggers bug from issue 15341 +// Triggers bug from https://issues.dlang.org/show_bug.cgi?id=15341 @system unittest { class Observer @@ -666,7 +666,7 @@ version (none) // Disabled because of https://issues.dlang.org/show_bug.cgi?id=5 } } -// Triggers bug from issue 16249 +// Triggers bug from https://issues.dlang.org/show_bug.cgi?id=16249 @system unittest { class myLINE diff --git a/std/stdio.d b/std/stdio.d index 5ed685fe7fc..afa49c93498 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -550,7 +550,7 @@ Throws: `ErrnoException` if the file could not be opened. stdioOpenmode, "'")), name); - // MSVCRT workaround (issue 14422) + // MSVCRT workaround (https://issues.dlang.org/show_bug.cgi?id=14422) version (MICROSOFT_STDIO) { setAppendWin(stdioOpenmode); @@ -708,7 +708,7 @@ Throws: `ErrnoException` in case of error. { auto handle = _p.handle; _p.handle = null; - // fclose disassociates the FILE* even in case of error (issue 19751) + // fclose disassociates the FILE* even in case of error (https://issues.dlang.org/show_bug.cgi?id=19751) errnoEnforce(.fclose(handle) == 0, "Could not close file `"~_name~"'"); } @@ -3795,7 +3795,7 @@ void main() assert(std.file.readText!string(deleteme) == "y"); } -@safe unittest // issue 18801 +@safe unittest // https://issues.dlang.org/show_bug.cgi?id=18801 { static import std.file; import std.string : stripLeft; diff --git a/std/traits.d b/std/traits.d index 689f0aef809..f498741b1fa 100644 --- a/std/traits.d +++ b/std/traits.d @@ -5337,7 +5337,7 @@ package template isBlitAssignable(T) enum isBlitAssignable = isBlitAssignable!(OriginalType!T); } else static if (isStaticArray!T && is(T == E[n], E, size_t n)) - // Workaround for issue 11499 : isStaticArray!T should not be necessary. + // Workaround for https://issues.dlang.org/show_bug.cgi?id=11499 : isStaticArray!T should not be necessary. { enum isBlitAssignable = isBlitAssignable!E; } From 10601cc04641b4764ba8ef8b47c3819f7b2e3f1c Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Mon, 19 Jun 2023 13:24:30 +0200 Subject: [PATCH 042/327] Add std.typecons.Rebindable2 for internal use. Rebindable2 is a simplified version of std.typecons.Rebindable that clears up every special case: classes, arrays and structs now have the same struct. Whichever type you instantiate `Rebindable2` with, you always get the same type out by calling `value.get` on the resulting container. Also use this type to simplify the parts of Phobos we previously used `Rebindable` for. --- std/algorithm/searching.d | 33 +++------- std/range/package.d | 28 ++++---- std/typecons.d | 134 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 156 insertions(+), 39 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 9ad7d2c297f..8d4703b7d26 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1315,19 +1315,12 @@ in } do { - import std.typecons : Rebindable; + import std.typecons : Rebindable2; alias Element = ElementType!Range; - Rebindable!Element seed = r.front; + auto seed = Rebindable2!Element(r.front); r.popFront(); - static if (is(Rebindable!Element == T[], T)) - { - return extremum!(map, selector)(r, seed); - } - else - { - return extremum!(map, selector)(r, seed.get); - } + return extremum!(map, selector)(r, seed.get); } private auto extremum(alias map, alias selector = "a < b", Range, @@ -1337,14 +1330,14 @@ if (isInputRange!Range && !isInfinite!Range && !is(CommonType!(ElementType!Range, RangeElementType) == void) && is(typeof(unaryFun!map(ElementType!(Range).init)))) { - import std.typecons : Rebindable; + import std.typecons : Rebindable2; alias mapFun = unaryFun!map; alias selectorFun = binaryFun!selector; alias Element = ElementType!Range; alias CommonElement = CommonType!(Element, RangeElementType); - Rebindable!CommonElement extremeElement = seedElement; + auto extremeElement = Rebindable2!CommonElement(seedElement); // if we only have one statement in the loop, it can be optimized a lot better static if (__traits(isSame, map, a => a)) @@ -1355,7 +1348,7 @@ if (isInputRange!Range && !isInfinite!Range && { foreach (const i; 0 .. r.length) { - if (selectorFun(r[i], extremeElement)) + if (selectorFun(r[i], extremeElement.get)) { extremeElement = r[i]; } @@ -1365,7 +1358,7 @@ if (isInputRange!Range && !isInfinite!Range && { while (!r.empty) { - if (selectorFun(r.front, extremeElement)) + if (selectorFun(r.front, extremeElement.get)) { extremeElement = r.front; } @@ -1376,7 +1369,7 @@ if (isInputRange!Range && !isInfinite!Range && else { alias MapType = Unqual!(typeof(mapFun(CommonElement.init))); - MapType extremeElementMapped = mapFun(extremeElement); + MapType extremeElementMapped = mapFun(extremeElement.get); // direct access via a random access range is faster static if (isRandomAccessRange!Range) @@ -1405,15 +1398,7 @@ if (isInputRange!Range && !isInfinite!Range && } } } - // Rebindable is an alias to T for arrays - static if (is(typeof(extremeElement) == T[], T)) - { - return extremeElement; - } - else - { - return extremeElement.get; - } + return extremeElement.get; } private auto extremum(alias selector = "a < b", Range)(Range r) diff --git a/std/range/package.d b/std/range/package.d index 25de70489d5..43fbbba249c 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -3902,24 +3902,17 @@ Returns: struct Repeat(T) { private: - //Store a non-qualified T when possible: This is to make Repeat assignable - static if ((is(T == class) || is(T == interface)) && (is(T == const) || is(T == immutable))) - { - import std.typecons : Rebindable; - alias UT = Rebindable!T; - } - else static if (is(T : Unqual!T) && is(Unqual!T : T)) - alias UT = Unqual!T; - else - alias UT = T; - UT _value; + import std.typecons : Rebindable2; + + // Store a rebindable T to make Repeat assignable. + Rebindable2!T _value; public: /// Range primitives - @property inout(T) front() inout { return _value; } + @property inout(T) front() inout { return _value.get; } /// ditto - @property inout(T) back() inout { return _value; } + @property inout(T) back() inout { return _value.get; } /// ditto enum bool empty = false; @@ -3934,7 +3927,7 @@ public: @property auto save() inout { return this; } /// ditto - inout(T) opIndex(size_t) inout { return _value; } + inout(T) opIndex(size_t) inout { return _value.get; } /// ditto auto opSlice(size_t i, size_t j) @@ -3959,7 +3952,12 @@ public: } /// Ditto -Repeat!T repeat(T)(T value) { return Repeat!T(value); } +Repeat!T repeat(T)(T value) +{ + import std.typecons : Rebindable2; + + return Repeat!T(Rebindable2!T(value)); +} /// pure @safe nothrow unittest diff --git a/std/typecons.d b/std/typecons.d index 0748d5251e0..67a1ede8148 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -2955,6 +2955,140 @@ Rebindable!T rebindable(T)(Rebindable!T obj) assert(rebindable(pr3341_aa)[321] == 543); } +package(std) struct Rebindable2(T) +{ +private: + static if (isAssignable!(typeof(cast() T.init))) + { + enum useQualifierCast = true; + + typeof(cast() T.init) data; + } + else + { + enum useQualifierCast = false; + + align(T.alignof) + static struct Payload + { + static if (hasIndirections!T) + { + void[T.sizeof] data; + } + else + { + ubyte[T.sizeof] data; + } + } + + Payload data; + } + +public: + + static if (!__traits(compiles, { T value; })) + { + @disable this(); + } + + /** + * Constructs a `Rebindable2` from a given value. + */ + this(T value) @trusted + { + static if (useQualifierCast) + { + this.data = cast() value; + } + else + { + set(value); + } + } + + /** + * Overwrites the currently stored value with `value`. + */ + void opAssign(this This)(T value) @trusted + { + clear; + set(value); + } + + /** + * Returns the value currently stored in the `Rebindable2`. + */ + T get(this This)() @property @trusted + { + static if (useQualifierCast) + { + return cast(T) this.data; + } + else + { + return *cast(T*) &this.data; + } + } + + /// Ditto + inout(T) get() inout @property @trusted + { + static if (useQualifierCast) + { + return cast(inout(T)) this.data; + } + else + { + return *cast(inout(T)*) &this.data; + } + } + + static if (!useQualifierCast) + { + ~this() @trusted + { + clear; + } + } + +private: + + void set(this This)(T value) + { + static if (useQualifierCast) + { + this.data = cast() value; + } + else + { + // As we're escaping a copy of `value`, deliberately leak a copy: + static union DontCallDestructor + { + T value; + } + DontCallDestructor copy = DontCallDestructor(value); + this.data = *cast(Payload*) © + } + } + + void clear(this This)() + { + // work around reinterpreting cast being impossible in CTFE + if (__ctfe) + { + return; + } + + // call possible struct destructors + .destroy!(No.initialize)(*cast(T*) &this.data); + } +} + +package(std) Rebindable2!T rebindable2(T)(T value) +{ + return Rebindable2!T(value); +} + /** Similar to `Rebindable!(T)` but strips all qualifiers from the reference as opposed to just constness / immutability. Primary intended use case is with From cdf9ce5e516199ced594ca00d9b6b7575193ee9b Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 21 Jun 2023 01:33:33 -0700 Subject: [PATCH 043/327] fix Issue 23312 - Crash when calling writeln in WinMain --- std/stdio.d | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/std/stdio.d b/std/stdio.d index 5ed685fe7fc..d7058d5cb7b 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -3108,10 +3108,13 @@ is empty, throws an `Exception`. In case of an I/O error throws // "wide-oriented" for us. immutable int mode = __setmode(f.fileno, _O_TEXT); // Set some arbitrary mode to obtain the previous one. - __setmode(f.fileno, mode); // Restore previous mode. - if (mode & (_O_WTEXT | _O_U16TEXT | _O_U8TEXT)) + if (mode != -1) // __setmode() succeeded { - orientation_ = 1; // wide + __setmode(f.fileno, mode); // Restore previous mode. + if (mode & (_O_WTEXT | _O_U16TEXT | _O_U8TEXT)) + { + orientation_ = 1; // wide + } } } else From e690d40e0bca67f1212d9e2d2c00a160bf1940cc Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 21 Jun 2023 01:46:06 -0700 Subject: [PATCH 044/327] std.stdio: add default case --- std/stdio.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/std/stdio.d b/std/stdio.d index 5ed685fe7fc..aa9981021e5 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -129,6 +129,10 @@ else version (Solaris) { version = GENERIC_IO; } +else +{ + static assert(0, "unsupported operating system"); +} // Character type used for operating system filesystem APIs version (Windows) From 33f63dbd5de277e15dbb5dcf48dd8974955a6987 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 22 Jun 2023 07:41:08 -0700 Subject: [PATCH 045/327] std.stdio: add glossary, fileno_t (#8772) --- std/stdio.d | 71 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 65 insertions(+), 6 deletions(-) diff --git a/std/stdio.d b/std/stdio.d index 376e208ac2e..19ce9880b89 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -34,9 +34,17 @@ $(TR $(TD Misc) $(TD )) )) -Standard I/O functions that extend $(B core.stdc.stdio). $(B core.stdc.stdio) +Standard I/O functions that extend $(LINK2 https://dlang.org/phobos/core_stdc_stdio.html, core.stdc.stdio). $(B core.stdc.stdio) is $(D_PARAM public)ally imported when importing $(B std.stdio). +There are three layers of I/O: +$(OL +$(LI The lowest layer is the operating system layer. The two main schemes are Windows and Posix.) +$(LI C's $(TT stdio.h) which unifies the two operating system schemes.) +$(LI $(TT std.stdio), this module, unifies the various $(TT stdio.h) implementations into +a high level package for D programs.) +) + Source: $(PHOBOSSRC std/stdio.d) Copyright: Copyright The D Language Foundation 2007-. License: $(HTTP boost.org/LICENSE_1_0.txt, Boost License 1.0). @@ -48,6 +56,55 @@ CSTDIO=$(HTTP cplusplus.com/reference/cstdio/$1/, $1) */ module std.stdio; +/* +# Glossary + +The three layers have many terms for their data structures and types. +Here we try to bring some sanity to them for the intrepid code spelunker. + +## Windows + +Handle + + A Windows handle is an opaque object of type HANDLE. + The `HANDLE` for standard devices can be retrieved with + Windows `GetStdHandle()`. + +## Posix + +file descriptor, aka fileno, aka fildes + + An int from 0..`FOPEN_MAX`, which is an index into some internal data + structure. + 0 is for `stdin`, 1 for `stdout`, 2 for `stderr`. + Negative values usually indicate an error. + +## stdio.h + +`FILE` + + A struct that encapsulates the C library's view of the operating system + files. A `FILE` should only be referred to via a pointer. + +`fileno` + + A field of `FILE` which is the Posix file descriptor for Posix systems, and + and an index into an array of file `HANDLE`s for Windows. + This array is how Posix behavior is emulated on Windows. + For Digital Mars C, that array is `__osfhnd[]`, and is initialized + at program start by the C runtime library. + In this module, they are typed as `fileno_t`. + +`stdin`, `stdout`, `stderr` + + Global pointers to `FILE` representing standard input, output, and error streams. + Being global means there are synchronization issues when multiple threads + are doing I/O on the same streams. + +## std.stdio + +*/ + import core.stdc.stddef : wchar_t; public import core.stdc.stdio; import std.algorithm.mutation : copy; @@ -144,6 +201,7 @@ else private alias FSChar = char; } +private alias fileno_t = int; // file descriptor, fildes, fileno version (Windows) { @@ -207,7 +265,7 @@ version (DIGITAL_MARS_STDIO) // @@@DEPRECATED_2.107@@@ deprecated("internal function _fileno was unintentionally available from " ~ "std.stdio and will be removed afer 2.107") - int _fileno(FILE* f) { return f._file; } + fileno_t _fileno(FILE* f) { return f._file; } } else version (MICROSOFT_STDIO) { @@ -1144,7 +1202,7 @@ Throws: `ErrnoException` if the file is not opened or the call to `fread` fails. enforce(isOpen, "Attempting to read from an unopened file"); version (Windows) { - immutable fd = .fileno(_p.handle); + immutable fileno_t fd = .fileno(_p.handle); immutable mode = .__setmode(fd, _O_BINARY); scope(exit) .__setmode(fd, mode); version (DIGITAL_MARS_STDIO) @@ -1234,7 +1292,7 @@ Throws: `ErrnoException` if the file is not opened or if the call to `fwrite` fa version (Windows) { - immutable fd = .fileno(_p.handle); + immutable fileno_t fd = .fileno(_p.handle); immutable oldMode = .__setmode(fd, _O_BINARY); if (oldMode != _O_BINARY) @@ -2291,7 +2349,7 @@ Returns the `FILE*` corresponding to this object. /** Returns the file number corresponding to this object. */ - @property int fileno() const @trusted + @property fileno_t fileno() const @trusted { import std.exception : enforce; @@ -3343,7 +3401,8 @@ is empty, throws an `Exception`. In case of an I/O error throws version (Windows) { - int fd, oldMode; + fileno_t fd; + int oldMode; version (DIGITAL_MARS_STDIO) ubyte oldInfo; } From b1612bbc38cff49fae98be4357cde807e8e558b1 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 22 Jun 2023 14:41:44 +0000 Subject: [PATCH 046/327] Fix Issue 23997 - isClose(1, -double.infinity) returns true (#8767) --- std/math/operations.d | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/std/math/operations.d b/std/math/operations.d index d4d1b83b8e3..4bf19ee3da9 100644 --- a/std/math/operations.d +++ b/std/math/operations.d @@ -1287,11 +1287,12 @@ bool isClose(T, U, V = CommonType!(FloatingPointBaseType!T,FloatingPointBaseType // two numbers if (lhs == rhs) return true; - static if (is(typeof(lhs.infinity)) && is(typeof(rhs.infinity))) - { - if (lhs == lhs.infinity || rhs == rhs.infinity || - lhs == -lhs.infinity || rhs == -rhs.infinity) return false; - } + static if (is(typeof(lhs.infinity))) + if (lhs == lhs.infinity || lhs == -lhs.infinity) + return false; + static if (is(typeof(rhs.infinity))) + if (rhs == rhs.infinity || rhs == -rhs.infinity) + return false; import std.math.algebraic : abs; @@ -1406,6 +1407,8 @@ bool isClose(T, U, V = CommonType!(FloatingPointBaseType!T,FloatingPointBaseType assert(!isClose(1,real.nan)); assert(!isClose(real.nan,real.max)); assert(!isClose(real.nan,real.nan)); + + assert(!isClose(-double.infinity, 1)); } @safe pure nothrow @nogc unittest From 1d2b992c4410787159f0fe2b6dca5ba3ddc321d8 Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Fri, 23 Jun 2023 07:24:55 +0200 Subject: [PATCH 047/327] Fix issue 23976: std.range.slide fails in dmd-2.104.0 I think possibly `hasShownPartialBefore` is just simply wrongly named in the `withPartial` branch. --- std/range/package.d | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index 7a724b0f718..8c647172c70 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -9115,7 +9115,7 @@ public: { static if (needsEndTracker) { - if (poppedElems < windowSize) + if (nextSource.empty) hasShownPartialBefore = true; } else @@ -10095,6 +10095,15 @@ public: assert("ab cd".splitter(' ').slide!(No.withPartial)(2).equal!equal([["ab", "cd"]])); } +// https://issues.dlang.org/show_bug.cgi?id=23976 +@safe unittest +{ + import std.algorithm.comparison : equal; + import std.algorithm.iteration : splitter; + + assert("1<2".splitter('<').slide(2).equal!equal([["1", "2"]])); +} + private struct OnlyResult(Values...) if (Values.length > 1) { From b4555680995ecf01bdaef7f3f0c5aa93cb0902a1 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 28 Jun 2023 14:22:15 +0100 Subject: [PATCH 048/327] [std/traits] Improve getSymbolsByUDA test (#8774) This is also necessary for https://github.com/dlang/dmd/pull/15363. --- std/traits.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/std/traits.d b/std/traits.d index f498741b1fa..4dc569df297 100644 --- a/std/traits.d +++ b/std/traits.d @@ -8877,7 +8877,9 @@ template getSymbolsByUDA(alias symbol, alias attribute) @Attr void c(); } - static assert(getSymbolsByUDA!(A, Attr).stringof == "tuple(a, a, c)"); + alias ola = __traits(getOverloads, A, "a"); + static assert(__traits(isSame, getSymbolsByUDA!(A, Attr), + AliasSeq!(ola[0], ola[1], A.c))); } // getSymbolsByUDA no longer works on modules From afe5d47167a93798444d24a4ac88a90007736538 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Mon, 3 Jul 2023 10:53:29 -0400 Subject: [PATCH 049/327] Fix issue 24028 - BigInt power operator ignores sign of exponent --- std/bigint.d | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/std/bigint.d b/std/bigint.d index 50f88da6055..0240ea1d179 100644 --- a/std/bigint.d +++ b/std/bigint.d @@ -323,7 +323,15 @@ public: else static if (op=="^^") { sign = (y & 1) ? sign : false; - data = BigUint.pow(data, u); + if (y < 0) + { + checkDivByZero(); + data = cast(ulong) (data == 1); + } + else + { + data = BigUint.pow(data, u); + } } else static if (op=="&") { @@ -411,6 +419,19 @@ public: )); } + // https://issues.dlang.org/show_bug.cgi?id=24028 + @system unittest + { + import std.exception : assertThrown; + import core.exception : AssertError; + + assert(BigInt(100) ^^ -1 == BigInt(0)); + assert(BigInt(1) ^^ -1 == BigInt(1)); + assert(BigInt(-1) ^^ -1 == BigInt(-1)); + assert(BigInt(-1) ^^ -2 == BigInt(1)); + assertThrown!AssertError(BigInt(0) ^^ -1); + } + /** * Implements assignment operators of the form `BigInt op= BigInt`. */ From dfcbee7056318734aaa88d9051369463eb94c637 Mon Sep 17 00:00:00 2001 From: FeepingCreature Date: Mon, 3 Jul 2023 05:04:22 +0200 Subject: [PATCH 050/327] Fix issue 24027: Instead of a bunch of special-cases, just check that `Rebindable` did in fact alias itself away. This looks ugly, but it's just for the `stable` branch - this is fixed on `master` via the `Rebindable2` rewrite https://github.com/dlang/phobos/pull/8768 --- std/algorithm/searching.d | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 25c0b7fb1a2..660559f4e63 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1320,7 +1320,7 @@ do alias Element = ElementType!Range; Rebindable!Element seed = r.front; r.popFront(); - static if (is(Rebindable!Element == T[], T)) + static if (is(typeof(seed) == Unqual!Element)) { return extremum!(map, selector)(r, seed); } @@ -1351,7 +1351,7 @@ if (isInputRange!Range && !isInfinite!Range && { CommonElement getExtremeElement() { - static if (is(typeof(extremeElement) == T[], T)) + static if (is(typeof(extremeElement) == Unqual!CommonElement)) { return extremeElement; } @@ -1415,8 +1415,8 @@ if (isInputRange!Range && !isInfinite!Range && } } } - // Rebindable is an alias to T for arrays - static if (is(typeof(extremeElement) == T[], T)) + // For several cases, such as classes or arrays, Rebindable!T aliases itself to T or Unqual!T. + static if (is(typeof(extremeElement) == Unqual!CommonElement)) { return extremeElement; } @@ -1554,6 +1554,23 @@ if (isInputRange!Range && !isInfinite!Range && assert([S(5), S(6)].extremum!"a.value" == S(5)); } +// https://issues.dlang.org/show_bug.cgi?id=24027 +@safe nothrow pure unittest +{ + class A + { + int a; + this(int a) + { + this.a = a; + } + } + + auto test = new A(5); + A[] arr = [test]; + assert(maxElement!"a.a"(arr) is test); +} + // find /** Finds an individual element in an $(REF_ALTTEXT input range, isInputRange, std,range,primitives). From 2649d6fe1badb029c4dbfe0e5d96f84aee99a16a Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Mon, 3 Jul 2023 08:53:32 +0200 Subject: [PATCH 051/327] Add warning to std.json that it doesn't play well with the GC. Production experience as well as synthetic tests have shown that std.json's use of associative arrays combined with GC issues causes heavy heap fragmentation. Furthermore, its heavy GC usage makes it unperformant in a threaded environment. Despite this, people keep using std.json for production workloads, then being disappointed when it doesn't measure up. So let's warn them upfront. --- std/json.d | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/std/json.d b/std/json.d index 219af714373..7d48890501f 100644 --- a/std/json.d +++ b/std/json.d @@ -6,6 +6,10 @@ Implements functionality to read and write JavaScript Object Notation values. JavaScript Object Notation is a lightweight data interchange format commonly used in web services and configuration files. It's easy for humans to read and write, and it's easy for machines to parse and generate. +$(RED Warning: While $(LREF JSONValue) is fine for small-scale use, at the range of hundreds of megabytes it is +known to cause and exacerbate GC problems. If you encounter problems, try replacing it with a stream parser. See +also $(LINK https://forum.dlang.org/post/dzfyaxypmkdrpakmycjv@forum.dlang.org).) + Copyright: Copyright Jeremie Pelletier 2008 - 2009. License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: Jeremie Pelletier, David Herberth From 105bc4508c83a1a2159d93fa567f900c00335f72 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Tue, 4 Jul 2023 18:26:58 +0200 Subject: [PATCH 052/327] Remove declarations with expired deprecations --- std/math/package.d | 6 ------ std/stdio.d | 15 --------------- 2 files changed, 21 deletions(-) diff --git a/std/math/package.d b/std/math/package.d index 19982ec216a..b5f914acf7c 100644 --- a/std/math/package.d +++ b/std/math/package.d @@ -168,12 +168,6 @@ public import std.math.rounding; public import std.math.traits; public import std.math.trigonometry; -// @@@DEPRECATED_2.102@@@ -// Note: Exposed accidentally, should be deprecated / removed -deprecated("std.meta.AliasSeq was unintentionally available from std.math " - ~ "and will be removed after 2.102. Please import std.meta instead") -public import std.meta : AliasSeq; - package(std): // Not public yet /* Return the value that lies halfway between x and y on the IEEE number line. * diff --git a/std/stdio.d b/std/stdio.d index 19ce9880b89..d9291b11bde 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -425,21 +425,6 @@ private extern (C) @nogc nothrow pragma(mangle, _FPUTWC.mangleof) int trustedFPUTWC(wchar_t ch, _iobuf* h) @trusted; } -static if (__traits(compiles, core.sys.posix.stdio.getdelim)) -{ - extern(C) nothrow @nogc - { - // @@@DEPRECATED_2.104@@@ - deprecated("To be removed after 2.104. Use core.sys.posix.stdio.getdelim instead.") - ptrdiff_t getdelim(char**, size_t*, int, FILE*); - - // @@@DEPRECATED_2.104@@@ - // getline() always comes together with getdelim() - deprecated("To be removed after 2.104. Use core.sys.posix.stdio.getline instead.") - ptrdiff_t getline(char**, size_t*, FILE*); - } -} - //------------------------------------------------------------------------------ private struct ByRecordImpl(Fields...) { From faca94c2144ccd893d0e1c59b4d4d29048706a6a Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sat, 15 Jul 2023 14:15:20 +0000 Subject: [PATCH 053/327] Fix broken tests caused by merge conflicts --- std/algorithm/searching.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 84a9036ead4..37a08de7a8f 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1529,7 +1529,7 @@ if (isInputRange!Range && !isInfinite!Range && } // https://issues.dlang.org/show_bug.cgi?id=24027 -@safe nothrow pure unittest +@safe nothrow unittest { class A { From ac7e69151d7e7b5dff5fbeb08f9df33c4b3207f3 Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 24 Jul 2023 10:21:52 +0200 Subject: [PATCH 054/327] Fix 24049 - std.conv.to: string to enum conversion is not documented (#8784) * Fix 24049 - std.conv.to: string to enum conversion is not documented * Update std/conv.d Co-authored-by: Max Haughton --------- Co-authored-by: Max Haughton --- std/conv.d | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/std/conv.d b/std/conv.d index aabcd784229..1ebe3e7511c 100644 --- a/std/conv.d +++ b/std/conv.d @@ -423,6 +423,22 @@ template to(T) assert(c == "abcx"); } +/** + * Strings can be converted to enum types. The enum member with the same name as the + * input string is returned. The comparison is case-sensitive. + * + * A $(LREF ConvException) is thrown if the enum does not have the specified member. + */ +@safe pure unittest +{ + import std.exception : assertThrown; + + enum E { a, b, c } + assert(to!E("a") == E.a); + assert(to!E("b") == E.b); + assertThrown!ConvException(to!E("A")); +} + // Tests for https://issues.dlang.org/show_bug.cgi?id=6175 @safe pure nothrow unittest { From 3b383798dda46ea3ea4c675435cbf3b404049b85 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Thu, 27 Jul 2023 20:26:20 +0200 Subject: [PATCH 055/327] Fix unsafe union access in std.format --- std/format/internal/write.d | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/std/format/internal/write.d b/std/format/internal/write.d index 8eb70eaa268..85954faa35e 100644 --- a/std/format/internal/write.d +++ b/std/format/internal/write.d @@ -2529,35 +2529,37 @@ if ((is(T == struct) || is(T == union)) && (hasToString!(T, Char) || !is(Builtin enum right = ")"; put(w, left); - foreach (i, e; val.tupleof) - { + static foreach (i; 0 .. T.tupleof.length) + {{ static if (__traits(identifier, val.tupleof[i]) == "this") - continue; - else static if (0 < i && val.tupleof[i-1].offsetof == val.tupleof[i].offsetof) { - static if (i == val.tupleof.length - 1 || val.tupleof[i].offsetof != val.tupleof[i+1].offsetof) + // ignore hidden context pointer + } + else static if (0 < i && T.tupleof[i-1].offsetof == T.tupleof[i].offsetof) + { + static if (i == T.tupleof.length - 1 || T.tupleof[i].offsetof != T.tupleof[i+1].offsetof) { - enum el = separator ~ val.tupleof[i].stringof[4 .. $] ~ "}"; + enum el = separator ~ __traits(identifier, T.tupleof[i]) ~ "}"; put(w, el); } else { - enum el = separator ~ val.tupleof[i].stringof[4 .. $]; + enum el = separator ~ __traits(identifier, T.tupleof[i]); put(w, el); } } - else static if (i+1 < val.tupleof.length && val.tupleof[i].offsetof == val.tupleof[i+1].offsetof) + else static if (i+1 < T.tupleof.length && T.tupleof[i].offsetof == T.tupleof[i+1].offsetof) { - enum el = (i > 0 ? separator : "") ~ "#{overlap " ~ val.tupleof[i].stringof[4 .. $]; + enum el = (i > 0 ? separator : "") ~ "#{overlap " ~ __traits(identifier, T.tupleof[i]); put(w, el); } else { static if (i > 0) put(w, separator); - formatElement(w, e, f); + formatElement(w, val.tupleof[i], f); } - } + }} put(w, right); } else @@ -2660,7 +2662,7 @@ if ((is(T == struct) || is(T == union)) && (hasToString!(T, Char) || !is(Builtin { int n; string s; - string toString() const { return s; } + string toString() @trusted const { return s; } } U2 u2; () @trusted { u2.s = "hello"; } (); From e55f2c2df3ab02f0fcb1da9771181f817f9baffc Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 28 Jul 2023 20:58:26 +0100 Subject: [PATCH 056/327] [std/traits] Avoid template recursion for 3 Parameter traits --- std/traits.d | 65 +++++++++++++++++++--------------------------------- 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/std/traits.d b/std/traits.d index 4dc569df297..fb85e872e7e 100644 --- a/std/traits.d +++ b/std/traits.d @@ -1125,7 +1125,7 @@ if (isCallable!func && variadicFunctionStyle!func == Variadic.no) } /** -Get tuple, one per function parameter, of the storage classes of the parameters. +Get a tuple of the storage classes of a function's parameters. Params: func = function symbol or type of function, delegate, or pointer to function Returns: @@ -1154,22 +1154,16 @@ if (isCallable!func) static if (is(Func PT == __parameters)) { - template StorageClass(size_t i) + alias ParameterStorageClassTuple = AliasSeq!(); + static foreach (i; 0 .. PT.length) { - static if (i < PT.length) - { - alias StorageClass = AliasSeq!( - extractParameterStorageClassFlags!(__traits(getParameterStorageClasses, Func, i)), - StorageClass!(i + 1)); - } - else - alias StorageClass = AliasSeq!(); + ParameterStorageClassTuple = AliasSeq!(ParameterStorageClassTuple, + extractParameterStorageClassFlags!(__traits(getParameterStorageClasses, Func, i))); } - alias ParameterStorageClassTuple = StorageClass!0; } else { - static assert(0, func[0].stringof ~ " is not a function"); + static assert(0, func.stringof, " is not a function"); alias ParameterStorageClassTuple = AliasSeq!(); } } @@ -1332,25 +1326,20 @@ if (isCallable!func) enum Get = ""; } } + + alias ParameterIdentifierTuple = AliasSeq!(); + static foreach (i; 0 .. PT.length) + { + ParameterIdentifierTuple = AliasSeq!(ParameterIdentifierTuple, + Get!i); + } } else { static assert(0, func.stringof ~ " is not a function"); - - // Define dummy entities to avoid pointless errors - template Get(size_t i) { enum Get = ""; } - alias PT = AliasSeq!(); + // avoid pointless errors + alias ParameterIdentifierTuple = AliasSeq!(); } - - template Impl(size_t i = 0) - { - static if (i == PT.length) - alias Impl = AliasSeq!(); - else - alias Impl = AliasSeq!(Get!i, Impl!(i+1)); - } - - alias ParameterIdentifierTuple = Impl!(); } /// @@ -1408,7 +1397,7 @@ if (isCallable!func) /** -Get, as a tuple, the default value of the parameters to a function symbol. +Get, as a tuple, the default values of the parameters to a function symbol. If a parameter doesn't have the default value, `void` is returned instead. */ template ParameterDefaults(alias func) @@ -1449,25 +1438,19 @@ if (isCallable!func) alias Get = void; // If default arg doesn't exist, returns void instead. } + alias ParameterDefaults = AliasSeq!(); + static foreach (i; 0 .. PT.length) + { + ParameterDefaults = AliasSeq!(ParameterDefaults, + Get!i); + } } else { static assert(0, func.stringof ~ " is not a function"); - - // Define dummy entities to avoid pointless errors - template Get(size_t i) { enum Get = ""; } - alias PT = AliasSeq!(); + // avoid pointless errors + alias ParameterDefaults = AliasSeq!(); } - - template Impl(size_t i = 0) - { - static if (i == PT.length) - alias Impl = AliasSeq!(); - else - alias Impl = AliasSeq!(Get!i, Impl!(i+1)); - } - - alias ParameterDefaults = Impl!(); } /// From c356395dcbb04ff0d18b133ba287dee25c054e97 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 28 Jul 2023 21:12:59 +0100 Subject: [PATCH 057/327] Remove ParameterIdentifierTuple.Get template --- std/traits.d | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/std/traits.d b/std/traits.d index fb85e872e7e..6b7a90d0a3c 100644 --- a/std/traits.d +++ b/std/traits.d @@ -1311,7 +1311,8 @@ if (isCallable!func) { static if (is(FunctionTypeOf!func PT == __parameters)) { - template Get(size_t i) + alias ParameterIdentifierTuple = AliasSeq!(); + static foreach (i; 0 .. PT.length) { static if (!isFunctionPointer!func && !isDelegate!func // Unnamed parameters yield CT error. @@ -1319,20 +1320,14 @@ if (isCallable!func) // Filter out unnamed args, which look like (Type) instead of (Type name). && PT[i].stringof != PT[i .. i+1].stringof[1..$-1]) { - enum Get = __traits(identifier, PT[i .. i+1]); + ParameterIdentifierTuple = AliasSeq!(ParameterIdentifierTuple, + __traits(identifier, PT[i .. i+1])); } else { - enum Get = ""; + ParameterIdentifierTuple = AliasSeq!(ParameterIdentifierTuple, ""); } } - - alias ParameterIdentifierTuple = AliasSeq!(); - static foreach (i; 0 .. PT.length) - { - ParameterIdentifierTuple = AliasSeq!(ParameterIdentifierTuple, - Get!i); - } } else { From 826960b22960f928d637dd5b73168c1893d9466b Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sat, 29 Jul 2023 13:25:23 +0100 Subject: [PATCH 058/327] Use mixin expr, avoid concat, remove @trusted Use return scope instead of @trusted workaround. --- std/traits.d | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/std/traits.d b/std/traits.d index 6b7a90d0a3c..9def422a212 100644 --- a/std/traits.d +++ b/std/traits.d @@ -1410,22 +1410,17 @@ if (isCallable!func) enum args = "args" ~ (name == "args" ? "_" : ""); enum val = "val" ~ (name == "val" ? "_" : ""); enum ptr = "ptr" ~ (name == "ptr" ? "_" : ""); - mixin(" - enum hasDefaultArg = (PT[i .. i+1] " ~ args ~ ") { return true; }; - "); + enum hasDefaultArg = mixin("(PT[i .. i+1] ", args, ") => true"); static if (is(typeof(hasDefaultArg()))) { mixin(" - // workaround scope escape check, see - // https://issues.dlang.org/show_bug.cgi?id=16582 - // should use return scope once available - enum get = (PT[i .. i+1] " ~ args ~ ") @trusted + enum get = (return scope PT[i .. i+1] ", args, ") { // If the parameter is lazy, we force it to be evaluated // like this. - auto " ~ val ~ " = " ~ args ~ "[0]; - auto " ~ ptr ~ " = &" ~ val ~ "; - return *" ~ ptr ~ "; + auto ", val, " = ", args, "[0]; + auto ", ptr, " = &", val, "; + return *", ptr, "; };"); enum Get = get(); } From c7ed8b2f04051636021d31d1e5c90a1c3daa24bb Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sun, 30 Jul 2023 16:06:57 +0100 Subject: [PATCH 059/327] Use mixin expression instead of mixin declaration --- std/traits.d | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/std/traits.d b/std/traits.d index 9def422a212..2ed7ee527b0 100644 --- a/std/traits.d +++ b/std/traits.d @@ -1413,15 +1413,14 @@ if (isCallable!func) enum hasDefaultArg = mixin("(PT[i .. i+1] ", args, ") => true"); static if (is(typeof(hasDefaultArg()))) { - mixin(" - enum get = (return scope PT[i .. i+1] ", args, ") + enum get = mixin("(return scope PT[i .. i+1] ", args, ") { // If the parameter is lazy, we force it to be evaluated // like this. auto ", val, " = ", args, "[0]; auto ", ptr, " = &", val, "; return *", ptr, "; - };"); + }"); enum Get = get(); } else From 9a90edf7a953767125ba734c7b10cca1c91af2e5 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 31 Jul 2023 11:04:46 +0100 Subject: [PATCH 060/327] [std.conv] Tweak to, parse docs (#8785) * [std.conv] Tweak docs Fix formatting of `Integer` grammar. Minor tweaks. Use the PANEL macro to introduce the `parse` overloads. Reorder `parse` constraint expressions to follow parameter order. In particular, Target should come first. * Improve `parse` descriptions & continue reordering constraint exps --- std/conv.d | 79 +++++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 39 deletions(-) diff --git a/std/conv.d b/std/conv.d index 1ebe3e7511c..4248e4b9d44 100644 --- a/std/conv.d +++ b/std/conv.d @@ -190,8 +190,9 @@ Conversions from string _to numeric types differ from the C equivalents `atoi()` and `atol()` by checking for overflow and not allowing whitespace. For conversion of strings _to signed types, the grammar recognized is: -$(PRE $(I Integer): $(I Sign UnsignedInteger) -$(I UnsignedInteger) +$(PRE $(I Integer): + $(I Sign UnsignedInteger) + $(I UnsignedInteger) $(I Sign): $(B +) $(B -)) @@ -260,7 +261,7 @@ template to(T) } /** - * When converting strings _to numeric types, note that the D hexadecimal and binary + * When converting strings _to numeric types, note that D hexadecimal and binary * literals are not handled. Neither the prefixes that indicate the base, nor the * horizontal bar used _to separate groups of digits are recognized. This also * applies to the suffixes that indicate the type. @@ -397,7 +398,7 @@ template to(T) * $(LI Pointer to string conversions convert the pointer to a `size_t` value. * If pointer is `char*`, treat it as C-style strings. * In that case, this function is `@system`.)) - * See $(REF formatValue, std,format) on how toString should be defined. + * See $(REF formatValue, std,format) on how `toString` should be defined. */ @system pure unittest // @system due to cast and ptr { @@ -2263,19 +2264,21 @@ template roundTo(Target) } /** -The `parse` family of functions works quite like the `to` +$(PANEL +The `parse` family of functions works quite like the $(LREF to) family, except that: $(OL $(LI It only works with character ranges as input.) - $(LI It takes the input by reference. (This means that rvalues - such - as string literals - are not accepted: use `to` instead.)) + $(LI It takes the input by reference. This means that rvalues (such + as string literals) are not accepted: use `to` instead.) $(LI It advances the input to the position following the conversion.) $(LI It does not throw if it could not convert the entire input.)) +) -This overload converts a character input range to a `bool`. +This overload parses a `bool` from a character input range. Params: - Target = the type to convert to + Target = the boolean type to convert to source = the lvalue of an $(REF_ALTTEXT input range, isInputRange, std,range,primitives) doCount = the flag for deciding to report the number of consumed characters @@ -2292,9 +2295,9 @@ Note: to `parse` and do not require lvalues. */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source source) -if (isInputRange!Source && - isSomeChar!(ElementType!Source) && - is(immutable Target == immutable bool)) +if (is(immutable Target == immutable bool) && + isInputRange!Source && + isSomeChar!(ElementType!Source)) { import std.ascii : toLower; @@ -2393,8 +2396,7 @@ Lerr: } /** -Parses a character $(REF_ALTTEXT input range, isInputRange, std,range,primitives) -to an integral value. +Parses an integer from a character $(REF_ALTTEXT input range, isInputRange, std,range,primitives). Params: Target = the integral type to convert to @@ -2411,8 +2413,8 @@ Throws: if no character of the input was meaningfully converted. */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref scope Source s) -if (isSomeChar!(ElementType!Source) && - isIntegral!Target && !is(Target == enum)) +if (isIntegral!Target && !is(Target == enum) && + isSomeChar!(ElementType!Source)) { static if (Target.sizeof < int.sizeof) { @@ -2833,8 +2835,8 @@ Lerr: /// ditto auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source source, uint radix) -if (isSomeChar!(ElementType!Source) && - isIntegral!Target && !is(Target == enum)) +if (isIntegral!Target && !is(Target == enum) && + isSomeChar!(ElementType!Source)) in { assert(radix >= 2 && radix <= 36, "radix must be in range [2,36]"); @@ -2985,7 +2987,7 @@ do } /** - * Takes a string representing an `enum` type and returns that type. + * Parses an `enum` type from a string representing an enum member name. * * Params: * Target = the `enum` type to convert to @@ -3002,8 +3004,7 @@ do * represented by `s`. */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source s) -if (isSomeString!Source && !is(Source == enum) && - is(Target == enum)) +if (is(Target == enum) && isSomeString!Source && !is(Source == enum)) { import std.algorithm.searching : startsWith; import std.traits : Unqual, EnumMembers; @@ -3095,7 +3096,7 @@ if (isSomeString!Source && !is(Source == enum) && } /** - * Parses a character range to a floating point number. + * Parses a floating point number from a character range. * * Params: * Target = a floating point type @@ -3113,8 +3114,8 @@ if (isSomeString!Source && !is(Source == enum) && * parsed, or if an overflow occurred. */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source source) -if (isInputRange!Source && isSomeChar!(ElementType!Source) && !is(Source == enum) && - isFloatingPoint!Target && !is(Target == enum)) +if (isFloatingPoint!Target && !is(Target == enum) && + isInputRange!Source && isSomeChar!(ElementType!Source) && !is(Source == enum)) { import std.ascii : isDigit, isAlpha, toLower, toUpper, isHexDigit; import std.exception : enforce; @@ -3806,7 +3807,7 @@ if (isInputRange!Source && isSomeChar!(ElementType!Source) && !is(Source == enum } /** -Parsing one character off a range returns the first element and calls `popFront`. +Parses one character from a character range. Params: Target = the type to convert to @@ -3822,8 +3823,8 @@ Throws: A $(LREF ConvException) if the range is empty. */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source s) -if (isSomeString!Source && !is(Source == enum) && - staticIndexOf!(immutable Target, immutable dchar, immutable ElementEncodingType!Source) >= 0) +if (staticIndexOf!(immutable Target, immutable dchar, immutable ElementEncodingType!Source) >= 0 && + isSomeString!Source && !is(Source == enum)) { if (s.empty) throw convError!(Source, Target)(s); @@ -3879,8 +3880,8 @@ if (isSomeString!Source && !is(Source == enum) && /// ditto auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source s) -if (!isSomeString!Source && isInputRange!Source && isSomeChar!(ElementType!Source) && - isSomeChar!Target && Target.sizeof >= ElementType!Source.sizeof && !is(Target == enum)) +if (isSomeChar!Target && Target.sizeof >= ElementType!Source.sizeof && !is(Target == enum) && + !isSomeString!Source && isInputRange!Source && isSomeChar!(ElementType!Source)) { if (s.empty) throw convError!(Source, Target)(s); @@ -3947,7 +3948,7 @@ if (!isSomeString!Source && isInputRange!Source && isSomeChar!(ElementType!Sourc } /** -Parsing a character range to `typeof(null)` returns `null` if the range +Parses `typeof(null)` from a character range if the range spells `"null"`. This function is case insensitive. Params: @@ -3964,9 +3965,9 @@ Throws: A $(LREF ConvException) if the range doesn't represent `null`. */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source s) -if (isInputRange!Source && - isSomeChar!(ElementType!Source) && - is(immutable Target == immutable typeof(null))) +if (is(immutable Target == immutable typeof(null)) && + isInputRange!Source && + isSomeChar!(ElementType!Source)) { import std.ascii : toLower; foreach (c; "null") @@ -4078,8 +4079,8 @@ package auto skipWS(R, Flag!"doCount" doCount = No.doCount)(ref R r) */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source s, dchar lbracket = '[', dchar rbracket = ']', dchar comma = ',') -if (isSomeString!Source && !is(Source == enum) && - isDynamicArray!Target && !is(Target == enum)) +if (isDynamicArray!Target && !is(Target == enum) && + isSomeString!Source && !is(Source == enum)) { import std.array : appender; @@ -4265,8 +4266,8 @@ if (isSomeString!Source && !is(Source == enum) && /// ditto auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source s, dchar lbracket = '[', dchar rbracket = ']', dchar comma = ',') -if (isExactSomeString!Source && - isStaticArray!Target && !is(Target == enum)) +if (isStaticArray!Target && !is(Target == enum) && + isExactSomeString!Source) { static if (hasIndirections!Target) Target result = Target.init[0].init; @@ -4374,8 +4375,8 @@ Lfewerr: */ auto parse(Target, Source, Flag!"doCount" doCount = No.doCount)(ref Source s, dchar lbracket = '[', dchar rbracket = ']', dchar keyval = ':', dchar comma = ',') -if (isSomeString!Source && !is(Source == enum) && - isAssociativeArray!Target && !is(Target == enum)) +if (isAssociativeArray!Target && !is(Target == enum) && + isSomeString!Source && !is(Source == enum)) { alias KeyType = typeof(Target.init.keys[0]); alias ValType = typeof(Target.init.values[0]); From 569bc5709856094fadb7554ce301a885bea8c4f9 Mon Sep 17 00:00:00 2001 From: Dennis Date: Mon, 31 Jul 2023 12:58:35 +0200 Subject: [PATCH 061/327] Mark unsafe union access `@trusted` (#8787) --- std/regex/internal/ir.d | 2 +- std/uni/package.d | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/std/regex/internal/ir.d b/std/regex/internal/ir.d index 3b38f9c9fbc..069d75f8822 100644 --- a/std/regex/internal/ir.d +++ b/std/regex/internal/ir.d @@ -1045,7 +1045,7 @@ if (!hasElaborateDestructor!T) return isBig ? big.ptr[0 .. length] : small[0 .. length]; } - this(this) + this(this) @trusted { if (isBig) { diff --git a/std/uni/package.d b/std/uni/package.d index 6ab6ba0f631..9903d6c28c3 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -7697,6 +7697,15 @@ public: static assert(false, "No operation "~op~" defined for Grapheme"); } + // This is not a good `opEquals`, but formerly the automatically generated + // opEquals was used, which was inferred `@safe` because of bugzilla 20655: + // https://issues.dlang.org/show_bug.cgi?id=20655 + // This `@trusted opEquals` is only here to prevent breakage. + bool opEquals(R)(const auto ref R other) const @trusted + { + return this.tupleof == other.tupleof; + } + /++ True if this object contains valid extended grapheme cluster. Decoding primitives of this module always return a valid `Grapheme`. From 153d33aec3d66566916c66873b525fca1c3df436 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Tue, 1 Aug 2023 23:22:36 +0000 Subject: [PATCH 062/327] purge changelog --- changelog/permutation_assert_message.dd | 8 -------- .../std_system_instruction_set_architecture.dd | 15 --------------- 2 files changed, 23 deletions(-) delete mode 100644 changelog/permutation_assert_message.dd delete mode 100644 changelog/std_system_instruction_set_architecture.dd diff --git a/changelog/permutation_assert_message.dd b/changelog/permutation_assert_message.dd deleted file mode 100644 index 90fafc0ef0a..00000000000 --- a/changelog/permutation_assert_message.dd +++ /dev/null @@ -1,8 +0,0 @@ -Better static assert messages for `std.algorithm.iteration.permutations` - -Until now, `permutations` used a template constraint to check if the passed types -could be used. If they were not, it was very tedious to figure out why. - -As the template constraint is not used for overload resolution -the constrains are moved into static asserts with expressive error -messages. diff --git a/changelog/std_system_instruction_set_architecture.dd b/changelog/std_system_instruction_set_architecture.dd deleted file mode 100644 index 264ac493383..00000000000 --- a/changelog/std_system_instruction_set_architecture.dd +++ /dev/null @@ -1,15 +0,0 @@ -Added `std.system.instructionSetArchitecture` and `std.system.ISA` - -A new enum representing the instruction set architecture for the targeted -system was added. It is intended for cases where a targeted CPU's ISA is only -needed at runtime, such as providing human-readable messages as demonstrated -below. -------- -import std.stdio; -import std.system; - -void main() -{ - writeln("Hello ", instructionSetArchitecture, " world!"); -} -------- From 36e977578c1b059c67d8b0129ed1ef17a896f9cd Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Wed, 2 Aug 2023 06:26:48 +0200 Subject: [PATCH 063/327] purge changelog (#8790) --- changelog/permutation_assert_message.dd | 8 -------- .../std_system_instruction_set_architecture.dd | 15 --------------- 2 files changed, 23 deletions(-) delete mode 100644 changelog/permutation_assert_message.dd delete mode 100644 changelog/std_system_instruction_set_architecture.dd diff --git a/changelog/permutation_assert_message.dd b/changelog/permutation_assert_message.dd deleted file mode 100644 index 90fafc0ef0a..00000000000 --- a/changelog/permutation_assert_message.dd +++ /dev/null @@ -1,8 +0,0 @@ -Better static assert messages for `std.algorithm.iteration.permutations` - -Until now, `permutations` used a template constraint to check if the passed types -could be used. If they were not, it was very tedious to figure out why. - -As the template constraint is not used for overload resolution -the constrains are moved into static asserts with expressive error -messages. diff --git a/changelog/std_system_instruction_set_architecture.dd b/changelog/std_system_instruction_set_architecture.dd deleted file mode 100644 index 264ac493383..00000000000 --- a/changelog/std_system_instruction_set_architecture.dd +++ /dev/null @@ -1,15 +0,0 @@ -Added `std.system.instructionSetArchitecture` and `std.system.ISA` - -A new enum representing the instruction set architecture for the targeted -system was added. It is intended for cases where a targeted CPU's ISA is only -needed at runtime, such as providing human-readable messages as demonstrated -below. -------- -import std.stdio; -import std.system; - -void main() -{ - writeln("Hello ", instructionSetArchitecture, " world!"); -} -------- From 75372efef23feeb5067a11f2f726844786dcf735 Mon Sep 17 00:00:00 2001 From: FeepingCreature <540727+FeepingCreature@users.noreply.github.com> Date: Thu, 3 Aug 2023 09:10:12 +0200 Subject: [PATCH 064/327] Fix issue 24064: use consistent types for ResultRanges. (#8791) `source` is `Unqual!Ranges`, not `Ranges`. --- std/range/package.d | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index 191ec32cf4b..1b4f233d94a 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -1384,7 +1384,7 @@ if (Ranges.length > 0 && // force staticMap type conversion to Rebindable static struct ResultRanges { - staticMap!(Rebindable, Ranges) fields; + staticMap!(Rebindable, typeof(source)) fields; } auto sourceI(size_t i)() => rebindable(this.source[i]); auto resultRanges = ResultRanges(staticMap!(sourceI, aliasSeqOf!(R.length.iota))).fields; @@ -1672,6 +1672,17 @@ pure @safe unittest assert(range.array == [S(5), S(6)]); } +/// https://issues.dlang.org/show_bug.cgi?id=24064 +pure @safe nothrow unittest +{ + import std.algorithm.comparison : equal; + import std.typecons : Nullable; + + immutable Nullable!string foo = "b"; + string[] bar = ["a"]; + assert(chain(bar, foo).equal(["a", "b"])); +} + pure @safe nothrow @nogc unittest { // support non-copyable items From f73555bf8ed082fe76cff617e2e74085d5d74fd5 Mon Sep 17 00:00:00 2001 From: Temtaime Date: Sun, 6 Aug 2023 00:56:26 +0300 Subject: [PATCH 065/327] Use size_t instead of uint for data indexing, because it hangs with files > 4g on x64 --- std/digest/md.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/std/digest/md.d b/std/digest/md.d index 0c4e42b5f7e..f4d6200b129 100644 --- a/std/digest/md.d +++ b/std/digest/md.d @@ -295,7 +295,8 @@ struct MD5 */ void put(scope const(ubyte)[] data...) @trusted pure nothrow @nogc { - uint i, index, partLen; + size_t i; + uint index, partLen; auto inputLen = data.length; //Compute number of bytes mod 64 From a2df1e6733b5450cfcad573b8df744c362f5df58 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 11 Aug 2023 16:07:48 +0100 Subject: [PATCH 066/327] [std/exception] Use PANEL macro to group paragraphs --- std/exception.d | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/std/exception.d b/std/exception.d index 1d93d351d99..713c8617b66 100644 --- a/std/exception.d +++ b/std/exception.d @@ -416,13 +416,16 @@ void assertThrown(T : Throwable = Exception, E) Returns: `value`, if `cast(bool) value` is true. Otherwise, depending on the chosen overload, `new Exception(msg)`, `dg()` or `ex` is thrown. - Note: - `enforce` is used to throw exceptions and is therefore intended to + $(PANEL + $(NOTE `enforce` is used to throw exceptions and is therefore intended to aid in error handling. It is $(I not) intended for verifying the logic - of your program. That is what `assert` is for. Also, do not use + of your program - that is what `assert` is for.) + + Do not use `enforce` inside of contracts (i.e. inside of `in` and `out` blocks and `invariant`s), because contracts are compiled out when compiling with $(I -release). + ) If a delegate is passed, the safety and purity of this function are inferred from `Dg`'s safety and purity. @@ -870,11 +873,12 @@ return to!(string)(sneaky); // not that sneaky anymore The call will duplicate the array appropriately. -Note that checking for uniqueness during compilation is +$(PANEL +$(NOTE Checking for uniqueness during compilation is possible in certain cases, especially when a function is -marked as a pure function. The following example does not +marked (or inferred) as `pure`. The following example does not need to call `assumeUnique` because the compiler can infer the -uniqueness of the array in the pure function: +uniqueness of the array in the pure function:) $(RUNNABLE_EXAMPLE ---- @@ -894,6 +898,7 @@ For more on infering uniqueness see the $(B unique) and $(B lent) keywords in the $(HTTP www.cs.cmu.edu/~aldrich/papers/aldrich-dissertation.pdf, ArchJava) language. +) The downside of using `assumeUnique`'s convention-based usage is that at this time there is no From d31490eaab77a98cf34f75ce77344d4e6cf167a1 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 11 Aug 2023 16:21:10 +0100 Subject: [PATCH 067/327] Tweak wording of assumeUnique --- std/exception.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/std/exception.d b/std/exception.d index 713c8617b66..5c786859c8e 100644 --- a/std/exception.d +++ b/std/exception.d @@ -839,7 +839,7 @@ string letters() ) The use in the example above is correct because `result` -was private to `letters` and is inaccessible in writing +was private to `letters` and the memory it referenced can no longer be written to after the function returns. The following example shows an incorrect use of `assumeUnique`. @@ -862,8 +862,8 @@ string letters(char first, char last) ---- ) -The example above wreaks havoc on client code because it is -modifying arrays that callers considered immutable. To obtain an +The example above wreaks havoc on client code because it modifies the +returned array that the previous caller considered immutable. To obtain an immutable array from the writable array `buffer`, replace the last line with: @@ -871,7 +871,7 @@ the last line with: return to!(string)(sneaky); // not that sneaky anymore ---- -The call will duplicate the array appropriately. +The `to` call will duplicate the array appropriately. $(PANEL $(NOTE Checking for uniqueness during compilation is From 3a8d5018bc624986dc0a2e549f83cad3626a6f5f Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 11 Aug 2023 17:13:41 +0100 Subject: [PATCH 068/327] [std/array] Split staticArray overloads into two groups It's easier to follow with the range overloads separate. Tweak wording. --- std/array.d | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/std/array.d b/std/array.d index 26528032ded..a613a8d9e4a 100644 --- a/std/array.d +++ b/std/array.d @@ -4700,24 +4700,16 @@ unittest } /++ -Constructs a static array from `a`. -The type of elements can be specified implicitly so that $(D [1, 2].staticArray) results in `int[2]`, -or explicitly, e.g. $(D [1, 2].staticArray!float) returns `float[2]`. -When `a` is a range whose length is not known at compile time, the number of elements must be -given as template argument (e.g. `myrange.staticArray!2`). -Size and type can be combined, if the source range elements are implicitly -convertible to the requested element type (eg: `2.iota.staticArray!(long[2])`). -When the range `a` is known at compile time, it can also be specified as a -template argument to avoid having to specify the number of elements -(e.g.: `staticArray!(2.iota)` or `staticArray!(double, 2.iota)`). +Constructs a static array from a dynamic array whose length is known at compile-time. +The element type can be inferred or specified explicitly: + +* $(D [1, 2].staticArray) returns `int[2]` +* $(D [1, 2].staticArray!float) returns `float[2]` Note: `staticArray` returns by value, so expressions involving large arrays may be inefficient. Params: - a = The input elements. If there are less elements than the specified length of the static array, - the rest of it is default-initialized. If there are more than specified, the first elements - up to the specified length are used. - rangeLength = outputs the number of elements used from `a` to it. Optional. + a = The input array. Returns: A static array constructed from `a`. +/ @@ -4774,7 +4766,23 @@ nothrow pure @safe @nogc unittest [cast(byte) 1, cast(byte) 129].staticArray.checkStaticArray!byte([1, -127]); } -/// ditto +/** +Constructs a static array from a range. +When `a.length` is not known at compile time, the number of elements must be +given as a template argument (e.g. `myrange.staticArray!2`). +Size and type can be combined, if the source range elements are implicitly +convertible to the requested element type (eg: `2.iota.staticArray!(long[2])`). + +When the range `a` is known at compile time, it can be given as a +template argument to avoid having to specify the number of elements +(e.g.: `staticArray!(2.iota)` or `staticArray!(double, 2.iota)`). + +Params: + a = The input range. If there are less elements than the specified length of the static array, + the rest of it is default-initialized. If there are more than specified, the first elements + up to the specified length are used. + rangeLength = Output for the number of elements used from `a`. Optional. +*/ auto staticArray(size_t n, T)(scope T a) if (isInputRange!T) { From 97647042caf8273d5cc77d66418fa54acdf8a7c4 Mon Sep 17 00:00:00 2001 From: Temtaime Date: Sun, 13 Aug 2023 20:33:50 +0300 Subject: [PATCH 069/327] Fix hang with buffer > 4gb --- std/digest/sha.d | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/std/digest/sha.d b/std/digest/sha.d index 5bbf7ea20c3..5c7c3d5dab1 100644 --- a/std/digest/sha.d +++ b/std/digest/sha.d @@ -650,7 +650,9 @@ struct SHA(uint hashBlockSize, uint digestSize) void put(scope const(ubyte)[] input...) @trusted pure nothrow @nogc { enum blockSizeInBytes = blockSize/8; - uint i, index, partLen; + + size_t i; + uint index, partLen; auto inputLen = input.length; /* Compute number of bytes mod block size (64 or 128 bytes) */ From 4773cdf85dd9b6816ce8b7837efda01fb6b70753 Mon Sep 17 00:00:00 2001 From: "H. S. Teoh" Date: Thu, 17 Aug 2023 09:58:58 -0700 Subject: [PATCH 070/327] Cross-link to std.mathspecial. --- std/math/package.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/math/package.d b/std/math/package.d index b5f914acf7c..614f4d36fbb 100644 --- a/std/math/package.d +++ b/std/math/package.d @@ -3,7 +3,7 @@ /** * Contains the elementary mathematical functions (powers, roots, * and trigonometric functions), and low-level floating-point operations. - * Mathematical special functions are available in `std.mathspecial`. + * Mathematical special functions are available in $(MREF std, mathspecial). * $(SCRIPT inhibitQuickIndex = 1;) From c7fb52ecab52f1a821703547da6cf7e1b6fc143a Mon Sep 17 00:00:00 2001 From: Nathan Sashihara <21227491+n8sh@users.noreply.github.com> Date: Fri, 11 Aug 2023 17:05:16 -0400 Subject: [PATCH 071/327] Fix Issue 24082 - add Int128.toString that supports std.format toString has template parameter FormatSpec instead of template parameter Char and argument std.format.FormatSpec!Char so importing std.int128 does not require importing std.format unless toString is actually used (pay as you go). --- std/int128.d | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 144 insertions(+), 2 deletions(-) diff --git a/std/int128.d b/std/int128.d index fc992f82422..7d02daa69bd 100644 --- a/std/int128.d +++ b/std/int128.d @@ -18,8 +18,8 @@ private import core.int128; public struct Int128 { - @safe pure nothrow @nogc: - + @safe pure nothrow @nogc + { Cent data; /// core.int128.Cent /**************** @@ -271,6 +271,148 @@ public struct Int128 { return opCmp(Int128(0, op2)); } + } // @safe pure nothrow @nogc + + /** + * Formats `Int128` with either `%d`, `%x`, `%X`, or `%s` (same as `%d`). + * + * Params: + * sink = $(REF_ALTTEXT Output range, isOutputRange, std, range, primitives) + * to write to. + * fmt = A $(REF FormatSpec, std,format) which controls how the number + * is displayed. + * + * Throws: + * $(REF FormatException, std,format) if the format specifier is + * not one of 'd', 'x', 'X', 's'. + * + * See_Also: $(REF formatValue, std,format) + */ + void toString(Writer, FormatSpec)(scope ref Writer sink, scope const ref FormatSpec fmt) const + { + import std.range.primitives : put; + import std.format : FormatException, Fmt = FormatSpec; + + static if (is(FormatSpec == Fmt!Char, Char)) + { + // Puts "Char" into scope if the pattern matches. + } + static assert(is(Char), + "Expecting `FormatSpec` to be instantiation of `std.format.FormatSpec`"); + + Char[39] buf = void; + size_t bufStart = void; + Char signChar = 0; + if (fmt.spec == 'd' || fmt.spec == 's') + { + const bool isNeg = 0 > cast(long) this.data.hi; + Cent val = isNeg ? neg(this.data) : this.data; + immutable Cent radix = { lo: 10, hi: 0 }; + Cent modulus; + bufStart = buf.length; + do + { + uint x = void; + if (ugt(radix, val)) + { + x = cast(uint) val.lo; + val = Cent(0, 0); + } + else + { + val = udivmod(val, radix, modulus); + x = cast(uint) modulus.lo; + } + buf[--bufStart] = cast(Char) ('0' + x); + } while (tst(val)); + if (isNeg) + signChar = '-'; + else if (fmt.flPlus) + signChar = '+'; + else if (fmt.flSpace) + signChar = ' '; + } + else if (fmt.spec == 'x' || fmt.spec == 'X') + { + immutable hexDigits = fmt.spec == 'X' ? "0123456789ABCDEF" : "0123456789abcdef"; + ulong a = data.lo; + bufStart = buf.length - 1; + size_t penPos = buf.length - 1; + do + { + if ((buf[penPos] = hexDigits[0xF & cast(uint) a]) != '0') + bufStart = penPos; + a >>>= 4; + } while (--penPos >= buf.length - 16); + a = data.hi; + do + { + if ((buf[penPos] = hexDigits[0xF & cast(uint) a]) != '0') + bufStart = penPos; + a >>>= 4; + } while (--penPos >= buf.length - 32); + } + else + { + throw new FormatException("Format specifier not understood: %" ~ fmt.spec); + } + + const minw = (buf.length - bufStart) + int(signChar != 0); + const maxw = minw < fmt.width ? fmt.width : minw; + const difw = maxw - minw; + + static void putRepeatedChars(Char c)(scope ref Writer sink, size_t n) + { + static immutable Char[8] array = [c, c, c, c, c, c, c, c]; + foreach (_; 0 .. n / 8) + put(sink, array[0 .. 8]); + if (n & 7) + put(sink, array[0 .. n & 7]); + } + + if (!fmt.flDash && !fmt.flZero && difw) + putRepeatedChars!' '(sink, difw); + + if (signChar) + { + Char[1] signCharBuf = signChar; + put(sink, signCharBuf[0 .. 1]); + } + + if (!fmt.flDash && fmt.flZero && difw) + putRepeatedChars!'0'(sink, difw); + + put(sink, buf[bufStart .. $]); + + if (fmt.flDash && difw) + putRepeatedChars!' '(sink, difw); + } + + /** + `toString` is rarely directly invoked; the usual way of using it is via + $(REF format, std, format): + */ + @safe unittest + { + import std.format : format; + + assert(format("%s", Int128.max) == "170141183460469231731687303715884105727"); + assert(format("%s", Int128.min) == "-170141183460469231731687303715884105728"); + assert(format("%x", Int128.max) == "7fffffffffffffffffffffffffffffff"); + assert(format("%X", Int128.max) == "7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); + assert(format("%032X", Int128(123L)) == "0000000000000000000000000000007B"); + assert(format("%+ 40d", Int128(123L)) == " +123"); + assert(format("%+-40d", Int128(123L)) == "+123 "); + } + + /// Also can format as `wchar` or `dchar`. + @safe unittest + { + import std.conv : to; + + assert(to!wstring(Int128.max) == "170141183460469231731687303715884105727"w); + assert(to!dstring(Int128.max) == "170141183460469231731687303715884105727"d); + } enum min = Int128(long.min, 0); /// minimum value enum max = Int128(long.max, ulong.max); /// maximum value From dcdb02cb6caf1ba8d9dc083f85368bc47aed96c2 Mon Sep 17 00:00:00 2001 From: Nathan Sashihara <21227491+n8sh@users.noreply.github.com> Date: Fri, 11 Aug 2023 18:42:29 -0400 Subject: [PATCH 072/327] Fix Issue 24083 - Int128.opCmp's behavior with negative numbers is inconsistent with Int128.opEquals --- std/int128.d | 60 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/std/int128.d b/std/int128.d index fc992f82422..e8e29b28677 100644 --- a/std/int128.d +++ b/std/int128.d @@ -18,8 +18,8 @@ private import core.int128; public struct Int128 { - @safe pure nothrow @nogc: - + @safe pure nothrow @nogc + { Cent data; /// core.int128.Cent /**************** @@ -253,23 +253,32 @@ public struct Int128 mixin("this = this " ~ op ~ " op2;"); return this; } + } // @safe pure nothrow @nogc - /** support signed arithmentic comparison operators < <= > >= + /** support arithmentic comparison operators < <= > >= * Params: op2 = right hand operand * Returns: -1 for less than, 0 for equals, 1 for greater than */ - int opCmp(Int128 op2) const + int opCmp(Int128 op2) const @nogc nothrow pure @safe { return this == op2 ? 0 : gt(this.data, op2.data) * 2 - 1; } - /** support signed arithmentic comparison operators < <= > >= - * Params: op2 = right hand operand - * Returns: -1 for less than, 0 for equals, 1 for greater than - */ - int opCmp(long op2) const + /// ditto + int opCmp(Int)(const Int op2) const @nogc nothrow pure @safe + if (is(Int : long) && __traits(isIntegral, Int)) { - return opCmp(Int128(0, op2)); + static if (__traits(isUnsigned, Int)) + return opCmp(Int128(0, op2)); + else + return opCmp(Int128((cast(long) op2) >> 63, op2)); + } + + /// ditto + int opCmp(IntLike)(auto ref IntLike op2) const + if (is(IntLike : long) && !__traits(isIntegral, IntLike)) + { + return opCmp(__traits(getMember, op2, __traits(getAliasThis, IntLike)[0])); } enum min = Int128(long.min, 0); /// minimum value @@ -372,3 +381,34 @@ unittest c = Int128(-1L); assert(c == -1L); } + +@system unittest +{ + alias Seq(T...) = T; + Int128 c = Int128(-1L); + assert(c.opCmp(-1L) == 0); + // To avoid regression calling opCmp with any integral type needs to + // work without the compiler complaining "opCmp called with argument + // X matches both <...>". + static foreach (Int; Seq!(long, int, short, byte, ulong, uint, ushort, ubyte, dchar, wchar, char)) + assert(c < Int.max); + static foreach (Int; Seq!(int, short, byte)) + assert(c.opCmp(Int(-1)) == 0); + assert(c < true); + // To avoid regression calling opCmp with any type that converts to an + // integral type through alias this needs to work regardless of whether + // the alias is safe/pure/nothrow/nogc and regardless of whether the + // type has a disabled postblit. + static struct Wrapped(T) + { + T value; + uint count; + T get() @system { ++count; return value; } // not const + alias get this; + @disable this(this); // no implicit copies + } + assert(c.opCmp(Wrapped!long(-1)) == 0); + auto w = Wrapped!ulong(ulong.max); + w.count++; // avoid invalid D-Scanner message that w could have been declared const + assert(c < w); +} From 258c98ac36fd3d432b7c49670b8ece553f9563c2 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 23 Aug 2023 21:47:29 -0700 Subject: [PATCH 073/327] std.stdio: remove redundant version declarations --- std/stdio.d | 49 ++++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/std/stdio.d b/std/stdio.d index d9291b11bde..72d158e134e 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -122,17 +122,12 @@ alias KeepTerminator = Flag!"keepTerminator"; version (CRuntime_Microsoft) { - version = MICROSOFT_STDIO; } else version (CRuntime_DigitalMars) { - // Specific to the way Digital Mars C does stdio - version = DIGITAL_MARS_STDIO; } else version (CRuntime_Glibc) { - // Specific to the way Gnu C does stdio - version = GCC_IO; } else version (CRuntime_Bionic) { @@ -220,7 +215,7 @@ version (Posix) static import core.sys.posix.stdio; // getdelim, flockfile } -version (DIGITAL_MARS_STDIO) +version (CRuntime_DigitalMars) { private alias _FPUTC = _fputc_nlock; private alias _FPUTWC = _fputwc_nlock; @@ -229,7 +224,7 @@ version (DIGITAL_MARS_STDIO) private alias _FLOCK = __fp_lock; private alias _FUNLOCK = __fp_unlock; - // Alias for MICROSOFT_STDIO compatibility. + // Alias for CRuntime_Microsoft compatibility. // @@@DEPRECATED_2.107@@@ // Rename this back to _setmode once the deprecation phase has ended. private alias __setmode = setmode; @@ -267,7 +262,7 @@ version (DIGITAL_MARS_STDIO) ~ "std.stdio and will be removed afer 2.107") fileno_t _fileno(FILE* f) { return f._file; } } -else version (MICROSOFT_STDIO) +else version (CRuntime_Microsoft) { private alias _FPUTC = _fputc_nolock; private alias _FPUTWC = _fputwc_nolock; @@ -277,7 +272,7 @@ else version (MICROSOFT_STDIO) private alias _FUNLOCK = _unlock_file; // @@@DEPRECATED_2.107@@@ - // Remove this once the deprecation phase for DIGITAL_MARS_STDIO has ended. + // Remove this once the deprecation phase for CRuntime_DigitalMars has ended. private alias __setmode = _setmode; // @@@DEPRECATED_2.107@@@ @@ -305,7 +300,7 @@ else version (MICROSOFT_STDIO) ~ "std.stdio and will be removed afer 2.107") alias FUNLOCK = _unlock_file; } -else version (GCC_IO) +else version (CRuntime_Glibc) { private alias _FPUTC = fputc_unlocked; private alias _FPUTWC = fputwc_unlocked; @@ -419,7 +414,7 @@ private extern (C) @nogc nothrow { pragma(mangle, _FPUTC.mangleof) int trustedFPUTC(int ch, _iobuf* h) @trusted; - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) pragma(mangle, _FPUTWC.mangleof) int trustedFPUTWC(int ch, _iobuf* h) @trusted; else pragma(mangle, _FPUTWC.mangleof) int trustedFPUTWC(wchar_t ch, _iobuf* h) @trusted; @@ -598,7 +593,7 @@ Throws: `ErrnoException` if the file could not be opened. name); // MSVCRT workaround (https://issues.dlang.org/show_bug.cgi?id=14422) - version (MICROSOFT_STDIO) + version (CRuntime_Microsoft) { setAppendWin(stdioOpenmode); } @@ -726,7 +721,7 @@ Throws: `ErrnoException` in case of error. } _p = cast(Impl*) enforce(malloc(Impl.sizeof), "Out of memory"); initImpl(handle, name, 1, isPopened); - version (MICROSOFT_STDIO) + version (CRuntime_Microsoft) { setAppendWin(stdioOpenmode); } @@ -761,7 +756,7 @@ Throws: `ErrnoException` in case of error. } } - version (MICROSOFT_STDIO) + version (CRuntime_Microsoft) { private void setAppendWin(scope const(char)[] stdioOpenmode) @safe { @@ -894,7 +889,7 @@ Params: auto modez = stdioOpenmode.tempCString(); detach(); - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) { // This is a re-implementation of DMC's fdopen, but without the // mucking with the file descriptor. POSIX standard requires the @@ -945,7 +940,7 @@ Throws: `ErrnoException` in case of error. import std.format : format; // Create file descriptors from the handles - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) auto fd = _handleToFD(handle, FHND_DEVICE); else // MSVCRT { @@ -1190,7 +1185,7 @@ Throws: `ErrnoException` if the file is not opened or the call to `fread` fails. immutable fileno_t fd = .fileno(_p.handle); immutable mode = .__setmode(fd, _O_BINARY); scope(exit) .__setmode(fd, mode); - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) { import core.atomic : atomicOp; @@ -1288,7 +1283,7 @@ Throws: `ErrnoException` if the file is not opened or if the call to `fwrite` fa .__setmode(fd, _O_BINARY); } - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) { import core.atomic : atomicOp; @@ -2351,7 +2346,7 @@ Returns the underlying operating system `HANDLE` (Windows only). version (Windows) @property HANDLE windowsHandle() { - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) return _fdToHandle(fileno); else return cast(HANDLE)_get_osfhandle(fileno); @@ -3147,7 +3142,7 @@ is empty, throws an `Exception`. In case of an I/O error throws file_ = f; FILE* fps = f._p.handle; - version (MICROSOFT_STDIO) + version (CRuntime_Microsoft) { // Microsoft doesn't implement fwide. Instead, there's the // concept of ANSI/UNICODE mode. fputc doesn't work in UNICODE @@ -3388,7 +3383,7 @@ is empty, throws an `Exception`. In case of an I/O error throws { fileno_t fd; int oldMode; - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) ubyte oldInfo; } @@ -3410,7 +3405,7 @@ is empty, throws an `Exception`. In case of an I/O error throws .fflush(fps); // before changing translation mode fd = .fileno(fps); oldMode = .__setmode(fd, _O_BINARY); - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) { import core.atomic : atomicOp; @@ -3431,7 +3426,7 @@ is empty, throws an `Exception`. In case of an I/O error throws version (Windows) { .fflush(fps); // before restoring translation mode - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) { // https://issues.dlang.org/show_bug.cgi?id=4243 __fhnd_info[fd] = oldInfo; @@ -3889,7 +3884,7 @@ void main() return setlocale(LC_CTYPE, loc.ptr).fromStringz.endsWith(loc); }); scope(exit) () @trusted { setlocale(LC_CTYPE, oldCt); } (); - version (DIGITAL_MARS_STDIO) // DM can't handle Unicode above U+07FF. + version (CRuntime_DigitalMars) // DM can't handle Unicode above U+07FF. { alias strs = AliasSeq!("xä\u07FE", "yö\u07FF"w); } @@ -3899,7 +3894,7 @@ void main() } { auto f = File(deleteme, "w"); - version (MICROSOFT_STDIO) + version (CRuntime_Microsoft) { () @trusted { __setmode(fileno(f.getFP()), _O_U8TEXT); } (); } @@ -5539,7 +5534,7 @@ private struct LockedFile // Private implementation of readln private size_t readlnImpl(FILE* fps, ref char[] buf, dchar terminator, File.Orientation orientation) @safe { - version (DIGITAL_MARS_STDIO) + version (CRuntime_DigitalMars) return () @trusted { auto lf = LockedFile(fps); ReadlnAppender app; @@ -5652,7 +5647,7 @@ private size_t readlnImpl(FILE* fps, ref char[] buf, dchar terminator, File.Orie buf = app.data; return buf.length; }(); - else version (MICROSOFT_STDIO) + else version (CRuntime_Microsoft) { auto lf = LockedFile(fps); From 6fd66c54558258d294d0f1ab9463cb7f26059b6c Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Wed, 23 Aug 2023 23:24:27 -0700 Subject: [PATCH 074/327] std.stdio: untangle fdopen references --- std/stdio.d | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/std/stdio.d b/std/stdio.d index d9291b11bde..aa4212efada 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -909,17 +909,20 @@ Params: iob._flag &= ~_IOTRAN; _FUNLOCK(fp); } - else + else version (CRuntime_Microsoft) { - version (Windows) // MSVCRT - auto fp = _fdopen(fd, modez); - else version (Posix) - { - import core.sys.posix.stdio : fdopen; - auto fp = fdopen(fd, modez); - } + auto fp = _fdopen(fd, modez); + errnoEnforce(fp); + } + else version (Posix) + { + import core.sys.posix.stdio : fdopen; + auto fp = fdopen(fd, modez); errnoEnforce(fp); } + else + static assert(0, "no fdopen() available"); + this = File(fp, name); } From 1be6d5d1962c500c87b4c11e72ff6b7fa1f41063 Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Thu, 31 Aug 2023 06:26:34 -0700 Subject: [PATCH 075/327] Undo ODBC deprecation and enable usage on non-Windows systems. (#8804) * Undo ODBC deprecation and enable usage on non-Windows systems. --- .dscanner.ini | 8 +- etc/c/odbc/sql.d | 441 +++++++++++++- etc/c/odbc/sqlext.d | 1310 ++++++++++++++++++++++++++++++++++++++++- etc/c/odbc/sqltypes.d | 177 +++++- etc/c/odbc/sqlucode.d | 170 +++++- 5 files changed, 2070 insertions(+), 36 deletions(-) diff --git a/.dscanner.ini b/.dscanner.ini index fa434b0cc82..e93151da7c6 100644 --- a/.dscanner.ini +++ b/.dscanner.ini @@ -116,7 +116,7 @@ trust_too_much="enabled" ; For more details, please see https://github.com/dlang/phobos/pull/5501 [analysis.config.ModuleFilters] ; Check for uses of the old-style alias syntax -alias_syntax_check="-std.traits,-std.typecons" +alias_syntax_check="-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-std.traits,-std.typecons" ; Check allman brace style allman_braces_check="+disabled" ; Checks for confusing code in inline asm statements @@ -220,6 +220,9 @@ function_attribute_check="-std.algorithm.iteration,-std.concurrency,-std.conv,-s has_public_example="-etc.c.curl,\ -etc.c.sqlite3,\ -etc.c.zlib,\ +-etc.c.odbc.sql,\ +-etc.c.odbc.sqlext,\ +-etc.c.odbc.sqlucode,\ -std.complex,\ -std.concurrency,\ -std.container.array,\ @@ -297,6 +300,7 @@ opequals_tohash_check="-std.complex,-std.container.array,-std.container.dlist,-s ; Note: DScanner doesn't understand documenting parameters of IFTI/eponymous templates. properly_documented_public_functions="-etc.c.odbc.sql,\ -etc.c.odbc.sqlext,\ +-etc.c.odbc.sqlucode,\ -etc.c.zlib,\ -std.algorithm.comparison,\ -std.algorithm.mutation,\ @@ -513,4 +517,4 @@ trust_too_much="-std.regex,-std.stdio,-std.uni,-std.internal.cstring" ; Temporarily disable until https://github.com/dlang-community/D-Scanner/issues/593 is fixed if_else_same_check="-std.typecons" ; Disable checks for generated unicode tables -long_line_check="-std.internal.unicode_decomp,-std.internal.unicode_comp,-std.internal.unicode_grapheme,-std.internal.unicode_norm,-std.internal.unicode_tables" \ No newline at end of file +long_line_check="-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-std.internal.unicode_decomp,-std.internal.unicode_comp,-std.internal.unicode_grapheme,-std.internal.unicode_norm,-std.internal.unicode_tables" \ No newline at end of file diff --git a/etc/c/odbc/sql.d b/etc/c/odbc/sql.d index 750377e8b46..c931de2245b 100644 --- a/etc/c/odbc/sql.d +++ b/etc/c/odbc/sql.d @@ -1,16 +1,441 @@ -// @@@DEPRECATED_2.106@@@ - /** -$(RED Warning: - This module is deprecated. It will be removed in 2.106. - Use `core.sys.windows.sql` instead.) + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Source: $(PHOBOSSRC etc/c/odbc/_sql.d) Declarations for interfacing with the ODBC library. See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference, - ODBC API Reference on MSN Online) + ODBC API Reference on MSDN) */ -deprecated("Import core.sys.windows.sql instead") module etc.c.odbc.sql; -public import core.sys.windows.sql; +public import etc.c.odbc.sqltypes; + +enum ODBCVER = 0x0351; + +enum SQL_ACCESSIBLE_PROCEDURES=20; +enum SQL_ACCESSIBLE_TABLES=19; +enum SQL_ALL_TYPES=0; +enum SQL_ALTER_TABLE=86; +enum SQL_API_SQLALLOCCONNECT=1; +enum SQL_API_SQLALLOCENV=2; +enum SQL_API_SQLALLOCSTMT=3; +enum SQL_API_SQLBINDCOL=4; +enum SQL_API_SQLCANCEL=5; +enum SQL_API_SQLCOLUMNS=40; +enum SQL_API_SQLCONNECT=7; +enum SQL_API_SQLDATASOURCES=57; +enum SQL_API_SQLDESCRIBECOL=8; +enum SQL_API_SQLDISCONNECT=9; +enum SQL_API_SQLERROR=10; +enum SQL_API_SQLEXECDIRECT=11; +enum SQL_API_SQLEXECUTE=12; +enum SQL_API_SQLFETCH=13; +enum SQL_API_SQLFREECONNECT=14; +enum SQL_API_SQLFREEENV=15; +enum SQL_API_SQLFREESTMT=16; +enum SQL_API_SQLGETCONNECTOPTION=42; +enum SQL_API_SQLGETCURSORNAME=17; +enum SQL_API_SQLGETDATA=43; +enum SQL_API_SQLGETFUNCTIONS=44; +enum SQL_API_SQLGETINFO=45; +enum SQL_API_SQLGETSTMTOPTION=46; +enum SQL_API_SQLGETTYPEINFO=47; +enum SQL_API_SQLNUMRESULTCOLS=18; +enum SQL_API_SQLPARAMDATA=48; +enum SQL_API_SQLPREPARE=19; +enum SQL_API_SQLPUTDATA=49; +enum SQL_API_SQLROWCOUNT=20; +enum SQL_API_SQLSETCONNECTOPTION=50; +enum SQL_API_SQLSETCURSORNAME=21; +enum SQL_API_SQLSETPARAM=22; +enum SQL_API_SQLSETSTMTOPTION=51; +enum SQL_API_SQLSPECIALCOLUMNS=52; +enum SQL_API_SQLSTATISTICS=53; +enum SQL_API_SQLTABLES=54; +enum SQL_API_SQLTRANSACT=23; + +enum SQL_CB_DELETE=0; +enum SQL_CB_CLOSE=1; +enum SQL_CB_PRESERVE=2; + +enum SQL_CHAR=1; +enum SQL_CLOSE=0; +enum SQL_COMMIT=0; +enum SQL_CURSOR_COMMIT_BEHAVIOR=23; +enum SQL_DATA_AT_EXEC=-2; +enum SQL_DATA_SOURCE_NAME=2; +enum SQL_DATA_SOURCE_READ_ONLY=25; +enum SQL_DBMS_NAME=17; +enum SQL_DBMS_VER=18; +enum SQL_DECIMAL=3; +enum SQL_DEFAULT_TXN_ISOLATION=26; +enum SQL_DOUBLE=8; +enum SQL_DROP=1; +enum SQL_ERROR=-1; + +enum SQL_FD_FETCH_NEXT=1; +enum SQL_FD_FETCH_FIRST=2; +enum SQL_FD_FETCH_LAST=4; +enum SQL_FD_FETCH_PRIOR=8; +enum SQL_FD_FETCH_ABSOLUTE=16; +enum SQL_FD_FETCH_RELATIVE=32; + +enum SQL_FETCH_ABSOLUTE=5; +enum SQL_FETCH_DIRECTION=8; +enum SQL_FETCH_FIRST=2; +enum SQL_FETCH_LAST=3; +enum SQL_FETCH_NEXT=1; +enum SQL_FETCH_PRIOR=4; +enum SQL_FETCH_RELATIVE=6; +enum SQL_FLOAT=6; +enum SQL_GD_ANY_COLUMN=1; +enum SQL_GD_ANY_ORDER=2; +enum SQL_GETDATA_EXTENSIONS=81; +enum SQL_IC_LOWER=2; +enum SQL_IC_MIXED=4; +enum SQL_IC_SENSITIVE=3; +enum SQL_IC_UPPER=1; +enum SQL_IDENTIFIER_CASE=28; +enum SQL_IDENTIFIER_QUOTE_CHAR=29; + +enum SQL_INDEX_ALL=1; +enum SQL_INDEX_CLUSTERED=1; +enum SQL_INDEX_HASHED=2; +enum SQL_INDEX_OTHER=3; +enum SQL_INDEX_UNIQUE=0; + +enum SQL_INTEGER=4; +enum SQL_INTEGRITY=73; +enum SQL_INVALID_HANDLE=-2; + +enum SQL_MAX_CATALOG_NAME_LEN=34; +enum SQL_MAX_COLUMN_NAME_LEN=30; +enum SQL_MAX_COLUMNS_IN_GROUP_BY=97; +enum SQL_MAX_COLUMNS_IN_INDEX=98; +enum SQL_MAX_COLUMNS_IN_ORDER_BY=99; +enum SQL_MAX_COLUMNS_IN_SELECT=100; +enum SQL_MAX_COLUMNS_IN_TABLE=101; +enum SQL_MAX_CURSOR_NAME_LEN=31; +enum SQL_MAX_INDEX_SIZE=102; +enum SQL_MAX_MESSAGE_LENGTH=512; +enum SQL_MAX_ROW_SIZE=104; +enum SQL_MAX_SCHEMA_NAME_LEN=32; +enum SQL_MAX_STATEMENT_LEN=105; +enum SQL_MAX_TABLE_NAME_LEN=35; +enum SQL_MAX_TABLES_IN_SELECT=106; +enum SQL_MAX_USER_NAME_LEN=107; + +enum SQL_MAXIMUM_CATALOG_NAME_LENGTH=SQL_MAX_CATALOG_NAME_LEN; +enum SQL_MAXIMUM_COLUMN_NAME_LENGTH=SQL_MAX_COLUMN_NAME_LEN; +enum SQL_MAXIMUM_COLUMNS_IN_GROUP_BY=SQL_MAX_COLUMNS_IN_GROUP_BY; +enum SQL_MAXIMUM_COLUMNS_IN_INDEX=SQL_MAX_COLUMNS_IN_INDEX; +enum SQL_MAXIMUM_COLUMNS_IN_ORDER_BY=SQL_MAX_COLUMNS_IN_ORDER_BY; +enum SQL_MAXIMUM_COLUMNS_IN_SELECT=SQL_MAX_COLUMNS_IN_SELECT; +enum SQL_MAXIMUM_CURSOR_NAME_LENGTH=SQL_MAX_CURSOR_NAME_LEN; +enum SQL_MAXIMUM_INDEX_SIZE=SQL_MAX_INDEX_SIZE; +enum SQL_MAXIMUM_ROW_SIZE=SQL_MAX_ROW_SIZE; +enum SQL_MAXIMUM_SCHEMA_NAME_LENGTH=SQL_MAX_SCHEMA_NAME_LEN; +enum SQL_MAXIMUM_STATEMENT_LENGTH=SQL_MAX_STATEMENT_LEN; +enum SQL_MAXIMUM_TABLES_IN_SELECT=SQL_MAX_TABLES_IN_SELECT; +enum SQL_MAXIMUM_USER_NAME_LENGTH=SQL_MAX_USER_NAME_LEN; + +enum SQL_NC_HIGH=0; +enum SQL_NC_LOW=1; +enum SQL_NEED_DATA=99; +enum SQL_NO_NULLS=0; +enum SQL_NTS=-3; +enum LONG SQL_NTSL=-3; +enum SQL_NULL_COLLATION=85; +enum SQL_NULL_DATA=-1; +enum SQL_NULL_HDBC=0; +enum SQL_NULL_HENV=0; +enum SQL_NULL_HSTMT=0; +enum SQL_NULLABLE=1; +enum SQL_NULLABLE_UNKNOWN=2; +enum SQL_NUMERIC=2; +enum SQL_ORDER_BY_COLUMNS_IN_SELECT=90; +enum SQL_PC_PSEUDO=2; +enum SQL_PC_UNKNOWN=0; +enum SQL_REAL=7; +enum SQL_RESET_PARAMS=3; +enum SQL_ROLLBACK=1; +enum SQL_SCCO_LOCK=2; +enum SQL_SCCO_OPT_ROWVER=4; +enum SQL_SCCO_OPT_VALUES=8; +enum SQL_SCCO_READ_ONLY=1; +enum SQL_SCOPE_CURROW=0; +enum SQL_SCOPE_SESSION=2; +enum SQL_SCOPE_TRANSACTION=1; +enum SQL_SCROLL_CONCURRENCY=43; +enum SQL_SEARCH_PATTERN_ESCAPE=14; +enum SQL_SERVER_NAME=13; +enum SQL_SMALLINT=5; +enum SQL_SPECIAL_CHARACTERS=94; +enum SQL_STILL_EXECUTING=2; +//MACRO #define SQL_SUCCEEDED(rc) (((rc)&(~1))==0) + +enum SQL_SUCCESS=0; +enum SQL_SUCCESS_WITH_INFO=1; + +enum SQL_TC_ALL=2; +enum SQL_TC_DDL_COMMIT=3; +enum SQL_TC_DDL_IGNORE=4; +enum SQL_TC_DML=1; +enum SQL_TC_NONE=0; + + +enum SQL_TXN_CAPABLE=46; +enum SQL_TXN_ISOLATION_OPTION=72; +enum SQL_TXN_READ_COMMITTED=2; +enum SQL_TXN_READ_UNCOMMITTED=1; +enum SQL_TXN_REPEATABLE_READ=4; +enum SQL_TXN_SERIALIZABLE=8; + +enum SQL_TRANSACTION_CAPABLE=SQL_TXN_CAPABLE; +enum SQL_TRANSACTION_ISOLATION_OPTION=SQL_TXN_ISOLATION_OPTION; +enum SQL_TRANSACTION_READ_COMMITTED=SQL_TXN_READ_COMMITTED; +enum SQL_TRANSACTION_READ_UNCOMMITTED=SQL_TXN_READ_UNCOMMITTED; +enum SQL_TRANSACTION_REPEATABLE_READ=SQL_TXN_REPEATABLE_READ; +enum SQL_TRANSACTION_SERIALIZABLE=SQL_TXN_SERIALIZABLE; + +enum SQL_UNBIND=2; +enum SQL_UNKNOWN_TYPE=0; +enum SQL_USER_NAME=47; +enum SQL_VARCHAR=12; + +static if (ODBCVER >= 0x0200) +{ +enum SQL_AT_ADD_COLUMN = 1; +enum SQL_AT_DROP_COLUMN = 2; +} + +static if (ODBCVER >= 0x0201) +{ +enum SQL_OJ_LEFT = 1; +enum SQL_OJ_RIGHT = 2; +enum SQL_OJ_FULL = 4; +enum SQL_OJ_NESTED = 8; +enum SQL_OJ_NOT_ORDERED = 16; +enum SQL_OJ_INNER = 32; +enum SQL_OJ_ALL_COMPARISON_OPS = 64; +} + +static if (ODBCVER >= 0x0300) +{ +enum SQL_AM_CONNECTION=1; +enum SQL_AM_NONE=0; +enum SQL_AM_STATEMENT=2; +enum SQL_API_SQLALLOCHANDLE=1001; +enum SQL_API_SQLBINDPARAM=1002; +enum SQL_API_SQLCLOSECURSOR=1003; +enum SQL_API_SQLCOLATTRIBUTE=6; +enum SQL_API_SQLCOPYDESC=1004; +enum SQL_API_SQLENDTRAN=1005; +enum SQL_API_SQLFETCHSCROLL=1021; +enum SQL_API_SQLFREEHANDLE=1006; +enum SQL_API_SQLGETCONNECTATTR=1007; +enum SQL_API_SQLGETDESCFIELD=1008; +enum SQL_API_SQLGETDESCREC=1009; +enum SQL_API_SQLGETDIAGFIELD=1010; +enum SQL_API_SQLGETDIAGREC=1011; +enum SQL_API_SQLGETENVATTR=1012; +enum SQL_API_SQLGETSTMTATTR=1014; +enum SQL_API_SQLSETCONNECTATTR=1016; +enum SQL_API_SQLSETDESCFIELD=1017; +enum SQL_API_SQLSETDESCREC=1018; +enum SQL_API_SQLSETENVATTR=1019; +enum SQL_API_SQLSETSTMTATTR=1020; +enum SQL_ARD_TYPE=-99; +enum SQL_AT_ADD_CONSTRAINT=8; +enum SQL_ATTR_APP_PARAM_DESC=10011; +enum SQL_ATTR_APP_ROW_DESC=10010; +enum SQL_ATTR_AUTO_IPD=10001; +enum SQL_ATTR_CURSOR_SCROLLABLE=-1; +enum SQL_ATTR_CURSOR_SENSITIVITY=-2; +enum SQL_ATTR_IMP_PARAM_DESC=10013; +enum SQL_ATTR_IMP_ROW_DESC=10012; +enum SQL_ATTR_METADATA_ID=10014; +enum SQL_ATTR_OUTPUT_NTS=10001; +enum SQL_CATALOG_NAME=10003; +enum SQL_CODE_DATE=1; +enum SQL_CODE_TIME=2; +enum SQL_CODE_TIMESTAMP=3; +enum SQL_COLLATION_SEQ=10004; +enum SQL_CURSOR_SENSITIVITY=10001; +enum SQL_DATE_LEN=10; +enum SQL_DATETIME=9; +enum SQL_DEFAULT=99; + +enum SQL_DESC_ALLOC_AUTO=1; +enum SQL_DESC_ALLOC_USER=2; +enum SQL_DESC_ALLOC_TYPE=1099; +enum SQL_DESC_COUNT=1001; +enum SQL_DESC_TYPE=1002; +enum SQL_DESC_LENGTH=1003; +enum SQL_DESC_OCTET_LENGTH_PTR=1004; +enum SQL_DESC_PRECISION=1005; +enum SQL_DESC_SCALE=1006; +enum SQL_DESC_DATETIME_INTERVAL_CODE=1007; +enum SQL_DESC_NULLABLE=1008; +enum SQL_DESC_INDICATOR_PTR=1009; +enum SQL_DESC_DATA_PTR=1010; +enum SQL_DESC_NAME=1011; +enum SQL_DESC_UNNAMED=1012; +enum SQL_DESC_OCTET_LENGTH=1013; + +enum SQL_DESCRIBE_PARAMETER=10002; + +enum SQL_DIAG_ALTER_DOMAIN=3; +enum SQL_DIAG_ALTER_TABLE=4; +enum SQL_DIAG_CALL=7; +enum SQL_DIAG_CLASS_ORIGIN=8; +enum SQL_DIAG_CONNECTION_NAME=10; +enum SQL_DIAG_CREATE_ASSERTION=6; +enum SQL_DIAG_CREATE_CHARACTER_SET=8; +enum SQL_DIAG_CREATE_COLLATION=10; +enum SQL_DIAG_CREATE_DOMAIN=23; +enum SQL_DIAG_CREATE_INDEX=-1; +enum SQL_DIAG_CREATE_SCHEMA=64; +enum SQL_DIAG_CREATE_TABLE=77; +enum SQL_DIAG_CREATE_TRANSLATION=79; +enum SQL_DIAG_CREATE_VIEW=84; +enum SQL_DIAG_DELETE_WHERE=19; +enum SQL_DIAG_DROP_ASSERTION=24; +enum SQL_DIAG_DROP_CHARACTER_SET=25; +enum SQL_DIAG_DROP_COLLATION=26; +enum SQL_DIAG_DROP_DOMAIN=27; +enum SQL_DIAG_DROP_INDEX=(-2); +enum SQL_DIAG_DROP_SCHEMA=31; +enum SQL_DIAG_DROP_TABLE=32; +enum SQL_DIAG_DROP_TRANSLATION=33; +enum SQL_DIAG_DROP_VIEW=36; +enum SQL_DIAG_DYNAMIC_DELETE_CURSOR=38; +enum SQL_DIAG_DYNAMIC_FUNCTION=7; +enum SQL_DIAG_DYNAMIC_FUNCTION_CODE=12; +enum SQL_DIAG_DYNAMIC_UPDATE_CURSOR=81; +enum SQL_DIAG_GRANT=48; +enum SQL_DIAG_INSERT=50; +enum SQL_DIAG_MESSAGE_TEXT=6; +enum SQL_DIAG_NATIVE=5; +enum SQL_DIAG_NUMBER=2; +enum SQL_DIAG_RETURNCODE=1; +enum SQL_DIAG_REVOKE=59; +enum SQL_DIAG_ROW_COUNT=3; +enum SQL_DIAG_SELECT_CURSOR=85; +enum SQL_DIAG_SERVER_NAME=11; +enum SQL_DIAG_SQLSTATE=4; +enum SQL_DIAG_SUBCLASS_ORIGIN=9; +enum SQL_DIAG_UNKNOWN_STATEMENT=0; +enum SQL_DIAG_UPDATE_WHERE=82; + +enum SQL_FALSE=0; +enum SQL_HANDLE_DBC=2; +enum SQL_HANDLE_DESC=4; +enum SQL_HANDLE_ENV=1; +enum SQL_HANDLE_STMT=3; +enum SQL_INSENSITIVE=1; +enum SQL_MAX_CONCURRENT_ACTIVITIES=1; +enum SQL_MAX_DRIVER_CONNECTIONS=0; +enum SQL_MAX_IDENTIFIER_LEN=10005; +enum SQL_MAXIMUM_CONCURRENT_ACTIVITIES=SQL_MAX_CONCURRENT_ACTIVITIES; +enum SQL_MAXIMUM_DRIVER_CONNECTIONS=SQL_MAX_DRIVER_CONNECTIONS; +enum SQL_MAXIMUM_IDENTIFIER_LENGTH=SQL_MAX_IDENTIFIER_LEN; +enum SQL_NAMED=0; +enum SQL_NO_DATA=100; +enum SQL_NONSCROLLABLE=0; +enum SQL_NULL_HANDLE=0L; +enum SQL_NULL_HDESC=0; +enum SQL_OJ_CAPABILITIES=115; +enum SQL_OUTER_JOIN_CAPABILITIES=SQL_OJ_CAPABILITIES; +enum SQL_PC_NON_PSEUDO=1; + +enum SQL_PRED_NONE=0; +enum SQL_PRED_CHAR=1; +enum SQL_PRED_BASIC=2; + +enum SQL_ROW_IDENTIFIER=1; +enum SQL_SCROLLABLE=1; +enum SQL_SENSITIVE=2; +enum SQL_TIME_LEN=8; +enum SQL_TIMESTAMP_LEN=19; +enum SQL_TRUE=1; +enum SQL_TYPE_DATE=91; +enum SQL_TYPE_TIME=92; +enum SQL_TYPE_TIMESTAMP=93; +enum SQL_UNNAMED=1; +enum SQL_UNSPECIFIED=0; +enum SQL_XOPEN_CLI_YEAR=10000; +}//#endif /* ODBCVER >= 0x0300 */ + +extern (System) { + deprecated { + SQLRETURN SQLAllocConnect(SQLHENV, SQLHDBC*); + SQLRETURN SQLAllocEnv(SQLHENV*); + SQLRETURN SQLAllocStmt(SQLHDBC, SQLHSTMT*); + SQLRETURN SQLError(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLFreeConnect(SQLHDBC); + SQLRETURN SQLFreeEnv(SQLHENV); + SQLRETURN SQLSetParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLGetConnectOption(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLSetConnectOption(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetStmtOption(SQLHSTMT, SQLUSMALLINT, SQLROWCOUNT); + } + SQLRETURN SQLBindCol(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLCancel(SQLHSTMT); + SQLRETURN SQLConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDescribeCol(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDisconnect(SQLHDBC); + SQLRETURN SQLExecDirect(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecute(SQLHSTMT); + SQLRETURN SQLFetch(SQLHSTMT); + SQLRETURN SQLFreeStmt(SQLHSTMT, SQLUSMALLINT); + SQLRETURN SQLGetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLNumResultCols(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLPrepare(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLRowCount(SQLHSTMT, SQLLEN*); + SQLRETURN SQLSetCursorName(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTransact(SQLHENV, SQLHDBC, SQLUSMALLINT); + SQLRETURN SQLColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLGetData(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLGetFunctions(SQLHDBC, SQLUSMALLINT, SQLUSMALLINT*); + SQLRETURN SQLGetInfo(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfo(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLParamData(SQLHSTMT, SQLPOINTER*); + SQLRETURN SQLPutData(SQLHSTMT, SQLPOINTER, SQLLEN); + SQLRETURN SQLSpecialColumns(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatistics(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTables(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSources(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + + static if (ODBCVER >= 0x0300) + { + SQLRETURN SQLAllocHandle(SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + SQLRETURN SQLBindParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN*); + SQLRETURN SQLCloseCursor(SQLHSTMT); + SQLRETURN SQLColAttribute(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLCopyDesc(SQLHDESC, SQLHDESC); + SQLRETURN SQLEndTran(SQLSMALLINT, SQLHANDLE, SQLSMALLINT); + SQLRETURN SQLFetchScroll(SQLHSTMT, SQLSMALLINT, SQLROWOFFSET); + SQLRETURN SQLFreeHandle(SQLSMALLINT, SQLHANDLE); + SQLRETURN SQLGetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescRec(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, + SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagField(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRec(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetConnectAttr(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescField(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescRec(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLLEN, SQLSMALLINT, + SQLSMALLINT, SQLPOINTER, SQLLEN*, SQLLEN*); + SQLRETURN SQLSetEnvAttr(SQLHENV, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttr(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + }/* (ODBCVER >= 0x0300) */ +} diff --git a/etc/c/odbc/sqlext.d b/etc/c/odbc/sqlext.d index 39a64aa00e6..7bec9eba271 100644 --- a/etc/c/odbc/sqlext.d +++ b/etc/c/odbc/sqlext.d @@ -1,16 +1,1306 @@ -// @@@DEPRECATED_2.106@@@ - /** -$(RED Warning: - This module is deprecated. It will be removed in 2.106. - Use `core.sys.windows.sqlext` instead.) - -Declarations for interfacing with the ODBC library. + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Source: $(PHOBOSSRC etc/c/odbc/_sqlext.d) See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference, - ODBC API Reference on MSN Online) + ODBC API Reference on MSDN) */ -deprecated("Import core.sys.windows.sqlext instead") module etc.c.odbc.sqlext; -public import core.sys.windows.sqlext; +/* Conversion notes: + The MinGW file was a horrible mess. All of the #defines were sorted alphabetically, + which is crazy. This file needs a lot of work. + In MinGW, sqlext #includes sqlucode, but sqlucode #includes sqlext, + creating a circular dependency! +*/ + +public import etc.c.odbc.sql; + +enum SQL_SPEC_MAJOR = 3; +enum SQL_SPEC_MINOR = 51; +const char[] SQL_SPEC_STRING = "03.51"; +enum SQL_ACCESS_MODE = 101; +enum SQL_ACTIVE_CONNECTIONS = 0; +enum SQL_ACTIVE_STATEMENTS = 1; + +enum SQL_DATE = 9; +enum SQL_TIME = 10; +enum SQL_SIGNED_OFFSET = -20; +enum SQL_TINYINT = -6; +enum SQL_TIMESTAMP = 11; +enum SQL_UNSIGNED_OFFSET = -22; + +enum SQL_ADD = 4; +enum SQL_ALL_EXCEPT_LIKE = 2; + +enum SQL_API_ALL_FUNCTIONS = 0; +enum SQL_API_SQLCOLATTRIBUTES = 6; +enum SQL_API_SQLDRIVERCONNECT = 41; +enum SQL_API_SQLBROWSECONNECT = 55; +enum SQL_API_SQLCOLUMNPRIVILEGES = 56; +enum SQL_API_SQLDESCRIBEPARAM = 58; +enum SQL_API_SQLEXTENDEDFETCH = 59; +enum SQL_API_SQLFOREIGNKEYS = 60; +enum SQL_API_SQLMORERESULTS = 61; +enum SQL_API_SQLNATIVESQL = 62; +enum SQL_API_SQLNUMPARAMS = 63; +enum SQL_API_SQLPARAMOPTIONS = 64; +enum SQL_API_SQLPRIMARYKEYS = 65; +enum SQL_API_SQLPROCEDURECOLUMNS = 66; +enum SQL_API_SQLPROCEDURES = 67; +enum SQL_API_SQLSETPOS = 68; +enum SQL_API_SQLSETSCROLLOPTIONS = 69; +enum SQL_API_SQLTABLEPRIVILEGES = 70; +enum SQL_API_SQLDRIVERS = 71; +enum SQL_API_SQLBINDPARAMETER = 72; +enum SQL_API_LOADBYORDINAL = 199; + +enum SQL_ASYNC_ENABLE = 4; +enum SQL_ASYNC_ENABLE_OFF = 0UL; +enum SQL_ASYNC_ENABLE_ON = 1UL; +enum SQL_ASYNC_ENABLE_DEFAULT = SQL_ASYNC_ENABLE_OFF; + +enum SQL_ATTR_CONNECTION_DEAD = 1209; +enum SQL_ATTR_READONLY = 0; +enum SQL_ATTR_READWRITE_UNKNOWN = 2; +enum SQL_ATTR_WRITE = 1; + +enum SQL_AUTOCOMMIT = 102; +enum SQL_AUTOCOMMIT_OFF = 0UL; +enum SQL_AUTOCOMMIT_ON = 1UL; +enum SQL_AUTOCOMMIT_DEFAULT = SQL_AUTOCOMMIT_ON; +enum SQL_BEST_ROWID = 1; +enum SQL_BIGINT = -5; +enum SQL_BINARY = -2; +enum SQL_BIND_BY_COLUMN = 0UL; +enum SQL_BIND_TYPE = 5; +enum SQL_BIND_TYPE_DEFAULT = SQL_BIND_BY_COLUMN; +enum SQL_BIT = -7; + +enum SQL_BOOKMARK_PERSISTENCE = 82; + +// for BOOKMARK_PERSISTENCE +enum SQL_BP_CLOSE = 1; +enum SQL_BP_DELETE = 2; +enum SQL_BP_DROP = 4; +enum SQL_BP_TRANSACTION = 8; +enum SQL_BP_UPDATE = 16; +enum SQL_BP_OTHER_HSTMT = 32; +enum SQL_BP_SCROLL = 64; + +enum SQL_C_BINARY = SQL_BINARY; +enum SQL_C_BIT = SQL_BIT; +enum SQL_C_CHAR = SQL_CHAR; +enum SQL_C_DATE = SQL_DATE; +enum SQL_C_DOUBLE = SQL_DOUBLE; +enum SQL_C_FLOAT = SQL_REAL; +enum SQL_C_LONG = SQL_INTEGER; +enum SQL_C_SHORT = SQL_SMALLINT; +enum SQL_C_SLONG = SQL_C_LONG+SQL_SIGNED_OFFSET; +enum SQL_C_SSHORT = SQL_C_SHORT+SQL_SIGNED_OFFSET; +enum SQL_C_STINYINT = SQL_TINYINT+SQL_SIGNED_OFFSET; +enum SQL_C_TIME = SQL_TIME; +enum SQL_C_TIMESTAMP = SQL_TIMESTAMP; +enum SQL_C_TINYINT = SQL_TINYINT; +enum SQL_C_ULONG = SQL_C_LONG+SQL_UNSIGNED_OFFSET; +enum SQL_C_USHORT = SQL_C_SHORT+SQL_UNSIGNED_OFFSET; +enum SQL_C_UTINYINT = SQL_TINYINT+SQL_UNSIGNED_OFFSET; +enum SQL_C_BOOKMARK = SQL_C_ULONG; +enum SQL_C_DEFAULT = 99; + +enum SQL_CASCADE = 0; +enum SQL_CB_NON_NULL = 1; +enum SQL_CB_NULL = 0; +deprecated { +enum SQL_CC_CLOSE = SQL_CB_CLOSE;/* deprecated */ +enum SQL_CC_DELETE = SQL_CB_DELETE;/* deprecated */ +enum SQL_CC_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ +} +enum SQL_CD_FALSE = 0L; +enum SQL_CD_TRUE = 1L; + +enum SQL_CN_ANY = 2; +enum SQL_CN_DIFFERENT = 1; +enum SQL_CN_NONE = 0; + +enum SQL_COLUMN_ALIAS = 87; + +enum SQL_COLUMN_COUNT = 0; +enum SQL_COLUMN_NAME = 1; +enum SQL_COLUMN_DISPLAY_SIZE = 6; +enum SQL_COLUMN_LABEL = 18; +enum SQL_COLUMN_LENGTH = 3; +enum SQL_COLUMN_MONEY = 9; +enum SQL_COLUMN_NULLABLE = 7; +enum SQL_COLUMN_OWNER_NAME = 16; +enum SQL_COLUMN_PRECISION = 4; +enum SQL_COLUMN_QUALIFIER_NAME = 17; +enum SQL_COLUMN_SCALE = 5; +enum SQL_COLUMN_UNSIGNED = 8; +enum SQL_COLUMN_UPDATABLE = 10; +enum SQL_COLUMN_AUTO_INCREMENT = 11; +enum SQL_COLUMN_CASE_SENSITIVE = 12; +enum SQL_COLUMN_SEARCHABLE = 13; +enum SQL_COLUMN_TYPE = 2; +enum SQL_COLUMN_TYPE_NAME = 14; +enum SQL_COLUMN_TABLE_NAME = 15; + +enum SQL_CONCAT_NULL_BEHAVIOR = 22; + +enum SQL_CONCUR_READ_ONLY = 1; +enum SQL_CONCUR_DEFAULT = SQL_CONCUR_READ_ONLY; +enum SQL_CONCUR_LOCK = 2; +enum SQL_CONCUR_ROWVER = 3; +enum SQL_CONCUR_TIMESTAMP = SQL_CONCUR_ROWVER;/* deprecated */ +enum SQL_CONCUR_VALUES = 4; + +enum SQL_CONCURRENCY = 7; +enum SQL_CONVERT_BIGINT = 53; +enum SQL_CONVERT_BINARY = 54; +enum SQL_CONVERT_BIT = 55; +enum SQL_CONVERT_CHAR = 56; +enum SQL_CONVERT_DATE = 57; +enum SQL_CONVERT_DECIMAL = 58; +enum SQL_CONVERT_DOUBLE = 59; +enum SQL_CONVERT_FLOAT = 60; +enum SQL_CONVERT_FUNCTIONS = 48; +enum SQL_CONVERT_INTEGER = 61; +enum SQL_CONVERT_LONGVARBINARY = 71; +enum SQL_CONVERT_LONGVARCHAR = 62; +enum SQL_CONVERT_NUMERIC = 63; +enum SQL_CONVERT_REAL = 64; +enum SQL_CONVERT_SMALLINT = 65; +enum SQL_CONVERT_TIME = 66; +enum SQL_CONVERT_TIMESTAMP = 67; +enum SQL_CONVERT_TINYINT = 68; +enum SQL_CONVERT_VARBINARY = 69; +enum SQL_CONVERT_VARCHAR = 70; +enum SQL_CORRELATION_NAME = 74; +enum SQL_CR_CLOSE = SQL_CB_CLOSE;/* deprecated */ +enum SQL_CR_DELETE = SQL_CB_DELETE;/* deprecated */ +enum SQL_CR_PRESERVE = SQL_CB_PRESERVE;/* deprecated */ + +enum : ULONG { + SQL_CUR_USE_IF_NEEDED = 0, + SQL_CUR_USE_ODBC, + SQL_CUR_USE_DRIVER, + SQL_CUR_DEFAULT = SQL_CUR_USE_DRIVER +} + +enum SQL_CURRENT_QUALIFIER = 109; +enum SQL_CURSOR_DYNAMIC = 2UL; +enum SQL_CURSOR_FORWARD_ONLY = 0UL; +enum SQL_CURSOR_KEYSET_DRIVEN = 1UL; +enum SQL_CURSOR_ROLLBACK_BEHAVIOR = 24; +enum SQL_CURSOR_STATIC = 3UL; +enum SQL_CURSOR_TYPE = 6; +enum SQL_CURSOR_TYPE_DEFAULT = SQL_CURSOR_FORWARD_ONLY; + +enum SQL_CV_CASCADED = 0x00000004L; +enum SQL_CV_CHECK_OPTION = 0x00000002L; +enum SQL_CV_CREATE_VIEW = 0x00000001L; +enum SQL_CV_LOCAL = 0x00000008L; +enum SQL_CVT_BIGINT = 0x00004000L; +enum SQL_CVT_BINARY = 0x00000400L; +enum SQL_CVT_BIT = 0x00001000L; +enum SQL_CVT_CHAR = 0x00000001L; +enum SQL_CVT_DATE = 0x00008000L; +enum SQL_CVT_DECIMAL = 0x00000004L; +enum SQL_CVT_DOUBLE = 0x00000080L; +enum SQL_CVT_FLOAT = 0x00000020L; +enum SQL_CVT_INTEGER = 0x00000008L; +enum SQL_CVT_LONGVARBINARY = 0x00040000L; +enum SQL_CVT_LONGVARCHAR = 0x00000200L; +enum SQL_CVT_NUMERIC = 0x00000002L; +enum SQL_CVT_REAL = 0x00000040L; +enum SQL_CVT_SMALLINT = 0x00000010L; +enum SQL_CVT_TIME = 0x00010000L; +enum SQL_CVT_TIMESTAMP = 0x00020000L; +enum SQL_CVT_TINYINT = 0x00002000L; +enum SQL_CVT_VARBINARY = 0x00000800L; +enum SQL_CVT_VARCHAR = 0x00000100L; +enum SQL_DATABASE_NAME = 16;/* deprecated */ + +enum SQL_DEFAULT_PARAM = -5; +enum SQL_DELETE = 3; + +enum SQL_DRIVER_COMPLETE = 1; +enum SQL_DRIVER_COMPLETE_REQUIRED = 3; +enum SQL_DRIVER_HDBC = 3; +enum SQL_DRIVER_HENV = 4; +enum SQL_DRIVER_HLIB = 76; +enum SQL_DRIVER_HSTMT = 5; +enum SQL_DRIVER_NAME = 6; +enum SQL_DRIVER_NOPROMPT = 0; +enum SQL_DRIVER_ODBC_VER = 77; +enum SQL_DRIVER_PROMPT = 2; +enum SQL_DRIVER_VER = 7; + +enum SQL_DTC_ENLIST_EXPENSIVE = 1; +enum SQL_DTC_UNENLIST_EXPENSIVE = 2; +enum SQL_DTC_TRANSITION_COST = 1750; +enum SQL_ENSURE = 1; +enum SQL_ENTIRE_ROWSET = 0; +enum SQL_EXPRESSIONS_IN_ORDERBY = 27; +enum SQL_FD_FETCH_BOOKMARK = 128; +enum SQL_FD_FETCH_PREV = SQL_FD_FETCH_PRIOR;/* deprecated */ +enum SQL_FD_FETCH_RESUME = 64; +enum SQL_FETCH_BOOKMARK = 8; +enum SQL_FETCH_PREV = SQL_FETCH_PRIOR;/* deprecated */ +enum SQL_FETCH_RESUME = 7;/* deprecated */ + +enum SQL_FILE_NOT_SUPPORTED = 0x0000; +enum SQL_FILE_TABLE = 0x0001; +enum SQL_FILE_QUALIFIER = 0x0002; +enum SQL_FILE_CATALOG = SQL_FILE_QUALIFIER; +enum SQL_FILE_USAGE = 84; + +enum SQL_FN_CVT_CONVERT = 0x00000001L; +enum SQL_FN_NUM_ABS = 0x00000001L; +enum SQL_FN_NUM_ACOS = 0x00000002L; +enum SQL_FN_NUM_ASIN = 0x00000004L; +enum SQL_FN_NUM_ATAN = 0x00000008L; +enum SQL_FN_NUM_ATAN2 = 0x00000010L; +enum SQL_FN_NUM_CEILING = 0x00000020L; +enum SQL_FN_NUM_COS = 0x00000040L; +enum SQL_FN_NUM_COT = 0x00000080L; +enum SQL_FN_NUM_DEGREES = 0x00040000L; +enum SQL_FN_NUM_EXP = 0x00000100L; +enum SQL_FN_NUM_FLOOR = 0x00000200L; +enum SQL_FN_NUM_LOG = 0x00000400L; +enum SQL_FN_NUM_LOG10 = 0x00080000L; +enum SQL_FN_NUM_MOD = 0x00000800L; +enum SQL_FN_NUM_PI = 0x00010000L; +enum SQL_FN_NUM_POWER = 0x00100000L; +enum SQL_FN_NUM_RADIANS = 0x00200000L; +enum SQL_FN_NUM_RAND = 0x00020000L; +enum SQL_FN_NUM_ROUND = 0x00400000L; +enum SQL_FN_NUM_SIGN = 0x00001000L; +enum SQL_FN_NUM_SIN = 0x00002000L; +enum SQL_FN_NUM_SQRT = 0x00004000L; +enum SQL_FN_NUM_TAN = 0x00008000L; +enum SQL_FN_NUM_TRUNCATE = 0x00800000L; +enum SQL_FN_STR_ASCII = 0x00002000L; +enum SQL_FN_STR_CHAR = 0x00004000L; +enum SQL_FN_STR_CONCAT = 0x00000001L; +enum SQL_FN_STR_DIFFERENCE = 0x00008000L; +enum SQL_FN_STR_INSERT = 0x00000002L; +enum SQL_FN_STR_LCASE = 0x00000040L; +enum SQL_FN_STR_LEFT = 0x00000004L; +enum SQL_FN_STR_LENGTH = 0x00000010L; +enum SQL_FN_STR_LOCATE = 0x00000020L; +enum SQL_FN_STR_LOCATE_2 = 0x00010000L; +enum SQL_FN_STR_LTRIM = 0x00000008L; +enum SQL_FN_STR_REPEAT = 0x00000080L; +enum SQL_FN_STR_REPLACE = 0x00000100L; +enum SQL_FN_STR_RIGHT = 0x00000200L; +enum SQL_FN_STR_RTRIM = 0x00000400L; +enum SQL_FN_STR_SOUNDEX = 0x00020000L; +enum SQL_FN_STR_SPACE = 0x00040000L; +enum SQL_FN_STR_SUBSTRING = 0x00000800L; +enum SQL_FN_STR_UCASE = 0x00001000L; +enum SQL_FN_SYS_DBNAME = 0x00000002L; +enum SQL_FN_SYS_IFNULL = 0x00000004L; +enum SQL_FN_SYS_USERNAME = 0x00000001L; +enum SQL_FN_TD_CURDATE = 0x00000002L; +enum SQL_FN_TD_CURTIME = 0x00000200L; +enum SQL_FN_TD_DAYNAME = 0x00008000L; +enum SQL_FN_TD_DAYOFMONTH = 0x00000004L; +enum SQL_FN_TD_DAYOFWEEK = 0x00000008L; +enum SQL_FN_TD_DAYOFYEAR = 0x00000010L; +enum SQL_FN_TD_HOUR = 0x00000400L; +enum SQL_FN_TD_MINUTE = 0x00000800L; +enum SQL_FN_TD_MONTH = 0x00000020L; +enum SQL_FN_TD_MONTHNAME = 0x00010000L; +enum SQL_FN_TD_NOW = 0x00000001L; +enum SQL_FN_TD_QUARTER = 0x00000040L; +enum SQL_FN_TD_SECOND = 0x00001000L; +enum SQL_FN_TD_TIMESTAMPADD = 0x00002000L; +enum SQL_FN_TD_TIMESTAMPDIFF = 0x00004000L; +enum SQL_FN_TD_WEEK = 0x00000080L; +enum SQL_FN_TD_YEAR = 0x00000100L; +enum SQL_FN_TSI_DAY = 0x00000010L; +enum SQL_FN_TSI_FRAC_SECOND = 0x00000001L; +enum SQL_FN_TSI_HOUR = 0x00000008L; +enum SQL_FN_TSI_MINUTE = 0x00000004L; +enum SQL_FN_TSI_MONTH = 0x00000040L; +enum SQL_FN_TSI_QUARTER = 0x00000080L; +enum SQL_FN_TSI_SECOND = 0x00000002L; +enum SQL_FN_TSI_WEEK = 0x00000020L; +enum SQL_FN_TSI_YEAR = 0x00000100L; +enum SQL_GB_GROUP_BY_CONTAINS_SELECT = 2; +enum SQL_GB_GROUP_BY_EQUALS_SELECT = 1; +enum SQL_GB_NO_RELATION = 3; +enum SQL_GB_NOT_SUPPORTED = 0; +enum SQL_GD_BLOCK = 4; +enum SQL_GD_BOUND = 8; +enum SQL_GET_BOOKMARK = 13; +enum SQL_GROUP_BY = 88; +enum SQL_IGNORE = -6; +enum SQL_INFO_FIRST = 0; +enum SQL_KEYSET_SIZE = 8; +enum SQL_KEYSET_SIZE_DEFAULT = 0UL; +enum SQL_KEYWORDS = 89; +enum SQL_LCK_EXCLUSIVE = 2; +enum SQL_LCK_NO_CHANGE = 1; +enum SQL_LCK_UNLOCK = 4; + +enum SQL_LEN_BINARY_ATTR_OFFSET = -100; +enum SQL_LEN_DATA_AT_EXEC_OFFSET = -100; +//MACRO #define SQL_LEN_BINARY_ATTR(length) (-(length)+SQL_LEN_BINARY_ATTR_OFFSET) +//MACRO #define SQL_LEN_DATA_AT_EXEC(length) (-(length)+SQL_LEN_DATA_AT_EXEC_OFFSET) + +enum SQL_LIKE_ESCAPE_CLAUSE = 113; +enum SQL_LIKE_ONLY = 1; +enum SQL_LOCK_EXCLUSIVE = 1; +enum SQL_LOCK_NO_CHANGE = 0; +enum SQL_LOCK_TYPES = 78; +enum SQL_LOCK_UNLOCK = 2; +enum SQL_LOGIN_TIMEOUT = 103; +enum SQL_LOGIN_TIMEOUT_DEFAULT = 15UL; +enum SQL_LONGVARBINARY = -4; +enum SQL_LONGVARCHAR = -1; +enum SQL_MAX_BINARY_LITERAL_LEN = 112; +enum SQL_MAX_CHAR_LITERAL_LEN = 108; +enum SQL_MAX_DSN_LENGTH = 32; +enum SQL_MAX_LENGTH = 3; +enum SQL_MAX_LENGTH_DEFAULT = 0UL; +enum SQL_MAX_OPTION_STRING_LENGTH = 256; +enum SQL_MAX_OWNER_NAME_LEN = 32; +enum SQL_MAX_PROCEDURE_NAME_LEN = 33; +enum SQL_MAX_QUALIFIER_NAME_LEN = 34; +enum SQL_MAX_ROW_SIZE_INCLUDES_LONG = 103; +enum SQL_MAX_ROWS = 1; +enum SQL_MAX_ROWS_DEFAULT = 0UL; + +enum SQL_MODE_READ_WRITE = 0UL; +enum SQL_MODE_READ_ONLY = 1UL; +enum SQL_MODE_DEFAULT = SQL_MODE_READ_WRITE; + +enum SQL_MULT_RESULT_SETS = 36; +enum SQL_MULTIPLE_ACTIVE_TXN = 37; +enum SQL_NC_END = 0x0004; +enum SQL_NC_START = 0x0002; +enum SQL_NEED_LONG_DATA_LEN = 111; +enum SQL_NNC_NON_NULL = 0x0001; +enum SQL_NNC_NULL = 0x0000; +enum SQL_NO_TOTAL = -4; +enum SQL_NON_NULLABLE_COLUMNS = 75; + +enum SQL_NOSCAN_OFF = 0UL; +enum SQL_NOSCAN_ON = 1UL; +enum SQL_NOSCAN = 2; +enum SQL_NOSCAN_DEFAULT = SQL_NOSCAN_OFF; + +enum SQL_NUMERIC_FUNCTIONS = 49; +enum SQL_OAC_LEVEL1 = 0x0001; +enum SQL_OAC_LEVEL2 = 0x0002; +enum SQL_OAC_NONE = 0x0000; +enum SQL_ODBC_API_CONFORMANCE = 9; +enum SQL_ODBC_CURSORS = 110; +enum SQL_ODBC_SAG_CLI_CONFORMANCE = 12; +enum SQL_ODBC_SQL_CONFORMANCE = 15; +enum SQL_ODBC_SQL_OPT_IEF = 73; +enum SQL_ODBC_VER = 10; +enum SQL_OPT_TRACE = 104; + +enum SQL_OPT_TRACE_FILE_DEFAULT = "\\SQL.LOG"; +enum SQL_OPT_TRACE_OFF = 0UL; +enum SQL_OPT_TRACE_DEFAULT = SQL_OPT_TRACE_OFF; +enum SQL_OPT_TRACE_ON = 1UL; + +enum SQL_OPT_TRACEFILE = 105; +enum SQL_OSC_CORE = 1; +enum SQL_OSC_EXTENDED = 2; +enum SQL_OSC_MINIMUM = 0; +enum SQL_OSCC_COMPLIANT = 1; +enum SQL_OSCC_NOT_COMPLIANT = 0; +enum SQL_OU_DML_STATEMENTS = 1; +enum SQL_OU_INDEX_DEFINITION = 8; +enum SQL_OU_PRIVILEGE_DEFINITION = 16; +enum SQL_OU_PROCEDURE_INVOCATION = 2; +enum SQL_OU_TABLE_DEFINITION = 4; +enum SQL_OUTER_JOINS = 38; +enum SQL_OWNER_TERM = 39; +enum SQL_OWNER_USAGE = 91; +enum SQL_PACKET_SIZE = 112; +enum SQL_PARAM_INPUT = 1; +enum SQL_PARAM_INPUT_OUTPUT = 2; +enum SQL_PARAM_OUTPUT = 4; +enum SQL_PARAM_TYPE_DEFAULT = SQL_PARAM_INPUT_OUTPUT; +enum SQL_PARAM_TYPE_UNKNOWN = 0; +enum SQL_PC_NOT_PSEUDO = 1; +enum SQL_POS_ADD = 16; +enum SQL_POS_DELETE = 8; +enum SQL_POS_OPERATIONS = 79; +enum SQL_POS_POSITION = 1; +enum SQL_POS_REFRESH = 2; +enum SQL_POS_UPDATE = 4; +enum SQL_POSITION = 0; +enum SQL_POSITIONED_STATEMENTS = 80; +enum SQL_PROCEDURE_TERM = 40; +enum SQL_PROCEDURES = 21; +enum SQL_PS_POSITIONED_DELETE = 1; +enum SQL_PS_POSITIONED_UPDATE = 2; +enum SQL_PS_SELECT_FOR_UPDATE = 4; +enum SQL_PT_FUNCTION = 2; +enum SQL_PT_PROCEDURE = 1; +enum SQL_PT_UNKNOWN = 0; +enum SQL_QL_END = 0x0002; +enum SQL_QL_START = 0x0001; +enum SQL_QU_DML_STATEMENTS = 1; +enum SQL_QU_INDEX_DEFINITION = 8; +enum SQL_QU_PRIVILEGE_DEFINITION = 16; +enum SQL_QU_PROCEDURE_INVOCATION = 2; +enum SQL_QU_TABLE_DEFINITION = 4; +enum SQL_QUALIFIER_LOCATION = 114; +enum SQL_QUALIFIER_NAME_SEPARATOR = 41; +enum SQL_QUALIFIER_TERM = 42; +enum SQL_QUALIFIER_USAGE = 92; +enum SQL_QUERY_TIMEOUT = 0; +enum SQL_QUERY_TIMEOUT_DEFAULT = 0UL; +enum SQL_QUICK = 0; +enum SQL_QUIET_MODE = 111; +enum SQL_QUOTED_IDENTIFIER_CASE = 93; + +enum SQL_RD_OFF = 0UL; +enum SQL_RD_ON = 1UL; +enum SQL_RD_DEFAULT = SQL_RD_ON; + +enum SQL_REFRESH = 1; +enum SQL_RESTRICT = 1; +enum SQL_RESULT_COL = 3; +enum SQL_RETRIEVE_DATA = 11; +enum SQL_RETURN_VALUE = 5; +enum SQL_ROW_ADDED = 4; +enum SQL_ROW_DELETED = 1; +enum SQL_ROW_ERROR = 5; +enum SQL_ROW_NOROW = 3; +enum SQL_ROW_NUMBER = 14; +enum SQL_ROW_SUCCESS = 0; +enum SQL_ROW_UPDATED = 2; +enum SQL_ROW_UPDATES = 11; +enum SQL_ROWSET_SIZE = 9; +enum SQL_ROWSET_SIZE_DEFAULT = 1UL; +enum SQL_ROWVER = 2; +enum SQL_SC_NON_UNIQUE = 0UL; +enum SQL_SC_TRY_UNIQUE = 1UL; +enum SQL_SC_UNIQUE = 2UL; +enum SQL_SCCO_OPT_TIMESTAMP = SQL_SCCO_OPT_ROWVER;/* deprecated */ +enum SQL_SCROLL_DYNAMIC = -2L;/* deprecated */ +enum SQL_SCROLL_FORWARD_ONLY = 0L;/* deprecated */ +enum SQL_SCROLL_KEYSET_DRIVEN = -1L;/* deprecated */ +enum SQL_SCROLL_OPTIONS = 44; +enum SQL_SCROLL_STATIC = -3L;/* deprecated */ +enum SQL_SEARCHABLE = 3; +enum SQL_SET_NULL = 2; +enum SQL_SETPARAM_VALUE_MAX = -1L; +enum SQL_SETPOS_MAX_LOCK_VALUE = SQL_LOCK_UNLOCK; +enum SQL_SETPOS_MAX_OPTION_VALUE = SQL_ADD; +enum SQL_SIMULATE_CURSOR = 10; +enum SQL_SO_DYNAMIC = 4; +enum SQL_SO_FORWARD_ONLY = 1; +enum SQL_SO_KEYSET_DRIVEN = 2; +enum SQL_SO_MIXED = 8; +enum SQL_SO_STATIC = 16; +enum SQL_SQ_COMPARISON = 1; +enum SQL_SQ_CORRELATED_SUBQUERIES = 16; +enum SQL_SQ_EXISTS = 2; +enum SQL_SQ_IN = 4; +enum SQL_SQ_QUANTIFIED = 8; +enum SQL_SQLSTATE_SIZE = 5; +enum SQL_SS_ADDITIONS = 1; +enum SQL_SS_DELETIONS = 2; +enum SQL_SS_UPDATES = 4; +enum SQL_STATIC_SENSITIVITY = 83; +enum SQL_STRING_FUNCTIONS = 50; +enum SQL_SUBQUERIES = 95; +enum SQL_SYSTEM_FUNCTIONS = 51; +enum SQL_TABLE_STAT = 0; +enum SQL_TABLE_TERM = 45; +enum SQL_TIMEDATE_ADD_INTERVALS = 109; +enum SQL_TIMEDATE_DIFF_INTERVALS = 110; +enum SQL_TIMEDATE_FUNCTIONS = 52; +enum SQL_TRANSLATE_DLL = 106; +enum SQL_TRANSLATE_OPTION = 107; +enum SQL_TXN_ISOLATION = 108; +enum SQL_TXN_VERSIONING = 16; +enum SQL_TYPE_NULL = 0; +enum SQL_U_UNION = 1; +enum SQL_U_UNION_ALL = 2; + +enum SQL_UB_OFF = 0UL; +enum SQL_UB_DEFAULT = SQL_UB_OFF; +enum SQL_UB_ON = 1UL; + +enum SQL_UNION = 96; +enum SQL_UNSEARCHABLE = 0; +enum SQL_UPDATE = 2; +enum SQL_USE_BOOKMARKS = 12; +enum SQL_VARBINARY = -3; + +enum SQL_COLATT_OPT_MAX = SQL_COLUMN_LABEL; +enum SQL_COLATT_OPT_MIN = SQL_COLUMN_COUNT; +enum SQL_PRED_SEARCHABLE = SQL_SEARCHABLE; + +//MACRO #define SQL_POSITION_TO(s, r) SQLSetPos(s, r, SQL_POSITION, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_LOCK_RECORD(s, r, l) SQLSetPos(s, r, SQL_POSITION, l) + +//MACRO #define SQL_REFRESH_RECORD(s, r, l) SQLSetPos(s, r, SQL_REFRESH, l) + +//MACRO #define SQL_UPDATE_RECORD(s, r) SQLSetPos(s, r, SQL_UPDATE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_DELETE_RECORD(s, r) SQLSetPos(s, r, SQL_DELETE, SQL_LOCK_NO_CHANGE) + +//MACRO #define SQL_ADD_RECORD(s, r) SQLSetPos(s, r, SQL_ADD, SQL_LOCK_NO_CHANGE) + + +static if (ODBCVER < 0x0300) +{ +enum SQL_CONNECT_OPT_DRVR_START = 1000; +enum SQL_CONN_OPT_MAX = SQL_PACKET_SIZE; +enum SQL_CONN_OPT_MIN = SQL_ACCESS_MODE; +enum SQL_STMT_OPT_MAX = SQL_ROW_NUMBER; +enum SQL_STMT_OPT_MIN = SQL_QUERY_TIMEOUT; +enum SQL_TYPE_DRIVER_START = SQL_INTERVAL_YEAR; +enum SQL_TYPE_DRIVER_END = SQL_UNICODE_LONGVARCHAR; +enum SQL_TYPE_MIN = SQL_BIT; +enum SQL_TYPE_MAX = SQL_VARCHAR; +} + +static if (ODBCVER < 0x0300) +{ +enum SQL_NO_DATA_FOUND = 100; +enum SQL_INTERVAL_YEAR = -80; +enum SQL_INTERVAL_MONTH = -81; +enum SQL_INTERVAL_YEAR_TO_MONTH = -82; +enum SQL_INTERVAL_DAY = -83; +enum SQL_INTERVAL_HOUR = -84; +enum SQL_INTERVAL_MINUTE = -85; +enum SQL_INTERVAL_SECOND = -86; +enum SQL_INTERVAL_DAY_TO_HOUR = -87; +enum SQL_INTERVAL_DAY_TO_MINUTE = -88; +enum SQL_INTERVAL_DAY_TO_SECOND = -89; +enum SQL_INTERVAL_HOUR_TO_MINUTE = -90; +enum SQL_INTERVAL_HOUR_TO_SECOND = -91; +enum SQL_INTERVAL_MINUTE_TO_SECOND = -92; +} +else +{ +enum SQL_NO_DATA_FOUND = SQL_NO_DATA; +enum SQL_CODE_YEAR = 1; +enum SQL_CODE_MONTH = 2; +enum SQL_CODE_DAY = 3; +enum SQL_CODE_HOUR = 4; +enum SQL_CODE_MINUTE = 5; +enum SQL_CODE_SECOND = 6; +enum SQL_CODE_YEAR_TO_MONTH = 7; +enum SQL_CODE_DAY_TO_HOUR = 8; +enum SQL_CODE_DAY_TO_MINUTE = 9; +enum SQL_CODE_DAY_TO_SECOND = 10; +enum SQL_CODE_HOUR_TO_MINUTE = 11; +enum SQL_CODE_HOUR_TO_SECOND = 12; +enum SQL_CODE_MINUTE_TO_SECOND = 13; +enum SQL_INTERVAL_YEAR = 100 + SQL_CODE_YEAR; +enum SQL_INTERVAL_MONTH = 100 + SQL_CODE_MONTH; +enum SQL_INTERVAL_DAY = 100 + SQL_CODE_DAY; +enum SQL_INTERVAL_HOUR = 100 + SQL_CODE_HOUR; +enum SQL_INTERVAL_MINUTE = 100 + SQL_CODE_MINUTE; +enum SQL_INTERVAL_SECOND = 100 + SQL_CODE_SECOND; +enum SQL_INTERVAL_YEAR_TO_MONTH = 100 + SQL_CODE_YEAR_TO_MONTH; +enum SQL_INTERVAL_DAY_TO_HOUR = 100 + SQL_CODE_DAY_TO_HOUR; +enum SQL_INTERVAL_DAY_TO_MINUTE = 100 + SQL_CODE_DAY_TO_MINUTE; +enum SQL_INTERVAL_DAY_TO_SECOND = 100 + SQL_CODE_DAY_TO_SECOND; +enum SQL_INTERVAL_HOUR_TO_MINUTE = 100 + SQL_CODE_HOUR_TO_MINUTE; +enum SQL_INTERVAL_HOUR_TO_SECOND = 100 + SQL_CODE_HOUR_TO_SECOND; +enum SQL_INTERVAL_MINUTE_TO_SECOND = 100 + SQL_CODE_MINUTE_TO_SECOND; +}//[Yes] #endif + + +static if ((ODBCVER >= 0x0201) && (ODBCVER < 0x0300)) +{ +enum SQL_OJ_CAPABILITIES = 65003; +} + +static if (ODBCVER >= 0x0250) +{ +enum SQL_NO_ACTION = 3; +enum SQL_SET_DEFAULT = 4; +} + +static if (ODBCVER >= 0x0300) +{ +enum SQL_ACTIVE_ENVIRONMENTS = 116; +enum SQL_AD_ADD_CONSTRAINT_DEFERRABLE = 0x00000080L; +enum SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; +enum SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; +enum SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; +enum SQL_AD_ADD_DOMAIN_CONSTRAINT = 0x00000002L; +enum SQL_AD_ADD_DOMAIN_DEFAULT = 0x00000008L; +enum SQL_AD_CONSTRAINT_NAME_DEFINITION = 0x00000001L; +enum SQL_AD_DROP_DOMAIN_CONSTRAINT = 0x00000004L; +enum SQL_AD_DROP_DOMAIN_DEFAULT = 0x00000010L; +enum SQL_AF_ALL = 0x00000040L; +enum SQL_AF_AVG = 0x00000001L; +enum SQL_AF_COUNT = 0x00000002L; +enum SQL_AF_DISTINCT = 0x00000020L; +enum SQL_AF_MAX = 0x00000004L; +enum SQL_AF_MIN = 0x00000008L; +enum SQL_AF_SUM = 0x00000010L; +enum SQL_AGGREGATE_FUNCTIONS = 169; +enum SQL_ALL_CATALOGS = "%"; +enum SQL_ALL_SCHEMAS = "%"; +enum SQL_ALL_TABLE_TYPES = "%"; +enum SQL_ALTER_DOMAIN = 117; +enum SQL_AM_CONNECTION = 1; +enum SQL_AM_NONE = 0; +enum SQL_AM_STATEMENT = 2; +enum SQL_API_ODBC3_ALL_FUNCTIONS = 999; +enum SQL_API_ODBC3_ALL_FUNCTIONS_SIZE = 250; +enum SQL_API_SQLALLOCHANDLESTD = 73; +enum SQL_API_SQLBULKOPERATIONS = 24; +enum SQL_ASYNC_MODE = 10021; +enum SQL_AT_ADD_COLUMN_COLLATION = 0x00000080L; +enum SQL_AT_ADD_COLUMN_DEFAULT = 0x00000040L; +enum SQL_AT_ADD_COLUMN_SINGLE = 0x00000020L; +enum SQL_AT_ADD_TABLE_CONSTRAINT = 0x00001000L; +enum SQL_AT_CONSTRAINT_DEFERRABLE = 0x00040000L; +enum SQL_AT_CONSTRAINT_INITIALLY_DEFERRED = 0x00010000L; +enum SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00020000L; +enum SQL_AT_CONSTRAINT_NAME_DEFINITION = 0x00008000L; +enum SQL_AT_CONSTRAINT_NON_DEFERRABLE = 0x00080000L; +enum SQL_AT_DROP_COLUMN_CASCADE = 0x00000400L; +enum SQL_AT_DROP_COLUMN_DEFAULT = 0x00000200L; +enum SQL_AT_DROP_COLUMN_RESTRICT = 0x00000800L; +enum SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE = 0x00002000L; +enum SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT = 0x00004000L; +enum SQL_AT_SET_COLUMN_DEFAULT = 0x00000100L; +enum SQL_ATTR_ACCESS_MODE = SQL_ACCESS_MODE; +enum SQL_ATTR_ASYNC_ENABLE = 4; +enum SQL_ATTR_AUTOCOMMIT = SQL_AUTOCOMMIT; +enum SQL_ATTR_CONCURRENCY = SQL_CONCURRENCY; +enum SQL_ATTR_CONNECTION_POOLING = 201; +enum SQL_ATTR_CONNECTION_TIMEOUT = 113; +enum SQL_ATTR_CP_MATCH = 202; +enum SQL_ATTR_CURRENT_CATALOG = SQL_CURRENT_QUALIFIER; +enum SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_TYPE; +enum SQL_ATTR_DISCONNECT_BEHAVIOR = 114; +enum SQL_ATTR_ENABLE_AUTO_IPD = 15; +enum SQL_ATTR_ENLIST_IN_DTC = 1207; +enum SQL_ATTR_ENLIST_IN_XA = 1208; +enum SQL_ATTR_FETCH_BOOKMARK_PTR = 16; +enum SQL_ATTR_KEYSET_SIZE = SQL_KEYSET_SIZE; +enum SQL_ATTR_LOGIN_TIMEOUT = SQL_LOGIN_TIMEOUT; +enum SQL_ATTR_MAX_LENGTH = SQL_MAX_LENGTH; +enum SQL_ATTR_MAX_ROWS = SQL_MAX_ROWS; +enum SQL_ATTR_NOSCAN = SQL_NOSCAN; +enum SQL_ATTR_ODBC_CURSORS = SQL_ODBC_CURSORS; +enum SQL_ATTR_ODBC_VERSION = 200; +enum SQL_ATTR_PACKET_SIZE = SQL_PACKET_SIZE; +enum SQL_ATTR_PARAM_BIND_OFFSET_PTR = 17; +enum SQL_ATTR_PARAM_BIND_TYPE = 18; +enum SQL_ATTR_PARAM_OPERATION_PTR = 19; +enum SQL_ATTR_PARAM_STATUS_PTR = 20; +enum SQL_ATTR_PARAMS_PROCESSED_PTR = 21; +enum SQL_ATTR_PARAMSET_SIZE = 22; +enum SQL_ATTR_QUERY_TIMEOUT = SQL_QUERY_TIMEOUT; +enum SQL_ATTR_QUIET_MODE = SQL_QUIET_MODE; +enum SQL_ATTR_RETRIEVE_DATA = SQL_RETRIEVE_DATA; +enum SQL_ATTR_ROW_ARRAY_SIZE = 27; +enum SQL_ATTR_ROW_BIND_OFFSET_PTR = 23; +enum SQL_ATTR_ROW_BIND_TYPE = SQL_BIND_TYPE; +enum SQL_ATTR_ROW_NUMBER = SQL_ROW_NUMBER; +enum SQL_ATTR_ROW_OPERATION_PTR = 24; +enum SQL_ATTR_ROW_STATUS_PTR = 25; +enum SQL_ATTR_ROWS_FETCHED_PTR = 26; +enum SQL_ATTR_SIMULATE_CURSOR = SQL_SIMULATE_CURSOR; +enum SQL_ATTR_TRACE = SQL_OPT_TRACE; +enum SQL_ATTR_TRACEFILE = SQL_OPT_TRACEFILE; +enum SQL_ATTR_TRANSLATE_LIB = SQL_TRANSLATE_DLL; +enum SQL_ATTR_TRANSLATE_OPTION = SQL_TRANSLATE_OPTION; +enum SQL_ATTR_TXN_ISOLATION = SQL_TXN_ISOLATION; +enum SQL_ATTR_USE_BOOKMARKS = SQL_USE_BOOKMARKS; +enum SQL_BATCH_ROW_COUNT = 120; +enum SQL_BATCH_SUPPORT = 121; +enum SQL_BRC_EXPLICIT = 0x0000002; +enum SQL_BRC_PROCEDURES = 0x0000001; +enum SQL_BRC_ROLLED_UP = 0x0000004; +enum SQL_BS_ROW_COUNT_EXPLICIT = 0x00000002L; +enum SQL_BS_ROW_COUNT_PROC = 0x00000008L; +enum SQL_BS_SELECT_EXPLICIT = 0x00000001L; +enum SQL_BS_SELECT_PROC = 0x00000004L; +enum SQL_C_INTERVAL_DAY = SQL_INTERVAL_DAY; +enum SQL_C_INTERVAL_DAY_TO_HOUR = SQL_INTERVAL_DAY_TO_HOUR; +enum SQL_C_INTERVAL_DAY_TO_MINUTE = SQL_INTERVAL_DAY_TO_MINUTE; +enum SQL_C_INTERVAL_DAY_TO_SECOND = SQL_INTERVAL_DAY_TO_SECOND; +enum SQL_C_INTERVAL_HOUR = SQL_INTERVAL_HOUR; +enum SQL_C_INTERVAL_HOUR_TO_MINUTE = SQL_INTERVAL_HOUR_TO_MINUTE; +enum SQL_C_INTERVAL_HOUR_TO_SECOND = SQL_INTERVAL_HOUR_TO_SECOND; +enum SQL_C_INTERVAL_MINUTE = SQL_INTERVAL_MINUTE; +enum SQL_C_INTERVAL_MINUTE_TO_SECOND = SQL_INTERVAL_MINUTE_TO_SECOND; +enum SQL_C_INTERVAL_MONTH = SQL_INTERVAL_MONTH; +enum SQL_C_INTERVAL_SECOND = SQL_INTERVAL_SECOND; +enum SQL_C_INTERVAL_YEAR = SQL_INTERVAL_YEAR; +enum SQL_C_INTERVAL_YEAR_TO_MONTH = SQL_INTERVAL_YEAR_TO_MONTH; +enum SQL_C_NUMERIC = SQL_NUMERIC; +enum SQL_C_SBIGINT = SQL_BIGINT+SQL_SIGNED_OFFSET; +enum SQL_C_TYPE_DATE = SQL_TYPE_DATE; +enum SQL_C_TYPE_TIME = SQL_TYPE_TIME; +enum SQL_C_TYPE_TIMESTAMP = SQL_TYPE_TIMESTAMP; +enum SQL_C_UBIGINT = SQL_BIGINT+SQL_UNSIGNED_OFFSET; +enum SQL_C_VARBOOKMARK = SQL_C_BINARY; +enum SQL_CA_CONSTRAINT_DEFERRABLE = 0x00000040L; +enum SQL_CA_CONSTRAINT_INITIALLY_DEFERRED = 0x00000010L; +enum SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000020L; +enum SQL_CA_CONSTRAINT_NON_DEFERRABLE = 0x00000080L; +enum SQL_CA_CREATE_ASSERTION = 0x00000001L; +enum SQL_CA1_ABSOLUTE = 0x00000002L; +enum SQL_CA1_BOOKMARK = 0x00000008L; +enum SQL_CA1_BULK_ADD = 0x00010000L; +enum SQL_CA1_BULK_DELETE_BY_BOOKMARK = 0x00040000L; +enum SQL_CA1_BULK_FETCH_BY_BOOKMARK = 0x00080000L; +enum SQL_CA1_BULK_UPDATE_BY_BOOKMARK = 0x00020000L; +enum SQL_CA1_LOCK_EXCLUSIVE = 0x00000080L; +enum SQL_CA1_LOCK_NO_CHANGE = 0x00000040L; +enum SQL_CA1_LOCK_UNLOCK = 0x00000100L; +enum SQL_CA1_NEXT = 0x00000001L; +enum SQL_CA1_POS_DELETE = 0x00000800L; +enum SQL_CA1_POS_POSITION = 0x00000200L; +enum SQL_CA1_POS_REFRESH = 0x00001000L; +enum SQL_CA1_POS_UPDATE = 0x00000400L; +enum SQL_CA1_POSITIONED_DELETE = 0x00004000L; +enum SQL_CA1_POSITIONED_UPDATE = 0x00002000L; +enum SQL_CA1_RELATIVE = 0x00000004L; +enum SQL_CA1_SELECT_FOR_UPDATE = 0x00008000L; +enum SQL_CA2_CRC_APPROXIMATE = 0x00002000L; +enum SQL_CA2_CRC_EXACT = 0x00001000L; +enum SQL_CA2_LOCK_CONCURRENCY = 0x00000002L; + +enum SQL_CA2_MAX_ROWS_CATALOG = 0x00000800L; +enum SQL_CA2_MAX_ROWS_DELETE = 0x00000200L; +enum SQL_CA2_MAX_ROWS_INSERT = 0x00000100L; +enum SQL_CA2_MAX_ROWS_SELECT = 0x00000080L; +enum SQL_CA2_MAX_ROWS_UPDATE = 0x00000400L; +enum SQL_CA2_MAX_ROWS_AFFECTS_ALL = SQL_CA2_MAX_ROWS_SELECT | SQL_CA2_MAX_ROWS_INSERT | + SQL_CA2_MAX_ROWS_DELETE | SQL_CA2_MAX_ROWS_UPDATE | SQL_CA2_MAX_ROWS_CATALOG; + +enum SQL_CA2_OPT_ROWVER_CONCURRENCY = 0x00000004L; +enum SQL_CA2_OPT_VALUES_CONCURRENCY = 0x00000008L; +enum SQL_CA2_READ_ONLY_CONCURRENCY = 0x00000001L; +enum SQL_CA2_SENSITIVITY_ADDITIONS = 0x00000010L; +enum SQL_CA2_SENSITIVITY_DELETIONS = 0x00000020L; +enum SQL_CA2_SENSITIVITY_UPDATES = 0x00000040L; +enum SQL_CA2_SIMULATE_NON_UNIQUE = 0x00004000L; +enum SQL_CA2_SIMULATE_TRY_UNIQUE = 0x00008000L; +enum SQL_CA2_SIMULATE_UNIQUE = 0x00010000L; +enum SQL_CATALOG_LOCATION = SQL_QUALIFIER_LOCATION; +enum SQL_CATALOG_NAME_SEPARATOR = SQL_QUALIFIER_NAME_SEPARATOR; +enum SQL_CATALOG_TERM = SQL_QUALIFIER_TERM; +enum SQL_CATALOG_USAGE = SQL_QUALIFIER_USAGE; +enum SQL_CCOL_CREATE_COLLATION = 0x00000001L; +enum SQL_CCS_COLLATE_CLAUSE = 0x00000002L; +enum SQL_CCS_CREATE_CHARACTER_SET = 0x00000001L; +enum SQL_CCS_LIMITED_COLLATION = 0x00000004L; +enum SQL_CDO_COLLATION = 0x00000008L; +enum SQL_CDO_CONSTRAINT = 0x00000004L; +enum SQL_CDO_CONSTRAINT_DEFERRABLE = 0x00000080L; +enum SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; +enum SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; +enum SQL_CDO_CONSTRAINT_NAME_DEFINITION = 0x00000010L; +enum SQL_CDO_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; +enum SQL_CDO_CREATE_DOMAIN = 0x00000001L; +enum SQL_CDO_DEFAULT = 0x00000002L; +enum SQL_CL_END = SQL_QL_END; +enum SQL_CL_START = SQL_QL_START; +enum SQL_COL_PRED_BASIC = SQL_ALL_EXCEPT_LIKE; +enum SQL_COL_PRED_CHAR = SQL_LIKE_ONLY; +enum SQL_COLUMN_DRIVER_START = 1000; +enum SQL_COLUMN_IGNORE = SQL_IGNORE; +enum SQL_COLUMN_NUMBER_UNKNOWN = -2; +enum SQL_CONVERT_GUID = 173; + +enum SQL_CONVERT_WCHAR = 122; +enum SQL_CONVERT_INTERVAL_DAY_TIME = 123; +enum SQL_CONVERT_INTERVAL_YEAR_MONTH = 124; +enum SQL_CONVERT_WLONGVARCHAR = 125; +enum SQL_CONVERT_WVARCHAR = 126; + +enum SQL_CREATE_ASSERTION = 127; +enum SQL_CREATE_CHARACTER_SET = 128; +enum SQL_CREATE_COLLATION = 129; +enum SQL_CREATE_DOMAIN = 130; +enum SQL_CREATE_SCHEMA = 131; +enum SQL_CREATE_TABLE = 132; +enum SQL_CREATE_TRANSLATION = 133; +enum SQL_CREATE_VIEW = 134; + + +enum SQL_CP_OFF = 0UL; +enum SQL_CP_DEFAULT = SQL_CP_OFF; +enum SQL_CP_ONE_PER_DRIVER = 1UL; +enum SQL_CP_ONE_PER_HENV = 2UL; + +enum SQL_CP_STRICT_MATCH = 0UL; +enum SQL_CP_MATCH_DEFAULT = SQL_CP_STRICT_MATCH; +enum SQL_CP_RELAXED_MATCH = 1UL; + +enum SQL_CS_CREATE_SCHEMA = 0x00000001L; +enum SQL_CS_AUTHORIZATION = 0x00000002L; +enum SQL_CS_DEFAULT_CHARACTER_SET = 0x00000004L; + +enum SQL_CT_COLUMN_COLLATION = 0x00000800L; +enum SQL_CT_COLUMN_CONSTRAINT = 0x00000200L; +enum SQL_CT_COLUMN_DEFAULT = 0x00000400L; +enum SQL_CT_COMMIT_DELETE = 0x00000004L; +enum SQL_CT_COMMIT_PRESERVE = 0x00000002L; +enum SQL_CT_CONSTRAINT_DEFERRABLE = 0x00000080L; +enum SQL_CT_CONSTRAINT_INITIALLY_DEFERRED = 0x00000020L; +enum SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE = 0x00000040L; +enum SQL_CT_CONSTRAINT_NAME_DEFINITION = 0x00002000L; +enum SQL_CT_CONSTRAINT_NON_DEFERRABLE = 0x00000100L; +enum SQL_CT_CREATE_TABLE = 0x00000001L; +enum SQL_CT_GLOBAL_TEMPORARY = 0x00000008L; +enum SQL_CT_LOCAL_TEMPORARY = 0x00000010L; +enum SQL_CT_TABLE_CONSTRAINT = 0x00001000L; + +enum SQL_CTR_CREATE_TRANSLATION = 0x00000001L; + +enum SQL_CU_DML_STATEMENTS = SQL_QU_DML_STATEMENTS; +enum SQL_CU_INDEX_DEFINITION = SQL_QU_INDEX_DEFINITION; +enum SQL_CU_PRIVILEGE_DEFINITION = SQL_QU_PRIVILEGE_DEFINITION; +enum SQL_CU_PROCEDURE_INVOCATION = SQL_QU_PROCEDURE_INVOCATION; +enum SQL_CU_TABLE_DEFINITION = SQL_QU_TABLE_DEFINITION; + +enum SQL_CVT_INTERVAL_YEAR_MONTH = 0x00080000L; +enum SQL_CVT_INTERVAL_DAY_TIME = 0x00100000L; +enum SQL_CVT_WCHAR = 0x00200000L; +enum SQL_CVT_WLONGVARCHAR = 0x00400000L; +enum SQL_CVT_WVARCHAR = 0x00800000L; +enum SQL_CVT_GUID = 0x01000000L; + +enum SQL_DA_DROP_ASSERTION = 0x00000001L; +enum SQL_DATETIME_LITERALS = 119; + +enum SQL_DB_DISCONNECT = 1UL; +enum SQL_DB_RETURN_TO_POOL = 0UL; +enum SQL_DB_DEFAULT = SQL_DB_RETURN_TO_POOL; + +enum SQL_DC_DROP_COLLATION = 0x00000001L; +enum SQL_DCS_DROP_CHARACTER_SET = 0x00000001L; +enum SQL_DD_CASCADE = 0x00000004L; +enum SQL_DD_DROP_DOMAIN = 0x00000001L; +enum SQL_DD_RESTRICT = 0x00000002L; +enum SQL_DDL_INDEX = 170; +enum SQL_DELETE_BY_BOOKMARK = 6; +enum SQL_DESC_ARRAY_SIZE = 20; +enum SQL_DESC_ARRAY_STATUS_PTR = 21; +enum SQL_DESC_AUTO_UNIQUE_VALUE = SQL_COLUMN_AUTO_INCREMENT; +enum SQL_DESC_BASE_COLUMN_NAME = 22; +enum SQL_DESC_BASE_TABLE_NAME = 23; +enum SQL_DESC_BIND_OFFSET_PTR = 24; +enum SQL_DESC_BIND_TYPE = 25; +enum SQL_DESC_CASE_SENSITIVE = SQL_COLUMN_CASE_SENSITIVE; +enum SQL_DESC_CATALOG_NAME = SQL_COLUMN_QUALIFIER_NAME; +enum SQL_DESC_CONCISE_TYPE = SQL_COLUMN_TYPE; +enum SQL_DESC_DATETIME_INTERVAL_PRECISION = 26; +enum SQL_DESC_DISPLAY_SIZE = SQL_COLUMN_DISPLAY_SIZE; +enum SQL_DESC_FIXED_PREC_SCALE = SQL_COLUMN_MONEY; +enum SQL_DESC_LABEL = SQL_COLUMN_LABEL; +enum SQL_DESC_LITERAL_PREFIX = 27; +enum SQL_DESC_LITERAL_SUFFIX = 28; +enum SQL_DESC_LOCAL_TYPE_NAME = 29; +enum SQL_DESC_MAXIMUM_SCALE = 30; +enum SQL_DESC_MINIMUM_SCALE = 31; +enum SQL_DESC_NUM_PREC_RADIX = 32; +enum SQL_DESC_PARAMETER_TYPE = 33; +enum SQL_DESC_ROWS_PROCESSED_PTR = 34; +enum SQL_DESC_SCHEMA_NAME = SQL_COLUMN_OWNER_NAME; +enum SQL_DESC_SEARCHABLE = SQL_COLUMN_SEARCHABLE; +enum SQL_DESC_TABLE_NAME = SQL_COLUMN_TABLE_NAME; +enum SQL_DESC_TYPE_NAME = SQL_COLUMN_TYPE_NAME; +enum SQL_DESC_UNSIGNED = SQL_COLUMN_UNSIGNED; +enum SQL_DESC_UPDATABLE = SQL_COLUMN_UPDATABLE; +enum SQL_DI_CREATE_INDEX = 0x00000001L; +enum SQL_DI_DROP_INDEX = 0x00000002L; + +enum SQL_DIAG_COLUMN_NUMBER = -1247; +enum SQL_DIAG_ROW_NUMBER = -1248; +enum SQL_DIAG_CURSOR_ROW_COUNT = -1249; + +enum SQL_DL_SQL92_DATE = 0x00000001L; +enum SQL_DL_SQL92_INTERVAL_DAY = 0x00000020L; +enum SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR = 0x00000400L; +enum SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE = 0x00000800L; +enum SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND = 0x00001000L; +enum SQL_DL_SQL92_INTERVAL_HOUR = 0x00000040L; +enum SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE = 0x00002000L; +enum SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND = 0x00004000L; +enum SQL_DL_SQL92_INTERVAL_MINUTE = 0x00000080L; +enum SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND = 0x00008000L; +enum SQL_DL_SQL92_INTERVAL_MONTH = 0x00000010L; +enum SQL_DL_SQL92_INTERVAL_SECOND = 0x00000100L; +enum SQL_DL_SQL92_INTERVAL_YEAR = 0x00000008L; +enum SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH = 0x00000200L; +enum SQL_DL_SQL92_TIME = 0x00000002L; +enum SQL_DL_SQL92_TIMESTAMP = 0x00000004L; +enum SQL_DM_VER = 171; +enum SQL_DRIVER_HDESC = 135; +enum SQL_DROP_ASSERTION = 136; +enum SQL_DROP_CHARACTER_SET = 137; +enum SQL_DROP_COLLATION = 138; +enum SQL_DROP_DOMAIN = 139; +enum SQL_DROP_SCHEMA = 140; +enum SQL_DROP_TABLE = 141; +enum SQL_DROP_TRANSLATION = 142; +enum SQL_DROP_VIEW = 143; +enum SQL_DS_CASCADE = 0x00000004L; +enum SQL_DS_DROP_SCHEMA = 0x00000001L; +enum SQL_DS_RESTRICT = 0x00000002L; +enum SQL_DT_CASCADE = 0x00000004L; +enum SQL_DT_DROP_TABLE = 0x00000001L; +enum SQL_DT_RESTRICT = 0x00000002L; +enum SQL_DTC_DONE = 0L; +enum SQL_DTR_DROP_TRANSLATION = 0x00000001L; +enum SQL_DV_CASCADE = 0x00000004L; +enum SQL_DV_DROP_VIEW = 0x00000001L; +enum SQL_DV_RESTRICT = 0x00000002L; +enum SQL_DYNAMIC_CURSOR_ATTRIBUTES1 = 144; +enum SQL_DYNAMIC_CURSOR_ATTRIBUTES2 = 145; +enum SQL_EXT_API_LAST = SQL_API_SQLBINDPARAMETER; +enum SQL_EXT_API_START = 40; +enum SQL_FETCH_BY_BOOKMARK = 7; +enum SQL_FETCH_FIRST_SYSTEM = 32; +enum SQL_FETCH_FIRST_USER = 31; +enum SQL_FN_CVT_CAST = 0x00000002L; +enum SQL_FN_STR_BIT_LENGTH = 0x00080000L; +enum SQL_FN_STR_CHAR_LENGTH = 0x00100000L; +enum SQL_FN_STR_CHARACTER_LENGTH = 0x00200000L; +enum SQL_FN_STR_OCTET_LENGTH = 0x00400000L; +enum SQL_FN_STR_POSITION = 0x00800000L; +enum SQL_FN_TD_CURRENT_DATE = 0x00020000L; +enum SQL_FN_TD_CURRENT_TIME = 0x00040000L; +enum SQL_FN_TD_CURRENT_TIMESTAMP = 0x00080000L; +enum SQL_FN_TD_EXTRACT = 0x00100000L; +enum SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1 = 146; +enum SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2 = 147; + /* #define SQL_FUNC_EXISTS(exists, api) + ((*(((UWORD*) (exists)) + ((api) >> 4)) & (1 << ((api) & 15)) ) ? + SQL_TRUE : SQL_FALSE ) + */ +enum SQL_GB_COLLATE = 0x0004; +enum SQL_HANDLE_SENV = 5; + +enum SQL_IK_NONE = 0; +enum SQL_IK_ASC = 1; +enum SQL_IK_DESC = 2; +enum SQL_IK_ALL = SQL_IK_ASC | SQL_IK_DESC; + +enum SQL_INDEX_KEYWORDS = 148; +enum SQL_INFO_DRIVER_START = 1000; +enum SQL_INFO_LAST = SQL_QUALIFIER_LOCATION; +enum SQL_INFO_SCHEMA_VIEWS = 149; +enum SQL_INITIALLY_DEFERRED = 5; +enum SQL_INITIALLY_IMMEDIATE = 6; +enum SQL_INSERT_STATEMENT = 172; +enum SQL_INTERVAL = 10; +enum SQL_IS_INSERT_LITERALS = 0x00000001L; +enum SQL_IS_INSERT_SEARCHED = 0x00000002L; +enum SQL_IS_INTEGER = -6; +enum SQL_IS_POINTER = -4; +enum SQL_IS_SELECT_INTO = 0x00000004L; +enum SQL_IS_SMALLINT = -8; +enum SQL_IS_UINTEGER = -5; +enum SQL_IS_USMALLINT = -7; +enum SQL_ISV_ASSERTIONS = 0x00000001L; +enum SQL_ISV_CHARACTER_SETS = 0x00000002L; +enum SQL_ISV_CHECK_CONSTRAINTS = 0x00000004L; +enum SQL_ISV_COLLATIONS = 0x00000008L; +enum SQL_ISV_COLUMN_DOMAIN_USAGE = 0x00000010L; +enum SQL_ISV_COLUMN_PRIVILEGES = 0x00000020L; +enum SQL_ISV_COLUMNS = 0x00000040L; +enum SQL_ISV_CONSTRAINT_COLUMN_USAGE = 0x00000080L; +enum SQL_ISV_CONSTRAINT_TABLE_USAGE = 0x00000100L; +enum SQL_ISV_DOMAIN_CONSTRAINTS = 0x00000200L; +enum SQL_ISV_DOMAINS = 0x00000400L; +enum SQL_ISV_KEY_COLUMN_USAGE = 0x00000800L; +enum SQL_ISV_REFERENTIAL_CONSTRAINTS = 0x00001000L; +enum SQL_ISV_SCHEMATA = 0x00002000L; +enum SQL_ISV_SQL_LANGUAGES = 0x00004000L; +enum SQL_ISV_TABLE_CONSTRAINTS = 0x00008000L; +enum SQL_ISV_TABLE_PRIVILEGES = 0x00010000L; +enum SQL_ISV_TABLES = 0x00020000L; +enum SQL_ISV_TRANSLATIONS = 0x00040000L; +enum SQL_ISV_USAGE_PRIVILEGES = 0x00080000L; +enum SQL_ISV_VIEW_COLUMN_USAGE = 0x00100000L; +enum SQL_ISV_VIEW_TABLE_USAGE = 0x00200000L; +enum SQL_ISV_VIEWS = 0x00400000L; +enum SQL_KEYSET_CURSOR_ATTRIBUTES1 = 150; +enum SQL_KEYSET_CURSOR_ATTRIBUTES2 = 151; +enum SQL_MAX_ASYNC_CONCURRENT_STATEMENTS = 10022; +enum SQL_NO_COLUMN_NUMBER = -1; +enum SQL_NO_ROW_NUMBER = -1; +enum SQL_NOT_DEFERRABLE = 7; +enum SQL_NUM_EXTENSIONS = SQL_EXT_API_LAST-SQL_EXT_API_START+1; +enum SQL_NUM_FUNCTIONS = 23; +enum SQL_ODBC_INTERFACE_CONFORMANCE = 152; + + enum : ULONG { + SQL_OIC_CORE = 1, + SQL_OIC_LEVEL1, + SQL_OIC_LEVEL2 + } + enum : ULONG { + SQL_OV_ODBC2 = 2, + SQL_OV_ODBC3 = 3 + } + +enum ULONG + SQL_PARAM_BIND_BY_COLUMN = 0, + SQL_PARAM_BIND_TYPE_DEFAULT = SQL_PARAM_BIND_BY_COLUMN; + +enum SQL_PARAM_ARRAY_ROW_COUNTS = 153; +enum SQL_PARAM_ARRAY_SELECTS = 154; +enum SQL_PARAM_DIAG_UNAVAILABLE = 1; +enum SQL_PARAM_ERROR = 5; +enum SQL_PARAM_IGNORE = 1; +enum SQL_PARAM_PROCEED = 0; +enum SQL_PARAM_SUCCESS = 0; +enum SQL_PARAM_SUCCESS_WITH_INFO = 6; +enum SQL_PARAM_UNUSED = 7; + +enum SQL_PARC_BATCH = 1; +enum SQL_PARC_NO_BATCH = 2; +enum SQL_PAS_BATCH = 1; +enum SQL_PAS_NO_BATCH = 2; +enum SQL_PAS_NO_SELECT = 3; + +enum SQL_ROW_IGNORE = 1; +enum SQL_ROW_NUMBER_UNKNOWN = -2; +enum SQL_ROW_PROCEED = 0; +enum SQL_ROW_SUCCESS_WITH_INFO = 6; + +enum SQL_SC_FIPS127_2_TRANSITIONAL = 0x00000002L; +enum SQL_SC_SQL92_ENTRY = 0x00000001L; +enum SQL_SC_SQL92_FULL = 0x00000008L; +enum SQL_SC_SQL92_INTERMEDIATE = 0x00000004L; + +enum SQL_SCC_ISO92_CLI = 0x00000002L; +enum SQL_SCC_XOPEN_CLI_VERSION1 = 0x00000001L; + +enum SQL_SCHEMA_TERM = SQL_OWNER_TERM; +enum SQL_SCHEMA_USAGE = SQL_OWNER_USAGE; +enum SQL_SDF_CURRENT_DATE = 0x00000001L; +enum SQL_SDF_CURRENT_TIME = 0x00000002L; +enum SQL_SDF_CURRENT_TIMESTAMP = 0x00000004L; +enum SQL_SFKD_CASCADE = 0x00000001L; +enum SQL_SFKD_NO_ACTION = 0x00000002L; +enum SQL_SFKD_SET_DEFAULT = 0x00000004L; +enum SQL_SFKD_SET_NULL = 0x00000008L; +enum SQL_SFKU_CASCADE = 0x00000001L; +enum SQL_SFKU_NO_ACTION = 0x00000002L; +enum SQL_SFKU_SET_DEFAULT = 0x00000004L; +enum SQL_SFKU_SET_NULL = 0x00000008L; +enum SQL_SG_DELETE_TABLE = 0x00000020L; +enum SQL_SG_INSERT_COLUMN = 0x00000080L; +enum SQL_SG_INSERT_TABLE = 0x00000040L; +enum SQL_SG_REFERENCES_COLUMN = 0x00000200L; +enum SQL_SG_REFERENCES_TABLE = 0x00000100L; +enum SQL_SG_SELECT_TABLE = 0x00000400L; +enum SQL_SG_UPDATE_COLUMN = 0x00001000L; +enum SQL_SG_UPDATE_TABLE = 0x00000800L; +enum SQL_SG_USAGE_ON_CHARACTER_SET = 0x00000002L; +enum SQL_SG_USAGE_ON_COLLATION = 0x00000004L; +enum SQL_SG_USAGE_ON_DOMAIN = 0x00000001L; +enum SQL_SG_USAGE_ON_TRANSLATION = 0x00000008L; +enum SQL_SG_WITH_GRANT_OPTION = 0x00000010L; +enum SQL_SNVF_BIT_LENGTH = 0x00000001L; +enum SQL_SNVF_CHAR_LENGTH = 0x00000002L; +enum SQL_SNVF_CHARACTER_LENGTH = 0x00000004L; +enum SQL_SNVF_EXTRACT = 0x00000008L; +enum SQL_SNVF_OCTET_LENGTH = 0x00000010L; +enum SQL_SNVF_POSITION = 0x00000020L; +enum SQL_SP_BETWEEN = 0x00000800L; +enum SQL_SP_COMPARISON = 0x00001000L; +enum SQL_SP_EXISTS = 0x00000001L; +enum SQL_SP_IN = 0x00000400L; +enum SQL_SP_ISNOTNULL = 0x00000002L; +enum SQL_SP_ISNULL = 0x00000004L; +enum SQL_SP_LIKE = 0x00000200L; +enum SQL_SP_MATCH_FULL = 0x00000008L; +enum SQL_SP_MATCH_PARTIAL = 0x00000010L; +enum SQL_SP_MATCH_UNIQUE_FULL = 0x00000020L; +enum SQL_SP_MATCH_UNIQUE_PARTIAL = 0x00000040L; +enum SQL_SP_OVERLAPS = 0x00000080L; +enum SQL_SP_QUANTIFIED_COMPARISON = 0x00002000L; +enum SQL_SP_UNIQUE = 0x00000100L; +enum SQL_SQL_CONFORMANCE = 118; +enum SQL_SQL92_DATETIME_FUNCTIONS = 155; +enum SQL_SQL92_FOREIGN_KEY_DELETE_RULE = 156; +enum SQL_SQL92_FOREIGN_KEY_UPDATE_RULE = 157; +enum SQL_SQL92_GRANT = 158; +enum SQL_SQL92_NUMERIC_VALUE_FUNCTIONS = 159; +enum SQL_SQL92_PREDICATES = 160; +enum SQL_SQL92_RELATIONAL_JOIN_OPERATORS = 161; +enum SQL_SQL92_REVOKE = 162; +enum SQL_SQL92_ROW_VALUE_CONSTRUCTOR = 163; +enum SQL_SQL92_STRING_FUNCTIONS = 164; +enum SQL_SQL92_VALUE_EXPRESSIONS = 165; +enum SQL_SR_CASCADE = 0x00000020L; +enum SQL_SR_DELETE_TABLE = 0x00000080L; +enum SQL_SR_GRANT_OPTION_FOR = 0x00000010L; +enum SQL_SR_INSERT_COLUMN = 0x00000200L; +enum SQL_SR_INSERT_TABLE = 0x00000100L; +enum SQL_SR_REFERENCES_COLUMN = 0x00000800L; +enum SQL_SR_REFERENCES_TABLE = 0x00000400L; +enum SQL_SR_RESTRICT = 0x00000040L; +enum SQL_SR_SELECT_TABLE = 0x00001000L; +enum SQL_SR_UPDATE_COLUMN = 0x00004000L; +enum SQL_SR_UPDATE_TABLE = 0x00002000L; +enum SQL_SR_USAGE_ON_CHARACTER_SET = 0x00000002L; +enum SQL_SR_USAGE_ON_COLLATION = 0x00000004L; +enum SQL_SR_USAGE_ON_DOMAIN = 0x00000001L; +enum SQL_SR_USAGE_ON_TRANSLATION = 0x00000008L; +enum SQL_SRJO_CORRESPONDING_CLAUSE = 0x00000001L; +enum SQL_SRJO_CROSS_JOIN = 0x00000002L; +enum SQL_SRJO_EXCEPT_JOIN = 0x00000004L; +enum SQL_SRJO_FULL_OUTER_JOIN = 0x00000008L; +enum SQL_SRJO_INNER_JOIN = 0x00000010L; +enum SQL_SRJO_INTERSECT_JOIN = 0x00000020L; +enum SQL_SRJO_LEFT_OUTER_JOIN = 0x00000040L; +enum SQL_SRJO_NATURAL_JOIN = 0x00000080L; +enum SQL_SRJO_RIGHT_OUTER_JOIN = 0x00000100L; +enum SQL_SRJO_UNION_JOIN = 0x00000200L; +enum SQL_SRVC_DEFAULT = 0x00000004L; +enum SQL_SRVC_NULL = 0x00000002L; +enum SQL_SRVC_ROW_SUBQUERY = 0x00000008L; +enum SQL_SRVC_VALUE_EXPRESSION = 0x00000001L; +enum SQL_SSF_CONVERT = 0x00000001L; +enum SQL_SSF_LOWER = 0x00000002L; +enum SQL_SSF_SUBSTRING = 0x00000008L; +enum SQL_SSF_TRANSLATE = 0x00000010L; +enum SQL_SSF_TRIM_BOTH = 0x00000020L; +enum SQL_SSF_TRIM_LEADING = 0x00000040L; +enum SQL_SSF_TRIM_TRAILING = 0x00000080L; +enum SQL_SSF_UPPER = 0x00000004L; +enum SQL_STANDARD_CLI_CONFORMANCE = 166; +enum SQL_STATIC_CURSOR_ATTRIBUTES1 = 167; +enum SQL_STATIC_CURSOR_ATTRIBUTES2 = 168; +enum SQL_SU_DML_STATEMENTS = SQL_OU_DML_STATEMENTS; +enum SQL_SU_INDEX_DEFINITION = SQL_OU_INDEX_DEFINITION; +enum SQL_SU_PRIVILEGE_DEFINITION = SQL_OU_PRIVILEGE_DEFINITION; +enum SQL_SU_PROCEDURE_INVOCATION = SQL_OU_PROCEDURE_INVOCATION; +enum SQL_SU_TABLE_DEFINITION = SQL_OU_TABLE_DEFINITION; +enum SQL_SVE_CASE = 0x00000001L; +enum SQL_SVE_CAST = 0x00000002L; +enum SQL_SVE_COALESCE = 0x00000004L; +enum SQL_SVE_NULLIF = 0x00000008L; +enum SQL_UB_FIXED = SQL_UB_ON; +enum SQL_UB_VARIABLE = 2UL; +enum SQL_UNION_STATEMENT = SQL_UNION; +enum SQL_UPDATE_BY_BOOKMARK = 5; +enum SQL_US_UNION = SQL_U_UNION; +enum SQL_US_UNION_ALL = SQL_U_UNION_ALL; +}//[Yes] #endif /* ODBCVER >= 0x300 */ +static if (ODBCVER >= 0x0350) +{ +enum SQL_DESC_ROWVER = 35; +enum SQL_GUID = -11; +enum SQL_C_GUID = SQL_GUID; + //#ifdef ODBC_STD + //#define SQLAllocHandle SQLAllocHandleStd + //#define SQLAllocEnv(p) SQLAllocHandleStd(SQL_HANDLE_ENV, SQL_NULL_HANDLE, p) + //#define SQL_YEAR SQL_CODE_YEAR + //#define SQL_MONTH SQL_CODE_MONTH + //#define SQL_DAY SQL_CODE_DAY + //#define SQL_HOUR SQL_CODE_HOUR + //#define SQL_MINUTE SQL_CODE_MINUTE + //#define SQL_SECOND SQL_CODE_SECOND + //#define SQL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH + //#define SQL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR + //#define SQL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE + //#define SQL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND + //#define SQL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE + //#define SQL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND + //#define SQL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND + //#endif /* ODBC_STD */ +}//#endif /* ODBCVER >= 0x0350 */ + +//static if (ODBCVER >= 0x0351) +//{ +enum SQL_ATTR_ANSI_APP=115; +enum SQL_AA_TRUE=1L; +enum SQL_AA_FALSE=0L; +//}//[Yes] #endif + +enum TRACE_VERSION=1000; +enum TRACE_ON=1; + +const char [] SQL_ODBC_KEYWORDS = + "ABSOLUTE, ACTION, ADA, ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARE, AS, " + ~ "ASC, ASSERTION, AT, AUTHORIZATION, AVG, " + ~ "BEGIN, BETWEEN, BIT, BIT_LENGTH, BOTH, BY, CASCADE, CASCADED, CASE, CAST, CATALOG, " + ~ "CHAR, CHAR_LENGTH, CHARACTER, CHARACTER_LENGTH, CHECK, CLOSE, COALESCE, " + ~ "COLLATE, COLLATION, COLUMN, COMMIT, CONNECT, CONNECTION, CONSTRAINT, " + ~ "CONSTRAINTS, CONTINUE, CONVERT, CORRESPONDING, COUNT, CREATE, CROSS, CURRENT, " + ~ "CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, " + ~ "DATE, DAY, DEALLOCATE, DEC, DECIMAL, DECLARE, DEFAULT, DEFERRABLE, " + ~ "DEFERRED, DELETE, DESC, DESCRIBE, DESCRIPTOR, DIAGNOSTICS, DISCONNECT, " + ~ "DISTINCT, DOMAIN, DOUBLE, DROP, " + ~ "ELSE, END, END-EXEC, ESCAPE, EXCEPT, EXCEPTION, EXEC, EXECUTE, " + ~ "EXISTS, EXTERNAL, EXTRACT, " + ~ "FALSE, FETCH, FIRST, FLOAT, FOR, FOREIGN, FORTRAN, FOUND, FROM, FULL, " + ~ "GET, GLOBAL, GO, GOTO, GRANT, GROUP, HAVING, HOUR, " + ~ "IDENTITY, IMMEDIATE, IN, INCLUDE, INDEX, INDICATOR, INITIALLY, INNER, " + ~ "INPUT, INSENSITIVE, INSERT, INT, INTEGER, INTERSECT, INTERVAL, INTO, IS, ISOLATION, " + ~ "JOIN, KEY, LANGUAGE, LAST, LEADING, LEFT, LEVEL, LIKE, LOCAL, LOWER, " + ~ "MATCH, MAX, MIN, MINUTE, MODULE, MONTH, " + ~ "NAMES, NATIONAL, NATURAL, NCHAR, NEXT, NO, NONE, NOT, NULL, NULLIF, NUMERIC, " + ~ "OCTET_LENGTH, OF, ON, ONLY, OPEN, OPTION, OR, ORDER, OUTER, OUTPUT, OVERLAPS, " + ~ "PAD, PARTIAL, PASCAL, PLI, POSITION, PRECISION, PREPARE, PRESERVE, " + ~ "PRIMARY, PRIOR, PRIVILEGES, PROCEDURE, PUBLIC, " + ~ "READ, REAL, REFERENCES, RELATIVE, RESTRICT, REVOKE, RIGHT, ROLLBACK, ROWS" + ~ "SCHEMA, SCROLL, SECOND, SECTION, SELECT, SESSION, SESSION_USER, SET, SIZE, " + ~ "SMALLINT, SOME, SPACE, SQL, SQLCA, SQLCODE, SQLERROR, SQLSTATE, SQLWARNING, " + ~ "SUBSTRING, SUM, SYSTEM_USER, " + ~ "TABLE, TEMPORARY, THEN, TIME, TIMESTAMP, TIMEZONE_HOUR, TIMEZONE_MINUTE, " + ~ "TO, TRAILING, TRANSACTION, TRANSLATE, TRANSLATION, TRIM, TRUE, " + ~ "UNION, UNIQUE, UNKNOWN, UPDATE, UPPER, USAGE, USER, USING, " + ~ "VALUE, VALUES, VARCHAR, VARYING, VIEW, WHEN, WHENEVER, WHERE, WITH, WORK, WRITE, " + ~ "YEAR, ZONE"; +extern (System) { + SQLRETURN SQLDriverConnect(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLBrowseConnect(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColumnPrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLColAttributes(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLDescribeParam(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLExtendedFetch(SQLHSTMT, SQLUSMALLINT, SQLINTEGER, SQLUINTEGER*, SQLUSMALLINT*); + SQLRETURN SQLForeignKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLMoreResults(SQLHSTMT); + SQLRETURN SQLNativeSql(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNumParams(SQLHSTMT, SQLSMALLINT*); + SQLRETURN SQLParamOptions(SQLHSTMT, SQLUINTEGER, SQLUINTEGER*); + SQLRETURN SQLPrimaryKeys(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumns(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedures(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetPos(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivileges(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLDrivers(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBindParameter(SQLHSTMT, SQLUSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLSMALLINT, SQLULEN, SQLSMALLINT, SQLPOINTER, SQLLEN, SQLLEN*); + SQLRETURN SQLSetScrollOptions(SQLHSTMT, SQLUSMALLINT, SQLLEN, SQLUSMALLINT);/* deprecated */ + DWORD ODBCGetTryWaitValue(); + BOOL ODBCSetTryWaitValue(DWORD); + RETCODE TraceOpenLogFile(LPWSTR, LPWSTR, DWORD); + RETCODE TraceCloseLogFile(); + VOID TraceReturn(RETCODE, RETCODE); + DWORD TraceVersion(); + //static if (ODBCVER >= 0x0300) + //{ + SQLRETURN SQLBulkOperations(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLAllocHandleStd( SQLSMALLINT, SQLHANDLE, SQLHANDLE*); + //} +} diff --git a/etc/c/odbc/sqltypes.d b/etc/c/odbc/sqltypes.d index 65c0ebf100b..50e80446518 100644 --- a/etc/c/odbc/sqltypes.d +++ b/etc/c/odbc/sqltypes.d @@ -1,16 +1,177 @@ -// @@@DEPRECATED_2.106@@@ - /** -$(RED Warning: - This module is deprecated. It will be removed in 2.106. - Use `core.sys.windows.sqltypes` instead.) + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Source: $(PHOBOSSRC etc/c/odbc/_sqltypes.d) Declarations for interfacing with the ODBC library. See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference, - ODBC API Reference on MSN Online) + ODBC API Reference on MSDN) */ -deprecated("Import core.sys.windows.sqltypes instead") module etc.c.odbc.sqltypes; -public import core.sys.windows.sqltypes; +version (ANSI) {} else version = Unicode; + +/* Conversion notes: + It's assumed that ODBC >= 0x0300. +*/ + +// Import windows types or declare appropriate aliases if we are not. +version (Windows) +{ + public import core.sys.windows.windef; + public import core.sys.windows.basetyps; // for GUID +} +else +{ + alias ushort USHORT, WORD; + alias uint ULONG, LONG, BOOL, DWORD; + alias void VOID; + alias void* PVOID, HANDLE, HWND; + alias ubyte UCHAR, BYTE; + alias wchar* LPWSTR; + + align(1) struct GUID { // size is 16 + align(1): + DWORD Data1; + WORD Data2; + WORD Data3; + BYTE[8] Data4; + } +} +alias GUID SQLGUID; + +alias byte SCHAR, SQLSCHAR; +alias int SDWORD, SLONG, SQLINTEGER; +alias short SWORD, SSHORT, RETCODE, SQLSMALLINT; +alias ULONG UDWORD; +alias USHORT UWORD, SQLUSMALLINT; +alias double SDOUBLE, LDOUBLE; +alias float SFLOAT; +alias PVOID PTR, HENV, HDBC, HSTMT, SQLPOINTER; +alias UCHAR SQLCHAR; +// #ifndef _WIN64 +alias UDWORD SQLUINTEGER; +// #endif + +//static if (ODBCVER >= 0x0300) +//{ +alias HANDLE SQLHANDLE; +alias SQLHANDLE SQLHENV, SQLHDBC, SQLHSTMT, SQLHDESC; +/* +} +else +{ +alias void* SQLHENV; +alias void* SQLHDBC; +alias void* SQLHSTMT; +} +*/ +alias SQLSMALLINT SQLRETURN; +alias HWND SQLHWND; +alias ULONG BOOKMARK; + +alias SQLINTEGER SQLLEN, SQLROWOFFSET; +alias SQLUINTEGER SQLROWCOUNT, SQLULEN; +alias DWORD SQLTRANSID; +alias SQLUSMALLINT SQLSETPOSIROW; +alias wchar SQLWCHAR; + +version (Unicode) +{ + alias SQLWCHAR SQLTCHAR; +} +else +{ + alias SQLCHAR SQLTCHAR; +} +//static if (ODBCVER >= 0x0300) +//{ +alias ubyte SQLDATE, SQLDECIMAL; +alias double SQLDOUBLE, SQLFLOAT; +alias ubyte SQLNUMERIC; +alias float SQLREAL; +alias ubyte SQLTIME, SQLTIMESTAMP, SQLVARCHAR; +alias long ODBCINT64, SQLBIGINT; +alias ulong SQLUBIGINT; +//} + +struct DATE_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; +} + +struct TIME_STRUCT { + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; +} + +struct TIMESTAMP_STRUCT { + SQLSMALLINT year; + SQLUSMALLINT month; + SQLUSMALLINT day; + SQLUSMALLINT hour; + SQLUSMALLINT minute; + SQLUSMALLINT second; + SQLUINTEGER fraction; +} + +//static if (ODBCVER >= 0x0300) +//{ +alias DATE_STRUCT SQL_DATE_STRUCT; +alias TIME_STRUCT SQL_TIME_STRUCT; +alias TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT; + +enum SQLINTERVAL { + SQL_IS_YEAR = 1, + SQL_IS_MONTH, + SQL_IS_DAY, + SQL_IS_HOUR, + SQL_IS_MINUTE, + SQL_IS_SECOND, + SQL_IS_YEAR_TO_MONTH, + SQL_IS_DAY_TO_HOUR, + SQL_IS_DAY_TO_MINUTE, + SQL_IS_DAY_TO_SECOND, + SQL_IS_HOUR_TO_MINUTE, + SQL_IS_HOUR_TO_SECOND, + SQL_IS_MINUTE_TO_SECOND +} + +struct SQL_YEAR_MONTH_STRUCT { + SQLUINTEGER year; + SQLUINTEGER month; +} + +struct SQL_DAY_SECOND_STRUCT { + SQLUINTEGER day; + SQLUINTEGER hour; + SQLUINTEGER minute; + SQLUINTEGER second; + SQLUINTEGER fraction; +} + +struct SQL_INTERVAL_STRUCT { + SQLINTERVAL interval_type; + SQLSMALLINT interval_sign; + union _intval { + SQL_YEAR_MONTH_STRUCT year_month; + SQL_DAY_SECOND_STRUCT day_second; + } + _intval intval; +} + +enum SQL_MAX_NUMERIC_LEN = 16; + +struct SQL_NUMERIC_STRUCT { + SQLCHAR precision; + SQLSCHAR scale; + SQLCHAR sign; + SQLCHAR[SQL_MAX_NUMERIC_LEN] val; +} +// } ODBCVER >= 0x0300 diff --git a/etc/c/odbc/sqlucode.d b/etc/c/odbc/sqlucode.d index 370a727f2dd..33d2b56a159 100644 --- a/etc/c/odbc/sqlucode.d +++ b/etc/c/odbc/sqlucode.d @@ -1,16 +1,170 @@ -// @@@DEPRECATED_2.106@@@ - /** -$(RED Warning: - This module is deprecated. It will be removed in 2.106. - Use `core.sys.windows.sqlucode` instead.) + * Windows API header module + * + * Translated from MinGW Windows headers + * + * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) + * Source: $(PHOBOSSRC etc/c/odbc/_sqlucode.d) Declarations for interfacing with the ODBC library. See_Also: $(LINK2 https://docs.microsoft.com/en-us/sql/odbc/reference/syntax/odbc-api-reference, - ODBC API Reference on MSN Online) + ODBC API Reference on MSDN) */ -deprecated("Import core.sys.windows.sqlucode instead") module etc.c.odbc.sqlucode; -public import core.sys.windows.sqlucode; +version (ANSI) {} else version = Unicode; + +import etc.c.odbc.sqlext; + +enum SQL_WCHAR = -8; +enum SQL_WVARCHAR = -9; +enum SQL_WLONGVARCHAR = -10; +enum SQL_C_WCHAR = SQL_WCHAR; + +enum SQL_SQLSTATE_SIZEW = 10; +version (Unicode) +{ +enum SQL_C_TCHAR = SQL_C_WCHAR; +} +else +{ +enum SQL_C_TCHAR = SQL_C_CHAR; +} + +// Moved from sqlext +static if (ODBCVER <= 0x0300) +{ +enum SQL_UNICODE = -95; +enum SQL_UNICODE_VARCHAR = -96; +enum SQL_UNICODE_LONGVARCHAR = -97; +enum SQL_UNICODE_CHAR = SQL_UNICODE; +} +else +{ +enum SQL_UNICODE = SQL_WCHAR; +enum SQL_UNICODE_VARCHAR = SQL_WVARCHAR; +enum SQL_UNICODE_LONGVARCHAR = SQL_WLONGVARCHAR; +enum SQL_UNICODE_CHAR = SQL_WCHAR; +} + +extern (System) { + SQLRETURN SQLBrowseConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLBrowseConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLColAttributeA(SQLHSTMT, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributeW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLPOINTER); + SQLRETURN SQLColAttributesA(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColAttributesW(SQLHSTMT, SQLUSMALLINT, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*, SQLLEN*); + SQLRETURN SQLColumnPrivilegesA( SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnPrivilegesW( SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLConnectA(SQLHDBC, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLConnectW(SQLHDBC, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLDataSourcesA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDataSourcesW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDescribeColA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDescribeColW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLULEN*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLDriverConnectA(SQLHDBC, SQLHWND, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriverConnectW(SQLHDBC, SQLHWND, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLUSMALLINT); + SQLRETURN SQLDriversA(SQLHENV, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLDriversW(SQLHENV, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorA(SQLHENV, SQLHDBC, SQLHSTMT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLErrorW(SQLHENV, SQLHDBC, SQLHSTMT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLExecDirectA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLExecDirectW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLForeignKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLForeignKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLGetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLPOINTER); + SQLRETURN SQLGetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoA(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetInfoW(SQLHDBC, SQLUSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetTypeInfoA(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLGetTypeInfoW(SQLHSTMT, SQLSMALLINT); + SQLRETURN SQLNativeSqlA(SQLHDBC, SQLCHAR*, SQLINTEGER, SQLCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLNativeSqlW(SQLHDBC, SQLWCHAR*, SQLINTEGER, SQLWCHAR*, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLPrepareA(SQLHSTMT, SQLCHAR*, SQLINTEGER); + SQLRETURN SQLPrepareW(SQLHSTMT, SQLWCHAR*, SQLINTEGER); + SQLRETURN SQLPrimaryKeysA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT ); + SQLRETURN SQLPrimaryKeysW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProcedureColumnsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLProceduresW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSetConnectAttrA(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectAttrW(SQLHDBC, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetConnectOptionA(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetConnectOptionW(SQLHDBC, SQLUSMALLINT, SQLULEN); + SQLRETURN SQLSetCursorNameA(SQLHSTMT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLSetCursorNameW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT); + SQLRETURN SQLSpecialColumnsA(SQLHSTMT, SQLUSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLSpecialColumnsW(SQLHSTMT, SQLUSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLStatisticsW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT , SQLUSMALLINT, SQLUSMALLINT); + SQLRETURN SQLTablePrivilegesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablePrivilegesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT ); + SQLRETURN SQLTablesA(SQLHSTMT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLCHAR*, SQLSMALLINT); + SQLRETURN SQLTablesW(SQLHSTMT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT); + static if (ODBCVER >= 0x0300) + { + SQLRETURN SQLGetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetDescFieldA(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetDescFieldW(SQLHDESC, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLGetDescRecA(SQLHDESC, SQLSMALLINT, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDescRecW(SQLHDESC, SQLSMALLINT, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*, SQLLEN*, SQLSMALLINT*, SQLSMALLINT*, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagFieldW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLSMALLINT, SQLPOINTER, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecA(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLCHAR*, SQLINTEGER*, SQLCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetDiagRecW(SQLSMALLINT, SQLHANDLE, SQLSMALLINT, SQLWCHAR*, SQLINTEGER*, SQLWCHAR*, SQLSMALLINT, SQLSMALLINT*); + SQLRETURN SQLGetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLGetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER, SQLINTEGER*); + SQLRETURN SQLSetStmtAttrA(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + SQLRETURN SQLSetStmtAttrW(SQLHSTMT, SQLINTEGER, SQLPOINTER, SQLINTEGER); + } // #endif /* (ODBCVER >= 0x0300) */ +} + +version (Unicode) +{ + alias SQLBrowseConnectW SQLBrowseConnect; + alias SQLColAttributeW SQLColAttribute; + alias SQLColAttributesW SQLColAttributes; + alias SQLColumnPrivilegesW SQLColumnPrivileges; + alias SQLColumnsW SQLColumns; + alias SQLConnectW SQLConnect; + alias SQLDataSourcesW SQLDataSources; + alias SQLDescribeColW SQLDescribeCol; + alias SQLDriverConnectW SQLDriverConnect; + alias SQLDriversW SQLDrivers; + alias SQLErrorW SQLError; + alias SQLExecDirectW SQLExecDirect; + alias SQLForeignKeysW SQLForeignKeys; + alias SQLGetConnectAttrW SQLGetConnectAttr; + alias SQLGetConnectOptionW SQLGetConnectOption; + alias SQLGetCursorNameW SQLGetCursorName; + alias SQLGetDescFieldW SQLGetDescField; + alias SQLGetDescRecW SQLGetDescRec; + alias SQLGetDiagFieldW SQLGetDiagField; + alias SQLGetDiagRecW SQLGetDiagRec; + alias SQLGetInfoW SQLGetInfo; + alias SQLGetStmtAttrW SQLGetStmtAttr; + alias SQLGetTypeInfoW SQLGetTypeInfo; + alias SQLNativeSqlW SQLNativeSql; + alias SQLPrepareW SQLPrepare; + alias SQLPrimaryKeysW SQLPrimaryKeys; + alias SQLProcedureColumnsW SQLProcedureColumns; + alias SQLProceduresW SQLProcedures; + alias SQLSetConnectAttrW SQLSetConnectAttr; + alias SQLSetConnectOptionW SQLSetConnectOption; + alias SQLSetCursorNameW SQLSetCursorName; + alias SQLSetDescFieldW SQLSetDescField; + alias SQLSetStmtAttrW SQLSetStmtAttr; + alias SQLSpecialColumnsW SQLSpecialColumns; + alias SQLStatisticsW SQLStatistics; + alias SQLTablePrivilegesW SQLTablePrivileges; + alias SQLTablesW SQLTables; +} From efc64f3cbf57d0ff59eb53ae6b0ae1442ad60091 Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Sat, 2 Sep 2023 04:29:01 -0700 Subject: [PATCH 076/327] Create PR8804.dd Add changelog entry for the ODBC changes. --- changelog/PR8804.dd | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 changelog/PR8804.dd diff --git a/changelog/PR8804.dd b/changelog/PR8804.dd new file mode 100644 index 00000000000..044c428c356 --- /dev/null +++ b/changelog/PR8804.dd @@ -0,0 +1,3 @@ +Undo etc.c.odbc deprecation and enable usage on non-Windows systems + +Previously, the etc.c.odbc bindings were deprecated and forwarded the core.sys.windows versions of the bindings via public import. However, ODBC is supported on all major platforms and the machine translated MinGW bindings in core.sys.windows have version(Windows) specified which results in being unable to use those bindings on non-Windows platforms. The bindings have been returned to etc.c.odbc, undeprecated, and support for non-Windows platforms enabled. From 4203847ad65a46a9c8e2d0f88503a461e0e858ee Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sun, 10 Sep 2023 16:59:21 +1200 Subject: [PATCH 077/327] Improve documentation in std.json --- std/json.d | 53 ++++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/std/json.d b/std/json.d index 7d48890501f..6e94a5d71ce 100644 --- a/std/json.d +++ b/std/json.d @@ -70,25 +70,25 @@ String literals used to represent special float values within JSON strings. */ enum JSONFloatLiteral : string { - nan = "NaN", /// string representation of floating-point NaN - inf = "Infinite", /// string representation of floating-point Infinity - negativeInf = "-Infinite", /// string representation of floating-point negative Infinity + nan = "NaN", /// String representation of floating-point NaN + inf = "Infinite", /// String representation of floating-point Infinity + negativeInf = "-Infinite", /// String representation of floating-point negative Infinity } /** -Flags that control how json is encoded and parsed. +Flags that control how JSON is encoded and parsed. */ enum JSONOptions { - none, /// standard parsing - specialFloatLiterals = 0x1, /// encode NaN and Inf float values as strings - escapeNonAsciiChars = 0x2, /// encode non ascii characters with an unicode escape sequence - doNotEscapeSlashes = 0x4, /// do not escape slashes ('/') + none, /// Standard parsing and encoding + specialFloatLiterals = 0x1, /// Encode NaN and Inf float values as strings + escapeNonAsciiChars = 0x2, /// Encode non-ASCII characters with a Unicode escape sequence + doNotEscapeSlashes = 0x4, /// Do not escape slashes ('/') strictParsing = 0x8, /// Strictly follow RFC-8259 grammar when parsing } /** -JSON type enumeration +Enumeration of JSON types */ enum JSONType : byte { @@ -275,7 +275,7 @@ struct JSONValue * Value getter/setter for `JSONType.object`. * Throws: `JSONException` for read access if `type` is not * `JSONType.object`. - * Note: this is @system because of the following pattern: + * Note: This is @system because of the following pattern: --- auto a = &(json.object()); json.uinteger = 0; // overwrite AA pointer @@ -297,9 +297,11 @@ struct JSONValue /*** * Value getter for `JSONType.object`. - * Unlike `object`, this retrieves the object by value and can be used in @safe code. + * Unlike `object`, this retrieves the object by value + * and can be used in @safe code. * - * A caveat is that, if the returned value is null, modifications will not be visible: + * One possible caveat is that, if the returned value is null, + * modifications will not be visible: * --- * JSONValue json; * json.object = null; @@ -321,7 +323,7 @@ struct JSONValue * Value getter/setter for `JSONType.array`. * Throws: `JSONException` for read access if `type` is not * `JSONType.array`. - * Note: this is @system because of the following pattern: + * Note: This is @system because of the following pattern: --- auto a = &(json.array()); json.uinteger = 0; // overwrite array pointer @@ -345,8 +347,8 @@ struct JSONValue * Value getter for `JSONType.array`. * Unlike `array`, this retrieves the array by value and can be used in @safe code. * - * A caveat is that, if you append to the returned array, the new values aren't visible in the - * JSONValue: + * One possible caveat is that, if you append to the returned array, + * the new values aren't visible in the `JSONValue`: * --- * JSONValue json; * json.array = [JSONValue("hello")]; @@ -371,9 +373,8 @@ struct JSONValue } /*** - * Generic type value getter * A convenience getter that returns this `JSONValue` as the specified D type. - * Note: only numeric, `bool`, `string`, `JSONValue[string]` and `JSONValue[]` types are accepted + * Note: Only numeric types, `bool`, `string`, `JSONValue[string]`, and `JSONValue[]` types are accepted * Throws: `JSONException` if `T` cannot hold the contents of this `JSONValue` * `ConvException` in case of integer overflow when converting to `T` */ @@ -659,7 +660,7 @@ struct JSONValue } /*** - * Array syntax for json arrays. + * Array syntax for JSON arrays. * Throws: `JSONException` if `type` is not `JSONType.array`. */ ref inout(JSONValue) opIndex(size_t i) inout pure @safe @@ -678,7 +679,7 @@ struct JSONValue } /*** - * Hash syntax for json objects. + * Hash syntax for JSON objects. * Throws: `JSONException` if `type` is not `JSONType.object`. */ ref inout(JSONValue) opIndex(return scope string k) inout pure @safe @@ -695,10 +696,12 @@ struct JSONValue } /*** - * Operator sets `value` for element of JSON object by `key`. + * Provides support for index assignments, which sets the + * corresponding value of the JSON object's `key` field to `value`. * - * If JSON value is null, then operator initializes it with object and then - * sets `value` for it. + * If the `JSONValue` is `JSONType.null_`, then this function + * initializes it with a JSON object and then performs + * the index assignment. * * Throws: `JSONException` if `type` is not `JSONType.object` * or `JSONType.null_`. @@ -777,12 +780,12 @@ struct JSONValue } /** - * Support for the `in` operator. + * Provides support for the `in` operator. * - * Tests wether a key can be found in an object. + * Tests whether a key can be found in an object. * * Returns: - * when found, the `inout(JSONValue)*` that matches to the key, + * When found, the `inout(JSONValue)*` that matches to the key, * otherwise `null`. * * Throws: `JSONException` if the right hand side argument `JSONType` From 80747a9c9bdb1368d8327708073bad3302c15923 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sun, 10 Sep 2023 17:05:45 +1200 Subject: [PATCH 078/327] Improve documentation in std.socket --- std/socket.d | 56 ++++++++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/std/socket.d b/std/socket.d index 3359c8ebf62..4052479f9ca 100644 --- a/std/socket.d +++ b/std/socket.d @@ -181,16 +181,13 @@ string formatSocketError(int err) @trusted return "Socket error " ~ to!string(err); } -/// Retrieve the error message for the most recently encountered network error. +/// Returns the error message of the most recently encountered network error. @property string lastSocketError() { return formatSocketError(_lasterr()); } -/** - * Socket exceptions representing network errors reported by the operating - * system. - */ +/// Socket exception representing network errors reported by the operating system. class SocketOSException: SocketException { int errorCode; /// Platform-specific error code. @@ -234,14 +231,14 @@ class SocketOSException: SocketException } } -/// Socket exceptions representing invalid parameters specified by user code. +/// Socket exception representing invalid parameters specified by user code. class SocketParameterException: SocketException { mixin basicExceptionCtors; } /** - * Socket exceptions representing attempts to use network capabilities not + * Socket exception representing attempts to use network capabilities not * available on the current system. */ class SocketFeatureException: SocketException @@ -254,7 +251,7 @@ class SocketFeatureException: SocketException * Returns: * `true` if the last socket operation failed because the socket * was in non-blocking mode and the operation would have blocked, - * or if the socket is in blocking mode and set a SNDTIMEO or RCVTIMEO, + * or if the socket is in blocking mode and set a `SNDTIMEO` or `RCVTIMEO`, * and the operation timed out. */ bool wouldHaveBlocked() nothrow @nogc @@ -334,7 +331,7 @@ shared static ~this() @system nothrow @nogc enum AddressFamily: ushort { UNSPEC = AF_UNSPEC, /// Unspecified address family - UNIX = AF_UNIX, /// Local communication + UNIX = AF_UNIX, /// Local communication (Unix socket) INET = AF_INET, /// Internet Protocol version 4 IPX = AF_IPX, /// Novell IPX APPLETALK = AF_APPLETALK, /// AppleTalk @@ -374,7 +371,7 @@ enum ProtocolType: int /** - * `Protocol` is a class for retrieving protocol information. + * Class for retrieving protocol information. * * Example: * --- @@ -473,7 +470,7 @@ version (CRuntime_Bionic) {} else /** - * `Service` is a class for retrieving service information. + * Class for retrieving service information. * * Example: * --- @@ -618,7 +615,7 @@ class HostException: SocketOSException } /** - * `InternetHost` is a class for resolving IPv4 addresses. + * Class for resolving IPv4 addresses. * * Consider using `getAddress`, `parseAddress` and `Address` methods * instead of using this class directly. @@ -1220,7 +1217,7 @@ class AddressException: SocketOSException /** - * `Address` is an abstract class for representing a socket addresses. + * Abstract class for representing a socket address. * * Example: * --- @@ -1402,7 +1399,7 @@ abstract class Address } /** - * `UnknownAddress` encapsulates an unknown socket address. + * Encapsulates an unknown socket address. */ class UnknownAddress: Address { @@ -1431,7 +1428,7 @@ public: /** - * `UnknownAddressReference` encapsulates a reference to an arbitrary + * Encapsulates a reference to an arbitrary * socket address. */ class UnknownAddressReference: Address @@ -1474,8 +1471,7 @@ public: /** - * `InternetAddress` encapsulates an IPv4 (Internet Protocol version 4) - * socket address. + * Encapsulates an IPv4 (Internet Protocol version 4) socket address. * * Consider using `getAddress`, `parseAddress` and `Address` methods * instead of using this class directly. @@ -1624,7 +1620,8 @@ public: } /** - * Compares with another InternetAddress of same type for equality + * Provides support for comparing equality with another + * InternetAddress of the same type. * Returns: true if the InternetAddresses share the same address and * port number. */ @@ -1728,8 +1725,7 @@ public: /** - * `Internet6Address` encapsulates an IPv6 (Internet Protocol version 6) - * socket address. + * Encapsulates an IPv6 (Internet Protocol version 6) socket address. * * Consider using `getAddress`, `parseAddress` and `Address` methods * instead of using this class directly. @@ -1913,8 +1909,8 @@ version (StdDdoc) } /** - * `UnixAddress` encapsulates an address for a Unix domain socket - * (`AF_UNIX`), i.e. a socket bound to a path name in the file system. + * Encapsulates an address for a Unix domain socket (`AF_UNIX`), + * i.e. a socket bound to a path name in the file system. * Available only on supported systems. * * Linux also supports an abstract address namespace, in which addresses @@ -2111,7 +2107,7 @@ static if (is(sockaddr_un)) /** - * Class for exceptions thrown by `Socket.accept`. + * Exception thrown by `Socket.accept`. */ class SocketAcceptException: SocketOSException { @@ -2127,7 +2123,7 @@ enum SocketShutdown: int } -/// Flags may be OR'ed together: +/// Socket flags that may be OR'ed together: enum SocketFlags: int { NONE = 0, /// no flags specified @@ -2622,7 +2618,7 @@ enum SocketOption: int /** - * `Socket` is a class that creates a network communication endpoint using + * Class that creates a network communication endpoint using * the Berkeley sockets interface. */ class Socket @@ -2969,7 +2965,7 @@ public: /** - * Returns: the local machine's host name + * Returns: The local machine's host name */ static @property string hostName() @trusted // getter { @@ -3518,7 +3514,7 @@ public: /** * Can be overridden to support other addresses. - * Returns: a new `Address` object for the current address family. + * Returns: A new `Address` object for the current address family. */ protected Address createAddress() pure nothrow { @@ -3549,7 +3545,7 @@ public: } -/// `TcpSocket` is a shortcut class for a TCP Socket. +/// Shortcut class for a TCP Socket. class TcpSocket: Socket { /// Constructs a blocking TCP Socket. @@ -3566,7 +3562,7 @@ class TcpSocket: Socket //shortcut - /// Constructs a blocking TCP Socket and connects to an `Address`. + /// Constructs a blocking TCP Socket and connects to the given `Address`. this(Address connectTo) { this(connectTo.addressFamily); @@ -3575,7 +3571,7 @@ class TcpSocket: Socket } -/// `UdpSocket` is a shortcut class for a UDP Socket. +/// Shortcut class for a UDP Socket. class UdpSocket: Socket { /// Constructs a blocking UDP Socket. From 932ce6d17c7686b0c9b94e60b5eea082ba84dedc Mon Sep 17 00:00:00 2001 From: Nathan Sashihara <21227491+n8sh@users.noreply.github.com> Date: Mon, 11 Sep 2023 17:32:49 -0400 Subject: [PATCH 079/327] Fix Issue 24140 - Int128.opBinary [+-*/%&|^] with negative long arguments gives wrong answers --- std/int128.d | 76 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/std/int128.d b/std/int128.d index e8e29b28677..5d6b928cff9 100644 --- a/std/int128.d +++ b/std/int128.d @@ -153,6 +153,7 @@ public struct Int128 { return tst(this.data); } + } // @safe pure nothrow @nogc /** Support binary arithmetic operators + - * / % & | ^ << >> >>> * Params: @@ -190,21 +191,49 @@ public struct Int128 } /// ditto - Int128 opBinary(string op)(long op2) const - if (op == "+" || op == "-" || + Int128 opBinary(string op, Int)(const Int op2) const + if ((op == "+" || op == "-" || op == "*" || op == "/" || op == "%" || - op == "&" || op == "|" || op == "^") + op == "&" || op == "|" || op == "^") && + is(Int : long) && __traits(isIntegral, Int)) { - return mixin("this " ~ op ~ " Int128(0, op2)"); + static if (__traits(isUnsigned, Int)) + return mixin("this " ~ op ~ " Int128(0, op2)"); + else + return mixin("this " ~ op ~ " Int128((cast(long) op2) >> 63 , op2)"); } /// ditto - Int128 opBinaryRight(string op)(long op2) const - if (op == "+" || op == "-" || + Int128 opBinary(string op, IntLike)(auto ref IntLike op2) const + if ((op == "+" || op == "-" || op == "*" || op == "/" || op == "%" || - op == "&" || op == "|" || op == "^") + op == "&" || op == "|" || op == "^") && + is(IntLike : long) && !__traits(isIntegral, IntLike)) { - mixin("return Int128(0, op2) " ~ op ~ " this;"); + return opBinary!(op)(__traits(getMember, op2, __traits(getAliasThis, IntLike)[0])); + } + + /// ditto + Int128 opBinaryRight(string op, Int)(const Int op2) const + if ((op == "+" || op == "-" || + op == "*" || op == "/" || op == "%" || + op == "&" || op == "|" || op == "^") && + is(Int : long) && __traits(isIntegral, Int)) + { + static if (__traits(isUnsigned, Int)) + mixin("return Int128(0, op2) " ~ op ~ " this;"); + else + mixin("return Int128((cast(long) op2) >> 63, op2) " ~ op ~ " this;"); + } + + /// ditto + Int128 opBinaryRight(string op, IntLike)(auto ref IntLike op2) const + if ((op == "+" || op == "-" || + op == "*" || op == "/" || op == "%" || + op == "&" || op == "|" || op == "^") && + is(IntLike : long) && !__traits(isIntegral, IntLike)) + { + return opBinaryRight!(op)(__traits(getMember, op2, __traits(getAliasThis, IntLike)[0])); } /// ditto @@ -244,16 +273,16 @@ public struct Int128 } /// ditto - ref Int128 opOpAssign(string op)(long op2) - if (op == "+" || op == "-" || + ref Int128 opOpAssign(string op, Int)(auto ref Int op2) + if ((op == "+" || op == "-" || op == "*" || op == "/" || op == "%" || op == "&" || op == "|" || op == "^" || op == "<<" || op == ">>" || op == ">>>") + && is(Int : long)) { mixin("this = this " ~ op ~ " op2;"); return this; } - } // @safe pure nothrow @nogc /** support arithmentic comparison operators < <= > >= * Params: op2 = right hand operand @@ -411,4 +440,29 @@ unittest auto w = Wrapped!ulong(ulong.max); w.count++; // avoid invalid D-Scanner message that w could have been declared const assert(c < w); + + const zero = Int128(0L); + const one = Int128(1L); + const neg_one = Int128(-1L); + const neg_two = Int128(-2L); + // Correct result with ulong.max: + assert(zero + ulong.max == ulong.max); + assert(one * ulong.max == ulong.max); + assert((neg_one & ulong.max) == ulong.max); + assert((zero | ulong.max) == ulong.max); + assert((zero ^ ulong.max) == ulong.max); + // Correct result with negative arguments: + assert(zero + -1L == -1L); + assert(neg_two * -3L == 6L); + assert(neg_two / -2L == 1L); + assert(neg_two % -2L == 0L); + assert((neg_one & -1L) == -1L); + assert((zero | -1L) == -1L); + assert((zero ^ -1L) == -1L); + // Ensure alias this still works. + { + Int128 a = zero; + assert((a ^= w) == ulong.max); + } + assert((Wrapped!long(-1L) + zero) == -1L); } From 7efbb973c24f4394e2c1f23e83f5710a24243ed0 Mon Sep 17 00:00:00 2001 From: Nathan Sashihara <21227491+n8sh@users.noreply.github.com> Date: Sun, 17 Sep 2023 19:15:35 -0400 Subject: [PATCH 080/327] Fix Issue 24142 - Allow casting Int128 to integral and floating types (#8810) --- std/int128.d | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/std/int128.d b/std/int128.d index b20fa1fdddc..92895445aed 100644 --- a/std/int128.d +++ b/std/int128.d @@ -147,7 +147,7 @@ public struct Int128 /** Support casting to a bool * Params: T = bool - * Returns: boolean result + * Returns: true if value is not zero */ bool opCast(T : bool)() const { @@ -155,6 +155,50 @@ public struct Int128 } } // @safe pure nothrow @nogc + /** Support casting to an integral type + * Params: T = integral type + * Returns: low bits of value reinterpreted as T + */ + T opCast(T : long)() const + if (is(byte : T)) + { + return cast(T) this.data.lo; + } + + /// + @safe unittest + { + const Int128 a = Int128(0xffff_ffff_ffff_ffffL, 0x0123_4567_89ab_cdefL); + assert(cast(long) a == 0x0123_4567_89ab_cdefL); + assert(cast(int) a == 0x89ab_cdef); + assert(cast(byte) a == cast(byte) 0xef); + } + + /** Support casting to floating point type + * Params: T = floating point type + * Returns: value cast to floating point with environment-dependent + * rounding if the value is not exactly representable + */ + T opCast(T : real)() const + { + import core.math : ldexp; + if (cast(long) this.data.hi >= 0) + return ldexp(cast(T) this.data.hi, 64) + this.data.lo; + else + { + const absData = neg(this.data); + return -ldexp(cast(T) absData.hi, 64) - absData.lo; + } + } + + /// + @safe unittest + { + const Int128 a = Int128(-1L << 60); + assert(cast(double) a == -(2.0 ^^ 60)); + assert(cast(double) (a * a) == 2.0 ^^ 120); + } + /** Support binary arithmetic operators + - * / % & | ^ << >> >>> * Params: * op = one of the arithmetic binary operators From 0eaa3e25a191db3383e75f76a0073a98df620196 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Tue, 19 Sep 2023 21:17:07 +0100 Subject: [PATCH 081/327] Fix Issue 24151 - std.container.array: Array!string("") does not compile --- std/container/array.d | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/std/container/array.d b/std/container/array.d index 0d6be93a1c1..94c18a330a7 100644 --- a/std/container/array.d +++ b/std/container/array.d @@ -594,6 +594,10 @@ if (!is(immutable T == immutable bool)) assert(capacity == values.length); // We check that reserve has been called before the loop. } + /// ditto + // needed when T is an array and only one argument is passed + this(T single) { __ctor!T(single); } + /** * Constructor taking an $(REF_ALTTEXT input range, isInputRange, std,range,primitives) */ @@ -1282,6 +1286,13 @@ if (!is(immutable T == immutable bool)) } } +@system unittest +{ + import std.algorithm : equal; + auto a = Array!string("test"); + assert(a[].equal(["test"])); +} + @safe unittest { // https://issues.dlang.org/show_bug.cgi?id=13621 From ebea47d1763fb1bdd61f1444b7cf688ee8090d07 Mon Sep 17 00:00:00 2001 From: Jan Jurzitza Date: Sun, 24 Sep 2023 12:10:11 +0000 Subject: [PATCH 082/327] show that chomp doesn't remove spaces in example It was written in the docs, but I think the example shows it more clearly and doesn't require the user to test it if in doubt anymore. --- std/string.d | 1 + 1 file changed, 1 insertion(+) diff --git a/std/string.d b/std/string.d index b1063ee0040..ca14c23747e 100644 --- a/std/string.d +++ b/std/string.d @@ -3815,6 +3815,7 @@ unittest assert(chomp(" hello world \n\n" ~ [lineSep]) == " hello world \n\n"); assert(chomp(" hello world \n\n" ~ [paraSep]) == " hello world \n\n"); assert(chomp(" hello world \n\n" ~ [ nelSep]) == " hello world \n\n"); + assert(chomp(" hello world ") == " hello world "); assert(chomp(" hello world") == " hello world"); assert(chomp("") == ""); From 6873816349605501defaccdcfea387cad304f33d Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Tue, 19 Sep 2023 15:05:38 -0700 Subject: [PATCH 083/327] Add optional element type to isInputRange --- std/range/primitives.d | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/std/range/primitives.d b/std/range/primitives.d index e581409ba32..272fe87f3d7 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -165,16 +165,18 @@ See_Also: Params: R = type to be tested + E = the type of the elements of the range if not `void` Returns: - `true` if R is an input range, `false` if not + `true` if R is an input range (possibly with element type `E`), `false` if not */ -enum bool isInputRange(R) = +enum bool isInputRange(R, E = void) = is(typeof(R.init) == R) && is(typeof((R r) { return r.empty; } (R.init)) == bool) && (is(typeof((return ref R r) => r.front)) || is(typeof(ref (return ref R r) => r.front))) && !is(typeof((R r) { return r.front; } (R.init)) == void) - && is(typeof((R r) => r.popFront)); + && is(typeof((R r) => r.popFront)) + && (is(E == void) || is(ElementType!R: E)); /// @safe unittest @@ -192,6 +194,9 @@ enum bool isInputRange(R) = static assert( isInputRange!(char[])); static assert(!isInputRange!(char[4])); static assert( isInputRange!(inout(int)[])); + static assert( isInputRange!(int[], int)); + static assert( isInputRange!(int[], const int)); + static assert(!isInputRange!(int[], string)); static struct NotDefaultConstructible { From 8f9ff7b821c69e3fc4a23d4a3a2ce7264a2330f0 Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Wed, 20 Sep 2023 14:24:07 -0700 Subject: [PATCH 084/327] Added changelog entry --- changelog/is_input_range_element.dd | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 changelog/is_input_range_element.dd diff --git a/changelog/is_input_range_element.dd b/changelog/is_input_range_element.dd new file mode 100644 index 00000000000..8edad7484a8 --- /dev/null +++ b/changelog/is_input_range_element.dd @@ -0,0 +1,7 @@ +isInputRange now takes an optional element type. + +isInputRange now takes an optional 2nd template parameter that +defaults to void. If not void, it only evaluates to true if the +range's element type is convertible to passed-in parameter. For +instance, `isInputRange!(int[], int)` is true, but +`isInputRange!(int[], string)` is false. \ No newline at end of file From 9531c76a4dad4390782269c72ca119e42e25b0fe Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Wed, 27 Sep 2023 15:21:22 +0100 Subject: [PATCH 085/327] Address review comments --- std/range/primitives.d | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/std/range/primitives.d b/std/range/primitives.d index 272fe87f3d7..ed89cae95a4 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -176,8 +176,10 @@ enum bool isInputRange(R, E = void) = && (is(typeof((return ref R r) => r.front)) || is(typeof(ref (return ref R r) => r.front))) && !is(typeof((R r) { return r.front; } (R.init)) == void) && is(typeof((R r) => r.popFront)) - && (is(E == void) || is(ElementType!R: E)); - + && (is(E == void) || + is(ElementType!R == E) || + is(const(ElementType!R) == E) || + (is(const(ElementType!R) == immutable E) && is(const(E) == E))); /// @safe unittest { From 43d52a1f7cfaff72b21666a70131f8d5d1c2d063 Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Mon, 2 Oct 2023 14:38:37 +0200 Subject: [PATCH 086/327] Add more tests --- std/range/primitives.d | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/std/range/primitives.d b/std/range/primitives.d index ed89cae95a4..ef34a85e5ec 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -196,9 +196,18 @@ enum bool isInputRange(R, E = void) = static assert( isInputRange!(char[])); static assert(!isInputRange!(char[4])); static assert( isInputRange!(inout(int)[])); + static assert(!isInputRange!(int[], string)); static assert( isInputRange!(int[], int)); static assert( isInputRange!(int[], const int)); - static assert(!isInputRange!(int[], string)); + static assert(!isInputRange!(int[], immutable int)); + + static assert(!isInputRange!(const(int)[], int)); + static assert( isInputRange!(const(int)[], const int)); + static assert(!isInputRange!(const(int)[], immutable int)); + + static assert(!isInputRange!(immutable(int)[], int)); + static assert( isInputRange!(immutable(int)[], const int)); + static assert( isInputRange!(immutable(int)[], immutable int)); static struct NotDefaultConstructible { From b39a36a81d5e497328a314bd9a80f68506d9cf3f Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Tue, 10 Oct 2023 10:22:35 +0200 Subject: [PATCH 087/327] Reword changelog --- changelog/is_input_range_element.dd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/changelog/is_input_range_element.dd b/changelog/is_input_range_element.dd index 8edad7484a8..270bc8c485f 100644 --- a/changelog/is_input_range_element.dd +++ b/changelog/is_input_range_element.dd @@ -1,7 +1,7 @@ isInputRange now takes an optional element type. -isInputRange now takes an optional 2nd template parameter that -defaults to void. If not void, it only evaluates to true if the -range's element type is convertible to passed-in parameter. For -instance, `isInputRange!(int[], int)` is true, but +isInputRange now has an optional 2nd template parameter that defaults +to void. If not void, it only evaluates to true if the range's element +type is the same type as this extra argument, modulo const. For +instance, `isInputRange!(int[], const(int))` is true, but `isInputRange!(int[], string)` is false. \ No newline at end of file From 578dfbfeb30f9b1d76d4ce590bf253588af65a92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Nordl=C3=B6w?= Date: Tue, 10 Oct 2023 15:58:42 +0200 Subject: [PATCH 088/327] Correct spelling of Seperator to Separator in joiner() --- std/algorithm/iteration.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index 39927be9bbb..0adb88b2210 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -2975,9 +2975,9 @@ auto joiner(RoR, Separator)(RoR r, Separator sep) static assert(isInputRange!(ElementType!RoR), "The ElementyType of RoR '" , ElementType!(RoR).stringof, "' must be an InputRange " , "(isInputRange!(ElementType!(", RoR.stringof , ")))."); - static assert(isForwardRange!Separator, "The type of the Seperator '" - , Seperator.stringof, "' must be a ForwardRange (isForwardRange!(" - , Seperator.stringof, "))."); + static assert(isForwardRange!Separator, "The type of the Separator '" + , Separator.stringof, "' must be a ForwardRange (isForwardRange!(" + , Separator.stringof, "))."); static assert(is(ElementType!Separator : ElementType!(ElementType!RoR)) , "The type of the elements of the separator range does not match " , "the type of the elements that are joined. Separator type '" From 078e73e952261df08c56181241ea60805fc6c7e7 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Tue, 24 Oct 2023 18:08:28 +0200 Subject: [PATCH 089/327] Adjust conditions in putChar to avoid declaring static symbol Moves the declaration into a CTFE-only context so that nothing gets emitted at codegen --- std/range/primitives.d | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/std/range/primitives.d b/std/range/primitives.d index ef34a85e5ec..1a3fb06cf99 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -540,13 +540,9 @@ private void putChar(R, E)(ref R r, E e) if (isSomeChar!E) { // https://issues.dlang.org/show_bug.cgi?id=9186: Can't use (E[]).init - ref const( char)[] cstringInit(); - ref const(wchar)[] wstringInit(); - ref const(dchar)[] dstringInit(); - - enum csCond = is(typeof(doPut(r, cstringInit()))); - enum wsCond = is(typeof(doPut(r, wstringInit()))); - enum dsCond = is(typeof(doPut(r, dstringInit()))); + enum csCond = is(typeof(doPut(r, (){ ref const( char)[] cstringInit(); return cstringInit(); }()))); + enum wsCond = is(typeof(doPut(r, (){ ref const(wchar)[] wstringInit(); return wstringInit(); }()))); + enum dsCond = is(typeof(doPut(r, (){ ref const(dchar)[] dstringInit(); return dstringInit(); }()))); //Use "max" to avoid static type demotion enum ccCond = is(typeof(doPut(r, char.max))); From 4eb622ef4ca9546600e90631c9efad8de3030271 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Mon, 23 Oct 2023 12:01:47 -0400 Subject: [PATCH 090/327] Add std.traits.isQualifierConvertible --- std/traits.d | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/std/traits.d b/std/traits.d index 2ed7ee527b0..aa69aacfd10 100644 --- a/std/traits.d +++ b/std/traits.d @@ -67,6 +67,7 @@ * $(LREF isAssignable) * $(LREF isCovariantWith) * $(LREF isImplicitlyConvertible) + * $(LREF isQualifierConvertible) * )) * $(TR $(TD Type Constructors) $(TD * $(LREF InoutOf) @@ -5166,6 +5167,62 @@ enum bool isImplicitlyConvertible(From, To) = is(From : To); static assert( isImplicitlyConvertible!(string, const(char)[])); } +/** +Is `From` $(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) to `To`? +*/ +enum bool isQualifierConvertible(From, To) = + is(immutable From == immutable To) && is(From* : To*); + +/// +@safe unittest +{ + // Mutable and immmutable both convert to const... + static assert( isQualifierConvertible!(char, const(char))); + static assert( isQualifierConvertible!(immutable(char), const(char))); + // ...but const does not convert back to mutable or immutable + static assert(!isQualifierConvertible!(const(char), char)); + static assert(!isQualifierConvertible!(const(char), immutable(char))); +} + +@safe unittest +{ + import std.meta : AliasSeq; + + alias Ts = AliasSeq!(int, const int, shared int, inout int, const shared int, + const inout int, inout shared int, const inout shared int, immutable int); + + // https://dlang.org/spec/const3.html#implicit_qualifier_conversions + enum _ = 0; + static immutable bool[Ts.length][Ts.length] conversions = [ + // m c s i cs ci is cis im + [1, 1, _, _, _, _, _, _, _], // mutable + [_, 1, _, _, _, _, _, _, _], // const + [_, _, 1, _, 1, _, _, _, _], // shared + [_, 1, _, 1, _, 1, _, _, _], // inout + [_, _, _, _, 1, _, _, _, _], // const shared + [_, 1, _, _, _, 1, _, _, _], // const inout + [_, _, _, _, 1, _, 1, 1, _], // inout shared + [_, _, _, _, 1, _, _, 1, _], // const inout shared + [_, 1, _, _, 1, 1, _, 1, 1], // immutable + ]; + + static foreach (i, From; Ts) + { + static foreach (j, To; Ts) + { + static assert(isQualifierConvertible!(From, To) == conversions[i][j], + "`isQualifierConvertible!(" ~ From.stringof ~ ", " ~ To.stringof ~ ")`" + ~ " should be `" ~ (conversions[i][j] ? "true" : "false") ~ "`"); + } + } +} + +@safe unittest +{ + // int* -> void* is not a qualifier conversion + static assert(!isQualifierConvertible!(int, void)); +} + /** Returns `true` iff a value of type `Rhs` can be assigned to a variable of type `Lhs`. From b8a0537bdc33117bb6f17da2b287c26b57c2618e Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 28 Oct 2023 19:38:29 +0200 Subject: [PATCH 091/327] CI: Move Cirrus jobs to GitHub Actions --- .cirrus.yml | 81 ------------------ .github/workflows/main.yml | 164 +++++++++++++++++++++++++++++++++++++ 2 files changed, 164 insertions(+), 81 deletions(-) delete mode 100644 .cirrus.yml create mode 100644 .github/workflows/main.yml diff --git a/.cirrus.yml b/.cirrus.yml deleted file mode 100644 index 8ed1c029d54..00000000000 --- a/.cirrus.yml +++ /dev/null @@ -1,81 +0,0 @@ -common_steps_template: &COMMON_STEPS_TEMPLATE - clone_dmd_script: | - set -uexo pipefail - git clone --branch "${CIRRUS_BASE_BRANCH:-$CIRRUS_BRANCH}" --depth 1 https://github.com/dlang/dmd.git ../dmd - install_prerequisites_script: cd ../dmd && ./ci/cirrusci.sh - install_host_compiler_script: cd ../dmd && ./ci/run.sh install_host_compiler - setup_repos_script: | - set -uexo pipefail - ln -s $CIRRUS_WORKING_DIR ../phobos - cd ../dmd && ./ci/run.sh setup_repos "${CIRRUS_BASE_BRANCH:-$CIRRUS_BRANCH}" - build_script: cd ../dmd && ./ci/run.sh build - test_dmd_script: cd ../dmd && ./ci/run.sh test_dmd - test_druntime_script: cd ../dmd && ./ci/run.sh test_druntime - test_phobos_script: cd ../dmd && ./ci/run.sh test_phobos - -environment: - CIRRUS_CLONE_DEPTH: 1 - # for ci/run.sh: - MODEL: 64 - HOST_DMD: dmd - N: 4 - OS_NAME: linux - FULL_BUILD: false - -# Linux -linux_task: - name: Ubuntu 18.04 $TASK_NAME_SUFFIX - container: - image: ubuntu:18.04 - cpu: 4 - memory: 8G - timeout_in: 60m - environment: - matrix: - - TASK_NAME_SUFFIX: x86 - MODEL: 32 - - TASK_NAME_SUFFIX: x64 - install_git_script: apt-get -q update && apt-get install -yq git-core - << : *COMMON_STEPS_TEMPLATE - -# Mac -macos_task: - name: macOS 12.x x64 (M1) - macos_instance: - image: ghcr.io/cirruslabs/macos-monterey-xcode:latest - timeout_in: 60m - environment: - OS_NAME: darwin - # override Cirrus default OS (`darwin`) - OS: osx - << : *COMMON_STEPS_TEMPLATE - -# FreeBSD -freebsd13_task: - name: FreeBSD 13.0 x64 - freebsd_instance: - image_family: freebsd-13-0 - cpu: 4 - memory: 8G - timeout_in: 60m - environment: - OS_NAME: freebsd - CI_DFLAGS: -version=TARGET_FREEBSD13 - install_bash_and_git_script: pkg install -y bash git - << : *COMMON_STEPS_TEMPLATE - -freebsd12_task: - name: FreeBSD 12.3 x64 - freebsd_instance: - image_family: freebsd-12-3 - cpu: 4 - memory: 8G - timeout_in: 60m - environment: - OS_NAME: freebsd - HOST_DMD: dmd-2.095.0 - CI_DFLAGS: -version=TARGET_FREEBSD12 - install_bash_and_git_script: | - sed -i '' -e 's|pkg.FreeBSD.org|mirrors.xtom.com/freebsd-pkg|' /etc/pkg/FreeBSD.conf - pkg install -y bash git - << : *COMMON_STEPS_TEMPLATE diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 00000000000..3ec738227d2 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,164 @@ +# very similar to the DMD script: https://github.com/dlang/dmd/blob/master/.github/workflows/main.yml + +name: Main +on: + - pull_request # without merge conflicts + - push # branch or tag + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + posix: + strategy: + fail-fast: false + matrix: + include: + # Linux + - job_name: Ubuntu 22.04 x64 + os: ubuntu-22.04 + - job_name: Ubuntu 22.04 x86 + os: ubuntu-22.04 + model: 32 + # macOS + - job_name: macOS 13 x64 + os: macos-13 + - job_name: macOS 12 x64 + os: macos-12 + name: ${{ matrix.job_name }} + runs-on: ${{ matrix.os }} + timeout-minutes: 40 + env: + # for ci/run.sh: + OS_NAME: ${{ startsWith(matrix.os, 'ubuntu') && 'linux' || (startsWith(matrix.os, 'macos') && 'darwin' || '') }} + MODEL: ${{ matrix.model || '64' }} + HOST_DMD: dmd + N: ${{ startsWith(matrix.os, 'macos') && '3' || '2' }} + FULL_BUILD: false + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 50 + - name: Clone DMD + run: | + set -uexo pipefail + ln -s "$GITHUB_WORKSPACE" ../phobos + + ref='${{ github.ref }}' + if [[ "$ref" =~ ^refs/pull/ ]]; then + # PR: clone the DMD head with the same name as this Phobos PR's target branch + # e.g., DMD stable when targeting Phobos stable + REPO_BRANCH="$GITHUB_BASE_REF" + elif [[ "$ref" =~ ^refs/(heads|tags)/(.*)$ ]]; then + # no PR: clone the DMD head with the same name as this Phobos head + # e.g., DMD stable for a push to Phobos stable, or DMD v2.105.2 for Phobos tag v2.105.2 + REPO_BRANCH="${BASH_REMATCH[2]}" + else + echo "Error: unexpected GitHub ref '$ref'" >&2 + exit 1 + fi + + git clone --branch "$REPO_BRANCH" --depth 1 https://github.com/dlang/dmd.git ../dmd + - name: Install prerequisites + run: cd ../dmd && ${{ runner.os == 'macOS' && 'ci/cirrusci.sh' || 'sudo -E ci/cirrusci.sh' }} + - name: Install host compiler + run: cd ../dmd && ci/run.sh install_host_compiler + - name: Build + run: cd ../dmd && ci/run.sh build + - name: Test dmd + run: cd ../dmd && ci/run.sh test_dmd + - name: Test druntime + run: cd ../dmd && ci/run.sh test_druntime + - name: Test phobos + run: cd ../dmd && ci/run.sh test_phobos + + freebsd-vm: + strategy: + fail-fast: false + matrix: + include: + - job_name: FreeBSD 13.2 x64 + freebsd_version: '13.2' + - job_name: FreeBSD 12.4 x64 + freebsd_version: '12.4' + name: ${{ matrix.job_name }} + runs-on: macos-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 50 + - name: Run in VM + uses: cross-platform-actions/action@v0.21.0 + with: + operating_system: freebsd + hypervisor: qemu + memory: 8G + sync_files: runner-to-vm + version: ${{ matrix.freebsd_version }} + shell: bash + run: | + set -uexo pipefail + + freebsd_version='${{ matrix.freebsd_version }}' + freebsd_major="${freebsd_version:0:2}" + + export OS_NAME=freebsd + export MODEL=64 + export HOST_DMD=dmd + export N=3 + export FULL_BUILD=false + export CI_DFLAGS="-version=TARGET_FREEBSD${freebsd_major}" + + #if [[ "$freebsd_major" == 12 ]]; then + # sudo sed -i '' -e 's|pkg.FreeBSD.org|mirrors.xtom.com/freebsd-pkg|' /etc/pkg/FreeBSD.conf + #fi + + bash --version + + echo '::group::Install git' + sudo pkg install -y git + echo '::endgroup::' + + echo '::group::Clone DMD' + ln -s "$PWD" ../phobos + + ref='${{ github.ref }}' + if [[ "$ref" =~ ^refs/pull/ ]]; then + REPO_BRANCH="$GITHUB_BASE_REF" + elif [[ "$ref" =~ ^refs/(heads|tags)/(.*)$ ]]; then + REPO_BRANCH="${BASH_REMATCH[2]}" + else + echo "Error: unexpected GitHub ref '$ref'" >&2 + exit 1 + fi + + git clone --branch "$REPO_BRANCH" --depth 1 https://github.com/dlang/dmd.git ../dmd + echo '::endgroup::' + + cd ../dmd + + echo '::group::Install prerequisites' + sudo -E ci/cirrusci.sh + echo '::endgroup::' + + echo '::group::Install host compiler' + ci/run.sh install_host_compiler + echo '::endgroup::' + + echo '::group::Build' + ci/run.sh build + echo '::endgroup::' + + echo '::group::Test dmd' + ci/run.sh test_dmd + echo '::endgroup::' + + echo '::group::Test druntime' + ci/run.sh test_druntime + echo '::endgroup::' + + echo '::group::Test phobos' + ci/run.sh test_phobos + echo '::endgroup::' From 4f6de8489409849f04448e33ace1f527aa0dad68 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 28 Oct 2023 20:38:54 +0200 Subject: [PATCH 092/327] GHA: Work around a `$p:`bug in DMD's d_do_test.d /Users/runner/work/phobos/phobos => /Users/runner/work/phobos --- .github/workflows/main.yml | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3ec738227d2..94d0d0b9c3b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,10 +40,13 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 50 + # d_do_test.d's `$p:` is buggy and chokes on the default `/Users/runner/work/phobos/phobos` path... + - name: Move repo to parent dir (a workaround) + run: mv -f * ../ - name: Clone DMD run: | set -uexo pipefail - ln -s "$GITHUB_WORKSPACE" ../phobos + cd .. ref='${{ github.ref }}' if [[ "$ref" =~ ^refs/pull/ ]]; then @@ -61,17 +64,17 @@ jobs: git clone --branch "$REPO_BRANCH" --depth 1 https://github.com/dlang/dmd.git ../dmd - name: Install prerequisites - run: cd ../dmd && ${{ runner.os == 'macOS' && 'ci/cirrusci.sh' || 'sudo -E ci/cirrusci.sh' }} + run: cd ../../dmd && ${{ runner.os == 'macOS' && 'ci/cirrusci.sh' || 'sudo -E ci/cirrusci.sh' }} - name: Install host compiler - run: cd ../dmd && ci/run.sh install_host_compiler + run: cd ../../dmd && ci/run.sh install_host_compiler - name: Build - run: cd ../dmd && ci/run.sh build + run: cd ../../dmd && ci/run.sh build - name: Test dmd - run: cd ../dmd && ci/run.sh test_dmd + run: cd ../../dmd && ci/run.sh test_dmd - name: Test druntime - run: cd ../dmd && ci/run.sh test_druntime + run: cd ../../dmd && ci/run.sh test_druntime - name: Test phobos - run: cd ../dmd && ci/run.sh test_phobos + run: cd ../../dmd && ci/run.sh test_phobos freebsd-vm: strategy: @@ -121,9 +124,12 @@ jobs: sudo pkg install -y git echo '::endgroup::' - echo '::group::Clone DMD' - ln -s "$PWD" ../phobos + echo '::group::Move repo to parent dir (a workaround)' + mv -f * ../ + cd .. + echo '::endgroup::' + echo '::group::Clone DMD' ref='${{ github.ref }}' if [[ "$ref" =~ ^refs/pull/ ]]; then REPO_BRANCH="$GITHUB_BASE_REF" From 2458e8f82e3004197d8a66239a6b72e17264bb26 Mon Sep 17 00:00:00 2001 From: Imperatorn <57035049+Imperatorn@users.noreply.github.com> Date: Sun, 29 Oct 2023 14:58:16 +0100 Subject: [PATCH 093/327] Typo --- std/parallelism.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/parallelism.d b/std/parallelism.d index 9b231f3ac8a..3fe8cd61fe0 100644 --- a/std/parallelism.d +++ b/std/parallelism.d @@ -1581,7 +1581,7 @@ public: auto logs = new double[10_000_000]; // Parallel foreach works with or without an index - // variable. It can be iterate by ref if range.front + // variable. It can iterate by ref if range.front // returns by ref. // Iterate over logs using work units of size 100. From 0ec4f471307251eca0b4ffe6b1969e05366a2b9b Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Sun, 29 Oct 2023 11:04:54 -0400 Subject: [PATCH 094/327] Fix issue 24207 - make AbstractTask private so it's not inadvertently accessible to users of Task. --- std/parallelism.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/parallelism.d b/std/parallelism.d index 3fe8cd61fe0..fadb4c1759d 100644 --- a/std/parallelism.d +++ b/std/parallelism.d @@ -418,8 +418,8 @@ Bugs: Changes to `ref` and `out` arguments are not propagated to the */ struct Task(alias fun, Args...) { - AbstractTask base = {runTask : &impl}; - alias base this; + private AbstractTask base = {runTask : &impl}; + private alias base this; private @property AbstractTask* basePtr() { From f491d1f23389cb348cc8bbacf3d2d68b80f8ad85 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 30 Oct 2023 16:14:10 +0000 Subject: [PATCH 095/327] [std.algorithm] Improve `fold` docs Mention iteratively calling predicates in summary. Use list to explain calling a single predicate with a seed. Mention multiple results are produced in description. Use list for see also. Rename `seed` parameter `seeds` and fix docs. Fix result docs when >1 predicate. --- std/algorithm/iteration.d | 43 +++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index 39927be9bbb..c9336c5189f 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -4809,26 +4809,34 @@ private template ReduceSeedType(E) /++ Implements the homonym function (also known as `accumulate`, $(D compress), `inject`, or `foldl`) present in various programming -languages of functional flavor. The call `fold!(fun)(range, seed)` -first assigns `seed` to an internal variable `result`, -also called the accumulator. Then, for each element `x` in $(D -range), `result = fun(result, x)` gets evaluated. Finally, $(D -result) is returned. The one-argument version `fold!(fun)(range)` +languages of functional flavor, iteratively calling one or more predicates. + +$(P For a single predicate, +the call `fold!(fun)(range, seed)` will:) + +* Assign `seed` to an internal variable `result` (also called the accumulator) +* For each element `e` in $(D range), evaluate `result = fun(result, e)`. +* Return $(D result). + +$(P The one-argument version `fold!(fun)(range)` works similarly, but it uses the first element of the range as the -seed (the range must be non-empty). +seed (the range must be non-empty) and iterates over the remaining +elements.) + +Multiple results are produced when using multiple predicates. Params: fun = the predicate function(s) to apply to the elements See_Also: - $(HTTP en.wikipedia.org/wiki/Fold_(higher-order_function), Fold (higher-order function)) + * $(HTTP en.wikipedia.org/wiki/Fold_(higher-order_function), Fold (higher-order function)) - $(LREF sum) is similar to `fold!((a, b) => a + b)` that offers - precise summing of floating point numbers. + * $(LREF sum) is similar to `fold!((a, b) => a + b)` that offers + precise summing of floating point numbers. - This is functionally equivalent to $(LREF reduce) with the argument order - reversed, and without the need to use $(REF_ALTTEXT `tuple`,tuple,std,typecons) - for multiple seeds. + * `fold` is functionally equivalent to $(LREF reduce) with the argument order + reversed, and without the need to use $(REF_ALTTEXT `tuple`,tuple,std,typecons) + for multiple seeds. +/ template fold(fun...) if (fun.length >= 1) @@ -4836,20 +4844,21 @@ if (fun.length >= 1) /** Params: r = the $(REF_ALTTEXT input range, isInputRange, std,range,primitives) to fold - seed = the initial value of the accumulator + seeds = the initial values of each accumulator (optional), one for each predicate Returns: - the accumulated `result` + Either the accumulated result for a single predicate, or a + $(REF_ALTTEXT `Tuple`,Tuple,std,typecons) of results. */ - auto fold(R, S...)(R r, S seed) + auto fold(R, S...)(R r, S seeds) { static if (S.length < 2) { - return reduce!fun(seed, r); + return reduce!fun(seeds, r); } else { import std.typecons : tuple; - return reduce!fun(tuple(seed), r); + return reduce!fun(tuple(seeds), r); } } } From 93530131b176b8bc9f1afb5e49ba5faad4d1f21b Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Mon, 30 Oct 2023 15:41:56 +0100 Subject: [PATCH 096/327] Revert "GHA: Work around a `$p:`bug in DMD's d_do_test.d" This reverts commit 4f6de8489409849f04448e33ace1f527aa0dad68, as DMD master has been fixed. --- .github/workflows/main.yml | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 94d0d0b9c3b..de21335c301 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,13 +40,9 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 50 - # d_do_test.d's `$p:` is buggy and chokes on the default `/Users/runner/work/phobos/phobos` path... - - name: Move repo to parent dir (a workaround) - run: mv -f * ../ - name: Clone DMD run: | set -uexo pipefail - cd .. ref='${{ github.ref }}' if [[ "$ref" =~ ^refs/pull/ ]]; then @@ -64,17 +60,17 @@ jobs: git clone --branch "$REPO_BRANCH" --depth 1 https://github.com/dlang/dmd.git ../dmd - name: Install prerequisites - run: cd ../../dmd && ${{ runner.os == 'macOS' && 'ci/cirrusci.sh' || 'sudo -E ci/cirrusci.sh' }} + run: cd ../dmd && ${{ runner.os == 'macOS' && 'ci/cirrusci.sh' || 'sudo -E ci/cirrusci.sh' }} - name: Install host compiler - run: cd ../../dmd && ci/run.sh install_host_compiler + run: cd ../dmd && ci/run.sh install_host_compiler - name: Build - run: cd ../../dmd && ci/run.sh build + run: cd ../dmd && ci/run.sh build - name: Test dmd - run: cd ../../dmd && ci/run.sh test_dmd + run: cd ../dmd && ci/run.sh test_dmd - name: Test druntime - run: cd ../../dmd && ci/run.sh test_druntime + run: cd ../dmd && ci/run.sh test_druntime - name: Test phobos - run: cd ../../dmd && ci/run.sh test_phobos + run: cd ../dmd && ci/run.sh test_phobos freebsd-vm: strategy: @@ -124,11 +120,6 @@ jobs: sudo pkg install -y git echo '::endgroup::' - echo '::group::Move repo to parent dir (a workaround)' - mv -f * ../ - cd .. - echo '::endgroup::' - echo '::group::Clone DMD' ref='${{ github.ref }}' if [[ "$ref" =~ ^refs/pull/ ]]; then From c4cbe0c21b1f22c34b870e7729ef202282d4b0f5 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Mon, 23 Oct 2023 13:21:02 -0400 Subject: [PATCH 097/327] Use isQualifierConvertible in isInputRange!(R, E) This replaces the bespoke type comparison that was previously used. All conversions allowed by the previous version are still allowed after this change. --- .dscanner.ini | 4 ++-- std/range/primitives.d | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/.dscanner.ini b/.dscanner.ini index e93151da7c6..4a79219bbfe 100644 --- a/.dscanner.ini +++ b/.dscanner.ini @@ -277,7 +277,7 @@ has_public_example="-etc.c.curl,\ imports_sortedness="+disabled" ;imports_sortedness="-etc.c.curl,-std.algorithm.comparison,-std.algorithm.internal,-std.algorithm.iteration,-std.algorithm.mutation,-std.algorithm.searching,-std.algorithm.setops,-std.algorithm.sorting,-std.array,-std.bigint,-std.bitmanip,-std.c.freebsd.socket,-std.c.linux.pthread,-std.c.process,-std.complex,-std.concurrency,-std.container.array,-std.container.binaryheap,-std.container.dlist,-std.container.rbtree,-std.container.slist,-std.container.util,-std.conv,-std.datetime,-std.datetime.date,-std.datetime.interval,-std.datetime.systime,-std.datetime.timezone,-std.digest,-std.digest.hmac,-std.exception,-std.experimental.allocator,-std.experimental.allocator.building_blocks,-std.experimental.allocator.building_blocks.affix_allocator,-std.experimental.allocator.building_blocks.allocator_list,-std.experimental.allocator.building_blocks.free_list,-std.experimental.allocator.building_blocks.free_tree,-std.experimental.allocator.building_blocks.kernighan_ritchie,-std.experimental.allocator.building_blocks.region,-std.experimental.allocator.common,-std.experimental.allocator.mallocator,-std.experimental.allocator.mmap_allocator,-std.experimental.allocator.showcase,-std.experimental.allocator.typed,-std.experimental.checkedint,-std.logger.core,-std.file,-std.format,-std.functional,-std.getopt,-std.internal.math.biguintcore,-std.internal.test.dummyrange,-std.json,-std.math,-std.meta,-std.mmfile,-std.net.curl,-std.net.isemail,-std.numeric,-std.outbuffer,-std.parallelism,-std.path,-std.process,-std.random,-std.range,-std.range.primitives,-std.regex,-std.regex.internal.backtracking,-std.regex.internal.generator,-std.regex.internal.kickstart,-std.regex.internal.parser,-std.regex.internal.tests,-std.signals,-std.socket,-std.stdio,-std.string,-std.uni,-std.utf,-std.uuid,-std.variant,-std.windows.charset,-std.windows.registry,-std.windows.syserror,-std.zip" ; Checks for labels with the same name as variables -label_var_same_name_check="-std.algorithm.iteration,-std.algorithm.sorting,-std.array,-std.bigint,-std.bitmanip,-std.conv,-std.encoding,-std.experimental.allocator.building_blocks.segregator,-std.internal.digest.sha_SSSE3,-std.parallelism,-std.process,-std.typecons,-std.utf,-std.traits" +label_var_same_name_check="-std.algorithm.iteration,-std.algorithm.sorting,-std.array,-std.bigint,-std.bitmanip,-std.conv,-std.encoding,-std.experimental.allocator.building_blocks.segregator,-std.internal.digest.sha_SSSE3,-std.parallelism,-std.process,-std.range.primitives,-std.typecons,-std.utf,-std.traits" ; Checks for subtraction from .length properties length_subtraction_check="+disabled" ;length_subtraction_check="-std.algorithm.internal,-std.algorithm.iteration,-std.algorithm.mutation,-std.algorithm.searching,-std.algorithm.sorting,-std.array,-std.concurrency,-std.container.array,-std.container.binaryheap,-std.conv,-std.datetime.timezone,-std.experimental.allocator.building_blocks.segregator,-std.logger.core,-std.file,-std.format,-std.getopt,-std.internal.math.biguintcore,-std.internal.math.biguintnoasm,-std.internal.math.biguintx86,-std.internal.scopebuffer,-std.math,-std.net.curl,-std.net.isemail,-std.numeric,-std.parallelism,-std.path,-std.process,-std.range,-std.regex,-std.regex.internal.parser,-std.regex.internal.tests,-std.string,-std.uni,-std.windows.charset,-std.windows.registry,-std.zip" @@ -517,4 +517,4 @@ trust_too_much="-std.regex,-std.stdio,-std.uni,-std.internal.cstring" ; Temporarily disable until https://github.com/dlang-community/D-Scanner/issues/593 is fixed if_else_same_check="-std.typecons" ; Disable checks for generated unicode tables -long_line_check="-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-std.internal.unicode_decomp,-std.internal.unicode_comp,-std.internal.unicode_grapheme,-std.internal.unicode_norm,-std.internal.unicode_tables" \ No newline at end of file +long_line_check="-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-std.internal.unicode_decomp,-std.internal.unicode_comp,-std.internal.unicode_grapheme,-std.internal.unicode_norm,-std.internal.unicode_tables" diff --git a/std/range/primitives.d b/std/range/primitives.d index 1a3fb06cf99..89cfa07cc1f 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -165,21 +165,24 @@ See_Also: Params: R = type to be tested - E = the type of the elements of the range if not `void` + E = if present, the elements of the range must be + $(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) + to this type Returns: `true` if R is an input range (possibly with element type `E`), `false` if not */ -enum bool isInputRange(R, E = void) = +enum bool isInputRange(R) = is(typeof(R.init) == R) && is(typeof((R r) { return r.empty; } (R.init)) == bool) && (is(typeof((return ref R r) => r.front)) || is(typeof(ref (return ref R r) => r.front))) && !is(typeof((R r) { return r.front; } (R.init)) == void) - && is(typeof((R r) => r.popFront)) - && (is(E == void) || - is(ElementType!R == E) || - is(const(ElementType!R) == E) || - (is(const(ElementType!R) == immutable E) && is(const(E) == E))); + && is(typeof((R r) => r.popFront)); + +/// ditto +enum bool isInputRange(R, E) = + .isInputRange!R && isQualifierConvertible!(ElementType!R, E); + /// @safe unittest { From 1febc32aa6d0c766121a78c81db5da45c2dfb5d9 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Mon, 30 Oct 2023 20:31:01 -0600 Subject: [PATCH 098/327] Add Unshared to std.traits. This is the shared equivalent of Unconst. It allows code to strip off shared without stripping off const. --- changelog/unshared.dd | 13 +++++++++++++ std/traits.d | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 changelog/unshared.dd diff --git a/changelog/unshared.dd b/changelog/unshared.dd new file mode 100644 index 00000000000..66b096ec3be --- /dev/null +++ b/changelog/unshared.dd @@ -0,0 +1,13 @@ +Add Unshared to std.traits. + +`Unshared` is the `shared` equivalent of `Unconst`. It strips off the outer +layer of `shared` from a type. e.g. + +``` + static assert(Unshared!(shared int) == int); + static assert(Unshared!(shared(int[])) == shared(int)[]); +``` + +So, `Unconst` strips off the outer layer of `const`, `immutable`, and `inout`; +`Unshared` strips off the outer layer of `shared`; and `Unqual` strips off all +qualifiers from the outer layer of a type. diff --git a/std/traits.d b/std/traits.d index aa69aacfd10..2e7a4f6a30b 100644 --- a/std/traits.d +++ b/std/traits.d @@ -132,6 +132,7 @@ * $(LREF PointerTarget) * $(LREF Signed) * $(LREF Unconst) + * $(LREF Unshared) * $(LREF Unqual) * $(LREF Unsigned) * $(LREF ValueType) @@ -7848,6 +7849,46 @@ else static assert(is(Unconst!ImmIntArr == immutable(int)[])); } +/++ + Removes `shared` qualifier, if any, from type `T`. + + Note that while `immutable` is implicitly `shared`, it is unaffected by + Unshared. Only explict `shared` is removed. + +/ +template Unshared(T) +{ + static if (is(T == shared U, U)) + alias Unshared = U; + else + alias Unshared = T; +} + +/// +@safe unittest +{ + static assert(is(Unshared!int == int)); + static assert(is(Unshared!(const int) == const int)); + static assert(is(Unshared!(immutable int) == immutable int)); + + static assert(is(Unshared!(shared int) == int)); + static assert(is(Unshared!(shared(const int)) == const int)); + + static assert(is(Unshared!(shared(int[])) == shared(int)[])); +} + +@safe unittest +{ + static assert(is(Unshared!( int) == int)); + static assert(is(Unshared!( const int) == const int)); + static assert(is(Unshared!( inout int) == inout int)); + static assert(is(Unshared!( inout const int) == inout const int)); + static assert(is(Unshared!(shared int) == int)); + static assert(is(Unshared!(shared const int) == const int)); + static assert(is(Unshared!(shared inout int) == inout int)); + static assert(is(Unshared!(shared inout const int) == inout const int)); + static assert(is(Unshared!( immutable int) == immutable int)); +} + version (StdDdoc) { /** From 5762f3311b3ad9c47638d60bd57e40374c875088 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Tue, 31 Oct 2023 17:26:48 +0000 Subject: [PATCH 099/327] Explain predicate signature --- std/algorithm/iteration.d | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index c9336c5189f..4af78918705 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -4811,6 +4811,12 @@ Implements the homonym function (also known as `accumulate`, $(D compress), `inject`, or `foldl`) present in various programming languages of functional flavor, iteratively calling one or more predicates. +$(P Each predicate in `fun` must take two arguments:) +* An accumulator value +* An element of the range `r` +$(P Each predicate must return a value which implicitly converts to the +type of the accumulator.) + $(P For a single predicate, the call `fold!(fun)(range, seed)` will:) From 2170bb37bc3738b237a7698ff29570f0b60483f7 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Tue, 31 Oct 2023 17:37:05 +0000 Subject: [PATCH 100/327] Tweak seed description --- std/algorithm/iteration.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index 4af78918705..b0d890fd7b4 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -4820,7 +4820,8 @@ type of the accumulator.) $(P For a single predicate, the call `fold!(fun)(range, seed)` will:) -* Assign `seed` to an internal variable `result` (also called the accumulator) +* Use `seed` to initialize an internal variable `result` (also called + the accumulator). * For each element `e` in $(D range), evaluate `result = fun(result, e)`. * Return $(D result). From 7f06f2358afc3c4028274978074c59cea6b1c1d2 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Tue, 31 Oct 2023 17:40:45 +0000 Subject: [PATCH 101/327] Rename `b` to `e` for element in predicates --- std/algorithm/iteration.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index b0d890fd7b4..fdd27246051 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -4876,10 +4876,10 @@ if (fun.length >= 1) immutable arr = [1, 2, 3, 4, 5]; // Sum all elements - assert(arr.fold!((a, b) => a + b) == 15); + assert(arr.fold!((a, e) => a + e) == 15); // Sum all elements with explicit seed - assert(arr.fold!((a, b) => a + b)(6) == 21); + assert(arr.fold!((a, e) => a + e)(6) == 21); import std.algorithm.comparison : min, max; import std.typecons : tuple; @@ -4891,10 +4891,10 @@ if (fun.length >= 1) assert(arr.fold!(min, max)(0, 7) == tuple(0, 7)); // Can be used in a UFCS chain - assert(arr.map!(a => a + 1).fold!((a, b) => a + b) == 20); + assert(arr.map!(a => a + 1).fold!((a, e) => a + e) == 20); // Return the last element of any range - assert(arr.fold!((a, b) => b) == 5); + assert(arr.fold!((a, e) => e) == 5); } @safe @nogc pure nothrow unittest From 98326c477f0f9555ca6ed3671fa4359a680e4c31 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Wed, 1 Nov 2023 16:01:01 -0400 Subject: [PATCH 102/327] Fix Issue 24215 - isBasicType!Enum should be false --- std/traits.d | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/std/traits.d b/std/traits.d index 2e7a4f6a30b..cc49d76b241 100644 --- a/std/traits.d +++ b/std/traits.d @@ -6480,7 +6480,8 @@ enum bool isScalarType(T) = __traits(isScalar, T) && is(T : real); /** * Detect whether `T` is a basic type (scalar type or void). */ -enum bool isBasicType(T) = isScalarType!T || is(immutable T == immutable void); +enum bool isBasicType(T) = + !is(T == enum) && (isScalarType!T || is(immutable T == immutable void)); /// @safe unittest @@ -6500,6 +6501,13 @@ enum bool isBasicType(T) = isScalarType!T || is(immutable T == immutable void); static assert(isBasicType!(const(dchar))); } +// https://issues.dlang.org/show_bug.cgi?id=24215 +@safe unittest +{ + enum E : int { a } + static assert(!isBasicType!E); +} + /** * Detect whether `T` is a built-in unsigned numeric type. */ From 1813356ab2bceb0c4675ec2f6f731b3eacb25b76 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Thu, 2 Nov 2023 12:15:35 -0400 Subject: [PATCH 103/327] Add changelog entry for isBasicType See PR #8838 --- changelog/PR8838.dd | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 changelog/PR8838.dd diff --git a/changelog/PR8838.dd b/changelog/PR8838.dd new file mode 100644 index 00000000000..4672d9ee8a6 --- /dev/null +++ b/changelog/PR8838.dd @@ -0,0 +1,10 @@ +isBasicType!T now returns false for enum types + +In the language spec, a basic type is defined to be one of `void`, `bool`, a +built-in integer type, a built-in character type, or a built-in floating-point +type. + +Prior to this release, `isBasicType!T` returned `true` when `T` was either a +basic type, or an `enum` type whose base type was a basic type. Now, it returns +`false` for all `enum` types, and only returns `true` if `T` itself is a basic +type. From fa0307e09155b414c4718ea62557024d09b349af Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 4 Nov 2023 10:57:37 -0400 Subject: [PATCH 104/327] Revert "Fix Issue 24215 - isBasicType!Enum should be false" This reverts commit 98326c477f0f9555ca6ed3671fa4359a680e4c31. --- std/traits.d | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/std/traits.d b/std/traits.d index cc49d76b241..2e7a4f6a30b 100644 --- a/std/traits.d +++ b/std/traits.d @@ -6480,8 +6480,7 @@ enum bool isScalarType(T) = __traits(isScalar, T) && is(T : real); /** * Detect whether `T` is a basic type (scalar type or void). */ -enum bool isBasicType(T) = - !is(T == enum) && (isScalarType!T || is(immutable T == immutable void)); +enum bool isBasicType(T) = isScalarType!T || is(immutable T == immutable void); /// @safe unittest @@ -6501,13 +6500,6 @@ enum bool isBasicType(T) = static assert(isBasicType!(const(dchar))); } -// https://issues.dlang.org/show_bug.cgi?id=24215 -@safe unittest -{ - enum E : int { a } - static assert(!isBasicType!E); -} - /** * Detect whether `T` is a built-in unsigned numeric type. */ From 12229f498605957744153e7bfa0fda48736e094e Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 4 Nov 2023 10:57:37 -0400 Subject: [PATCH 105/327] Revert "Add changelog entry for isBasicType" This reverts commit 1813356ab2bceb0c4675ec2f6f731b3eacb25b76. --- changelog/PR8838.dd | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 changelog/PR8838.dd diff --git a/changelog/PR8838.dd b/changelog/PR8838.dd deleted file mode 100644 index 4672d9ee8a6..00000000000 --- a/changelog/PR8838.dd +++ /dev/null @@ -1,10 +0,0 @@ -isBasicType!T now returns false for enum types - -In the language spec, a basic type is defined to be one of `void`, `bool`, a -built-in integer type, a built-in character type, or a built-in floating-point -type. - -Prior to this release, `isBasicType!T` returned `true` when `T` was either a -basic type, or an `enum` type whose base type was a basic type. Now, it returns -`false` for all `enum` types, and only returns `true` if `T` itself is a basic -type. From 39d921681bb96607e5b58c188dc037f2ad8aae0e Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 6 Nov 2023 17:50:20 +0000 Subject: [PATCH 106/327] Fix import --- std/container/array.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/container/array.d b/std/container/array.d index 94c18a330a7..ad120c1c74f 100644 --- a/std/container/array.d +++ b/std/container/array.d @@ -1288,7 +1288,7 @@ if (!is(immutable T == immutable bool)) @system unittest { - import std.algorithm : equal; + import std.algorithm.comparison : equal; auto a = Array!string("test"); assert(a[].equal(["test"])); } From 886d792d09f7d28c9da7615c06976f5a91c0e889 Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Mon, 6 Nov 2023 10:17:20 +0100 Subject: [PATCH 107/327] Add optional element type to isForwardRange Similar to #8819 --- changelog/is_forward_range_element.dd | 7 +++++++ std/range/primitives.d | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 changelog/is_forward_range_element.dd diff --git a/changelog/is_forward_range_element.dd b/changelog/is_forward_range_element.dd new file mode 100644 index 00000000000..128acf883c9 --- /dev/null +++ b/changelog/is_forward_range_element.dd @@ -0,0 +1,7 @@ +isForwardRange now takes an optional element type. + +isForwardRange now has an optional 2nd template parameter that defaults +to void. If not void, it only evaluates to true if the range's element +type is the same type as this extra argument, modulo const. For +instance, `isForwardRange!(int[], const(int))` is true, but +`isForwardRange!(int[], string)` is false. \ No newline at end of file diff --git a/std/range/primitives.d b/std/range/primitives.d index 89cfa07cc1f..fec5c85cbef 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -1015,12 +1015,27 @@ See_Also: enum bool isForwardRange(R) = isInputRange!R && is(typeof((R r) { return r.save; } (R.init)) == R); +/// ditto +enum bool isForwardRange(R, E) = + .isForwardRange!R && isQualifierConvertible!(ElementType!R, E); + /// @safe unittest { static assert(!isForwardRange!(int)); static assert( isForwardRange!(int[])); static assert( isForwardRange!(inout(int)[])); + + static assert( isForwardRange!(int[], const int)); + static assert(!isForwardRange!(int[], immutable int)); + + static assert(!isForwardRange!(const(int)[], int)); + static assert( isForwardRange!(const(int)[], const int)); + static assert(!isForwardRange!(const(int)[], immutable int)); + + static assert(!isForwardRange!(immutable(int)[], int)); + static assert( isForwardRange!(immutable(int)[], const int)); + static assert( isForwardRange!(immutable(int)[], immutable int)); } @safe unittest From fc06c514a8c4492f60fc89b8c4f857e6932fbcbd Mon Sep 17 00:00:00 2001 From: HuskyNator Date: Sun, 12 Nov 2023 09:56:26 +0100 Subject: [PATCH 108/327] Add missing log function `error` to `std.logger` documentation (#8846) Error was missing from the documentation here. --- std/logger/package.d | 1 + 1 file changed, 1 insertion(+) diff --git a/std/logger/package.d b/std/logger/package.d index 4f4183c4cec..330ef88aa06 100644 --- a/std/logger/package.d +++ b/std/logger/package.d @@ -54,6 +54,7 @@ $(UL $(LI `trace`) $(LI `info`) $(LI `warning`) + #(LI `error`) $(LI `critical`) $(LI `fatal`) ) From 24dab1f547a8192be6c055a4c04c568d8495bbb7 Mon Sep 17 00:00:00 2001 From: Petar Kirov Date: Sun, 12 Nov 2023 18:28:14 +0200 Subject: [PATCH 109/327] docs(std.logger.package): Fix ddoc macro typo in "Basic Logging" section --- std/logger/package.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/logger/package.d b/std/logger/package.d index 330ef88aa06..14a439486db 100644 --- a/std/logger/package.d +++ b/std/logger/package.d @@ -54,7 +54,7 @@ $(UL $(LI `trace`) $(LI `info`) $(LI `warning`) - #(LI `error`) + $(LI `error`) $(LI `critical`) $(LI `fatal`) ) From f6ff0f7c37cf9a460f1b7aae0017dd7c2bb1c714 Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Tue, 14 Nov 2023 09:53:00 +0100 Subject: [PATCH 110/327] chain() must tolerate being in the init state. --- std/range/package.d | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index 1b4f233d94a..c985015a7af 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -1025,7 +1025,18 @@ if (Ranges.length > 0 && } else { - @property bool empty() => frontIndex >= backIndex; + @property bool empty() + { + if (frontIndex == 0) + { + // special handling: we might be in Range.init state! + // For instance, `format!"%s"` uses Range.init to ensure + // that formatting is possible. + // In that case, we must still behave in an internally consistent way. + return source[0].empty; + } + return frontIndex >= backIndex; + } } static if (allSatisfy!(isForwardRange, R)) @@ -1705,6 +1716,17 @@ pure @safe nothrow @nogc unittest } } +/// https://issues.dlang.org/show_bug.cgi?id=24243 +pure @safe nothrow unittest +{ + import std.algorithm.iteration : filter; + + auto range = chain([2], [3].filter!"a"); + + // This might happen in format!"%s"(range), for instance. + assert(typeof(range).init.empty); +} + /** Choose one of two ranges at runtime depending on a Boolean condition. From 870eb5d5d6972b12dd4b69d48ef049abee811b6b Mon Sep 17 00:00:00 2001 From: Yang Yujie Date: Fri, 17 Nov 2023 15:23:14 +0800 Subject: [PATCH 111/327] Add std/math/hardware.d support for LoongArch64. --- std/math/hardware.d | 58 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/std/math/hardware.d b/std/math/hardware.d index cca9f3ba10b..9490fe0b0db 100644 --- a/std/math/hardware.d +++ b/std/math/hardware.d @@ -30,6 +30,7 @@ version (SPARC64) version = SPARC_Any; version (SystemZ) version = IBMZ_Any; version (RISCV32) version = RISCV_Any; version (RISCV64) version = RISCV_Any; +version (LoongArch64) version = LoongArch_Any; version (D_InlineAsm_X86) version = InlineAsm_X86_Any; version (D_InlineAsm_X86_64) version = InlineAsm_X86_Any; @@ -57,6 +58,7 @@ else version (X86_Any) version = IeeeFlagsSupport; else version (PPC_Any) version = IeeeFlagsSupport; else version (RISCV_Any) version = IeeeFlagsSupport; else version (MIPS_Any) version = IeeeFlagsSupport; +else version (LoongArch_Any) version = IeeeFlagsSupport; else version (ARM_Any) version = IeeeFlagsSupport; // Struct FloatingPointControl is only available if hardware FP units are available. @@ -87,6 +89,7 @@ private: // The ARM and PowerPC FPSCR is a 32-bit register. // The SPARC FSR is a 32bit register (64 bits for SPARC 7 & 8, but high bits are uninteresting). // The RISC-V (32 & 64 bit) fcsr is 32-bit register. + // THe LoongArch fcsr (fcsr0) is a 32-bit register. uint flags; version (CRuntime_Microsoft) @@ -159,6 +162,15 @@ private: return result; `); } + else version (LoongArch_Any) + { + uint result = void; + asm pure nothrow @nogc + { + "movfcsr2gr %0,$r2" : "=r" (result); + } + return result & EXCEPTIONS_MASK; + } else assert(0, "Not yet supported"); } @@ -191,6 +203,13 @@ private: } `); } + else version (LoongArch_Any) + { + asm nothrow @nogc + { + "movgr2fcsr $r2,$r0"; + } + } else { /* SPARC: @@ -613,6 +632,21 @@ nothrow @nogc: | inexactException, } } + else version (LoongArch_Any) + { + enum : ExceptionMask + { + inexactException = 0x00, + divByZeroException = 0x01, + overflowException = 0x02, + underflowException = 0x04, + invalidException = 0x08, + severeExceptions = overflowException | divByZeroException + | invalidException, + allExceptions = severeExceptions | underflowException + | inexactException, + } + } else version (MIPS_Any) { enum : ExceptionMask @@ -700,6 +734,8 @@ nothrow @nogc: return true; else version (MIPS_Any) return true; + else version (LoongArch_Any) + return true; else version (ARM_Any) { // The hasExceptionTraps_impl function is basically pure, @@ -773,6 +809,10 @@ private: { alias ControlState = uint; } + else version (LoongArch_Any) + { + alias ControlState = uint; + } else version (MIPS_Any) { alias ControlState = uint; @@ -844,6 +884,16 @@ private: return cont; `); } + else version (LoongArch_Any) + { + ControlState cont; + asm pure nothrow @nogc + { + "movfcsr2gr %0,$r0" : "=r" (cont); + } + cont &= (roundingMask | allExceptions); + return cont; + } else assert(0, "Not yet supported"); } @@ -887,6 +937,14 @@ private: } `); } + else version (LoongArch_Any) + { + asm nothrow @nogc + { + "movgr2fcsr $r0,%0" : + : "r" (newState & (roundingMask | allExceptions)); + } + } else assert(0, "Not yet supported"); } From 585ddbe691b8b0263e48a9a187209e74f11a0ab1 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sun, 19 Nov 2023 21:55:26 +0000 Subject: [PATCH 112/327] [std.algorithm] Improve `canFind` docs (#8843) Minor tweaks. Fix wrong `LREF`. Also fix wrong `REF` to `among`. --- std/algorithm/searching.d | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 37a08de7a8f..7a7e1613661 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -2536,13 +2536,13 @@ was successful. For more information about `pred` see $(LREF find). See_Also: -$(REF among, std,algorithm,comparison) for checking a value against multiple possibilities. +$(REF among, std,algorithm,comparison) for checking a value against multiple arguments. +/ template canFind(alias pred="a == b") { /++ - Returns `true` if and only if any value `v` found in the - input range `range` satisfies the predicate `pred`. + Returns `true` if and only if `pred(e)` is true for any value `e` in the + input range `range`. Performs (at most) $(BIGOH haystack.length) evaluations of `pred`. +/ bool canFind(Range)(Range haystack) @@ -2565,11 +2565,11 @@ template canFind(alias pred="a == b") Returns the 1-based index of the first needle found in `haystack`. If no needle is found, then `0` is returned. - So, if used directly in the condition of an if statement or loop, the result + So, if used directly in the condition of an `if` statement or loop, the result will be `true` if one of the needles is found and `false` if none are found, whereas if the result is used elsewhere, it can either be cast to `bool` for the same effect or used to get which needle was found first - without having to deal with the tuple that `LREF find` returns for the + without having to deal with the tuple that $(LREF find) returns for the same operation. +/ size_t canFind(Range, Ranges...)(Range haystack, scope Ranges needles) @@ -2584,15 +2584,17 @@ template canFind(alias pred="a == b") /// @safe unittest { - assert(canFind([0, 1, 2, 3], 2) == true); - assert(canFind([0, 1, 2, 3], [1, 2], [2, 3])); - assert(canFind([0, 1, 2, 3], [1, 2], [2, 3]) == 1); - assert(canFind([0, 1, 2, 3], [1, 7], [2, 3])); - assert(canFind([0, 1, 2, 3], [1, 7], [2, 3]) == 2); + const arr = [0, 1, 2, 3]; + assert(canFind(arr, 2)); + assert(!canFind(arr, 4)); - assert(canFind([0, 1, 2, 3], 4) == false); - assert(!canFind([0, 1, 2, 3], [1, 3], [2, 4])); - assert(canFind([0, 1, 2, 3], [1, 3], [2, 4]) == 0); + // find one of several needles + assert(canFind(arr, [1, 2], [2, 3])); + assert(canFind(arr, [1, 2], [2, 3]) == 1); + assert(canFind(arr, [1, 7], [2, 3])); + assert(canFind(arr, [1, 7], [2, 3]) == 2); + assert(!canFind(arr, [1, 3], [2, 4])); + assert(canFind(arr, [1, 3], [2, 4]) == 0); } /** @@ -2607,10 +2609,10 @@ template canFind(alias pred="a == b") "cardboard" ]; assert(!canFind(words, "bees")); - assert( canFind!((string a, string b) => a.startsWith(b))(words, "bees")); + assert( canFind!((string elem, string needle) => elem.startsWith(needle))(words, "bees")); } -/// Search for mutliple items in an array of items (search for needles in an array of hay stacks) +/// Search for multiple items in an array of items (search for needles in an array of haystacks) @safe unittest { string s1 = "aaa111aaa"; @@ -2618,7 +2620,7 @@ template canFind(alias pred="a == b") string s3 = "aaa333aaa"; string s4 = "aaa444aaa"; const hay = [s1, s2, s3, s4]; - assert(hay.canFind!(e => (e.canFind("111", "222")))); + assert(hay.canFind!(e => e.canFind("111", "222"))); } @safe unittest @@ -2736,7 +2738,7 @@ Returns: `seq` advanced to the first matching element, or until empty if there are no matching elements. -See_Also: $(LREF find), $(REF std,algorithm,comparison,among) +See_Also: $(LREF find), $(REF among, std,algorithm,comparison) */ InputRange findAmong(alias pred = "a == b", InputRange, ForwardRange)( InputRange seq, ForwardRange choices) From a2c2f79dfae38492e2269bcb4e34a6c916c22091 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 6 Nov 2023 13:00:15 +0000 Subject: [PATCH 113/327] Fix Issue 11111 - std.algorithm.canFind should support Needles... The requirement that each needle must be a range is arbitrary, so remove it. Note: This overload of `canFind` calls `find(haystack, needles)` which calls `startsWith`, which accepts mixed element and range needles. --- std/algorithm/searching.d | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 7a7e1613661..8254c8b1871 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -2376,9 +2376,9 @@ is considered to be 1.) The strategy used in searching several subranges at once maximizes cache usage by moving in `haystack` as few times as possible. */ -Tuple!(Range, size_t) find(alias pred = "a == b", Range, Ranges...) -(Range haystack, Ranges needles) -if (Ranges.length > 1 && is(typeof(startsWith!pred(haystack, needles)))) +Tuple!(Range, size_t) find(alias pred = "a == b", Range, Needles...) +(Range haystack, Needles needles) +if (Needles.length > 1 && is(typeof(startsWith!pred(haystack, needles)))) { for (;; haystack.popFront()) { @@ -2572,9 +2572,8 @@ template canFind(alias pred="a == b") without having to deal with the tuple that $(LREF find) returns for the same operation. +/ - size_t canFind(Range, Ranges...)(Range haystack, scope Ranges needles) - if (Ranges.length > 1 && - allSatisfy!(isForwardRange, Ranges) && + size_t canFind(Range, Needles...)(Range haystack, scope Needles needles) + if (Needles.length > 1 && is(typeof(find!pred(haystack, needles)))) { return find!pred(haystack, needles)[1]; @@ -2597,6 +2596,13 @@ template canFind(alias pred="a == b") assert(canFind(arr, [1, 3], [2, 4]) == 0); } +// More multiple needles +@safe unittest +{ + assert([1, 2, 3].canFind(3, 2) == 2); + assert([1, 2, 3].canFind([1, 3], 2) == 2); +} + /** * Example using a custom predicate. * Note that the needle appears as the second argument of the predicate. From edc5bbde7b27c12a5b6aff6763c4af59d4366f42 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 6 Nov 2023 17:27:53 +0000 Subject: [PATCH 114/327] Make new tests documented --- std/algorithm/searching.d | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 8254c8b1871..b07418a0579 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -2588,6 +2588,10 @@ template canFind(alias pred="a == b") assert(!canFind(arr, 4)); // find one of several needles + assert(arr.canFind(3, 2)); + assert(arr.canFind(3, 2) == 2); // second needle found + assert(arr.canFind([1, 3], 2) == 2); + assert(canFind(arr, [1, 2], [2, 3])); assert(canFind(arr, [1, 2], [2, 3]) == 1); assert(canFind(arr, [1, 7], [2, 3])); @@ -2596,13 +2600,6 @@ template canFind(alias pred="a == b") assert(canFind(arr, [1, 3], [2, 4]) == 0); } -// More multiple needles -@safe unittest -{ - assert([1, 2, 3].canFind(3, 2) == 2); - assert([1, 2, 3].canFind([1, 3], 2) == 2); -} - /** * Example using a custom predicate. * Note that the needle appears as the second argument of the predicate. From 0ced94ca1c5efa9fdc620364d03c94f3533c59c3 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 20 Nov 2023 14:19:03 +0000 Subject: [PATCH 115/327] [std.algorithm] Split `find` docs into 2 (#8844) It's much clearer to have separate docs for the overload not taking `needle`, because its `pred` has a different signature and its behaviour is simpler. It was necessary to move that overload (and its unittests) above the other two. Also improve the docs for the other overloads: Remove duplicate BIGOH sentence already present under *Complexity*. Use `e, n` for predicate parameter names, short for `element, needle`. --- std/algorithm/searching.d | 159 ++++++++++++++++++++------------------ 1 file changed, 84 insertions(+), 75 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index b07418a0579..68979057f54 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -1546,28 +1546,96 @@ if (isInputRange!Range && !isInfinite!Range && } // find +/** +Finds an element `e` of an $(REF_ALTTEXT input range, isInputRange, std,range,primitives) +where `pred(e)` is `true`. +$(P +$(PANEL +$(UL +$(LI `find` behaves similarly to `dropWhile` in other languages.) +$(LI To _find the *last* matching element in a +$(REF_ALTTEXT bidirectional, isBidirectionalRange, std,range,primitives) `haystack`, +call `find!pred(retro(haystack))`. See $(REF retro, std,range).) +))) + +Complexity: + `find` performs $(BIGOH walkLength(haystack)) evaluations of `pred`. + +Params: + + pred = The predicate to match an element. + haystack = The $(REF_ALTTEXT input range, isInputRange, std,range,primitives) + searched in. + +Returns: + `haystack` advanced such that the front element satisfies `pred`. + If no such element exists, returns an empty `haystack`. +*/ +InputRange find(alias pred, InputRange)(InputRange haystack) +if (isInputRange!InputRange) +{ + alias R = InputRange; + alias predFun = unaryFun!pred; + static if (isNarrowString!R) + { + import std.utf : decode; + + immutable len = haystack.length; + size_t i = 0, next = 0; + while (next < len) + { + if (predFun(decode(haystack, next))) + return haystack[i .. $]; + i = next; + } + return haystack[$ .. $]; + } + else + { + //standard range + for ( ; !haystack.empty; haystack.popFront() ) + { + if (predFun(haystack.front)) + break; + } + return haystack; + } +} + +/// +@safe unittest +{ + auto arr = [ 1, 2, 3, 4, 1 ]; + assert(find!("a > 2")(arr) == [ 3, 4, 1 ]); + + // with predicate alias + bool pred(int e) => e + 1 > 1.5; + assert(find!(pred)(arr) == arr); +} + +@safe pure unittest +{ + int[] r = [ 1, 2, 3 ]; + assert(find!(a=>a > 2)(r) == [3]); + bool pred(int x) { return x + 1 > 1.5; } + assert(find!(pred)(r) == r); + + assert(find!(a=>a > 'v')("hello world") == "world"); + assert(find!(a=>a%4 == 0)("日本語") == "本語"); +} + /** Finds an individual element in an $(REF_ALTTEXT input range, isInputRange, std,range,primitives). Elements of `haystack` are compared with `needle` by using predicate `pred` with `pred(haystack.front, needle)`. -`find` performs $(BIGOH walkLength(haystack)) evaluations of `pred`. - The predicate is passed to $(REF binaryFun, std, functional), and can either accept a string, or any callable that can be executed via `pred(element, element)`. -To _find the last occurrence of `needle` in a -$(REF_ALTTEXT bidirectional, isBidirectionalRange, std,range,primitives) `haystack`, -call `find(retro(haystack), needle)`. See $(REF retro, std,range). - -If no `needle` is provided, `pred(haystack.front)` will be evaluated on each -element of the input range. - -If `input` is a $(REF_ALTTEXT forward range, isForwardRange, std,range,primitives), +If `haystack` is a $(REF_ALTTEXT forward range, isForwardRange, std,range,primitives), `needle` can be a $(REF_ALTTEXT forward range, isForwardRange, std,range,primitives) too. In this case `startsWith!pred(haystack, needle)` is evaluated on each evaluation. -Note: - `find` behaves similar to `dropWhile` in other languages. +$(NOTE To find the first element $(I not) matching the needle, use predicate `"a != b"`.) Complexity: `find` performs $(BIGOH walkLength(haystack)) evaluations of `pred`. @@ -1579,21 +1647,16 @@ Complexity: Params: pred = The predicate for comparing each element with the needle, defaulting to equality `"a == b"`. - The negated predicate `"a != b"` can be used to search instead for the first - element $(I not) matching the needle. - haystack = The $(REF_ALTTEXT input range, isInputRange, std,range,primitives) searched in. - needle = The element searched for. Returns: - `haystack` advanced such that the front element is the one searched for; that is, until `binaryFun!pred(haystack.front, needle)` is `true`. If no such position exists, returns an empty `haystack`. -See_ALso: $(LREF findAdjacent), $(LREF findAmong), $(LREF findSkip), $(LREF findSplit), $(LREF startsWith) +See_Also: $(LREF findAdjacent), $(LREF findAmong), $(LREF findSkip), $(LREF findSplit), $(LREF startsWith) */ InputRange find(alias pred = "a == b", InputRange, Element)(InputRange haystack, scope Element needle) if (isInputRange!InputRange && @@ -1754,8 +1817,8 @@ if (isInputRange!InputRange && assert(arr.find(4) == [4, 4, 4, 4, 5, 6, 9]); assert(arr.find(1) == arr); assert(arr.find(9) == [9]); - assert(arr.find!((a, b) => a > b)(4) == [5, 6, 9]); - assert(arr.find!((a, b) => a < b)(4) == arr); + assert(arr.find!((e, n) => e > n)(4) == [5, 6, 9]); + assert(arr.find!((e, n) => e < n)(4) == arr); assert(arr.find(0).empty); assert(arr.find(10).empty); assert(arr.find(8).empty); @@ -1770,7 +1833,7 @@ if (isInputRange!InputRange && import std.uni : toLower; string[] s = ["Hello", "world", "!"]; - assert(s.find!((a, b) => toLower(a) == b)("hello") == s); + assert(s.find!((e, n) => toLower(e) == n)("hello") == s); } @safe unittest @@ -1862,60 +1925,6 @@ if (isInputRange!InputRange && assert([x].find(x).empty == false); } -/// ditto -InputRange find(alias pred, InputRange)(InputRange haystack) -if (isInputRange!InputRange) -{ - alias R = InputRange; - alias predFun = unaryFun!pred; - static if (isNarrowString!R) - { - import std.utf : decode; - - immutable len = haystack.length; - size_t i = 0, next = 0; - while (next < len) - { - if (predFun(decode(haystack, next))) - return haystack[i .. $]; - i = next; - } - return haystack[$ .. $]; - } - else - { - //standard range - for ( ; !haystack.empty; haystack.popFront() ) - { - if (predFun(haystack.front)) - break; - } - return haystack; - } -} - -/// -@safe unittest -{ - auto arr = [ 1, 2, 3, 4, 1 ]; - assert(find!("a > 2")(arr) == [ 3, 4, 1 ]); - - // with predicate alias - bool pred(int x) { return x + 1 > 1.5; } - assert(find!(pred)(arr) == arr); -} - -@safe pure unittest -{ - int[] r = [ 1, 2, 3 ]; - assert(find!(a=>a > 2)(r) == [3]); - bool pred(int x) { return x + 1 > 1.5; } - assert(find!(pred)(r) == r); - - assert(find!(a=>a > 'v')("hello world") == "world"); - assert(find!(a=>a%4 == 0)("日本語") == "本語"); -} - /// ditto R1 find(alias pred = "a == b", R1, R2)(R1 haystack, scope R2 needle) if (isForwardRange!R1 && isForwardRange!R2 From 17bafda797296e04f40f16a9660e5a9685392db4 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 20 Nov 2023 23:20:13 +0000 Subject: [PATCH 116/327] Fix assert on array literal (#8851) Needed for https://github.com/dlang/dmd/pull/15837. --- std/array.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/array.d b/std/array.d index a613a8d9e4a..494fa297b4b 100644 --- a/std/array.d +++ b/std/array.d @@ -1201,7 +1201,7 @@ private auto arrayAllocImpl(bool minimallyInitialized, T, I...)(I sizes) nothrow auto a2 = minimallyInitializedArray!(S2[][])(2, 2); assert(a2); enum b2 = minimallyInitializedArray!(S2[][])(2, 2); - assert(b2); + assert(b2 !is null); static struct S3 { //this() @disable; @@ -1210,7 +1210,7 @@ private auto arrayAllocImpl(bool minimallyInitialized, T, I...)(I sizes) nothrow auto a3 = minimallyInitializedArray!(S3[][])(2, 2); assert(a3); enum b3 = minimallyInitializedArray!(S3[][])(2, 2); - assert(b3); + assert(b3 !is null); } /++ From bef8a1c8e9f1db726dd70010df5749553c162ef7 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Wed, 22 Nov 2023 12:42:20 +0100 Subject: [PATCH 117/327] GHA: Adapt to recent dmd CI changes --- .github/workflows/main.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index de21335c301..820977b14d9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -31,11 +31,13 @@ jobs: timeout-minutes: 40 env: # for ci/run.sh: - OS_NAME: ${{ startsWith(matrix.os, 'ubuntu') && 'linux' || (startsWith(matrix.os, 'macos') && 'darwin' || '') }} + OS_NAME: ${{ startsWith(matrix.os, 'ubuntu') && 'linux' || (startsWith(matrix.os, 'macos') && 'osx' || '') }} MODEL: ${{ matrix.model || '64' }} HOST_DMD: dmd N: ${{ startsWith(matrix.os, 'macos') && '3' || '2' }} FULL_BUILD: false + # work around https://issues.dlang.org/show_bug.cgi?id=23517 + MACOSX_DEPLOYMENT_TARGET: '11' steps: - uses: actions/checkout@v4 with: @@ -89,7 +91,7 @@ jobs: with: fetch-depth: 50 - name: Run in VM - uses: cross-platform-actions/action@v0.21.0 + uses: cross-platform-actions/action@v0.21.1 with: operating_system: freebsd hypervisor: qemu From 39712a19bfc9273c62109b7b8ff29ac2761c95fb Mon Sep 17 00:00:00 2001 From: Feldwor Date: Sat, 25 Nov 2023 14:54:54 +0000 Subject: [PATCH 118/327] Update conv.d: textImpl(): make static if more readable. (#8854) * Update conv.d: textImpl(): make static if more readable. Adds newlines at the end of statements in the source code. --- std/conv.d | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/std/conv.d b/std/conv.d index 4248e4b9d44..3a533814894 100644 --- a/std/conv.d +++ b/std/conv.d @@ -4848,8 +4848,9 @@ private S textImpl(S, U...)(U args) static foreach (arg; args) { static if ( - isSomeChar!(typeof(arg)) || isSomeString!(typeof(arg)) || - ( isInputRange!(typeof(arg)) && isSomeChar!(ElementType!(typeof(arg))) ) + isSomeChar!(typeof(arg)) + || isSomeString!(typeof(arg)) + || ( isInputRange!(typeof(arg)) && isSomeChar!(ElementType!(typeof(arg))) ) ) app.put(arg); else static if ( From 6b5f730b8408b2ba4c4f4ff4f3aa90a7f0ae647f Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 27 Nov 2023 17:19:31 +0000 Subject: [PATCH 119/327] [std/algorithm/searching] Improve findSplit docs Improve formatting for returned tuple. Fix type of `result[1]` for After/Before. Fix `pred` description. Show example using custom `pred`. --- std/algorithm/searching.d | 56 ++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 37a08de7a8f..ae738814905 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -2885,38 +2885,52 @@ if (isForwardRange!R1 && ifTestable!(typeof(haystack.front), unaryFun!pred)) These functions find the first occurrence of `needle` in `haystack` and then split `haystack` as follows. -`findSplit` returns a tuple `result` containing $(I three) ranges. `result[0]` -is the portion of `haystack` before `needle`, `result[1]` is the portion of -`haystack` that matches `needle`, and `result[2]` is the portion of `haystack` -after the match. If `needle` was not found, `result[0]` comprehends `haystack` +$(PANEL +`findSplit` returns a tuple `result` containing $(I three) ranges. +$(UL +$(LI `result[0]` is the portion of `haystack` before `needle`) +$(LI `result[1]` is the portion of +`haystack` that matches `needle`) +$(LI `result[2]` is the portion of `haystack` +after the match.) +) +If `needle` was not found, `result[0]` comprehends `haystack` entirely and `result[1]` and `result[2]` are empty. -`findSplitBefore` returns a tuple `result` containing two ranges. `result[0]` is -the portion of `haystack` before `needle`, and `result[1]` is the balance of -`haystack` starting with the match. If `needle` was not found, `result[0]` +`findSplitBefore` returns a tuple `result` containing two ranges. +$(UL +$(LI `result[0]` is the portion of `haystack` before `needle`) +$(LI `result[1]` is the balance of `haystack` starting with the match.) +) +If `needle` was not found, `result[0]` comprehends `haystack` entirely and `result[1]` is empty. `findSplitAfter` returns a tuple `result` containing two ranges. -`result[0]` is the portion of `haystack` up to and including the -match, and `result[1]` is the balance of `haystack` starting -after the match. If `needle` was not found, `result[0]` is empty +$(UL +$(LI `result[0]` is the portion of `haystack` up to and including the +match) +$(LI `result[1]` is the balance of `haystack` starting +after the match.) +) +If `needle` was not found, `result[0]` is empty and `result[1]` is `haystack`. - +) +$(P In all cases, the concatenation of the returned ranges spans the entire `haystack`. If `haystack` is a random-access range, all three components of the tuple have the same type as `haystack`. Otherwise, `haystack` must be a $(REF_ALTTEXT forward range, isForwardRange, std,range,primitives) and -the type of `result[0]` and `result[1]` is the same as $(REF takeExactly, +the type of `result[0]` (and `result[1]` for `findSplit`) is the same as $(REF takeExactly, std,range). For more information about `pred` see $(LREF find). - +) Params: - pred = Predicate to use for comparing needle against haystack. - haystack = The range to search. - needle = What to look for. + pred = Predicate to compare elements. + haystack = The forward range to search. + needle = The forward range to look for. Returns: @@ -3171,12 +3185,12 @@ if (isForwardRange!R1 && isForwardRange!R2) } else assert(0); - // works with const aswell - if (const split = "dlang-rocks".findSplit("-")) + // findSplitBefore returns 2 ranges + if (const split = [2, 3, 2, 3, 4, 1].findSplitBefore!"a > b"([2, 2])) { - assert(split[0] == "dlang"); - assert(split[1] == "-"); - assert(split[2] == "rocks"); + assert(split[0] == [2, 3, 2]); + // [3, 4] each greater than [2, 2] + assert(split[1] == [3, 4, 1]); } else assert(0); } From 0819fec8142ab54ca5d821c8c77654b27725cfe8 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Tue, 28 Nov 2023 17:22:40 +0000 Subject: [PATCH 120/327] [std.algorithm.searching] Refactor findSplit result types --- std/algorithm/searching.d | 153 +++++++++++--------------------------- 1 file changed, 43 insertions(+), 110 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 37a08de7a8f..7766856d3eb 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -2881,6 +2881,29 @@ if (isForwardRange!R1 && ifTestable!(typeof(haystack.front), unaryFun!pred)) assert(findSkip!isWhite(s) == 2); } +private struct FindSplitResult(ubyte emptyRangeIndex, Types...) +{ + this(Types vals) + { + asTuple = typeof(asTuple)(vals); + } + void opAssign(typeof(asTuple) rhs) + { + asTuple = rhs; + } + Tuple!Types asTuple; + alias asTuple this; + + static if (hasConstEmptyMember!(typeof(asTuple[emptyRangeIndex]))) + { + bool opCast(T : bool)() const => !asTuple[emptyRangeIndex].empty; + } + else + { + bool opCast(T : bool)() => !asTuple[emptyRangeIndex].empty; + } +} + /** These functions find the first occurrence of `needle` in `haystack` and then split `haystack` as follows. @@ -2930,45 +2953,15 @@ See_Also: $(LREF find) auto findSplit(alias pred = "a == b", R1, R2)(R1 haystack, R2 needle) if (isForwardRange!R1 && isForwardRange!R2) { - static struct Result(S1, S2) if (isForwardRange!S1 && - isForwardRange!S2) - { - this(S1 pre, S1 separator, S2 post) - { - asTuple = typeof(asTuple)(pre, separator, post); - } - void opAssign(typeof(asTuple) rhs) - { - asTuple = rhs; - } - Tuple!(S1, S1, S2) asTuple; - static if (hasConstEmptyMember!(typeof(asTuple[1]))) - { - bool opCast(T : bool)() const - { - return !asTuple[1].empty; - } - } - else - { - bool opCast(T : bool)() - { - return !asTuple[1].empty; - } - } - alias asTuple this; - } - static if (isSomeString!R1 && isSomeString!R2 || (isRandomAccessRange!R1 && hasSlicing!R1 && hasLength!R1 && hasLength!R2)) { auto balance = find!pred(haystack, needle); immutable pos1 = haystack.length - balance.length; immutable pos2 = balance.empty ? pos1 : pos1 + needle.length; - return Result!(typeof(haystack[0 .. pos1]), - typeof(haystack[pos2 .. haystack.length]))(haystack[0 .. pos1], - haystack[pos1 .. pos2], - haystack[pos2 .. haystack.length]); + alias Slice = typeof(haystack[0 .. pos1]); + return FindSplitResult!(1, Slice, Slice, Slice)( + haystack[0 .. pos1], haystack[pos1 .. pos2], haystack[pos2 .. haystack.length]); } else { @@ -2997,10 +2990,11 @@ if (isForwardRange!R1 && isForwardRange!R2) { pos1 = pos2; } - return Result!(typeof(takeExactly(original, pos1)), - typeof(h))(takeExactly(original, pos1), - takeExactly(haystack, pos2 - pos1), - h); + return FindSplitResult!(1, + typeof(takeExactly(original, pos1)), + typeof(takeExactly(original, pos1)), typeof(h))( + takeExactly(original, pos1), + takeExactly(haystack, pos2 - pos1), h); } } @@ -3008,43 +3002,14 @@ if (isForwardRange!R1 && isForwardRange!R2) auto findSplitBefore(alias pred = "a == b", R1, R2)(R1 haystack, R2 needle) if (isForwardRange!R1 && isForwardRange!R2) { - static struct Result(S1, S2) if (isForwardRange!S1 && - isForwardRange!S2) - { - this(S1 pre, S2 post) - { - asTuple = typeof(asTuple)(pre, post); - } - void opAssign(typeof(asTuple) rhs) - { - asTuple = rhs; - } - Tuple!(S1, S2) asTuple; - static if (hasConstEmptyMember!(typeof(asTuple[1]))) - { - bool opCast(T : bool)() const - { - return !asTuple[1].empty; - } - } - else - { - bool opCast(T : bool)() - { - return !asTuple[1].empty; - } - } - alias asTuple this; - } - static if (isSomeString!R1 && isSomeString!R2 || (isRandomAccessRange!R1 && hasLength!R1 && hasSlicing!R1 && hasLength!R2)) { auto balance = find!pred(haystack, needle); immutable pos = haystack.length - balance.length; - return Result!(typeof(haystack[0 .. pos]), - typeof(haystack[pos .. haystack.length]))(haystack[0 .. pos], - haystack[pos .. haystack.length]); + return FindSplitResult!(1, + typeof(haystack[0 .. pos]), typeof(haystack[0 .. pos]))( + haystack[0 .. pos], haystack[pos .. haystack.length]); } else { @@ -3074,9 +3039,9 @@ if (isForwardRange!R1 && isForwardRange!R2) pos1 = pos2; haystack = h; } - return Result!(typeof(takeExactly(original, pos1)), - typeof(haystack))(takeExactly(original, pos1), - haystack); + return FindSplitResult!(1, + typeof(takeExactly(original, pos1)), typeof(haystack))( + takeExactly(original, pos1), haystack); } } @@ -3084,47 +3049,19 @@ if (isForwardRange!R1 && isForwardRange!R2) auto findSplitAfter(alias pred = "a == b", R1, R2)(R1 haystack, R2 needle) if (isForwardRange!R1 && isForwardRange!R2) { - static struct Result(S1, S2) if (isForwardRange!S1 && - isForwardRange!S2) - { - this(S1 pre, S2 post) - { - asTuple = typeof(asTuple)(pre, post); - } - void opAssign(typeof(asTuple) rhs) - { - asTuple = rhs; - } - Tuple!(S1, S2) asTuple; - static if (hasConstEmptyMember!(typeof(asTuple[1]))) - { - bool opCast(T : bool)() const - { - return !asTuple[0].empty; - } - } - else - { - bool opCast(T : bool)() - { - return !asTuple[0].empty; - } - } - alias asTuple this; - } - static if (isSomeString!R1 && isSomeString!R2 || isRandomAccessRange!R1 && hasLength!R1 && hasSlicing!R1 && hasLength!R2) { auto balance = find!pred(haystack, needle); immutable pos = balance.empty ? 0 : haystack.length - balance.length + needle.length; - return Result!(typeof(haystack[0 .. pos]), - typeof(haystack[pos .. haystack.length]))(haystack[0 .. pos], - haystack[pos .. haystack.length]); + return FindSplitResult!(0, + typeof(haystack[0 .. pos]), typeof(haystack[0 .. pos]))( + haystack[0 .. pos], haystack[pos .. haystack.length]); } else { import std.range : takeExactly; + alias Res = FindSplitResult!(0, typeof(takeExactly(haystack, 0)), typeof(haystack)); auto original = haystack.save; auto h = haystack.save; auto n = needle.save; @@ -3134,9 +3071,7 @@ if (isForwardRange!R1 && isForwardRange!R2) if (h.empty) { // Failed search - return Result!(typeof(takeExactly(original, 0)), - typeof(original))(takeExactly(original, 0), - original); + return Res(takeExactly(original, 0), original); } if (binaryFun!pred(h.front, n.front)) { @@ -3152,9 +3087,7 @@ if (isForwardRange!R1 && isForwardRange!R2) pos2 = ++pos1; } } - return Result!(typeof(takeExactly(original, pos2)), - typeof(h))(takeExactly(original, pos2), - h); + return Res(takeExactly(original, pos2), h); } } From 52ae4d36a934d54b6695c07c54a40c2b8ef4536e Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Tue, 28 Nov 2023 17:38:29 +0000 Subject: [PATCH 121/327] 3 minor tweaks --- std/algorithm/searching.d | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index ae738814905..cd3a0effcc8 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -2922,22 +2922,21 @@ entire `haystack`. If `haystack` is a random-access range, all three components of the tuple have the same type as `haystack`. Otherwise, `haystack` must be a $(REF_ALTTEXT forward range, isForwardRange, std,range,primitives) and -the type of `result[0]` (and `result[1]` for `findSplit`) is the same as $(REF takeExactly, -std,range). +the type of `result[0]` (and `result[1]` for `findSplit`) is the same as +the result of $(REF takeExactly, std,range). For more information about `pred` see $(LREF find). ) Params: - pred = Predicate to compare elements. + pred = Predicate to compare 2 elements. haystack = The forward range to search. needle = The forward range to look for. Returns: -A sub-type of `Tuple!()` of the split portions of `haystack` (see above for -details). This sub-type of `Tuple!()` has `opCast` defined for `bool`. This -`opCast` returns `true` when the separating `needle` was found -and `false` otherwise. +A sub-type of $(REF Tuple, std, typecons) of the split portions of `haystack` (see above for +details). This sub-type of `Tuple` defines `opCast!bool`, which +returns `true` when the separating `needle` was found and `false` otherwise. See_Also: $(LREF find) */ From 01957e9edb5c891c4ff780e7ea92c237de619bca Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Sat, 25 Nov 2023 09:09:01 -0500 Subject: [PATCH 122/327] Fix 24267 - make it so grapheme can be used as an aa key --- std/uni/package.d | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/std/uni/package.d b/std/uni/package.d index 9903d6c28c3..fec7e5f78ac 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -7706,6 +7706,12 @@ public: return this.tupleof == other.tupleof; } + // Define a default toHash to allow AA usage + size_t toHash() const @trusted + { + return hashOf(slen_, hashOf(small_)); + } + /++ True if this object contains valid extended grapheme cluster. Decoding primitives of this module always return a valid `Grapheme`. @@ -7907,6 +7913,12 @@ static assert(Grapheme.sizeof == size_t.sizeof*4); assert(equal(h[], iota(cast(int)'A', cast(int)'Z'+1))); } +// ensure Grapheme can be used as an AA key. +@safe unittest +{ + int[Grapheme] aa; +} + /++ $(P Does basic case-insensitive comparison of `r1` and `r2`. This function uses simpler comparison rule thus achieving better performance From 1c52bd6096c73fd2ff4170cb1ef1a472e6bb2aa3 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sat, 2 Dec 2023 13:56:38 +0000 Subject: [PATCH 123/327] purge changelog --- changelog/PR8804.dd | 3 --- changelog/is_input_range_element.dd | 7 ------- changelog/unshared.dd | 13 ------------- 3 files changed, 23 deletions(-) delete mode 100644 changelog/PR8804.dd delete mode 100644 changelog/is_input_range_element.dd delete mode 100644 changelog/unshared.dd diff --git a/changelog/PR8804.dd b/changelog/PR8804.dd deleted file mode 100644 index 044c428c356..00000000000 --- a/changelog/PR8804.dd +++ /dev/null @@ -1,3 +0,0 @@ -Undo etc.c.odbc deprecation and enable usage on non-Windows systems - -Previously, the etc.c.odbc bindings were deprecated and forwarded the core.sys.windows versions of the bindings via public import. However, ODBC is supported on all major platforms and the machine translated MinGW bindings in core.sys.windows have version(Windows) specified which results in being unable to use those bindings on non-Windows platforms. The bindings have been returned to etc.c.odbc, undeprecated, and support for non-Windows platforms enabled. diff --git a/changelog/is_input_range_element.dd b/changelog/is_input_range_element.dd deleted file mode 100644 index 270bc8c485f..00000000000 --- a/changelog/is_input_range_element.dd +++ /dev/null @@ -1,7 +0,0 @@ -isInputRange now takes an optional element type. - -isInputRange now has an optional 2nd template parameter that defaults -to void. If not void, it only evaluates to true if the range's element -type is the same type as this extra argument, modulo const. For -instance, `isInputRange!(int[], const(int))` is true, but -`isInputRange!(int[], string)` is false. \ No newline at end of file diff --git a/changelog/unshared.dd b/changelog/unshared.dd deleted file mode 100644 index 66b096ec3be..00000000000 --- a/changelog/unshared.dd +++ /dev/null @@ -1,13 +0,0 @@ -Add Unshared to std.traits. - -`Unshared` is the `shared` equivalent of `Unconst`. It strips off the outer -layer of `shared` from a type. e.g. - -``` - static assert(Unshared!(shared int) == int); - static assert(Unshared!(shared(int[])) == shared(int)[]); -``` - -So, `Unconst` strips off the outer layer of `const`, `immutable`, and `inout`; -`Unshared` strips off the outer layer of `shared`; and `Unqual` strips off all -qualifiers from the outer layer of a type. From 04c6590ab865a64ad9abc802bf7f32c65831ec43 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Sun, 3 Dec 2023 08:36:50 +1300 Subject: [PATCH 124/327] Add errnoMsg property to ErrnoException This is used, for example, when you'd want to get a raw error message from the errno number given by the underlying system call/C function, instead of using the msg property, which includes extra (often irrelevant) error information given by the called Phobos function. Previously you would have to use something like this: strerror(e.errno).fromStringz() Example: > catch (ErrnoException e) writeln(e.msg); Cannot open file `filename' in mode `r' (No such file or directory) > catch (ErrnoException e) writeln(e.errnoMsg); No such file or directory --- std/exception.d | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/std/exception.d b/std/exception.d index 5c786859c8e..58a667c1d85 100644 --- a/std/exception.d +++ b/std/exception.d @@ -1632,6 +1632,9 @@ class ErrnoException : Exception /// Operating system error code. final @property uint errno() nothrow pure scope @nogc @safe { return _errno; } private uint _errno; + /// Localized error message generated through $(REF strerror_r, core,stdc,string) or $(REF strerror, core,stdc,string). + final @property string errnoMsg() nothrow pure scope @nogc @safe { return _errnoMsg; } + private string _errnoMsg; /// Constructor which takes an error message. The current global $(REF errno, core,stdc,errno) value is used as error code. this(string msg, string file = null, size_t line = 0) @safe { @@ -1642,7 +1645,8 @@ class ErrnoException : Exception this(string msg, int errno, string file = null, size_t line = 0) @safe { _errno = errno; - super(msg ~ " (" ~ errnoString(errno) ~ ")", file, line); + _errnoMsg = errnoString(errno); + super(msg ~ " (" ~ errnoMsg ~ ")", file, line); } } From 9073c1d4543a400aa639bdab36a8357500f6f285 Mon Sep 17 00:00:00 2001 From: HuskyNator Date: Sun, 10 Dec 2023 16:00:29 +0100 Subject: [PATCH 125/327] Change return type of abs to conform with documentation Integral types should simply return their own type. --- std/math/algebraic.d | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/std/math/algebraic.d b/std/math/algebraic.d index 4791766ab3a..469839e5cdd 100644 --- a/std/math/algebraic.d +++ b/std/math/algebraic.d @@ -43,24 +43,23 @@ import std.traits : CommonType, isFloatingPoint, isIntegral, isSigned, Unqual; * the return type will be the same as the input. * * Limitations: - * Does not work correctly for signed intergal types and value `Num`.min. + * Does not work correctly for value `Num`.min. */ auto abs(Num)(Num x) @nogc pure nothrow -if ((is(immutable Num == immutable short) || is(immutable Num == immutable byte)) || - (is(typeof(Num.init >= 0)) && is(typeof(-Num.init)))) +if (isIntegral!Num || (is(typeof(Num.init >= 0)) && is(typeof(-Num.init)))) { static if (isFloatingPoint!(Num)) return fabs(x); else { - static if (is(immutable Num == immutable short) || is(immutable Num == immutable byte)) - return x >= 0 ? x : cast(Num) -int(x); + static if (isIntegral!Num) + return x >= 0 ? x : cast(Num) -x; else return x >= 0 ? x : -x; } } -/// ditto +/// @safe pure nothrow @nogc unittest { import std.math.traits : isIdentical, isNaN; @@ -70,16 +69,21 @@ if ((is(immutable Num == immutable short) || is(immutable Num == immutable byte) assert(abs(-real.infinity) == real.infinity); assert(abs(-56) == 56); assert(abs(2321312L) == 2321312L); + assert(abs(23u) == 23u); } @safe pure nothrow @nogc unittest { - short s = -8; - byte b = -8; - assert(abs(s) == 8); - assert(abs(b) == 8); - immutable(byte) c = -8; - assert(abs(c) == 8); + asser(abs(byte(-8)) == 8 && is(typeof(abs(byte(-8))) == byte)); + asser(abs(ubyte(-8)) == 8 && is(typeof(abs(ubyte(-8))) == ubyte)); + asser(abs(short(-8)) == 8 && is(typeof(abs(short(-8))) == short)); + asser(abs(ushort(-8)) == 8 && is(typeof(abs(ushort(-8))) == ushort)); + asser(abs(int(-8)) == 8 && is(typeof(abs(int(-8))) == int)); + asser(abs(uint(-8)) == 8 && is(typeof(abs(uint(-8))) == uint)); + asser(abs(long(-8)) == 8 && is(typeof(abs(long(-8))) == long)); + asser(abs(ulong(-8)) == 8 && is(typeof(abs(ulong(-8))) == ulong)); + asser(abs(cent(-8)) == 8 && is(typeof(abs(cent(-8))) == cent)); + asser(abs(ucent(-8)) == 8 && is(typeof(abs(ucent(-8))) == ucent)); } @safe pure nothrow @nogc unittest From 473bb759d2f72d57b38258646aa525f87580fea5 Mon Sep 17 00:00:00 2001 From: HuskyNator Date: Sun, 10 Dec 2023 16:08:38 +0100 Subject: [PATCH 126/327] Fix tests --- std/math/algebraic.d | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/std/math/algebraic.d b/std/math/algebraic.d index 469839e5cdd..f3a26e9995f 100644 --- a/std/math/algebraic.d +++ b/std/math/algebraic.d @@ -74,16 +74,14 @@ if (isIntegral!Num || (is(typeof(Num.init >= 0)) && is(typeof(-Num.init)))) @safe pure nothrow @nogc unittest { - asser(abs(byte(-8)) == 8 && is(typeof(abs(byte(-8))) == byte)); - asser(abs(ubyte(-8)) == 8 && is(typeof(abs(ubyte(-8))) == ubyte)); - asser(abs(short(-8)) == 8 && is(typeof(abs(short(-8))) == short)); - asser(abs(ushort(-8)) == 8 && is(typeof(abs(ushort(-8))) == ushort)); - asser(abs(int(-8)) == 8 && is(typeof(abs(int(-8))) == int)); - asser(abs(uint(-8)) == 8 && is(typeof(abs(uint(-8))) == uint)); - asser(abs(long(-8)) == 8 && is(typeof(abs(long(-8))) == long)); - asser(abs(ulong(-8)) == 8 && is(typeof(abs(ulong(-8))) == ulong)); - asser(abs(cent(-8)) == 8 && is(typeof(abs(cent(-8))) == cent)); - asser(abs(ucent(-8)) == 8 && is(typeof(abs(ucent(-8))) == ucent)); + assert(abs(byte(-8)) == 8 && is(typeof(abs(byte(-8))) == byte)); + assert(abs(ubyte(8u)) == 8 && is(typeof(abs(ubyte(8u))) == ubyte)); + assert(abs(short(-8)) == 8 && is(typeof(abs(short(-8))) == short)); + assert(abs(ushort(8u)) == 8 && is(typeof(abs(ushort(8u))) == ushort)); + assert(abs(int(-8)) == 8 && is(typeof(abs(int(-8))) == int)); + assert(abs(uint(8u)) == 8 && is(typeof(abs(uint(8u))) == uint)); + assert(abs(long(-8)) == 8 && is(typeof(abs(long(-8))) == long)); + assert(abs(ulong(8u)) == 8 && is(typeof(abs(ulong(8u))) == ulong)); } @safe pure nothrow @nogc unittest From 00a2b65db969b9283d147b7c363d271bfeb4c284 Mon Sep 17 00:00:00 2001 From: HuskyNator Date: Tue, 12 Dec 2023 16:04:58 +0100 Subject: [PATCH 127/327] Separate assert statements --- std/math/algebraic.d | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/std/math/algebraic.d b/std/math/algebraic.d index f3a26e9995f..7ebf8eec406 100644 --- a/std/math/algebraic.d +++ b/std/math/algebraic.d @@ -74,14 +74,22 @@ if (isIntegral!Num || (is(typeof(Num.init >= 0)) && is(typeof(-Num.init)))) @safe pure nothrow @nogc unittest { - assert(abs(byte(-8)) == 8 && is(typeof(abs(byte(-8))) == byte)); - assert(abs(ubyte(8u)) == 8 && is(typeof(abs(ubyte(8u))) == ubyte)); - assert(abs(short(-8)) == 8 && is(typeof(abs(short(-8))) == short)); - assert(abs(ushort(8u)) == 8 && is(typeof(abs(ushort(8u))) == ushort)); - assert(abs(int(-8)) == 8 && is(typeof(abs(int(-8))) == int)); - assert(abs(uint(8u)) == 8 && is(typeof(abs(uint(8u))) == uint)); - assert(abs(long(-8)) == 8 && is(typeof(abs(long(-8))) == long)); - assert(abs(ulong(8u)) == 8 && is(typeof(abs(ulong(8u))) == ulong)); + assert(abs(byte(-8)) == 8); + assert(abs(ubyte(8u)) == 8); + assert(abs(short(-8)) == 8); + assert(abs(ushort(8u)) == 8); + assert(abs(int(-8)) == 8); + assert(abs(uint(8u)) == 8); + assert(abs(long(-8)) == 8); + assert(abs(ulong(8u)) == 8); + assert(is(typeof(abs(byte(-8))) == byte)); + assert(is(typeof(abs(ubyte(8u))) == ubyte)); + assert(is(typeof(abs(short(-8))) == short)); + assert(is(typeof(abs(ushort(8u))) == ushort)); + assert(is(typeof(abs(int(-8))) == int)); + assert(is(typeof(abs(uint(8u))) == uint)); + assert(is(typeof(abs(long(-8))) == long)); + assert(is(typeof(abs(ulong(8u))) == ulong)); } @safe pure nothrow @nogc unittest From e425dc69d1311d7dea091ee9b76d05651de8d8e4 Mon Sep 17 00:00:00 2001 From: HuskyNator Date: Fri, 15 Dec 2023 01:32:48 +0100 Subject: [PATCH 128/327] Document problematic behaviour --- std/math/algebraic.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/std/math/algebraic.d b/std/math/algebraic.d index 7ebf8eec406..c666269b0f0 100644 --- a/std/math/algebraic.d +++ b/std/math/algebraic.d @@ -43,7 +43,8 @@ import std.traits : CommonType, isFloatingPoint, isIntegral, isSigned, Unqual; * the return type will be the same as the input. * * Limitations: - * Does not work correctly for value `Num`.min. + * When x is a signed integral equal to `Num`.min the value of x will be returned instead. + * Note for 2's complement; -`Num`.min (= `Num`.max + 1) is not representable due to overflow. */ auto abs(Num)(Num x) @nogc pure nothrow if (isIntegral!Num || (is(typeof(Num.init >= 0)) && is(typeof(-Num.init)))) From e5e6f6088d3967e548cbb59a5b72f1db3b61b4bc Mon Sep 17 00:00:00 2001 From: HuskyNator Date: Fri, 15 Dec 2023 01:48:21 +0100 Subject: [PATCH 129/327] Fix misplaced doc backticks and reorder attributes Reorder attributes as per style guidelines: > Attributes should be listed in alphabetical ordering Fix issue 24278 --- std/math/algebraic.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/math/algebraic.d b/std/math/algebraic.d index c666269b0f0..99990716460 100644 --- a/std/math/algebraic.d +++ b/std/math/algebraic.d @@ -43,10 +43,10 @@ import std.traits : CommonType, isFloatingPoint, isIntegral, isSigned, Unqual; * the return type will be the same as the input. * * Limitations: - * When x is a signed integral equal to `Num`.min the value of x will be returned instead. - * Note for 2's complement; -`Num`.min (= `Num`.max + 1) is not representable due to overflow. + * When x is a signed integral equal to `Num.min` the value of x will be returned instead. + * Note for 2's complement; `-Num.min` (= `Num.max + 1`) is not representable due to overflow. */ -auto abs(Num)(Num x) @nogc pure nothrow +auto abs(Num)(Num x) @nogc nothrow pure if (isIntegral!Num || (is(typeof(Num.init >= 0)) && is(typeof(-Num.init)))) { static if (isFloatingPoint!(Num)) From 843afa8f64ae8b84dee52d2f01792a0e69425a88 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Wed, 13 Dec 2023 21:55:29 +0100 Subject: [PATCH 130/327] Merge Makefiles --- .circleci/run.sh | 14 +- .gitignore | 1 - posix.mak => Makefile | 84 ++++--- azure-pipelines.yml | 8 +- etc/c/zlib/linux.mak | 95 ------- etc/c/zlib/osx.mak | 99 -------- etc/c/zlib/win32.mak | 97 ------- etc/c/zlib/win64.mak | 104 -------- win32.mak | 574 ------------------------------------------ win64.mak | 516 ------------------------------------- 10 files changed, 56 insertions(+), 1536 deletions(-) rename posix.mak => Makefile (92%) delete mode 100644 etc/c/zlib/linux.mak delete mode 100644 etc/c/zlib/osx.mak delete mode 100644 etc/c/zlib/win32.mak delete mode 100644 etc/c/zlib/win64.mak delete mode 100644 win32.mak delete mode 100644 win64.mak diff --git a/.circleci/run.sh b/.circleci/run.sh index 873de6f1903..b0e6946e640 100755 --- a/.circleci/run.sh +++ b/.circleci/run.sh @@ -96,17 +96,17 @@ setup_repos() # run unittest with coverage coverage() { - make -f posix.mak clean + make clean # remove all existing coverage files (just in case) find . -name "*.lst" -type f -delete # Coverage information of the test runner can be missing for some template instatiations. # https://issues.dlang.org/show_bug.cgi?id=16397 - # ENABLE_COVERAGE="1" make -j"$N" -f posix.mak MODEL=$MODEL unittest-debug + # ENABLE_COVERAGE="1" make -j"$N" MODEL=$MODEL unittest-debug # So instead we run all tests individually (hoping that that doesn't break any tests). # -cov is enabled by the %.test target itself - make -j"$N" -f posix.mak BUILD=$BUILD $(find std etc -name "*.d" | sed "s/[.]d$/.test/") + make -j"$N" BUILD=$BUILD $(find std etc -name "*.d" | sed "s/[.]d$/.test/") # Remove coverage information from lines with non-deterministic coverage. # These lines are annotated with a comment containing "nocoverage". @@ -124,12 +124,12 @@ publictests() { source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)" - make -f posix.mak -j"$N" publictests DUB="$DUB" BUILD=$BUILD - make -f posix.mak -j"$N" publictests DUB="$DUB" BUILD=$BUILD NO_BOUNDSCHECKS=1 + make -j"$N" publictests DUB="$DUB" BUILD=$BUILD + make -j"$N" publictests DUB="$DUB" BUILD=$BUILD NO_BOUNDSCHECKS=1 # run -betterC tests - make -f posix.mak test_extractor # build in single-threaded mode - make -f posix.mak -j"$N" betterc + make test_extractor # build in single-threaded mode + make -j"$N" betterc } # test stdx dub package diff --git a/.gitignore b/.gitignore index efcbaa7d841..81d7f2bb1ff 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ generated GNUmakefile .DS_Store .*.sw* -Makefile *.lst temp/ diff --git a/posix.mak b/Makefile similarity index 92% rename from posix.mak rename to Makefile index f246c0c9e60..2d6fdaadb10 100644 --- a/posix.mak +++ b/Makefile @@ -1,4 +1,9 @@ -# Makefile to build linux D runtime library libphobos2.a and its unit test +# This makefile is designed to be run by gnu make. +# - Windows: you may download a prebuilt zipped .exe from https://github.com/dlang/dmd/releases/download/nightly/gnumake-4.4-win64.zip. +# You also need a Git for Windows installation, for bash and common GNU tools like cp,mkdir,mv,rm,touch,which. +# - FreeBSD: the default make program on FreeBSD is not gnu make; to install gnu make: +# pkg install gmake +# and then run as gmake rather than make. # # make => makes release build of the library # @@ -25,7 +30,7 @@ ################################################################################ # Configurable stuff, usually from the command line # -# OS can be linux, win32, win32wine, osx, freebsd, netbsd or dragonflybsd. +# OS can be linux, windows, win32wine, osx, freebsd, netbsd or dragonflybsd. # The system will be determined by using uname QUIET:=@ @@ -36,6 +41,14 @@ DMD_DIR=../dmd include $(DMD_DIR)/compiler/src/osmodel.mak +ifeq (windows,$(OS)) + DOTEXE:=.exe + DOTOBJ:=.obj +else + DOTEXE:= + DOTOBJ:=.o +endif + ifeq (osx,$(OS)) export MACOSX_DEPLOYMENT_TARGET=10.9 endif @@ -57,7 +70,7 @@ endif # default to PIC, use PIC=1/0 to en-/disable PIC. # Note that shared libraries and C files are always compiled with PIC. ifeq ($(PIC),) - PIC:=1 + PIC:=$(if $(findstring win,$(OS)),,1) endif ifeq ($(PIC),1) override PIC:=-fPIC @@ -67,7 +80,7 @@ endif # Configurable stuff that's rarely edited INSTALL_DIR = ../install -DRUNTIME_PATH = ../dmd/druntime +DRUNTIME_PATH = $(DMD_DIR)/druntime DLANG_ORG_DIR = ../dlang.org ZIPFILE = phobos.zip ROOT_OF_THEM_ALL = generated @@ -85,7 +98,7 @@ ifeq (,$(findstring win,$(OS))) DRUNTIME = $(DRUNTIME_PATH)/../generated/$(OS)/$(BUILD)/$(MODEL)/libdruntime.a DRUNTIMESO = $(basename $(DRUNTIME)).so.a else - DRUNTIME = $(DRUNTIME_PATH)/../lib/druntime.lib + DRUNTIME = $(DRUNTIME_PATH)/../generated/$(OS)/$(BUILD)/$(MODEL)/druntime.lib endif # Set CC and DMD @@ -94,9 +107,11 @@ ifeq ($(OS),win32wine) DMD = wine dmd.exe RUN = wine else - DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd - ifeq ($(OS),win32) + DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd$(DOTEXE) + ifeq ($(MODEL),32omf) CC = dmc + else ifeq ($(OS),windows) + CC = cl.exe else CC = cc endif @@ -118,7 +133,7 @@ ifeq (,$(findstring win,$(OS))) CFLAGS += -O3 endif else - ifeq ($(OS),win32) + ifeq ($(MODEL),32omf) CFLAGS=-DNO_snprintf ifeq ($(BUILD),debug) CFLAGS += -g @@ -127,11 +142,11 @@ else endif else # win64/win32coff OUTFILEFLAG = /Fo - NODEFAULTLIB=-L/NOD:phobos$(MODEL).lib -L/OPT:NOICF + CFLAGS += /nologo /Zl /GS- ifeq ($(BUILD),debug) CFLAGS += /Z7 else - CFLAGS += /Ox + CFLAGS += /O2 endif endif endif @@ -165,17 +180,6 @@ endif UDFLAGS=-unittest -version=StdUnittest -# Set DOTOBJ and DOTEXE -ifeq (,$(findstring win,$(OS))) - DOTOBJ:=.o - DOTEXE:= - PATHSEP:=/ -else - DOTOBJ:=.obj - DOTEXE:=.exe - PATHSEP:=$(shell echo "\\") -endif - LINKDL:=$(if $(findstring $(OS),linux),-L-ldl,) # use timelimit to avoid deadlocks if available @@ -197,7 +201,13 @@ ifeq (,$(findstring win,$(OS))) SONAME:=libphobos2.so.$(MAJOR).$(MINOR) LIBSO:=$(ROOT)/$(SONAME).$(PATCH) else - LIB:=$(ROOT)/phobos.lib + ifeq ($(MODEL),32omf) + LIB:=phobos.lib + else ifeq ($(MODEL),32) + LIB:=phobos32mscoff.lib + else + LIB:=phobos$(MODEL).lib + endif endif ################################################################################ @@ -299,7 +309,7 @@ MAKEFILE = $(firstword $(MAKEFILE_LIST)) # build with shared library support (defaults to true on supported platforms) SHARED=$(if $(findstring $(OS),linux freebsd),1,) -TESTS_EXTRACTOR=$(ROOT)/tests_extractor +TESTS_EXTRACTOR=$(ROOT)/tests_extractor$(DOTEXE) PUBLICTESTS_DIR=$(ROOT)/publictests BETTERCTESTS_DIR=$(ROOT)/betterctests @@ -396,7 +406,7 @@ ifneq (1,$(SHARED)) $(UT_D_OBJS): $(DRUNTIME) -$(ROOT)/unittest/test_runner: $(DRUNTIME_PATH)/src/test_runner.d $(UT_D_OBJS) $(OBJS) $(DRUNTIME) +$(ROOT)/unittest/test_runner$(DOTEXE): $(DRUNTIME_PATH)/src/test_runner.d $(UT_D_OBJS) $(OBJS) $(DRUNTIME) $(DMD) $(DFLAGS) $(UDFLAGS) -of$@ $(DRUNTIME_PATH)/src/test_runner.d $(UT_D_OBJS) $(OBJS) $(DRUNTIME) $(LINKDL) $(NODEFAULTLIB) else @@ -409,7 +419,7 @@ $(UT_LIBSO): override PIC:=-fPIC $(UT_LIBSO): $(UT_D_OBJS) $(OBJS) $(DRUNTIMESO) $(DMD) $(DFLAGS) -shared $(UDFLAGS) -of$@ $(UT_D_OBJS) $(OBJS) $(DRUNTIMESO) $(LINKDL) $(NODEFAULTLIB) -$(ROOT)/unittest/test_runner: $(DRUNTIME_PATH)/src/test_runner.d $(UT_LIBSO) +$(ROOT)/unittest/test_runner$(DOTEXE): $(DRUNTIME_PATH)/src/test_runner.d $(UT_LIBSO) $(DMD) $(DFLAGS) -of$@ $< -L$(UT_LIBSO) $(NODEFAULTLIB) endif @@ -418,7 +428,7 @@ endif moduleName=$(subst /,.,$(1)) # target for batch unittests (using shared phobos library and test_runner) -unittest/%.run : $(ROOT)/unittest/test_runner +unittest/%.run : $(ROOT)/unittest/test_runner$(DOTEXE) $(QUIET)$(TIMELIMIT)$(RUN) $< $(call moduleName,$*) # Target for quickly running a single unittest (using static phobos library). @@ -447,7 +457,7 @@ unittest/%.run : $(ROOT)/unittest/test_runner $(DEBUGGER) ./$(basename $(notdir $<)) # Target for quickly debugging a single module -# For example: make -f posix.mak DEBUGGER=ddd std/format.debug +# For example: make DEBUGGER=ddd std/format.debug # ddd in this case is a graphical frontend to gdb %.debug : %.d BUILD=debug $(MAKE) -f $(MAKEFILE) $(basename $<).debug_with_debugger @@ -464,7 +474,7 @@ unittest/%.run : $(ROOT)/unittest/test_runner touch $@ clean : - rm -rf $(ROOT_OF_THEM_ALL) $(ZIPFILE) + rm -rf $(ROOT_OF_THEM_ALL) $(ZIPFILE) $(LIB) gitzip: git archive --format=zip HEAD > $(ZIPFILE) @@ -495,7 +505,7 @@ else # to always invoke druntime's make. Use FORCE instead of .PHONY to # avoid rebuilding phobos when $(DRUNTIME) didn't change. $(DRUNTIME): FORCE - $(MAKE) -C $(DRUNTIME_PATH) -f posix.mak MODEL=$(MODEL) DMD=$(abspath $(DMD)) OS=$(OS) BUILD=$(BUILD) + $(MAKE) -C $(DRUNTIME_PATH) MODEL=$(MODEL) DMD=$(abspath $(DMD)) OS=$(OS) BUILD=$(BUILD) ifeq (,$(findstring win,$(OS))) $(DRUNTIMESO): $(DRUNTIME) @@ -553,7 +563,7 @@ $(TOOLS_DIR)/checkwhitespace.d: | $(TOOLS_DIR) $(TOOLS_DIR)/tests_extractor.d: | $(TOOLS_DIR) #################### test for undesired white spaces ########################## -CWS_TOCHECK = posix.mak win32.mak win64.mak +CWS_TOCHECK = Makefile CWS_TOCHECK += $(ALL_D_FILES) index.dd checkwhitespace: $(LIB) $(TOOLS_DIR)/checkwhitespace.d @@ -582,7 +592,7 @@ style: style_lint publictests dscanner: $(LIB) @# The dscanner target is without dependencies to avoid constant rebuilds of Phobos (`make` always rebuilds order-only dependencies) @# However, we still need to ensure that the DScanner binary is built once - @[ -f $(DSCANNER_DIR)/dsc ] || ${MAKE} -f posix.mak $(DSCANNER_DIR)/dsc + @[ -f $(DSCANNER_DIR)/dsc ] || ${MAKE} $(DSCANNER_DIR)/dsc @echo "Running DScanner" $(DSCANNER_DIR)/dsc --config .dscanner.ini -I $(DRUNTIME_PATH)/src/ --styleCheck etc std -I. @@ -641,15 +651,15 @@ style_lint: style_lint_shellcmds dscanner ################################################################################ $(TESTS_EXTRACTOR): $(TOOLS_DIR)/tests_extractor.d | $(LIB) - DFLAGS="$(DFLAGS) $(LIB) $(NODEFAULTLIB) $(LINKDL)" $(DUB) build --force --compiler=$${PWD}/$(DMD) --single $< - mv $(TOOLS_DIR)/tests_extractor $@ + DFLAGS="$(DFLAGS) $(LIB) $(NODEFAULTLIB) $(LINKDL)" $(DUB) build --force --compiler=$(abspath $(DMD)) --single $< + mv $(TOOLS_DIR)/tests_extractor$(DOTEXE) $@ test_extractor: $(TESTS_EXTRACTOR) ################################################################################ # Extract public tests of a module and test them in an separate file (i.e. without its module) # This is done to check for potentially missing imports in the examples, e.g. -# make -f posix.mak std/format.publictests +# make std/format.publictests ################################################################################ publictests: $(addsuffix .publictests,$(D_MODULES)) @@ -664,7 +674,7 @@ publictests: $(addsuffix .publictests,$(D_MODULES)) # # Extract @betterC tests of a module and run them in -betterC # -# make -f posix.mak std/format.betterc +# make std/format.betterc ################################################################################ betterc-phobos-tests: $(addsuffix .betterc,$(D_MODULES)) @@ -673,7 +683,7 @@ betterc: betterc-phobos-tests %.betterc: %.d | $(BETTERCTESTS_DIR)/.directory @# Due to the FORCE rule on druntime, make will always try to rebuild Phobos (even as an order-only dependency) @# However, we still need to ensure that the test_extractor is built once - @[ -f "$(TESTS_EXTRACTOR)" ] || ${MAKE} -f posix.mak "$(TESTS_EXTRACTOR)" + @[ -f "$(TESTS_EXTRACTOR)" ] || ${MAKE} "$(TESTS_EXTRACTOR)" $(TESTS_EXTRACTOR) --betterC --attributes betterC \ --inputdir $< --outputdir $(BETTERCTESTS_DIR) $(DMD) $(DFLAGS) $(NODEFAULTLIB) -betterC -unittest -run $(BETTERCTESTS_DIR)/$(subst /,_,$<) @@ -686,7 +696,7 @@ betterc: betterc-phobos-tests # Test full modules with -betterC. Edit BETTERC_MODULES and # test/betterc_module_tests.d to add new modules to the list. # -# make -f posix.mak betterc-module-tests +# make betterc-module-tests ################################################################################ BETTERC_MODULES=std/sumtype diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b85fdb494f7..1bb435d4931 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -15,11 +15,9 @@ jobs: strategy: matrix: x64: - OS: Win_64 MODEL: 64 ARCH: x64 x86-OMF: - OS: Win_32 MODEL: 32omf ARCH: x86 steps: @@ -52,12 +50,10 @@ jobs: strategy: matrix: x86-mscoff: - OS: Win_32 - MODEL: 32mscoff + MODEL: 32 ARCH: x86 x86-mscoff_MinGW: - OS: Win_32 - MODEL: 32mscoff + MODEL: 32 ARCH: x86 C_RUNTIME: mingw steps: diff --git a/etc/c/zlib/linux.mak b/etc/c/zlib/linux.mak deleted file mode 100644 index d6d5a77d0db..00000000000 --- a/etc/c/zlib/linux.mak +++ /dev/null @@ -1,95 +0,0 @@ -# Makefile for zlib - -CC=gcc -LD=link -CFLAGS=-I. -O -g -DHAVE_UNISTD_H -DHAVE_STDARG_H -LDFLAGS= -O=.o - -.c.o: - "$(CC)" -c $(CFLAGS) $* - -.d.o: - "$(DMD)" -c $(DFLAGS) $* - -# variables -OBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) gzclose$(O) gzlib$(O) gzread$(O) \ - gzwrite$(O) infback$(O) inffast$(O) inflate$(O) inftrees$(O) trees$(O) uncompr$(O) zutil$(O) - -all: zlib.a example infcover minigzip - -adler32.o: zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -zutil.o: zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -gzclose.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzlib.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzread.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzwrite.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -compress.o: zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -uncompr.o: zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -crc32.o: zutil.h zlib.h zconf.h crc32.h - "$(CC)" -c $(CFLAGS) $*.c - -deflate.o: deflate.h zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" -c $(CFLAGS) $*.c - -inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" -c $(CFLAGS) $*.c - -inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h - "$(CC)" -c $(CFLAGS) $*.c - -inftrees.o: zutil.h zlib.h zconf.h inftrees.h - "$(CC)" -c $(CFLAGS) $*.c - -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h - "$(CC)" -c $(CFLAGS) $*.c - - -example.o: test/example.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test/$*.c - -infcover.o: test/infcover.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test/$*.c - -minigzip.o: test/minigzip.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test/$*.c - -zlib.a: $(OBJS) - ar -r $@ $(OBJS) - -example: example.o zlib.a - "$(CC)" $(LDFLAGS) -o $@ example.o zlib.a - -infcover: infcover.o zlib.a - "$(CC)" $(LDFLAGS) -o $@ infcover.o zlib.a - -minigzip: minigzip.o zlib.a - "$(CC)" $(LDFLAGS) -o $@ minigzip.o zlib.a - -test: example infcover minigzip - ./example - ./infcover - echo hello world | ./minigzip | ./minigzip -d - -clean: - $(RM) $(OBJS) zlib.a example.o example infcover.o infcover minigzip.o minigzip foo.gz - diff --git a/etc/c/zlib/osx.mak b/etc/c/zlib/osx.mak deleted file mode 100644 index cee494754a6..00000000000 --- a/etc/c/zlib/osx.mak +++ /dev/null @@ -1,99 +0,0 @@ -# Makefile for zlib - -CC=gcc -LD=link -CFLAGS=-I. -O -g -DHAVE_UNISTD_H -DHAVE_STDARG_H -ifeq (64,$(MODEL)) - CFLAGS+=--target=x86_64-darwin-apple # ARM cpu is not supported by dmd -endif - -LDFLAGS= -O=.o - -.c.o: - "$(CC)" -c $(CFLAGS) $* - -.d.o: - "$(DMD)" -c $(DFLAGS) $* - -# variables -OBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) gzclose$(O) gzlib$(O) gzread$(O) \ - gzwrite$(O) infback$(O) inffast$(O) inflate$(O) inftrees$(O) trees$(O) uncompr$(O) zutil$(O) - -all: zlib.a example infcover minigzip - -adler32.o: zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -zutil.o: zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -gzclose.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzlib.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzread.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzwrite.o: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -compress.o: zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -uncompr.o: zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -crc32.o: zutil.h zlib.h zconf.h crc32.h - "$(CC)" -c $(CFLAGS) $*.c - -deflate.o: deflate.h zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" -c $(CFLAGS) $*.c - -inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" -c $(CFLAGS) $*.c - -inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h - "$(CC)" -c $(CFLAGS) $*.c - -inftrees.o: zutil.h zlib.h zconf.h inftrees.h - "$(CC)" -c $(CFLAGS) $*.c - -trees.o: deflate.h zutil.h zlib.h zconf.h trees.h - "$(CC)" -c $(CFLAGS) $*.c - - -example.o: test/example.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test/$*.c - -infcover.o: test/infcover.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test/$*.c - -minigzip.o: test/minigzip.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test/$*.c - -zlib.a: $(OBJS) - ar -r $@ $(OBJS) - -example: example.o zlib.a - "$(CC)" $(LDFLAGS) -o $@ example.o zlib.a - -infcover: infcover.o zlib.a - "$(CC)" $(LDFLAGS) -o $@ infcover.o zlib.a - -minigzip: minigzip.o zlib.a - "$(CC)" $(LDFLAGS) -o $@ minigzip.o zlib.a - -test: example infcover minigzip - ./example - ./infcover - echo hello world | ./minigzip | ./minigzip -d - -clean: - $(RM) $(OBJS) zlib.a example.o example infcover.o infcover minigzip.o minigzip foo.gz - diff --git a/etc/c/zlib/win32.mak b/etc/c/zlib/win32.mak deleted file mode 100644 index 60dbe1c3dbf..00000000000 --- a/etc/c/zlib/win32.mak +++ /dev/null @@ -1,97 +0,0 @@ -# Makefile for zlib - -CC=dmc -LD=link -LIB=lib -CFLAGS=-I. -o -DNO_snprintf -LDFLAGS= -O=.obj - -# variables - -OBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) gzclose$(O) gzlib$(O) gzread$(O) \ - gzwrite$(O) infback$(O) inffast$(O) inflate$(O) inftrees$(O) trees$(O) uncompr$(O) zutil$(O) - - -all: zlib.lib example.exe infcover.exe minigzip.exe - -adler32.obj: zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -zutil.obj: zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -gzclose.obj: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzlib.obj: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzread.obj: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -gzwrite.obj: zlib.h zconf.h gzguts.h - "$(CC)" -c $(CFLAGS) $*.c - -compress.obj: zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -uncompr.obj: zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -crc32.obj: zutil.h zlib.h zconf.h crc32.h - "$(CC)" -c $(CFLAGS) $*.c - -deflate.obj: deflate.h zutil.h zlib.h zconf.h - "$(CC)" -c $(CFLAGS) $*.c - -infback.obj: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" -c $(CFLAGS) $*.c - -inflate.obj: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" -c $(CFLAGS) $*.c - -inffast.obj: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h - "$(CC)" -c $(CFLAGS) $*.c - -inftrees.obj: zutil.h zlib.h zconf.h inftrees.h - "$(CC)" -c $(CFLAGS) $*.c - -trees.obj: deflate.h zutil.h zlib.h zconf.h trees.h - "$(CC)" -c $(CFLAGS) $*.c - - - -example.obj: test\example.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test\$*.c - -infcover.obj: test\infcover.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test\$*.c - -minigzip.obj: test\minigzip.c zlib.h zconf.h - "$(CC)" -c $(cvarsdll) $(CFLAGS) test\$*.c - -zlib.lib: $(OBJS) - "$(LIB)" -c zlib.lib $(OBJS) - -example.exe: example.obj zlib.lib - "$(LD)" $(LDFLAGS) example.obj zlib.lib - -infcover.exe: infcover.obj zlib.lib - "$(LD)" $(LDFLAGS) infcover.obj zlib.lib - -minigzip.exe: minigzip.obj zlib.lib - "$(LD)" $(LDFLAGS) minigzip.obj zlib.lib - -test: example.exe infcover.exe minigzip.exe - example - infcover - echo hello world | minigzip | minigzip -d - -clean: - del *.obj - del *.exe - del *.dll - del *.lib - del *.lst - del foo.gz diff --git a/etc/c/zlib/win64.mak b/etc/c/zlib/win64.mak deleted file mode 100644 index 4c19d3d0553..00000000000 --- a/etc/c/zlib/win64.mak +++ /dev/null @@ -1,104 +0,0 @@ -# Makefile for zlib64 - -MODEL=64 - -CC=cl -LD=link -AR=lib - -CFLAGS=/O2 /nologo -LIBFLAGS=/nologo -LDFLAGS=/nologo -O=.obj - -# do not preselect a C runtime (extracted from the line above to make the auto tester happy) -CFLAGS=$(CFLAGS) /Zl /GS- - -# variables - -OBJS = adler32$(O) compress$(O) crc32$(O) deflate$(O) gzclose$(O) gzlib$(O) gzread$(O) \ - gzwrite$(O) infback$(O) inffast$(O) inflate$(O) inftrees$(O) trees$(O) uncompr$(O) zutil$(O) - - -all: zlib$(MODEL).lib example.exe infcover.exe minigzip.exe - -adler32.obj: zutil.h zlib.h zconf.h - "$(CC)" /c $(CFLAGS) $*.c - -zutil.obj: zutil.h zlib.h zconf.h - "$(CC)" /c $(CFLAGS) $*.c - -gzclose.obj: zlib.h zconf.h gzguts.h - "$(CC)" /c $(CFLAGS) $*.c - -gzlib.obj: zlib.h zconf.h gzguts.h - "$(CC)" /c $(CFLAGS) $*.c - -gzread.obj: zlib.h zconf.h gzguts.h - "$(CC)" /c $(CFLAGS) $*.c - -gzwrite.obj: zlib.h zconf.h gzguts.h - "$(CC)" /c $(CFLAGS) $*.c - -compress.obj: zlib.h zconf.h - "$(CC)" /c $(CFLAGS) $*.c - -uncompr.obj: zlib.h zconf.h - "$(CC)" /c $(CFLAGS) $*.c - -crc32.obj: zutil.h zlib.h zconf.h crc32.h - "$(CC)" /c $(CFLAGS) $*.c - -deflate.obj: deflate.h zutil.h zlib.h zconf.h - "$(CC)" /c $(CFLAGS) $*.c - -infback.obj: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" /c $(CFLAGS) $*.c - -inflate.obj: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h inffixed.h - "$(CC)" /c $(CFLAGS) $*.c - -inffast.obj: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h - "$(CC)" /c $(CFLAGS) $*.c - -inftrees.obj: zutil.h zlib.h zconf.h inftrees.h - "$(CC)" /c $(CFLAGS) $*.c - -trees.obj: deflate.h zutil.h zlib.h zconf.h trees.h - "$(CC)" /c $(CFLAGS) $*.c - - - -example.obj: test\example.c zlib.h zconf.h - "$(CC)" /c $(cvarsdll) $(CFLAGS) test\$*.c - -infcover.obj: test\infcover.c zlib.h zconf.h - "$(CC)" /c $(cvarsdll) $(CFLAGS) test\$*.c - -minigzip.obj: test\minigzip.c zlib.h zconf.h - "$(CC)" /c $(cvarsdll) $(CFLAGS) test\$*.c - -zlib$(MODEL).lib: $(OBJS) - "$(AR)" $(LIBFLAGS) /OUT:zlib$(MODEL).lib $(OBJS) - -example.exe: example.obj zlib$(MODEL).lib - "$(LD)" $(LDFLAGS) example.obj zlib$(MODEL).lib - -infcover.exe: infcover.obj zlib$(MODEL).lib - "$(LD)" $(LDFLAGS) infcover.obj zlib$(MODEL).lib - -minigzip.exe: minigzip.obj zlib$(MODEL).lib - "$(LD)" $(LDFLAGS) minigzip.obj zlib$(MODEL).lib - -test: example.exe infcover.exe minigzip.exe - example - infcover - echo hello world | minigzip | minigzip -d - -clean: - del *.obj - del *.exe - del *.dll - del *.lib - del *.lst - del foo.gz diff --git a/win32.mak b/win32.mak deleted file mode 100644 index b29fad7589e..00000000000 --- a/win32.mak +++ /dev/null @@ -1,574 +0,0 @@ -# Makefile to build D runtime library phobos.lib for Win32 OMF -# MS COFF builds use win64.mak for 32 and 64 bit -# -# Prerequisites: -# Digital Mars dmc, lib, and make that are unzipped from Digital Mars C: -# http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm850c.zip -# and are in the \dm\bin directory. -# Targets: -# make -# Same as make unittest -# make phobos.lib -# Build phobos.lib -# make clean -# Delete unneeded files created by build process -# make unittest -# Build phobos.lib, build and run unit tests -# make cov -# Build for coverage tests, run coverage tests -# Notes: -# minit.obj requires Microsoft MASM386.EXE to build from minit.asm, -# or just use the supplied minit.obj - -# Ignored, only the default value is supported -# MODEL=32omf - -## Copy command - -CP=cp - -## Directory where dmd has been installed - -DIR=\dmd2 - -## Flags for dmc C compiler - -CFLAGS=-mn -6 -r -#CFLAGS=-g -mn -6 -r - -## Location of druntime tree - -DRUNTIME=../dmd/druntime -DRUNTIMELIB=$(DRUNTIME)/lib/druntime.lib - -## Flags for dmd D compiler - -DFLAGS=-m32omf -conf= -O -release -w -de -preview=dip1000 -preview=dtorfields -preview=fieldwise -I$(DRUNTIME)\import -#DFLAGS=-unittest -g -#DFLAGS=-unittest -cov -g - -## Flags for compiling unittests - -UDFLAGS=-m32omf -unittest -version=StdUnittest -version=CoreUnittest -conf= -O -w -preview=dip1000 -preview=fieldwise -I$(DRUNTIME)\import - -## C compiler - -CC=dmc -AR=lib -MAKE=make - -## D compiler - -DMD_DIR=../dmd -BUILD=release -OS=windows -DMD=$(DMD_DIR)/generated/$(OS)/$(BUILD)/32/dmd - -## Zlib library - -ZLIB=etc\c\zlib\zlib.lib - -.c.obj: -# $(CC) -c $(CFLAGS) $* - $(DMD) -c $(DFLAGS) -I. -v $* - -.cpp.obj: - $(CC) -c $(CFLAGS) $* - -.d.obj: - $(DMD) -c $(DFLAGS) $* - -.asm.obj: - $(CC) -c $* - -LIB=phobos.lib - -targets : $(LIB) - -test : test.exe - -test.obj : test.d - $(DMD) -conf= -c test -g $(UDFLAGS) - -test.exe : test.obj $(LIB) - $(DMD) -conf= test.obj -g -L/map - -# ti_bit.obj ti_Abit.obj - -SRC= \ - unittest.d \ - index.dd - -# The separation is a workaround for bug 4904 (optlink bug 3372). -SRC_STD_1= \ - std\stdio.d \ - std\string.d \ - std\file.d - -SRC_STD_2a= \ - std\array.d \ - std\functional.d \ - std\path.d \ - std\outbuffer.d \ - std\utf.d - -SRC_STD_3= \ - std\csv.d \ - std\complex.d \ - std\numeric.d \ - std\bigint.d \ - std\bitmanip.d \ - std\typecons.d \ - std\base64.d \ - std\ascii.d \ - std\demangle.d \ - std\uri.d \ - std\mmfile.d \ - std\getopt.d - -SRC_STD_3a= \ - std\signals.d \ - std\meta.d \ - std\typetuple.d \ - std\traits.d \ - std\encoding.d \ - std\random.d \ - std\exception.d \ - std\compiler.d \ - std\system.d \ - std\concurrency.d - -SRC_STD_4= \ - std\int128.d \ - std\uuid.d - -SRC_STD_6= \ - std\variant.d \ - std\zlib.d \ - std\socket.d \ - std\conv.d \ - std\zip.d - -SRC_STD_7= \ - std\stdint.d \ - std\json.d \ - std\parallelism.d \ - std\mathspecial.d \ - std\process.d \ - std\package.d - -SRC_STD_7a= \ - std\sumtype.d - -SRC_STD= \ - $(SRC_STD_1) \ - $(SRC_STD_2a) \ - $(SRC_STD_3) \ - $(SRC_STD_3a) \ - $(SRC_STD_4) \ - $(SRC_STD_6) \ - $(SRC_STD_7) \ - $(SRC_STD_7a) - -SRC_STD_ALGO= \ - std\algorithm\package.d \ - std\algorithm\comparison.d \ - std\algorithm\iteration.d \ - std\algorithm\mutation.d \ - std\algorithm\searching.d \ - std\algorithm\setops.d \ - std\algorithm\sorting.d \ - std\algorithm\internal.d - -SRC_STD_CONTAINER= \ - std\container\array.d \ - std\container\binaryheap.d \ - std\container\dlist.d \ - std\container\rbtree.d \ - std\container\slist.d \ - std\container\util.d \ - std\container\package.d - -SRC_STD_DATETIME= \ - std\datetime\date.d \ - std\datetime\interval.d \ - std\datetime\package.d \ - std\datetime\stopwatch.d \ - std\datetime\systime.d \ - std\datetime\timezone.d - -SRC_STD_DIGEST= \ - std\digest\crc.d \ - std\digest\sha.d \ - std\digest\md.d \ - std\digest\ripemd.d \ - std\digest\hmac.d \ - std\digest\murmurhash.d \ - std\digest\package.d - -SRC_STD_FORMAT= \ - std\format\package.d \ - std\format\read.d \ - std\format\spec.d \ - std\format\write.d \ - std\format\internal\floats.d \ - std\format\internal\read.d \ - std\format\internal\write.d - -SRC_STD_MATH= \ - std\math\algebraic.d \ - std\math\constants.d \ - std\math\exponential.d \ - std\math\operations.d \ - std\math\hardware.d \ - std\math\package.d \ - std\math\remainder.d \ - std\math\rounding.d \ - std\math\traits.d \ - std\math\trigonometry.d - -SRC_STD_NET= \ - std\net\isemail.d \ - std\net\curl.d - -SRC_STD_RANGE= \ - std\range\package.d \ - std\range\primitives.d \ - std\range\interfaces.d - -SRC_STD_REGEX= \ - std\regex\internal\ir.d \ - std\regex\package.d \ - std\regex\internal\parser.d \ - std\regex\internal\tests.d \ - std\regex\internal\tests2.d \ - std\regex\internal\backtracking.d \ - std\regex\internal\thompson.d \ - std\regex\internal\kickstart.d \ - std\regex\internal\generator.d - -SRC_STD_WIN= \ - std\windows\registry.d \ - std\windows\syserror.d \ - std\windows\charset.d - -SRC_STD_INTERNAL= \ - std\internal\cstring.d \ - std\internal\memory.d \ - std\internal\unicode_tables.d \ - std\internal\unicode_comp.d \ - std\internal\unicode_decomp.d \ - std\internal\unicode_grapheme.d \ - std\internal\unicode_norm.d \ - std\internal\scopebuffer.d \ - std\internal\test\dummyrange.d \ - std\internal\test\range.d - -SRC_STD_INTERNAL_DIGEST= \ - std\internal\digest\sha_SSSE3.d - -SRC_STD_INTERNAL_MATH= \ - std\internal\math\biguintcore.d \ - std\internal\math\biguintnoasm.d \ - std\internal\math\biguintx86.d \ - std\internal\math\gammafunction.d \ - std\internal\math\errorfunction.d - -SRC_STD_INTERNAL_WINDOWS= \ - std\internal\windows\advapi32.d - -SRC_STD_EXP= \ - std\checkedint.d std\experimental\checkedint.d - -SRC_STD_UNI = std\uni\package.d \ - -SRC_STD_EXP_ALLOC_BB= \ - std\experimental\allocator\building_blocks\affix_allocator.d \ - std\experimental\allocator\building_blocks\aligned_block_list.d \ - std\experimental\allocator\building_blocks\allocator_list.d \ - std\experimental\allocator\building_blocks\ascending_page_allocator.d \ - std\experimental\allocator\building_blocks\bitmapped_block.d \ - std\experimental\allocator\building_blocks\bucketizer.d \ - std\experimental\allocator\building_blocks\fallback_allocator.d \ - std\experimental\allocator\building_blocks\free_list.d \ - std\experimental\allocator\building_blocks\free_tree.d \ - std\experimental\allocator\building_blocks\kernighan_ritchie.d \ - std\experimental\allocator\building_blocks\null_allocator.d \ - std\experimental\allocator\building_blocks\quantizer.d \ - std\experimental\allocator\building_blocks\region.d \ - std\experimental\allocator\building_blocks\scoped_allocator.d \ - std\experimental\allocator\building_blocks\segregator.d \ - std\experimental\allocator\building_blocks\stats_collector.d \ - std\experimental\allocator\building_blocks\package.d - -SRC_STD_EXP_ALLOC= \ - std\experimental\allocator\common.d \ - std\experimental\allocator\gc_allocator.d \ - std\experimental\allocator\mallocator.d \ - std\experimental\allocator\mmap_allocator.d \ - std\experimental\allocator\showcase.d \ - std\experimental\allocator\typed.d \ - std\experimental\allocator\package.d \ - $(SRC_STD_EXP_ALLOC_BB) - -SRC_STD_EXP_LOGGER= \ - std\experimental\logger\core.d \ - std\experimental\logger\filelogger.d \ - std\experimental\logger\multilogger.d \ - std\experimental\logger\nulllogger.d \ - std\experimental\logger\package.d - -SRC_STD_LOGGER= \ - std\logger\core.d \ - std\logger\filelogger.d \ - std\logger\multilogger.d \ - std\logger\nulllogger.d \ - std\logger\package.d - -SRC_ETC= - -SRC_ETC_C= \ - etc\c\zlib.d \ - etc\c\curl.d \ - etc\c\sqlite3.d \ - etc\c\odbc\sql.d \ - etc\c\odbc\sqlext.d \ - etc\c\odbc\sqltypes.d \ - etc\c\odbc\sqlucode.d - -SRC_TO_COMPILE= \ - $(SRC_STD) \ - $(SRC_STD_ALGO) \ - $(SRC_STD_CONTAINER) \ - $(SRC_STD_DATETIME) \ - $(SRC_STD_DIGEST) \ - $(SRC_STD_FORMAT) \ - $(SRC_STD_MATH) \ - $(SRC_STD_NET) \ - $(SRC_STD_RANGE) \ - $(SRC_STD_REGEX) \ - $(SRC_STD_C) \ - $(SRC_STD_WIN) \ - $(SRC_STD_C_WIN) \ - $(SRC_STD_INTERNAL) \ - $(SRC_STD_INTERNAL_DIGEST) \ - $(SRC_STD_INTERNAL_MATH) \ - $(SRC_STD_INTERNAL_WINDOWS) \ - $(SRC_STD_EXP) \ - $(SRC_STD_UNI) \ - $(SRC_STD_EXP_ALLOC) \ - $(SRC_STD_EXP_LOGGER) \ - $(SRC_STD_LOGGER) \ - $(SRC_ETC) \ - $(SRC_ETC_C) - -SRC_ZLIB= \ - etc\c\zlib\crc32.h \ - etc\c\zlib\deflate.h \ - etc\c\zlib\gzguts.h \ - etc\c\zlib\inffixed.h \ - etc\c\zlib\inffast.h \ - etc\c\zlib\inftrees.h \ - etc\c\zlib\inflate.h \ - etc\c\zlib\trees.h \ - etc\c\zlib\zconf.h \ - etc\c\zlib\zlib.h \ - etc\c\zlib\zutil.h \ - etc\c\zlib\adler32.c \ - etc\c\zlib\compress.c \ - etc\c\zlib\crc32.c \ - etc\c\zlib\deflate.c \ - etc\c\zlib\gzclose.c \ - etc\c\zlib\gzlib.c \ - etc\c\zlib\gzread.c \ - etc\c\zlib\gzwrite.c \ - etc\c\zlib\infback.c \ - etc\c\zlib\inffast.c \ - etc\c\zlib\inflate.c \ - etc\c\zlib\inftrees.c \ - etc\c\zlib\trees.c \ - etc\c\zlib\uncompr.c \ - etc\c\zlib\zutil.c - -$(LIB) : $(SRC_TO_COMPILE) \ - $(ZLIB) $(DRUNTIMELIB) win32.mak win64.mak - $(DMD) -lib -of$(LIB) -Xfphobos.json $(DFLAGS) $(SRC_TO_COMPILE) \ - $(ZLIB) $(DRUNTIMELIB) - -UNITTEST_OBJS= \ - unittest1.obj \ - unittest2.obj \ - unittest2a.obj \ - unittest3.obj \ - unittest3a.obj \ - unittest3b.obj \ - unittest4.obj \ - unittest5.obj \ - unittest5a.obj \ - unittest5b.obj \ - unittest6.obj \ - unittest6a.obj \ - unittest6b.obj \ - unittest7.obj \ - unittest7a.obj \ - unittest8a.obj \ - unittest8b.obj \ - unittest8c.obj \ - unittest8d.obj \ - unittest8e.obj \ - unittest8f.obj - -unittest : $(LIB) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest1.obj $(SRC_STD_1) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest2.obj $(SRC_STD_RANGE) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest2a.obj $(SRC_STD_2a) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest3.obj $(SRC_STD_3) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest3a.obj $(SRC_STD_3a) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest3b.obj $(SRC_STD_DATETIME) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest4.obj $(SRC_STD_4) $(SRC_STD_DIGEST) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest5.obj $(SRC_STD_ALGO) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest5a.obj $(SRC_STD_FORMAT) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest5b.obj $(SRC_STD_MATH) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest6.obj $(SRC_STD_6) $(SRC_STD_CONTAINER) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest6a.obj $(SRC_STD_EXP_ALLOC) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest6b.obj $(SRC_STD_LOGGER) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest7.obj $(SRC_STD_7) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest7a.obj $(SRC_STD_7a) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest8a.obj $(SRC_STD_REGEX) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest8b.obj $(SRC_STD_NET) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest8c.obj $(SRC_STD_C) $(SRC_STD_WIN) $(SRC_STD_C_WIN) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest8d.obj $(SRC_STD_INTERNAL) $(SRC_STD_INTERNAL_DIGEST) $(SRC_STD_INTERNAL_MATH) $(SRC_STD_INTERNAL_WINDOWS) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest8e.obj $(SRC_ETC) $(SRC_ETC_C) - $(DMD) $(UDFLAGS) -L/co -c -ofunittest8f.obj $(SRC_STD_EXP) - $(DMD) $(UDFLAGS) -L/co unittest.d $(UNITTEST_OBJS) \ - $(ZLIB) $(DRUNTIMELIB) - .\unittest.exe - -#unittest : unittest.exe -# unittest -# -#unittest.exe : unittest.d $(LIB) -# $(DMD) -conf= unittest -g -# dmc unittest.obj -g - -cov : $(SRC_TO_COMPILE) $(LIB) -# $(DMD) -conf= -cov=ctfe -cov $(UDFLAGS) -ofcov.exe -main $(SRC_TO_COMPILE) $(LIB) -# cov - del *.lst - $(DMD) -conf= -cov=ctfe -cov=83 $(UDFLAGS) -main -run std\stdio.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\string.d - $(DMD) -conf= -cov=ctfe -cov=83 $(UDFLAGS) -main -run std\file.d - $(DMD) -conf= -cov=ctfe -cov=86 $(UDFLAGS) -main -run std\range\package.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\array.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\functional.d - $(DMD) -conf= -cov=ctfe -cov=96 $(UDFLAGS) -main -run std\path.d - $(DMD) -conf= -cov=ctfe -cov=41 $(UDFLAGS) -main -run std\outbuffer.d - $(DMD) -conf= -cov=ctfe -cov=89 $(UDFLAGS) -main -run std\utf.d - $(DMD) -conf= -cov=ctfe -cov=93 $(UDFLAGS) -main -run std\csv.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\complex.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\int128.d - $(DMD) -conf= -cov=ctfe -cov=70 $(UDFLAGS) -main -run std\numeric.d - $(DMD) -conf= -cov=ctfe -cov=94 $(UDFLAGS) -main -run std\bigint.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\bitmanip.d - $(DMD) -conf= -cov=ctfe -cov=82 $(UDFLAGS) -main -run std\typecons.d - $(DMD) -conf= -cov=ctfe -cov=44 $(UDFLAGS) -main -run std\uni\package.d - $(DMD) -conf= -cov=ctfe -cov=91 $(UDFLAGS) -main -run std\base64.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\ascii.d - $(DMD) -conf= -cov=ctfe -cov=0 $(UDFLAGS) -main -run std\demangle.d - $(DMD) -conf= -cov=ctfe -cov=57 $(UDFLAGS) -main -run std\uri.d - $(DMD) -conf= -cov=ctfe -cov=51 $(UDFLAGS) -main -run std\mmfile.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\getopt.d - $(DMD) -conf= -cov=ctfe -cov=92 $(UDFLAGS) -main -run std\signals.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\meta.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\typetuple.d - $(DMD) -conf= -cov=ctfe -cov=85 $(UDFLAGS) -main -run std\traits.d - $(DMD) -conf= -cov=ctfe -cov=62 $(UDFLAGS) -main -run std\encoding.d - $(DMD) -conf= -cov=ctfe -cov=79 $(UDFLAGS) -main -run std\random.d - $(DMD) -conf= -cov=ctfe -cov=92 $(UDFLAGS) -main -run std\exception.d - $(DMD) -conf= -cov=ctfe -cov=73 $(UDFLAGS) -main -run std\concurrency.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\datetime\date.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\datetime\interval.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\datetime\package.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\datetime\stopwatch.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\datetime\systime.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\datetime\timezone.d - $(DMD) -conf= -cov=ctfe -cov=96 $(UDFLAGS) -main -run std\uuid.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\digest\crc.d - $(DMD) -conf= -cov=ctfe -cov=55 $(UDFLAGS) -main -run std\digest\sha.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\digest\md.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\digest\ripemd.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\digest\hmac.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\algorithm\package.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\algorithm\comparison.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\algorithm\iteration.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\algorithm\mutation.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\algorithm\searching.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\algorithm\setops.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\algorithm\sorting.d - $(DMD) -conf= -cov=ctfe -cov=71 $(UDFLAGS) -main -run std\format\package.d - $(DMD) -conf= -cov=ctfe -cov=71 $(UDFLAGS) -main -run std\math\package.d - $(DMD) -conf= -cov=ctfe -cov=83 $(UDFLAGS) -main -run std\variant.d - $(DMD) -conf= -cov=ctfe -cov=58 $(UDFLAGS) -main -run std\zlib.d - $(DMD) -conf= -cov=ctfe -cov=53 $(UDFLAGS) -main -run std\socket.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\container\array.d - $(DMD) -conf= -cov=ctfe -cov=68 $(UDFLAGS) -main -run std\container\binaryheap.d - $(DMD) -conf= -cov=ctfe -cov=91 $(UDFLAGS) -main -run std\container\dlist.d - $(DMD) -conf= -cov=ctfe -cov=93 $(UDFLAGS) -main -run std\container\rbtree.d - $(DMD) -conf= -cov=ctfe -cov=92 $(UDFLAGS) -main -run std\container\slist.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\container\util.d - $(DMD) -conf= -cov=ctfe -cov=100 $(UDFLAGS) -main -run std\container\package.d - $(DMD) -conf= -cov=ctfe -cov=90 $(UDFLAGS) -main -run std\conv.d - $(DMD) -conf= -cov=ctfe -cov=0 $(UDFLAGS) -main -run std\zip.d - $(DMD) -conf= -cov=ctfe -cov=77 $(UDFLAGS) -main -run std\regex\tests.d - $(DMD) -conf= -cov=ctfe -cov=77 $(UDFLAGS) -main -run std\regex\tests2.d - $(DMD) -conf= -cov=ctfe -cov=92 $(UDFLAGS) -main -run std\json.d - $(DMD) -conf= -cov=ctfe -cov=87 $(UDFLAGS) -main -run std\parallelism.d - $(DMD) -conf= -cov=ctfe -cov=50 $(UDFLAGS) -main -run std\mathspecial.d - $(DMD) -conf= -cov=ctfe -cov=71 $(UDFLAGS) -main -run std\process.d - $(DMD) -conf= -cov=ctfe -cov=70 $(UDFLAGS) -main -run std\net\isemail.d - $(DMD) -conf= -cov=ctfe -cov=2 $(UDFLAGS) -main -run std\net\curl.d - $(DMD) -conf= -cov=ctfe -cov=60 $(UDFLAGS) -main -run std\windows\registry.d - $(DMD) -conf= -cov=ctfe -cov=0 $(UDFLAGS) -main -run std\internal\digest\sha_SSSE3.d - $(DMD) -conf= -cov=ctfe -cov=50 $(UDFLAGS) -main -run std\internal\math\biguintcore.d - $(DMD) -conf= -cov=ctfe -cov=75 $(UDFLAGS) -main -run std\internal\math\biguintnoasm.d -# $(DMD) -conf= -cov=ctfe -cov $(UDFLAGS) -main -run std\internal\math\biguintx86.d - $(DMD) -conf= -cov=ctfe -cov=94 $(UDFLAGS) -main -run std\internal\math\gammafunction.d - $(DMD) -conf= -cov=ctfe -cov=92 $(UDFLAGS) -main -run std\internal\math\errorfunction.d - $(DMD) -conf= -cov=ctfe -cov=31 $(UDFLAGS) -main -run std\internal\windows\advapi32.d - $(DMD) -conf= -cov=ctfe -cov=58 $(UDFLAGS) -main -run etc\c\zlib.d - $(DMD) -conf= -cov=ctfe -cov=95 $(UDFLAGS) -main -run std\sumtype.d - -###################################################### - -$(ZLIB): $(SRC_ZLIB) - cd etc\c\zlib - $(MAKE) -f win32.mak zlib.lib CC=$(CC) LIB=$(AR) - cd ..\..\.. - -###################################################### - -zip: - del phobos.zip - zip32 -r phobos.zip . -x .git\* -x \*.lib -x \*.obj - -phobos.zip : zip - -clean: - cd etc\c\zlib - $(MAKE) -f win32.mak clean - cd ..\..\.. - del $(DOCS) - del $(UNITTEST_OBJS) unittest.obj unittest.exe - del $(LIB) - del phobos.json - -install: phobos.zip - $(CP) phobos.lib phobos64.lib $(DIR)\windows\lib - +rd/s/q $(DIR)\src\phobos - unzip -o phobos.zip -d $(DIR)\src\phobos - -auto-tester-build: - echo "Auto-Tester has been disabled" - -auto-tester-test: - echo "Auto-Tester has been disabled" diff --git a/win64.mak b/win64.mak deleted file mode 100644 index f094ab12170..00000000000 --- a/win64.mak +++ /dev/null @@ -1,516 +0,0 @@ -# Makefile to build D runtime library phobos{64,32mscoff}.lib for Windows MSVC -# Prerequisites: -# Microsoft Visual Studio -# Targets: -# make -# Same as make unittest -# make phobos64.lib -# Build phobos64.lib -# make clean -# Delete unneeded files created by build process -# make unittest -# Build phobos64.lib, build and run unit tests -# make cov -# Build for coverage tests, run coverage tests -# make MODEL=32mscoff phobos32mscoff.lib -# Build phobos32mscoff.lib (with x86 cl.exe in PATH, otherwise set CC & AR manually) - -## Memory model (32mscoff or 64) -MODEL=64 - -## Assume MSVC cl.exe & lib.exe in PATH are set up for the target MODEL. -## Otherwise set them explicitly, e.g., to `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\cl.exe`. -CC=cl -AR=lib - -MAKE=make - -## Directory where dmd has been installed - -DIR=\dmd2 - -## Flags for VC compiler - -CFLAGS=/O2 /nologo - -## Location of druntime tree - -DRUNTIME=../dmd/druntime -DRUNTIMELIB=$(DRUNTIME)/lib/druntime$(MODEL).lib - -## Flags for dmd D compiler - -DFLAGS=-conf= -m$(MODEL) -O -release -w -de -preview=dip1000 -preview=dtorfields -preview=fieldwise -I$(DRUNTIME)\import - -## Flags for compiling unittests - -UDFLAGS=-conf= -g -m$(MODEL) -O -w -preview=dip1000 -preview=fieldwise -I$(DRUNTIME)\import -unittest -version=StdUnittest -version=CoreUnittest - -## D compiler - -DMD_DIR=../dmd -BUILD=release -OS=windows -DMD=$(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd - -## Zlib library - -ZLIB=etc\c\zlib\zlib$(MODEL).lib - -.c.obj: -# "$(CC)" -c $(CFLAGS) $*.c - $(DMD) -c $(DFLAGS) -I. -v $*.c - -.cpp.obj: - "$(CC)" -c $(CFLAGS) $*.cpp - -.d.obj: - "$(DMD)" -c $(DFLAGS) $* - -.asm.obj: - "$(CC)" -c $* - -LIB=phobos$(MODEL).lib - -targets : $(LIB) - -test : test.exe - -test.obj : test.d - "$(DMD)" -conf= -c -m$(MODEL) test -g $(UDFLAGS) - -test.exe : test.obj $(LIB) - "$(DMD)" -conf= test.obj -m$(MODEL) -g -L/map - -# ti_bit.obj ti_Abit.obj - -SRC= \ - unittest.d \ - index.dd - -# The separation is a workaround for bug 4904 (optlink bug 3372). -SRC_STD_1= \ - std\stdio.d \ - std\string.d \ - std\file.d - -SRC_STD_2a= \ - std\array.d \ - std\functional.d \ - std\path.d \ - std\outbuffer.d \ - std\utf.d - -SRC_STD_3= \ - std\csv.d \ - std\complex.d \ - std\numeric.d \ - std\bigint.d - -SRC_STD_3b= \ - std\base64.d \ - std\ascii.d \ - std\demangle.d \ - std\uri.d \ - std\mmfile.d \ - std\getopt.d - -SRC_STD_3c= \ - std\signals.d \ - std\meta.d \ - std\typetuple.d \ - std\traits.d \ - std\encoding.d \ - std\random.d \ - std\exception.d \ - std\compiler.d \ - std\system.d \ - std\concurrency.d - -SRC_STD_3d= \ - std\bitmanip.d \ - std\typecons.d - -SRC_STD_4= \ - std\int128.d \ - std\uuid.d - -SRC_STD_6a=std\variant.d -SRC_STD_6c=std\zlib.d -SRC_STD_6e=std\socket.d -SRC_STD_6h=std\conv.d -SRC_STD_6i=std\zip.d - -SRC_STD_7= \ - std\stdint.d \ - std\json.d \ - std\parallelism.d \ - std\mathspecial.d \ - std\process.d \ - std\package.d - -SRC_STD_7a= \ - std\sumtype.d - -SRC_STD= \ - $(SRC_STD_1) \ - $(SRC_STD_2a) \ - $(SRC_STD_3) \ - $(SRC_STD_3a) \ - $(SRC_STD_3b) \ - $(SRC_STD_3c) \ - $(SRC_STD_3d) \ - $(SRC_STD_4) \ - $(SRC_STD_6a) \ - $(SRC_STD_6c) \ - $(SRC_STD_6e) \ - $(SRC_STD_6h) \ - $(SRC_STD_6i) \ - $(SRC_STD_7) \ - $(SRC_STD_7a) - -SRC_STD_ALGO_1= \ - std\algorithm\package.d \ - std\algorithm\comparison.d \ - std\algorithm\iteration.d \ - std\algorithm\mutation.d - -SRC_STD_ALGO_2= \ - std\algorithm\searching.d \ - std\algorithm\setops.d - -SRC_STD_ALGO_3= \ - std\algorithm\sorting.d \ - std\algorithm\internal.d - -SRC_STD_ALGO= \ - $(SRC_STD_ALGO_1) \ - $(SRC_STD_ALGO_2) \ - $(SRC_STD_ALGO_3) - -SRC_STD_FORMAT= \ - std\format\package.d \ - std\format\read.d \ - std\format\spec.d \ - std\format\write.d \ - std\format\internal\floats.d \ - std\format\internal\read.d \ - std\format\internal\write.d - -SRC_STD_MATH = \ - std\math\algebraic.d \ - std\math\constants.d \ - std\math\exponential.d \ - std\math\operations.d \ - std\math\hardware.d \ - std\math\package.d \ - std\math\remainder.d \ - std\math\rounding.d \ - std\math\traits.d \ - std\math\trigonometry.d - -SRC_STD_CONTAINER= \ - std\container\array.d \ - std\container\binaryheap.d \ - std\container\dlist.d \ - std\container\rbtree.d \ - std\container\slist.d \ - std\container\util.d \ - std\container\package.d - -SRC_STD_DATETIME= \ - std\datetime\date.d \ - std\datetime\interval.d \ - std\datetime\package.d \ - std\datetime\stopwatch.d \ - std\datetime\systime.d \ - std\datetime\timezone.d - -SRC_STD_DIGEST= \ - std\digest\crc.d \ - std\digest\sha.d \ - std\digest\md.d \ - std\digest\ripemd.d \ - std\digest\hmac.d \ - std\digest\murmurhash.d \ - std\digest\package.d - -SRC_STD_NET= \ - std\net\isemail.d \ - std\net\curl.d - -SRC_STD_RANGE= \ - std\range\package.d \ - std\range\primitives.d \ - std\range\interfaces.d - -SRC_STD_REGEX= \ - std\regex\internal\ir.d \ - std\regex\package.d \ - std\regex\internal\parser.d \ - std\regex\internal\tests.d \ - std\regex\internal\tests2.d \ - std\regex\internal\backtracking.d \ - std\regex\internal\thompson.d \ - std\regex\internal\kickstart.d \ - std\regex\internal\generator.d - -SRC_STD_WIN= \ - std\windows\registry.d \ - std\windows\syserror.d \ - std\windows\charset.d - -SRC_STD_INTERNAL= \ - std\internal\cstring.d \ - std\internal\memory.d \ - std\internal\unicode_tables.d \ - std\internal\unicode_comp.d \ - std\internal\unicode_decomp.d \ - std\internal\unicode_grapheme.d \ - std\internal\unicode_norm.d \ - std\internal\scopebuffer.d \ - std\internal\test\dummyrange.d \ - std\internal\test\range.d - -SRC_STD_INTERNAL_DIGEST= \ - std\internal\digest\sha_SSSE3.d - -SRC_STD_INTERNAL_MATH= \ - std\internal\math\biguintcore.d \ - std\internal\math\biguintnoasm.d \ - std\internal\math\biguintx86.d \ - std\internal\math\gammafunction.d \ - std\internal\math\errorfunction.d - -SRC_STD_INTERNAL_WINDOWS= \ - std\internal\windows\advapi32.d - -SRC_STD_EXP= \ - std\checkedint.d std\experimental\checkedint.d - -SRC_STD_UNI = std\uni\package.d - -SRC_STD_EXP_ALLOC_BB= \ - std\experimental\allocator\building_blocks\affix_allocator.d \ - std\experimental\allocator\building_blocks\aligned_block_list.d \ - std\experimental\allocator\building_blocks\allocator_list.d \ - std\experimental\allocator\building_blocks\ascending_page_allocator.d \ - std\experimental\allocator\building_blocks\bitmapped_block.d \ - std\experimental\allocator\building_blocks\bucketizer.d \ - std\experimental\allocator\building_blocks\fallback_allocator.d \ - std\experimental\allocator\building_blocks\free_list.d \ - std\experimental\allocator\building_blocks\free_tree.d \ - std\experimental\allocator\building_blocks\kernighan_ritchie.d \ - std\experimental\allocator\building_blocks\null_allocator.d \ - std\experimental\allocator\building_blocks\quantizer.d \ - std\experimental\allocator\building_blocks\region.d \ - std\experimental\allocator\building_blocks\scoped_allocator.d \ - std\experimental\allocator\building_blocks\segregator.d \ - std\experimental\allocator\building_blocks\stats_collector.d \ - std\experimental\allocator\building_blocks\package.d - -SRC_STD_EXP_ALLOC= \ - std\experimental\allocator\common.d \ - std\experimental\allocator\gc_allocator.d \ - std\experimental\allocator\mallocator.d \ - std\experimental\allocator\mmap_allocator.d \ - std\experimental\allocator\showcase.d \ - std\experimental\allocator\typed.d \ - std\experimental\allocator\package.d \ - $(SRC_STD_EXP_ALLOC_BB) - -SRC_STD_EXP_LOGGER= \ - std\experimental\logger\core.d \ - std\experimental\logger\filelogger.d \ - std\experimental\logger\multilogger.d \ - std\experimental\logger\nulllogger.d \ - std\experimental\logger\package.d - -SRC_STD_LOGGER= \ - std\logger\core.d \ - std\logger\filelogger.d \ - std\logger\multilogger.d \ - std\logger\nulllogger.d \ - std\logger\package.d - -SRC_ETC= - -SRC_ETC_C= \ - etc\c\zlib.d \ - etc\c\curl.d \ - etc\c\sqlite3.d \ - etc\c\odbc\sql.d \ - etc\c\odbc\sqlext.d \ - etc\c\odbc\sqltypes.d \ - etc\c\odbc\sqlucode.d - -SRC_TO_COMPILE= \ - $(SRC_STD) \ - $(SRC_STD_ALGO) \ - $(SRC_STD_CONTAINER) \ - $(SRC_STD_DATETIME) \ - $(SRC_STD_DIGEST) \ - $(SRC_STD_FORMAT) \ - $(SRC_STD_MATH) \ - $(SRC_STD_NET) \ - $(SRC_STD_RANGE) \ - $(SRC_STD_REGEX) \ - $(SRC_STD_C) \ - $(SRC_STD_WIN) \ - $(SRC_STD_C_WIN) \ - $(SRC_STD_INTERNAL) \ - $(SRC_STD_INTERNAL_DIGEST) \ - $(SRC_STD_INTERNAL_MATH) \ - $(SRC_STD_INTERNAL_WINDOWS) \ - $(SRC_STD_UNI) \ - $(SRC_STD_EXP) \ - $(SRC_STD_EXP_ALLOC) \ - $(SRC_STD_EXP_LOGGER) \ - $(SRC_STD_LOGGER) \ - $(SRC_ETC) \ - $(SRC_ETC_C) - -SRC_ZLIB= \ - etc\c\zlib\crc32.h \ - etc\c\zlib\deflate.h \ - etc\c\zlib\gzguts.h \ - etc\c\zlib\inffixed.h \ - etc\c\zlib\inffast.h \ - etc\c\zlib\inftrees.h \ - etc\c\zlib\inflate.h \ - etc\c\zlib\trees.h \ - etc\c\zlib\zconf.h \ - etc\c\zlib\zlib.h \ - etc\c\zlib\zutil.h \ - etc\c\zlib\adler32.c \ - etc\c\zlib\compress.c \ - etc\c\zlib\crc32.c \ - etc\c\zlib\deflate.c \ - etc\c\zlib\gzclose.c \ - etc\c\zlib\gzlib.c \ - etc\c\zlib\gzread.c \ - etc\c\zlib\gzwrite.c \ - etc\c\zlib\infback.c \ - etc\c\zlib\inffast.c \ - etc\c\zlib\inflate.c \ - etc\c\zlib\inftrees.c \ - etc\c\zlib\trees.c \ - etc\c\zlib\uncompr.c \ - etc\c\zlib\zutil.c - -$(LIB) : $(SRC_TO_COMPILE) \ - $(ZLIB) $(DRUNTIMELIB) win32.mak win64.mak - "$(DMD)" -lib -of$(LIB) -Xfphobos.json $(DFLAGS) $(SRC_TO_COMPILE) \ - $(ZLIB) $(DRUNTIMELIB) - -UNITTEST_OBJS= \ - unittest1.obj \ - unittest2.obj \ - unittest2a.obj \ - unittest3.obj \ - unittest3b.obj \ - unittest3c.obj \ - unittest3d.obj \ - unittest4.obj \ - unittest5a.obj \ - unittest5b.obj \ - unittest5c.obj \ - unittest5d.obj \ - unittest5e.obj \ - unittest6a.obj \ - unittest6c.obj \ - unittest6e.obj \ - unittest6g.obj \ - unittest6h.obj \ - unittest6i.obj \ - unittest7.obj \ - unittest7a.obj \ - unittest8a.obj \ - unittest8b.obj \ - unittest8c.obj \ - unittest8d.obj \ - unittest8e.obj \ - unittest8f.obj \ - unittest9.obj - -unittest : $(LIB) - "$(DMD)" $(UDFLAGS) -c -ofunittest1.obj $(SRC_STD_1) - "$(DMD)" $(UDFLAGS) -c -ofunittest2.obj $(SRC_STD_RANGE) - "$(DMD)" $(UDFLAGS) -c -ofunittest2a.obj $(SRC_STD_2a) - "$(DMD)" $(UDFLAGS) -c -ofunittest3.obj $(SRC_STD_3) - "$(DMD)" $(UDFLAGS) -c -ofunittest3b.obj $(SRC_STD_3b) - "$(DMD)" $(UDFLAGS) -c -ofunittest3c.obj $(SRC_STD_3c) - "$(DMD)" $(UDFLAGS) -c -ofunittest3d.obj $(SRC_STD_3d) $(SRC_STD_DATETIME) - "$(DMD)" $(UDFLAGS) -c -ofunittest4.obj $(SRC_STD_4) $(SRC_STD_DIGEST) - "$(DMD)" $(UDFLAGS) -c -ofunittest5a.obj $(SRC_STD_ALGO_1) - "$(DMD)" $(UDFLAGS) -c -ofunittest5b.obj $(SRC_STD_ALGO_2) - "$(DMD)" $(UDFLAGS) -c -ofunittest5c.obj $(SRC_STD_ALGO_3) - "$(DMD)" $(UDFLAGS) -c -ofunittest5d.obj $(SRC_STD_FORMAT) - "$(DMD)" $(UDFLAGS) -c -ofunittest5e.obj $(SRC_STD_MATH) - "$(DMD)" $(UDFLAGS) -c -ofunittest6a.obj $(SRC_STD_6a) - "$(DMD)" $(UDFLAGS) -c -ofunittest6c.obj $(SRC_STD_6c) - "$(DMD)" $(UDFLAGS) -c -ofunittest6e.obj $(SRC_STD_6e) - "$(DMD)" $(UDFLAGS) -c -ofunittest6g.obj $(SRC_STD_CONTAINER) - "$(DMD)" $(UDFLAGS) -c -ofunittest6h.obj $(SRC_STD_6h) - "$(DMD)" $(UDFLAGS) -c -ofunittest6i.obj $(SRC_STD_6i) - "$(DMD)" $(UDFLAGS) -c -ofunittest7.obj $(SRC_STD_7) $(SRC_STD_LOGGER) - "$(DMD)" $(UDFLAGS) -c -ofunittest7a.obj $(SRC_STD_7a) - "$(DMD)" $(UDFLAGS) -c -ofunittest8a.obj $(SRC_STD_REGEX) - "$(DMD)" $(UDFLAGS) -c -ofunittest8b.obj $(SRC_STD_NET) - "$(DMD)" $(UDFLAGS) -c -ofunittest8c.obj $(SRC_STD_C) $(SRC_STD_WIN) $(SRC_STD_C_WIN) - "$(DMD)" $(UDFLAGS) -c -ofunittest8d.obj $(SRC_STD_INTERNAL) $(SRC_STD_INTERNAL_DIGEST) $(SRC_STD_INTERNAL_MATH) $(SRC_STD_INTERNAL_WINDOWS) - "$(DMD)" $(UDFLAGS) -c -ofunittest8e.obj $(SRC_ETC) $(SRC_ETC_C) - "$(DMD)" $(UDFLAGS) -c -ofunittest8f.obj $(SRC_STD_EXP) - "$(DMD)" $(UDFLAGS) -c -ofunittest9.obj $(SRC_STD_EXP_ALLOC) - "$(DMD)" $(UDFLAGS) unittest.d $(UNITTEST_OBJS) \ - $(ZLIB) $(DRUNTIMELIB) - .\unittest.exe - -#unittest : unittest.exe -# unittest -# -#unittest.exe : unittest.d $(LIB) -# $(DMD) -conf= unittest -g -# dmc unittest.obj -g - -cov : $(SRC_TO_COMPILE) $(LIB) - "$(DMD)" -conf= -m$(MODEL) -cov $(UDFLAGS) -ofcov.exe unittest.d $(SRC_TO_COMPILE) $(LIB) - cov - -###################################################### - -$(ZLIB): $(SRC_ZLIB) - cd etc\c\zlib - "$(MAKE)" -f win64.mak MODEL=$(MODEL) "CC=$(CC)" "AR=$(AR)" zlib$(MODEL).lib - cd ..\..\.. - -###################################################### - -zip: - del phobos.zip - zip32 -r phobos.zip . -x .git\* -x \*.lib -x \*.obj - -phobos.zip : zip - -clean: - cd etc\c\zlib - "$(MAKE)" -f win64.mak MODEL=$(MODEL) clean - cd ..\..\.. - del $(DOCS) - del $(UNITTEST_OBJS) unittest.obj unittest.exe - del $(LIB) - del phobos.json - -install: phobos.zip $(LIB) - copy /y /b $(LIB) $(DIR)\windows\lib - +rd/s/q $(DIR)\src\phobos - unzip -o phobos.zip -d $(DIR)\src\phobos - -auto-tester-build: - echo "Auto-Tester has been disabled" - -JOBS=$(NUMBER_OF_PROCESSORS) -GMAKE=gmake - -auto-tester-test: - echo "Auto-Tester has been disabled" From c444d08fa1646f5c5aad02b3b8b51c632aee991c Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 16 Dec 2023 19:43:55 +0100 Subject: [PATCH 131/327] Restore posix.mak, forwarding to generic Makefile --- posix.mak | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 posix.mak diff --git a/posix.mak b/posix.mak new file mode 100644 index 00000000000..bc94e485f0e --- /dev/null +++ b/posix.mak @@ -0,0 +1,11 @@ +$(warning ===== DEPRECATION NOTICE ===== ) +$(warning ===== DEPRECATION: posix.mak is deprecated. Please use generic Makefile instead.) +$(warning ============================== ) + +# forward everything to Makefile + +all: + $(MAKE) -f Makefile $@ + +%: + $(MAKE) -f Makefile $@ From 5b9a497a670d6ae5d2786f0c30d1914e3292bb02 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 16 Dec 2023 19:44:16 +0100 Subject: [PATCH 132/327] Add changelog entry --- changelog/makefiles.dd | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelog/makefiles.dd diff --git a/changelog/makefiles.dd b/changelog/makefiles.dd new file mode 100644 index 00000000000..6fb38d7f4e1 --- /dev/null +++ b/changelog/makefiles.dd @@ -0,0 +1,5 @@ +Makefiles cleanup + +The `{posix,win32,win64}.mak` Makefiles have been merged to a generic `Makefile`. `posix.mak` is kept as a deprecated forwarder for now. + +On Windows, you can/need to use the generic Makefile too - with a GNU make (and a git installation providing bash and GNU tools). Windows devs can finally exploit parallelism via `-j`! You may download a prebuilt zipped .exe from https://github.com/dlang/dmd/releases/download/nightly/gnumake-4.4-win64.zip. From d49d0c5d5ebb9970ec034ad5d820d1e58feb48cc Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 16 Dec 2023 20:52:22 +0100 Subject: [PATCH 133/327] Makefile: Compile zlib .c files with DMD via importC --- Makefile | 47 ++++++++--------------------------------------- 1 file changed, 8 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index 2d6fdaadb10..9d767d1c41b 100644 --- a/Makefile +++ b/Makefile @@ -101,58 +101,27 @@ else DRUNTIME = $(DRUNTIME_PATH)/../generated/$(OS)/$(BUILD)/$(MODEL)/druntime.lib endif -# Set CC and DMD +# Set DMD ifeq ($(OS),win32wine) - CC = wine dmc.exe DMD = wine dmd.exe RUN = wine else DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd$(DOTEXE) - ifeq ($(MODEL),32omf) - CC = dmc - else ifeq ($(OS),windows) - CC = cl.exe - else - CC = cc - endif RUN = endif -# Set CFLAGS -OUTFILEFLAG = -o +# Set extra CFLAGS (for DMD - the zlib .c files are compiled via importC) NODEFAULTLIB=-defaultlib= -debuglib= +CFLAGS=-P=-Ietc/c/zlib ifeq (,$(findstring win,$(OS))) - CFLAGS=$(MODEL_FLAG) -fPIC -std=c11 -DHAVE_UNISTD_H + CFLAGS += -P=-DHAVE_UNISTD_H # Bundled with the system library on OSX, and doesn't work with >= MacOS 11 ifneq (osx,$(OS)) NODEFAULTLIB += -L-lpthread -L-lm endif - ifeq ($(BUILD),debug) - CFLAGS += -g - else - CFLAGS += -O3 - endif else ifeq ($(MODEL),32omf) - CFLAGS=-DNO_snprintf - ifeq ($(BUILD),debug) - CFLAGS += -g - else - CFLAGS += -O - endif - else # win64/win32coff - OUTFILEFLAG = /Fo - CFLAGS += /nologo /Zl /GS- - ifeq ($(BUILD),debug) - CFLAGS += /Z7 - else - CFLAGS += /O2 - endif - endif -endif -ifeq (osx,$(OS)) - ifeq (64,$(MODEL)) - CFLAGS+=--target=x86_64-darwin-apple # ARM cpu is not supported by dmd + CFLAGS += -P=-DNO_snprintf endif endif @@ -350,9 +319,9 @@ endif lib: $(LIB) dll: $(ROOT)/libphobos2.so -$(ROOT)/%$(DOTOBJ): %.c - @[ -d $(dir $@) ] || mkdir -p $(dir $@) || [ -d $(dir $@) ] - $(CC) -c $(CFLAGS) $< $(OUTFILEFLAG)$@ +# compile zlib .c files via importC; the druntime dependency makes sure DMD has been built +$(ROOT)/%$(DOTOBJ): %.c $(DRUNTIME) + $(DMD) -c $(DFLAGS) $(CFLAGS) -of$@ $< $(LIB): $(OBJS) $(ALL_D_FILES) $(DRUNTIME) $(DMD) $(DFLAGS) -lib -of$@ $(DRUNTIME) $(D_FILES) $(OBJS) From 95f0956288934650c83f00d206393d0a129f6278 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Tue, 19 Dec 2023 03:11:18 +0100 Subject: [PATCH 134/327] zlib: Add importC special case for va_start() on Win64 This fixes an undefined `__va_start` symbol for the zlib parts, a problem on Win64 only so far. The Microsoft headers use something like this (`vadefs.h`) for x86_64: ``` void __cdecl __va_start(va_list* , ...); ``` The signature of their intrinsic isn't compatible with druntime's `va_start` (which takes the first param as `out` ref, not as explicit pointer), so I sadly don't see a way to handle this in druntime's `__builtins.di` (or `importc.h`). --- etc/c/zlib/gzwrite.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/etc/c/zlib/gzwrite.c b/etc/c/zlib/gzwrite.c index a8ffc8f53da..9d74514a881 100644 --- a/etc/c/zlib/gzwrite.c +++ b/etc/c/zlib/gzwrite.c @@ -465,7 +465,12 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) va_list va; int ret; +// needed on Win64 - MS __va_start intrinsic not supported by importC yet +#if __IMPORTC__ + __builtin_va_start(va, format); +#else va_start(va, format); +#endif ret = gzvprintf(file, format, va); va_end(va); return ret; From ce1da546318a7aac9877b7be5d6fc83735835b9c Mon Sep 17 00:00:00 2001 From: Danil Sidoruk Date: Wed, 20 Dec 2023 17:52:25 +0300 Subject: [PATCH 135/327] Fix issue 24075 - Can't use toChars with ushort or ubyte --- std/conv.d | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/std/conv.d b/std/conv.d index 3a533814894..7096c973665 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5712,8 +5712,8 @@ private auto hexStrLiteral(String)(scope String hexData) * radix = 2, 8, 10, 16 * Char = character type for output * letterCase = lower for deadbeef, upper for DEADBEEF - * value = integer to convert. Can be uint or ulong. If radix is 10, can also be - * int or long. + * value = integer to convert. Can be ubyte, ushort, uint or ulong. If radix + * is 10, can also be byte, short, int or long. * Returns: * Random access range with slicing and everything */ @@ -5721,8 +5721,10 @@ private auto hexStrLiteral(String)(scope String hexData) auto toChars(ubyte radix = 10, Char = char, LetterCase letterCase = LetterCase.lower, T)(T value) pure nothrow @nogc @safe if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && - (is(immutable T == immutable uint) || is(immutable T == immutable ulong) || - radix == 10 && (is(immutable T == immutable int) || is(immutable T == immutable long)))) + (is(immutable T == immutable ubyte) || is(immutable T == immutable ushort) || is( + immutable T == immutable uint) || is(immutable T == immutable ulong) || + radix == 10 && (is(immutable T == immutable byte) || is(immutable T == immutable short) || is( + immutable T == immutable int) || is(immutable T == immutable long)))) { alias UT = Unqual!T; From db91b6ccbc23732dba9f36d679a8012791a2c908 Mon Sep 17 00:00:00 2001 From: Danil Sidoruk Date: Wed, 20 Dec 2023 17:52:59 +0300 Subject: [PATCH 136/327] Add unittests for ubyte, ushort, byte, short overloads of conv.toChars --- std/conv.d | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/std/conv.d b/std/conv.d index 7096c973665..3d337417570 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5872,8 +5872,12 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(toChars(123) == toChars(123)); { + assert(toChars!2(cast(ubyte) 0).array == "0"); + assert(toChars!2(cast(ushort) 0).array == "0"); assert(toChars!2(0u).array == "0"); assert(toChars!2(0Lu).array == "0"); + assert(toChars!2(cast(ubyte) 1).array == "1"); + assert(toChars!2(cast(ushort) 1).array == "1"); assert(toChars!2(1u).array == "1"); assert(toChars!2(1Lu).array == "1"); @@ -5886,10 +5890,14 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(s.retro.array == "01"); } { + assert(toChars!8(cast(ubyte) 0).array == "0"); + assert(toChars!8(cast(ushort) 0).array == "0"); assert(toChars!8(0u).array == "0"); assert(toChars!8(0Lu).array == "0"); assert(toChars!8(1u).array == "1"); assert(toChars!8(1234567Lu).array == "4553207"); + assert(toChars!8(ubyte.max).array == "377"); + assert(toChars!8(ushort.max).array == "177777"); auto r = toChars!8(8u); assert(r.length == 2); @@ -5900,10 +5908,14 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(s.retro.array == "01"); } { + assert(toChars!10(cast(ubyte) 0).array == "0"); + assert(toChars!10(cast(ushort) 0).array == "0"); assert(toChars!10(0u).array == "0"); assert(toChars!10(0Lu).array == "0"); assert(toChars!10(1u).array == "1"); assert(toChars!10(1234567Lu).array == "1234567"); + assert(toChars!10(ubyte.max).array == "255"); + assert(toChars!10(ushort.max).array == "65535"); assert(toChars!10(uint.max).array == "4294967295"); assert(toChars!10(ulong.max).array == "18446744073709551615"); @@ -5920,10 +5932,16 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(toChars!10(0L).array == "0"); assert(toChars!10(1).array == "1"); assert(toChars!10(1234567L).array == "1234567"); + assert(toChars!10(byte.max).array == "127"); + assert(toChars!10(short.max).array == "32767"); assert(toChars!10(int.max).array == "2147483647"); assert(toChars!10(long.max).array == "9223372036854775807"); + assert(toChars!10(-byte.max).array == "-127"); + assert(toChars!10(-short.max).array == "-32767"); assert(toChars!10(-int.max).array == "-2147483647"); assert(toChars!10(-long.max).array == "-9223372036854775807"); + assert(toChars!10(byte.min).array == "-128"); + assert(toChars!10(short.min).array == "-32768"); assert(toChars!10(int.min).array == "-2147483648"); assert(toChars!10(long.min).array == "-9223372036854775808"); @@ -5940,6 +5958,10 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(toChars!(16)(0Lu).array == "0"); assert(toChars!(16)(10u).array == "a"); assert(toChars!(16, char, LetterCase.upper)(0x12AF34567Lu).array == "12AF34567"); + assert(toChars!(16)(cast(ubyte) 0).array == "0"); + assert(toChars!(16)(cast (ushort) 0).array == "0"); + assert(toChars!(16)(ubyte.max).array == "ff"); + assert(toChars!(16)(ushort.max).array == "ffff"); auto r = toChars!(16)(16u); assert(r.length == 2); From 5e93d4f9c9f0a17fdf6f222c9ff8153b16aa01c1 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Thu, 21 Dec 2023 14:29:34 +0000 Subject: [PATCH 137/327] [std.datetime] Tweak docs Add links to package.d. Tweak formatting for SysTime, use PANEL. Use REF_SHORT after first reference. List TimeOfDay cast target. Move currTime link to See Also. Fix anchor for currTime - need `.` prefix before fully-qualified names. Part of Issue 24288. --- std/datetime/package.d | 10 +++--- std/datetime/systime.d | 70 +++++++++++++++++++++++++++--------------- 2 files changed, 51 insertions(+), 29 deletions(-) diff --git a/std/datetime/package.d b/std/datetime/package.d index 8e9f5ae83be..58e71e5aa08 100644 --- a/std/datetime/package.d +++ b/std/datetime/package.d @@ -12,6 +12,7 @@ $(TR $(TD Points in Time) $(TD + $(REF_ALTTEXT Clock, Clock, std, datetime, systime)$(NBSP) $(REF_ALTTEXT Date, Date, std, datetime, date)$(NBSP) $(REF_ALTTEXT TimeOfDay, TimeOfDay, std, datetime, date)$(NBSP) $(REF_ALTTEXT DateTime, DateTime, std, datetime, date)$(NBSP) @@ -19,7 +20,7 @@ ) ) $(TR - $(TD Timezones) + $(TD $(MREF_ALTTEXT Timezones, std, datetime, timezone)) $(TD $(REF_ALTTEXT TimeZone, TimeZone, std, datetime, timezone)$(NBSP) $(REF_ALTTEXT UTC, UTC, std, datetime, timezone)$(NBSP) @@ -38,7 +39,7 @@ ) ) $(TR - $(TD Durations of Time) + $(TD $(MREF_ALTTEXT Durations of Time, core, time)) $(TD $(REF_ALTTEXT Duration, Duration, core, time)$(NBSP) $(REF_ALTTEXT weeks, weeks, core, time)$(NBSP) @@ -62,7 +63,7 @@ ) )) - This functionality is separated into the following modules + This functionality is separated into the following modules: $(UL $(LI $(MREF std, datetime, date) for points in time without timezones.) @@ -73,6 +74,7 @@ ) See_Also: + $(MREF core, time)$(BR) $(DDLINK intro-to-datetime, Introduction to std.datetime, Introduction to std.datetime)
$(HTTP en.wikipedia.org/wiki/ISO_8601, ISO 8601)
@@ -87,7 +89,7 @@ +/ module std.datetime; -/// Get the current time from the system clock +/// Get the current time from the system clock. @safe unittest { import std.datetime.systime : SysTime, Clock; diff --git a/std/datetime/systime.d b/std/datetime/systime.d index 6898934f809..4ca56934ee8 100644 --- a/std/datetime/systime.d +++ b/std/datetime/systime.d @@ -2,7 +2,6 @@ /++ -$(SCRIPT inhibitQuickIndex = 1;) $(DIVC quickindex, $(BOOKTABLE, $(TR $(TH Category) $(TH Functions)) @@ -468,30 +467,38 @@ private: `SysTime` (though for local time applications, time zones can be ignored and it will work, since it defaults to using the local time zone). It holds its internal time in std time (hnsecs since midnight, January 1st, 1 A.D. - UTC), so it interfaces well with the system time. However, that means that, - unlike $(REF DateTime,std,datetime,date), it is not optimized for - calendar-based operations, and getting individual units from it such as - years or days is going to involve conversions and be less efficient. + UTC), so it interfaces well with the system time. An $(I hnsec) (hecto-nanosecond) is 100 nanoseconds. There are 10,000,000 hnsecs in a second. +$(PANEL + Unlike $(REF_SHORT DateTime,std,datetime,date), `SysTime` is not optimized for + calendar-based operations, and getting individual units from it such as + years or days is going to involve conversions and be less efficient. + For calendar-based operations that don't - care about time zones, then $(REF DateTime,std,datetime,date) would be + care about time zones, then $(REF_SHORT DateTime,std,datetime,date) would be the type to use. For system time, use `SysTime`. - - $(LREF Clock.currTime) will return the current time as a `SysTime`. - To convert a `SysTime` to a $(REF Date,std,datetime,date) or - $(REF DateTime,std,datetime,date), simply cast it. To convert a - $(REF Date,std,datetime,date) or $(REF DateTime,std,datetime,date) to a +) +$(P + Casting a `SysTime` to one of the following types will perform a conversion: +) + * $(REF Date,std,datetime,date) + * $(REF_SHORT DateTime,std,datetime,date) + * $(REF_SHORT TimeOfDay,std,datetime,date) +$(P + To convert a + $(REF_SHORT Date,std,datetime,date) or $(REF_SHORT DateTime,std,datetime,date) to a `SysTime`, use `SysTime`'s constructor, and pass in the intended time zone with it (or don't pass in a $(REF TimeZone,std,datetime,timezone), and the local time zone will be used). Be aware, however, that converting from a - $(REF DateTime,std,datetime,date) to a `SysTime` will not necessarily + $(REF_SHORT DateTime,std,datetime,date) to a `SysTime` will not necessarily be 100% accurate due to DST (one hour of the year doesn't exist and another occurs twice). To not risk any conversion errors, keep times as `SysTime`s. Aside from DST though, there shouldn't be any conversion problems. - +) +$(PANEL For using time zones other than local time or UTC, use $(REF PosixTimeZone,std,datetime,timezone) on Posix systems (or on Windows, if providing the TZ Database files), and use @@ -499,16 +506,20 @@ private: `SysTime` is kept internally in hnsecs from midnight, January 1st, 1 A.D. UTC. Conversion error cannot happen when changing the time zone of a `SysTime`. $(REF LocalTime,std,datetime,timezone) is the - $(REF TimeZone,std,datetime,timezone) class which represents the local time, - and `UTC` is the $(REF TimeZone,std,datetime,timezone) class which - represents UTC. `SysTime` uses $(REF LocalTime,std,datetime,timezone) if - no $(REF TimeZone,std,datetime,timezone) is provided. For more details on - time zones, see the documentation for $(REF TimeZone,std,datetime,timezone), - $(REF PosixTimeZone,std,datetime,timezone), and - $(REF WindowsTimeZone,std,datetime,timezone). - + $(REF_SHORT TimeZone,std,datetime,timezone) class which represents the local time, + and `UTC` is the $(REF_SHORT TimeZone,std,datetime,timezone) class which + represents UTC. `SysTime` uses $(REF_SHORT LocalTime,std,datetime,timezone) if + no $(REF_SHORT TimeZone,std,datetime,timezone) is provided. For more details on + time zones, see the documentation for $(REF_SHORT TimeZone,std,datetime,timezone), + $(REF_SHORT PosixTimeZone,std,datetime,timezone), and + $(REF_SHORT WindowsTimeZone,std,datetime,timezone). +) +$(P `SysTime`'s range is from approximately 29,000 B.C. to approximately 29,000 A.D. +) +See_Also: + $(RELATIVE_LINK2 .Clock.currTime, `Clock.currTime`) will return the current time as a `SysTime`. +/ struct SysTime { @@ -9677,13 +9688,22 @@ private: import std.datetime.date : DateTime; import std.datetime.timezone : SimpleTimeZone, UTC; + const dt = DateTime(2018, 1, 1, 10, 30, 0); // make a specific point in time in the UTC timezone - auto st = SysTime(DateTime(2018, 1, 1, 10, 30, 0), UTC()); + auto st = SysTime(dt, UTC()); + assert(st.year == 2018); + assert(st.hour == 10); + + // cast to convert + assert(cast(DateTime) st == dt); + assert(cast(Date) st == Date(2018, 1, 1)); + // make a specific point in time in the New York timezone - auto ny = SysTime( - DateTime(2018, 1, 1, 10, 30, 0), + const ny = SysTime(dt, new immutable SimpleTimeZone(-5.hours, "America/New_York") ); + assert(ny != st); + assert(ny.hour == 10); // ISO standard time strings assert(st.toISOString() == "20180101T103000Z"); @@ -9775,7 +9795,7 @@ long unixTimeToStdTime(long unixTime) @safe pure nothrow @nogc "std time"'s epoch is based on the Proleptic Gregorian Calendar per ISO 8601 and is what $(LREF SysTime) uses internally. However, holding the time - as an integer in hnescs since that epoch technically isn't actually part of + as an integer in hnsecs since that epoch technically isn't actually part of the standard, much as it's based on it, so the name "std time" isn't particularly good, but there isn't an official name for it. C# uses "ticks" for the same thing, but they aren't actually clock ticks, and the term From f41348cda418561ed381f2815e06940a09d03f24 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Fri, 22 Dec 2023 01:49:31 +0100 Subject: [PATCH 138/327] Makefile: Slightly simplify recursive make invocations No need to be explicit about the Makefile name. --- Makefile | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 2d6fdaadb10..9f5267e2c9e 100644 --- a/Makefile +++ b/Makefile @@ -304,8 +304,6 @@ C_MODULES = $(addprefix etc/c/zlib/, adler32 compress crc32 deflate \ OBJS = $(addsuffix $(DOTOBJ),$(addprefix $(ROOT)/,$(C_MODULES))) -MAKEFILE = $(firstword $(MAKEFILE_LIST)) - # build with shared library support (defaults to true on supported platforms) SHARED=$(if $(findstring $(OS),linux freebsd),1,) @@ -329,7 +327,7 @@ install: echo "Darwin_64_32_disabled" else install : - $(MAKE) -f $(MAKEFILE) OS=$(OS) MODEL=$(MODEL) BUILD=release INSTALL_DIR=$(INSTALL_DIR) \ + $(MAKE) OS=$(OS) MODEL=$(MODEL) BUILD=release INSTALL_DIR=$(INSTALL_DIR) \ DMD=$(DMD) install2 endif @@ -339,7 +337,7 @@ unittest : $(addsuffix .run,$(addprefix unittest/,$(D_MODULES))) else unittest : unittest-debug unittest-release unittest-%: - $(MAKE) -f $(MAKEFILE) unittest OS=$(OS) MODEL=$(MODEL) DMD=$(DMD) BUILD=$* + $(MAKE) unittest OS=$(OS) MODEL=$(MODEL) DMD=$(DMD) BUILD=$* endif ################################################################################ @@ -371,8 +369,8 @@ ifeq (osx,$(OS)) # Build fat library that combines the 32 bit and the 64 bit libraries libphobos2.a: $(ROOT_OF_THEM_ALL)/osx/release/libphobos2.a $(ROOT_OF_THEM_ALL)/osx/release/libphobos2.a: - $(MAKE) -f $(MAKEFILE) OS=$(OS) MODEL=32 BUILD=release - $(MAKE) -f $(MAKEFILE) OS=$(OS) MODEL=64 BUILD=release + $(MAKE) OS=$(OS) MODEL=32 BUILD=release + $(MAKE) OS=$(OS) MODEL=64 BUILD=release lipo $(ROOT_OF_THEM_ALL)/osx/release/32/libphobos2.a \ $(ROOT_OF_THEM_ALL)/osx/release/64/libphobos2.a \ -create -output $@ @@ -444,7 +442,7 @@ unittest/%.run : $(ROOT)/unittest/test_runner$(DOTEXE) # Target for quickly unittesting all modules and packages within a package, # transitively. For example: "make std/algorithm.test" %.test : $(LIB) - $(MAKE) -f $(MAKEFILE) $(addsuffix .test,$(patsubst %.d,%,$(wildcard $*/*))) + $(MAKE) $(addsuffix .test,$(patsubst %.d,%,$(wildcard $*/*))) # Recursive target for %.debug # It has to be recursive as %.debug depends on $(LIB) and we don't want to @@ -460,7 +458,7 @@ unittest/%.run : $(ROOT)/unittest/test_runner$(DOTEXE) # For example: make DEBUGGER=ddd std/format.debug # ddd in this case is a graphical frontend to gdb %.debug : %.d - BUILD=debug $(MAKE) -f $(MAKEFILE) $(basename $<).debug_with_debugger + BUILD=debug $(MAKE) $(basename $<).debug_with_debugger ################################################################################ # More stuff From 096dee19e027996ec052e63ec5cd3dc486876ed8 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sun, 24 Dec 2023 17:51:05 +0100 Subject: [PATCH 139/327] Remove regex usage from std.net.curl --- std/net/curl.d | 58 +++++++++++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/std/net/curl.d b/std/net/curl.d index 2fcbf943122..6aec366c657 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -2419,8 +2419,8 @@ struct HTTP @system @property void onReceiveHeader(void delegate(in char[] key, in char[] value) callback) { - import std.algorithm.searching : startsWith; - import std.regex : regex, match; + import std.algorithm.searching : findSplit, startsWith; + import std.string : indexOf, chomp; import std.uni : toLower; // Wrap incoming callback in order to separate http status line from @@ -2447,21 +2447,18 @@ struct HTTP return; } - // Normal http header - auto m = match(cast(char[]) header, regex("(.*?): (.*)$")); - - auto fieldName = m.captures[1].toLower().idup; + auto m = header.findSplit(": "); + auto fieldName = m[0].toLower(); + auto fieldContent = m[2].chomp; if (fieldName == "content-type") { - auto mct = match(cast(char[]) m.captures[2], - regex("charset=([^;]*)", "i")); - if (!mct.empty && mct.captures.length > 1) - charset = mct.captures[1].idup; + auto io = indexOf(fieldContent, "charset=", No.caseSensitive); + if (io != -1) + charset = fieldContent[io + "charset=".length .. $].findSplit(";")[0].idup; } - - if (!m.empty && callback !is null) - callback(fieldName, m.captures[2]); - headersIn[fieldName] = m.captures[2].idup; + if (!m[1].empty && callback !is null) + callback(fieldName, fieldContent); + headersIn[fieldName] = fieldContent.idup; } catch (UTFException e) { @@ -2479,20 +2476,27 @@ struct HTTP /// Parse status line, as received from / generated by cURL. private static bool parseStatusLine(const char[] header, out StatusLine status) @safe { - import std.conv : to; - import std.regex : regex, match; + import std.algorithm.searching : findSplit, startsWith; + import std.conv : to, ConvException; - const m = match(header, regex(r"^HTTP/(\d+)(?:\.(\d+))? (\d+)(?: (.*))?$")); - if (m.empty) - return false; // Invalid status line - else + if (!header.startsWith("HTTP/")) + return false; + + try { - status.majorVersion = to!ushort(m.captures[1]); - status.minorVersion = m.captures[2].length ? to!ushort(m.captures[2]) : 0; - status.code = to!ushort(m.captures[3]); - status.reason = m.captures[4].idup; + const m = header["HTTP/".length .. $].findSplit(" "); + const v = m[0].findSplit("."); + status.majorVersion = to!ushort(v[0]); + status.minorVersion = v[1].length ? to!ushort(v[2]) : 0; + const s2 = m[2].findSplit(" "); + status.code = to!ushort(s2[0]); + status.reason = s2[2].idup; return true; } + catch (ConvException e) + { + return false; + } } @safe unittest @@ -2505,6 +2509,12 @@ struct HTTP // The HTTP2 protocol is binary; cURL generates this fake text header. assert(parseStatusLine("HTTP/2 200", status) && status == StatusLine(2, 0, 200, null)); + + assert(!parseStatusLine("HTTP/2", status)); + assert(!parseStatusLine("HTTP/2 -1", status)); + assert(!parseStatusLine("HTTP/2 200", status)); + assert(!parseStatusLine("HTTP/2.X 200", status)); + assert(!parseStatusLine("HTTP|2 200", status)); } /** Time condition enumeration as an alias of $(REF CurlTimeCond, etc,c,curl) From 7d012ab076d643c56f3f75f543456ab6229996d7 Mon Sep 17 00:00:00 2001 From: Danil Sidoruk Date: Sun, 24 Dec 2023 20:57:45 +0300 Subject: [PATCH 140/327] Replace case (type) num -> type(num) --- std/conv.d | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/std/conv.d b/std/conv.d index 3d337417570..310598998e4 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5872,12 +5872,12 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(toChars(123) == toChars(123)); { - assert(toChars!2(cast(ubyte) 0).array == "0"); - assert(toChars!2(cast(ushort) 0).array == "0"); + assert(toChars!2(ubyte(0)).array == "0"); + assert(toChars!2(ushort(0)).array == "0"); assert(toChars!2(0u).array == "0"); assert(toChars!2(0Lu).array == "0"); - assert(toChars!2(cast(ubyte) 1).array == "1"); - assert(toChars!2(cast(ushort) 1).array == "1"); + assert(toChars!2(ubyte(1)).array == "1"); + assert(toChars!2(ushort(1)).array == "1"); assert(toChars!2(1u).array == "1"); assert(toChars!2(1Lu).array == "1"); @@ -5890,8 +5890,8 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(s.retro.array == "01"); } { - assert(toChars!8(cast(ubyte) 0).array == "0"); - assert(toChars!8(cast(ushort) 0).array == "0"); + assert(toChars!8(ubyte(0)).array == "0"); + assert(toChars!8(ushort(0)).array == "0"); assert(toChars!8(0u).array == "0"); assert(toChars!8(0Lu).array == "0"); assert(toChars!8(1u).array == "1"); @@ -5908,8 +5908,8 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(s.retro.array == "01"); } { - assert(toChars!10(cast(ubyte) 0).array == "0"); - assert(toChars!10(cast(ushort) 0).array == "0"); + assert(toChars!10(ubyte(0)).array == "0"); + assert(toChars!10(ushort(0)).array == "0"); assert(toChars!10(0u).array == "0"); assert(toChars!10(0Lu).array == "0"); assert(toChars!10(1u).array == "1"); @@ -5958,8 +5958,8 @@ if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && assert(toChars!(16)(0Lu).array == "0"); assert(toChars!(16)(10u).array == "a"); assert(toChars!(16, char, LetterCase.upper)(0x12AF34567Lu).array == "12AF34567"); - assert(toChars!(16)(cast(ubyte) 0).array == "0"); - assert(toChars!(16)(cast (ushort) 0).array == "0"); + assert(toChars!(16)(ubyte(0)).array == "0"); + assert(toChars!(16)(ushort(0)).array == "0"); assert(toChars!(16)(ubyte.max).array == "ff"); assert(toChars!(16)(ushort.max).array == "ffff"); From 3972c7cfd358d845e522464fccd4609f24dfd523 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 29 Dec 2023 13:41:09 +0000 Subject: [PATCH 141/327] Fix import --- std/datetime/systime.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/datetime/systime.d b/std/datetime/systime.d index 4ca56934ee8..a1d8ef3604f 100644 --- a/std/datetime/systime.d +++ b/std/datetime/systime.d @@ -9685,7 +9685,7 @@ private: @safe unittest { import core.time : days, hours, seconds; - import std.datetime.date : DateTime; + import std.datetime.date : Date, DateTime; import std.datetime.timezone : SimpleTimeZone, UTC; const dt = DateTime(2018, 1, 1, 10, 30, 0); From b29f127886de80351eedf4331f07e10384c823ca Mon Sep 17 00:00:00 2001 From: Dennis Date: Sat, 30 Dec 2023 15:22:21 +0100 Subject: [PATCH 142/327] Update std/conv.d --- std/conv.d | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/std/conv.d b/std/conv.d index 310598998e4..23b33c4d78c 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5721,10 +5721,7 @@ private auto hexStrLiteral(String)(scope String hexData) auto toChars(ubyte radix = 10, Char = char, LetterCase letterCase = LetterCase.lower, T)(T value) pure nothrow @nogc @safe if ((radix == 2 || radix == 8 || radix == 10 || radix == 16) && - (is(immutable T == immutable ubyte) || is(immutable T == immutable ushort) || is( - immutable T == immutable uint) || is(immutable T == immutable ulong) || - radix == 10 && (is(immutable T == immutable byte) || is(immutable T == immutable short) || is( - immutable T == immutable int) || is(immutable T == immutable long)))) + isIntegral!T && (radix == 10 || isUnsigned!T)) { alias UT = Unqual!T; From 677ee33b21761a5bce19198c1f2c7b688d17b674 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Mon, 1 Jan 2024 18:20:14 +0100 Subject: [PATCH 143/327] Revert "Makefile: Compile zlib .c files with DMD via importC" --- Makefile | 47 ++++++++++++++++++++++++++++++++++++-------- etc/c/zlib/gzwrite.c | 5 ----- 2 files changed, 39 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 3dc4c8520dd..9f5267e2c9e 100644 --- a/Makefile +++ b/Makefile @@ -101,27 +101,58 @@ else DRUNTIME = $(DRUNTIME_PATH)/../generated/$(OS)/$(BUILD)/$(MODEL)/druntime.lib endif -# Set DMD +# Set CC and DMD ifeq ($(OS),win32wine) + CC = wine dmc.exe DMD = wine dmd.exe RUN = wine else DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd$(DOTEXE) + ifeq ($(MODEL),32omf) + CC = dmc + else ifeq ($(OS),windows) + CC = cl.exe + else + CC = cc + endif RUN = endif -# Set extra CFLAGS (for DMD - the zlib .c files are compiled via importC) +# Set CFLAGS +OUTFILEFLAG = -o NODEFAULTLIB=-defaultlib= -debuglib= -CFLAGS=-P=-Ietc/c/zlib ifeq (,$(findstring win,$(OS))) - CFLAGS += -P=-DHAVE_UNISTD_H + CFLAGS=$(MODEL_FLAG) -fPIC -std=c11 -DHAVE_UNISTD_H # Bundled with the system library on OSX, and doesn't work with >= MacOS 11 ifneq (osx,$(OS)) NODEFAULTLIB += -L-lpthread -L-lm endif + ifeq ($(BUILD),debug) + CFLAGS += -g + else + CFLAGS += -O3 + endif else ifeq ($(MODEL),32omf) - CFLAGS += -P=-DNO_snprintf + CFLAGS=-DNO_snprintf + ifeq ($(BUILD),debug) + CFLAGS += -g + else + CFLAGS += -O + endif + else # win64/win32coff + OUTFILEFLAG = /Fo + CFLAGS += /nologo /Zl /GS- + ifeq ($(BUILD),debug) + CFLAGS += /Z7 + else + CFLAGS += /O2 + endif + endif +endif +ifeq (osx,$(OS)) + ifeq (64,$(MODEL)) + CFLAGS+=--target=x86_64-darwin-apple # ARM cpu is not supported by dmd endif endif @@ -317,9 +348,9 @@ endif lib: $(LIB) dll: $(ROOT)/libphobos2.so -# compile zlib .c files via importC; the druntime dependency makes sure DMD has been built -$(ROOT)/%$(DOTOBJ): %.c $(DRUNTIME) - $(DMD) -c $(DFLAGS) $(CFLAGS) -of$@ $< +$(ROOT)/%$(DOTOBJ): %.c + @[ -d $(dir $@) ] || mkdir -p $(dir $@) || [ -d $(dir $@) ] + $(CC) -c $(CFLAGS) $< $(OUTFILEFLAG)$@ $(LIB): $(OBJS) $(ALL_D_FILES) $(DRUNTIME) $(DMD) $(DFLAGS) -lib -of$@ $(DRUNTIME) $(D_FILES) $(OBJS) diff --git a/etc/c/zlib/gzwrite.c b/etc/c/zlib/gzwrite.c index 9d74514a881..a8ffc8f53da 100644 --- a/etc/c/zlib/gzwrite.c +++ b/etc/c/zlib/gzwrite.c @@ -465,12 +465,7 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) va_list va; int ret; -// needed on Win64 - MS __va_start intrinsic not supported by importC yet -#if __IMPORTC__ - __builtin_va_start(va, format); -#else va_start(va, format); -#endif ret = gzvprintf(file, format, va); va_end(va); return ret; From 03a961d5a5ce007bd807e5995c618a24d5dda4d7 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 4 Jan 2024 16:36:55 +0000 Subject: [PATCH 144/327] std.typecons: Refactor a unit test for clarity --- std/typecons.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/std/typecons.d b/std/typecons.d index 67a1ede8148..64053bfe3f1 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -4088,16 +4088,16 @@ auto nullable(T)(T t) struct Test { - bool b; + bool initialized; - nothrow invariant { assert(b == true); } + nothrow invariant { assert(initialized); } SysTime _st; static bool destroyed; @disable this(); - this(bool b) { this.b = b; } + this(int _dummy) { this.initialized = true; } ~this() @safe { destroyed = true; } // mustn't call opAssign on Test.init in Nullable!Test, because the invariant @@ -4109,7 +4109,7 @@ auto nullable(T)(T t) { Nullable!Test nt; - nt = Test(true); + nt = Test(1); // destroy value Test.destroyed = false; From bc2ad7528995efb5c5f582f1d2e3fb5aea172878 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 4 Jan 2024 16:37:50 +0000 Subject: [PATCH 145/327] std.typecons: Allow calling destructor on default value in unittest Generally, if a type has a default value, it should be safe to assume that it's OK to call the destructor on a default-initialized variable. The converse is not compatible with `move`, and goes against implementing non-copyable types. --- std/typecons.d | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/std/typecons.d b/std/typecons.d index 64053bfe3f1..1f57870b322 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -4088,16 +4088,12 @@ auto nullable(T)(T t) struct Test { - bool initialized; - - nothrow invariant { assert(initialized); } - SysTime _st; static bool destroyed; @disable this(); - this(int _dummy) { this.initialized = true; } + this(int _dummy) {} ~this() @safe { destroyed = true; } // mustn't call opAssign on Test.init in Nullable!Test, because the invariant From 826b00ff58f42d9afcf84bc09c0d96bc1f9f96d8 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 4 Jan 2024 16:43:05 +0000 Subject: [PATCH 146/327] std.typecons: Avoid a copy in Nullable.opAssign Use `move` directly. --- std/typecons.d | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/std/typecons.d b/std/typecons.d index 1f57870b322..2b29858812f 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -3515,18 +3515,14 @@ struct Nullable(T) { import std.algorithm.mutation : moveEmplace, move; - // the lifetime of the value in copy shall be managed by - // this Nullable, so we must avoid calling its destructor. - auto copy = DontCallDestructorT(value); - if (_isNull) { // trusted since payload is known to be uninitialized. - () @trusted { moveEmplace(copy.payload, _value.payload); }(); + () @trusted { moveEmplace(value, _value.payload); }(); } else { - move(copy.payload, _value.payload); + move(value, _value.payload); } _isNull = false; return this; From 73a54e2fab7d83460e81b5d1ca186cfea9e16d44 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Thu, 4 Jan 2024 16:53:49 +0000 Subject: [PATCH 147/327] std.typecons: Support non-copyable types Fixes issue 24318. --- std/typecons.d | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/std/typecons.d b/std/typecons.d index 2b29858812f..13ae2941296 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -3256,11 +3256,19 @@ struct Nullable(T) * Params: * value = The value to initialize this `Nullable` with. */ - this(inout T value) inout - { - _value.payload = value; - _isNull = false; - } + static if (isCopyable!T) + this(inout T value) inout + { + _value.payload = value; + _isNull = false; + } + else + this(T value) inout + { + import std.algorithm.mutation : move; + _value.payload = move(value); + _isNull = false; + } static if (hasElaborateDestructor!T) { @@ -3273,6 +3281,9 @@ struct Nullable(T) } } + static if (!isCopyable!T) + @disable this(this); + else static if (__traits(hasPostblit, T)) { this(this) @@ -3511,7 +3522,7 @@ struct Nullable(T) * Params: * value = A value of type `T` to assign to this `Nullable`. */ - Nullable opAssign()(T value) + ref Nullable opAssign()(T value) return { import std.algorithm.mutation : moveEmplace, move; @@ -3600,12 +3611,14 @@ struct Nullable(T) alias back = front; /// ditto + static if (isCopyable!T) @property inout(typeof(this)) save() inout { return this; } /// ditto + static if (isCopyable!T) inout(typeof(this)) opIndex(size_t[2] dim) inout in (dim[0] <= length && dim[1] <= length && dim[1] >= dim[0]) { @@ -10668,6 +10681,21 @@ unittest assert(s2.get().b == 3); } +// https://issues.dlang.org/show_bug.cgi?id=24318 +@system unittest +{ + static struct S + { + @disable this(this); + int i; + } + + Nullable!S s = S(1); + assert(s.get().i == 1); + s = S(2); + assert(s.get().i == 2); +} + /// The old version of $(LREF SafeRefCounted), before $(LREF borrow) existed. /// Old code may be relying on `@safe`ty of some of the member functions which /// cannot be safe in the new scheme, and From 22365bf11a9fd20477495128261a975022fb3b2e Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Fri, 5 Jan 2024 16:27:20 +0100 Subject: [PATCH 148/327] Automatically download Unicode files for generator --- .gitignore | 2 + tools/unicode_table_generator.d | 167 ++++++++++++++++++++------------ 2 files changed, 105 insertions(+), 64 deletions(-) diff --git a/.gitignore b/.gitignore index 81d7f2bb1ff..3e463051c19 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,5 @@ obj/ .dub/ libphobos_* source/ + +tools/ucd* diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 0545a876418..e4a94bfbd9e 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -1,27 +1,47 @@ -//Written in the D programming language /** - gen_uni is a tool to automatically generate source code for unicode data structures. +This is a tool to automatically generate source code for unicode data structures. - To generate the tables use: - ``` - $ rdmd -m32 unicode_table_generator.d - $ rdmd -m64 unicode_table_generator.d --min - ``` +If not present, the script will automatically try to download the files from: https://www.unicode.org/Public - See the global ``UnicodeDatabaseDirectory`` for the latest version of the Unicode database that was used to generate the tables. +Make sure the current working directory is the /tools folder. - TODO: Support emitting of Turkic casefolding mappings +To update `std.internal.unicode*.d` files, run: +``` +rdmd -m32 unicode_table_generator.d +rdmd -m64 unicode_table_generator.d --min +``` - Authors: Dmitry Olshansky +The -m32 run will replace the files, while the -m64 run with --min will append 64-bit specific parts. +The 32-bit compilation of the generator is needed because it depends on 32-bit data structures defined in `std.uni`. +To make -m32 work on linux, you may need to grab a 32-bit `libphobos2.a` from `dmd2/linux/lib32` and pass it as argument: - License: Boost +``` +rdmd -m32 -Llibphobos2.a -defaultlib= unicode_table_generator.d +``` + +Pull Requests to untangle this complex bootstrap process are welcome! :) + +TODO: Support emitting of Turkic casefolding mappings + +Authors: Dmitry Olshansky + +License: Boost */ module std.unicode_table_generator; // this shouldn't be in std package, but stuff is package'd as that in std.uni. +/// Directory in which unicode files are downloaded +enum unicodeDir = "ucd-15-0-0/"; + +/// Url from which unicode files are downloaded +enum unicodeBaseUrl = "https://www.unicode.org/Public/15.0.0/ucd/"; + +/// Where to put generated files +enum outputDir = "../std/internal/"; + import std.uni, std.stdio, std.traits, std.typetuple, - std.exception, std.format, std.algorithm, std.typecons, - std.regex, std.range, std.conv, std.getopt; + std.exception, std.format, std.algorithm, std.typecons, + std.regex, std.range, std.conv, std.getopt, std.path; import std.file : exists; static import std.ascii, std.string; @@ -146,20 +166,56 @@ auto fullCaseEntry(dstring value, ubyte num, ubyte batch_size) } enum { - UnicodeDatabaseDirectory = "ucd-15/", - caseFoldingSrc = UnicodeDatabaseDirectory ~ "CaseFolding.txt", - blocksSrc = UnicodeDatabaseDirectory ~ "Blocks.txt", - propListSrc = UnicodeDatabaseDirectory ~ "PropList.txt", - graphemeSrc = UnicodeDatabaseDirectory ~ "auxiliary/GraphemeBreakProperty.txt", - emojiDataSrc = UnicodeDatabaseDirectory ~ "emoji/emoji-data.txt", - propertyValueAliases = UnicodeDatabaseDirectory ~ "PropertyValueAliases.txt", - corePropSrc = UnicodeDatabaseDirectory ~ "DerivedCoreProperties.txt", - normalizationPropSrc = UnicodeDatabaseDirectory ~ "DerivedNormalizationProps.txt", - scriptsSrc = UnicodeDatabaseDirectory ~ "Scripts.txt", - hangulSyllableSrc = UnicodeDatabaseDirectory ~ "HangulSyllableType.txt", - unicodeDataSrc = UnicodeDatabaseDirectory ~ "UnicodeData.txt", - compositionExclusionsSrc = UnicodeDatabaseDirectory ~ "CompositionExclusions.txt", - specialCasingSrc = UnicodeDatabaseDirectory ~ "SpecialCasing.txt" + caseFoldingSrc = "CaseFolding.txt", + blocksSrc = "Blocks.txt", + propListSrc = "PropList.txt", + graphemeSrc = "auxiliary/GraphemeBreakProperty.txt", + emojiDataSrc = "emoji/emoji-data.txt", + propertyValueAliases = "PropertyValueAliases.txt", + corePropSrc = "DerivedCoreProperties.txt", + normalizationPropSrc = "DerivedNormalizationProps.txt", + scriptsSrc = "Scripts.txt", + hangulSyllableSrc = "HangulSyllableType.txt", + unicodeDataSrc = "UnicodeData.txt", + compositionExclusionsSrc = "CompositionExclusions.txt", + specialCasingSrc = "SpecialCasing.txt" +} + +void ensureFilesAreDownloaded() +{ + import std.file : write, mkdirRecurse; + import std.net.curl : download; + import std.path : dirName, buildPath; + + string[] files = [ + caseFoldingSrc, + blocksSrc, + propListSrc, + graphemeSrc, + emojiDataSrc, + propertyValueAliases, + corePropSrc, + normalizationPropSrc, + scriptsSrc, + hangulSyllableSrc, + unicodeDataSrc, + compositionExclusionsSrc, + specialCasingSrc + ]; + + mkdirRecurse(unicodeDir); + foreach (string file; files) + { + string dest = unicodeDir.buildPath(file); + if (exists(dest)) + continue; + if (file.canFind("/")) + { + mkdirRecurse(dest.dirName); + } + writeln("downloading ", unicodeBaseUrl ~ file); + download(unicodeBaseUrl ~ file, dest); + } } enum HeaderComment = `//Written in the D programming language @@ -189,21 +245,13 @@ void main(string[] argv) if (minimal) mode = "a"; + ensureFilesAreDownloaded(); - if (!exists(UnicodeDatabaseDirectory)) - { - writeln("Did you forget to download the Unicode database tables?"); - writeln("Looking for them in: ", UnicodeDatabaseDirectory); - return; - } - - enum UnicodeTableDirectory = "../std/internal/"; - - auto baseSink = File(UnicodeTableDirectory ~ "unicode_tables.d", mode); - auto compSink = File(UnicodeTableDirectory ~ "unicode_comp.d", mode); - auto decompSink = File(UnicodeTableDirectory ~ "unicode_decomp.d", mode); - auto normSink = File(UnicodeTableDirectory ~ "unicode_norm.d", mode); - auto graphSink = File(UnicodeTableDirectory ~ "unicode_grapheme.d", mode); + auto baseSink = File(outputDir.buildPath("unicode_tables.d"), mode); + auto compSink = File(outputDir.buildPath("unicode_comp.d"), mode); + auto decompSink = File(outputDir.buildPath("unicode_decomp.d"), mode); + auto normSink = File(outputDir.buildPath("unicode_norm.d"), mode); + auto graphSink = File(outputDir.buildPath("unicode_grapheme.d"), mode); if (!minimal) { baseSink.writeln(HeaderComment); @@ -230,20 +278,20 @@ void main(string[] argv) graphSink.writeln("\npackage(std):\n"); } - loadBlocks(blocksSrc, blocks); - loadProperties(propListSrc, general); - loadProperties(corePropSrc, general); - loadProperties(scriptsSrc, scripts); - loadProperties(hangulSyllableSrc, hangul); - loadProperties(graphemeSrc, graphemeBreaks); - loadProperties(emojiDataSrc, emojiData); - loadPropertyAliases(propertyValueAliases); - - loadUnicodeData(unicodeDataSrc); - loadSpecialCasing(specialCasingSrc); - loadExclusions(compositionExclusionsSrc); - loadCaseFolding(caseFoldingSrc); - loadNormalization(normalizationPropSrc); + loadBlocks(unicodeDir.buildPath(blocksSrc), blocks); + loadProperties(unicodeDir.buildPath(propListSrc), general); + loadProperties(unicodeDir.buildPath(corePropSrc), general); + loadProperties(unicodeDir.buildPath(scriptsSrc), scripts); + loadProperties(unicodeDir.buildPath(hangulSyllableSrc), hangul); + loadProperties(unicodeDir.buildPath(graphemeSrc), graphemeBreaks); + loadProperties(unicodeDir.buildPath(emojiDataSrc), emojiData); + loadPropertyAliases(unicodeDir.buildPath(propertyValueAliases)); + + loadUnicodeData(unicodeDir.buildPath(unicodeDataSrc)); + loadSpecialCasing(unicodeDir.buildPath(specialCasingSrc)); + loadExclusions(unicodeDir.buildPath(compositionExclusionsSrc)); + loadCaseFolding(unicodeDir.buildPath(caseFoldingSrc)); + loadNormalization(unicodeDir.buildPath(normalizationPropSrc)); static void writeTableOfSets(File sink, string prefix, PropertyTable tab) { @@ -940,15 +988,6 @@ void writeGraphemeTries(File sink) // emoji related data writeBest3Level(sink, "Extended_Pictographic", emojiData.table["Extended_Pictographic"]); - - sink.writeln(); - - writeBest3Level - ( - sink, - "Extended_Pictographic", - emojiData.table["Extended_Pictographic"] - ); } void writeCaseCoversion(File sink) From 097ffd493c10da4296bed98b46b28fc02c345ff7 Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Tue, 2 Jan 2024 06:20:36 +0800 Subject: [PATCH 149/327] Revert "Revert "Makefile: Compile zlib .c files with DMD via importC"" --- Makefile | 47 ++++++++------------------------------------ etc/c/zlib/gzwrite.c | 5 +++++ 2 files changed, 13 insertions(+), 39 deletions(-) diff --git a/Makefile b/Makefile index 9f5267e2c9e..3dc4c8520dd 100644 --- a/Makefile +++ b/Makefile @@ -101,58 +101,27 @@ else DRUNTIME = $(DRUNTIME_PATH)/../generated/$(OS)/$(BUILD)/$(MODEL)/druntime.lib endif -# Set CC and DMD +# Set DMD ifeq ($(OS),win32wine) - CC = wine dmc.exe DMD = wine dmd.exe RUN = wine else DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd$(DOTEXE) - ifeq ($(MODEL),32omf) - CC = dmc - else ifeq ($(OS),windows) - CC = cl.exe - else - CC = cc - endif RUN = endif -# Set CFLAGS -OUTFILEFLAG = -o +# Set extra CFLAGS (for DMD - the zlib .c files are compiled via importC) NODEFAULTLIB=-defaultlib= -debuglib= +CFLAGS=-P=-Ietc/c/zlib ifeq (,$(findstring win,$(OS))) - CFLAGS=$(MODEL_FLAG) -fPIC -std=c11 -DHAVE_UNISTD_H + CFLAGS += -P=-DHAVE_UNISTD_H # Bundled with the system library on OSX, and doesn't work with >= MacOS 11 ifneq (osx,$(OS)) NODEFAULTLIB += -L-lpthread -L-lm endif - ifeq ($(BUILD),debug) - CFLAGS += -g - else - CFLAGS += -O3 - endif else ifeq ($(MODEL),32omf) - CFLAGS=-DNO_snprintf - ifeq ($(BUILD),debug) - CFLAGS += -g - else - CFLAGS += -O - endif - else # win64/win32coff - OUTFILEFLAG = /Fo - CFLAGS += /nologo /Zl /GS- - ifeq ($(BUILD),debug) - CFLAGS += /Z7 - else - CFLAGS += /O2 - endif - endif -endif -ifeq (osx,$(OS)) - ifeq (64,$(MODEL)) - CFLAGS+=--target=x86_64-darwin-apple # ARM cpu is not supported by dmd + CFLAGS += -P=-DNO_snprintf endif endif @@ -348,9 +317,9 @@ endif lib: $(LIB) dll: $(ROOT)/libphobos2.so -$(ROOT)/%$(DOTOBJ): %.c - @[ -d $(dir $@) ] || mkdir -p $(dir $@) || [ -d $(dir $@) ] - $(CC) -c $(CFLAGS) $< $(OUTFILEFLAG)$@ +# compile zlib .c files via importC; the druntime dependency makes sure DMD has been built +$(ROOT)/%$(DOTOBJ): %.c $(DRUNTIME) + $(DMD) -c $(DFLAGS) $(CFLAGS) -of$@ $< $(LIB): $(OBJS) $(ALL_D_FILES) $(DRUNTIME) $(DMD) $(DFLAGS) -lib -of$@ $(DRUNTIME) $(D_FILES) $(OBJS) diff --git a/etc/c/zlib/gzwrite.c b/etc/c/zlib/gzwrite.c index a8ffc8f53da..9d74514a881 100644 --- a/etc/c/zlib/gzwrite.c +++ b/etc/c/zlib/gzwrite.c @@ -465,7 +465,12 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) va_list va; int ret; +// needed on Win64 - MS __va_start intrinsic not supported by importC yet +#if __IMPORTC__ + __builtin_va_start(va, format); +#else va_start(va, format); +#endif ret = gzvprintf(file, format, va); va_end(va); return ret; From a11fb5e3ede8614afaeda85797839ca731c4ff57 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 13:06:48 +0100 Subject: [PATCH 150/327] Upgrade std.uni to Unicode 15.1.0 --- changelog/upgrade-unicode.dd | 17 + std/internal/unicode_tables.d | 893 ++++++++++++++++---------------- tools/unicode_table_generator.d | 4 +- 3 files changed, 470 insertions(+), 444 deletions(-) create mode 100644 changelog/upgrade-unicode.dd diff --git a/changelog/upgrade-unicode.dd b/changelog/upgrade-unicode.dd new file mode 100644 index 00000000000..604c9af8510 --- /dev/null +++ b/changelog/upgrade-unicode.dd @@ -0,0 +1,17 @@ +std.uni has been upgraded from Unicode 15.0.0 to 15.1.0 + +This Unicode update was released September 12, 2023. +See: https://www.unicode.org/versions/Unicode15.1.0/ + +``` +import std; + +void main() +{ + const alphaCount = iota(0, dchar.max).filter!(std.uni.isAlpha).walkLength; + writeln(alphaCount); + // formerly: 137765 + // now: 138387 + // 622 new dchars return true for `isAlpha` +} +``` diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index 22419270a99..4db2c5b7716 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -296,296 +296,297 @@ SCE(0xab79, 1, 0x42),SCE(0x1e909, 0, 0x82),SCE(0x1e92b, 1, 0x42),SCE(0x13c2, 0, SCE(0xab92, 1, 0x42),SCE(0x24b6, 0, 0x82),SCE(0x24d0, 1, 0x42),SCE(0x1e5e, 0, 0x82), SCE(0x1e5f, 1, 0x42),SCE(0x2c69, 0, 0x82),SCE(0x2c6a, 1, 0x42),SCE(0x1041f, 0, 0x82), SCE(0x10447, 1, 0x42),SCE(0x037f, 0, 0x82),SCE(0x03f3, 1, 0x42),SCE(0x0540, 0, 0x82), -SCE(0x0570, 1, 0x42),SCE(0x004b, 0, 0x83),SCE(0x006b, 1, 0x43),SCE(0x212a, 2, 0x83), -SCE(0x04f8, 0, 0x82),SCE(0x04f9, 1, 0x42),SCE(0x13f3, 0, 0x82),SCE(0x13fb, 1, 0x42), -SCE(0x00c9, 0, 0x82),SCE(0x00e9, 1, 0x42),SCE(0x040f, 0, 0x82),SCE(0x045f, 1, 0x42), -SCE(0x10b5, 0, 0x82),SCE(0x2d15, 1, 0x42),SCE(0xa746, 0, 0x82),SCE(0xa747, 1, 0x42), -SCE(0x00cd, 0, 0x82),SCE(0x00ed, 1, 0x42),SCE(0x0476, 0, 0x82),SCE(0x0477, 1, 0x42), -SCE(0x039e, 0, 0x82),SCE(0x03be, 1, 0x42),SCE(0x1f20, 0, 0x42),SCE(0x1f28, 1, 0x82), -SCE(0x10fa, 0, 0x42),SCE(0x1cba, 1, 0x82),SCE(0x2c21, 0, 0x82),SCE(0x2c51, 1, 0x42), -SCE(0x1ea6, 0, 0x82),SCE(0x1ea7, 1, 0x42),SCE(0x1f83, 0, 0x42),SCE(0x1f8b, 1, 0x2), -SCE(0x053c, 0, 0x82),SCE(0x056c, 1, 0x42),SCE(0x1f01, 0, 0x42),SCE(0x1f09, 1, 0x82), -SCE(0x2cc2, 0, 0x82),SCE(0x2cc3, 1, 0x42),SCE(0x0208, 0, 0x82),SCE(0x0209, 1, 0x42), -SCE(0x13e3, 0, 0x82),SCE(0xabb3, 1, 0x42),SCE(0xa796, 0, 0x82),SCE(0xa797, 1, 0x42), -SCE(0x1f64, 0, 0x42),SCE(0x1f6c, 1, 0x82),SCE(0x10592, 0, 0x82),SCE(0x105b9, 1, 0x42), -SCE(0x04be, 0, 0x82),SCE(0x04bf, 1, 0x42),SCE(0x1f91, 0, 0x42),SCE(0x1f99, 1, 0x2), -SCE(0x03e6, 0, 0x82),SCE(0x03e7, 1, 0x42),SCE(0x1ee0, 0, 0x82),SCE(0x1ee1, 1, 0x42), -SCE(0x1ff3, 0, 0x42),SCE(0x1ffc, 1, 0x2),SCE(0x0413, 0, 0x82),SCE(0x0433, 1, 0x42), -SCE(0x042e, 0, 0x82),SCE(0x044e, 1, 0x42),SCE(0x104ca, 0, 0x82),SCE(0x104f2, 1, 0x42), -SCE(0x2c00, 0, 0x82),SCE(0x2c30, 1, 0x42),SCE(0x10db, 0, 0x42),SCE(0x1c9b, 1, 0x82), -SCE(0x10f6, 0, 0x42),SCE(0x1cb6, 1, 0x82),SCE(0x118be, 0, 0x82),SCE(0x118de, 1, 0x42), -SCE(0x01a7, 0, 0x82),SCE(0x01a8, 1, 0x42),SCE(0x10c3, 0, 0x82),SCE(0x2d23, 1, 0x42), -SCE(0x0415, 0, 0x82),SCE(0x0435, 1, 0x42),SCE(0x1e1e, 0, 0x82),SCE(0x1e1f, 1, 0x42), -SCE(0x0506, 0, 0x82),SCE(0x0507, 1, 0x42),SCE(0x1e64, 0, 0x82),SCE(0x1e65, 1, 0x42), -SCE(0x00c7, 0, 0x82),SCE(0x00e7, 1, 0x42),SCE(0x047c, 0, 0x82),SCE(0x047d, 1, 0x42), -SCE(0x1e52, 0, 0x82),SCE(0x1e53, 1, 0x42),SCE(0x10f4, 0, 0x42),SCE(0x1cb4, 1, 0x82), -SCE(0x10586, 0, 0x82),SCE(0x105ad, 1, 0x42),SCE(0x046a, 0, 0x82),SCE(0x046b, 1, 0x42), -SCE(0x2c27, 0, 0x82),SCE(0x2c57, 1, 0x42),SCE(0x10c89, 0, 0x82),SCE(0x10cc9, 1, 0x42), -SCE(0x10a2, 0, 0x82),SCE(0x2d02, 1, 0x42),SCE(0xff32, 0, 0x82),SCE(0xff52, 1, 0x42), -SCE(0x0398, 0, 0x84),SCE(0x03b8, 1, 0x44),SCE(0x03d1, 2, 0x44),SCE(0x03f4, 3, 0x84), -SCE(0x03a9, 0, 0x83),SCE(0x03c9, 1, 0x43),SCE(0x2126, 2, 0x83),SCE(0x1eda, 0, 0x82), -SCE(0x1edb, 1, 0x42),SCE(0x1e901, 0, 0x82),SCE(0x1e923, 1, 0x42),SCE(0xa79c, 0, 0x82), -SCE(0xa79d, 1, 0x42),SCE(0x10d3, 0, 0x42),SCE(0x1c93, 1, 0x82),SCE(0x24bc, 0, 0x82), -SCE(0x24d6, 1, 0x42),SCE(0xff2f, 0, 0x82),SCE(0xff4f, 1, 0x42),SCE(0x0250, 0, 0x42), -SCE(0x2c6f, 1, 0x82),SCE(0x2c29, 0, 0x82),SCE(0x2c59, 1, 0x42),SCE(0x04b2, 0, 0x82), -SCE(0x04b3, 1, 0x42),SCE(0x10419, 0, 0x82),SCE(0x10441, 1, 0x42),SCE(0x0210, 0, 0x82), -SCE(0x0211, 1, 0x42),SCE(0x2c15, 0, 0x82),SCE(0x2c45, 1, 0x42),SCE(0x16e47, 0, 0x82), -SCE(0x16e67, 1, 0x42),SCE(0xa754, 0, 0x82),SCE(0xa755, 1, 0x42),SCE(0x16e45, 0, 0x82), -SCE(0x16e65, 1, 0x42),SCE(0x01c7, 0, 0x83),SCE(0x01c8, 1, 0x3),SCE(0x01c9, 2, 0x43), -SCE(0x047e, 0, 0x82),SCE(0x047f, 1, 0x42),SCE(0x01fc, 0, 0x82),SCE(0x01fd, 1, 0x42), -SCE(0x020e, 0, 0x82),SCE(0x020f, 1, 0x42),SCE(0x0244, 0, 0x82),SCE(0x0289, 1, 0x42), -SCE(0x1f77, 0, 0x42),SCE(0x1fdb, 1, 0x82),SCE(0x2cd6, 0, 0x82),SCE(0x2cd7, 1, 0x42), -SCE(0x10589, 0, 0x82),SCE(0x105b0, 1, 0x42),SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44), -SCE(0x1c84, 2, 0x44),SCE(0x1c85, 3, 0x44),SCE(0x10e7, 0, 0x42),SCE(0x1ca7, 1, 0x82), -SCE(0x04fa, 0, 0x82),SCE(0x04fb, 1, 0x42),SCE(0x10d5, 0, 0x42),SCE(0x1c95, 1, 0x82), -SCE(0x1eac, 0, 0x82),SCE(0x1ead, 1, 0x42),SCE(0x10b7, 0, 0x82),SCE(0x2d17, 1, 0x42), -SCE(0x13a1, 0, 0x82),SCE(0xab71, 1, 0x42),SCE(0xa7c2, 0, 0x82),SCE(0xa7c3, 1, 0x42), -SCE(0x1e907, 0, 0x82),SCE(0x1e929, 1, 0x42),SCE(0x13f5, 0, 0x82),SCE(0x13fd, 1, 0x42), -SCE(0x1ee2, 0, 0x82),SCE(0x1ee3, 1, 0x42),SCE(0x1f62, 0, 0x42),SCE(0x1f6a, 1, 0x82), -SCE(0x1e92, 0, 0x82),SCE(0x1e93, 1, 0x42),SCE(0x01d5, 0, 0x82),SCE(0x01d6, 1, 0x42), -SCE(0x2c06, 0, 0x82),SCE(0x2c36, 1, 0x42),SCE(0x10c8b, 0, 0x82),SCE(0x10ccb, 1, 0x42), -SCE(0x1f70, 0, 0x42),SCE(0x1fba, 1, 0x82),SCE(0x03ec, 0, 0x82),SCE(0x03ed, 1, 0x42), -SCE(0x1e915, 0, 0x82),SCE(0x1e937, 1, 0x42),SCE(0x216e, 0, 0x82),SCE(0x217e, 1, 0x42), -SCE(0x13c0, 0, 0x82),SCE(0xab90, 1, 0x42),SCE(0x1ef4, 0, 0x82),SCE(0x1ef5, 1, 0x42), -SCE(0xff3a, 0, 0x82),SCE(0xff5a, 1, 0x42),SCE(0x118bc, 0, 0x82),SCE(0x118dc, 1, 0x42), -SCE(0x04aa, 0, 0x82),SCE(0x04ab, 1, 0x42),SCE(0x2163, 0, 0x82),SCE(0x2173, 1, 0x42), -SCE(0x1e1c, 0, 0x82),SCE(0x1e1d, 1, 0x42),SCE(0x13c8, 0, 0x82),SCE(0xab98, 1, 0x42), -SCE(0x118af, 0, 0x82),SCE(0x118cf, 1, 0x42),SCE(0x10c98, 0, 0x82),SCE(0x10cd8, 1, 0x42), -SCE(0x10571, 0, 0x82),SCE(0x10598, 1, 0x42),SCE(0x10ca7, 0, 0x82),SCE(0x10ce7, 1, 0x42), -SCE(0x0051, 0, 0x82),SCE(0x0071, 1, 0x42),SCE(0x04f2, 0, 0x82),SCE(0x04f3, 1, 0x42), -SCE(0x10caa, 0, 0x82),SCE(0x10cea, 1, 0x42),SCE(0x10af, 0, 0x82),SCE(0x2d0f, 1, 0x42), -SCE(0x2c8e, 0, 0x82),SCE(0x2c8f, 1, 0x42),SCE(0x2cc4, 0, 0x82),SCE(0x2cc5, 1, 0x42), -SCE(0x1e0a, 0, 0x82),SCE(0x1e0b, 1, 0x42),SCE(0x16e50, 0, 0x82),SCE(0x16e70, 1, 0x42), -SCE(0x1058e, 0, 0x82),SCE(0x105b5, 1, 0x42),SCE(0x10411, 0, 0x82),SCE(0x10439, 1, 0x42), -SCE(0x10423, 0, 0x82),SCE(0x1044b, 1, 0x42),SCE(0x053a, 0, 0x82),SCE(0x056a, 1, 0x42), -SCE(0x1e6c, 0, 0x82),SCE(0x1e6d, 1, 0x42),SCE(0x104be, 0, 0x82),SCE(0x104e6, 1, 0x42), -SCE(0x10424, 0, 0x82),SCE(0x1044c, 1, 0x42),SCE(0x10a9, 0, 0x82),SCE(0x2d09, 1, 0x42), -SCE(0x24c2, 0, 0x82),SCE(0x24dc, 1, 0x42),SCE(0x10c81, 0, 0x82),SCE(0x10cc1, 1, 0x42), -SCE(0x13bc, 0, 0x82),SCE(0xab8c, 1, 0x42),SCE(0x0462, 0, 0x83),SCE(0x0463, 1, 0x43), -SCE(0x1c87, 2, 0x43),SCE(0x118a6, 0, 0x82),SCE(0x118c6, 1, 0x42),SCE(0x1e4a, 0, 0x82), -SCE(0x1e4b, 1, 0x42),SCE(0x2162, 0, 0x82),SCE(0x2172, 1, 0x42),SCE(0x1ed4, 0, 0x82), -SCE(0x1ed5, 1, 0x42),SCE(0x10aa, 0, 0x82),SCE(0x2d0a, 1, 0x42),SCE(0x04ec, 0, 0x82), -SCE(0x04ed, 1, 0x42),SCE(0x2c0c, 0, 0x82),SCE(0x2c3c, 1, 0x42),SCE(0xa79a, 0, 0x82), -SCE(0xa79b, 1, 0x42),SCE(0x04cb, 0, 0x82),SCE(0x04cc, 1, 0x42),SCE(0x104bd, 0, 0x82), -SCE(0x104e5, 1, 0x42),SCE(0x0370, 0, 0x82),SCE(0x0371, 1, 0x42),SCE(0x1e914, 0, 0x82), -SCE(0x1e936, 1, 0x42),SCE(0x03da, 0, 0x82),SCE(0x03db, 1, 0x42),SCE(0x1f35, 0, 0x42), -SCE(0x1f3d, 1, 0x82),SCE(0x16e51, 0, 0x82),SCE(0x16e71, 1, 0x42),SCE(0x0392, 0, 0x83), -SCE(0x03b2, 1, 0x43),SCE(0x03d0, 2, 0x43),SCE(0x2c96, 0, 0x82),SCE(0x2c97, 1, 0x42), -SCE(0x0391, 0, 0x82),SCE(0x03b1, 1, 0x42),SCE(0x0534, 0, 0x82),SCE(0x0564, 1, 0x42), -SCE(0x041b, 0, 0x82),SCE(0x043b, 1, 0x42),SCE(0x13df, 0, 0x82),SCE(0xabaf, 1, 0x42), -SCE(0x2c2c, 0, 0x82),SCE(0x2c5c, 1, 0x42),SCE(0x0124, 0, 0x82),SCE(0x0125, 1, 0x42), -SCE(0x10ca2, 0, 0x82),SCE(0x10ce2, 1, 0x42),SCE(0x1e8c, 0, 0x82),SCE(0x1e8d, 1, 0x42), -SCE(0x1eb4, 0, 0x82),SCE(0x1eb5, 1, 0x42),SCE(0x016c, 0, 0x82),SCE(0x016d, 1, 0x42), -SCE(0x1e02, 0, 0x82),SCE(0x1e03, 1, 0x42),SCE(0x019a, 0, 0x42),SCE(0x023d, 1, 0x82), -SCE(0x0102, 0, 0x82),SCE(0x0103, 1, 0x42),SCE(0x1f14, 0, 0x42),SCE(0x1f1c, 1, 0x82), -SCE(0xff28, 0, 0x82),SCE(0xff48, 1, 0x42),SCE(0x10c80, 0, 0x82),SCE(0x10cc0, 1, 0x42), -SCE(0x10ee, 0, 0x42),SCE(0x1cae, 1, 0x82),SCE(0x1f55, 0, 0x42),SCE(0x1f5d, 1, 0x82), -SCE(0xa77b, 0, 0x82),SCE(0xa77c, 1, 0x42),SCE(0x0059, 0, 0x82),SCE(0x0079, 1, 0x42), -SCE(0x014a, 0, 0x82),SCE(0x014b, 1, 0x42),SCE(0x1e24, 0, 0x82),SCE(0x1e25, 1, 0x42), -SCE(0x13bd, 0, 0x82),SCE(0xab8d, 1, 0x42),SCE(0x2cbc, 0, 0x82),SCE(0x2cbd, 1, 0x42), -SCE(0x1040d, 0, 0x82),SCE(0x10435, 1, 0x42),SCE(0x1058f, 0, 0x82),SCE(0x105b6, 1, 0x42), -SCE(0x118a7, 0, 0x82),SCE(0x118c7, 1, 0x42),SCE(0xa660, 0, 0x82),SCE(0xa661, 1, 0x42), -SCE(0x0514, 0, 0x82),SCE(0x0515, 1, 0x42),SCE(0x052e, 0, 0x82),SCE(0x052f, 1, 0x42), -SCE(0x04a4, 0, 0x82),SCE(0x04a5, 1, 0x42),SCE(0x0400, 0, 0x82),SCE(0x0450, 1, 0x42), -SCE(0x16e58, 0, 0x82),SCE(0x16e78, 1, 0x42),SCE(0xa64e, 0, 0x82),SCE(0xa64f, 1, 0x42), -SCE(0xff2e, 0, 0x82),SCE(0xff4e, 1, 0x42),SCE(0x1040c, 0, 0x82),SCE(0x10434, 1, 0x42), -SCE(0x00db, 0, 0x82),SCE(0x00fb, 1, 0x42),SCE(0x01cd, 0, 0x82),SCE(0x01ce, 1, 0x42), -SCE(0x10e8, 0, 0x42),SCE(0x1ca8, 1, 0x82),SCE(0x054f, 0, 0x82),SCE(0x057f, 1, 0x42), -SCE(0xa738, 0, 0x82),SCE(0xa739, 1, 0x42),SCE(0x16e5f, 0, 0x82),SCE(0x16e7f, 1, 0x42), -SCE(0x1d79, 0, 0x42),SCE(0xa77d, 1, 0x82),SCE(0x1e90f, 0, 0x82),SCE(0x1e931, 1, 0x42), -SCE(0x2c07, 0, 0x82),SCE(0x2c37, 1, 0x42),SCE(0x10a3, 0, 0x82),SCE(0x2d03, 1, 0x42), -SCE(0xa7a0, 0, 0x82),SCE(0xa7a1, 1, 0x42),SCE(0x0421, 0, 0x83),SCE(0x0441, 1, 0x43), -SCE(0x1c83, 2, 0x43),SCE(0xa680, 0, 0x82),SCE(0xa681, 1, 0x42),SCE(0x0282, 0, 0x42), -SCE(0xa7c5, 1, 0x82),SCE(0x24cb, 0, 0x82),SCE(0x24e5, 1, 0x42),SCE(0x0401, 0, 0x82), -SCE(0x0451, 1, 0x42),SCE(0xa758, 0, 0x82),SCE(0xa759, 1, 0x42),SCE(0x0058, 0, 0x82), -SCE(0x0078, 1, 0x42),SCE(0x0193, 0, 0x82),SCE(0x0260, 1, 0x42),SCE(0x10ca1, 0, 0x82), -SCE(0x10ce1, 1, 0x42),SCE(0x054e, 0, 0x82),SCE(0x057e, 1, 0x42),SCE(0x0186, 0, 0x82), -SCE(0x0254, 1, 0x42),SCE(0x13dc, 0, 0x82),SCE(0xabac, 1, 0x42),SCE(0x24bd, 0, 0x82), -SCE(0x24d7, 1, 0x42),SCE(0x01b3, 0, 0x82),SCE(0x01b4, 1, 0x42),SCE(0xa696, 0, 0x82), -SCE(0xa697, 1, 0x42),SCE(0x0216, 0, 0x82),SCE(0x0217, 1, 0x42),SCE(0x1ece, 0, 0x82), -SCE(0x1ecf, 1, 0x42),SCE(0x2168, 0, 0x82),SCE(0x2178, 1, 0x42),SCE(0x1e90e, 0, 0x82), -SCE(0x1e930, 1, 0x42),SCE(0x2c12, 0, 0x82),SCE(0x2c42, 1, 0x42),SCE(0x2c2f, 0, 0x82), -SCE(0x2c5f, 1, 0x42),SCE(0x10cab, 0, 0x82),SCE(0x10ceb, 1, 0x42),SCE(0x1e86, 0, 0x82), -SCE(0x1e87, 1, 0x42),SCE(0x0412, 0, 0x83),SCE(0x0432, 1, 0x43),SCE(0x1c80, 2, 0x43), -SCE(0x13d6, 0, 0x82),SCE(0xaba6, 1, 0x42),SCE(0x1eba, 0, 0x82),SCE(0x1ebb, 1, 0x42), -SCE(0x1e91b, 0, 0x82),SCE(0x1e93d, 1, 0x42),SCE(0x1041a, 0, 0x82),SCE(0x10442, 1, 0x42), -SCE(0x1eee, 0, 0x82),SCE(0x1eef, 1, 0x42),SCE(0xff31, 0, 0x82),SCE(0xff51, 1, 0x42), -SCE(0xa7bc, 0, 0x82),SCE(0xa7bd, 1, 0x42),SCE(0x01db, 0, 0x82),SCE(0x01dc, 1, 0x42), -SCE(0x01a6, 0, 0x82),SCE(0x0280, 1, 0x42),SCE(0x1f07, 0, 0x42),SCE(0x1f0f, 1, 0x82), -SCE(0x118bd, 0, 0x82),SCE(0x118dd, 1, 0x42),SCE(0x00c8, 0, 0x82),SCE(0x00e8, 1, 0x42), -SCE(0x04d2, 0, 0x82),SCE(0x04d3, 1, 0x42),SCE(0x10e1, 0, 0x42),SCE(0x1ca1, 1, 0x82), -SCE(0x13b7, 0, 0x82),SCE(0xab87, 1, 0x42),SCE(0x10585, 0, 0x82),SCE(0x105ac, 1, 0x42), -SCE(0x16e4b, 0, 0x82),SCE(0x16e6b, 1, 0x42),SCE(0x0172, 0, 0x82),SCE(0x0173, 1, 0x42), -SCE(0x049e, 0, 0x82),SCE(0x049f, 1, 0x42),SCE(0x04e6, 0, 0x82),SCE(0x04e7, 1, 0x42), -SCE(0x10b0, 0, 0x82),SCE(0x2d10, 1, 0x42),SCE(0x2c9c, 0, 0x82),SCE(0x2c9d, 1, 0x42), -SCE(0x01ee, 0, 0x82),SCE(0x01ef, 1, 0x42),SCE(0x104b4, 0, 0x82),SCE(0x104dc, 1, 0x42), -SCE(0x10c87, 0, 0x82),SCE(0x10cc7, 1, 0x42),SCE(0x13ba, 0, 0x82),SCE(0xab8a, 1, 0x42), -SCE(0x1e10, 0, 0x82),SCE(0x1e11, 1, 0x42),SCE(0x0230, 0, 0x82),SCE(0x0231, 1, 0x42), -SCE(0x0428, 0, 0x82),SCE(0x0448, 1, 0x42),SCE(0x2cd0, 0, 0x82),SCE(0x2cd1, 1, 0x42), -SCE(0x118a0, 0, 0x82),SCE(0x118c0, 1, 0x42),SCE(0x03e0, 0, 0x82),SCE(0x03e1, 1, 0x42), -SCE(0x10588, 0, 0x82),SCE(0x105af, 1, 0x42),SCE(0xa780, 0, 0x82),SCE(0xa781, 1, 0x42), -SCE(0x10f5, 0, 0x42),SCE(0x1cb5, 1, 0x82),SCE(0x053b, 0, 0x82),SCE(0x056b, 1, 0x42), -SCE(0x00d5, 0, 0x82),SCE(0x00f5, 1, 0x42),SCE(0x0414, 0, 0x83),SCE(0x0434, 1, 0x43), -SCE(0x1c81, 2, 0x43),SCE(0x1fa4, 0, 0x42),SCE(0x1fac, 1, 0x2),SCE(0x012a, 0, 0x82), -SCE(0x012b, 1, 0x42),SCE(0x0052, 0, 0x82),SCE(0x0072, 1, 0x42),SCE(0x24b7, 0, 0x82), -SCE(0x24d1, 1, 0x42),SCE(0x1e908, 0, 0x82),SCE(0x1e92a, 1, 0x42),SCE(0x0398, 0, 0x84), -SCE(0x03b8, 1, 0x44),SCE(0x03d1, 2, 0x44),SCE(0x03f4, 3, 0x84),SCE(0x0202, 0, 0x82), -SCE(0x0203, 1, 0x42),SCE(0x0271, 0, 0x42),SCE(0x2c6e, 1, 0x82),SCE(0x0470, 0, 0x82), -SCE(0x0471, 1, 0x42),SCE(0x2c1b, 0, 0x82),SCE(0x2c4b, 1, 0x42),SCE(0x048a, 0, 0x82), -SCE(0x048b, 1, 0x42),SCE(0xa752, 0, 0x82),SCE(0xa753, 1, 0x42),SCE(0xff25, 0, 0x82), -SCE(0xff45, 1, 0x42),SCE(0x0407, 0, 0x82),SCE(0x0457, 1, 0x42),SCE(0x00c1, 0, 0x82), -SCE(0x00e1, 1, 0x42),SCE(0x1e44, 0, 0x82),SCE(0x1e45, 1, 0x42),SCE(0x1f97, 0, 0x42), -SCE(0x1f9f, 1, 0x2),SCE(0x0548, 0, 0x82),SCE(0x0578, 1, 0x42),SCE(0x021c, 0, 0x82), -SCE(0x021d, 1, 0x42),SCE(0x13e5, 0, 0x82),SCE(0xabb5, 1, 0x42),SCE(0x051a, 0, 0x82), -SCE(0x051b, 1, 0x42),SCE(0x2cb6, 0, 0x82),SCE(0x2cb7, 1, 0x42),SCE(0xa654, 0, 0x82), -SCE(0xa655, 1, 0x42),SCE(0x10403, 0, 0x82),SCE(0x1042b, 1, 0x42),SCE(0x1e72, 0, 0x82), -SCE(0x1e73, 1, 0x42),SCE(0x10d4, 0, 0x42),SCE(0x1c94, 1, 0x82),SCE(0x104c1, 0, 0x82), -SCE(0x104e9, 1, 0x42),SCE(0x10c8a, 0, 0x82),SCE(0x10cca, 1, 0x42),SCE(0x1e2a, 0, 0x82), -SCE(0x1e2b, 1, 0x42),SCE(0x0462, 0, 0x83),SCE(0x0463, 1, 0x43),SCE(0x1c87, 2, 0x43), -SCE(0x1f76, 0, 0x42),SCE(0x1fda, 1, 0x82),SCE(0x0053, 0, 0x83),SCE(0x0073, 1, 0x43), -SCE(0x017f, 2, 0x43),SCE(0x2c26, 0, 0x82),SCE(0x2c56, 1, 0x42),SCE(0x13a0, 0, 0x82), -SCE(0xab70, 1, 0x42),SCE(0x04c5, 0, 0x82),SCE(0x04c6, 1, 0x42),SCE(0x03fa, 0, 0x82), -SCE(0x03fb, 1, 0x42),SCE(0x0555, 0, 0x82),SCE(0x0585, 1, 0x42),SCE(0x13e8, 0, 0x82), -SCE(0xabb8, 1, 0x42),SCE(0x01c7, 0, 0x83),SCE(0x01c8, 1, 0x3),SCE(0x01c9, 2, 0x43), -SCE(0x1f42, 0, 0x42),SCE(0x1f4a, 1, 0x82),SCE(0x1f67, 0, 0x42),SCE(0x1f6f, 1, 0x82), -SCE(0x1057c, 0, 0x82),SCE(0x105a3, 1, 0x42),SCE(0xa7b4, 0, 0x82),SCE(0xa7b5, 1, 0x42), -SCE(0xa698, 0, 0x82),SCE(0xa699, 1, 0x42),SCE(0x1e904, 0, 0x82),SCE(0x1e926, 1, 0x42), -SCE(0x040c, 0, 0x82),SCE(0x045c, 1, 0x42),SCE(0x10da, 0, 0x42),SCE(0x1c9a, 1, 0x82), -SCE(0x00d0, 0, 0x82),SCE(0x00f0, 1, 0x42),SCE(0x16e46, 0, 0x82),SCE(0x16e66, 1, 0x42), -SCE(0x1ec2, 0, 0x82),SCE(0x1ec3, 1, 0x42),SCE(0x01e4, 0, 0x82),SCE(0x01e5, 1, 0x42), -SCE(0x0044, 0, 0x82),SCE(0x0064, 1, 0x42),SCE(0x017d, 0, 0x82),SCE(0x017e, 1, 0x42), -SCE(0x1f21, 0, 0x42),SCE(0x1f29, 1, 0x82),SCE(0xff39, 0, 0x82),SCE(0xff59, 1, 0x42), -SCE(0x13ac, 0, 0x82),SCE(0xab7c, 1, 0x42),SCE(0x1f00, 0, 0x42),SCE(0x1f08, 1, 0x82), -SCE(0x03a5, 0, 0x82),SCE(0x03c5, 1, 0x42),SCE(0x0158, 0, 0x82),SCE(0x0159, 1, 0x42), -SCE(0x104cf, 0, 0x82),SCE(0x104f7, 1, 0x42),SCE(0x1e3a, 0, 0x82),SCE(0x1e3b, 1, 0x42), -SCE(0xa72c, 0, 0x82),SCE(0xa72d, 1, 0x42),SCE(0x118b7, 0, 0x82),SCE(0x118d7, 1, 0x42), -SCE(0x0112, 0, 0x82),SCE(0x0113, 1, 0x42),SCE(0x1e36, 0, 0x82),SCE(0x1e37, 1, 0x42), -SCE(0x16e4e, 0, 0x82),SCE(0x16e6e, 1, 0x42),SCE(0x1f7d, 0, 0x42),SCE(0x1ffb, 1, 0x82), -SCE(0x0494, 0, 0x82),SCE(0x0495, 1, 0x42),SCE(0x1e80, 0, 0x82),SCE(0x1e81, 1, 0x42), -SCE(0x0116, 0, 0x82),SCE(0x0117, 1, 0x42),SCE(0x042d, 0, 0x82),SCE(0x044d, 1, 0x42), -SCE(0x13f2, 0, 0x82),SCE(0x13fa, 1, 0x42),SCE(0x0179, 0, 0x82),SCE(0x017a, 1, 0x42), -SCE(0x04da, 0, 0x82),SCE(0x04db, 1, 0x42),SCE(0x2ca8, 0, 0x82),SCE(0x2ca9, 1, 0x42), -SCE(0x00cc, 0, 0x82),SCE(0x00ec, 1, 0x42),SCE(0x01a2, 0, 0x82),SCE(0x01a3, 1, 0x42), -SCE(0x03a1, 0, 0x83),SCE(0x03c1, 1, 0x43),SCE(0x03f1, 2, 0x43),SCE(0x1e7c, 0, 0x82), -SCE(0x1e7d, 1, 0x42),SCE(0x13cf, 0, 0x82),SCE(0xab9f, 1, 0x42),SCE(0x10412, 0, 0x82), -SCE(0x1043a, 1, 0x42),SCE(0x0520, 0, 0x82),SCE(0x0521, 1, 0x42),SCE(0x2c1c, 0, 0x82), -SCE(0x2c4c, 1, 0x42),SCE(0x026b, 0, 0x42),SCE(0x2c62, 1, 0x82),SCE(0x10591, 0, 0x82), -SCE(0x105b8, 1, 0x42),SCE(0x015c, 0, 0x82),SCE(0x015d, 1, 0x42),SCE(0xa652, 0, 0x82), -SCE(0xa653, 1, 0x42),SCE(0xff26, 0, 0x82),SCE(0xff46, 1, 0x42),SCE(0x01e8, 0, 0x82), -SCE(0x01e9, 1, 0x42),SCE(0x10b6, 0, 0x82),SCE(0x2d16, 1, 0x42),SCE(0xa656, 0, 0x82), -SCE(0xa657, 1, 0x42),SCE(0x051c, 0, 0x82),SCE(0x051d, 1, 0x42),SCE(0x13c3, 0, 0x82), -SCE(0xab93, 1, 0x42),SCE(0x104cb, 0, 0x82),SCE(0x104f3, 1, 0x42),SCE(0x1ec6, 0, 0x82), -SCE(0x1ec7, 1, 0x42),SCE(0x01e0, 0, 0x82),SCE(0x01e1, 1, 0x42),SCE(0x1f63, 0, 0x42), -SCE(0x1f6b, 1, 0x82),SCE(0x2c01, 0, 0x82),SCE(0x2c31, 1, 0x42),SCE(0x1e900, 0, 0x82), -SCE(0x1e922, 1, 0x42),SCE(0x1e78, 0, 0x82),SCE(0x1e79, 1, 0x42),SCE(0x24ce, 0, 0x82), -SCE(0x24e8, 1, 0x42),SCE(0xa76a, 0, 0x82),SCE(0xa76b, 1, 0x42),SCE(0x011a, 0, 0x82), -SCE(0x011b, 1, 0x42),SCE(0x0429, 0, 0x82),SCE(0x0449, 1, 0x42),SCE(0x1f84, 0, 0x42), -SCE(0x1f8c, 1, 0x2),SCE(0x10d6, 0, 0x42),SCE(0x1c96, 1, 0x82),SCE(0x1fb1, 0, 0x42), -SCE(0x1fb9, 1, 0x82),SCE(0xa762, 0, 0x82),SCE(0xa763, 1, 0x42),SCE(0x10cb2, 0, 0x82), -SCE(0x10cf2, 1, 0x42),SCE(0x2c20, 0, 0x82),SCE(0x2c50, 1, 0x42),SCE(0x10be, 0, 0x82), -SCE(0x2d1e, 1, 0x42),SCE(0x1041e, 0, 0x82),SCE(0x10446, 1, 0x42),SCE(0x04e2, 0, 0x82), -SCE(0x04e3, 1, 0x42),SCE(0x04de, 0, 0x82),SCE(0x04df, 1, 0x42),SCE(0x13ea, 0, 0x82), -SCE(0xabba, 1, 0x42),SCE(0x0541, 0, 0x82),SCE(0x0571, 1, 0x42),SCE(0x0545, 0, 0x82), -SCE(0x0575, 1, 0x42),SCE(0x1f25, 0, 0x42),SCE(0x1f2d, 1, 0x82),SCE(0x0154, 0, 0x82), -SCE(0x0155, 1, 0x42),SCE(0x2c24, 0, 0x82),SCE(0x2c54, 1, 0x42),SCE(0x13ee, 0, 0x82), -SCE(0xabbe, 1, 0x42),SCE(0x0181, 0, 0x82),SCE(0x0253, 1, 0x42),SCE(0x03a3, 0, 0x83), -SCE(0x03c2, 1, 0x43),SCE(0x03c3, 2, 0x43),SCE(0x118b3, 0, 0x82),SCE(0x118d3, 1, 0x42), -SCE(0x10ba, 0, 0x82),SCE(0x2d1a, 1, 0x42),SCE(0x0180, 0, 0x42),SCE(0x0243, 1, 0x82), -SCE(0x1e3e, 0, 0x82),SCE(0x1e3f, 1, 0x42),SCE(0x10ff, 0, 0x42),SCE(0x1cbf, 1, 0x82), -SCE(0x10c88, 0, 0x82),SCE(0x10cc8, 1, 0x42),SCE(0x10d2, 0, 0x42),SCE(0x1c92, 1, 0x82), -SCE(0xa76e, 0, 0x82),SCE(0xa76f, 1, 0x42),SCE(0x1c88, 0, 0x43),SCE(0xa64a, 1, 0x83), -SCE(0xa64b, 2, 0x43),SCE(0x10b2, 0, 0x82),SCE(0x2d12, 1, 0x42),SCE(0x13c7, 0, 0x82), -SCE(0xab97, 1, 0x42),SCE(0x0518, 0, 0x82),SCE(0x0519, 1, 0x42),SCE(0xa766, 0, 0x82), -SCE(0xa767, 1, 0x42),SCE(0x01ec, 0, 0x82),SCE(0x01ed, 1, 0x42),SCE(0x104c3, 0, 0x82), -SCE(0x104eb, 1, 0x42),SCE(0x10574, 0, 0x82),SCE(0x1059b, 1, 0x42),SCE(0x1e91c, 0, 0x82), -SCE(0x1e93e, 1, 0x42),SCE(0x10e2, 0, 0x42),SCE(0x1ca2, 1, 0x82),SCE(0x2c05, 0, 0x82), -SCE(0x2c35, 1, 0x42),SCE(0x04a0, 0, 0x82),SCE(0x04a1, 1, 0x42),SCE(0x1e42, 0, 0x82), -SCE(0x1e43, 1, 0x42),SCE(0x13b4, 0, 0x82),SCE(0xab84, 1, 0x42),SCE(0x118bf, 0, 0x82), -SCE(0x118df, 1, 0x42),SCE(0x0150, 0, 0x82),SCE(0x0151, 1, 0x42),SCE(0x2cb0, 0, 0x82), -SCE(0x2cb1, 1, 0x42),SCE(0x13a4, 0, 0x82),SCE(0xab74, 1, 0x42),SCE(0x04c1, 0, 0x82), -SCE(0x04c2, 1, 0x42),SCE(0x01ca, 0, 0x83),SCE(0x01cb, 1, 0x3),SCE(0x01cc, 2, 0x43), -SCE(0x004c, 0, 0x82),SCE(0x006c, 1, 0x42),SCE(0x104c7, 0, 0x82),SCE(0x104ef, 1, 0x42), -SCE(0x16e5a, 0, 0x82),SCE(0x16e7a, 1, 0x42),SCE(0x0222, 0, 0x82),SCE(0x0223, 1, 0x42), -SCE(0x0490, 0, 0x82),SCE(0x0491, 1, 0x42),SCE(0x2cf2, 0, 0x82),SCE(0x2cf3, 1, 0x42), -SCE(0x10595, 0, 0x82),SCE(0x105bc, 1, 0x42),SCE(0x053d, 0, 0x82),SCE(0x056d, 1, 0x42), -SCE(0x0388, 0, 0x82),SCE(0x03ad, 1, 0x42),SCE(0x0549, 0, 0x82),SCE(0x0579, 1, 0x42), -SCE(0x13e2, 0, 0x82),SCE(0xabb2, 1, 0x42),SCE(0x16e4a, 0, 0x82),SCE(0x16e6a, 1, 0x42), -SCE(0x1efc, 0, 0x82),SCE(0x1efd, 1, 0x42),SCE(0x1f90, 0, 0x42),SCE(0x1f98, 1, 0x2), -SCE(0x04d6, 0, 0x82),SCE(0x04d7, 1, 0x42),SCE(0xa7b8, 0, 0x82),SCE(0xa7b9, 1, 0x42), -SCE(0x0414, 0, 0x83),SCE(0x0434, 1, 0x43),SCE(0x1c81, 2, 0x43),SCE(0x10cad, 0, 0x82), -SCE(0x10ced, 1, 0x42),SCE(0x10f7, 0, 0x42),SCE(0x1cb7, 1, 0x82),SCE(0x16e55, 0, 0x82), -SCE(0x16e75, 1, 0x42),SCE(0xa728, 0, 0x82),SCE(0xa729, 1, 0x42),SCE(0x1e00, 0, 0x82), -SCE(0x1e01, 1, 0x42),SCE(0x0232, 0, 0x82),SCE(0x0233, 1, 0x42),SCE(0x10a5, 0, 0x82), -SCE(0x2d05, 1, 0x42),SCE(0x1f15, 0, 0x42),SCE(0x1f1d, 1, 0x82),SCE(0x03a9, 0, 0x83), -SCE(0x03c9, 1, 0x43),SCE(0x2126, 2, 0x83),SCE(0x013b, 0, 0x82),SCE(0x013c, 1, 0x42), -SCE(0x0408, 0, 0x82),SCE(0x0458, 1, 0x42),SCE(0x00dc, 0, 0x82),SCE(0x00fc, 1, 0x42), -SCE(0x1ebe, 0, 0x82),SCE(0x1ebf, 1, 0x42),SCE(0x2c18, 0, 0x82),SCE(0x2c48, 1, 0x42), -SCE(0xa7a8, 0, 0x82),SCE(0xa7a9, 1, 0x42),SCE(0x216b, 0, 0x82),SCE(0x217b, 1, 0x42), -SCE(0x2c10, 0, 0x82),SCE(0x2c40, 1, 0x42),SCE(0x2cde, 0, 0x82),SCE(0x2cdf, 1, 0x42), -SCE(0x029e, 0, 0x42),SCE(0xa7b0, 1, 0x82),SCE(0x00d4, 0, 0x82),SCE(0x00f4, 1, 0x42), -SCE(0x10ef, 0, 0x42),SCE(0x1caf, 1, 0x82),SCE(0x0551, 0, 0x82),SCE(0x0581, 1, 0x42), -SCE(0x13da, 0, 0x82),SCE(0xabaa, 1, 0x42),SCE(0x0535, 0, 0x82),SCE(0x0565, 1, 0x42), -SCE(0x10c9d, 0, 0x82),SCE(0x10cdd, 1, 0x42),SCE(0x24c6, 0, 0x82),SCE(0x24e0, 1, 0x42), -SCE(0x0410, 0, 0x82),SCE(0x0430, 1, 0x42),SCE(0x1eb6, 0, 0x82),SCE(0x1eb7, 1, 0x42), -SCE(0x10416, 0, 0x82),SCE(0x1043e, 1, 0x42),SCE(0x16e42, 0, 0x82),SCE(0x16e62, 1, 0x42), -SCE(0x0164, 0, 0x82),SCE(0x0165, 1, 0x42),SCE(0x2ca0, 0, 0x82),SCE(0x2ca1, 1, 0x42), -SCE(0x1e2e, 0, 0x82),SCE(0x1e2f, 1, 0x42),SCE(0x10c95, 0, 0x82),SCE(0x10cd5, 1, 0x42), -SCE(0x0498, 0, 0x82),SCE(0x0499, 1, 0x42),SCE(0x010a, 0, 0x82),SCE(0x010b, 1, 0x42), -SCE(0x118aa, 0, 0x82),SCE(0x118ca, 1, 0x42),SCE(0x1e88, 0, 0x82),SCE(0x1e89, 1, 0x42), -SCE(0x0528, 0, 0x82),SCE(0x0529, 1, 0x42),SCE(0x13d7, 0, 0x82),SCE(0xaba7, 1, 0x42), -SCE(0xa65a, 0, 0x82),SCE(0xa65b, 1, 0x42),SCE(0x022a, 0, 0x82),SCE(0x022b, 1, 0x42), -SCE(0x1fa5, 0, 0x42),SCE(0x1fad, 1, 0x2),SCE(0x104b3, 0, 0x82),SCE(0x104db, 1, 0x42), -SCE(0x1e90c, 0, 0x82),SCE(0x1e92e, 1, 0x42),SCE(0x24bb, 0, 0x82),SCE(0x24d5, 1, 0x42), -SCE(0x01f4, 0, 0x82),SCE(0x01f5, 1, 0x42),SCE(0xa690, 0, 0x82),SCE(0xa691, 1, 0x42), -SCE(0xff29, 0, 0x82),SCE(0xff49, 1, 0x42),SCE(0x2c75, 0, 0x82),SCE(0x2c76, 1, 0x42), -SCE(0x2cb8, 0, 0x82),SCE(0x2cb9, 1, 0x42),SCE(0x10401, 0, 0x82),SCE(0x10429, 1, 0x42), -SCE(0x2c0d, 0, 0x82),SCE(0x2c3d, 1, 0x42),SCE(0x104d0, 0, 0x82),SCE(0x104f8, 1, 0x42), -SCE(0x1e913, 0, 0x82),SCE(0x1e935, 1, 0x42),SCE(0x01af, 0, 0x82),SCE(0x01b0, 1, 0x42), -SCE(0xa7c7, 0, 0x82),SCE(0xa7c8, 1, 0x42),SCE(0x13bf, 0, 0x82),SCE(0xab8f, 1, 0x42), -SCE(0x10402, 0, 0x82),SCE(0x1042a, 1, 0x42),SCE(0x10ea, 0, 0x42),SCE(0x1caa, 1, 0x82), -SCE(0x104bf, 0, 0x82),SCE(0x104e7, 1, 0x42),SCE(0x1058d, 0, 0x82),SCE(0x105b4, 1, 0x42), -SCE(0x2164, 0, 0x82),SCE(0x2174, 1, 0x42),SCE(0x018e, 0, 0x82),SCE(0x01dd, 1, 0x42), -SCE(0x01d3, 0, 0x82),SCE(0x01d4, 1, 0x42),SCE(0x1f10, 0, 0x42),SCE(0x1f18, 1, 0x82), -SCE(0x1f57, 0, 0x42),SCE(0x1f5f, 1, 0x82),SCE(0x1ed2, 0, 0x82),SCE(0x1ed3, 1, 0x42), -SCE(0xff2a, 0, 0x82),SCE(0xff4a, 1, 0x42),SCE(0x1e04, 0, 0x82),SCE(0x1e05, 1, 0x42), -SCE(0x04ee, 0, 0x82),SCE(0x04ef, 1, 0x42),SCE(0x2c94, 0, 0x82),SCE(0x2c95, 1, 0x42), -SCE(0x00c0, 0, 0x82),SCE(0x00e0, 1, 0x42),SCE(0x13db, 0, 0x82),SCE(0xabab, 1, 0x42), -SCE(0x01b2, 0, 0x82),SCE(0x028b, 1, 0x42),SCE(0x10426, 0, 0x82),SCE(0x1044e, 1, 0x42), -SCE(0xa662, 0, 0x82),SCE(0xa663, 1, 0x42),SCE(0x0054, 0, 0x82),SCE(0x0074, 1, 0x42), -SCE(0x0556, 0, 0x82),SCE(0x0586, 1, 0x42),SCE(0x042a, 0, 0x83),SCE(0x044a, 1, 0x43), -SCE(0x1c86, 2, 0x43),SCE(0x10422, 0, 0x82),SCE(0x1044a, 1, 0x42),SCE(0x1f36, 0, 0x42), -SCE(0x1f3e, 1, 0x82),SCE(0xa794, 0, 0x42),SCE(0xa7c4, 1, 0x82),SCE(0x04cd, 0, 0x82), -SCE(0x04ce, 1, 0x42),SCE(0x104bb, 0, 0x82),SCE(0x104e3, 1, 0x42),SCE(0x023b, 0, 0x82), -SCE(0x023c, 1, 0x42),SCE(0x01cf, 0, 0x82),SCE(0x01d0, 1, 0x42),SCE(0x050c, 0, 0x82), -SCE(0x050d, 1, 0x42),SCE(0xa646, 0, 0x82),SCE(0xa647, 1, 0x42),SCE(0x1e46, 0, 0x82), -SCE(0x1e47, 1, 0x42),SCE(0x10ca6, 0, 0x82),SCE(0x10ce6, 1, 0x42),SCE(0xa779, 0, 0x82), -SCE(0xa77a, 1, 0x42),SCE(0xff36, 0, 0x82),SCE(0xff56, 1, 0x42),SCE(0x118a2, 0, 0x82), -SCE(0x118c2, 1, 0x42),SCE(0x04ea, 0, 0x82),SCE(0x04eb, 1, 0x42),SCE(0x041d, 0, 0x82), -SCE(0x043d, 1, 0x42),SCE(0x16e52, 0, 0x82),SCE(0x16e72, 1, 0x42),SCE(0xa688, 0, 0x82), -SCE(0xa689, 1, 0x42),SCE(0x1eb2, 0, 0x82),SCE(0x1eb3, 1, 0x42),SCE(0x2160, 0, 0x82), -SCE(0x2170, 1, 0x42),SCE(0x1ed6, 0, 0x82),SCE(0x1ed7, 1, 0x42),SCE(0x24c3, 0, 0x82), -SCE(0x24dd, 1, 0x42),SCE(0x16e5e, 0, 0x82),SCE(0x16e7e, 1, 0x42),SCE(0x04ac, 0, 0x82), -SCE(0x04ad, 1, 0x42),SCE(0x1e910, 0, 0x82),SCE(0x1e932, 1, 0x42),SCE(0x023e, 0, 0x82), -SCE(0x2c66, 1, 0x42),SCE(0x2cb4, 0, 0x82),SCE(0x2cb5, 1, 0x42),SCE(0xff2d, 0, 0x82), -SCE(0xff4d, 1, 0x42),SCE(0x014c, 0, 0x82),SCE(0x014d, 1, 0x42),SCE(0x1e22, 0, 0x82), -SCE(0x1e23, 1, 0x42),SCE(0x13bb, 0, 0x82),SCE(0xab8b, 1, 0x42),SCE(0x0143, 0, 0x82), -SCE(0x0144, 1, 0x42),SCE(0x10581, 0, 0x82),SCE(0x105a8, 1, 0x42),SCE(0x0170, 0, 0x82), -SCE(0x0171, 1, 0x42),SCE(0x1e94, 0, 0x82),SCE(0x1e95, 1, 0x42),SCE(0x2c28, 0, 0x82), -SCE(0x2c58, 1, 0x42),SCE(0x1040e, 0, 0x82),SCE(0x10436, 1, 0x42),SCE(0x104b2, 0, 0x82), -SCE(0x104da, 1, 0x42),SCE(0xa798, 0, 0x82),SCE(0xa799, 1, 0x42),SCE(0x13b8, 0, 0x82), -SCE(0xab88, 1, 0x42),SCE(0x1e70, 0, 0x82),SCE(0x1e71, 1, 0x42),SCE(0x0422, 0, 0x84), -SCE(0x0442, 1, 0x44),SCE(0x1c84, 2, 0x44),SCE(0x1c85, 3, 0x44),SCE(0x10c85, 0, 0x82), -SCE(0x10cc5, 1, 0x42),SCE(0x1eae, 0, 0x82),SCE(0x1eaf, 1, 0x42),SCE(0x0122, 0, 0x82), -SCE(0x0123, 1, 0x42),SCE(0x10c8c, 0, 0x82),SCE(0x10ccc, 1, 0x42),SCE(0x10405, 0, 0x82), -SCE(0x1042d, 1, 0x42),SCE(0x0420, 0, 0x82),SCE(0x0440, 1, 0x42),SCE(0x01ae, 0, 0x82), -SCE(0x0288, 1, 0x42),SCE(0x021a, 0, 0x82),SCE(0x021b, 1, 0x42),SCE(0x038c, 0, 0x82), -SCE(0x03cc, 1, 0x42),SCE(0x1f95, 0, 0x42),SCE(0x1f9d, 1, 0x2),SCE(0x0345, 0, 0x44), -SCE(0x0399, 1, 0x84),SCE(0x03b9, 2, 0x44),SCE(0x1fbe, 3, 0x44),SCE(0x018a, 0, 0x82), -SCE(0x0257, 1, 0x42),SCE(0x2c90, 0, 0x82),SCE(0x2c91, 1, 0x42),SCE(0x10b1, 0, 0x82), -SCE(0x2d11, 1, 0x42),SCE(0x011e, 0, 0x82),SCE(0x011f, 1, 0x42),SCE(0x1e08, 0, 0x82), -SCE(0x1e09, 1, 0x42),SCE(0xa7c0, 0, 0x82),SCE(0xa7c1, 1, 0x42),SCE(0x13e7, 0, 0x82), -SCE(0xabb7, 1, 0x42),SCE(0x10580, 0, 0x82),SCE(0x105a7, 1, 0x42),SCE(0x041c, 0, 0x82), -SCE(0x043c, 1, 0x42),SCE(0xa7a4, 0, 0x82),SCE(0xa7a5, 1, 0x42),SCE(0x1e74, 0, 0x82), +SCE(0x0570, 1, 0x42),SCE(0x0390, 0, 0x42),SCE(0x1fd3, 1, 0x42),SCE(0x004b, 0, 0x83), +SCE(0x006b, 1, 0x43),SCE(0x212a, 2, 0x83),SCE(0x04f8, 0, 0x82),SCE(0x04f9, 1, 0x42), +SCE(0x13f3, 0, 0x82),SCE(0x13fb, 1, 0x42),SCE(0x00c9, 0, 0x82),SCE(0x00e9, 1, 0x42), +SCE(0x040f, 0, 0x82),SCE(0x045f, 1, 0x42),SCE(0x10b5, 0, 0x82),SCE(0x2d15, 1, 0x42), +SCE(0xa746, 0, 0x82),SCE(0xa747, 1, 0x42),SCE(0x00cd, 0, 0x82),SCE(0x00ed, 1, 0x42), +SCE(0x0476, 0, 0x82),SCE(0x0477, 1, 0x42),SCE(0x039e, 0, 0x82),SCE(0x03be, 1, 0x42), +SCE(0x1f20, 0, 0x42),SCE(0x1f28, 1, 0x82),SCE(0x10fa, 0, 0x42),SCE(0x1cba, 1, 0x82), +SCE(0x2c21, 0, 0x82),SCE(0x2c51, 1, 0x42),SCE(0x1ea6, 0, 0x82),SCE(0x1ea7, 1, 0x42), +SCE(0x1f83, 0, 0x42),SCE(0x1f8b, 1, 0x2),SCE(0x053c, 0, 0x82),SCE(0x056c, 1, 0x42), +SCE(0x1f01, 0, 0x42),SCE(0x1f09, 1, 0x82),SCE(0x2cc2, 0, 0x82),SCE(0x2cc3, 1, 0x42), +SCE(0x0208, 0, 0x82),SCE(0x0209, 1, 0x42),SCE(0x13e3, 0, 0x82),SCE(0xabb3, 1, 0x42), +SCE(0xa796, 0, 0x82),SCE(0xa797, 1, 0x42),SCE(0x1f64, 0, 0x42),SCE(0x1f6c, 1, 0x82), +SCE(0x10592, 0, 0x82),SCE(0x105b9, 1, 0x42),SCE(0x04be, 0, 0x82),SCE(0x04bf, 1, 0x42), +SCE(0x1f91, 0, 0x42),SCE(0x1f99, 1, 0x2),SCE(0x03e6, 0, 0x82),SCE(0x03e7, 1, 0x42), +SCE(0x1ee0, 0, 0x82),SCE(0x1ee1, 1, 0x42),SCE(0x1ff3, 0, 0x42),SCE(0x1ffc, 1, 0x2), +SCE(0x0413, 0, 0x82),SCE(0x0433, 1, 0x42),SCE(0x042e, 0, 0x82),SCE(0x044e, 1, 0x42), +SCE(0x104ca, 0, 0x82),SCE(0x104f2, 1, 0x42),SCE(0x2c00, 0, 0x82),SCE(0x2c30, 1, 0x42), +SCE(0x10db, 0, 0x42),SCE(0x1c9b, 1, 0x82),SCE(0x10f6, 0, 0x42),SCE(0x1cb6, 1, 0x82), +SCE(0x118be, 0, 0x82),SCE(0x118de, 1, 0x42),SCE(0x01a7, 0, 0x82),SCE(0x01a8, 1, 0x42), +SCE(0x10c3, 0, 0x82),SCE(0x2d23, 1, 0x42),SCE(0x0415, 0, 0x82),SCE(0x0435, 1, 0x42), +SCE(0x1e1e, 0, 0x82),SCE(0x1e1f, 1, 0x42),SCE(0x0506, 0, 0x82),SCE(0x0507, 1, 0x42), +SCE(0x1e64, 0, 0x82),SCE(0x1e65, 1, 0x42),SCE(0x00c7, 0, 0x82),SCE(0x00e7, 1, 0x42), +SCE(0x047c, 0, 0x82),SCE(0x047d, 1, 0x42),SCE(0x1e52, 0, 0x82),SCE(0x1e53, 1, 0x42), +SCE(0x10f4, 0, 0x42),SCE(0x1cb4, 1, 0x82),SCE(0x10586, 0, 0x82),SCE(0x105ad, 1, 0x42), +SCE(0x046a, 0, 0x82),SCE(0x046b, 1, 0x42),SCE(0x2c27, 0, 0x82),SCE(0x2c57, 1, 0x42), +SCE(0x10c89, 0, 0x82),SCE(0x10cc9, 1, 0x42),SCE(0x10a2, 0, 0x82),SCE(0x2d02, 1, 0x42), +SCE(0xff32, 0, 0x82),SCE(0xff52, 1, 0x42),SCE(0x0398, 0, 0x84),SCE(0x03b8, 1, 0x44), +SCE(0x03d1, 2, 0x44),SCE(0x03f4, 3, 0x84),SCE(0x03a9, 0, 0x83),SCE(0x03c9, 1, 0x43), +SCE(0x2126, 2, 0x83),SCE(0x1eda, 0, 0x82),SCE(0x1edb, 1, 0x42),SCE(0x1e901, 0, 0x82), +SCE(0x1e923, 1, 0x42),SCE(0xa79c, 0, 0x82),SCE(0xa79d, 1, 0x42),SCE(0x10d3, 0, 0x42), +SCE(0x1c93, 1, 0x82),SCE(0x24bc, 0, 0x82),SCE(0x24d6, 1, 0x42),SCE(0xff2f, 0, 0x82), +SCE(0xff4f, 1, 0x42),SCE(0x0250, 0, 0x42),SCE(0x2c6f, 1, 0x82),SCE(0x2c29, 0, 0x82), +SCE(0x2c59, 1, 0x42),SCE(0x04b2, 0, 0x82),SCE(0x04b3, 1, 0x42),SCE(0x10419, 0, 0x82), +SCE(0x10441, 1, 0x42),SCE(0x0210, 0, 0x82),SCE(0x0211, 1, 0x42),SCE(0x2c15, 0, 0x82), +SCE(0x2c45, 1, 0x42),SCE(0x16e47, 0, 0x82),SCE(0x16e67, 1, 0x42),SCE(0xa754, 0, 0x82), +SCE(0xa755, 1, 0x42),SCE(0x16e45, 0, 0x82),SCE(0x16e65, 1, 0x42),SCE(0x01c7, 0, 0x83), +SCE(0x01c8, 1, 0x3),SCE(0x01c9, 2, 0x43),SCE(0x047e, 0, 0x82),SCE(0x047f, 1, 0x42), +SCE(0x01fc, 0, 0x82),SCE(0x01fd, 1, 0x42),SCE(0x020e, 0, 0x82),SCE(0x020f, 1, 0x42), +SCE(0x0244, 0, 0x82),SCE(0x0289, 1, 0x42),SCE(0x1f77, 0, 0x42),SCE(0x1fdb, 1, 0x82), +SCE(0x2cd6, 0, 0x82),SCE(0x2cd7, 1, 0x42),SCE(0x10589, 0, 0x82),SCE(0x105b0, 1, 0x42), +SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44),SCE(0x1c84, 2, 0x44),SCE(0x1c85, 3, 0x44), +SCE(0x10e7, 0, 0x42),SCE(0x1ca7, 1, 0x82),SCE(0x04fa, 0, 0x82),SCE(0x04fb, 1, 0x42), +SCE(0x10d5, 0, 0x42),SCE(0x1c95, 1, 0x82),SCE(0x1eac, 0, 0x82),SCE(0x1ead, 1, 0x42), +SCE(0x10b7, 0, 0x82),SCE(0x2d17, 1, 0x42),SCE(0x13a1, 0, 0x82),SCE(0xab71, 1, 0x42), +SCE(0xa7c2, 0, 0x82),SCE(0xa7c3, 1, 0x42),SCE(0x1e907, 0, 0x82),SCE(0x1e929, 1, 0x42), +SCE(0x13f5, 0, 0x82),SCE(0x13fd, 1, 0x42),SCE(0x1ee2, 0, 0x82),SCE(0x1ee3, 1, 0x42), +SCE(0x1f62, 0, 0x42),SCE(0x1f6a, 1, 0x82),SCE(0x1e92, 0, 0x82),SCE(0x1e93, 1, 0x42), +SCE(0x01d5, 0, 0x82),SCE(0x01d6, 1, 0x42),SCE(0x2c06, 0, 0x82),SCE(0x2c36, 1, 0x42), +SCE(0x10c8b, 0, 0x82),SCE(0x10ccb, 1, 0x42),SCE(0x1f70, 0, 0x42),SCE(0x1fba, 1, 0x82), +SCE(0x03ec, 0, 0x82),SCE(0x03ed, 1, 0x42),SCE(0x1e915, 0, 0x82),SCE(0x1e937, 1, 0x42), +SCE(0x216e, 0, 0x82),SCE(0x217e, 1, 0x42),SCE(0x13c0, 0, 0x82),SCE(0xab90, 1, 0x42), +SCE(0x1ef4, 0, 0x82),SCE(0x1ef5, 1, 0x42),SCE(0xff3a, 0, 0x82),SCE(0xff5a, 1, 0x42), +SCE(0x118bc, 0, 0x82),SCE(0x118dc, 1, 0x42),SCE(0x04aa, 0, 0x82),SCE(0x04ab, 1, 0x42), +SCE(0x2163, 0, 0x82),SCE(0x2173, 1, 0x42),SCE(0x1e1c, 0, 0x82),SCE(0x1e1d, 1, 0x42), +SCE(0x13c8, 0, 0x82),SCE(0xab98, 1, 0x42),SCE(0x118af, 0, 0x82),SCE(0x118cf, 1, 0x42), +SCE(0x10c98, 0, 0x82),SCE(0x10cd8, 1, 0x42),SCE(0x10571, 0, 0x82),SCE(0x10598, 1, 0x42), +SCE(0x10ca7, 0, 0x82),SCE(0x10ce7, 1, 0x42),SCE(0x0051, 0, 0x82),SCE(0x0071, 1, 0x42), +SCE(0x04f2, 0, 0x82),SCE(0x04f3, 1, 0x42),SCE(0x10caa, 0, 0x82),SCE(0x10cea, 1, 0x42), +SCE(0x10af, 0, 0x82),SCE(0x2d0f, 1, 0x42),SCE(0x2c8e, 0, 0x82),SCE(0x2c8f, 1, 0x42), +SCE(0x2cc4, 0, 0x82),SCE(0x2cc5, 1, 0x42),SCE(0x1e0a, 0, 0x82),SCE(0x1e0b, 1, 0x42), +SCE(0x16e50, 0, 0x82),SCE(0x16e70, 1, 0x42),SCE(0x1058e, 0, 0x82),SCE(0x105b5, 1, 0x42), +SCE(0x10411, 0, 0x82),SCE(0x10439, 1, 0x42),SCE(0x10423, 0, 0x82),SCE(0x1044b, 1, 0x42), +SCE(0x053a, 0, 0x82),SCE(0x056a, 1, 0x42),SCE(0x1e6c, 0, 0x82),SCE(0x1e6d, 1, 0x42), +SCE(0x104be, 0, 0x82),SCE(0x104e6, 1, 0x42),SCE(0x10424, 0, 0x82),SCE(0x1044c, 1, 0x42), +SCE(0x10a9, 0, 0x82),SCE(0x2d09, 1, 0x42),SCE(0x24c2, 0, 0x82),SCE(0x24dc, 1, 0x42), +SCE(0x10c81, 0, 0x82),SCE(0x10cc1, 1, 0x42),SCE(0x13bc, 0, 0x82),SCE(0xab8c, 1, 0x42), +SCE(0x0462, 0, 0x83),SCE(0x0463, 1, 0x43),SCE(0x1c87, 2, 0x43),SCE(0x118a6, 0, 0x82), +SCE(0x118c6, 1, 0x42),SCE(0x1e4a, 0, 0x82),SCE(0x1e4b, 1, 0x42),SCE(0x2162, 0, 0x82), +SCE(0x2172, 1, 0x42),SCE(0x1ed4, 0, 0x82),SCE(0x1ed5, 1, 0x42),SCE(0x10aa, 0, 0x82), +SCE(0x2d0a, 1, 0x42),SCE(0x04ec, 0, 0x82),SCE(0x04ed, 1, 0x42),SCE(0x2c0c, 0, 0x82), +SCE(0x2c3c, 1, 0x42),SCE(0xa79a, 0, 0x82),SCE(0xa79b, 1, 0x42),SCE(0x04cb, 0, 0x82), +SCE(0x04cc, 1, 0x42),SCE(0x104bd, 0, 0x82),SCE(0x104e5, 1, 0x42),SCE(0x0370, 0, 0x82), +SCE(0x0371, 1, 0x42),SCE(0x1e914, 0, 0x82),SCE(0x1e936, 1, 0x42),SCE(0x03da, 0, 0x82), +SCE(0x03db, 1, 0x42),SCE(0x1f35, 0, 0x42),SCE(0x1f3d, 1, 0x82),SCE(0x16e51, 0, 0x82), +SCE(0x16e71, 1, 0x42),SCE(0x0392, 0, 0x83),SCE(0x03b2, 1, 0x43),SCE(0x03d0, 2, 0x43), +SCE(0x2c96, 0, 0x82),SCE(0x2c97, 1, 0x42),SCE(0x0391, 0, 0x82),SCE(0x03b1, 1, 0x42), +SCE(0x0534, 0, 0x82),SCE(0x0564, 1, 0x42),SCE(0x041b, 0, 0x82),SCE(0x043b, 1, 0x42), +SCE(0x13df, 0, 0x82),SCE(0xabaf, 1, 0x42),SCE(0x2c2c, 0, 0x82),SCE(0x2c5c, 1, 0x42), +SCE(0x0124, 0, 0x82),SCE(0x0125, 1, 0x42),SCE(0x10ca2, 0, 0x82),SCE(0x10ce2, 1, 0x42), +SCE(0x1e8c, 0, 0x82),SCE(0x1e8d, 1, 0x42),SCE(0x1eb4, 0, 0x82),SCE(0x1eb5, 1, 0x42), +SCE(0x016c, 0, 0x82),SCE(0x016d, 1, 0x42),SCE(0x1e02, 0, 0x82),SCE(0x1e03, 1, 0x42), +SCE(0x019a, 0, 0x42),SCE(0x023d, 1, 0x82),SCE(0x0102, 0, 0x82),SCE(0x0103, 1, 0x42), +SCE(0x1f14, 0, 0x42),SCE(0x1f1c, 1, 0x82),SCE(0xff28, 0, 0x82),SCE(0xff48, 1, 0x42), +SCE(0x10c80, 0, 0x82),SCE(0x10cc0, 1, 0x42),SCE(0x10ee, 0, 0x42),SCE(0x1cae, 1, 0x82), +SCE(0x1f55, 0, 0x42),SCE(0x1f5d, 1, 0x82),SCE(0xa77b, 0, 0x82),SCE(0xa77c, 1, 0x42), +SCE(0x0059, 0, 0x82),SCE(0x0079, 1, 0x42),SCE(0x014a, 0, 0x82),SCE(0x014b, 1, 0x42), +SCE(0x1e24, 0, 0x82),SCE(0x1e25, 1, 0x42),SCE(0x13bd, 0, 0x82),SCE(0xab8d, 1, 0x42), +SCE(0x2cbc, 0, 0x82),SCE(0x2cbd, 1, 0x42),SCE(0x1040d, 0, 0x82),SCE(0x10435, 1, 0x42), +SCE(0x1058f, 0, 0x82),SCE(0x105b6, 1, 0x42),SCE(0x118a7, 0, 0x82),SCE(0x118c7, 1, 0x42), +SCE(0xa660, 0, 0x82),SCE(0xa661, 1, 0x42),SCE(0x0514, 0, 0x82),SCE(0x0515, 1, 0x42), +SCE(0x052e, 0, 0x82),SCE(0x052f, 1, 0x42),SCE(0x04a4, 0, 0x82),SCE(0x04a5, 1, 0x42), +SCE(0x0400, 0, 0x82),SCE(0x0450, 1, 0x42),SCE(0x16e58, 0, 0x82),SCE(0x16e78, 1, 0x42), +SCE(0xa64e, 0, 0x82),SCE(0xa64f, 1, 0x42),SCE(0xff2e, 0, 0x82),SCE(0xff4e, 1, 0x42), +SCE(0x1040c, 0, 0x82),SCE(0x10434, 1, 0x42),SCE(0x00db, 0, 0x82),SCE(0x00fb, 1, 0x42), +SCE(0x01cd, 0, 0x82),SCE(0x01ce, 1, 0x42),SCE(0x10e8, 0, 0x42),SCE(0x1ca8, 1, 0x82), +SCE(0x054f, 0, 0x82),SCE(0x057f, 1, 0x42),SCE(0xa738, 0, 0x82),SCE(0xa739, 1, 0x42), +SCE(0x16e5f, 0, 0x82),SCE(0x16e7f, 1, 0x42),SCE(0x1d79, 0, 0x42),SCE(0xa77d, 1, 0x82), +SCE(0x1e90f, 0, 0x82),SCE(0x1e931, 1, 0x42),SCE(0x2c07, 0, 0x82),SCE(0x2c37, 1, 0x42), +SCE(0x10a3, 0, 0x82),SCE(0x2d03, 1, 0x42),SCE(0xa7a0, 0, 0x82),SCE(0xa7a1, 1, 0x42), +SCE(0x0421, 0, 0x83),SCE(0x0441, 1, 0x43),SCE(0x1c83, 2, 0x43),SCE(0xa680, 0, 0x82), +SCE(0xa681, 1, 0x42),SCE(0x0282, 0, 0x42),SCE(0xa7c5, 1, 0x82),SCE(0x24cb, 0, 0x82), +SCE(0x24e5, 1, 0x42),SCE(0x0401, 0, 0x82),SCE(0x0451, 1, 0x42),SCE(0xa758, 0, 0x82), +SCE(0xa759, 1, 0x42),SCE(0x0058, 0, 0x82),SCE(0x0078, 1, 0x42),SCE(0x0193, 0, 0x82), +SCE(0x0260, 1, 0x42),SCE(0x10ca1, 0, 0x82),SCE(0x10ce1, 1, 0x42),SCE(0x054e, 0, 0x82), +SCE(0x057e, 1, 0x42),SCE(0x0186, 0, 0x82),SCE(0x0254, 1, 0x42),SCE(0x13dc, 0, 0x82), +SCE(0xabac, 1, 0x42),SCE(0x24bd, 0, 0x82),SCE(0x24d7, 1, 0x42),SCE(0x01b3, 0, 0x82), +SCE(0x01b4, 1, 0x42),SCE(0xa696, 0, 0x82),SCE(0xa697, 1, 0x42),SCE(0x0216, 0, 0x82), +SCE(0x0217, 1, 0x42),SCE(0x1ece, 0, 0x82),SCE(0x1ecf, 1, 0x42),SCE(0x2168, 0, 0x82), +SCE(0x2178, 1, 0x42),SCE(0x1e90e, 0, 0x82),SCE(0x1e930, 1, 0x42),SCE(0x2c12, 0, 0x82), +SCE(0x2c42, 1, 0x42),SCE(0x2c2f, 0, 0x82),SCE(0x2c5f, 1, 0x42),SCE(0x10cab, 0, 0x82), +SCE(0x10ceb, 1, 0x42),SCE(0x1e86, 0, 0x82),SCE(0x1e87, 1, 0x42),SCE(0x0412, 0, 0x83), +SCE(0x0432, 1, 0x43),SCE(0x1c80, 2, 0x43),SCE(0x13d6, 0, 0x82),SCE(0xaba6, 1, 0x42), +SCE(0x1eba, 0, 0x82),SCE(0x1ebb, 1, 0x42),SCE(0x1e91b, 0, 0x82),SCE(0x1e93d, 1, 0x42), +SCE(0x1041a, 0, 0x82),SCE(0x10442, 1, 0x42),SCE(0x1eee, 0, 0x82),SCE(0x1eef, 1, 0x42), +SCE(0xff31, 0, 0x82),SCE(0xff51, 1, 0x42),SCE(0xa7bc, 0, 0x82),SCE(0xa7bd, 1, 0x42), +SCE(0x01db, 0, 0x82),SCE(0x01dc, 1, 0x42),SCE(0x01a6, 0, 0x82),SCE(0x0280, 1, 0x42), +SCE(0x1f07, 0, 0x42),SCE(0x1f0f, 1, 0x82),SCE(0x118bd, 0, 0x82),SCE(0x118dd, 1, 0x42), +SCE(0x00c8, 0, 0x82),SCE(0x00e8, 1, 0x42),SCE(0x04d2, 0, 0x82),SCE(0x04d3, 1, 0x42), +SCE(0x10e1, 0, 0x42),SCE(0x1ca1, 1, 0x82),SCE(0x13b7, 0, 0x82),SCE(0xab87, 1, 0x42), +SCE(0x10585, 0, 0x82),SCE(0x105ac, 1, 0x42),SCE(0x16e4b, 0, 0x82),SCE(0x16e6b, 1, 0x42), +SCE(0x0172, 0, 0x82),SCE(0x0173, 1, 0x42),SCE(0x049e, 0, 0x82),SCE(0x049f, 1, 0x42), +SCE(0x04e6, 0, 0x82),SCE(0x04e7, 1, 0x42),SCE(0x10b0, 0, 0x82),SCE(0x2d10, 1, 0x42), +SCE(0x2c9c, 0, 0x82),SCE(0x2c9d, 1, 0x42),SCE(0x01ee, 0, 0x82),SCE(0x01ef, 1, 0x42), +SCE(0x104b4, 0, 0x82),SCE(0x104dc, 1, 0x42),SCE(0x10c87, 0, 0x82),SCE(0x10cc7, 1, 0x42), +SCE(0x13ba, 0, 0x82),SCE(0xab8a, 1, 0x42),SCE(0x1e10, 0, 0x82),SCE(0x1e11, 1, 0x42), +SCE(0x0230, 0, 0x82),SCE(0x0231, 1, 0x42),SCE(0x0428, 0, 0x82),SCE(0x0448, 1, 0x42), +SCE(0x2cd0, 0, 0x82),SCE(0x2cd1, 1, 0x42),SCE(0x118a0, 0, 0x82),SCE(0x118c0, 1, 0x42), +SCE(0x03e0, 0, 0x82),SCE(0x03e1, 1, 0x42),SCE(0x10588, 0, 0x82),SCE(0x105af, 1, 0x42), +SCE(0xa780, 0, 0x82),SCE(0xa781, 1, 0x42),SCE(0x10f5, 0, 0x42),SCE(0x1cb5, 1, 0x82), +SCE(0x053b, 0, 0x82),SCE(0x056b, 1, 0x42),SCE(0x00d5, 0, 0x82),SCE(0x00f5, 1, 0x42), +SCE(0x0414, 0, 0x83),SCE(0x0434, 1, 0x43),SCE(0x1c81, 2, 0x43),SCE(0x1fa4, 0, 0x42), +SCE(0x1fac, 1, 0x2),SCE(0x012a, 0, 0x82),SCE(0x012b, 1, 0x42),SCE(0x0052, 0, 0x82), +SCE(0x0072, 1, 0x42),SCE(0x24b7, 0, 0x82),SCE(0x24d1, 1, 0x42),SCE(0x1e908, 0, 0x82), +SCE(0x1e92a, 1, 0x42),SCE(0x0398, 0, 0x84),SCE(0x03b8, 1, 0x44),SCE(0x03d1, 2, 0x44), +SCE(0x03f4, 3, 0x84),SCE(0x0202, 0, 0x82),SCE(0x0203, 1, 0x42),SCE(0x0271, 0, 0x42), +SCE(0x2c6e, 1, 0x82),SCE(0x0470, 0, 0x82),SCE(0x0471, 1, 0x42),SCE(0x2c1b, 0, 0x82), +SCE(0x2c4b, 1, 0x42),SCE(0x048a, 0, 0x82),SCE(0x048b, 1, 0x42),SCE(0xa752, 0, 0x82), +SCE(0xa753, 1, 0x42),SCE(0xff25, 0, 0x82),SCE(0xff45, 1, 0x42),SCE(0x0407, 0, 0x82), +SCE(0x0457, 1, 0x42),SCE(0x00c1, 0, 0x82),SCE(0x00e1, 1, 0x42),SCE(0x1e44, 0, 0x82), +SCE(0x1e45, 1, 0x42),SCE(0x1f97, 0, 0x42),SCE(0x1f9f, 1, 0x2),SCE(0x0548, 0, 0x82), +SCE(0x0578, 1, 0x42),SCE(0x021c, 0, 0x82),SCE(0x021d, 1, 0x42),SCE(0x13e5, 0, 0x82), +SCE(0xabb5, 1, 0x42),SCE(0x051a, 0, 0x82),SCE(0x051b, 1, 0x42),SCE(0x2cb6, 0, 0x82), +SCE(0x2cb7, 1, 0x42),SCE(0xa654, 0, 0x82),SCE(0xa655, 1, 0x42),SCE(0x10403, 0, 0x82), +SCE(0x1042b, 1, 0x42),SCE(0x1e72, 0, 0x82),SCE(0x1e73, 1, 0x42),SCE(0x10d4, 0, 0x42), +SCE(0x1c94, 1, 0x82),SCE(0x104c1, 0, 0x82),SCE(0x104e9, 1, 0x42),SCE(0x10c8a, 0, 0x82), +SCE(0x10cca, 1, 0x42),SCE(0x1e2a, 0, 0x82),SCE(0x1e2b, 1, 0x42),SCE(0x0462, 0, 0x83), +SCE(0x0463, 1, 0x43),SCE(0x1c87, 2, 0x43),SCE(0x1f76, 0, 0x42),SCE(0x1fda, 1, 0x82), +SCE(0x0053, 0, 0x83),SCE(0x0073, 1, 0x43),SCE(0x017f, 2, 0x43),SCE(0x2c26, 0, 0x82), +SCE(0x2c56, 1, 0x42),SCE(0x13a0, 0, 0x82),SCE(0xab70, 1, 0x42),SCE(0x04c5, 0, 0x82), +SCE(0x04c6, 1, 0x42),SCE(0x03fa, 0, 0x82),SCE(0x03fb, 1, 0x42),SCE(0x0555, 0, 0x82), +SCE(0x0585, 1, 0x42),SCE(0x13e8, 0, 0x82),SCE(0xabb8, 1, 0x42),SCE(0x01c7, 0, 0x83), +SCE(0x01c8, 1, 0x3),SCE(0x01c9, 2, 0x43),SCE(0x1f42, 0, 0x42),SCE(0x1f4a, 1, 0x82), +SCE(0x1f67, 0, 0x42),SCE(0x1f6f, 1, 0x82),SCE(0x1057c, 0, 0x82),SCE(0x105a3, 1, 0x42), +SCE(0xa7b4, 0, 0x82),SCE(0xa7b5, 1, 0x42),SCE(0xa698, 0, 0x82),SCE(0xa699, 1, 0x42), +SCE(0x1e904, 0, 0x82),SCE(0x1e926, 1, 0x42),SCE(0x040c, 0, 0x82),SCE(0x045c, 1, 0x42), +SCE(0x10da, 0, 0x42),SCE(0x1c9a, 1, 0x82),SCE(0x00d0, 0, 0x82),SCE(0x00f0, 1, 0x42), +SCE(0x16e46, 0, 0x82),SCE(0x16e66, 1, 0x42),SCE(0x1ec2, 0, 0x82),SCE(0x1ec3, 1, 0x42), +SCE(0x01e4, 0, 0x82),SCE(0x01e5, 1, 0x42),SCE(0x0044, 0, 0x82),SCE(0x0064, 1, 0x42), +SCE(0x017d, 0, 0x82),SCE(0x017e, 1, 0x42),SCE(0x1f21, 0, 0x42),SCE(0x1f29, 1, 0x82), +SCE(0xff39, 0, 0x82),SCE(0xff59, 1, 0x42),SCE(0x13ac, 0, 0x82),SCE(0xab7c, 1, 0x42), +SCE(0x1f00, 0, 0x42),SCE(0x1f08, 1, 0x82),SCE(0x03a5, 0, 0x82),SCE(0x03c5, 1, 0x42), +SCE(0x0158, 0, 0x82),SCE(0x0159, 1, 0x42),SCE(0x104cf, 0, 0x82),SCE(0x104f7, 1, 0x42), +SCE(0x1e3a, 0, 0x82),SCE(0x1e3b, 1, 0x42),SCE(0xa72c, 0, 0x82),SCE(0xa72d, 1, 0x42), +SCE(0x118b7, 0, 0x82),SCE(0x118d7, 1, 0x42),SCE(0x0112, 0, 0x82),SCE(0x0113, 1, 0x42), +SCE(0x1e36, 0, 0x82),SCE(0x1e37, 1, 0x42),SCE(0x16e4e, 0, 0x82),SCE(0x16e6e, 1, 0x42), +SCE(0x1f7d, 0, 0x42),SCE(0x1ffb, 1, 0x82),SCE(0x0494, 0, 0x82),SCE(0x0495, 1, 0x42), +SCE(0x1e80, 0, 0x82),SCE(0x1e81, 1, 0x42),SCE(0x0116, 0, 0x82),SCE(0x0117, 1, 0x42), +SCE(0x042d, 0, 0x82),SCE(0x044d, 1, 0x42),SCE(0x13f2, 0, 0x82),SCE(0x13fa, 1, 0x42), +SCE(0x0179, 0, 0x82),SCE(0x017a, 1, 0x42),SCE(0x04da, 0, 0x82),SCE(0x04db, 1, 0x42), +SCE(0x2ca8, 0, 0x82),SCE(0x2ca9, 1, 0x42),SCE(0x00cc, 0, 0x82),SCE(0x00ec, 1, 0x42), +SCE(0x01a2, 0, 0x82),SCE(0x01a3, 1, 0x42),SCE(0x03a1, 0, 0x83),SCE(0x03c1, 1, 0x43), +SCE(0x03f1, 2, 0x43),SCE(0x1e7c, 0, 0x82),SCE(0x1e7d, 1, 0x42),SCE(0x13cf, 0, 0x82), +SCE(0xab9f, 1, 0x42),SCE(0x10412, 0, 0x82),SCE(0x1043a, 1, 0x42),SCE(0x0520, 0, 0x82), +SCE(0x0521, 1, 0x42),SCE(0x2c1c, 0, 0x82),SCE(0x2c4c, 1, 0x42),SCE(0x026b, 0, 0x42), +SCE(0x2c62, 1, 0x82),SCE(0x10591, 0, 0x82),SCE(0x105b8, 1, 0x42),SCE(0x015c, 0, 0x82), +SCE(0x015d, 1, 0x42),SCE(0xa652, 0, 0x82),SCE(0xa653, 1, 0x42),SCE(0xff26, 0, 0x82), +SCE(0xff46, 1, 0x42),SCE(0x01e8, 0, 0x82),SCE(0x01e9, 1, 0x42),SCE(0x10b6, 0, 0x82), +SCE(0x2d16, 1, 0x42),SCE(0xa656, 0, 0x82),SCE(0xa657, 1, 0x42),SCE(0x051c, 0, 0x82), +SCE(0x051d, 1, 0x42),SCE(0x13c3, 0, 0x82),SCE(0xab93, 1, 0x42),SCE(0x104cb, 0, 0x82), +SCE(0x104f3, 1, 0x42),SCE(0x1ec6, 0, 0x82),SCE(0x1ec7, 1, 0x42),SCE(0x01e0, 0, 0x82), +SCE(0x01e1, 1, 0x42),SCE(0x1f63, 0, 0x42),SCE(0x1f6b, 1, 0x82),SCE(0x2c01, 0, 0x82), +SCE(0x2c31, 1, 0x42),SCE(0x1e900, 0, 0x82),SCE(0x1e922, 1, 0x42),SCE(0x1e78, 0, 0x82), +SCE(0x1e79, 1, 0x42),SCE(0x24ce, 0, 0x82),SCE(0x24e8, 1, 0x42),SCE(0xa76a, 0, 0x82), +SCE(0xa76b, 1, 0x42),SCE(0x011a, 0, 0x82),SCE(0x011b, 1, 0x42),SCE(0x0429, 0, 0x82), +SCE(0x0449, 1, 0x42),SCE(0x1f84, 0, 0x42),SCE(0x1f8c, 1, 0x2),SCE(0x10d6, 0, 0x42), +SCE(0x1c96, 1, 0x82),SCE(0x1fb1, 0, 0x42),SCE(0x1fb9, 1, 0x82),SCE(0xa762, 0, 0x82), +SCE(0xa763, 1, 0x42),SCE(0x10cb2, 0, 0x82),SCE(0x10cf2, 1, 0x42),SCE(0x2c20, 0, 0x82), +SCE(0x2c50, 1, 0x42),SCE(0x10be, 0, 0x82),SCE(0x2d1e, 1, 0x42),SCE(0x1041e, 0, 0x82), +SCE(0x10446, 1, 0x42),SCE(0x04e2, 0, 0x82),SCE(0x04e3, 1, 0x42),SCE(0x04de, 0, 0x82), +SCE(0x04df, 1, 0x42),SCE(0x13ea, 0, 0x82),SCE(0xabba, 1, 0x42),SCE(0x0541, 0, 0x82), +SCE(0x0571, 1, 0x42),SCE(0x0545, 0, 0x82),SCE(0x0575, 1, 0x42),SCE(0x1f25, 0, 0x42), +SCE(0x1f2d, 1, 0x82),SCE(0x0154, 0, 0x82),SCE(0x0155, 1, 0x42),SCE(0x2c24, 0, 0x82), +SCE(0x2c54, 1, 0x42),SCE(0x13ee, 0, 0x82),SCE(0xabbe, 1, 0x42),SCE(0x0181, 0, 0x82), +SCE(0x0253, 1, 0x42),SCE(0x03a3, 0, 0x83),SCE(0x03c2, 1, 0x43),SCE(0x03c3, 2, 0x43), +SCE(0x118b3, 0, 0x82),SCE(0x118d3, 1, 0x42),SCE(0x10ba, 0, 0x82),SCE(0x2d1a, 1, 0x42), +SCE(0x0180, 0, 0x42),SCE(0x0243, 1, 0x82),SCE(0x1e3e, 0, 0x82),SCE(0x1e3f, 1, 0x42), +SCE(0x10ff, 0, 0x42),SCE(0x1cbf, 1, 0x82),SCE(0x10c88, 0, 0x82),SCE(0x10cc8, 1, 0x42), +SCE(0x10d2, 0, 0x42),SCE(0x1c92, 1, 0x82),SCE(0xa76e, 0, 0x82),SCE(0xa76f, 1, 0x42), +SCE(0x1c88, 0, 0x43),SCE(0xa64a, 1, 0x83),SCE(0xa64b, 2, 0x43),SCE(0x10b2, 0, 0x82), +SCE(0x2d12, 1, 0x42),SCE(0x13c7, 0, 0x82),SCE(0xab97, 1, 0x42),SCE(0x0518, 0, 0x82), +SCE(0x0519, 1, 0x42),SCE(0xa766, 0, 0x82),SCE(0xa767, 1, 0x42),SCE(0x01ec, 0, 0x82), +SCE(0x01ed, 1, 0x42),SCE(0x104c3, 0, 0x82),SCE(0x104eb, 1, 0x42),SCE(0x10574, 0, 0x82), +SCE(0x1059b, 1, 0x42),SCE(0x1e91c, 0, 0x82),SCE(0x1e93e, 1, 0x42),SCE(0x10e2, 0, 0x42), +SCE(0x1ca2, 1, 0x82),SCE(0x2c05, 0, 0x82),SCE(0x2c35, 1, 0x42),SCE(0x04a0, 0, 0x82), +SCE(0x04a1, 1, 0x42),SCE(0x1e42, 0, 0x82),SCE(0x1e43, 1, 0x42),SCE(0x13b4, 0, 0x82), +SCE(0xab84, 1, 0x42),SCE(0x118bf, 0, 0x82),SCE(0x118df, 1, 0x42),SCE(0x0150, 0, 0x82), +SCE(0x0151, 1, 0x42),SCE(0x2cb0, 0, 0x82),SCE(0x2cb1, 1, 0x42),SCE(0x13a4, 0, 0x82), +SCE(0xab74, 1, 0x42),SCE(0x04c1, 0, 0x82),SCE(0x04c2, 1, 0x42),SCE(0x01ca, 0, 0x83), +SCE(0x01cb, 1, 0x3),SCE(0x01cc, 2, 0x43),SCE(0x004c, 0, 0x82),SCE(0x006c, 1, 0x42), +SCE(0x104c7, 0, 0x82),SCE(0x104ef, 1, 0x42),SCE(0x16e5a, 0, 0x82),SCE(0x16e7a, 1, 0x42), +SCE(0x0222, 0, 0x82),SCE(0x0223, 1, 0x42),SCE(0x0490, 0, 0x82),SCE(0x0491, 1, 0x42), +SCE(0x2cf2, 0, 0x82),SCE(0x2cf3, 1, 0x42),SCE(0x10595, 0, 0x82),SCE(0x105bc, 1, 0x42), +SCE(0x053d, 0, 0x82),SCE(0x056d, 1, 0x42),SCE(0x0388, 0, 0x82),SCE(0x03ad, 1, 0x42), +SCE(0x0549, 0, 0x82),SCE(0x0579, 1, 0x42),SCE(0x13e2, 0, 0x82),SCE(0xabb2, 1, 0x42), +SCE(0x16e4a, 0, 0x82),SCE(0x16e6a, 1, 0x42),SCE(0x1efc, 0, 0x82),SCE(0x1efd, 1, 0x42), +SCE(0x1f90, 0, 0x42),SCE(0x1f98, 1, 0x2),SCE(0x04d6, 0, 0x82),SCE(0x04d7, 1, 0x42), +SCE(0xa7b8, 0, 0x82),SCE(0xa7b9, 1, 0x42),SCE(0x0414, 0, 0x83),SCE(0x0434, 1, 0x43), +SCE(0x1c81, 2, 0x43),SCE(0x10cad, 0, 0x82),SCE(0x10ced, 1, 0x42),SCE(0x10f7, 0, 0x42), +SCE(0x1cb7, 1, 0x82),SCE(0x16e55, 0, 0x82),SCE(0x16e75, 1, 0x42),SCE(0xa728, 0, 0x82), +SCE(0xa729, 1, 0x42),SCE(0x1e00, 0, 0x82),SCE(0x1e01, 1, 0x42),SCE(0x0232, 0, 0x82), +SCE(0x0233, 1, 0x42),SCE(0x10a5, 0, 0x82),SCE(0x2d05, 1, 0x42),SCE(0x1f15, 0, 0x42), +SCE(0x1f1d, 1, 0x82),SCE(0x03a9, 0, 0x83),SCE(0x03c9, 1, 0x43),SCE(0x2126, 2, 0x83), +SCE(0x013b, 0, 0x82),SCE(0x013c, 1, 0x42),SCE(0x0408, 0, 0x82),SCE(0x0458, 1, 0x42), +SCE(0x00dc, 0, 0x82),SCE(0x00fc, 1, 0x42),SCE(0x1ebe, 0, 0x82),SCE(0x1ebf, 1, 0x42), +SCE(0x2c18, 0, 0x82),SCE(0x2c48, 1, 0x42),SCE(0xa7a8, 0, 0x82),SCE(0xa7a9, 1, 0x42), +SCE(0x216b, 0, 0x82),SCE(0x217b, 1, 0x42),SCE(0x2c10, 0, 0x82),SCE(0x2c40, 1, 0x42), +SCE(0x2cde, 0, 0x82),SCE(0x2cdf, 1, 0x42),SCE(0x029e, 0, 0x42),SCE(0xa7b0, 1, 0x82), +SCE(0x00d4, 0, 0x82),SCE(0x00f4, 1, 0x42),SCE(0x10ef, 0, 0x42),SCE(0x1caf, 1, 0x82), +SCE(0x0551, 0, 0x82),SCE(0x0581, 1, 0x42),SCE(0x13da, 0, 0x82),SCE(0xabaa, 1, 0x42), +SCE(0x0535, 0, 0x82),SCE(0x0565, 1, 0x42),SCE(0x10c9d, 0, 0x82),SCE(0x10cdd, 1, 0x42), +SCE(0x24c6, 0, 0x82),SCE(0x24e0, 1, 0x42),SCE(0x0410, 0, 0x82),SCE(0x0430, 1, 0x42), +SCE(0x1eb6, 0, 0x82),SCE(0x1eb7, 1, 0x42),SCE(0x10416, 0, 0x82),SCE(0x1043e, 1, 0x42), +SCE(0x16e42, 0, 0x82),SCE(0x16e62, 1, 0x42),SCE(0x0164, 0, 0x82),SCE(0x0165, 1, 0x42), +SCE(0x2ca0, 0, 0x82),SCE(0x2ca1, 1, 0x42),SCE(0x1e2e, 0, 0x82),SCE(0x1e2f, 1, 0x42), +SCE(0x10c95, 0, 0x82),SCE(0x10cd5, 1, 0x42),SCE(0x0498, 0, 0x82),SCE(0x0499, 1, 0x42), +SCE(0x010a, 0, 0x82),SCE(0x010b, 1, 0x42),SCE(0x118aa, 0, 0x82),SCE(0x118ca, 1, 0x42), +SCE(0x1e88, 0, 0x82),SCE(0x1e89, 1, 0x42),SCE(0x0528, 0, 0x82),SCE(0x0529, 1, 0x42), +SCE(0x13d7, 0, 0x82),SCE(0xaba7, 1, 0x42),SCE(0xa65a, 0, 0x82),SCE(0xa65b, 1, 0x42), +SCE(0x022a, 0, 0x82),SCE(0x022b, 1, 0x42),SCE(0x1fa5, 0, 0x42),SCE(0x1fad, 1, 0x2), +SCE(0x104b3, 0, 0x82),SCE(0x104db, 1, 0x42),SCE(0x1e90c, 0, 0x82),SCE(0x1e92e, 1, 0x42), +SCE(0x24bb, 0, 0x82),SCE(0x24d5, 1, 0x42),SCE(0x01f4, 0, 0x82),SCE(0x01f5, 1, 0x42), +SCE(0xa690, 0, 0x82),SCE(0xa691, 1, 0x42),SCE(0xff29, 0, 0x82),SCE(0xff49, 1, 0x42), +SCE(0x2c75, 0, 0x82),SCE(0x2c76, 1, 0x42),SCE(0x2cb8, 0, 0x82),SCE(0x2cb9, 1, 0x42), +SCE(0x10401, 0, 0x82),SCE(0x10429, 1, 0x42),SCE(0x2c0d, 0, 0x82),SCE(0x2c3d, 1, 0x42), +SCE(0x104d0, 0, 0x82),SCE(0x104f8, 1, 0x42),SCE(0x1e913, 0, 0x82),SCE(0x1e935, 1, 0x42), +SCE(0x01af, 0, 0x82),SCE(0x01b0, 1, 0x42),SCE(0xa7c7, 0, 0x82),SCE(0xa7c8, 1, 0x42), +SCE(0x13bf, 0, 0x82),SCE(0xab8f, 1, 0x42),SCE(0x10402, 0, 0x82),SCE(0x1042a, 1, 0x42), +SCE(0x10ea, 0, 0x42),SCE(0x1caa, 1, 0x82),SCE(0x104bf, 0, 0x82),SCE(0x104e7, 1, 0x42), +SCE(0x1058d, 0, 0x82),SCE(0x105b4, 1, 0x42),SCE(0x2164, 0, 0x82),SCE(0x2174, 1, 0x42), +SCE(0x018e, 0, 0x82),SCE(0x01dd, 1, 0x42),SCE(0x01d3, 0, 0x82),SCE(0x01d4, 1, 0x42), +SCE(0x1f10, 0, 0x42),SCE(0x1f18, 1, 0x82),SCE(0x1f57, 0, 0x42),SCE(0x1f5f, 1, 0x82), +SCE(0x1ed2, 0, 0x82),SCE(0x1ed3, 1, 0x42),SCE(0xff2a, 0, 0x82),SCE(0xff4a, 1, 0x42), +SCE(0x1e04, 0, 0x82),SCE(0x1e05, 1, 0x42),SCE(0x04ee, 0, 0x82),SCE(0x04ef, 1, 0x42), +SCE(0x2c94, 0, 0x82),SCE(0x2c95, 1, 0x42),SCE(0x00c0, 0, 0x82),SCE(0x00e0, 1, 0x42), +SCE(0x13db, 0, 0x82),SCE(0xabab, 1, 0x42),SCE(0x01b2, 0, 0x82),SCE(0x028b, 1, 0x42), +SCE(0x10426, 0, 0x82),SCE(0x1044e, 1, 0x42),SCE(0xa662, 0, 0x82),SCE(0xa663, 1, 0x42), +SCE(0x0054, 0, 0x82),SCE(0x0074, 1, 0x42),SCE(0x0556, 0, 0x82),SCE(0x0586, 1, 0x42), +SCE(0x042a, 0, 0x83),SCE(0x044a, 1, 0x43),SCE(0x1c86, 2, 0x43),SCE(0x10422, 0, 0x82), +SCE(0x1044a, 1, 0x42),SCE(0x1f36, 0, 0x42),SCE(0x1f3e, 1, 0x82),SCE(0xa794, 0, 0x42), +SCE(0xa7c4, 1, 0x82),SCE(0x04cd, 0, 0x82),SCE(0x04ce, 1, 0x42),SCE(0x104bb, 0, 0x82), +SCE(0x104e3, 1, 0x42),SCE(0x023b, 0, 0x82),SCE(0x023c, 1, 0x42),SCE(0x01cf, 0, 0x82), +SCE(0x01d0, 1, 0x42),SCE(0x050c, 0, 0x82),SCE(0x050d, 1, 0x42),SCE(0xa646, 0, 0x82), +SCE(0xa647, 1, 0x42),SCE(0x1e46, 0, 0x82),SCE(0x1e47, 1, 0x42),SCE(0x10ca6, 0, 0x82), +SCE(0x10ce6, 1, 0x42),SCE(0xa779, 0, 0x82),SCE(0xa77a, 1, 0x42),SCE(0xff36, 0, 0x82), +SCE(0xff56, 1, 0x42),SCE(0x118a2, 0, 0x82),SCE(0x118c2, 1, 0x42),SCE(0x04ea, 0, 0x82), +SCE(0x04eb, 1, 0x42),SCE(0x041d, 0, 0x82),SCE(0x043d, 1, 0x42),SCE(0x16e52, 0, 0x82), +SCE(0x16e72, 1, 0x42),SCE(0xa688, 0, 0x82),SCE(0xa689, 1, 0x42),SCE(0x1eb2, 0, 0x82), +SCE(0x1eb3, 1, 0x42),SCE(0x2160, 0, 0x82),SCE(0x2170, 1, 0x42),SCE(0x1ed6, 0, 0x82), +SCE(0x1ed7, 1, 0x42),SCE(0x24c3, 0, 0x82),SCE(0x24dd, 1, 0x42),SCE(0x16e5e, 0, 0x82), +SCE(0x16e7e, 1, 0x42),SCE(0x04ac, 0, 0x82),SCE(0x04ad, 1, 0x42),SCE(0x1e910, 0, 0x82), +SCE(0x1e932, 1, 0x42),SCE(0x023e, 0, 0x82),SCE(0x2c66, 1, 0x42),SCE(0x2cb4, 0, 0x82), +SCE(0x2cb5, 1, 0x42),SCE(0xff2d, 0, 0x82),SCE(0xff4d, 1, 0x42),SCE(0x014c, 0, 0x82), +SCE(0x014d, 1, 0x42),SCE(0x1e22, 0, 0x82),SCE(0x1e23, 1, 0x42),SCE(0x13bb, 0, 0x82), +SCE(0xab8b, 1, 0x42),SCE(0x0143, 0, 0x82),SCE(0x0144, 1, 0x42),SCE(0x10581, 0, 0x82), +SCE(0x105a8, 1, 0x42),SCE(0x0170, 0, 0x82),SCE(0x0171, 1, 0x42),SCE(0x1e94, 0, 0x82), +SCE(0x1e95, 1, 0x42),SCE(0x2c28, 0, 0x82),SCE(0x2c58, 1, 0x42),SCE(0x1040e, 0, 0x82), +SCE(0x10436, 1, 0x42),SCE(0x104b2, 0, 0x82),SCE(0x104da, 1, 0x42),SCE(0xa798, 0, 0x82), +SCE(0xa799, 1, 0x42),SCE(0x13b8, 0, 0x82),SCE(0xab88, 1, 0x42),SCE(0x1e70, 0, 0x82), +SCE(0x1e71, 1, 0x42),SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44),SCE(0x1c84, 2, 0x44), +SCE(0x1c85, 3, 0x44),SCE(0x10c85, 0, 0x82),SCE(0x10cc5, 1, 0x42),SCE(0x1eae, 0, 0x82), +SCE(0x1eaf, 1, 0x42),SCE(0x0122, 0, 0x82),SCE(0x0123, 1, 0x42),SCE(0x10c8c, 0, 0x82), +SCE(0x10ccc, 1, 0x42),SCE(0x10405, 0, 0x82),SCE(0x1042d, 1, 0x42),SCE(0x0420, 0, 0x82), +SCE(0x0440, 1, 0x42),SCE(0x01ae, 0, 0x82),SCE(0x0288, 1, 0x42),SCE(0x021a, 0, 0x82), +SCE(0x021b, 1, 0x42),SCE(0x038c, 0, 0x82),SCE(0x03cc, 1, 0x42),SCE(0x1f95, 0, 0x42), +SCE(0x1f9d, 1, 0x2),SCE(0x0345, 0, 0x44),SCE(0x0399, 1, 0x84),SCE(0x03b9, 2, 0x44), +SCE(0x1fbe, 3, 0x44),SCE(0x018a, 0, 0x82),SCE(0x0257, 1, 0x42),SCE(0x2c90, 0, 0x82), +SCE(0x2c91, 1, 0x42),SCE(0x10b1, 0, 0x82),SCE(0x2d11, 1, 0x42),SCE(0x011e, 0, 0x82), +SCE(0x011f, 1, 0x42),SCE(0x1e08, 0, 0x82),SCE(0x1e09, 1, 0x42),SCE(0xa7c0, 0, 0x82), +SCE(0xa7c1, 1, 0x42),SCE(0x13e7, 0, 0x82),SCE(0xabb7, 1, 0x42),SCE(0x10580, 0, 0x82), +SCE(0x105a7, 1, 0x42),SCE(0x041c, 0, 0x82),SCE(0x043c, 1, 0x42),SCE(0xfb05, 0, 0x42), +SCE(0xfb06, 1, 0x42),SCE(0xa7a4, 0, 0x82),SCE(0xa7a5, 1, 0x42),SCE(0x1e74, 0, 0x82), SCE(0x1e75, 1, 0x42),SCE(0x2c14, 0, 0x82),SCE(0x2c44, 1, 0x42),SCE(0x1e90d, 0, 0x82), SCE(0x1e92f, 1, 0x42),SCE(0x13a5, 0, 0x82),SCE(0xab75, 1, 0x42),SCE(0x10f3, 0, 0x42), SCE(0x1cb3, 1, 0x82),SCE(0x24ba, 0, 0x82),SCE(0x24d4, 1, 0x42),SCE(0x013f, 0, 0x82), @@ -697,124 +698,124 @@ SCE(0x212b, 2, 0x83),SCE(0x04b4, 0, 0x82),SCE(0x04b5, 1, 0x42),SCE(0x2cce, 0, 0x SCE(0x2ccf, 1, 0x42),SCE(0xa73a, 0, 0x82),SCE(0xa73b, 1, 0x42),SCE(0xff21, 0, 0x82), SCE(0xff41, 1, 0x42),SCE(0x104b9, 0, 0x82),SCE(0x104e1, 1, 0x42),SCE(0x1ea4, 0, 0x82), SCE(0x1ea5, 1, 0x42),SCE(0x038f, 0, 0x82),SCE(0x03ce, 1, 0x42),SCE(0x24be, 0, 0x82), -SCE(0x24d8, 1, 0x42),SCE(0xa79e, 0, 0x82),SCE(0xa79f, 1, 0x42),SCE(0x0049, 0, 0x82), +SCE(0x24d8, 1, 0x42),SCE(0x03b0, 0, 0x42),SCE(0x1fe3, 1, 0x42),SCE(0x0049, 0, 0x82), SCE(0x0069, 1, 0x42),SCE(0x1e91f, 0, 0x82),SCE(0x1e941, 1, 0x42),SCE(0x0246, 0, 0x82), SCE(0x0247, 1, 0x42),SCE(0x1f73, 0, 0x42),SCE(0x1fc9, 1, 0x82),SCE(0x2c67, 0, 0x82), SCE(0x2c68, 1, 0x42),SCE(0x2166, 0, 0x82),SCE(0x2176, 1, 0x42),SCE(0x0100, 0, 0x82), SCE(0x0101, 1, 0x42),SCE(0x03e4, 0, 0x82),SCE(0x03e5, 1, 0x42),SCE(0x13d2, 0, 0x82), -SCE(0xaba2, 1, 0x42),SCE(0x1fa0, 0, 0x42),SCE(0x1fa8, 1, 0x2),SCE(0x10cb1, 0, 0x82), -SCE(0x10cf1, 1, 0x42),SCE(0x16e5d, 0, 0x82),SCE(0x16e7d, 1, 0x42),SCE(0x10c1, 0, 0x82), -SCE(0x2d21, 1, 0x42),SCE(0xa7f5, 0, 0x82),SCE(0xa7f6, 1, 0x42),SCE(0x13be, 0, 0x82), -SCE(0xab8e, 1, 0x42),SCE(0x042c, 0, 0x82),SCE(0x044c, 1, 0x42),SCE(0x10dd, 0, 0x42), -SCE(0x1c9d, 1, 0x82),SCE(0x1f93, 0, 0x42),SCE(0x1f9b, 1, 0x2),SCE(0x024e, 0, 0x82), -SCE(0x024f, 1, 0x42),SCE(0x04bc, 0, 0x82),SCE(0x04bd, 1, 0x42),SCE(0x0176, 0, 0x82), -SCE(0x0177, 1, 0x42),SCE(0x13ab, 0, 0x82),SCE(0xab7b, 1, 0x42),SCE(0x13e1, 0, 0x82), -SCE(0xabb1, 1, 0x42),SCE(0x0504, 0, 0x82),SCE(0x0505, 1, 0x42),SCE(0x1f03, 0, 0x42), -SCE(0x1f0b, 1, 0x82),SCE(0xa686, 0, 0x82),SCE(0xa687, 1, 0x42),SCE(0x054c, 0, 0x82), -SCE(0x057c, 1, 0x42),SCE(0x16e4f, 0, 0x82),SCE(0x16e6f, 1, 0x42),SCE(0x10eb, 0, 0x42), -SCE(0x1cab, 1, 0x82),SCE(0x13d9, 0, 0x82),SCE(0xaba9, 1, 0x42),SCE(0x023a, 0, 0x82), -SCE(0x2c65, 1, 0x42),SCE(0x04a8, 0, 0x82),SCE(0x04a9, 1, 0x42),SCE(0x2cda, 0, 0x82), -SCE(0x2cdb, 1, 0x42),SCE(0x041e, 0, 0x83),SCE(0x043e, 1, 0x43),SCE(0x1c82, 2, 0x43), -SCE(0x0394, 0, 0x82),SCE(0x03b4, 1, 0x42),SCE(0x2c72, 0, 0x82),SCE(0x2c73, 1, 0x42), -SCE(0x0510, 0, 0x82),SCE(0x0511, 1, 0x42),SCE(0x1e26, 0, 0x82),SCE(0x1e27, 1, 0x42), -SCE(0xa642, 0, 0x82),SCE(0xa643, 1, 0x42),SCE(0x04c9, 0, 0x82),SCE(0x04ca, 1, 0x42), -SCE(0x0147, 0, 0x82),SCE(0x0148, 1, 0x42),SCE(0x1eb0, 0, 0x82),SCE(0x1eb1, 1, 0x42), -SCE(0xa75e, 0, 0x82),SCE(0xa75f, 1, 0x42),SCE(0x1058c, 0, 0x82),SCE(0x105b3, 1, 0x42), -SCE(0xa73c, 0, 0x82),SCE(0xa73d, 1, 0x42),SCE(0x104d1, 0, 0x82),SCE(0x104f9, 1, 0x42), -SCE(0x104d2, 0, 0x82),SCE(0x104fa, 1, 0x42),SCE(0x10590, 0, 0x82),SCE(0x105b7, 1, 0x42), -SCE(0x0055, 0, 0x82),SCE(0x0075, 1, 0x42),SCE(0x1f11, 0, 0x42),SCE(0x1f19, 1, 0x82), -SCE(0x037b, 0, 0x42),SCE(0x03fd, 1, 0x82),SCE(0x1f31, 0, 0x42),SCE(0x1f39, 1, 0x82), -SCE(0x2cba, 0, 0x82),SCE(0x2cbb, 1, 0x42),SCE(0x0552, 0, 0x82),SCE(0x0582, 1, 0x42), -SCE(0xa68c, 0, 0x82),SCE(0xa68d, 1, 0x42),SCE(0x1e6e, 0, 0x82),SCE(0x1e6f, 1, 0x42), -SCE(0x2167, 0, 0x82),SCE(0x2177, 1, 0x42),SCE(0x00de, 0, 0x82),SCE(0x00fe, 1, 0x42), -SCE(0x0190, 0, 0x82),SCE(0x025b, 1, 0x42),SCE(0x1ef8, 0, 0x82),SCE(0x1ef9, 1, 0x42), -SCE(0x104b0, 0, 0x82),SCE(0x104d8, 1, 0x42),SCE(0x10c8e, 0, 0x82),SCE(0x10cce, 1, 0x42), -SCE(0x2c08, 0, 0x82),SCE(0x2c38, 1, 0x42),SCE(0x016e, 0, 0x82),SCE(0x016f, 1, 0x42), -SCE(0x16e5c, 0, 0x82),SCE(0x16e7c, 1, 0x42),SCE(0x10cd, 0, 0x82),SCE(0x2d2d, 1, 0x42), -SCE(0x1f7b, 0, 0x42),SCE(0x1feb, 1, 0x82),SCE(0x1e90, 0, 0x82),SCE(0x1e91, 1, 0x42), -SCE(0x13b3, 0, 0x82),SCE(0xab83, 1, 0x42),SCE(0x01d1, 0, 0x82),SCE(0x01d2, 1, 0x42), -SCE(0x1f53, 0, 0x42),SCE(0x1f5b, 1, 0x82),SCE(0x0126, 0, 0x82),SCE(0x0127, 1, 0x42), -SCE(0x1e48, 0, 0x82),SCE(0x1e49, 1, 0x42),SCE(0x2c98, 0, 0x82),SCE(0x2c99, 1, 0x42), -SCE(0x10400, 0, 0x82),SCE(0x10428, 1, 0x42),SCE(0x10ca4, 0, 0x82),SCE(0x10ce4, 1, 0x42), -SCE(0x118b9, 0, 0x82),SCE(0x118d9, 1, 0x42),SCE(0x13b0, 0, 0x82),SCE(0xab80, 1, 0x42), -SCE(0x1ed8, 0, 0x82),SCE(0x1ed9, 1, 0x42),SCE(0x1f74, 0, 0x42),SCE(0x1fca, 1, 0x82), -SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44),SCE(0x1c84, 2, 0x44),SCE(0x1c85, 3, 0x44), -SCE(0x1ef2, 0, 0x82),SCE(0x1ef3, 1, 0x42),SCE(0x2161, 0, 0x82),SCE(0x2171, 1, 0x42), -SCE(0x10420, 0, 0x82),SCE(0x10448, 1, 0x42),SCE(0x01f1, 0, 0x83),SCE(0x01f2, 1, 0x3), -SCE(0x01f3, 2, 0x43),SCE(0x01d7, 0, 0x82),SCE(0x01d8, 1, 0x42),SCE(0xa68a, 0, 0x82), -SCE(0xa68b, 1, 0x42),SCE(0x03f7, 0, 0x82),SCE(0x03f8, 1, 0x42),SCE(0xff35, 0, 0x82), -SCE(0xff55, 1, 0x42),SCE(0x03dc, 0, 0x82),SCE(0x03dd, 1, 0x42),SCE(0x10c8d, 0, 0x82), -SCE(0x10ccd, 1, 0x42),SCE(0x0418, 0, 0x82),SCE(0x0438, 1, 0x42),SCE(0x0212, 0, 0x82), -SCE(0x0213, 1, 0x42),SCE(0x04f0, 0, 0x82),SCE(0x04f1, 1, 0x42),SCE(0x24c1, 0, 0x82), -SCE(0x24db, 1, 0x42),SCE(0x050a, 0, 0x82),SCE(0x050b, 1, 0x42),SCE(0x1e917, 0, 0x82), -SCE(0x1e939, 1, 0x42),SCE(0xa644, 0, 0x82),SCE(0xa645, 1, 0x42),SCE(0x0537, 0, 0x82), -SCE(0x0567, 1, 0x42),SCE(0x10ac, 0, 0x82),SCE(0x2d0c, 1, 0x42),SCE(0x10ad, 0, 0x82), -SCE(0x2d0d, 1, 0x42),SCE(0x24c7, 0, 0x82),SCE(0x24e1, 1, 0x42),SCE(0x0460, 0, 0x82), -SCE(0x0461, 1, 0x42),SCE(0x2c2b, 0, 0x82),SCE(0x2c5b, 1, 0x42),SCE(0x16e56, 0, 0x82), -SCE(0x16e76, 1, 0x42),SCE(0x10c7, 0, 0x82),SCE(0x2d27, 1, 0x42),SCE(0x10406, 0, 0x82), -SCE(0x1042e, 1, 0x42),SCE(0x2cd4, 0, 0x82),SCE(0x2cd5, 1, 0x42),SCE(0x10f1, 0, 0x42), -SCE(0x1cb1, 1, 0x82),SCE(0x1f7a, 0, 0x42),SCE(0x1fea, 1, 0x82),SCE(0x2c0b, 0, 0x82), -SCE(0x2c3b, 1, 0x42),SCE(0xff34, 0, 0x82),SCE(0xff54, 1, 0x42),SCE(0x0417, 0, 0x82), -SCE(0x0437, 1, 0x42),SCE(0x118ba, 0, 0x82),SCE(0x118da, 1, 0x42),SCE(0x01f1, 0, 0x83), -SCE(0x01f2, 1, 0x3),SCE(0x01f3, 2, 0x43),SCE(0x0395, 0, 0x83),SCE(0x03b5, 1, 0x43), -SCE(0x03f5, 2, 0x43),SCE(0x01b7, 0, 0x82),SCE(0x0292, 1, 0x42),SCE(0x018f, 0, 0x82), -SCE(0x0259, 1, 0x42),SCE(0x0538, 0, 0x82),SCE(0x0568, 1, 0x42),SCE(0xa66a, 0, 0x82), -SCE(0xa66b, 1, 0x42),SCE(0x1f32, 0, 0x42),SCE(0x1f3a, 1, 0x82),SCE(0x10421, 0, 0x82), -SCE(0x10449, 1, 0x42),SCE(0x052a, 0, 0x82),SCE(0x052b, 1, 0x42),SCE(0x0425, 0, 0x82), -SCE(0x0445, 1, 0x42),SCE(0xa784, 0, 0x82),SCE(0xa785, 1, 0x42),SCE(0x004f, 0, 0x82), -SCE(0x006f, 1, 0x42),SCE(0xa664, 0, 0x82),SCE(0xa665, 1, 0x42),SCE(0x104b1, 0, 0x82), -SCE(0x104d9, 1, 0x42),SCE(0x00c4, 0, 0x82),SCE(0x00e4, 1, 0x42),SCE(0x10ca5, 0, 0x82), -SCE(0x10ce5, 1, 0x42),SCE(0x1eaa, 0, 0x82),SCE(0x1eab, 1, 0x42),SCE(0x13d8, 0, 0x82), -SCE(0xaba8, 1, 0x42),SCE(0x10e4, 0, 0x42),SCE(0x1ca4, 1, 0x82),SCE(0x00d8, 0, 0x82), -SCE(0x00f8, 1, 0x42),SCE(0x01ca, 0, 0x83),SCE(0x01cb, 1, 0x3),SCE(0x01cc, 2, 0x43), -SCE(0x10d1, 0, 0x42),SCE(0x1c91, 1, 0x82),SCE(0x10575, 0, 0x82),SCE(0x1059c, 1, 0x42), -SCE(0x216c, 0, 0x82),SCE(0x217c, 1, 0x42),SCE(0x2c02, 0, 0x82),SCE(0x2c32, 1, 0x42), -SCE(0x16e5b, 0, 0x82),SCE(0x16e7b, 1, 0x42),SCE(0xa7d8, 0, 0x82),SCE(0xa7d9, 1, 0x42), -SCE(0xff22, 0, 0x82),SCE(0xff42, 1, 0x42),SCE(0x0404, 0, 0x82),SCE(0x0454, 1, 0x42), -SCE(0x10b3, 0, 0x82),SCE(0x2d13, 1, 0x42),SCE(0x1eca, 0, 0x82),SCE(0x1ecb, 1, 0x42), -SCE(0x10409, 0, 0x82),SCE(0x10431, 1, 0x42),SCE(0x1e918, 0, 0x82),SCE(0x1e93a, 1, 0x42), -SCE(0x04f6, 0, 0x82),SCE(0x04f7, 1, 0x42),SCE(0x2cc0, 0, 0x82),SCE(0x2cc1, 1, 0x42), -SCE(0x1e20, 0, 0x82),SCE(0x1e21, 1, 0x42),SCE(0x104b7, 0, 0x82),SCE(0x104df, 1, 0x42), -SCE(0x039b, 0, 0x82),SCE(0x03bb, 1, 0x42),SCE(0x0196, 0, 0x82),SCE(0x0269, 1, 0x42), -SCE(0x2c25, 0, 0x82),SCE(0x2c55, 1, 0x42),SCE(0xa790, 0, 0x82),SCE(0xa791, 1, 0x42), -SCE(0xa764, 0, 0x82),SCE(0xa765, 1, 0x42),SCE(0x020c, 0, 0x82),SCE(0x020d, 1, 0x42), -SCE(0x1f94, 0, 0x42),SCE(0x1f9c, 1, 0x2),SCE(0x118b0, 0, 0x82),SCE(0x118d0, 1, 0x42), -SCE(0x0182, 0, 0x82),SCE(0x0183, 1, 0x42),SCE(0x2cac, 0, 0x82),SCE(0x2cad, 1, 0x42), -SCE(0x1f80, 0, 0x42),SCE(0x1f88, 1, 0x2),SCE(0x24cc, 0, 0x82),SCE(0x24e6, 1, 0x42), -SCE(0x0251, 0, 0x42),SCE(0x2c6d, 1, 0x82),SCE(0x0480, 0, 0x82),SCE(0x0481, 1, 0x42), -SCE(0x13e6, 0, 0x82),SCE(0xabb6, 1, 0x42),SCE(0x24b8, 0, 0x82),SCE(0x24d2, 1, 0x42), -SCE(0x054b, 0, 0x82),SCE(0x057b, 1, 0x42),SCE(0x13aa, 0, 0x82),SCE(0xab7a, 1, 0x42), -SCE(0x004b, 0, 0x83),SCE(0x006b, 1, 0x43),SCE(0x212a, 2, 0x83),SCE(0x0261, 0, 0x42), -SCE(0xa7ac, 1, 0x82),SCE(0x0141, 0, 0x82),SCE(0x0142, 1, 0x42),SCE(0x039a, 0, 0x83), -SCE(0x03ba, 1, 0x43),SCE(0x03f0, 2, 0x43),SCE(0x10f8, 0, 0x42),SCE(0x1cb8, 1, 0x82), -SCE(0x104c4, 0, 0x82),SCE(0x104ec, 1, 0x42),SCE(0x0189, 0, 0x82),SCE(0x0256, 1, 0x42), -SCE(0x10de, 0, 0x42),SCE(0x1c9e, 1, 0x82),SCE(0x1e68, 0, 0x82),SCE(0x1e69, 1, 0x42), -SCE(0x104ba, 0, 0x82),SCE(0x104e2, 1, 0x42),SCE(0x1f04, 0, 0x42),SCE(0x1f0c, 1, 0x82), -SCE(0x10578, 0, 0x82),SCE(0x1059f, 1, 0x42),SCE(0x0411, 0, 0x82),SCE(0x0431, 1, 0x42), -SCE(0x10582, 0, 0x82),SCE(0x105a9, 1, 0x42),SCE(0x0466, 0, 0x82),SCE(0x0467, 1, 0x42), -SCE(0xa736, 0, 0x82),SCE(0xa737, 1, 0x42),SCE(0x00cb, 0, 0x82),SCE(0x00eb, 1, 0x42), -SCE(0x10c0, 0, 0x82),SCE(0x2d20, 1, 0x42),SCE(0x10427, 0, 0x82),SCE(0x1044f, 1, 0x42), -SCE(0x01de, 0, 0x82),SCE(0x01df, 1, 0x42),SCE(0x2c92, 0, 0x82),SCE(0x2c93, 1, 0x42), -SCE(0x0106, 0, 0x82),SCE(0x0107, 1, 0x42),SCE(0x1e4e, 0, 0x82),SCE(0x1e4f, 1, 0x42), -SCE(0x042b, 0, 0x82),SCE(0x044b, 1, 0x42),SCE(0xa748, 0, 0x82),SCE(0xa749, 1, 0x42), -SCE(0x2c11, 0, 0x82),SCE(0x2c41, 1, 0x42),SCE(0xa7b3, 0, 0x82),SCE(0xab53, 1, 0x42), -SCE(0x053e, 0, 0x82),SCE(0x056e, 1, 0x42),SCE(0x014e, 0, 0x82),SCE(0x014f, 1, 0x42), -SCE(0x13d3, 0, 0x82),SCE(0xaba3, 1, 0x42),SCE(0x0524, 0, 0x82),SCE(0x0525, 1, 0x42), -SCE(0xa65e, 0, 0x82),SCE(0xa65f, 1, 0x42),SCE(0x01f8, 0, 0x82),SCE(0x01f9, 1, 0x42), -SCE(0x04ae, 0, 0x82),SCE(0x04af, 1, 0x42),SCE(0xa77e, 0, 0x82),SCE(0xa77f, 1, 0x42), -SCE(0x03a0, 0, 0x83),SCE(0x03c0, 1, 0x43),SCE(0x03d6, 2, 0x43),SCE(0x0265, 0, 0x42), -SCE(0xa78d, 1, 0x82),SCE(0xff2b, 0, 0x82),SCE(0xff4b, 1, 0x42),SCE(0x1fa1, 0, 0x42), -SCE(0x1fa9, 1, 0x2),SCE(0x1ede, 0, 0x82),SCE(0x1edf, 1, 0x42),SCE(0x13b9, 0, 0x82), -SCE(0xab89, 1, 0x42),SCE(0x0168, 0, 0x82),SCE(0x0169, 1, 0x42),SCE(0x0226, 0, 0x82), -SCE(0x0227, 1, 0x42),SCE(0x13f1, 0, 0x82),SCE(0x13f9, 1, 0x42),SCE(0x1e06, 0, 0x82), -SCE(0x1e07, 1, 0x42),SCE(0x0120, 0, 0x82),SCE(0x0121, 1, 0x42),SCE(0x1041d, 0, 0x82), -SCE(0x10445, 1, 0x42),SCE(0x1f66, 0, 0x42),SCE(0x1f6e, 1, 0x82),SCE(0x10a6, 0, 0x82), -SCE(0x2d06, 1, 0x42),SCE(0x10c91, 0, 0x82),SCE(0x10cd1, 1, 0x42),SCE(0x1d8e, 0, 0x42), -SCE(0xa7c6, 1, 0x82),SCE(0x10c84, 0, 0x82),SCE(0x10cc4, 1, 0x42),SCE(0x10cae, 0, 0x82), -SCE(0x10cee, 1, 0x42),SCE(0x118a3, 0, 0x82),SCE(0x118c3, 1, 0x42),SCE(0x0048, 0, 0x82), -SCE(0x0068, 1, 0x42),SCE(0x13cc, 0, 0x82),SCE(0xab9c, 1, 0x42),SCE(0x1e91e, 0, 0x82), -SCE(0x1e940, 1, 0x42),SCE(0x038e, 0, 0x82),SCE(0x03cd, 1, 0x42),SCE(0x0531, 0, 0x82), -SCE(0x0561, 1, 0x42),]; +SCE(0xaba2, 1, 0x42),SCE(0xa79e, 0, 0x82),SCE(0xa79f, 1, 0x42),SCE(0x1fa0, 0, 0x42), +SCE(0x1fa8, 1, 0x2),SCE(0x10cb1, 0, 0x82),SCE(0x10cf1, 1, 0x42),SCE(0x16e5d, 0, 0x82), +SCE(0x16e7d, 1, 0x42),SCE(0x10c1, 0, 0x82),SCE(0x2d21, 1, 0x42),SCE(0xa7f5, 0, 0x82), +SCE(0xa7f6, 1, 0x42),SCE(0x13be, 0, 0x82),SCE(0xab8e, 1, 0x42),SCE(0x042c, 0, 0x82), +SCE(0x044c, 1, 0x42),SCE(0x10dd, 0, 0x42),SCE(0x1c9d, 1, 0x82),SCE(0x1f93, 0, 0x42), +SCE(0x1f9b, 1, 0x2),SCE(0x024e, 0, 0x82),SCE(0x024f, 1, 0x42),SCE(0x04bc, 0, 0x82), +SCE(0x04bd, 1, 0x42),SCE(0x0176, 0, 0x82),SCE(0x0177, 1, 0x42),SCE(0x13ab, 0, 0x82), +SCE(0xab7b, 1, 0x42),SCE(0x13e1, 0, 0x82),SCE(0xabb1, 1, 0x42),SCE(0x0504, 0, 0x82), +SCE(0x0505, 1, 0x42),SCE(0x1f03, 0, 0x42),SCE(0x1f0b, 1, 0x82),SCE(0xa686, 0, 0x82), +SCE(0xa687, 1, 0x42),SCE(0x054c, 0, 0x82),SCE(0x057c, 1, 0x42),SCE(0x16e4f, 0, 0x82), +SCE(0x16e6f, 1, 0x42),SCE(0x10eb, 0, 0x42),SCE(0x1cab, 1, 0x82),SCE(0x13d9, 0, 0x82), +SCE(0xaba9, 1, 0x42),SCE(0x023a, 0, 0x82),SCE(0x2c65, 1, 0x42),SCE(0x04a8, 0, 0x82), +SCE(0x04a9, 1, 0x42),SCE(0x2cda, 0, 0x82),SCE(0x2cdb, 1, 0x42),SCE(0x041e, 0, 0x83), +SCE(0x043e, 1, 0x43),SCE(0x1c82, 2, 0x43),SCE(0x0394, 0, 0x82),SCE(0x03b4, 1, 0x42), +SCE(0x2c72, 0, 0x82),SCE(0x2c73, 1, 0x42),SCE(0x0510, 0, 0x82),SCE(0x0511, 1, 0x42), +SCE(0x1e26, 0, 0x82),SCE(0x1e27, 1, 0x42),SCE(0xa642, 0, 0x82),SCE(0xa643, 1, 0x42), +SCE(0x04c9, 0, 0x82),SCE(0x04ca, 1, 0x42),SCE(0x0147, 0, 0x82),SCE(0x0148, 1, 0x42), +SCE(0x1eb0, 0, 0x82),SCE(0x1eb1, 1, 0x42),SCE(0xa75e, 0, 0x82),SCE(0xa75f, 1, 0x42), +SCE(0x1058c, 0, 0x82),SCE(0x105b3, 1, 0x42),SCE(0xa73c, 0, 0x82),SCE(0xa73d, 1, 0x42), +SCE(0x104d1, 0, 0x82),SCE(0x104f9, 1, 0x42),SCE(0x104d2, 0, 0x82),SCE(0x104fa, 1, 0x42), +SCE(0x10590, 0, 0x82),SCE(0x105b7, 1, 0x42),SCE(0x0055, 0, 0x82),SCE(0x0075, 1, 0x42), +SCE(0x1f11, 0, 0x42),SCE(0x1f19, 1, 0x82),SCE(0x037b, 0, 0x42),SCE(0x03fd, 1, 0x82), +SCE(0x1f31, 0, 0x42),SCE(0x1f39, 1, 0x82),SCE(0x2cba, 0, 0x82),SCE(0x2cbb, 1, 0x42), +SCE(0x0552, 0, 0x82),SCE(0x0582, 1, 0x42),SCE(0xa68c, 0, 0x82),SCE(0xa68d, 1, 0x42), +SCE(0x1e6e, 0, 0x82),SCE(0x1e6f, 1, 0x42),SCE(0x2167, 0, 0x82),SCE(0x2177, 1, 0x42), +SCE(0x00de, 0, 0x82),SCE(0x00fe, 1, 0x42),SCE(0x0190, 0, 0x82),SCE(0x025b, 1, 0x42), +SCE(0x1ef8, 0, 0x82),SCE(0x1ef9, 1, 0x42),SCE(0x104b0, 0, 0x82),SCE(0x104d8, 1, 0x42), +SCE(0x10c8e, 0, 0x82),SCE(0x10cce, 1, 0x42),SCE(0x2c08, 0, 0x82),SCE(0x2c38, 1, 0x42), +SCE(0x016e, 0, 0x82),SCE(0x016f, 1, 0x42),SCE(0x16e5c, 0, 0x82),SCE(0x16e7c, 1, 0x42), +SCE(0x10cd, 0, 0x82),SCE(0x2d2d, 1, 0x42),SCE(0x1f7b, 0, 0x42),SCE(0x1feb, 1, 0x82), +SCE(0x1e90, 0, 0x82),SCE(0x1e91, 1, 0x42),SCE(0x13b3, 0, 0x82),SCE(0xab83, 1, 0x42), +SCE(0x01d1, 0, 0x82),SCE(0x01d2, 1, 0x42),SCE(0x1f53, 0, 0x42),SCE(0x1f5b, 1, 0x82), +SCE(0x0126, 0, 0x82),SCE(0x0127, 1, 0x42),SCE(0x1e48, 0, 0x82),SCE(0x1e49, 1, 0x42), +SCE(0x2c98, 0, 0x82),SCE(0x2c99, 1, 0x42),SCE(0x10400, 0, 0x82),SCE(0x10428, 1, 0x42), +SCE(0x10ca4, 0, 0x82),SCE(0x10ce4, 1, 0x42),SCE(0x118b9, 0, 0x82),SCE(0x118d9, 1, 0x42), +SCE(0x13b0, 0, 0x82),SCE(0xab80, 1, 0x42),SCE(0x1ed8, 0, 0x82),SCE(0x1ed9, 1, 0x42), +SCE(0x1f74, 0, 0x42),SCE(0x1fca, 1, 0x82),SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44), +SCE(0x1c84, 2, 0x44),SCE(0x1c85, 3, 0x44),SCE(0x1ef2, 0, 0x82),SCE(0x1ef3, 1, 0x42), +SCE(0x2161, 0, 0x82),SCE(0x2171, 1, 0x42),SCE(0x10420, 0, 0x82),SCE(0x10448, 1, 0x42), +SCE(0x01f1, 0, 0x83),SCE(0x01f2, 1, 0x3),SCE(0x01f3, 2, 0x43),SCE(0x01d7, 0, 0x82), +SCE(0x01d8, 1, 0x42),SCE(0xa68a, 0, 0x82),SCE(0xa68b, 1, 0x42),SCE(0x03f7, 0, 0x82), +SCE(0x03f8, 1, 0x42),SCE(0xff35, 0, 0x82),SCE(0xff55, 1, 0x42),SCE(0x03dc, 0, 0x82), +SCE(0x03dd, 1, 0x42),SCE(0x10c8d, 0, 0x82),SCE(0x10ccd, 1, 0x42),SCE(0x0418, 0, 0x82), +SCE(0x0438, 1, 0x42),SCE(0x0212, 0, 0x82),SCE(0x0213, 1, 0x42),SCE(0x04f0, 0, 0x82), +SCE(0x04f1, 1, 0x42),SCE(0x24c1, 0, 0x82),SCE(0x24db, 1, 0x42),SCE(0x050a, 0, 0x82), +SCE(0x050b, 1, 0x42),SCE(0x1e917, 0, 0x82),SCE(0x1e939, 1, 0x42),SCE(0xa644, 0, 0x82), +SCE(0xa645, 1, 0x42),SCE(0x0537, 0, 0x82),SCE(0x0567, 1, 0x42),SCE(0x10ac, 0, 0x82), +SCE(0x2d0c, 1, 0x42),SCE(0x10ad, 0, 0x82),SCE(0x2d0d, 1, 0x42),SCE(0x24c7, 0, 0x82), +SCE(0x24e1, 1, 0x42),SCE(0x0460, 0, 0x82),SCE(0x0461, 1, 0x42),SCE(0x2c2b, 0, 0x82), +SCE(0x2c5b, 1, 0x42),SCE(0x16e56, 0, 0x82),SCE(0x16e76, 1, 0x42),SCE(0x10c7, 0, 0x82), +SCE(0x2d27, 1, 0x42),SCE(0x10406, 0, 0x82),SCE(0x1042e, 1, 0x42),SCE(0x2cd4, 0, 0x82), +SCE(0x2cd5, 1, 0x42),SCE(0x10f1, 0, 0x42),SCE(0x1cb1, 1, 0x82),SCE(0x1f7a, 0, 0x42), +SCE(0x1fea, 1, 0x82),SCE(0x2c0b, 0, 0x82),SCE(0x2c3b, 1, 0x42),SCE(0xff34, 0, 0x82), +SCE(0xff54, 1, 0x42),SCE(0x0417, 0, 0x82),SCE(0x0437, 1, 0x42),SCE(0x118ba, 0, 0x82), +SCE(0x118da, 1, 0x42),SCE(0x01f1, 0, 0x83),SCE(0x01f2, 1, 0x3),SCE(0x01f3, 2, 0x43), +SCE(0x0395, 0, 0x83),SCE(0x03b5, 1, 0x43),SCE(0x03f5, 2, 0x43),SCE(0x01b7, 0, 0x82), +SCE(0x0292, 1, 0x42),SCE(0x018f, 0, 0x82),SCE(0x0259, 1, 0x42),SCE(0x0538, 0, 0x82), +SCE(0x0568, 1, 0x42),SCE(0xa66a, 0, 0x82),SCE(0xa66b, 1, 0x42),SCE(0x1f32, 0, 0x42), +SCE(0x1f3a, 1, 0x82),SCE(0x10421, 0, 0x82),SCE(0x10449, 1, 0x42),SCE(0x052a, 0, 0x82), +SCE(0x052b, 1, 0x42),SCE(0x0425, 0, 0x82),SCE(0x0445, 1, 0x42),SCE(0xa784, 0, 0x82), +SCE(0xa785, 1, 0x42),SCE(0x004f, 0, 0x82),SCE(0x006f, 1, 0x42),SCE(0xa664, 0, 0x82), +SCE(0xa665, 1, 0x42),SCE(0x104b1, 0, 0x82),SCE(0x104d9, 1, 0x42),SCE(0x00c4, 0, 0x82), +SCE(0x00e4, 1, 0x42),SCE(0x10ca5, 0, 0x82),SCE(0x10ce5, 1, 0x42),SCE(0x1eaa, 0, 0x82), +SCE(0x1eab, 1, 0x42),SCE(0x13d8, 0, 0x82),SCE(0xaba8, 1, 0x42),SCE(0x10e4, 0, 0x42), +SCE(0x1ca4, 1, 0x82),SCE(0x00d8, 0, 0x82),SCE(0x00f8, 1, 0x42),SCE(0x01ca, 0, 0x83), +SCE(0x01cb, 1, 0x3),SCE(0x01cc, 2, 0x43),SCE(0x10d1, 0, 0x42),SCE(0x1c91, 1, 0x82), +SCE(0x10575, 0, 0x82),SCE(0x1059c, 1, 0x42),SCE(0x216c, 0, 0x82),SCE(0x217c, 1, 0x42), +SCE(0x2c02, 0, 0x82),SCE(0x2c32, 1, 0x42),SCE(0x16e5b, 0, 0x82),SCE(0x16e7b, 1, 0x42), +SCE(0xa7d8, 0, 0x82),SCE(0xa7d9, 1, 0x42),SCE(0xff22, 0, 0x82),SCE(0xff42, 1, 0x42), +SCE(0x0404, 0, 0x82),SCE(0x0454, 1, 0x42),SCE(0x10b3, 0, 0x82),SCE(0x2d13, 1, 0x42), +SCE(0x1eca, 0, 0x82),SCE(0x1ecb, 1, 0x42),SCE(0x10409, 0, 0x82),SCE(0x10431, 1, 0x42), +SCE(0x1e918, 0, 0x82),SCE(0x1e93a, 1, 0x42),SCE(0x04f6, 0, 0x82),SCE(0x04f7, 1, 0x42), +SCE(0x2cc0, 0, 0x82),SCE(0x2cc1, 1, 0x42),SCE(0x1e20, 0, 0x82),SCE(0x1e21, 1, 0x42), +SCE(0x104b7, 0, 0x82),SCE(0x104df, 1, 0x42),SCE(0x039b, 0, 0x82),SCE(0x03bb, 1, 0x42), +SCE(0x0196, 0, 0x82),SCE(0x0269, 1, 0x42),SCE(0x2c25, 0, 0x82),SCE(0x2c55, 1, 0x42), +SCE(0xa790, 0, 0x82),SCE(0xa791, 1, 0x42),SCE(0xa764, 0, 0x82),SCE(0xa765, 1, 0x42), +SCE(0x020c, 0, 0x82),SCE(0x020d, 1, 0x42),SCE(0x1f94, 0, 0x42),SCE(0x1f9c, 1, 0x2), +SCE(0x118b0, 0, 0x82),SCE(0x118d0, 1, 0x42),SCE(0x0182, 0, 0x82),SCE(0x0183, 1, 0x42), +SCE(0x2cac, 0, 0x82),SCE(0x2cad, 1, 0x42),SCE(0x1f80, 0, 0x42),SCE(0x1f88, 1, 0x2), +SCE(0x24cc, 0, 0x82),SCE(0x24e6, 1, 0x42),SCE(0x0251, 0, 0x42),SCE(0x2c6d, 1, 0x82), +SCE(0x0480, 0, 0x82),SCE(0x0481, 1, 0x42),SCE(0x13e6, 0, 0x82),SCE(0xabb6, 1, 0x42), +SCE(0x24b8, 0, 0x82),SCE(0x24d2, 1, 0x42),SCE(0x054b, 0, 0x82),SCE(0x057b, 1, 0x42), +SCE(0x13aa, 0, 0x82),SCE(0xab7a, 1, 0x42),SCE(0x004b, 0, 0x83),SCE(0x006b, 1, 0x43), +SCE(0x212a, 2, 0x83),SCE(0x0261, 0, 0x42),SCE(0xa7ac, 1, 0x82),SCE(0x0141, 0, 0x82), +SCE(0x0142, 1, 0x42),SCE(0x039a, 0, 0x83),SCE(0x03ba, 1, 0x43),SCE(0x03f0, 2, 0x43), +SCE(0x10f8, 0, 0x42),SCE(0x1cb8, 1, 0x82),SCE(0x104c4, 0, 0x82),SCE(0x104ec, 1, 0x42), +SCE(0x0189, 0, 0x82),SCE(0x0256, 1, 0x42),SCE(0x10de, 0, 0x42),SCE(0x1c9e, 1, 0x82), +SCE(0x1e68, 0, 0x82),SCE(0x1e69, 1, 0x42),SCE(0x104ba, 0, 0x82),SCE(0x104e2, 1, 0x42), +SCE(0x1f04, 0, 0x42),SCE(0x1f0c, 1, 0x82),SCE(0x10578, 0, 0x82),SCE(0x1059f, 1, 0x42), +SCE(0x0411, 0, 0x82),SCE(0x0431, 1, 0x42),SCE(0x10582, 0, 0x82),SCE(0x105a9, 1, 0x42), +SCE(0x0466, 0, 0x82),SCE(0x0467, 1, 0x42),SCE(0xa736, 0, 0x82),SCE(0xa737, 1, 0x42), +SCE(0x00cb, 0, 0x82),SCE(0x00eb, 1, 0x42),SCE(0x10c0, 0, 0x82),SCE(0x2d20, 1, 0x42), +SCE(0x10427, 0, 0x82),SCE(0x1044f, 1, 0x42),SCE(0x01de, 0, 0x82),SCE(0x01df, 1, 0x42), +SCE(0x2c92, 0, 0x82),SCE(0x2c93, 1, 0x42),SCE(0x0106, 0, 0x82),SCE(0x0107, 1, 0x42), +SCE(0x1e4e, 0, 0x82),SCE(0x1e4f, 1, 0x42),SCE(0x042b, 0, 0x82),SCE(0x044b, 1, 0x42), +SCE(0xa748, 0, 0x82),SCE(0xa749, 1, 0x42),SCE(0x2c11, 0, 0x82),SCE(0x2c41, 1, 0x42), +SCE(0xa7b3, 0, 0x82),SCE(0xab53, 1, 0x42),SCE(0x053e, 0, 0x82),SCE(0x056e, 1, 0x42), +SCE(0x014e, 0, 0x82),SCE(0x014f, 1, 0x42),SCE(0x13d3, 0, 0x82),SCE(0xaba3, 1, 0x42), +SCE(0x0524, 0, 0x82),SCE(0x0525, 1, 0x42),SCE(0xa65e, 0, 0x82),SCE(0xa65f, 1, 0x42), +SCE(0x01f8, 0, 0x82),SCE(0x01f9, 1, 0x42),SCE(0x04ae, 0, 0x82),SCE(0x04af, 1, 0x42), +SCE(0xa77e, 0, 0x82),SCE(0xa77f, 1, 0x42),SCE(0x03a0, 0, 0x83),SCE(0x03c0, 1, 0x43), +SCE(0x03d6, 2, 0x43),SCE(0x0265, 0, 0x42),SCE(0xa78d, 1, 0x82),SCE(0xff2b, 0, 0x82), +SCE(0xff4b, 1, 0x42),SCE(0x1fa1, 0, 0x42),SCE(0x1fa9, 1, 0x2),SCE(0x1ede, 0, 0x82), +SCE(0x1edf, 1, 0x42),SCE(0x13b9, 0, 0x82),SCE(0xab89, 1, 0x42),SCE(0x0168, 0, 0x82), +SCE(0x0169, 1, 0x42),SCE(0x0226, 0, 0x82),SCE(0x0227, 1, 0x42),SCE(0x13f1, 0, 0x82), +SCE(0x13f9, 1, 0x42),SCE(0x1e06, 0, 0x82),SCE(0x1e07, 1, 0x42),SCE(0x0120, 0, 0x82), +SCE(0x0121, 1, 0x42),SCE(0x1041d, 0, 0x82),SCE(0x10445, 1, 0x42),SCE(0x1f66, 0, 0x42), +SCE(0x1f6e, 1, 0x82),SCE(0x10a6, 0, 0x82),SCE(0x2d06, 1, 0x42),SCE(0x10c91, 0, 0x82), +SCE(0x10cd1, 1, 0x42),SCE(0x1d8e, 0, 0x42),SCE(0xa7c6, 1, 0x82),SCE(0x10c84, 0, 0x82), +SCE(0x10cc4, 1, 0x42),SCE(0x10cae, 0, 0x82),SCE(0x10cee, 1, 0x42),SCE(0x118a3, 0, 0x82), +SCE(0x118c3, 1, 0x42),SCE(0x0048, 0, 0x82),SCE(0x0068, 1, 0x42),SCE(0x13cc, 0, 0x82), +SCE(0xab9c, 1, 0x42),SCE(0x1e91e, 0, 0x82),SCE(0x1e940, 1, 0x42),SCE(0x038e, 0, 0x82), +SCE(0x03cd, 1, 0x42),SCE(0x0531, 0, 0x82),SCE(0x0561, 1, 0x42),]; return t; } @property immutable(FullCaseEntry[]) fullCaseTable() nothrow @nogc @safe pure @@ -1628,12 +1629,12 @@ private alias _U = immutable(UnicodeProperty); @property static _U[] tab() pure { return _tab; } static immutable: private alias _T = ubyte[]; -_T ID_Start = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x80, 0x81, 0x5, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x47, 0x1b, 0x4, 0x4, 0x2d, 0x2b, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0xf, 0x2, 0x7, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x16, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x17, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0x3a, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0xf, 0x10, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x2, 0xc, 0x7, 0x3a, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x1, 0x1, 0x15, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x11, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x23, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x29, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x52, 0x1, 0x5d, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x26, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x4, 0x5, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x10, 0x1f, 0x2, 0x50, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x1c, 0x1, 0x10, 0x5, 0x1, 0xa, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x17, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0xb, 0x7, 0x3, 0xc, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x73, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x74, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x5, 0x1, 0x42, 0xd, 0x40, 0x2, 0x1, 0x1, 0x1c, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x97, 0x66, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x7, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T ID_Start = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x80, 0x81, 0x5, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x47, 0x1b, 0x4, 0x4, 0x2d, 0x2b, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0xf, 0x2, 0x7, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x16, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x17, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0x3a, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0xf, 0x10, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x2, 0xc, 0x7, 0x3a, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x1, 0x1, 0x15, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x11, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x23, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x29, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x52, 0x1, 0x5d, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x26, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x4, 0x5, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x10, 0x1f, 0x2, 0x50, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x1c, 0x1, 0x10, 0x5, 0x1, 0xa, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x17, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0xb, 0x7, 0x3, 0xc, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x73, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x74, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x5, 0x1, 0x42, 0xd, 0x40, 0x2, 0x1, 0x1, 0x1c, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x97, 0x66, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x7, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; _T Cs = [0xa0, 0xd8, 0x0, 0x88, 0x0]; _T Default_Ignorable_Code_Point = [0x80, 0xad, 0x1, 0x82, 0xa1, 0x1, 0x82, 0xcc, 0x1, 0x8b, 0x42, 0x2, 0x86, 0x53, 0x2, 0x55, 0x5, 0x87, 0xfb, 0x5, 0x1a, 0x5, 0x31, 0x10, 0x90, 0xf4, 0x1, 0xa0, 0xcc, 0x9b, 0x10, 0x80, 0xef, 0x1, 0x80, 0xa0, 0x1, 0x4f, 0x9, 0xa0, 0xbc, 0xa7, 0x4, 0x94, 0xcf, 0x8, 0xac, 0x2e, 0x85, 0x90, 0x0]; _T Pd = [0x2d, 0x1, 0x85, 0x5c, 0x1, 0x33, 0x1, 0x8e, 0x41, 0x1, 0x84, 0x5, 0x1, 0x88, 0x9, 0x6, 0x8e, 0x1, 0x1, 0x2, 0x1, 0x1f, 0x2, 0x4, 0x1, 0x1c, 0x1, 0x81, 0xbe, 0x1, 0x13, 0x1, 0x6f, 0x1, 0xa0, 0xcd, 0x90, 0x2, 0x25, 0x1, 0xa, 0x1, 0x80, 0xa9, 0x1, 0x8f, 0x9f, 0x1]; -_T Unified_Ideograph = [0xa0, 0x34, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x5a, 0xe, 0x2, 0x1, 0x1, 0x1, 0x2, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x3, 0xa1, 0x5, 0xd6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x94, 0x1f, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T IDS_Binary_Operator = [0xa0, 0x2f, 0xf0, 0x2, 0x2, 0x8]; +_T Unified_Ideograph = [0xa0, 0x34, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x5a, 0xe, 0x2, 0x1, 0x1, 0x1, 0x2, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x3, 0xa1, 0x5, 0xd6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x91, 0xa2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T IDS_Binary_Operator = [0xa0, 0x2f, 0xf0, 0x2, 0x2, 0xa, 0x81, 0xf1, 0x1]; _T Sm = [0x2b, 0x1, 0x10, 0x3, 0x3d, 0x1, 0x1, 0x1, 0x2d, 0x1, 0x4, 0x1, 0x25, 0x1, 0x1f, 0x1, 0x82, 0xfe, 0x1, 0x82, 0xf, 0x3, 0x9a, 0x3b, 0x1, 0xd, 0x1, 0x27, 0x3, 0xd, 0x3, 0x80, 0x8b, 0x1, 0x27, 0x5, 0x6, 0x1, 0x44, 0x5, 0x5, 0x2, 0x4, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1f, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1f, 0x81, 0xc, 0x20, 0x2, 0x5a, 0x1, 0x1e, 0x19, 0x28, 0x6, 0x81, 0xd5, 0x1, 0x9, 0x1, 0x36, 0x8, 0x6f, 0x1, 0x81, 0x50, 0x5, 0x2, 0x1f, 0xa, 0x10, 0x81, 0x0, 0x80, 0x83, 0x16, 0x3f, 0x4, 0x20, 0x2, 0x81, 0x2, 0x30, 0x15, 0x2, 0x6, 0xa0, 0xcf, 0xdc, 0x1, 0x83, 0x38, 0x1, 0x1, 0x3, 0x80, 0xa4, 0x1, 0x10, 0x3, 0x3d, 0x1, 0x1, 0x1, 0x80, 0x83, 0x1, 0x6, 0x4, 0xa0, 0xd6, 0xd4, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x97, 0x2c, 0x2]; _T Pi = [0x80, 0xab, 0x1, 0x9f, 0x6c, 0x1, 0x2, 0x2, 0x2, 0x1, 0x19, 0x1, 0x8d, 0xc8, 0x1, 0x1, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x3, 0x1]; _T Other_Grapheme_Extend = [0x89, 0xbe, 0x1, 0x18, 0x1, 0x81, 0x66, 0x1, 0x18, 0x1, 0x66, 0x1, 0x18, 0x1, 0x80, 0xea, 0x1, 0x12, 0x2, 0x67, 0x1, 0x18, 0x1, 0x77, 0x1, 0xf, 0x1, 0x8d, 0x55, 0x1, 0x84, 0xd6, 0x1, 0x90, 0x21, 0x2, 0xa0, 0xcf, 0x6e, 0x2, 0x93, 0x9e, 0x1, 0x18, 0x1, 0x81, 0x58, 0x1, 0xc, 0x1, 0x80, 0xf1, 0x1, 0x83, 0x80, 0x1, 0xa0, 0xb8, 0x34, 0x1, 0x8, 0x5, 0xac, 0x2e, 0xad, 0x60]; @@ -1642,7 +1643,7 @@ _T Other_ID_Start = [0x98, 0x85, 0x2, 0x88, 0x91, 0x1, 0x15, 0x1, 0x8f, 0x6c, 0x _T Pattern_Syntax = [0x21, 0xf, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x4, 0x22, 0x7, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x2, 0x4, 0x1, 0x4, 0x1, 0x3, 0x1, 0x17, 0x1, 0x1f, 0x1, 0x9f, 0x18, 0x18, 0x8, 0xf, 0x2, 0x13, 0x1, 0xa, 0x81, 0x31, 0x82, 0xd0, 0x80, 0xa0, 0x82, 0x76, 0x1e, 0x84, 0x6c, 0x82, 0x0, 0x80, 0x80, 0x81, 0x81, 0x3, 0x4, 0x19, 0xf, 0x1, 0xa0, 0xcd, 0xd, 0x2, 0x81, 0x5, 0x2]; _T Lu = [0x41, 0x1a, 0x65, 0x17, 0x1, 0x7, 0x21, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0x2, 0x4, 0x1, 0x2, 0x1, 0x3, 0x3, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x21, 0x1, 0x1, 0x1, 0x3, 0x1, 0x8, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x1, 0x11, 0x1, 0x9, 0x23, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x2, 0x1, 0x1, 0x2, 0x2, 0x33, 0x30, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x26, 0x8b, 0x49, 0x26, 0x1, 0x1, 0x5, 0x1, 0x82, 0xd2, 0x56, 0x88, 0x9a, 0x2b, 0x2, 0x3, 0x81, 0x40, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x8, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0x6, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x8, 0x48, 0x4, 0xc, 0x4, 0xc, 0x4, 0xc, 0x5, 0xb, 0x4, 0x81, 0x6, 0x1, 0x4, 0x1, 0x3, 0x3, 0x2, 0x3, 0x2, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x4, 0xa, 0x2, 0x5, 0x1, 0x3d, 0x1, 0x8a, 0x7c, 0x30, 0x30, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x2, 0x1, 0x8, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x1, 0x1, 0x1, 0x4, 0x1, 0xa0, 0x79, 0x4d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x87, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x6, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa0, 0x57, 0x2b, 0x1a, 0x84, 0xc5, 0x28, 0x80, 0x88, 0x24, 0x80, 0x9c, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x86, 0xea, 0x33, 0x8b, 0xed, 0x20, 0xa0, 0x55, 0x80, 0x20, 0xa0, 0x65, 0xa0, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0x8, 0x1a, 0x1a, 0x1a, 0x2, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1b, 0x2, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1b, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1e, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x1, 0x91, 0x35, 0x22]; _T Case_Ignorable = [0x27, 0x1, 0x6, 0x1, 0xb, 0x1, 0x23, 0x1, 0x1, 0x1, 0x47, 0x1, 0x4, 0x1, 0x1, 0x1, 0x4, 0x1, 0x2, 0x2, 0x81, 0xf7, 0x80, 0xc0, 0x4, 0x2, 0x4, 0x1, 0x9, 0x2, 0x1, 0x1, 0x80, 0xfb, 0x7, 0x80, 0xcf, 0x1, 0x5, 0x1, 0x31, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x2c, 0x1, 0xb, 0x6, 0xa, 0xb, 0x1, 0x1, 0x23, 0x1, 0xa, 0x15, 0x10, 0x1, 0x65, 0x8, 0x1, 0xa, 0x1, 0x4, 0x21, 0x1, 0x1, 0x1, 0x1e, 0x1b, 0x5b, 0xb, 0x3a, 0xb, 0x4, 0x1, 0x2, 0x1, 0x18, 0x18, 0x2b, 0x3, 0x2c, 0x1, 0x7, 0x2, 0x6, 0x8, 0x29, 0x3a, 0x37, 0x1, 0x1, 0x1, 0x4, 0x8, 0x4, 0x1, 0x3, 0x7, 0xa, 0x2, 0xd, 0x1, 0xf, 0x1, 0x3a, 0x1, 0x4, 0x4, 0x8, 0x1, 0x14, 0x2, 0x1a, 0x1, 0x2, 0x2, 0x39, 0x1, 0x4, 0x2, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x1e, 0x2, 0x3, 0x1, 0xb, 0x2, 0x39, 0x1, 0x4, 0x5, 0x1, 0x2, 0x4, 0x1, 0x14, 0x2, 0x16, 0x6, 0x1, 0x1, 0x3a, 0x1, 0x2, 0x1, 0x1, 0x4, 0x8, 0x1, 0x7, 0x2, 0xb, 0x2, 0x1e, 0x1, 0x3d, 0x1, 0xc, 0x1, 0x32, 0x1, 0x3, 0x1, 0x37, 0x1, 0x1, 0x3, 0x5, 0x3, 0x1, 0x4, 0x7, 0x2, 0xb, 0x2, 0x1d, 0x1, 0x3a, 0x1, 0x2, 0x1, 0x6, 0x1, 0x5, 0x2, 0x14, 0x2, 0x1c, 0x2, 0x39, 0x2, 0x4, 0x4, 0x8, 0x1, 0x14, 0x2, 0x1d, 0x1, 0x48, 0x1, 0x7, 0x3, 0x1, 0x1, 0x5a, 0x1, 0x2, 0x7, 0xb, 0x9, 0x62, 0x1, 0x2, 0x9, 0x9, 0x1, 0x1, 0x7, 0x49, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0x37, 0xe, 0x1, 0x5, 0x1, 0x2, 0x5, 0xb, 0x1, 0x24, 0x9, 0x1, 0x66, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x2, 0x19, 0x2, 0x4, 0x3, 0x10, 0x4, 0xd, 0x1, 0x2, 0x2, 0x6, 0x1, 0xf, 0x1, 0x5e, 0x1, 0x82, 0x60, 0x3, 0x83, 0xb2, 0x3, 0x1d, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x40, 0x2, 0x1, 0x7, 0x8, 0x1, 0x2, 0xb, 0x3, 0x1, 0x5, 0x1, 0x2d, 0x5, 0x33, 0x1, 0x41, 0x2, 0x22, 0x1, 0x76, 0x3, 0x4, 0x2, 0x9, 0x1, 0x6, 0x3, 0x80, 0xdb, 0x2, 0x2, 0x1, 0x3a, 0x1, 0x1, 0x7, 0x1, 0x1, 0x1, 0x1, 0x2, 0x8, 0x6, 0xa, 0x2, 0x1, 0x27, 0x1, 0x8, 0x1f, 0x31, 0x4, 0x30, 0x1, 0x1, 0x5, 0x1, 0x1, 0x5, 0x1, 0x28, 0x9, 0xc, 0x2, 0x20, 0x4, 0x2, 0x2, 0x1, 0x3, 0x38, 0x1, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x3a, 0x8, 0x2, 0x2, 0x40, 0x6, 0x52, 0x3, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x32, 0x3f, 0xd, 0x1, 0x22, 0x65, 0x81, 0xbd, 0x1, 0x1, 0x3, 0xb, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x2, 0xc, 0x5, 0x8, 0x2, 0xa, 0x1, 0x2, 0x1, 0x2, 0x5, 0x31, 0x5, 0x1, 0xa, 0x1, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0x21, 0x8b, 0x8b, 0x2, 0x71, 0x3, 0x7d, 0x1, 0xf, 0x1, 0x60, 0x20, 0x2f, 0x1, 0x81, 0xd5, 0x1, 0x24, 0x4, 0x3, 0x5, 0x5, 0x1, 0x5d, 0x6, 0x5d, 0x3, 0xa0, 0x6f, 0x16, 0x1, 0x84, 0xe2, 0x6, 0x81, 0xe, 0x1, 0x62, 0x4, 0x1, 0xa, 0x1, 0x1, 0x1c, 0x4, 0x50, 0x2, 0xe, 0x22, 0x4e, 0x1, 0x17, 0x3, 0x67, 0x3, 0x3, 0x2, 0x8, 0x1, 0x3, 0x1, 0x4, 0x1, 0x19, 0x2, 0x5, 0x1, 0x80, 0x97, 0x2, 0x1a, 0x12, 0xd, 0x1, 0x26, 0x8, 0x19, 0xb, 0x2e, 0x3, 0x30, 0x1, 0x2, 0x4, 0x2, 0x2, 0x11, 0x1, 0x15, 0x2, 0x42, 0x6, 0x2, 0x2, 0x2, 0x2, 0xc, 0x1, 0x8, 0x1, 0x23, 0x1, 0xb, 0x1, 0x33, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1b, 0x1, 0xe, 0x2, 0x5, 0x2, 0x1, 0x1, 0x64, 0x5, 0x9, 0x3, 0x79, 0x1, 0x2, 0x1, 0x4, 0x1, 0xa0, 0x4f, 0x30, 0x1, 0x80, 0x93, 0x11, 0x82, 0x3d, 0x10, 0x3, 0x1, 0xc, 0x10, 0x22, 0x1, 0x2, 0x1, 0x80, 0xa9, 0x1, 0x7, 0x1, 0x6, 0x1, 0xb, 0x1, 0x23, 0x1, 0x1, 0x1, 0x2f, 0x1, 0x2d, 0x2, 0x43, 0x1, 0x15, 0x3, 0x82, 0x1, 0x1, 0x80, 0xe2, 0x1, 0x80, 0x95, 0x5, 0x84, 0x5, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x82, 0x46, 0x3, 0x1, 0x2, 0x5, 0x4, 0x28, 0x3, 0x4, 0x1, 0x80, 0xa5, 0x2, 0x82, 0x3d, 0x4, 0x81, 0x83, 0x2, 0x50, 0x3, 0x46, 0xb, 0x31, 0x4, 0x7b, 0x1, 0x36, 0xf, 0x29, 0x1, 0x2, 0x2, 0xa, 0x3, 0x31, 0x4, 0x2, 0x2, 0x2, 0x1, 0x4, 0x1, 0xa, 0x1, 0x32, 0x3, 0x24, 0x5, 0x1, 0x8, 0x3e, 0x1, 0xc, 0x2, 0x34, 0x9, 0xa, 0x4, 0x2, 0x1, 0x5f, 0x3, 0x2, 0x1, 0x1, 0x2, 0x6, 0x1, 0x2, 0x1, 0x80, 0x9d, 0x1, 0x3, 0x8, 0x15, 0x2, 0x39, 0x2, 0x3, 0x1, 0x25, 0x7, 0x3, 0x5, 0x80, 0xc3, 0x8, 0x2, 0x3, 0x1, 0x1, 0x17, 0x1, 0x54, 0x6, 0x1, 0x1, 0x4, 0x2, 0x1, 0x2, 0x80, 0xee, 0x4, 0x6, 0x2, 0x1, 0x2, 0x1b, 0x2, 0x55, 0x8, 0x2, 0x1, 0x1, 0x2, 0x6a, 0x1, 0x1, 0x1, 0x2, 0x6, 0x1, 0x1, 0x65, 0x3, 0x2, 0x4, 0x1, 0x5, 0x81, 0x3, 0x9, 0x1, 0x2, 0x81, 0x0, 0x2, 0x1, 0x1, 0x4, 0x1, 0x80, 0x90, 0x4, 0x2, 0x2, 0x4, 0x1, 0x20, 0xa, 0x28, 0x6, 0x2, 0x4, 0x8, 0x1, 0x9, 0x6, 0x2, 0x3, 0x2e, 0xd, 0x1, 0x2, 0x81, 0x96, 0x7, 0x1, 0x6, 0x1, 0x1, 0x52, 0x16, 0x2, 0x7, 0x1, 0x2, 0x1, 0x2, 0x7a, 0x6, 0x3, 0x1, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1, 0x48, 0x2, 0x3, 0x1, 0x1, 0x1, 0x81, 0x5b, 0x2, 0xb, 0x2, 0x34, 0x5, 0x5, 0x1, 0x1, 0x1, 0x94, 0xed, 0x11, 0x6, 0xf, 0xa0, 0x36, 0x9a, 0x5, 0x3b, 0x7, 0x9, 0x4, 0x84, 0xb, 0x1, 0x3f, 0x11, 0x40, 0x2, 0x1, 0x2, 0xa0, 0x40, 0xb, 0x4, 0x1, 0x7, 0x1, 0x2, 0x8c, 0x9e, 0x2, 0x1, 0x4, 0x92, 0x5c, 0x2e, 0x2, 0x17, 0x82, 0x20, 0x3, 0x9, 0x10, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x87, 0xbb, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x85, 0x50, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x80, 0xa0, 0xe, 0x81, 0x70, 0x1, 0x3d, 0x4, 0x81, 0xfb, 0x5, 0x83, 0xe0, 0x7, 0x6d, 0x8, 0x8a, 0xaf, 0x5, 0xac, 0xc, 0x1, 0x1, 0x1e, 0x60, 0x80, 0x80, 0x80, 0xf0]; -_T Lo = [0x80, 0xaa, 0x1, 0xf, 0x1, 0x81, 0x0, 0x1, 0x4, 0x4, 0x80, 0xd0, 0x1, 0x83, 0x3b, 0x1b, 0x4, 0x4, 0x2d, 0x20, 0x1, 0xa, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0x18, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x15, 0x16, 0x2a, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x29, 0x3b, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0x10, 0xf, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x2, 0xc, 0x6, 0x3b, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x17, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x71, 0x81, 0x49, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x71, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x6, 0x8, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x28, 0x1, 0x43, 0x23, 0x1, 0x35, 0x7, 0x5, 0x2, 0x22, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x80, 0xb0, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x1e, 0x71, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x84, 0x3a, 0x4, 0x8b, 0xf7, 0x38, 0x18, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x27, 0x1, 0x35, 0x1, 0x4, 0x56, 0x8, 0x1, 0x1, 0x5a, 0x4, 0x1, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x15, 0x1, 0x84, 0x77, 0x43, 0x28, 0x8, 0x81, 0xc, 0x4, 0x10, 0xa, 0x2, 0x42, 0x1, 0x31, 0x46, 0x80, 0xa9, 0x1, 0x67, 0x1, 0x3, 0x7, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x2d, 0x5, 0x2, 0x9, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x10, 0x1, 0x6, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x2, 0x3, 0xb, 0x7, 0x1, 0xe, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x80, 0x91, 0x23, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x43, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x69, 0xa, 0x1, 0x2d, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x81, 0x85, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x14, 0x1, 0x8, 0x6, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x80, 0x80, 0x4e, 0x62, 0x28, 0x8, 0x34, 0x80, 0x9c, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x80, 0x98, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x80, 0xb7, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x80, 0xd3, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x80, 0xe6, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x33, 0x15, 0x5, 0x13, 0x83, 0x70, 0x4b, 0x5, 0x1, 0x80, 0xaf, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xf7, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0xa0, 0x22, 0x70, 0x1, 0x81, 0xf5, 0x2d, 0x21, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1b, 0x82, 0xf5, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x85, 0x3b, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T Lo = [0x80, 0xaa, 0x1, 0xf, 0x1, 0x81, 0x0, 0x1, 0x4, 0x4, 0x80, 0xd0, 0x1, 0x83, 0x3b, 0x1b, 0x4, 0x4, 0x2d, 0x20, 0x1, 0xa, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0x18, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x15, 0x16, 0x2a, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x29, 0x3b, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0x10, 0xf, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x2, 0xc, 0x6, 0x3b, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x17, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x71, 0x81, 0x49, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x71, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x6, 0x8, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x28, 0x1, 0x43, 0x23, 0x1, 0x35, 0x7, 0x5, 0x2, 0x22, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x80, 0xb0, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x1e, 0x71, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x84, 0x3a, 0x4, 0x8b, 0xf7, 0x38, 0x18, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x27, 0x1, 0x35, 0x1, 0x4, 0x56, 0x8, 0x1, 0x1, 0x5a, 0x4, 0x1, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x15, 0x1, 0x84, 0x77, 0x43, 0x28, 0x8, 0x81, 0xc, 0x4, 0x10, 0xa, 0x2, 0x42, 0x1, 0x31, 0x46, 0x80, 0xa9, 0x1, 0x67, 0x1, 0x3, 0x7, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x2d, 0x5, 0x2, 0x9, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x10, 0x1, 0x6, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x2, 0x3, 0xb, 0x7, 0x1, 0xe, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x80, 0x91, 0x23, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x43, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x69, 0xa, 0x1, 0x2d, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x81, 0x85, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x14, 0x1, 0x8, 0x6, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x80, 0x80, 0x4e, 0x62, 0x28, 0x8, 0x34, 0x80, 0x9c, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x80, 0x98, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x80, 0xb7, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x80, 0xd3, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x80, 0xe6, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x33, 0x15, 0x5, 0x13, 0x83, 0x70, 0x4b, 0x5, 0x1, 0x80, 0xaf, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xf7, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0xa0, 0x22, 0x70, 0x1, 0x81, 0xf5, 0x2d, 0x21, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1b, 0x82, 0xf5, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x85, 0x3b, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; _T Pc = [0x5f, 0x1, 0x9f, 0xdf, 0x2, 0x13, 0x1, 0xa0, 0xdd, 0xde, 0x2, 0x18, 0x3, 0x80, 0xef, 0x1]; _T Bidi_Control = [0x86, 0x1c, 0x1, 0x99, 0xf1, 0x2, 0x1a, 0x5, 0x37, 0x4]; _T Co = [0xa0, 0xe0, 0x0, 0x99, 0x0, 0xae, 0x7, 0x0, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe]; @@ -1651,46 +1652,49 @@ _T Soft_Dotted = [0x69, 0x2, 0x80, 0xc4, 0x1, 0x81, 0x19, 0x1, 0x1e, 0x1, 0x34, _T Noncharacter_Code_Point = [0xa0, 0xfd, 0xd0, 0x20, 0x82, 0xe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe]; _T Logical_Order_Exception = [0x8e, 0x40, 0x5, 0x7b, 0x5, 0x8a, 0xf0, 0x3, 0x2, 0x1, 0xa0, 0x90, 0xfa, 0x2, 0x2, 0x1, 0x1, 0x2]; _T Cased = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x80, 0xc3, 0x1, 0x4, 0x4, 0x80, 0xd0, 0x1, 0x24, 0x7, 0x2, 0x1e, 0x5, 0x60, 0x1, 0x2a, 0x4, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x9, 0x29, 0x8b, 0x17, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x4, 0x82, 0xa0, 0x56, 0x2, 0x6, 0x88, 0x82, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x40, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x6, 0x4, 0x1, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x20, 0x3, 0x2, 0x83, 0x31, 0x34, 0x87, 0x16, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0xa0, 0x79, 0x12, 0x2e, 0x12, 0x1e, 0x80, 0x84, 0x66, 0x3, 0x4, 0x1, 0x3b, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x5, 0x1, 0x3, 0x83, 0x35, 0x2b, 0x1, 0xe, 0x6, 0x50, 0xa0, 0x4f, 0x40, 0x7, 0xc, 0x5, 0x84, 0x9, 0x1a, 0x6, 0x1a, 0x84, 0xa5, 0x50, 0x60, 0x24, 0x4, 0x24, 0x74, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x81, 0xc3, 0x1, 0x2, 0x3, 0x1, 0x2a, 0x1, 0x9, 0x84, 0xc5, 0x33, 0xd, 0x33, 0x8b, 0xad, 0x40, 0xa0, 0x55, 0x60, 0x40, 0xa0, 0x65, 0x80, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0xa, 0x1, 0x14, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x88, 0x92, 0x44, 0x87, 0xec, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; +_T ID_Compat_Math_Continue = [0x80, 0xb2, 0x2, 0x5, 0x1, 0x9f, 0xb6, 0x1, 0x3, 0xb, 0x1, 0xf, 0x81, 0x73, 0x1, 0x4, 0x1, 0x16, 0x1, 0xa1, 0xb4, 0xa2, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1]; _T Math = [0x2b, 0x1, 0x10, 0x3, 0x1f, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x2d, 0x1, 0x4, 0x1, 0x25, 0x1, 0x1f, 0x1, 0x82, 0xd8, 0x3, 0x2, 0x1, 0x1a, 0x2, 0x2, 0x3, 0x82, 0xf, 0x3, 0x9a, 0xd, 0x1, 0x1b, 0x3, 0xb, 0x1, 0x3, 0x1, 0xd, 0x1, 0xe, 0x4, 0x15, 0x5, 0xb, 0x5, 0x41, 0xd, 0x4, 0x1, 0x3, 0x2, 0x4, 0x5, 0x12, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x3, 0x2, 0x2, 0x2, 0x1, 0x3, 0x1, 0x6, 0x3, 0xe, 0x1, 0x1, 0x44, 0x18, 0x1, 0x6, 0x1, 0x2, 0x4, 0x2, 0x4, 0x20, 0x1, 0x1, 0x6, 0x2, 0xe, 0x81, 0xc, 0x8, 0x4, 0x14, 0x2, 0x5a, 0x1, 0x1e, 0x1b, 0x1, 0x1, 0x18, 0x1, 0xb, 0x7, 0x81, 0xbd, 0x2, 0xc, 0xa, 0x4, 0x6, 0x4, 0x2, 0x2, 0x2, 0x3, 0x5, 0xe, 0x1, 0x1, 0x1, 0x2, 0x6, 0xb, 0x8, 0x5, 0x2, 0x39, 0x1, 0x1, 0x1, 0x1d, 0x4, 0x9, 0x3, 0x81, 0x50, 0x40, 0x81, 0x0, 0x82, 0x0, 0x30, 0x15, 0x2, 0x6, 0xa0, 0xcf, 0xdc, 0x1, 0x83, 0x37, 0x6, 0x1, 0x1, 0x80, 0xa2, 0x1, 0x10, 0x3, 0x1d, 0x1, 0x1, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x80, 0x83, 0x1, 0x6, 0x4, 0xa0, 0xd4, 0x13, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x32, 0x96, 0x0, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2]; -_T Me = [0x84, 0x88, 0x2, 0x96, 0x34, 0x1, 0x86, 0x1e, 0x4, 0x1, 0x3, 0xa0, 0x85, 0x8b, 0x3]; _T No = [0x80, 0xb2, 0x2, 0x5, 0x1, 0x2, 0x3, 0x89, 0x35, 0x6, 0x81, 0x78, 0x6, 0x78, 0x3, 0x80, 0x85, 0x7, 0x80, 0xd9, 0x7, 0x11, 0x9, 0x81, 0xb1, 0xa, 0x84, 0x35, 0x14, 0x84, 0x73, 0xa, 0x81, 0xe0, 0x1, 0x86, 0x95, 0x1, 0x3, 0x6, 0x6, 0xa, 0x80, 0xc6, 0x10, 0x29, 0x1, 0x82, 0xd6, 0x3c, 0x4e, 0x16, 0x82, 0x76, 0x1e, 0x85, 0x69, 0x1, 0x84, 0x94, 0x4, 0x80, 0x8a, 0xa, 0x1e, 0x8, 0x1, 0xf, 0x20, 0xa, 0x27, 0xf, 0xa0, 0x75, 0x70, 0x6, 0xa0, 0x58, 0xd1, 0x2d, 0x41, 0x4, 0x11, 0x2, 0x81, 0x55, 0x1b, 0x24, 0x4, 0x85, 0x34, 0x8, 0x19, 0x7, 0x27, 0x9, 0x4b, 0x5, 0x16, 0x6, 0x80, 0xa0, 0x2, 0x2, 0x10, 0x2, 0x2e, 0x40, 0x9, 0x34, 0x2, 0x1e, 0x3, 0x4b, 0x5, 0x68, 0x8, 0x18, 0x8, 0x29, 0x7, 0x81, 0x4a, 0x6, 0x81, 0x60, 0x1f, 0x80, 0x9e, 0xa, 0x2a, 0x4, 0x70, 0x7, 0x80, 0x86, 0x14, 0x81, 0x7b, 0x14, 0x85, 0x45, 0x2, 0x81, 0xae, 0x9, 0x83, 0x67, 0x13, 0x83, 0x53, 0x15, 0xa0, 0x4b, 0x86, 0x7, 0x83, 0x1e, 0x17, 0xa0, 0x64, 0x29, 0x14, 0xc, 0x14, 0x6c, 0x19, 0x95, 0x4e, 0x9, 0x83, 0xa1, 0x3b, 0x1, 0x3, 0x1, 0x4, 0x4c, 0x2d, 0x1, 0xf, 0x83, 0xc2, 0xd]; -_T ID_Continue = [0x30, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x1, 0x1, 0x2, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x5, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x1, 0x5, 0x2, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x8, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x4a, 0x4, 0x66, 0x1, 0x8, 0x2, 0xa, 0x1, 0x13, 0x2, 0x1, 0x10, 0x3b, 0x2, 0x65, 0xe, 0x36, 0x4, 0x1, 0x2, 0x1, 0x2, 0x2e, 0x12, 0x1c, 0x4, 0xb, 0x5, 0x18, 0x1, 0x6, 0x9, 0x4a, 0x1, 0x80, 0x81, 0x2, 0xa, 0x1, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0xc, 0xa, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x10, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xa, 0x9, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0xa, 0x10, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x10, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x5, 0x5, 0x4, 0x7, 0x5, 0x2, 0xa, 0xa, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x2, 0xd, 0x3a, 0x5, 0xf, 0x1, 0xa, 0x27, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x1, 0x17, 0x2, 0x6, 0xa, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0xa, 0x1, 0x24, 0x4, 0x14, 0x1, 0x12, 0x1, 0x24, 0x9, 0x1, 0x39, 0x4a, 0x6, 0x4e, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x3, 0x9, 0x9, 0xe, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x16, 0x9, 0x16, 0xb, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x54, 0x3, 0x1, 0x4, 0x2, 0x2, 0xa, 0x21, 0x3, 0x1, 0xb, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0xa, 0x28, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x25, 0x1c, 0x4, 0x3f, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0xd, 0x1, 0x8, 0xe, 0x1, 0x10, 0x31, 0x4d, 0x3, 0xa, 0x11, 0x9, 0xc, 0x74, 0xc, 0x38, 0x8, 0xa, 0x3, 0x31, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x10, 0x3, 0x1, 0x27, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x42, 0x2, 0x13, 0x1, 0x1c, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0xd, 0x4, 0x1, 0x3, 0xc, 0x11, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x9, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0xf, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x82, 0x5, 0x3, 0x19, 0xf, 0x1, 0x5, 0x2, 0x5, 0x4, 0x56, 0x2, 0x7, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x1c, 0x14, 0x30, 0x4, 0xa, 0x1, 0x73, 0x25, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x36, 0x4, 0x1, 0x13, 0x34, 0xc, 0x46, 0xa, 0xa, 0x6, 0x18, 0x3, 0x1, 0x1, 0x31, 0x2, 0x24, 0xc, 0x1d, 0x3, 0x41, 0xe, 0xb, 0x6, 0x1f, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x6, 0x17, 0x3, 0x49, 0x18, 0x3, 0x2, 0x10, 0x2, 0x5, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x1, 0x2, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x4, 0x10, 0x10, 0x10, 0x3, 0x2, 0x18, 0x3, 0x20, 0x5, 0x1, 0x80, 0x87, 0x13, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x80, 0x88, 0x1, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1, 0x1f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0x1, 0x20, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1e, 0x19, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x8, 0xa, 0x81, 0x46, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4b, 0x20, 0xa, 0x1, 0x8, 0x21, 0x1f, 0x16, 0x2a, 0x15, 0x1b, 0x17, 0x9, 0x47, 0x1f, 0x10, 0x9, 0x3c, 0x7, 0x1, 0xd, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0xa, 0x4, 0x4, 0x8, 0x24, 0x2, 0x1, 0x9, 0x45, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x23, 0x12, 0x1, 0x25, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x4b, 0x5, 0xa, 0x4, 0x4, 0x1e, 0x46, 0x1, 0x1, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x9, 0x17, 0x6, 0x22, 0x41, 0x3, 0x1, 0xb, 0xa, 0x26, 0x39, 0x7, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0xa, 0x6, 0x7, 0x80, 0xb9, 0x3b, 0x65, 0x4a, 0x15, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x9, 0xc, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0x8, 0x1, 0x2, 0x1b, 0x3f, 0x8, 0x1, 0x8, 0x4a, 0x3, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x9, 0xf, 0xa, 0x18, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x5, 0xd, 0xa, 0x56, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x10, 0x16, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x6, 0x4f, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x5, 0xb, 0x37, 0x9, 0x4, 0xc, 0xa, 0x9, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x2, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x3, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x1e, 0x5, 0x3, 0x6, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x81, 0xbb, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x1, 0x81, 0x41, 0x1f, 0x11, 0x3a, 0x81, 0xd6, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0xb, 0x7, 0x29, 0x4c, 0x4, 0xa, 0x84, 0xa6, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x8d, 0x34, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdd, 0x50, 0x80, 0xf0]; -_T Ideographic = [0xa0, 0x30, 0x6, 0x2, 0x19, 0x9, 0xe, 0x3, 0x83, 0xc5, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x59, 0x0, 0x81, 0x6e, 0x2, 0x6a, 0xa0, 0x75, 0xa, 0x1, 0x1b, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x24, 0x67, 0x81, 0x8c, 0xa0, 0x4d, 0x4, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T ID_Continue = [0x30, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x1, 0x1, 0x2, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x5, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x1, 0x5, 0x2, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x8, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x4a, 0x4, 0x66, 0x1, 0x8, 0x2, 0xa, 0x1, 0x13, 0x2, 0x1, 0x10, 0x3b, 0x2, 0x65, 0xe, 0x36, 0x4, 0x1, 0x2, 0x1, 0x2, 0x2e, 0x12, 0x1c, 0x4, 0xb, 0x5, 0x18, 0x1, 0x6, 0x9, 0x4a, 0x1, 0x80, 0x81, 0x2, 0xa, 0x1, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0xc, 0xa, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x10, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xa, 0x9, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0xa, 0x10, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x10, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x5, 0x5, 0x4, 0x7, 0x5, 0x2, 0xa, 0xa, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x2, 0xd, 0x3a, 0x5, 0xf, 0x1, 0xa, 0x27, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x1, 0x17, 0x2, 0x6, 0xa, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0xa, 0x1, 0x24, 0x4, 0x14, 0x1, 0x12, 0x1, 0x24, 0x9, 0x1, 0x39, 0x4a, 0x6, 0x4e, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x3, 0x9, 0x9, 0xe, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x16, 0x9, 0x16, 0xb, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x54, 0x3, 0x1, 0x4, 0x2, 0x2, 0xa, 0x21, 0x3, 0x1, 0xb, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0xa, 0x28, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x25, 0x1c, 0x4, 0x3f, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0xd, 0x1, 0x8, 0xe, 0x1, 0x10, 0x31, 0x4d, 0x3, 0xa, 0x11, 0x9, 0xc, 0x74, 0xc, 0x38, 0x8, 0xa, 0x3, 0x31, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x10, 0x3, 0x1, 0x27, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0xf, 0x2, 0x31, 0x2, 0x13, 0x1, 0x1c, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0xd, 0x4, 0x1, 0x3, 0xc, 0x11, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x9, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0xf, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x82, 0x5, 0x3, 0x19, 0xf, 0x1, 0x5, 0x2, 0x5, 0x4, 0x56, 0x2, 0x7, 0x1, 0x5f, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x1c, 0x14, 0x30, 0x4, 0xa, 0x1, 0x73, 0x25, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x36, 0x4, 0x1, 0x13, 0x34, 0xc, 0x46, 0xa, 0xa, 0x6, 0x18, 0x3, 0x1, 0x1, 0x31, 0x2, 0x24, 0xc, 0x1d, 0x3, 0x41, 0xe, 0xb, 0x6, 0x1f, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x6, 0x17, 0x3, 0x49, 0x18, 0x3, 0x2, 0x10, 0x2, 0x5, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x1, 0x2, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x4, 0x10, 0x10, 0x10, 0x3, 0x2, 0x18, 0x3, 0x20, 0x5, 0x1, 0x80, 0x87, 0x13, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0xa, 0x5a, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x80, 0x88, 0x1, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1, 0x1f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0x1, 0x20, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1e, 0x19, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x8, 0xa, 0x81, 0x46, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4b, 0x20, 0xa, 0x1, 0x8, 0x21, 0x1f, 0x16, 0x2a, 0x15, 0x1b, 0x17, 0x9, 0x47, 0x1f, 0x10, 0x9, 0x3c, 0x7, 0x1, 0xd, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0xa, 0x4, 0x4, 0x8, 0x24, 0x2, 0x1, 0x9, 0x45, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x23, 0x12, 0x1, 0x25, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x4b, 0x5, 0xa, 0x4, 0x4, 0x1e, 0x46, 0x1, 0x1, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x9, 0x17, 0x6, 0x22, 0x41, 0x3, 0x1, 0xb, 0xa, 0x26, 0x39, 0x7, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0xa, 0x6, 0x7, 0x80, 0xb9, 0x3b, 0x65, 0x4a, 0x15, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x9, 0xc, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0x8, 0x1, 0x2, 0x1b, 0x3f, 0x8, 0x1, 0x8, 0x4a, 0x3, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x9, 0xf, 0xa, 0x18, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x5, 0xd, 0xa, 0x56, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x10, 0x16, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x6, 0x4f, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x5, 0xb, 0x37, 0x9, 0x4, 0xc, 0xa, 0x9, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x2, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x3, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x1e, 0x5, 0x3, 0x6, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x81, 0xbb, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x1, 0x81, 0x41, 0x1f, 0x11, 0x3a, 0x81, 0xd6, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0xb, 0x7, 0x29, 0x4c, 0x4, 0xa, 0x84, 0xa6, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x8d, 0x34, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdd, 0x50, 0x80, 0xf0]; +_T Me = [0x84, 0x88, 0x2, 0x96, 0x34, 0x1, 0x86, 0x1e, 0x4, 0x1, 0x3, 0xa0, 0x85, 0x8b, 0x3]; +_T Ideographic = [0xa0, 0x30, 0x6, 0x2, 0x19, 0x9, 0xe, 0x3, 0x83, 0xc5, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x59, 0x0, 0x81, 0x6e, 0x2, 0x6a, 0xa0, 0x75, 0xa, 0x1, 0x1b, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x24, 0x67, 0x81, 0x8c, 0xa0, 0x4d, 0x4, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; _T Cf = [0x80, 0xad, 0x1, 0x85, 0x52, 0x6, 0x16, 0x1, 0x80, 0xc0, 0x1, 0x31, 0x1, 0x81, 0x80, 0x2, 0x50, 0x1, 0x8f, 0x2b, 0x1, 0x87, 0xfc, 0x5, 0x1a, 0x5, 0x31, 0x5, 0x1, 0xa, 0xa0, 0xde, 0x8f, 0x1, 0x80, 0xf9, 0x3, 0x90, 0xc1, 0x1, 0xf, 0x1, 0xa0, 0x23, 0x62, 0x10, 0xa0, 0x88, 0x60, 0x4, 0x94, 0xcf, 0x8, 0xac, 0x2e, 0x86, 0x1, 0x1e, 0x60]; -_T So = [0x80, 0xa6, 0x1, 0x2, 0x1, 0x4, 0x1, 0x1, 0x1, 0x83, 0xd1, 0x1, 0x81, 0xa, 0x2, 0x7f, 0x2, 0x80, 0xce, 0x1, 0xa, 0x1, 0x13, 0x2, 0x80, 0xf7, 0x1, 0x82, 0x3, 0x1, 0x81, 0x75, 0x1, 0x80, 0x82, 0x6, 0x1, 0x1, 0x80, 0x84, 0x1, 0x80, 0xcf, 0x1, 0x29, 0x1, 0x81, 0x87, 0x3, 0xf, 0x1, 0x1, 0x3, 0x2, 0x6, 0x14, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x85, 0x8, 0x1, 0x6, 0x1, 0x2, 0x5, 0x4, 0x80, 0xc5, 0x2, 0x82, 0xf0, 0xa, 0x82, 0xd3, 0x1, 0x82, 0xd2, 0x1, 0x80, 0x9d, 0x22, 0x81, 0x61, 0xa, 0x9, 0x9, 0x85, 0x83, 0x2, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0xb, 0x2, 0xe, 0x1, 0x1, 0x2, 0x1, 0x1, 0x3a, 0x2, 0x9, 0x5, 0x2, 0x4, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1f, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1f, 0x81, 0xc, 0x8, 0x4, 0x14, 0x2, 0x7, 0x2, 0x51, 0x1, 0x1e, 0x19, 0x28, 0x6, 0x45, 0x19, 0xb, 0x51, 0x4e, 0x16, 0x80, 0xb7, 0x1, 0x9, 0x1, 0x36, 0x8, 0x6f, 0x1, 0x80, 0xf8, 0x2c, 0x2c, 0x40, 0x81, 0x0, 0x82, 0x0, 0x30, 0x15, 0x2, 0x6, 0x27, 0x2, 0x20, 0x1, 0x69, 0x80, 0xe5, 0x6, 0x81, 0x65, 0x2, 0x2e, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0xc, 0x8, 0x1, 0xd, 0x2, 0xc, 0x1, 0x15, 0x2, 0x6, 0x2, 0x81, 0x50, 0x2, 0x4, 0xa, 0x20, 0x24, 0x1c, 0x1f, 0xb, 0x1e, 0x8, 0x1, 0xf, 0x20, 0xa, 0x27, 0xf, 0x81, 0x40, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x90, 0x37, 0x83, 0x61, 0x4, 0xa, 0x2, 0x1, 0x1, 0x82, 0x3d, 0x3, 0xa0, 0x52, 0xc6, 0x10, 0x7f, 0x1, 0x2d, 0x3, 0x81, 0xe4, 0x1, 0x3, 0x1, 0x4, 0x2, 0xd, 0x2, 0x81, 0x39, 0x9, 0x39, 0x11, 0x2, 0x3, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2d, 0x86, 0x7a, 0x2, 0x82, 0x4f, 0x1, 0x8c, 0x76, 0x1, 0x88, 0x95, 0x8, 0x4, 0x11, 0xa0, 0x4b, 0x4a, 0x4, 0x5, 0x1, 0xa0, 0x51, 0x56, 0x1, 0x92, 0xb3, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3c, 0x5, 0x3, 0x16, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x15, 0x42, 0x3, 0x1, 0x80, 0xba, 0x57, 0x84, 0xa9, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x2, 0x86, 0xc8, 0x1, 0x8b, 0x5c, 0x1, 0x80, 0x81, 0x1, 0x82, 0xd1, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0x17, 0x80, 0xa1, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x80, 0xfb, 0x5, 0x82, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37]; +_T So = [0x80, 0xa6, 0x1, 0x2, 0x1, 0x4, 0x1, 0x1, 0x1, 0x83, 0xd1, 0x1, 0x81, 0xa, 0x2, 0x7f, 0x2, 0x80, 0xce, 0x1, 0xa, 0x1, 0x13, 0x2, 0x80, 0xf7, 0x1, 0x82, 0x3, 0x1, 0x81, 0x75, 0x1, 0x80, 0x82, 0x6, 0x1, 0x1, 0x80, 0x84, 0x1, 0x80, 0xcf, 0x1, 0x29, 0x1, 0x81, 0x87, 0x3, 0xf, 0x1, 0x1, 0x3, 0x2, 0x6, 0x14, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x85, 0x8, 0x1, 0x6, 0x1, 0x2, 0x5, 0x4, 0x80, 0xc5, 0x2, 0x82, 0xf0, 0xa, 0x82, 0xd3, 0x1, 0x82, 0xd2, 0x1, 0x80, 0x9d, 0x22, 0x81, 0x61, 0xa, 0x9, 0x9, 0x85, 0x83, 0x2, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0xb, 0x2, 0xe, 0x1, 0x1, 0x2, 0x1, 0x1, 0x3a, 0x2, 0x9, 0x5, 0x2, 0x4, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1f, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1f, 0x81, 0xc, 0x8, 0x4, 0x14, 0x2, 0x7, 0x2, 0x51, 0x1, 0x1e, 0x19, 0x28, 0x6, 0x45, 0x19, 0xb, 0x51, 0x4e, 0x16, 0x80, 0xb7, 0x1, 0x9, 0x1, 0x36, 0x8, 0x6f, 0x1, 0x80, 0xf8, 0x2c, 0x2c, 0x40, 0x81, 0x0, 0x82, 0x0, 0x30, 0x15, 0x2, 0x6, 0x27, 0x2, 0x20, 0x1, 0x69, 0x80, 0xe5, 0x6, 0x81, 0x65, 0x2, 0x2e, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0x10, 0x4, 0x1, 0xd, 0x2, 0xc, 0x1, 0x15, 0x2, 0x6, 0x2, 0x81, 0x50, 0x2, 0x4, 0xa, 0x20, 0x24, 0xb, 0x1, 0x10, 0x1f, 0xb, 0x1e, 0x8, 0x1, 0xf, 0x20, 0xa, 0x27, 0xf, 0x81, 0x40, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x90, 0x37, 0x83, 0x61, 0x4, 0xa, 0x2, 0x1, 0x1, 0x82, 0x3d, 0x3, 0xa0, 0x52, 0xc6, 0x10, 0x7f, 0x1, 0x2d, 0x3, 0x81, 0xe4, 0x1, 0x3, 0x1, 0x4, 0x2, 0xd, 0x2, 0x81, 0x39, 0x9, 0x39, 0x11, 0x2, 0x3, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2d, 0x86, 0x7a, 0x2, 0x82, 0x4f, 0x1, 0x8c, 0x76, 0x1, 0x88, 0x95, 0x8, 0x4, 0x11, 0xa0, 0x4b, 0x4a, 0x4, 0x5, 0x1, 0xa0, 0x51, 0x56, 0x1, 0x92, 0xb3, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3c, 0x5, 0x3, 0x16, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x15, 0x42, 0x3, 0x1, 0x80, 0xba, 0x57, 0x84, 0xa9, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x2, 0x86, 0xc8, 0x1, 0x8b, 0x5c, 0x1, 0x80, 0x81, 0x1, 0x82, 0xd1, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0x17, 0x80, 0xa1, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x80, 0xfb, 0x5, 0x82, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37]; _T White_Space = [0x9, 0x5, 0x12, 0x1, 0x64, 0x1, 0x1a, 0x1, 0x95, 0xdf, 0x1, 0x89, 0x7f, 0xb, 0x1d, 0x2, 0x5, 0x1, 0x2f, 0x1, 0x8f, 0xa0, 0x1]; -_T Sentence_Terminal = [0x21, 0x1, 0xc, 0x1, 0x10, 0x1, 0x85, 0x49, 0x1, 0x80, 0x93, 0x3, 0x80, 0xb4, 0x1, 0x2b, 0x3, 0x80, 0xf6, 0x1, 0x3d, 0x1, 0x1, 0x1, 0x3, 0x2, 0x81, 0x25, 0x2, 0x86, 0xe4, 0x2, 0x83, 0x16, 0x1, 0x4, 0x2, 0x83, 0x5, 0x1, 0x80, 0xc6, 0x2, 0x80, 0xcc, 0x1, 0x5, 0x1, 0x81, 0x3a, 0x2, 0x81, 0x62, 0x4, 0x80, 0xae, 0x2, 0x2, 0x2, 0x1d, 0x2, 0x80, 0xbc, 0x2, 0x41, 0x2, 0x83, 0xbc, 0x2, 0x9, 0x3, 0x8d, 0xe4, 0x1, 0xd, 0x1, 0x16, 0x2, 0x81, 0xad, 0x1, 0xa0, 0x74, 0xfc, 0x1, 0x81, 0xe, 0x2, 0x80, 0xe3, 0x1, 0x3, 0x1, 0x81, 0x7e, 0x2, 0x56, 0x2, 0x5f, 0x1, 0x80, 0x98, 0x2, 0x80, 0x93, 0x3, 0x80, 0x90, 0x2, 0x80, 0xf9, 0x1, 0xa0, 0x52, 0x66, 0x1, 0x3, 0x2, 0x80, 0xa9, 0x1, 0xc, 0x1, 0x10, 0x1, 0x41, 0x1, 0x8a, 0xf4, 0x2, 0x84, 0xfd, 0x5, 0x2c, 0x4, 0x80, 0xbd, 0x2, 0x75, 0x4, 0x7f, 0x3, 0x80, 0x81, 0x2, 0x6, 0x1, 0x10, 0x2, 0x58, 0x2, 0x1, 0x2, 0x6c, 0x1, 0x81, 0xa1, 0x2, 0x81, 0x75, 0x2, 0x5, 0xf, 0x69, 0x2, 0x80, 0xf9, 0x3, 0x82, 0x5, 0x1, 0x1, 0x1, 0x80, 0xfb, 0x2, 0x57, 0x2, 0x81, 0xa4, 0x2, 0x82, 0xb4, 0x2, 0x4a, 0x2, 0xa0, 0x4b, 0x29, 0x2, 0x80, 0x85, 0x1, 0x41, 0x2, 0xb, 0x1, 0x83, 0x53, 0x1, 0xa0, 0x4e, 0x6, 0x1, 0x9d, 0xe8, 0x1]; +_T Sentence_Terminal = [0x21, 0x1, 0xc, 0x1, 0x10, 0x1, 0x85, 0x49, 0x1, 0x80, 0x93, 0x3, 0x80, 0xb4, 0x1, 0x2b, 0x3, 0x80, 0xf6, 0x1, 0x3d, 0x1, 0x1, 0x1, 0x3, 0x2, 0x81, 0x25, 0x2, 0x86, 0xe4, 0x2, 0x83, 0x16, 0x1, 0x4, 0x2, 0x83, 0x5, 0x1, 0x80, 0xc6, 0x2, 0x80, 0x9d, 0x2, 0x2d, 0x1, 0x5, 0x1, 0x81, 0x3a, 0x2, 0x81, 0x62, 0x4, 0x80, 0xae, 0x2, 0x2, 0x2, 0x1d, 0x2, 0x80, 0xbc, 0x2, 0x41, 0x2, 0x83, 0xbc, 0x2, 0x9, 0x3, 0x8d, 0xe4, 0x1, 0xd, 0x1, 0x16, 0x2, 0x81, 0xad, 0x1, 0xa0, 0x74, 0xfc, 0x1, 0x81, 0xe, 0x2, 0x80, 0xe3, 0x1, 0x3, 0x1, 0x81, 0x7e, 0x2, 0x56, 0x2, 0x5f, 0x1, 0x80, 0x98, 0x2, 0x80, 0x93, 0x3, 0x80, 0x90, 0x2, 0x80, 0xf9, 0x1, 0xa0, 0x52, 0x66, 0x1, 0x3, 0x2, 0x80, 0xa9, 0x1, 0xc, 0x1, 0x10, 0x1, 0x41, 0x1, 0x8a, 0xf4, 0x2, 0x84, 0xfd, 0x5, 0x2c, 0x4, 0x80, 0xbd, 0x2, 0x75, 0x4, 0x7f, 0x3, 0x80, 0x81, 0x2, 0x6, 0x1, 0x10, 0x2, 0x58, 0x2, 0x1, 0x2, 0x6c, 0x1, 0x81, 0xa1, 0x2, 0x81, 0x75, 0x2, 0x5, 0xf, 0x69, 0x2, 0x80, 0xf9, 0x3, 0x82, 0x5, 0x1, 0x1, 0x1, 0x80, 0xfb, 0x2, 0x57, 0x2, 0x81, 0xa4, 0x2, 0x82, 0xb4, 0x2, 0x4a, 0x2, 0xa0, 0x4b, 0x29, 0x2, 0x80, 0x85, 0x1, 0x41, 0x2, 0xb, 0x1, 0x83, 0x53, 0x1, 0xa0, 0x4e, 0x6, 0x1, 0x9d, 0xe8, 0x1]; _T Lt = [0x81, 0xc5, 0x1, 0x2, 0x1, 0x2, 0x1, 0x26, 0x1, 0x9d, 0x95, 0x8, 0x8, 0x8, 0x8, 0x8, 0xc, 0x1, 0xf, 0x1, 0x2f, 0x1]; _T Other_Lowercase = [0x80, 0xaa, 0x1, 0xf, 0x1, 0x81, 0xf5, 0x9, 0x7, 0x2, 0x1e, 0x5, 0x60, 0x1, 0x34, 0x1, 0x8d, 0x81, 0x1, 0x8c, 0x2f, 0x3f, 0xd, 0x1, 0x22, 0x25, 0x82, 0xb1, 0x1, 0xd, 0x1, 0x10, 0xd, 0x80, 0xd3, 0x10, 0x83, 0x50, 0x1a, 0x87, 0x92, 0x2, 0xa0, 0x7a, 0x1e, 0x2, 0x80, 0xd2, 0x1, 0x80, 0x81, 0x3, 0x3, 0x2, 0x83, 0x62, 0x4, 0x9, 0x1, 0xa0, 0x5c, 0x16, 0x1, 0x2, 0x3, 0x1, 0x2a, 0x1, 0x9, 0xa0, 0xd8, 0x75, 0x3e]; _T Other_Alphabetic = [0x83, 0x45, 0x1, 0x82, 0x6a, 0xe, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x48, 0xb, 0x30, 0xd, 0x1, 0x7, 0x10, 0x1, 0x65, 0x7, 0x4, 0x4, 0x2, 0x2, 0x4, 0x1, 0x23, 0x1, 0x1e, 0x10, 0x66, 0xb, 0x65, 0x2, 0x3, 0x9, 0x1, 0x3, 0x1, 0x4, 0x80, 0xa7, 0xc, 0x3, 0x7, 0x6, 0x14, 0x36, 0x2, 0x2, 0xf, 0x1, 0x2, 0x5, 0x3, 0xa, 0x2, 0x1d, 0x3, 0x3a, 0x7, 0x2, 0x2, 0x2, 0x2, 0xa, 0x1, 0xa, 0x2, 0x1d, 0x3, 0x3a, 0x5, 0x4, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1e, 0x2, 0x3, 0x1, 0xb, 0x3, 0x3a, 0x8, 0x1, 0x3, 0x1, 0x2, 0x15, 0x2, 0x16, 0x3, 0x4, 0x3, 0x3a, 0x7, 0x2, 0x2, 0x2, 0x2, 0x9, 0x2, 0xa, 0x2, 0x1e, 0x1, 0x3b, 0x5, 0x3, 0x3, 0x1, 0x3, 0xa, 0x1, 0x28, 0x5, 0x39, 0x7, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0xb, 0x2, 0x1d, 0x3, 0x3a, 0x7, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0xb, 0x2, 0xf, 0x1, 0xc, 0x4, 0x3a, 0x7, 0x1, 0x3, 0x1, 0x3, 0xa, 0x1, 0xa, 0x2, 0x1d, 0x3, 0x4b, 0x6, 0x1, 0x1, 0x1, 0x8, 0x12, 0x2, 0x3d, 0x1, 0x2, 0x7, 0x12, 0x1, 0x63, 0x1, 0x2, 0x6, 0x1, 0x2, 0x10, 0x1, 0x80, 0xa3, 0x13, 0x9, 0xb, 0x1, 0x24, 0x6e, 0xc, 0x1, 0x1, 0x2, 0x4, 0x17, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x1, 0xa, 0x4, 0x86, 0x74, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x42, 0x13, 0x80, 0xbc, 0x2, 0x22, 0x1, 0x76, 0xc, 0x4, 0x9, 0x80, 0xde, 0x5, 0x39, 0xa, 0x2, 0x14, 0x4a, 0x2, 0xb, 0x3, 0x31, 0x5, 0x30, 0xf, 0x3c, 0x3, 0x1e, 0x9, 0x2, 0x2, 0x39, 0xb, 0x32, 0x13, 0x81, 0xb0, 0xe, 0x86, 0xc1, 0x34, 0x88, 0xf6, 0x20, 0xa0, 0x78, 0x74, 0x8, 0x22, 0x2, 0x81, 0x62, 0x1, 0x8, 0x1, 0x17, 0x5, 0x58, 0x2, 0x32, 0x10, 0x1, 0x1, 0x39, 0x1, 0x26, 0x5, 0x1c, 0xc, 0x2d, 0x4, 0x30, 0xc, 0x25, 0x1, 0x43, 0xe, 0xc, 0x1, 0x8, 0x2, 0x2d, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x1, 0x2c, 0x5, 0x5, 0x1, 0x80, 0xed, 0x8, 0xa0, 0x4f, 0x33, 0x1, 0x88, 0x57, 0x5, 0x86, 0x86, 0x3, 0x1, 0x2, 0x5, 0x4, 0x83, 0x14, 0x4, 0x81, 0x83, 0x2, 0x81, 0x53, 0x3, 0x35, 0xe, 0x2d, 0x2, 0xb, 0x3, 0x2d, 0x9, 0x9, 0x1, 0x3d, 0x3, 0x24, 0xc, 0x12, 0x2, 0x39, 0x3, 0x30, 0xd, 0xe, 0x2, 0x5c, 0x9, 0x2, 0x1, 0x6, 0x1, 0x2, 0x1, 0x80, 0x9d, 0xa, 0x17, 0x4, 0x3a, 0x7, 0x2, 0x2, 0x2, 0x2, 0xa, 0x1, 0xa, 0x2, 0x80, 0xd1, 0xd, 0x1, 0x3, 0x6a, 0x12, 0x80, 0xed, 0x7, 0x2, 0x7, 0x1d, 0x2, 0x52, 0xf, 0x1, 0x1, 0x6a, 0xb, 0x67, 0xe, 0x81, 0x1, 0xd, 0x80, 0xf7, 0x6, 0x1, 0x2, 0x2, 0x2, 0x3, 0x1, 0x1, 0x1, 0x80, 0x8e, 0x7, 0x2, 0x6, 0x4, 0x1, 0x1c, 0xa, 0x2a, 0x5, 0x1, 0x4, 0x12, 0xb, 0x2e, 0xe, 0x81, 0x97, 0x8, 0x1, 0x7, 0x53, 0x16, 0x1, 0xe, 0x7a, 0x6, 0x3, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x3, 0x1, 0x42, 0x5, 0x1, 0x2, 0x1, 0x4, 0x81, 0x5c, 0x4, 0x9, 0x2, 0x1, 0x1, 0x30, 0x7, 0x3, 0x3, 0xa0, 0x50, 0xe, 0x1, 0x1, 0x37, 0x7, 0x4, 0x5d, 0x2, 0xa0, 0x4c, 0xac, 0x1, 0xa0, 0x23, 0x61, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x64, 0x1, 0x88, 0xb7, 0x1, 0x87, 0xe8, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; -_T XID_Continue = [0x30, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x1, 0x1, 0x2, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x6, 0x5, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x1, 0x5, 0x2, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x8, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x4a, 0x4, 0x66, 0x1, 0x8, 0x2, 0xa, 0x1, 0x13, 0x2, 0x1, 0x10, 0x3b, 0x2, 0x65, 0xe, 0x36, 0x4, 0x1, 0x2, 0x1, 0x2, 0x2e, 0x12, 0x1c, 0x4, 0xb, 0x5, 0x18, 0x1, 0x6, 0x9, 0x4a, 0x1, 0x80, 0x81, 0x2, 0xa, 0x1, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0xc, 0xa, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x10, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xa, 0x9, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0xa, 0x10, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x10, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x5, 0x5, 0x4, 0x7, 0x5, 0x2, 0xa, 0xa, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x2, 0xd, 0x3a, 0x5, 0xf, 0x1, 0xa, 0x27, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x1, 0x17, 0x2, 0x6, 0xa, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0xa, 0x1, 0x24, 0x4, 0x14, 0x1, 0x12, 0x1, 0x24, 0x9, 0x1, 0x39, 0x4a, 0x6, 0x4e, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x3, 0x9, 0x9, 0xe, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x16, 0x9, 0x16, 0xb, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x54, 0x3, 0x1, 0x4, 0x2, 0x2, 0xa, 0x21, 0x3, 0x1, 0xb, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0xa, 0x28, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x25, 0x1c, 0x4, 0x3f, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0xd, 0x1, 0x8, 0xe, 0x1, 0x10, 0x31, 0x4d, 0x3, 0xa, 0x11, 0x9, 0xc, 0x74, 0xc, 0x38, 0x8, 0xa, 0x3, 0x31, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x10, 0x3, 0x1, 0x27, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x42, 0x2, 0x13, 0x1, 0x1c, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0xd, 0x4, 0x1, 0x3, 0xc, 0x11, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x9, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0xf, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x82, 0x5, 0x3, 0x19, 0xf, 0x1, 0x5, 0x2, 0x5, 0x4, 0x56, 0x2, 0x2, 0x2, 0x3, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x1c, 0x14, 0x30, 0x4, 0xa, 0x1, 0x73, 0x25, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x36, 0x4, 0x1, 0x13, 0x34, 0xc, 0x46, 0xa, 0xa, 0x6, 0x18, 0x3, 0x1, 0x1, 0x31, 0x2, 0x24, 0xc, 0x1d, 0x3, 0x41, 0xe, 0xb, 0x6, 0x1f, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x6, 0x17, 0x3, 0x49, 0x18, 0x3, 0x2, 0x10, 0x2, 0x5, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x1, 0x2, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x80, 0x8b, 0x6, 0x80, 0xda, 0x12, 0x40, 0x2, 0x36, 0x28, 0xa, 0x6, 0x10, 0x10, 0x10, 0x3, 0x2, 0x18, 0x3, 0x21, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7e, 0x13, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x80, 0x88, 0x1, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1, 0x1f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0x1, 0x20, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1e, 0x19, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x8, 0xa, 0x81, 0x46, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4b, 0x20, 0xa, 0x1, 0x8, 0x21, 0x1f, 0x16, 0x2a, 0x15, 0x1b, 0x17, 0x9, 0x47, 0x1f, 0x10, 0x9, 0x3c, 0x7, 0x1, 0xd, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0xa, 0x4, 0x4, 0x8, 0x24, 0x2, 0x1, 0x9, 0x45, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x23, 0x12, 0x1, 0x25, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x4b, 0x5, 0xa, 0x4, 0x4, 0x1e, 0x46, 0x1, 0x1, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x9, 0x17, 0x6, 0x22, 0x41, 0x3, 0x1, 0xb, 0xa, 0x26, 0x39, 0x7, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0xa, 0x6, 0x7, 0x80, 0xb9, 0x3b, 0x65, 0x4a, 0x15, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x9, 0xc, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0x8, 0x1, 0x2, 0x1b, 0x3f, 0x8, 0x1, 0x8, 0x4a, 0x3, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x9, 0xf, 0xa, 0x18, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x5, 0xd, 0xa, 0x56, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x10, 0x16, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x6, 0x4f, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x5, 0xb, 0x37, 0x9, 0x4, 0xc, 0xa, 0x9, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x2, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x3, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x1e, 0x5, 0x3, 0x6, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x81, 0xbb, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x1, 0x81, 0x41, 0x1f, 0x11, 0x3a, 0x81, 0xd6, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0xb, 0x7, 0x29, 0x4c, 0x4, 0xa, 0x84, 0xa6, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x8d, 0x34, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdd, 0x50, 0x80, 0xf0]; +_T XID_Continue = [0x30, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x1, 0x1, 0x2, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x6, 0x5, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x1, 0x5, 0x2, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x8, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x4a, 0x4, 0x66, 0x1, 0x8, 0x2, 0xa, 0x1, 0x13, 0x2, 0x1, 0x10, 0x3b, 0x2, 0x65, 0xe, 0x36, 0x4, 0x1, 0x2, 0x1, 0x2, 0x2e, 0x12, 0x1c, 0x4, 0xb, 0x5, 0x18, 0x1, 0x6, 0x9, 0x4a, 0x1, 0x80, 0x81, 0x2, 0xa, 0x1, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0xc, 0xa, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x10, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xa, 0x9, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0xa, 0x10, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x10, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x5, 0x5, 0x4, 0x7, 0x5, 0x2, 0xa, 0xa, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x2, 0xd, 0x3a, 0x5, 0xf, 0x1, 0xa, 0x27, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x1, 0x17, 0x2, 0x6, 0xa, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0xa, 0x1, 0x24, 0x4, 0x14, 0x1, 0x12, 0x1, 0x24, 0x9, 0x1, 0x39, 0x4a, 0x6, 0x4e, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x3, 0x9, 0x9, 0xe, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x16, 0x9, 0x16, 0xb, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x54, 0x3, 0x1, 0x4, 0x2, 0x2, 0xa, 0x21, 0x3, 0x1, 0xb, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0xa, 0x28, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x25, 0x1c, 0x4, 0x3f, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0xd, 0x1, 0x8, 0xe, 0x1, 0x10, 0x31, 0x4d, 0x3, 0xa, 0x11, 0x9, 0xc, 0x74, 0xc, 0x38, 0x8, 0xa, 0x3, 0x31, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x10, 0x3, 0x1, 0x27, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0xf, 0x2, 0x31, 0x2, 0x13, 0x1, 0x1c, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0xd, 0x4, 0x1, 0x3, 0xc, 0x11, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x9, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0xf, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x82, 0x5, 0x3, 0x19, 0xf, 0x1, 0x5, 0x2, 0x5, 0x4, 0x56, 0x2, 0x2, 0x2, 0x3, 0x1, 0x5f, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x1c, 0x14, 0x30, 0x4, 0xa, 0x1, 0x73, 0x25, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x36, 0x4, 0x1, 0x13, 0x34, 0xc, 0x46, 0xa, 0xa, 0x6, 0x18, 0x3, 0x1, 0x1, 0x31, 0x2, 0x24, 0xc, 0x1d, 0x3, 0x41, 0xe, 0xb, 0x6, 0x1f, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x6, 0x17, 0x3, 0x49, 0x18, 0x3, 0x2, 0x10, 0x2, 0x5, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x1, 0x2, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x80, 0x8b, 0x6, 0x80, 0xda, 0x12, 0x40, 0x2, 0x36, 0x28, 0xa, 0x6, 0x10, 0x10, 0x10, 0x3, 0x2, 0x18, 0x3, 0x21, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7e, 0x13, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0xa, 0x5a, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x80, 0x88, 0x1, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1, 0x1f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0x1, 0x20, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1e, 0x19, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x8, 0xa, 0x81, 0x46, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4b, 0x20, 0xa, 0x1, 0x8, 0x21, 0x1f, 0x16, 0x2a, 0x15, 0x1b, 0x17, 0x9, 0x47, 0x1f, 0x10, 0x9, 0x3c, 0x7, 0x1, 0xd, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0xa, 0x4, 0x4, 0x8, 0x24, 0x2, 0x1, 0x9, 0x45, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x23, 0x12, 0x1, 0x25, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x4b, 0x5, 0xa, 0x4, 0x4, 0x1e, 0x46, 0x1, 0x1, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x9, 0x17, 0x6, 0x22, 0x41, 0x3, 0x1, 0xb, 0xa, 0x26, 0x39, 0x7, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0xa, 0x6, 0x7, 0x80, 0xb9, 0x3b, 0x65, 0x4a, 0x15, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x9, 0xc, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0x8, 0x1, 0x2, 0x1b, 0x3f, 0x8, 0x1, 0x8, 0x4a, 0x3, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x9, 0xf, 0xa, 0x18, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x5, 0xd, 0xa, 0x56, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x10, 0x16, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x6, 0x4f, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x5, 0xb, 0x37, 0x9, 0x4, 0xc, 0xa, 0x9, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x2, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x3, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x1e, 0x5, 0x3, 0x6, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x81, 0xbb, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x1, 0x81, 0x41, 0x1f, 0x11, 0x3a, 0x81, 0xd6, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0xb, 0x7, 0x29, 0x4c, 0x4, 0xa, 0x84, 0xa6, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x8d, 0x34, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdd, 0x50, 0x80, 0xf0]; _T Cc = [0x0, 0x20, 0x5f, 0x21]; _T Regional_Indicator = [0xa1, 0xf1, 0xe6, 0x1a]; _T Sc = [0x24, 0x1, 0x7d, 0x4, 0x84, 0xe9, 0x1, 0x7b, 0x1, 0x81, 0xf2, 0x2, 0x81, 0xf2, 0x2, 0x7, 0x1, 0x80, 0xf5, 0x1, 0x81, 0x7, 0x1, 0x82, 0x45, 0x1, 0x89, 0x9b, 0x1, 0x88, 0xc4, 0x21, 0xa0, 0x87, 0x77, 0x1, 0xa0, 0x55, 0xc3, 0x1, 0x6c, 0x1, 0x80, 0x9a, 0x1, 0x80, 0xdb, 0x2, 0x3, 0x2, 0x9f, 0xf6, 0x4, 0xa0, 0xc3, 0x1e, 0x1, 0x89, 0xb0, 0x1]; -_T Pe = [0x29, 0x1, 0x33, 0x1, 0x1f, 0x1, 0x8e, 0xbd, 0x1, 0x1, 0x1, 0x87, 0x5e, 0x1, 0x89, 0xa9, 0x1, 0x37, 0x1, 0xf, 0x1, 0x82, 0x7a, 0x1, 0x1, 0x1, 0x1e, 0x1, 0x84, 0x3e, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x50, 0x1, 0x20, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x94, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x40, 0x1, 0x1, 0x1, 0x21, 0x1, 0x84, 0x25, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2c, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0xac, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0xa0, 0xcd, 0x1e, 0x1, 0x80, 0xd9, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x11, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0xaa, 0x1, 0x33, 0x1, 0x1f, 0x1, 0x2, 0x1, 0x2, 0x1]; +_T IDS_Unary_Operator = [0xa0, 0x2f, 0xfe, 0x2]; _T Pf = [0x80, 0xbb, 0x1, 0x9f, 0x5d, 0x1, 0x3, 0x1, 0x1c, 0x1, 0x8d, 0xc8, 0x1, 0x1, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x3, 0x1]; +_T Pe = [0x29, 0x1, 0x33, 0x1, 0x1f, 0x1, 0x8e, 0xbd, 0x1, 0x1, 0x1, 0x87, 0x5e, 0x1, 0x89, 0xa9, 0x1, 0x37, 0x1, 0xf, 0x1, 0x82, 0x7a, 0x1, 0x1, 0x1, 0x1e, 0x1, 0x84, 0x3e, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x50, 0x1, 0x20, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x94, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x40, 0x1, 0x1, 0x1, 0x21, 0x1, 0x84, 0x25, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2c, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0xac, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0xa0, 0xcd, 0x1e, 0x1, 0x80, 0xd9, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x11, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0xaa, 0x1, 0x33, 0x1, 0x1f, 0x1, 0x2, 0x1, 0x2, 0x1]; _T Other_Uppercase = [0xa0, 0x21, 0x60, 0x10, 0x83, 0x46, 0x1a, 0xa1, 0xcc, 0x60, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; -_T Cn = [0x83, 0x78, 0x2, 0x6, 0x4, 0x7, 0x1, 0x1, 0x1, 0x14, 0x1, 0x81, 0x8d, 0x1, 0x26, 0x2, 0x32, 0x2, 0x3, 0x1, 0x37, 0x8, 0x1b, 0x4, 0x6, 0xb, 0x81, 0xe, 0x1, 0x3c, 0x2, 0x65, 0xe, 0x3b, 0x2, 0x31, 0x2, 0xf, 0x1, 0x1c, 0x2, 0x1, 0x1, 0xb, 0x5, 0x1f, 0x1, 0x2, 0x6, 0x80, 0xec, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0x19, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x11, 0xa, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xc, 0x7, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0x12, 0xa, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0x15, 0x5, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x7, 0x16, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x6, 0x4, 0x10, 0x2, 0x1a, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x3, 0xc, 0x3a, 0x4, 0x1d, 0x25, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x48, 0x1, 0x24, 0x4, 0x27, 0x1, 0x24, 0x1, 0xf, 0x1, 0xd, 0x25, 0x80, 0xc6, 0x1, 0x1, 0x5, 0x1, 0x2, 0x81, 0x79, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x20, 0x3, 0x1a, 0x6, 0x56, 0x2, 0x6, 0x2, 0x82, 0x9d, 0x3, 0x59, 0x7, 0x16, 0x9, 0x18, 0x9, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x5e, 0x2, 0xa, 0x6, 0xa, 0x6, 0x1a, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0x4, 0x1, 0x3, 0x2a, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x3, 0x3e, 0x2, 0x41, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0x6, 0xe, 0x2, 0x1f, 0x31, 0x4d, 0x3, 0x2f, 0x1, 0x74, 0x8, 0x3c, 0x3, 0xf, 0x3, 0x3c, 0x7, 0x2b, 0x2, 0xb, 0x8, 0x2b, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0xf, 0x1, 0xe, 0x2, 0x6, 0x1, 0x13, 0x2, 0x3, 0x1, 0x9, 0x1, 0x65, 0x1, 0xc, 0x2, 0x1b, 0x1, 0xd, 0x3, 0x21, 0xf, 0x21, 0xf, 0x80, 0x8c, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x87, 0x14, 0x2, 0x20, 0x1, 0x81, 0x5d, 0x5, 0x2d, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x2, 0xe, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7e, 0x22, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0xc, 0x4, 0x40, 0x1, 0x56, 0x2, 0x67, 0x5, 0x2b, 0x1, 0x5e, 0x1, 0x54, 0xc, 0x2f, 0x1, 0xa0, 0x72, 0x6d, 0x3, 0x37, 0x9, 0x81, 0x5c, 0x14, 0x80, 0xb8, 0x8, 0x80, 0xcb, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x3b, 0x3, 0xa, 0x6, 0x38, 0x8, 0x46, 0x8, 0xc, 0x6, 0x74, 0xb, 0x1e, 0x3, 0x4e, 0x1, 0xb, 0x4, 0x21, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x2, 0x67, 0x18, 0x1c, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x3c, 0x4, 0x7e, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0x4, 0xa0, 0x22, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1a, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7d, 0x10, 0x81, 0xbd, 0x2, 0x36, 0x7, 0x1, 0x20, 0x2a, 0x6, 0x33, 0x1, 0x13, 0x1, 0x4, 0x4, 0x5, 0x1, 0x80, 0x87, 0x2, 0x1, 0x1, 0x80, 0xbe, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x3, 0x7, 0x1, 0x7, 0xa, 0x5, 0x2, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x5, 0x3, 0x4, 0x2d, 0x3, 0x58, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2e, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1c, 0x4, 0x24, 0x9, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x1, 0x25, 0x4, 0xe, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xb, 0xc, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0x1, 0x48, 0x8, 0x9, 0x30, 0x13, 0x1, 0x2, 0x5, 0x21, 0x3, 0x1b, 0x5, 0x1, 0x40, 0x38, 0x4, 0x14, 0x2, 0x32, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0xa, 0x7, 0x9, 0x7, 0x40, 0x20, 0x27, 0x4, 0xc, 0x9, 0x36, 0x3, 0x1d, 0x2, 0x1b, 0x5, 0x1a, 0x7, 0x4, 0xc, 0x7, 0x50, 0x49, 0x37, 0x33, 0xd, 0x33, 0x7, 0x2e, 0x8, 0xa, 0x81, 0x26, 0x1f, 0x1, 0x2a, 0x1, 0x3, 0x2, 0x2, 0x4b, 0x2b, 0x8, 0x2a, 0x16, 0x1a, 0x26, 0x1c, 0x14, 0x17, 0x9, 0x4e, 0x4, 0x24, 0x9, 0x44, 0xa, 0x1, 0x2, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0x12, 0x8, 0x27, 0x9, 0x60, 0x1, 0x14, 0xb, 0x12, 0x1, 0x2f, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb, 0x6, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x5c, 0x1, 0x5, 0x1e, 0x48, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x26, 0x22, 0x45, 0xb, 0xa, 0x6, 0xd, 0x13, 0x3a, 0x6, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0x17, 0x80, 0xb9, 0x3c, 0x64, 0x53, 0xc, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0xc, 0x9, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0xb, 0x1b, 0x48, 0x8, 0x53, 0xd, 0x49, 0x7, 0xa, 0x80, 0xf6, 0x9, 0x1, 0x2d, 0x1, 0xe, 0xa, 0x1d, 0x3, 0x20, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x19, 0x7, 0x11, 0x1, 0x29, 0x3, 0x1c, 0x56, 0x1, 0xf, 0x32, 0xd, 0x83, 0x9b, 0x66, 0x6f, 0x1, 0x5, 0xb, 0x80, 0xc4, 0x8a, 0x4c, 0x63, 0xd, 0x84, 0x56, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x4, 0x51, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x6, 0xa, 0x46, 0xa, 0xa, 0x1, 0x7, 0x1, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x5b, 0x65, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x5, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x2, 0x8, 0x92, 0x5c, 0x2e, 0x2, 0x17, 0x9, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x80, 0xc2, 0x15, 0x46, 0x7a, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x82, 0xbe, 0xf, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x2, 0x81, 0x40, 0x1f, 0x11, 0x3a, 0x5, 0x1, 0x81, 0xd0, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x2, 0x10, 0x29, 0x4c, 0x4, 0xa, 0x4, 0x2, 0x83, 0x11, 0x44, 0x4c, 0x3d, 0x80, 0xc2, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2, 0x81, 0xe, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdc, 0x51, 0x1, 0x1e, 0x60, 0x80, 0x80, 0x80, 0xf0, 0xa0, 0xfe, 0x10, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe]; +_T Cn = [0x83, 0x78, 0x2, 0x6, 0x4, 0x7, 0x1, 0x1, 0x1, 0x14, 0x1, 0x81, 0x8d, 0x1, 0x26, 0x2, 0x32, 0x2, 0x3, 0x1, 0x37, 0x8, 0x1b, 0x4, 0x6, 0xb, 0x81, 0xe, 0x1, 0x3c, 0x2, 0x65, 0xe, 0x3b, 0x2, 0x31, 0x2, 0xf, 0x1, 0x1c, 0x2, 0x1, 0x1, 0xb, 0x5, 0x1f, 0x1, 0x2, 0x6, 0x80, 0xec, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0x19, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x11, 0xa, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xc, 0x7, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0x12, 0xa, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0x15, 0x5, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x7, 0x16, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x6, 0x4, 0x10, 0x2, 0x1a, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x3, 0xc, 0x3a, 0x4, 0x1d, 0x25, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x48, 0x1, 0x24, 0x4, 0x27, 0x1, 0x24, 0x1, 0xf, 0x1, 0xd, 0x25, 0x80, 0xc6, 0x1, 0x1, 0x5, 0x1, 0x2, 0x81, 0x79, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x20, 0x3, 0x1a, 0x6, 0x56, 0x2, 0x6, 0x2, 0x82, 0x9d, 0x3, 0x59, 0x7, 0x16, 0x9, 0x18, 0x9, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x5e, 0x2, 0xa, 0x6, 0xa, 0x6, 0x1a, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0x4, 0x1, 0x3, 0x2a, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x3, 0x3e, 0x2, 0x41, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0x6, 0xe, 0x2, 0x1f, 0x31, 0x4d, 0x3, 0x2f, 0x1, 0x74, 0x8, 0x3c, 0x3, 0xf, 0x3, 0x3c, 0x7, 0x2b, 0x2, 0xb, 0x8, 0x2b, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0xf, 0x1, 0xe, 0x2, 0x6, 0x1, 0x13, 0x2, 0x3, 0x1, 0x9, 0x1, 0x65, 0x1, 0xc, 0x2, 0x1b, 0x1, 0xd, 0x3, 0x21, 0xf, 0x21, 0xf, 0x80, 0x8c, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x87, 0x14, 0x2, 0x20, 0x1, 0x81, 0x5d, 0x5, 0x2d, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x2, 0xe, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7e, 0x22, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0x50, 0x1, 0x56, 0x2, 0x67, 0x5, 0x2b, 0x1, 0x5e, 0x1, 0x54, 0xb, 0x30, 0x1, 0xa0, 0x72, 0x6d, 0x3, 0x37, 0x9, 0x81, 0x5c, 0x14, 0x80, 0xb8, 0x8, 0x80, 0xcb, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x3b, 0x3, 0xa, 0x6, 0x38, 0x8, 0x46, 0x8, 0xc, 0x6, 0x74, 0xb, 0x1e, 0x3, 0x4e, 0x1, 0xb, 0x4, 0x21, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x2, 0x67, 0x18, 0x1c, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x3c, 0x4, 0x7e, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0x4, 0xa0, 0x22, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1a, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7d, 0x10, 0x81, 0xbd, 0x2, 0x36, 0x7, 0x1, 0x20, 0x2a, 0x6, 0x33, 0x1, 0x13, 0x1, 0x4, 0x4, 0x5, 0x1, 0x80, 0x87, 0x2, 0x1, 0x1, 0x80, 0xbe, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x3, 0x7, 0x1, 0x7, 0xa, 0x5, 0x2, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x5, 0x3, 0x4, 0x2d, 0x3, 0x58, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2e, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1c, 0x4, 0x24, 0x9, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x1, 0x25, 0x4, 0xe, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xb, 0xc, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0x1, 0x48, 0x8, 0x9, 0x30, 0x13, 0x1, 0x2, 0x5, 0x21, 0x3, 0x1b, 0x5, 0x1, 0x40, 0x38, 0x4, 0x14, 0x2, 0x32, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0xa, 0x7, 0x9, 0x7, 0x40, 0x20, 0x27, 0x4, 0xc, 0x9, 0x36, 0x3, 0x1d, 0x2, 0x1b, 0x5, 0x1a, 0x7, 0x4, 0xc, 0x7, 0x50, 0x49, 0x37, 0x33, 0xd, 0x33, 0x7, 0x2e, 0x8, 0xa, 0x81, 0x26, 0x1f, 0x1, 0x2a, 0x1, 0x3, 0x2, 0x2, 0x4b, 0x2b, 0x8, 0x2a, 0x16, 0x1a, 0x26, 0x1c, 0x14, 0x17, 0x9, 0x4e, 0x4, 0x24, 0x9, 0x44, 0xa, 0x1, 0x2, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0x12, 0x8, 0x27, 0x9, 0x60, 0x1, 0x14, 0xb, 0x12, 0x1, 0x2f, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb, 0x6, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x5c, 0x1, 0x5, 0x1e, 0x48, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x26, 0x22, 0x45, 0xb, 0xa, 0x6, 0xd, 0x13, 0x3a, 0x6, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0x17, 0x80, 0xb9, 0x3c, 0x64, 0x53, 0xc, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0xc, 0x9, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0xb, 0x1b, 0x48, 0x8, 0x53, 0xd, 0x49, 0x7, 0xa, 0x80, 0xf6, 0x9, 0x1, 0x2d, 0x1, 0xe, 0xa, 0x1d, 0x3, 0x20, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x19, 0x7, 0x11, 0x1, 0x29, 0x3, 0x1c, 0x56, 0x1, 0xf, 0x32, 0xd, 0x83, 0x9b, 0x66, 0x6f, 0x1, 0x5, 0xb, 0x80, 0xc4, 0x8a, 0x4c, 0x63, 0xd, 0x84, 0x56, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x4, 0x51, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x6, 0xa, 0x46, 0xa, 0xa, 0x1, 0x7, 0x1, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x5b, 0x65, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x5, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x2, 0x8, 0x92, 0x5c, 0x2e, 0x2, 0x17, 0x9, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x80, 0xc2, 0x15, 0x46, 0x7a, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x82, 0xbe, 0xf, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x2, 0x81, 0x40, 0x1f, 0x11, 0x3a, 0x5, 0x1, 0x81, 0xd0, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x2, 0x10, 0x29, 0x4c, 0x4, 0xa, 0x4, 0x2, 0x83, 0x11, 0x44, 0x4c, 0x3d, 0x80, 0xc2, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2, 0x81, 0xe, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdc, 0x51, 0x1, 0x1e, 0x60, 0x80, 0x80, 0x80, 0xf0, 0xa0, 0xfe, 0x10, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe]; _T Hyphen = [0x2d, 0x1, 0x7f, 0x1, 0x84, 0xdc, 0x1, 0x92, 0x7b, 0x1, 0x88, 0x9, 0x2, 0x8e, 0x5, 0x1, 0x82, 0xe3, 0x1, 0xa0, 0xcd, 0x67, 0x1, 0x80, 0xa9, 0x1, 0x57, 0x1]; _T Other_Math = [0x5e, 0x1, 0x83, 0x71, 0x3, 0x2, 0x1, 0x1a, 0x2, 0x2, 0x2, 0x9c, 0x20, 0x1, 0x1b, 0x3, 0xb, 0x1, 0x20, 0x4, 0x18, 0x2, 0xe, 0x2, 0x41, 0xd, 0x4, 0x1, 0x3, 0x2, 0x4, 0x5, 0x12, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x3, 0x5, 0x6, 0x1, 0x3, 0x2, 0x2, 0x2, 0x1, 0x3, 0x1, 0x6, 0x3, 0x4, 0x5, 0x5, 0x4b, 0x5, 0x2, 0x4, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x5, 0x2, 0x2, 0x4, 0x2, 0x4, 0x12, 0x2, 0x2, 0x1, 0x1, 0x1, 0x7, 0x1, 0x1, 0x6, 0x2, 0x81, 0x22, 0x4, 0x80, 0xa8, 0x2, 0x1, 0x1, 0x18, 0x1, 0x11, 0x1, 0x81, 0xbd, 0x2, 0xc, 0x9, 0x5, 0x5, 0x5, 0x2, 0x2, 0x2, 0x3, 0x5, 0xe, 0x1, 0x1, 0x1, 0x2, 0x6, 0x18, 0x2, 0x39, 0x1, 0x1, 0x1, 0x1d, 0x4, 0x9, 0x2, 0x81, 0x56, 0x2, 0x1f, 0xa, 0x81, 0x93, 0x16, 0x3f, 0x4, 0x20, 0x2, 0xa0, 0xd4, 0x63, 0x1, 0x1, 0x1, 0x4, 0x1, 0x80, 0xd3, 0x1, 0x1, 0x1, 0xa0, 0xd4, 0xc1, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x96, 0x0, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11]; _T Ps = [0x28, 0x1, 0x32, 0x1, 0x1f, 0x1, 0x8e, 0xbe, 0x1, 0x1, 0x1, 0x87, 0x5e, 0x1, 0x89, 0x7e, 0x1, 0x3, 0x1, 0x26, 0x1, 0x37, 0x1, 0xf, 0x1, 0x82, 0x7a, 0x1, 0x1, 0x1, 0x1e, 0x1, 0x84, 0x3e, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x50, 0x1, 0x20, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x94, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x40, 0x1, 0x1, 0x1, 0x21, 0x1, 0x84, 0x25, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x19, 0x1, 0x12, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0xac, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0xa0, 0xcd, 0x21, 0x1, 0x80, 0xd7, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x11, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0xaa, 0x1, 0x32, 0x1, 0x1f, 0x1, 0x3, 0x1, 0x2, 0x1]; _T Zs = [0x20, 0x1, 0x7f, 0x1, 0x95, 0xdf, 0x1, 0x89, 0x7f, 0xb, 0x24, 0x1, 0x2f, 0x1, 0x8f, 0xa0, 0x1]; -_T Alphabetic = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x56, 0x1, 0x2a, 0x5, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x27, 0xe, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x38, 0x1, 0x7, 0xe, 0x66, 0x1, 0x8, 0x4, 0x8, 0x4, 0x3, 0xa, 0x3, 0x2, 0x1, 0x10, 0x30, 0xd, 0x65, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x18, 0x2, 0x13, 0x13, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0xa, 0xc, 0x3, 0x7, 0x6, 0x4c, 0x1, 0x10, 0x1, 0x3, 0x4, 0xf, 0xd, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0xc, 0x2, 0xa, 0x1, 0x4, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x4, 0x5, 0x4, 0x2, 0x2, 0x2, 0x4, 0x1, 0x7, 0x4, 0x1, 0x1, 0x11, 0x6, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x9, 0x1, 0x3, 0x1, 0x2, 0x3, 0x1, 0xf, 0x4, 0x15, 0x4, 0x4, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x9, 0x2, 0x4, 0x2, 0x1, 0x5, 0xd, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x3, 0x3, 0x1, 0x6, 0x1, 0x28, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x8, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x1c, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x8, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0x6, 0x2, 0x1, 0x4, 0xd, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x29, 0x2, 0x8, 0x1, 0x3, 0x1, 0x3, 0x1, 0x1, 0x5, 0x4, 0x7, 0x5, 0x16, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x8, 0x6, 0x1, 0x1, 0x1, 0x8, 0x12, 0x2, 0xd, 0x3a, 0x5, 0x7, 0x6, 0x1, 0x33, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x13, 0x1, 0x3, 0x2, 0x5, 0x1, 0x1, 0x6, 0x1, 0xe, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x4, 0x13, 0x4, 0x10, 0x1, 0x24, 0x43, 0x37, 0x1, 0x1, 0x2, 0x5, 0x10, 0x40, 0xa, 0x4, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x14, 0xb, 0x15, 0xc, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x34, 0x2, 0x13, 0xe, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0x9, 0x17, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x1c, 0x4, 0x3f, 0x2, 0x14, 0x32, 0x1, 0x17, 0x2, 0xb, 0x3, 0x31, 0x34, 0x1, 0xf, 0x1, 0x8, 0x33, 0x2a, 0x2, 0x4, 0xa, 0x2c, 0x1, 0xb, 0xe, 0x37, 0x16, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x27, 0xe, 0xb, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0xb, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x83, 0x2d, 0x34, 0x87, 0x16, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x2f, 0x1, 0x81, 0xd5, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x6, 0x3, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x5, 0x8, 0x3, 0x71, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x14, 0x1, 0x21, 0x18, 0x34, 0xc, 0x44, 0x1, 0x1, 0x2c, 0x6, 0x3, 0x1, 0x1, 0x3, 0xa, 0x21, 0x5, 0x23, 0xd, 0x1d, 0x3, 0x33, 0x1, 0xc, 0xf, 0x1, 0x10, 0x10, 0xa, 0x5, 0x1, 0x37, 0x9, 0xe, 0x12, 0x17, 0x3, 0x45, 0x1, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0x10, 0x2, 0x4, 0xb, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x15, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x81, 0x58, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0x9, 0x46, 0x2b, 0x5, 0xa, 0x39, 0x9, 0x1, 0xd, 0x19, 0x17, 0x33, 0x11, 0x4, 0x8, 0x23, 0x3, 0x1, 0x9, 0x40, 0x1, 0x4, 0x9, 0x2, 0xa, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x22, 0x2, 0x1, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x39, 0x17, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x3, 0x1, 0x6, 0x1, 0x5, 0x7, 0x80, 0x9c, 0x42, 0x1, 0x3, 0x1, 0x4, 0x14, 0x3, 0x1e, 0x42, 0x2, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x36, 0x2, 0x7, 0x19, 0x6, 0x22, 0x3f, 0x1, 0x1, 0x3, 0x1, 0x3b, 0x36, 0x2, 0x1, 0x47, 0x1b, 0x2, 0xe, 0x15, 0x7, 0x80, 0xb9, 0x39, 0x67, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x2, 0x2, 0x4, 0x5d, 0x8, 0x2, 0x2e, 0x2, 0x6, 0x1, 0x1, 0x1, 0x2, 0x1b, 0x33, 0x2, 0xa, 0x11, 0x48, 0x5, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x7, 0x1, 0x1, 0x31, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x2, 0x2, 0x18, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x4, 0x1, 0x1, 0x81, 0x47, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x3, 0x6f, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x1, 0xc, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x4, 0x1, 0x97, 0x61, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x3, 0x1, 0x3, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x82, 0x74, 0x1a, 0x6, 0x1a, 0x6, 0x1a, 0x8e, 0x76, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T XID_Start = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x80, 0x81, 0x5, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x47, 0x1b, 0x4, 0x4, 0x2d, 0x2b, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0xf, 0x2, 0x7, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x16, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x17, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0x3a, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0xf, 0x10, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x1, 0xd, 0x7, 0x3a, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0xa, 0x1, 0x2, 0x5, 0x1, 0x1, 0x15, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x11, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x23, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x29, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x52, 0x1, 0x5d, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x26, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x6, 0x3, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x10, 0x1f, 0x2, 0x50, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x1c, 0x1, 0x10, 0x5, 0x1, 0xa, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x17, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0xb, 0x7, 0x3, 0xc, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x73, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x80, 0x8b, 0x6, 0x80, 0xda, 0x12, 0x40, 0x2, 0x36, 0x28, 0xa, 0x77, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7e, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x38, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x74, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x5, 0x1, 0x42, 0xd, 0x40, 0x2, 0x1, 0x1, 0x1c, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x97, 0x66, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x7, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T Alphabetic = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x56, 0x1, 0x2a, 0x5, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x27, 0xe, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x38, 0x1, 0x7, 0xe, 0x66, 0x1, 0x8, 0x4, 0x8, 0x4, 0x3, 0xa, 0x3, 0x2, 0x1, 0x10, 0x30, 0xd, 0x65, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x18, 0x2, 0x13, 0x13, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0xa, 0xc, 0x3, 0x7, 0x6, 0x4c, 0x1, 0x10, 0x1, 0x3, 0x4, 0xf, 0xd, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0xc, 0x2, 0xa, 0x1, 0x4, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x4, 0x5, 0x4, 0x2, 0x2, 0x2, 0x4, 0x1, 0x7, 0x4, 0x1, 0x1, 0x11, 0x6, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x9, 0x1, 0x3, 0x1, 0x2, 0x3, 0x1, 0xf, 0x4, 0x15, 0x4, 0x4, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x9, 0x2, 0x4, 0x2, 0x1, 0x5, 0xd, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x3, 0x3, 0x1, 0x6, 0x1, 0x28, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x8, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x1c, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x8, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0x6, 0x2, 0x1, 0x4, 0xd, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x29, 0x2, 0x8, 0x1, 0x3, 0x1, 0x3, 0x1, 0x1, 0x5, 0x4, 0x7, 0x5, 0x16, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x8, 0x6, 0x1, 0x1, 0x1, 0x8, 0x12, 0x2, 0xd, 0x3a, 0x5, 0x7, 0x6, 0x1, 0x33, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x13, 0x1, 0x3, 0x2, 0x5, 0x1, 0x1, 0x6, 0x1, 0xe, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x4, 0x13, 0x4, 0x10, 0x1, 0x24, 0x43, 0x37, 0x1, 0x1, 0x2, 0x5, 0x10, 0x40, 0xa, 0x4, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x14, 0xb, 0x15, 0xc, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x34, 0x2, 0x13, 0xe, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0x9, 0x17, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x1c, 0x4, 0x3f, 0x2, 0x14, 0x32, 0x1, 0x17, 0x2, 0xb, 0x3, 0x31, 0x34, 0x1, 0xf, 0x1, 0x8, 0x33, 0x2a, 0x2, 0x4, 0xa, 0x2c, 0x1, 0xb, 0xe, 0x37, 0x16, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x27, 0xe, 0xb, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0xb, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x83, 0x2d, 0x34, 0x87, 0x16, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x2f, 0x1, 0x81, 0xd5, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x6, 0x3, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x5, 0x8, 0x3, 0x71, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x14, 0x1, 0x21, 0x18, 0x34, 0xc, 0x44, 0x1, 0x1, 0x2c, 0x6, 0x3, 0x1, 0x1, 0x3, 0xa, 0x21, 0x5, 0x23, 0xd, 0x1d, 0x3, 0x33, 0x1, 0xc, 0xf, 0x1, 0x10, 0x10, 0xa, 0x5, 0x1, 0x37, 0x9, 0xe, 0x12, 0x17, 0x3, 0x45, 0x1, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0x10, 0x2, 0x4, 0xb, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x15, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x81, 0x58, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0x9, 0x46, 0x2b, 0x5, 0xa, 0x39, 0x9, 0x1, 0xd, 0x19, 0x17, 0x33, 0x11, 0x4, 0x8, 0x23, 0x3, 0x1, 0x9, 0x40, 0x1, 0x4, 0x9, 0x2, 0xa, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x22, 0x2, 0x1, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x39, 0x17, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x3, 0x1, 0x6, 0x1, 0x5, 0x7, 0x80, 0x9c, 0x42, 0x1, 0x3, 0x1, 0x4, 0x14, 0x3, 0x1e, 0x42, 0x2, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x36, 0x2, 0x7, 0x19, 0x6, 0x22, 0x3f, 0x1, 0x1, 0x3, 0x1, 0x3b, 0x36, 0x2, 0x1, 0x47, 0x1b, 0x2, 0xe, 0x15, 0x7, 0x80, 0xb9, 0x39, 0x67, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x2, 0x2, 0x4, 0x5d, 0x8, 0x2, 0x2e, 0x2, 0x6, 0x1, 0x1, 0x1, 0x2, 0x1b, 0x33, 0x2, 0xa, 0x11, 0x48, 0x5, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x7, 0x1, 0x1, 0x31, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x2, 0x2, 0x18, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x4, 0x1, 0x1, 0x81, 0x47, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x3, 0x6f, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x1, 0xc, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x4, 0x1, 0x97, 0x61, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x3, 0x1, 0x3, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x82, 0x74, 0x1a, 0x6, 0x1a, 0x6, 0x1a, 0x8e, 0x76, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T XID_Start = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x80, 0x81, 0x5, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x47, 0x1b, 0x4, 0x4, 0x2d, 0x2b, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0xf, 0x2, 0x7, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x16, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x17, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0x3a, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0xf, 0x10, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x1, 0xd, 0x7, 0x3a, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0xa, 0x1, 0x2, 0x5, 0x1, 0x1, 0x15, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x11, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x23, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x29, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x52, 0x1, 0x5d, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x26, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x6, 0x3, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x10, 0x1f, 0x2, 0x50, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x1c, 0x1, 0x10, 0x5, 0x1, 0xa, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x17, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0xb, 0x7, 0x3, 0xc, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x73, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x80, 0x8b, 0x6, 0x80, 0xda, 0x12, 0x40, 0x2, 0x36, 0x28, 0xa, 0x77, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7e, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x38, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x74, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x5, 0x1, 0x42, 0xd, 0x40, 0x2, 0x1, 0x1, 0x1c, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x97, 0x66, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x7, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; _T Grapheme_Link = [0x89, 0x4d, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x6d, 0x2, 0x10, 0x1, 0x7c, 0x1, 0x6f, 0x1, 0x7f, 0x1, 0x80, 0xc9, 0x1, 0x80, 0xb4, 0x2, 0x86, 0xd9, 0x2, 0x1e, 0x1, 0x80, 0x9d, 0x1, 0x82, 0x8d, 0x1, 0x80, 0xe3, 0x1, 0x65, 0x2, 0x46, 0x2, 0x91, 0x8b, 0x1, 0xa0, 0x7a, 0x86, 0x1, 0x25, 0x1, 0x80, 0x97, 0x1, 0x80, 0x8e, 0x1, 0x6c, 0x1, 0x81, 0x35, 0x1, 0x80, 0xf6, 0x1, 0xa0, 0x5e, 0x51, 0x1, 0x86, 0x6, 0x1, 0x29, 0x1, 0xe, 0x1, 0x39, 0x1, 0x79, 0x2, 0x80, 0x8b, 0x1, 0x74, 0x1, 0x80, 0xb4, 0x1, 0x62, 0x1, 0x80, 0xf4, 0x1, 0x7f, 0x1, 0x80, 0xfc, 0x1, 0x7f, 0x1, 0x76, 0x1, 0x74, 0x1, 0x81, 0xd, 0x1, 0x81, 0x3, 0x2, 0x80, 0xa1, 0x1, 0x53, 0x1, 0x12, 0x1, 0x51, 0x1, 0x81, 0xa5, 0x1, 0x81, 0x4, 0x2, 0x51, 0x1, 0x81, 0xa9, 0x2]; _T Dash = [0x2d, 0x1, 0x85, 0x5c, 0x1, 0x33, 0x1, 0x8e, 0x41, 0x1, 0x84, 0x5, 0x1, 0x88, 0x9, 0x6, 0x3d, 0x1, 0x27, 0x1, 0xf, 0x1, 0x81, 0x86, 0x1, 0x8c, 0x4, 0x1, 0x2, 0x1, 0x1f, 0x2, 0x4, 0x1, 0x1c, 0x1, 0x81, 0xbe, 0x1, 0x13, 0x1, 0x6f, 0x1, 0xa0, 0xcd, 0x90, 0x2, 0x25, 0x1, 0xa, 0x1, 0x80, 0xa9, 0x1, 0x8f, 0x9f, 0x1]; _T Nl = [0x96, 0xee, 0x3, 0x8a, 0x6f, 0x23, 0x2, 0x4, 0x8e, 0x7e, 0x1, 0x19, 0x9, 0xe, 0x3, 0xa0, 0x76, 0xab, 0xa, 0xa0, 0x5a, 0x50, 0x35, 0x81, 0xcc, 0x1, 0x8, 0x1, 0x80, 0x86, 0x5, 0xa0, 0x20, 0x2a, 0x6f]; _T IDS_Trinary_Operator = [0xa0, 0x2f, 0xf2, 0x2]; _T Terminal_Punctuation = [0x21, 0x1, 0xa, 0x1, 0x1, 0x1, 0xb, 0x2, 0x3, 0x1, 0x83, 0x3e, 0x1, 0x8, 0x1, 0x82, 0x1, 0x1, 0x39, 0x1, 0x48, 0x1, 0xe, 0x1, 0x1, 0x3, 0x80, 0xb4, 0x1, 0x2b, 0xb, 0x1, 0x1, 0x80, 0xeb, 0x2, 0x36, 0xf, 0x1f, 0x1, 0x81, 0x5, 0x2, 0x84, 0xf4, 0x2, 0x80, 0xac, 0x1, 0x4, 0x6, 0x81, 0x37, 0x2, 0x83, 0x15, 0x8, 0x83, 0x5, 0x1, 0x7c, 0x3, 0x47, 0x2, 0x80, 0x9d, 0x3, 0x3, 0x1, 0x27, 0x4, 0x2, 0x2, 0x81, 0x3a, 0x2, 0x81, 0x62, 0x4, 0x80, 0xae, 0x2, 0x1, 0x3, 0x1d, 0x2, 0x80, 0xbc, 0x5, 0x3e, 0x2, 0x83, 0xbc, 0x2, 0x9, 0x3, 0x8d, 0xe4, 0x1, 0xd, 0x1, 0x4, 0x1, 0xa, 0x1, 0x1, 0x2, 0x3, 0x2, 0x81, 0xac, 0x2, 0xa0, 0x74, 0xfb, 0x2, 0x81, 0xd, 0x3, 0x80, 0xe3, 0x5, 0x81, 0x7e, 0x2, 0x56, 0x2, 0x5f, 0x1, 0x80, 0x97, 0x3, 0x80, 0x93, 0x3, 0x7f, 0x1, 0x10, 0x2, 0x80, 0xf9, 0x1, 0xa0, 0x52, 0x64, 0x3, 0x1, 0x4, 0x80, 0xa9, 0x1, 0xa, 0x1, 0x1, 0x1, 0xb, 0x2, 0x3, 0x1, 0x41, 0x1, 0x2, 0x1, 0x84, 0x3a, 0x1, 0x30, 0x1, 0x84, 0x86, 0x1, 0x80, 0xc7, 0x1, 0x81, 0x36, 0x2, 0x80, 0x98, 0x6, 0x44, 0x6, 0x59, 0x4, 0x83, 0xb8, 0x5, 0x2c, 0x4, 0x80, 0xbd, 0x7, 0x70, 0x4, 0x7f, 0x3, 0x80, 0x81, 0x2, 0x6, 0x1, 0x10, 0x2, 0x58, 0x5, 0x6c, 0x1, 0x81, 0xa1, 0x3, 0xc, 0x2, 0x81, 0x66, 0x4, 0x3, 0xf, 0x69, 0x2, 0x80, 0xf9, 0x3, 0x82, 0x5, 0x1, 0x1, 0x1, 0x80, 0xfb, 0x2, 0x57, 0x2, 0x4, 0x2, 0x81, 0x9e, 0x3, 0x2d, 0x1, 0x82, 0x85, 0x2, 0x4a, 0x2, 0x85, 0x2b, 0x5, 0xa0, 0x45, 0xf9, 0x2, 0x80, 0x85, 0x1, 0x41, 0x3, 0xa, 0x1, 0x83, 0x52, 0x2, 0xa0, 0x4e, 0x6, 0x1, 0x9d, 0xe7, 0x4]; _T Nd = [0x30, 0xa, 0x86, 0x26, 0xa, 0x80, 0x86, 0xa, 0x80, 0xc6, 0xa, 0x81, 0x9c, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x60, 0xa, 0x76, 0xa, 0x46, 0xa, 0x81, 0x16, 0xa, 0x46, 0xa, 0x87, 0x46, 0xa, 0x26, 0xa, 0x81, 0x2c, 0xa, 0x80, 0x80, 0xa, 0x80, 0xa6, 0xa, 0x6, 0xa, 0x80, 0xb6, 0xa, 0x56, 0xa, 0x80, 0x86, 0xa, 0x6, 0xa, 0xa0, 0x89, 0xc6, 0xa, 0x82, 0xa6, 0xa, 0x26, 0xa, 0x80, 0xc6, 0xa, 0x16, 0xa, 0x56, 0xa, 0x81, 0x96, 0xa, 0xa0, 0x53, 0x16, 0xa, 0x85, 0x86, 0xa, 0x88, 0x86, 0xa, 0x83, 0x2c, 0xa, 0x80, 0x80, 0xa, 0x3c, 0xa, 0x80, 0x90, 0xa, 0x81, 0x16, 0xa, 0x81, 0x56, 0xa, 0x76, 0xa, 0x81, 0x76, 0xa, 0x66, 0xa, 0x66, 0xa, 0x81, 0xa6, 0xa, 0x66, 0xa, 0x82, 0xf6, 0xa, 0x80, 0xf6, 0xa, 0x46, 0xa, 0x81, 0xa6, 0xa, 0xa0, 0x4b, 0x6, 0xa, 0x56, 0xa, 0x80, 0x86, 0xa, 0xa0, 0x6c, 0x74, 0x32, 0x89, 0x40, 0xa, 0x81, 0xa6, 0xa, 0x81, 0xf6, 0xa, 0x84, 0x56, 0xa, 0x92, 0x96, 0xa]; +_T ID_Compat_Math_Start = [0xa0, 0x22, 0x2, 0x1, 0x4, 0x1, 0x16, 0x1, 0xa1, 0xb4, 0xa2, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1]; _T Prepended_Concatenation_Mark = [0x86, 0x0, 0x6, 0x80, 0xd7, 0x1, 0x31, 0x1, 0x81, 0x80, 0x2, 0x50, 0x1, 0xa1, 0x7, 0xda, 0x1, 0xf, 0x1]; -_T Mc = [0x89, 0x3, 0x1, 0x37, 0x1, 0x2, 0x3, 0x8, 0x4, 0x1, 0x2, 0x32, 0x2, 0x3a, 0x3, 0x6, 0x2, 0x2, 0x2, 0xa, 0x1, 0x2b, 0x1, 0x3a, 0x3, 0x42, 0x1, 0x3a, 0x3, 0x8, 0x1, 0x1, 0x2, 0x35, 0x2, 0x3a, 0x1, 0x1, 0x1, 0x6, 0x2, 0x2, 0x2, 0xa, 0x1, 0x66, 0x2, 0x1, 0x2, 0x3, 0x3, 0x1, 0x3, 0xa, 0x1, 0x29, 0x3, 0x3d, 0x4, 0x3d, 0x2, 0x3a, 0x1, 0x1, 0x5, 0x2, 0x2, 0x1, 0x2, 0x9, 0x2, 0x1c, 0x1, 0xe, 0x2, 0x3a, 0x3, 0x5, 0x3, 0x1, 0x3, 0xa, 0x1, 0x2a, 0x2, 0x4b, 0x3, 0x6, 0x8, 0x12, 0x2, 0x81, 0x4a, 0x2, 0x3f, 0x1, 0x80, 0xab, 0x2, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x19, 0x2, 0xa, 0x3, 0x2, 0x7, 0x15, 0x2, 0x2, 0x6, 0x2, 0x1, 0xa, 0x3, 0x86, 0x78, 0x1, 0x1e, 0x1, 0x80, 0x81, 0x1, 0x7, 0x8, 0x1, 0x2, 0x81, 0x5a, 0x4, 0x2, 0x3, 0x4, 0x2, 0x1, 0x6, 0x80, 0xe0, 0x2, 0x3a, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x2, 0x8, 0x6, 0x80, 0x91, 0x1, 0x30, 0x1, 0x5, 0x1, 0x1, 0x5, 0x1, 0x2, 0x3d, 0x1, 0x1e, 0x1, 0x4, 0x2, 0x2, 0x1, 0x3c, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x2, 0x30, 0x8, 0x8, 0x2, 0x80, 0xab, 0x1, 0x15, 0x1, 0x93, 0x36, 0x2, 0xa0, 0x77, 0xf3, 0x2, 0x2, 0x1, 0x58, 0x2, 0x32, 0x10, 0x80, 0x8e, 0x2, 0x2f, 0x1, 0x30, 0x2, 0x4, 0x2, 0x2, 0x3, 0x6e, 0x2, 0x2, 0x2, 0x18, 0x1, 0x2d, 0x1, 0x1, 0x1, 0x6d, 0x1, 0x2, 0x2, 0x5, 0x1, 0x80, 0xed, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0xa0, 0x64, 0x13, 0x1, 0x1, 0x1, 0x7f, 0x1, 0x2d, 0x3, 0x4, 0x2, 0x73, 0x1, 0x18, 0x2, 0x3b, 0x1, 0x30, 0x3, 0x9, 0x2, 0xd, 0x1, 0x5d, 0x3, 0x3, 0x2, 0x1, 0x1, 0x80, 0xaa, 0x3, 0x1f, 0x2, 0x3a, 0x2, 0x1, 0x4, 0x2, 0x2, 0x2, 0x3, 0x9, 0x1, 0xa, 0x2, 0x80, 0xd1, 0x3, 0x8, 0x2, 0x3, 0x1, 0x6a, 0x3, 0x6, 0x1, 0x1, 0x4, 0x2, 0x1, 0x80, 0xed, 0x3, 0x6, 0x4, 0x2, 0x1, 0x71, 0x3, 0x8, 0x2, 0x1, 0x1, 0x6d, 0x1, 0x1, 0x2, 0x6, 0x1, 0x69, 0x2, 0x4, 0x1, 0x81, 0x5, 0x3, 0x9, 0x1, 0x80, 0xf7, 0x6, 0x1, 0x2, 0x4, 0x1, 0x2, 0x1, 0x1, 0x1, 0x80, 0x8e, 0x3, 0x8, 0x4, 0x4, 0x1, 0x54, 0x1, 0x1d, 0x2, 0x3e, 0x1, 0x81, 0x97, 0x1, 0xe, 0x1, 0x6a, 0x1, 0x7, 0x1, 0x2, 0x1, 0x80, 0xd5, 0x5, 0x4, 0x2, 0x1, 0x1, 0x81, 0x5e, 0x2, 0xc, 0x1, 0x30, 0x2, 0x8, 0x2, 0x1, 0x1, 0xa0, 0x50, 0xf, 0x37, 0x68, 0x2, 0xa0, 0x61, 0x73, 0x2, 0x6, 0x6]; _T ASCII_Hex_Digit = [0x30, 0xa, 0x7, 0x6, 0x1a, 0x6]; -_T Quotation_Mark = [0x22, 0x1, 0x4, 0x1, 0x80, 0x83, 0x1, 0xf, 0x1, 0x9f, 0x5c, 0x8, 0x19, 0x2, 0x8e, 0x7, 0x1, 0x81, 0xc9, 0x4, 0xd, 0x3, 0xa0, 0xce, 0x21, 0x4, 0x80, 0xbd, 0x1, 0x4, 0x1, 0x5a, 0x2]; +_T Mc = [0x89, 0x3, 0x1, 0x37, 0x1, 0x2, 0x3, 0x8, 0x4, 0x1, 0x2, 0x32, 0x2, 0x3a, 0x3, 0x6, 0x2, 0x2, 0x2, 0xa, 0x1, 0x2b, 0x1, 0x3a, 0x3, 0x42, 0x1, 0x3a, 0x3, 0x8, 0x1, 0x1, 0x2, 0x35, 0x2, 0x3a, 0x1, 0x1, 0x1, 0x6, 0x2, 0x2, 0x2, 0xa, 0x1, 0x66, 0x2, 0x1, 0x2, 0x3, 0x3, 0x1, 0x3, 0xa, 0x1, 0x29, 0x3, 0x3d, 0x4, 0x3d, 0x2, 0x3a, 0x1, 0x1, 0x5, 0x2, 0x2, 0x1, 0x2, 0x9, 0x2, 0x1c, 0x1, 0xe, 0x2, 0x3a, 0x3, 0x5, 0x3, 0x1, 0x3, 0xa, 0x1, 0x2a, 0x2, 0x4b, 0x3, 0x6, 0x8, 0x12, 0x2, 0x81, 0x4a, 0x2, 0x3f, 0x1, 0x80, 0xab, 0x2, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x19, 0x2, 0xa, 0x3, 0x2, 0x7, 0x15, 0x2, 0x2, 0x6, 0x2, 0x1, 0xa, 0x3, 0x86, 0x78, 0x1, 0x1e, 0x1, 0x80, 0x81, 0x1, 0x7, 0x8, 0x1, 0x2, 0x81, 0x5a, 0x4, 0x2, 0x3, 0x4, 0x2, 0x1, 0x6, 0x80, 0xe0, 0x2, 0x3a, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x2, 0x8, 0x6, 0x80, 0x91, 0x1, 0x30, 0x1, 0x5, 0x1, 0x1, 0x5, 0x1, 0x2, 0x3d, 0x1, 0x1e, 0x1, 0x4, 0x2, 0x2, 0x1, 0x3c, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x2, 0x30, 0x8, 0x8, 0x2, 0x80, 0xab, 0x1, 0x15, 0x1, 0x93, 0x36, 0x2, 0xa0, 0x77, 0xf3, 0x2, 0x2, 0x1, 0x58, 0x2, 0x32, 0x10, 0x80, 0x8e, 0x2, 0x2f, 0x1, 0x30, 0x2, 0x4, 0x2, 0x2, 0x3, 0x6e, 0x2, 0x2, 0x2, 0x18, 0x1, 0x2d, 0x1, 0x1, 0x1, 0x6d, 0x1, 0x2, 0x2, 0x5, 0x1, 0x80, 0xed, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0xa0, 0x64, 0x13, 0x1, 0x1, 0x1, 0x7f, 0x1, 0x2d, 0x3, 0x4, 0x2, 0x73, 0x1, 0x18, 0x2, 0x3b, 0x1, 0x30, 0x3, 0x9, 0x2, 0xd, 0x1, 0x5d, 0x3, 0x3, 0x2, 0x1, 0x1, 0x80, 0xaa, 0x3, 0x1f, 0x2, 0x3a, 0x2, 0x1, 0x4, 0x2, 0x2, 0x2, 0x3, 0x9, 0x1, 0xa, 0x2, 0x80, 0xd1, 0x3, 0x8, 0x2, 0x3, 0x1, 0x6a, 0x3, 0x6, 0x1, 0x1, 0x4, 0x2, 0x1, 0x80, 0xed, 0x3, 0x6, 0x4, 0x2, 0x1, 0x71, 0x3, 0x8, 0x2, 0x1, 0x1, 0x6d, 0x1, 0x1, 0x2, 0x6, 0x1, 0x69, 0x2, 0x4, 0x1, 0x81, 0x5, 0x3, 0x9, 0x1, 0x80, 0xf7, 0x6, 0x1, 0x2, 0x4, 0x1, 0x2, 0x1, 0x1, 0x1, 0x80, 0x8e, 0x3, 0x8, 0x4, 0x4, 0x1, 0x54, 0x1, 0x1d, 0x2, 0x3e, 0x1, 0x81, 0x97, 0x1, 0xe, 0x1, 0x6a, 0x1, 0x7, 0x1, 0x2, 0x1, 0x80, 0xd5, 0x5, 0x4, 0x2, 0x1, 0x1, 0x81, 0x5e, 0x2, 0xc, 0x1, 0x30, 0x2, 0x8, 0x2, 0x1, 0x1, 0xa0, 0x50, 0xf, 0x37, 0x68, 0x2, 0xa0, 0x61, 0x73, 0x2, 0x6, 0x6]; _T Radical = [0xa0, 0x2e, 0x80, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6]; +_T Quotation_Mark = [0x22, 0x1, 0x4, 0x1, 0x80, 0x83, 0x1, 0xf, 0x1, 0x9f, 0x5c, 0x8, 0x19, 0x2, 0x8e, 0x7, 0x1, 0x81, 0xc9, 0x4, 0xd, 0x3, 0xa0, 0xce, 0x21, 0x4, 0x80, 0xbd, 0x1, 0x4, 0x1, 0x5a, 0x2]; _T Other_Default_Ignorable_Code_Point = [0x83, 0x4f, 0x1, 0x8e, 0xf, 0x2, 0x86, 0x53, 0x2, 0x88, 0xaf, 0x1, 0x90, 0xfe, 0x1, 0xa0, 0xce, 0x3b, 0x1, 0x4f, 0x9, 0xad, 0x0, 0x7, 0x1, 0x1, 0x1e, 0x60, 0x80, 0x80, 0x80, 0xf0, 0x8e, 0x10]; _T Join_Control = [0xa0, 0x20, 0xc, 0x2]; -_T Grapheme_Base = [0x20, 0x5f, 0x21, 0xd, 0x1, 0x82, 0x52, 0x70, 0x8, 0x2, 0x6, 0x4, 0x7, 0x1, 0x1, 0x1, 0x14, 0x1, 0x80, 0xe0, 0x7, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x32, 0x2, 0x3, 0x2e, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x9, 0x1b, 0x4, 0x6, 0x11, 0xa, 0xb, 0x1, 0x1, 0x2e, 0x15, 0x10, 0x1, 0x65, 0x8, 0x1, 0x6, 0x2, 0x2, 0x1, 0x4, 0x20, 0x2, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0xe, 0x2b, 0x9, 0x7, 0x3, 0x18, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x7, 0xf, 0x1, 0x19, 0x5, 0x1, 0x1, 0xb, 0x5, 0x1f, 0x11, 0x2a, 0x39, 0x37, 0x1, 0x1, 0x1, 0x4, 0x8, 0x4, 0x1, 0x3, 0x7, 0xa, 0x2, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x1, 0x2, 0x6, 0x2, 0x2, 0x2, 0x1, 0x1, 0xd, 0x2, 0x1, 0x3, 0x4, 0x18, 0x5, 0x1, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x4, 0x3, 0x18, 0x4, 0x1, 0x1, 0x7, 0xa, 0x2, 0x3, 0x1, 0x1, 0xc, 0x1, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x4, 0x8, 0x1, 0x1, 0x2, 0x3, 0x1, 0xf, 0x2, 0x4, 0xc, 0x7, 0x1, 0x8, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x2, 0x1, 0x6, 0x2, 0x2, 0x2, 0xf, 0x2, 0x1, 0x3, 0x4, 0x12, 0xb, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x5, 0x1, 0x1, 0x2, 0x3, 0x3, 0x1, 0x3, 0x3, 0x1, 0x15, 0x15, 0x6, 0x3, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x3, 0x4, 0x13, 0x3, 0x2, 0x1, 0x2, 0x2, 0x4, 0xa, 0x7, 0xa, 0x1, 0xb, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x2, 0x1, 0x2, 0x11, 0x2, 0x1, 0x2, 0x4, 0xa, 0x1, 0x3, 0xe, 0xb, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x1, 0x2, 0x5, 0x3, 0x1, 0x3, 0x1, 0x2, 0x4, 0x3, 0x1, 0xa, 0x4, 0x1a, 0x2, 0x2, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x9, 0x2, 0x6, 0x7, 0x7, 0xa, 0x2, 0x3, 0xc, 0x30, 0x1, 0x2, 0xb, 0x8, 0x8, 0xd, 0x25, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x1, 0x1, 0x9, 0xa, 0x2, 0x4, 0x20, 0x18, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0xe, 0x1, 0x24, 0x12, 0x1, 0x5, 0x1, 0x2, 0x5, 0x31, 0x8, 0x1, 0x6, 0x1, 0xd, 0x25, 0x2d, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x2, 0x19, 0x2, 0x4, 0x3, 0x10, 0x4, 0xd, 0x1, 0x2, 0x2, 0x6, 0x1, 0xf, 0x1, 0x28, 0x1, 0x1, 0x5, 0x1, 0x2, 0x81, 0x79, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x5, 0x1d, 0x3, 0x1a, 0x6, 0x56, 0x2, 0x6, 0x2, 0x82, 0x9d, 0x3, 0x59, 0x7, 0x12, 0x3, 0x1, 0x9, 0x13, 0x2, 0x3, 0x9, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x2, 0x1, 0x7, 0x8, 0x1, 0x2, 0xb, 0x9, 0x3, 0xa, 0x6, 0xa, 0x6, 0xb, 0x5, 0xa, 0x6, 0x59, 0x7, 0x5, 0x2, 0x22, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x4, 0x4, 0x2, 0x3, 0x4, 0x2, 0x1, 0x6, 0x7, 0x1, 0x3, 0x2a, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x3, 0x39, 0x2, 0x2, 0x3, 0x38, 0x1, 0x1, 0x9, 0x1, 0x1, 0x2, 0x8, 0x6, 0xd, 0xa, 0x6, 0xa, 0x6, 0xe, 0x56, 0x30, 0x7, 0x1, 0x1, 0x5, 0x1, 0xa, 0x3, 0x1b, 0x9, 0xb, 0x3, 0x20, 0x4, 0x2, 0x2, 0x1, 0x3, 0x38, 0x1, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x2, 0x8, 0x30, 0x8, 0x2, 0x5, 0xf, 0x3, 0x3c, 0x7, 0x2b, 0x2, 0xb, 0xb, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0xf, 0x1, 0xe, 0x2, 0x6, 0x1, 0x13, 0x2, 0x3, 0x1, 0x9, 0x1, 0xb, 0x5, 0x18, 0x7, 0x31, 0x10, 0x2, 0x2, 0x1b, 0x1, 0xd, 0x3, 0x21, 0x3f, 0x80, 0x8c, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x87, 0x14, 0x2, 0x20, 0x1, 0x81, 0x58, 0x3, 0x2, 0x5, 0x2d, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x2, 0xf, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x21, 0x5e, 0x22, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0xc, 0x4, 0x2a, 0x6, 0x10, 0x1, 0x56, 0x4, 0x65, 0x5, 0x2b, 0x1, 0x5e, 0x1, 0x54, 0xc, 0x2f, 0x1, 0xa0, 0x72, 0x6d, 0x3, 0x37, 0x9, 0x81, 0x5c, 0x14, 0x2f, 0x4, 0x1, 0xa, 0x20, 0x2, 0x50, 0x2, 0x6, 0x8, 0x80, 0xcb, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x19, 0x2, 0x5, 0x4, 0xa, 0x6, 0x38, 0x8, 0x44, 0xa, 0xc, 0x18, 0xd, 0x1, 0x26, 0x8, 0x19, 0xb, 0x2, 0xb, 0x1e, 0x6, 0x30, 0x1, 0x2, 0x4, 0x2, 0x2, 0x10, 0x1, 0xb, 0x4, 0x7, 0x1, 0x19, 0x1, 0x29, 0x6, 0x2, 0x2, 0x2, 0xb, 0x3, 0x1, 0x8, 0x1, 0x1, 0x2, 0xa, 0x2, 0x20, 0x1, 0x33, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x11, 0x2, 0x8, 0xb, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x3c, 0x4, 0x75, 0x1, 0x2, 0x1, 0x4, 0x3, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0x18, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7d, 0x10, 0x81, 0xbd, 0x2, 0x36, 0x7, 0x1, 0x20, 0x10, 0x10, 0xa, 0x16, 0x23, 0x1, 0x13, 0x1, 0x4, 0x4, 0x5, 0x1, 0x80, 0x87, 0x4, 0x80, 0x9d, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x3, 0x7, 0x1, 0x7, 0xd, 0x2, 0x2, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x5, 0x3, 0x4, 0x2d, 0x3, 0x58, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2d, 0x80, 0x83, 0x1d, 0x3, 0x31, 0x10, 0x1b, 0x4, 0x24, 0x9, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x1, 0x25, 0x4, 0xe, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xb, 0xc, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0x1, 0x48, 0x8, 0x9, 0x30, 0x13, 0x1, 0x2, 0x5, 0x21, 0x3, 0x1b, 0x5, 0x1, 0x40, 0x38, 0x4, 0x14, 0x2, 0x2f, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0xa, 0x9, 0x7, 0x9, 0x7, 0x40, 0x20, 0x25, 0x6, 0xc, 0x9, 0x36, 0x3, 0x1d, 0x2, 0x1b, 0x5, 0x1a, 0x7, 0x4, 0xc, 0x7, 0x50, 0x49, 0x37, 0x33, 0xd, 0x33, 0x7, 0x2a, 0xc, 0xa, 0x81, 0x26, 0x1f, 0x1, 0x2a, 0x3, 0x1, 0x2, 0x2, 0x4e, 0x28, 0x8, 0x16, 0xb, 0x9, 0x16, 0x12, 0x4, 0x4, 0x26, 0x1c, 0x14, 0x17, 0x9, 0x1, 0x1, 0x36, 0xf, 0x7, 0x4, 0x1e, 0x1, 0x2, 0x2, 0x1, 0xc, 0x31, 0x4, 0x2, 0x2, 0x2, 0x1, 0x4, 0xe, 0x19, 0x7, 0xa, 0x9, 0x24, 0x5, 0x1, 0x9, 0x12, 0x8, 0x23, 0x1, 0x3, 0xb, 0x34, 0x9, 0xa, 0x4, 0x2, 0x1, 0x10, 0x1, 0x14, 0xb, 0x12, 0x1, 0x1c, 0x3, 0x2, 0x1, 0x1, 0x2, 0x6, 0x1, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb, 0x6, 0x2f, 0x1, 0x3, 0xd, 0xa, 0x8, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0xc, 0x7, 0x80, 0x9c, 0x38, 0x8, 0x2, 0x3, 0x1, 0x1, 0x15, 0x1, 0x1, 0x1, 0x3, 0x1e, 0x30, 0x1, 0x2, 0x6, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x2, 0x4, 0x8, 0xa, 0x80, 0xa6, 0x2f, 0x1, 0x2, 0x6, 0x4, 0x2, 0x1, 0x2, 0x1b, 0x24, 0x33, 0x8, 0x2, 0x1, 0x1, 0x2, 0x4, 0xb, 0xa, 0x6, 0xd, 0x13, 0x2b, 0x1, 0x1, 0x1, 0x2, 0x6, 0x1, 0x1, 0x2, 0x6, 0xa, 0x36, 0x1b, 0x5, 0x2, 0x4, 0x1, 0x9, 0x17, 0x80, 0xb9, 0x2f, 0x9, 0x1, 0x2, 0x1, 0x64, 0x53, 0xc, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0x1, 0x5, 0x1, 0x2, 0x4, 0x1, 0x1, 0x4, 0x1, 0x3, 0x9, 0xa, 0x46, 0x8, 0x2, 0x2a, 0x8, 0x4, 0x1, 0x4, 0x1b, 0x1, 0xa, 0x28, 0x6, 0x2, 0x4, 0x8, 0x9, 0x1, 0x6, 0x2, 0x3, 0x2e, 0xd, 0x1, 0x2, 0x9, 0xd, 0x49, 0x7, 0xa, 0x80, 0xf6, 0x9, 0x1, 0x26, 0xe, 0x1, 0x1, 0x6, 0xa, 0x1d, 0x3, 0x20, 0x19, 0x1, 0x7, 0x1, 0x2, 0x1, 0x4b, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x9, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x4, 0x2, 0x1, 0x1, 0x1, 0x1, 0x7, 0xa, 0x81, 0x36, 0x13, 0x2, 0x4, 0x9, 0xf, 0x1, 0x24, 0x8, 0x2, 0x1, 0x1, 0x1, 0x17, 0x56, 0x1, 0xf, 0x32, 0xd, 0x83, 0x9b, 0x66, 0x6f, 0x1, 0x5, 0xb, 0x80, 0xc4, 0x8a, 0x4c, 0x63, 0xd, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x4, 0x51, 0x1, 0xa, 0x6, 0x1e, 0x7, 0x1, 0xa, 0x30, 0x7, 0xf, 0xa, 0xa, 0x1, 0x7, 0x1, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x5b, 0x65, 0x4b, 0x5, 0x38, 0xb, 0xd, 0x40, 0x4, 0xc, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x2, 0x1, 0x2, 0x1, 0x92, 0xb0, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3c, 0x1, 0x1, 0x3, 0x4, 0x15, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x15, 0x42, 0x3, 0x1, 0x7a, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x82, 0x32, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x7, 0x84, 0x74, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x2, 0xa, 0x4, 0x2, 0x81, 0x40, 0x1e, 0x12, 0x2c, 0x4, 0xa, 0x5, 0x1, 0x81, 0xd0, 0x1c, 0x4, 0xa, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x2, 0x9, 0x30, 0x44, 0x7, 0x1, 0x4, 0xa, 0x4, 0x2, 0x83, 0x11, 0x44, 0x4c, 0x3d, 0x80, 0xc2, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2, 0x81, 0xe, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T Grapheme_Base = [0x20, 0x5f, 0x21, 0xd, 0x1, 0x82, 0x52, 0x70, 0x8, 0x2, 0x6, 0x4, 0x7, 0x1, 0x1, 0x1, 0x14, 0x1, 0x80, 0xe0, 0x7, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x32, 0x2, 0x3, 0x2e, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x9, 0x1b, 0x4, 0x6, 0x11, 0xa, 0xb, 0x1, 0x1, 0x2e, 0x15, 0x10, 0x1, 0x65, 0x8, 0x1, 0x6, 0x2, 0x2, 0x1, 0x4, 0x20, 0x2, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0xe, 0x2b, 0x9, 0x7, 0x3, 0x18, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x7, 0xf, 0x1, 0x19, 0x5, 0x1, 0x1, 0xb, 0x5, 0x1f, 0x11, 0x2a, 0x39, 0x37, 0x1, 0x1, 0x1, 0x4, 0x8, 0x4, 0x1, 0x3, 0x7, 0xa, 0x2, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x1, 0x2, 0x6, 0x2, 0x2, 0x2, 0x1, 0x1, 0xd, 0x2, 0x1, 0x3, 0x4, 0x18, 0x5, 0x1, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x4, 0x3, 0x18, 0x4, 0x1, 0x1, 0x7, 0xa, 0x2, 0x3, 0x1, 0x1, 0xc, 0x1, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x4, 0x8, 0x1, 0x1, 0x2, 0x3, 0x1, 0xf, 0x2, 0x4, 0xc, 0x7, 0x1, 0x8, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x2, 0x1, 0x6, 0x2, 0x2, 0x2, 0xf, 0x2, 0x1, 0x3, 0x4, 0x12, 0xb, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x5, 0x1, 0x1, 0x2, 0x3, 0x3, 0x1, 0x3, 0x3, 0x1, 0x15, 0x15, 0x6, 0x3, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x3, 0x4, 0x13, 0x3, 0x2, 0x1, 0x2, 0x2, 0x4, 0xa, 0x7, 0xa, 0x1, 0xb, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x2, 0x1, 0x2, 0x11, 0x2, 0x1, 0x2, 0x4, 0xa, 0x1, 0x3, 0xe, 0xb, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x1, 0x2, 0x5, 0x3, 0x1, 0x3, 0x1, 0x2, 0x4, 0x3, 0x1, 0xa, 0x4, 0x1a, 0x2, 0x2, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x9, 0x2, 0x6, 0x7, 0x7, 0xa, 0x2, 0x3, 0xc, 0x30, 0x1, 0x2, 0xb, 0x8, 0x8, 0xd, 0x25, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x1, 0x1, 0x9, 0xa, 0x2, 0x4, 0x20, 0x18, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0xe, 0x1, 0x24, 0x12, 0x1, 0x5, 0x1, 0x2, 0x5, 0x31, 0x8, 0x1, 0x6, 0x1, 0xd, 0x25, 0x2d, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x2, 0x19, 0x2, 0x4, 0x3, 0x10, 0x4, 0xd, 0x1, 0x2, 0x2, 0x6, 0x1, 0xf, 0x1, 0x28, 0x1, 0x1, 0x5, 0x1, 0x2, 0x81, 0x79, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x5, 0x1d, 0x3, 0x1a, 0x6, 0x56, 0x2, 0x6, 0x2, 0x82, 0x9d, 0x3, 0x59, 0x7, 0x12, 0x3, 0x1, 0x9, 0x13, 0x2, 0x3, 0x9, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x2, 0x1, 0x7, 0x8, 0x1, 0x2, 0xb, 0x9, 0x3, 0xa, 0x6, 0xa, 0x6, 0xb, 0x5, 0xa, 0x6, 0x59, 0x7, 0x5, 0x2, 0x22, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x4, 0x4, 0x2, 0x3, 0x4, 0x2, 0x1, 0x6, 0x7, 0x1, 0x3, 0x2a, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x3, 0x39, 0x2, 0x2, 0x3, 0x38, 0x1, 0x1, 0x9, 0x1, 0x1, 0x2, 0x8, 0x6, 0xd, 0xa, 0x6, 0xa, 0x6, 0xe, 0x56, 0x30, 0x7, 0x1, 0x1, 0x5, 0x1, 0xa, 0x3, 0x1b, 0x9, 0xb, 0x3, 0x20, 0x4, 0x2, 0x2, 0x1, 0x3, 0x38, 0x1, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x2, 0x8, 0x30, 0x8, 0x2, 0x5, 0xf, 0x3, 0x3c, 0x7, 0x2b, 0x2, 0xb, 0xb, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0xf, 0x1, 0xe, 0x2, 0x6, 0x1, 0x13, 0x2, 0x3, 0x1, 0x9, 0x1, 0xb, 0x5, 0x18, 0x7, 0x31, 0x10, 0x2, 0x2, 0x1b, 0x1, 0xd, 0x3, 0x21, 0x3f, 0x80, 0x8c, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x87, 0x14, 0x2, 0x20, 0x1, 0x81, 0x58, 0x3, 0x2, 0x5, 0x2d, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x2, 0xf, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x21, 0x5e, 0x22, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0x3a, 0x6, 0x10, 0x1, 0x56, 0x4, 0x65, 0x5, 0x2b, 0x1, 0x5e, 0x1, 0x54, 0xb, 0x30, 0x1, 0xa0, 0x72, 0x6d, 0x3, 0x37, 0x9, 0x81, 0x5c, 0x14, 0x2f, 0x4, 0x1, 0xa, 0x20, 0x2, 0x50, 0x2, 0x6, 0x8, 0x80, 0xcb, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x19, 0x2, 0x5, 0x4, 0xa, 0x6, 0x38, 0x8, 0x44, 0xa, 0xc, 0x18, 0xd, 0x1, 0x26, 0x8, 0x19, 0xb, 0x2, 0xb, 0x1e, 0x6, 0x30, 0x1, 0x2, 0x4, 0x2, 0x2, 0x10, 0x1, 0xb, 0x4, 0x7, 0x1, 0x19, 0x1, 0x29, 0x6, 0x2, 0x2, 0x2, 0xb, 0x3, 0x1, 0x8, 0x1, 0x1, 0x2, 0xa, 0x2, 0x20, 0x1, 0x33, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x11, 0x2, 0x8, 0xb, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x3c, 0x4, 0x75, 0x1, 0x2, 0x1, 0x4, 0x3, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0x18, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7d, 0x10, 0x81, 0xbd, 0x2, 0x36, 0x7, 0x1, 0x20, 0x10, 0x10, 0xa, 0x16, 0x23, 0x1, 0x13, 0x1, 0x4, 0x4, 0x5, 0x1, 0x80, 0x87, 0x4, 0x80, 0x9d, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x3, 0x7, 0x1, 0x7, 0xd, 0x2, 0x2, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x5, 0x3, 0x4, 0x2d, 0x3, 0x58, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2d, 0x80, 0x83, 0x1d, 0x3, 0x31, 0x10, 0x1b, 0x4, 0x24, 0x9, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x1, 0x25, 0x4, 0xe, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xb, 0xc, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0x1, 0x48, 0x8, 0x9, 0x30, 0x13, 0x1, 0x2, 0x5, 0x21, 0x3, 0x1b, 0x5, 0x1, 0x40, 0x38, 0x4, 0x14, 0x2, 0x2f, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0xa, 0x9, 0x7, 0x9, 0x7, 0x40, 0x20, 0x25, 0x6, 0xc, 0x9, 0x36, 0x3, 0x1d, 0x2, 0x1b, 0x5, 0x1a, 0x7, 0x4, 0xc, 0x7, 0x50, 0x49, 0x37, 0x33, 0xd, 0x33, 0x7, 0x2a, 0xc, 0xa, 0x81, 0x26, 0x1f, 0x1, 0x2a, 0x3, 0x1, 0x2, 0x2, 0x4e, 0x28, 0x8, 0x16, 0xb, 0x9, 0x16, 0x12, 0x4, 0x4, 0x26, 0x1c, 0x14, 0x17, 0x9, 0x1, 0x1, 0x36, 0xf, 0x7, 0x4, 0x1e, 0x1, 0x2, 0x2, 0x1, 0xc, 0x31, 0x4, 0x2, 0x2, 0x2, 0x1, 0x4, 0xe, 0x19, 0x7, 0xa, 0x9, 0x24, 0x5, 0x1, 0x9, 0x12, 0x8, 0x23, 0x1, 0x3, 0xb, 0x34, 0x9, 0xa, 0x4, 0x2, 0x1, 0x10, 0x1, 0x14, 0xb, 0x12, 0x1, 0x1c, 0x3, 0x2, 0x1, 0x1, 0x2, 0x6, 0x1, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb, 0x6, 0x2f, 0x1, 0x3, 0xd, 0xa, 0x8, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0xc, 0x7, 0x80, 0x9c, 0x38, 0x8, 0x2, 0x3, 0x1, 0x1, 0x15, 0x1, 0x1, 0x1, 0x3, 0x1e, 0x30, 0x1, 0x2, 0x6, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x2, 0x4, 0x8, 0xa, 0x80, 0xa6, 0x2f, 0x1, 0x2, 0x6, 0x4, 0x2, 0x1, 0x2, 0x1b, 0x24, 0x33, 0x8, 0x2, 0x1, 0x1, 0x2, 0x4, 0xb, 0xa, 0x6, 0xd, 0x13, 0x2b, 0x1, 0x1, 0x1, 0x2, 0x6, 0x1, 0x1, 0x2, 0x6, 0xa, 0x36, 0x1b, 0x5, 0x2, 0x4, 0x1, 0x9, 0x17, 0x80, 0xb9, 0x2f, 0x9, 0x1, 0x2, 0x1, 0x64, 0x53, 0xc, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0x1, 0x5, 0x1, 0x2, 0x4, 0x1, 0x1, 0x4, 0x1, 0x3, 0x9, 0xa, 0x46, 0x8, 0x2, 0x2a, 0x8, 0x4, 0x1, 0x4, 0x1b, 0x1, 0xa, 0x28, 0x6, 0x2, 0x4, 0x8, 0x9, 0x1, 0x6, 0x2, 0x3, 0x2e, 0xd, 0x1, 0x2, 0x9, 0xd, 0x49, 0x7, 0xa, 0x80, 0xf6, 0x9, 0x1, 0x26, 0xe, 0x1, 0x1, 0x6, 0xa, 0x1d, 0x3, 0x20, 0x19, 0x1, 0x7, 0x1, 0x2, 0x1, 0x4b, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x9, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x4, 0x2, 0x1, 0x1, 0x1, 0x1, 0x7, 0xa, 0x81, 0x36, 0x13, 0x2, 0x4, 0x9, 0xf, 0x1, 0x24, 0x8, 0x2, 0x1, 0x1, 0x1, 0x17, 0x56, 0x1, 0xf, 0x32, 0xd, 0x83, 0x9b, 0x66, 0x6f, 0x1, 0x5, 0xb, 0x80, 0xc4, 0x8a, 0x4c, 0x63, 0xd, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x4, 0x51, 0x1, 0xa, 0x6, 0x1e, 0x7, 0x1, 0xa, 0x30, 0x7, 0xf, 0xa, 0xa, 0x1, 0x7, 0x1, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x5b, 0x65, 0x4b, 0x5, 0x38, 0xb, 0xd, 0x40, 0x4, 0xc, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x2, 0x1, 0x2, 0x1, 0x92, 0xb0, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3c, 0x1, 0x1, 0x3, 0x4, 0x15, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x15, 0x42, 0x3, 0x1, 0x7a, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x82, 0x32, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x7, 0x84, 0x74, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x2, 0xa, 0x4, 0x2, 0x81, 0x40, 0x1e, 0x12, 0x2c, 0x4, 0xa, 0x5, 0x1, 0x81, 0xd0, 0x1c, 0x4, 0xa, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x2, 0x9, 0x30, 0x44, 0x7, 0x1, 0x4, 0xa, 0x4, 0x2, 0x83, 0x11, 0x44, 0x4c, 0x3d, 0x80, 0xc2, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2, 0x81, 0xe, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; _T Uppercase = [0x41, 0x1a, 0x65, 0x17, 0x1, 0x7, 0x21, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0x2, 0x4, 0x1, 0x2, 0x1, 0x3, 0x3, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x21, 0x1, 0x1, 0x1, 0x3, 0x1, 0x8, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x1, 0x11, 0x1, 0x9, 0x23, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x2, 0x1, 0x1, 0x2, 0x2, 0x33, 0x30, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x26, 0x8b, 0x49, 0x26, 0x1, 0x1, 0x5, 0x1, 0x82, 0xd2, 0x56, 0x88, 0x9a, 0x2b, 0x2, 0x3, 0x81, 0x40, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x8, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0x6, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x8, 0x48, 0x4, 0xc, 0x4, 0xc, 0x4, 0xc, 0x5, 0xb, 0x4, 0x81, 0x6, 0x1, 0x4, 0x1, 0x3, 0x3, 0x2, 0x3, 0x2, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x4, 0xa, 0x2, 0x5, 0x1, 0x1a, 0x10, 0x13, 0x1, 0x83, 0x32, 0x1a, 0x87, 0x30, 0x30, 0x30, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x2, 0x1, 0x8, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x1, 0x1, 0x1, 0x4, 0x1, 0xa0, 0x79, 0x4d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x87, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x6, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa0, 0x57, 0x2b, 0x1a, 0x84, 0xc5, 0x28, 0x80, 0x88, 0x24, 0x80, 0x9c, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x86, 0xea, 0x33, 0x8b, 0xed, 0x20, 0xa0, 0x55, 0x80, 0x20, 0xa0, 0x65, 0xa0, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0x8, 0x1a, 0x1a, 0x1a, 0x2, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1b, 0x2, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1b, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1e, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x1, 0x91, 0x35, 0x22, 0x88, 0xe, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; _T Zl = [0xa0, 0x20, 0x28, 0x1]; _T Hex_Digit = [0x30, 0xa, 0x7, 0x6, 0x1a, 0x6, 0xa0, 0xfe, 0xa9, 0xa, 0x7, 0x6, 0x1a, 0x6]; @@ -1705,7 +1709,7 @@ _T Mn = [0x83, 0x0, 0x70, 0x81, 0x13, 0x5, 0x81, 0x9, 0x2d, 0x1, 0x1, 0x1, 0x2, _T Sk = [0x5e, 0x1, 0x1, 0x1, 0x47, 0x1, 0x6, 0x1, 0x4, 0x1, 0x3, 0x1, 0x82, 0x9, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0xe, 0x2, 0x85, 0x2, 0x1, 0x97, 0x34, 0x1, 0x1, 0x3, 0xb, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x2, 0x90, 0x9c, 0x2, 0xa0, 0x76, 0x63, 0x17, 0x9, 0x2, 0x67, 0x2, 0x83, 0xd0, 0x1, 0xe, 0x2, 0xa0, 0x50, 0x46, 0x11, 0x83, 0x7b, 0x1, 0x1, 0x1, 0x80, 0xa2, 0x1, 0xa0, 0xf4, 0x17, 0x5]; _T Po = [0x21, 0x3, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x2, 0xa, 0x2, 0x3, 0x2, 0x1b, 0x1, 0x44, 0x1, 0x5, 0x1, 0xe, 0x2, 0x7, 0x1, 0x82, 0xbe, 0x1, 0x8, 0x1, 0x81, 0xd2, 0x6, 0x29, 0x1, 0x36, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2c, 0x2, 0x14, 0x2, 0x1, 0x2, 0xd, 0x1, 0x1, 0x3, 0x4a, 0x4, 0x66, 0x1, 0x2b, 0xe, 0x80, 0xe9, 0x3, 0x36, 0xf, 0x1f, 0x1, 0x81, 0x5, 0x2, 0xa, 0x1, 0x80, 0x8c, 0x1, 0x78, 0x1, 0x79, 0x1, 0x81, 0x86, 0x1, 0xc, 0x1, 0x81, 0x6f, 0x1, 0x5a, 0x1, 0xa, 0x2, 0x80, 0xa8, 0xf, 0x1, 0x1, 0x70, 0x1, 0x4a, 0x5, 0x4, 0x2, 0x6f, 0x6, 0x80, 0xab, 0x1, 0x82, 0x64, 0x9, 0x83, 0x5, 0x1, 0x7c, 0x3, 0x47, 0x2, 0x80, 0x9d, 0x3, 0x1, 0x3, 0x25, 0x6, 0x1, 0x4, 0x81, 0x39, 0x2, 0x80, 0xd8, 0x2, 0x80, 0x80, 0x7, 0x1, 0x6, 0x80, 0xac, 0x7, 0x1c, 0x2, 0x7d, 0x4, 0x3b, 0x5, 0x3e, 0x2, 0x40, 0x8, 0xb, 0x1, 0x83, 0x42, 0x2, 0x8, 0x8, 0x8, 0x9, 0x2, 0x4, 0x2, 0x3, 0x3, 0xb, 0x1, 0x1, 0x1, 0xa, 0x8c, 0x9a, 0x4, 0x1, 0x2, 0x70, 0x1, 0x80, 0x8f, 0x2, 0x4, 0x3, 0x2, 0x1, 0x2, 0x9, 0x1, 0x2, 0x1, 0x1, 0x2, 0x2, 0xa, 0x5, 0x1, 0xa, 0x2, 0x4, 0x1, 0x1, 0x1, 0xd, 0x2, 0x3, 0x81, 0xac, 0x3, 0x39, 0x1, 0x80, 0xbd, 0x1, 0xa0, 0x74, 0x2, 0x2, 0x81, 0xd, 0x3, 0x63, 0x1, 0xa, 0x1, 0x73, 0x6, 0x81, 0x7c, 0x4, 0x56, 0x2, 0x28, 0x3, 0x1, 0x1, 0x31, 0x2, 0x2f, 0x1, 0x61, 0xd, 0x10, 0x2, 0x7c, 0x4, 0x7e, 0x2, 0x10, 0x2, 0x80, 0xf9, 0x1, 0xa0, 0x52, 0x24, 0x7, 0x2, 0x1, 0x16, 0x1, 0x14, 0x2, 0x2, 0x4, 0x3, 0x3, 0x1, 0x4, 0x7, 0x3, 0x6, 0x1, 0x1, 0x2, 0x80, 0x95, 0x3, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x2, 0xa, 0x2, 0x3, 0x2, 0x1b, 0x1, 0x24, 0x1, 0x2, 0x2, 0x81, 0x9a, 0x3, 0x82, 0x9c, 0x1, 0x30, 0x1, 0x81, 0x9e, 0x1, 0x82, 0xe7, 0x1, 0x80, 0xc7, 0x1, 0x1f, 0x1, 0x81, 0x10, 0x9, 0x26, 0x1, 0x70, 0x7, 0x42, 0x7, 0x59, 0x4, 0x83, 0xb8, 0x5, 0x2c, 0x4, 0x80, 0xbd, 0x7, 0x6d, 0x2, 0x1, 0x4, 0x7e, 0x4, 0x30, 0x2, 0x4f, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x3, 0x58, 0x6, 0x6b, 0x1, 0x81, 0xa1, 0x5, 0xa, 0x2, 0x1, 0x1, 0x68, 0x1, 0x80, 0xfa, 0x17, 0x69, 0x3, 0x1c, 0xd, 0x4c, 0x1, 0x80, 0x82, 0x3, 0x80, 0xfc, 0x1, 0x81, 0x8, 0x3, 0x80, 0x9b, 0x1, 0x5c, 0x8, 0x53, 0x3, 0x1, 0x5, 0x5d, 0xa, 0x81, 0x37, 0x5, 0x2a, 0x2, 0x82, 0x85, 0x2, 0x4a, 0xd, 0x80, 0xaf, 0x1, 0x84, 0x70, 0x5, 0x8b, 0x7c, 0x2, 0xa0, 0x3a, 0x7b, 0x2, 0x80, 0x85, 0x1, 0x41, 0x5, 0x8, 0x1, 0x83, 0x52, 0x4, 0x81, 0x47, 0x1, 0xa0, 0x4c, 0xbc, 0x1, 0x9d, 0xe7, 0x5, 0x8e, 0xd2, 0x2]; _T Deprecated = [0x81, 0x49, 0x1, 0x85, 0x29, 0x1, 0x89, 0x3, 0x1, 0x1, 0x1, 0x88, 0x29, 0x2, 0x88, 0xc5, 0x6, 0x82, 0xb9, 0x2, 0xad, 0xdc, 0xd6, 0x1]; -_T Other_ID_Continue = [0x80, 0xb7, 0x1, 0x82, 0xcf, 0x1, 0x8f, 0xe1, 0x9, 0x86, 0x68, 0x1]; +_T Other_ID_Continue = [0x80, 0xb7, 0x1, 0x82, 0xcf, 0x1, 0x8f, 0xe1, 0x9, 0x86, 0x68, 0x1, 0x86, 0x31, 0x2, 0x90, 0xed, 0x1, 0xa0, 0xce, 0x69, 0x1]; _U[] _tab = [ _U("Alphabetic", Alphabetic), _U("ASCII_Hex_Digit", ASCII_Hex_Digit), @@ -1736,11 +1740,14 @@ _U("Grapheme_Extend", Grapheme_Extend), _U("Grapheme_Link", Grapheme_Link), _U("Hex_Digit", Hex_Digit), _U("Hyphen", Hyphen), +_U("ID_Compat_Math_Continue", ID_Compat_Math_Continue), +_U("ID_Compat_Math_Start", ID_Compat_Math_Start), _U("ID_Continue", ID_Continue), _U("Ideographic", Ideographic), _U("IDS_Binary_Operator", IDS_Binary_Operator), _U("ID_Start", ID_Start), _U("IDS_Trinary_Operator", IDS_Trinary_Operator), +_U("IDS_Unary_Operator", IDS_Unary_Operator), _U("Initial_Punctuation", Pi), _U("Join_Control", Join_Control), _U("Letter_Number", Nl), @@ -1879,6 +1886,7 @@ _T Ornamental_Dingbats = [0xa1, 0xf6, 0x50, 0x30]; _T Symbols_for_Legacy_Computing = [0xa1, 0xfb, 0x0, 0x81, 0x0]; _T Unified_Canadian_Aboriginal_Syllabics_Extended_A = [0xa1, 0x1a, 0xb0, 0x10]; _T Greek_and_Coptic = [0x83, 0x70, 0x80, 0x90]; +_T CJK_Unified_Ideographs_Extension_I = [0xa2, 0xeb, 0xf0, 0x82, 0x70]; _T Counting_Rod_Numerals = [0xa1, 0xd3, 0x60, 0x20]; _T Ethiopic_Extended_B = [0xa1, 0xe7, 0xe0, 0x20]; _T Supplemental_Mathematical_Operators = [0xa0, 0x2a, 0x0, 0x81, 0x0]; @@ -2213,6 +2221,7 @@ _U("CJK Unified Ideographs Extension E", CJK_Unified_Ideographs_Extension_E), _U("CJK Unified Ideographs Extension F", CJK_Unified_Ideographs_Extension_F), _U("CJK Unified Ideographs Extension G", CJK_Unified_Ideographs_Extension_G), _U("CJK Unified Ideographs Extension H", CJK_Unified_Ideographs_Extension_H), +_U("CJK Unified Ideographs Extension I", CJK_Unified_Ideographs_Extension_I), _U("Combining Diacritical Marks", Combining_Diacritical_Marks), _U("Combining Diacritical Marks Extended", Combining_Diacritical_Marks_Extended), _U("Combining Diacritical Marks for Symbols", Combining_Diacritical_Marks_for_Symbols), @@ -2558,7 +2567,7 @@ _T Mro = [0xa1, 0x6a, 0x40, 0x1f, 0x1, 0xa, 0x4, 0x2]; _T Chakma = [0xa1, 0x11, 0x0, 0x35, 0x1, 0x12]; _T Modi = [0xa1, 0x16, 0x0, 0x45, 0xb, 0xa]; _T Bassa_Vah = [0xa1, 0x6a, 0xd0, 0x1e, 0x2, 0x6]; -_T Han = [0xa0, 0x2e, 0x80, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x2f, 0x1, 0x1, 0x1, 0x19, 0x9, 0xe, 0x4, 0x83, 0xc4, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x59, 0x0, 0x81, 0x6e, 0x2, 0x6a, 0xa0, 0x75, 0x8, 0x2, 0xc, 0x2, 0xa0, 0x90, 0xe, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0x8c, 0x1f, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; +_T Han = [0xa0, 0x2e, 0x80, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x2f, 0x1, 0x1, 0x1, 0x19, 0x9, 0xe, 0x4, 0x83, 0xc4, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x59, 0x0, 0x81, 0x6e, 0x2, 0x6a, 0xa0, 0x75, 0x8, 0x2, 0xc, 0x2, 0xa0, 0x90, 0xe, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; _T Multani = [0xa1, 0x12, 0x80, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb]; _T Bopomofo = [0x82, 0xea, 0x2, 0xa0, 0x2e, 0x19, 0x2b, 0x70, 0x20]; _T Adlam = [0xa1, 0xe9, 0x0, 0x4c, 0x4, 0xa, 0x4, 0x2]; @@ -2567,7 +2576,7 @@ _T Lao = [0x8e, 0x81, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0 _T Psalter_Pahlavi = [0xa1, 0xb, 0x80, 0x12, 0x7, 0x4, 0xc, 0x7]; _T Anatolian_Hieroglyphs = [0xa1, 0x44, 0x0, 0x82, 0x47]; _T Canadian_Aboriginal = [0x94, 0x0, 0x82, 0x80, 0x82, 0x30, 0x46, 0xa1, 0x1, 0xba, 0x10]; -_T Common = [0x0, 0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xf, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xc1, 0x27, 0x5, 0x5, 0x2, 0x14, 0x74, 0x1, 0x9, 0x1, 0x6, 0x1, 0x1, 0x1, 0x82, 0x7d, 0x1, 0x6, 0x1, 0xe, 0x1, 0x3, 0x1, 0x20, 0x1, 0x80, 0x9c, 0x1, 0x82, 0x4, 0x1, 0x80, 0x81, 0x2, 0x84, 0xd9, 0x1, 0x81, 0x95, 0x4, 0x81, 0x22, 0x1, 0x85, 0xef, 0x3, 0x47, 0x2, 0x80, 0xcb, 0x2, 0x1, 0x1, 0x84, 0xcd, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x1, 0x83, 0x5, 0xc, 0x2, 0x57, 0x1, 0xb, 0x3, 0xb, 0x1, 0xf, 0x11, 0x21, 0x3f, 0x26, 0x1, 0x3, 0x2, 0x6, 0x1, 0x1b, 0x1, 0x11, 0x29, 0x3, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x83, 0xa0, 0x81, 0x0, 0x82, 0x74, 0x2, 0x20, 0x1, 0x69, 0x82, 0x0, 0x5e, 0x81, 0x92, 0xc, 0x4, 0x5, 0x1, 0x1, 0x1, 0x19, 0xf, 0x8, 0x4, 0x4, 0x5b, 0x2, 0x3, 0x1, 0x5a, 0x2, 0x80, 0x93, 0x10, 0x20, 0x24, 0x3c, 0x40, 0x1f, 0x51, 0x2f, 0x1, 0x58, 0x80, 0xa8, 0x99, 0xc0, 0x40, 0xa0, 0x59, 0x0, 0x22, 0x66, 0x3, 0x80, 0xa5, 0xa, 0x80, 0xf4, 0x1, 0x80, 0xa0, 0x1, 0x81, 0x8b, 0x1, 0xe, 0x2, 0xa0, 0x51, 0xd2, 0x2, 0x80, 0xd0, 0xa, 0x16, 0x23, 0x1, 0x13, 0x1, 0x4, 0x80, 0x93, 0x1, 0x1, 0x20, 0x1a, 0x6, 0x1a, 0xb, 0xa, 0x1, 0x2d, 0x2, 0x40, 0x7, 0x1, 0x7, 0xa, 0x5, 0x81, 0x2, 0x3, 0x4, 0x2d, 0x3, 0x9, 0x50, 0xd, 0x33, 0x2d, 0x80, 0xe4, 0x1b, 0xa0, 0xb9, 0xa4, 0x4, 0x92, 0xac, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3e, 0x3, 0x11, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x80, 0xd5, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x32, 0x94, 0x71, 0x44, 0x4c, 0x3d, 0x82, 0xc2, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1a, 0x1, 0x2, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0xac, 0x4, 0x7, 0x1, 0x1e, 0x60]; +_T Common = [0x0, 0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xf, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xc1, 0x27, 0x5, 0x5, 0x2, 0x14, 0x74, 0x1, 0x9, 0x1, 0x6, 0x1, 0x1, 0x1, 0x82, 0x7d, 0x1, 0x6, 0x1, 0xe, 0x1, 0x3, 0x1, 0x20, 0x1, 0x80, 0x9c, 0x1, 0x82, 0x4, 0x1, 0x80, 0x81, 0x2, 0x84, 0xd9, 0x1, 0x81, 0x95, 0x4, 0x81, 0x22, 0x1, 0x85, 0xef, 0x3, 0x47, 0x2, 0x80, 0xcb, 0x2, 0x1, 0x1, 0x84, 0xcd, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x1, 0x83, 0x5, 0xc, 0x2, 0x57, 0x1, 0xb, 0x3, 0xb, 0x1, 0xf, 0x11, 0x21, 0x3f, 0x26, 0x1, 0x3, 0x2, 0x6, 0x1, 0x1b, 0x1, 0x11, 0x29, 0x3, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x83, 0xa0, 0x81, 0x0, 0x82, 0x74, 0x2, 0x20, 0x1, 0x69, 0x82, 0x0, 0x5e, 0x81, 0x92, 0x15, 0x1, 0x1, 0x1, 0x19, 0xf, 0x8, 0x4, 0x4, 0x5b, 0x2, 0x3, 0x1, 0x5a, 0x2, 0x80, 0x93, 0x10, 0x20, 0x24, 0xb, 0x1, 0x30, 0x40, 0x1f, 0x51, 0x2f, 0x1, 0x58, 0x80, 0xa8, 0x99, 0xc0, 0x40, 0xa0, 0x59, 0x0, 0x22, 0x66, 0x3, 0x80, 0xa5, 0xa, 0x80, 0xf4, 0x1, 0x80, 0xa0, 0x1, 0x81, 0x8b, 0x1, 0xe, 0x2, 0xa0, 0x51, 0xd2, 0x2, 0x80, 0xd0, 0xa, 0x16, 0x23, 0x1, 0x13, 0x1, 0x4, 0x80, 0x93, 0x1, 0x1, 0x20, 0x1a, 0x6, 0x1a, 0xb, 0xa, 0x1, 0x2d, 0x2, 0x40, 0x7, 0x1, 0x7, 0xa, 0x5, 0x81, 0x2, 0x3, 0x4, 0x2d, 0x3, 0x9, 0x50, 0xd, 0x33, 0x2d, 0x80, 0xe4, 0x1b, 0xa0, 0xb9, 0xa4, 0x4, 0x92, 0xac, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3e, 0x3, 0x11, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x80, 0xd5, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x32, 0x94, 0x71, 0x44, 0x4c, 0x3d, 0x82, 0xc2, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1a, 0x1, 0x2, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0xac, 0x4, 0x7, 0x1, 0x1e, 0x60]; _T Gothic = [0xa1, 0x3, 0x30, 0x1b]; _T Yi = [0xa0, 0xa0, 0x0, 0x84, 0x8d, 0x3, 0x37]; _T Sinhala = [0x8d, 0x81, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x3, 0xa1, 0x3, 0xec, 0x14]; @@ -3037,12 +3046,12 @@ static if (size_t.sizeof == 4) enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xe0], [ 0x100, 0x140, 0x2500], [ 0x2020100, 0x4020302, 0x6020205, 0x8070202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60007, 0x80006, 0x60006, 0x60006, 0x60006, 0x60006, 0xa0009, 0xc000b, 0xe000d, 0x60006, 0x6000f, 0x60006, 0x60006, 0x60006, 0x110010, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x130012, 0x60006, 0x140006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x150006, 0x60006, 0x160006, 0x60006, 0x60006, 0x180017, 0x190006, 0x60006, 0x60006, 0x6001a, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x6001b, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x6001c, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x1e001d, 0x20001f, 0x60006, 0x60006, 0x60006, 0x210006, 0x60022, 0x60006, 0x60006, 0x60006, 0x230006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x0, 0x0, 0x0, 0x7fffffe, 0x0, 0x4200400, 0x80000000, 0xff7fffff, 0xaaaaaaaa, 0x55aaaaaa, 0xaaaaab55, 0xd4aaaaaa, 0x4e243129, 0xe6512d2a, 0xb5555240, 0xaa29aaaa, 0xaaaaaaaa, 0x93faaaaa, 0xffffaa85, 0xffffffff, 0xffefffff, 0x1ffffff, 0x3, 0x1f, 0x0, 0x0, 0x20, 0x3c8a0000, 0x10000, 0xfffff000, 0xaae37fff, 0x192faaaa, 0x0, 0xffff0000, 0xffffffff, 0xaaaaaaaa, 0xaaaaa802, 0xaaaaaaaa, 0xaaaad554, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaa, 0x0, 0xffffffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xf7ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f000000, 0x0, 0x0, 0x0, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xbfeaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x3f00ff, 0xff00ff, 0xff003f, 0x3fff00ff, 0xff00ff, 0x40df00ff, 0xcf00dc, 0xdc00ff, 0x0, 0x0, 0x0, 0x80020000, 0x1fff0000, 0x0, 0x0, 0x0, 0x8c400, 0x32108000, 0x43c0, 0xffff0000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3ff, 0x0, 0xffff0000, 0xffffffff, 0x3fda1562, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x8501a, 0xffffffff, 0x20bf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaaaaaaaa, 0x2aaa, 0x3aaaaaaa, 0x0, 0x0, 0x0, 0x0, 0xaaabaaa8, 0xaaaaaaaa, 0x95ffaaaa, 0xaaba50aa, 0xaaa082aa, 0x2aa050a, 0x75c0000, 0x0, 0xffff0000, 0xf7ffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0xf8007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffff00, 0xffff, 0x0, 0x0, 0x0, 0xff000000, 0xfffffff, 0x0, 0x0, 0x0, 0x0, 0xff800000, 0x1bfbfffb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffb9, 0x7fdffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xfc000000, 0xfffff, 0xffdfc000, 0xff, 0xffffffc, 0xebc00000, 0xffef, 0xfffffc00, 0xc000000f, 0xffffff, 0xfffc0000, 0xfff, 0xffffffc0, 0xfc000000, 0xfffff, 0xffffc000, 0xff, 0xffffffc, 0xffc00000, 0xffff, 0xfffffc00, 0x3f, 0xf7fffffc, 0xf0000003, 0xfdfffff, 0xffc00000, 0x3f7fff, 0xffff0000, 0xfdff, 0xfffffc00, 0xbf7, 0x0, 0x7ffffbff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0x3fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffffffc, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //1856 bytes enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xe0], [ 0x100, 0x140, 0x1e00], [ 0x2020100, 0x4020302, 0x6020205, 0x8070202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60007, 0x80006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60009, 0xb000a, 0xc0006, 0x60006, 0x6000d, 0x60006, 0x60006, 0x60006, 0x6000e, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x10000f, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x110006, 0x60006, 0x60006, 0x130012, 0x60006, 0x60006, 0x60006, 0x60014, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60015, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60016, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x180017, 0x1a0019, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x1b0006, 0x60006, 0x60006, 0x60006, 0x1c0006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x0, 0x0, 0x7fffffe, 0x0, 0x0, 0x0, 0x7f7fffff, 0x0, 0x55555555, 0xaa555555, 0x555554aa, 0x2b555555, 0xb1dbced6, 0x11aed2d5, 0x4aaaa490, 0x55d25555, 0x55555555, 0x6c055555, 0x557a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80450000, 0xfffed740, 0xffb, 0x551c8000, 0xe6905555, 0xffffffff, 0xffff, 0x0, 0x55555555, 0x55555401, 0x55555555, 0x55552aab, 0x55555555, 0x55555555, 0xfffe5555, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x20bf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xe7ffffff, 0x0, 0x0, 0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x40155555, 0x55555555, 0x55555555, 0x55555555, 0x3f00ff00, 0xff00ff00, 0xaa003f00, 0xff00, 0x0, 0xf000000, 0xf000f00, 0xf001f00, 0x3e273884, 0xc00f3d50, 0x20, 0xffff, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000, 0xffff, 0x0, 0xffffffff, 0xffff, 0x0, 0xc025ea9d, 0x55555555, 0x55555555, 0x55555555, 0x42805, 0x0, 0x0, 0x55555555, 0x1555, 0x5555555, 0x0, 0x0, 0x0, 0x0, 0x55545554, 0x55555555, 0x6a005555, 0x55452855, 0x555f7d55, 0x14102f5, 0x200000, 0x0, 0x7fffffe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xff, 0x0, 0x0, 0x0, 0xffff0000, 0xfffff, 0x0, 0x0, 0x0, 0x0, 0xf7ff0000, 0x37f7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ffffff, 0xfff00000, 0x3fff, 0xffffff00, 0xd0000003, 0x3fde64, 0xffff0000, 0x3ff, 0x1fdfe7b0, 0x7b000000, 0x1fc5f, 0xfffff000, 0x3f, 0x3ffffff, 0xfff00000, 0x3fff, 0xffffff00, 0xf0000003, 0x3fffff, 0xffff0000, 0x3ff, 0xffffff00, 0x1, 0x7fffffc, 0xf0000000, 0x1fffff, 0xffc00000, 0x7fff, 0xffff0000, 0x1ff, 0x400, 0x0, 0xffffffff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffff03ff, 0xffff03ff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); -//11520 bytes -enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0x1180], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180017, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0x1a0000, 0x1b, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x0, 0x0, 0x250024, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x280027, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0029, 0x2c002b, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e0000, 0x2f, 0x310030, 0x330032, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340000, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x370036, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390038, 0x3b003a, 0x3c0000, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x410040, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x440043, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x919ffff, 0x8e10080, 0x31905f9, 0x90700bd, 0x9cc0b94, 0xb25006b, 0x82206c5, 0xacc00e0, 0x4650834, 0x5cf0592, 0xa2d0783, 0x1930180, 0x4d7051c, 0xffff02f9, 0xffffffff, 0xffffffff, 0x91affff, 0x8e20081, 0x31a05fa, 0x90800be, 0x9cd0b95, 0xb26006c, 0x82306c6, 0xacd00e1, 0x4660835, 0x5d00593, 0xa2e0784, 0x1940181, 0x4d8051d, 0xffff02fa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x961ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5ac0779, 0x8520118, 0x9b70ad2, 0x3d90257, 0x38d0557, 0xb470128, 0x3950629, 0x3150047, 0x8d905f1, 0x29f0086, 0x589070f, 0xffff00cb, 0x97e0adc, 0x4f90213, 0x87c06ff, 0x8eb0a3f, 0x5ad077a, 0x8530119, 0x9b80ad3, 0x3da0258, 0x38e0558, 0xb480129, 0x396062a, 0x3160048, 0x8da05f2, 0x2a00087, 0x58a0710, 0xffff00cc, 0x97f0add, 0x4fa0214, 0x87d0700, 0x36a0a40, 0x9d909d8, 0x4ca04c9, 0x1cd01cc, 0xb520b51, 0x20001ff, 0x730072f, 0xce00cd, 0x8ab08aa, 0x5c005b, 0x6120611, 0x520051, 0x61e061d, 0x2b202b1, 0x6610660, 0x15a0159, 0x7ff07fe, 0xb830b82, 0x7e507e4, 0x4bc04bb, 0xa5c0a5b, 0x1b401b3, 0x5910590, 0x21c021b, 0x9690968, 0xffffffff, 0x8750874, 0x9350934, 0x31c031b, 0x94ffff, 0x6fb0095, 0x8e06fc, 0x818008f, 0xb2a0819, 0x7c80b2b, 0x12007c9, 0xa1d0121, 0xffff0a1e, 0x4da04d9, 0x7c307c2, 0xb600b5f, 0x6bb06ba, 0x1620161, 0x6810680, 0x2aa02a9, 0x6080607, 0xd000c, 0x63f063e, 0x70006f, 0x8370836, 0xd200d1, 0x7260725, 0x1df01de, 0xb7b0b7a, 0x1a201a1, 0x4c404c3, 0xa4c0a4b, 0x7cd07cc, 0x5640563, 0x9730972, 0x9f509f4, 0x623036b, 0x210624, 0x5fb0022, 0x5d105fc, 0x686068f, 0xb120b11, 0x26a0269, 0x2750524, 0xb330276, 0x1af07f8, 0xffff01b0, 0xabc0767, 0x8b00a41, 0x51e08b1, 0x229027b, 0x98c0b03, 0x970096, 0xffff04c7, 0x8e700aa, 0x32b00d3, 0x190018, 0x62c062b, 0x1050104, 0x3cd0551, 0x9a203ce, 0xffffffff, 0x1690168, 0x75707ec, 0x1a70758, 0x52a077d, 0x301052b, 0xaba0302, 0x2560255, 0xffffffff, 0x91c091b, 0x1adffff, 0xffffffff, 0xffffffff, 0x9260925, 0x5de0927, 0x5e005df, 0xadf0ade, 0x4fb0ae0, 0x79604fc, 0xa570797, 0x7690a58, 0x43f076a, 0xa7a0440, 0x2fd0a7b, 0x54f02fe, 0x7680550, 0xb4e0b4d, 0x6530652, 0x16b016a, 0x5f805f7, 0x2c002bf, 0x6450644, 0xf200f1, 0x6a706a6, 0x56e056d, 0xab4ffff, 0xab60ab5, 0x7460745, 0x1ae022a, 0xb680b67, 0x1eb01ea, 0x4180417, 0x96d096c, 0x83d083c, 0x59d059c, 0x93c093b, 0x8ba08b9, 0x3ac03ab, 0x8940893, 0xb0c0b0b, 0x41a0419, 0x4090408, 0xa890a88, 0x2b402b3, 0x52f052e, 0x16d016c, 0x7ef07ee, 0x5b505b4, 0x8470846, 0xffff00d4, 0x6cc06cb, 0x640063, 0xb7d0b7c, 0xc200c1, 0x73c073b, 0x790078, 0x8860885, 0x5780577, 0x6f306f2, 0xffffffff, 0xffffffff, 0xffffffff, 0x7940a08, 0x4c80795, 0x95907bc, 0x14b028b, 0x690014c, 0x2d3041b, 0x9d109d0, 0x9220921, 0x3240323, 0x950094f, 0x9f109f0, 0xb190400, 0x687021d, 0xffff0525, 0x7f90b34, 0xabdffff, 0xa42ffff, 0xffff093d, 0xffffffff, 0xb28051f, 0x27cffff, 0xb70ffff, 0xffff00b5, 0xb04098d, 0x63a00f9, 0xffff0986, 0xabffff, 0x59effff, 0xffff08e8, 0x32cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31ffff, 0xffffffff, 0xffff0552, 0x9a30514, 0xffffffff, 0x350ffff, 0x41c07ed, 0x77e01a8, 0xffff02d4, 0xffffffff, 0xffffffff, 0xffff0abb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x92ffff, 0xffff070d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x96effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4a304a2, 0x1cf01ce, 0xffffffff, 0x1f601f5, 0xffffffff, 0xa31ffff, 0x86a0122, 0x382ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0299, 0x82406d5, 0xffff00eb, 0xffff07f0, 0x9c60b9a, 0x4b1ffff, 0x17c04ac, 0xab70a11, 0x16601d2, 0x96f0598, 0xb010b2c, 0x81a0962, 0x1060399, 0x62d0b6d, 0x688ffff, 0x605032d, 0xac0345, 0x6f808f9, 0x9a0848, 0x6d6029a, 0xec0825, 0x4b2ffff, 0x17d04ad, 0xab80a12, 0x16701d3, 0x9700599, 0xb020b2d, 0x81b0963, 0x107039a, 0x62e0b6e, 0x68a0689, 0x606032e, 0xad0346, 0x6f908fa, 0x9b0849, 0xb9b07f1, 0x97409c7, 0x59a04ae, 0xffffffff, 0x347ffff, 0x9750b6f, 0x18c018b, 0x4a704a6, 0xa830a82, 0x85b085a, 0x580057f, 0x9850984, 0x9db09da, 0x3ba03b9, 0x2f602f5, 0x8be08bd, 0x4480447, 0x3630362, 0x62f0b2e, 0x38301d6, 0xab9059b, 0xa7effff, 0x1d70a7f, 0x5d905d8, 0xa32ffff, 0x86b0123, 0x51804ef, 0x96a0291, 0x98a0aef, 0x5aa0090, 0x8f506fd, 0x8f300a0, 0x31d05ed, 0x38f009c, 0xb3f071d, 0x3bf053e, 0x3d106e5, 0xab0027d, 0x8660a86, 0x4b50126, 0x7a80808, 0x1b90a0e, 0x50f07ea, 0x2df0a6d, 0xac809a0, 0x15b0245, 0x6620579, 0xb550936, 0x61f09ea, 0x5303c1, 0xb40071e, 0x3c0053f, 0x3d206e6, 0xab1027e, 0x8670a87, 0x4b60127, 0x7a90809, 0x1ba0a0f, 0x51007eb, 0x2e00a6e, 0xac909a1, 0x15c0246, 0x663057a, 0xb560937, 0x62009eb, 0x5403c2, 0x51904f0, 0x96b0292, 0x98b0af0, 0x5ab0091, 0x8f606fe, 0x8f400a1, 0x31e05ee, 0x390009d, 0xa9d0a9c, 0x5cb05ca, 0x2440243, 0xb440b43, 0x1fa01f9, 0x3e403e3, 0x9b209b1, 0x8550854, 0x5a105a0, 0x8dc08db, 0x8c208c1, 0x3980397, 0x8840883, 0x9330932, 0x3dc03db, 0x4160415, 0xb1c0b1b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5a505a4, 0x8270826, 0xe600e5, 0x6ce06cd, 0x5e005d, 0x61a0619, 0x50004, 0x72e072d, 0xca00c9, 0x8a908a8, 0x5660565, 0x6b306b2, 0x10b010a, 0x4ee04ed, 0x1a0019f, 0xa0b0a0a, 0x4560455, 0x7b907b8, 0xb6a0b69, 0x82d082c, 0x4050404, 0x9bb09ba, 0x8ea08e9, 0x3260325, 0x8d608d5, 0x9f309f2, 0x3b603b5, 0x6c002db, 0x21f06c1, 0x5d60220, 0x23705d7, 0xa1b0238, 0x49e0a1c, 0x790049f, 0x2dc0791, 0x23c023b, 0x55a0559, 0x2620261, 0x6e206e1, 0x580057, 0x6260625, 0x1e001d, 0x6770676, 0x1130112, 0x6750674, 0x2480247, 0x5680567, 0x11b011a, 0x7a707a6, 0x4990498, 0x7760775, 0xa8b0a8a, 0x4680467, 0x2360235, 0xafa0af9, 0x38a0389, 0x42a0429, 0x90a0909, 0x8c608c5, 0x3380337, 0x920091f, 0x9fb09fa, 0x3d603d5, 0x8210820, 0xa8f0a8e, 0x7990798, 0x1cb01ca, 0xa160a15, 0x2c402c3, 0x4ea04e9, 0x1710170, 0x6a306a2, 0x5b905b8, 0x64b064a, 0x2c002b, 0x6370636, 0x380037, 0xb640b63, 0xb400b3, 0x7360735, 0xac70ac6, 0x88a0889, 0x4ec04eb, 0xb9cffff, 0x227017e, 0x71704b3, 0xa940293, 0x84e0abe, 0x587047b, 0x6d303a5, 0x1330b5d, 0x67a0384, 0x3030352, 0x67c08ff, 0x1350928, 0x6d705b2, 0xb210945, 0x8560a00, 0x4ff0522, 0x7130295, 0x22f0a37, 0x5da0184, 0xffff0785, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb9dffff, 0x228017f, 0x71804b4, 0xa950294, 0x84f0abf, 0x588047c, 0x6d403a6, 0x1340b5e, 0x67b0385, 0x3040353, 0x67d0900, 0x1360929, 0x6d805b3, 0xb220946, 0x8570a01, 0x5000523, 0x7140296, 0x2300a38, 0x5db0185, 0xffff0786, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x81e09b3, 0x50b03e9, 0x6f401f0, 0x1b10b88, 0x4830241, 0x1b70496, 0xa980a96, 0x46b0878, 0x7fc0569, 0xaf1069e, 0x39100f7, 0x42f0646, 0x90502d9, 0x8bf068d, 0x33b014f, 0x9130670, 0x9e40b49, 0x3cf084a, 0x2e10108, 0xaa2ffff, 0xffffffff, 0xffffffff, 0xa4fffff, 0xffffffff, 0xae10153, 0x3fa0697, 0x42b05c2, 0x92e0666, 0x317002d, 0x3c705ef, 0x9ec0025, 0x9230b35, 0x55b008c, 0x85806ae, 0x9a70ada, 0x427087e, 0x21504fd, 0xa04075f, 0x24901da, 0x71104d1, 0xaa802a1, 0x8140994, 0x58503df, 0x6ea03c9, 0x11e0b2f, 0xffff039d, 0xeffff, 0x6930901, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43105d4, 0x36000c3, 0x81206be, 0x930006d, 0x374088f, 0x9f60b23, 0x8b70601, 0x335007e, 0x1f70a67, 0xa5502cd, 0x95106b6, 0x55d0137, 0xb7807d8, 0x7c60573, 0x4dd0489, 0x75b09e8, 0x2e7044d, 0x64c0378, 0x141084c, 0x6a0099c, 0x41045b, 0x8970915, 0x450b96, 0x6320313, 0x23309ad, 0xb6109dc, 0x820271, 0x7370541, 0xa060ad8, 0x77b0715, 0x1e40526, 0x4b708b2, 0x9f80289, 0x3ad06d9, 0x5b601fb, 0x8040b1d, 0x34c05dc, 0x35a0678, 0x2ad0139, 0x92a0684, 0xb7e004b, 0x38b0621, 0x4370061, 0xffffffff, 0xb7f004c, 0x38c0622, 0x4380062, 0xffffffff, 0x6e70540, 0x5110a10, 0xa700a6f, 0x5cc0938, 0xffff069b, 0xffffffff, 0xffffffff, 0xffffffff, 0xae20154, 0x3fb0698, 0x42c05c3, 0x92f0667, 0x318002e, 0x3c805f0, 0x9ed0026, 0x9240b36, 0x55c008d, 0x85906af, 0x9a80adb, 0x428087f, 0x21604fe, 0xa050760, 0x24a01db, 0x71204d2, 0xaa902a2, 0x8150995, 0x58603e0, 0x6eb03ca, 0x11f0b30, 0xffff039e, 0xfffff, 0x6940902, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x505ffff, 0xffffffff, 0x30dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b8c, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x6f106f0, 0x4c604c5, 0x7740773, 0xb810b80, 0x8010800, 0x4720471, 0x9810980, 0x260025f, 0x5760575, 0x9040903, 0x8f008ef, 0x3340333, 0x2cc02cb, 0x910090f, 0x45a0459, 0x3d403d3, 0xafe0afd, 0x7c507c4, 0x4dc04db, 0xa180a17, 0x1ac01ab, 0x5c905c8, 0x240023f, 0x72a0729, 0xdb00da, 0x83b083a, 0x60005f, 0x6140613, 0x130012, 0x60c060b, 0x2a402a3, 0x6920691, 0x15e015d, 0x6b506b4, 0x5af05ae, 0x79d079c, 0xa5e0a5d, 0x4910490, 0x2080207, 0xb540b53, 0x20e020d, 0x3de03dd, 0x9420941, 0x8770876, 0x3550354, 0x8fc08fb, 0x8ce08cd, 0x37d037c, 0x8810880, 0x95e095d, 0x3d803d7, 0x2040203, 0xb380b37, 0x1b601b5, 0x47e047d, 0xa3c0a3b, 0x7db07da, 0x5c105c0, 0x80d080c, 0x14e014d, 0x65b065a, 0x2ac02ab, 0x6310630, 0x4a0049, 0x61c061b, 0x890088, 0x89f089e, 0x53d053c, 0x7340733, 0x2060205, 0x4c004bf, 0x1d101d0, 0xa540a53, 0x43e043d, 0x7cf07ce, 0xffffffff, 0xffffffff, 0x882ffff, 0xffffffff, 0xffff08ec, 0x3080307, 0x8e408e3, 0x9c509c4, 0x3a203a1, 0x2540253, 0xad70ad6, 0x42e042d, 0x7e307e2, 0xa200a1f, 0x7af07ae, 0x4c204c1, 0x720071f, 0x21a0219, 0x5440543, 0x990098, 0x7020701, 0xa300a2, 0x5f605f5, 0x4e004d, 0x6510650, 0x1250124, 0xaf40af3, 0x2f402f3, 0x5310530, 0x1170116, 0x770076f, 0x4950494, 0x7b307b2, 0xa6a0a69, 0x3f503f4, 0x24e024d, 0xb770b76, 0x3bc03bb, 0x43a0439, 0x8d008cf, 0x8f208f1, 0x35f035e, 0x91e091d, 0x9910990, 0x54a0549, 0x8a108a0, 0xa720a71, 0x450044f, 0x19a0199, 0xa440a43, 0x1d501d4, 0x6de06dd, 0xee00ed, 0x3a70603, 0x9fc0035, 0x94b0b3b, 0x55300f3, 0x3a80604, 0x9fd0036, 0x94c0b3c, 0x55400f4, 0xa2f076b, 0x22b019d, 0x6f604cb, 0xffffffff, 0xa30076c, 0x22c019e, 0x6f704cc, 0xffffffff, 0x5fd039b, 0x160305, 0x67e08e5, 0x172086c, 0x5fe039c, 0x170306, 0x67f08e6, 0x173086d, 0xa3302e5, 0x1820ac2, 0x4a801a3, 0x1e0078c, 0xa3402e6, 0x1830ac3, 0x4a901a4, 0x1e1078d, 0x34e0074, 0x35605e1, 0x8bb000a, 0xffffffff, 0x34f0075, 0x35705e2, 0x8bc000b, 0xffffffff, 0x1e6ffff, 0xa59ffff, 0x4d3ffff, 0x76dffff, 0x1e7ffff, 0xa5affff, 0x4d4ffff, 0x76effff, 0x2c5098e, 0x654043b, 0x2903b1, 0x5e30b86, 0x2c6098f, 0x655043c, 0x2a03b2, 0x5e40b87, 0x2ed0445, 0x9d202d5, 0x2090a6b, 0x41d05cd, 0x808df, 0xa510aaa, 0x6170321, 0xffffffff, 0x9640b15, 0x3a30285, 0x2c10664, 0x8ed012a, 0x9650b16, 0x3a40286, 0x2c20665, 0x8ee012b, 0x3b706df, 0x9ee028f, 0x7f20b0d, 0x5b001fd, 0x3b806e0, 0x9ef0290, 0x7f30b0e, 0x5b101fe, 0xb7409de, 0xdc09af, 0x73d058e, 0x7c0281, 0xb7509df, 0xdd09b0, 0x73e058f, 0x7d0282, 0x6680370, 0x978ffff, 0xffffffff, 0xffffffff, 0x6690371, 0x2ee0446, 0xffff0979, 0xffff0971, 0xffffffff, 0xf5ffff, 0xffffffff, 0xffffffff, 0x9d302d6, 0x20a0a6c, 0xffff00f6, 0xffffffff, 0x35c00bb, 0xffffffff, 0xffffffff, 0xffffffff, 0x35d00bc, 0x41e05ce, 0xffffffff, 0xffffffff, 0x1c30176, 0xffffffff, 0x29bffff, 0xffffffff, 0x1c40177, 0xa520aab, 0xffff029c, 0xffffffff, 0xffffffff, 0x3bdffff, 0xffffffff, 0xffffffff, 0x908e0, 0x6180322, 0xffff03be, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff06fa, 0xffffffff, 0x9b90b27, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff094d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff094e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7307b0, 0x4570492, 0x1780765, 0xa3d09d6, 0x1ec0532, 0x70702f1, 0xde0ae5, 0x82a044b, 0xa7407b1, 0x4580493, 0x1790766, 0xa3e09d7, 0x1ed0533, 0x70802f2, 0xdf0ae6, 0x82b044c, 0xffffffff, 0x870ffff, 0xffff0871, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x594037a, 0xa60b1f, 0x7430816, 0x52803fc, 0x89509c8, 0xa8c020f, 0x7b40485, 0x18d0221, 0xa9a071b, 0x29d0102, 0x516085c, 0x9760b17, 0x93f065c, 0x595037b, 0xa70b20, 0x7440817, 0x52903fd, 0x89609c9, 0xa8d0210, 0x7b50486, 0x18e0222, 0xa9b071c, 0x29e0103, 0x517085d, 0x9770b18, 0x940065d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x65603c5, 0x10c0ae7, 0x6b00828, 0x5090441, 0x8680a49, 0xaac01c8, 0x751049a, 0x225020b, 0xb590709, 0x2770536, 0x40a080e, 0x98200a8, 0x9390703, 0x5a2002f, 0x9570638, 0x8cb003b, 0x39f066e, 0x8720151, 0xb050682, 0x3e505d2, 0x40207d0, 0xa9e0114, 0x2e304b9, 0x53801bb, 0x65703c6, 0x10d0ae8, 0x6b10829, 0x50a0442, 0x8690a4a, 0xaad01c9, 0x752049b, 0x226020c, 0xb5a070a, 0x2780537, 0x40b080f, 0x98300a9, 0x93a0704, 0x5a30030, 0x9580639, 0x8cc003c, 0x3a0066f, 0x8730152, 0xb060683, 0x3e605d3, 0x40307d1, 0xa9f0115, 0x2e404ba, 0x53901bc, 0x3a0039, 0x30e063b, 0xa090032, 0x9d407bd, 0x37e09d5, 0x265037f, 0xb1a0266, 0x401059f, 0xffff021e, 0xa140a13, 0x74bffff, 0xffff074c, 0xffffffff, 0xffffffff, 0xffffffff, 0x28c095a, 0x2a602a5, 0x33a0339, 0x8c808c7, 0x90e090d, 0x3730372, 0x2b902b8, 0x9930992, 0x46e046d, 0x7fb07fa, 0xb500b4f, 0x7780777, 0x4b004af, 0xa600a5f, 0x1e901e8, 0x56c056b, 0xd600d5, 0x7280727, 0x660065, 0x8a508a4, 0x20001f, 0x6280627, 0x5a0059, 0xb140b13, 0x2640263, 0x6bd06bc, 0x190018f, 0x7bf07be, 0x5bb05ba, 0x74e074d, 0xa360a35, 0x4e004df, 0x280027f, 0xafc0afb, 0x3aa03a9, 0x470046f, 0x9540953, 0x8d208d1, 0x3280327, 0x92d092c, 0x9bd09bc, 0x57c057b, 0x82f082e, 0xaa70aa6, 0x420041f, 0x2180217, 0xa0d0a0c, 0x1a601a5, 0x70c070b, 0x10f010e, 0x81d081c, 0xffffffff, 0xffffffff, 0xffffffff, 0x358ffff, 0x3290359, 0xffff032a, 0xffffffff, 0x6d006cf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x81f09b4, 0x50c03ea, 0x6f501f1, 0x1b20b89, 0x4840242, 0x1b80497, 0xa990a97, 0x46c0879, 0x7fd056a, 0xaf2069f, 0x39200f8, 0x4300647, 0x90602da, 0x8c0068e, 0x33c0150, 0x9140671, 0x9e50b4a, 0x3d0084b, 0x2e20109, 0xaa3ffff, 0xffffffff, 0xffffffff, 0xa50ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1d901d8, 0xa1a0a19, 0xa930a92, 0x79b079a, 0x140013f, 0x69d069c, 0x2bb02ba, 0x4f404f3, 0x3e003d, 0x6410640, 0x5bd05bc, 0x6490648, 0x770076, 0x73a0739, 0x40003f, 0xb660b65, 0x4e804e7, 0x7820781, 0xacf0ace, 0x88e088d, 0x2c802c7, 0xac10ac0, 0x17b017a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5130512, 0x2980297, 0x9480947, 0x9ff09fe, 0x7ad07ac, 0xa7d0a7c, 0xa3a0a39, 0x18a0189, 0x7480747, 0xaf00ae, 0x8880887, 0x52d052c, 0x5ea05e9, 0x340033, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x70006, 0x8a708a6, 0xc600c5, 0x6ef06ee, 0xe800e7, 0x60e060d, 0x680067, 0xffffffff, 0x1580157, 0x8310830, 0xb460b45, 0x5020501, 0x9bf09be, 0xa260a25, 0x2b002af, 0x87b087a, 0x95c095b, 0x97d097c, 0x3940393, 0xb580b57, 0x8510850, 0x3120311, 0x330032f, 0x2120211, 0x5a705a6, 0x40f040e, 0x9890988, 0x51b051a, 0x8650864, 0x23e023d, 0xa220a21, 0xff00fe, 0x66b066a, 0xb0a0b09, 0x6a506a4, 0x1560155, 0x65f065e, 0x2ea02e9, 0x69a0699, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7a0ffff, 0x4d507a1, 0x50604d6, 0xb6c0b6b, 0x5840583, 0x9b609b5, 0xacb0aca, 0x8410840, 0xffffffff, 0x4fffff, 0xb710050, 0xffffffff, 0xb080b07, 0x24c024b, 0xffff078e, 0x3b003af, 0x7d707d6, 0x49d049c, 0x3f903f8, 0x9cb09ca, 0x50e050d, 0x27a0279, 0x80b080a, 0x11d011c, 0x7060705, 0x93e00b6, 0x9870b29, 0xffff00fa, 0x351070e, 0xb5b0093, 0x5e805e7, 0x9f009e, 0x6e406e3, 0x13e013d, 0x54e054d, 0x28e028d, 0x8030802, 0x4340433, 0x515078f, 0x7590b8d, 0x174075a, 0xffff0175, 0xffffffff, 0xffffffff, 0x2f802f7, 0xffffffff, 0xffffffff, 0x310030f, 0xaec0aeb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9e6ffff, 0xffff09e7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb5cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43205d5, 0x36100c4, 0x81306bf, 0x931006e, 0x3750890, 0x9f70b24, 0x8b80602, 0x336007f, 0x1f80a68, 0xa5602ce, 0x95206b7, 0x55e0138, 0xb7907d9, 0x7c70574, 0x4de048a, 0x75c09e9, 0x2e8044e, 0x64d0379, 0x142084d, 0x6a1099d, 0x42045c, 0x8980916, 0x460b97, 0x6330314, 0x23409ae, 0xb6209dd, 0x830272, 0x7380542, 0xa070ad9, 0x77c0716, 0x1e50527, 0x4b808b3, 0x9f9028a, 0x3ae06da, 0x5b701fc, 0x8050b1e, 0x34d05dd, 0x35b0679, 0x2ae013a, 0x92b0685, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c0ffff, 0x2670aed, 0x5a80143, 0x9490642, 0x74904cd, 0xb720771, 0x7c0013b, 0x3fe04f5, 0x54b0259, 0x2ef03eb, 0xa800aae, 0x19707a2, 0x5ff08c3, 0xffff0451, 0xffffffff, 0xffffffff, 0x9c1ffff, 0x2680aee, 0x5a90144, 0x94a0643, 0x74a04ce, 0xb730772, 0x7c1013c, 0x3ff04f6, 0x54c025a, 0x2f003ec, 0xa810aaf, 0x19807a3, 0x60008c4, 0xffff0452, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x74f0a61, 0x5be075d, 0x7e8012f, 0x9ab0aa4, 0xaf50955, 0x2dd099a, 0x4e104f7, 0x14507d2, 0x47700e9, 0x8c90634, 0x2cf0043, 0x36c0721, 0x40602d1, 0x25d0547, 0xb840147, 0x3800672, 0xac40a75, 0x479078a, 0x2310481, 0xb4b077f, 0x7500a62, 0x5bf075e, 0x7e90130, 0x9ac0aa5, 0xaf60956, 0x2de099b, 0x4e204f8, 0x14607d3, 0x47800ea, 0x8ca0635, 0x2d00044, 0x36d0722, 0x40702d2, 0x25e0548, 0xb850148, 0x3810673, 0xac50a76, 0x47a078b, 0x2320482, 0xb4c0780, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xad00a45, 0x73f07d4, 0x223056f, 0xaff0996, 0x9c2022d, 0x7920b39, 0x4a0024f, 0x761047f, 0x5c40331, 0x6a80343, 0x1bf0b31, 0x6c70283, 0x28709a9, 0x64e03c3, 0x2702eb, 0x60908d3, 0xa270753, 0x8ac0a29, 0xffffffff, 0xffffffff, 0xad10a46, 0x74007d5, 0x2240570, 0xb000997, 0x9c3022e, 0x7930b3a, 0x4a10250, 0x7620480, 0x5c50332, 0x6a90344, 0x1c00b32, 0x6c80284, 0x28809aa, 0x64f03c4, 0x2802ec, 0x60a08d4, 0xa280754, 0x8ad0a2a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x461088b, 0x26b00a4, 0xae306aa, 0x2510110, 0x9430b3d, 0xffff00b7, 0x8f705e5, 0x8fd00b9, 0x7ca0806, 0x1310b41, 0x55f0832, 0x2ff03e1, 0x4210581, 0xffff02a7, 0x7630a23, 0x4e30475, 0x63c0a2b, 0xffff03b3, 0x6d102c9, 0x88cffff, 0xa50462, 0x6ab026c, 0x1110ae4, 0xb3e0252, 0xb80944, 0x5e6ffff, 0xba08f8, 0x80708fe, 0xb4207cb, 0x8330132, 0x3e20560, 0x5820300, 0x2a80422, 0xa24ffff, 0x4760764, 0xa2c04e4, 0x3b4063d, 0x2caffff, 0xffff06d2, 0xffffffff, 0x48704cf, 0x1490191, 0x7e00b8e, 0x57101e2, 0x3e70695, 0x44305c6, 0xa8407e6, 0x3090a47, 0xb8a0911, 0xc7090b, 0x72b0341, 0x8a0891, 0x862045f, 0x1000966, 0x7190899, 0x7a0366, 0x5200201, 0x33f04bd, 0xad40a63, 0x463079e, 0x838095f, 0x53a0469, 0x6e80239, 0x1bd0b90, 0x9e002fb, 0xffff066c, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x48804d0, 0x14a0192, 0x7e10b8f, 0x57201e3, 0x3e80696, 0x44405c7, 0xa8507e7, 0x30a0a48, 0xb8b0912, 0xc8090c, 0x72c0342, 0x8b0892, 0x8630460, 0x1010967, 0x71a089a, 0x7b0367, 0x5210202, 0x34004be, 0xad50a64, 0x464079f, 0x8390960, 0x53b046a, 0x6e9023a, 0x1be0b91, 0x9e102fc, 0xffff066d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1dc057d, 0xb9207a4, 0x1c101a9, 0x4e5048e, 0x36e00cf, 0x83e0731, 0x97a00ef, 0x45d0844, 0x15f0b0f, 0x68b086e, 0x2d7034a, 0x60f08dd, 0xa650364, 0x8420ab2, 0x5550453, 0x6b803cb, 0x1dd057e, 0xb9307a5, 0x1c201aa, 0x4e6048f, 0x36f00d0, 0x83f0732, 0x97b00f0, 0x45e0845, 0x1600b10, 0x68c086f, 0x2d8034b, 0x61008de, 0xa660365, 0x8430ab3, 0x5560454, 0x6b903cc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x99e0084, 0x31f0723, 0x410025b, 0x40c05f3, 0x9170069, 0x56106db, 0x3480010, 0xa020615, 0x4aa0473, 0x19507aa, 0x6ec030b, 0x1ee0aa0, 0x8a204f1, 0xae906c9, 0x9e20a4d, 0x50307b6, 0x99f0085, 0x3200724, 0x411025c, 0x40d05f4, 0x918006a, 0x56206dc, 0x3490011, 0xa030616, 0x4ab0474, 0x19607ab, 0x6ed030c, 0x1ef0aa1, 0x8a304f2, 0xaea06ca, 0x9e30a4e, 0x50407b7, 0x3f60658, 0x8ae0055, 0x8d705eb, 0x4350023, 0x3760596, 0xbf, 0x8100741, 0x5070534, 0x207ba, 0x755019b, 0x44904a4, 0xa90033d, 0x2730af7, 0x545016e, 0x99806ac, 0x9ce0b98, 0x140368, 0x3f70659, 0x8af0056, 0x8d805ec, 0x4360024, 0x3770597, 0x100c0, 0x8110742, 0x5080535, 0x307bb, 0x756019c, 0x44a04a5, 0xa91033e, 0x2740af8, 0x546016f, 0x99906ad, 0x9cf0b99, 0x150369, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +//11648 bytes +enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0x11c0], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180017, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0x1a0000, 0x1b, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x0, 0x0, 0x250024, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x280027, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0029, 0x2c002b, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e0000, 0x2f, 0x310030, 0x330032, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340000, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0039, 0x3c003b, 0x3d0000, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x420041, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x91dffff, 0x8e50080, 0x31905fb, 0x90b00bd, 0x9d00b9a, 0xb2b006b, 0x82606c7, 0xad200e0, 0x4670838, 0x5d10594, 0xa330785, 0x1930180, 0x4d9051e, 0xffff02f9, 0xffffffff, 0xffffffff, 0x91effff, 0x8e60081, 0x31a05fc, 0x90c00be, 0x9d10b9b, 0xb2c006c, 0x82706c8, 0xad300e1, 0x4680839, 0x5d20595, 0xa340786, 0x1940181, 0x4da051f, 0xffff02fa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x965ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5ae077b, 0x8560118, 0x9bb0ad8, 0x3db0257, 0x38f0559, 0xb4d0128, 0x397062b, 0x3150047, 0x8dd05f3, 0x29f0086, 0x58b0711, 0xffff00cb, 0x9820ae2, 0x4fb0213, 0x8800701, 0x8ef0a45, 0x5af077c, 0x8570119, 0x9bc0ad9, 0x3dc0258, 0x390055a, 0xb4e0129, 0x398062c, 0x3160048, 0x8de05f4, 0x2a00087, 0x58c0712, 0xffff00cc, 0x9830ae3, 0x4fc0214, 0x8810702, 0x36a0a46, 0x9dd09dc, 0x4cc04cb, 0x1cd01cc, 0xb580b57, 0x20001ff, 0x7320731, 0xce00cd, 0x8af08ae, 0x5c005b, 0x6140613, 0x520051, 0x620061f, 0x2b202b1, 0x6630662, 0x15a0159, 0x8010800, 0xb890b88, 0x7e707e6, 0x4be04bd, 0xa620a61, 0x1b401b3, 0x5930592, 0x21c021b, 0x96d096c, 0xffffffff, 0x8790878, 0x9390938, 0x31c031b, 0x94ffff, 0x6fd0095, 0x8e06fe, 0x81c008f, 0xb30081d, 0x7ca0b31, 0x12007cb, 0xa230121, 0xffff0a24, 0x4dc04db, 0x7c507c4, 0xb660b65, 0x6bd06bc, 0x1620161, 0x6830682, 0x2aa02a9, 0x60a0609, 0xd000c, 0x6410640, 0x70006f, 0x83b083a, 0xd200d1, 0x7280727, 0x1df01de, 0xb810b80, 0x1a201a1, 0x4c604c5, 0xa520a51, 0x7cf07ce, 0x5660565, 0x9770976, 0x9fb09fa, 0x625036b, 0x210626, 0x5fd0022, 0x5d305fe, 0x6880691, 0xb180b17, 0x26a0269, 0x2750526, 0xb390276, 0x1af07fa, 0xffff01b0, 0xac20769, 0x8b40a47, 0x52008b5, 0x229027b, 0x9900b09, 0x970096, 0xffff04c9, 0x8eb00aa, 0x32b00d3, 0x190018, 0x62e062d, 0x1050104, 0x3cf0553, 0x9a603d0, 0xffffffff, 0x1690168, 0x75907ee, 0x1a7075a, 0x52c077f, 0x301052d, 0xac00302, 0x2560255, 0xffffffff, 0x920091f, 0x1adffff, 0xffffffff, 0xffffffff, 0x92a0929, 0x5e0092b, 0x5e205e1, 0xae50ae4, 0x4fd0ae6, 0x79804fe, 0xa5d0799, 0x76b0a5e, 0x441076c, 0xa800442, 0x2fd0a81, 0x55102fe, 0x76a0552, 0xb540b53, 0x6550654, 0x16b016a, 0x5fa05f9, 0x2c002bf, 0x6470646, 0xf200f1, 0x6a906a8, 0x570056f, 0xabaffff, 0xabc0abb, 0x7480747, 0x1ae022a, 0xb6e0b6d, 0x1eb01ea, 0x41a0419, 0x9710970, 0x8410840, 0x59f059e, 0x940093f, 0x8be08bd, 0x3ae03ad, 0x8980897, 0xb120b11, 0x41c041b, 0x40b040a, 0xa8f0a8e, 0x2b402b3, 0x5310530, 0x16d016c, 0x7f107f0, 0x5b705b6, 0x84b084a, 0xffff00d4, 0x6ce06cd, 0x640063, 0xb830b82, 0xc200c1, 0x73e073d, 0x790078, 0x88a0889, 0x57a0579, 0x6f506f4, 0xffffffff, 0xffffffff, 0xffffffff, 0x7960a0e, 0x4ca0797, 0x95d07be, 0x14b028b, 0x692014c, 0x2d3041d, 0x9d509d4, 0x9260925, 0x3240323, 0x9540953, 0x9f709f6, 0xb1f0402, 0x689021d, 0xffff0527, 0x7fb0b3a, 0xac3ffff, 0xa48ffff, 0xffff0941, 0xffffffff, 0xb2e0521, 0x27cffff, 0xb76ffff, 0xffff00b5, 0xb0a0991, 0x63c00f9, 0xffff098a, 0xabffff, 0x5a0ffff, 0xffff08ec, 0x32cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31ffff, 0xffffffff, 0xffff0554, 0x9a70516, 0xffffffff, 0x350ffff, 0x41e07ef, 0x78001a8, 0xffff02d4, 0xffffffff, 0xffffffff, 0xffff0ac1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x92ffff, 0xffff070f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x972ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4a504a4, 0x1cf01ce, 0xffffffff, 0x1f601f5, 0xffffffff, 0xa37ffff, 0x86e0122, 0x382ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0299, 0x82806d7, 0xffff00eb, 0xffff07f2, 0x9ca0ba0, 0x4b30386, 0x17c04ae, 0xabd0a17, 0x16601d2, 0x973059a, 0xb070b32, 0x81e0966, 0x106039b, 0x62f0b73, 0x68affff, 0x607032d, 0xac0345, 0x6fa08fd, 0x9a084c, 0x6d8029a, 0xec0829, 0x4b409ce, 0x17d04af, 0xabe0a18, 0x16701d3, 0x974059b, 0xb080b33, 0x81f0967, 0x107039c, 0x6300b74, 0x68c068b, 0x608032e, 0xad0346, 0x6fb08fe, 0x9b084d, 0xba107f3, 0x97809cb, 0x59c04b0, 0xffffffff, 0x347ffff, 0x9790b75, 0x18c018b, 0x4a904a8, 0xa890a88, 0x85f085e, 0x5820581, 0x9890988, 0x9df09de, 0x3bc03bb, 0x2f602f5, 0x8c208c1, 0x44a0449, 0x3630362, 0x6310b34, 0x38301d6, 0xabf059d, 0xa84ffff, 0x1d70a85, 0x5db05da, 0xa38ffff, 0x86f0123, 0x51a04f1, 0x96e0291, 0x98e0af5, 0x5ac0090, 0x8f906ff, 0x8f700a0, 0x31d05ef, 0x391009c, 0xb45071f, 0x3c10540, 0x3d306e7, 0xab6027d, 0x86a0a8c, 0x4b70126, 0x7aa080a, 0x1b90a14, 0x51107ec, 0x2df0a73, 0xace09a4, 0x15b0245, 0x664057b, 0xb5b093a, 0x62109f0, 0x5303c3, 0xb460720, 0x3c20541, 0x3d406e8, 0xab7027e, 0x86b0a8d, 0x4b80127, 0x7ab080b, 0x1ba0a15, 0x51207ed, 0x2e00a74, 0xacf09a5, 0x15c0246, 0x665057c, 0xb5c093b, 0x62209f1, 0x5403c4, 0x51b04f2, 0x96f0292, 0x98f0af6, 0x5ad0091, 0x8fa0700, 0x8f800a1, 0x31e05f0, 0x392009d, 0xaa30aa2, 0x5cd05cc, 0x2440243, 0xb4a0b49, 0x1fa01f9, 0x3e603e5, 0x9b609b5, 0x8590858, 0x5a305a2, 0x8e008df, 0x8c608c5, 0x39a0399, 0x8880887, 0x9370936, 0x3de03dd, 0x4180417, 0xb220b21, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5a705a6, 0x82b082a, 0xe600e5, 0x6d006cf, 0x5e005d, 0x61c061b, 0x50004, 0x730072f, 0xca00c9, 0x8ad08ac, 0x5680567, 0x6b506b4, 0x10b010a, 0x4f004ef, 0x1a0019f, 0xa110a10, 0x4580457, 0x7bb07ba, 0xb700b6f, 0x8310830, 0x4070406, 0x9bf09be, 0x8ee08ed, 0x3260325, 0x8da08d9, 0x9f909f8, 0x3b803b7, 0x6c202db, 0x21f06c3, 0x5d80220, 0x23705d9, 0xa210238, 0x4a00a22, 0x79204a1, 0x2dc0793, 0x23c023b, 0x55c055b, 0x2620261, 0x6e406e3, 0x580057, 0x6280627, 0x1e001d, 0x6790678, 0x1130112, 0x6770676, 0x2480247, 0x56a0569, 0x11b011a, 0x7a907a8, 0x49b049a, 0x7780777, 0xa910a90, 0x46a0469, 0x2360235, 0xb000aff, 0x38c038b, 0x42c042b, 0x90e090d, 0x8ca08c9, 0x3380337, 0x9240923, 0xa010a00, 0x3d803d7, 0x8250824, 0xa950a94, 0x79b079a, 0x1cb01ca, 0xa1c0a1b, 0x2c402c3, 0x4ec04eb, 0x1710170, 0x6a506a4, 0x5bb05ba, 0x64d064c, 0x2c002b, 0x6390638, 0x380037, 0xb6a0b69, 0xb400b3, 0x7380737, 0xacd0acc, 0x88e088d, 0x4ee04ed, 0xba2ffff, 0x227017e, 0x71904b5, 0xa9a0293, 0x8520ac4, 0x589047d, 0x6d503a7, 0x1330b63, 0x67c0384, 0x3030352, 0x67e0903, 0x135092c, 0x6d905b4, 0xb270949, 0x85a0a06, 0x5010524, 0x7150295, 0x22f0a3d, 0x5dc0184, 0xffff0787, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba3ffff, 0x228017f, 0x71a04b6, 0xa9b0294, 0x8530ac5, 0x58a047e, 0x6d603a8, 0x1340b64, 0x67d0385, 0x3040353, 0x67f0904, 0x136092d, 0x6da05b5, 0xb28094a, 0x85b0a07, 0x5020525, 0x7160296, 0x2300a3e, 0x5dd0185, 0xffff0788, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x82209b7, 0x50d03eb, 0x6f601f0, 0x1b10b8e, 0x4850241, 0x1b70498, 0xa9e0a9c, 0x46d087c, 0x7fe056b, 0xaf706a0, 0x39300f7, 0x4310648, 0x90902d9, 0x8c3068f, 0x33b014f, 0x9170672, 0x9ea0b4f, 0x3d1084e, 0x2e10108, 0xaa8ffff, 0xffffffff, 0xffffffff, 0xa55ffff, 0xffffffff, 0xae70153, 0x3fc0699, 0x42d05c4, 0x9320668, 0x317002d, 0x3c905f1, 0x9f20025, 0x9270b3b, 0x55d008c, 0x85c06b0, 0x9ab0ae0, 0x4290882, 0x21504ff, 0xa0a0761, 0x24901da, 0x71304d3, 0xaae02a1, 0x8180998, 0x58703e1, 0x6ec03cb, 0x11e0b35, 0xffff039f, 0xeffff, 0x6950905, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43305d6, 0x36000c3, 0x81606c0, 0x934006d, 0x3740893, 0x9fc0b29, 0x8bb0603, 0x335007e, 0x1f70a6d, 0xa5b02cd, 0x95506b8, 0x55f0137, 0xb7e07da, 0x7c80575, 0x4df048b, 0x75d09ee, 0x2e7044f, 0x64e0378, 0x1410850, 0x6a209a0, 0x41045d, 0x89b0919, 0x450b9c, 0x6340313, 0x23309b1, 0xb6709e0, 0x820271, 0x7390543, 0xa0c0ade, 0x77d0717, 0x1e40528, 0x4b908b6, 0x9fe0289, 0x3af06db, 0x5b801fb, 0x8060b23, 0x34c05de, 0x35a067a, 0x2ad0139, 0x92e0686, 0xb84004b, 0x38d0623, 0x4390061, 0xffffffff, 0xb85004c, 0x38e0624, 0x43a0062, 0xffffffff, 0x6e90542, 0x5130a16, 0xa760a75, 0x5ce093c, 0xffff069d, 0xffffffff, 0xffffffff, 0xffffffff, 0xae80154, 0x3fd069a, 0x42e05c5, 0x9330669, 0x318002e, 0x3ca05f2, 0x9f30026, 0x9280b3c, 0x55e008d, 0x85d06b1, 0x9ac0ae1, 0x42a0883, 0x2160500, 0xa0b0762, 0x24a01db, 0x71404d4, 0xaaf02a2, 0x8190999, 0x58803e2, 0x6ed03cc, 0x11f0b36, 0xffff03a0, 0xfffff, 0x6960906, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x507ffff, 0xffffffff, 0x30dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b92, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x6f306f2, 0x4c804c7, 0x7760775, 0xb870b86, 0x8030802, 0x4740473, 0x9850984, 0x260025f, 0x5780577, 0x9080907, 0x8f408f3, 0x3340333, 0x2cc02cb, 0x9140913, 0x45c045b, 0x3d603d5, 0xb040b03, 0x7c707c6, 0x4de04dd, 0xa1e0a1d, 0x1ac01ab, 0x5cb05ca, 0x240023f, 0x72c072b, 0xdb00da, 0x83f083e, 0x60005f, 0x6160615, 0x130012, 0x60e060d, 0x2a402a3, 0x6940693, 0x15e015d, 0x6b706b6, 0x5b105b0, 0x79f079e, 0xa640a63, 0x4930492, 0x2080207, 0xb5a0b59, 0x20e020d, 0x3e003df, 0x9460945, 0x87b087a, 0x3550354, 0x90008ff, 0x8d208d1, 0x37d037c, 0x8850884, 0x9620961, 0x3da03d9, 0x2040203, 0xb3e0b3d, 0x1b601b5, 0x480047f, 0xa420a41, 0x7dd07dc, 0x5c305c2, 0x8110810, 0x14e014d, 0x65d065c, 0x2ac02ab, 0x6330632, 0x4a0049, 0x61e061d, 0x890088, 0x8a308a2, 0x53f053e, 0x7360735, 0x2060205, 0x4c204c1, 0x1d101d0, 0xa5a0a59, 0x440043f, 0x7d107d0, 0xffffffff, 0xffffffff, 0x886ffff, 0xffffffff, 0xffff08f0, 0x3080307, 0x8e808e7, 0x9c909c8, 0x3a403a3, 0x2540253, 0xadd0adc, 0x430042f, 0x7e507e4, 0xa260a25, 0x7b107b0, 0x4c404c3, 0x7220721, 0x21a0219, 0x5460545, 0x990098, 0x7040703, 0xa300a2, 0x5f805f7, 0x4e004d, 0x6530652, 0x1250124, 0xafa0af9, 0x2f402f3, 0x5330532, 0x1170116, 0x7720771, 0x4970496, 0x7b507b4, 0xa700a6f, 0x3f703f6, 0x24e024d, 0xb7d0b7c, 0x3be03bd, 0x43c043b, 0x8d408d3, 0x8f608f5, 0x35f035e, 0x9220921, 0x9950994, 0x54c054b, 0x8a508a4, 0xa780a77, 0x4520451, 0x19a0199, 0xa4a0a49, 0x1d501d4, 0x6e006df, 0xee00ed, 0x3a90605, 0xa020035, 0x94f0b41, 0x55500f3, 0x3aa0606, 0xa030036, 0x9500b42, 0x55600f4, 0xa35076d, 0x22b019d, 0x6f804cd, 0xffffffff, 0xa36076e, 0x22c019e, 0x6f904ce, 0xffffffff, 0x5ff039d, 0x160305, 0x68008e9, 0x1720870, 0x600039e, 0x170306, 0x68108ea, 0x1730871, 0xa3902e5, 0x1820ac8, 0x4aa01a3, 0x1e0078e, 0xa3a02e6, 0x1830ac9, 0x4ab01a4, 0x1e1078f, 0x34e0074, 0x35605e3, 0x8bf000a, 0xffffffff, 0x34f0075, 0x35705e4, 0x8c0000b, 0xffffffff, 0x1e6ffff, 0xa5fffff, 0x4d5ffff, 0x76fffff, 0x1e7ffff, 0xa60ffff, 0x4d6ffff, 0x770ffff, 0x2c50992, 0x656043d, 0x2903b3, 0x5e50b8c, 0x2c60993, 0x657043e, 0x2a03b4, 0x5e60b8d, 0x2ed0447, 0x9d602d5, 0x2090a71, 0x41f05cf, 0x808e3, 0xa570ab0, 0x6190321, 0xffffffff, 0x9680b1b, 0x3a50285, 0x2c10666, 0x8f1012a, 0x9690b1c, 0x3a60286, 0x2c20667, 0x8f2012b, 0x3b906e1, 0x9f4028f, 0x7f40b13, 0x5b201fd, 0x3ba06e2, 0x9f50290, 0x7f50b14, 0x5b301fe, 0xb7a09e4, 0xdc09b3, 0x73f0590, 0x7c0281, 0xb7b09e5, 0xdd09b4, 0x7400591, 0x7d0282, 0x66a0370, 0x97cffff, 0xffffffff, 0xffffffff, 0x66b0371, 0x2ee0448, 0xffff097d, 0xffff0975, 0xffffffff, 0xf5ffff, 0xffffffff, 0xffffffff, 0x9d702d6, 0x20a0a72, 0xffff00f6, 0xffffffff, 0x35c00bb, 0x387ffff, 0xffffffff, 0xffffffff, 0x35d00bc, 0x42005d0, 0xffffffff, 0xffffffff, 0x1c30176, 0x9cfffff, 0x29bffff, 0xffffffff, 0x1c40177, 0xa580ab1, 0xffff029c, 0xffffffff, 0xffffffff, 0x3bfffff, 0xffffffff, 0xffffffff, 0x908e4, 0x61a0322, 0xffff03c0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff06fc, 0xffffffff, 0x9bd0b2d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0951, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0952, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7907b2, 0x4590494, 0x1780767, 0xa4309da, 0x1ec0534, 0x70902f1, 0xde0aeb, 0x82e044d, 0xa7a07b3, 0x45a0495, 0x1790768, 0xa4409db, 0x1ed0535, 0x70a02f2, 0xdf0aec, 0x82f044e, 0xffffffff, 0x874ffff, 0xffff0875, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x596037a, 0xa60b25, 0x745081a, 0x52a03fe, 0x89909cc, 0xa92020f, 0x7b60487, 0x18d0221, 0xaa0071d, 0x29d0102, 0x5180860, 0x97a0b1d, 0x943065e, 0x597037b, 0xa70b26, 0x746081b, 0x52b03ff, 0x89a09cd, 0xa930210, 0x7b70488, 0x18e0222, 0xaa1071e, 0x29e0103, 0x5190861, 0x97b0b1e, 0x944065f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x65803c7, 0x10c0aed, 0x6b2082c, 0x50b0443, 0x86c0a4f, 0xab201c8, 0x753049c, 0x225020b, 0xb5f070b, 0x2770538, 0x40c0812, 0x98600a8, 0x93d0705, 0x5a4002f, 0x95b063a, 0x8cf003b, 0x3a10670, 0x8760151, 0xb0b0684, 0x3e705d4, 0x40407d2, 0xaa40114, 0x2e304bb, 0x53a01bb, 0x65903c8, 0x10d0aee, 0x6b3082d, 0x50c0444, 0x86d0a50, 0xab301c9, 0x754049d, 0x226020c, 0xb60070c, 0x2780539, 0x40d0813, 0x98700a9, 0x93e0706, 0x5a50030, 0x95c063b, 0x8d0003c, 0x3a20671, 0x8770152, 0xb0c0685, 0x3e805d5, 0x40507d3, 0xaa50115, 0x2e404bc, 0x53b01bc, 0x3a0039, 0x30e063d, 0xa0f0032, 0x9d807bf, 0x37e09d9, 0x265037f, 0xb200266, 0x40305a1, 0xffff021e, 0xa1a0a19, 0x74dffff, 0xffff074e, 0xffffffff, 0xffffffff, 0xffffffff, 0x28c095e, 0x2a602a5, 0x33a0339, 0x8cc08cb, 0x9120911, 0x3730372, 0x2b902b8, 0x9970996, 0x470046f, 0x7fd07fc, 0xb560b55, 0x77a0779, 0x4b204b1, 0xa660a65, 0x1e901e8, 0x56e056d, 0xd600d5, 0x72a0729, 0x660065, 0x8a908a8, 0x20001f, 0x62a0629, 0x5a0059, 0xb1a0b19, 0x2640263, 0x6bf06be, 0x190018f, 0x7c107c0, 0x5bd05bc, 0x750074f, 0xa3c0a3b, 0x4e204e1, 0x280027f, 0xb020b01, 0x3ac03ab, 0x4720471, 0x9580957, 0x8d608d5, 0x3280327, 0x9310930, 0x9c109c0, 0x57e057d, 0x8330832, 0xaad0aac, 0x4220421, 0x2180217, 0xa130a12, 0x1a601a5, 0x70e070d, 0x10f010e, 0x8210820, 0xffffffff, 0xffffffff, 0xffffffff, 0x358ffff, 0x3290359, 0xffff032a, 0xffffffff, 0x6d206d1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x82309b8, 0x50e03ec, 0x6f701f1, 0x1b20b8f, 0x4860242, 0x1b80499, 0xa9f0a9d, 0x46e087d, 0x7ff056c, 0xaf806a1, 0x39400f8, 0x4320649, 0x90a02da, 0x8c40690, 0x33c0150, 0x9180673, 0x9eb0b50, 0x3d2084f, 0x2e20109, 0xaa9ffff, 0xffffffff, 0xffffffff, 0xa56ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1d901d8, 0xa200a1f, 0xa990a98, 0x79d079c, 0x140013f, 0x69f069e, 0x2bb02ba, 0x4f604f5, 0x3e003d, 0x6430642, 0x5bf05be, 0x64b064a, 0x770076, 0x73c073b, 0x40003f, 0xb6c0b6b, 0x4ea04e9, 0x7840783, 0xad50ad4, 0x8920891, 0x2c802c7, 0xac70ac6, 0x17b017a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5150514, 0x2980297, 0x94c094b, 0xa050a04, 0x7af07ae, 0xa830a82, 0xa400a3f, 0x18a0189, 0x74a0749, 0xaf00ae, 0x88c088b, 0x52f052e, 0x5ec05eb, 0x340033, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x70006, 0x8ab08aa, 0xc600c5, 0x6f106f0, 0xe800e7, 0x610060f, 0x680067, 0xffffffff, 0x1580157, 0x8350834, 0xb4c0b4b, 0x5040503, 0x9c309c2, 0xa2c0a2b, 0x2b002af, 0x87f087e, 0x960095f, 0x9810980, 0x3960395, 0xb5e0b5d, 0x8550854, 0x3120311, 0x330032f, 0x2120211, 0x5a905a8, 0x4110410, 0x98d098c, 0x51d051c, 0x8690868, 0x23e023d, 0xa280a27, 0xff00fe, 0x66d066c, 0xb100b0f, 0x6a706a6, 0x1560155, 0x6610660, 0x2ea02e9, 0x69c069b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7a2ffff, 0x4d707a3, 0x50804d8, 0xb720b71, 0x5860585, 0x9ba09b9, 0xad10ad0, 0x8450844, 0xffffffff, 0x4fffff, 0xb770050, 0xffffffff, 0xb0e0b0d, 0x24c024b, 0xffff0790, 0x3b203b1, 0x7d907d8, 0x49f049e, 0x3fb03fa, 0x9e309e2, 0x510050f, 0x27a0279, 0x80f080e, 0x11d011c, 0x7080707, 0x94200b6, 0x98b0b2f, 0xffff00fa, 0x3510710, 0xb610093, 0x5ea05e9, 0x9f009e, 0x6e606e5, 0x13e013d, 0x550054f, 0x28e028d, 0x8050804, 0x4360435, 0x5170791, 0x75b0b93, 0x174075c, 0xffff0175, 0xffffffff, 0xffffffff, 0x2f802f7, 0xffffffff, 0xffffffff, 0x310030f, 0xaf20af1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9ecffff, 0xffff09ed, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb62ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43405d7, 0x36100c4, 0x81706c1, 0x935006e, 0x3750894, 0x9fd0b2a, 0x8bc0604, 0x336007f, 0x1f80a6e, 0xa5c02ce, 0x95606b9, 0x5600138, 0xb7f07db, 0x7c90576, 0x4e0048c, 0x75e09ef, 0x2e80450, 0x64f0379, 0x1420851, 0x6a309a1, 0x42045e, 0x89c091a, 0x460b9d, 0x6350314, 0x23409b2, 0xb6809e1, 0x830272, 0x73a0544, 0xa0d0adf, 0x77e0718, 0x1e50529, 0x4ba08b7, 0x9ff028a, 0x3b006dc, 0x5b901fc, 0x8070b24, 0x34d05df, 0x35b067b, 0x2ae013a, 0x92f0687, 0xffffffff, 0xffffffff, 0x80cffff, 0xffff080d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c4ffff, 0x2670af3, 0x5aa0143, 0x94d0644, 0x74b04cf, 0xb780773, 0x7c2013b, 0x40004f7, 0x54d0259, 0x2ef03ed, 0xa860ab4, 0x19707a4, 0x60108c7, 0xffff0453, 0xffffffff, 0xffffffff, 0x9c5ffff, 0x2680af4, 0x5ab0144, 0x94e0645, 0x74c04d0, 0xb790774, 0x7c3013c, 0x40104f8, 0x54e025a, 0x2f003ee, 0xa870ab5, 0x19807a5, 0x60208c8, 0xffff0454, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7510a67, 0x5c0075f, 0x7ea012f, 0x9af0aaa, 0xafb0959, 0x2dd099e, 0x4e304f9, 0x14507d4, 0x47900e9, 0x8cd0636, 0x2cf0043, 0x36c0723, 0x40802d1, 0x25d0549, 0xb8a0147, 0x3800674, 0xaca0a7b, 0x47b078c, 0x2310483, 0xb510781, 0x7520a68, 0x5c10760, 0x7eb0130, 0x9b00aab, 0xafc095a, 0x2de099f, 0x4e404fa, 0x14607d5, 0x47a00ea, 0x8ce0637, 0x2d00044, 0x36d0724, 0x40902d2, 0x25e054a, 0xb8b0148, 0x3810675, 0xacb0a7c, 0x47c078d, 0x2320484, 0xb520782, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xad60a4b, 0x74107d6, 0x2230571, 0xb05099a, 0x9c6022d, 0x7940b3f, 0x4a2024f, 0x7630481, 0x5c60331, 0x6aa0343, 0x1bf0b37, 0x6c90283, 0x28709ad, 0x65003c5, 0x2702eb, 0x60b08d7, 0xa2d0755, 0x8b00a2f, 0xffffffff, 0xffffffff, 0xad70a4c, 0x74207d7, 0x2240572, 0xb06099b, 0x9c7022e, 0x7950b40, 0x4a30250, 0x7640482, 0x5c70332, 0x6ab0344, 0x1c00b38, 0x6ca0284, 0x28809ae, 0x65103c6, 0x2802ec, 0x60c08d8, 0xa2e0756, 0x8b10a30, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x463088f, 0x26b00a4, 0xae906ac, 0x2510110, 0x9470b43, 0xffff00b7, 0x8fb05e7, 0x90100b9, 0x7cc0808, 0x1310b47, 0x5610836, 0x2ff03e3, 0x4230583, 0xffff02a7, 0x7650a29, 0x4e50477, 0x63e0a31, 0xffff03b5, 0x6d302c9, 0x890ffff, 0xa50464, 0x6ad026c, 0x1110aea, 0xb440252, 0xb80948, 0x5e8ffff, 0xba08fc, 0x8090902, 0xb4807cd, 0x8370132, 0x3e40562, 0x5840300, 0x2a80424, 0xa2affff, 0x4780766, 0xa3204e6, 0x3b6063f, 0x2caffff, 0xffff06d4, 0xffffffff, 0x48904d1, 0x1490191, 0x7e20b94, 0x57301e2, 0x3e90697, 0x44505c8, 0xa8a07e8, 0x3090a4d, 0xb900915, 0xc7090f, 0x72d0341, 0x8a0895, 0x8660461, 0x100096a, 0x71b089d, 0x7a0366, 0x5220201, 0x33f04bf, 0xada0a69, 0x46507a0, 0x83c0963, 0x53c046b, 0x6ea0239, 0x1bd0b96, 0x9e602fb, 0xffff066e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x48a04d2, 0x14a0192, 0x7e30b95, 0x57401e3, 0x3ea0698, 0x44605c9, 0xa8b07e9, 0x30a0a4e, 0xb910916, 0xc80910, 0x72e0342, 0x8b0896, 0x8670462, 0x101096b, 0x71c089e, 0x7b0367, 0x5230202, 0x34004c0, 0xadb0a6a, 0x46607a1, 0x83d0964, 0x53d046c, 0x6eb023a, 0x1be0b97, 0x9e702fc, 0xffff066f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1dc057f, 0xb9807a6, 0x1c101a9, 0x4e70490, 0x36e00cf, 0x8420733, 0x97e00ef, 0x45f0848, 0x15f0b15, 0x68d0872, 0x2d7034a, 0x61108e1, 0xa6b0364, 0x8460ab8, 0x5570455, 0x6ba03cd, 0x1dd0580, 0xb9907a7, 0x1c201aa, 0x4e80491, 0x36f00d0, 0x8430734, 0x97f00f0, 0x4600849, 0x1600b16, 0x68e0873, 0x2d8034b, 0x61208e2, 0xa6c0365, 0x8470ab9, 0x5580456, 0x6bb03ce, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9a20084, 0x31f0725, 0x412025b, 0x40e05f5, 0x91b0069, 0x56306dd, 0x3480010, 0xa080617, 0x4ac0475, 0x19507ac, 0x6ee030b, 0x1ee0aa6, 0x8a604f3, 0xaef06cb, 0x9e80a53, 0x50507b8, 0x9a30085, 0x3200726, 0x413025c, 0x40f05f6, 0x91c006a, 0x56406de, 0x3490011, 0xa090618, 0x4ad0476, 0x19607ad, 0x6ef030c, 0x1ef0aa7, 0x8a704f4, 0xaf006cc, 0x9e90a54, 0x50607b9, 0x3f8065a, 0x8b20055, 0x8db05ed, 0x4370023, 0x3760598, 0xbf, 0x8140743, 0x5090536, 0x207bc, 0x757019b, 0x44b04a6, 0xa96033d, 0x2730afd, 0x547016e, 0x99c06ae, 0x9d20b9e, 0x140368, 0x3f9065b, 0x8b30056, 0x8dc05ee, 0x4380024, 0x3770599, 0x100c0, 0x8150744, 0x50a0537, 0x307bd, 0x758019c, 0x44c04a7, 0xa97033e, 0x2740afe, 0x548016f, 0x99d06af, 0x9d30b9f, 0x150369, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); //11648 bytes enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0x11c0], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180017, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0x1a0000, 0x1b, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x0, 0x0, 0x250024, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x280027, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0029, 0x2c002b, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e0000, 0x2f, 0x310030, 0x330032, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340000, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0039, 0x3c003b, 0x3d0000, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x420041, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9beffff, 0x984008a, 0x3440658, 0x9ac00c7, 0xa7c0c6a, 0xbf40074, 0x8b10736, 0xb9100ef, 0x4a608c3, 0x62905e6, 0xae607fe, 0x1ac0199, 0x5210569, 0xffff0320, 0xffffffff, 0xffffffff, 0x9bfffff, 0x985008b, 0x3450659, 0x9ad00c8, 0xa7d0c6b, 0xbf50075, 0x8b20737, 0xb9200f0, 0x4a708c4, 0x62a05e7, 0xae707ff, 0x1ad019a, 0x522056a, 0xffff0321, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa0bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x60507f2, 0x8e3012e, 0xa640b9a, 0x4120277, 0x3c105a6, 0xc18013e, 0x3c9068a, 0x340004e, 0x97c0650, 0x2c20090, 0x5da0781, 0xffff00d5, 0xa2a0ba7, 0x5430230, 0x9110771, 0xba20af9, 0x60607f3, 0x8e4012f, 0xa650b9b, 0x4130278, 0x3c205a7, 0xc19013f, 0x3ca068b, 0x341004f, 0x97d0651, 0x2c30091, 0x5db0782, 0xffff00d6, 0xa2b0ba8, 0x5440231, 0x9120772, 0x39b0afa, 0xa890a88, 0x5120511, 0x1e601e5, 0xc230c22, 0x21d021c, 0x7a607a5, 0xd800d7, 0x9460945, 0x650064, 0x6730672, 0x5b005a, 0x67f067e, 0x2d802d7, 0x6c406c3, 0x1730172, 0x8890888, 0xc550c54, 0x8680867, 0x5040503, 0xb180b17, 0x1cd01cc, 0x5e505e4, 0x2390238, 0xa140a13, 0xffff03f6, 0x90a0909, 0x9dd09dc, 0x3470346, 0x9effff, 0x76d009f, 0x98076e, 0x8a70099, 0xbf908a8, 0x8440bfa, 0x1360845, 0xad60137, 0x31a0ad7, 0x5240523, 0x83f083e, 0xc310c30, 0x72a0729, 0x17b017a, 0x6eb06ea, 0x2d002cf, 0x6690668, 0xf000e, 0x6a0069f, 0x790078, 0x8c608c5, 0xdc00db, 0x79c079b, 0x1fb01fa, 0xc4d0c4c, 0x1bb01ba, 0x50c050b, 0xb080b07, 0x84b084a, 0x5b305b2, 0xa1e0a1d, 0xaab0aaa, 0x684039c, 0x250685, 0x65a0026, 0x62b065b, 0x6f006f9, 0xbe00bdf, 0x28a0289, 0x2950571, 0xc020296, 0x1c80881, 0xffff01c9, 0xb8107e0, 0x94e0afb, 0x56b094f, 0x247029b, 0xa380bd0, 0xa100a0, 0xffff050f, 0x98a00b4, 0x35600dd, 0x1d001c, 0x68d068c, 0x1180117, 0x40605a0, 0xa4e0407, 0xffffffff, 0x1820181, 0x7d00874, 0x1c007d1, 0x57707f8, 0x3280578, 0xb7f0329, 0x2760275, 0xffffffff, 0x9c109c0, 0x1c6ffff, 0xffffffff, 0xffffffff, 0x9ce09cd, 0x63b09cf, 0x63d063c, 0xbaa0ba9, 0x5450bab, 0x8120546, 0xb130813, 0x7e20b14, 0x47c07e3, 0xb39047d, 0x3240b3a, 0x59e0325, 0x7e1059f, 0xc1f0c1e, 0x6b606b5, 0x1840183, 0x6570656, 0x2e602e5, 0x6a606a5, 0x1010100, 0x7140713, 0x5bd05bc, 0xb790928, 0xb7b0b7a, 0x7bf07be, 0x1c70248, 0xc390c38, 0x2070206, 0x4550454, 0xa180a17, 0x8ce08cd, 0x5f105f0, 0x9e409e3, 0x95b095a, 0x3e103e0, 0x92d092c, 0xbd90bd8, 0x4570456, 0x4460445, 0xb480b47, 0x2da02d9, 0x57c057b, 0x1860185, 0x8770876, 0x60f060e, 0x8d808d7, 0xffff00de, 0x73d073c, 0x6d006c, 0xc4f0c4e, 0xcc00cb, 0x7b407b3, 0x820081, 0x91b091a, 0x5c905c8, 0x7650764, 0xffffffff, 0xffffffff, 0xffffffff, 0x8100abe, 0x5100811, 0xa030838, 0x16402ad, 0x6fa0165, 0x2fa0458, 0xa810a80, 0x9c709c6, 0x34f034e, 0x9fa09f9, 0xaa70aa6, 0xbe8043b, 0x6f1023a, 0xffff0572, 0x8820c03, 0xb82ffff, 0xafcffff, 0xffff09e5, 0xffffffff, 0xbf7056c, 0x29cffff, 0xc41ffff, 0xffff00bf, 0xbd10a39, 0x69b0109, 0xffff0a32, 0xb5ffff, 0x5f7ffff, 0xffff098b, 0x357ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x35ffff, 0xffffffff, 0xffff05a1, 0xa4f055f, 0xffffffff, 0x380ffff, 0x4590875, 0x7f901c1, 0xffff02fb, 0xffffffff, 0xffffffff, 0xffff0b80, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9cffff, 0xffff077f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa19ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4e604e5, 0x1e801e7, 0xffffffff, 0x2120211, 0xffffffff, 0xaeaffff, 0x8ff0138, 0x3b3ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff02bc, 0x8b30746, 0xffff00fa, 0xffff0878, 0xa750c70, 0x4f90883, 0x19504f1, 0xb7c0aca, 0x17f01eb, 0xa1a05ec, 0xbce0bfb, 0x8a90a0c, 0x11903cd, 0x68e0c3e, 0x6f2ffff, 0x6660358, 0xb60372, 0x76a099e, 0xa408d9, 0x74702bd, 0xfb08b4, 0x4fa0a79, 0x19604f2, 0xb7d0acb, 0x18001ec, 0xa1b05ed, 0xbcf0bfc, 0x8aa0a0d, 0x11a03ce, 0x68f0c3f, 0x6f406f3, 0x6670359, 0xb70373, 0x76b099f, 0xa508da, 0xc710879, 0xa1f0a76, 0x5ee04f3, 0xffffffff, 0x374ffff, 0xa200c40, 0x1a501a4, 0x4ec04eb, 0xb420b41, 0x8f008ef, 0x5d105d0, 0xa310a30, 0xa8b0a8a, 0x3f003ef, 0x31d031c, 0x95f095e, 0x4850484, 0x3940393, 0x6900bfd, 0x3b401ef, 0xb7e05ef, 0xb3dffff, 0x1f00b3e, 0x6310630, 0xaebffff, 0x9000139, 0x5650539, 0xa1502b4, 0xa360bba, 0x603009a, 0x99a076f, 0x99800aa, 0x348064a, 0x3c300a6, 0xc0e0790, 0x3f8058d, 0x40a0757, 0xb72029d, 0x8fb0b45, 0x4fd013c, 0x8240894, 0x1d20ac4, 0x55a0872, 0x3060b2c, 0xb8d0a4c, 0x1740265, 0x6c505ca, 0xc2609de, 0x6800a9d, 0x5c03fc, 0xc0f0791, 0x3f9058e, 0x40b0758, 0xb73029e, 0x8fc0b46, 0x4fe013d, 0x8250895, 0x1d30ac5, 0x55b0873, 0x3070b2d, 0xb8e0a4d, 0x1750266, 0x6c605cb, 0xc2709df, 0x6810a9e, 0x5d03fd, 0x566053a, 0xa1602b5, 0xa370bbb, 0x604009b, 0x99b0770, 0x99900ab, 0x349064b, 0x3c400a7, 0xb5c0b5b, 0x6250624, 0x2640263, 0xc130c12, 0x2160215, 0x41d041c, 0xa5f0a5e, 0x8e608e5, 0x5f605f5, 0x97f097e, 0x9630962, 0x3cc03cb, 0x9190918, 0x9db09da, 0x4150414, 0x4530452, 0xbeb0bea, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5fe05fd, 0x8b608b5, 0xf500f4, 0x73f073e, 0x670066, 0x67b067a, 0x50004, 0x7a407a3, 0xd400d3, 0x9440943, 0x5b505b4, 0x7220721, 0x11e011d, 0x5380537, 0x1b901b8, 0xac10ac0, 0x4950494, 0x8350834, 0xc3b0c3a, 0x8bc08bb, 0x4420441, 0xa680a67, 0x98d098c, 0x3510350, 0x9770976, 0xaa90aa8, 0x3eb03ea, 0x7310302, 0x23c0732, 0x632023d, 0x2550633, 0xad40256, 0x4e10ad5, 0x80c04e2, 0x303080d, 0x25a0259, 0x5a905a8, 0x2820281, 0x7540753, 0x610060, 0x6870686, 0x220021, 0x6e006df, 0x1290128, 0x6db06da, 0x2680267, 0x5b705b6, 0x1310130, 0x8230822, 0x4dc04db, 0x7ef07ee, 0xb4a0b49, 0x4a904a8, 0x2540253, 0xbc50bc4, 0x3be03bd, 0x4670466, 0x9af09ae, 0x9670966, 0x3650364, 0x9c509c4, 0xab10ab0, 0x40f040e, 0x8b008af, 0xb4e0b4d, 0x8150814, 0x1e401e3, 0xacf0ace, 0x2eb02ea, 0x5340533, 0x18a0189, 0x710070f, 0x6130612, 0x6ac06ab, 0x30002f, 0x6980697, 0x3c003b, 0xc350c34, 0xbe00bd, 0x7ae07ad, 0xb8c0b8b, 0x9230922, 0x5360535, 0xc72ffff, 0x2450197, 0x78904fb, 0xb5302b6, 0x8df0b83, 0x5d804be, 0x74403da, 0x14a0c2e, 0x6e403b5, 0x32a0382, 0x6e609a4, 0x14c09d0, 0x748060c, 0xbf009ed, 0x8e70ab6, 0x549056f, 0x78502b8, 0x24d0af0, 0x637019d, 0xffff0800, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xc73ffff, 0x2460198, 0x78a04fc, 0xb5402b7, 0x8e00b84, 0x5d904bf, 0x74503db, 0x14b0c2f, 0x6e503b6, 0x32b0383, 0x6e709a5, 0x14d09d1, 0x749060d, 0xbf109ee, 0x8e80ab7, 0x54a0570, 0x78602b9, 0x24e0af1, 0x638019e, 0x6620801, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x8ad0a60, 0x5560422, 0x766020c, 0x1ca0c5e, 0x4c60261, 0x1d004d9, 0xb570b55, 0x4ac090d, 0x88605b8, 0xbbc070b, 0x3c50107, 0x46c06a7, 0x9aa0300, 0x96006f7, 0x3680168, 0x9b806d4, 0xa970c1a, 0x40808db, 0x308011b, 0xb61ffff, 0xffffffff, 0xffffffff, 0xb0bffff, 0xffffffff, 0xbac016c, 0x4350702, 0x468061c, 0x9d606ca, 0x3420031, 0x3fe064c, 0xaa10029, 0x9cb0c04, 0x5aa0096, 0x8eb071d, 0xa530ba5, 0x4640913, 0x2320547, 0xaba07d8, 0x26901f3, 0x7830519, 0xb6802c4, 0x8a30a40, 0x5d60418, 0x75c0400, 0x1340bfe, 0xffff03d1, 0x10ffff, 0x6fd09a6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x46e062e, 0x39100cd, 0x8a1072f, 0x9d80076, 0x3a5093b, 0xaac0bf2, 0x9580660, 0x362008c, 0x2130b24, 0xb1102f4, 0x9fb0725, 0x5ac014e, 0xc4a085b, 0x84205c4, 0x52704cc, 0x7d40a9b, 0x30e048a, 0x6ad03a9, 0x15808dd, 0x70d0a48, 0x4a049a, 0x93009ba, 0x4c0c6c, 0x693033e, 0x2510a59, 0xc320a8c, 0x940291, 0x7af0590, 0xabc0ba0, 0x7f60787, 0x2000573, 0x4ff0953, 0xaae02ab, 0x3e2074a, 0x6100217, 0x8900c08, 0x37a0639, 0x39906ee, 0x2d30150, 0x9d20719, 0xc500054, 0x3bf0682, 0x474006a, 0xffffffff, 0xc510055, 0x3c00683, 0x475006b, 0xffffffff, 0x759058f, 0x55c0ac6, 0xb2f0b2e, 0x62609e0, 0xffff0708, 0xffffffff, 0xffffffff, 0xffffffff, 0xbad016d, 0x4360703, 0x469061d, 0x9d706cb, 0x3430032, 0x3ff064d, 0xaa2002a, 0x9cc0c05, 0x5ab0097, 0x8ec071e, 0xa540ba6, 0x4650914, 0x2330548, 0xabb07d9, 0x26a01f4, 0x784051a, 0xb6902c5, 0x8a40a41, 0x5d70419, 0x75d0401, 0x1350bff, 0xffff03d2, 0x11ffff, 0x6fe09a7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x561ffff, 0xffffffff, 0x338ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0c62, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7630762, 0x50e050d, 0x7ed07ec, 0xc530c52, 0x88b088a, 0x4b304b2, 0xa2d0a2c, 0x280027f, 0x5c705c6, 0x9a909a8, 0x9950994, 0x3610360, 0x2f302f2, 0x9b509b4, 0x4990498, 0x40d040c, 0xbc90bc8, 0x8410840, 0x5260525, 0xad10ad0, 0x1c501c4, 0x6230622, 0x260025f, 0x7a0079f, 0xe500e4, 0x8ca08c9, 0x690068, 0x6750674, 0x150014, 0x66d066c, 0x2c702c6, 0x6fc06fb, 0x1770176, 0x7240723, 0x6080607, 0x8190818, 0xb1a0b19, 0x4d404d3, 0x2250224, 0xc250c24, 0x22b022a, 0x4170416, 0x9ea09e9, 0x90c090b, 0x3850384, 0x9a109a0, 0x96f096e, 0x3ae03ad, 0x9160915, 0xa080a07, 0x4110410, 0x2210220, 0xc070c06, 0x1cf01ce, 0x4c104c0, 0xaf60af5, 0x85e085d, 0x61b061a, 0x89c089b, 0x1670166, 0x6be06bd, 0x2d202d1, 0x6920691, 0x510050, 0x67d067c, 0x930092, 0x9380937, 0x58c058b, 0x7ac07ab, 0x2230222, 0x5080507, 0x1ea01e9, 0xb100b0f, 0x47b047a, 0x84d084c, 0xdf0c5c, 0x5ba03fa, 0x917049e, 0xffffffff, 0xffff0ba3, 0x3310330, 0x9870986, 0xa740a73, 0x3d603d5, 0x2740273, 0xb9f0b9e, 0x46b046a, 0x8660865, 0xad90ad8, 0x82b082a, 0x50a0509, 0x7930792, 0x2370236, 0x5930592, 0xa300a2, 0x7740773, 0xad00ac, 0x6550654, 0x570056, 0x6b406b3, 0x13b013a, 0xbbf0bbe, 0x3270326, 0x57e057d, 0x12d012c, 0x7e907e8, 0x4d804d7, 0x82f082e, 0xb270b26, 0x430042f, 0x26e026d, 0xc490c48, 0x3f203f1, 0x4770476, 0x9710970, 0x9970996, 0x390038f, 0x9c309c2, 0xa3d0a3c, 0x5990598, 0x93a0939, 0xb310b30, 0x48d048c, 0x1b301b2, 0xb000aff, 0x1ee01ed, 0x74f074e, 0xfd00fc, 0x3dc0664, 0xab20039, 0x9f30c0a, 0x5a20102, 0x3dd0665, 0xab3003a, 0x9f40c0b, 0x5a30103, 0xae807e4, 0x24901b6, 0x7680513, 0xffffffff, 0xae907e5, 0x24a01b7, 0x7690514, 0xffffffff, 0x65c03cf, 0x1a032c, 0x6e80988, 0x18b0901, 0x65d03d0, 0x1b032d, 0x6e90989, 0x18c0902, 0xaec030c, 0x19b0b87, 0x4ed01bc, 0x1fc0807, 0xaed030d, 0x19c0b88, 0x4ee01bd, 0x1fd0808, 0x37e007d, 0x386063e, 0x95c000c, 0xffffffff, 0x37f007e, 0x387063f, 0x95d000d, 0xffffffff, 0x2020085, 0xb1508ed, 0x51b0bec, 0x7e6072b, 0x203ffff, 0xb16ffff, 0x51cffff, 0x7e7ffff, 0x2ec0a3a, 0x6b70478, 0x2d03e6, 0x6400c5a, 0x2ed0a3b, 0x6b80479, 0x2e03e7, 0x6410c5b, 0x3140482, 0xa8202fc, 0x2260b2a, 0x45a0627, 0xa0982, 0xb0d0b6a, 0x678034c, 0xffffffff, 0xac70be3, 0x8560b76, 0x5f20794, 0x9910140, 0xac80be4, 0x8570b77, 0x5f30795, 0x9920141, 0x3ec0750, 0xaa30634, 0x9c80bda, 0x6090219, 0x3ed0751, 0xaa40635, 0x9c90bdb, 0x60a021a, 0xc450a90, 0xb1f0b95, 0x7b50947, 0x1f7054f, 0xc460a91, 0xb200b96, 0x7b60948, 0x1f80550, 0x6cc03a1, 0xa23048e, 0xffff0336, 0x3f0c43, 0x6cd03a2, 0x3150483, 0xffff0a24, 0xffff0a1c, 0xffffffff, 0xaf2084e, 0xffff0a9f, 0x51f0581, 0xa8302fd, 0x2270b2b, 0xffff0af3, 0xffffffff, 0x38d00c5, 0x884091e, 0xffffffff, 0x96c064e, 0x38e00c6, 0x45b0628, 0xffffffff, 0xffffffff, 0x1dc018f, 0xa7a08e9, 0x2be0c16, 0x4e707f4, 0x1dd0190, 0xb0e0b6b, 0xffff02bf, 0xffffffff, 0xffffffff, 0x6ff0a6b, 0xffff05d2, 0x6d8091c, 0xb0983, 0x679034d, 0xffff0700, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff076c, 0xffffffff, 0xa660bf6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff09f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff09f8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb32082c, 0x49604d5, 0x19107de, 0xaf70a86, 0x208057f, 0x7790318, 0xeb0bb0, 0x8b90488, 0xb33082d, 0x49704d6, 0x19207df, 0xaf80a87, 0x2090580, 0x77a0319, 0xec0bb1, 0x8ba0489, 0xffffffff, 0x905ffff, 0xffff0906, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5e803ab, 0xb00bee, 0x7bc08a5, 0x5750437, 0x92e0a77, 0xb4b022c, 0x83004c8, 0x1a60241, 0xb59078e, 0x2c00115, 0x56308f1, 0xa210be6, 0x9e706bf, 0x5e903ac, 0xb10bef, 0x7bd08a6, 0x5760438, 0x92f0a78, 0xb4c022d, 0x83104c9, 0x1a70242, 0xb5a078f, 0x2c10116, 0x56408f2, 0xa220be7, 0x9e806c0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x6b90402, 0x11f0bb2, 0x71f08b7, 0x554047e, 0x8fd0b05, 0xb6c01e1, 0x7ca04dd, 0x2430228, 0xc2a077b, 0x2970583, 0x447089d, 0xa2e00b2, 0x9e10775, 0x5f90033, 0xa010699, 0x9740045, 0x3d306d2, 0x907016a, 0xbd206ec, 0x41e062c, 0x43d0850, 0xb5d012a, 0x30a0501, 0x58501d4, 0x6ba0403, 0x1200bb3, 0x72008b8, 0x555047f, 0x8fe0b06, 0xb6d01e2, 0x7cb04de, 0x2440229, 0xc2b077c, 0x2980584, 0x448089e, 0xa2f00b3, 0x9e20776, 0x5fa0034, 0xa02069a, 0x9750046, 0x3d406d3, 0x908016b, 0xbd306ed, 0x41f062d, 0x43e0851, 0xb5e012b, 0x30b0502, 0x58601d5, 0x3e003d, 0x339069c, 0xabf0036, 0xa840839, 0x3af0a85, 0x28503b0, 0xbe90286, 0x43c05f8, 0xffff023b, 0xacd0acc, 0x7c4ffff, 0xffff07c5, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ae0a04, 0x2c902c8, 0x3670366, 0x9690968, 0x9b309b2, 0x3a403a3, 0x2df02de, 0xa3f0a3e, 0x4af04ae, 0x88d088c, 0xc210c20, 0x7f107f0, 0x4f504f4, 0xb1c0b1b, 0x2050204, 0x5bf05be, 0xee00ed, 0x79e079d, 0x6f006e, 0x940093f, 0x240023, 0x6890688, 0x630062, 0xbe20be1, 0x2840283, 0x72e072d, 0x1a901a8, 0x83b083a, 0x6150614, 0x7c707c6, 0xaef0aee, 0x52a0529, 0x2a0029f, 0xbc70bc6, 0x3df03de, 0x4b104b0, 0x9fe09fd, 0x9730972, 0x3530352, 0x9d509d4, 0xa6a0a69, 0x5cd05cc, 0x8be08bd, 0xb670b66, 0x45d045c, 0x2350234, 0xac30ac2, 0x1bf01be, 0x77e077d, 0x1220121, 0x8ac08ab, 0xffffffff, 0xffffffff, 0xffffffff, 0x38bffff, 0x354038c, 0xffff0355, 0xffffffff, 0x7410740, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x8ae0a61, 0x5570423, 0x767020d, 0x1cb0c5f, 0x4c70262, 0x1d104da, 0xb580b56, 0x4ad090e, 0x88705b9, 0xbbd070c, 0x3c60108, 0x46d06a8, 0x9ab0301, 0x96106f8, 0x3690169, 0x9b906d5, 0xa980c1b, 0x40908dc, 0x309011c, 0xb62ffff, 0xffffffff, 0xffffffff, 0xb0cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f201f1, 0xad30ad2, 0xb520b51, 0x8170816, 0x1570156, 0x70a0709, 0x2e102e0, 0x53e053d, 0x420041, 0x6a206a1, 0x6170616, 0x6aa06a9, 0x80007f, 0x7b207b1, 0x440043, 0xc370c36, 0x5320531, 0x7fd07fc, 0xb940b93, 0x9270926, 0x2ef02ee, 0xb860b85, 0x1940193, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x55e055d, 0x2bb02ba, 0x9f009ef, 0xab50ab4, 0x8290828, 0xb3c0b3b, 0xafe0afd, 0x1a301a2, 0x7c107c0, 0xb900b8, 0x9210920, 0x57a0579, 0x6470646, 0x380037, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x90008, 0x9420941, 0xd000cf, 0x7610760, 0xf700f6, 0x66f066e, 0x710070, 0xffffffff, 0x1710170, 0x8c008bf, 0xc150c14, 0x54c054b, 0xa700a6f, 0xadf0ade, 0x2d602d5, 0x910090f, 0xa060a05, 0xa290a28, 0x3c803c7, 0xc290c28, 0x8e208e1, 0x33d033c, 0x35d035c, 0x22f022e, 0x60005ff, 0x44c044b, 0xa350a34, 0x5680567, 0x8fa08f9, 0x25c025b, 0xadb0ada, 0x1140113, 0x6cf06ce, 0xbd70bd6, 0x7120711, 0x16f016e, 0x6c206c1, 0x3110310, 0x7050704, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x81cffff, 0x51d081d, 0x562051e, 0xc3d0c3c, 0x5d505d4, 0xa630a62, 0xb900b8f, 0x8d208d1, 0xffffffff, 0x58ffff, 0xc420059, 0xffffffff, 0xbd50bd4, 0x26c026b, 0xffff0826, 0x3e503e4, 0x85a0859, 0x4e004df, 0x4340433, 0xa8f0a8e, 0x5590558, 0x29a0299, 0x89a0899, 0x1330132, 0x7780777, 0x9e600c0, 0xa330bf8, 0xffff010a, 0x3810780, 0xc2c009d, 0x6450644, 0xa900a8, 0x7560755, 0x1550154, 0x59d059c, 0x2b002af, 0x88f088e, 0x4710470, 0x5600827, 0x7d20c63, 0x18d07d3, 0xffff018e, 0xffffffff, 0xffffffff, 0x31f031e, 0xffffffff, 0xffffffff, 0x33b033a, 0xbb70bb6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa99ffff, 0xffff0a9a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xc2dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x46f062f, 0x39200ce, 0x8a20730, 0x9d90077, 0x3a6093c, 0xaad0bf3, 0x9590661, 0x363008d, 0x2140b25, 0xb1202f5, 0x9fc0726, 0x5ad014f, 0xc4b085c, 0x84305c5, 0x52804cd, 0x7d50a9c, 0x30f048b, 0x6ae03aa, 0x15908de, 0x70e0a49, 0x4b049b, 0x93109bb, 0x4d0c6d, 0x694033f, 0x2520a5a, 0xc330a8d, 0x950292, 0x7b00591, 0xabd0ba1, 0x7f70788, 0x2010574, 0x5000954, 0xaaf02ac, 0x3e3074b, 0x6110218, 0x8910c09, 0x37b063a, 0x39a06ef, 0x2d40151, 0x9d3071a, 0x8c10bca, 0x5fb0148, 0xb630846, 0xffff0b64, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9f5ffff, 0x4b4069d, 0x35a0016, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa6dffff, 0x2870bb8, 0x601015a, 0x9f106a3, 0x7c20515, 0xc6607ea, 0x83c0152, 0x439053f, 0x59a0279, 0x3160426, 0xb3f0b6e, 0x1b0081e, 0x65e0964, 0xffff0490, 0xffffffff, 0xffffffff, 0xa6effff, 0x2880bb9, 0x602015b, 0x9f206a4, 0x7c30516, 0xc6707eb, 0x83d0153, 0x43a0540, 0x59b027a, 0x3170427, 0xb400b6f, 0x1b1081f, 0x65f0965, 0xffff0491, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7c80b1d, 0x61807d6, 0x86d0146, 0xa570b70, 0xbc009ff, 0x3040a46, 0x52b0541, 0x15c0854, 0x4ba00f8, 0x96a0695, 0x2f60052, 0x39d0797, 0x44302f8, 0x27d0596, 0xc56015e, 0x3b106d6, 0xb890b34, 0x4bc0805, 0x24f04c4, 0xc1c07fa, 0x7c90b1e, 0x61907d7, 0x86e0147, 0xa580b71, 0xbc10a00, 0x3050a47, 0x52c0542, 0x15d0855, 0x4bb00f9, 0x96b0696, 0x2f70053, 0x39e0798, 0x44402f9, 0x27e0597, 0xc57015f, 0x3b206d7, 0xb8a0b35, 0x4bd0806, 0x25004c5, 0xc1d07fb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb980b01, 0x7b80869, 0x25705c0, 0xbcc0a42, 0xa71024b, 0x80e0c10, 0x4e3026f, 0x7da04c2, 0x61e035e, 0x7150370, 0x1d80c00, 0x73802a4, 0x2a90a55, 0x6b10420, 0x2b0312, 0x66a0978, 0xae007cc, 0x94a0ae2, 0xffffffff, 0xffffffff, 0xb990b02, 0x7b9086a, 0x25805c1, 0xbcd0a43, 0xa72024c, 0x80f0c11, 0x4e40270, 0x7db04c3, 0x61f035f, 0x7160371, 0x1d90c01, 0x73902a5, 0x2aa0a56, 0x6b20421, 0x2c0313, 0x66b0979, 0xae107cd, 0x94b0ae3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4a00924, 0x28b00ae, 0xbae0717, 0x2710123, 0x9eb0c0c, 0xffff00c1, 0x99c0642, 0x9a200c3, 0x8480892, 0x1600c58, 0x5ae08c7, 0x32e041a, 0x45e05dc, 0xffff02cd, 0x7dc0adc, 0x52d04b8, 0x6af0ae4, 0xffff03e8, 0x74202f0, 0x925ffff, 0xaf04a1, 0x718028c, 0x1240baf, 0xc0d0272, 0xc209ec, 0x643ffff, 0xc4099d, 0x89309a3, 0xc590849, 0x8c80161, 0x41b05af, 0x5dd032f, 0x2ce045f, 0xaddffff, 0x4b907dd, 0xae5052e, 0x3e906b0, 0x2f1ffff, 0xffff0743, 0xffffffff, 0x4ca0517, 0x16201aa, 0x8630c64, 0x5c201fe, 0x4240706, 0x4800620, 0xb43086b, 0x3320b03, 0xc6009b6, 0xd109b0, 0x7a1036e, 0xd9092a, 0x8f704a4, 0x1110a11, 0x7a70932, 0x830397, 0x56d021e, 0x36c0505, 0xb9c0b28, 0x4a2081a, 0x8cb0a09, 0x58904aa, 0x75a025d, 0x1d60002, 0xa930322, 0xffff06d0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4cb0518, 0x16301ab, 0x8640c65, 0x5c301ff, 0x4250707, 0x4810621, 0xb44086c, 0x3330b04, 0xc6109b7, 0xd209b1, 0x7a2036f, 0xda092b, 0x8f804a5, 0x1120a12, 0x7a80933, 0x840398, 0x56e021f, 0x36d0506, 0xb9d0b29, 0x4a3081b, 0x8cc0a0a, 0x58a04ab, 0x75b025e, 0x1d70003, 0xa940323, 0xffff06d1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f505ce, 0xc680820, 0x1da01c2, 0x52f04d1, 0x39f00e9, 0x8cf07a9, 0xa2600fe, 0x49c08d5, 0x1780bdd, 0x6f50903, 0x2fe0378, 0x6700980, 0xb220395, 0x8d30b74, 0x5a40492, 0x7270404, 0x1f605cf, 0xc690821, 0x1db01c3, 0x53004d2, 0x3a000ea, 0x8d007aa, 0xa2700ff, 0x49d08d6, 0x1790bde, 0x6f60904, 0x2ff0379, 0x6710981, 0xb230396, 0x8d40b75, 0x5a50493, 0x7280405, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa4a008e, 0x34a0799, 0x44d027b, 0x4490652, 0x9bc0072, 0x5b0074c, 0x37c0012, 0xab80676, 0x4ef04b6, 0x1ae0836, 0x75e0334, 0x20a0b5f, 0x93d053b, 0xbb4073a, 0xa950b09, 0x54d0832, 0xa4b008f, 0x34b079a, 0x44e027c, 0x44a0653, 0x9bd0073, 0x5b1074d, 0x37d0013, 0xab90677, 0x4f004b7, 0x1af0837, 0x75f0335, 0x20b0b60, 0x93e053c, 0xbb5073b, 0xa960b0a, 0x54e0833, 0x43106bb, 0x94c005e, 0x97a0648, 0x4720027, 0x3a705ea, 0xc9, 0x89f07ba, 0x5520587, 0x60852, 0x7ce01b4, 0x48604e9, 0xb4f036a, 0x2930bc2, 0x5940187, 0xa44071b, 0xa7e0c6e, 0x18043f, 0x43206bc, 0x94d005f, 0x97b0649, 0x4730028, 0x3a805eb, 0x100ca, 0x8a007bb, 0x5530588, 0x70853, 0x7cf01b5, 0x48704ea, 0xb50036b, 0x2940bc3, 0x5950188, 0xa45071c, 0xa7f0c6f, 0x190440, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); -//5568 bytes -enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x1a0], [ 0x100, 0x2c0, 0x7a00], [ 0x3020100, 0x6050403, 0xa090807, 0xe0d0c0b, 0x3030303, 0x11100f03, 0x14141312, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xf000e, 0x10010, 0x120011, 0x10013, 0x150014, 0x170016, 0x190018, 0x1b001a, 0x1c0001, 0x1e001d, 0x1f001f, 0x1f0020, 0x1f001f, 0x1f001f, 0x1f001f, 0x220021, 0x1f0023, 0x250024, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x260001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10027, 0x290028, 0x2b002a, 0x2d002c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2e0001, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1001f, 0x30002f, 0x310001, 0x330032, 0x350034, 0x370036, 0x390038, 0x3a0001, 0x3c003b, 0x3e003d, 0x40003f, 0x420041, 0x440043, 0x460045, 0x480047, 0x4a0049, 0x4c004b, 0x1f004d, 0x4f004e, 0x510050, 0x10001, 0x520001, 0x540053, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x55001f, 0x10001, 0x10001, 0x1f0056, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x1f0057, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x590058, 0x1f001f, 0x5b005a, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x5c0001, 0x10001, 0x10001, 0x5e005d, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x5f001f, 0x600001, 0x1f0061, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f0062, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x640063, 0x660065, 0x1f001f, 0x1f001f, 0x1f001f, 0x67001f, 0x690068, 0x1f006a, 0x1f006b, 0x6c001f, 0x6e006d, 0x1f001f, 0x1f001f, 0x1f006f, 0x70001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10071, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x720001, 0x10073, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10074, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x750001, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x1f0076, 0x1f001f, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x770001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x780001, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x0, 0x0, 0x7fffffe, 0x7fffffe, 0x0, 0x4200400, 0xff7fffff, 0xff7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffc3, 0x501f, 0x0, 0x0, 0x20, 0xbcdf0000, 0xffffd740, 0xfffffffb, 0xffffffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffc03, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff, 0x27fffff, 0xffffffff, 0x1ff, 0xbfff0000, 0xffff00b6, 0x787ff, 0x7ff0000, 0xffffffff, 0xfeffffff, 0xffffc000, 0xffffffff, 0xffffffff, 0x1fefffff, 0x9c00e1fe, 0xffff0000, 0xffffffff, 0xffffe000, 0xffffffff, 0xffffffff, 0x3ffff, 0xfffffc00, 0x43007ff, 0xfcffffff, 0x1fff, 0x1ffffff, 0xffff07ff, 0x7eff, 0xffffffff, 0xfff003ff, 0xffff03f8, 0xffffffff, 0xefffffff, 0xffe1dfff, 0xfffe000f, 0xfff99fef, 0xe3c5fdff, 0xb080599f, 0x1003000f, 0xfff987ee, 0xc36dfdff, 0x5e021987, 0x3f0000, 0xfffbbfee, 0xe3edfdff, 0x11bbf, 0x1e00000f, 0xfff99fee, 0xe3edfdff, 0xb0c0199f, 0x2000f, 0xd63dc7ec, 0xc3ffc718, 0x811dc7, 0x0, 0xfffddfff, 0xe3fffdff, 0x27601ddf, 0xf, 0xfffddfef, 0xe3effdff, 0x60601ddf, 0xe000f, 0xfffddfff, 0xe7ffffff, 0x80f05ddf, 0xfc00000f, 0xfc7fffee, 0x2ffbffff, 0xff5f807f, 0xc0000, 0xfffffffe, 0x7ffffff, 0x207f, 0x0, 0xfffff7d6, 0x3bffffaf, 0xf000205f, 0x0, 0x1, 0x0, 0xfffffeff, 0xfffe1fff, 0xfeffff0f, 0x1fffffff, 0x0, 0x0, 0xffffffff, 0xf97fffff, 0xffff0000, 0xffffffff, 0x3c00ffff, 0xffffffff, 0xffff20bf, 0xf7ffffff, 0xffffffff, 0xffffffff, 0x3d7f3dff, 0xffffffff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xffffffff, 0xff3dffff, 0xffffffff, 0x7ffffff, 0x0, 0xffff, 0xffffffff, 0xffffffff, 0x3f3fffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff9fff, 0x7fffffe, 0xffffffff, 0xffffffff, 0x1ffc7ff, 0x800fffff, 0xfffff, 0xfffff, 0xddfff, 0xffffffff, 0xffcfffff, 0x108001ff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0x3fffff, 0x7fffffff, 0x1ff0fff, 0xffff0000, 0x1f3fff, 0xffffffff, 0xffff0fff, 0x3ff, 0x0, 0xfffffff, 0xffffffff, 0x7fffffff, 0x1ffffe, 0x0, 0x80000080, 0x7001, 0x0, 0xffffffff, 0xffefffff, 0x1fef, 0x0, 0xffffffff, 0xfc00f3ff, 0xffffffff, 0x3ffbf, 0xffffffff, 0x7fffff, 0xfc00e000, 0x3fffffff, 0xffff01ff, 0xe7ffffff, 0x0, 0x46fde00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x1fff80, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0x5fdfffff, 0xfcf1fdc, 0x1fdc1fff, 0x0, 0x0, 0x0, 0x80020000, 0x1fff0000, 0x0, 0x0, 0x0, 0x3e2ffc84, 0xf3ffbd50, 0x43e0, 0xffffffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000, 0xffffffff, 0x3ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xc781f, 0xffffffff, 0xffff20bf, 0xffffffff, 0x80ff, 0x7fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0xffffffff, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x1f3e03fe, 0xfffffffe, 0xffffffff, 0xe07fffff, 0xfffffffe, 0xffffffff, 0xf7ffffff, 0xffffffe0, 0xfffeffff, 0xffffffff, 0xffffffff, 0x7fff, 0xffffffff, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff, 0x0, 0xffff0000, 0x3fffffff, 0xffff1fff, 0xc00, 0xffffffff, 0x8ff07fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0xff800000, 0xfffffffc, 0xffffffff, 0xffffffff, 0xfffff9ff, 0xffffffff, 0x3eb07ff, 0xfffc0000, 0xffffffbf, 0xff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0x2f, 0xe8fc0000, 0xfffffc00, 0xffff07ff, 0x7ffff, 0x1fffffff, 0xffffffff, 0xfff7ffff, 0x8000, 0x7c00ffff, 0xffffffff, 0x7fffff, 0x3fff, 0xfc7fffff, 0xffffffff, 0x7fffffff, 0x38000005, 0x3cffff, 0x7e7e7e, 0xffff7f7f, 0xf7ffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff000f, 0xfffff87f, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xe0f8007f, 0x5f7ffdff, 0xffffffdb, 0xffffffff, 0xffffffff, 0x3ffff, 0xfff80000, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xffffffff, 0xfffcffff, 0xffffffff, 0xff, 0xfff0000, 0x0, 0x0, 0x0, 0xffdf0000, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0x0, 0x7fffffe, 0x7fffffe, 0xffffffc0, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x0, 0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffff, 0x0, 0x0, 0xffffffff, 0x1fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1fffffff, 0xffffffff, 0x1ffff, 0x0, 0xffffffff, 0xffffe000, 0xffff07ff, 0x7ffffff, 0x3fffffff, 0xffffffff, 0x3eff0f, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xff0fffff, 0xfffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xf7ff000f, 0xffb7f7ff, 0x1bfbfffb, 0x0, 0x0, 0xffffffff, 0x7fffff, 0x3fffff, 0xff, 0xffffffbf, 0x7fdffff, 0x0, 0x0, 0xfffffd3f, 0x91bfffff, 0x3fffff, 0x7fffff, 0x7fffffff, 0x0, 0x0, 0x37ffff, 0x3fffff, 0x3ffffff, 0x0, 0x0, 0xffffffff, 0xc0ffffff, 0x0, 0x0, 0xfeeff06f, 0x3fffff, 0x0, 0x1fffffff, 0x1fffffff, 0x0, 0xfffffeff, 0x1f, 0xffffffff, 0x3fffff, 0x3fffff, 0x7ffff, 0x3ffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ff, 0x0, 0xffffffff, 0x7ffff, 0xffffffff, 0x7ffff, 0xffffffff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x31bff, 0x0, 0x0, 0x1fffffff, 0xffff0080, 0x3f, 0xffff0000, 0x3, 0xffff0000, 0x1f, 0x7fffff, 0xffffffff, 0xffffffff, 0x3f, 0x3e0000, 0xffffffff, 0x1ffffff, 0xffff0004, 0x1ff, 0xffffffff, 0x7ffff, 0xffff00f0, 0x47ffff, 0xffffffff, 0xffffffff, 0x1400c01e, 0x0, 0xfffbffff, 0xc09fffff, 0x3, 0x0, 0xbfffbd7f, 0xffff01ff, 0xffffffff, 0x1ff, 0xfff99fef, 0xe3edfdff, 0xe081199f, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x800007bb, 0x3, 0xffffffff, 0xffffffff, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7f3fffff, 0x3f000000, 0x0, 0xffffffff, 0x7fffffff, 0x11, 0x0, 0xffffffff, 0x13fffff, 0x0, 0x0, 0xe7ffffff, 0x7ff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x80000000, 0xff6ff27f, 0x99bfffff, 0x7, 0x0, 0x0, 0xfffffcff, 0xfcffffff, 0x1a, 0xffffffff, 0x7fe7ffff, 0xffff0000, 0xffffffff, 0x20ffffff, 0xffff0000, 0xffffffff, 0x1ffffff, 0xfffffdff, 0x7f7fffff, 0x1, 0xfffc0000, 0xfffcffff, 0x7ffeff, 0x0, 0x0, 0xfffffb7f, 0xb47fffff, 0xcb, 0xfffffdbf, 0x17b7fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffff, 0xfffdffff, 0xc7ffffff, 0x1, 0x0, 0x0, 0x10000, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0x1ffff, 0xffffffff, 0xffff, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x7fffffff, 0xffff0000, 0xffffffff, 0x7fffffff, 0xffff0000, 0x3fff, 0xffffffff, 0xffff, 0xf, 0xe0fffff8, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff87ff, 0xffffffff, 0xffff80ff, 0x0, 0x0, 0x3000b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef0000, 0xffffffff, 0x40007, 0x270000, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff07ff, 0x43ff01ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xf7fffffd, 0xf7ffffff, 0xffdfffff, 0xffdfffff, 0xffff7fff, 0xffff7fff, 0xfffffdff, 0xfffffdff, 0xff7, 0x0, 0x7fffffff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf9ffff7f, 0xffff07db, 0xffffffff, 0x3fff, 0x8000, 0x0, 0x0, 0x0, 0xffffffff, 0x3f801fff, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3fff, 0xffffffff, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff6f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f, 0x0, 0xffffffff, 0xffffffff, 0x88f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x0, 0x0, 0xffff0000, 0xffff03ff, 0xffff03ff, 0x3ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0003, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +//5600 bytes +enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x1a0], [ 0x100, 0x2c0, 0x7b00], [ 0x3020100, 0x6050403, 0xa090807, 0xe0d0c0b, 0x3030303, 0x11100f03, 0x14141312, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xf000e, 0x10010, 0x120011, 0x10013, 0x150014, 0x170016, 0x190018, 0x1b001a, 0x1c0001, 0x1e001d, 0x1f001f, 0x1f0020, 0x1f001f, 0x1f001f, 0x1f001f, 0x220021, 0x1f0023, 0x250024, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x260001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10027, 0x290028, 0x2b002a, 0x2d002c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2e0001, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1001f, 0x30002f, 0x310001, 0x330032, 0x350034, 0x370036, 0x390038, 0x3a0001, 0x3c003b, 0x3e003d, 0x40003f, 0x420041, 0x440043, 0x460045, 0x480047, 0x4a0049, 0x4c004b, 0x1f004d, 0x4f004e, 0x510050, 0x10001, 0x520001, 0x540053, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x55001f, 0x10001, 0x10001, 0x1f0056, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x1f0057, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x590058, 0x1f001f, 0x5b005a, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x5c0001, 0x10001, 0x10001, 0x5e005d, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x5f001f, 0x600001, 0x1f0061, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f0062, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x640063, 0x660065, 0x1f001f, 0x1f001f, 0x1f001f, 0x67001f, 0x690068, 0x1f006a, 0x1f006b, 0x6c001f, 0x6e006d, 0x1f001f, 0x1f001f, 0x1f006f, 0x70001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10071, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x720001, 0x10073, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10074, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x750001, 0x10001, 0x1f0076, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x1f0077, 0x1f001f, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x780001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x790001, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x0, 0x0, 0x7fffffe, 0x7fffffe, 0x0, 0x4200400, 0xff7fffff, 0xff7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffc3, 0x501f, 0x0, 0x0, 0x20, 0xbcdf0000, 0xffffd740, 0xfffffffb, 0xffffffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffc03, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff, 0x27fffff, 0xffffffff, 0x1ff, 0xbfff0000, 0xffff00b6, 0x787ff, 0x7ff0000, 0xffffffff, 0xfeffffff, 0xffffc000, 0xffffffff, 0xffffffff, 0x1fefffff, 0x9c00e1fe, 0xffff0000, 0xffffffff, 0xffffe000, 0xffffffff, 0xffffffff, 0x3ffff, 0xfffffc00, 0x43007ff, 0xfcffffff, 0x1fff, 0x1ffffff, 0xffff07ff, 0x7eff, 0xffffffff, 0xfff003ff, 0xffff03f8, 0xffffffff, 0xefffffff, 0xffe1dfff, 0xfffe000f, 0xfff99fef, 0xe3c5fdff, 0xb080599f, 0x1003000f, 0xfff987ee, 0xc36dfdff, 0x5e021987, 0x3f0000, 0xfffbbfee, 0xe3edfdff, 0x11bbf, 0x1e00000f, 0xfff99fee, 0xe3edfdff, 0xb0c0199f, 0x2000f, 0xd63dc7ec, 0xc3ffc718, 0x811dc7, 0x0, 0xfffddfff, 0xe3fffdff, 0x27601ddf, 0xf, 0xfffddfef, 0xe3effdff, 0x60601ddf, 0xe000f, 0xfffddfff, 0xe7ffffff, 0x80f05ddf, 0xfc00000f, 0xfc7fffee, 0x2ffbffff, 0xff5f807f, 0xc0000, 0xfffffffe, 0x7ffffff, 0x207f, 0x0, 0xfffff7d6, 0x3bffffaf, 0xf000205f, 0x0, 0x1, 0x0, 0xfffffeff, 0xfffe1fff, 0xfeffff0f, 0x1fffffff, 0x0, 0x0, 0xffffffff, 0xf97fffff, 0xffff0000, 0xffffffff, 0x3c00ffff, 0xffffffff, 0xffff20bf, 0xf7ffffff, 0xffffffff, 0xffffffff, 0x3d7f3dff, 0xffffffff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xffffffff, 0xff3dffff, 0xffffffff, 0x7ffffff, 0x0, 0xffff, 0xffffffff, 0xffffffff, 0x3f3fffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff9fff, 0x7fffffe, 0xffffffff, 0xffffffff, 0x1ffc7ff, 0x800fffff, 0xfffff, 0xfffff, 0xddfff, 0xffffffff, 0xffcfffff, 0x108001ff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0x3fffff, 0x7fffffff, 0x1ff0fff, 0xffff0000, 0x1f3fff, 0xffffffff, 0xffff0fff, 0x3ff, 0x0, 0xfffffff, 0xffffffff, 0x7fffffff, 0x1ffffe, 0x0, 0x80000080, 0x7001, 0x0, 0xffffffff, 0xffefffff, 0x1fef, 0x0, 0xffffffff, 0xfc00f3ff, 0xffffffff, 0x3ffbf, 0xffffffff, 0x7fffff, 0xfc00e000, 0x3fffffff, 0xffff01ff, 0xe7ffffff, 0x0, 0x46fde00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x1fff80, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0x5fdfffff, 0xfcf1fdc, 0x1fdc1fff, 0x0, 0x0, 0x0, 0x80020000, 0x1fff0000, 0x0, 0x0, 0x0, 0x3e2ffc84, 0xf3ffbd50, 0x43e0, 0xffffffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000, 0xffffffff, 0x3ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xc781f, 0xffffffff, 0xffff20bf, 0xffffffff, 0x80ff, 0x7fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0xffffffff, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x1f3e03fe, 0xfffffffe, 0xffffffff, 0xe07fffff, 0xfffffffe, 0xffffffff, 0xf7ffffff, 0xffffffe0, 0xfffeffff, 0xffffffff, 0xffffffff, 0x7fff, 0xffffffff, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff, 0x0, 0xffff0000, 0x3fffffff, 0xffff1fff, 0xc00, 0xffffffff, 0x8ff07fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0xff800000, 0xfffffffc, 0xffffffff, 0xffffffff, 0xfffff9ff, 0xffffffff, 0x3eb07ff, 0xfffc0000, 0xffffffbf, 0xff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0x2f, 0xe8fc0000, 0xfffffc00, 0xffff07ff, 0x7ffff, 0x1fffffff, 0xffffffff, 0xfff7ffff, 0x8000, 0x7c00ffff, 0xffffffff, 0x7fffff, 0x3fff, 0xfc7fffff, 0xffffffff, 0x7fffffff, 0x38000005, 0x3cffff, 0x7e7e7e, 0xffff7f7f, 0xf7ffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff000f, 0xfffff87f, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xe0f8007f, 0x5f7ffdff, 0xffffffdb, 0xffffffff, 0xffffffff, 0x3ffff, 0xfff80000, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xffffffff, 0xfffcffff, 0xffffffff, 0xff, 0xfff0000, 0x0, 0x0, 0x0, 0xffdf0000, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0x0, 0x7fffffe, 0x7fffffe, 0xffffffc0, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x0, 0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffff, 0x0, 0x0, 0xffffffff, 0x1fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1fffffff, 0xffffffff, 0x1ffff, 0x0, 0xffffffff, 0xffffe000, 0xffff07ff, 0x7ffffff, 0x3fffffff, 0xffffffff, 0x3eff0f, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xff0fffff, 0xfffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xf7ff000f, 0xffb7f7ff, 0x1bfbfffb, 0x0, 0x0, 0xffffffff, 0x7fffff, 0x3fffff, 0xff, 0xffffffbf, 0x7fdffff, 0x0, 0x0, 0xfffffd3f, 0x91bfffff, 0x3fffff, 0x7fffff, 0x7fffffff, 0x0, 0x0, 0x37ffff, 0x3fffff, 0x3ffffff, 0x0, 0x0, 0xffffffff, 0xc0ffffff, 0x0, 0x0, 0xfeeff06f, 0x3fffff, 0x0, 0x1fffffff, 0x1fffffff, 0x0, 0xfffffeff, 0x1f, 0xffffffff, 0x3fffff, 0x3fffff, 0x7ffff, 0x3ffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ff, 0x0, 0xffffffff, 0x7ffff, 0xffffffff, 0x7ffff, 0xffffffff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x31bff, 0x0, 0x0, 0x1fffffff, 0xffff0080, 0x3f, 0xffff0000, 0x3, 0xffff0000, 0x1f, 0x7fffff, 0xffffffff, 0xffffffff, 0x3f, 0x3e0000, 0xffffffff, 0x1ffffff, 0xffff0004, 0x1ff, 0xffffffff, 0x7ffff, 0xffff00f0, 0x47ffff, 0xffffffff, 0xffffffff, 0x1400c01e, 0x0, 0xfffbffff, 0xc09fffff, 0x3, 0x0, 0xbfffbd7f, 0xffff01ff, 0xffffffff, 0x1ff, 0xfff99fef, 0xe3edfdff, 0xe081199f, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x800007bb, 0x3, 0xffffffff, 0xffffffff, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7f3fffff, 0x3f000000, 0x0, 0xffffffff, 0x7fffffff, 0x11, 0x0, 0xffffffff, 0x13fffff, 0x0, 0x0, 0xe7ffffff, 0x7ff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x80000000, 0xff6ff27f, 0x99bfffff, 0x7, 0x0, 0x0, 0xfffffcff, 0xfcffffff, 0x1a, 0xffffffff, 0x7fe7ffff, 0xffff0000, 0xffffffff, 0x20ffffff, 0xffff0000, 0xffffffff, 0x1ffffff, 0xfffffdff, 0x7f7fffff, 0x1, 0xfffc0000, 0xfffcffff, 0x7ffeff, 0x0, 0x0, 0xfffffb7f, 0xb47fffff, 0xcb, 0xfffffdbf, 0x17b7fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffff, 0xfffdffff, 0xc7ffffff, 0x1, 0x0, 0x0, 0x10000, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0x1ffff, 0xffffffff, 0xffff, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x7fffffff, 0xffff0000, 0xffffffff, 0x7fffffff, 0xffff0000, 0x3fff, 0xffffffff, 0xffff, 0xf, 0xe0fffff8, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff87ff, 0xffffffff, 0xffff80ff, 0x0, 0x0, 0x3000b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef0000, 0xffffffff, 0x40007, 0x270000, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff07ff, 0x43ff01ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xf7fffffd, 0xf7ffffff, 0xffdfffff, 0xffdfffff, 0xffff7fff, 0xffff7fff, 0xfffffdff, 0xfffffdff, 0xff7, 0x0, 0x7fffffff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf9ffff7f, 0xffff07db, 0xffffffff, 0x3fff, 0x8000, 0x0, 0x0, 0x0, 0xffffffff, 0x3f801fff, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3fff, 0xffffffff, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff6f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f, 0x0, 0xffffffff, 0xffffffff, 0x88f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x0, 0x0, 0xffff0000, 0xffff03ff, 0xffff03ff, 0x3ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0003, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0001, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //3392 bytes enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x110], [ 0x100, 0x1a0, 0x4800], [ 0x2020100, 0x4020302, 0x7020605, 0xa090802, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x202020b, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xe, 0xf0000, 0x0, 0x100000, 0x120011, 0x140013, 0x160015, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x190018, 0x0, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x1d001c, 0x1f001e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200000, 0x0, 0x21, 0x220000, 0x240023, 0x0, 0x0, 0x0, 0x25, 0x260000, 0x280027, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0x320031, 0x33, 0x350034, 0x370036, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0039, 0x0, 0x3b0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3d0000, 0x3e0000, 0x3f, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x3a0041, 0x42, 0x43, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x460000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xbfffffff, 0xb6, 0x0, 0x7ff0000, 0x0, 0xfffff800, 0x10000, 0x0, 0x0, 0x9fc00000, 0x3d9f, 0x20000, 0xffff0000, 0x7ff, 0x0, 0x0, 0x1ffc0, 0x0, 0x200ff800, 0xfbc00000, 0x3eef, 0xe000000, 0x0, 0xff000000, 0x0, 0xfffffc00, 0xfffffffb, 0xf, 0xdc000000, 0xfeffff, 0xc, 0xe, 0xd0000000, 0x80399f, 0x4000000c, 0xe, 0xd0000000, 0x23987, 0x230000, 0xe, 0xd0000000, 0x3bbf, 0xfc00000c, 0xe, 0xd0000000, 0xe0399f, 0xc, 0x4, 0xc0000000, 0x803dc7, 0x0, 0x1f, 0xd0000000, 0x603ddf, 0xc, 0xe, 0xd0000000, 0x603ddf, 0x8000c, 0xf, 0xd8000000, 0x803ddf, 0xc, 0xe, 0x0, 0xff5f8400, 0xc0000, 0x0, 0x7f20000, 0x7f80, 0x0, 0x0, 0x1ff20000, 0x7f00, 0x0, 0x3000000, 0xc2a00000, 0x0, 0xfffe0000, 0xfeffe0df, 0x1fffffff, 0x40, 0x0, 0x0, 0x7ffff800, 0xc3c00000, 0x1e3f9d, 0x3c00bffc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c0000, 0x1c0000, 0xc0000, 0xc0000, 0x0, 0xfff00000, 0x200fffff, 0x0, 0xb800, 0x0, 0x0, 0x0, 0x60, 0x200, 0x0, 0x0, 0x0, 0xfff0fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf800000, 0x0, 0x7fe00000, 0x9fffffff, 0x0, 0xffff0000, 0x7fff, 0x0, 0x1f, 0xfff00000, 0x1f, 0xff800, 0x7, 0x3ffe, 0x0, 0xfffc0, 0x0, 0xfffff0, 0x0, 0x0, 0x0, 0x0, 0xfff70000, 0x39021ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x1ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0xfc00, 0x0, 0x0, 0x6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff78000, 0xc0000000, 0x0, 0x0, 0x30000, 0x844, 0x10f8, 0x0, 0x0, 0x3, 0xfff00000, 0x3f, 0x8003ffff, 0x0, 0x3fc0, 0xfff80, 0x0, 0xf, 0xfff80000, 0x1, 0x20, 0x0, 0x7ffe00, 0x3008, 0x38000000, 0x0, 0xc19d0000, 0x2, 0x60f800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37f8, 0x40000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7c00000, 0x0, 0x0, 0x0, 0x0, 0xf06e, 0x87000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x0, 0xe0000000, 0x0, 0x0, 0x1ffc0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x7, 0xff000000, 0x7f, 0x80190000, 0x7, 0x7ff0000, 0x4, 0x0, 0x7, 0x1fff80, 0x60, 0x80000, 0x7, 0xfff80000, 0xde01, 0x0, 0x0, 0x40fff000, 0x2, 0x0, 0x0, 0x0, 0x80000000, 0x7ff, 0xf, 0xd8000000, 0x80399f, 0x1f1fcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffe00000, 0x4000007f, 0x0, 0x0, 0xffff0000, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff3f8000, 0x30000001, 0x0, 0x0, 0xffff0000, 0x1, 0x0, 0x0, 0xfff800, 0x0, 0x0, 0xe0000000, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79bf0000, 0xd, 0x0, 0x0, 0x0, 0xfcfe0000, 0x11, 0x7fe, 0x7bf80000, 0xffe0080, 0x0, 0x3fffc00, 0x0, 0x0, 0x0, 0x0, 0xff7f8000, 0x0, 0x0, 0xfffc0000, 0x7ffeff, 0x0, 0x0, 0x0, 0xb47e0000, 0xbf, 0x0, 0xfb7c00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x780000, 0xb, 0xc7f00000, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fff81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f0000, 0x0, 0x7f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe8000, 0xffffffff, 0x780ff, 0x0, 0x0, 0x30010, 0x0, 0x0, 0x0, 0x0, 0x60000000, 0x0, 0x0, 0x0, 0xffffffff, 0xffff3fff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf807e3e0, 0xfe7, 0x3c00, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xf87fffff, 0xffffffff, 0x201fff, 0xf8000010, 0xfffe, 0x0, 0x0, 0xf9ffff7f, 0x7db, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0xf000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0x0, 0x0, 0x7f0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //2848 bytes @@ -3050,11 +3059,11 @@ enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)([ 0x0, 0x40, 0x1a0], [ 0x10 //3360 bytes enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x100], [ 0x100, 0x180, 0x4900], [ 0x2020100, 0x4020302, 0x7020605, 0xa090802, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x20001, 0x30001, 0x50004, 0x70006, 0x10008, 0xa0009, 0xc000b, 0x1000d, 0xe0001, 0x1000f, 0x110010, 0x130012, 0x150014, 0x10016, 0x10001, 0x10017, 0x180001, 0x10001, 0x190001, 0x1a0001, 0x10001, 0x1c001b, 0x1001d, 0x1001e, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x1001f, 0x10020, 0x220021, 0x240023, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x250001, 0x270026, 0x280001, 0x290001, 0x2a0001, 0x10001, 0x2c002b, 0x2e002d, 0x10001, 0x30002f, 0x320031, 0x10033, 0x350034, 0x370036, 0x390038, 0x3b003a, 0x1003c, 0x3e003d, 0x10001, 0x10001, 0x1003f, 0x10001, 0x10001, 0x10001, 0x10001, 0x400001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x420041, 0x10001, 0x440043, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10045, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10046, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x470001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x0, 0x8c00f7ee, 0xb8000001, 0x28000000, 0x0, 0x88c00882, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc000000, 0x0, 0x600, 0x40000000, 0x49, 0x180000, 0xe8003600, 0x0, 0x0, 0x3c00, 0x0, 0x0, 0x100000, 0x0, 0x3fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3800000, 0x0, 0x7fff0000, 0x40000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10030, 0x0, 0x0, 0x0, 0x20000000, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x800000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100000, 0x0, 0x0, 0xc008000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17fff0, 0x3c000000, 0x0, 0x0, 0x20, 0x0, 0x61f0000, 0x0, 0x0, 0x0, 0xfc00, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x18000000, 0x0, 0x0, 0x3800, 0x0, 0x600000, 0x0, 0x0, 0x0, 0x0, 0x7700000, 0x0, 0x7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x3f7f, 0x0, 0x0, 0x0, 0x0, 0xfc000000, 0x60000001, 0x0, 0x0, 0x0, 0xf0000000, 0x0, 0xf8000000, 0x0, 0xc0000000, 0x0, 0x0, 0x800ff, 0x0, 0xffff0000, 0xffff00ff, 0x7ffbffef, 0x60000000, 0x6000, 0x0, 0x0, 0x0, 0xf00, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fff00, 0x0, 0x0, 0x60, 0xffc0, 0x0, 0x0, 0x0, 0x0, 0x1fffff8, 0x0, 0xf000000, 0x30000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xde000000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffff7fff, 0x3ffcffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfff3ff0e, 0x20010000, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0xe000, 0x0, 0x0, 0x40080000, 0x0, 0x0, 0x0, 0xfc0000, 0x0, 0x0, 0x0, 0xf00000, 0x0, 0x0, 0xc000, 0x17000000, 0x0, 0xc000, 0x80000000, 0x0, 0x0, 0x0, 0xc0003ffe, 0x0, 0x0, 0x0, 0xf0000000, 0x0, 0x0, 0x0, 0xc0000000, 0x30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0xffff0000, 0xfff7ffff, 0xd0b, 0x0, 0x0, 0x0, 0x0, 0x8c00f7ee, 0xb8000001, 0xa8000000, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ff0000, 0x80000000, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0xfe000000, 0x0, 0x0, 0x1e000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x3e00000, 0x0, 0x3c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f80, 0x0, 0x0, 0xd8000000, 0x3, 0x0, 0x0, 0x0, 0xf, 0x300000, 0x0, 0x0, 0xe80021e0, 0x0, 0x0, 0x3f000000, 0x0, 0x0, 0x0, 0x200, 0x0, 0x0, 0x0, 0x0, 0x2c00f800, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffffe, 0x0, 0x0, 0x0, 0xe, 0x1fff, 0x0, 0x2000000, 0x0, 0x0, 0x0, 0x70000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x80000000, 0x7f, 0x0, 0xdc000000, 0x7, 0x0, 0x0, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1800000, 0x0, 0x0, 0xfff8, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x1f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60000, 0x0, 0x0, 0x0, 0xc000, 0x0, 0x0, 0x0, 0x200000, 0x0, 0xf800000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x100], [ 0x100, 0x180, 0x4b00], [ 0x3020100, 0x5030403, 0x7030306, 0xa090803, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xf000e, 0x10010, 0x110001, 0x10001, 0x130012, 0x140001, 0x150001, 0x10001, 0x160001, 0x180017, 0x1a0019, 0x19001b, 0x1c0019, 0x1d0019, 0x1e0019, 0x1001f, 0x210020, 0x230022, 0x190024, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x250001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10026, 0x270001, 0x10028, 0x2a0029, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2b0001, 0x2c0001, 0x2e002d, 0x2f0001, 0x10001, 0x10001, 0x10001, 0x10030, 0x10031, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0xe0001, 0x10001, 0x10001, 0x10001, 0x320001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x330001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10034, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x350001, 0x370036, 0x390038, 0x10001, 0x3b003a, 0x190019, 0x1003c, 0x10001, 0x10001, 0x3d0001, 0x1003e, 0x10001, 0x10001, 0x10001, 0x10001, 0x40003f, 0x10041, 0x430042, 0x190044, 0x190019, 0x460045, 0x190047, 0x490048, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x0, 0x70000810, 0x40000000, 0x50000001, 0x0, 0x113d37c, 0x800000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffc003c, 0xffffafe0, 0x0, 0x0, 0x0, 0x200000, 0x30, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe000, 0x0, 0x0, 0x0, 0xc9c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x60000200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0400000, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x7f80000, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x2000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfce8000e, 0x1500000, 0x0, 0x0, 0x0, 0xc0000000, 0x1e0dfbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc0000000, 0xffffffff, 0x0, 0x0, 0x0, 0x1ff007fe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0000000, 0xe000e003, 0x6000e000, 0x0, 0x0, 0x40010, 0x1c000000, 0x1c00, 0xffffffff, 0x1, 0x0, 0xc1d0037b, 0xc0042af, 0xbc1f, 0x0, 0xffff0c00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffff0ff, 0xfffff9ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7f, 0x7ff, 0x0, 0xf0000000, 0xffffffff, 0xffffffff, 0x3ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff, 0xfff00000, 0xffffffff, 0xffffff9f, 0xffff003f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfe000007, 0xffffffff, 0xf0ffffff, 0xcfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e0, 0x0, 0x0, 0x30000, 0x0, 0xfbffffff, 0xffffffff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xfff0000, 0xc0010, 0xc0c00001, 0x0, 0x0, 0x18000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc30000, 0x0, 0xffffffff, 0xf, 0x7fffffff, 0xfffffc00, 0x100ff, 0xffffffff, 0xfffffc00, 0x1ffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0x7f, 0x0, 0x7fffff, 0x3, 0x0, 0x0, 0x600, 0x0, 0x0, 0x0, 0x0, 0x3c00f00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0xc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200, 0x0, 0x0, 0x0, 0xfffc0000, 0x7, 0x0, 0x0, 0x0, 0xffff, 0x0, 0x0, 0x0, 0x8000, 0xf0000000, 0x0, 0x0, 0x0, 0x274, 0x0, 0x0, 0x0, 0x0, 0x70000810, 0x40000000, 0x50000001, 0x0, 0x0, 0x0, 0x0, 0x30007f7f, 0x0, 0xff800000, 0x0, 0xfe000000, 0x1fff73ff, 0x1, 0xffff0000, 0x1fffffff, 0x0, 0x0, 0x0, 0x1800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffe00000, 0x3ffff, 0x0, 0xf0000000, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffffffff, 0xfffffe7f, 0xffffffff, 0x1c1f, 0xfffff018, 0xffffc3ff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000002, 0x8000000, 0x200000, 0x200000, 0x8000, 0x8000, 0x200, 0x200, 0x8, 0x0, 0x0, 0x7800000, 0x0, 0xffdfe000, 0x6f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11000, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30000, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xfffff, 0xfffe7fff, 0xfffefffe, 0x3fffff, 0xffffe000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fff, 0x0, 0xffffffc0, 0xffff0007, 0xfffffff, 0x301ff, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf0ffffff, 0x1fff1fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf87fffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x10fff, 0xffff0fff, 0xffffffff, 0x3ff00ff, 0xffffffff, 0xffff00ff, 0x33fff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xfffff, 0x1fff3fff, 0xffff01ff, 0xbfffffff, 0xfffc03f, 0x1ff01ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7ffff, 0xffffffff, 0x7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); -//6048 bytes -enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x1a0], [ 0x100, 0x2c0, 0x8900], [ 0x2020100, 0x5040302, 0x9080706, 0xd0c0b0a, 0x2020202, 0x100f0e02, 0x13131211, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131314, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x20001, 0x30001, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0x1000e, 0x10000f, 0x10001, 0x120011, 0x140013, 0x160015, 0x10017, 0x180001, 0x1a0019, 0x10001, 0x1001b, 0x10001, 0x10001, 0x1c0001, 0x1e001d, 0x20001f, 0x220021, 0x10023, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10024, 0x260025, 0x280027, 0x2a0029, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2b0001, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x1002c, 0x2e002d, 0x2f0001, 0x310030, 0x330032, 0x350034, 0x370036, 0x380001, 0x3a0039, 0x3c003b, 0x3e003d, 0x40003f, 0x420041, 0x440043, 0x460045, 0x480047, 0x4a0049, 0x4c004b, 0x4e004d, 0x50004f, 0x10001, 0x510001, 0x530052, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x54002c, 0x10001, 0x10001, 0x2c0055, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x2c0056, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x580057, 0x2c002c, 0x5a0059, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x5b0001, 0x10001, 0x10001, 0x5d005c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x5e002c, 0x5f0001, 0x2c0060, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c0061, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x62002c, 0x640063, 0x660065, 0x680067, 0x6a0069, 0x10001, 0x2c006b, 0x2c002c, 0x6c002c, 0x6e006d, 0x2c006f, 0x2c0070, 0x71002c, 0x730072, 0x2c002c, 0x750074, 0x2c0076, 0x780077, 0x10079, 0x10001, 0x7b007a, 0x1007c, 0x7e007d, 0x2c002c, 0x2c002c, 0x10001, 0x10001, 0x10001, 0x1007f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x800001, 0x10081, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10082, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x830001, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x2c0084, 0x2c002c, 0x2c002c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x850001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x860001, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x87002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x0, 0xffffffff, 0xffffffff, 0x7fffffff, 0x0, 0xffffdfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfcffffff, 0xffffd7f0, 0xfffffffb, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff, 0xfe7fffff, 0xffffffff, 0xfffee7ff, 0xffffffff, 0xffff00ff, 0x1f87ff, 0xefffffc0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xdfffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffe7ff, 0xffffffff, 0xffffffff, 0x3ffff, 0xffffffff, 0xe7ffffff, 0xffffffff, 0x7fff3fff, 0x4fffffff, 0xffff07ff, 0xff007fff, 0xffffffff, 0xffffffff, 0xfffffffb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff99fef, 0xf3c5fdff, 0xb080799f, 0x7fffffcf, 0xfff987ee, 0xd36dfdff, 0x5e023987, 0x7fffc0, 0xfffbbfee, 0xf3edfdff, 0x13bbf, 0xfe03ffcf, 0xfff99fee, 0xf3edfdff, 0xb0e0399f, 0xffffcf, 0xd63dc7ec, 0xc3ffc718, 0x813dc7, 0x7ffffc0, 0xfffddfff, 0xf3fffdff, 0x27603ddf, 0xff80ffcf, 0xfffddfff, 0xf3effdff, 0x60603ddf, 0xeffcf, 0xfffddfff, 0xffffffff, 0xfff0fddf, 0xffffffcf, 0xfc7fffee, 0x2ffbffff, 0xff5f847f, 0x1cffc0, 0xfffffffe, 0x87ffffff, 0xfffffff, 0x0, 0xfffff7d6, 0x3fffffaf, 0xf3ff7f5f, 0x0, 0xffffffff, 0xffffffff, 0xfffffeff, 0xfffe1fff, 0xfeffffff, 0xdfffffff, 0x7ffdfff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff20bf, 0xffffffff, 0xffffffff, 0xffffffff, 0x3d7f3dff, 0xffffffff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xffffffff, 0xff3dffff, 0xffffffff, 0xe7ffffff, 0x1fffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0x3f3fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0x1ffffff, 0x803fffff, 0x7fffff, 0xfffff, 0xddfff, 0xffffffff, 0xffffffff, 0x3fffffff, 0x3ff03ff, 0x3ffbfff, 0xffffffff, 0xffffffff, 0x1ffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0x3fffff, 0x7fffffff, 0xfff0fff, 0xfffffff1, 0x1f3fff, 0xffffffff, 0xffff0fff, 0xc7ff03ff, 0xffffffff, 0xcfffffff, 0xffffffff, 0x7fffffff, 0x9fffffff, 0x3ff03ff, 0xffff3fff, 0x7fff, 0x0, 0xffffffff, 0xffffffff, 0xffff1fff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf00fffff, 0xffffffff, 0xf8ffffff, 0xffffe3ff, 0xffffffff, 0xffff01ff, 0xe7ffffff, 0xffff00ff, 0x7ffffff, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0xffdfffff, 0xefcfffdf, 0x7fdcffff, 0xffff07ff, 0xffff80ff, 0xffffffff, 0xfff30000, 0x1fff7fff, 0xffffffff, 0xffff0001, 0x1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7f, 0x7ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfe0fffff, 0xffffffff, 0xffff20bf, 0xffffffff, 0x800180ff, 0x7fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0xfbffffff, 0xffffffff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xfff0000, 0xffffffff, 0xffffffff, 0xfffffffe, 0xffffffff, 0xfe7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffe0, 0xfffeffff, 0xffffffff, 0xffffffff, 0xffff7fff, 0xffffffff, 0xffffffff, 0xffff000f, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1fff, 0xffffffff, 0xffff007f, 0xffffffff, 0xffffffff, 0xfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3eb07ff, 0xfffc0000, 0xffffffff, 0x3ff1fff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0x3ffc03f, 0xffffffff, 0xffffffff, 0xffffffff, 0x800fffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0xc3ffbfff, 0x7fffffff, 0xffffffff, 0x7fffff, 0xf3ff3fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8000007, 0x7fffff, 0x7e7e7e, 0xffff7f7f, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ff3fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff000f, 0xfffff87f, 0xfffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xe0f8007f, 0x5f7fffff, 0xffffffdb, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff80007, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcffff, 0xffffffff, 0x80ff, 0xffff0000, 0x3ffffff, 0xffffffff, 0xfff7ffff, 0xffdf0f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x30007f7f, 0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffff, 0xffffff87, 0xff8fffff, 0xffffffff, 0xffffffff, 0x1fff7fff, 0x1, 0xffff0000, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x1fffffff, 0xffffffff, 0x1ffff, 0xfffffff, 0xffffffff, 0xffffe00f, 0xffff07ff, 0x7ffffff, 0xbfffffff, 0xffffffff, 0x3fff0f, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff03ff, 0xff0fffff, 0xfffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xf7ff800f, 0xffb7f7ff, 0x1bfbfffb, 0x0, 0x0, 0xffffffff, 0x7fffff, 0x3fffff, 0xff, 0xffffffbf, 0x7fdffff, 0x0, 0x0, 0xfffffd3f, 0x91bfffff, 0xffbfffff, 0xffffffff, 0x7fffffff, 0xff80, 0x0, 0xf837ffff, 0x8fffffff, 0x83ffffff, 0x0, 0x0, 0xffffffff, 0xf0ffffff, 0xfffcffff, 0xffffffff, 0xfeeff06f, 0x873fffff, 0x1ff01ff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x7ff87f, 0xffffffff, 0xfe3fffff, 0xff3fffff, 0xff07ffff, 0x1e03ffff, 0xfe00, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ff, 0x0, 0xffffffff, 0x7ffff, 0xffffffff, 0xfc07ffff, 0xffffffff, 0x3ff00ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0xffffffff, 0x33bff, 0x0, 0xe0000000, 0xffffffff, 0xffff00ff, 0x3ffffff, 0xffff0000, 0x3ff, 0xffff0000, 0xfff, 0x7fffff, 0xffffffff, 0xffffffff, 0xfffc3fff, 0x803fffff, 0xffffffff, 0xdfffffff, 0xffff0007, 0x3ff01ff, 0xffffffff, 0xffdfffff, 0xffff00ff, 0x7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ffffe, 0xfffbffff, 0xffffffff, 0x3, 0x0, 0xbfffbd7f, 0xffff03ff, 0xffffffff, 0x3ff07ff, 0xfff99fef, 0xfbedfdff, 0xe081399f, 0x1f1fcf, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xefffffff, 0x3, 0xffffffff, 0xffffffff, 0x3ff00ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xff3fffff, 0x3fffffff, 0x0, 0xffffffff, 0xffffffff, 0x3ff001f, 0x1fff, 0xffffffff, 0x3ffffff, 0x3ff, 0x0, 0xe7ffffff, 0xffff0fff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xfffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x8007ffff, 0xff6ff27f, 0xf9bfffff, 0x3ff007f, 0x0, 0x0, 0xfffffcff, 0xfcffffff, 0x1f, 0xffffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xffffffff, 0xffff0007, 0xffffffff, 0x1ffffff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffffdff, 0xff7fffff, 0xffff003f, 0xffff1fff, 0xfffcffff, 0x7ffeff, 0x0, 0x0, 0xfffffb7f, 0xb47fffff, 0x3ff00ff, 0xfffffdbf, 0x1fb7fff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ffffff, 0xfffdffff, 0xc7ffffff, 0x3ffffff, 0x0, 0x0, 0x10000, 0xffffffff, 0x8003ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0x7ffff, 0xffffffff, 0xffff, 0x3fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x7fffffff, 0xffffc3ff, 0xffffffff, 0x7fffffff, 0xffff03ff, 0x3f3fff, 0xffffffff, 0xffffffff, 0xfbff003f, 0xe0fffffb, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff87ff, 0xffffffff, 0xffff80ff, 0x0, 0x0, 0x3001f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef0000, 0xffffffff, 0x40007, 0x270000, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff07ff, 0xf3ff01ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffff3fff, 0xffff007f, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffffffff, 0xfffffe7f, 0xffffffff, 0xf807ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0x3f, 0x0, 0x0, 0x0, 0xfffff, 0xfffff, 0xffffffff, 0xffffffff, 0x7fffff, 0x1ffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffcfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8000fff, 0xfffe, 0x0, 0x0, 0x7fffffff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf9ffff7f, 0xffff07db, 0xffffffff, 0x3fff, 0x8000, 0x0, 0x0, 0x0, 0xffffffff, 0x3fff1fff, 0xc3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x7fff, 0xffffffff, 0x83ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff6f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fff9f, 0x0, 0xffffffff, 0xffffffff, 0xc3ff0fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xffffffff, 0x1fffff, 0x0, 0x0, 0xfffffffe, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x30000, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xfffff, 0xfffe7fff, 0xfffefffe, 0x3fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fff, 0x0, 0xffffffc0, 0xffff0007, 0xfffffff, 0x301ff, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf0ffffff, 0x1fff1fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf87fffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x10fff, 0xffff0fff, 0xffffffff, 0x3ff00ff, 0xffffffff, 0xffff00ff, 0x33fff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xfffff, 0x1fff3fff, 0xffff01ff, 0xbfffffff, 0xfffc03f, 0x1ff01ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7ffff, 0xffffffff, 0x7ff, 0x3ff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0003, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); -//4784 bytes -enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)([ 0x0, 0x20, 0x98, 0x290], [ 0x80, 0xf0, 0x3f0, 0x4380], [ 0x3020100, 0x7060504, 0x9080101, 0xb0b0b0a, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0c, 0xd010101, 0xd010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xe000d, 0xd000f, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x10000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x120011, 0x140013, 0x160015, 0x180017, 0x1a0019, 0x1c001b, 0x1e001d, 0x1f000d, 0x1d001d, 0x20001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x220021, 0xd000d, 0xd000d, 0x23000d, 0x24000d, 0x1d001d, 0x1d001d, 0x1d001d, 0x25001d, 0x1d0026, 0x27001d, 0x1d001d, 0x28001d, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0x320031, 0x1d0033, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x34000d, 0xd000d, 0x35000d, 0xd0036, 0xd000d, 0x37000d, 0xd000d, 0xd000d, 0xd000d, 0x1d0038, 0x1d001d, 0x1d0039, 0xd000d, 0xd000d, 0xd003a, 0xd000d, 0x1d003b, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d003c, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x3d000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x3d000d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x2, 0x0, 0x0, 0x40003, 0x60005, 0x0, 0x0, 0x80007, 0xa0009, 0xc000b, 0xd, 0x0, 0xf000e, 0x110010, 0x130012, 0x150014, 0x170016, 0x190018, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x240000, 0x260025, 0x0, 0x270000, 0x0, 0x0, 0x280000, 0x2a0029, 0x2c002b, 0x2e002d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30002f, 0x320031, 0x330000, 0x30002d, 0x350034, 0x370036, 0x390038, 0x3b003a, 0x3d003c, 0x3e0000, 0x3f0000, 0x410040, 0x430042, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x470046, 0x480000, 0x4a0049, 0x0, 0x4b, 0x0, 0x0, 0x0, 0x0, 0x4d004c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e0000, 0x4f, 0x0, 0x500000, 0x520051, 0x540053, 0x550000, 0x570056, 0x0, 0x580000, 0x590000, 0x4, 0x5a, 0x5c005b, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f005e, 0x0, 0x0, 0x60, 0x610000, 0x0, 0x620000, 0x610063, 0x640000, 0x650000, 0x660000, 0x680067, 0x690000, 0x38006a, 0x6b0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6c005c, 0x0, 0x0, 0x0, 0x0, 0x6d0000, 0x6e0000, 0x70006f, 0x710000, 0x0, 0x0, 0x0, 0x730072, 0x74002d, 0x750000, 0x59, 0x770076, 0x790078, 0x7a0000, 0x7b, 0x7d007c, 0x7e007e, 0x7f002f, 0x810080, 0x830082, 0x0, 0x850084, 0x870086, 0x7e0088, 0x0, 0x0, 0x890067, 0x7e008a, 0x4f008b, 0x8d008c, 0x7e008e, 0x72008f, 0x910090, 0x930092, 0x950094, 0x7e0096, 0x970000, 0x990098, 0x7e009a, 0x7e007e, 0x9b007e, 0x9d009c, 0x9e0086, 0xa0009f, 0xa10000, 0xa20000, 0xa30046, 0xa40000, 0xa600a5, 0xa800a7, 0xaa00a9, 0x7e007e, 0xab0000, 0xac0000, 0x7e007e, 0x5500ad, 0xae0000, 0xb000af, 0xb200b1, 0x7e007e, 0x7e00b3, 0xb500b4, 0xb700b6, 0xb900b8, 0xba0000, 0x3000bb, 0x7e00b0, 0x7e007e, 0xbd00bc, 0x7e00be, 0xc000bf, 0x7e00c1, 0x7e007e, 0xc2007e, 0x6e00c3, 0xc500c4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e006e, 0xc60000, 0x0, 0xc70000, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x9800c8, 0xc90000, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x0, 0x0, 0x0, 0x0, 0xb20000, 0x7e007e, 0x7e007e, 0x7e007e, 0x0, 0x0, 0x0, 0x0, 0xca0030, 0xcb0076, 0xcc0000, 0x7e00cd, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e, 0x7e00ce, 0xcf0000, 0xd100d0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x610000, 0x0, 0xc90000, 0x7e0097, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0xd2007e, 0x0, 0x0, 0xd400d3, 0x0, 0x0, 0xb30000, 0x7e007e, 0x7e007e, 0xd50000, 0x7e00d6, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x5f006d, 0xc70000, 0x0, 0x350000, 0xd7, 0xd80000, 0xd90000, 0xda007e, 0xdb0000, 0x7e007e, 0xdc0000, 0xde00dd, 0xe000df, 0x0, 0x0, 0xe1, 0x0, 0xe20000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e00e3, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e00e4, 0x7e007e, 0xe600e5, 0x7e00e7, 0xe900e8, 0x7e007e, 0x7e007e, 0xeb00ea, 0x7e007e, 0x7e007e, 0x7e007e, 0xec007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0xed007e, 0x0, 0xee0000, 0xef0000, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0xf0007e, 0x7e00f1, 0x7e00f2, 0x7e007e, 0xf400f3, 0xf600f5, 0x7e007e, 0x7e007e, 0x38, 0xf800f7, 0x0, 0xf900e6, 0xfb00fa, 0x7e007e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc0000, 0xfd0000, 0xfe0000, 0xff004b, 0x7e0100, 0x0, 0x0, 0x1010000, 0x1030102, 0x0, 0x1050104, 0x0, 0x0, 0x0, 0x0, 0x0, 0x920000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaf, 0x0, 0x106, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x107, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1080000, 0x0, 0x0, 0x0, 0x0, 0x7e0055, 0x7e007e, 0x7e007e, 0x7e007e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e010a, 0x10b, 0x7e007e, 0x0, 0x10a0000, 0x7e007e, 0x7e007e, 0x7e007e, 0x7e007e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10c0000, 0x0, 0x0, 0x0, 0x3000000, 0x280f, 0x4, 0x0, 0x10000, 0x1800000, 0x0, 0x11800, 0x0, 0xff00, 0xffe07800, 0x4000, 0x0, 0x1800, 0x0, 0x0, 0xfffc0000, 0x0, 0x18000000, 0x0, 0x8000c000, 0xb0000000, 0xf800, 0xfc8000, 0x0, 0x66010, 0xc3a0200, 0x4f7f8660, 0x80000030, 0x67811, 0x2c920200, 0xa1fdc678, 0xff80003f, 0x44011, 0xc120200, 0xfffec440, 0x1fc0030, 0x66011, 0xc120200, 0x4f1fc660, 0xff000030, 0x29c23813, 0x3c0038e7, 0xff7ec238, 0xf800003f, 0x22000, 0xc000200, 0xd89fc220, 0x7f0030, 0x22000, 0xc100200, 0x9f9fc220, 0xfff10030, 0x22000, 0x0, 0xf0220, 0x30, 0x3800011, 0xd0040000, 0xa07b80, 0xffe3003f, 0x1, 0x78000000, 0xf0000000, 0xffffffff, 0x829, 0xc0000050, 0xc0080a0, 0xffffffff, 0x100, 0x1e000, 0x1000000, 0x20000000, 0xf8002000, 0xffffffff, 0xdf40, 0x0, 0xc280c200, 0x0, 0xc200, 0x80c20000, 0x8000c2, 0x0, 0xc20000, 0x0, 0x18000000, 0xe0000000, 0xfc000000, 0x0, 0x0, 0xc0c00000, 0xe0000000, 0x0, 0x0, 0xfe000000, 0x7fc00000, 0xff800000, 0xfff00000, 0xfff22000, 0xc0000000, 0xfc00fc00, 0x0, 0xf800, 0x0, 0xffc00000, 0x80000000, 0xf000f000, 0xe, 0xffe0c000, 0x0, 0xf000, 0x3800fc00, 0x0, 0x30000000, 0x0, 0x80000000, 0x60000000, 0xfc00fc00, 0xc000, 0xffff8000, 0xffffffff, 0xe000, 0x80000000, 0x0, 0xff00000, 0x0, 0x7000000, 0x1c00, 0x0, 0xfe00, 0x18000000, 0xff00, 0xf8000000, 0xc0c00000, 0x0, 0x5500c0c0, 0xc0000000, 0x0, 0x200000, 0x10300020, 0x80230000, 0x0, 0xc0020, 0xe0008000, 0x0, 0xfffe, 0xfffe0000, 0xf000, 0x0, 0x0, 0xffffff80, 0xfffff800, 0x0, 0x0, 0x300000, 0x400000, 0x0, 0x0, 0x1f00000, 0x0, 0xdf40, 0x0, 0x7ffe7f00, 0xff800000, 0x80808080, 0x80808080, 0x0, 0xc0000000, 0xffffffff, 0x4000000, 0x0, 0x0, 0xfff00000, 0xffc00000, 0xf000ffff, 0x1, 0x0, 0x1f, 0x10000, 0x8000, 0x0, 0x0, 0xfff0, 0x80000000, 0x0, 0xe000, 0x0, 0xff80, 0x0, 0x0, 0xfffff000, 0x0, 0xff000000, 0xfc14f800, 0x3ffff, 0x0, 0xfc00e000, 0xfc003fc0, 0x0, 0x7ff00000, 0xe0000000, 0x3c004000, 0x80000000, 0x0, 0xff800000, 0xc00c000, 0x0, 0x7fffff8, 0xff800000, 0xff818181, 0x8080, 0x0, 0xfc00c000, 0x780, 0xf0000000, 0x0, 0xc000, 0xfc000000, 0xffffffff, 0x1f07ff80, 0xa0800000, 0x24, 0x0, 0x7fff8, 0x0, 0x30000, 0x0, 0xffff7f00, 0xffff, 0x80000, 0x20f080, 0x0, 0x60000000, 0x0, 0x80000000, 0xe3030303, 0xc1ff8080, 0x1000, 0x48000080, 0xc000c000, 0xffffffff, 0x0, 0xf8000000, 0x78, 0x700000, 0xe0008000, 0xfffffffe, 0xffff, 0xc0000000, 0xffffffff, 0xffffffff, 0xfffe0000, 0xf0000000, 0x0, 0x1ff0, 0xf800, 0xf8000000, 0x40000000, 0x0, 0xffc000f0, 0xffffffff, 0xc0000000, 0xfc00, 0xf00000, 0xf0000000, 0x0, 0xff00, 0x0, 0x8007ff0, 0x480800, 0xe4040004, 0xffc00000, 0xffffff00, 0x40, 0xf8020000, 0x2c0, 0x6e400000, 0x80000000, 0xffff007f, 0xffffffff, 0x7c80000, 0x70000000, 0x7c000000, 0x0, 0xf000000, 0x1100f90, 0x78c00000, 0xfe00fe00, 0x0, 0x0, 0xffffffff, 0x0, 0xff800780, 0x0, 0x1c00000, 0xc00000, 0xf80000, 0xe1fc0000, 0xffff01ff, 0xfffffe00, 0xffffffff, 0x0, 0xfff80000, 0x0, 0x3f80000, 0x0, 0xfc00ff00, 0xffffffff, 0x80000000, 0x0, 0xfffcc400, 0xffffffff, 0x1fffffff, 0xfc000000, 0xffff, 0xfffffc00, 0xffff, 0xfffff000, 0xff800000, 0x3c000, 0x7fc00000, 0xdff8, 0xfc00fe00, 0xff00, 0xff800000, 0x0, 0xffe00001, 0x40000, 0x0, 0xfffffffc, 0xffffffff, 0x40004280, 0xfc00, 0x0, 0xfc00f800, 0x66010, 0x4120200, 0x1f7ec660, 0xffe0e030, 0x10000000, 0xfffffffc, 0xfc00ff00, 0xffffffff, 0x0, 0xc00000, 0xfc00ffe0, 0xffffe000, 0x0, 0xfc000000, 0xfffffc00, 0xffffffff, 0x18000000, 0xf000, 0xffffff80, 0xffffffff, 0x0, 0xf0000000, 0xffffffff, 0x0, 0x0, 0x7ff80000, 0x900d80, 0x6400000, 0xfc00ff80, 0xffffffff, 0xffffffff, 0x300, 0x3000000, 0xffffffe0, 0xff00, 0x0, 0x0, 0xfff8, 0x200, 0x800000, 0xffc0, 0xe000, 0x30000, 0xff800100, 0x480, 0x4b800000, 0xfc00ff00, 0x240, 0xfe048000, 0xfffffc00, 0xffffffff, 0xfe000000, 0x20000, 0x38000000, 0xffffffff, 0xfffeffff, 0x0, 0x7ffc0000, 0x0, 0xffe08000, 0xfffffff0, 0xffffffff, 0xffff, 0x0, 0xffc00000, 0xffffffff, 0x80000000, 0x3c00, 0xfc00, 0xffc0c000, 0x400ffc0, 0x1f000004, 0xffff0000, 0xffffffff, 0xf8000000, 0xffffffff, 0x7800, 0x0, 0x7f00, 0xffffffff, 0xffffffff, 0xfffcffe0, 0xffffffff, 0x9010ffff, 0x0, 0xfffbfff8, 0xffd8ffff, 0xff0f, 0x0, 0xe000f800, 0xc00fe00, 0xfffffff0, 0x0, 0x180, 0x0, 0xfffff800, 0xffffffc0, 0xffffffff, 0xfff00000, 0xfff00000, 0xff800000, 0xfe000000, 0x200000, 0x0, 0x20000000, 0x1400219b, 0x10, 0x0, 0x20201840, 0x84000000, 0x203a0, 0x0, 0x0, 0xc0, 0x3000, 0x0, 0x7fff000, 0xffff0001, 0x80000000, 0xfffff81f, 0x6000080, 0xf824, 0x0, 0xffffc000, 0xffff7fff, 0xffffffff, 0x0, 0xc000e000, 0xffff3c00, 0xffffffff, 0xffff, 0xffff8000, 0x0, 0x7c000000, 0xffff, 0xfc000000, 0xffffffff, 0x80009080, 0xff800060, 0xffffffff, 0x3c00f000, 0xffffffff, 0xffffffff, 0x1ffff, 0x0, 0xffe00000, 0x1, 0xc0000000, 0x10, 0xf5080169, 0x5569157b, 0xa1080869, 0xf0000400, 0xf0000411, 0xffffffff, 0xfffcffff, 0xfff00000, 0x18000, 0x10001, 0xffc00000, 0xffffffff, 0x3f, 0xfff8, 0xf0000000, 0xfffcfe00, 0xffffffc0, 0xf000000, 0xe000e000, 0x0, 0x7800000, 0xfc000000, 0xfffef000, 0xfc00ff00, 0x0, 0xff00, 0xfffcc000, 0xfff00000, 0xe000c000, 0xfe00, 0x40000000, 0xf0003fc0, 0xfe00fe00, 0x80000, 0x0, 0xfffff800, 0xfc00ffff, 0xc0000000, 0x0, 0x0, 0xfffc, 0x0, 0xfffffffe, 0xf800, 0x0, 0x0, 0xffff0000, 0xfffffffd, 0x0, 0x0, 0xc0000000, 0x0, 0xc0000000]); +enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x100], [ 0x100, 0x180, 0x4b00], [ 0x3020100, 0x5030403, 0x7030306, 0xa090803, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xf000e, 0x10010, 0x110001, 0x10001, 0x130012, 0x140001, 0x150001, 0x10001, 0x160001, 0x180017, 0x1a0019, 0x19001b, 0x1c0019, 0x1d0019, 0x1e0019, 0x1001f, 0x210020, 0x230022, 0x190024, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x250001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10026, 0x270001, 0x10028, 0x2a0029, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2b0001, 0x2c0001, 0x2e002d, 0x2f0001, 0x10001, 0x10001, 0x10001, 0x10030, 0x10031, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0xe0001, 0x10001, 0x10001, 0x10001, 0x320001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x330001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10034, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x350001, 0x370036, 0x390038, 0x10001, 0x3b003a, 0x190019, 0x1003c, 0x10001, 0x10001, 0x3d0001, 0x1003e, 0x10001, 0x10001, 0x10001, 0x10001, 0x40003f, 0x10041, 0x430042, 0x190044, 0x190019, 0x460045, 0x190047, 0x490048, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x0, 0x70000810, 0x40000000, 0x50000001, 0x0, 0x113d37c, 0x800000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffc003c, 0xffffafe0, 0x0, 0x0, 0x0, 0x200000, 0x30, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe000, 0x0, 0x0, 0x0, 0xc9c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x60000200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0400000, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x7f80000, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x2000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfce8000e, 0x1500000, 0x0, 0x0, 0x0, 0xc0000000, 0x1e0dfbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc0000000, 0xffffffff, 0x0, 0x0, 0x0, 0x1ff007fe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0000000, 0xe000e003, 0x6000e000, 0x0, 0x0, 0x40010, 0x1c000000, 0x1c00, 0xffffffff, 0x1, 0x0, 0xc1d0037b, 0xc0042af, 0xbc1f, 0x0, 0xffff0c00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffff0ff, 0xfffff9ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7f, 0x7ff, 0x0, 0xf0000000, 0xffffffff, 0xffffffff, 0x3ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff, 0xfff00000, 0xffffffff, 0xffffff9f, 0xffff003f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfe000007, 0xffffffff, 0xf0ffffff, 0xcfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e0, 0x0, 0x0, 0x30000, 0x0, 0xfbffffff, 0xffffffff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffff0000, 0xc0010, 0xc0c00001, 0x0, 0x0, 0x18000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc30000, 0x0, 0xffffffff, 0x800f, 0x7fffffff, 0xfffffc00, 0x100ff, 0xffffffff, 0xfffffc00, 0x1ffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0x7f, 0x0, 0x7fffff, 0x3, 0x0, 0x0, 0x600, 0x0, 0x0, 0x0, 0x0, 0x3c00f00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0xc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200, 0x0, 0x0, 0x0, 0xfffc0000, 0x7, 0x0, 0x0, 0x0, 0xffff, 0x0, 0x0, 0x0, 0x8000, 0xf0000000, 0x0, 0x0, 0x0, 0x274, 0x0, 0x0, 0x0, 0x0, 0x70000810, 0x40000000, 0x50000001, 0x0, 0x0, 0x0, 0x0, 0x30007f7f, 0x0, 0xff800000, 0x0, 0xfe000000, 0x1fff73ff, 0x1, 0xffff0000, 0x1fffffff, 0x0, 0x0, 0x0, 0x1800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffe00000, 0x3ffff, 0x0, 0xf0000000, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffffffff, 0xfffffe7f, 0xffffffff, 0x1c1f, 0xfffff018, 0xffffc3ff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000002, 0x8000000, 0x200000, 0x200000, 0x8000, 0x8000, 0x200, 0x200, 0x8, 0x0, 0x0, 0x7800000, 0x0, 0xffdfe000, 0x6f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11000, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30000, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xfffff, 0xfffe7fff, 0xfffefffe, 0x3fffff, 0xffffe000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fff, 0x0, 0xffffffc0, 0xffff0007, 0xfffffff, 0x301ff, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf0ffffff, 0x1fff1fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf87fffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x10fff, 0xffff0fff, 0xffffffff, 0x3ff00ff, 0xffffffff, 0xffff00ff, 0x33fff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xfffff, 0x1fff3fff, 0xffff01ff, 0xbfffffff, 0xfffc03f, 0x1ff01ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7ffff, 0xffffffff, 0x7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +//6080 bytes +enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x1a0], [ 0x100, 0x2c0, 0x8a00], [ 0x2020100, 0x5040302, 0x9080706, 0xd0c0b0a, 0x2020202, 0x100f0e02, 0x13131211, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131314, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x20001, 0x30001, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0x1000e, 0x10000f, 0x10001, 0x120011, 0x140013, 0x160015, 0x10017, 0x180001, 0x1a0019, 0x10001, 0x1001b, 0x10001, 0x10001, 0x1c0001, 0x1e001d, 0x20001f, 0x220021, 0x10023, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10024, 0x260025, 0x280027, 0x2a0029, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2b0001, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x1002c, 0x2e002d, 0x2f0001, 0x310030, 0x330032, 0x350034, 0x370036, 0x380001, 0x3a0039, 0x3c003b, 0x3e003d, 0x40003f, 0x420041, 0x440043, 0x460045, 0x480047, 0x4a0049, 0x4c004b, 0x4e004d, 0x50004f, 0x10001, 0x510001, 0x530052, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x54002c, 0x10001, 0x10001, 0x2c0055, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x2c0056, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x580057, 0x2c002c, 0x5a0059, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x5b0001, 0x10001, 0x10001, 0x5d005c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x5e002c, 0x5f0001, 0x2c0060, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c0061, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x62002c, 0x640063, 0x660065, 0x680067, 0x6a0069, 0x10001, 0x2c006b, 0x2c002c, 0x6c002c, 0x6e006d, 0x2c006f, 0x2c0070, 0x71002c, 0x730072, 0x2c002c, 0x750074, 0x2c0076, 0x780077, 0x10079, 0x10001, 0x7b007a, 0x1007c, 0x7e007d, 0x2c002c, 0x2c002c, 0x10001, 0x10001, 0x10001, 0x1007f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x800001, 0x10081, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10082, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x830001, 0x10001, 0x2c0084, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x2c0085, 0x2c002c, 0x2c002c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x860001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x870001, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x88002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x0, 0xffffffff, 0xffffffff, 0x7fffffff, 0x0, 0xffffdfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfcffffff, 0xffffd7f0, 0xfffffffb, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff, 0xfe7fffff, 0xffffffff, 0xfffee7ff, 0xffffffff, 0xffff00ff, 0x1f87ff, 0xefffffc0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xdfffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffe7ff, 0xffffffff, 0xffffffff, 0x3ffff, 0xffffffff, 0xe7ffffff, 0xffffffff, 0x7fff3fff, 0x4fffffff, 0xffff07ff, 0xff007fff, 0xffffffff, 0xffffffff, 0xfffffffb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff99fef, 0xf3c5fdff, 0xb080799f, 0x7fffffcf, 0xfff987ee, 0xd36dfdff, 0x5e023987, 0x7fffc0, 0xfffbbfee, 0xf3edfdff, 0x13bbf, 0xfe03ffcf, 0xfff99fee, 0xf3edfdff, 0xb0e0399f, 0xffffcf, 0xd63dc7ec, 0xc3ffc718, 0x813dc7, 0x7ffffc0, 0xfffddfff, 0xf3fffdff, 0x27603ddf, 0xff80ffcf, 0xfffddfff, 0xf3effdff, 0x60603ddf, 0xeffcf, 0xfffddfff, 0xffffffff, 0xfff0fddf, 0xffffffcf, 0xfc7fffee, 0x2ffbffff, 0xff5f847f, 0x1cffc0, 0xfffffffe, 0x87ffffff, 0xfffffff, 0x0, 0xfffff7d6, 0x3fffffaf, 0xf3ff7f5f, 0x0, 0xffffffff, 0xffffffff, 0xfffffeff, 0xfffe1fff, 0xfeffffff, 0xdfffffff, 0x7ffdfff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff20bf, 0xffffffff, 0xffffffff, 0xffffffff, 0x3d7f3dff, 0xffffffff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xffffffff, 0xff3dffff, 0xffffffff, 0xe7ffffff, 0x1fffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0x3f3fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0x1ffffff, 0x803fffff, 0x7fffff, 0xfffff, 0xddfff, 0xffffffff, 0xffffffff, 0x3fffffff, 0x3ff03ff, 0x3ffbfff, 0xffffffff, 0xffffffff, 0x1ffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0x3fffff, 0x7fffffff, 0xfff0fff, 0xfffffff1, 0x1f3fff, 0xffffffff, 0xffff0fff, 0xc7ff03ff, 0xffffffff, 0xcfffffff, 0xffffffff, 0x7fffffff, 0x9fffffff, 0x3ff03ff, 0xffff3fff, 0x7fff, 0x0, 0xffffffff, 0xffffffff, 0xffff1fff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf00fffff, 0xffffffff, 0xf8ffffff, 0xffffe3ff, 0xffffffff, 0xffff01ff, 0xe7ffffff, 0xffff00ff, 0x7ffffff, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0xffdfffff, 0xefcfffdf, 0x7fdcffff, 0xffff07ff, 0xffff80ff, 0xffffffff, 0xfff30000, 0x1fff7fff, 0xffffffff, 0xffff0001, 0x1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7f, 0x7ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfe0fffff, 0xffffffff, 0xffff20bf, 0xffffffff, 0x800180ff, 0x7fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0xfbffffff, 0xffffffff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffff0000, 0xffffffff, 0xffffffff, 0xfffffffe, 0xffffffff, 0xfe7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffe0, 0xfffeffff, 0xffffffff, 0xffffffff, 0xffff7fff, 0xffffffff, 0xffffffff, 0xffff800f, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1fff, 0xffffffff, 0xffff007f, 0xffffffff, 0xffffffff, 0xfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3eb07ff, 0xfffc0000, 0xffffffff, 0x3ff1fff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0x3ffc03f, 0xffffffff, 0xffffffff, 0xffffffff, 0x800fffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0xc3ffbfff, 0x7fffffff, 0xffffffff, 0x7fffff, 0xf3ff3fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8000007, 0x7fffff, 0x7e7e7e, 0xffff7f7f, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ff3fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff000f, 0xfffff87f, 0xfffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xe0f8007f, 0x5f7fffff, 0xffffffdb, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff80007, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcffff, 0xffffffff, 0x80ff, 0xffff0000, 0x3ffffff, 0xffffffff, 0xfff7ffff, 0xffdf0f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x30007f7f, 0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffff, 0xffffff87, 0xff8fffff, 0xffffffff, 0xffffffff, 0x1fff7fff, 0x1, 0xffff0000, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x1fffffff, 0xffffffff, 0x1ffff, 0xfffffff, 0xffffffff, 0xffffe00f, 0xffff07ff, 0x7ffffff, 0xbfffffff, 0xffffffff, 0x3fff0f, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff03ff, 0xff0fffff, 0xfffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xf7ff800f, 0xffb7f7ff, 0x1bfbfffb, 0x0, 0x0, 0xffffffff, 0x7fffff, 0x3fffff, 0xff, 0xffffffbf, 0x7fdffff, 0x0, 0x0, 0xfffffd3f, 0x91bfffff, 0xffbfffff, 0xffffffff, 0x7fffffff, 0xff80, 0x0, 0xf837ffff, 0x8fffffff, 0x83ffffff, 0x0, 0x0, 0xffffffff, 0xf0ffffff, 0xfffcffff, 0xffffffff, 0xfeeff06f, 0x873fffff, 0x1ff01ff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x7ff87f, 0xffffffff, 0xfe3fffff, 0xff3fffff, 0xff07ffff, 0x1e03ffff, 0xfe00, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ff, 0x0, 0xffffffff, 0x7ffff, 0xffffffff, 0xfc07ffff, 0xffffffff, 0x3ff00ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0xffffffff, 0x33bff, 0x0, 0xe0000000, 0xffffffff, 0xffff00ff, 0x3ffffff, 0xffff0000, 0x3ff, 0xffff0000, 0xfff, 0x7fffff, 0xffffffff, 0xffffffff, 0xfffc3fff, 0x803fffff, 0xffffffff, 0xdfffffff, 0xffff0007, 0x3ff01ff, 0xffffffff, 0xffdfffff, 0xffff00ff, 0x7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ffffe, 0xfffbffff, 0xffffffff, 0x3, 0x0, 0xbfffbd7f, 0xffff03ff, 0xffffffff, 0x3ff07ff, 0xfff99fef, 0xfbedfdff, 0xe081399f, 0x1f1fcf, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xefffffff, 0x3, 0xffffffff, 0xffffffff, 0x3ff00ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xff3fffff, 0x3fffffff, 0x0, 0xffffffff, 0xffffffff, 0x3ff001f, 0x1fff, 0xffffffff, 0x3ffffff, 0x3ff, 0x0, 0xe7ffffff, 0xffff0fff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xfffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x8007ffff, 0xff6ff27f, 0xf9bfffff, 0x3ff007f, 0x0, 0x0, 0xfffffcff, 0xfcffffff, 0x1f, 0xffffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xffffffff, 0xffff0007, 0xffffffff, 0x1ffffff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffffdff, 0xff7fffff, 0xffff003f, 0xffff1fff, 0xfffcffff, 0x7ffeff, 0x0, 0x0, 0xfffffb7f, 0xb47fffff, 0x3ff00ff, 0xfffffdbf, 0x1fb7fff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ffffff, 0xfffdffff, 0xc7ffffff, 0x3ffffff, 0x0, 0x0, 0x10000, 0xffffffff, 0x8003ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0x7ffff, 0xffffffff, 0xffff, 0x3fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x7fffffff, 0xffffc3ff, 0xffffffff, 0x7fffffff, 0xffff03ff, 0x3f3fff, 0xffffffff, 0xffffffff, 0xfbff003f, 0xe0fffffb, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff87ff, 0xffffffff, 0xffff80ff, 0x0, 0x0, 0x3001f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef0000, 0xffffffff, 0x40007, 0x270000, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff07ff, 0xf3ff01ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffff3fff, 0xffff007f, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffffffff, 0xfffffe7f, 0xffffffff, 0xf807ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0x3f, 0x0, 0x0, 0x0, 0xfffff, 0xfffff, 0xffffffff, 0xffffffff, 0x7fffff, 0x1ffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffcfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8000fff, 0xfffe, 0x0, 0x0, 0x7fffffff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf9ffff7f, 0xffff07db, 0xffffffff, 0x3fff, 0x8000, 0x0, 0x0, 0x0, 0xffffffff, 0x3fff1fff, 0xc3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x7fff, 0xffffffff, 0x83ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff6f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fff9f, 0x0, 0xffffffff, 0xffffffff, 0xc3ff0fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xffffffff, 0x1fffff, 0x0, 0x0, 0xfffffffe, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x30000, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xfffff, 0xfffe7fff, 0xfffefffe, 0x3fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fff, 0x0, 0xffffffc0, 0xffff0007, 0xfffffff, 0x301ff, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf0ffffff, 0x1fff1fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf87fffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x10fff, 0xffff0fff, 0xffffffff, 0x3ff00ff, 0xffffffff, 0xffff00ff, 0x33fff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xfffff, 0x1fff3fff, 0xffff01ff, 0xbfffffff, 0xfffc03f, 0x1ff01ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7ffff, 0xffffffff, 0x7ff, 0x3ff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0003, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0001, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +//4824 bytes +enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)([ 0x0, 0x20, 0x98, 0x298], [ 0x80, 0xf0, 0x400, 0x43c0], [ 0x3020100, 0x7060504, 0x9080101, 0xb0b0b0a, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0c, 0xd010101, 0xd010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xe000d, 0xd000f, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x10000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x120011, 0x140013, 0x160015, 0x180017, 0x1a0019, 0x1c001b, 0x1e001d, 0x1f000d, 0x1d001d, 0x20001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x220021, 0xd000d, 0xd000d, 0x23000d, 0x24000d, 0x1d001d, 0x1d001d, 0x1d001d, 0x25001d, 0x1d0026, 0x27001d, 0x1d001d, 0x28001d, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0x320031, 0x1d0033, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x34000d, 0xd000d, 0x35000d, 0xd0036, 0xd000d, 0x37000d, 0xd000d, 0xd000d, 0xd000d, 0x390038, 0x1d001d, 0x1d003a, 0xd000d, 0xd000d, 0xd003b, 0xd000d, 0x1d003c, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d003d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x3e000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x3e000d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x2, 0x0, 0x0, 0x40003, 0x60005, 0x0, 0x0, 0x80007, 0xa0009, 0xc000b, 0xd, 0x0, 0xf000e, 0x110010, 0x130012, 0x150014, 0x170016, 0x190018, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x240000, 0x260025, 0x0, 0x270000, 0x0, 0x0, 0x280000, 0x2a0029, 0x2c002b, 0x2e002d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30002f, 0x320031, 0x330000, 0x30002d, 0x350034, 0x370036, 0x390038, 0x3b003a, 0x3d003c, 0x3e0000, 0x3f0000, 0x410040, 0x430042, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x470046, 0x480000, 0x4a0049, 0x0, 0x4b, 0x0, 0x0, 0x0, 0x0, 0x4d004c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e0000, 0x4f, 0x0, 0x500000, 0x520051, 0x540053, 0x550000, 0x570056, 0x0, 0x580000, 0x590000, 0x4, 0x5a, 0x5c005b, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f005e, 0x0, 0x0, 0x60, 0x610000, 0x0, 0x620000, 0x610063, 0x640000, 0x650000, 0x660000, 0x680067, 0x690000, 0x38006a, 0x6b0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d006c, 0x0, 0x0, 0x0, 0x0, 0x6e0000, 0x6f0000, 0x710070, 0x720000, 0x0, 0x0, 0x0, 0x740073, 0x75002d, 0x760000, 0x59, 0x780077, 0x7a0079, 0x7b0000, 0x7c, 0x7e007d, 0x7f007f, 0x80002f, 0x820081, 0x840083, 0x0, 0x860085, 0x880087, 0x7f0089, 0x0, 0x0, 0x8a0067, 0x7f008b, 0x4f008c, 0x8e008d, 0x7f008f, 0x730090, 0x920091, 0x940093, 0x960095, 0x7f0097, 0x980000, 0x9a0099, 0x7f009b, 0x7f007f, 0x9c007f, 0x9e009d, 0x9f0087, 0xa100a0, 0xa20000, 0xa30000, 0xa40046, 0xa50000, 0xa700a6, 0xa900a8, 0xab00aa, 0x7f007f, 0xac0000, 0xad0000, 0x7f007f, 0x5500ae, 0xaf0000, 0xb100b0, 0xb300b2, 0x7f007f, 0x7f00b4, 0xb600b5, 0xb800b7, 0xba00b9, 0xbb0000, 0x3000bc, 0x7f00b1, 0x7f007f, 0xbe00bd, 0x7f00bf, 0xc100c0, 0x7f00c2, 0x7f007f, 0xc3007f, 0x6f00c4, 0xc600c5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f006f, 0xc70000, 0x0, 0xc80000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x9900c9, 0xca0000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0xb30000, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0xcb0030, 0xcc0077, 0xcd0000, 0x7f00ce, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f, 0x7f00cf, 0xd00000, 0xd200d1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x610000, 0x0, 0xca0000, 0x7f0098, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0xd3007f, 0x0, 0x0, 0xd500d4, 0x0, 0x0, 0xb40000, 0x7f007f, 0x7f007f, 0xd60000, 0x7f00d7, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x5f006e, 0xc80000, 0x0, 0x350000, 0xd8, 0xd90000, 0xda0000, 0xdb007f, 0xdc0000, 0x7f007f, 0xdd0000, 0xdf00de, 0xe100e0, 0x0, 0x0, 0xe2, 0x0, 0xe30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f00e4, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f00e5, 0x7f007f, 0xe700e6, 0x7f00e8, 0xea00e9, 0x7f007f, 0x7f007f, 0xec00eb, 0x7f007f, 0x7f007f, 0x7f007f, 0xed007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0xee007f, 0x0, 0xef0000, 0xf00000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0xf1007f, 0x7f00f2, 0x7f00f3, 0x7f007f, 0xf500f4, 0xf700f6, 0x7f007f, 0x7f007f, 0x38, 0xf900f8, 0x0, 0xfa00e7, 0xfc00fb, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd0000, 0xfe0000, 0xff0000, 0x100004b, 0x7f0101, 0x0, 0x0, 0x1020000, 0x1040103, 0x0, 0x1060105, 0x0, 0x0, 0x0, 0x0, 0x0, 0x930000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x0, 0x107, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x108, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1090000, 0x0, 0x0, 0x0, 0x0, 0x550000, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x7f0055, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f010b, 0x10c, 0x7f007f, 0x0, 0x10b0000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10d0000, 0x0, 0x0, 0x0, 0x3000000, 0x280f, 0x4, 0x0, 0x10000, 0x1800000, 0x0, 0x11800, 0x0, 0xff00, 0xffe07800, 0x4000, 0x0, 0x1800, 0x0, 0x0, 0xfffc0000, 0x0, 0x18000000, 0x0, 0x8000c000, 0xb0000000, 0xf800, 0xfc8000, 0x0, 0x66010, 0xc3a0200, 0x4f7f8660, 0x80000030, 0x67811, 0x2c920200, 0xa1fdc678, 0xff80003f, 0x44011, 0xc120200, 0xfffec440, 0x1fc0030, 0x66011, 0xc120200, 0x4f1fc660, 0xff000030, 0x29c23813, 0x3c0038e7, 0xff7ec238, 0xf800003f, 0x22000, 0xc000200, 0xd89fc220, 0x7f0030, 0x22000, 0xc100200, 0x9f9fc220, 0xfff10030, 0x22000, 0x0, 0xf0220, 0x30, 0x3800011, 0xd0040000, 0xa07b80, 0xffe3003f, 0x1, 0x78000000, 0xf0000000, 0xffffffff, 0x829, 0xc0000050, 0xc0080a0, 0xffffffff, 0x100, 0x1e000, 0x1000000, 0x20000000, 0xf8002000, 0xffffffff, 0xdf40, 0x0, 0xc280c200, 0x0, 0xc200, 0x80c20000, 0x8000c2, 0x0, 0xc20000, 0x0, 0x18000000, 0xe0000000, 0xfc000000, 0x0, 0x0, 0xc0c00000, 0xe0000000, 0x0, 0x0, 0xfe000000, 0x7fc00000, 0xff800000, 0xfff00000, 0xfff22000, 0xc0000000, 0xfc00fc00, 0x0, 0xf800, 0x0, 0xffc00000, 0x80000000, 0xf000f000, 0xe, 0xffe0c000, 0x0, 0xf000, 0x3800fc00, 0x0, 0x30000000, 0x0, 0x80000000, 0x60000000, 0xfc00fc00, 0xc000, 0xffff8000, 0xffffffff, 0xe000, 0x80000000, 0x0, 0xff00000, 0x0, 0x7000000, 0x1c00, 0x0, 0xfe00, 0x18000000, 0xff00, 0xf8000000, 0xc0c00000, 0x0, 0x5500c0c0, 0xc0000000, 0x0, 0x200000, 0x10300020, 0x80230000, 0x0, 0xc0020, 0xe0008000, 0x0, 0xfffe, 0xfffe0000, 0xf000, 0x0, 0x0, 0xffffff80, 0xfffff800, 0x0, 0x0, 0x300000, 0x400000, 0x0, 0x0, 0x1f00000, 0x0, 0xdf40, 0x0, 0x7ffe7f00, 0xff800000, 0x80808080, 0x80808080, 0x0, 0xc0000000, 0xffffffff, 0x4000000, 0x0, 0x0, 0xfff00000, 0xffc00000, 0xffff, 0x1, 0x0, 0x1f, 0x10000, 0x8000, 0x0, 0x0, 0x7ff0, 0x80000000, 0x0, 0xe000, 0x0, 0xff80, 0x0, 0x0, 0xfffff000, 0x0, 0xff000000, 0xfc14f800, 0x3ffff, 0x0, 0xfc00e000, 0xfc003fc0, 0x0, 0x7ff00000, 0xe0000000, 0x3c004000, 0x80000000, 0x0, 0xff800000, 0xc00c000, 0x0, 0x7fffff8, 0xff800000, 0xff818181, 0x8080, 0x0, 0xfc00c000, 0x0, 0xfff0, 0x780, 0xf0000000, 0x0, 0xc000, 0xfc000000, 0xffffffff, 0x1f07ff80, 0xa0800000, 0x24, 0x0, 0x7fff8, 0x0, 0x30000, 0x0, 0xffff7f00, 0xffff, 0x80000, 0x20f080, 0x0, 0x60000000, 0x0, 0x80000000, 0xe3030303, 0xc1ff8080, 0x1000, 0x48000080, 0xc000c000, 0xffffffff, 0x0, 0xf8000000, 0x78, 0x700000, 0xe0008000, 0xfffffffe, 0xffff, 0xc0000000, 0xffffffff, 0xffffffff, 0xfffe0000, 0xf0000000, 0x0, 0x1ff0, 0xf800, 0xf8000000, 0x40000000, 0x0, 0xffc000f0, 0xffffffff, 0xc0000000, 0xfc00, 0xf00000, 0xf0000000, 0x0, 0xff00, 0x0, 0x8007ff0, 0x480800, 0xe4040004, 0xffc00000, 0xffffff00, 0x40, 0xf8020000, 0x2c0, 0x6e400000, 0x80000000, 0xffff007f, 0xffffffff, 0x7c80000, 0x70000000, 0x7c000000, 0x0, 0xf000000, 0x1100f90, 0x78c00000, 0xfe00fe00, 0x0, 0x0, 0xffffffff, 0x0, 0xff800780, 0x0, 0x1c00000, 0xc00000, 0xf80000, 0xe1fc0000, 0xffff01ff, 0xfffffe00, 0xffffffff, 0x0, 0xfff80000, 0x0, 0x3f80000, 0x0, 0xfc00ff00, 0xffffffff, 0x80000000, 0x0, 0xfffcc400, 0xffffffff, 0x1fffffff, 0xfc000000, 0xffff, 0xfffffc00, 0xffff, 0xfffff000, 0xff800000, 0x3c000, 0x7fc00000, 0xdff8, 0xfc00fe00, 0xff00, 0xff800000, 0x0, 0xffe00001, 0x40000, 0x0, 0xfffffffc, 0xffffffff, 0x40004280, 0xfc00, 0x0, 0xfc00f800, 0x66010, 0x4120200, 0x1f7ec660, 0xffe0e030, 0x10000000, 0xfffffffc, 0xfc00ff00, 0xffffffff, 0x0, 0xc00000, 0xfc00ffe0, 0xffffe000, 0x0, 0xfc000000, 0xfffffc00, 0xffffffff, 0x18000000, 0xf000, 0xffffff80, 0xffffffff, 0x0, 0xf0000000, 0xffffffff, 0x0, 0x0, 0x7ff80000, 0x900d80, 0x6400000, 0xfc00ff80, 0xffffffff, 0xffffffff, 0x300, 0x3000000, 0xffffffe0, 0xff00, 0x0, 0x0, 0xfff8, 0x200, 0x800000, 0xffc0, 0xe000, 0x30000, 0xff800100, 0x480, 0x4b800000, 0xfc00ff00, 0x240, 0xfe048000, 0xfffffc00, 0xffffffff, 0xfe000000, 0x20000, 0x38000000, 0xffffffff, 0xfffeffff, 0x0, 0x7ffc0000, 0x0, 0xffe08000, 0xfffffff0, 0xffffffff, 0xffff, 0x0, 0xffc00000, 0xffffffff, 0x80000000, 0x3c00, 0xfc00, 0xffc0c000, 0x400ffc0, 0x1f000004, 0xffff0000, 0xffffffff, 0xf8000000, 0xffffffff, 0x7800, 0x0, 0x7f00, 0xffffffff, 0xffffffff, 0xfffcffe0, 0xffffffff, 0x9010ffff, 0x0, 0xfffbfff8, 0xffd8ffff, 0xff0f, 0x0, 0xe000f800, 0xc00fe00, 0xfffffff0, 0x0, 0x180, 0x0, 0xfffff800, 0xffffffc0, 0xffffffff, 0xfff00000, 0xfff00000, 0xff800000, 0xfe000000, 0x200000, 0x0, 0x20000000, 0x1400219b, 0x10, 0x0, 0x20201840, 0x84000000, 0x203a0, 0x0, 0x0, 0xc0, 0x3000, 0x0, 0x7fff000, 0xffff0001, 0x80000000, 0xfffff81f, 0x6000080, 0xf824, 0x0, 0xffffc000, 0xffff7fff, 0xffffffff, 0x0, 0xc000e000, 0xffff3c00, 0xffffffff, 0xffff, 0xffff8000, 0x0, 0x7c000000, 0xffff, 0xfc000000, 0xffffffff, 0x80009080, 0xff800060, 0xffffffff, 0x3c00f000, 0xffffffff, 0xffffffff, 0x1ffff, 0x0, 0xffe00000, 0x1, 0xc0000000, 0x10, 0xf5080169, 0x5569157b, 0xa1080869, 0xf0000400, 0xf0000411, 0xffffffff, 0xfffcffff, 0xfff00000, 0x18000, 0x10001, 0xffc00000, 0xffffffff, 0x3f, 0xfff8, 0xf0000000, 0xfffcfe00, 0xffffffc0, 0xf000000, 0xe000e000, 0x0, 0x7800000, 0xfc000000, 0xfffef000, 0xfc00ff00, 0x0, 0xff00, 0xfffcc000, 0xfff00000, 0xe000c000, 0xfe00, 0x40000000, 0xf0003fc0, 0xfe00fe00, 0x80000, 0x0, 0xfffff800, 0xfc00ffff, 0xc0000000, 0x0, 0x0, 0xfffc, 0x0, 0xfffe, 0xf800, 0x0, 0x0, 0xffff0000, 0xfffffffd, 0x0, 0x0, 0xc0000000, 0x0, 0xc0000000]); enum MAX_SIMPLE_LOWER = 1433; enum MAX_SIMPLE_UPPER = 1450; enum MAX_SIMPLE_TITLE = 1454; @@ -3087,12 +3096,12 @@ static if (size_t.sizeof == 8) enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x70], [ 0x100, 0x140, 0x2500], [ 0x402030202020100, 0x807020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x6000600050004, 0x6000600060006, 0x6000600060006, 0x8000600060007, 0x6000600060006, 0x6000600060006, 0xc000b000a0009, 0x60006000e000d, 0x600060006000f, 0x6000600060006, 0x6000600110010, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x13001200060006, 0x14000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x15000600060006, 0x16000600060006, 0x6000600060006, 0x19000600180017, 0x6000600060006, 0x600060006001a, 0x6000600060006, 0x6000600060006, 0x600060006001b, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6001c00060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x20001f001e001d, 0x6000600060006, 0x21000600060006, 0x6000600060022, 0x6000600060006, 0x6000600230006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x0, 0x7fffffe00000000, 0x420040000000000, 0xff7fffff80000000, 0x55aaaaaaaaaaaaaa, 0xd4aaaaaaaaaaab55, 0xe6512d2a4e243129, 0xaa29aaaab5555240, 0x93faaaaaaaaaaaaa, 0xffffffffffffaa85, 0x1ffffffffefffff, 0x1f00000003, 0x0, 0x3c8a000000000020, 0xfffff00000010000, 0x192faaaaaae37fff, 0xffff000000000000, 0xaaaaaaaaffffffff, 0xaaaaaaaaaaaaa802, 0xaaaaaaaaaaaad554, 0xaaaaaaaaaaaa, 0xffffffff00000000, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf7ffffffffff0000, 0x0, 0x0, 0x0, 0x3f00000000000000, 0x0, 0x0, 0x1ff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaabfeaaaaa, 0xaaaaaaaaaaaaaaaa, 0xff00ff003f00ff, 0x3fff00ff00ff003f, 0x40df00ff00ff00ff, 0xdc00ff00cf00dc, 0x0, 0x8002000000000000, 0x1fff0000, 0x0, 0x321080000008c400, 0xffff0000000043c0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x3ffffff0000, 0xffff000000000000, 0x3fda1562ffffffff, 0xaaaaaaaaaaaaaaaa, 0x8501aaaaaaaaa, 0x20bfffffffff, 0x0, 0x0, 0x0, 0x0, 0x2aaaaaaaaaaa, 0x3aaaaaaa, 0x0, 0xaaabaaa800000000, 0x95ffaaaaaaaaaaaa, 0xaaa082aaaaba50aa, 0x75c000002aa050a, 0xffff000000000000, 0xffff03fff7ffffff, 0xffffffffffffffff, 0x0, 0xf8007f, 0x0, 0x0, 0x0, 0x0, 0x7fffffe, 0x0, 0x0, 0xffffff0000000000, 0xffff, 0x0, 0xfffffffff000000, 0x0, 0x0, 0x1bfbfffbff800000, 0x0, 0x0, 0x0, 0x7fdffffffffffb9, 0x0, 0x0, 0x0, 0x0, 0x7ffffffffffff, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0xffffffff00000000, 0x0, 0x0, 0xffffffc000000, 0xffffdfc000, 0xebc000000ffffffc, 0xfffffc000000ffef, 0xffffffc000000f, 0xffffffc0000, 0xfc000000ffffffc0, 0xffffc000000fffff, 0xffffffc000000ff, 0xffffffc00000, 0x3ffffffc00, 0xf0000003f7fffffc, 0xffc000000fdfffff, 0xffff0000003f7fff, 0xfffffc000000fdff, 0xbf7, 0x7e07ffffbff, 0x0, 0x0, 0x0, 0xffff000000000000, 0x3fffffffffff, 0x0, 0x0, 0xfffffffc00000000, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //1856 bytes enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x70], [ 0x100, 0x140, 0x1e00], [ 0x402030202020100, 0x807020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x6000600050004, 0x6000600060006, 0x6000600060006, 0x8000600060007, 0x6000600060006, 0x6000600060006, 0xb000a00060009, 0x60006000c0006, 0x600060006000d, 0x6000600060006, 0x600060006000e, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x10000f00060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x11000600060006, 0x6000600060006, 0x6000600130012, 0x6000600060006, 0x6000600060014, 0x6000600060006, 0x6000600060006, 0x6000600060015, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6001600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x1a001900180017, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x60006001b0006, 0x6000600060006, 0x60006001c0006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x0, 0x7fffffe, 0x0, 0x7f7fffff, 0xaa55555555555555, 0x2b555555555554aa, 0x11aed2d5b1dbced6, 0x55d255554aaaa490, 0x6c05555555555555, 0x557a, 0x0, 0x0, 0x0, 0x8045000000000000, 0xffbfffed740, 0xe6905555551c8000, 0xffffffffffff, 0x5555555500000000, 0x5555555555555401, 0x5555555555552aab, 0xfffe555555555555, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff00000000, 0x20bf, 0x0, 0x0, 0xffffffff00000000, 0x3fffffffffffff, 0x0, 0x0, 0xe7ffffffffff0000, 0x0, 0x5555555555555555, 0x5555555555555555, 0x5555555540155555, 0x5555555555555555, 0xff00ff003f00ff00, 0xff00aa003f00, 0xf00000000000000, 0xf001f000f000f00, 0xc00f3d503e273884, 0xffff00000020, 0x8, 0x0, 0x0, 0x0, 0xffc0000000000000, 0xffff, 0xffffffffffff, 0xc025ea9d00000000, 0x5555555555555555, 0x4280555555555, 0x0, 0x155555555555, 0x5555555, 0x0, 0x5554555400000000, 0x6a00555555555555, 0x555f7d5555452855, 0x200000014102f5, 0x7fffffe00000000, 0x0, 0x0, 0x0, 0xffffffffff, 0x0, 0xffff000000000000, 0xfffff, 0x0, 0xf7ff000000000000, 0x37f7ff, 0x0, 0x0, 0x0, 0x7ffffffffffff, 0x0, 0x0, 0x0, 0xffffffff00000000, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0xfff0000003ffffff, 0xffffff0000003fff, 0x3fde64d0000003, 0x3ffffff0000, 0x7b0000001fdfe7b0, 0xfffff0000001fc5f, 0x3ffffff0000003f, 0x3ffffff00000, 0xf0000003ffffff00, 0xffff0000003fffff, 0xffffff00000003ff, 0x7fffffc00000001, 0x1ffffff0000000, 0x7fffffc00000, 0x1ffffff0000, 0x400, 0x3ffffffff, 0x0, 0x0, 0x0, 0xffff000000000000, 0xffff03ffffff03ff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0]); -//11520 bytes -enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0x1180], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16001500000000, 0x0, 0x0, 0x18001700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1900000000, 0x1b001a0000, 0x1f001e001d001c, 0x23002200210020, 0x0, 0x2600250024, 0x0, 0x0, 0x28002700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b002a0029, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f002e0000, 0x33003200310030, 0x0, 0x0, 0x0, 0x3500340000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x370036, 0x0, 0x0, 0x0, 0x0, 0x3b003a00390038, 0x3d003c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x41004000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x440043, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x8e100800919ffff, 0x90700bd031905f9, 0xb25006b09cc0b94, 0xacc00e0082206c5, 0x5cf059204650834, 0x19301800a2d0783, 0xffff02f904d7051c, 0xffffffffffffffff, 0x8e20081091affff, 0x90800be031a05fa, 0xb26006c09cd0b95, 0xacd00e1082306c6, 0x5d0059304660835, 0x19401810a2e0784, 0xffff02fa04d8051d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0961ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x852011805ac0779, 0x3d9025709b70ad2, 0xb470128038d0557, 0x315004703950629, 0x29f008608d905f1, 0xffff00cb0589070f, 0x4f90213097e0adc, 0x8eb0a3f087c06ff, 0x853011905ad077a, 0x3da025809b80ad3, 0xb480129038e0558, 0x31600480396062a, 0x2a0008708da05f2, 0xffff00cc058a0710, 0x4fa0214097f0add, 0x36a0a40087d0700, 0x4ca04c909d909d8, 0xb520b5101cd01cc, 0x730072f020001ff, 0x8ab08aa00ce00cd, 0x6120611005c005b, 0x61e061d00520051, 0x661066002b202b1, 0x7ff07fe015a0159, 0x7e507e40b830b82, 0xa5c0a5b04bc04bb, 0x591059001b401b3, 0x9690968021c021b, 0x8750874ffffffff, 0x31c031b09350934, 0x6fb00950094ffff, 0x818008f008e06fc, 0x7c80b2b0b2a0819, 0xa1d0121012007c9, 0x4da04d9ffff0a1e, 0xb600b5f07c307c2, 0x162016106bb06ba, 0x2aa02a906810680, 0xd000c06080607, 0x70006f063f063e, 0xd200d108370836, 0x1df01de07260725, 0x1a201a10b7b0b7a, 0xa4c0a4b04c404c3, 0x564056307cd07cc, 0x9f509f409730972, 0x2106240623036b, 0x5d105fc05fb0022, 0xb120b110686068f, 0x2750524026a0269, 0x1af07f80b330276, 0xabc0767ffff01b0, 0x51e08b108b00a41, 0x98c0b030229027b, 0xffff04c700970096, 0x32b00d308e700aa, 0x62c062b00190018, 0x3cd055101050104, 0xffffffff09a203ce, 0x75707ec01690168, 0x52a077d01a70758, 0xaba03020301052b, 0xffffffff02560255, 0x1adffff091c091b, 0xffffffffffffffff, 0x5de092709260925, 0xadf0ade05e005df, 0x79604fc04fb0ae0, 0x7690a580a570797, 0xa7a0440043f076a, 0x54f02fe02fd0a7b, 0xb4e0b4d07680550, 0x16b016a06530652, 0x2c002bf05f805f7, 0xf200f106450644, 0x56e056d06a706a6, 0xab60ab50ab4ffff, 0x1ae022a07460745, 0x1eb01ea0b680b67, 0x96d096c04180417, 0x59d059c083d083c, 0x8ba08b9093c093b, 0x894089303ac03ab, 0x41a04190b0c0b0b, 0xa890a8804090408, 0x52f052e02b402b3, 0x7ef07ee016d016c, 0x847084605b505b4, 0x6cc06cbffff00d4, 0xb7d0b7c00640063, 0x73c073b00c200c1, 0x886088500790078, 0x6f306f205780577, 0xffffffffffffffff, 0x7940a08ffffffff, 0x95907bc04c80795, 0x690014c014b028b, 0x9d109d002d3041b, 0x324032309220921, 0x9f109f00950094f, 0x687021d0b190400, 0x7f90b34ffff0525, 0xa42ffff0abdffff, 0xffffffffffff093d, 0x27cffff0b28051f, 0xffff00b50b70ffff, 0x63a00f90b04098d, 0xabffffffff0986, 0xffff08e8059effff, 0xffffffff032cffff, 0xffffffffffffffff, 0xffffffff0031ffff, 0x9a30514ffff0552, 0x350ffffffffffff, 0x77e01a8041c07ed, 0xffffffffffff02d4, 0xffff0abbffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff070d0092ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff096effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cf01ce04a304a2, 0x1f601f5ffffffff, 0xa31ffffffffffff, 0x382ffff086a0122, 0xffffffffffffffff, 0xffff0299ffffffff, 0xffff00eb082406d5, 0x9c60b9affff07f0, 0x17c04ac04b1ffff, 0x16601d20ab70a11, 0xb010b2c096f0598, 0x1060399081a0962, 0x688ffff062d0b6d, 0xac03450605032d, 0x9a084806f808f9, 0xec082506d6029a, 0x17d04ad04b2ffff, 0x16701d30ab80a12, 0xb020b2d09700599, 0x107039a081b0963, 0x68a0689062e0b6e, 0xad03460606032e, 0x9b084906f908fa, 0x97409c70b9b07f1, 0xffffffff059a04ae, 0x9750b6f0347ffff, 0x4a704a6018c018b, 0x85b085a0a830a82, 0x98509840580057f, 0x3ba03b909db09da, 0x8be08bd02f602f5, 0x363036204480447, 0x38301d6062f0b2e, 0xa7effff0ab9059b, 0x5d905d801d70a7f, 0x86b01230a32ffff, 0x96a0291051804ef, 0x5aa0090098a0aef, 0x8f300a008f506fd, 0x38f009c031d05ed, 0x3bf053e0b3f071d, 0xab0027d03d106e5, 0x4b5012608660a86, 0x1b90a0e07a80808, 0x2df0a6d050f07ea, 0x15b02450ac809a0, 0xb55093606620579, 0x5303c1061f09ea, 0x3c0053f0b40071e, 0xab1027e03d206e6, 0x4b6012708670a87, 0x1ba0a0f07a90809, 0x2e00a6e051007eb, 0x15c02460ac909a1, 0xb5609370663057a, 0x5403c2062009eb, 0x96b0292051904f0, 0x5ab0091098b0af0, 0x8f400a108f606fe, 0x390009d031e05ee, 0x5cb05ca0a9d0a9c, 0xb440b4302440243, 0x3e403e301fa01f9, 0x855085409b209b1, 0x8dc08db05a105a0, 0x398039708c208c1, 0x933093208840883, 0x416041503dc03db, 0xffffffff0b1c0b1b, 0xffffffffffffffff, 0x5a505a4ffffffff, 0xe600e508270826, 0x5e005d06ce06cd, 0x50004061a0619, 0xca00c9072e072d, 0x566056508a908a8, 0x10b010a06b306b2, 0x1a0019f04ee04ed, 0x45604550a0b0a0a, 0xb6a0b6907b907b8, 0x4050404082d082c, 0x8ea08e909bb09ba, 0x8d608d503260325, 0x3b603b509f309f2, 0x21f06c106c002db, 0x23705d705d60220, 0x49e0a1c0a1b0238, 0x2dc07910790049f, 0x55a0559023c023b, 0x6e206e102620261, 0x626062500580057, 0x6770676001e001d, 0x675067401130112, 0x568056702480247, 0x7a707a6011b011a, 0x776077504990498, 0x46804670a8b0a8a, 0xafa0af902360235, 0x42a0429038a0389, 0x8c608c5090a0909, 0x920091f03380337, 0x3d603d509fb09fa, 0xa8f0a8e08210820, 0x1cb01ca07990798, 0x2c402c30a160a15, 0x171017004ea04e9, 0x5b905b806a306a2, 0x2c002b064b064a, 0x38003706370636, 0xb400b30b640b63, 0xac70ac607360735, 0x4ec04eb088a0889, 0x227017e0b9cffff, 0xa940293071704b3, 0x587047b084e0abe, 0x1330b5d06d303a5, 0x3030352067a0384, 0x1350928067c08ff, 0xb21094506d705b2, 0x4ff052208560a00, 0x22f0a3707130295, 0xffff078505da0184, 0xffffffffffffffff, 0xffffffffffffffff, 0x228017f0b9dffff, 0xa950294071804b4, 0x588047c084f0abf, 0x1340b5e06d403a6, 0x3040353067b0385, 0x1360929067d0900, 0xb22094606d805b3, 0x500052308570a01, 0x2300a3807140296, 0xffff078605db0185, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50b03e9081e09b3, 0x1b10b8806f401f0, 0x1b7049604830241, 0x46b08780a980a96, 0xaf1069e07fc0569, 0x42f0646039100f7, 0x8bf068d090502d9, 0x9130670033b014f, 0x3cf084a09e40b49, 0xaa2ffff02e10108, 0xffffffffffffffff, 0xffffffff0a4fffff, 0x3fa06970ae10153, 0x92e0666042b05c2, 0x3c705ef0317002d, 0x9230b3509ec0025, 0x85806ae055b008c, 0x427087e09a70ada, 0xa04075f021504fd, 0x71104d1024901da, 0x81409940aa802a1, 0x6ea03c9058503df, 0xffff039d011e0b2f, 0x6930901000effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x36000c3043105d4, 0x930006d081206be, 0x9f60b230374088f, 0x335007e08b70601, 0xa5502cd01f70a67, 0x55d0137095106b6, 0x7c605730b7807d8, 0x75b09e804dd0489, 0x64c037802e7044d, 0x6a0099c0141084c, 0x89709150041045b, 0x632031300450b96, 0xb6109dc023309ad, 0x737054100820271, 0x77b07150a060ad8, 0x4b708b201e40526, 0x3ad06d909f80289, 0x8040b1d05b601fb, 0x35a0678034c05dc, 0x92a068402ad0139, 0x38b06210b7e004b, 0xffffffff04370061, 0x38c06220b7f004c, 0xffffffff04380062, 0x5110a1006e70540, 0x5cc09380a700a6f, 0xffffffffffff069b, 0xffffffffffffffff, 0x3fb06980ae20154, 0x92f0667042c05c3, 0x3c805f00318002e, 0x9240b3609ed0026, 0x85906af055c008d, 0x428087f09a80adb, 0xa050760021604fe, 0x71204d2024a01db, 0x81509950aa902a2, 0x6eb03ca058603e0, 0xffff039e011f0b30, 0x6940902000fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0505ffff, 0xffffffff030dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b8cffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4c604c506f106f0, 0xb810b8007740773, 0x472047108010800, 0x260025f09810980, 0x904090305760575, 0x334033308f008ef, 0x910090f02cc02cb, 0x3d403d3045a0459, 0x7c507c40afe0afd, 0xa180a1704dc04db, 0x5c905c801ac01ab, 0x72a07290240023f, 0x83b083a00db00da, 0x61406130060005f, 0x60c060b00130012, 0x692069102a402a3, 0x6b506b4015e015d, 0x79d079c05af05ae, 0x49104900a5e0a5d, 0xb540b5302080207, 0x3de03dd020e020d, 0x877087609420941, 0x8fc08fb03550354, 0x37d037c08ce08cd, 0x95e095d08810880, 0x204020303d803d7, 0x1b601b50b380b37, 0xa3c0a3b047e047d, 0x5c105c007db07da, 0x14e014d080d080c, 0x2ac02ab065b065a, 0x4a004906310630, 0x890088061c061b, 0x53d053c089f089e, 0x206020507340733, 0x1d101d004c004bf, 0x43e043d0a540a53, 0xffffffff07cf07ce, 0x882ffffffffffff, 0xffff08ecffffffff, 0x8e408e303080307, 0x3a203a109c509c4, 0xad70ad602540253, 0x7e307e2042e042d, 0x7af07ae0a200a1f, 0x720071f04c204c1, 0x5440543021a0219, 0x702070100990098, 0x5f605f500a300a2, 0x6510650004e004d, 0xaf40af301250124, 0x531053002f402f3, 0x770076f01170116, 0x7b307b204950494, 0x3f503f40a6a0a69, 0xb770b76024e024d, 0x43a043903bc03bb, 0x8f208f108d008cf, 0x91e091d035f035e, 0x54a054909910990, 0xa720a7108a108a0, 0x19a01990450044f, 0x1d501d40a440a43, 0xee00ed06de06dd, 0x9fc003503a70603, 0x55300f3094b0b3b, 0x9fd003603a80604, 0x55400f4094c0b3c, 0x22b019d0a2f076b, 0xffffffff06f604cb, 0x22c019e0a30076c, 0xffffffff06f704cc, 0x16030505fd039b, 0x172086c067e08e5, 0x17030605fe039c, 0x173086d067f08e6, 0x1820ac20a3302e5, 0x1e0078c04a801a3, 0x1830ac30a3402e6, 0x1e1078d04a901a4, 0x35605e1034e0074, 0xffffffff08bb000a, 0x35705e2034f0075, 0xffffffff08bc000b, 0xa59ffff01e6ffff, 0x76dffff04d3ffff, 0xa5affff01e7ffff, 0x76effff04d4ffff, 0x654043b02c5098e, 0x5e30b86002903b1, 0x655043c02c6098f, 0x5e40b87002a03b2, 0x9d202d502ed0445, 0x41d05cd02090a6b, 0xa510aaa000808df, 0xffffffff06170321, 0x3a3028509640b15, 0x8ed012a02c10664, 0x3a4028609650b16, 0x8ee012b02c20665, 0x9ee028f03b706df, 0x5b001fd07f20b0d, 0x9ef029003b806e0, 0x5b101fe07f30b0e, 0xdc09af0b7409de, 0x7c0281073d058e, 0xdd09b00b7509df, 0x7d0282073e058f, 0x978ffff06680370, 0xffffffffffffffff, 0x2ee044606690371, 0xffff0971ffff0979, 0xf5ffffffffffff, 0xffffffffffffffff, 0x20a0a6c09d302d6, 0xffffffffffff00f6, 0xffffffff035c00bb, 0xffffffffffffffff, 0x41e05ce035d00bc, 0xffffffffffffffff, 0xffffffff01c30176, 0xffffffff029bffff, 0xa520aab01c40177, 0xffffffffffff029c, 0x3bdffffffffffff, 0xffffffffffffffff, 0x6180322000908e0, 0xffffffffffff03be, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff06faffffffff, 0x9b90b27ffffffff, 0xffffffffffffffff, 0xffff094dffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff094effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x45704920a7307b0, 0xa3d09d601780765, 0x70702f101ec0532, 0x82a044b00de0ae5, 0x45804930a7407b1, 0xa3e09d701790766, 0x70802f201ed0533, 0x82b044c00df0ae6, 0x870ffffffffffff, 0xffffffffffff0871, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x594037affffffff, 0x743081600a60b1f, 0x89509c8052803fc, 0x7b404850a8c020f, 0xa9a071b018d0221, 0x516085c029d0102, 0x93f065c09760b17, 0xa70b200595037b, 0x52903fd07440817, 0xa8d0210089609c9, 0x18e022207b50486, 0x29e01030a9b071c, 0x9770b180517085d, 0xffffffff0940065d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x10c0ae7065603c5, 0x509044106b00828, 0xaac01c808680a49, 0x225020b0751049a, 0x27705360b590709, 0x98200a8040a080e, 0x5a2002f09390703, 0x8cb003b09570638, 0x8720151039f066e, 0x3e505d20b050682, 0xa9e0114040207d0, 0x53801bb02e304b9, 0x10d0ae8065703c6, 0x50a044206b10829, 0xaad01c908690a4a, 0x226020c0752049b, 0x27805370b5a070a, 0x98300a9040b080f, 0x5a30030093a0704, 0x8cc003c09580639, 0x873015203a0066f, 0x3e605d30b060683, 0xa9f0115040307d1, 0x53901bc02e404ba, 0x30e063b003a0039, 0x9d407bd0a090032, 0x265037f037e09d5, 0x401059f0b1a0266, 0xa140a13ffff021e, 0xffff074c074bffff, 0xffffffffffffffff, 0x28c095affffffff, 0x33a033902a602a5, 0x90e090d08c808c7, 0x2b902b803730372, 0x46e046d09930992, 0xb500b4f07fb07fa, 0x4b004af07780777, 0x1e901e80a600a5f, 0xd600d5056c056b, 0x66006507280727, 0x20001f08a508a4, 0x5a005906280627, 0x26402630b140b13, 0x190018f06bd06bc, 0x5bb05ba07bf07be, 0xa360a35074e074d, 0x280027f04e004df, 0x3aa03a90afc0afb, 0x95409530470046f, 0x328032708d208d1, 0x9bd09bc092d092c, 0x82f082e057c057b, 0x420041f0aa70aa6, 0xa0d0a0c02180217, 0x70c070b01a601a5, 0x81d081c010f010e, 0xffffffffffffffff, 0x358ffffffffffff, 0xffff032a03290359, 0x6d006cfffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50c03ea081f09b4, 0x1b20b8906f501f1, 0x1b8049704840242, 0x46c08790a990a97, 0xaf2069f07fd056a, 0x4300647039200f8, 0x8c0068e090602da, 0x9140671033c0150, 0x3d0084b09e50b4a, 0xaa3ffff02e20109, 0xffffffffffffffff, 0xffffffff0a50ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa1a0a1901d901d8, 0x79b079a0a930a92, 0x69d069c0140013f, 0x4f404f302bb02ba, 0x6410640003e003d, 0x649064805bd05bc, 0x73a073900770076, 0xb660b650040003f, 0x782078104e804e7, 0x88e088d0acf0ace, 0xac10ac002c802c7, 0xffffffff017b017a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x298029705130512, 0x9ff09fe09480947, 0xa7d0a7c07ad07ac, 0x18a01890a3a0a39, 0xaf00ae07480747, 0x52d052c08880887, 0x34003305ea05e9, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x70006ffffffff, 0xc600c508a708a6, 0xe800e706ef06ee, 0x680067060e060d, 0x1580157ffffffff, 0xb460b4508310830, 0x9bf09be05020501, 0x2b002af0a260a25, 0x95c095b087b087a, 0x3940393097d097c, 0x85108500b580b57, 0x330032f03120311, 0x5a705a602120211, 0x9890988040f040e, 0x8650864051b051a, 0xa220a21023e023d, 0x66b066a00ff00fe, 0x6a506a40b0a0b09, 0x65f065e01560155, 0x69a069902ea02e9, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d507a107a0ffff, 0xb6c0b6b050604d6, 0x9b609b505840583, 0x84108400acb0aca, 0x4fffffffffffff, 0xffffffff0b710050, 0x24c024b0b080b07, 0x3b003afffff078e, 0x49d049c07d707d6, 0x9cb09ca03f903f8, 0x27a0279050e050d, 0x11d011c080b080a, 0x93e00b607060705, 0xffff00fa09870b29, 0xb5b00930351070e, 0x9f009e05e805e7, 0x13e013d06e406e3, 0x28e028d054e054d, 0x434043308030802, 0x7590b8d0515078f, 0xffff01750174075a, 0xffffffffffffffff, 0xffffffff02f802f7, 0x310030fffffffff, 0xffffffff0aec0aeb, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09e709e6ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb5cffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x36100c4043205d5, 0x931006e081306bf, 0x9f70b2403750890, 0x336007f08b80602, 0xa5602ce01f80a68, 0x55e0138095206b7, 0x7c705740b7907d9, 0x75c09e904de048a, 0x64d037902e8044e, 0x6a1099d0142084d, 0x89809160042045c, 0x633031400460b97, 0xb6209dd023409ae, 0x738054200830272, 0x77c07160a070ad9, 0x4b808b301e50527, 0x3ae06da09f9028a, 0x8050b1e05b701fc, 0x35b0679034d05dd, 0x92b068502ae013a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2670aed09c0ffff, 0x949064205a80143, 0xb720771074904cd, 0x3fe04f507c0013b, 0x2ef03eb054b0259, 0x19707a20a800aae, 0xffff045105ff08c3, 0xffffffffffffffff, 0x2680aee09c1ffff, 0x94a064305a90144, 0xb730772074a04ce, 0x3ff04f607c1013c, 0x2f003ec054c025a, 0x19807a30a810aaf, 0xffff0452060008c4, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5be075d074f0a61, 0x9ab0aa407e8012f, 0x2dd099a0af50955, 0x14507d204e104f7, 0x8c90634047700e9, 0x36c072102cf0043, 0x25d0547040602d1, 0x38006720b840147, 0x479078a0ac40a75, 0xb4b077f02310481, 0x5bf075e07500a62, 0x9ac0aa507e90130, 0x2de099b0af60956, 0x14607d304e204f8, 0x8ca0635047800ea, 0x36d072202d00044, 0x25e0548040702d2, 0x38106730b850148, 0x47a078b0ac50a76, 0xb4c078002320482, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x73f07d40ad00a45, 0xaff09960223056f, 0x7920b3909c2022d, 0x761047f04a0024f, 0x6a8034305c40331, 0x6c7028301bf0b31, 0x64e03c3028709a9, 0x60908d3002702eb, 0x8ac0a290a270753, 0xffffffffffffffff, 0x74007d50ad10a46, 0xb00099702240570, 0x7930b3a09c3022e, 0x762048004a10250, 0x6a9034405c50332, 0x6c8028401c00b32, 0x64f03c4028809aa, 0x60a08d4002802ec, 0x8ad0a2a0a280754, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x26b00a40461088b, 0x25101100ae306aa, 0xffff00b709430b3d, 0x8fd00b908f705e5, 0x1310b4107ca0806, 0x2ff03e1055f0832, 0xffff02a704210581, 0x4e3047507630a23, 0xffff03b3063c0a2b, 0x88cffff06d102c9, 0x6ab026c00a50462, 0xb3e025201110ae4, 0x5e6ffff00b80944, 0x80708fe00ba08f8, 0x83301320b4207cb, 0x582030003e20560, 0xa24ffff02a80422, 0xa2c04e404760764, 0x2caffff03b4063d, 0xffffffffffff06d2, 0x1490191048704cf, 0x57101e207e00b8e, 0x44305c603e70695, 0x3090a470a8407e6, 0xc7090b0b8a0911, 0x8a0891072b0341, 0x10009660862045f, 0x7a036607190899, 0x33f04bd05200201, 0x463079e0ad40a63, 0x53a04690838095f, 0x1bd0b9006e80239, 0xffff066c09e002fb, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x14a0192048804d0, 0x57201e307e10b8f, 0x44405c703e80696, 0x30a0a480a8507e7, 0xc8090c0b8b0912, 0x8b0892072c0342, 0x101096708630460, 0x7b0367071a089a, 0x34004be05210202, 0x464079f0ad50a64, 0x53b046a08390960, 0x1be0b9106e9023a, 0xffff066d09e102fc, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb9207a401dc057d, 0x4e5048e01c101a9, 0x83e0731036e00cf, 0x45d0844097a00ef, 0x68b086e015f0b0f, 0x60f08dd02d7034a, 0x8420ab20a650364, 0x6b803cb05550453, 0xb9307a501dd057e, 0x4e6048f01c201aa, 0x83f0732036f00d0, 0x45e0845097b00f0, 0x68c086f01600b10, 0x61008de02d8034b, 0x8430ab30a660365, 0x6b903cc05560454, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x31f0723099e0084, 0x40c05f30410025b, 0x56106db09170069, 0xa02061503480010, 0x19507aa04aa0473, 0x1ee0aa006ec030b, 0xae906c908a204f1, 0x50307b609e20a4d, 0x3200724099f0085, 0x40d05f40411025c, 0x56206dc0918006a, 0xa03061603490011, 0x19607ab04ab0474, 0x1ef0aa106ed030c, 0xaea06ca08a304f2, 0x50407b709e30a4e, 0x8ae005503f60658, 0x435002308d705eb, 0xbf03760596, 0x507053408100741, 0x755019b000207ba, 0xa90033d044904a4, 0x545016e02730af7, 0x9ce0b98099806ac, 0x3f7065900140368, 0x8d805ec08af0056, 0x377059704360024, 0x8110742000100c0, 0x307bb05080535, 0x44a04a50756019c, 0x2740af80a91033e, 0x99906ad0546016f, 0x15036909cf0b99, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +//11648 bytes +enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0x11c0], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16001500000000, 0x0, 0x0, 0x18001700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1900000000, 0x1b001a0000, 0x1f001e001d001c, 0x23002200210020, 0x0, 0x2600250024, 0x0, 0x0, 0x28002700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b002a0029, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f002e0000, 0x33003200310030, 0x0, 0x0, 0x0, 0x3500340000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x3c003b003a0039, 0x3e003d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42004100000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x8e50080091dffff, 0x90b00bd031905fb, 0xb2b006b09d00b9a, 0xad200e0082606c7, 0x5d1059404670838, 0x19301800a330785, 0xffff02f904d9051e, 0xffffffffffffffff, 0x8e60081091effff, 0x90c00be031a05fc, 0xb2c006c09d10b9b, 0xad300e1082706c8, 0x5d2059504680839, 0x19401810a340786, 0xffff02fa04da051f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0965ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x856011805ae077b, 0x3db025709bb0ad8, 0xb4d0128038f0559, 0x31500470397062b, 0x29f008608dd05f3, 0xffff00cb058b0711, 0x4fb021309820ae2, 0x8ef0a4508800701, 0x857011905af077c, 0x3dc025809bc0ad9, 0xb4e01290390055a, 0x31600480398062c, 0x2a0008708de05f4, 0xffff00cc058c0712, 0x4fc021409830ae3, 0x36a0a4608810702, 0x4cc04cb09dd09dc, 0xb580b5701cd01cc, 0x7320731020001ff, 0x8af08ae00ce00cd, 0x6140613005c005b, 0x620061f00520051, 0x663066202b202b1, 0x8010800015a0159, 0x7e707e60b890b88, 0xa620a6104be04bd, 0x593059201b401b3, 0x96d096c021c021b, 0x8790878ffffffff, 0x31c031b09390938, 0x6fd00950094ffff, 0x81c008f008e06fe, 0x7ca0b310b30081d, 0xa230121012007cb, 0x4dc04dbffff0a24, 0xb660b6507c507c4, 0x162016106bd06bc, 0x2aa02a906830682, 0xd000c060a0609, 0x70006f06410640, 0xd200d1083b083a, 0x1df01de07280727, 0x1a201a10b810b80, 0xa520a5104c604c5, 0x566056507cf07ce, 0x9fb09fa09770976, 0x2106260625036b, 0x5d305fe05fd0022, 0xb180b1706880691, 0x2750526026a0269, 0x1af07fa0b390276, 0xac20769ffff01b0, 0x52008b508b40a47, 0x9900b090229027b, 0xffff04c900970096, 0x32b00d308eb00aa, 0x62e062d00190018, 0x3cf055301050104, 0xffffffff09a603d0, 0x75907ee01690168, 0x52c077f01a7075a, 0xac003020301052d, 0xffffffff02560255, 0x1adffff0920091f, 0xffffffffffffffff, 0x5e0092b092a0929, 0xae50ae405e205e1, 0x79804fe04fd0ae6, 0x76b0a5e0a5d0799, 0xa8004420441076c, 0x55102fe02fd0a81, 0xb540b53076a0552, 0x16b016a06550654, 0x2c002bf05fa05f9, 0xf200f106470646, 0x570056f06a906a8, 0xabc0abb0abaffff, 0x1ae022a07480747, 0x1eb01ea0b6e0b6d, 0x9710970041a0419, 0x59f059e08410840, 0x8be08bd0940093f, 0x898089703ae03ad, 0x41c041b0b120b11, 0xa8f0a8e040b040a, 0x531053002b402b3, 0x7f107f0016d016c, 0x84b084a05b705b6, 0x6ce06cdffff00d4, 0xb830b8200640063, 0x73e073d00c200c1, 0x88a088900790078, 0x6f506f4057a0579, 0xffffffffffffffff, 0x7960a0effffffff, 0x95d07be04ca0797, 0x692014c014b028b, 0x9d509d402d3041d, 0x324032309260925, 0x9f709f609540953, 0x689021d0b1f0402, 0x7fb0b3affff0527, 0xa48ffff0ac3ffff, 0xffffffffffff0941, 0x27cffff0b2e0521, 0xffff00b50b76ffff, 0x63c00f90b0a0991, 0xabffffffff098a, 0xffff08ec05a0ffff, 0xffffffff032cffff, 0xffffffffffffffff, 0xffffffff0031ffff, 0x9a70516ffff0554, 0x350ffffffffffff, 0x78001a8041e07ef, 0xffffffffffff02d4, 0xffff0ac1ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff070f0092ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0972ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cf01ce04a504a4, 0x1f601f5ffffffff, 0xa37ffffffffffff, 0x382ffff086e0122, 0xffffffffffffffff, 0xffff0299ffffffff, 0xffff00eb082806d7, 0x9ca0ba0ffff07f2, 0x17c04ae04b30386, 0x16601d20abd0a17, 0xb070b320973059a, 0x106039b081e0966, 0x68affff062f0b73, 0xac03450607032d, 0x9a084c06fa08fd, 0xec082906d8029a, 0x17d04af04b409ce, 0x16701d30abe0a18, 0xb080b330974059b, 0x107039c081f0967, 0x68c068b06300b74, 0xad03460608032e, 0x9b084d06fb08fe, 0x97809cb0ba107f3, 0xffffffff059c04b0, 0x9790b750347ffff, 0x4a904a8018c018b, 0x85f085e0a890a88, 0x989098805820581, 0x3bc03bb09df09de, 0x8c208c102f602f5, 0x3630362044a0449, 0x38301d606310b34, 0xa84ffff0abf059d, 0x5db05da01d70a85, 0x86f01230a38ffff, 0x96e0291051a04f1, 0x5ac0090098e0af5, 0x8f700a008f906ff, 0x391009c031d05ef, 0x3c105400b45071f, 0xab6027d03d306e7, 0x4b70126086a0a8c, 0x1b90a1407aa080a, 0x2df0a73051107ec, 0x15b02450ace09a4, 0xb5b093a0664057b, 0x5303c3062109f0, 0x3c205410b460720, 0xab7027e03d406e8, 0x4b80127086b0a8d, 0x1ba0a1507ab080b, 0x2e00a74051207ed, 0x15c02460acf09a5, 0xb5c093b0665057c, 0x5403c4062209f1, 0x96f0292051b04f2, 0x5ad0091098f0af6, 0x8f800a108fa0700, 0x392009d031e05f0, 0x5cd05cc0aa30aa2, 0xb4a0b4902440243, 0x3e603e501fa01f9, 0x859085809b609b5, 0x8e008df05a305a2, 0x39a039908c608c5, 0x937093608880887, 0x418041703de03dd, 0xffffffff0b220b21, 0xffffffffffffffff, 0x5a705a6ffffffff, 0xe600e5082b082a, 0x5e005d06d006cf, 0x50004061c061b, 0xca00c90730072f, 0x568056708ad08ac, 0x10b010a06b506b4, 0x1a0019f04f004ef, 0x45804570a110a10, 0xb700b6f07bb07ba, 0x407040608310830, 0x8ee08ed09bf09be, 0x8da08d903260325, 0x3b803b709f909f8, 0x21f06c306c202db, 0x23705d905d80220, 0x4a00a220a210238, 0x2dc0793079204a1, 0x55c055b023c023b, 0x6e406e302620261, 0x628062700580057, 0x6790678001e001d, 0x677067601130112, 0x56a056902480247, 0x7a907a8011b011a, 0x7780777049b049a, 0x46a04690a910a90, 0xb000aff02360235, 0x42c042b038c038b, 0x8ca08c9090e090d, 0x924092303380337, 0x3d803d70a010a00, 0xa950a9408250824, 0x1cb01ca079b079a, 0x2c402c30a1c0a1b, 0x171017004ec04eb, 0x5bb05ba06a506a4, 0x2c002b064d064c, 0x38003706390638, 0xb400b30b6a0b69, 0xacd0acc07380737, 0x4ee04ed088e088d, 0x227017e0ba2ffff, 0xa9a0293071904b5, 0x589047d08520ac4, 0x1330b6306d503a7, 0x3030352067c0384, 0x135092c067e0903, 0xb27094906d905b4, 0x5010524085a0a06, 0x22f0a3d07150295, 0xffff078705dc0184, 0xffffffffffffffff, 0xffffffffffffffff, 0x228017f0ba3ffff, 0xa9b0294071a04b6, 0x58a047e08530ac5, 0x1340b6406d603a8, 0x3040353067d0385, 0x136092d067f0904, 0xb28094a06da05b5, 0x5020525085b0a07, 0x2300a3e07160296, 0xffff078805dd0185, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50d03eb082209b7, 0x1b10b8e06f601f0, 0x1b7049804850241, 0x46d087c0a9e0a9c, 0xaf706a007fe056b, 0x4310648039300f7, 0x8c3068f090902d9, 0x9170672033b014f, 0x3d1084e09ea0b4f, 0xaa8ffff02e10108, 0xffffffffffffffff, 0xffffffff0a55ffff, 0x3fc06990ae70153, 0x9320668042d05c4, 0x3c905f10317002d, 0x9270b3b09f20025, 0x85c06b0055d008c, 0x429088209ab0ae0, 0xa0a0761021504ff, 0x71304d3024901da, 0x81809980aae02a1, 0x6ec03cb058703e1, 0xffff039f011e0b35, 0x6950905000effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x36000c3043305d6, 0x934006d081606c0, 0x9fc0b2903740893, 0x335007e08bb0603, 0xa5b02cd01f70a6d, 0x55f0137095506b8, 0x7c805750b7e07da, 0x75d09ee04df048b, 0x64e037802e7044f, 0x6a209a001410850, 0x89b09190041045d, 0x634031300450b9c, 0xb6709e0023309b1, 0x739054300820271, 0x77d07170a0c0ade, 0x4b908b601e40528, 0x3af06db09fe0289, 0x8060b2305b801fb, 0x35a067a034c05de, 0x92e068602ad0139, 0x38d06230b84004b, 0xffffffff04390061, 0x38e06240b85004c, 0xffffffff043a0062, 0x5130a1606e90542, 0x5ce093c0a760a75, 0xffffffffffff069d, 0xffffffffffffffff, 0x3fd069a0ae80154, 0x9330669042e05c5, 0x3ca05f20318002e, 0x9280b3c09f30026, 0x85d06b1055e008d, 0x42a088309ac0ae1, 0xa0b076202160500, 0x71404d4024a01db, 0x81909990aaf02a2, 0x6ed03cc058803e2, 0xffff03a0011f0b36, 0x6960906000fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0507ffff, 0xffffffff030dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b92ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4c804c706f306f2, 0xb870b8607760775, 0x474047308030802, 0x260025f09850984, 0x908090705780577, 0x334033308f408f3, 0x914091302cc02cb, 0x3d603d5045c045b, 0x7c707c60b040b03, 0xa1e0a1d04de04dd, 0x5cb05ca01ac01ab, 0x72c072b0240023f, 0x83f083e00db00da, 0x61606150060005f, 0x60e060d00130012, 0x694069302a402a3, 0x6b706b6015e015d, 0x79f079e05b105b0, 0x49304920a640a63, 0xb5a0b5902080207, 0x3e003df020e020d, 0x87b087a09460945, 0x90008ff03550354, 0x37d037c08d208d1, 0x962096108850884, 0x204020303da03d9, 0x1b601b50b3e0b3d, 0xa420a410480047f, 0x5c305c207dd07dc, 0x14e014d08110810, 0x2ac02ab065d065c, 0x4a004906330632, 0x890088061e061d, 0x53f053e08a308a2, 0x206020507360735, 0x1d101d004c204c1, 0x440043f0a5a0a59, 0xffffffff07d107d0, 0x886ffffffffffff, 0xffff08f0ffffffff, 0x8e808e703080307, 0x3a403a309c909c8, 0xadd0adc02540253, 0x7e507e40430042f, 0x7b107b00a260a25, 0x722072104c404c3, 0x5460545021a0219, 0x704070300990098, 0x5f805f700a300a2, 0x6530652004e004d, 0xafa0af901250124, 0x533053202f402f3, 0x772077101170116, 0x7b507b404970496, 0x3f703f60a700a6f, 0xb7d0b7c024e024d, 0x43c043b03be03bd, 0x8f608f508d408d3, 0x9220921035f035e, 0x54c054b09950994, 0xa780a7708a508a4, 0x19a019904520451, 0x1d501d40a4a0a49, 0xee00ed06e006df, 0xa02003503a90605, 0x55500f3094f0b41, 0xa03003603aa0606, 0x55600f409500b42, 0x22b019d0a35076d, 0xffffffff06f804cd, 0x22c019e0a36076e, 0xffffffff06f904ce, 0x16030505ff039d, 0x1720870068008e9, 0x1703060600039e, 0x1730871068108ea, 0x1820ac80a3902e5, 0x1e0078e04aa01a3, 0x1830ac90a3a02e6, 0x1e1078f04ab01a4, 0x35605e3034e0074, 0xffffffff08bf000a, 0x35705e4034f0075, 0xffffffff08c0000b, 0xa5fffff01e6ffff, 0x76fffff04d5ffff, 0xa60ffff01e7ffff, 0x770ffff04d6ffff, 0x656043d02c50992, 0x5e50b8c002903b3, 0x657043e02c60993, 0x5e60b8d002a03b4, 0x9d602d502ed0447, 0x41f05cf02090a71, 0xa570ab0000808e3, 0xffffffff06190321, 0x3a5028509680b1b, 0x8f1012a02c10666, 0x3a6028609690b1c, 0x8f2012b02c20667, 0x9f4028f03b906e1, 0x5b201fd07f40b13, 0x9f5029003ba06e2, 0x5b301fe07f50b14, 0xdc09b30b7a09e4, 0x7c0281073f0590, 0xdd09b40b7b09e5, 0x7d028207400591, 0x97cffff066a0370, 0xffffffffffffffff, 0x2ee0448066b0371, 0xffff0975ffff097d, 0xf5ffffffffffff, 0xffffffffffffffff, 0x20a0a7209d702d6, 0xffffffffffff00f6, 0x387ffff035c00bb, 0xffffffffffffffff, 0x42005d0035d00bc, 0xffffffffffffffff, 0x9cfffff01c30176, 0xffffffff029bffff, 0xa580ab101c40177, 0xffffffffffff029c, 0x3bfffffffffffff, 0xffffffffffffffff, 0x61a0322000908e4, 0xffffffffffff03c0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff06fcffffffff, 0x9bd0b2dffffffff, 0xffffffffffffffff, 0xffff0951ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0952ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x45904940a7907b2, 0xa4309da01780767, 0x70902f101ec0534, 0x82e044d00de0aeb, 0x45a04950a7a07b3, 0xa4409db01790768, 0x70a02f201ed0535, 0x82f044e00df0aec, 0x874ffffffffffff, 0xffffffffffff0875, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x596037affffffff, 0x745081a00a60b25, 0x89909cc052a03fe, 0x7b604870a92020f, 0xaa0071d018d0221, 0x5180860029d0102, 0x943065e097a0b1d, 0xa70b260597037b, 0x52b03ff0746081b, 0xa930210089a09cd, 0x18e022207b70488, 0x29e01030aa1071e, 0x97b0b1e05190861, 0xffffffff0944065f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x10c0aed065803c7, 0x50b044306b2082c, 0xab201c8086c0a4f, 0x225020b0753049c, 0x27705380b5f070b, 0x98600a8040c0812, 0x5a4002f093d0705, 0x8cf003b095b063a, 0x876015103a10670, 0x3e705d40b0b0684, 0xaa40114040407d2, 0x53a01bb02e304bb, 0x10d0aee065903c8, 0x50c044406b3082d, 0xab301c9086d0a50, 0x226020c0754049d, 0x27805390b60070c, 0x98700a9040d0813, 0x5a50030093e0706, 0x8d0003c095c063b, 0x877015203a20671, 0x3e805d50b0c0685, 0xaa50115040507d3, 0x53b01bc02e404bc, 0x30e063d003a0039, 0x9d807bf0a0f0032, 0x265037f037e09d9, 0x40305a10b200266, 0xa1a0a19ffff021e, 0xffff074e074dffff, 0xffffffffffffffff, 0x28c095effffffff, 0x33a033902a602a5, 0x912091108cc08cb, 0x2b902b803730372, 0x470046f09970996, 0xb560b5507fd07fc, 0x4b204b1077a0779, 0x1e901e80a660a65, 0xd600d5056e056d, 0x660065072a0729, 0x20001f08a908a8, 0x5a0059062a0629, 0x26402630b1a0b19, 0x190018f06bf06be, 0x5bd05bc07c107c0, 0xa3c0a3b0750074f, 0x280027f04e204e1, 0x3ac03ab0b020b01, 0x958095704720471, 0x328032708d608d5, 0x9c109c009310930, 0x8330832057e057d, 0x42204210aad0aac, 0xa130a1202180217, 0x70e070d01a601a5, 0x8210820010f010e, 0xffffffffffffffff, 0x358ffffffffffff, 0xffff032a03290359, 0x6d206d1ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50e03ec082309b8, 0x1b20b8f06f701f1, 0x1b8049904860242, 0x46e087d0a9f0a9d, 0xaf806a107ff056c, 0x4320649039400f8, 0x8c40690090a02da, 0x9180673033c0150, 0x3d2084f09eb0b50, 0xaa9ffff02e20109, 0xffffffffffffffff, 0xffffffff0a56ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa200a1f01d901d8, 0x79d079c0a990a98, 0x69f069e0140013f, 0x4f604f502bb02ba, 0x6430642003e003d, 0x64b064a05bf05be, 0x73c073b00770076, 0xb6c0b6b0040003f, 0x784078304ea04e9, 0x89208910ad50ad4, 0xac70ac602c802c7, 0xffffffff017b017a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x298029705150514, 0xa050a04094c094b, 0xa830a8207af07ae, 0x18a01890a400a3f, 0xaf00ae074a0749, 0x52f052e088c088b, 0x34003305ec05eb, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x70006ffffffff, 0xc600c508ab08aa, 0xe800e706f106f0, 0x6800670610060f, 0x1580157ffffffff, 0xb4c0b4b08350834, 0x9c309c205040503, 0x2b002af0a2c0a2b, 0x960095f087f087e, 0x396039509810980, 0x85508540b5e0b5d, 0x330032f03120311, 0x5a905a802120211, 0x98d098c04110410, 0x8690868051d051c, 0xa280a27023e023d, 0x66d066c00ff00fe, 0x6a706a60b100b0f, 0x661066001560155, 0x69c069b02ea02e9, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d707a307a2ffff, 0xb720b71050804d8, 0x9ba09b905860585, 0x84508440ad10ad0, 0x4fffffffffffff, 0xffffffff0b770050, 0x24c024b0b0e0b0d, 0x3b203b1ffff0790, 0x49f049e07d907d8, 0x9e309e203fb03fa, 0x27a02790510050f, 0x11d011c080f080e, 0x94200b607080707, 0xffff00fa098b0b2f, 0xb61009303510710, 0x9f009e05ea05e9, 0x13e013d06e606e5, 0x28e028d0550054f, 0x436043508050804, 0x75b0b9305170791, 0xffff01750174075c, 0xffffffffffffffff, 0xffffffff02f802f7, 0x310030fffffffff, 0xffffffff0af20af1, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09ed09ecffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb62ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x36100c4043405d7, 0x935006e081706c1, 0x9fd0b2a03750894, 0x336007f08bc0604, 0xa5c02ce01f80a6e, 0x5600138095606b9, 0x7c905760b7f07db, 0x75e09ef04e0048c, 0x64f037902e80450, 0x6a309a101420851, 0x89c091a0042045e, 0x635031400460b9d, 0xb6809e1023409b2, 0x73a054400830272, 0x77e07180a0d0adf, 0x4ba08b701e50529, 0x3b006dc09ff028a, 0x8070b2405b901fc, 0x35b067b034d05df, 0x92f068702ae013a, 0xffffffffffffffff, 0xffff080d080cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2670af309c4ffff, 0x94d064405aa0143, 0xb780773074b04cf, 0x40004f707c2013b, 0x2ef03ed054d0259, 0x19707a40a860ab4, 0xffff0453060108c7, 0xffffffffffffffff, 0x2680af409c5ffff, 0x94e064505ab0144, 0xb790774074c04d0, 0x40104f807c3013c, 0x2f003ee054e025a, 0x19807a50a870ab5, 0xffff0454060208c8, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5c0075f07510a67, 0x9af0aaa07ea012f, 0x2dd099e0afb0959, 0x14507d404e304f9, 0x8cd0636047900e9, 0x36c072302cf0043, 0x25d0549040802d1, 0x38006740b8a0147, 0x47b078c0aca0a7b, 0xb51078102310483, 0x5c1076007520a68, 0x9b00aab07eb0130, 0x2de099f0afc095a, 0x14607d504e404fa, 0x8ce0637047a00ea, 0x36d072402d00044, 0x25e054a040902d2, 0x38106750b8b0148, 0x47c078d0acb0a7c, 0xb52078202320484, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x74107d60ad60a4b, 0xb05099a02230571, 0x7940b3f09c6022d, 0x763048104a2024f, 0x6aa034305c60331, 0x6c9028301bf0b37, 0x65003c5028709ad, 0x60b08d7002702eb, 0x8b00a2f0a2d0755, 0xffffffffffffffff, 0x74207d70ad70a4c, 0xb06099b02240572, 0x7950b4009c7022e, 0x764048204a30250, 0x6ab034405c70332, 0x6ca028401c00b38, 0x65103c6028809ae, 0x60c08d8002802ec, 0x8b10a300a2e0756, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x26b00a40463088f, 0x25101100ae906ac, 0xffff00b709470b43, 0x90100b908fb05e7, 0x1310b4707cc0808, 0x2ff03e305610836, 0xffff02a704230583, 0x4e5047707650a29, 0xffff03b5063e0a31, 0x890ffff06d302c9, 0x6ad026c00a50464, 0xb44025201110aea, 0x5e8ffff00b80948, 0x809090200ba08fc, 0x83701320b4807cd, 0x584030003e40562, 0xa2affff02a80424, 0xa3204e604780766, 0x2caffff03b6063f, 0xffffffffffff06d4, 0x1490191048904d1, 0x57301e207e20b94, 0x44505c803e90697, 0x3090a4d0a8a07e8, 0xc7090f0b900915, 0x8a0895072d0341, 0x100096a08660461, 0x7a0366071b089d, 0x33f04bf05220201, 0x46507a00ada0a69, 0x53c046b083c0963, 0x1bd0b9606ea0239, 0xffff066e09e602fb, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x14a0192048a04d2, 0x57401e307e30b95, 0x44605c903ea0698, 0x30a0a4e0a8b07e9, 0xc809100b910916, 0x8b0896072e0342, 0x101096b08670462, 0x7b0367071c089e, 0x34004c005230202, 0x46607a10adb0a6a, 0x53d046c083d0964, 0x1be0b9706eb023a, 0xffff066f09e702fc, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb9807a601dc057f, 0x4e7049001c101a9, 0x8420733036e00cf, 0x45f0848097e00ef, 0x68d0872015f0b15, 0x61108e102d7034a, 0x8460ab80a6b0364, 0x6ba03cd05570455, 0xb9907a701dd0580, 0x4e8049101c201aa, 0x8430734036f00d0, 0x4600849097f00f0, 0x68e087301600b16, 0x61208e202d8034b, 0x8470ab90a6c0365, 0x6bb03ce05580456, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x31f072509a20084, 0x40e05f50412025b, 0x56306dd091b0069, 0xa08061703480010, 0x19507ac04ac0475, 0x1ee0aa606ee030b, 0xaef06cb08a604f3, 0x50507b809e80a53, 0x320072609a30085, 0x40f05f60413025c, 0x56406de091c006a, 0xa09061803490011, 0x19607ad04ad0476, 0x1ef0aa706ef030c, 0xaf006cc08a704f4, 0x50607b909e90a54, 0x8b2005503f8065a, 0x437002308db05ed, 0xbf03760598, 0x509053608140743, 0x757019b000207bc, 0xa96033d044b04a6, 0x547016e02730afd, 0x9d20b9e099c06ae, 0x3f9065b00140368, 0x8dc05ee08b30056, 0x377059904380024, 0x8150744000100c0, 0x307bd050a0537, 0x44c04a70758019c, 0x2740afe0a97033e, 0x99d06af0548016f, 0x15036909d30b9f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); //11648 bytes enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0x11c0], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16001500000000, 0x0, 0x0, 0x18001700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1900000000, 0x1b001a0000, 0x1f001e001d001c, 0x23002200210020, 0x0, 0x2600250024, 0x0, 0x0, 0x28002700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b002a0029, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f002e0000, 0x33003200310030, 0x0, 0x0, 0x0, 0x3500340000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x3c003b003a0039, 0x3e003d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42004100000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x984008a09beffff, 0x9ac00c703440658, 0xbf400740a7c0c6a, 0xb9100ef08b10736, 0x62905e604a608c3, 0x1ac01990ae607fe, 0xffff032005210569, 0xffffffffffffffff, 0x985008b09bfffff, 0x9ad00c803450659, 0xbf500750a7d0c6b, 0xb9200f008b20737, 0x62a05e704a708c4, 0x1ad019a0ae707ff, 0xffff03210522056a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a0bffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x8e3012e060507f2, 0x41202770a640b9a, 0xc18013e03c105a6, 0x340004e03c9068a, 0x2c20090097c0650, 0xffff00d505da0781, 0x54302300a2a0ba7, 0xba20af909110771, 0x8e4012f060607f3, 0x41302780a650b9b, 0xc19013f03c205a7, 0x341004f03ca068b, 0x2c30091097d0651, 0xffff00d605db0782, 0x54402310a2b0ba8, 0x39b0afa09120772, 0x51205110a890a88, 0xc230c2201e601e5, 0x7a607a5021d021c, 0x946094500d800d7, 0x673067200650064, 0x67f067e005b005a, 0x6c406c302d802d7, 0x889088801730172, 0x86808670c550c54, 0xb180b1705040503, 0x5e505e401cd01cc, 0xa140a1302390238, 0x90a0909ffff03f6, 0x347034609dd09dc, 0x76d009f009effff, 0x8a700990098076e, 0x8440bfa0bf908a8, 0xad6013701360845, 0x5240523031a0ad7, 0xc310c30083f083e, 0x17b017a072a0729, 0x2d002cf06eb06ea, 0xf000e06690668, 0x79007806a0069f, 0xdc00db08c608c5, 0x1fb01fa079c079b, 0x1bb01ba0c4d0c4c, 0xb080b07050c050b, 0x5b305b2084b084a, 0xaab0aaa0a1e0a1d, 0x2506850684039c, 0x62b065b065a0026, 0xbe00bdf06f006f9, 0x2950571028a0289, 0x1c808810c020296, 0xb8107e0ffff01c9, 0x56b094f094e0afb, 0xa380bd00247029b, 0xffff050f00a100a0, 0x35600dd098a00b4, 0x68d068c001d001c, 0x40605a001180117, 0xffffffff0a4e0407, 0x7d0087401820181, 0x57707f801c007d1, 0xb7f032903280578, 0xffffffff02760275, 0x1c6ffff09c109c0, 0xffffffffffffffff, 0x63b09cf09ce09cd, 0xbaa0ba9063d063c, 0x812054605450bab, 0x7e20b140b130813, 0xb39047d047c07e3, 0x59e032503240b3a, 0xc1f0c1e07e1059f, 0x184018306b606b5, 0x2e602e506570656, 0x101010006a606a5, 0x5bd05bc07140713, 0xb7b0b7a0b790928, 0x1c7024807bf07be, 0x20702060c390c38, 0xa180a1704550454, 0x5f105f008ce08cd, 0x95b095a09e409e3, 0x92d092c03e103e0, 0x45704560bd90bd8, 0xb480b4704460445, 0x57c057b02da02d9, 0x877087601860185, 0x8d808d7060f060e, 0x73d073cffff00de, 0xc4f0c4e006d006c, 0x7b407b300cc00cb, 0x91b091a00820081, 0x765076405c905c8, 0xffffffffffffffff, 0x8100abeffffffff, 0xa03083805100811, 0x6fa0165016402ad, 0xa810a8002fa0458, 0x34f034e09c709c6, 0xaa70aa609fa09f9, 0x6f1023a0be8043b, 0x8820c03ffff0572, 0xafcffff0b82ffff, 0xffffffffffff09e5, 0x29cffff0bf7056c, 0xffff00bf0c41ffff, 0x69b01090bd10a39, 0xb5ffffffff0a32, 0xffff098b05f7ffff, 0xffffffff0357ffff, 0xffffffffffffffff, 0xffffffff0035ffff, 0xa4f055fffff05a1, 0x380ffffffffffff, 0x7f901c104590875, 0xffffffffffff02fb, 0xffff0b80ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff077f009cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a19ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1e801e704e604e5, 0x2120211ffffffff, 0xaeaffffffffffff, 0x3b3ffff08ff0138, 0xffffffffffffffff, 0xffff02bcffffffff, 0xffff00fa08b30746, 0xa750c70ffff0878, 0x19504f104f90883, 0x17f01eb0b7c0aca, 0xbce0bfb0a1a05ec, 0x11903cd08a90a0c, 0x6f2ffff068e0c3e, 0xb6037206660358, 0xa408d9076a099e, 0xfb08b4074702bd, 0x19604f204fa0a79, 0x18001ec0b7d0acb, 0xbcf0bfc0a1b05ed, 0x11a03ce08aa0a0d, 0x6f406f3068f0c3f, 0xb7037306670359, 0xa508da076b099f, 0xa1f0a760c710879, 0xffffffff05ee04f3, 0xa200c400374ffff, 0x4ec04eb01a501a4, 0x8f008ef0b420b41, 0xa310a3005d105d0, 0x3f003ef0a8b0a8a, 0x95f095e031d031c, 0x394039304850484, 0x3b401ef06900bfd, 0xb3dffff0b7e05ef, 0x631063001f00b3e, 0x90001390aebffff, 0xa1502b405650539, 0x603009a0a360bba, 0x99800aa099a076f, 0x3c300a60348064a, 0x3f8058d0c0e0790, 0xb72029d040a0757, 0x4fd013c08fb0b45, 0x1d20ac408240894, 0x3060b2c055a0872, 0x17402650b8d0a4c, 0xc2609de06c505ca, 0x5c03fc06800a9d, 0x3f9058e0c0f0791, 0xb73029e040b0758, 0x4fe013d08fc0b46, 0x1d30ac508250895, 0x3070b2d055b0873, 0x17502660b8e0a4d, 0xc2709df06c605cb, 0x5d03fd06810a9e, 0xa1602b50566053a, 0x604009b0a370bbb, 0x99900ab099b0770, 0x3c400a70349064b, 0x62506240b5c0b5b, 0xc130c1202640263, 0x41d041c02160215, 0x8e608e50a5f0a5e, 0x97f097e05f605f5, 0x3cc03cb09630962, 0x9db09da09190918, 0x453045204150414, 0xffffffff0beb0bea, 0xffffffffffffffff, 0x5fe05fdffffffff, 0xf500f408b608b5, 0x670066073f073e, 0x50004067b067a, 0xd400d307a407a3, 0x5b505b409440943, 0x11e011d07220721, 0x1b901b805380537, 0x49504940ac10ac0, 0xc3b0c3a08350834, 0x442044108bc08bb, 0x98d098c0a680a67, 0x977097603510350, 0x3eb03ea0aa90aa8, 0x23c073207310302, 0x25506330632023d, 0x4e10ad50ad40256, 0x303080d080c04e2, 0x5a905a8025a0259, 0x754075302820281, 0x687068600610060, 0x6e006df00220021, 0x6db06da01290128, 0x5b705b602680267, 0x823082201310130, 0x7ef07ee04dc04db, 0x4a904a80b4a0b49, 0xbc50bc402540253, 0x467046603be03bd, 0x967096609af09ae, 0x9c509c403650364, 0x40f040e0ab10ab0, 0xb4e0b4d08b008af, 0x1e401e308150814, 0x2eb02ea0acf0ace, 0x18a018905340533, 0x61306120710070f, 0x30002f06ac06ab, 0x3c003b06980697, 0xbe00bd0c350c34, 0xb8c0b8b07ae07ad, 0x536053509230922, 0x24501970c72ffff, 0xb5302b6078904fb, 0x5d804be08df0b83, 0x14a0c2e074403da, 0x32a038206e403b5, 0x14c09d006e609a4, 0xbf009ed0748060c, 0x549056f08e70ab6, 0x24d0af0078502b8, 0xffff08000637019d, 0xffffffffffffffff, 0xffffffffffffffff, 0x24601980c73ffff, 0xb5402b7078a04fc, 0x5d904bf08e00b84, 0x14b0c2f074503db, 0x32b038306e503b6, 0x14d09d106e709a5, 0xbf109ee0749060d, 0x54a057008e80ab7, 0x24e0af1078602b9, 0x66208010638019e, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x556042208ad0a60, 0x1ca0c5e0766020c, 0x1d004d904c60261, 0x4ac090d0b570b55, 0xbbc070b088605b8, 0x46c06a703c50107, 0x96006f709aa0300, 0x9b806d403680168, 0x40808db0a970c1a, 0xb61ffff0308011b, 0xffffffffffffffff, 0xffffffff0b0bffff, 0x43507020bac016c, 0x9d606ca0468061c, 0x3fe064c03420031, 0x9cb0c040aa10029, 0x8eb071d05aa0096, 0x46409130a530ba5, 0xaba07d802320547, 0x7830519026901f3, 0x8a30a400b6802c4, 0x75c040005d60418, 0xffff03d101340bfe, 0x6fd09a60010ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x39100cd046e062e, 0x9d8007608a1072f, 0xaac0bf203a5093b, 0x362008c09580660, 0xb1102f402130b24, 0x5ac014e09fb0725, 0x84205c40c4a085b, 0x7d40a9b052704cc, 0x6ad03a9030e048a, 0x70d0a48015808dd, 0x93009ba004a049a, 0x693033e004c0c6c, 0xc320a8c02510a59, 0x7af059000940291, 0x7f607870abc0ba0, 0x4ff095302000573, 0x3e2074a0aae02ab, 0x8900c0806100217, 0x39906ee037a0639, 0x9d2071902d30150, 0x3bf06820c500054, 0xffffffff0474006a, 0x3c006830c510055, 0xffffffff0475006b, 0x55c0ac60759058f, 0x62609e00b2f0b2e, 0xffffffffffff0708, 0xffffffffffffffff, 0x43607030bad016d, 0x9d706cb0469061d, 0x3ff064d03430032, 0x9cc0c050aa2002a, 0x8ec071e05ab0097, 0x46509140a540ba6, 0xabb07d902330548, 0x784051a026a01f4, 0x8a40a410b6902c5, 0x75d040105d70419, 0xffff03d201350bff, 0x6fe09a70011ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0561ffff, 0xffffffff0338ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0c62ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50e050d07630762, 0xc530c5207ed07ec, 0x4b304b2088b088a, 0x280027f0a2d0a2c, 0x9a909a805c705c6, 0x361036009950994, 0x9b509b402f302f2, 0x40d040c04990498, 0x84108400bc90bc8, 0xad10ad005260525, 0x623062201c501c4, 0x7a0079f0260025f, 0x8ca08c900e500e4, 0x675067400690068, 0x66d066c00150014, 0x6fc06fb02c702c6, 0x724072301770176, 0x819081806080607, 0x4d404d30b1a0b19, 0xc250c2402250224, 0x4170416022b022a, 0x90c090b09ea09e9, 0x9a109a003850384, 0x3ae03ad096f096e, 0xa080a0709160915, 0x221022004110410, 0x1cf01ce0c070c06, 0xaf60af504c104c0, 0x61b061a085e085d, 0x1670166089c089b, 0x2d202d106be06bd, 0x51005006920691, 0x930092067d067c, 0x58c058b09380937, 0x223022207ac07ab, 0x1ea01e905080507, 0x47b047a0b100b0f, 0xdf0c5c084d084c, 0x917049e05ba03fa, 0xffff0ba3ffffffff, 0x987098603310330, 0x3d603d50a740a73, 0xb9f0b9e02740273, 0x8660865046b046a, 0x82b082a0ad90ad8, 0x7930792050a0509, 0x593059202370236, 0x774077300a300a2, 0x655065400ad00ac, 0x6b406b300570056, 0xbbf0bbe013b013a, 0x57e057d03270326, 0x7e907e8012d012c, 0x82f082e04d804d7, 0x430042f0b270b26, 0xc490c48026e026d, 0x477047603f203f1, 0x997099609710970, 0x9c309c20390038f, 0x59905980a3d0a3c, 0xb310b30093a0939, 0x1b301b2048d048c, 0x1ee01ed0b000aff, 0xfd00fc074f074e, 0xab2003903dc0664, 0x5a2010209f30c0a, 0xab3003a03dd0665, 0x5a3010309f40c0b, 0x24901b60ae807e4, 0xffffffff07680513, 0x24a01b70ae907e5, 0xffffffff07690514, 0x1a032c065c03cf, 0x18b090106e80988, 0x1b032d065d03d0, 0x18c090206e90989, 0x19b0b870aec030c, 0x1fc080704ed01bc, 0x19c0b880aed030d, 0x1fd080804ee01bd, 0x386063e037e007d, 0xffffffff095c000c, 0x387063f037f007e, 0xffffffff095d000d, 0xb1508ed02020085, 0x7e6072b051b0bec, 0xb16ffff0203ffff, 0x7e7ffff051cffff, 0x6b7047802ec0a3a, 0x6400c5a002d03e6, 0x6b8047902ed0a3b, 0x6410c5b002e03e7, 0xa8202fc03140482, 0x45a062702260b2a, 0xb0d0b6a000a0982, 0xffffffff0678034c, 0x8560b760ac70be3, 0x991014005f20794, 0x8570b770ac80be4, 0x992014105f30795, 0xaa3063403ec0750, 0x609021909c80bda, 0xaa4063503ed0751, 0x60a021a09c90bdb, 0xb1f0b950c450a90, 0x1f7054f07b50947, 0xb200b960c460a91, 0x1f8055007b60948, 0xa23048e06cc03a1, 0x3f0c43ffff0336, 0x315048306cd03a2, 0xffff0a1cffff0a24, 0xaf2084effffffff, 0x51f0581ffff0a9f, 0x2270b2b0a8302fd, 0xffffffffffff0af3, 0x884091e038d00c5, 0x96c064effffffff, 0x45b0628038e00c6, 0xffffffffffffffff, 0xa7a08e901dc018f, 0x4e707f402be0c16, 0xb0e0b6b01dd0190, 0xffffffffffff02bf, 0x6ff0a6bffffffff, 0x6d8091cffff05d2, 0x679034d000b0983, 0xffffffffffff0700, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff076cffffffff, 0xa660bf6ffffffff, 0xffffffffffffffff, 0xffff09f7ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09f8ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x49604d50b32082c, 0xaf70a86019107de, 0x77903180208057f, 0x8b9048800eb0bb0, 0x49704d60b33082d, 0xaf80a87019207df, 0x77a031902090580, 0x8ba048900ec0bb1, 0x905ffffffffffff, 0xffffffffffff0906, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5e803abffffffff, 0x7bc08a500b00bee, 0x92e0a7705750437, 0x83004c80b4b022c, 0xb59078e01a60241, 0x56308f102c00115, 0x9e706bf0a210be6, 0xb10bef05e903ac, 0x576043807bd08a6, 0xb4c022d092f0a78, 0x1a70242083104c9, 0x2c101160b5a078f, 0xa220be7056408f2, 0xffffffff09e806c0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x11f0bb206b90402, 0x554047e071f08b7, 0xb6c01e108fd0b05, 0x243022807ca04dd, 0x29705830c2a077b, 0xa2e00b20447089d, 0x5f9003309e10775, 0x97400450a010699, 0x907016a03d306d2, 0x41e062c0bd206ec, 0xb5d012a043d0850, 0x58501d4030a0501, 0x1200bb306ba0403, 0x555047f072008b8, 0xb6d01e208fe0b06, 0x244022907cb04de, 0x29805840c2b077c, 0xa2f00b30448089e, 0x5fa003409e20776, 0x97500460a02069a, 0x908016b03d406d3, 0x41f062d0bd306ed, 0xb5e012b043e0851, 0x58601d5030b0502, 0x339069c003e003d, 0xa8408390abf0036, 0x28503b003af0a85, 0x43c05f80be90286, 0xacd0accffff023b, 0xffff07c507c4ffff, 0xffffffffffffffff, 0x2ae0a04ffffffff, 0x367036602c902c8, 0x9b309b209690968, 0x2df02de03a403a3, 0x4af04ae0a3f0a3e, 0xc210c20088d088c, 0x4f504f407f107f0, 0x20502040b1c0b1b, 0xee00ed05bf05be, 0x6f006e079e079d, 0x2400230940093f, 0x63006206890688, 0x28402830be20be1, 0x1a901a8072e072d, 0x6150614083b083a, 0xaef0aee07c707c6, 0x2a0029f052a0529, 0x3df03de0bc70bc6, 0x9fe09fd04b104b0, 0x353035209730972, 0xa6a0a6909d509d4, 0x8be08bd05cd05cc, 0x45d045c0b670b66, 0xac30ac202350234, 0x77e077d01bf01be, 0x8ac08ab01220121, 0xffffffffffffffff, 0x38bffffffffffff, 0xffff03550354038c, 0x7410740ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x557042308ae0a61, 0x1cb0c5f0767020d, 0x1d104da04c70262, 0x4ad090e0b580b56, 0xbbd070c088705b9, 0x46d06a803c60108, 0x96106f809ab0301, 0x9b906d503690169, 0x40908dc0a980c1b, 0xb62ffff0309011c, 0xffffffffffffffff, 0xffffffff0b0cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xad30ad201f201f1, 0x81708160b520b51, 0x70a070901570156, 0x53e053d02e102e0, 0x6a206a100420041, 0x6aa06a906170616, 0x7b207b10080007f, 0xc370c3600440043, 0x7fd07fc05320531, 0x92709260b940b93, 0xb860b8502ef02ee, 0xffffffff01940193, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2bb02ba055e055d, 0xab50ab409f009ef, 0xb3c0b3b08290828, 0x1a301a20afe0afd, 0xb900b807c107c0, 0x57a057909210920, 0x38003706470646, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x90008ffffffff, 0xd000cf09420941, 0xf700f607610760, 0x710070066f066e, 0x1710170ffffffff, 0xc150c1408c008bf, 0xa700a6f054c054b, 0x2d602d50adf0ade, 0xa060a050910090f, 0x3c803c70a290a28, 0x8e208e10c290c28, 0x35d035c033d033c, 0x60005ff022f022e, 0xa350a34044c044b, 0x8fa08f905680567, 0xadb0ada025c025b, 0x6cf06ce01140113, 0x71207110bd70bd6, 0x6c206c1016f016e, 0x705070403110310, 0xffffffffffffffff, 0xffffffffffffffff, 0x51d081d081cffff, 0xc3d0c3c0562051e, 0xa630a6205d505d4, 0x8d208d10b900b8f, 0x58ffffffffffff, 0xffffffff0c420059, 0x26c026b0bd50bd4, 0x3e503e4ffff0826, 0x4e004df085a0859, 0xa8f0a8e04340433, 0x29a029905590558, 0x1330132089a0899, 0x9e600c007780777, 0xffff010a0a330bf8, 0xc2c009d03810780, 0xa900a806450644, 0x155015407560755, 0x2b002af059d059c, 0x4710470088f088e, 0x7d20c6305600827, 0xffff018e018d07d3, 0xffffffffffffffff, 0xffffffff031f031e, 0x33b033affffffff, 0xffffffff0bb70bb6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a9a0a99ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc2dffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x39200ce046f062f, 0x9d9007708a20730, 0xaad0bf303a6093c, 0x363008d09590661, 0xb1202f502140b25, 0x5ad014f09fc0726, 0x84305c50c4b085c, 0x7d50a9c052804cd, 0x6ae03aa030f048b, 0x70e0a49015908de, 0x93109bb004b049b, 0x694033f004d0c6d, 0xc330a8d02520a5a, 0x7b0059100950292, 0x7f707880abd0ba1, 0x500095402010574, 0x3e3074b0aaf02ac, 0x8910c0906110218, 0x39a06ef037b063a, 0x9d3071a02d40151, 0x5fb014808c10bca, 0xffff0b640b630846, 0xffffffffffffffff, 0xffffffffffffffff, 0x9f5ffffffffffff, 0x35a001604b4069d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2870bb80a6dffff, 0x9f106a30601015a, 0xc6607ea07c20515, 0x439053f083c0152, 0x3160426059a0279, 0x1b0081e0b3f0b6e, 0xffff0490065e0964, 0xffffffffffffffff, 0x2880bb90a6effff, 0x9f206a40602015b, 0xc6707eb07c30516, 0x43a0540083d0153, 0x3170427059b027a, 0x1b1081f0b400b6f, 0xffff0491065f0965, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x61807d607c80b1d, 0xa570b70086d0146, 0x3040a460bc009ff, 0x15c0854052b0541, 0x96a069504ba00f8, 0x39d079702f60052, 0x27d0596044302f8, 0x3b106d60c56015e, 0x4bc08050b890b34, 0xc1c07fa024f04c4, 0x61907d707c90b1e, 0xa580b71086e0147, 0x3050a470bc10a00, 0x15d0855052c0542, 0x96b069604bb00f9, 0x39e079802f70053, 0x27e0597044402f9, 0x3b206d70c57015f, 0x4bd08060b8a0b35, 0xc1d07fb025004c5, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7b808690b980b01, 0xbcc0a42025705c0, 0x80e0c100a71024b, 0x7da04c204e3026f, 0x7150370061e035e, 0x73802a401d80c00, 0x6b1042002a90a55, 0x66a0978002b0312, 0x94a0ae20ae007cc, 0xffffffffffffffff, 0x7b9086a0b990b02, 0xbcd0a43025805c1, 0x80f0c110a72024c, 0x7db04c304e40270, 0x7160371061f035f, 0x73902a501d90c01, 0x6b2042102aa0a56, 0x66b0979002c0313, 0x94b0ae30ae107cd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x28b00ae04a00924, 0x27101230bae0717, 0xffff00c109eb0c0c, 0x9a200c3099c0642, 0x1600c5808480892, 0x32e041a05ae08c7, 0xffff02cd045e05dc, 0x52d04b807dc0adc, 0xffff03e806af0ae4, 0x925ffff074202f0, 0x718028c00af04a1, 0xc0d027201240baf, 0x643ffff00c209ec, 0x89309a300c4099d, 0x8c801610c590849, 0x5dd032f041b05af, 0xaddffff02ce045f, 0xae5052e04b907dd, 0x2f1ffff03e906b0, 0xffffffffffff0743, 0x16201aa04ca0517, 0x5c201fe08630c64, 0x480062004240706, 0x3320b030b43086b, 0xd109b00c6009b6, 0xd9092a07a1036e, 0x1110a1108f704a4, 0x83039707a70932, 0x36c0505056d021e, 0x4a2081a0b9c0b28, 0x58904aa08cb0a09, 0x1d60002075a025d, 0xffff06d00a930322, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x16301ab04cb0518, 0x5c301ff08640c65, 0x481062104250707, 0x3330b040b44086c, 0xd209b10c6109b7, 0xda092b07a2036f, 0x1120a1208f804a5, 0x84039807a80933, 0x36d0506056e021f, 0x4a3081b0b9d0b29, 0x58a04ab08cc0a0a, 0x1d70003075b025e, 0xffff06d10a940323, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc68082001f505ce, 0x52f04d101da01c2, 0x8cf07a9039f00e9, 0x49c08d50a2600fe, 0x6f5090301780bdd, 0x670098002fe0378, 0x8d30b740b220395, 0x727040405a40492, 0xc69082101f605cf, 0x53004d201db01c3, 0x8d007aa03a000ea, 0x49d08d60a2700ff, 0x6f6090401790bde, 0x671098102ff0379, 0x8d40b750b230396, 0x728040505a50493, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x34a07990a4a008e, 0x4490652044d027b, 0x5b0074c09bc0072, 0xab80676037c0012, 0x1ae083604ef04b6, 0x20a0b5f075e0334, 0xbb4073a093d053b, 0x54d08320a950b09, 0x34b079a0a4b008f, 0x44a0653044e027c, 0x5b1074d09bd0073, 0xab90677037d0013, 0x1af083704f004b7, 0x20b0b60075f0335, 0xbb5073b093e053c, 0x54e08330a960b0a, 0x94c005e043106bb, 0x4720027097a0648, 0xc903a705ea, 0x5520587089f07ba, 0x7ce01b400060852, 0xb4f036a048604e9, 0x594018702930bc2, 0xa7e0c6e0a44071b, 0x43206bc0018043f, 0x97b0649094d005f, 0x3a805eb04730028, 0x8a007bb000100ca, 0x7085305530588, 0x48704ea07cf01b5, 0x2940bc30b50036b, 0xa45071c05950188, 0x1904400a7f0c6f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); -//5568 bytes -enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0xd0], [ 0x100, 0x2c0, 0x7a00], [ 0x605040303020100, 0xe0d0c0b0a090807, 0x11100f0303030303, 0x1414141414141312, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xf000e000d000c, 0x12001100010010, 0x15001400010013, 0x19001800170016, 0x1c0001001b001a, 0x1f001f001e001d, 0x1f001f001f0020, 0x1f001f001f001f, 0x1f002300220021, 0x1f001f00250024, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100260001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x29002800010027, 0x2d002c002b002a, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2e000100010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x30002f0001001f, 0x33003200310001, 0x37003600350034, 0x3a000100390038, 0x3e003d003c003b, 0x4200410040003f, 0x46004500440043, 0x4a004900480047, 0x1f004d004c004b, 0x510050004f004e, 0x52000100010001, 0x1f001f00540053, 0x1f001f001f001f, 0x55001f001f001f, 0x1000100010001, 0x1f001f001f0056, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f005700010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x59005800010001, 0x5b005a001f001f, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x5c000100010001, 0x1000100010001, 0x1f001f005e005d, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x5f001f001f001f, 0x1f006100600001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f0062, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x66006500640063, 0x1f001f001f001f, 0x67001f001f001f, 0x1f006a00690068, 0x6c001f001f006b, 0x1f001f006e006d, 0x1f006f001f001f, 0x1f001f0070001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1000100010001, 0x1007100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x72000100010001, 0x1000100010073, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1007400010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x75000100010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f007600010001, 0x1f001f001f001f, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x77000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x78000100010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x0, 0x7fffffe07fffffe, 0x420040000000000, 0xff7fffffff7fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x501f0003ffc3, 0x0, 0xbcdf000000000020, 0xfffffffbffffd740, 0xffbfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffc03, 0xffffffffffffffff, 0xfffeffffffffffff, 0xffffffff027fffff, 0xbfff0000000001ff, 0x787ffffff00b6, 0xffffffff07ff0000, 0xffffc000feffffff, 0xffffffffffffffff, 0x9c00e1fe1fefffff, 0xffffffffffff0000, 0xffffffffffffe000, 0x3ffffffffffff, 0x43007fffffffc00, 0x1ffffcffffff, 0xffff07ff01ffffff, 0xffffffff00007eff, 0xffff03f8fff003ff, 0xefffffffffffffff, 0xfffe000fffe1dfff, 0xe3c5fdfffff99fef, 0x1003000fb080599f, 0xc36dfdfffff987ee, 0x3f00005e021987, 0xe3edfdfffffbbfee, 0x1e00000f00011bbf, 0xe3edfdfffff99fee, 0x2000fb0c0199f, 0xc3ffc718d63dc7ec, 0x811dc7, 0xe3fffdfffffddfff, 0xf27601ddf, 0xe3effdfffffddfef, 0xe000f60601ddf, 0xe7fffffffffddfff, 0xfc00000f80f05ddf, 0x2ffbfffffc7fffee, 0xc0000ff5f807f, 0x7fffffffffffffe, 0x207f, 0x3bffffaffffff7d6, 0xf000205f, 0x1, 0xfffe1ffffffffeff, 0x1ffffffffeffff0f, 0x0, 0xf97fffffffffffff, 0xffffffffffff0000, 0xffffffff3c00ffff, 0xf7ffffffffff20bf, 0xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff, 0x7ffffff, 0xffffffff0000ffff, 0x3f3fffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff9fffffffffff, 0xffffffff07fffffe, 0x1ffc7ffffffffff, 0xfffff800fffff, 0xddfff000fffff, 0xffcfffffffffffff, 0x108001ff, 0xffffffff00000000, 0x1ffffffffffffff, 0xffff07ffffffffff, 0x3fffffffffffff, 0x1ff0fff7fffffff, 0x1f3fffffff0000, 0xffff0fffffffffff, 0x3ff, 0xffffffff0fffffff, 0x1ffffe7fffffff, 0x8000008000000000, 0x7001, 0xffefffffffffffff, 0x1fef, 0xfc00f3ffffffffff, 0x3ffbfffffffff, 0x7fffffffffffff, 0x3ffffffffc00e000, 0xe7ffffffffff01ff, 0x46fde0000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff8000000000, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0x5fdfffffffffffff, 0x1fdc1fff0fcf1fdc, 0x0, 0x8002000000000000, 0x1fff0000, 0x0, 0xf3ffbd503e2ffc84, 0xffffffff000043e0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc0000000000000, 0x3ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc781fffffffff, 0xffff20bfffffffff, 0x80ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f, 0x800000000000, 0x0, 0x0, 0x0, 0x1f3e03fe000000e0, 0xfffffffffffffffe, 0xfffffffee07fffff, 0xf7ffffffffffffff, 0xfffeffffffffffe0, 0xffffffffffffffff, 0xffffffff00007fff, 0xffff000000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff, 0x3fffffffffff0000, 0xc00ffff1fff, 0x8ff07fffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0xfffffffcff800000, 0xffffffffffffffff, 0xfffffffffffff9ff, 0xfffc000003eb07ff, 0xffffffffbf, 0xfffffffffffff, 0xffffffffffffffff, 0xe8fc00000000002f, 0xffff07fffffffc00, 0x1fffffff0007ffff, 0xfff7ffffffffffff, 0x7c00ffff00008000, 0x7fffffffffffff, 0xfc7fffff00003fff, 0x7fffffffffffffff, 0x3cffff38000005, 0xffff7f7f007e7e7e, 0xffff03fff7ffffff, 0xffffffffffffffff, 0x7ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff000fffffffff, 0xffffffffffff87f, 0xffffffffffffffff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7ffdffe0f8007f, 0xffffffffffffffdb, 0x3ffffffffffff, 0xfffffffffff80000, 0x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff, 0xfff0000000000ff, 0x0, 0xffdf000000000000, 0xffffffffffffffff, 0x1fffffffffffffff, 0x7fffffe00000000, 0xffffffc007fffffe, 0x7fffffffffffffff, 0x1cfcfcfc, 0xb7ffff7fffffefff, 0x3fff3fff, 0xffffffffffffffff, 0x7ffffffffffffff, 0x0, 0x1fffffffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff1fffffff, 0x1ffff, 0xffffe000ffffffff, 0x7ffffffffff07ff, 0xffffffff3fffffff, 0x3eff0f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00003fffffff, 0xfffffffff0fffff, 0xffff00ffffffffff, 0xf7ff000fffffffff, 0x1bfbfffbffb7f7ff, 0x0, 0x7fffffffffffff, 0xff003fffff, 0x7fdffffffffffbf, 0x0, 0x91bffffffffffd3f, 0x7fffff003fffff, 0x7fffffff, 0x37ffff00000000, 0x3ffffff003fffff, 0x0, 0xc0ffffffffffffff, 0x0, 0x3ffffffeeff06f, 0x1fffffff00000000, 0x1fffffff, 0x1ffffffeff, 0x3fffffffffffff, 0x7ffff003fffff, 0x3ffff, 0x0, 0xffffffffffffffff, 0x1ff, 0x7ffffffffffff, 0x7ffffffffffff, 0xffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x31bffffffffff, 0x0, 0xffff00801fffffff, 0xffff00000000003f, 0xffff000000000003, 0x7fffff0000001f, 0xffffffffffffffff, 0x3e00000000003f, 0x1ffffffffffffff, 0x1ffffff0004, 0x7ffffffffffff, 0x47ffffffff00f0, 0xffffffffffffffff, 0x1400c01e, 0xc09ffffffffbffff, 0x3, 0xffff01ffbfffbd7f, 0x1ffffffffff, 0xe3edfdfffff99fef, 0xfe081199f, 0x0, 0x0, 0xffffffffffffffff, 0x3800007bb, 0xffffffffffffffff, 0xb3, 0x0, 0x0, 0x7f3fffffffffffff, 0x3f000000, 0x7fffffffffffffff, 0x11, 0x13fffffffffffff, 0x0, 0x7ffe7ffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0x0, 0xffffffff00000000, 0x80000000ffffffff, 0x99bfffffff6ff27f, 0x7, 0xfffffcff00000000, 0x1afcffffff, 0x7fe7ffffffffffff, 0xffffffffffff0000, 0xffff000020ffffff, 0x1ffffffffffffff, 0x7f7ffffffffffdff, 0xfffc000000000001, 0x7ffefffffcffff, 0x0, 0xb47ffffffffffb7f, 0xfffffdbf000000cb, 0x17b7fff, 0x0, 0x0, 0x0, 0x0, 0x7fffff00000000, 0xc7fffffffffdffff, 0x1, 0x1000000000000, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x0, 0xffffffffffffffff, 0x7fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffffffff0000, 0x1ffffffffffff, 0xffffffffffff, 0x7e, 0x0, 0x0, 0xffffffffffffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0xffff00007fffffff, 0x7fffffffffffffff, 0x3fffffff0000, 0xffffffffffff, 0xe0fffff80000000f, 0xffff, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff87ff, 0xffff80ff, 0x3000b00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef000000000000, 0x40007ffffffff, 0xffff00f000270000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffff, 0xffffffffffffffff, 0x1fff07ffffffffff, 0x43ff01ff, 0x0, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xf7fffffff7fffffd, 0xffdfffffffdfffff, 0xffff7fffffff7fff, 0xfffffdfffffffdff, 0xff7, 0x7e07fffffff, 0x0, 0x0, 0x0, 0xffff07dbf9ffff7f, 0x3fffffffffff, 0x8000, 0x0, 0x3f801fffffffffff, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x3fffffff0000, 0xfffffffffff, 0x0, 0x0, 0x0, 0xfffffff0000, 0x0, 0x0, 0x0, 0x7fff6f7f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f, 0xffffffffffffffff, 0x88f, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x0, 0xffff000000000000, 0xffff03ffffff03ff, 0x3ff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff, 0x3ffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff3fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0003ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1ffffffff, 0x3fffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff07ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0]); +//5600 bytes +enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0xd0], [ 0x100, 0x2c0, 0x7b00], [ 0x605040303020100, 0xe0d0c0b0a090807, 0x11100f0303030303, 0x1414141414141312, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xf000e000d000c, 0x12001100010010, 0x15001400010013, 0x19001800170016, 0x1c0001001b001a, 0x1f001f001e001d, 0x1f001f001f0020, 0x1f001f001f001f, 0x1f002300220021, 0x1f001f00250024, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100260001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x29002800010027, 0x2d002c002b002a, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2e000100010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x30002f0001001f, 0x33003200310001, 0x37003600350034, 0x3a000100390038, 0x3e003d003c003b, 0x4200410040003f, 0x46004500440043, 0x4a004900480047, 0x1f004d004c004b, 0x510050004f004e, 0x52000100010001, 0x1f001f00540053, 0x1f001f001f001f, 0x55001f001f001f, 0x1000100010001, 0x1f001f001f0056, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f005700010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x59005800010001, 0x5b005a001f001f, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x5c000100010001, 0x1000100010001, 0x1f001f005e005d, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x5f001f001f001f, 0x1f006100600001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f0062, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x66006500640063, 0x1f001f001f001f, 0x67001f001f001f, 0x1f006a00690068, 0x6c001f001f006b, 0x1f001f006e006d, 0x1f006f001f001f, 0x1f001f0070001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1000100010001, 0x1007100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x72000100010001, 0x1000100010073, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1007400010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x75000100010001, 0x1f007600010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f007700010001, 0x1f001f001f001f, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x78000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x79000100010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x0, 0x7fffffe07fffffe, 0x420040000000000, 0xff7fffffff7fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x501f0003ffc3, 0x0, 0xbcdf000000000020, 0xfffffffbffffd740, 0xffbfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffc03, 0xffffffffffffffff, 0xfffeffffffffffff, 0xffffffff027fffff, 0xbfff0000000001ff, 0x787ffffff00b6, 0xffffffff07ff0000, 0xffffc000feffffff, 0xffffffffffffffff, 0x9c00e1fe1fefffff, 0xffffffffffff0000, 0xffffffffffffe000, 0x3ffffffffffff, 0x43007fffffffc00, 0x1ffffcffffff, 0xffff07ff01ffffff, 0xffffffff00007eff, 0xffff03f8fff003ff, 0xefffffffffffffff, 0xfffe000fffe1dfff, 0xe3c5fdfffff99fef, 0x1003000fb080599f, 0xc36dfdfffff987ee, 0x3f00005e021987, 0xe3edfdfffffbbfee, 0x1e00000f00011bbf, 0xe3edfdfffff99fee, 0x2000fb0c0199f, 0xc3ffc718d63dc7ec, 0x811dc7, 0xe3fffdfffffddfff, 0xf27601ddf, 0xe3effdfffffddfef, 0xe000f60601ddf, 0xe7fffffffffddfff, 0xfc00000f80f05ddf, 0x2ffbfffffc7fffee, 0xc0000ff5f807f, 0x7fffffffffffffe, 0x207f, 0x3bffffaffffff7d6, 0xf000205f, 0x1, 0xfffe1ffffffffeff, 0x1ffffffffeffff0f, 0x0, 0xf97fffffffffffff, 0xffffffffffff0000, 0xffffffff3c00ffff, 0xf7ffffffffff20bf, 0xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff, 0x7ffffff, 0xffffffff0000ffff, 0x3f3fffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff9fffffffffff, 0xffffffff07fffffe, 0x1ffc7ffffffffff, 0xfffff800fffff, 0xddfff000fffff, 0xffcfffffffffffff, 0x108001ff, 0xffffffff00000000, 0x1ffffffffffffff, 0xffff07ffffffffff, 0x3fffffffffffff, 0x1ff0fff7fffffff, 0x1f3fffffff0000, 0xffff0fffffffffff, 0x3ff, 0xffffffff0fffffff, 0x1ffffe7fffffff, 0x8000008000000000, 0x7001, 0xffefffffffffffff, 0x1fef, 0xfc00f3ffffffffff, 0x3ffbfffffffff, 0x7fffffffffffff, 0x3ffffffffc00e000, 0xe7ffffffffff01ff, 0x46fde0000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff8000000000, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0x5fdfffffffffffff, 0x1fdc1fff0fcf1fdc, 0x0, 0x8002000000000000, 0x1fff0000, 0x0, 0xf3ffbd503e2ffc84, 0xffffffff000043e0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc0000000000000, 0x3ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc781fffffffff, 0xffff20bfffffffff, 0x80ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f, 0x800000000000, 0x0, 0x0, 0x0, 0x1f3e03fe000000e0, 0xfffffffffffffffe, 0xfffffffee07fffff, 0xf7ffffffffffffff, 0xfffeffffffffffe0, 0xffffffffffffffff, 0xffffffff00007fff, 0xffff000000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff, 0x3fffffffffff0000, 0xc00ffff1fff, 0x8ff07fffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0xfffffffcff800000, 0xffffffffffffffff, 0xfffffffffffff9ff, 0xfffc000003eb07ff, 0xffffffffbf, 0xfffffffffffff, 0xffffffffffffffff, 0xe8fc00000000002f, 0xffff07fffffffc00, 0x1fffffff0007ffff, 0xfff7ffffffffffff, 0x7c00ffff00008000, 0x7fffffffffffff, 0xfc7fffff00003fff, 0x7fffffffffffffff, 0x3cffff38000005, 0xffff7f7f007e7e7e, 0xffff03fff7ffffff, 0xffffffffffffffff, 0x7ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff000fffffffff, 0xffffffffffff87f, 0xffffffffffffffff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7ffdffe0f8007f, 0xffffffffffffffdb, 0x3ffffffffffff, 0xfffffffffff80000, 0x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff, 0xfff0000000000ff, 0x0, 0xffdf000000000000, 0xffffffffffffffff, 0x1fffffffffffffff, 0x7fffffe00000000, 0xffffffc007fffffe, 0x7fffffffffffffff, 0x1cfcfcfc, 0xb7ffff7fffffefff, 0x3fff3fff, 0xffffffffffffffff, 0x7ffffffffffffff, 0x0, 0x1fffffffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff1fffffff, 0x1ffff, 0xffffe000ffffffff, 0x7ffffffffff07ff, 0xffffffff3fffffff, 0x3eff0f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00003fffffff, 0xfffffffff0fffff, 0xffff00ffffffffff, 0xf7ff000fffffffff, 0x1bfbfffbffb7f7ff, 0x0, 0x7fffffffffffff, 0xff003fffff, 0x7fdffffffffffbf, 0x0, 0x91bffffffffffd3f, 0x7fffff003fffff, 0x7fffffff, 0x37ffff00000000, 0x3ffffff003fffff, 0x0, 0xc0ffffffffffffff, 0x0, 0x3ffffffeeff06f, 0x1fffffff00000000, 0x1fffffff, 0x1ffffffeff, 0x3fffffffffffff, 0x7ffff003fffff, 0x3ffff, 0x0, 0xffffffffffffffff, 0x1ff, 0x7ffffffffffff, 0x7ffffffffffff, 0xffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x31bffffffffff, 0x0, 0xffff00801fffffff, 0xffff00000000003f, 0xffff000000000003, 0x7fffff0000001f, 0xffffffffffffffff, 0x3e00000000003f, 0x1ffffffffffffff, 0x1ffffff0004, 0x7ffffffffffff, 0x47ffffffff00f0, 0xffffffffffffffff, 0x1400c01e, 0xc09ffffffffbffff, 0x3, 0xffff01ffbfffbd7f, 0x1ffffffffff, 0xe3edfdfffff99fef, 0xfe081199f, 0x0, 0x0, 0xffffffffffffffff, 0x3800007bb, 0xffffffffffffffff, 0xb3, 0x0, 0x0, 0x7f3fffffffffffff, 0x3f000000, 0x7fffffffffffffff, 0x11, 0x13fffffffffffff, 0x0, 0x7ffe7ffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0x0, 0xffffffff00000000, 0x80000000ffffffff, 0x99bfffffff6ff27f, 0x7, 0xfffffcff00000000, 0x1afcffffff, 0x7fe7ffffffffffff, 0xffffffffffff0000, 0xffff000020ffffff, 0x1ffffffffffffff, 0x7f7ffffffffffdff, 0xfffc000000000001, 0x7ffefffffcffff, 0x0, 0xb47ffffffffffb7f, 0xfffffdbf000000cb, 0x17b7fff, 0x0, 0x0, 0x0, 0x0, 0x7fffff00000000, 0xc7fffffffffdffff, 0x1, 0x1000000000000, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x0, 0xffffffffffffffff, 0x7fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffffffff0000, 0x1ffffffffffff, 0xffffffffffff, 0x7e, 0x0, 0x0, 0xffffffffffffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0xffff00007fffffff, 0x7fffffffffffffff, 0x3fffffff0000, 0xffffffffffff, 0xe0fffff80000000f, 0xffff, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff87ff, 0xffff80ff, 0x3000b00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef000000000000, 0x40007ffffffff, 0xffff00f000270000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffff, 0xffffffffffffffff, 0x1fff07ffffffffff, 0x43ff01ff, 0x0, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xf7fffffff7fffffd, 0xffdfffffffdfffff, 0xffff7fffffff7fff, 0xfffffdfffffffdff, 0xff7, 0x7e07fffffff, 0x0, 0x0, 0x0, 0xffff07dbf9ffff7f, 0x3fffffffffff, 0x8000, 0x0, 0x3f801fffffffffff, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x3fffffff0000, 0xfffffffffff, 0x0, 0x0, 0x0, 0xfffffff0000, 0x0, 0x0, 0x0, 0x7fff6f7f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f, 0xffffffffffffffff, 0x88f, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x0, 0xffff000000000000, 0xffff03ffffff03ff, 0x3ff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff, 0x3ffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff3fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0003ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0001ffffffff, 0xffffffffffffffff, 0x3fffffff, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff07ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0]); //3392 bytes enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x88], [ 0x100, 0x1a0, 0x4800], [ 0x402030202020100, 0xa09080207020605, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x20202020202020b, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000000000000, 0x5000400030002, 0x9000800070006, 0xd000c000b000a, 0xf00000000000e, 0x10000000000000, 0x14001300120011, 0x160015, 0x17, 0x0, 0x0, 0x190018, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b00000000, 0x1f001e001d001c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000000000, 0x2100000000, 0x24002300220000, 0x0, 0x2500000000, 0x28002700260000, 0x2c002b002a0029, 0x30002f002e002d, 0x3300320031, 0x37003600350034, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x3a003900000000, 0x3b000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x3d000000000000, 0x3f003e0000, 0x0, 0x4000000000, 0x0, 0x42003a0041, 0x43, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x460000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x3f8, 0x0, 0x0, 0x0, 0xbffffffffffe0000, 0xb6, 0x7ff0000, 0x10000fffff800, 0x0, 0x3d9f9fc00000, 0xffff000000020000, 0x7ff, 0x1ffc000000000, 0x200ff80000000000, 0x3eeffbc00000, 0xe000000, 0xff000000, 0xfffffffbfffffc00, 0xdc0000000000000f, 0xc00feffff, 0xd00000000000000e, 0x4000000c0080399f, 0xd00000000000000e, 0x23000000023987, 0xd00000000000000e, 0xfc00000c00003bbf, 0xd00000000000000e, 0xc00e0399f, 0xc000000000000004, 0x803dc7, 0xd00000000000001f, 0xc00603ddf, 0xd00000000000000e, 0x8000c00603ddf, 0xd80000000000000f, 0xc00803ddf, 0xe, 0xc0000ff5f8400, 0x7f2000000000000, 0x7f80, 0x1ff2000000000000, 0x7f00, 0xc2a0000003000000, 0xfffe000000000000, 0x1ffffffffeffe0df, 0x40, 0x7ffff80000000000, 0x1e3f9dc3c00000, 0x3c00bffc, 0x0, 0x0, 0xe0000000, 0x0, 0x0, 0x1c0000003c0000, 0xc0000000c0000, 0xfff0000000000000, 0x200fffff, 0xb800, 0x0, 0x20000000060, 0x0, 0xfff0fff00000000, 0x0, 0x0, 0x0, 0xf800000, 0x9fffffff7fe00000, 0xffff000000000000, 0x7fff, 0xfff000000000001f, 0xff8000000001f, 0x3ffe00000007, 0xfffc000000000, 0xfffff000000000, 0x0, 0x0, 0x39021fffff70000, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x1ffffffff0000, 0x0, 0x0, 0x0, 0x3800000000000, 0x0, 0x8000000000000000, 0x0, 0xffffffff00000000, 0xfc0000000000, 0x0, 0x6000000, 0x0, 0x0, 0x3ff7800000000000, 0xc0000000, 0x3000000000000, 0x10f800000844, 0x0, 0xfff0000000000003, 0x8003ffff0000003f, 0x3fc000000000, 0xfff80, 0xfff800000000000f, 0x2000000001, 0x7ffe0000000000, 0x3800000000003008, 0xc19d000000000000, 0x60f80000000002, 0x0, 0x0, 0x0, 0x37f800000000, 0x40000000, 0x0, 0x0, 0x0, 0xffff0000ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000000000000000, 0x0, 0x0, 0x0, 0x100000000, 0x0, 0x7c0000000000000, 0x0, 0x0, 0x870000000000f06e, 0x0, 0x0, 0x6000000000, 0xf000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180000000000, 0xe000000000000000, 0x0, 0x1ffc0, 0x3c, 0x0, 0xff00000000000007, 0x801900000000007f, 0x7ff000000000007, 0x4, 0x1fff8000000007, 0x8000000000060, 0xfff8000000000007, 0xde01, 0x40fff00000000000, 0x2, 0x0, 0x7ff80000000, 0xd80000000000000f, 0x1f1fcc0080399f, 0x0, 0x0, 0xffe0000000000000, 0x4000007f, 0xffff000000000000, 0xf, 0x0, 0x0, 0xff3f800000000000, 0x30000001, 0xffff000000000000, 0x1, 0xfff80000000000, 0x0, 0xfffe0000000, 0x0, 0x0, 0x0, 0x7fff00000000000, 0x0, 0x0, 0x0, 0x79bf000000000000, 0xd, 0x0, 0x11fcfe0000, 0x7bf80000000007fe, 0xffe0080, 0x3fffc00, 0x0, 0xff7f800000000000, 0x0, 0x7ffefffffc0000, 0x0, 0xb47e000000000000, 0xbf, 0xfb7c00, 0x0, 0x0, 0x0, 0x0, 0x78000000000000, 0xc7f000000000000b, 0x7, 0x0, 0x0, 0x0, 0x3fff81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f000000000000, 0x7f000000000000, 0x0, 0x0, 0x0, 0x0, 0xfffffffffffe8000, 0x780ff, 0x3001000000000, 0x0, 0x0, 0x60000000, 0x0, 0xffff3fffffffffff, 0x7f, 0x0, 0x0, 0x0, 0xf807e3e000000000, 0x3c0000000fe7, 0x0, 0x0, 0x1c, 0x0, 0x0, 0xf87fffffffffffff, 0x201fffffffffff, 0xfffef8000010, 0x0, 0x7dbf9ffff7f, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x400000000000, 0xf00000000000, 0x0, 0x0, 0x0, 0xf00000000000, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0x7f0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0]); //2848 bytes @@ -3100,11 +3109,11 @@ enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)([ 0x0, 0x20, 0xd0], [ 0x100 //3360 bytes enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x80], [ 0x100, 0x180, 0x4900], [ 0x402030202020100, 0xa09080207020605, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100010000, 0x5000400030001, 0x1000800070006, 0xc000b000a0009, 0xe00010001000d, 0x1100100001000f, 0x15001400130012, 0x1000100010016, 0x18000100010017, 0x19000100010001, 0x10001001a0001, 0x1001d001c001b, 0x100010001001e, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x100200001001f, 0x24002300220021, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x27002600250001, 0x29000100280001, 0x10001002a0001, 0x2e002d002c002b, 0x30002f00010001, 0x1003300320031, 0x37003600350034, 0x3b003a00390038, 0x3e003d0001003c, 0x1000100010001, 0x100010001003f, 0x1000100010001, 0x40000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x42004100010001, 0x44004300010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010045, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1004600010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100470001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x8c00f7ee00000000, 0x28000000b8000001, 0x88c0088200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000000000000000, 0x80, 0x0, 0x0, 0xfc000000, 0x4000000000000600, 0x18000000000049, 0xe8003600, 0x3c0000000000, 0x0, 0x100000, 0x3fff, 0x0, 0x0, 0x380000000000000, 0x7fff000000000000, 0x40000000, 0x0, 0x0, 0x0, 0x1003000000000, 0x0, 0x2000000000000000, 0x0, 0x40000000000000, 0x0, 0x1000000000000, 0x0, 0x80000000000000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x10000000000000, 0x0, 0xc008000, 0x0, 0x0, 0x3c0000000017fff0, 0x0, 0x20, 0x61f0000, 0x0, 0xfc00, 0x0, 0x800000000000000, 0x0, 0x1ff00000000, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x400000000000, 0x18000000, 0x380000000000, 0x60000000000000, 0x0, 0x0, 0x7700000, 0x7ff, 0x0, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0xc0000000, 0x0, 0x3f7f00000000, 0x0, 0x0, 0x60000001fc000000, 0x0, 0xf000000000000000, 0xf800000000000000, 0xc000000000000000, 0x0, 0x800ff, 0xffff00ffffff0000, 0x600000007ffbffef, 0x6000, 0x0, 0x60000000f00, 0x0, 0x0, 0x0, 0x0, 0x3fff0000000000, 0x0, 0xffc000000060, 0x0, 0x0, 0x1fffff8, 0x300000000f000000, 0x0, 0x0, 0x0, 0xde00000000000000, 0x0, 0x1000000000000, 0x0, 0x0, 0xffff7fffffffffff, 0x3ffcffff, 0x0, 0x0, 0x20010000fff3ff0e, 0x0, 0x100000000, 0x800000000000000, 0x0, 0x0, 0x0, 0xc000000000000000, 0xe000, 0x4008000000000000, 0x0, 0xfc000000000000, 0x0, 0xf0000000000000, 0x0, 0x170000000000c000, 0xc00000000000, 0x80000000, 0x0, 0xc0003ffe, 0x0, 0xf0000000, 0x0, 0x30000c0000000, 0x0, 0x0, 0x0, 0x80000000000, 0xc000000000000000, 0x0, 0x0, 0x0, 0xffff000003ff0000, 0xd0bfff7ffff, 0x0, 0x0, 0xb80000018c00f7ee, 0x3fa8000000, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x10000, 0x0, 0x800000000000, 0x0, 0x0, 0x0, 0x800000, 0x0, 0x0, 0x8000000080000000, 0x0, 0x0, 0x0, 0x0, 0x8000000001ff0000, 0x0, 0x7f000000000000, 0xfe00000000000000, 0x0, 0x1e000000, 0x0, 0x0, 0x0, 0x200000000000, 0x0, 0x0, 0x3e00000, 0x3c0, 0x0, 0x0, 0x3f80, 0xd800000000000000, 0x3, 0x0, 0x3000000000000f, 0x0, 0xe80021e0, 0x3f00000000000000, 0x0, 0x20000000000, 0x0, 0x0, 0x2c00f800, 0x0, 0x40, 0x0, 0x0, 0x0, 0xfffffe, 0x0, 0x1fff0000000e, 0x200000000000000, 0x0, 0x7000000000000000, 0x0, 0x0, 0x0, 0x800000000000000, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0, 0x400000000, 0x8000000000000000, 0x7f, 0x7dc000000, 0x0, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x300000000003e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180000000000000, 0x0, 0xfff8, 0x0, 0x8000000000000000, 0x0, 0x1f000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6000000000000, 0x0, 0xc00000000000, 0x0, 0x20000000000000, 0xf80000000000000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x7800000, 0x0, 0x0, 0x0, 0x0, 0x400000000, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0xf80, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x80], [ 0x100, 0x180, 0x4b00], [ 0x503040303020100, 0xa09080307030306, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xf000e000d000c, 0x11000100010010, 0x13001200010001, 0x15000100140001, 0x16000100010001, 0x1a001900180017, 0x1c00190019001b, 0x1e0019001d0019, 0x2100200001001f, 0x19002400230022, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100250001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x27000100010026, 0x2a002900010028, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2b000100010001, 0x2e002d002c0001, 0x10001002f0001, 0x1000100010001, 0x1003100010030, 0x1000100010001, 0x1000100010001, 0xe000100010001, 0x1000100010001, 0x32000100010001, 0x1000100010001, 0x1000100010001, 0x33000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010034, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x35000100010001, 0x39003800370036, 0x3b003a00010001, 0x1003c00190019, 0x1000100010001, 0x1003e003d0001, 0x1000100010001, 0x1000100010001, 0x100410040003f, 0x19004400430042, 0x46004500190019, 0x49004800190047, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x7000081000000000, 0x5000000140000000, 0x113d37c00000000, 0x80000000800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffafe0fffc003c, 0x0, 0x20000000000000, 0x30, 0x40000000000000, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0xe000, 0x0, 0xc9c0, 0x0, 0x0, 0x6000020040000000, 0x0, 0x0, 0x0, 0xc040000000000000, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0xc0c000000000000, 0x0, 0x0, 0x0, 0x2000000000000, 0x0, 0x1000000000000, 0x0, 0x7f8000000000000, 0x0, 0x8000000000000000, 0x0, 0x0, 0x0, 0x200000000008000, 0x0, 0x0, 0x8000000000000000, 0x0, 0x0, 0x0, 0x1500000fce8000e, 0x0, 0xc000000000000000, 0x1e0dfbf, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x200000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x1, 0x0, 0xffffffffc0000000, 0x0, 0x1ff007fe00000000, 0x0, 0x0, 0x0, 0x0, 0xa000000000000000, 0x6000e000e000e003, 0x0, 0x1c00000000040010, 0xffffffff00001c00, 0x1, 0xc0042afc1d0037b, 0xbc1f, 0xffffffffffff0c00, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffff9fffffff0ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fffffffff, 0x7ff, 0xfffffffff0000000, 0x3ffffffffff, 0xffffffffffffffff, 0xffffffffff, 0xfffffffffff00000, 0xffff003fffffff9f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffe000007, 0xcffffffff0ffffff, 0xffffffffffffffff, 0xffcfffffffffffff, 0xffffffffffbfffff, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x7e000000000, 0x0, 0x30000, 0xfffffffffbffffff, 0xfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfff0000003fffff, 0xc0c00001000c0010, 0x0, 0x18000000, 0x0, 0x0, 0x0, 0xffc30000, 0xfffffffff, 0xfffffc007fffffff, 0xffffffff000100ff, 0x1fffffffffc00, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0xffffffffffff0000, 0x7f, 0x3007fffff, 0x0, 0x600, 0x0, 0x3c00f0000000000, 0x0, 0x0, 0x0, 0x0, 0x380000000000000, 0x0, 0x0, 0x0, 0xc0008000000, 0x0, 0x0, 0x20000000000, 0x0, 0xfffc000000000000, 0x7, 0x0, 0xffff, 0x0, 0xf000000000008000, 0x0, 0x27400000000, 0x0, 0x0, 0x4000000070000810, 0x50000001, 0x0, 0x30007f7f00000000, 0xff80000000000000, 0xfe00000000000000, 0x11fff73ff, 0x1fffffffffff0000, 0x0, 0x180000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x3ffffffe00000, 0xf000000000000000, 0x20, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0xffffffffffff0000, 0xffffffffffffffff, 0xf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffffff, 0xfffffe7fffffffff, 0x1c1fffffffff, 0xffffc3fffffff018, 0x7ffffffffff, 0xffffffffffffffff, 0x23, 0x0, 0x0, 0xffffffffffffffff, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800000008000002, 0x20000000200000, 0x800000008000, 0x20000000200, 0x8, 0x780000000000000, 0xffdfe00000000000, 0x6f, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000, 0x0, 0x0, 0x1100000000000, 0x0, 0x400000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000000000000, 0xffff0fffffffffff, 0xffffffffffffffff, 0xfffe7fff000fffff, 0x3ffffffffefffe, 0xffffffffffffe000, 0xffffffffffffffff, 0x3fffffffffff, 0xffffffc000000000, 0xfffffffffff0007, 0x3f000301ff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff1ffff0ffffff, 0xffffffffffffffff, 0xf87fffffffffffff, 0xffffffffffffffff, 0x10fff03ffffff, 0xffffffffffff0fff, 0xffffffff03ff00ff, 0x33fffffff00ff, 0x0, 0xffffffffffffffff, 0x1fff3fff000fffff, 0xbfffffffffff01ff, 0x1ff01ff0fffc03f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffff7ffff, 0x7ff, 0x0, 0x0, 0x0, 0x0]); -//6048 bytes -enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0xd0], [ 0x100, 0x2c0, 0x8900], [ 0x504030202020100, 0xd0c0b0a09080706, 0x100f0e0202020202, 0x1313131313131211, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131314, 0x1313131313131313, 0x1313131313131313, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100010000, 0x5000400030001, 0x9000800070006, 0xd000c000b000a, 0x10000f0001000e, 0x12001100010001, 0x16001500140013, 0x18000100010017, 0x10001001a0019, 0x100010001001b, 0x1c000100010001, 0x20001f001e001d, 0x1002300220021, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x26002500010024, 0x2a002900280027, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2b000100010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2e002d0001002c, 0x310030002f0001, 0x35003400330032, 0x38000100370036, 0x3c003b003a0039, 0x40003f003e003d, 0x44004300420041, 0x48004700460045, 0x4c004b004a0049, 0x50004f004e004d, 0x51000100010001, 0x2c002c00530052, 0x2c002c002c002c, 0x54002c002c002c, 0x1000100010001, 0x2c002c002c0055, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c005600010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x58005700010001, 0x5a0059002c002c, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x5b000100010001, 0x1000100010001, 0x2c002c005d005c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x5e002c002c002c, 0x2c0060005f0001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c0061, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x62002c002c002c, 0x66006500640063, 0x6a006900680067, 0x2c006b00010001, 0x6c002c002c002c, 0x2c006f006e006d, 0x71002c002c0070, 0x2c002c00730072, 0x2c007600750074, 0x1007900780077, 0x7b007a00010001, 0x7e007d0001007c, 0x2c002c002c002c, 0x1000100010001, 0x1007f00010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x80000100010001, 0x1000100010081, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1008200010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x83000100010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c008400010001, 0x2c002c002c002c, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x85000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x86000100010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c0087002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0xffffffff00000000, 0x7fffffffffffffff, 0xffffdfff00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfcffffffffffffff, 0xfffffffbffffd7f0, 0xffffffffffffffff, 0xfffeffffffffffff, 0xfffffffffe7fffff, 0xfffffffffffee7ff, 0x1f87ffffff00ff, 0xffffffffefffffc0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffdfffffff, 0xffffffffffff3fff, 0xffffffffffffe7ff, 0x3ffffffffffff, 0xe7ffffffffffffff, 0x7fff3fffffffffff, 0xffff07ff4fffffff, 0xffffffffff007fff, 0xfffffffbffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf3c5fdfffff99fef, 0x7fffffcfb080799f, 0xd36dfdfffff987ee, 0x7fffc05e023987, 0xf3edfdfffffbbfee, 0xfe03ffcf00013bbf, 0xf3edfdfffff99fee, 0xffffcfb0e0399f, 0xc3ffc718d63dc7ec, 0x7ffffc000813dc7, 0xf3fffdfffffddfff, 0xff80ffcf27603ddf, 0xf3effdfffffddfff, 0xeffcf60603ddf, 0xfffffffffffddfff, 0xffffffcffff0fddf, 0x2ffbfffffc7fffee, 0x1cffc0ff5f847f, 0x87fffffffffffffe, 0xfffffff, 0x3fffffaffffff7d6, 0xf3ff7f5f, 0xffffffffffffffff, 0xfffe1ffffffffeff, 0xdffffffffeffffff, 0x7ffdfff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff20bf, 0xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff, 0x1fffffffe7ffffff, 0xffffffff03ffffff, 0x3f3fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1fffffff, 0x1ffffffffffffff, 0x7fffff803fffff, 0xddfff000fffff, 0xffffffffffffffff, 0x3ff03ff3fffffff, 0xffffffff03ffbfff, 0x1ffffffffffffff, 0xffff07ffffffffff, 0x3fffffffffffff, 0xfff0fff7fffffff, 0x1f3ffffffffff1, 0xffff0fffffffffff, 0xffffffffc7ff03ff, 0xffffffffcfffffff, 0x9fffffff7fffffff, 0xffff3fff03ff03ff, 0x7fff, 0xffffffffffffffff, 0x7fffffffffff1fff, 0xffffffffffffffff, 0xf00fffffffffffff, 0xf8ffffffffffffff, 0xffffffffffffe3ff, 0xe7ffffffffff01ff, 0x7ffffffffff00ff, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0xffdfffffffffffff, 0x7fdcffffefcfffdf, 0xffff80ffffff07ff, 0xfff30000ffffffff, 0xffffffff1fff7fff, 0x1ffffffff0001, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0fff, 0xffffffffffffffff, 0x7fffffffff, 0xffffffff000007ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffcfffffffffffff, 0xffffffffffbfffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfe0fffffffffffff, 0xffff20bfffffffff, 0x800180ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f, 0xffffffffffffffff, 0x3fffffff, 0xfffffffffbffffff, 0xfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfff0000003fffff, 0xffffffffffffffff, 0xfffffffffffffffe, 0xfffffffffe7fffff, 0xffffffffffffffff, 0xfffeffffffffffe0, 0xffffffffffffffff, 0xffffffffffff7fff, 0xffff000fffffffff, 0xffffffff7fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff1fff, 0xffffffffffff007f, 0xfffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffc000003eb07ff, 0x3ff1fffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffff03ffc03f, 0xffffffffffffffff, 0x1fffffff800fffff, 0xffffffffffffffff, 0x7fffffffc3ffbfff, 0x7fffffffffffff, 0xfffffffff3ff3fff, 0xffffffffffffffff, 0x7ffffff8000007, 0xffff7f7f007e7e7e, 0xffff0fffffffffff, 0xffffffffffffffff, 0x3ff3fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff000fffffffff, 0xffffffffffff87f, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7fffffe0f8007f, 0xffffffffffffffdb, 0xffffffffffffffff, 0xfffffffffff80007, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffcffff, 0xffff0000000080ff, 0xffffffff03ffffff, 0xffdf0f7ffff7ffff, 0xffffffffffffffff, 0x1fffffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0x7fffffffffffffff, 0x30007f7f1cfcfcfc, 0xb7ffff7fffffefff, 0x3fff3fff, 0xffffffffffffffff, 0x7ffffffffffffff, 0xff8fffffffffff87, 0xffffffffffffffff, 0x11fff7fff, 0x3fffffffffff0000, 0x0, 0x0, 0xffffffff1fffffff, 0xfffffff0001ffff, 0xffffe00fffffffff, 0x7ffffffffff07ff, 0xffffffffbfffffff, 0x3fff0f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03ff3fffffff, 0xfffffffff0fffff, 0xffff00ffffffffff, 0xf7ff800fffffffff, 0x1bfbfffbffb7f7ff, 0x0, 0x7fffffffffffff, 0xff003fffff, 0x7fdffffffffffbf, 0x0, 0x91bffffffffffd3f, 0xffffffffffbfffff, 0xff807fffffff, 0xf837ffff00000000, 0x83ffffff8fffffff, 0x0, 0xf0ffffffffffffff, 0xfffffffffffcffff, 0x873ffffffeeff06f, 0xffffffff01ff01ff, 0xffffffff, 0x7ff87fffffffff, 0xfe3fffffffffffff, 0xff07ffffff3fffff, 0xfe001e03ffff, 0x0, 0xffffffffffffffff, 0x1ff, 0x7ffffffffffff, 0xfc07ffffffffffff, 0x3ff00ffffffffff, 0x0, 0x0, 0x0, 0x0, 0x7fffffff00000000, 0x33bffffffffff, 0xe000000000000000, 0xffff00ffffffffff, 0xffff000003ffffff, 0xffff0000000003ff, 0x7fffff00000fff, 0xffffffffffffffff, 0x803ffffffffc3fff, 0xdfffffffffffffff, 0x3ff01ffffff0007, 0xffdfffffffffffff, 0x7fffffffff00ff, 0xffffffffffffffff, 0x1ffffeffffffff, 0xfffffffffffbffff, 0x3, 0xffff03ffbfffbd7f, 0x3ff07ffffffffff, 0xfbedfdfffff99fef, 0x1f1fcfe081399f, 0x0, 0x0, 0xffffffffffffffff, 0x3efffffff, 0xffffffffffffffff, 0x3ff00ff, 0x0, 0x0, 0xff3fffffffffffff, 0x3fffffff, 0xffffffffffffffff, 0x1fff03ff001f, 0x3ffffffffffffff, 0x3ff, 0xffff0fffe7ffffff, 0x7f, 0x0, 0x0, 0xfffffffffffffff, 0x0, 0xffffffff00000000, 0x8007ffffffffffff, 0xf9bfffffff6ff27f, 0x3ff007f, 0xfffffcff00000000, 0x1ffcffffff, 0xffffffffffffffff, 0xffffffffffff00ff, 0xffff0007ffffffff, 0x1ffffffffffffff, 0x3ff, 0x0, 0x0, 0x0, 0xff7ffffffffffdff, 0xffff1fffffff003f, 0x7ffefffffcffff, 0x0, 0xb47ffffffffffb7f, 0xfffffdbf03ff00ff, 0x3ff01fb7fff, 0x0, 0x0, 0x0, 0x0, 0x1ffffff00000000, 0xc7fffffffffdffff, 0x3ffffff, 0x1000000000000, 0x8003ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x0, 0xffffffffffffffff, 0x1f7fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffffffff0000, 0x7ffffffffffff, 0xffffffffffff, 0x3fffff, 0x0, 0x0, 0xffffffffffffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0xffffc3ff7fffffff, 0x7fffffffffffffff, 0x3f3fffffff03ff, 0xffffffffffffffff, 0xe0fffffbfbff003f, 0xffff, 0x0, 0x0, 0xffffffffffffffff, 0x7ffffff, 0x0, 0xffffffffffffffff, 0xffffffffffff87ff, 0xffff80ff, 0x3001f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef000000000000, 0x40007ffffffff, 0xffff00f000270000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffff, 0xffffffffffffffff, 0x1fff07ffffffffff, 0xf3ff01ff, 0x0, 0xffff3fffffffffff, 0xffffffffffff007f, 0xffffffffffffffff, 0xf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffffff, 0xfffffe7fffffffff, 0xf807ffffffffffff, 0xffffffffffffffff, 0x7ffffffffff, 0xffffffffffffffff, 0x3f, 0x0, 0xfffff000fffff, 0xffffffffffffffff, 0x1ffffff007fffff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffcfff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffef8000fff, 0x0, 0x7e07fffffff, 0x0, 0x0, 0x0, 0xffff07dbf9ffff7f, 0x3fffffffffff, 0x8000, 0x0, 0x3fff1fffffffffff, 0xc3ff, 0x0, 0x0, 0x0, 0x0, 0x7fffffff0000, 0x83ffffffffffffff, 0x0, 0x0, 0x0, 0x3ffffffffff0000, 0x0, 0x0, 0x0, 0x7fff6f7f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fff9f, 0xffffffffffffffff, 0xc3ff0fff, 0x0, 0x0, 0x0, 0xfffe000000000000, 0x1fffffffffffff, 0x0, 0x3ffffffffffffffe, 0x0, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x3000000000000, 0xffff0fffffffffff, 0xffffffffffffffff, 0xfffe7fff000fffff, 0x3ffffffffefffe, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffff, 0xffffffc000000000, 0xfffffffffff0007, 0x3f000301ff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff1ffff0ffffff, 0xffffffffffffffff, 0xf87fffffffffffff, 0xffffffffffffffff, 0x10fff03ffffff, 0xffffffffffff0fff, 0xffffffff03ff00ff, 0x33fffffff00ff, 0x0, 0xffffffffffffffff, 0x1fff3fff000fffff, 0xbfffffffffff01ff, 0x1ff01ff0fffc03f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffff7ffff, 0x3ff0000000007ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff, 0x3ffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff3fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0003ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1ffffffff, 0x3fffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff07ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0]); -//4784 bytes -enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)([ 0x0, 0x10, 0x4c, 0x148], [ 0x80, 0xf0, 0x3f0, 0x4380], [ 0x706050403020100, 0xb0b0b0a09080101, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xd0101010b0b0b0c, 0xd010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xd000d000d000c, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000f000e000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d0010000d, 0xd000d000d000d, 0x120011000d000d, 0x16001500140013, 0x1a001900180017, 0x1e001d001c001b, 0x1d001d001f000d, 0x1d001d0020001d, 0x1d001d001d001d, 0x220021001d001d, 0xd000d000d000d, 0x24000d0023000d, 0x1d001d001d001d, 0x25001d001d001d, 0x27001d001d0026, 0x28001d001d001d, 0x2c002b002a0029, 0x30002f002e002d, 0x1d003300320031, 0xd000d000d000d, 0xd000d000d000d, 0xd000d0034000d, 0xd00360035000d, 0x37000d000d000d, 0xd000d000d000d, 0x1d0038000d000d, 0x1d0039001d001d, 0xd000d000d000d, 0xd000d000d003a, 0x1d001d001d003b, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d003c, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0x3d000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0x3d000d000d000d, 0x0, 0x0, 0x0, 0x200010000, 0x0, 0x6000500040003, 0x0, 0xa000900080007, 0xd000c000b, 0xf000e00000000, 0x13001200110010, 0x17001600150014, 0x1b001a00190018, 0x1f001e001d001c, 0x23002200210020, 0x26002500240000, 0x27000000000000, 0x0, 0x2a002900280000, 0x2e002d002c002b, 0x0, 0x0, 0x30002f00000000, 0x33000000320031, 0x3500340030002d, 0x39003800370036, 0x3d003c003b003a, 0x3f0000003e0000, 0x43004200410040, 0x0, 0x0, 0x47004600450044, 0x4a004900480000, 0x4b00000000, 0x0, 0x0, 0x4d004c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f004e0000, 0x50000000000000, 0x54005300520051, 0x57005600550000, 0x58000000000000, 0x400590000, 0x5c005b0000005a, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f005e00000000, 0x0, 0x61000000000060, 0x62000000000000, 0x64000000610063, 0x66000000650000, 0x69000000680067, 0x6b00000038006a, 0x0, 0x0, 0x0, 0x6c005c00000000, 0x0, 0x0, 0x6e0000006d0000, 0x7100000070006f, 0x0, 0x73007200000000, 0x7500000074002d, 0x77007600000059, 0x7a000000790078, 0x7d007c0000007b, 0x7f002f007e007e, 0x83008200810080, 0x85008400000000, 0x7e008800870086, 0x0, 0x7e008a00890067, 0x8d008c004f008b, 0x72008f007e008e, 0x93009200910090, 0x7e009600950094, 0x99009800970000, 0x7e007e007e009a, 0x9d009c009b007e, 0xa0009f009e0086, 0xa2000000a10000, 0xa4000000a30046, 0xa800a700a600a5, 0x7e007e00aa00a9, 0xac000000ab0000, 0x5500ad007e007e, 0xb000af00ae0000, 0x7e007e00b200b1, 0xb500b4007e00b3, 0xb900b800b700b6, 0x3000bb00ba0000, 0x7e007e007e00b0, 0x7e00be00bd00bc, 0x7e00c100c000bf, 0xc2007e007e007e, 0xc500c4006e00c3, 0x0, 0x0, 0x0, 0x7e006e00000000, 0xc60000, 0x7e007e00c70000, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x9800c8007e007e, 0x7e007e00c90000, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x0, 0x0, 0x7e007e00b20000, 0x7e007e007e007e, 0x0, 0x0, 0xcb007600ca0030, 0x7e00cd00cc0000, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e00ce0000007e, 0xd100d000cf0000, 0x0, 0x0, 0x0, 0x61000000000000, 0xc9000000000000, 0x7e007e007e0097, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0xd2007e007e007e, 0x0, 0xd400d3, 0xb3000000000000, 0x7e007e007e007e, 0x7e00d600d50000, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0xc70000005f006d, 0x35000000000000, 0xd80000000000d7, 0xda007e00d90000, 0x7e007e00db0000, 0xde00dd00dc0000, 0xe000df, 0xe100000000, 0xe2000000000000, 0x0, 0x0, 0x7e00e300000000, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e007e007e00e4, 0x7e00e700e600e5, 0x7e007e00e900e8, 0xeb00ea007e007e, 0x7e007e007e007e, 0xec007e007e007e, 0x7e007e007e007e, 0x7e007e007e007e, 0xed007e007e007e, 0xee000000000000, 0x7e007e00ef0000, 0x7e007e007e007e, 0x7e007e007e007e, 0x7e00f100f0007e, 0x7e007e007e00f2, 0xf600f500f400f3, 0x7e007e007e007e, 0xf800f700000038, 0xf900e600000000, 0x7e007e00fb00fa, 0x0, 0x0, 0x0, 0xfc000000000000, 0xfe000000fd0000, 0x7e010000ff004b, 0x0, 0x103010201010000, 0x105010400000000, 0x0, 0x0, 0x92000000000000, 0x0, 0x0, 0x0, 0x0, 0xaf, 0x106, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10700000000, 0x0, 0x0, 0x0, 0x0, 0x108000000000000, 0x0, 0x0, 0x7e007e007e0055, 0x7e007e007e007e, 0x0, 0x0, 0x0, 0x1090000, 0x0, 0x0, 0x0, 0x7e010a00000000, 0x7e007e0000010b, 0x10a000000000000, 0x7e007e007e007e, 0x7e007e007e007e, 0x0, 0x0, 0x0, 0x10c000000000000, 0x0, 0x0, 0x0, 0x10c000000000000, 0x0, 0x300000000000000, 0x40000280f, 0x1000000000000, 0x1800000, 0x11800, 0xffe078000000ff00, 0x4000, 0x1800, 0xfffc000000000000, 0x1800000000000000, 0x8000c00000000000, 0xf800b0000000, 0xfc8000, 0xc3a020000066010, 0x800000304f7f8660, 0x2c92020000067811, 0xff80003fa1fdc678, 0xc12020000044011, 0x1fc0030fffec440, 0xc12020000066011, 0xff0000304f1fc660, 0x3c0038e729c23813, 0xf800003fff7ec238, 0xc00020000022000, 0x7f0030d89fc220, 0xc10020000022000, 0xfff100309f9fc220, 0x22000, 0x30000f0220, 0xd004000003800011, 0xffe3003f00a07b80, 0x7800000000000001, 0xfffffffff0000000, 0xc000005000000829, 0xffffffff0c0080a0, 0x1e00000000100, 0x2000000001000000, 0xfffffffff8002000, 0xdf40, 0xc280c200, 0x80c200000000c200, 0x8000c2, 0xc20000, 0xe000000018000000, 0xfc000000, 0xc0c0000000000000, 0xe0000000, 0xfe00000000000000, 0xff8000007fc00000, 0xfff22000fff00000, 0xfc00fc00c0000000, 0xf80000000000, 0xffc0000000000000, 0xf000f00080000000, 0xffe0c0000000000e, 0xf00000000000, 0x3800fc00, 0x30000000, 0x6000000080000000, 0xc000fc00fc00, 0xffffffffffff8000, 0x800000000000e000, 0xff0000000000000, 0x700000000000000, 0x1c00, 0x180000000000fe00, 0xf80000000000ff00, 0xc0c00000, 0xc00000005500c0c0, 0x20000000000000, 0x8023000010300020, 0xc002000000000, 0xe0008000, 0xfffe00000000fffe, 0xf000, 0xffffff8000000000, 0xfffff800, 0x30000000000000, 0x400000, 0x1f0000000000000, 0xdf4000000000, 0x7ffe7f0000000000, 0x80808080ff800000, 0x80808080, 0xffffffffc0000000, 0x4000000, 0xfff0000000000000, 0xf000ffffffc00000, 0x1, 0x100000000001f, 0x8000, 0xfff000000000, 0x80000000, 0xe000, 0xff80, 0xfffff00000000000, 0xff00000000000000, 0x3fffffc14f800, 0xfc00e00000000000, 0xfc003fc0, 0xe00000007ff00000, 0x800000003c004000, 0xff80000000000000, 0xc00c000, 0xff80000007fffff8, 0x8080ff818181, 0xfc00c00000000000, 0xf000000000000780, 0xc00000000000, 0xfffffffffc000000, 0xa08000001f07ff80, 0x24, 0x7fff8, 0x30000, 0xffffffff7f00, 0x20f08000080000, 0x6000000000000000, 0x8000000000000000, 0xc1ff8080e3030303, 0x4800008000001000, 0xffffffffc000c000, 0xf800000000000000, 0x70000000000078, 0xfffffffee0008000, 0xc00000000000ffff, 0xffffffffffffffff, 0xf0000000fffe0000, 0x1ff000000000, 0xf80000000000f800, 0x40000000, 0xffffffffffc000f0, 0xfc00c0000000, 0xf000000000f00000, 0xff0000000000, 0x8007ff000000000, 0xe404000400480800, 0xffffff00ffc00000, 0xf802000000000040, 0x6e400000000002c0, 0xffff007f80000000, 0x7c80000ffffffff, 0x7c00000070000000, 0xf00000000000000, 0x78c0000001100f90, 0xfe00fe00, 0xffffffff00000000, 0xff80078000000000, 0x1c0000000000000, 0xf8000000c00000, 0xffff01ffe1fc0000, 0xfffffffffffffe00, 0xfff8000000000000, 0x3f8000000000000, 0xfc00ff0000000000, 0x80000000ffffffff, 0xfffcc40000000000, 0x1fffffffffffffff, 0xfffffc000000, 0xfffffffffc00, 0xff800000fffff000, 0x7fc000000003c000, 0xfc00fe000000dff8, 0xff8000000000ff00, 0xffe0000100000000, 0x40000, 0xfffffffffffffffc, 0xfc0040004280, 0xfc00f80000000000, 0x412020000066010, 0xffe0e0301f7ec660, 0xfffffffc10000000, 0xfffffffffc00ff00, 0xc0000000000000, 0xffffe000fc00ffe0, 0xfc00000000000000, 0xfffffffffffffc00, 0xf00018000000, 0xffffffffffffff80, 0xf000000000000000, 0xffffffff, 0x7ff8000000000000, 0x640000000900d80, 0xfffffffffc00ff80, 0x300ffffffff, 0xffffffe003000000, 0xff00, 0xfff800000000, 0x80000000000200, 0xe0000000ffc0, 0xff80010000030000, 0x4b80000000000480, 0x240fc00ff00, 0xfffffc00fe048000, 0xfe000000ffffffff, 0x3800000000020000, 0xfffeffffffffffff, 0x7ffc000000000000, 0xffe0800000000000, 0xfffffffffffffff0, 0xffff, 0xffffffffffc00000, 0x3c0080000000, 0xffc0c0000000fc00, 0x1f0000040400ffc0, 0xffffffffffff0000, 0xfffffffff8000000, 0x7800, 0xffffffff00007f00, 0xfffcffe0ffffffff, 0x9010ffffffffffff, 0xfffbfff800000000, 0xff0fffd8ffff, 0xe000f80000000000, 0xfffffff00c00fe00, 0x18000000000, 0xfffff80000000000, 0xffffffffffffffc0, 0xfff00000fff00000, 0xfe000000ff800000, 0x200000, 0x1400219b20000000, 0x10, 0x8400000020201840, 0x203a0, 0xc000000000, 0x3000, 0xffff000107fff000, 0xfffff81f80000000, 0xf82406000080, 0xffffc00000000000, 0xffffffffffff7fff, 0xc000e00000000000, 0xffffffffffff3c00, 0xffff80000000ffff, 0x7c00000000000000, 0xfc0000000000ffff, 0x80009080ffffffff, 0xffffffffff800060, 0xffffffff3c00f000, 0x1ffffffffffff, 0xffe0000000000000, 0xc000000000000001, 0xf508016900000010, 0xa10808695569157b, 0xf0000411f0000400, 0xfffcffffffffffff, 0x18000fff00000, 0xffc0000000010001, 0x3fffffffff, 0xf00000000000fff8, 0xffffffc0fffcfe00, 0xe000e0000f000000, 0x780000000000000, 0xfffef000fc000000, 0xfc00ff00, 0xfffcc0000000ff00, 0xe000c000fff00000, 0x400000000000fe00, 0xfe00fe00f0003fc0, 0x80000, 0xfc00fffffffff800, 0xc0000000, 0xfffc00000000, 0xfffffffe00000000, 0xf800, 0xffff000000000000, 0xfffffffd, 0xc000000000000000, 0xc000000000000000]); +enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x80], [ 0x100, 0x180, 0x4b00], [ 0x503040303020100, 0xa09080307030306, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xf000e000d000c, 0x11000100010010, 0x13001200010001, 0x15000100140001, 0x16000100010001, 0x1a001900180017, 0x1c00190019001b, 0x1e0019001d0019, 0x2100200001001f, 0x19002400230022, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100250001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x27000100010026, 0x2a002900010028, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2b000100010001, 0x2e002d002c0001, 0x10001002f0001, 0x1000100010001, 0x1003100010030, 0x1000100010001, 0x1000100010001, 0xe000100010001, 0x1000100010001, 0x32000100010001, 0x1000100010001, 0x1000100010001, 0x33000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010034, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x35000100010001, 0x39003800370036, 0x3b003a00010001, 0x1003c00190019, 0x1000100010001, 0x1003e003d0001, 0x1000100010001, 0x1000100010001, 0x100410040003f, 0x19004400430042, 0x46004500190019, 0x49004800190047, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x7000081000000000, 0x5000000140000000, 0x113d37c00000000, 0x80000000800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffafe0fffc003c, 0x0, 0x20000000000000, 0x30, 0x40000000000000, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0xe000, 0x0, 0xc9c0, 0x0, 0x0, 0x6000020040000000, 0x0, 0x0, 0x0, 0xc040000000000000, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0xc0c000000000000, 0x0, 0x0, 0x0, 0x2000000000000, 0x0, 0x1000000000000, 0x0, 0x7f8000000000000, 0x0, 0x8000000000000000, 0x0, 0x0, 0x0, 0x200000000008000, 0x0, 0x0, 0x8000000000000000, 0x0, 0x0, 0x0, 0x1500000fce8000e, 0x0, 0xc000000000000000, 0x1e0dfbf, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x200000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x1, 0x0, 0xffffffffc0000000, 0x0, 0x1ff007fe00000000, 0x0, 0x0, 0x0, 0x0, 0xa000000000000000, 0x6000e000e000e003, 0x0, 0x1c00000000040010, 0xffffffff00001c00, 0x1, 0xc0042afc1d0037b, 0xbc1f, 0xffffffffffff0c00, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffff9fffffff0ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fffffffff, 0x7ff, 0xfffffffff0000000, 0x3ffffffffff, 0xffffffffffffffff, 0xffffffffff, 0xfffffffffff00000, 0xffff003fffffff9f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffe000007, 0xcffffffff0ffffff, 0xffffffffffffffff, 0xffcfffffffffffff, 0xffffffffffbfffff, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x7e000000000, 0x0, 0x30000, 0xfffffffffbffffff, 0xfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0000003fffff, 0xc0c00001000c0010, 0x0, 0x18000000, 0x0, 0x0, 0x0, 0xffc30000, 0x800fffffffff, 0xfffffc007fffffff, 0xffffffff000100ff, 0x1fffffffffc00, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0xffffffffffff0000, 0x7f, 0x3007fffff, 0x0, 0x600, 0x0, 0x3c00f0000000000, 0x0, 0x0, 0x0, 0x0, 0x380000000000000, 0x0, 0x0, 0x0, 0xc0008000000, 0x0, 0x0, 0x20000000000, 0x0, 0xfffc000000000000, 0x7, 0x0, 0xffff, 0x0, 0xf000000000008000, 0x0, 0x27400000000, 0x0, 0x0, 0x4000000070000810, 0x50000001, 0x0, 0x30007f7f00000000, 0xff80000000000000, 0xfe00000000000000, 0x11fff73ff, 0x1fffffffffff0000, 0x0, 0x180000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x3ffffffe00000, 0xf000000000000000, 0x20, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0xffffffffffff0000, 0xffffffffffffffff, 0xf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffffff, 0xfffffe7fffffffff, 0x1c1fffffffff, 0xffffc3fffffff018, 0x7ffffffffff, 0xffffffffffffffff, 0x23, 0x0, 0x0, 0xffffffffffffffff, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800000008000002, 0x20000000200000, 0x800000008000, 0x20000000200, 0x8, 0x780000000000000, 0xffdfe00000000000, 0x6f, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000, 0x0, 0x0, 0x1100000000000, 0x0, 0x400000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000000000000, 0xffff0fffffffffff, 0xffffffffffffffff, 0xfffe7fff000fffff, 0x3ffffffffefffe, 0xffffffffffffe000, 0xffffffffffffffff, 0x3fffffffffff, 0xffffffc000000000, 0xfffffffffff0007, 0x3f000301ff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff1ffff0ffffff, 0xffffffffffffffff, 0xf87fffffffffffff, 0xffffffffffffffff, 0x10fff03ffffff, 0xffffffffffff0fff, 0xffffffff03ff00ff, 0x33fffffff00ff, 0x0, 0xffffffffffffffff, 0x1fff3fff000fffff, 0xbfffffffffff01ff, 0x1ff01ff0fffc03f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffff7ffff, 0x7ff, 0x0, 0x0, 0x0, 0x0]); +//6080 bytes +enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0xd0], [ 0x100, 0x2c0, 0x8a00], [ 0x504030202020100, 0xd0c0b0a09080706, 0x100f0e0202020202, 0x1313131313131211, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131314, 0x1313131313131313, 0x1313131313131313, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100010000, 0x5000400030001, 0x9000800070006, 0xd000c000b000a, 0x10000f0001000e, 0x12001100010001, 0x16001500140013, 0x18000100010017, 0x10001001a0019, 0x100010001001b, 0x1c000100010001, 0x20001f001e001d, 0x1002300220021, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x26002500010024, 0x2a002900280027, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2b000100010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2e002d0001002c, 0x310030002f0001, 0x35003400330032, 0x38000100370036, 0x3c003b003a0039, 0x40003f003e003d, 0x44004300420041, 0x48004700460045, 0x4c004b004a0049, 0x50004f004e004d, 0x51000100010001, 0x2c002c00530052, 0x2c002c002c002c, 0x54002c002c002c, 0x1000100010001, 0x2c002c002c0055, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c005600010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x58005700010001, 0x5a0059002c002c, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x5b000100010001, 0x1000100010001, 0x2c002c005d005c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x5e002c002c002c, 0x2c0060005f0001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c0061, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x62002c002c002c, 0x66006500640063, 0x6a006900680067, 0x2c006b00010001, 0x6c002c002c002c, 0x2c006f006e006d, 0x71002c002c0070, 0x2c002c00730072, 0x2c007600750074, 0x1007900780077, 0x7b007a00010001, 0x7e007d0001007c, 0x2c002c002c002c, 0x1000100010001, 0x1007f00010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x80000100010001, 0x1000100010081, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1008200010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x83000100010001, 0x2c008400010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c008500010001, 0x2c002c002c002c, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x86000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x87000100010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c0088002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0xffffffff00000000, 0x7fffffffffffffff, 0xffffdfff00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfcffffffffffffff, 0xfffffffbffffd7f0, 0xffffffffffffffff, 0xfffeffffffffffff, 0xfffffffffe7fffff, 0xfffffffffffee7ff, 0x1f87ffffff00ff, 0xffffffffefffffc0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffdfffffff, 0xffffffffffff3fff, 0xffffffffffffe7ff, 0x3ffffffffffff, 0xe7ffffffffffffff, 0x7fff3fffffffffff, 0xffff07ff4fffffff, 0xffffffffff007fff, 0xfffffffbffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf3c5fdfffff99fef, 0x7fffffcfb080799f, 0xd36dfdfffff987ee, 0x7fffc05e023987, 0xf3edfdfffffbbfee, 0xfe03ffcf00013bbf, 0xf3edfdfffff99fee, 0xffffcfb0e0399f, 0xc3ffc718d63dc7ec, 0x7ffffc000813dc7, 0xf3fffdfffffddfff, 0xff80ffcf27603ddf, 0xf3effdfffffddfff, 0xeffcf60603ddf, 0xfffffffffffddfff, 0xffffffcffff0fddf, 0x2ffbfffffc7fffee, 0x1cffc0ff5f847f, 0x87fffffffffffffe, 0xfffffff, 0x3fffffaffffff7d6, 0xf3ff7f5f, 0xffffffffffffffff, 0xfffe1ffffffffeff, 0xdffffffffeffffff, 0x7ffdfff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff20bf, 0xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff, 0x1fffffffe7ffffff, 0xffffffff03ffffff, 0x3f3fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1fffffff, 0x1ffffffffffffff, 0x7fffff803fffff, 0xddfff000fffff, 0xffffffffffffffff, 0x3ff03ff3fffffff, 0xffffffff03ffbfff, 0x1ffffffffffffff, 0xffff07ffffffffff, 0x3fffffffffffff, 0xfff0fff7fffffff, 0x1f3ffffffffff1, 0xffff0fffffffffff, 0xffffffffc7ff03ff, 0xffffffffcfffffff, 0x9fffffff7fffffff, 0xffff3fff03ff03ff, 0x7fff, 0xffffffffffffffff, 0x7fffffffffff1fff, 0xffffffffffffffff, 0xf00fffffffffffff, 0xf8ffffffffffffff, 0xffffffffffffe3ff, 0xe7ffffffffff01ff, 0x7ffffffffff00ff, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0xffdfffffffffffff, 0x7fdcffffefcfffdf, 0xffff80ffffff07ff, 0xfff30000ffffffff, 0xffffffff1fff7fff, 0x1ffffffff0001, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0fff, 0xffffffffffffffff, 0x7fffffffff, 0xffffffff000007ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffcfffffffffffff, 0xffffffffffbfffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfe0fffffffffffff, 0xffff20bfffffffff, 0x800180ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f, 0xffffffffffffffff, 0x3fffffff, 0xfffffffffbffffff, 0xfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0000003fffff, 0xffffffffffffffff, 0xfffffffffffffffe, 0xfffffffffe7fffff, 0xffffffffffffffff, 0xfffeffffffffffe0, 0xffffffffffffffff, 0xffffffffffff7fff, 0xffff800fffffffff, 0xffffffff7fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff1fff, 0xffffffffffff007f, 0xfffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffc000003eb07ff, 0x3ff1fffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffff03ffc03f, 0xffffffffffffffff, 0x1fffffff800fffff, 0xffffffffffffffff, 0x7fffffffc3ffbfff, 0x7fffffffffffff, 0xfffffffff3ff3fff, 0xffffffffffffffff, 0x7ffffff8000007, 0xffff7f7f007e7e7e, 0xffff0fffffffffff, 0xffffffffffffffff, 0x3ff3fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff000fffffffff, 0xffffffffffff87f, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7fffffe0f8007f, 0xffffffffffffffdb, 0xffffffffffffffff, 0xfffffffffff80007, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffcffff, 0xffff0000000080ff, 0xffffffff03ffffff, 0xffdf0f7ffff7ffff, 0xffffffffffffffff, 0x1fffffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0x7fffffffffffffff, 0x30007f7f1cfcfcfc, 0xb7ffff7fffffefff, 0x3fff3fff, 0xffffffffffffffff, 0x7ffffffffffffff, 0xff8fffffffffff87, 0xffffffffffffffff, 0x11fff7fff, 0x3fffffffffff0000, 0x0, 0x0, 0xffffffff1fffffff, 0xfffffff0001ffff, 0xffffe00fffffffff, 0x7ffffffffff07ff, 0xffffffffbfffffff, 0x3fff0f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03ff3fffffff, 0xfffffffff0fffff, 0xffff00ffffffffff, 0xf7ff800fffffffff, 0x1bfbfffbffb7f7ff, 0x0, 0x7fffffffffffff, 0xff003fffff, 0x7fdffffffffffbf, 0x0, 0x91bffffffffffd3f, 0xffffffffffbfffff, 0xff807fffffff, 0xf837ffff00000000, 0x83ffffff8fffffff, 0x0, 0xf0ffffffffffffff, 0xfffffffffffcffff, 0x873ffffffeeff06f, 0xffffffff01ff01ff, 0xffffffff, 0x7ff87fffffffff, 0xfe3fffffffffffff, 0xff07ffffff3fffff, 0xfe001e03ffff, 0x0, 0xffffffffffffffff, 0x1ff, 0x7ffffffffffff, 0xfc07ffffffffffff, 0x3ff00ffffffffff, 0x0, 0x0, 0x0, 0x0, 0x7fffffff00000000, 0x33bffffffffff, 0xe000000000000000, 0xffff00ffffffffff, 0xffff000003ffffff, 0xffff0000000003ff, 0x7fffff00000fff, 0xffffffffffffffff, 0x803ffffffffc3fff, 0xdfffffffffffffff, 0x3ff01ffffff0007, 0xffdfffffffffffff, 0x7fffffffff00ff, 0xffffffffffffffff, 0x1ffffeffffffff, 0xfffffffffffbffff, 0x3, 0xffff03ffbfffbd7f, 0x3ff07ffffffffff, 0xfbedfdfffff99fef, 0x1f1fcfe081399f, 0x0, 0x0, 0xffffffffffffffff, 0x3efffffff, 0xffffffffffffffff, 0x3ff00ff, 0x0, 0x0, 0xff3fffffffffffff, 0x3fffffff, 0xffffffffffffffff, 0x1fff03ff001f, 0x3ffffffffffffff, 0x3ff, 0xffff0fffe7ffffff, 0x7f, 0x0, 0x0, 0xfffffffffffffff, 0x0, 0xffffffff00000000, 0x8007ffffffffffff, 0xf9bfffffff6ff27f, 0x3ff007f, 0xfffffcff00000000, 0x1ffcffffff, 0xffffffffffffffff, 0xffffffffffff00ff, 0xffff0007ffffffff, 0x1ffffffffffffff, 0x3ff, 0x0, 0x0, 0x0, 0xff7ffffffffffdff, 0xffff1fffffff003f, 0x7ffefffffcffff, 0x0, 0xb47ffffffffffb7f, 0xfffffdbf03ff00ff, 0x3ff01fb7fff, 0x0, 0x0, 0x0, 0x0, 0x1ffffff00000000, 0xc7fffffffffdffff, 0x3ffffff, 0x1000000000000, 0x8003ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x0, 0xffffffffffffffff, 0x1f7fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffffffff0000, 0x7ffffffffffff, 0xffffffffffff, 0x3fffff, 0x0, 0x0, 0xffffffffffffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0xffffc3ff7fffffff, 0x7fffffffffffffff, 0x3f3fffffff03ff, 0xffffffffffffffff, 0xe0fffffbfbff003f, 0xffff, 0x0, 0x0, 0xffffffffffffffff, 0x7ffffff, 0x0, 0xffffffffffffffff, 0xffffffffffff87ff, 0xffff80ff, 0x3001f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef000000000000, 0x40007ffffffff, 0xffff00f000270000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffff, 0xffffffffffffffff, 0x1fff07ffffffffff, 0xf3ff01ff, 0x0, 0xffff3fffffffffff, 0xffffffffffff007f, 0xffffffffffffffff, 0xf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffffff, 0xfffffe7fffffffff, 0xf807ffffffffffff, 0xffffffffffffffff, 0x7ffffffffff, 0xffffffffffffffff, 0x3f, 0x0, 0xfffff000fffff, 0xffffffffffffffff, 0x1ffffff007fffff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffcfff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffef8000fff, 0x0, 0x7e07fffffff, 0x0, 0x0, 0x0, 0xffff07dbf9ffff7f, 0x3fffffffffff, 0x8000, 0x0, 0x3fff1fffffffffff, 0xc3ff, 0x0, 0x0, 0x0, 0x0, 0x7fffffff0000, 0x83ffffffffffffff, 0x0, 0x0, 0x0, 0x3ffffffffff0000, 0x0, 0x0, 0x0, 0x7fff6f7f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fff9f, 0xffffffffffffffff, 0xc3ff0fff, 0x0, 0x0, 0x0, 0xfffe000000000000, 0x1fffffffffffff, 0x0, 0x3ffffffffffffffe, 0x0, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x3000000000000, 0xffff0fffffffffff, 0xffffffffffffffff, 0xfffe7fff000fffff, 0x3ffffffffefffe, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffff, 0xffffffc000000000, 0xfffffffffff0007, 0x3f000301ff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff1ffff0ffffff, 0xffffffffffffffff, 0xf87fffffffffffff, 0xffffffffffffffff, 0x10fff03ffffff, 0xffffffffffff0fff, 0xffffffff03ff00ff, 0x33fffffff00ff, 0x0, 0xffffffffffffffff, 0x1fff3fff000fffff, 0xbfffffffffff01ff, 0x1ff01ff0fffc03f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffff7ffff, 0x3ff0000000007ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff, 0x3ffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff3fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0003ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0001ffffffff, 0xffffffffffffffff, 0x3fffffff, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff07ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0]); +//4824 bytes +enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)([ 0x0, 0x10, 0x4c, 0x14c], [ 0x80, 0xf0, 0x400, 0x43c0], [ 0x706050403020100, 0xb0b0b0a09080101, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xd0101010b0b0b0c, 0xd010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xd000d000d000c, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000f000e000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d0010000d, 0xd000d000d000d, 0x120011000d000d, 0x16001500140013, 0x1a001900180017, 0x1e001d001c001b, 0x1d001d001f000d, 0x1d001d0020001d, 0x1d001d001d001d, 0x220021001d001d, 0xd000d000d000d, 0x24000d0023000d, 0x1d001d001d001d, 0x25001d001d001d, 0x27001d001d0026, 0x28001d001d001d, 0x2c002b002a0029, 0x30002f002e002d, 0x1d003300320031, 0xd000d000d000d, 0xd000d000d000d, 0xd000d0034000d, 0xd00360035000d, 0x37000d000d000d, 0xd000d000d000d, 0x390038000d000d, 0x1d003a001d001d, 0xd000d000d000d, 0xd000d000d003b, 0x1d001d001d003c, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d003d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0x3e000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0x3e000d000d000d, 0x0, 0x0, 0x0, 0x200010000, 0x0, 0x6000500040003, 0x0, 0xa000900080007, 0xd000c000b, 0xf000e00000000, 0x13001200110010, 0x17001600150014, 0x1b001a00190018, 0x1f001e001d001c, 0x23002200210020, 0x26002500240000, 0x27000000000000, 0x0, 0x2a002900280000, 0x2e002d002c002b, 0x0, 0x0, 0x30002f00000000, 0x33000000320031, 0x3500340030002d, 0x39003800370036, 0x3d003c003b003a, 0x3f0000003e0000, 0x43004200410040, 0x0, 0x0, 0x47004600450044, 0x4a004900480000, 0x4b00000000, 0x0, 0x0, 0x4d004c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f004e0000, 0x50000000000000, 0x54005300520051, 0x57005600550000, 0x58000000000000, 0x400590000, 0x5c005b0000005a, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f005e00000000, 0x0, 0x61000000000060, 0x62000000000000, 0x64000000610063, 0x66000000650000, 0x69000000680067, 0x6b00000038006a, 0x0, 0x0, 0x0, 0x6d006c00000000, 0x0, 0x0, 0x6f0000006e0000, 0x72000000710070, 0x0, 0x74007300000000, 0x7600000075002d, 0x78007700000059, 0x7b0000007a0079, 0x7e007d0000007c, 0x80002f007f007f, 0x84008300820081, 0x86008500000000, 0x7f008900880087, 0x0, 0x7f008b008a0067, 0x8e008d004f008c, 0x730090007f008f, 0x94009300920091, 0x7f009700960095, 0x9a009900980000, 0x7f007f007f009b, 0x9e009d009c007f, 0xa100a0009f0087, 0xa3000000a20000, 0xa5000000a40046, 0xa900a800a700a6, 0x7f007f00ab00aa, 0xad000000ac0000, 0x5500ae007f007f, 0xb100b000af0000, 0x7f007f00b300b2, 0xb600b5007f00b4, 0xba00b900b800b7, 0x3000bc00bb0000, 0x7f007f007f00b1, 0x7f00bf00be00bd, 0x7f00c200c100c0, 0xc3007f007f007f, 0xc600c5006f00c4, 0x0, 0x0, 0x0, 0x7f006f00000000, 0xc70000, 0x7f007f00c80000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x9900c9007f007f, 0x7f007f00ca0000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x0, 0x0, 0x7f007f00b30000, 0x7f007f007f007f, 0x0, 0x0, 0xcc007700cb0030, 0x7f00ce00cd0000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f00cf0000007f, 0xd200d100d00000, 0x0, 0x0, 0x0, 0x61000000000000, 0xca000000000000, 0x7f007f007f0098, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0xd3007f007f007f, 0x0, 0xd500d4, 0xb4000000000000, 0x7f007f007f007f, 0x7f00d700d60000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0xc80000005f006e, 0x35000000000000, 0xd90000000000d8, 0xdb007f00da0000, 0x7f007f00dc0000, 0xdf00de00dd0000, 0xe100e0, 0xe200000000, 0xe3000000000000, 0x0, 0x0, 0x7f00e400000000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f00e5, 0x7f00e800e700e6, 0x7f007f00ea00e9, 0xec00eb007f007f, 0x7f007f007f007f, 0xed007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0xee007f007f007f, 0xef000000000000, 0x7f007f00f00000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f00f200f1007f, 0x7f007f007f00f3, 0xf700f600f500f4, 0x7f007f007f007f, 0xf900f800000038, 0xfa00e700000000, 0x7f007f00fc00fb, 0x0, 0x0, 0x0, 0xfd000000000000, 0xff000000fe0000, 0x7f01010100004b, 0x0, 0x104010301020000, 0x106010500000000, 0x0, 0x0, 0x93000000000000, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x107, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10800000000, 0x0, 0x0, 0x0, 0x0, 0x109000000000000, 0x0, 0x0, 0x7f007f00550000, 0x7f007f007f007f, 0x0, 0x0, 0x7f007f007f0055, 0x7f007f007f007f, 0x0, 0x0, 0x0, 0x10a0000, 0x0, 0x0, 0x0, 0x7f010b00000000, 0x7f007f0000010c, 0x10b000000000000, 0x7f007f007f007f, 0x7f007f007f007f, 0x0, 0x0, 0x0, 0x10d000000000000, 0x0, 0x0, 0x0, 0x10d000000000000, 0x0, 0x300000000000000, 0x40000280f, 0x1000000000000, 0x1800000, 0x11800, 0xffe078000000ff00, 0x4000, 0x1800, 0xfffc000000000000, 0x1800000000000000, 0x8000c00000000000, 0xf800b0000000, 0xfc8000, 0xc3a020000066010, 0x800000304f7f8660, 0x2c92020000067811, 0xff80003fa1fdc678, 0xc12020000044011, 0x1fc0030fffec440, 0xc12020000066011, 0xff0000304f1fc660, 0x3c0038e729c23813, 0xf800003fff7ec238, 0xc00020000022000, 0x7f0030d89fc220, 0xc10020000022000, 0xfff100309f9fc220, 0x22000, 0x30000f0220, 0xd004000003800011, 0xffe3003f00a07b80, 0x7800000000000001, 0xfffffffff0000000, 0xc000005000000829, 0xffffffff0c0080a0, 0x1e00000000100, 0x2000000001000000, 0xfffffffff8002000, 0xdf40, 0xc280c200, 0x80c200000000c200, 0x8000c2, 0xc20000, 0xe000000018000000, 0xfc000000, 0xc0c0000000000000, 0xe0000000, 0xfe00000000000000, 0xff8000007fc00000, 0xfff22000fff00000, 0xfc00fc00c0000000, 0xf80000000000, 0xffc0000000000000, 0xf000f00080000000, 0xffe0c0000000000e, 0xf00000000000, 0x3800fc00, 0x30000000, 0x6000000080000000, 0xc000fc00fc00, 0xffffffffffff8000, 0x800000000000e000, 0xff0000000000000, 0x700000000000000, 0x1c00, 0x180000000000fe00, 0xf80000000000ff00, 0xc0c00000, 0xc00000005500c0c0, 0x20000000000000, 0x8023000010300020, 0xc002000000000, 0xe0008000, 0xfffe00000000fffe, 0xf000, 0xffffff8000000000, 0xfffff800, 0x30000000000000, 0x400000, 0x1f0000000000000, 0xdf4000000000, 0x7ffe7f0000000000, 0x80808080ff800000, 0x80808080, 0xffffffffc0000000, 0x4000000, 0xfff0000000000000, 0xffffffc00000, 0x1, 0x100000000001f, 0x8000, 0x7ff000000000, 0x80000000, 0xe000, 0xff80, 0xfffff00000000000, 0xff00000000000000, 0x3fffffc14f800, 0xfc00e00000000000, 0xfc003fc0, 0xe00000007ff00000, 0x800000003c004000, 0xff80000000000000, 0xc00c000, 0xff80000007fffff8, 0x8080ff818181, 0xfc00c00000000000, 0xfff000000000, 0xf000000000000780, 0xc00000000000, 0xfffffffffc000000, 0xa08000001f07ff80, 0x24, 0x7fff8, 0x30000, 0xffffffff7f00, 0x20f08000080000, 0x6000000000000000, 0x8000000000000000, 0xc1ff8080e3030303, 0x4800008000001000, 0xffffffffc000c000, 0xf800000000000000, 0x70000000000078, 0xfffffffee0008000, 0xc00000000000ffff, 0xffffffffffffffff, 0xf0000000fffe0000, 0x1ff000000000, 0xf80000000000f800, 0x40000000, 0xffffffffffc000f0, 0xfc00c0000000, 0xf000000000f00000, 0xff0000000000, 0x8007ff000000000, 0xe404000400480800, 0xffffff00ffc00000, 0xf802000000000040, 0x6e400000000002c0, 0xffff007f80000000, 0x7c80000ffffffff, 0x7c00000070000000, 0xf00000000000000, 0x78c0000001100f90, 0xfe00fe00, 0xffffffff00000000, 0xff80078000000000, 0x1c0000000000000, 0xf8000000c00000, 0xffff01ffe1fc0000, 0xfffffffffffffe00, 0xfff8000000000000, 0x3f8000000000000, 0xfc00ff0000000000, 0x80000000ffffffff, 0xfffcc40000000000, 0x1fffffffffffffff, 0xfffffc000000, 0xfffffffffc00, 0xff800000fffff000, 0x7fc000000003c000, 0xfc00fe000000dff8, 0xff8000000000ff00, 0xffe0000100000000, 0x40000, 0xfffffffffffffffc, 0xfc0040004280, 0xfc00f80000000000, 0x412020000066010, 0xffe0e0301f7ec660, 0xfffffffc10000000, 0xfffffffffc00ff00, 0xc0000000000000, 0xffffe000fc00ffe0, 0xfc00000000000000, 0xfffffffffffffc00, 0xf00018000000, 0xffffffffffffff80, 0xf000000000000000, 0xffffffff, 0x7ff8000000000000, 0x640000000900d80, 0xfffffffffc00ff80, 0x300ffffffff, 0xffffffe003000000, 0xff00, 0xfff800000000, 0x80000000000200, 0xe0000000ffc0, 0xff80010000030000, 0x4b80000000000480, 0x240fc00ff00, 0xfffffc00fe048000, 0xfe000000ffffffff, 0x3800000000020000, 0xfffeffffffffffff, 0x7ffc000000000000, 0xffe0800000000000, 0xfffffffffffffff0, 0xffff, 0xffffffffffc00000, 0x3c0080000000, 0xffc0c0000000fc00, 0x1f0000040400ffc0, 0xffffffffffff0000, 0xfffffffff8000000, 0x7800, 0xffffffff00007f00, 0xfffcffe0ffffffff, 0x9010ffffffffffff, 0xfffbfff800000000, 0xff0fffd8ffff, 0xe000f80000000000, 0xfffffff00c00fe00, 0x18000000000, 0xfffff80000000000, 0xffffffffffffffc0, 0xfff00000fff00000, 0xfe000000ff800000, 0x200000, 0x1400219b20000000, 0x10, 0x8400000020201840, 0x203a0, 0xc000000000, 0x3000, 0xffff000107fff000, 0xfffff81f80000000, 0xf82406000080, 0xffffc00000000000, 0xffffffffffff7fff, 0xc000e00000000000, 0xffffffffffff3c00, 0xffff80000000ffff, 0x7c00000000000000, 0xfc0000000000ffff, 0x80009080ffffffff, 0xffffffffff800060, 0xffffffff3c00f000, 0x1ffffffffffff, 0xffe0000000000000, 0xc000000000000001, 0xf508016900000010, 0xa10808695569157b, 0xf0000411f0000400, 0xfffcffffffffffff, 0x18000fff00000, 0xffc0000000010001, 0x3fffffffff, 0xf00000000000fff8, 0xffffffc0fffcfe00, 0xe000e0000f000000, 0x780000000000000, 0xfffef000fc000000, 0xfc00ff00, 0xfffcc0000000ff00, 0xe000c000fff00000, 0x400000000000fe00, 0xfe00fe00f0003fc0, 0x80000, 0xfc00fffffffff800, 0xc0000000, 0xfffc00000000, 0xfffe00000000, 0xf800, 0xffff000000000000, 0xfffffffd, 0xc000000000000000, 0xc000000000000000]); enum MAX_SIMPLE_LOWER = 1433; enum MAX_SIMPLE_UPPER = 1450; enum MAX_SIMPLE_TITLE = 1454; diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index e4a94bfbd9e..fc7d7d85aa2 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -31,10 +31,10 @@ module std.unicode_table_generator; // this shouldn't be in std package, but stuff is package'd as that in std.uni. /// Directory in which unicode files are downloaded -enum unicodeDir = "ucd-15-0-0/"; +enum unicodeDir = "ucd-15-1-0/"; /// Url from which unicode files are downloaded -enum unicodeBaseUrl = "https://www.unicode.org/Public/15.0.0/ucd/"; +enum unicodeBaseUrl = "https://www.unicode.org/Public/15.1.0/ucd/"; /// Where to put generated files enum outputDir = "../std/internal/"; From 89d36e122815b1c114330906272df3da83aee0b4 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 17:49:13 +0100 Subject: [PATCH 151/327] std.uni: use hexstrings for charset strings --- std/internal/unicode_tables.d | 1154 +++++++++++++++---------------- tools/unicode_table_generator.d | 2 +- 2 files changed, 578 insertions(+), 578 deletions(-) diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index 4db2c5b7716..fa70e3bb6bc 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -1629,87 +1629,87 @@ private alias _U = immutable(UnicodeProperty); @property static _U[] tab() pure { return _tab; } static immutable: private alias _T = ubyte[]; -_T ID_Start = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x80, 0x81, 0x5, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x47, 0x1b, 0x4, 0x4, 0x2d, 0x2b, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0xf, 0x2, 0x7, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x16, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x17, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0x3a, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0xf, 0x10, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x2, 0xc, 0x7, 0x3a, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x1, 0x1, 0x15, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x11, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x23, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x29, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x52, 0x1, 0x5d, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x26, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x4, 0x5, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x10, 0x1f, 0x2, 0x50, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x1c, 0x1, 0x10, 0x5, 0x1, 0xa, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x17, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0xb, 0x7, 0x3, 0xc, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x73, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x74, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x5, 0x1, 0x42, 0xd, 0x40, 0x2, 0x1, 0x1, 0x1c, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x97, 0x66, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x7, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T Cs = [0xa0, 0xd8, 0x0, 0x88, 0x0]; -_T Default_Ignorable_Code_Point = [0x80, 0xad, 0x1, 0x82, 0xa1, 0x1, 0x82, 0xcc, 0x1, 0x8b, 0x42, 0x2, 0x86, 0x53, 0x2, 0x55, 0x5, 0x87, 0xfb, 0x5, 0x1a, 0x5, 0x31, 0x10, 0x90, 0xf4, 0x1, 0xa0, 0xcc, 0x9b, 0x10, 0x80, 0xef, 0x1, 0x80, 0xa0, 0x1, 0x4f, 0x9, 0xa0, 0xbc, 0xa7, 0x4, 0x94, 0xcf, 0x8, 0xac, 0x2e, 0x85, 0x90, 0x0]; -_T Pd = [0x2d, 0x1, 0x85, 0x5c, 0x1, 0x33, 0x1, 0x8e, 0x41, 0x1, 0x84, 0x5, 0x1, 0x88, 0x9, 0x6, 0x8e, 0x1, 0x1, 0x2, 0x1, 0x1f, 0x2, 0x4, 0x1, 0x1c, 0x1, 0x81, 0xbe, 0x1, 0x13, 0x1, 0x6f, 0x1, 0xa0, 0xcd, 0x90, 0x2, 0x25, 0x1, 0xa, 0x1, 0x80, 0xa9, 0x1, 0x8f, 0x9f, 0x1]; -_T Unified_Ideograph = [0xa0, 0x34, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x5a, 0xe, 0x2, 0x1, 0x1, 0x1, 0x2, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x3, 0xa1, 0x5, 0xd6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x91, 0xa2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T IDS_Binary_Operator = [0xa0, 0x2f, 0xf0, 0x2, 0x2, 0xa, 0x81, 0xf1, 0x1]; -_T Sm = [0x2b, 0x1, 0x10, 0x3, 0x3d, 0x1, 0x1, 0x1, 0x2d, 0x1, 0x4, 0x1, 0x25, 0x1, 0x1f, 0x1, 0x82, 0xfe, 0x1, 0x82, 0xf, 0x3, 0x9a, 0x3b, 0x1, 0xd, 0x1, 0x27, 0x3, 0xd, 0x3, 0x80, 0x8b, 0x1, 0x27, 0x5, 0x6, 0x1, 0x44, 0x5, 0x5, 0x2, 0x4, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1f, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1f, 0x81, 0xc, 0x20, 0x2, 0x5a, 0x1, 0x1e, 0x19, 0x28, 0x6, 0x81, 0xd5, 0x1, 0x9, 0x1, 0x36, 0x8, 0x6f, 0x1, 0x81, 0x50, 0x5, 0x2, 0x1f, 0xa, 0x10, 0x81, 0x0, 0x80, 0x83, 0x16, 0x3f, 0x4, 0x20, 0x2, 0x81, 0x2, 0x30, 0x15, 0x2, 0x6, 0xa0, 0xcf, 0xdc, 0x1, 0x83, 0x38, 0x1, 0x1, 0x3, 0x80, 0xa4, 0x1, 0x10, 0x3, 0x3d, 0x1, 0x1, 0x1, 0x80, 0x83, 0x1, 0x6, 0x4, 0xa0, 0xd6, 0xd4, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x97, 0x2c, 0x2]; -_T Pi = [0x80, 0xab, 0x1, 0x9f, 0x6c, 0x1, 0x2, 0x2, 0x2, 0x1, 0x19, 0x1, 0x8d, 0xc8, 0x1, 0x1, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x3, 0x1]; -_T Other_Grapheme_Extend = [0x89, 0xbe, 0x1, 0x18, 0x1, 0x81, 0x66, 0x1, 0x18, 0x1, 0x66, 0x1, 0x18, 0x1, 0x80, 0xea, 0x1, 0x12, 0x2, 0x67, 0x1, 0x18, 0x1, 0x77, 0x1, 0xf, 0x1, 0x8d, 0x55, 0x1, 0x84, 0xd6, 0x1, 0x90, 0x21, 0x2, 0xa0, 0xcf, 0x6e, 0x2, 0x93, 0x9e, 0x1, 0x18, 0x1, 0x81, 0x58, 0x1, 0xc, 0x1, 0x80, 0xf1, 0x1, 0x83, 0x80, 0x1, 0xa0, 0xb8, 0x34, 0x1, 0x8, 0x5, 0xac, 0x2e, 0xad, 0x60]; -_T Grapheme_Extend = [0x83, 0x0, 0x70, 0x81, 0x13, 0x7, 0x81, 0x7, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x48, 0xb, 0x30, 0x15, 0x10, 0x1, 0x65, 0x7, 0x2, 0x6, 0x2, 0x2, 0x1, 0x4, 0x23, 0x1, 0x1e, 0x1b, 0x5b, 0xb, 0x3a, 0x9, 0x9, 0x1, 0x18, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x5, 0x2b, 0x3, 0x3c, 0x8, 0x2a, 0x18, 0x1, 0x20, 0x37, 0x1, 0x1, 0x1, 0x4, 0x8, 0x4, 0x1, 0x3, 0x7, 0xa, 0x2, 0x1d, 0x1, 0x3a, 0x1, 0x1, 0x1, 0x2, 0x4, 0x8, 0x1, 0x9, 0x1, 0xa, 0x2, 0x1a, 0x1, 0x2, 0x2, 0x39, 0x1, 0x4, 0x2, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x1e, 0x2, 0x3, 0x1, 0xb, 0x2, 0x39, 0x1, 0x4, 0x5, 0x1, 0x2, 0x4, 0x1, 0x14, 0x2, 0x16, 0x6, 0x1, 0x1, 0x3a, 0x1, 0x1, 0x2, 0x1, 0x4, 0x8, 0x1, 0x7, 0x3, 0xa, 0x2, 0x1e, 0x1, 0x3b, 0x1, 0x1, 0x1, 0xc, 0x1, 0x9, 0x1, 0x28, 0x1, 0x3, 0x1, 0x37, 0x1, 0x1, 0x3, 0x5, 0x3, 0x1, 0x4, 0x7, 0x2, 0xb, 0x2, 0x1d, 0x1, 0x3a, 0x1, 0x2, 0x1, 0x2, 0x1, 0x3, 0x1, 0x5, 0x2, 0x7, 0x2, 0xb, 0x2, 0x1c, 0x2, 0x39, 0x2, 0x1, 0x1, 0x2, 0x4, 0x8, 0x1, 0x9, 0x1, 0xa, 0x2, 0x1d, 0x1, 0x48, 0x1, 0x4, 0x1, 0x2, 0x3, 0x1, 0x1, 0x8, 0x1, 0x51, 0x1, 0x2, 0x7, 0xc, 0x8, 0x62, 0x1, 0x2, 0x9, 0xb, 0x7, 0x49, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0x37, 0xe, 0x1, 0x5, 0x1, 0x2, 0x5, 0xb, 0x1, 0x24, 0x9, 0x1, 0x66, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x2, 0x19, 0x2, 0x4, 0x3, 0x10, 0x4, 0xd, 0x1, 0x2, 0x2, 0x6, 0x1, 0xf, 0x1, 0x82, 0xbf, 0x3, 0x83, 0xb2, 0x3, 0x1d, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x40, 0x2, 0x1, 0x7, 0x8, 0x1, 0x2, 0xb, 0x9, 0x1, 0x2d, 0x3, 0x1, 0x1, 0x75, 0x2, 0x22, 0x1, 0x76, 0x3, 0x4, 0x2, 0x9, 0x1, 0x6, 0x3, 0x80, 0xdb, 0x2, 0x2, 0x1, 0x3a, 0x1, 0x1, 0x7, 0x1, 0x1, 0x1, 0x1, 0x2, 0x8, 0x6, 0xa, 0x2, 0x1, 0x30, 0x1f, 0x31, 0x4, 0x30, 0x7, 0x1, 0x1, 0x5, 0x1, 0x28, 0x9, 0xc, 0x2, 0x20, 0x4, 0x2, 0x2, 0x1, 0x3, 0x38, 0x1, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x3a, 0x8, 0x2, 0x2, 0x80, 0x98, 0x3, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x80, 0xc6, 0x40, 0x82, 0xc, 0x1, 0x80, 0xc3, 0x21, 0x8b, 0xfe, 0x3, 0x80, 0x8d, 0x1, 0x60, 0x20, 0x82, 0x2a, 0x6, 0x69, 0x2, 0xa0, 0x75, 0xd4, 0x4, 0x1, 0xa, 0x20, 0x2, 0x50, 0x2, 0x81, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x19, 0x2, 0x5, 0x1, 0x80, 0x97, 0x2, 0x1a, 0x12, 0xd, 0x1, 0x26, 0x8, 0x19, 0xb, 0x2e, 0x3, 0x30, 0x1, 0x2, 0x4, 0x2, 0x2, 0x27, 0x1, 0x43, 0x6, 0x2, 0x2, 0x2, 0x2, 0xc, 0x1, 0x8, 0x1, 0x2f, 0x1, 0x33, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x2a, 0x2, 0x8, 0x1, 0x80, 0xee, 0x1, 0x2, 0x1, 0x4, 0x1, 0xa0, 0x4f, 0x30, 0x1, 0x82, 0xe1, 0x10, 0x10, 0x10, 0x81, 0x6e, 0x2, 0x82, 0x5d, 0x1, 0x80, 0xe2, 0x1, 0x80, 0x95, 0x5, 0x86, 0x86, 0x3, 0x1, 0x2, 0x5, 0x4, 0x28, 0x3, 0x4, 0x1, 0x80, 0xa5, 0x2, 0x82, 0x3d, 0x4, 0x81, 0x83, 0x2, 0x50, 0x3, 0x46, 0xb, 0x31, 0x4, 0x7b, 0x1, 0x36, 0xf, 0x29, 0x1, 0x2, 0x2, 0xa, 0x3, 0x31, 0x4, 0x2, 0x2, 0x7, 0x1, 0x3d, 0x3, 0x24, 0x5, 0x1, 0x8, 0x3e, 0x1, 0xc, 0x2, 0x34, 0x9, 0xa, 0x4, 0x2, 0x1, 0x5f, 0x3, 0x2, 0x1, 0x1, 0x2, 0x6, 0x1, 0x2, 0x1, 0x80, 0x9d, 0x1, 0x3, 0x8, 0x15, 0x2, 0x39, 0x2, 0x1, 0x1, 0x1, 0x1, 0x16, 0x1, 0xe, 0x7, 0x3, 0x5, 0x80, 0xc3, 0x8, 0x2, 0x3, 0x1, 0x1, 0x17, 0x1, 0x51, 0x1, 0x2, 0x6, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x2, 0x80, 0xeb, 0x1, 0x2, 0x4, 0x6, 0x2, 0x1, 0x2, 0x1b, 0x2, 0x55, 0x8, 0x2, 0x1, 0x1, 0x2, 0x6a, 0x1, 0x1, 0x1, 0x2, 0x6, 0x1, 0x1, 0x65, 0x3, 0x2, 0x4, 0x1, 0x5, 0x81, 0x3, 0x9, 0x1, 0x2, 0x80, 0xf5, 0x1, 0xa, 0x2, 0x1, 0x1, 0x4, 0x1, 0x80, 0x90, 0x4, 0x2, 0x2, 0x4, 0x1, 0x20, 0xa, 0x28, 0x6, 0x2, 0x4, 0x8, 0x1, 0x9, 0x6, 0x2, 0x3, 0x2e, 0xd, 0x1, 0x2, 0x81, 0x96, 0x7, 0x1, 0x6, 0x1, 0x1, 0x52, 0x16, 0x2, 0x7, 0x1, 0x2, 0x1, 0x2, 0x7a, 0x6, 0x3, 0x1, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1, 0x48, 0x2, 0x3, 0x1, 0x1, 0x1, 0x81, 0x5b, 0x2, 0xb, 0x2, 0x34, 0x5, 0x5, 0x1, 0x1, 0x1, 0x94, 0xfd, 0x1, 0x6, 0xf, 0xa0, 0x36, 0x9a, 0x5, 0x3b, 0x7, 0x84, 0x18, 0x1, 0x3f, 0x4, 0x51, 0x1, 0xa0, 0x4c, 0xb8, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x1e, 0x1, 0x1, 0x3, 0x4, 0x5, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x87, 0xbb, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x85, 0x50, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x64, 0x1, 0x80, 0xa0, 0x7, 0x81, 0x77, 0x1, 0x3d, 0x4, 0x81, 0xfc, 0x4, 0x83, 0xe0, 0x7, 0x6d, 0x7, 0xac, 0x16, 0xd5, 0x60, 0x80, 0x80, 0x80, 0xf0]; -_T Other_ID_Start = [0x98, 0x85, 0x2, 0x88, 0x91, 0x1, 0x15, 0x1, 0x8f, 0x6c, 0x2]; -_T Pattern_Syntax = [0x21, 0xf, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x4, 0x22, 0x7, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x2, 0x4, 0x1, 0x4, 0x1, 0x3, 0x1, 0x17, 0x1, 0x1f, 0x1, 0x9f, 0x18, 0x18, 0x8, 0xf, 0x2, 0x13, 0x1, 0xa, 0x81, 0x31, 0x82, 0xd0, 0x80, 0xa0, 0x82, 0x76, 0x1e, 0x84, 0x6c, 0x82, 0x0, 0x80, 0x80, 0x81, 0x81, 0x3, 0x4, 0x19, 0xf, 0x1, 0xa0, 0xcd, 0xd, 0x2, 0x81, 0x5, 0x2]; -_T Lu = [0x41, 0x1a, 0x65, 0x17, 0x1, 0x7, 0x21, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0x2, 0x4, 0x1, 0x2, 0x1, 0x3, 0x3, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x21, 0x1, 0x1, 0x1, 0x3, 0x1, 0x8, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x1, 0x11, 0x1, 0x9, 0x23, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x2, 0x1, 0x1, 0x2, 0x2, 0x33, 0x30, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x26, 0x8b, 0x49, 0x26, 0x1, 0x1, 0x5, 0x1, 0x82, 0xd2, 0x56, 0x88, 0x9a, 0x2b, 0x2, 0x3, 0x81, 0x40, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x8, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0x6, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x8, 0x48, 0x4, 0xc, 0x4, 0xc, 0x4, 0xc, 0x5, 0xb, 0x4, 0x81, 0x6, 0x1, 0x4, 0x1, 0x3, 0x3, 0x2, 0x3, 0x2, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x4, 0xa, 0x2, 0x5, 0x1, 0x3d, 0x1, 0x8a, 0x7c, 0x30, 0x30, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x2, 0x1, 0x8, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x1, 0x1, 0x1, 0x4, 0x1, 0xa0, 0x79, 0x4d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x87, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x6, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa0, 0x57, 0x2b, 0x1a, 0x84, 0xc5, 0x28, 0x80, 0x88, 0x24, 0x80, 0x9c, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x86, 0xea, 0x33, 0x8b, 0xed, 0x20, 0xa0, 0x55, 0x80, 0x20, 0xa0, 0x65, 0xa0, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0x8, 0x1a, 0x1a, 0x1a, 0x2, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1b, 0x2, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1b, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1e, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x1, 0x91, 0x35, 0x22]; -_T Case_Ignorable = [0x27, 0x1, 0x6, 0x1, 0xb, 0x1, 0x23, 0x1, 0x1, 0x1, 0x47, 0x1, 0x4, 0x1, 0x1, 0x1, 0x4, 0x1, 0x2, 0x2, 0x81, 0xf7, 0x80, 0xc0, 0x4, 0x2, 0x4, 0x1, 0x9, 0x2, 0x1, 0x1, 0x80, 0xfb, 0x7, 0x80, 0xcf, 0x1, 0x5, 0x1, 0x31, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x2c, 0x1, 0xb, 0x6, 0xa, 0xb, 0x1, 0x1, 0x23, 0x1, 0xa, 0x15, 0x10, 0x1, 0x65, 0x8, 0x1, 0xa, 0x1, 0x4, 0x21, 0x1, 0x1, 0x1, 0x1e, 0x1b, 0x5b, 0xb, 0x3a, 0xb, 0x4, 0x1, 0x2, 0x1, 0x18, 0x18, 0x2b, 0x3, 0x2c, 0x1, 0x7, 0x2, 0x6, 0x8, 0x29, 0x3a, 0x37, 0x1, 0x1, 0x1, 0x4, 0x8, 0x4, 0x1, 0x3, 0x7, 0xa, 0x2, 0xd, 0x1, 0xf, 0x1, 0x3a, 0x1, 0x4, 0x4, 0x8, 0x1, 0x14, 0x2, 0x1a, 0x1, 0x2, 0x2, 0x39, 0x1, 0x4, 0x2, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x1e, 0x2, 0x3, 0x1, 0xb, 0x2, 0x39, 0x1, 0x4, 0x5, 0x1, 0x2, 0x4, 0x1, 0x14, 0x2, 0x16, 0x6, 0x1, 0x1, 0x3a, 0x1, 0x2, 0x1, 0x1, 0x4, 0x8, 0x1, 0x7, 0x2, 0xb, 0x2, 0x1e, 0x1, 0x3d, 0x1, 0xc, 0x1, 0x32, 0x1, 0x3, 0x1, 0x37, 0x1, 0x1, 0x3, 0x5, 0x3, 0x1, 0x4, 0x7, 0x2, 0xb, 0x2, 0x1d, 0x1, 0x3a, 0x1, 0x2, 0x1, 0x6, 0x1, 0x5, 0x2, 0x14, 0x2, 0x1c, 0x2, 0x39, 0x2, 0x4, 0x4, 0x8, 0x1, 0x14, 0x2, 0x1d, 0x1, 0x48, 0x1, 0x7, 0x3, 0x1, 0x1, 0x5a, 0x1, 0x2, 0x7, 0xb, 0x9, 0x62, 0x1, 0x2, 0x9, 0x9, 0x1, 0x1, 0x7, 0x49, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0x37, 0xe, 0x1, 0x5, 0x1, 0x2, 0x5, 0xb, 0x1, 0x24, 0x9, 0x1, 0x66, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x2, 0x19, 0x2, 0x4, 0x3, 0x10, 0x4, 0xd, 0x1, 0x2, 0x2, 0x6, 0x1, 0xf, 0x1, 0x5e, 0x1, 0x82, 0x60, 0x3, 0x83, 0xb2, 0x3, 0x1d, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x40, 0x2, 0x1, 0x7, 0x8, 0x1, 0x2, 0xb, 0x3, 0x1, 0x5, 0x1, 0x2d, 0x5, 0x33, 0x1, 0x41, 0x2, 0x22, 0x1, 0x76, 0x3, 0x4, 0x2, 0x9, 0x1, 0x6, 0x3, 0x80, 0xdb, 0x2, 0x2, 0x1, 0x3a, 0x1, 0x1, 0x7, 0x1, 0x1, 0x1, 0x1, 0x2, 0x8, 0x6, 0xa, 0x2, 0x1, 0x27, 0x1, 0x8, 0x1f, 0x31, 0x4, 0x30, 0x1, 0x1, 0x5, 0x1, 0x1, 0x5, 0x1, 0x28, 0x9, 0xc, 0x2, 0x20, 0x4, 0x2, 0x2, 0x1, 0x3, 0x38, 0x1, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x3a, 0x8, 0x2, 0x2, 0x40, 0x6, 0x52, 0x3, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x32, 0x3f, 0xd, 0x1, 0x22, 0x65, 0x81, 0xbd, 0x1, 0x1, 0x3, 0xb, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x2, 0xc, 0x5, 0x8, 0x2, 0xa, 0x1, 0x2, 0x1, 0x2, 0x5, 0x31, 0x5, 0x1, 0xa, 0x1, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0x21, 0x8b, 0x8b, 0x2, 0x71, 0x3, 0x7d, 0x1, 0xf, 0x1, 0x60, 0x20, 0x2f, 0x1, 0x81, 0xd5, 0x1, 0x24, 0x4, 0x3, 0x5, 0x5, 0x1, 0x5d, 0x6, 0x5d, 0x3, 0xa0, 0x6f, 0x16, 0x1, 0x84, 0xe2, 0x6, 0x81, 0xe, 0x1, 0x62, 0x4, 0x1, 0xa, 0x1, 0x1, 0x1c, 0x4, 0x50, 0x2, 0xe, 0x22, 0x4e, 0x1, 0x17, 0x3, 0x67, 0x3, 0x3, 0x2, 0x8, 0x1, 0x3, 0x1, 0x4, 0x1, 0x19, 0x2, 0x5, 0x1, 0x80, 0x97, 0x2, 0x1a, 0x12, 0xd, 0x1, 0x26, 0x8, 0x19, 0xb, 0x2e, 0x3, 0x30, 0x1, 0x2, 0x4, 0x2, 0x2, 0x11, 0x1, 0x15, 0x2, 0x42, 0x6, 0x2, 0x2, 0x2, 0x2, 0xc, 0x1, 0x8, 0x1, 0x23, 0x1, 0xb, 0x1, 0x33, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1b, 0x1, 0xe, 0x2, 0x5, 0x2, 0x1, 0x1, 0x64, 0x5, 0x9, 0x3, 0x79, 0x1, 0x2, 0x1, 0x4, 0x1, 0xa0, 0x4f, 0x30, 0x1, 0x80, 0x93, 0x11, 0x82, 0x3d, 0x10, 0x3, 0x1, 0xc, 0x10, 0x22, 0x1, 0x2, 0x1, 0x80, 0xa9, 0x1, 0x7, 0x1, 0x6, 0x1, 0xb, 0x1, 0x23, 0x1, 0x1, 0x1, 0x2f, 0x1, 0x2d, 0x2, 0x43, 0x1, 0x15, 0x3, 0x82, 0x1, 0x1, 0x80, 0xe2, 0x1, 0x80, 0x95, 0x5, 0x84, 0x5, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x82, 0x46, 0x3, 0x1, 0x2, 0x5, 0x4, 0x28, 0x3, 0x4, 0x1, 0x80, 0xa5, 0x2, 0x82, 0x3d, 0x4, 0x81, 0x83, 0x2, 0x50, 0x3, 0x46, 0xb, 0x31, 0x4, 0x7b, 0x1, 0x36, 0xf, 0x29, 0x1, 0x2, 0x2, 0xa, 0x3, 0x31, 0x4, 0x2, 0x2, 0x2, 0x1, 0x4, 0x1, 0xa, 0x1, 0x32, 0x3, 0x24, 0x5, 0x1, 0x8, 0x3e, 0x1, 0xc, 0x2, 0x34, 0x9, 0xa, 0x4, 0x2, 0x1, 0x5f, 0x3, 0x2, 0x1, 0x1, 0x2, 0x6, 0x1, 0x2, 0x1, 0x80, 0x9d, 0x1, 0x3, 0x8, 0x15, 0x2, 0x39, 0x2, 0x3, 0x1, 0x25, 0x7, 0x3, 0x5, 0x80, 0xc3, 0x8, 0x2, 0x3, 0x1, 0x1, 0x17, 0x1, 0x54, 0x6, 0x1, 0x1, 0x4, 0x2, 0x1, 0x2, 0x80, 0xee, 0x4, 0x6, 0x2, 0x1, 0x2, 0x1b, 0x2, 0x55, 0x8, 0x2, 0x1, 0x1, 0x2, 0x6a, 0x1, 0x1, 0x1, 0x2, 0x6, 0x1, 0x1, 0x65, 0x3, 0x2, 0x4, 0x1, 0x5, 0x81, 0x3, 0x9, 0x1, 0x2, 0x81, 0x0, 0x2, 0x1, 0x1, 0x4, 0x1, 0x80, 0x90, 0x4, 0x2, 0x2, 0x4, 0x1, 0x20, 0xa, 0x28, 0x6, 0x2, 0x4, 0x8, 0x1, 0x9, 0x6, 0x2, 0x3, 0x2e, 0xd, 0x1, 0x2, 0x81, 0x96, 0x7, 0x1, 0x6, 0x1, 0x1, 0x52, 0x16, 0x2, 0x7, 0x1, 0x2, 0x1, 0x2, 0x7a, 0x6, 0x3, 0x1, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1, 0x48, 0x2, 0x3, 0x1, 0x1, 0x1, 0x81, 0x5b, 0x2, 0xb, 0x2, 0x34, 0x5, 0x5, 0x1, 0x1, 0x1, 0x94, 0xed, 0x11, 0x6, 0xf, 0xa0, 0x36, 0x9a, 0x5, 0x3b, 0x7, 0x9, 0x4, 0x84, 0xb, 0x1, 0x3f, 0x11, 0x40, 0x2, 0x1, 0x2, 0xa0, 0x40, 0xb, 0x4, 0x1, 0x7, 0x1, 0x2, 0x8c, 0x9e, 0x2, 0x1, 0x4, 0x92, 0x5c, 0x2e, 0x2, 0x17, 0x82, 0x20, 0x3, 0x9, 0x10, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x87, 0xbb, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x85, 0x50, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x80, 0xa0, 0xe, 0x81, 0x70, 0x1, 0x3d, 0x4, 0x81, 0xfb, 0x5, 0x83, 0xe0, 0x7, 0x6d, 0x8, 0x8a, 0xaf, 0x5, 0xac, 0xc, 0x1, 0x1, 0x1e, 0x60, 0x80, 0x80, 0x80, 0xf0]; -_T Lo = [0x80, 0xaa, 0x1, 0xf, 0x1, 0x81, 0x0, 0x1, 0x4, 0x4, 0x80, 0xd0, 0x1, 0x83, 0x3b, 0x1b, 0x4, 0x4, 0x2d, 0x20, 0x1, 0xa, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0x18, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x15, 0x16, 0x2a, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x29, 0x3b, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0x10, 0xf, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x2, 0xc, 0x6, 0x3b, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x17, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x71, 0x81, 0x49, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x71, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x6, 0x8, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x28, 0x1, 0x43, 0x23, 0x1, 0x35, 0x7, 0x5, 0x2, 0x22, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x80, 0xb0, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x1e, 0x71, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x84, 0x3a, 0x4, 0x8b, 0xf7, 0x38, 0x18, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x27, 0x1, 0x35, 0x1, 0x4, 0x56, 0x8, 0x1, 0x1, 0x5a, 0x4, 0x1, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x15, 0x1, 0x84, 0x77, 0x43, 0x28, 0x8, 0x81, 0xc, 0x4, 0x10, 0xa, 0x2, 0x42, 0x1, 0x31, 0x46, 0x80, 0xa9, 0x1, 0x67, 0x1, 0x3, 0x7, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x2d, 0x5, 0x2, 0x9, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x10, 0x1, 0x6, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x2, 0x3, 0xb, 0x7, 0x1, 0xe, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x80, 0x91, 0x23, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x43, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x69, 0xa, 0x1, 0x2d, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x81, 0x85, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x14, 0x1, 0x8, 0x6, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x80, 0x80, 0x4e, 0x62, 0x28, 0x8, 0x34, 0x80, 0x9c, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x80, 0x98, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x80, 0xb7, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x80, 0xd3, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x80, 0xe6, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x33, 0x15, 0x5, 0x13, 0x83, 0x70, 0x4b, 0x5, 0x1, 0x80, 0xaf, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xf7, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0xa0, 0x22, 0x70, 0x1, 0x81, 0xf5, 0x2d, 0x21, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1b, 0x82, 0xf5, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x85, 0x3b, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T Pc = [0x5f, 0x1, 0x9f, 0xdf, 0x2, 0x13, 0x1, 0xa0, 0xdd, 0xde, 0x2, 0x18, 0x3, 0x80, 0xef, 0x1]; -_T Bidi_Control = [0x86, 0x1c, 0x1, 0x99, 0xf1, 0x2, 0x1a, 0x5, 0x37, 0x4]; -_T Co = [0xa0, 0xe0, 0x0, 0x99, 0x0, 0xae, 0x7, 0x0, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe]; -_T Variation_Selector = [0x98, 0xb, 0x3, 0x1, 0x1, 0xa0, 0xe5, 0xf0, 0x10, 0xad, 0x2, 0xf0, 0x80, 0xf0]; -_T Soft_Dotted = [0x69, 0x2, 0x80, 0xc4, 0x1, 0x81, 0x19, 0x1, 0x1e, 0x1, 0x34, 0x1, 0x14, 0x1, 0x81, 0x40, 0x1, 0x62, 0x1, 0x1, 0x1, 0x99, 0x9, 0x1, 0x33, 0x1, 0xd, 0x1, 0x3, 0x1, 0x80, 0x84, 0x1, 0x80, 0x9d, 0x1, 0x81, 0xa5, 0x1, 0x80, 0xd6, 0x2, 0x8b, 0x32, 0x1, 0xa1, 0xa7, 0xa5, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x32, 0x2, 0x88, 0x86, 0x1, 0x81, 0x31, 0x2, 0x1a, 0x1]; -_T Noncharacter_Code_Point = [0xa0, 0xfd, 0xd0, 0x20, 0x82, 0xe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe]; -_T Logical_Order_Exception = [0x8e, 0x40, 0x5, 0x7b, 0x5, 0x8a, 0xf0, 0x3, 0x2, 0x1, 0xa0, 0x90, 0xfa, 0x2, 0x2, 0x1, 0x1, 0x2]; -_T Cased = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x80, 0xc3, 0x1, 0x4, 0x4, 0x80, 0xd0, 0x1, 0x24, 0x7, 0x2, 0x1e, 0x5, 0x60, 0x1, 0x2a, 0x4, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x9, 0x29, 0x8b, 0x17, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x4, 0x82, 0xa0, 0x56, 0x2, 0x6, 0x88, 0x82, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x40, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x6, 0x4, 0x1, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x20, 0x3, 0x2, 0x83, 0x31, 0x34, 0x87, 0x16, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0xa0, 0x79, 0x12, 0x2e, 0x12, 0x1e, 0x80, 0x84, 0x66, 0x3, 0x4, 0x1, 0x3b, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x5, 0x1, 0x3, 0x83, 0x35, 0x2b, 0x1, 0xe, 0x6, 0x50, 0xa0, 0x4f, 0x40, 0x7, 0xc, 0x5, 0x84, 0x9, 0x1a, 0x6, 0x1a, 0x84, 0xa5, 0x50, 0x60, 0x24, 0x4, 0x24, 0x74, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x81, 0xc3, 0x1, 0x2, 0x3, 0x1, 0x2a, 0x1, 0x9, 0x84, 0xc5, 0x33, 0xd, 0x33, 0x8b, 0xad, 0x40, 0xa0, 0x55, 0x60, 0x40, 0xa0, 0x65, 0x80, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0xa, 0x1, 0x14, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x88, 0x92, 0x44, 0x87, 0xec, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; -_T ID_Compat_Math_Continue = [0x80, 0xb2, 0x2, 0x5, 0x1, 0x9f, 0xb6, 0x1, 0x3, 0xb, 0x1, 0xf, 0x81, 0x73, 0x1, 0x4, 0x1, 0x16, 0x1, 0xa1, 0xb4, 0xa2, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1]; -_T Math = [0x2b, 0x1, 0x10, 0x3, 0x1f, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x2d, 0x1, 0x4, 0x1, 0x25, 0x1, 0x1f, 0x1, 0x82, 0xd8, 0x3, 0x2, 0x1, 0x1a, 0x2, 0x2, 0x3, 0x82, 0xf, 0x3, 0x9a, 0xd, 0x1, 0x1b, 0x3, 0xb, 0x1, 0x3, 0x1, 0xd, 0x1, 0xe, 0x4, 0x15, 0x5, 0xb, 0x5, 0x41, 0xd, 0x4, 0x1, 0x3, 0x2, 0x4, 0x5, 0x12, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x3, 0x2, 0x2, 0x2, 0x1, 0x3, 0x1, 0x6, 0x3, 0xe, 0x1, 0x1, 0x44, 0x18, 0x1, 0x6, 0x1, 0x2, 0x4, 0x2, 0x4, 0x20, 0x1, 0x1, 0x6, 0x2, 0xe, 0x81, 0xc, 0x8, 0x4, 0x14, 0x2, 0x5a, 0x1, 0x1e, 0x1b, 0x1, 0x1, 0x18, 0x1, 0xb, 0x7, 0x81, 0xbd, 0x2, 0xc, 0xa, 0x4, 0x6, 0x4, 0x2, 0x2, 0x2, 0x3, 0x5, 0xe, 0x1, 0x1, 0x1, 0x2, 0x6, 0xb, 0x8, 0x5, 0x2, 0x39, 0x1, 0x1, 0x1, 0x1d, 0x4, 0x9, 0x3, 0x81, 0x50, 0x40, 0x81, 0x0, 0x82, 0x0, 0x30, 0x15, 0x2, 0x6, 0xa0, 0xcf, 0xdc, 0x1, 0x83, 0x37, 0x6, 0x1, 0x1, 0x80, 0xa2, 0x1, 0x10, 0x3, 0x1d, 0x1, 0x1, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x80, 0x83, 0x1, 0x6, 0x4, 0xa0, 0xd4, 0x13, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x32, 0x96, 0x0, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2]; -_T No = [0x80, 0xb2, 0x2, 0x5, 0x1, 0x2, 0x3, 0x89, 0x35, 0x6, 0x81, 0x78, 0x6, 0x78, 0x3, 0x80, 0x85, 0x7, 0x80, 0xd9, 0x7, 0x11, 0x9, 0x81, 0xb1, 0xa, 0x84, 0x35, 0x14, 0x84, 0x73, 0xa, 0x81, 0xe0, 0x1, 0x86, 0x95, 0x1, 0x3, 0x6, 0x6, 0xa, 0x80, 0xc6, 0x10, 0x29, 0x1, 0x82, 0xd6, 0x3c, 0x4e, 0x16, 0x82, 0x76, 0x1e, 0x85, 0x69, 0x1, 0x84, 0x94, 0x4, 0x80, 0x8a, 0xa, 0x1e, 0x8, 0x1, 0xf, 0x20, 0xa, 0x27, 0xf, 0xa0, 0x75, 0x70, 0x6, 0xa0, 0x58, 0xd1, 0x2d, 0x41, 0x4, 0x11, 0x2, 0x81, 0x55, 0x1b, 0x24, 0x4, 0x85, 0x34, 0x8, 0x19, 0x7, 0x27, 0x9, 0x4b, 0x5, 0x16, 0x6, 0x80, 0xa0, 0x2, 0x2, 0x10, 0x2, 0x2e, 0x40, 0x9, 0x34, 0x2, 0x1e, 0x3, 0x4b, 0x5, 0x68, 0x8, 0x18, 0x8, 0x29, 0x7, 0x81, 0x4a, 0x6, 0x81, 0x60, 0x1f, 0x80, 0x9e, 0xa, 0x2a, 0x4, 0x70, 0x7, 0x80, 0x86, 0x14, 0x81, 0x7b, 0x14, 0x85, 0x45, 0x2, 0x81, 0xae, 0x9, 0x83, 0x67, 0x13, 0x83, 0x53, 0x15, 0xa0, 0x4b, 0x86, 0x7, 0x83, 0x1e, 0x17, 0xa0, 0x64, 0x29, 0x14, 0xc, 0x14, 0x6c, 0x19, 0x95, 0x4e, 0x9, 0x83, 0xa1, 0x3b, 0x1, 0x3, 0x1, 0x4, 0x4c, 0x2d, 0x1, 0xf, 0x83, 0xc2, 0xd]; -_T ID_Continue = [0x30, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x1, 0x1, 0x2, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x5, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x1, 0x5, 0x2, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x8, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x4a, 0x4, 0x66, 0x1, 0x8, 0x2, 0xa, 0x1, 0x13, 0x2, 0x1, 0x10, 0x3b, 0x2, 0x65, 0xe, 0x36, 0x4, 0x1, 0x2, 0x1, 0x2, 0x2e, 0x12, 0x1c, 0x4, 0xb, 0x5, 0x18, 0x1, 0x6, 0x9, 0x4a, 0x1, 0x80, 0x81, 0x2, 0xa, 0x1, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0xc, 0xa, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x10, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xa, 0x9, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0xa, 0x10, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x10, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x5, 0x5, 0x4, 0x7, 0x5, 0x2, 0xa, 0xa, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x2, 0xd, 0x3a, 0x5, 0xf, 0x1, 0xa, 0x27, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x1, 0x17, 0x2, 0x6, 0xa, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0xa, 0x1, 0x24, 0x4, 0x14, 0x1, 0x12, 0x1, 0x24, 0x9, 0x1, 0x39, 0x4a, 0x6, 0x4e, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x3, 0x9, 0x9, 0xe, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x16, 0x9, 0x16, 0xb, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x54, 0x3, 0x1, 0x4, 0x2, 0x2, 0xa, 0x21, 0x3, 0x1, 0xb, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0xa, 0x28, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x25, 0x1c, 0x4, 0x3f, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0xd, 0x1, 0x8, 0xe, 0x1, 0x10, 0x31, 0x4d, 0x3, 0xa, 0x11, 0x9, 0xc, 0x74, 0xc, 0x38, 0x8, 0xa, 0x3, 0x31, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x10, 0x3, 0x1, 0x27, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0xf, 0x2, 0x31, 0x2, 0x13, 0x1, 0x1c, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0xd, 0x4, 0x1, 0x3, 0xc, 0x11, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x9, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0xf, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x82, 0x5, 0x3, 0x19, 0xf, 0x1, 0x5, 0x2, 0x5, 0x4, 0x56, 0x2, 0x7, 0x1, 0x5f, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x1c, 0x14, 0x30, 0x4, 0xa, 0x1, 0x73, 0x25, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x36, 0x4, 0x1, 0x13, 0x34, 0xc, 0x46, 0xa, 0xa, 0x6, 0x18, 0x3, 0x1, 0x1, 0x31, 0x2, 0x24, 0xc, 0x1d, 0x3, 0x41, 0xe, 0xb, 0x6, 0x1f, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x6, 0x17, 0x3, 0x49, 0x18, 0x3, 0x2, 0x10, 0x2, 0x5, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x1, 0x2, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x4, 0x10, 0x10, 0x10, 0x3, 0x2, 0x18, 0x3, 0x20, 0x5, 0x1, 0x80, 0x87, 0x13, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0xa, 0x5a, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x80, 0x88, 0x1, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1, 0x1f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0x1, 0x20, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1e, 0x19, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x8, 0xa, 0x81, 0x46, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4b, 0x20, 0xa, 0x1, 0x8, 0x21, 0x1f, 0x16, 0x2a, 0x15, 0x1b, 0x17, 0x9, 0x47, 0x1f, 0x10, 0x9, 0x3c, 0x7, 0x1, 0xd, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0xa, 0x4, 0x4, 0x8, 0x24, 0x2, 0x1, 0x9, 0x45, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x23, 0x12, 0x1, 0x25, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x4b, 0x5, 0xa, 0x4, 0x4, 0x1e, 0x46, 0x1, 0x1, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x9, 0x17, 0x6, 0x22, 0x41, 0x3, 0x1, 0xb, 0xa, 0x26, 0x39, 0x7, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0xa, 0x6, 0x7, 0x80, 0xb9, 0x3b, 0x65, 0x4a, 0x15, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x9, 0xc, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0x8, 0x1, 0x2, 0x1b, 0x3f, 0x8, 0x1, 0x8, 0x4a, 0x3, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x9, 0xf, 0xa, 0x18, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x5, 0xd, 0xa, 0x56, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x10, 0x16, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x6, 0x4f, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x5, 0xb, 0x37, 0x9, 0x4, 0xc, 0xa, 0x9, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x2, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x3, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x1e, 0x5, 0x3, 0x6, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x81, 0xbb, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x1, 0x81, 0x41, 0x1f, 0x11, 0x3a, 0x81, 0xd6, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0xb, 0x7, 0x29, 0x4c, 0x4, 0xa, 0x84, 0xa6, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x8d, 0x34, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdd, 0x50, 0x80, 0xf0]; -_T Me = [0x84, 0x88, 0x2, 0x96, 0x34, 0x1, 0x86, 0x1e, 0x4, 0x1, 0x3, 0xa0, 0x85, 0x8b, 0x3]; -_T Ideographic = [0xa0, 0x30, 0x6, 0x2, 0x19, 0x9, 0xe, 0x3, 0x83, 0xc5, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x59, 0x0, 0x81, 0x6e, 0x2, 0x6a, 0xa0, 0x75, 0xa, 0x1, 0x1b, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x24, 0x67, 0x81, 0x8c, 0xa0, 0x4d, 0x4, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T Cf = [0x80, 0xad, 0x1, 0x85, 0x52, 0x6, 0x16, 0x1, 0x80, 0xc0, 0x1, 0x31, 0x1, 0x81, 0x80, 0x2, 0x50, 0x1, 0x8f, 0x2b, 0x1, 0x87, 0xfc, 0x5, 0x1a, 0x5, 0x31, 0x5, 0x1, 0xa, 0xa0, 0xde, 0x8f, 0x1, 0x80, 0xf9, 0x3, 0x90, 0xc1, 0x1, 0xf, 0x1, 0xa0, 0x23, 0x62, 0x10, 0xa0, 0x88, 0x60, 0x4, 0x94, 0xcf, 0x8, 0xac, 0x2e, 0x86, 0x1, 0x1e, 0x60]; -_T So = [0x80, 0xa6, 0x1, 0x2, 0x1, 0x4, 0x1, 0x1, 0x1, 0x83, 0xd1, 0x1, 0x81, 0xa, 0x2, 0x7f, 0x2, 0x80, 0xce, 0x1, 0xa, 0x1, 0x13, 0x2, 0x80, 0xf7, 0x1, 0x82, 0x3, 0x1, 0x81, 0x75, 0x1, 0x80, 0x82, 0x6, 0x1, 0x1, 0x80, 0x84, 0x1, 0x80, 0xcf, 0x1, 0x29, 0x1, 0x81, 0x87, 0x3, 0xf, 0x1, 0x1, 0x3, 0x2, 0x6, 0x14, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x85, 0x8, 0x1, 0x6, 0x1, 0x2, 0x5, 0x4, 0x80, 0xc5, 0x2, 0x82, 0xf0, 0xa, 0x82, 0xd3, 0x1, 0x82, 0xd2, 0x1, 0x80, 0x9d, 0x22, 0x81, 0x61, 0xa, 0x9, 0x9, 0x85, 0x83, 0x2, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0xb, 0x2, 0xe, 0x1, 0x1, 0x2, 0x1, 0x1, 0x3a, 0x2, 0x9, 0x5, 0x2, 0x4, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1f, 0x2, 0x2, 0x1, 0x1, 0x1, 0x1f, 0x81, 0xc, 0x8, 0x4, 0x14, 0x2, 0x7, 0x2, 0x51, 0x1, 0x1e, 0x19, 0x28, 0x6, 0x45, 0x19, 0xb, 0x51, 0x4e, 0x16, 0x80, 0xb7, 0x1, 0x9, 0x1, 0x36, 0x8, 0x6f, 0x1, 0x80, 0xf8, 0x2c, 0x2c, 0x40, 0x81, 0x0, 0x82, 0x0, 0x30, 0x15, 0x2, 0x6, 0x27, 0x2, 0x20, 0x1, 0x69, 0x80, 0xe5, 0x6, 0x81, 0x65, 0x2, 0x2e, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0x10, 0x4, 0x1, 0xd, 0x2, 0xc, 0x1, 0x15, 0x2, 0x6, 0x2, 0x81, 0x50, 0x2, 0x4, 0xa, 0x20, 0x24, 0xb, 0x1, 0x10, 0x1f, 0xb, 0x1e, 0x8, 0x1, 0xf, 0x20, 0xa, 0x27, 0xf, 0x81, 0x40, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x90, 0x37, 0x83, 0x61, 0x4, 0xa, 0x2, 0x1, 0x1, 0x82, 0x3d, 0x3, 0xa0, 0x52, 0xc6, 0x10, 0x7f, 0x1, 0x2d, 0x3, 0x81, 0xe4, 0x1, 0x3, 0x1, 0x4, 0x2, 0xd, 0x2, 0x81, 0x39, 0x9, 0x39, 0x11, 0x2, 0x3, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2d, 0x86, 0x7a, 0x2, 0x82, 0x4f, 0x1, 0x8c, 0x76, 0x1, 0x88, 0x95, 0x8, 0x4, 0x11, 0xa0, 0x4b, 0x4a, 0x4, 0x5, 0x1, 0xa0, 0x51, 0x56, 0x1, 0x92, 0xb3, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3c, 0x5, 0x3, 0x16, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x15, 0x42, 0x3, 0x1, 0x80, 0xba, 0x57, 0x84, 0xa9, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x2, 0x86, 0xc8, 0x1, 0x8b, 0x5c, 0x1, 0x80, 0x81, 0x1, 0x82, 0xd1, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0x17, 0x80, 0xa1, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x80, 0xfb, 0x5, 0x82, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37]; -_T White_Space = [0x9, 0x5, 0x12, 0x1, 0x64, 0x1, 0x1a, 0x1, 0x95, 0xdf, 0x1, 0x89, 0x7f, 0xb, 0x1d, 0x2, 0x5, 0x1, 0x2f, 0x1, 0x8f, 0xa0, 0x1]; -_T Sentence_Terminal = [0x21, 0x1, 0xc, 0x1, 0x10, 0x1, 0x85, 0x49, 0x1, 0x80, 0x93, 0x3, 0x80, 0xb4, 0x1, 0x2b, 0x3, 0x80, 0xf6, 0x1, 0x3d, 0x1, 0x1, 0x1, 0x3, 0x2, 0x81, 0x25, 0x2, 0x86, 0xe4, 0x2, 0x83, 0x16, 0x1, 0x4, 0x2, 0x83, 0x5, 0x1, 0x80, 0xc6, 0x2, 0x80, 0x9d, 0x2, 0x2d, 0x1, 0x5, 0x1, 0x81, 0x3a, 0x2, 0x81, 0x62, 0x4, 0x80, 0xae, 0x2, 0x2, 0x2, 0x1d, 0x2, 0x80, 0xbc, 0x2, 0x41, 0x2, 0x83, 0xbc, 0x2, 0x9, 0x3, 0x8d, 0xe4, 0x1, 0xd, 0x1, 0x16, 0x2, 0x81, 0xad, 0x1, 0xa0, 0x74, 0xfc, 0x1, 0x81, 0xe, 0x2, 0x80, 0xe3, 0x1, 0x3, 0x1, 0x81, 0x7e, 0x2, 0x56, 0x2, 0x5f, 0x1, 0x80, 0x98, 0x2, 0x80, 0x93, 0x3, 0x80, 0x90, 0x2, 0x80, 0xf9, 0x1, 0xa0, 0x52, 0x66, 0x1, 0x3, 0x2, 0x80, 0xa9, 0x1, 0xc, 0x1, 0x10, 0x1, 0x41, 0x1, 0x8a, 0xf4, 0x2, 0x84, 0xfd, 0x5, 0x2c, 0x4, 0x80, 0xbd, 0x2, 0x75, 0x4, 0x7f, 0x3, 0x80, 0x81, 0x2, 0x6, 0x1, 0x10, 0x2, 0x58, 0x2, 0x1, 0x2, 0x6c, 0x1, 0x81, 0xa1, 0x2, 0x81, 0x75, 0x2, 0x5, 0xf, 0x69, 0x2, 0x80, 0xf9, 0x3, 0x82, 0x5, 0x1, 0x1, 0x1, 0x80, 0xfb, 0x2, 0x57, 0x2, 0x81, 0xa4, 0x2, 0x82, 0xb4, 0x2, 0x4a, 0x2, 0xa0, 0x4b, 0x29, 0x2, 0x80, 0x85, 0x1, 0x41, 0x2, 0xb, 0x1, 0x83, 0x53, 0x1, 0xa0, 0x4e, 0x6, 0x1, 0x9d, 0xe8, 0x1]; -_T Lt = [0x81, 0xc5, 0x1, 0x2, 0x1, 0x2, 0x1, 0x26, 0x1, 0x9d, 0x95, 0x8, 0x8, 0x8, 0x8, 0x8, 0xc, 0x1, 0xf, 0x1, 0x2f, 0x1]; -_T Other_Lowercase = [0x80, 0xaa, 0x1, 0xf, 0x1, 0x81, 0xf5, 0x9, 0x7, 0x2, 0x1e, 0x5, 0x60, 0x1, 0x34, 0x1, 0x8d, 0x81, 0x1, 0x8c, 0x2f, 0x3f, 0xd, 0x1, 0x22, 0x25, 0x82, 0xb1, 0x1, 0xd, 0x1, 0x10, 0xd, 0x80, 0xd3, 0x10, 0x83, 0x50, 0x1a, 0x87, 0x92, 0x2, 0xa0, 0x7a, 0x1e, 0x2, 0x80, 0xd2, 0x1, 0x80, 0x81, 0x3, 0x3, 0x2, 0x83, 0x62, 0x4, 0x9, 0x1, 0xa0, 0x5c, 0x16, 0x1, 0x2, 0x3, 0x1, 0x2a, 0x1, 0x9, 0xa0, 0xd8, 0x75, 0x3e]; -_T Other_Alphabetic = [0x83, 0x45, 0x1, 0x82, 0x6a, 0xe, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x48, 0xb, 0x30, 0xd, 0x1, 0x7, 0x10, 0x1, 0x65, 0x7, 0x4, 0x4, 0x2, 0x2, 0x4, 0x1, 0x23, 0x1, 0x1e, 0x10, 0x66, 0xb, 0x65, 0x2, 0x3, 0x9, 0x1, 0x3, 0x1, 0x4, 0x80, 0xa7, 0xc, 0x3, 0x7, 0x6, 0x14, 0x36, 0x2, 0x2, 0xf, 0x1, 0x2, 0x5, 0x3, 0xa, 0x2, 0x1d, 0x3, 0x3a, 0x7, 0x2, 0x2, 0x2, 0x2, 0xa, 0x1, 0xa, 0x2, 0x1d, 0x3, 0x3a, 0x5, 0x4, 0x2, 0x2, 0x2, 0x4, 0x1, 0x1e, 0x2, 0x3, 0x1, 0xb, 0x3, 0x3a, 0x8, 0x1, 0x3, 0x1, 0x2, 0x15, 0x2, 0x16, 0x3, 0x4, 0x3, 0x3a, 0x7, 0x2, 0x2, 0x2, 0x2, 0x9, 0x2, 0xa, 0x2, 0x1e, 0x1, 0x3b, 0x5, 0x3, 0x3, 0x1, 0x3, 0xa, 0x1, 0x28, 0x5, 0x39, 0x7, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0xb, 0x2, 0x1d, 0x3, 0x3a, 0x7, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0xb, 0x2, 0xf, 0x1, 0xc, 0x4, 0x3a, 0x7, 0x1, 0x3, 0x1, 0x3, 0xa, 0x1, 0xa, 0x2, 0x1d, 0x3, 0x4b, 0x6, 0x1, 0x1, 0x1, 0x8, 0x12, 0x2, 0x3d, 0x1, 0x2, 0x7, 0x12, 0x1, 0x63, 0x1, 0x2, 0x6, 0x1, 0x2, 0x10, 0x1, 0x80, 0xa3, 0x13, 0x9, 0xb, 0x1, 0x24, 0x6e, 0xc, 0x1, 0x1, 0x2, 0x4, 0x17, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x1, 0xa, 0x4, 0x86, 0x74, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x42, 0x13, 0x80, 0xbc, 0x2, 0x22, 0x1, 0x76, 0xc, 0x4, 0x9, 0x80, 0xde, 0x5, 0x39, 0xa, 0x2, 0x14, 0x4a, 0x2, 0xb, 0x3, 0x31, 0x5, 0x30, 0xf, 0x3c, 0x3, 0x1e, 0x9, 0x2, 0x2, 0x39, 0xb, 0x32, 0x13, 0x81, 0xb0, 0xe, 0x86, 0xc1, 0x34, 0x88, 0xf6, 0x20, 0xa0, 0x78, 0x74, 0x8, 0x22, 0x2, 0x81, 0x62, 0x1, 0x8, 0x1, 0x17, 0x5, 0x58, 0x2, 0x32, 0x10, 0x1, 0x1, 0x39, 0x1, 0x26, 0x5, 0x1c, 0xc, 0x2d, 0x4, 0x30, 0xc, 0x25, 0x1, 0x43, 0xe, 0xc, 0x1, 0x8, 0x2, 0x2d, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x1, 0x2c, 0x5, 0x5, 0x1, 0x80, 0xed, 0x8, 0xa0, 0x4f, 0x33, 0x1, 0x88, 0x57, 0x5, 0x86, 0x86, 0x3, 0x1, 0x2, 0x5, 0x4, 0x83, 0x14, 0x4, 0x81, 0x83, 0x2, 0x81, 0x53, 0x3, 0x35, 0xe, 0x2d, 0x2, 0xb, 0x3, 0x2d, 0x9, 0x9, 0x1, 0x3d, 0x3, 0x24, 0xc, 0x12, 0x2, 0x39, 0x3, 0x30, 0xd, 0xe, 0x2, 0x5c, 0x9, 0x2, 0x1, 0x6, 0x1, 0x2, 0x1, 0x80, 0x9d, 0xa, 0x17, 0x4, 0x3a, 0x7, 0x2, 0x2, 0x2, 0x2, 0xa, 0x1, 0xa, 0x2, 0x80, 0xd1, 0xd, 0x1, 0x3, 0x6a, 0x12, 0x80, 0xed, 0x7, 0x2, 0x7, 0x1d, 0x2, 0x52, 0xf, 0x1, 0x1, 0x6a, 0xb, 0x67, 0xe, 0x81, 0x1, 0xd, 0x80, 0xf7, 0x6, 0x1, 0x2, 0x2, 0x2, 0x3, 0x1, 0x1, 0x1, 0x80, 0x8e, 0x7, 0x2, 0x6, 0x4, 0x1, 0x1c, 0xa, 0x2a, 0x5, 0x1, 0x4, 0x12, 0xb, 0x2e, 0xe, 0x81, 0x97, 0x8, 0x1, 0x7, 0x53, 0x16, 0x1, 0xe, 0x7a, 0x6, 0x3, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x3, 0x1, 0x42, 0x5, 0x1, 0x2, 0x1, 0x4, 0x81, 0x5c, 0x4, 0x9, 0x2, 0x1, 0x1, 0x30, 0x7, 0x3, 0x3, 0xa0, 0x50, 0xe, 0x1, 0x1, 0x37, 0x7, 0x4, 0x5d, 0x2, 0xa0, 0x4c, 0xac, 0x1, 0xa0, 0x23, 0x61, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x64, 0x1, 0x88, 0xb7, 0x1, 0x87, 0xe8, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; -_T XID_Continue = [0x30, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x1, 0x1, 0x2, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x6, 0x5, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x1, 0x5, 0x2, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x8, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x4a, 0x4, 0x66, 0x1, 0x8, 0x2, 0xa, 0x1, 0x13, 0x2, 0x1, 0x10, 0x3b, 0x2, 0x65, 0xe, 0x36, 0x4, 0x1, 0x2, 0x1, 0x2, 0x2e, 0x12, 0x1c, 0x4, 0xb, 0x5, 0x18, 0x1, 0x6, 0x9, 0x4a, 0x1, 0x80, 0x81, 0x2, 0xa, 0x1, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0xc, 0xa, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x10, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xa, 0x9, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0xa, 0x10, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x10, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x5, 0x5, 0x4, 0x7, 0x5, 0x2, 0xa, 0xa, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x2, 0xd, 0x3a, 0x5, 0xf, 0x1, 0xa, 0x27, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x1, 0x17, 0x2, 0x6, 0xa, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0xa, 0x1, 0x24, 0x4, 0x14, 0x1, 0x12, 0x1, 0x24, 0x9, 0x1, 0x39, 0x4a, 0x6, 0x4e, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x3, 0x9, 0x9, 0xe, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x16, 0x9, 0x16, 0xb, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x54, 0x3, 0x1, 0x4, 0x2, 0x2, 0xa, 0x21, 0x3, 0x1, 0xb, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0xa, 0x28, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x25, 0x1c, 0x4, 0x3f, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0xd, 0x1, 0x8, 0xe, 0x1, 0x10, 0x31, 0x4d, 0x3, 0xa, 0x11, 0x9, 0xc, 0x74, 0xc, 0x38, 0x8, 0xa, 0x3, 0x31, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x10, 0x3, 0x1, 0x27, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0xf, 0x2, 0x31, 0x2, 0x13, 0x1, 0x1c, 0x1, 0xd, 0x1, 0x10, 0xd, 0x33, 0xd, 0x4, 0x1, 0x3, 0xc, 0x11, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x9, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0xf, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x82, 0x5, 0x3, 0x19, 0xf, 0x1, 0x5, 0x2, 0x5, 0x4, 0x56, 0x2, 0x2, 0x2, 0x3, 0x1, 0x5f, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x1c, 0x14, 0x30, 0x4, 0xa, 0x1, 0x73, 0x25, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x36, 0x4, 0x1, 0x13, 0x34, 0xc, 0x46, 0xa, 0xa, 0x6, 0x18, 0x3, 0x1, 0x1, 0x31, 0x2, 0x24, 0xc, 0x1d, 0x3, 0x41, 0xe, 0xb, 0x6, 0x1f, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x6, 0x17, 0x3, 0x49, 0x18, 0x3, 0x2, 0x10, 0x2, 0x5, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x1, 0x2, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x80, 0x8b, 0x6, 0x80, 0xda, 0x12, 0x40, 0x2, 0x36, 0x28, 0xa, 0x6, 0x10, 0x10, 0x10, 0x3, 0x2, 0x18, 0x3, 0x21, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7e, 0x13, 0xa, 0x7, 0x1a, 0x4, 0x1, 0x1, 0x1a, 0xa, 0x5a, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x80, 0x88, 0x1, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1, 0x1f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0x1, 0x20, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1e, 0x19, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x8, 0xa, 0x81, 0x46, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4b, 0x20, 0xa, 0x1, 0x8, 0x21, 0x1f, 0x16, 0x2a, 0x15, 0x1b, 0x17, 0x9, 0x47, 0x1f, 0x10, 0x9, 0x3c, 0x7, 0x1, 0xd, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0xa, 0x4, 0x4, 0x8, 0x24, 0x2, 0x1, 0x9, 0x45, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x23, 0x12, 0x1, 0x25, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x4b, 0x5, 0xa, 0x4, 0x4, 0x1e, 0x46, 0x1, 0x1, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x9, 0x17, 0x6, 0x22, 0x41, 0x3, 0x1, 0xb, 0xa, 0x26, 0x39, 0x7, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0xa, 0x6, 0x7, 0x80, 0xb9, 0x3b, 0x65, 0x4a, 0x15, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x9, 0xc, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0x8, 0x1, 0x2, 0x1b, 0x3f, 0x8, 0x1, 0x8, 0x4a, 0x3, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x9, 0xf, 0xa, 0x18, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x5, 0xd, 0xa, 0x56, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x10, 0x16, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x6, 0x4f, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x5, 0xb, 0x37, 0x9, 0x4, 0xc, 0xa, 0x9, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x2, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x3, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x1e, 0x5, 0x3, 0x6, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x81, 0xbb, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x82, 0x0, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x1, 0x81, 0x41, 0x1f, 0x11, 0x3a, 0x81, 0xd6, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0xb, 0x7, 0x29, 0x4c, 0x4, 0xa, 0x84, 0xa6, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x8d, 0x34, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdd, 0x50, 0x80, 0xf0]; -_T Cc = [0x0, 0x20, 0x5f, 0x21]; -_T Regional_Indicator = [0xa1, 0xf1, 0xe6, 0x1a]; -_T Sc = [0x24, 0x1, 0x7d, 0x4, 0x84, 0xe9, 0x1, 0x7b, 0x1, 0x81, 0xf2, 0x2, 0x81, 0xf2, 0x2, 0x7, 0x1, 0x80, 0xf5, 0x1, 0x81, 0x7, 0x1, 0x82, 0x45, 0x1, 0x89, 0x9b, 0x1, 0x88, 0xc4, 0x21, 0xa0, 0x87, 0x77, 0x1, 0xa0, 0x55, 0xc3, 0x1, 0x6c, 0x1, 0x80, 0x9a, 0x1, 0x80, 0xdb, 0x2, 0x3, 0x2, 0x9f, 0xf6, 0x4, 0xa0, 0xc3, 0x1e, 0x1, 0x89, 0xb0, 0x1]; -_T IDS_Unary_Operator = [0xa0, 0x2f, 0xfe, 0x2]; -_T Pf = [0x80, 0xbb, 0x1, 0x9f, 0x5d, 0x1, 0x3, 0x1, 0x1c, 0x1, 0x8d, 0xc8, 0x1, 0x1, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x3, 0x1]; -_T Pe = [0x29, 0x1, 0x33, 0x1, 0x1f, 0x1, 0x8e, 0xbd, 0x1, 0x1, 0x1, 0x87, 0x5e, 0x1, 0x89, 0xa9, 0x1, 0x37, 0x1, 0xf, 0x1, 0x82, 0x7a, 0x1, 0x1, 0x1, 0x1e, 0x1, 0x84, 0x3e, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x50, 0x1, 0x20, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x94, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x40, 0x1, 0x1, 0x1, 0x21, 0x1, 0x84, 0x25, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2c, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0xac, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0xa0, 0xcd, 0x1e, 0x1, 0x80, 0xd9, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x11, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0xaa, 0x1, 0x33, 0x1, 0x1f, 0x1, 0x2, 0x1, 0x2, 0x1]; -_T Other_Uppercase = [0xa0, 0x21, 0x60, 0x10, 0x83, 0x46, 0x1a, 0xa1, 0xcc, 0x60, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; -_T Cn = [0x83, 0x78, 0x2, 0x6, 0x4, 0x7, 0x1, 0x1, 0x1, 0x14, 0x1, 0x81, 0x8d, 0x1, 0x26, 0x2, 0x32, 0x2, 0x3, 0x1, 0x37, 0x8, 0x1b, 0x4, 0x6, 0xb, 0x81, 0xe, 0x1, 0x3c, 0x2, 0x65, 0xe, 0x3b, 0x2, 0x31, 0x2, 0xf, 0x1, 0x1c, 0x2, 0x1, 0x1, 0xb, 0x5, 0x1f, 0x1, 0x2, 0x6, 0x80, 0xec, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0x19, 0x2, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x11, 0xa, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xc, 0x7, 0x7, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0x12, 0xa, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0x15, 0x5, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x7, 0x16, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x6, 0x4, 0x10, 0x2, 0x1a, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x3, 0xc, 0x3a, 0x4, 0x1d, 0x25, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4, 0x20, 0x48, 0x1, 0x24, 0x4, 0x27, 0x1, 0x24, 0x1, 0xf, 0x1, 0xd, 0x25, 0x80, 0xc6, 0x1, 0x1, 0x5, 0x1, 0x2, 0x81, 0x79, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x20, 0x3, 0x1a, 0x6, 0x56, 0x2, 0x6, 0x2, 0x82, 0x9d, 0x3, 0x59, 0x7, 0x16, 0x9, 0x18, 0x9, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x5e, 0x2, 0xa, 0x6, 0xa, 0x6, 0x1a, 0x6, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0xc, 0x4, 0x1, 0x3, 0x2a, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x3, 0x3e, 0x2, 0x41, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0x6, 0xe, 0x2, 0x1f, 0x31, 0x4d, 0x3, 0x2f, 0x1, 0x74, 0x8, 0x3c, 0x3, 0xf, 0x3, 0x3c, 0x7, 0x2b, 0x2, 0xb, 0x8, 0x2b, 0x5, 0x82, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0xf, 0x1, 0xe, 0x2, 0x6, 0x1, 0x13, 0x2, 0x3, 0x1, 0x9, 0x1, 0x65, 0x1, 0xc, 0x2, 0x1b, 0x1, 0xd, 0x3, 0x21, 0xf, 0x21, 0xf, 0x80, 0x8c, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x87, 0x14, 0x2, 0x20, 0x1, 0x81, 0x5d, 0x5, 0x2d, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x2, 0xe, 0x18, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7e, 0x22, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0x50, 0x1, 0x56, 0x2, 0x67, 0x5, 0x2b, 0x1, 0x5e, 0x1, 0x54, 0xb, 0x30, 0x1, 0xa0, 0x72, 0x6d, 0x3, 0x37, 0x9, 0x81, 0x5c, 0x14, 0x80, 0xb8, 0x8, 0x80, 0xcb, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x3b, 0x3, 0xa, 0x6, 0x38, 0x8, 0x46, 0x8, 0xc, 0x6, 0x74, 0xb, 0x1e, 0x3, 0x4e, 0x1, 0xb, 0x4, 0x21, 0x1, 0x37, 0x9, 0xe, 0x2, 0xa, 0x2, 0x67, 0x18, 0x1c, 0xa, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x3c, 0x4, 0x7e, 0x2, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0x4, 0xa0, 0x22, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1a, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7d, 0x10, 0x81, 0xbd, 0x2, 0x36, 0x7, 0x1, 0x20, 0x2a, 0x6, 0x33, 0x1, 0x13, 0x1, 0x4, 0x4, 0x5, 0x1, 0x80, 0x87, 0x2, 0x1, 0x1, 0x80, 0xbe, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x3, 0x7, 0x1, 0x7, 0xa, 0x5, 0x2, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x5, 0x3, 0x4, 0x2d, 0x3, 0x58, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2e, 0x80, 0x82, 0x1d, 0x3, 0x31, 0xf, 0x1c, 0x4, 0x24, 0x9, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x1, 0x25, 0x4, 0xe, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xb, 0xc, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0x1, 0x48, 0x8, 0x9, 0x30, 0x13, 0x1, 0x2, 0x5, 0x21, 0x3, 0x1b, 0x5, 0x1, 0x40, 0x38, 0x4, 0x14, 0x2, 0x32, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0xa, 0x7, 0x9, 0x7, 0x40, 0x20, 0x27, 0x4, 0xc, 0x9, 0x36, 0x3, 0x1d, 0x2, 0x1b, 0x5, 0x1a, 0x7, 0x4, 0xc, 0x7, 0x50, 0x49, 0x37, 0x33, 0xd, 0x33, 0x7, 0x2e, 0x8, 0xa, 0x81, 0x26, 0x1f, 0x1, 0x2a, 0x1, 0x3, 0x2, 0x2, 0x4b, 0x2b, 0x8, 0x2a, 0x16, 0x1a, 0x26, 0x1c, 0x14, 0x17, 0x9, 0x4e, 0x4, 0x24, 0x9, 0x44, 0xa, 0x1, 0x2, 0x19, 0x7, 0xa, 0x6, 0x35, 0x1, 0x12, 0x8, 0x27, 0x9, 0x60, 0x1, 0x14, 0xb, 0x12, 0x1, 0x2f, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb, 0x6, 0x3b, 0x5, 0xa, 0x6, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x1, 0xa, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5, 0x80, 0x8b, 0x5c, 0x1, 0x5, 0x1e, 0x48, 0x8, 0xa, 0x80, 0xa6, 0x36, 0x2, 0x26, 0x22, 0x45, 0xb, 0xa, 0x6, 0xd, 0x13, 0x3a, 0x6, 0xa, 0x36, 0x1b, 0x2, 0xf, 0x4, 0x17, 0x80, 0xb9, 0x3c, 0x64, 0x53, 0xc, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0xc, 0x9, 0xa, 0x46, 0x8, 0x2, 0x2e, 0x2, 0xb, 0x1b, 0x48, 0x8, 0x53, 0xd, 0x49, 0x7, 0xa, 0x80, 0xf6, 0x9, 0x1, 0x2d, 0x1, 0xe, 0xa, 0x1d, 0x3, 0x20, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa, 0x81, 0x36, 0x19, 0x7, 0x11, 0x1, 0x29, 0x3, 0x1c, 0x56, 0x1, 0xf, 0x32, 0xd, 0x83, 0x9b, 0x66, 0x6f, 0x1, 0x5, 0xb, 0x80, 0xc4, 0x8a, 0x4c, 0x63, 0xd, 0x84, 0x56, 0x8f, 0xaa, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x4, 0x51, 0x1, 0xa, 0x6, 0x1e, 0x2, 0x6, 0xa, 0x46, 0xa, 0xa, 0x1, 0x7, 0x1, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x5b, 0x65, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x5, 0xb, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x2, 0x8, 0x92, 0x5c, 0x2e, 0x2, 0x17, 0x9, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x80, 0xc2, 0x15, 0x46, 0x7a, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x82, 0xbe, 0xf, 0x5, 0x1, 0xf, 0x84, 0x50, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x2, 0x81, 0x40, 0x1f, 0x11, 0x3a, 0x5, 0x1, 0x81, 0xd0, 0x2a, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x2, 0x10, 0x29, 0x4c, 0x4, 0xa, 0x4, 0x2, 0x83, 0x11, 0x44, 0x4c, 0x3d, 0x80, 0xc2, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2, 0x81, 0xe, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60, 0xaa, 0xdc, 0x51, 0x1, 0x1e, 0x60, 0x80, 0x80, 0x80, 0xf0, 0xa0, 0xfe, 0x10, 0xa0, 0xff, 0xfe, 0x2, 0xa0, 0xff, 0xfe]; -_T Hyphen = [0x2d, 0x1, 0x7f, 0x1, 0x84, 0xdc, 0x1, 0x92, 0x7b, 0x1, 0x88, 0x9, 0x2, 0x8e, 0x5, 0x1, 0x82, 0xe3, 0x1, 0xa0, 0xcd, 0x67, 0x1, 0x80, 0xa9, 0x1, 0x57, 0x1]; -_T Other_Math = [0x5e, 0x1, 0x83, 0x71, 0x3, 0x2, 0x1, 0x1a, 0x2, 0x2, 0x2, 0x9c, 0x20, 0x1, 0x1b, 0x3, 0xb, 0x1, 0x20, 0x4, 0x18, 0x2, 0xe, 0x2, 0x41, 0xd, 0x4, 0x1, 0x3, 0x2, 0x4, 0x5, 0x12, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x3, 0x5, 0x6, 0x1, 0x3, 0x2, 0x2, 0x2, 0x1, 0x3, 0x1, 0x6, 0x3, 0x4, 0x5, 0x5, 0x4b, 0x5, 0x2, 0x4, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x5, 0x2, 0x2, 0x4, 0x2, 0x4, 0x12, 0x2, 0x2, 0x1, 0x1, 0x1, 0x7, 0x1, 0x1, 0x6, 0x2, 0x81, 0x22, 0x4, 0x80, 0xa8, 0x2, 0x1, 0x1, 0x18, 0x1, 0x11, 0x1, 0x81, 0xbd, 0x2, 0xc, 0x9, 0x5, 0x5, 0x5, 0x2, 0x2, 0x2, 0x3, 0x5, 0xe, 0x1, 0x1, 0x1, 0x2, 0x6, 0x18, 0x2, 0x39, 0x1, 0x1, 0x1, 0x1d, 0x4, 0x9, 0x2, 0x81, 0x56, 0x2, 0x1f, 0xa, 0x81, 0x93, 0x16, 0x3f, 0x4, 0x20, 0x2, 0xa0, 0xd4, 0x63, 0x1, 0x1, 0x1, 0x4, 0x1, 0x80, 0xd3, 0x1, 0x1, 0x1, 0xa0, 0xd4, 0xc1, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x2, 0x32, 0x96, 0x0, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11]; -_T Ps = [0x28, 0x1, 0x32, 0x1, 0x1f, 0x1, 0x8e, 0xbe, 0x1, 0x1, 0x1, 0x87, 0x5e, 0x1, 0x89, 0x7e, 0x1, 0x3, 0x1, 0x26, 0x1, 0x37, 0x1, 0xf, 0x1, 0x82, 0x7a, 0x1, 0x1, 0x1, 0x1e, 0x1, 0x84, 0x3e, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x50, 0x1, 0x20, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x94, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x40, 0x1, 0x1, 0x1, 0x21, 0x1, 0x84, 0x25, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x19, 0x1, 0x12, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0xac, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0xa0, 0xcd, 0x21, 0x1, 0x80, 0xd7, 0x1, 0x1d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x11, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0xaa, 0x1, 0x32, 0x1, 0x1f, 0x1, 0x3, 0x1, 0x2, 0x1]; -_T Zs = [0x20, 0x1, 0x7f, 0x1, 0x95, 0xdf, 0x1, 0x89, 0x7f, 0xb, 0x24, 0x1, 0x2f, 0x1, 0x8f, 0xa0, 0x1]; -_T Alphabetic = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x56, 0x1, 0x2a, 0x5, 0x1, 0x2, 0x2, 0x4, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x27, 0xe, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x8, 0x1b, 0x4, 0x4, 0x1d, 0xb, 0x5, 0x38, 0x1, 0x7, 0xe, 0x66, 0x1, 0x8, 0x4, 0x8, 0x4, 0x3, 0xa, 0x3, 0x2, 0x1, 0x10, 0x30, 0xd, 0x65, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x18, 0x2, 0x13, 0x13, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0xa, 0xc, 0x3, 0x7, 0x6, 0x4c, 0x1, 0x10, 0x1, 0x3, 0x4, 0xf, 0xd, 0x13, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x1, 0x1, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0xc, 0x2, 0xa, 0x1, 0x4, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x4, 0x5, 0x4, 0x2, 0x2, 0x2, 0x4, 0x1, 0x7, 0x4, 0x1, 0x1, 0x11, 0x6, 0xb, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x9, 0x1, 0x3, 0x1, 0x2, 0x3, 0x1, 0xf, 0x4, 0x15, 0x4, 0x4, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x9, 0x2, 0x4, 0x2, 0x1, 0x5, 0xd, 0x1, 0x10, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x3, 0x3, 0x1, 0x6, 0x1, 0x28, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x8, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x1c, 0x4, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x8, 0x1, 0x3, 0x1, 0x3, 0x8, 0x2, 0x6, 0x2, 0x1, 0x4, 0xd, 0x3, 0xc, 0xd, 0x1, 0x3, 0x1, 0x29, 0x2, 0x8, 0x1, 0x3, 0x1, 0x3, 0x1, 0x1, 0x5, 0x4, 0x7, 0x5, 0x16, 0x6, 0x1, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x8, 0x6, 0x1, 0x1, 0x1, 0x8, 0x12, 0x2, 0xd, 0x3a, 0x5, 0x7, 0x6, 0x1, 0x33, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x13, 0x1, 0x3, 0x2, 0x5, 0x1, 0x1, 0x6, 0x1, 0xe, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x4, 0x13, 0x4, 0x10, 0x1, 0x24, 0x43, 0x37, 0x1, 0x1, 0x2, 0x5, 0x10, 0x40, 0xa, 0x4, 0x2, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x14, 0xb, 0x15, 0xc, 0x14, 0xc, 0xd, 0x1, 0x3, 0x1, 0x2, 0xc, 0x34, 0x2, 0x13, 0xe, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x2b, 0x5, 0x46, 0xa, 0x1f, 0x1, 0xc, 0x4, 0x9, 0x17, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x1c, 0x4, 0x3f, 0x2, 0x14, 0x32, 0x1, 0x17, 0x2, 0xb, 0x3, 0x31, 0x34, 0x1, 0xf, 0x1, 0x8, 0x33, 0x2a, 0x2, 0x4, 0xa, 0x2c, 0x1, 0xb, 0xe, 0x37, 0x16, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x27, 0xe, 0xb, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0xb, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x83, 0x2d, 0x34, 0x87, 0x16, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x20, 0x2f, 0x1, 0x81, 0xd5, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x6, 0x3, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x5, 0x8, 0x3, 0x71, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x14, 0x1, 0x21, 0x18, 0x34, 0xc, 0x44, 0x1, 0x1, 0x2c, 0x6, 0x3, 0x1, 0x1, 0x3, 0xa, 0x21, 0x5, 0x23, 0xd, 0x1d, 0x3, 0x33, 0x1, 0xc, 0xf, 0x1, 0x10, 0x10, 0xa, 0x5, 0x1, 0x37, 0x9, 0xe, 0x12, 0x17, 0x3, 0x45, 0x1, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0x10, 0x2, 0x4, 0xb, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x7b, 0x15, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0xc, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x81, 0x6b, 0x12, 0x40, 0x2, 0x36, 0x28, 0xc, 0x74, 0x5, 0x1, 0x80, 0x87, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x59, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x2b, 0x5, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x28, 0x81, 0x58, 0x2a, 0x1, 0x2, 0x3, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0x9, 0x46, 0x2b, 0x5, 0xa, 0x39, 0x9, 0x1, 0xd, 0x19, 0x17, 0x33, 0x11, 0x4, 0x8, 0x23, 0x3, 0x1, 0x9, 0x40, 0x1, 0x4, 0x9, 0x2, 0xa, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x22, 0x2, 0x1, 0x6, 0x4, 0x3e, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x39, 0x17, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x8, 0x2, 0x2, 0x2, 0x2, 0x3, 0x1, 0x6, 0x1, 0x5, 0x7, 0x80, 0x9c, 0x42, 0x1, 0x3, 0x1, 0x4, 0x14, 0x3, 0x1e, 0x42, 0x2, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x36, 0x2, 0x7, 0x19, 0x6, 0x22, 0x3f, 0x1, 0x1, 0x3, 0x1, 0x3b, 0x36, 0x2, 0x1, 0x47, 0x1b, 0x2, 0xe, 0x15, 0x7, 0x80, 0xb9, 0x39, 0x67, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0x2, 0x2, 0x4, 0x5d, 0x8, 0x2, 0x2e, 0x2, 0x6, 0x1, 0x1, 0x1, 0x2, 0x1b, 0x33, 0x2, 0xa, 0x11, 0x48, 0x5, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x2d, 0x1, 0x7, 0x1, 0x1, 0x31, 0x1e, 0x2, 0x16, 0x1, 0xe, 0x49, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x2, 0x2, 0x18, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x4, 0x1, 0x1, 0x81, 0x47, 0x17, 0x9, 0x11, 0x1, 0x29, 0x3, 0x3, 0x6f, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x4, 0x39, 0x7, 0x11, 0x40, 0x2, 0x1, 0x1, 0xc, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x4, 0x1, 0x97, 0x61, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x80, 0xd5, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x5, 0x3e, 0x21, 0x1, 0x70, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x3, 0x1, 0x3, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x82, 0x74, 0x1a, 0x6, 0x1a, 0x6, 0x1a, 0x8e, 0x76, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T XID_Start = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xca, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x80, 0x81, 0x5, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x53, 0x1, 0x80, 0x8b, 0x8, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x1, 0x6, 0x29, 0x47, 0x1b, 0x4, 0x4, 0x2d, 0x2b, 0x23, 0x2, 0x1, 0x63, 0x1, 0x1, 0xf, 0x2, 0x7, 0x2, 0xa, 0x3, 0x2, 0x1, 0x10, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0x18, 0x21, 0x9, 0x2, 0x4, 0x1, 0x5, 0x16, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x17, 0x19, 0x7, 0xb, 0x5, 0x18, 0x1, 0x6, 0x11, 0x2a, 0x3a, 0x36, 0x3, 0x1, 0x12, 0x1, 0x7, 0xa, 0xf, 0x10, 0x4, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x10, 0x1, 0xd, 0x2, 0x1, 0x3, 0xe, 0x2, 0xa, 0x1, 0x8, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1f, 0x4, 0x1, 0x1, 0x13, 0x3, 0x10, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xf, 0x2, 0x17, 0x1, 0xb, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1e, 0x2, 0x1, 0x3, 0xf, 0x1, 0x11, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x16, 0x1, 0x34, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x1a, 0x3, 0x2, 0x1, 0x2, 0x2, 0x1e, 0x1, 0x4, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x1, 0x1f, 0x2, 0x1, 0x2, 0xf, 0x2, 0x11, 0x9, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x10, 0x1, 0x5, 0x3, 0x8, 0x3, 0x18, 0x6, 0x5, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3a, 0x30, 0x1, 0x1, 0xd, 0x7, 0x3a, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0xa, 0x1, 0x2, 0x5, 0x1, 0x1, 0x15, 0x4, 0x20, 0x1, 0x3f, 0x8, 0x1, 0x24, 0x1b, 0x5, 0x73, 0x2b, 0x14, 0x1, 0x10, 0x6, 0x4, 0x4, 0x3, 0x1, 0x3, 0x2, 0x7, 0x3, 0x4, 0xd, 0xc, 0x1, 0x11, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x81, 0x4d, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x25, 0x10, 0x10, 0x56, 0x2, 0x6, 0x3, 0x82, 0x6c, 0x2, 0x11, 0x1, 0x1a, 0x5, 0x4b, 0x3, 0xb, 0x7, 0x12, 0xd, 0x13, 0xe, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x23, 0x1, 0x4, 0x1, 0x43, 0x59, 0x7, 0x29, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x31, 0x1e, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x36, 0x17, 0x9, 0x35, 0x52, 0x1, 0x5d, 0x2f, 0x11, 0x8, 0x36, 0x1e, 0xd, 0x2, 0xa, 0x2c, 0x1a, 0x24, 0x29, 0x3, 0xa, 0x24, 0x2, 0x9, 0x7, 0x2b, 0x2, 0x3, 0x29, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0x7, 0x1, 0x1, 0x3, 0x3, 0x1, 0x7, 0x3, 0x4, 0x2, 0x6, 0x4, 0xd, 0x5, 0x3, 0x1, 0x7, 0x74, 0x1, 0xd, 0x1, 0x10, 0xd, 0x65, 0x1, 0x4, 0x1, 0x2, 0xa, 0x1, 0x1, 0x2, 0x6, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x10, 0x2, 0x4, 0x5, 0x5, 0x4, 0x1, 0x11, 0x29, 0x8a, 0x77, 0x80, 0xe5, 0x6, 0x4, 0x3, 0x2, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x1, 0x10, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x82, 0x26, 0x3, 0x19, 0x9, 0x7, 0x5, 0x2, 0x5, 0x4, 0x56, 0x6, 0x3, 0x1, 0x5a, 0x1, 0x4, 0x5, 0x2b, 0x1, 0x5e, 0x11, 0x20, 0x30, 0x10, 0x82, 0x0, 0x99, 0xc0, 0x40, 0xa0, 0x56, 0x8d, 0x43, 0x2e, 0x2, 0x81, 0xd, 0x3, 0x10, 0xa, 0x2, 0x14, 0x2f, 0x10, 0x1f, 0x2, 0x50, 0x27, 0x9, 0x2, 0x67, 0x2, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x17, 0x1d, 0x34, 0xe, 0x32, 0x3e, 0x6, 0x3, 0x1, 0x1, 0x2, 0xb, 0x1c, 0xa, 0x17, 0x19, 0x1d, 0x7, 0x2f, 0x1c, 0x1, 0x10, 0x5, 0x1, 0xa, 0xa, 0x5, 0x1, 0x29, 0x17, 0x3, 0x1, 0x8, 0x14, 0x17, 0x3, 0x1, 0x3, 0x32, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x3, 0x2, 0xb, 0x7, 0x3, 0xc, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x2b, 0x1, 0xe, 0x6, 0x73, 0x1d, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0xa, 0x1, 0xd, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x6c, 0x21, 0x80, 0x8b, 0x6, 0x80, 0xda, 0x12, 0x40, 0x2, 0x36, 0x28, 0xa, 0x77, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7e, 0x24, 0x1a, 0x6, 0x1a, 0xb, 0x38, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x23, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x45, 0x35, 0x81, 0xb, 0x1d, 0x3, 0x31, 0x2f, 0x20, 0xd, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x2, 0x24, 0x4, 0x8, 0x1, 0x5, 0x2a, 0x80, 0x9e, 0x12, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xc, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0xa, 0x17, 0x9, 0x1f, 0x41, 0x13, 0x1, 0x2, 0xa, 0x16, 0xa, 0x1a, 0x46, 0x38, 0x6, 0x2, 0x40, 0x1, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0x2a, 0x1d, 0x3, 0x1d, 0x23, 0x8, 0x1, 0x1c, 0x1b, 0x36, 0xa, 0x16, 0xa, 0x13, 0xd, 0x12, 0x6e, 0x49, 0x37, 0x33, 0xd, 0x33, 0xd, 0x24, 0x81, 0x5c, 0x2a, 0x6, 0x2, 0x4e, 0x1d, 0xa, 0x1, 0x8, 0x16, 0x2a, 0x12, 0x2e, 0x15, 0x1b, 0x17, 0xc, 0x35, 0x39, 0x2, 0x2, 0x1, 0xd, 0x2d, 0x20, 0x19, 0x1a, 0x24, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x23, 0x3, 0x1, 0xc, 0x30, 0xe, 0x4, 0x15, 0x1, 0x1, 0x1, 0x23, 0x12, 0x1, 0x19, 0x13, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xa, 0x7, 0x2f, 0x26, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x12, 0x1, 0xc, 0x5, 0x80, 0x9e, 0x35, 0x12, 0x4, 0x14, 0x3, 0x1e, 0x30, 0x14, 0x2, 0x1, 0x1, 0x80, 0xb8, 0x2f, 0x29, 0x4, 0x24, 0x30, 0x14, 0x1, 0x3b, 0x2b, 0xd, 0x1, 0x47, 0x1b, 0x25, 0x7, 0x80, 0xb9, 0x2c, 0x74, 0x40, 0x1f, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0xf, 0x1, 0x1, 0x1, 0x5e, 0x8, 0x2, 0x27, 0x10, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa, 0x28, 0x7, 0x1, 0x15, 0x1, 0xb, 0x2e, 0x13, 0x1, 0x12, 0x49, 0x81, 0x7, 0x9, 0x1, 0x25, 0x11, 0x1, 0x31, 0x1e, 0x70, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x19, 0x6, 0x1, 0x2, 0x1, 0x20, 0xe, 0x1, 0x81, 0x47, 0x13, 0xf, 0x1, 0x1, 0xd, 0x1, 0x22, 0x7c, 0x1, 0x4f, 0x83, 0x9a, 0x66, 0x6f, 0x11, 0x80, 0xc4, 0x8a, 0x4c, 0x61, 0xf, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x11, 0x4f, 0x11, 0x1e, 0x12, 0x30, 0x10, 0x4, 0x1f, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x40, 0x80, 0x80, 0x4b, 0x5, 0x1, 0x42, 0xd, 0x40, 0x2, 0x1, 0x1, 0x1c, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x97, 0x66, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x19, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x8, 0x87, 0x34, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x10, 0x1, 0x81, 0x41, 0x1e, 0x12, 0x2c, 0x81, 0xe4, 0x1c, 0x82, 0xf4, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x3b, 0x44, 0x7, 0x1, 0x84, 0xb4, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x91, 0x44, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T Grapheme_Link = [0x89, 0x4d, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x7f, 0x1, 0x6d, 0x2, 0x10, 0x1, 0x7c, 0x1, 0x6f, 0x1, 0x7f, 0x1, 0x80, 0xc9, 0x1, 0x80, 0xb4, 0x2, 0x86, 0xd9, 0x2, 0x1e, 0x1, 0x80, 0x9d, 0x1, 0x82, 0x8d, 0x1, 0x80, 0xe3, 0x1, 0x65, 0x2, 0x46, 0x2, 0x91, 0x8b, 0x1, 0xa0, 0x7a, 0x86, 0x1, 0x25, 0x1, 0x80, 0x97, 0x1, 0x80, 0x8e, 0x1, 0x6c, 0x1, 0x81, 0x35, 0x1, 0x80, 0xf6, 0x1, 0xa0, 0x5e, 0x51, 0x1, 0x86, 0x6, 0x1, 0x29, 0x1, 0xe, 0x1, 0x39, 0x1, 0x79, 0x2, 0x80, 0x8b, 0x1, 0x74, 0x1, 0x80, 0xb4, 0x1, 0x62, 0x1, 0x80, 0xf4, 0x1, 0x7f, 0x1, 0x80, 0xfc, 0x1, 0x7f, 0x1, 0x76, 0x1, 0x74, 0x1, 0x81, 0xd, 0x1, 0x81, 0x3, 0x2, 0x80, 0xa1, 0x1, 0x53, 0x1, 0x12, 0x1, 0x51, 0x1, 0x81, 0xa5, 0x1, 0x81, 0x4, 0x2, 0x51, 0x1, 0x81, 0xa9, 0x2]; -_T Dash = [0x2d, 0x1, 0x85, 0x5c, 0x1, 0x33, 0x1, 0x8e, 0x41, 0x1, 0x84, 0x5, 0x1, 0x88, 0x9, 0x6, 0x3d, 0x1, 0x27, 0x1, 0xf, 0x1, 0x81, 0x86, 0x1, 0x8c, 0x4, 0x1, 0x2, 0x1, 0x1f, 0x2, 0x4, 0x1, 0x1c, 0x1, 0x81, 0xbe, 0x1, 0x13, 0x1, 0x6f, 0x1, 0xa0, 0xcd, 0x90, 0x2, 0x25, 0x1, 0xa, 0x1, 0x80, 0xa9, 0x1, 0x8f, 0x9f, 0x1]; -_T Nl = [0x96, 0xee, 0x3, 0x8a, 0x6f, 0x23, 0x2, 0x4, 0x8e, 0x7e, 0x1, 0x19, 0x9, 0xe, 0x3, 0xa0, 0x76, 0xab, 0xa, 0xa0, 0x5a, 0x50, 0x35, 0x81, 0xcc, 0x1, 0x8, 0x1, 0x80, 0x86, 0x5, 0xa0, 0x20, 0x2a, 0x6f]; -_T IDS_Trinary_Operator = [0xa0, 0x2f, 0xf2, 0x2]; -_T Terminal_Punctuation = [0x21, 0x1, 0xa, 0x1, 0x1, 0x1, 0xb, 0x2, 0x3, 0x1, 0x83, 0x3e, 0x1, 0x8, 0x1, 0x82, 0x1, 0x1, 0x39, 0x1, 0x48, 0x1, 0xe, 0x1, 0x1, 0x3, 0x80, 0xb4, 0x1, 0x2b, 0xb, 0x1, 0x1, 0x80, 0xeb, 0x2, 0x36, 0xf, 0x1f, 0x1, 0x81, 0x5, 0x2, 0x84, 0xf4, 0x2, 0x80, 0xac, 0x1, 0x4, 0x6, 0x81, 0x37, 0x2, 0x83, 0x15, 0x8, 0x83, 0x5, 0x1, 0x7c, 0x3, 0x47, 0x2, 0x80, 0x9d, 0x3, 0x3, 0x1, 0x27, 0x4, 0x2, 0x2, 0x81, 0x3a, 0x2, 0x81, 0x62, 0x4, 0x80, 0xae, 0x2, 0x1, 0x3, 0x1d, 0x2, 0x80, 0xbc, 0x5, 0x3e, 0x2, 0x83, 0xbc, 0x2, 0x9, 0x3, 0x8d, 0xe4, 0x1, 0xd, 0x1, 0x4, 0x1, 0xa, 0x1, 0x1, 0x2, 0x3, 0x2, 0x81, 0xac, 0x2, 0xa0, 0x74, 0xfb, 0x2, 0x81, 0xd, 0x3, 0x80, 0xe3, 0x5, 0x81, 0x7e, 0x2, 0x56, 0x2, 0x5f, 0x1, 0x80, 0x97, 0x3, 0x80, 0x93, 0x3, 0x7f, 0x1, 0x10, 0x2, 0x80, 0xf9, 0x1, 0xa0, 0x52, 0x64, 0x3, 0x1, 0x4, 0x80, 0xa9, 0x1, 0xa, 0x1, 0x1, 0x1, 0xb, 0x2, 0x3, 0x1, 0x41, 0x1, 0x2, 0x1, 0x84, 0x3a, 0x1, 0x30, 0x1, 0x84, 0x86, 0x1, 0x80, 0xc7, 0x1, 0x81, 0x36, 0x2, 0x80, 0x98, 0x6, 0x44, 0x6, 0x59, 0x4, 0x83, 0xb8, 0x5, 0x2c, 0x4, 0x80, 0xbd, 0x7, 0x70, 0x4, 0x7f, 0x3, 0x80, 0x81, 0x2, 0x6, 0x1, 0x10, 0x2, 0x58, 0x5, 0x6c, 0x1, 0x81, 0xa1, 0x3, 0xc, 0x2, 0x81, 0x66, 0x4, 0x3, 0xf, 0x69, 0x2, 0x80, 0xf9, 0x3, 0x82, 0x5, 0x1, 0x1, 0x1, 0x80, 0xfb, 0x2, 0x57, 0x2, 0x4, 0x2, 0x81, 0x9e, 0x3, 0x2d, 0x1, 0x82, 0x85, 0x2, 0x4a, 0x2, 0x85, 0x2b, 0x5, 0xa0, 0x45, 0xf9, 0x2, 0x80, 0x85, 0x1, 0x41, 0x3, 0xa, 0x1, 0x83, 0x52, 0x2, 0xa0, 0x4e, 0x6, 0x1, 0x9d, 0xe7, 0x4]; -_T Nd = [0x30, 0xa, 0x86, 0x26, 0xa, 0x80, 0x86, 0xa, 0x80, 0xc6, 0xa, 0x81, 0x9c, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x76, 0xa, 0x60, 0xa, 0x76, 0xa, 0x46, 0xa, 0x81, 0x16, 0xa, 0x46, 0xa, 0x87, 0x46, 0xa, 0x26, 0xa, 0x81, 0x2c, 0xa, 0x80, 0x80, 0xa, 0x80, 0xa6, 0xa, 0x6, 0xa, 0x80, 0xb6, 0xa, 0x56, 0xa, 0x80, 0x86, 0xa, 0x6, 0xa, 0xa0, 0x89, 0xc6, 0xa, 0x82, 0xa6, 0xa, 0x26, 0xa, 0x80, 0xc6, 0xa, 0x16, 0xa, 0x56, 0xa, 0x81, 0x96, 0xa, 0xa0, 0x53, 0x16, 0xa, 0x85, 0x86, 0xa, 0x88, 0x86, 0xa, 0x83, 0x2c, 0xa, 0x80, 0x80, 0xa, 0x3c, 0xa, 0x80, 0x90, 0xa, 0x81, 0x16, 0xa, 0x81, 0x56, 0xa, 0x76, 0xa, 0x81, 0x76, 0xa, 0x66, 0xa, 0x66, 0xa, 0x81, 0xa6, 0xa, 0x66, 0xa, 0x82, 0xf6, 0xa, 0x80, 0xf6, 0xa, 0x46, 0xa, 0x81, 0xa6, 0xa, 0xa0, 0x4b, 0x6, 0xa, 0x56, 0xa, 0x80, 0x86, 0xa, 0xa0, 0x6c, 0x74, 0x32, 0x89, 0x40, 0xa, 0x81, 0xa6, 0xa, 0x81, 0xf6, 0xa, 0x84, 0x56, 0xa, 0x92, 0x96, 0xa]; -_T ID_Compat_Math_Start = [0xa0, 0x22, 0x2, 0x1, 0x4, 0x1, 0x16, 0x1, 0xa1, 0xb4, 0xa2, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1, 0x1f, 0x1, 0x19, 0x1]; -_T Prepended_Concatenation_Mark = [0x86, 0x0, 0x6, 0x80, 0xd7, 0x1, 0x31, 0x1, 0x81, 0x80, 0x2, 0x50, 0x1, 0xa1, 0x7, 0xda, 0x1, 0xf, 0x1]; -_T ASCII_Hex_Digit = [0x30, 0xa, 0x7, 0x6, 0x1a, 0x6]; -_T Mc = [0x89, 0x3, 0x1, 0x37, 0x1, 0x2, 0x3, 0x8, 0x4, 0x1, 0x2, 0x32, 0x2, 0x3a, 0x3, 0x6, 0x2, 0x2, 0x2, 0xa, 0x1, 0x2b, 0x1, 0x3a, 0x3, 0x42, 0x1, 0x3a, 0x3, 0x8, 0x1, 0x1, 0x2, 0x35, 0x2, 0x3a, 0x1, 0x1, 0x1, 0x6, 0x2, 0x2, 0x2, 0xa, 0x1, 0x66, 0x2, 0x1, 0x2, 0x3, 0x3, 0x1, 0x3, 0xa, 0x1, 0x29, 0x3, 0x3d, 0x4, 0x3d, 0x2, 0x3a, 0x1, 0x1, 0x5, 0x2, 0x2, 0x1, 0x2, 0x9, 0x2, 0x1c, 0x1, 0xe, 0x2, 0x3a, 0x3, 0x5, 0x3, 0x1, 0x3, 0xa, 0x1, 0x2a, 0x2, 0x4b, 0x3, 0x6, 0x8, 0x12, 0x2, 0x81, 0x4a, 0x2, 0x3f, 0x1, 0x80, 0xab, 0x2, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x19, 0x2, 0xa, 0x3, 0x2, 0x7, 0x15, 0x2, 0x2, 0x6, 0x2, 0x1, 0xa, 0x3, 0x86, 0x78, 0x1, 0x1e, 0x1, 0x80, 0x81, 0x1, 0x7, 0x8, 0x1, 0x2, 0x81, 0x5a, 0x4, 0x2, 0x3, 0x4, 0x2, 0x1, 0x6, 0x80, 0xe0, 0x2, 0x3a, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x2, 0x8, 0x6, 0x80, 0x91, 0x1, 0x30, 0x1, 0x5, 0x1, 0x1, 0x5, 0x1, 0x2, 0x3d, 0x1, 0x1e, 0x1, 0x4, 0x2, 0x2, 0x1, 0x3c, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x2, 0x30, 0x8, 0x8, 0x2, 0x80, 0xab, 0x1, 0x15, 0x1, 0x93, 0x36, 0x2, 0xa0, 0x77, 0xf3, 0x2, 0x2, 0x1, 0x58, 0x2, 0x32, 0x10, 0x80, 0x8e, 0x2, 0x2f, 0x1, 0x30, 0x2, 0x4, 0x2, 0x2, 0x3, 0x6e, 0x2, 0x2, 0x2, 0x18, 0x1, 0x2d, 0x1, 0x1, 0x1, 0x6d, 0x1, 0x2, 0x2, 0x5, 0x1, 0x80, 0xed, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0xa0, 0x64, 0x13, 0x1, 0x1, 0x1, 0x7f, 0x1, 0x2d, 0x3, 0x4, 0x2, 0x73, 0x1, 0x18, 0x2, 0x3b, 0x1, 0x30, 0x3, 0x9, 0x2, 0xd, 0x1, 0x5d, 0x3, 0x3, 0x2, 0x1, 0x1, 0x80, 0xaa, 0x3, 0x1f, 0x2, 0x3a, 0x2, 0x1, 0x4, 0x2, 0x2, 0x2, 0x3, 0x9, 0x1, 0xa, 0x2, 0x80, 0xd1, 0x3, 0x8, 0x2, 0x3, 0x1, 0x6a, 0x3, 0x6, 0x1, 0x1, 0x4, 0x2, 0x1, 0x80, 0xed, 0x3, 0x6, 0x4, 0x2, 0x1, 0x71, 0x3, 0x8, 0x2, 0x1, 0x1, 0x6d, 0x1, 0x1, 0x2, 0x6, 0x1, 0x69, 0x2, 0x4, 0x1, 0x81, 0x5, 0x3, 0x9, 0x1, 0x80, 0xf7, 0x6, 0x1, 0x2, 0x4, 0x1, 0x2, 0x1, 0x1, 0x1, 0x80, 0x8e, 0x3, 0x8, 0x4, 0x4, 0x1, 0x54, 0x1, 0x1d, 0x2, 0x3e, 0x1, 0x81, 0x97, 0x1, 0xe, 0x1, 0x6a, 0x1, 0x7, 0x1, 0x2, 0x1, 0x80, 0xd5, 0x5, 0x4, 0x2, 0x1, 0x1, 0x81, 0x5e, 0x2, 0xc, 0x1, 0x30, 0x2, 0x8, 0x2, 0x1, 0x1, 0xa0, 0x50, 0xf, 0x37, 0x68, 0x2, 0xa0, 0x61, 0x73, 0x2, 0x6, 0x6]; -_T Radical = [0xa0, 0x2e, 0x80, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6]; -_T Quotation_Mark = [0x22, 0x1, 0x4, 0x1, 0x80, 0x83, 0x1, 0xf, 0x1, 0x9f, 0x5c, 0x8, 0x19, 0x2, 0x8e, 0x7, 0x1, 0x81, 0xc9, 0x4, 0xd, 0x3, 0xa0, 0xce, 0x21, 0x4, 0x80, 0xbd, 0x1, 0x4, 0x1, 0x5a, 0x2]; -_T Other_Default_Ignorable_Code_Point = [0x83, 0x4f, 0x1, 0x8e, 0xf, 0x2, 0x86, 0x53, 0x2, 0x88, 0xaf, 0x1, 0x90, 0xfe, 0x1, 0xa0, 0xce, 0x3b, 0x1, 0x4f, 0x9, 0xad, 0x0, 0x7, 0x1, 0x1, 0x1e, 0x60, 0x80, 0x80, 0x80, 0xf0, 0x8e, 0x10]; -_T Join_Control = [0xa0, 0x20, 0xc, 0x2]; -_T Grapheme_Base = [0x20, 0x5f, 0x21, 0xd, 0x1, 0x82, 0x52, 0x70, 0x8, 0x2, 0x6, 0x4, 0x7, 0x1, 0x1, 0x1, 0x14, 0x1, 0x80, 0xe0, 0x7, 0x80, 0xa6, 0x1, 0x26, 0x2, 0x32, 0x2, 0x3, 0x2e, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x9, 0x1b, 0x4, 0x6, 0x11, 0xa, 0xb, 0x1, 0x1, 0x2e, 0x15, 0x10, 0x1, 0x65, 0x8, 0x1, 0x6, 0x2, 0x2, 0x1, 0x4, 0x20, 0x2, 0x1, 0x1, 0x1e, 0x1d, 0x59, 0xb, 0x1, 0xe, 0x2b, 0x9, 0x7, 0x3, 0x18, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x7, 0xf, 0x1, 0x19, 0x5, 0x1, 0x1, 0xb, 0x5, 0x1f, 0x11, 0x2a, 0x39, 0x37, 0x1, 0x1, 0x1, 0x4, 0x8, 0x4, 0x1, 0x3, 0x7, 0xa, 0x2, 0x1d, 0x1, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x3, 0x1, 0x1, 0x2, 0x6, 0x2, 0x2, 0x2, 0x1, 0x1, 0xd, 0x2, 0x1, 0x3, 0x4, 0x18, 0x5, 0x1, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x4, 0x3, 0x18, 0x4, 0x1, 0x1, 0x7, 0xa, 0x2, 0x3, 0x1, 0x1, 0xc, 0x1, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x4, 0x8, 0x1, 0x1, 0x2, 0x3, 0x1, 0xf, 0x2, 0x4, 0xc, 0x7, 0x1, 0x8, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x2, 0x1, 0x6, 0x2, 0x2, 0x2, 0xf, 0x2, 0x1, 0x3, 0x4, 0x12, 0xb, 0x1, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x5, 0x1, 0x1, 0x2, 0x3, 0x3, 0x1, 0x3, 0x3, 0x1, 0x15, 0x15, 0x6, 0x3, 0x1, 0x8, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x3, 0x1, 0x3, 0x4, 0x13, 0x3, 0x2, 0x1, 0x2, 0x2, 0x4, 0xa, 0x7, 0xa, 0x1, 0xb, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x3, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x2, 0x1, 0x2, 0x11, 0x2, 0x1, 0x2, 0x4, 0xa, 0x1, 0x3, 0xe, 0xb, 0x1, 0x3, 0x1, 0x29, 0x2, 0x1, 0x1, 0x2, 0x5, 0x3, 0x1, 0x3, 0x1, 0x2, 0x4, 0x3, 0x1, 0xa, 0x4, 0x1a, 0x2, 0x2, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x9, 0x2, 0x6, 0x7, 0x7, 0xa, 0x2, 0x3, 0xc, 0x30, 0x1, 0x2, 0xb, 0x8, 0x8, 0xd, 0x25, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0xa, 0x1, 0x2, 0x9, 0x1, 0x2, 0x5, 0x1, 0x1, 0x9, 0xa, 0x2, 0x4, 0x20, 0x18, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0xe, 0x1, 0x24, 0x12, 0x1, 0x5, 0x1, 0x2, 0x5, 0x31, 0x8, 0x1, 0x6, 0x1, 0xd, 0x25, 0x2d, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x2, 0x19, 0x2, 0x4, 0x3, 0x10, 0x4, 0xd, 0x1, 0x2, 0x2, 0x6, 0x1, 0xf, 0x1, 0x28, 0x1, 0x1, 0x5, 0x1, 0x2, 0x81, 0x79, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x5, 0x1d, 0x3, 0x1a, 0x6, 0x56, 0x2, 0x6, 0x2, 0x82, 0x9d, 0x3, 0x59, 0x7, 0x12, 0x3, 0x1, 0x9, 0x13, 0x2, 0x3, 0x9, 0x12, 0xe, 0xd, 0x1, 0x3, 0xf, 0x34, 0x2, 0x1, 0x7, 0x8, 0x1, 0x2, 0xb, 0x9, 0x3, 0xa, 0x6, 0xa, 0x6, 0xb, 0x5, 0xa, 0x6, 0x59, 0x7, 0x5, 0x2, 0x22, 0x1, 0x1, 0x5, 0x46, 0xa, 0x1f, 0x4, 0x4, 0x2, 0x3, 0x4, 0x2, 0x1, 0x6, 0x7, 0x1, 0x3, 0x2a, 0x2, 0x5, 0xb, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x3, 0x39, 0x2, 0x2, 0x3, 0x38, 0x1, 0x1, 0x9, 0x1, 0x1, 0x2, 0x8, 0x6, 0xd, 0xa, 0x6, 0xa, 0x6, 0xe, 0x56, 0x30, 0x7, 0x1, 0x1, 0x5, 0x1, 0xa, 0x3, 0x1b, 0x9, 0xb, 0x3, 0x20, 0x4, 0x2, 0x2, 0x1, 0x3, 0x38, 0x1, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x2, 0x8, 0x30, 0x8, 0x2, 0x5, 0xf, 0x3, 0x3c, 0x7, 0x2b, 0x2, 0xb, 0xb, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x1, 0x5, 0x80, 0xc0, 0x40, 0x81, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0xf, 0x1, 0xe, 0x2, 0x6, 0x1, 0x13, 0x2, 0x3, 0x1, 0x9, 0x1, 0xb, 0x5, 0x18, 0x7, 0x31, 0x10, 0x2, 0x2, 0x1b, 0x1, 0xd, 0x3, 0x21, 0x3f, 0x80, 0x8c, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x87, 0x14, 0x2, 0x20, 0x1, 0x81, 0x58, 0x3, 0x2, 0x5, 0x2d, 0x1, 0x1, 0x5, 0x1, 0x2, 0x38, 0x7, 0x2, 0xf, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x21, 0x5e, 0x22, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x1a, 0x3a, 0x6, 0x10, 0x1, 0x56, 0x4, 0x65, 0x5, 0x2b, 0x1, 0x5e, 0x1, 0x54, 0xb, 0x30, 0x1, 0xa0, 0x72, 0x6d, 0x3, 0x37, 0x9, 0x81, 0x5c, 0x14, 0x2f, 0x4, 0x1, 0xa, 0x20, 0x2, 0x50, 0x2, 0x6, 0x8, 0x80, 0xcb, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x19, 0x2, 0x5, 0x4, 0xa, 0x6, 0x38, 0x8, 0x44, 0xa, 0xc, 0x18, 0xd, 0x1, 0x26, 0x8, 0x19, 0xb, 0x2, 0xb, 0x1e, 0x6, 0x30, 0x1, 0x2, 0x4, 0x2, 0x2, 0x10, 0x1, 0xb, 0x4, 0x7, 0x1, 0x19, 0x1, 0x29, 0x6, 0x2, 0x2, 0x2, 0xb, 0x3, 0x1, 0x8, 0x1, 0x1, 0x2, 0xa, 0x2, 0x20, 0x1, 0x33, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x1, 0x18, 0x11, 0x2, 0x8, 0xb, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0x1, 0x3c, 0x4, 0x75, 0x1, 0x2, 0x1, 0x4, 0x3, 0xa, 0x6, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x21, 0x4, 0x81, 0x6e, 0x2, 0x6a, 0x26, 0x7, 0xc, 0x5, 0x5, 0x1, 0x1, 0x18, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x7d, 0x10, 0x81, 0xbd, 0x2, 0x36, 0x7, 0x1, 0x20, 0x10, 0x10, 0xa, 0x16, 0x23, 0x1, 0x13, 0x1, 0x4, 0x4, 0x5, 0x1, 0x80, 0x87, 0x4, 0x80, 0x9d, 0x2, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3, 0x3, 0x7, 0x1, 0x7, 0xd, 0x2, 0x2, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b, 0x5, 0x3, 0x4, 0x2d, 0x3, 0x58, 0x1, 0xd, 0x3, 0x1, 0x2f, 0x2d, 0x80, 0x83, 0x1d, 0x3, 0x31, 0x10, 0x1b, 0x4, 0x24, 0x9, 0x1e, 0x5, 0x26, 0xa, 0x1e, 0x1, 0x25, 0x4, 0xe, 0x2a, 0x80, 0x9e, 0x2, 0xa, 0x6, 0x24, 0x4, 0x24, 0x4, 0x28, 0x8, 0x34, 0xb, 0xc, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x43, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8, 0x18, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x45, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x17, 0x1, 0x48, 0x8, 0x9, 0x30, 0x13, 0x1, 0x2, 0x5, 0x21, 0x3, 0x1b, 0x5, 0x1, 0x40, 0x38, 0x4, 0x14, 0x2, 0x2f, 0xf, 0x4, 0x1, 0x3, 0x1, 0x1d, 0xa, 0x9, 0x7, 0x9, 0x7, 0x40, 0x20, 0x25, 0x6, 0xc, 0x9, 0x36, 0x3, 0x1d, 0x2, 0x1b, 0x5, 0x1a, 0x7, 0x4, 0xc, 0x7, 0x50, 0x49, 0x37, 0x33, 0xd, 0x33, 0x7, 0x2a, 0xc, 0xa, 0x81, 0x26, 0x1f, 0x1, 0x2a, 0x3, 0x1, 0x2, 0x2, 0x4e, 0x28, 0x8, 0x16, 0xb, 0x9, 0x16, 0x12, 0x4, 0x4, 0x26, 0x1c, 0x14, 0x17, 0x9, 0x1, 0x1, 0x36, 0xf, 0x7, 0x4, 0x1e, 0x1, 0x2, 0x2, 0x1, 0xc, 0x31, 0x4, 0x2, 0x2, 0x2, 0x1, 0x4, 0xe, 0x19, 0x7, 0xa, 0x9, 0x24, 0x5, 0x1, 0x9, 0x12, 0x8, 0x23, 0x1, 0x3, 0xb, 0x34, 0x9, 0xa, 0x4, 0x2, 0x1, 0x10, 0x1, 0x14, 0xb, 0x12, 0x1, 0x1c, 0x3, 0x2, 0x1, 0x1, 0x2, 0x6, 0x1, 0x2, 0x3f, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb, 0x6, 0x2f, 0x1, 0x3, 0xd, 0xa, 0x8, 0x2, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x3, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0xc, 0x7, 0x80, 0x9c, 0x38, 0x8, 0x2, 0x3, 0x1, 0x1, 0x15, 0x1, 0x1, 0x1, 0x3, 0x1e, 0x30, 0x1, 0x2, 0x6, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x2, 0x4, 0x8, 0xa, 0x80, 0xa6, 0x2f, 0x1, 0x2, 0x6, 0x4, 0x2, 0x1, 0x2, 0x1b, 0x24, 0x33, 0x8, 0x2, 0x1, 0x1, 0x2, 0x4, 0xb, 0xa, 0x6, 0xd, 0x13, 0x2b, 0x1, 0x1, 0x1, 0x2, 0x6, 0x1, 0x1, 0x2, 0x6, 0xa, 0x36, 0x1b, 0x5, 0x2, 0x4, 0x1, 0x9, 0x17, 0x80, 0xb9, 0x2f, 0x9, 0x1, 0x2, 0x1, 0x64, 0x53, 0xc, 0x8, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x18, 0x1, 0x5, 0x1, 0x2, 0x4, 0x1, 0x1, 0x4, 0x1, 0x3, 0x9, 0xa, 0x46, 0x8, 0x2, 0x2a, 0x8, 0x4, 0x1, 0x4, 0x1b, 0x1, 0xa, 0x28, 0x6, 0x2, 0x4, 0x8, 0x9, 0x1, 0x6, 0x2, 0x3, 0x2e, 0xd, 0x1, 0x2, 0x9, 0xd, 0x49, 0x7, 0xa, 0x80, 0xf6, 0x9, 0x1, 0x26, 0xe, 0x1, 0x1, 0x6, 0xa, 0x1d, 0x3, 0x20, 0x19, 0x1, 0x7, 0x1, 0x2, 0x1, 0x4b, 0x7, 0x1, 0x2, 0x1, 0x26, 0x15, 0x1, 0x9, 0xa, 0x6, 0x6, 0x1, 0x2, 0x1, 0x25, 0x4, 0x2, 0x1, 0x1, 0x1, 0x1, 0x7, 0xa, 0x81, 0x36, 0x13, 0x2, 0x4, 0x9, 0xf, 0x1, 0x24, 0x8, 0x2, 0x1, 0x1, 0x1, 0x17, 0x56, 0x1, 0xf, 0x32, 0xd, 0x83, 0x9b, 0x66, 0x6f, 0x1, 0x5, 0xb, 0x80, 0xc4, 0x8a, 0x4c, 0x63, 0xd, 0x84, 0x30, 0x11, 0x6, 0x8f, 0xb9, 0x82, 0x47, 0xa0, 0x21, 0xb9, 0x82, 0x39, 0x7, 0x1f, 0x1, 0xa, 0x4, 0x51, 0x1, 0xa, 0x6, 0x1e, 0x7, 0x1, 0xa, 0x30, 0x7, 0xf, 0xa, 0xa, 0x1, 0x7, 0x1, 0x15, 0x5, 0x13, 0x82, 0xb0, 0x5b, 0x65, 0x4b, 0x5, 0x38, 0xb, 0xd, 0x40, 0x4, 0xc, 0x2, 0xe, 0x97, 0xf8, 0x8, 0x84, 0xd6, 0x2a, 0x9, 0xa0, 0x22, 0xe7, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x81, 0x23, 0xf, 0x1, 0x1d, 0x3, 0x2, 0x1, 0xe, 0x4, 0x8, 0x81, 0x8c, 0x89, 0x4, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x2, 0x1, 0x2, 0x1, 0x92, 0xb0, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3c, 0x1, 0x1, 0x3, 0x4, 0x15, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x15, 0x42, 0x3, 0x1, 0x7a, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x82, 0x32, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x7, 0x84, 0x74, 0x1f, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x80, 0x92, 0x2d, 0xa, 0x7, 0x2, 0xa, 0x4, 0x2, 0x81, 0x40, 0x1e, 0x12, 0x2c, 0x4, 0xa, 0x5, 0x1, 0x81, 0xd0, 0x1c, 0x4, 0xa, 0x82, 0xe6, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf, 0x1, 0x80, 0xc5, 0x2, 0x9, 0x30, 0x44, 0x7, 0x1, 0x4, 0xa, 0x4, 0x2, 0x83, 0x11, 0x44, 0x4c, 0x3d, 0x80, 0xc2, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2, 0x81, 0xe, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1d, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0x84, 0x6, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T Uppercase = [0x41, 0x1a, 0x65, 0x17, 0x1, 0x7, 0x21, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0x2, 0x4, 0x1, 0x2, 0x1, 0x3, 0x3, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x3, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x81, 0x21, 0x1, 0x1, 0x1, 0x3, 0x1, 0x8, 0x1, 0x6, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x1, 0x11, 0x1, 0x9, 0x23, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x2, 0x1, 0x1, 0x2, 0x2, 0x33, 0x30, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x26, 0x8b, 0x49, 0x26, 0x1, 0x1, 0x5, 0x1, 0x82, 0xd2, 0x56, 0x88, 0x9a, 0x2b, 0x2, 0x3, 0x81, 0x40, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x8, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0x6, 0xb, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x8, 0x48, 0x4, 0xc, 0x4, 0xc, 0x4, 0xc, 0x5, 0xb, 0x4, 0x81, 0x6, 0x1, 0x4, 0x1, 0x3, 0x3, 0x2, 0x3, 0x2, 0x1, 0x3, 0x5, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x4, 0xa, 0x2, 0x5, 0x1, 0x1a, 0x10, 0x13, 0x1, 0x83, 0x32, 0x1a, 0x87, 0x30, 0x30, 0x30, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x2, 0x1, 0x8, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x1, 0x1, 0x1, 0x4, 0x1, 0xa0, 0x79, 0x4d, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x87, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x6, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1c, 0x1, 0xa0, 0x57, 0x2b, 0x1a, 0x84, 0xc5, 0x28, 0x80, 0x88, 0x24, 0x80, 0x9c, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x86, 0xea, 0x33, 0x8b, 0xed, 0x20, 0xa0, 0x55, 0x80, 0x20, 0xa0, 0x65, 0xa0, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0x8, 0x1a, 0x1a, 0x1a, 0x2, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1b, 0x2, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1b, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1e, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x19, 0x21, 0x1, 0x91, 0x35, 0x22, 0x88, 0xe, 0x1a, 0x6, 0x1a, 0x6, 0x1a]; -_T Zl = [0xa0, 0x20, 0x28, 0x1]; -_T Hex_Digit = [0x30, 0xa, 0x7, 0x6, 0x1a, 0x6, 0xa0, 0xfe, 0xa9, 0xa, 0x7, 0x6, 0x1a, 0x6]; -_T Zp = [0xa0, 0x20, 0x29, 0x1]; -_T Pattern_White_Space = [0x9, 0x5, 0x12, 0x1, 0x64, 0x1, 0x9f, 0x88, 0x2, 0x18, 0x2]; -_T Diacritic = [0x5e, 0x1, 0x1, 0x1, 0x47, 0x1, 0x6, 0x1, 0x4, 0x1, 0x2, 0x2, 0x81, 0xf7, 0x80, 0x9f, 0x1, 0x8, 0x5, 0x6, 0x11, 0x2, 0x4, 0x1, 0x9, 0x2, 0x80, 0xfd, 0x5, 0x80, 0xd1, 0x1, 0x37, 0x11, 0x1, 0x1b, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x80, 0x86, 0x8, 0x4, 0x2, 0x80, 0x86, 0x2, 0x4, 0x2, 0x3, 0x3, 0x43, 0x1b, 0x5b, 0xb, 0x3a, 0xb, 0x22, 0x2, 0x7e, 0x8, 0x29, 0xa, 0x10, 0x1c, 0x3d, 0x1, 0x10, 0x1, 0x3, 0x4, 0x1c, 0x1, 0x4a, 0x1, 0x10, 0x1, 0x6e, 0x1, 0x10, 0x1, 0x6e, 0x1, 0x10, 0x1, 0x2f, 0x3, 0x3c, 0x1, 0x10, 0x1, 0x7, 0x1, 0x77, 0x1, 0x6e, 0x1, 0x10, 0x1, 0x6e, 0x1, 0x10, 0x1, 0x6d, 0x2, 0x10, 0x1, 0x7c, 0x1, 0x7c, 0x6, 0x1, 0x1, 0x6b, 0x1, 0xd, 0x5, 0x4b, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x2, 0x42, 0x3, 0x1, 0x2, 0x3e, 0x1, 0x70, 0x1, 0x1, 0x2, 0x28, 0x2, 0x4, 0x5, 0x19, 0x7, 0x1, 0x1, 0xa, 0x2, 0x82, 0xc1, 0x3, 0x83, 0xb4, 0x2, 0x80, 0xb3, 0xb, 0x9, 0x1, 0x81, 0x5b, 0x3, 0x81, 0x39, 0x8, 0x2, 0x1, 0x30, 0xf, 0x2, 0xb, 0x68, 0x1, 0xf, 0x1, 0x26, 0x9, 0x36, 0x2, 0x80, 0x8a, 0x2, 0x40, 0x6, 0x52, 0x19, 0x4, 0x1, 0x6, 0x1, 0x2, 0x3, 0x32, 0x3f, 0x59, 0xc, 0x25, 0xb, 0x81, 0xbd, 0x1, 0x1, 0x3, 0xb, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x2, 0x8c, 0xf0, 0x3, 0x81, 0x3d, 0x1, 0x81, 0xfa, 0x6, 0x69, 0x4, 0x5f, 0x1, 0xa0, 0x75, 0x72, 0x1, 0xc, 0x2, 0x1, 0x1, 0x1c, 0x2, 0x52, 0x2, 0xe, 0x22, 0x66, 0x3, 0x6d, 0x2, 0x80, 0xca, 0x1, 0x1b, 0x12, 0x39, 0x4, 0x24, 0x1, 0x5f, 0x1, 0xc, 0x1, 0x24, 0x1, 0x80, 0x95, 0x3, 0x41, 0x4, 0x33, 0x1, 0x64, 0x5, 0x9, 0x3, 0x80, 0x80, 0x2, 0xa0, 0x4f, 0x30, 0x1, 0x83, 0x1, 0x10, 0x81, 0xe, 0x1, 0x1, 0x1, 0x2f, 0x1, 0x2d, 0x2, 0x43, 0x1, 0x82, 0xfc, 0x1, 0x84, 0x9f, 0x6, 0x1, 0x2a, 0x1, 0x9, 0x83, 0x2a, 0x2, 0x82, 0x3b, 0x6, 0x81, 0xd5, 0x3, 0x46, 0xb, 0x31, 0x4, 0x80, 0xc0, 0x1, 0x29, 0x1, 0x48, 0x2, 0x78, 0x2, 0x3e, 0x1, 0x4c, 0x1, 0x9, 0x3, 0x68, 0x2, 0x80, 0xb2, 0x2, 0x51, 0x1, 0x10, 0x1, 0x18, 0x7, 0x3, 0x5, 0x80, 0xcd, 0x1, 0x3, 0x1, 0x7b, 0x2, 0x80, 0xfb, 0x2, 0x7e, 0x1, 0x76, 0x2, 0x73, 0x1, 0x81, 0xd, 0x2, 0x81, 0x2, 0x2, 0x4, 0x1, 0x80, 0x9c, 0x1, 0x53, 0x1, 0x12, 0x1, 0x51, 0x1, 0x81, 0xa5, 0x1, 0x81, 0x2, 0x1, 0x1, 0x2, 0x51, 0x1, 0x96, 0xaf, 0xf, 0xa0, 0x36, 0x9a, 0x5, 0x3b, 0x7, 0x84, 0x58, 0x11, 0x50, 0x2, 0xa0, 0x3f, 0xfe, 0x4, 0x1, 0x7, 0x1, 0x2, 0x9f, 0x1, 0x2e, 0x2, 0x17, 0x82, 0x20, 0x3, 0x3, 0x6, 0x8, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x8e, 0x82, 0x3e, 0x80, 0xc2, 0x7, 0x81, 0x77, 0x1, 0x3d, 0x4, 0x85, 0xe0, 0x7, 0x6d, 0x3, 0x1, 0x3]; -_T Lowercase = [0x61, 0x1a, 0x2f, 0x1, 0xa, 0x1, 0x4, 0x1, 0x24, 0x18, 0x1, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0x2, 0x4, 0x1, 0x2, 0x1, 0x3, 0x3, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x3, 0x6, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x45, 0x1, 0x24, 0x7, 0x2, 0x1e, 0x5, 0x60, 0x1, 0x2b, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x4, 0x12, 0x1, 0x1b, 0x23, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x1, 0x2, 0x1, 0x2, 0x2, 0x33, 0x30, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x30, 0x29, 0x8b, 0x47, 0x2b, 0x1, 0x4, 0x82, 0xf8, 0x6, 0x88, 0x82, 0x9, 0x77, 0x80, 0xc0, 0x41, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0xe, 0x2, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x5, 0x1, 0x2, 0x6, 0x1, 0x3, 0x3, 0x1, 0x2, 0x8, 0x4, 0x2, 0x2, 0x8, 0x8, 0xa, 0x3, 0x1, 0x2, 0x79, 0x1, 0xd, 0x1, 0x10, 0xd, 0x6d, 0x1, 0x3, 0x2, 0x3, 0x1, 0x1b, 0x1, 0x4, 0x1, 0x4, 0x1, 0x2, 0x2, 0x8, 0x4, 0x4, 0x1, 0x21, 0x10, 0x4, 0x1, 0x83, 0x4b, 0x1a, 0x87, 0x46, 0x30, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x2, 0x1, 0x8, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0xa0, 0x79, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x80, 0x85, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0xa, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x18, 0x3, 0x1, 0x1, 0x1, 0x3, 0x83, 0x35, 0x2b, 0x1, 0xe, 0x6, 0x50, 0xa0, 0x4f, 0x40, 0x7, 0xc, 0x5, 0x84, 0x29, 0x1a, 0x84, 0xcd, 0x28, 0x80, 0x88, 0x24, 0x80, 0x9b, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x81, 0xc3, 0x1, 0x2, 0x3, 0x1, 0x2a, 0x1, 0x9, 0x85, 0x5, 0x33, 0x8b, 0xcd, 0x20, 0xa0, 0x55, 0x80, 0x20, 0xa0, 0x65, 0x9a, 0x1a, 0x1a, 0x7, 0x1, 0x12, 0x1a, 0x1a, 0x1a, 0x4, 0x1, 0x1, 0x1, 0x7, 0x1, 0xb, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1c, 0x1c, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1, 0x1, 0x87, 0x34, 0xa, 0x1, 0x14, 0x6, 0x6, 0x81, 0x5, 0x3e, 0x88, 0xb4, 0x22]; -_T Ll = [0x61, 0x1a, 0x3a, 0x1, 0x29, 0x18, 0x1, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x1, 0x3, 0x2, 0x4, 0x1, 0x2, 0x1, 0x3, 0x3, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x3, 0x1, 0x1, 0x1, 0x2, 0x2, 0x2, 0x3, 0x6, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x2, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x7, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x45, 0x1, 0x1b, 0x80, 0xc1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x3, 0x3, 0x12, 0x1, 0x1b, 0x23, 0x1, 0x2, 0x3, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x1, 0x2, 0x1, 0x2, 0x2, 0x33, 0x30, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x30, 0x29, 0x8b, 0x47, 0x2b, 0x2, 0x3, 0x82, 0xf8, 0x6, 0x88, 0x82, 0x9, 0x77, 0x2c, 0x3f, 0xd, 0x1, 0x22, 0x66, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x9, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0x6, 0xa, 0x8, 0x8, 0x8, 0x8, 0xe, 0x2, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x5, 0x1, 0x2, 0x6, 0x1, 0x3, 0x3, 0x1, 0x2, 0x8, 0x4, 0x2, 0x2, 0x8, 0x8, 0xa, 0x3, 0x1, 0x2, 0x81, 0x12, 0x1, 0x3, 0x2, 0x3, 0x1, 0x1b, 0x1, 0x4, 0x1, 0x4, 0x1, 0x2, 0x2, 0x8, 0x4, 0x4, 0x1, 0x35, 0x1, 0x8a, 0xab, 0x30, 0x1, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x2, 0x1, 0x6, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xc, 0x26, 0x1, 0x1, 0x5, 0x1, 0xa0, 0x79, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x13, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x80, 0x87, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x8, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x5, 0x1, 0x5, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x6, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1c, 0x1, 0x3, 0x1, 0x83, 0x35, 0x2b, 0x5, 0x9, 0x7, 0x50, 0xa0, 0x4f, 0x40, 0x7, 0xc, 0x5, 0x84, 0x29, 0x1a, 0x84, 0xcd, 0x28, 0x80, 0x88, 0x24, 0x80, 0x9b, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x87, 0x3, 0x33, 0x8b, 0xcd, 0x20, 0xa0, 0x55, 0x80, 0x20, 0xa0, 0x65, 0x9a, 0x1a, 0x1a, 0x7, 0x1, 0x12, 0x1a, 0x1a, 0x1a, 0x4, 0x1, 0x1, 0x1, 0x7, 0x1, 0xb, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1c, 0x1c, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1a, 0x19, 0x1, 0x6, 0x1, 0x1, 0x87, 0x34, 0xa, 0x1, 0x14, 0x6, 0x6, 0x89, 0xf7, 0x22]; -_T Extender = [0x80, 0xb7, 0x1, 0x82, 0x18, 0x2, 0x83, 0x6e, 0x1, 0x81, 0xb9, 0x1, 0x83, 0x5a, 0x1, 0x82, 0xf0, 0x1, 0x7f, 0x1, 0x89, 0x43, 0x1, 0x38, 0x1, 0x82, 0x63, 0x1, 0x81, 0x8e, 0x1, 0x44, 0x1, 0x93, 0x89, 0x1, 0x2b, 0x5, 0x67, 0x2, 0x5d, 0x3, 0xa0, 0x6f, 0x16, 0x1, 0x85, 0xf6, 0x1, 0x83, 0xc2, 0x1, 0x16, 0x1, 0x80, 0x89, 0x1, 0x6c, 0x1, 0x15, 0x2, 0xa0, 0x54, 0x7b, 0x1, 0x88, 0x10, 0x2, 0x8b, 0xda, 0x1, 0x82, 0x68, 0x3, 0x84, 0xcf, 0x1, 0xa0, 0x50, 0xa9, 0x2, 0x84, 0x9c, 0x2, 0x1, 0x1, 0xa0, 0x71, 0x58, 0x2, 0x88, 0x6, 0x3]; -_T Lm = [0x82, 0xb0, 0x12, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x80, 0x85, 0x1, 0x5, 0x1, 0x81, 0xde, 0x1, 0x80, 0xe6, 0x1, 0x80, 0xa4, 0x2, 0x81, 0xd, 0x2, 0x4, 0x1, 0x1f, 0x1, 0x9, 0x1, 0x3, 0x1, 0x80, 0xa0, 0x1, 0x80, 0xa7, 0x1, 0x84, 0xd4, 0x1, 0x7f, 0x1, 0x82, 0x35, 0x1, 0x86, 0xda, 0x1, 0x6b, 0x1, 0x82, 0x63, 0x1, 0x81, 0xd0, 0x6, 0x80, 0xae, 0x3f, 0xd, 0x1, 0x22, 0x25, 0x82, 0xb1, 0x1, 0xd, 0x1, 0x10, 0xd, 0x8b, 0xdf, 0x2, 0x80, 0xf1, 0x1, 0x80, 0xbf, 0x1, 0x81, 0xd5, 0x1, 0x2b, 0x5, 0x5, 0x1, 0x61, 0x2, 0x5d, 0x3, 0xa0, 0x6f, 0x16, 0x1, 0x84, 0xe2, 0x6, 0x81, 0xe, 0x1, 0x72, 0x1, 0x1c, 0x2, 0x79, 0x9, 0x50, 0x1, 0x17, 0x1, 0x69, 0x3, 0x3, 0x2, 0x81, 0xd5, 0x1, 0x16, 0x1, 0x80, 0x89, 0x1, 0x6c, 0x1, 0x15, 0x2, 0x67, 0x4, 0x9, 0x1, 0xa0, 0x54, 0x6, 0x1, 0x2d, 0x2, 0x87, 0xe0, 0x6, 0x1, 0x2a, 0x1, 0x9, 0xa0, 0x63, 0x85, 0x4, 0x84, 0x4f, 0xd, 0x40, 0x2, 0x1, 0x1, 0xa0, 0x40, 0xc, 0x4, 0x1, 0x7, 0x1, 0x2, 0xa0, 0x30, 0x31, 0x3e, 0x80, 0xc9, 0x7, 0x83, 0xad, 0x1, 0x84, 0x5f, 0x1]; -_T Mn = [0x83, 0x0, 0x70, 0x81, 0x13, 0x5, 0x81, 0x9, 0x2d, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0x1, 0x48, 0xb, 0x30, 0x15, 0x10, 0x1, 0x65, 0x7, 0x2, 0x6, 0x2, 0x2, 0x1, 0x4, 0x23, 0x1, 0x1e, 0x1b, 0x5b, 0xb, 0x3a, 0x9, 0x9, 0x1, 0x18, 0x4, 0x1, 0x9, 0x1, 0x3, 0x1, 0x5, 0x2b, 0x3, 0x3c, 0x8, 0x2a, 0x18, 0x1, 0x20, 0x37, 0x1, 0x1, 0x1, 0x4, 0x8, 0x4, 0x1, 0x3, 0x7, 0xa, 0x2, 0x1d, 0x1, 0x3a, 0x1, 0x4, 0x4, 0x8, 0x1, 0x14, 0x2, 0x1a, 0x1, 0x2, 0x2, 0x39, 0x1, 0x4, 0x2, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x1e, 0x2, 0x3, 0x1, 0xb, 0x2, 0x39, 0x1, 0x4, 0x5, 0x1, 0x2, 0x4, 0x1, 0x14, 0x2, 0x16, 0x6, 0x1, 0x1, 0x3a, 0x1, 0x2, 0x1, 0x1, 0x4, 0x8, 0x1, 0x7, 0x2, 0xb, 0x2, 0x1e, 0x1, 0x3d, 0x1, 0xc, 0x1, 0x32, 0x1, 0x3, 0x1, 0x37, 0x1, 0x1, 0x3, 0x5, 0x3, 0x1, 0x4, 0x7, 0x2, 0xb, 0x2, 0x1d, 0x1, 0x3a, 0x1, 0x2, 0x1, 0x6, 0x1, 0x5, 0x2, 0x14, 0x2, 0x1c, 0x2, 0x39, 0x2, 0x4, 0x4, 0x8, 0x1, 0x14, 0x2, 0x1d, 0x1, 0x48, 0x1, 0x7, 0x3, 0x1, 0x1, 0x5a, 0x1, 0x2, 0x7, 0xc, 0x8, 0x62, 0x1, 0x2, 0x9, 0xb, 0x7, 0x49, 0x2, 0x1b, 0x1, 0x1, 0x1, 0x1, 0x1, 0x37, 0xe, 0x1, 0x5, 0x1, 0x2, 0x5, 0xb, 0x1, 0x24, 0x9, 0x1, 0x66, 0x4, 0x1, 0x6, 0x1, 0x2, 0x2, 0x2, 0x19, 0x2, 0x4, 0x3, 0x10, 0x4, 0xd, 0x1, 0x2, 0x2, 0x6, 0x1, 0xf, 0x1, 0x82, 0xbf, 0x3, 0x83, 0xb2, 0x3, 0x1d, 0x2, 0x1e, 0x2, 0x1e, 0x2, 0x40, 0x2, 0x1, 0x7, 0x8, 0x1, 0x2, 0xb, 0x9, 0x1, 0x2d, 0x3, 0x1, 0x1, 0x75, 0x2, 0x22, 0x1, 0x76, 0x3, 0x4, 0x2, 0x9, 0x1, 0x6, 0x3, 0x80, 0xdb, 0x2, 0x2, 0x1, 0x3a, 0x1, 0x1, 0x7, 0x1, 0x1, 0x1, 0x1, 0x2, 0x8, 0x6, 0xa, 0x2, 0x1, 0x30, 0xe, 0x1, 0x10, 0x31, 0x4, 0x30, 0x1, 0x1, 0x5, 0x1, 0x1, 0x5, 0x1, 0x28, 0x9, 0xc, 0x2, 0x20, 0x4, 0x2, 0x2, 0x1, 0x3, 0x38, 0x1, 0x1, 0x2, 0x3, 0x1, 0x1, 0x3, 0x3a, 0x8, 0x2, 0x2, 0x80, 0x98, 0x3, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x80, 0xc6, 0x40, 0x82, 0xd0, 0xd, 0x4, 0x1, 0x3, 0xc, 0x8b, 0xfe, 0x3, 0x80, 0x8d, 0x1, 0x60, 0x20, 0x82, 0x2a, 0x4, 0x6b, 0x2, 0xa0, 0x75, 0xd4, 0x1, 0x4, 0xa, 0x20, 0x2, 0x50, 0x2, 0x81, 0x10, 0x1, 0x3, 0x1, 0x4, 0x1, 0x19, 0x2, 0x5, 0x1, 0x80, 0x97, 0x2, 0x1a, 0x12, 0xd, 0x1, 0x26, 0x8, 0x19, 0xb, 0x2e, 0x3, 0x30, 0x1, 0x2, 0x4, 0x2, 0x2, 0x27, 0x1, 0x43, 0x6, 0x2, 0x2, 0x2, 0x2, 0xc, 0x1, 0x8, 0x1, 0x2f, 0x1, 0x33, 0x1, 0x1, 0x3, 0x2, 0x2, 0x5, 0x2, 0x1, 0x1, 0x2a, 0x2, 0x8, 0x1, 0x80, 0xee, 0x1, 0x2, 0x1, 0x4, 0x1, 0xa0, 0x4f, 0x30, 0x1, 0x82, 0xe1, 0x10, 0x10, 0x10, 0x83, 0xcd, 0x1, 0x80, 0xe2, 0x1, 0x80, 0x95, 0x5, 0x86, 0x86, 0x3, 0x1, 0x2, 0x5, 0x4, 0x28, 0x3, 0x4, 0x1, 0x80, 0xa5, 0x2, 0x82, 0x3d, 0x4, 0x81, 0x83, 0x2, 0x50, 0x3, 0x46, 0xb, 0x31, 0x4, 0x7b, 0x1, 0x36, 0xf, 0x29, 0x1, 0x2, 0x2, 0xa, 0x3, 0x31, 0x4, 0x2, 0x2, 0x7, 0x1, 0x3d, 0x3, 0x24, 0x5, 0x1, 0x8, 0x3e, 0x1, 0xc, 0x2, 0x34, 0x9, 0xa, 0x4, 0x2, 0x1, 0x5f, 0x3, 0x2, 0x1, 0x1, 0x2, 0x6, 0x1, 0x2, 0x1, 0x80, 0x9d, 0x1, 0x3, 0x8, 0x15, 0x2, 0x39, 0x2, 0x3, 0x1, 0x25, 0x7, 0x3, 0x5, 0x80, 0xc3, 0x8, 0x2, 0x3, 0x1, 0x1, 0x17, 0x1, 0x54, 0x6, 0x1, 0x1, 0x4, 0x2, 0x1, 0x2, 0x80, 0xee, 0x4, 0x6, 0x2, 0x1, 0x2, 0x1b, 0x2, 0x55, 0x8, 0x2, 0x1, 0x1, 0x2, 0x6a, 0x1, 0x1, 0x1, 0x2, 0x6, 0x1, 0x1, 0x65, 0x3, 0x2, 0x4, 0x1, 0x5, 0x81, 0x3, 0x9, 0x1, 0x2, 0x81, 0x0, 0x2, 0x1, 0x1, 0x4, 0x1, 0x80, 0x90, 0x4, 0x2, 0x2, 0x4, 0x1, 0x20, 0xa, 0x28, 0x6, 0x2, 0x4, 0x8, 0x1, 0x9, 0x6, 0x2, 0x3, 0x2e, 0xd, 0x1, 0x2, 0x81, 0x96, 0x7, 0x1, 0x6, 0x1, 0x1, 0x52, 0x16, 0x2, 0x7, 0x1, 0x2, 0x1, 0x2, 0x7a, 0x6, 0x3, 0x1, 0x1, 0x2, 0x1, 0x7, 0x1, 0x1, 0x48, 0x2, 0x3, 0x1, 0x1, 0x1, 0x81, 0x5b, 0x2, 0xb, 0x2, 0x34, 0x5, 0x5, 0x1, 0x1, 0x1, 0x94, 0xfd, 0x1, 0x6, 0xf, 0xa0, 0x36, 0x9a, 0x5, 0x3b, 0x7, 0x84, 0x18, 0x1, 0x3f, 0x4, 0x51, 0x1, 0xa0, 0x4c, 0xb8, 0x2, 0x92, 0x61, 0x2e, 0x2, 0x17, 0x82, 0x20, 0x3, 0x11, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x80, 0x94, 0x3, 0x87, 0xbb, 0x37, 0x4, 0x32, 0x8, 0x1, 0xe, 0x1, 0x16, 0x5, 0x1, 0xf, 0x85, 0x50, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5, 0x64, 0x1, 0x80, 0xa0, 0x7, 0x81, 0x77, 0x1, 0x3d, 0x4, 0x81, 0xfc, 0x4, 0x83, 0xe0, 0x7, 0x6d, 0x7, 0xac, 0x17, 0xb5, 0x80, 0xf0]; -_T Sk = [0x5e, 0x1, 0x1, 0x1, 0x47, 0x1, 0x6, 0x1, 0x4, 0x1, 0x3, 0x1, 0x82, 0x9, 0x4, 0xc, 0xe, 0x5, 0x7, 0x1, 0x1, 0x1, 0x11, 0x75, 0x1, 0xe, 0x2, 0x85, 0x2, 0x1, 0x97, 0x34, 0x1, 0x1, 0x3, 0xb, 0x3, 0xd, 0x3, 0xd, 0x3, 0xd, 0x2, 0x90, 0x9c, 0x2, 0xa0, 0x76, 0x63, 0x17, 0x9, 0x2, 0x67, 0x2, 0x83, 0xd0, 0x1, 0xe, 0x2, 0xa0, 0x50, 0x46, 0x11, 0x83, 0x7b, 0x1, 0x1, 0x1, 0x80, 0xa2, 0x1, 0xa0, 0xf4, 0x17, 0x5]; -_T Po = [0x21, 0x3, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x2, 0xa, 0x2, 0x3, 0x2, 0x1b, 0x1, 0x44, 0x1, 0x5, 0x1, 0xe, 0x2, 0x7, 0x1, 0x82, 0xbe, 0x1, 0x8, 0x1, 0x81, 0xd2, 0x6, 0x29, 0x1, 0x36, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2c, 0x2, 0x14, 0x2, 0x1, 0x2, 0xd, 0x1, 0x1, 0x3, 0x4a, 0x4, 0x66, 0x1, 0x2b, 0xe, 0x80, 0xe9, 0x3, 0x36, 0xf, 0x1f, 0x1, 0x81, 0x5, 0x2, 0xa, 0x1, 0x80, 0x8c, 0x1, 0x78, 0x1, 0x79, 0x1, 0x81, 0x86, 0x1, 0xc, 0x1, 0x81, 0x6f, 0x1, 0x5a, 0x1, 0xa, 0x2, 0x80, 0xa8, 0xf, 0x1, 0x1, 0x70, 0x1, 0x4a, 0x5, 0x4, 0x2, 0x6f, 0x6, 0x80, 0xab, 0x1, 0x82, 0x64, 0x9, 0x83, 0x5, 0x1, 0x7c, 0x3, 0x47, 0x2, 0x80, 0x9d, 0x3, 0x1, 0x3, 0x25, 0x6, 0x1, 0x4, 0x81, 0x39, 0x2, 0x80, 0xd8, 0x2, 0x80, 0x80, 0x7, 0x1, 0x6, 0x80, 0xac, 0x7, 0x1c, 0x2, 0x7d, 0x4, 0x3b, 0x5, 0x3e, 0x2, 0x40, 0x8, 0xb, 0x1, 0x83, 0x42, 0x2, 0x8, 0x8, 0x8, 0x9, 0x2, 0x4, 0x2, 0x3, 0x3, 0xb, 0x1, 0x1, 0x1, 0xa, 0x8c, 0x9a, 0x4, 0x1, 0x2, 0x70, 0x1, 0x80, 0x8f, 0x2, 0x4, 0x3, 0x2, 0x1, 0x2, 0x9, 0x1, 0x2, 0x1, 0x1, 0x2, 0x2, 0xa, 0x5, 0x1, 0xa, 0x2, 0x4, 0x1, 0x1, 0x1, 0xd, 0x2, 0x3, 0x81, 0xac, 0x3, 0x39, 0x1, 0x80, 0xbd, 0x1, 0xa0, 0x74, 0x2, 0x2, 0x81, 0xd, 0x3, 0x63, 0x1, 0xa, 0x1, 0x73, 0x6, 0x81, 0x7c, 0x4, 0x56, 0x2, 0x28, 0x3, 0x1, 0x1, 0x31, 0x2, 0x2f, 0x1, 0x61, 0xd, 0x10, 0x2, 0x7c, 0x4, 0x7e, 0x2, 0x10, 0x2, 0x80, 0xf9, 0x1, 0xa0, 0x52, 0x24, 0x7, 0x2, 0x1, 0x16, 0x1, 0x14, 0x2, 0x2, 0x4, 0x3, 0x3, 0x1, 0x4, 0x7, 0x3, 0x6, 0x1, 0x1, 0x2, 0x80, 0x95, 0x3, 0x1, 0x3, 0x2, 0x1, 0x1, 0x1, 0x1, 0x2, 0xa, 0x2, 0x3, 0x2, 0x1b, 0x1, 0x24, 0x1, 0x2, 0x2, 0x81, 0x9a, 0x3, 0x82, 0x9c, 0x1, 0x30, 0x1, 0x81, 0x9e, 0x1, 0x82, 0xe7, 0x1, 0x80, 0xc7, 0x1, 0x1f, 0x1, 0x81, 0x10, 0x9, 0x26, 0x1, 0x70, 0x7, 0x42, 0x7, 0x59, 0x4, 0x83, 0xb8, 0x5, 0x2c, 0x4, 0x80, 0xbd, 0x7, 0x6d, 0x2, 0x1, 0x4, 0x7e, 0x4, 0x30, 0x2, 0x4f, 0x4, 0x4, 0x1, 0xd, 0x1, 0x1, 0x3, 0x58, 0x6, 0x6b, 0x1, 0x81, 0xa1, 0x5, 0xa, 0x2, 0x1, 0x1, 0x68, 0x1, 0x80, 0xfa, 0x17, 0x69, 0x3, 0x1c, 0xd, 0x4c, 0x1, 0x80, 0x82, 0x3, 0x80, 0xfc, 0x1, 0x81, 0x8, 0x3, 0x80, 0x9b, 0x1, 0x5c, 0x8, 0x53, 0x3, 0x1, 0x5, 0x5d, 0xa, 0x81, 0x37, 0x5, 0x2a, 0x2, 0x82, 0x85, 0x2, 0x4a, 0xd, 0x80, 0xaf, 0x1, 0x84, 0x70, 0x5, 0x8b, 0x7c, 0x2, 0xa0, 0x3a, 0x7b, 0x2, 0x80, 0x85, 0x1, 0x41, 0x5, 0x8, 0x1, 0x83, 0x52, 0x4, 0x81, 0x47, 0x1, 0xa0, 0x4c, 0xbc, 0x1, 0x9d, 0xe7, 0x5, 0x8e, 0xd2, 0x2]; -_T Deprecated = [0x81, 0x49, 0x1, 0x85, 0x29, 0x1, 0x89, 0x3, 0x1, 0x1, 0x1, 0x88, 0x29, 0x2, 0x88, 0xc5, 0x6, 0x82, 0xb9, 0x2, 0xad, 0xdc, 0xd6, 0x1]; -_T Other_ID_Continue = [0x80, 0xb7, 0x1, 0x82, 0xcf, 0x1, 0x8f, 0xe1, 0x9, 0x86, 0x68, 0x1, 0x86, 0x31, 0x2, 0x90, 0xed, 0x1, 0xa0, 0xce, 0x69, 0x1]; +_T ID_Start = x"411A061A2F010A0104010517011F0181CA040C0E05070101018081050102020401010601010301010114015301808B0880A6012602010629471B04042D2B2302016301010F0207020A0302011001011E1D590B0118210902040105160401090103011719070B05180106112A3A3603011201070A0F10040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001020C073A020101010501180101010A0102090102050101150420013F0801241B05732B140110060404030103020703040D0C01112601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07120D130E120E0D01030F342301040143590729010105460A1F311E02050B2C041A3617093552015D2F1108361E0D020A2C1A2429030A240209072B020329040106010203010580C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A01010206060101010101011002040505040111298A7780E5060403020C26010105010238070110170907010701070107010701070107010782260319090705020504560405015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F101F025027090267024005020101010518100103010401171D340E323E06030101020B1C0A17191D072F1C011005010A0A05012917030108141703010332010103020205020101011803020B07030C060206020609070107012B010E06731DA02BA40C170431A02104816E026A26070C050501010A010D0105010101020102016C21816B12400236280C7405018087241A061A0B590306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E05260A1E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4937330D330D24815C2A06024E1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C05809E35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C74401F0802010208010201180F0101015E080227100101011C010A28070115010B2E1301124981070901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A666F1180C48A4C610F843011068FB98247A021B98239071F114F111E123010041F15051382B04080804B0501420D400201011C97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A97665501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060681053E80922D0A07100181411E122C81E41C82F40701040102010F0180C53B44070184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Cs = x"A0D8008800"; +_T Default_Ignorable_Code_Point = x"80AD0182A10182CC018B4202865302550587FB051A05311090F401A0CC9B1080EF0180A0014F09A0BCA70494CF08AC2E859000"; +_T Pd = x"2D01855C0133018E41018405018809068E010102011F0204011C0181BE0113016F01A0CD900225010A0180A9018F9F01"; +_T Unified_Ideograph = x"A0340099C040A05200A05A0E02010101020A01010101020203A105D6A0A6E020903A0680DE0296820E9D310F826E91A2934B059060"; +_T IDS_Binary_Operator = x"A02FF002020A81F101"; +_T Sm = x"2B0110033D0101012D01040125011F0182FE01820F039A3B010D0127030D03808B01270506014405050204010201020107011F02020101011F810C20025A011E19280681D501090136086F01815005021F0A1081008083163F042002810230150206A0CFDC01833801010380A40110033D0101018083010604A0D6D40119011F0119011F0119011F0119011F011901972C02"; +_T Pi = x"80AB019F6C010202020119018DC8010101040102010F010301"; +_T Other_Grapheme_Extend = x"89BE01180181660118016601180180EA0112026701180177010F018D550184D601902102A0CF6E02939E0118018158010C0180F101838001A0B834010805AC2EAD60"; +_T Grapheme_Extend = x"83007081130781072D0101010201020101480B30151001650702060202010423011E1B5B0B3A09090118040109010301052B033C082A180120370101010408040103070A021D013A0101010204080109010A021A010202390104020402020303011E0203010B0239010405010204011402160601013A0101020104080107030A021E013B0101010C01090128010301370101030503010407020B021D013A01020102010301050207020B021C02390201010204080109010A021D0148010401020301010801510102070C08620102090B0749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F0182BF0383B2031D021E021E02400201070801020B09012D03010175022201760304020901060380DB0202013A010107010101010208060A0201301F310430070101050128090C0220040202010338010102030101033A080202809803010D010704010601030280C640820C0180C3218BFE03808D016020822A066902A075D404010A2002500281100103010401190205018097021A120D012608190B2E0330010204020227014306020202020C0108012F01330101030202050201012A02080180EE0102010401A04F300182E1101010816E02825D0180E201809505868603010205042803040180A502823D048183025003460B31047B01360F290102020A033104020207013D03240501083E010C0234090A0402015F030201010206010201809D010308150239020101010116010E07030580C30802030101170151010206010102010102010280EB010204060201021B025508020101026A01010102060101650302040105810309010280F5010A020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B0234050501010194FD01060FA0369A053B078418013F045101A04CB80292612E0217821E0101030405080802071E0480940387BB37043208010E011605010F8550070111020701020105640180A0078177013D0481FC0483E0076D07AC16D560808080F0"; +_T Other_ID_Start = x"98850288910115018F6C02"; +_T Pattern_Syntax = x"210F0A071A0401011A042207010101020101010204010401030117011F019F1818080F0213010A813182D080A082761E846C8200808081810304190F01A0CD0D02810502"; +_T Lu = x"411A6517010721010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102030107010201020102010101010101010101010101010101020101010101010101010101010101010101020102010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010181210101010301080106010103010101020111010923010203030101010101010101010101010101010101010101010101050102010102023330010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102268B49260101050182D256889A2B0203814001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101090808060A08080808060B01010101010101080848040C040C040C050B0481060104010303020302010305060101010101010402040A0205013D018A7C303001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080101010401A0794D0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011301010101010101010101010101010101010101010101010101010180870101010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A0101010102010101010101010104010101020101010301010101010101010101010101010101010101010501050101010101010101010101010101010401010601050101011C01A0572B1A84C528808824809C0B010F0107010286EA338BED20A0558020A065A01A1A1A1A1A1A01010202010202020401081A1A1A020104020801071B0201040105010103071B1A1A1A1A1A1A1A1A1A1A1A1E1921192119211921192101913522"; +_T Case_Ignorable = x"270106010B01230101014701040101010401020281F780C0040204010902010180FB0780CF010501312D01010102010201012C010B060A0B010123010A1510016508010A0104210101011E1B5B0B3A0B0401020118182B032C0107020608293A370101010408040103070A020D010F013A010404080114021A010202390104020402020303011E0203010B0239010405010204011402160601013A0102010104080107020B021E013D010C0132010301370101030503010407020B021D013A0102010601050214021C0239020404080114021D014801070301015A0102070B09620102090901010749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F015E0182600383B2031D021E021E02400201070801020B030105012D05330141022201760304020901060380DB0202013A010107010101010208060A02012701081F3104300101050101050128090C0220040202010338010102030101033A08020240065203010D0107040106010302323F0D01226581BD0101030B030D030D030D020C0508020A01020102053105010A01010D01100D33218B8B0271037D010F0160202F0181D5012404030505015D065D03A06F160184E206810E016204010A01011C0450020E224E01170367030302080103010401190205018097021A120D012608190B2E03300102040202110115024206020202020C01080123010B01330101030202050201011B010E020502010164050903790102010401A04F3001809311823D1003010C102201020180A901070106010B01230101012F012D024301150382010180E201809505840506012A0109824603010205042803040180A502823D048183025003460B31047B01360F290102020A0331040202020104010A013203240501083E010C0234090A0402015F030201010206010201809D0103081502390203012507030580C308020301011701540601010402010280EE04060201021B025508020101026A0101010206010165030204010581030901028100020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B0234050501010194ED11060FA0369A053B070904840B013F1140020102A0400B04010701028C9E020104925C2E0217822003091002071E0480940387BB37043208010E011605010F8550070111020701020105053E210180A00E8170013D0481FB0583E0076D088AAF05AC0C01011E60808080F0"; +_T Lo = x"80AA010F01810001040480D001833B1B04042D20010A23020163010118020A0302011001011E1D590B01182115162A19070B0518010611293B3603011201070A100F040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001020C063B020101010501180101010A010209010205170420013F0801241B05732B140110060404030103020703040D0C0171814901040207010101040229010402210104020701010104020F013901040243251071826C0211011A054B060807120D130E120E0D01030F3428014323013507050222010105460A1F311E02050B2C041A3617093580B02F1108361E0D020A2C1A2429030A1E7104010601020301843A048BF738181709070107010701070107010701070107822701350104560801015A0401052B015E11203010820099C040A05215018477432808810C04100A024201314680A901670103070103010401171D340E323E06030101020B1C0A17191D072F2D0502090A050129170301081410010603010332010103020205020101011802030B07010E0602060206090701078091231DA02BA40C170431A02104816E026A4301010A010D0105010101020102016C21816B12400236280C7405018087690A012D021F0306020602060203230C011A01130102010F020E227B81851D03312F200D14010806260A1E0224040880804E62280834809C813709160A088098060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4980B724815C2A06024E1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C05809E35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C80D30802010208010201180F0101015E080227100101011C010A28070115010B2E1301124981070901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A80E680C48A4C610F843011068FB98247A021B98239071F114F111E12303315051383704B050180AF97F80884D62A09A022F781230F011D0302010E0408818C89046B050D0309070AA022700181F52D210181411E122C81E41B82F50701040102010F0180C5853B04011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Pc = x"5F019FDF021301A0DDDE02180380EF01"; +_T Bidi_Control = x"861C0199F1021A053704"; +_T Co = x"A0E0009900AE0700A0FFFE02A0FFFE"; +_T Variation_Selector = x"980B030101A0E5F010AD02F080F0"; +_T Soft_Dotted = x"690280C4018119011E01340114018140016201010199090133010D010301808401809D0181A50180D6028B3201A1A7A5023202320232023202320232023202320232023202320232028886018131021A01"; +_T Noncharacter_Code_Point = x"A0FDD020820E02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE"; +_T Logical_Order_Exception = x"8E40057B058AF0030201A090FA0202010102"; +_T Cased = x"411A061A2F010A0104010517011F0180C301040480D0012407021E0560012A040202020401010601010301010114015301808B0880A6012609298B172601010501022B010482A0560206888209072B02034080C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A0101030506010101010101040106040102040505040111200302833134871680E5060403020C2601010501A079122E121E8084660304013B0502010101051805010383352B010E0650A04F40070C0584091A061A84A55060240424740B010F01070102010B010F0107010281C3010203012A010984C5330D338BAD40A0556040A065805501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887340A0114060681053E88924487EC1A061A061A"; +_T ID_Compat_Math_Continue = x"80B20205019FB601030B010F81730104011601A1B4A20119011F0119011F0119011F0119011F011901"; +_T Math = x"2B0110031F011D0101012D01040125011F0182D80302011A020203820F039A0D011B030B0103010D010E0415050B05410D04010302040512010401020A0101020606010302020201030106030E010144180106010204020420010106020E810C080414025A011E1B010118010B0781BD020C0A04060402020203050E01010102060B080502390101011D0409038150408100820030150206A0CFDC01833706010180A20110031D0101011D0101018083010604A0D4135501470102020102020204010C010101070141010402080107011C01040105010103070181540281240232960004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402"; +_T No = x"80B20205010203893506817806780380850780D907110981B10A84351484730A81E0018695010306060A80C610290182D63C4E1682761E856901849404808A0A1E08010F200A270FA0757006A058D12D4104110281551B2404853408190727094B05160680A0020210022E400934021E034B05680818082907814A0681601F809E0A2A047007808614817B1485450281AE09836713835315A04B8607831E17A06429140C146C19954E0983A13B010301044C2D010F83C20D"; +_T ID_Continue = x"300A071A0401011A2F010A01010102010517011F0181CA040C0E05070101011175010202040101060501010114015301808B01050280A6012602010629082D0101010201020101081B04041D0B054A04660108020A01130201103B02650E3604010201022E121C040B05180106094A018081020A0113010802020216010701010304020902020204080104020105020C0A01010102030106040202160107010201020102020101050402020303010704010107100B03010901030116010701020105020A0103010302010F04020A09070103010802020216010701020105020902020203070304020105020A0101100201060303010403020101010203020303030C040503030104020106010E0A100D0103011701100209010301040702010302010204020A1004010801030117010A0105020901030104070206020104020A01030C0D010301330103010505040705020A0A060103011203180109010102070301040601010108060A02020D3A050F010A270201010105011801010117020501010107010A020420011702060A0B0101010101040A01240414011201240901394A064E022601010501022B01814D01040207010101040229010402210104020701010104020F013901040243020309090E101056020603826C0211011A054B030B071609160B140C0D010301020C5403010402020A2103010B0659072B05460A1F010C040C0A2802050B2C041A060B251C043F011D020B060A0D01080E0110314D030A11090C740C38080A03310209072B0203100301270582160206022602060208010101010101011F0235010701010303010703040206040D050301070F02310213011C010D01100D330D0401030C11010401020A01010206060101010101011002040505040111298A7780E506090C2601010501023807010F18090701070107010701070107010701070120820503190F0105020504560207015F052B015E11203010820099C040A0568D432E02810D031C1430040A01732509026702400502010101051836040113340C460A0A06180301013102240C1D03410E0B061F0137090E020A061703491803021002050A060206020609070107012B010E067B0102020A06A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21816B12400236280C04101010030218032005018087130A071A0401011A0A5A0306020602060203230C011A01130102010F020E227B453580880180821D03310F011F200D1E052B051E0224040801052A809E020A06240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D02030401201D031D2308011E19360A160A130D126E4937330D330D28080A81462A010203024B200A0108211F162A151B1709471F10093C07010D19070A0635010A04040824020109450404010D01012312012506043E0701010104010F010A073B050A0604010802020216010701020105010A0202020302010601050702070305808B4B050A04041E460101080A80A63602091706224103010B0A2639070A361B020F040A060780B93B654A1508020102080102011E010202090C0A4608022E020801021B3F0801084A03011249810709012D01090F0A181E0216010E49070102012C030101020109080A06060102012501020106070A8136170911012903050D0A56014F839A666F1180C48A4C610F843010168FAA8247A021B98239071F010A064F010A061E02050B3709040C0A0915051382B04080804B04390711400201020B020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A030292612E0217821E050306080802071E0480940381BB5501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232820037043208010E011605010F84501F060680D5070111020701020105053E2101702D030E020A040181411F113A81D62A82E60701040102010F0180C50B07294C040A84A604011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501118D340A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADD5080F0"; +_T Me = x"848802963401861E040103A0858B03"; +_T Ideographic = x"A030060219090E0383C599C040A05200A05900816E026AA0750A011B97F80884D62A09A02467818CA04D04A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Cf = x"80AD01855206160180C001310181800250018F2B0187FC051A053105010AA0DE8F0180F90390C1010F01A0236210A088600494CF08AC2E86011E60"; +_T So = x"80A60102010401010183D101810A027F0280CE010A01130280F701820301817501808206010180840180CF0129018187030F010103020614010101010180850801060102050480C50282F00A82D30182D201809D2281610A0909858302010401020A010102060601010101010104010B020E01010201013A0209050204010201020107011F02020101011F810C08041402070251011E19280645190B514E1680B701090136086F0180F82C2C408100820030150206270220016980E5068165022E1A01590C80D61A1004010D020C0115020602815002040A20240B01101F0B1E08010F200A270F814099C040A05690378361040A020101823D03A052C6107F012D0381E401030104020D0281390939110203010D03012F2D867A02824F018C76018895080411A04B4A040501A051560192B3743C80F60A27023C05031602071E043D1542030180BA5784A9820037043208010E010286C8018B5C0180810182D12C04640C0F020F010F01251780A1381D0D2C040907020E06809A80FB0582D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137"; +_T White_Space = x"0905120164011A0195DF01897F0B1D0205012F018FA001"; +_T Sentence_Terminal = x"21010C01100185490180930380B4012B0380F6013D010101030281250286E402831601040283050180C602809D022D010501813A0281620480AE0202021D0280BC02410283BC0209038DE4010D01160281AD01A074FC01810E0280E3010301817E0256025F0180980280930380900280F901A0526601030280A9010C01100141018AF40284FD052C0480BD0275047F0380810206011002580201026C0181A102817502050F690280F903820501010180FB02570281A40282B4024A02A04B290280850141020B01835301A04E06019DE801"; +_T Lt = x"81C5010201020126019D9508080808080C010F012F01"; +_T Other_Lowercase = x"80AA010F0181F50907021E05600134018D81018C2F3F0D01222582B1010D01100D80D31083501A879202A07A1E0280D20180810303028362040901A05C16010203012A0109A0D8753E"; +_T Other_Alphabetic = x"834501826A0E0101010201020101480B300D01071001650704040202040123011E10660B650203090103010480A70C030706143602020F010205030A021D033A07020202020A010A021D033A050402020204011E0203010B033A08010301021502160304033A070202020209020A021E013B05030301030A01280539070103010308020B021D033A070103010308020B020F010C043A07010301030A010A021D034B060101010812023D0102071201630102060102100180A313090B01246E0C01010204170404030103020703040D0C01010A048674021E021E021E02421380BC022201760C040980DE05390A02144A020B033105300F3C031E090202390B321381B00E86C13488F620A0787408220281620108011705580232100101390126051C0C2D04300C2501430E0C0108022D0332010103020205012C05050180ED08A04F330188570586860301020504831404818302815303350E2D020B032D0909013D03240C12023903300D0E025C09020106010201809D0A17043A07020202020A010A0280D10D01036A1280ED0702071D02520F01016A0B670E81010D80F7060102020203010101808E07020604011C0A2A050104120B2E0E81970801075316010E7A0603010102010301010301420501020104815C040902010130070303A0500E01013707045D02A04CAC01A02361070111020701020105640188B70187E81A061A061A"; +_T XID_Continue = x"300A071A0401011A2F010A01010102010517011F0181CA040C0E05070101011175010203030101060501010114015301808B01050280A6012602010629082D0101010201020101081B04041D0B054A04660108020A01130201103B02650E3604010201022E121C040B05180106094A018081020A0113010802020216010701010304020902020204080104020105020C0A01010102030106040202160107010201020102020101050402020303010704010107100B03010901030116010701020105020A0103010302010F04020A09070103010802020216010701020105020902020203070304020105020A0101100201060303010403020101010203020303030C040503030104020106010E0A100D0103011701100209010301040702010302010204020A1004010801030117010A0105020901030104070206020104020A01030C0D010301330103010505040705020A0A060103011203180109010102070301040601010108060A02020D3A050F010A270201010105011801010117020501010107010A020420011702060A0B0101010101040A01240414011201240901394A064E022601010501022B01814D01040207010101040229010402210104020701010104020F013901040243020309090E101056020603826C0211011A054B030B071609160B140C0D010301020C5403010402020A2103010B0659072B05460A1F010C040C0A2802050B2C041A060B251C043F011D020B060A0D01080E0110314D030A11090C740C38080A03310209072B0203100301270582160206022602060208010101010101011F0235010701010303010703040206040D050301070F02310213011C010D01100D330D0401030C11010401020A01010206060101010101011002040505040111298A7780E506090C2601010501023807010F18090701070107010701070107010701070120820503190F01050205045602020203015F052B015E11203010820099C040A0568D432E02810D031C1430040A01732509026702400502010101051836040113340C460A0A06180301013102240C1D03410E0B061F0137090E020A061703491803021002050A060206020609070107012B010E067B0102020A06A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21808B0680DA12400236280A0610101003021803210101010301010101010101017E130A071A0401011A0A5A0306020602060203230C011A01130102010F020E227B453580880180821D03310F011F200D1E052B051E0224040801052A809E020A06240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D02030401201D031D2308011E19360A160A130D126E4937330D330D28080A81462A010203024B200A0108211F162A151B1709471F10093C07010D19070A0635010A04040824020109450404010D01012312012506043E0701010104010F010A073B050A0604010802020216010701020105010A0202020302010601050702070305808B4B050A04041E460101080A80A63602091706224103010B0A2639070A361B020F040A060780B93B654A1508020102080102011E010202090C0A4608022E020801021B3F0801084A03011249810709012D01090F0A181E0216010E49070102012C030101020109080A06060102012501020106070A8136170911012903050D0A56014F839A666F1180C48A4C610F843010168FAA8247A021B98239071F010A064F010A061E02050B3709040C0A0915051382B04080804B04390711400201020B020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A030292612E0217821E050306080802071E0480940381BB5501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232820037043208010E011605010F84501F060680D5070111020701020105053E2101702D030E020A040181411F113A81D62A82E60701040102010F0180C50B07294C040A84A604011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501118D340A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADD5080F0"; +_T Cc = x"00205F21"; +_T Regional_Indicator = x"A1F1E61A"; +_T Sc = x"24017D0484E9017B0181F20281F202070180F501810701824501899B0188C421A0877701A055C3016C01809A0180DB0203029FF604A0C31E0189B001"; +_T IDS_Unary_Operator = x"A02FFE02"; +_T Pf = x"80BB019F5D0103011C018DC8010101040102010F010301"; +_T Pe = x"290133011F018EBD010101875E0189A90137010F01827A0101011E01843E0101010101010101010101010150012001010101010101010181940101010101010101010101010101010101010101014001010121018425010101010101012C0101010101010181AC01010101010101010103010101010101010202A0CD1E0180D9011D010101010101010101010101010101030111010101010180AA0133011F0102010201"; +_T Other_Uppercase = x"A021601083461AA1CC601A061A061A"; +_T Cn = x"8378020604070101011401818D0126023202030137081B04060B810E013C02650E3B0231020F011C0201010B051F01020680EC010802020216010701010304020902020204080104020105021902030106040202160107010201020102020101050402020303010704010107110A03010901030116010701020105020A0103010302010F04020C0707010301080202021601070102010502090202020307030402010502120A0201060303010403020101010203020303030C040503030104020106010E15050D0103011701100209010301040702010302010204020A071601030117010A0105020901030104070206020104020A01030C0D01030133010301060410021A0103011203180109010102070301040601010108060A02030C3A041D250201010105011801010117020501010107010A02042048012404270124010F010D2580C60101050102817901040207010101040229010402210104020701010104020F0139010402430220031A0656020602829D03590716091809140C0D010301020C5E020A060A061A0659072B05460A1F010C040C0401032A02050B2C041A060B033E0241011D020B060A060E021F314D032F0174083C030F033C072B020B082B0582160206022602060208010101010101011F0235010F010E02060113020301090165010C021B010D03210F210F808C048297190B158714022001815D052D01010501023807020E1809070107010701070107010701070107017E221A01590C80D61A5001560267052B015E01540B3001A0726D033709815C1480B80880CB050201010105183B030A06380846080C06740B1E034E010B04210137090E020A0267181C0A060206020609070107013C047E020A06A02BA40C17043104A0226E026A26070C05051A0105010101020102017D1081BD02360701202A063301130104040501808702010180BE0306020602060203030701070A05020C011A01130102010F020E227B0503042D0358010D03012F2E80821D03310F1C0424091E052B051E0125040E2A809E020A06240424042808340B0C010F01070102010B010F0107010243813709160A081806012A010945060201012C01020301021701480809301301020521031B0501403804140232010205080103011D0203040A070907402027040C0936031D021B051A07040C07504937330D33072E080A81261F012A010302024B2B082A161A261C1417094E042409440A010219070A063501120827096001140B12012F3E0701010104010F010B063B050A0604010802020216010701020105010A0202020302010601050702070305808B5C01051E48080A80A636022622450B0A060D133A060A361B020F041780B93C64530C08020102080102011E0102020C090A4608022E020B1B4808530D49070A80F609012D010E0A1D03200216010E49070102012C030101020109080A06060102012501020106070A81361907110129031C56010F320D839B666F01050B80C48A4C630D84568FAA8247A021B98239071F010A0451010A061E02060A460A0A01070115051382B05B654B0439071140050B020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A0208925C2E021709743C80F60A270280C215467A140C140C57091980875501470102020102020204010C010101070141010402080107011C01040105010103070181540281240282BE0F05010F84501F060680D5070111020701020105053E2101702D030E020A040281401F113A050181D02A82E60701040102010F0180C50210294C040A04028311444C3D80C204011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402810E2C04640C0F020F010F01250A80AE381D0D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137250A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADC51011E60808080F0A0FE10A0FFFE02A0FFFE"; +_T Hyphen = x"2D017F0184DC01927B018809028E050182E301A0CD670180A9015701"; +_T Other_Math = x"5E0183710302011A0202029C20011B030B01200418020E02410D04010302040512010401020A0101030506010302020201030106030405054B05020401020102010101050202040204120202010101070101060281220480A80201011801110181BD020C0905050502020203050E01010102061802390101011D0409028156021F0A8193163F042002A0D463010101040180D3010101A0D4C15501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232960004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A0111050301050111"; +_T Ps = x"280132011F018EBE010101875E01897E010301260137010F01827A0101011E01843E0101010101010101010101010150012001010101010101010181940101010101010101010101010101010101010101014001010121018425010101010101011901120101010101010181AC01010101010101010103010101010101010201A0CD210180D7011D010101010101010101010101010101030111010101010180AA0132011F0103010201"; +_T Zs = x"20017F0195DF01897F0B24012F018FA001"; +_T Alphabetic = x"411A061A2F010A0104010517011F0181CA040C0E050701010156012A050102020401010601010301010114015301808B0880A6012602010629270E0101010201020101081B04041D0B053801070E660108040804030A03020110300D65182109020401051802131319070B05180106112A0A0C0307064C01100103040F0D1301080202021601070101030403080202020201010801040201050C020A010403010604020216010701020102010204050402020204010704010111060B0301090103011601070102010503090103010203010F04150404030108020202160107010201050308020202020902040201050D01100201060303010403020101010203020303030C04050303010303010601280D01030117011003080103010308020103020102041C04010801030117010A01050308010301030802060201040D030C0D01030129020801030103010105040705160601030112031801090101020708060101010812020D3A0507060133020101010501180101011301030205010106010E0420013F08012404130410012443370101020510400A04022601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07140B150C140C0D010301020C3402130E0104014359072B05460A1F010C0409171E02050B2C041A361C043F0214320117020B033134010F0108332A02040A2C010B0E3716030A240209072B020329040106010203010580C0270E0B81160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A010103050601010101010104010B0204050504011129832D34871680E5060403020C26010105010238070110170907010701070107010701070107010701202F0181D50319090705020504560603015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F050803712709026702400502010101051814012118340C4401012C06030101030A2105230D1D0333010C0F0110100A050137090E12170345010101011803021002040B060206020609070107012B010E067B15A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21816B12400236280C7405018087241A061A0B590306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E052B051E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D2A1D031D2308011C1B360A160A130D126E4937330D330D2881582A010203024E1D0A0108162A122E151B1709462B050A3909010D1917331104082303010940010409020A01010123120122020106043E0701010104010F010A07391704010802020216010701020105030802020202030106010507809C420103010414031E420202010180B83602071906223F010103013B360201471B020E150780B93967401F08020102080102011E0102020202045D08022E0206010101021B33020A114805011249810709012D01070101311E0216010E49070102012C030101020103010102021806010201250102010401018147170911012903036F014F839A666F1180C48A4C610F843011068FB98247A021B98239071F114F111E123010041F15051382B04080804B04390711400201010C020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A040197615501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060680D5070111020701020105053E2101702D0A07100181411E122C81E41C82F40701040102010F0180C53B440301030184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A011105030105011182741A061A061A8E76A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T XID_Start = x"411A061A2F010A0104010517011F0181CA040C0E05070101018081050102030301010601010301010114015301808B0880A6012602010629471B04042D2B2302016301010F0207020A0302011001011E1D590B0118210902040105160401090103011719070B05180106112A3A3603011201070A0F10040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001010D073A020101010501180101010A01010A0102050101150420013F0801241B05732B140110060404030103020703040D0C01112601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07120D130E120E0D01030F342301040143590729010105460A1F311E02050B2C041A3617093552015D2F1108361E0D020A2C1A2429030A240209072B020329040106010203010580C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A01010206060101010101011002040505040111298A7780E5060403020C26010105010238070110170907010701070107010701070107010782260319090705020504560603015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F101F025027090267024005020101010518100103010401171D340E323E06030101020B1C0A17191D072F1C011005010A0A05012917030108141703010332010103020205020101011803020B07030C060206020609070107012B010E06731DA02BA40C170431A02104816E026A26070C050501010A010D0105010101020102016C21808B0680DA12400236280A770101010301010101010101017E241A061A0B38021F0306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E05260A1E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4937330D330D24815C2A06024E1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C05809E35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C74401F0802010208010201180F0101015E080227100101011C010A28070115010B2E1301124981070901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A666F1180C48A4C610F843011068FB98247A021B98239071F114F111E123010041F15051382B04080804B0501420D400201011C97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A97665501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060681053E80922D0A07100181411E122C81E41C82F40701040102010F0180C53B44070184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Grapheme_Link = x"894D017F017F017F017F017F017F017F016D0210017C016F017F0180C90180B40286D9021E01809D01828D0180E30165024602918B01A07A86012501809701808E016C0181350180F601A05E510186060129010E0139017902808B01740180B401620180F4017F0180FC017F0176017401810D0181030280A10153011201510181A501810402510181A902"; +_T Dash = x"2D01855C0133018E41018405018809063D0127010F018186018C040102011F0204011C0181BE0113016F01A0CD900225010A0180A9018F9F01"; +_T Nl = x"96EE038A6F2302048E7E0119090E03A076AB0AA05A503581CC010801808605A0202A6F"; +_T IDS_Trinary_Operator = x"A02FF202"; +_T Terminal_Punctuation = x"21010A0101010B020301833E010801820101390148010E01010380B4012B0B010180EB02360F1F0181050284F40280AC0104068137028315088305017C034702809D03030127040202813A0281620480AE0201031D0280BC053E0283BC0209038DE4010D0104010A010102030281AC02A074FB02810D0380E305817E0256025F018097038093037F01100280F901A0526403010480A9010A0101010B02030141010201843A01300184860180C7018136028098064406590483B8052C0480BD0770047F038081020601100258056C0181A1030C02816604030F690280F903820501010180FB0257020402819E032D018285024A02852B05A045F90280850141030A01835202A04E06019DE704"; +_T Nd = x"300A86260A80860A80C60A819C0A760A760A760A760A760A760A760A760A760A600A760A460A81160A460A87460A260A812C0A80800A80A60A060A80B60A560A80860A060AA089C60A82A60A260A80C60A160A560A81960AA053160A85860A88860A832C0A80800A3C0A80900A81160A81560A760A81760A660A660A81A60A660A82F60A80F60A460A81A60AA04B060A560A80860AA06C743289400A81A60A81F60A84560A92960A"; +_T ID_Compat_Math_Start = x"A022020104011601A1B4A20119011F0119011F0119011F0119011F011901"; +_T Prepended_Concatenation_Mark = x"86000680D70131018180025001A107DA010F01"; +_T ASCII_Hex_Digit = x"300A07061A06"; +_T Mc = x"890301370102030804010232023A03060202020A012B013A0342013A030801010235023A010101060202020A0166020102030301030A0129033D043D023A0101050202010209021C010E023A03050301030A012A024B0306081202814A023F0180AB0204010601020219020A0302071502020602010A038678011E0180810107080102815A0402030402010680E0023A01010109010102080680910130010501010501023D011E01040202013C010203010103023008080280AB011501933602A077F302020158023210808E022F013002040202036E02020218012D0101016D010202050180ED02010201020101A064130101017F012D030402730118023B01300309020D015D030302010180AA031F023A0201040202020309010A0280D103080203016A0306010104020180ED03060402017103080201016D010102060169020401810503090180F7060102040102010101808E030804040154011D023E018197010E016A010701020180D50504020101815E020C01300208020101A0500F376802A06173020606"; +_T Radical = x"A02E801A01590C80D6"; +_T Quotation_Mark = x"220104018083010F019F5C0819028E070181C9040D03A0CE210480BD0104015A02"; +_T Other_Default_Ignorable_Code_Point = x"834F018E0F0286530288AF0190FE01A0CE3B014F09AD000701011E60808080F08E10"; +_T Join_Control = x"A0200C02"; +_T Grapheme_Base = x"205F210D018252700802060407010101140180E00780A60126023202032E01010102010201091B0406110A0B01012E1510016508010602020104200201011E1D590B010E2B09070318040109010301070F01190501010B051F112A39370101010408040103070A021D0102010802020216010701010304030101020602020201010D020103041805010106040202160107010201020102040318040101070A020301010C0101090103011601070102010503040801010203010F02040C0701080201080202021601070102010503010201060202020F02010304120B0101060303010403020101010203020303030C0501010203030103030115150603010801030117011003010304130302010202040A070A010B01030117010A01050302010201020202010211020102040A01030E0B01030129020101020503010301020403010A041A02020112031801090101020709020607070A02030C3001020B08080D25020101010501180101010A0102090102050101090A02042018021B01010101010E012412010501020531080106010D252D040106010202021902040310040D01020206010F01280101050102817901040207010101040229010402210104020701010104020F013901040243051D031A0656020602829D0359071203010913020309120E0D01030F340201070801020B09030A060A060B050A065907050222010105460A1F04040203040201060701032A02050B2C041A060B03390202033801010901010208060D0A060A060E563007010105010A031B090B0320040202010338010102030101030208300802050F033C072B020B0B010D0107040106010302010580C04081160206022602060208010101010101011F0235010F010E0206011302030109010B051807311002021B010D03213F808C048297190B15871402200181580302052D01010501023807020F1709070107010701070107010701070107215E221A01590C80D61A3A061001560465052B015E01540B3001A0726D033709815C142F04010A20025002060880CB05020101010518100103010401190205040A063808440A0C180D012608190B020B1E0630010204020210010B040701190129060202020B0301080101020A0220013301010302020502010101181102080B060206020609070107013C047501020104030A06A02BA40C170431A02104816E026A26070C05050101180105010101020102017D1081BD023607012010100A162301130104040501808704809D021F0306020602060203030701070D02020C011A01130102010F020E227B0503042D0358010D03012F2D80831D0331101B0424091E05260A1E0125040E2A809E020A06240424042808340B0C010F01070102010B010F0107010243813709160A081806012A010945060201012C01020301021701480809301301020521031B050140380414022F0F040103011D0A09070907402025060C0936031D021B051A07040C07504937330D33072A0C0A81261F012A030102024E2808160B0916120404261C1417090101360F07041E010202010C310402020201040E19070A092405010912082301030B34090A0402011001140B12011C03020101020601023F0701010104010F010B062F01030D0A08020108020202160107010201050301010101040202020302010C07809C38080203010115010101031E30010206010102010102010204080A80A62F010206040201021B24330802010102040B0A060D132B0101010206010102060A361B05020401091780B92F0901020164530C08020102080102011801050102040101040103090A4608022A080401041B010A280602040809010602032E0D0102090D49070A80F60901260E0101060A1D03201901070102014B07010201261501090A060601020125040201010101070A8136130204090F012408020101011756010F320D839B666F01050B80C48A4C630D843011068FB98247A021B98239071F010A0451010A061E07010A30070F0A0A01070115051382B05B654B05380B0D40040C020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A0201020192B0743C80F60A27023C010103041502071E043D154203017A140C140C57091980875501470102020102020204010C010101070141010402080107011C010401050101030701815402812402823237043208010E010784741F060681053E80922D0A07020A040281401E122C040A050181D01C040A82E60701040102010F0180C5020930440701040A04028311444C3D80C204011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402810E2C04640C0F020F010F01250A80AE381D0D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137250A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Uppercase = x"411A6517010721010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102030107010201020102010101010101010101010101010101020101010101010101010101010101010101020102010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010181210101010301080106010103010101020111010923010203030101010101010101010101010101010101010101010101050102010102023330010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102268B49260101050182D256889A2B0203814001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101090808060A08080808060B01010101010101080848040C040C040C050B0481060104010303020302010305060101010101010402040A0205011A10130183321A8730303001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080101010401A0794D0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011301010101010101010101010101010101010101010101010101010180870101010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A0101010102010101010101010104010101020101010301010101010101010101010101010101010101010501050101010101010101010101010101010401010601050101011C01A0572B1A84C528808824809C0B010F0107010286EA338BED20A0558020A065A01A1A1A1A1A1A01010202010202020401081A1A1A020104020801071B0201040105010103071B1A1A1A1A1A1A1A1A1A1A1A1E1921192119211921192101913522880E1A061A061A"; +_T Zl = x"A0202801"; +_T Hex_Digit = x"300A07061A06A0FEA90A07061A06"; +_T Zp = x"A0202901"; +_T Pattern_White_Space = x"0905120164019F88021802"; +_T Diacritic = x"5E010101470106010401020281F7809F0108050611020401090280FD0580D1013711011B010101020101808608040280860204020303431B5B0B3A0B22027E08290A101C3D01100103041C014A0110016E0110016E0110012F033C011001070177016E0110016E0110016D0210017C017C0601016B010D054B021B01010101010402420301023E017001010228020405190701010A0282C10383B40280B30B0901815B038139080201300F020B68010F0126093602808A0240065219040106010203323F590C250B81BD0101030B030D030D030D028CF003813D0181FA0669045F01A07572010C0201011C0252020E2266036D0280CA011B12390424015F010C0124018095034104330164050903808002A04F3001830110810E0101012F012D02430182FC01849F06012A0109832A02823B0681D503460B310480C0012901480278023E014C010903680280B202510110011807030580CD0103017B0280FB027E0176027301810D028102020401809C0153011201510181A5018102010102510196AF0FA0369A053B078458115002A03FFE04010701029F012E02178220030306080802071E048E823E80C2078177013D0485E0076D030103"; +_T Lowercase = x"611A2F010A01040124180108010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102020203060102010201010101010101010101010101010101020101010101010101010101010101010101020201010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010145012407021E0560012B0101010301020412011B2301020303010101010101010101010101010101010101010101010105010102010202333001010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020101010101010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010130298B472B010482F8068882097780C0410101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010908060A08080808060A080808080E020808080808080501020601030301020804020208080A03010279010D01100D6D01030203011B010401040102020804040121100401834B1A87463001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020701010104010C2601010501A0791301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010113010101010101010101010101010101010101010101010101010103808501010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A010101010201010101010101010104010101020101030101010101010101010101010101010101010101050105010101010101010101010101010101040101010601010101010101010118030101010383352B010E0650A04F40070C0584291A84CD28808824809B0B010F0107010281C3010203012A01098505338BCD20A0558020A0659A1A1A0701121A1A1A0401010107010B1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1C1C1901061A1901061A1901061A1901061A190106010187340A0114060681053E88B422"; +_T Ll = x"611A3A0129180108010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102020203060102010201010101010101010101010101010101020101010101010101010101010101010101020201010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010145011B80C10101010301030312011B2301020303010101010101010101010101010101010101010101010105010102010202333001010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020101010101010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010130298B472B020382F806888209772C3F0D0122660101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010908060A08080808060A080808080E020808080808080501020601030301020804020208080A030102811201030203011B010401040102020804040135018AAB3001010302010101010101040101020106050101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020701010104010C2601010501A07913010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101130101010101010101010101010101010101010101010101010101018087010101010101010101010101030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010801010101020101010101010101010401010102010103010101010101010101010101010101010101010105010501010101010101010101010101010104010101060101010101010101011C01030183352B05090750A04F40070C0584291A84CD28808824809B0B010F010701028703338BCD20A0558020A0659A1A1A0701121A1A1A0401010107010B1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1C1C1901061A1901061A1901061A1901061A190106010187340A0114060689F722"; +_T Extender = x"80B701821802836E0181B901835A0182F0017F018943013801826301818E0144019389012B0567025D03A06F160185F60183C20116018089016C011502A0547B018810028BDA0182680384CF01A050A902849C020101A0715802880603"; +_T Lm = x"82B012040C0E0507010101808501050181DE0180E60180A402810D0204011F010901030180A00180A70184D4017F0182350186DA016B0182630181D00680AE3F0D01222582B1010D01100D8BDF0280F10180BF0181D5012B05050161025D03A06F160184E206810E0172011C027909500117016903030281D50116018089016C01150267040901A05406012D0287E006012A0109A0638504844F0D40020101A0400C0401070102A030313E80C90783AD01845F01"; +_T Mn = x"83007081130581092D0101010201020101480B30151001650702060202010423011E1B5B0B3A09090118040109010301052B033C082A180120370101010408040103070A021D013A010404080114021A010202390104020402020303011E0203010B0239010405010204011402160601013A0102010104080107020B021E013D010C0132010301370101030503010407020B021D013A0102010601050214021C0239020404080114021D014801070301015A0102070C08620102090B0749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F0182BF0383B2031D021E021E02400201070801020B09012D03010175022201760304020901060380DB0202013A010107010101010208060A0201300E01103104300101050101050128090C0220040202010338010102030101033A080202809803010D010704010601030280C64082D00D0401030C8BFE03808D016020822A046B02A075D401040A2002500281100103010401190205018097021A120D012608190B2E0330010204020227014306020202020C0108012F01330101030202050201012A02080180EE0102010401A04F300182E110101083CD0180E201809505868603010205042803040180A502823D048183025003460B31047B01360F290102020A033104020207013D03240501083E010C0234090A0402015F030201010206010201809D0103081502390203012507030580C308020301011701540601010402010280EE04060201021B025508020101026A0101010206010165030204010581030901028100020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B0234050501010194FD01060FA0369A053B078418013F045101A04CB80292612E0217822003110802071E0480940387BB37043208010E011605010F8550070111020701020105640180A0078177013D0481FC0483E0076D07AC17B580F0"; +_T Sk = x"5E01010147010601040103018209040C0E05070101011175010E0285020197340101030B030D030D030D02909C02A07663170902670283D0010E02A0504611837B01010180A201A0F41705"; +_T Po = x"210301030201010101020A0203021B01440105010E02070182BE01080181D20629013601020102012C02140201020D0101034A0466012B0E80E903360F1F018105020A01808C01780179018186010C01816F015A010A0280A80F010170014A0504026F0680AB018264098305017C034702809D0301032506010481390280D802808007010680AC071C027D043B053E0240080B018342020808080902040203030B0101010A8C9A0401027001808F020403020102090102010102020A05010A02040101010D020381AC03390180BD01A0740202810D0363010A017306817C0456022803010131022F01610D10027C047E02100280F901A052240702011601140202040303010407030601010280950301030201010101020A0203021B0124010202819A03829C013001819E0182E70180C7011F01811009260170074207590483B8052C0480BD076D0201047E0430024F0404010D01010358066B0181A1050A020101680180FA1769031C0D4C0180820380FC01810803809B015C08530301055D0A8137052A028285024A0D80AF018470058B7C02A03A7B0280850141050801835204814701A04CBC019DE7058ED202"; +_T Deprecated = x"814901852901890301010188290288C50682B902ADDCD601"; +_T Other_ID_Continue = x"80B70182CF018FE10986680186310290ED01A0CE6901"; _U[] _tab = [ _U("Alphabetic", Alphabetic), _U("ASCII_Hex_Digit", ASCII_Hex_Digit), @@ -1831,334 +1831,334 @@ private alias _U = immutable(UnicodeProperty); @property static _U[] tab() pure { return _tab; } static immutable: private alias _T = ubyte[]; -_T CJK_Unified_Ideographs_Extension_G = [0xa3, 0x0, 0x0, 0x93, 0x50]; -_T Tai_Le = [0x99, 0x50, 0x30]; -_T Coptic = [0xa0, 0x2c, 0x80, 0x80, 0x80]; -_T Halfwidth_and_Fullwidth_Forms = [0xa0, 0xff, 0x0, 0x80, 0xf0]; -_T Cyrillic = [0x84, 0x0, 0x81, 0x0]; -_T CJK_Radicals_Supplement = [0xa0, 0x2e, 0x80, 0x80, 0x80]; -_T Thaana = [0x87, 0x80, 0x40]; -_T Specials = [0xa0, 0xff, 0xf0, 0x10]; -_T Hangul_Jamo_Extended_B = [0xa0, 0xd7, 0xb0, 0x50]; -_T Linear_B_Syllabary = [0xa1, 0x0, 0x0, 0x80, 0x80]; -_T Ogham = [0x96, 0x80, 0x20]; -_T Arabic_Extended_C = [0xa1, 0xe, 0xc0, 0x40]; -_T Nabataean = [0xa1, 0x8, 0x80, 0x30]; -_T Makasar = [0xa1, 0x1e, 0xe0, 0x20]; -_T CJK_Unified_Ideographs_Extension_B = [0xa2, 0x0, 0x0, 0xa0, 0xa6, 0xe0]; -_T Siddham = [0xa1, 0x15, 0x80, 0x80, 0x80]; -_T Kana_Extended_A = [0xa1, 0xb1, 0x0, 0x30]; -_T Supplemental_Arrows_C = [0xa1, 0xf8, 0x0, 0x81, 0x0]; -_T Kaktovik_Numerals = [0xa1, 0xd2, 0xc0, 0x20]; -_T Combining_Diacritical_Marks = [0x83, 0x0, 0x70]; -_T Vertical_Forms = [0xa0, 0xfe, 0x10, 0x10]; -_T Old_Sogdian = [0xa1, 0xf, 0x0, 0x30]; -_T Old_South_Arabian = [0xa1, 0xa, 0x60, 0x20]; -_T Cyrillic_Extended_C = [0x9c, 0x80, 0x10]; -_T Myanmar = [0x90, 0x0, 0x80, 0xa0]; -_T Bassa_Vah = [0xa1, 0x6a, 0xd0, 0x30]; -_T Deseret = [0xa1, 0x4, 0x0, 0x50]; -_T Phaistos_Disc = [0xa1, 0x1, 0xd0, 0x30]; -_T Common_Indic_Number_Forms = [0xa0, 0xa8, 0x30, 0x10]; -_T Unified_Canadian_Aboriginal_Syllabics_Extended = [0x98, 0xb0, 0x50]; -_T Kaithi = [0xa1, 0x10, 0x80, 0x50]; -_T Medefaidrin = [0xa1, 0x6e, 0x40, 0x60]; -_T Arabic_Supplement = [0x87, 0x50, 0x30]; -_T Yi_Radicals = [0xa0, 0xa4, 0x90, 0x40]; -_T Tai_Tham = [0x9a, 0x20, 0x80, 0x90]; -_T Hiragana = [0xa0, 0x30, 0x40, 0x60]; -_T Hangul_Compatibility_Jamo = [0xa0, 0x31, 0x30, 0x60]; -_T Linear_B_Ideograms = [0xa1, 0x0, 0x80, 0x80, 0x80]; -_T Syriac_Supplement = [0x88, 0x60, 0x10]; -_T Ahom = [0xa1, 0x17, 0x0, 0x50]; -_T Shorthand_Format_Controls = [0xa1, 0xbc, 0xa0, 0x10]; -_T Phonetic_Extensions = [0x9d, 0x0, 0x80, 0x80]; -_T Nag_Mundari = [0xa1, 0xe4, 0xd0, 0x30]; -_T Devanagari = [0x89, 0x0, 0x80, 0x80]; -_T Tibetan = [0x8f, 0x0, 0x81, 0x0]; -_T Hanifi_Rohingya = [0xa1, 0xd, 0x0, 0x40]; -_T Old_Uyghur = [0xa1, 0xf, 0x70, 0x40]; -_T Enclosed_Ideographic_Supplement = [0xa1, 0xf2, 0x0, 0x81, 0x0]; -_T Brahmi = [0xa1, 0x10, 0x0, 0x80, 0x80]; -_T Number_Forms = [0xa0, 0x21, 0x50, 0x40]; -_T Mayan_Numerals = [0xa1, 0xd2, 0xe0, 0x20]; -_T Ornamental_Dingbats = [0xa1, 0xf6, 0x50, 0x30]; -_T Symbols_for_Legacy_Computing = [0xa1, 0xfb, 0x0, 0x81, 0x0]; -_T Unified_Canadian_Aboriginal_Syllabics_Extended_A = [0xa1, 0x1a, 0xb0, 0x10]; -_T Greek_and_Coptic = [0x83, 0x70, 0x80, 0x90]; -_T CJK_Unified_Ideographs_Extension_I = [0xa2, 0xeb, 0xf0, 0x82, 0x70]; -_T Counting_Rod_Numerals = [0xa1, 0xd3, 0x60, 0x20]; -_T Ethiopic_Extended_B = [0xa1, 0xe7, 0xe0, 0x20]; -_T Supplemental_Mathematical_Operators = [0xa0, 0x2a, 0x0, 0x81, 0x0]; -_T Osage = [0xa1, 0x4, 0xb0, 0x50]; -_T Nushu = [0xa1, 0xb1, 0x70, 0x81, 0x90]; -_T Chess_Symbols = [0xa1, 0xfa, 0x0, 0x70]; -_T Cuneiform = [0xa1, 0x20, 0x0, 0x84, 0x0]; -_T Takri = [0xa1, 0x16, 0x80, 0x50]; -_T Enclosed_Alphanumeric_Supplement = [0xa1, 0xf1, 0x0, 0x81, 0x0]; -_T Sutton_SignWriting = [0xa1, 0xd8, 0x0, 0x82, 0xb0]; -_T Miscellaneous_Technical = [0xa0, 0x23, 0x0, 0x81, 0x0]; -_T Old_Italic = [0xa1, 0x3, 0x0, 0x30]; -_T Toto = [0xa1, 0xe2, 0x90, 0x30]; -_T Hanunoo = [0x97, 0x20, 0x20]; -_T Lisu = [0xa0, 0xa4, 0xd0, 0x30]; -_T Limbu = [0x99, 0x0, 0x50]; -_T Saurashtra = [0xa0, 0xa8, 0x80, 0x60]; -_T Elbasan = [0xa1, 0x5, 0x0, 0x30]; -_T Variation_Selectors_Supplement = [0xae, 0x1, 0x0, 0x80, 0xf0]; -_T Psalter_Pahlavi = [0xa1, 0xb, 0x80, 0x30]; -_T Palmyrene = [0xa1, 0x8, 0x60, 0x20]; -_T Tagbanwa = [0x97, 0x60, 0x20]; -_T CJK_Unified_Ideographs_Extension_F = [0xa2, 0xce, 0xb0, 0x9d, 0x40]; -_T Combining_Diacritical_Marks_for_Symbols = [0xa0, 0x20, 0xd0, 0x30]; -_T Dingbats = [0xa0, 0x27, 0x0, 0x80, 0xc0]; -_T Nyiakeng_Puachue_Hmong = [0xa1, 0xe1, 0x0, 0x50]; -_T Combining_Half_Marks = [0xa0, 0xfe, 0x20, 0x10]; -_T Supplementary_Private_Use_Area_A = [0xaf, 0x0, 0x0, 0xa1, 0x0, 0x0]; -_T Playing_Cards = [0xa1, 0xf0, 0xa0, 0x60]; -_T Malayalam = [0x8d, 0x0, 0x80, 0x80]; -_T Indic_Siyaq_Numbers = [0xa1, 0xec, 0x70, 0x50]; -_T Variation_Selectors = [0xa0, 0xfe, 0x0, 0x10]; -_T Thai = [0x8e, 0x0, 0x80, 0x80]; -_T Supplemental_Arrows_B = [0xa0, 0x29, 0x0, 0x80, 0x80]; -_T Zanabazar_Square = [0xa1, 0x1a, 0x0, 0x50]; -_T Ideographic_Symbols_and_Punctuation = [0xa1, 0x6f, 0xe0, 0x20]; -_T Symbols_and_Pictographs_Extended_A = [0xa1, 0xfa, 0x70, 0x80, 0x90]; -_T High_Private_Use_Surrogates = [0xa0, 0xdb, 0x80, 0x80, 0x80]; -_T Modifier_Tone_Letters = [0xa0, 0xa7, 0x0, 0x20]; -_T Samaritan = [0x88, 0x0, 0x40]; -_T Egyptian_Hieroglyph_Format_Controls = [0xa1, 0x34, 0x30, 0x30]; -_T Latin_Extended_Additional = [0x9e, 0x0, 0x81, 0x0]; -_T Coptic_Epact_Numbers = [0xa1, 0x2, 0xe0, 0x20]; -_T Small_Form_Variants = [0xa0, 0xfe, 0x50, 0x20]; -_T Balinese = [0x9b, 0x0, 0x80, 0x80]; -_T Mandaic = [0x88, 0x40, 0x20]; -_T Block_Elements = [0xa0, 0x25, 0x80, 0x20]; -_T Supplemental_Symbols_and_Pictographs = [0xa1, 0xf9, 0x0, 0x81, 0x0]; -_T Miscellaneous_Mathematical_Symbols_A = [0xa0, 0x27, 0xc0, 0x30]; -_T Tifinagh = [0xa0, 0x2d, 0x30, 0x50]; -_T Arabic_Extended_A = [0x88, 0xa0, 0x60]; -_T Cyrillic_Extended_A = [0xa0, 0x2d, 0xe0, 0x20]; -_T Syriac = [0x87, 0x0, 0x50]; -_T Latin_Extended_E = [0xa0, 0xab, 0x30, 0x40]; -_T Caucasian_Albanian = [0xa1, 0x5, 0x30, 0x40]; -_T Soyombo = [0xa1, 0x1a, 0x50, 0x60]; -_T Syloti_Nagri = [0xa0, 0xa8, 0x0, 0x30]; -_T NKo = [0x87, 0xc0, 0x40]; -_T Tai_Viet = [0xa0, 0xaa, 0x80, 0x60]; -_T Low_Surrogates = [0xa0, 0xdc, 0x0, 0x84, 0x0]; -_T Elymaic = [0xa1, 0xf, 0xe0, 0x20]; -_T Hatran = [0xa1, 0x8, 0xe0, 0x20]; -_T Sundanese_Supplement = [0x9c, 0xc0, 0x10]; -_T CJK_Unified_Ideographs_Extension_H = [0xa3, 0x13, 0x50, 0x90, 0x60]; -_T Chorasmian = [0xa1, 0xf, 0xb0, 0x30]; -_T Kana_Extended_B = [0xa1, 0xaf, 0xf0, 0x10]; -_T Glagolitic = [0xa0, 0x2c, 0x0, 0x60]; -_T Devanagari_Extended_A = [0xa1, 0x1b, 0x0, 0x60]; -_T Hangul_Syllables = [0xa0, 0xac, 0x0, 0xa0, 0x2b, 0xb0]; -_T Osmanya = [0xa1, 0x4, 0x80, 0x30]; -_T Enclosed_CJK_Letters_and_Months = [0xa0, 0x32, 0x0, 0x81, 0x0]; -_T Meetei_Mayek_Extensions = [0xa0, 0xaa, 0xe0, 0x20]; -_T Hangul_Jamo = [0x91, 0x0, 0x81, 0x0]; -_T Mro = [0xa1, 0x6a, 0x40, 0x30]; -_T Currency_Symbols = [0xa0, 0x20, 0xa0, 0x30]; -_T Bopomofo_Extended = [0xa0, 0x31, 0xa0, 0x20]; -_T Chakma = [0xa1, 0x11, 0x0, 0x50]; -_T Pau_Cin_Hau = [0xa1, 0x1a, 0xc0, 0x40]; -_T Latin_Extended_G = [0xa1, 0xdf, 0x0, 0x81, 0x0]; -_T CJK_Unified_Ideographs = [0xa0, 0x4e, 0x0, 0xa0, 0x52, 0x0]; -_T Znamenny_Musical_Notation = [0xa1, 0xcf, 0x0, 0x80, 0xd0]; -_T New_Tai_Lue = [0x99, 0x80, 0x60]; -_T Modi = [0xa1, 0x16, 0x0, 0x60]; -_T Bamum_Supplement = [0xa1, 0x68, 0x0, 0x82, 0x40]; -_T Cypro_Minoan = [0xa1, 0x2f, 0x90, 0x70]; -_T Basic_Latin = [0x0, 0x80, 0x80]; -_T Multani = [0xa1, 0x12, 0x80, 0x30]; -_T Alchemical_Symbols = [0xa1, 0xf7, 0x0, 0x80, 0x80]; -_T Bopomofo = [0xa0, 0x31, 0x0, 0x30]; -_T Adlam = [0xa1, 0xe9, 0x0, 0x60]; -_T Khitan_Small_Script = [0xa1, 0x8b, 0x0, 0x82, 0x0]; -_T Old_Turkic = [0xa1, 0xc, 0x0, 0x50]; -_T Lao = [0x8e, 0x80, 0x80, 0x80]; -_T Cherokee_Supplement = [0xa0, 0xab, 0x70, 0x50]; -_T CJK_Compatibility_Ideographs = [0xa0, 0xf9, 0x0, 0x82, 0x0]; -_T Latin_Extended_F = [0xa1, 0x7, 0x80, 0x40]; -_T Lisu_Supplement = [0xa1, 0x1f, 0xb0, 0x10]; -_T Latin_Extended_A = [0x81, 0x0, 0x80, 0x80]; -_T Spacing_Modifier_Letters = [0x82, 0xb0, 0x50]; -_T Gothic = [0xa1, 0x3, 0x30, 0x20]; -_T Sinhala_Archaic_Numbers = [0xa1, 0x11, 0xe0, 0x20]; -_T Egyptian_Hieroglyphs = [0xa1, 0x30, 0x0, 0x84, 0x30]; -_T Sinhala = [0x8d, 0x80, 0x80, 0x80]; -_T Rejang = [0xa0, 0xa9, 0x30, 0x30]; -_T Glagolitic_Supplement = [0xa1, 0xe0, 0x0, 0x30]; -_T Lepcha = [0x9c, 0x0, 0x50]; -_T Optical_Character_Recognition = [0xa0, 0x24, 0x40, 0x20]; -_T Greek_Extended = [0x9f, 0x0, 0x81, 0x0]; -_T Miscellaneous_Symbols_and_Pictographs = [0xa1, 0xf3, 0x0, 0x83, 0x0]; -_T Emoticons = [0xa1, 0xf6, 0x0, 0x50]; -_T Tirhuta = [0xa1, 0x14, 0x80, 0x60]; -_T Marchen = [0xa1, 0x1c, 0x70, 0x50]; -_T Geometric_Shapes_Extended = [0xa1, 0xf7, 0x80, 0x80, 0x80]; -_T Arabic_Presentation_Forms_A = [0xa0, 0xfb, 0x50, 0x82, 0xb0]; -_T Cyrillic_Extended_D = [0xa1, 0xe0, 0x30, 0x60]; -_T Phoenician = [0xa1, 0x9, 0x0, 0x20]; -_T Wancho = [0xa1, 0xe2, 0xc0, 0x40]; -_T Meroitic_Hieroglyphs = [0xa1, 0x9, 0x80, 0x20]; -_T Alphabetic_Presentation_Forms = [0xa0, 0xfb, 0x0, 0x50]; -_T Linear_A = [0xa1, 0x6, 0x0, 0x81, 0x80]; -_T Mahjong_Tiles = [0xa1, 0xf0, 0x0, 0x30]; -_T Gurmukhi = [0x8a, 0x0, 0x80, 0x80]; -_T Byzantine_Musical_Symbols = [0xa1, 0xd0, 0x0, 0x81, 0x0]; -_T Transport_and_Map_Symbols = [0xa1, 0xf6, 0x80, 0x80, 0x80]; -_T Unified_Canadian_Aboriginal_Syllabics = [0x94, 0x0, 0x82, 0x80]; -_T Khojki = [0xa1, 0x12, 0x0, 0x50]; -_T Khudawadi = [0xa1, 0x12, 0xb0, 0x50]; -_T Newa = [0xa1, 0x14, 0x0, 0x80, 0x80]; -_T Dogra = [0xa1, 0x18, 0x0, 0x50]; -_T Ancient_Greek_Musical_Notation = [0xa1, 0xd2, 0x0, 0x50]; -_T Cypriot_Syllabary = [0xa1, 0x8, 0x0, 0x40]; -_T Latin_1_Supplement = [0x80, 0x80, 0x80, 0x80]; -_T Hangul_Jamo_Extended_A = [0xa0, 0xa9, 0x60, 0x20]; -_T Imperial_Aramaic = [0xa1, 0x8, 0x40, 0x20]; -_T Tamil_Supplement = [0xa1, 0x1f, 0xc0, 0x40]; -_T Oriya = [0x8b, 0x0, 0x80, 0x80]; -_T Tai_Xuan_Jing_Symbols = [0xa1, 0xd3, 0x0, 0x60]; -_T Enclosed_Alphanumerics = [0xa0, 0x24, 0x60, 0x80, 0xa0]; -_T Meetei_Mayek = [0xa0, 0xab, 0xc0, 0x40]; -_T Tagalog = [0x97, 0x0, 0x20]; -_T Sundanese = [0x9b, 0x80, 0x40]; -_T CJK_Compatibility_Ideographs_Supplement = [0xa2, 0xf8, 0x0, 0x82, 0x20]; -_T Cuneiform_Numbers_and_Punctuation = [0xa1, 0x24, 0x0, 0x80, 0x80]; -_T Ethiopic_Extended = [0xa0, 0x2d, 0x80, 0x60]; -_T Domino_Tiles = [0xa1, 0xf0, 0x30, 0x70]; -_T Old_Permic = [0xa1, 0x3, 0x50, 0x30]; -_T Supplementary_Private_Use_Area_B = [0xb0, 0x0, 0x0]; -_T Shavian = [0xa1, 0x4, 0x50, 0x30]; -_T Anatolian_Hieroglyphs = [0xa1, 0x44, 0x0, 0x82, 0x80]; -_T Lycian = [0xa1, 0x2, 0x80, 0x20]; -_T Inscriptional_Pahlavi = [0xa1, 0xb, 0x60, 0x20]; -_T Ancient_Greek_Numbers = [0xa1, 0x1, 0x40, 0x50]; -_T Miao = [0xa1, 0x6f, 0x0, 0x80, 0xa0]; -_T CJK_Unified_Ideographs_Extension_E = [0xa2, 0xb8, 0x20, 0x96, 0x90]; -_T Pahawh_Hmong = [0xa1, 0x6b, 0x0, 0x80, 0x90]; -_T Tangut = [0xa1, 0x70, 0x0, 0x98, 0x0]; -_T Bengali = [0x89, 0x80, 0x80, 0x80]; -_T CJK_Compatibility_Forms = [0xa0, 0xfe, 0x30, 0x20]; -_T Vithkuqi = [0xa1, 0x5, 0x70, 0x50]; -_T Supplemental_Punctuation = [0xa0, 0x2e, 0x0, 0x80, 0x80]; -_T Armenian = [0x85, 0x30, 0x60]; -_T Arabic_Presentation_Forms_B = [0xa0, 0xfe, 0x70, 0x80, 0x90]; -_T Tangut_Components = [0xa1, 0x88, 0x0, 0x83, 0x0]; -_T Sogdian = [0xa1, 0xf, 0x30, 0x40]; -_T Ottoman_Siyaq_Numbers = [0xa1, 0xed, 0x0, 0x50]; -_T Buhid = [0x97, 0x40, 0x20]; -_T Myanmar_Extended_A = [0xa0, 0xaa, 0x60, 0x20]; -_T Manichaean = [0xa1, 0xa, 0xc0, 0x40]; -_T Miscellaneous_Mathematical_Symbols_B = [0xa0, 0x29, 0x80, 0x80, 0x80]; -_T Latin_Extended_D = [0xa0, 0xa7, 0x20, 0x80, 0xe0]; -_T Avestan = [0xa1, 0xb, 0x0, 0x40]; -_T Small_Kana_Extension = [0xa1, 0xb1, 0x30, 0x40]; -_T Ethiopic_Supplement = [0x93, 0x80, 0x20]; -_T Arabic = [0x86, 0x0, 0x81, 0x0]; -_T Kayah_Li = [0xa0, 0xa9, 0x0, 0x30]; -_T Javanese = [0xa0, 0xa9, 0x80, 0x60]; -_T Lydian = [0xa1, 0x9, 0x20, 0x20]; -_T Aegean_Numbers = [0xa1, 0x1, 0x0, 0x40]; -_T Braille_Patterns = [0xa0, 0x28, 0x0, 0x81, 0x0]; -_T Buginese = [0x9a, 0x0, 0x20]; -_T CJK_Symbols_and_Punctuation = [0xa0, 0x30, 0x0, 0x40]; -_T Batak = [0x9b, 0xc0, 0x40]; -_T Combining_Diacritical_Marks_Supplement = [0x9d, 0xc0, 0x40]; -_T High_Surrogates = [0xa0, 0xd8, 0x0, 0x83, 0x80]; -_T Vedic_Extensions = [0x9c, 0xd0, 0x30]; -_T Nandinagari = [0xa1, 0x19, 0xa0, 0x60]; -_T Kanbun = [0xa0, 0x31, 0x90, 0x10]; -_T Arrows = [0xa0, 0x21, 0x90, 0x70]; -_T Devanagari_Extended = [0xa0, 0xa8, 0xe0, 0x20]; -_T Inscriptional_Parthian = [0xa1, 0xb, 0x40, 0x20]; -_T Cham = [0xa0, 0xaa, 0x0, 0x60]; -_T Box_Drawing = [0xa0, 0x25, 0x0, 0x80, 0x80]; -_T Ugaritic = [0xa1, 0x3, 0x80, 0x20]; -_T Georgian = [0x90, 0xa0, 0x60]; -_T Tangut_Supplement = [0xa1, 0x8d, 0x0, 0x80, 0x80]; -_T Kana_Supplement = [0xa1, 0xb0, 0x0, 0x81, 0x0]; -_T Sharada = [0xa1, 0x11, 0x80, 0x60]; -_T Tamil = [0x8b, 0x80, 0x80, 0x80]; -_T Old_Persian = [0xa1, 0x3, 0xa0, 0x40]; -_T Geometric_Shapes = [0xa0, 0x25, 0xa0, 0x60]; -_T Cherokee = [0x93, 0xa0, 0x60]; -_T Superscripts_and_Subscripts = [0xa0, 0x20, 0x70, 0x30]; -_T CJK_Strokes = [0xa0, 0x31, 0xc0, 0x30]; -_T Letterlike_Symbols = [0xa0, 0x21, 0x0, 0x50]; -_T CJK_Unified_Ideographs_Extension_D = [0xa2, 0xb7, 0x40, 0x80, 0xe0]; -_T Yijing_Hexagram_Symbols = [0xa0, 0x4d, 0xc0, 0x40]; -_T Georgian_Extended = [0x9c, 0x90, 0x30]; -_T Khmer_Symbols = [0x99, 0xe0, 0x20]; -_T Sora_Sompeng = [0xa1, 0x10, 0xd0, 0x30]; -_T Private_Use_Area = [0xa0, 0xe0, 0x0, 0x99, 0x0]; -_T Kharoshthi = [0xa1, 0xa, 0x0, 0x60]; -_T Dives_Akuru = [0xa1, 0x19, 0x0, 0x60]; -_T Ancient_Symbols = [0xa1, 0x1, 0x90, 0x40]; -_T Katakana = [0xa0, 0x30, 0xa0, 0x60]; -_T Ideographic_Description_Characters = [0xa0, 0x2f, 0xf0, 0x10]; -_T Cyrillic_Extended_B = [0xa0, 0xa6, 0x40, 0x60]; -_T Meroitic_Cursive = [0xa1, 0x9, 0xa0, 0x60]; -_T Mende_Kikakui = [0xa1, 0xe8, 0x0, 0x80, 0xe0]; -_T Rumi_Numeral_Symbols = [0xa1, 0xe, 0x60, 0x20]; -_T Combining_Diacritical_Marks_Extended = [0x9a, 0xb0, 0x50]; -_T Telugu = [0x8c, 0x0, 0x80, 0x80]; -_T Cyrillic_Supplement = [0x85, 0x0, 0x30]; -_T Ethiopic = [0x92, 0x0, 0x81, 0x80]; -_T Old_North_Arabian = [0xa1, 0xa, 0x80, 0x20]; -_T IPA_Extensions = [0x82, 0x50, 0x60]; -_T Vai = [0xa0, 0xa5, 0x0, 0x81, 0x40]; -_T Latin_Extended_C = [0xa0, 0x2c, 0x60, 0x20]; -_T Bamum = [0xa0, 0xa6, 0xa0, 0x60]; -_T Control_Pictures = [0xa0, 0x24, 0x0, 0x40]; -_T Mongolian = [0x98, 0x0, 0x80, 0xb0]; -_T Warang_Citi = [0xa1, 0x18, 0xa0, 0x60]; -_T Katakana_Phonetic_Extensions = [0xa0, 0x31, 0xf0, 0x10]; -_T Mathematical_Operators = [0xa0, 0x22, 0x0, 0x81, 0x0]; -_T Early_Dynastic_Cuneiform = [0xa1, 0x24, 0x80, 0x80, 0xd0]; -_T Ol_Chiki = [0x9c, 0x50, 0x30]; -_T Mahajani = [0xa1, 0x11, 0x50, 0x30]; -_T Myanmar_Extended_B = [0xa0, 0xa9, 0xe0, 0x20]; -_T Khmer = [0x97, 0x80, 0x80, 0x80]; -_T Grantha = [0xa1, 0x13, 0x0, 0x80, 0x80]; -_T Kannada = [0x8c, 0x80, 0x80, 0x80]; -_T Phags_pa = [0xa0, 0xa8, 0x40, 0x40]; -_T Mathematical_Alphanumeric_Symbols = [0xa1, 0xd4, 0x0, 0x84, 0x0]; -_T Kawi = [0xa1, 0x1f, 0x0, 0x60]; -_T Musical_Symbols = [0xa1, 0xd1, 0x0, 0x81, 0x0]; -_T Yezidi = [0xa1, 0xe, 0x80, 0x40]; -_T Kangxi_Radicals = [0xa0, 0x2f, 0x0, 0x80, 0xe0]; -_T Phonetic_Extensions_Supplement = [0x9d, 0x80, 0x40]; -_T CJK_Unified_Ideographs_Extension_A = [0xa0, 0x34, 0x0, 0x99, 0xc0]; -_T Mongolian_Supplement = [0xa1, 0x16, 0x60, 0x20]; -_T Bhaiksuki = [0xa1, 0x1c, 0x0, 0x70]; -_T Hebrew = [0x85, 0x90, 0x70]; -_T Gujarati = [0x8a, 0x80, 0x80, 0x80]; -_T Tangsa = [0xa1, 0x6a, 0x70, 0x60]; -_T General_Punctuation = [0xa0, 0x20, 0x0, 0x70]; -_T CJK_Compatibility = [0xa0, 0x33, 0x0, 0x81, 0x0]; -_T Yi_Syllables = [0xa0, 0xa0, 0x0, 0x84, 0x90]; -_T Carian = [0xa1, 0x2, 0xa0, 0x40]; -_T Miscellaneous_Symbols = [0xa0, 0x26, 0x0, 0x81, 0x0]; -_T CJK_Unified_Ideographs_Extension_C = [0xa2, 0xa7, 0x0, 0x90, 0x40]; -_T Miscellaneous_Symbols_and_Arrows = [0xa0, 0x2b, 0x0, 0x81, 0x0]; -_T Old_Hungarian = [0xa1, 0xc, 0x80, 0x80, 0x80]; -_T Latin_Extended_B = [0x81, 0x80, 0x80, 0xd0]; -_T Runic = [0x96, 0xa0, 0x60]; -_T Tags = [0xae, 0x0, 0x0, 0x80, 0x80]; -_T Supplemental_Arrows_A = [0xa0, 0x27, 0xf0, 0x10]; -_T Masaram_Gondi = [0xa1, 0x1d, 0x0, 0x60]; -_T Arabic_Extended_B = [0x88, 0x70, 0x30]; -_T Ethiopic_Extended_A = [0xa0, 0xab, 0x0, 0x30]; -_T Duployan = [0xa1, 0xbc, 0x0, 0x80, 0xa0]; -_T Georgian_Supplement = [0xa0, 0x2d, 0x0, 0x30]; -_T Gunjala_Gondi = [0xa1, 0x1d, 0x60, 0x50]; -_T Arabic_Mathematical_Alphabetic_Symbols = [0xa1, 0xee, 0x0, 0x81, 0x0]; +_T CJK_Unified_Ideographs_Extension_G = x"A300009350"; +_T Tai_Le = x"995030"; +_T Coptic = x"A02C808080"; +_T Halfwidth_and_Fullwidth_Forms = x"A0FF0080F0"; +_T Cyrillic = x"84008100"; +_T CJK_Radicals_Supplement = x"A02E808080"; +_T Thaana = x"878040"; +_T Specials = x"A0FFF010"; +_T Hangul_Jamo_Extended_B = x"A0D7B050"; +_T Linear_B_Syllabary = x"A100008080"; +_T Ogham = x"968020"; +_T Arabic_Extended_C = x"A10EC040"; +_T Nabataean = x"A1088030"; +_T Makasar = x"A11EE020"; +_T CJK_Unified_Ideographs_Extension_B = x"A20000A0A6E0"; +_T Siddham = x"A115808080"; +_T Kana_Extended_A = x"A1B10030"; +_T Supplemental_Arrows_C = x"A1F8008100"; +_T Kaktovik_Numerals = x"A1D2C020"; +_T Combining_Diacritical_Marks = x"830070"; +_T Vertical_Forms = x"A0FE1010"; +_T Old_Sogdian = x"A10F0030"; +_T Old_South_Arabian = x"A10A6020"; +_T Cyrillic_Extended_C = x"9C8010"; +_T Myanmar = x"900080A0"; +_T Bassa_Vah = x"A16AD030"; +_T Deseret = x"A1040050"; +_T Phaistos_Disc = x"A101D030"; +_T Common_Indic_Number_Forms = x"A0A83010"; +_T Unified_Canadian_Aboriginal_Syllabics_Extended = x"98B050"; +_T Kaithi = x"A1108050"; +_T Medefaidrin = x"A16E4060"; +_T Arabic_Supplement = x"875030"; +_T Yi_Radicals = x"A0A49040"; +_T Tai_Tham = x"9A208090"; +_T Hiragana = x"A0304060"; +_T Hangul_Compatibility_Jamo = x"A0313060"; +_T Linear_B_Ideograms = x"A100808080"; +_T Syriac_Supplement = x"886010"; +_T Ahom = x"A1170050"; +_T Shorthand_Format_Controls = x"A1BCA010"; +_T Phonetic_Extensions = x"9D008080"; +_T Nag_Mundari = x"A1E4D030"; +_T Devanagari = x"89008080"; +_T Tibetan = x"8F008100"; +_T Hanifi_Rohingya = x"A10D0040"; +_T Old_Uyghur = x"A10F7040"; +_T Enclosed_Ideographic_Supplement = x"A1F2008100"; +_T Brahmi = x"A110008080"; +_T Number_Forms = x"A0215040"; +_T Mayan_Numerals = x"A1D2E020"; +_T Ornamental_Dingbats = x"A1F65030"; +_T Symbols_for_Legacy_Computing = x"A1FB008100"; +_T Unified_Canadian_Aboriginal_Syllabics_Extended_A = x"A11AB010"; +_T Greek_and_Coptic = x"83708090"; +_T CJK_Unified_Ideographs_Extension_I = x"A2EBF08270"; +_T Counting_Rod_Numerals = x"A1D36020"; +_T Ethiopic_Extended_B = x"A1E7E020"; +_T Supplemental_Mathematical_Operators = x"A02A008100"; +_T Osage = x"A104B050"; +_T Nushu = x"A1B1708190"; +_T Chess_Symbols = x"A1FA0070"; +_T Cuneiform = x"A120008400"; +_T Takri = x"A1168050"; +_T Enclosed_Alphanumeric_Supplement = x"A1F1008100"; +_T Sutton_SignWriting = x"A1D80082B0"; +_T Miscellaneous_Technical = x"A023008100"; +_T Old_Italic = x"A1030030"; +_T Toto = x"A1E29030"; +_T Hanunoo = x"972020"; +_T Lisu = x"A0A4D030"; +_T Limbu = x"990050"; +_T Saurashtra = x"A0A88060"; +_T Elbasan = x"A1050030"; +_T Variation_Selectors_Supplement = x"AE010080F0"; +_T Psalter_Pahlavi = x"A10B8030"; +_T Palmyrene = x"A1086020"; +_T Tagbanwa = x"976020"; +_T CJK_Unified_Ideographs_Extension_F = x"A2CEB09D40"; +_T Combining_Diacritical_Marks_for_Symbols = x"A020D030"; +_T Dingbats = x"A0270080C0"; +_T Nyiakeng_Puachue_Hmong = x"A1E10050"; +_T Combining_Half_Marks = x"A0FE2010"; +_T Supplementary_Private_Use_Area_A = x"AF0000A10000"; +_T Playing_Cards = x"A1F0A060"; +_T Malayalam = x"8D008080"; +_T Indic_Siyaq_Numbers = x"A1EC7050"; +_T Variation_Selectors = x"A0FE0010"; +_T Thai = x"8E008080"; +_T Supplemental_Arrows_B = x"A029008080"; +_T Zanabazar_Square = x"A11A0050"; +_T Ideographic_Symbols_and_Punctuation = x"A16FE020"; +_T Symbols_and_Pictographs_Extended_A = x"A1FA708090"; +_T High_Private_Use_Surrogates = x"A0DB808080"; +_T Modifier_Tone_Letters = x"A0A70020"; +_T Samaritan = x"880040"; +_T Egyptian_Hieroglyph_Format_Controls = x"A1343030"; +_T Latin_Extended_Additional = x"9E008100"; +_T Coptic_Epact_Numbers = x"A102E020"; +_T Small_Form_Variants = x"A0FE5020"; +_T Balinese = x"9B008080"; +_T Mandaic = x"884020"; +_T Block_Elements = x"A0258020"; +_T Supplemental_Symbols_and_Pictographs = x"A1F9008100"; +_T Miscellaneous_Mathematical_Symbols_A = x"A027C030"; +_T Tifinagh = x"A02D3050"; +_T Arabic_Extended_A = x"88A060"; +_T Cyrillic_Extended_A = x"A02DE020"; +_T Syriac = x"870050"; +_T Latin_Extended_E = x"A0AB3040"; +_T Caucasian_Albanian = x"A1053040"; +_T Soyombo = x"A11A5060"; +_T Syloti_Nagri = x"A0A80030"; +_T NKo = x"87C040"; +_T Tai_Viet = x"A0AA8060"; +_T Low_Surrogates = x"A0DC008400"; +_T Elymaic = x"A10FE020"; +_T Hatran = x"A108E020"; +_T Sundanese_Supplement = x"9CC010"; +_T CJK_Unified_Ideographs_Extension_H = x"A313509060"; +_T Chorasmian = x"A10FB030"; +_T Kana_Extended_B = x"A1AFF010"; +_T Glagolitic = x"A02C0060"; +_T Devanagari_Extended_A = x"A11B0060"; +_T Hangul_Syllables = x"A0AC00A02BB0"; +_T Osmanya = x"A1048030"; +_T Enclosed_CJK_Letters_and_Months = x"A032008100"; +_T Meetei_Mayek_Extensions = x"A0AAE020"; +_T Hangul_Jamo = x"91008100"; +_T Mro = x"A16A4030"; +_T Currency_Symbols = x"A020A030"; +_T Bopomofo_Extended = x"A031A020"; +_T Chakma = x"A1110050"; +_T Pau_Cin_Hau = x"A11AC040"; +_T Latin_Extended_G = x"A1DF008100"; +_T CJK_Unified_Ideographs = x"A04E00A05200"; +_T Znamenny_Musical_Notation = x"A1CF0080D0"; +_T New_Tai_Lue = x"998060"; +_T Modi = x"A1160060"; +_T Bamum_Supplement = x"A168008240"; +_T Cypro_Minoan = x"A12F9070"; +_T Basic_Latin = x"008080"; +_T Multani = x"A1128030"; +_T Alchemical_Symbols = x"A1F7008080"; +_T Bopomofo = x"A0310030"; +_T Adlam = x"A1E90060"; +_T Khitan_Small_Script = x"A18B008200"; +_T Old_Turkic = x"A10C0050"; +_T Lao = x"8E808080"; +_T Cherokee_Supplement = x"A0AB7050"; +_T CJK_Compatibility_Ideographs = x"A0F9008200"; +_T Latin_Extended_F = x"A1078040"; +_T Lisu_Supplement = x"A11FB010"; +_T Latin_Extended_A = x"81008080"; +_T Spacing_Modifier_Letters = x"82B050"; +_T Gothic = x"A1033020"; +_T Sinhala_Archaic_Numbers = x"A111E020"; +_T Egyptian_Hieroglyphs = x"A130008430"; +_T Sinhala = x"8D808080"; +_T Rejang = x"A0A93030"; +_T Glagolitic_Supplement = x"A1E00030"; +_T Lepcha = x"9C0050"; +_T Optical_Character_Recognition = x"A0244020"; +_T Greek_Extended = x"9F008100"; +_T Miscellaneous_Symbols_and_Pictographs = x"A1F3008300"; +_T Emoticons = x"A1F60050"; +_T Tirhuta = x"A1148060"; +_T Marchen = x"A11C7050"; +_T Geometric_Shapes_Extended = x"A1F7808080"; +_T Arabic_Presentation_Forms_A = x"A0FB5082B0"; +_T Cyrillic_Extended_D = x"A1E03060"; +_T Phoenician = x"A1090020"; +_T Wancho = x"A1E2C040"; +_T Meroitic_Hieroglyphs = x"A1098020"; +_T Alphabetic_Presentation_Forms = x"A0FB0050"; +_T Linear_A = x"A106008180"; +_T Mahjong_Tiles = x"A1F00030"; +_T Gurmukhi = x"8A008080"; +_T Byzantine_Musical_Symbols = x"A1D0008100"; +_T Transport_and_Map_Symbols = x"A1F6808080"; +_T Unified_Canadian_Aboriginal_Syllabics = x"94008280"; +_T Khojki = x"A1120050"; +_T Khudawadi = x"A112B050"; +_T Newa = x"A114008080"; +_T Dogra = x"A1180050"; +_T Ancient_Greek_Musical_Notation = x"A1D20050"; +_T Cypriot_Syllabary = x"A1080040"; +_T Latin_1_Supplement = x"80808080"; +_T Hangul_Jamo_Extended_A = x"A0A96020"; +_T Imperial_Aramaic = x"A1084020"; +_T Tamil_Supplement = x"A11FC040"; +_T Oriya = x"8B008080"; +_T Tai_Xuan_Jing_Symbols = x"A1D30060"; +_T Enclosed_Alphanumerics = x"A0246080A0"; +_T Meetei_Mayek = x"A0ABC040"; +_T Tagalog = x"970020"; +_T Sundanese = x"9B8040"; +_T CJK_Compatibility_Ideographs_Supplement = x"A2F8008220"; +_T Cuneiform_Numbers_and_Punctuation = x"A124008080"; +_T Ethiopic_Extended = x"A02D8060"; +_T Domino_Tiles = x"A1F03070"; +_T Old_Permic = x"A1035030"; +_T Supplementary_Private_Use_Area_B = x"B00000"; +_T Shavian = x"A1045030"; +_T Anatolian_Hieroglyphs = x"A144008280"; +_T Lycian = x"A1028020"; +_T Inscriptional_Pahlavi = x"A10B6020"; +_T Ancient_Greek_Numbers = x"A1014050"; +_T Miao = x"A16F0080A0"; +_T CJK_Unified_Ideographs_Extension_E = x"A2B8209690"; +_T Pahawh_Hmong = x"A16B008090"; +_T Tangut = x"A170009800"; +_T Bengali = x"89808080"; +_T CJK_Compatibility_Forms = x"A0FE3020"; +_T Vithkuqi = x"A1057050"; +_T Supplemental_Punctuation = x"A02E008080"; +_T Armenian = x"853060"; +_T Arabic_Presentation_Forms_B = x"A0FE708090"; +_T Tangut_Components = x"A188008300"; +_T Sogdian = x"A10F3040"; +_T Ottoman_Siyaq_Numbers = x"A1ED0050"; +_T Buhid = x"974020"; +_T Myanmar_Extended_A = x"A0AA6020"; +_T Manichaean = x"A10AC040"; +_T Miscellaneous_Mathematical_Symbols_B = x"A029808080"; +_T Latin_Extended_D = x"A0A72080E0"; +_T Avestan = x"A10B0040"; +_T Small_Kana_Extension = x"A1B13040"; +_T Ethiopic_Supplement = x"938020"; +_T Arabic = x"86008100"; +_T Kayah_Li = x"A0A90030"; +_T Javanese = x"A0A98060"; +_T Lydian = x"A1092020"; +_T Aegean_Numbers = x"A1010040"; +_T Braille_Patterns = x"A028008100"; +_T Buginese = x"9A0020"; +_T CJK_Symbols_and_Punctuation = x"A0300040"; +_T Batak = x"9BC040"; +_T Combining_Diacritical_Marks_Supplement = x"9DC040"; +_T High_Surrogates = x"A0D8008380"; +_T Vedic_Extensions = x"9CD030"; +_T Nandinagari = x"A119A060"; +_T Kanbun = x"A0319010"; +_T Arrows = x"A0219070"; +_T Devanagari_Extended = x"A0A8E020"; +_T Inscriptional_Parthian = x"A10B4020"; +_T Cham = x"A0AA0060"; +_T Box_Drawing = x"A025008080"; +_T Ugaritic = x"A1038020"; +_T Georgian = x"90A060"; +_T Tangut_Supplement = x"A18D008080"; +_T Kana_Supplement = x"A1B0008100"; +_T Sharada = x"A1118060"; +_T Tamil = x"8B808080"; +_T Old_Persian = x"A103A040"; +_T Geometric_Shapes = x"A025A060"; +_T Cherokee = x"93A060"; +_T Superscripts_and_Subscripts = x"A0207030"; +_T CJK_Strokes = x"A031C030"; +_T Letterlike_Symbols = x"A0210050"; +_T CJK_Unified_Ideographs_Extension_D = x"A2B74080E0"; +_T Yijing_Hexagram_Symbols = x"A04DC040"; +_T Georgian_Extended = x"9C9030"; +_T Khmer_Symbols = x"99E020"; +_T Sora_Sompeng = x"A110D030"; +_T Private_Use_Area = x"A0E0009900"; +_T Kharoshthi = x"A10A0060"; +_T Dives_Akuru = x"A1190060"; +_T Ancient_Symbols = x"A1019040"; +_T Katakana = x"A030A060"; +_T Ideographic_Description_Characters = x"A02FF010"; +_T Cyrillic_Extended_B = x"A0A64060"; +_T Meroitic_Cursive = x"A109A060"; +_T Mende_Kikakui = x"A1E80080E0"; +_T Rumi_Numeral_Symbols = x"A10E6020"; +_T Combining_Diacritical_Marks_Extended = x"9AB050"; +_T Telugu = x"8C008080"; +_T Cyrillic_Supplement = x"850030"; +_T Ethiopic = x"92008180"; +_T Old_North_Arabian = x"A10A8020"; +_T IPA_Extensions = x"825060"; +_T Vai = x"A0A5008140"; +_T Latin_Extended_C = x"A02C6020"; +_T Bamum = x"A0A6A060"; +_T Control_Pictures = x"A0240040"; +_T Mongolian = x"980080B0"; +_T Warang_Citi = x"A118A060"; +_T Katakana_Phonetic_Extensions = x"A031F010"; +_T Mathematical_Operators = x"A022008100"; +_T Early_Dynastic_Cuneiform = x"A1248080D0"; +_T Ol_Chiki = x"9C5030"; +_T Mahajani = x"A1115030"; +_T Myanmar_Extended_B = x"A0A9E020"; +_T Khmer = x"97808080"; +_T Grantha = x"A113008080"; +_T Kannada = x"8C808080"; +_T Phags_pa = x"A0A84040"; +_T Mathematical_Alphanumeric_Symbols = x"A1D4008400"; +_T Kawi = x"A11F0060"; +_T Musical_Symbols = x"A1D1008100"; +_T Yezidi = x"A10E8040"; +_T Kangxi_Radicals = x"A02F0080E0"; +_T Phonetic_Extensions_Supplement = x"9D8040"; +_T CJK_Unified_Ideographs_Extension_A = x"A0340099C0"; +_T Mongolian_Supplement = x"A1166020"; +_T Bhaiksuki = x"A11C0070"; +_T Hebrew = x"859070"; +_T Gujarati = x"8A808080"; +_T Tangsa = x"A16A7060"; +_T General_Punctuation = x"A0200070"; +_T CJK_Compatibility = x"A033008100"; +_T Yi_Syllables = x"A0A0008490"; +_T Carian = x"A102A040"; +_T Miscellaneous_Symbols = x"A026008100"; +_T CJK_Unified_Ideographs_Extension_C = x"A2A7009040"; +_T Miscellaneous_Symbols_and_Arrows = x"A02B008100"; +_T Old_Hungarian = x"A10C808080"; +_T Latin_Extended_B = x"818080D0"; +_T Runic = x"96A060"; +_T Tags = x"AE00008080"; +_T Supplemental_Arrows_A = x"A027F010"; +_T Masaram_Gondi = x"A11D0060"; +_T Arabic_Extended_B = x"887030"; +_T Ethiopic_Extended_A = x"A0AB0030"; +_T Duployan = x"A1BC0080A0"; +_T Georgian_Supplement = x"A02D0030"; +_T Gunjala_Gondi = x"A11D6050"; +_T Arabic_Mathematical_Alphabetic_Symbols = x"A1EE008100"; _U[] _tab = [ _U("Adlam", Adlam), _U("Aegean Numbers", Aegean_Numbers), @@ -2497,169 +2497,169 @@ private alias _U = immutable(UnicodeProperty); @property static _U[] tab() pure { return _tab; } static immutable: private alias _T = ubyte[]; -_T Old_Hungarian = [0xa1, 0xc, 0x80, 0x33, 0xd, 0x33, 0x7, 0x6]; -_T Coptic = [0x83, 0xe2, 0xe, 0xa0, 0x28, 0x90, 0x74, 0x5, 0x7]; -_T Ol_Chiki = [0x9c, 0x50, 0x30]; -_T Cyrillic = [0x84, 0x0, 0x80, 0x85, 0x2, 0x80, 0xa9, 0x97, 0x50, 0x9, 0x80, 0xa2, 0x1, 0x4c, 0x1, 0x90, 0x67, 0x20, 0xa0, 0x78, 0x40, 0x60, 0xa0, 0x57, 0x8e, 0x2, 0xa0, 0xe2, 0x0, 0x3e, 0x21, 0x1]; -_T Thaana = [0x87, 0x80, 0x32]; -_T Inscriptional_Parthian = [0xa1, 0xb, 0x40, 0x16, 0x2, 0x8]; -_T Nabataean = [0xa1, 0x8, 0x80, 0x1f, 0x8, 0x9]; -_T Ogham = [0x96, 0x80, 0x1d]; -_T Meroitic_Hieroglyphs = [0xa1, 0x9, 0x80, 0x20]; -_T Makasar = [0xa1, 0x1e, 0xe0, 0x19]; -_T Siddham = [0xa1, 0x15, 0x80, 0x36, 0x2, 0x26]; -_T Old_Persian = [0xa1, 0x3, 0xa0, 0x24, 0x4, 0xe]; -_T Imperial_Aramaic = [0xa1, 0x8, 0x40, 0x16, 0x1, 0x9]; -_T Myanmar = [0x90, 0x0, 0x80, 0xa0, 0xa0, 0x99, 0x40, 0x1f, 0x61, 0x20]; -_T Deseret = [0xa1, 0x4, 0x0, 0x50]; -_T Kaithi = [0xa1, 0x10, 0x80, 0x43, 0xa, 0x1]; -_T Medefaidrin = [0xa1, 0x6e, 0x40, 0x5b]; -_T Kayah_Li = [0xa0, 0xa9, 0x0, 0x2e, 0x1, 0x1]; -_T Hiragana = [0xa0, 0x30, 0x41, 0x56, 0x6, 0x3, 0xa1, 0x7f, 0x61, 0x81, 0x1f, 0x12, 0x1, 0x1d, 0x3, 0xa0, 0x40, 0xad, 0x1]; -_T Ahom = [0xa1, 0x17, 0x0, 0x1b, 0x2, 0xf, 0x4, 0x17]; -_T Devanagari = [0x89, 0x0, 0x51, 0x4, 0xf, 0x2, 0x1a, 0xa0, 0x9f, 0x60, 0x20, 0xa0, 0x72, 0x0, 0xa]; -_T Tibetan = [0x8f, 0x0, 0x48, 0x1, 0x24, 0x4, 0x27, 0x1, 0x24, 0x1, 0xf, 0x1, 0x7, 0x4, 0x2]; -_T Nko = [0x87, 0xc0, 0x3b, 0x2, 0x3]; -_T Brahmi = [0xa1, 0x10, 0x0, 0x4e, 0x4, 0x24, 0x9, 0x1]; -_T Osage = [0xa1, 0x4, 0xb0, 0x24, 0x4, 0x24]; -_T Nushu = [0xa1, 0x6f, 0xe1, 0x1, 0xa0, 0x41, 0x8e, 0x81, 0x8c]; -_T Cuneiform = [0xa1, 0x20, 0x0, 0x83, 0x9a, 0x66, 0x6f, 0x1, 0x5, 0xb, 0x80, 0xc4]; -_T Takri = [0xa1, 0x16, 0x80, 0x3a, 0x6, 0xa]; -_T Toto = [0xa1, 0xe2, 0x90, 0x1f]; -_T Latin = [0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xf, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xc1, 0x27, 0x5, 0x9a, 0x1b, 0x26, 0x6, 0x31, 0x5, 0x4, 0x5, 0xd, 0x1, 0x46, 0x41, 0x81, 0x0, 0x81, 0x71, 0x1, 0xd, 0x1, 0x10, 0xd, 0x80, 0x8d, 0x2, 0x6, 0x1, 0x1b, 0x1, 0x11, 0x29, 0x8a, 0xd7, 0x20, 0xa0, 0x7a, 0xa2, 0x66, 0x3, 0x40, 0x5, 0x2, 0x1, 0x1, 0x1, 0x5, 0x18, 0xe, 0x83, 0x30, 0x2b, 0x1, 0x9, 0x1, 0x4, 0xa0, 0x4f, 0x96, 0x7, 0x84, 0x1a, 0x1a, 0x6, 0x1a, 0x88, 0x25, 0x6, 0x1, 0x2a, 0x1, 0x9, 0xa0, 0xd7, 0x45, 0x1f, 0x6, 0x6]; -_T Hanunoo = [0x97, 0x20, 0x15]; -_T Limbu = [0x99, 0x0, 0x1f, 0x1, 0xc, 0x4, 0xc, 0x4, 0x1, 0x3, 0xc]; -_T Saurashtra = [0xa0, 0xa8, 0x80, 0x46, 0x8, 0xc]; -_T Lisu = [0xa0, 0xa4, 0xd0, 0x30, 0xa0, 0x7a, 0xb0, 0x1]; -_T Egyptian_Hieroglyphs = [0xa1, 0x30, 0x0, 0x84, 0x56]; -_T Elbasan = [0xa1, 0x5, 0x0, 0x28]; -_T Palmyrene = [0xa1, 0x8, 0x60, 0x20]; -_T Tagbanwa = [0x97, 0x60, 0xd, 0x1, 0x3, 0x1, 0x2]; -_T Old_Italic = [0xa1, 0x3, 0x0, 0x24, 0x9, 0x3]; -_T Caucasian_Albanian = [0xa1, 0x5, 0x30, 0x34, 0xb, 0x1]; -_T Malayalam = [0x8d, 0x0, 0xd, 0x1, 0x3, 0x1, 0x33, 0x1, 0x3, 0x1, 0x6, 0x4, 0x10, 0x2, 0x1a]; -_T Inherited = [0x83, 0x0, 0x70, 0x81, 0x15, 0x2, 0x81, 0xc4, 0xb, 0x1a, 0x1, 0x82, 0xe0, 0x4, 0x91, 0x5b, 0x1f, 0x82, 0x1, 0x3, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x80, 0xc6, 0x40, 0x82, 0xc, 0x2, 0x80, 0xc2, 0x21, 0x8f, 0x39, 0x4, 0x6b, 0x2, 0xa0, 0xcd, 0x65, 0x10, 0x10, 0xe, 0x83, 0xcf, 0x1, 0x80, 0xe2, 0x1, 0x90, 0x5a, 0x1, 0xa0, 0xbb, 0xc4, 0x2e, 0x2, 0x17, 0x82, 0x20, 0x3, 0x11, 0x8, 0x2, 0x7, 0x1e, 0x4, 0xac, 0x2f, 0x52, 0x80, 0xf0]; -_T Sora_Sompeng = [0xa1, 0x10, 0xd0, 0x19, 0x7, 0xa]; -_T Linear_B = [0xa1, 0x0, 0x0, 0xc, 0x1, 0x1a, 0x1, 0x13, 0x1, 0x2, 0x1, 0xf, 0x2, 0xe, 0x22, 0x7b]; -_T Nyiakeng_Puachue_Hmong = [0xa1, 0xe1, 0x0, 0x2d, 0x3, 0xe, 0x2, 0xa, 0x4, 0x2]; -_T Meroitic_Cursive = [0xa1, 0x9, 0xa0, 0x18, 0x4, 0x14, 0x2, 0x2e]; -_T Thai = [0x8e, 0x1, 0x3a, 0x5, 0x1c]; -_T Mende_Kikakui = [0xa1, 0xe8, 0x0, 0x80, 0xc5, 0x2, 0x10]; -_T Old_Sogdian = [0xa1, 0xf, 0x0, 0x28]; -_T Old_Turkic = [0xa1, 0xc, 0x0, 0x49]; -_T Samaritan = [0x88, 0x0, 0x2e, 0x2, 0xf]; -_T Old_South_Arabian = [0xa1, 0xa, 0x60, 0x20]; -_T Hanifi_Rohingya = [0xa1, 0xd, 0x0, 0x28, 0x8, 0xa]; -_T Balinese = [0x9b, 0x0, 0x4d, 0x3, 0x2f]; -_T Mandaic = [0x88, 0x40, 0x1c, 0x2, 0x1]; -_T SignWriting = [0xa1, 0xd8, 0x0, 0x82, 0x8c, 0xf, 0x5, 0x1, 0xf]; -_T Tifinagh = [0xa0, 0x2d, 0x30, 0x38, 0x7, 0x2, 0xe, 0x1]; -_T Tai_Viet = [0xa0, 0xaa, 0x80, 0x43, 0x18, 0x5]; -_T Syriac = [0x87, 0x0, 0xe, 0x1, 0x3c, 0x2, 0x3, 0x81, 0x10, 0xb]; -_T Soyombo = [0xa1, 0x1a, 0x50, 0x53]; -_T Elymaic = [0xa1, 0xf, 0xe0, 0x17]; -_T Hatran = [0xa1, 0x8, 0xe0, 0x13, 0x1, 0x2, 0x5, 0x5]; -_T Chorasmian = [0xa1, 0xf, 0xb0, 0x1c]; -_T Glagolitic = [0xa0, 0x2c, 0x0, 0x60, 0xa1, 0xb3, 0xa0, 0x7, 0x1, 0x11, 0x2, 0x7, 0x1, 0x2, 0x1, 0x5]; -_T Osmanya = [0xa1, 0x4, 0x80, 0x1e, 0x2, 0xa]; -_T Linear_A = [0xa1, 0x6, 0x0, 0x81, 0x37, 0x9, 0x16, 0xa, 0x8]; -_T Mro = [0xa1, 0x6a, 0x40, 0x1f, 0x1, 0xa, 0x4, 0x2]; -_T Chakma = [0xa1, 0x11, 0x0, 0x35, 0x1, 0x12]; -_T Modi = [0xa1, 0x16, 0x0, 0x45, 0xb, 0xa]; -_T Bassa_Vah = [0xa1, 0x6a, 0xd0, 0x1e, 0x2, 0x6]; -_T Han = [0xa0, 0x2e, 0x80, 0x1a, 0x1, 0x59, 0xc, 0x80, 0xd6, 0x2f, 0x1, 0x1, 0x1, 0x19, 0x9, 0xe, 0x4, 0x83, 0xc4, 0x99, 0xc0, 0x40, 0xa0, 0x52, 0x0, 0xa0, 0x59, 0x0, 0x81, 0x6e, 0x2, 0x6a, 0xa0, 0x75, 0x8, 0x2, 0xc, 0x2, 0xa0, 0x90, 0xe, 0xa0, 0xa6, 0xe0, 0x20, 0x90, 0x3a, 0x6, 0x80, 0xde, 0x2, 0x96, 0x82, 0xe, 0x9d, 0x31, 0xf, 0x82, 0x6e, 0x89, 0xa2, 0x82, 0x1e, 0x85, 0xe2, 0x93, 0x4b, 0x5, 0x90, 0x60]; -_T Multani = [0xa1, 0x12, 0x80, 0x7, 0x1, 0x1, 0x1, 0x4, 0x1, 0xf, 0x1, 0xb]; -_T Bopomofo = [0x82, 0xea, 0x2, 0xa0, 0x2e, 0x19, 0x2b, 0x70, 0x20]; -_T Adlam = [0xa1, 0xe9, 0x0, 0x4c, 0x4, 0xa, 0x4, 0x2]; -_T Khitan_Small_Script = [0xa1, 0x6f, 0xe4, 0x1, 0x9b, 0x1b, 0x81, 0xd6]; -_T Lao = [0x8e, 0x81, 0x2, 0x1, 0x1, 0x1, 0x5, 0x1, 0x18, 0x1, 0x1, 0x1, 0x17, 0x2, 0x5, 0x1, 0x1, 0x1, 0x7, 0x1, 0xa, 0x2, 0x4]; -_T Psalter_Pahlavi = [0xa1, 0xb, 0x80, 0x12, 0x7, 0x4, 0xc, 0x7]; -_T Anatolian_Hieroglyphs = [0xa1, 0x44, 0x0, 0x82, 0x47]; -_T Canadian_Aboriginal = [0x94, 0x0, 0x82, 0x80, 0x82, 0x30, 0x46, 0xa1, 0x1, 0xba, 0x10]; -_T Common = [0x0, 0x41, 0x1a, 0x6, 0x1a, 0x2f, 0x1, 0xf, 0x1, 0x5, 0x17, 0x1, 0x1f, 0x1, 0x81, 0xc1, 0x27, 0x5, 0x5, 0x2, 0x14, 0x74, 0x1, 0x9, 0x1, 0x6, 0x1, 0x1, 0x1, 0x82, 0x7d, 0x1, 0x6, 0x1, 0xe, 0x1, 0x3, 0x1, 0x20, 0x1, 0x80, 0x9c, 0x1, 0x82, 0x4, 0x1, 0x80, 0x81, 0x2, 0x84, 0xd9, 0x1, 0x81, 0x95, 0x4, 0x81, 0x22, 0x1, 0x85, 0xef, 0x3, 0x47, 0x2, 0x80, 0xcb, 0x2, 0x1, 0x1, 0x84, 0xcd, 0x1, 0xd, 0x1, 0x7, 0x4, 0x1, 0x6, 0x1, 0x3, 0x2, 0x1, 0x83, 0x5, 0xc, 0x2, 0x57, 0x1, 0xb, 0x3, 0xb, 0x1, 0xf, 0x11, 0x21, 0x3f, 0x26, 0x1, 0x3, 0x2, 0x6, 0x1, 0x1b, 0x1, 0x11, 0x29, 0x3, 0x4, 0x82, 0x97, 0x19, 0xb, 0x15, 0x83, 0xa0, 0x81, 0x0, 0x82, 0x74, 0x2, 0x20, 0x1, 0x69, 0x82, 0x0, 0x5e, 0x81, 0x92, 0x15, 0x1, 0x1, 0x1, 0x19, 0xf, 0x8, 0x4, 0x4, 0x5b, 0x2, 0x3, 0x1, 0x5a, 0x2, 0x80, 0x93, 0x10, 0x20, 0x24, 0xb, 0x1, 0x30, 0x40, 0x1f, 0x51, 0x2f, 0x1, 0x58, 0x80, 0xa8, 0x99, 0xc0, 0x40, 0xa0, 0x59, 0x0, 0x22, 0x66, 0x3, 0x80, 0xa5, 0xa, 0x80, 0xf4, 0x1, 0x80, 0xa0, 0x1, 0x81, 0x8b, 0x1, 0xe, 0x2, 0xa0, 0x51, 0xd2, 0x2, 0x80, 0xd0, 0xa, 0x16, 0x23, 0x1, 0x13, 0x1, 0x4, 0x80, 0x93, 0x1, 0x1, 0x20, 0x1a, 0x6, 0x1a, 0xb, 0xa, 0x1, 0x2d, 0x2, 0x40, 0x7, 0x1, 0x7, 0xa, 0x5, 0x81, 0x2, 0x3, 0x4, 0x2d, 0x3, 0x9, 0x50, 0xd, 0x33, 0x2d, 0x80, 0xe4, 0x1b, 0xa0, 0xb9, 0xa4, 0x4, 0x92, 0xac, 0x74, 0x3c, 0x80, 0xf6, 0xa, 0x27, 0x2, 0x3e, 0x3, 0x11, 0x8, 0x2, 0x7, 0x1e, 0x4, 0x3d, 0x80, 0xd5, 0x14, 0xc, 0x14, 0xc, 0x57, 0x9, 0x19, 0x80, 0x87, 0x55, 0x1, 0x47, 0x1, 0x2, 0x2, 0x1, 0x2, 0x2, 0x2, 0x4, 0x1, 0xc, 0x1, 0x1, 0x1, 0x7, 0x1, 0x41, 0x1, 0x4, 0x2, 0x8, 0x1, 0x7, 0x1, 0x1c, 0x1, 0x4, 0x1, 0x5, 0x1, 0x1, 0x3, 0x7, 0x1, 0x81, 0x54, 0x2, 0x81, 0x24, 0x2, 0x32, 0x94, 0x71, 0x44, 0x4c, 0x3d, 0x82, 0xc2, 0x2c, 0x4, 0x64, 0xc, 0xf, 0x2, 0xf, 0x1, 0xf, 0x1, 0x25, 0xa, 0x80, 0xae, 0x38, 0x1a, 0x1, 0x2, 0xd, 0x2c, 0x4, 0x9, 0x7, 0x2, 0xe, 0x6, 0x80, 0x9a, 0x83, 0xd8, 0x4, 0x11, 0x3, 0xd, 0x3, 0x77, 0x4, 0x5f, 0x6, 0xc, 0x4, 0x1, 0xf, 0xc, 0x4, 0x38, 0x8, 0xa, 0x6, 0x28, 0x8, 0x1e, 0x2, 0x2, 0x4e, 0x81, 0x54, 0xc, 0xe, 0x2, 0xd, 0x3, 0x9, 0x7, 0x2e, 0x1, 0x7, 0x8, 0xe, 0x4, 0x9, 0x7, 0x9, 0x7, 0x80, 0x93, 0x1, 0x37, 0x25, 0xa, 0xac, 0x4, 0x7, 0x1, 0x1e, 0x60]; -_T Gothic = [0xa1, 0x3, 0x30, 0x1b]; -_T Yi = [0xa0, 0xa0, 0x0, 0x84, 0x8d, 0x3, 0x37]; -_T Sinhala = [0x8d, 0x81, 0x3, 0x1, 0x12, 0x3, 0x18, 0x1, 0x9, 0x1, 0x1, 0x2, 0x7, 0x3, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x8, 0x6, 0xa, 0x2, 0x3, 0xa1, 0x3, 0xec, 0x14]; -_T Rejang = [0xa0, 0xa9, 0x30, 0x24, 0xb, 0x1]; -_T Lepcha = [0x9c, 0x0, 0x38, 0x3, 0xf, 0x3, 0x3]; -_T Tai_Tham = [0x9a, 0x20, 0x3f, 0x1, 0x1d, 0x2, 0xb, 0x6, 0xa, 0x6, 0xe]; -_T Dives_Akuru = [0xa1, 0x19, 0x0, 0x7, 0x2, 0x1, 0x2, 0x8, 0x1, 0x2, 0x1, 0x1e, 0x1, 0x2, 0x2, 0xc, 0x9, 0xa]; -_T Meetei_Mayek = [0xa0, 0xaa, 0xe0, 0x17, 0x80, 0xc9, 0x2e, 0x2, 0xa]; -_T Tirhuta = [0xa1, 0x14, 0x80, 0x48, 0x8, 0xa]; -_T Marchen = [0xa1, 0x1c, 0x70, 0x20, 0x2, 0x16, 0x1, 0xe]; -_T Wancho = [0xa1, 0xe2, 0xc0, 0x3a, 0x5, 0x1]; -_T Phoenician = [0xa1, 0x9, 0x0, 0x1c, 0x3, 0x1]; -_T Gurmukhi = [0x8a, 0x1, 0x3, 0x1, 0x6, 0x4, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x2, 0x1, 0x2, 0x2, 0x1, 0x1, 0x5, 0x4, 0x2, 0x2, 0x3, 0x3, 0x1, 0x7, 0x4, 0x1, 0x1, 0x7, 0x11]; -_T Khudawadi = [0xa1, 0x12, 0xb0, 0x3b, 0x5, 0xa]; -_T Khojki = [0xa1, 0x12, 0x0, 0x12, 0x1, 0x2f]; -_T Newa = [0xa1, 0x14, 0x0, 0x5c, 0x1, 0x5]; -_T Dogra = [0xa1, 0x18, 0x0, 0x3c]; -_T Oriya = [0x8b, 0x1, 0x3, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x7, 0x3, 0x4, 0x2, 0x1, 0x5, 0x2, 0x12]; -_T Tagalog = [0x97, 0x0, 0x16, 0x9, 0x1]; -_T Sundanese = [0x9b, 0x80, 0x40, 0x81, 0x0, 0x8]; -_T Old_Permic = [0xa1, 0x3, 0x50, 0x2b]; -_T Shavian = [0xa1, 0x4, 0x50, 0x30]; -_T Lycian = [0xa1, 0x2, 0x80, 0x1d]; -_T Miao = [0xa1, 0x6f, 0x0, 0x4b, 0x4, 0x39, 0x7, 0x11]; -_T Tangut = [0xa1, 0x6f, 0xe0, 0x1, 0x1f, 0x97, 0xf8, 0x8, 0x83, 0x0, 0x82, 0x0, 0x9]; -_T Bengali = [0x89, 0x80, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x1, 0x3, 0x4, 0x2, 0x9, 0x2, 0x2, 0x2, 0x4, 0x8, 0x1, 0x4, 0x2, 0x1, 0x5, 0x2, 0x19]; -_T Inscriptional_Pahlavi = [0xa1, 0xb, 0x60, 0x13, 0x5, 0x8]; -_T Vithkuqi = [0xa1, 0x5, 0x70, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2, 0x1, 0xb, 0x1, 0xf, 0x1, 0x7, 0x1, 0x2]; -_T Armenian = [0x85, 0x31, 0x26, 0x2, 0x32, 0x2, 0x3, 0xa0, 0xf5, 0x83, 0x5]; -_T New_Tai_Lue = [0x99, 0x80, 0x2c, 0x4, 0x1a, 0x6, 0xb, 0x3, 0x2]; -_T Sogdian = [0xa1, 0xf, 0x30, 0x2a]; -_T Buhid = [0x97, 0x40, 0x14]; -_T Manichaean = [0xa1, 0xa, 0xc0, 0x27, 0x4, 0xc]; -_T Greek = [0x83, 0x70, 0x4, 0x1, 0x3, 0x2, 0x4, 0x1, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x1, 0x1, 0x14, 0x1, 0x3f, 0xe, 0x10, 0x99, 0x26, 0x5, 0x32, 0x5, 0x4, 0x5, 0x54, 0x1, 0x81, 0x40, 0x16, 0x2, 0x6, 0x2, 0x26, 0x2, 0x6, 0x2, 0x8, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1f, 0x2, 0x35, 0x1, 0xf, 0x1, 0xe, 0x2, 0x6, 0x1, 0x13, 0x2, 0x3, 0x1, 0x9, 0x81, 0x27, 0x1, 0xa0, 0x8a, 0x3e, 0x1, 0xa0, 0x55, 0xda, 0x4f, 0x11, 0x1, 0xa0, 0xd0, 0x5f, 0x46]; -_T Braille = [0xa0, 0x28, 0x0, 0x81, 0x0]; -_T Avestan = [0xa1, 0xb, 0x0, 0x36, 0x3, 0x7]; -_T Arabic = [0x86, 0x0, 0x5, 0x1, 0x6, 0x1, 0xe, 0x1, 0x3, 0x1, 0x20, 0x1, 0xa, 0xb, 0x1a, 0x1, 0x6c, 0x1, 0x22, 0x50, 0x30, 0x80, 0xf0, 0x1f, 0x1, 0x2, 0x6, 0x4a, 0x1, 0x1d, 0xa0, 0xf2, 0x50, 0x73, 0x10, 0x81, 0x6b, 0x2, 0x50, 0x2, 0x36, 0x7, 0x1, 0x20, 0x10, 0x70, 0x5, 0x1, 0x80, 0x87, 0x8f, 0x63, 0x1f, 0x7e, 0x3, 0xa0, 0xdf, 0x0, 0x4, 0x1, 0x1b, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0xa, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x6, 0x1, 0x4, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x3, 0x1, 0x2, 0x1, 0x1, 0x2, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x2, 0x1, 0x1, 0x2, 0x4, 0x1, 0x7, 0x1, 0x4, 0x1, 0x4, 0x1, 0x1, 0x1, 0xa, 0x1, 0x11, 0x5, 0x3, 0x1, 0x5, 0x1, 0x11, 0x34, 0x2]; -_T Javanese = [0xa0, 0xa9, 0x80, 0x4e, 0x2, 0xa, 0x4, 0x2]; -_T Lydian = [0xa1, 0x9, 0x20, 0x1a, 0x5, 0x1]; -_T Pau_Cin_Hau = [0xa1, 0x1a, 0xc0, 0x39]; -_T Cypro_Minoan = [0xa1, 0x2f, 0x90, 0x63]; -_T Buginese = [0x9a, 0x0, 0x1c, 0x2, 0x2]; -_T Batak = [0x9b, 0xc0, 0x34, 0x8, 0x4]; -_T Nandinagari = [0xa1, 0x19, 0xa0, 0x8, 0x2, 0x2e, 0x2, 0xb]; -_T Cham = [0xa0, 0xaa, 0x0, 0x37, 0x9, 0xe, 0x2, 0xa, 0x2, 0x4]; -_T Gunjala_Gondi = [0xa1, 0x1d, 0x60, 0x6, 0x1, 0x2, 0x1, 0x25, 0x1, 0x2, 0x1, 0x6, 0x7, 0xa]; -_T Cypriot = [0xa1, 0x8, 0x0, 0x6, 0x2, 0x1, 0x1, 0x2c, 0x1, 0x2, 0x3, 0x1, 0x2, 0x1]; -_T Ugaritic = [0xa1, 0x3, 0x80, 0x1e, 0x1, 0x1]; -_T Georgian = [0x90, 0xa0, 0x26, 0x1, 0x1, 0x5, 0x1, 0x2, 0x2b, 0x1, 0x4, 0x8b, 0x90, 0x2b, 0x2, 0x3, 0x90, 0x40, 0x26, 0x1, 0x1, 0x5, 0x1]; -_T Sharada = [0xa1, 0x11, 0x80, 0x60]; -_T Tamil = [0x8b, 0x82, 0x2, 0x1, 0x6, 0x3, 0x3, 0x1, 0x4, 0x3, 0x2, 0x1, 0x1, 0x1, 0x2, 0x3, 0x2, 0x3, 0x3, 0x3, 0xc, 0x4, 0x5, 0x3, 0x3, 0x1, 0x4, 0x2, 0x1, 0x6, 0x1, 0xe, 0x15, 0xa1, 0x13, 0xc5, 0x32, 0xd, 0x1]; -_T Cherokee = [0x93, 0xa0, 0x56, 0x2, 0x6, 0xa0, 0x97, 0x72, 0x50]; -_T Pahawh_Hmong = [0xa1, 0x6b, 0x0, 0x46, 0xa, 0xa, 0x1, 0x7, 0x1, 0x15, 0x5, 0x13]; -_T Syloti_Nagri = [0xa0, 0xa8, 0x0, 0x2d]; -_T Kharoshthi = [0xa1, 0xa, 0x0, 0x4, 0x1, 0x2, 0x5, 0x8, 0x1, 0x3, 0x1, 0x1d, 0x2, 0x3, 0x4, 0xa, 0x7, 0x9]; -_T Zanabazar_Square = [0xa1, 0x1a, 0x0, 0x48]; -_T Katakana = [0xa0, 0x30, 0xa1, 0x5a, 0x2, 0x3, 0x80, 0xf0, 0x10, 0x80, 0xd0, 0x2f, 0x1, 0x58, 0xa0, 0xcc, 0xe, 0xa, 0x1, 0x2d, 0xa0, 0xb0, 0x52, 0x4, 0x1, 0x7, 0x1, 0x2, 0x1, 0x1, 0x81, 0x1f, 0x3, 0x32, 0x1, 0xe, 0x4]; -_T Telugu = [0x8c, 0x0, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0x10, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x1, 0x3, 0x2, 0x1, 0x2, 0x4, 0x2, 0xa, 0x7, 0x9]; -_T Ethiopic = [0x92, 0x0, 0x49, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0x29, 0x1, 0x4, 0x2, 0x21, 0x1, 0x4, 0x2, 0x7, 0x1, 0x1, 0x1, 0x4, 0x2, 0xf, 0x1, 0x39, 0x1, 0x4, 0x2, 0x43, 0x2, 0x20, 0x3, 0x1a, 0x99, 0xe6, 0x17, 0x9, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0x1, 0x7, 0xa0, 0x7d, 0x22, 0x6, 0x2, 0x6, 0x2, 0x6, 0x9, 0x7, 0x1, 0x7, 0xa1, 0x3c, 0xb1, 0x7, 0x1, 0x4, 0x1, 0x2, 0x1, 0xf]; -_T Vai = [0xa0, 0xa5, 0x0, 0x81, 0x2c]; -_T Bamum = [0xa0, 0xa6, 0xa0, 0x58, 0xa0, 0xc1, 0x8, 0x82, 0x39]; -_T Hangul = [0x91, 0x0, 0x81, 0x0, 0x9e, 0x2e, 0x2, 0x81, 0x1, 0x5e, 0x71, 0x1f, 0x41, 0x1f, 0xa0, 0x76, 0xe1, 0x1d, 0x82, 0x83, 0xa0, 0x2b, 0xa4, 0xc, 0x17, 0x4, 0x31, 0xa0, 0x27, 0xa4, 0x1f, 0x3, 0x6, 0x2, 0x6, 0x2, 0x6, 0x2, 0x3]; -_T Mongolian = [0x98, 0x0, 0x2, 0x2, 0x1, 0x1, 0x14, 0x6, 0x59, 0x7, 0x2b, 0xa0, 0xfd, 0xb5, 0xd]; -_T Nag_Mundari = [0xa1, 0xe4, 0xd0, 0x2a]; -_T Old_Uyghur = [0xa1, 0xf, 0x70, 0x1a]; -_T Mahajani = [0xa1, 0x11, 0x50, 0x27]; -_T Khmer = [0x97, 0x80, 0x5e, 0x2, 0xa, 0x6, 0xa, 0x81, 0xe6, 0x20]; -_T Grantha = [0xa1, 0x13, 0x0, 0x4, 0x1, 0x8, 0x2, 0x2, 0x2, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0x9, 0x2, 0x2, 0x2, 0x3, 0x2, 0x1, 0x6, 0x1, 0x5, 0x7, 0x2, 0x7, 0x3, 0x5]; -_T Kannada = [0x8c, 0x80, 0xd, 0x1, 0x3, 0x1, 0x17, 0x1, 0xa, 0x1, 0x5, 0x2, 0x9, 0x1, 0x3, 0x1, 0x4, 0x7, 0x2, 0x6, 0x2, 0x1, 0x4, 0x2, 0xa, 0x1, 0x3]; -_T Kawi = [0xa1, 0x1f, 0x0, 0x11, 0x1, 0x29, 0x3, 0x1c]; -_T Yezidi = [0xa1, 0xe, 0x80, 0x2a, 0x1, 0x3, 0x2, 0x2]; -_T Old_North_Arabian = [0xa1, 0xa, 0x80, 0x20]; -_T Tai_Le = [0x99, 0x50, 0x1e, 0x2, 0x5]; -_T Hebrew = [0x85, 0x91, 0x37, 0x8, 0x1b, 0x4, 0x6, 0xa0, 0xf5, 0x28, 0x1a, 0x1, 0x5, 0x1, 0x1, 0x1, 0x2, 0x1, 0x2, 0x1, 0xa]; -_T Gujarati = [0x8a, 0x81, 0x3, 0x1, 0x9, 0x1, 0x3, 0x1, 0x16, 0x1, 0x7, 0x1, 0x2, 0x1, 0x5, 0x2, 0xa, 0x1, 0x3, 0x1, 0x3, 0x2, 0x1, 0xf, 0x4, 0x2, 0xc, 0x7, 0x7]; -_T Tangsa = [0xa1, 0x6a, 0x70, 0x4f, 0x1, 0xa]; -_T Carian = [0xa1, 0x2, 0xa0, 0x31]; -_T Bhaiksuki = [0xa1, 0x1c, 0x0, 0x9, 0x1, 0x2d, 0x1, 0xe, 0xa, 0x1d]; -_T Masaram_Gondi = [0xa1, 0x1d, 0x0, 0x7, 0x1, 0x2, 0x1, 0x2c, 0x3, 0x1, 0x1, 0x2, 0x1, 0x9, 0x8, 0xa]; -_T Runic = [0x96, 0xa0, 0x4b, 0x3, 0xb]; -_T Duployan = [0xa1, 0xbc, 0x0, 0x6b, 0x5, 0xd, 0x3, 0x9, 0x7, 0xa, 0x2, 0x4]; -_T Warang_Citi = [0xa1, 0x18, 0xa0, 0x53, 0xc, 0x1]; -_T Phags_Pa = [0xa0, 0xa8, 0x40, 0x38]; +_T Old_Hungarian = x"A10C80330D330706"; +_T Coptic = x"83E20EA02890740507"; +_T Ol_Chiki = x"9C5030"; +_T Cyrillic = x"840080850280A997500980A2014C01906720A0784060A0578E02A0E2003E2101"; +_T Thaana = x"878032"; +_T Inscriptional_Parthian = x"A10B40160208"; +_T Nabataean = x"A108801F0809"; +_T Ogham = x"96801D"; +_T Meroitic_Hieroglyphs = x"A1098020"; +_T Makasar = x"A11EE019"; +_T Siddham = x"A11580360226"; +_T Old_Persian = x"A103A024040E"; +_T Imperial_Aramaic = x"A10840160109"; +_T Myanmar = x"900080A0A099401F6120"; +_T Deseret = x"A1040050"; +_T Kaithi = x"A11080430A01"; +_T Medefaidrin = x"A16E405B"; +_T Kayah_Li = x"A0A9002E0101"; +_T Hiragana = x"A03041560603A17F61811F12011D03A040AD01"; +_T Ahom = x"A117001B020F0417"; +_T Devanagari = x"890051040F021AA09F6020A072000A"; +_T Tibetan = x"8F0048012404270124010F01070402"; +_T Nko = x"87C03B0203"; +_T Brahmi = x"A110004E04240901"; +_T Osage = x"A104B0240424"; +_T Nushu = x"A16FE101A0418E818C"; +_T Cuneiform = x"A12000839A666F01050B80C4"; +_T Takri = x"A116803A060A"; +_T Toto = x"A1E2901F"; +_T Latin = x"411A061A2F010F010517011F0181C127059A1B2606310504050D01464181008171010D01100D808D0206011B0111298AD720A07AA2660340050201010105180E83302B01090104A04F9607841A1A061A882506012A0109A0D7451F0606"; +_T Hanunoo = x"972015"; +_T Limbu = x"99001F010C040C0401030C"; +_T Saurashtra = x"A0A88046080C"; +_T Lisu = x"A0A4D030A07AB001"; +_T Egyptian_Hieroglyphs = x"A130008456"; +_T Elbasan = x"A1050028"; +_T Palmyrene = x"A1086020"; +_T Tagbanwa = x"97600D01030102"; +_T Old_Italic = x"A10300240903"; +_T Caucasian_Albanian = x"A10530340B01"; +_T Malayalam = x"8D000D01030133010301060410021A"; +_T Inherited = x"83007081150281C40B1A0182E004915B1F820103010D010704010601030280C640820C0280C2218F39046B02A0CD6510100E83CF0180E201905A01A0BBC42E0217822003110802071E04AC2F5280F0"; +_T Sora_Sompeng = x"A110D019070A"; +_T Linear_B = x"A100000C011A01130102010F020E227B"; +_T Nyiakeng_Puachue_Hmong = x"A1E1002D030E020A0402"; +_T Meroitic_Cursive = x"A109A0180414022E"; +_T Thai = x"8E013A051C"; +_T Mende_Kikakui = x"A1E80080C50210"; +_T Old_Sogdian = x"A10F0028"; +_T Old_Turkic = x"A10C0049"; +_T Samaritan = x"88002E020F"; +_T Old_South_Arabian = x"A10A6020"; +_T Hanifi_Rohingya = x"A10D0028080A"; +_T Balinese = x"9B004D032F"; +_T Mandaic = x"88401C0201"; +_T SignWriting = x"A1D800828C0F05010F"; +_T Tifinagh = x"A02D303807020E01"; +_T Tai_Viet = x"A0AA80431805"; +_T Syriac = x"87000E013C020381100B"; +_T Soyombo = x"A11A5053"; +_T Elymaic = x"A10FE017"; +_T Hatran = x"A108E01301020505"; +_T Chorasmian = x"A10FB01C"; +_T Glagolitic = x"A02C0060A1B3A0070111020701020105"; +_T Osmanya = x"A104801E020A"; +_T Linear_A = x"A10600813709160A08"; +_T Mro = x"A16A401F010A0402"; +_T Chakma = x"A11100350112"; +_T Modi = x"A11600450B0A"; +_T Bassa_Vah = x"A16AD01E0206"; +_T Han = x"A02E801A01590C80D62F01010119090E0483C499C040A05200A05900816E026AA07508020C02A0900EA0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Multani = x"A112800701010104010F010B"; +_T Bopomofo = x"82EA02A02E192B7020"; +_T Adlam = x"A1E9004C040A0402"; +_T Khitan_Small_Script = x"A16FE4019B1B81D6"; +_T Lao = x"8E810201010105011801010117020501010107010A0204"; +_T Psalter_Pahlavi = x"A10B801207040C07"; +_T Anatolian_Hieroglyphs = x"A144008247"; +_T Canadian_Aboriginal = x"94008280823046A101BA10"; +_T Common = x"00411A061A2F010F010517011F0181C127050502147401090106010101827D0106010E0103012001809C0182040180810284D90181950481220185EF03470280CB02010184CD010D01070401060103020183050C0257010B030B010F11213F2601030206011B01112903048297190B1583A0810082740220016982005E819215010101190F0804045B0203015A0280931020240B0130401F512F015880A899C040A0590022660380A50A80F40180A001818B010E02A051D20280D00A16230113010480930101201A061A0B0A012D02400701070A05810203042D0309500D332D80E41BA0B9A40492AC743C80F60A27023E03110802071E043D80D5140C140C57091980875501470102020102020204010C010101070141010402080107011C010401050101030701815402812402329471444C3D82C22C04640C0F020F010F01250A80AE381A01020D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137250AAC0407011E60"; +_T Gothic = x"A103301B"; +_T Yi = x"A0A000848D0337"; +_T Sinhala = x"8D8103011203180109010102070301040601010108060A0203A103EC14"; +_T Rejang = x"A0A930240B01"; +_T Lepcha = x"9C0038030F0303"; +_T Tai_Tham = x"9A203F011D020B060A060E"; +_T Dives_Akuru = x"A1190007020102080102011E0102020C090A"; +_T Meetei_Mayek = x"A0AAE01780C92E020A"; +_T Tirhuta = x"A1148048080A"; +_T Marchen = x"A11C70200216010E"; +_T Wancho = x"A1E2C03A0501"; +_T Phoenician = x"A109001C0301"; +_T Gurmukhi = x"8A0103010604020216010701020102010202010105040202030301070401010711"; +_T Khudawadi = x"A112B03B050A"; +_T Khojki = x"A1120012012F"; +_T Newa = x"A114005C0105"; +_T Dogra = x"A118003C"; +_T Oriya = x"8B01030108020202160107010201050209020202030703040201050212"; +_T Tagalog = x"9700160901"; +_T Sundanese = x"9B8040810008"; +_T Old_Permic = x"A103502B"; +_T Shavian = x"A1045030"; +_T Lycian = x"A102801D"; +_T Miao = x"A16F004B04390711"; +_T Tangut = x"A16FE0011F97F8088300820009"; +_T Bengali = x"8980040108020202160107010103040209020202040801040201050219"; +_T Inscriptional_Pahlavi = x"A10B60130508"; +_T Vithkuqi = x"A105700B010F01070102010B010F01070102"; +_T Armenian = x"85312602320203A0F58305"; +_T New_Tai_Lue = x"99802C041A060B0302"; +_T Sogdian = x"A10F302A"; +_T Buhid = x"974014"; +_T Manichaean = x"A10AC027040C"; +_T Greek = x"83700401030204010104010101010301010114013F0E109926053205040554018140160206022602060208010101010101011F0235010F010E0206011302030109812701A08A3E01A055DA4F1101A0D05F46"; +_T Braille = x"A028008100"; +_T Avestan = x"A10B00360307"; +_T Arabic = x"8600050106010E01030120010A0B1A016C0122503080F01F0102064A011DA0F2507310816B025002360701201070050180878F631F7E03A0DF0004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402"; +_T Javanese = x"A0A9804E020A0402"; +_T Lydian = x"A109201A0501"; +_T Pau_Cin_Hau = x"A11AC039"; +_T Cypro_Minoan = x"A12F9063"; +_T Buginese = x"9A001C0202"; +_T Batak = x"9BC0340804"; +_T Nandinagari = x"A119A008022E020B"; +_T Cham = x"A0AA0037090E020A0204"; +_T Gunjala_Gondi = x"A11D60060102012501020106070A"; +_T Cypriot = x"A10800060201012C010203010201"; +_T Ugaritic = x"A103801E0101"; +_T Georgian = x"90A02601010501022B01048B902B020390402601010501"; +_T Sharada = x"A1118060"; +_T Tamil = x"8B820201060303010403020101010203020303030C040503030104020106010E15A113C5320D01"; +_T Cherokee = x"93A0560206A0977250"; +_T Pahawh_Hmong = x"A16B00460A0A010701150513"; +_T Syloti_Nagri = x"A0A8002D"; +_T Kharoshthi = x"A10A0004010205080103011D0203040A0709"; +_T Zanabazar_Square = x"A11A0048"; +_T Katakana = x"A030A15A020380F01080D02F0158A0CC0E0A012DA0B05204010701020101811F0332010E04"; +_T Telugu = x"8C000D0103011701100209010301040702010302010204020A0709"; +_T Ethiopic = x"92004901040207010101040229010402210104020701010104020F0139010402430220031A99E61709070107010701070107010701070107A07D22060206020609070107A13CB10701040102010F"; +_T Vai = x"A0A500812C"; +_T Bamum = x"A0A6A058A0C1088239"; +_T Hangul = x"910081009E2E0281015E711F411FA076E11D8283A02BA40C170431A027A41F0306020602060203"; +_T Mongolian = x"980002020101140659072BA0FDB50D"; +_T Nag_Mundari = x"A1E4D02A"; +_T Old_Uyghur = x"A10F701A"; +_T Mahajani = x"A1115027"; +_T Khmer = x"97805E020A060A81E620"; +_T Grantha = x"A113000401080202021601070102010502090202020302010601050702070305"; +_T Kannada = x"8C800D01030117010A0105020901030104070206020104020A0103"; +_T Kawi = x"A11F00110129031C"; +_T Yezidi = x"A10E802A01030202"; +_T Old_North_Arabian = x"A10A8020"; +_T Tai_Le = x"99501E0205"; +_T Hebrew = x"859137081B0406A0F5281A0105010101020102010A"; +_T Gujarati = x"8A8103010901030116010701020105020A0103010302010F04020C0707"; +_T Tangsa = x"A16A704F010A"; +_T Carian = x"A102A031"; +_T Bhaiksuki = x"A11C0009012D010E0A1D"; +_T Masaram_Gondi = x"A11D00070102012C030101020109080A"; +_T Runic = x"96A04B030B"; +_T Duployan = x"A1BC006B050D0309070A0204"; +_T Warang_Citi = x"A118A0530C01"; +_T Phags_Pa = x"A0A84038"; _U[] _tab = [ _U("Adlam", Adlam), _U("Ahom", Ahom), @@ -2833,11 +2833,11 @@ private alias _U = immutable(UnicodeProperty); @property static _U[] tab() pure { return _tab; } static immutable: private alias _T = ubyte[]; -_T V = [0x91, 0x60, 0x48, 0xa0, 0xc6, 0x8, 0x17]; -_T T = [0x91, 0xa8, 0x58, 0xa0, 0xc5, 0xcb, 0x31]; -_T LVT = [0xa0, 0xac, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b]; -_T L = [0x91, 0x0, 0x60, 0xa0, 0x98, 0x0, 0x1d]; -_T LV = [0xa0, 0xac, 0x0, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1, 0x1b, 0x1]; +_T V = x"916048A0C60817"; +_T T = x"91A858A0C5CB31"; +_T LVT = x"A0AC011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B"; +_T L = x"910060A098001D"; +_T LV = x"A0AC00011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B011B01"; _U[] _tab = [ _U("L", L), _U("Leading_Jamo", L), diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index fc7d7d85aa2..bbe0df42e8d 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -772,7 +772,7 @@ string charsetString(CodepointSet set, string sep=";\n") auto app = appender!(char[])(); ubyte[] data = compressIntervals(set.byInterval); assert(CodepointSet(decompressIntervals(data)) == set); - formattedWrite(app, "[%(0x%x, %)];", data); + formattedWrite(app, "x\"%(%02X%)\";", data); return cast(string) app.data; } From 456b4a3d2bc843ab65f77132f7ab98fb16d29586 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 19:44:08 +0100 Subject: [PATCH 152/327] Remove failing FreeBSD 12 CI --- .github/workflows/main.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 820977b14d9..637e8baf597 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -81,8 +81,6 @@ jobs: include: - job_name: FreeBSD 13.2 x64 freebsd_version: '13.2' - - job_name: FreeBSD 12.4 x64 - freebsd_version: '12.4' name: ${{ matrix.job_name }} runs-on: macos-latest timeout-minutes: 60 From 37cd223f3a8b4402869c8299ea9378a40897c2a4 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 15:38:22 +0100 Subject: [PATCH 153/327] Remove std.conv import from bitfields template --- std/bitmanip.d | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/std/bitmanip.d b/std/bitmanip.d index b84a6762d19..e9f61919b0d 100644 --- a/std/bitmanip.d +++ b/std/bitmanip.d @@ -279,10 +279,8 @@ See_Also: $(REF BitFlags, std,typecons) */ string bitfields(T...)() { - import std.conv : to; - static assert(T.length % 3 == 0, - "Wrong number of arguments (" ~ to!string(T.length) ~ "): Must be a multiple of 3"); + "Wrong number of arguments (" ~ T.length.stringof ~ "): Must be a multiple of 3"); static foreach (i, ARG; T) { From 81217eb2ebdb28da838de4139ce0820ebb0cf2ff Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 20:32:20 +0100 Subject: [PATCH 154/327] Compile zlib in one go --- Makefile | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 3dc4c8520dd..53f5771d799 100644 --- a/Makefile +++ b/Makefile @@ -271,7 +271,13 @@ ALL_D_FILES = $(addsuffix .d, $(STD_MODULES) $(EXTRA_MODULES_COMMON) \ C_MODULES = $(addprefix etc/c/zlib/, adler32 compress crc32 deflate \ gzclose gzlib gzread gzwrite infback inffast inflate inftrees trees uncompr zutil) -OBJS = $(addsuffix $(DOTOBJ),$(addprefix $(ROOT)/,$(C_MODULES))) +OBJS = $(ROOT)/zlib$(DOTOBJ) + +# C files to be part of the build +C_MODULES = $(addprefix etc/c/zlib/, adler32 compress crc32 deflate \ + gzclose gzlib gzread gzwrite infback inffast inflate inftrees trees uncompr zutil) + +C_FILES = $(addsuffix .c, $(C_MODULES)) # build with shared library support (defaults to true on supported platforms) SHARED=$(if $(findstring $(OS),linux freebsd),1,) @@ -318,10 +324,10 @@ lib: $(LIB) dll: $(ROOT)/libphobos2.so # compile zlib .c files via importC; the druntime dependency makes sure DMD has been built -$(ROOT)/%$(DOTOBJ): %.c $(DRUNTIME) - $(DMD) -c $(DFLAGS) $(CFLAGS) -of$@ $< +$(ROOT)/zlib$(DOTOBJ): $(C_FILES) $(DRUNTIME) + $(DMD) -c $(DFLAGS) $(CFLAGS) -of$@ $(C_FILES) -$(LIB): $(OBJS) $(ALL_D_FILES) $(DRUNTIME) +$(LIB): $(ROOT)/zlib$(DOTOBJ) $(ALL_D_FILES) $(DRUNTIME) $(DMD) $(DFLAGS) -lib -of$@ $(DRUNTIME) $(D_FILES) $(OBJS) $(ROOT)/libphobos2.so: $(ROOT)/$(SONAME) From bd8b943fa2d340e9a16e41c9ed03e22d4a2ff624 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 17:27:14 +0100 Subject: [PATCH 155/327] std.uni: optimize fullCaseTable --- std/internal/unicode_tables.d | 1360 +++++++++++++------------------ std/uni/package.d | 15 +- tools/unicode_table_generator.d | 61 +- 3 files changed, 605 insertions(+), 831 deletions(-) diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index fa70e3bb6bc..d400ee64e8e 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -36,16 +36,27 @@ pure nothrow @nogc: } } -struct FullCaseEntry +/// Bit backed FullCaseEntry +struct FCE { - dchar[3] seq; - ubyte n, size;// n number in batch, size - size of batch - ubyte entry_len; + ulong x; // bit field sizes: 18, 12, 12, 4, 4, 4 - @property auto value() const @trusted pure nothrow @nogc return +nothrow @nogc pure @safe: + + this(ulong x) + { + this.x = x; + } + + this(dchar[3] seq, ubyte n, ubyte size, ubyte entry_len) { - return seq[0 .. entry_len]; + this.x = ulong(seq[0]) << 36 | ulong(seq[1]) << 24 | seq[2] << 12 | n << 8 | size << 4 | entry_len << 0; } + + dchar[3] seq() const { return [(x >> 36) & 0x1FFFF, (x >> 24) & 0xFFF, (x >> 12) & 0xFFF]; } + ubyte n() const { return (x >> 8) & 0xF; } + ubyte size() const { return (x >> 4) & 0xF; } + ubyte entry_len() const { return (x >> 0) & 0xF; } } struct CompEntry @@ -818,809 +829,542 @@ SCE(0xab9c, 1, 0x42),SCE(0x1e91e, 0, 0x82),SCE(0x1e940, 1, 0x42),SCE(0x038e, 0, SCE(0x03cd, 1, 0x42),SCE(0x0531, 0, 0x82),SCE(0x0561, 1, 0x42),]; return t; } -@property immutable(FullCaseEntry[]) fullCaseTable() nothrow @nogc @safe pure +@property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure { -alias FCE = FullCaseEntry; -static immutable FCE[] t = [ -FCE("𞤋", 0, 2, 1), -FCE("𞤭", 1, 2, 1),FCE("𐲮", 0, 2, 1),FCE("𐳮", 1, 2, 1),FCE("Җ", 0, 2, 1), -FCE("җ", 1, 2, 1),FCE("𞤑", 0, 2, 1),FCE("𞤳", 1, 2, 1),FCE("Ꜣ", 0, 2, 1), -FCE("ꜣ", 1, 2, 1),FCE("ό", 0, 2, 1),FCE("Ό", 1, 2, 1),FCE("ὄ", 0, 2, 1), -FCE("Ὄ", 1, 2, 1),FCE("Ś", 0, 2, 1),FCE("ś", 1, 2, 1),FCE("ჽ", 0, 2, 1), -FCE("Ჽ", 1, 2, 1),FCE("𖹌", 0, 2, 1),FCE("𖹬", 1, 2, 1),FCE("Ḹ", 0, 2, 1), -FCE("ḹ", 1, 2, 1),FCE("ﬖ", 0, 2, 1),FCE("վն", 1, 2, 2),FCE("𞤡", 0, 2, 1), -FCE("𞥃", 1, 2, 1),FCE("ἣ", 0, 2, 1),FCE("Ἣ", 1, 2, 1),FCE("Ơ", 0, 2, 1), -FCE("ơ", 1, 2, 1),FCE("Σ", 0, 3, 1),FCE("ς", 1, 3, 1),FCE("σ", 2, 3, 1), -FCE("Ӝ", 0, 2, 1),FCE("ӝ", 1, 2, 1),FCE("Ⲧ", 0, 2, 1),FCE("ⲧ", 1, 2, 1), -FCE("Ż", 0, 2, 1),FCE("ż", 1, 2, 1),FCE("𞤆", 0, 2, 1),FCE("𞤨", 1, 2, 1), -FCE("ნ", 0, 2, 1),FCE("Ნ", 1, 2, 1),FCE("𐓍", 0, 2, 1),FCE("𐓵", 1, 2, 1), -FCE("ὥ", 0, 2, 1),FCE("Ὥ", 1, 2, 1),FCE("Ԟ", 0, 2, 1),FCE("ԟ", 1, 2, 1), -FCE("ი", 0, 2, 1),FCE("Ი", 1, 2, 1),FCE("Ⱊ", 0, 2, 1),FCE("ⱊ", 1, 2, 1), -FCE("ɽ", 0, 2, 1),FCE("Ɽ", 1, 2, 1),FCE("Ꚛ", 0, 2, 1),FCE("ꚛ", 1, 2, 1), -FCE("ἂ", 0, 2, 1),FCE("Ἂ", 1, 2, 1),FCE("Ԣ", 0, 2, 1),FCE("ԣ", 1, 2, 1), -FCE("Ⱡ", 0, 2, 1),FCE("ⱡ", 1, 2, 1),FCE("ᾷ", 0, 2, 1),FCE("ᾶι", 1, 2, 3), -FCE("Ꙑ", 0, 2, 1),FCE("ꙑ", 1, 2, 1),FCE("Ꙝ", 0, 2, 1),FCE("ꙝ", 1, 2, 1), -FCE("Ⱎ", 0, 2, 1),FCE("ⱎ", 1, 2, 1),FCE("ᾳ", 0, 3, 1),FCE("ᾼ", 1, 3, 1), -FCE("αι", 2, 3, 2),FCE("Ꮙ", 0, 2, 1),FCE("ꮙ", 1, 2, 1),FCE("Ꮝ", 0, 2, 1), -FCE("ꮝ", 1, 2, 1),FCE("Î", 0, 2, 1),FCE("î", 1, 2, 1),FCE("Ṿ", 0, 2, 1), -FCE("ṿ", 1, 2, 1),FCE("𐐔", 0, 2, 1),FCE("𐐼", 1, 2, 1),FCE("Ᏸ", 0, 2, 1), -FCE("ᏸ", 1, 2, 1),FCE("Ễ", 0, 2, 1),FCE("ễ", 1, 2, 1),FCE("Ꞌ", 0, 2, 1), -FCE("ꞌ", 1, 2, 1),FCE("Ĕ", 0, 2, 1),FCE("ĕ", 1, 2, 1),FCE("Я", 0, 2, 1), -FCE("я", 1, 2, 1),FCE("𞤂", 0, 2, 1),FCE("𞤤", 1, 2, 1),FCE("Ә", 0, 2, 1), -FCE("ә", 1, 2, 1),FCE("Ⲫ", 0, 2, 1),FCE("ⲫ", 1, 2, 1),FCE("Đ", 0, 2, 1), -FCE("đ", 1, 2, 1),FCE("Ғ", 0, 2, 1),FCE("ғ", 1, 2, 1),FCE("Ḵ", 0, 2, 1), -FCE("ḵ", 1, 2, 1),FCE("Ᏼ", 0, 2, 1),FCE("ᏼ", 1, 2, 1),FCE("Ȥ", 0, 2, 1), -FCE("ȥ", 1, 2, 1),FCE("Ⲣ", 0, 2, 1),FCE("ⲣ", 1, 2, 1),FCE("Ꜯ", 0, 2, 1), -FCE("ꜯ", 1, 2, 1),FCE("𖹈", 0, 2, 1),FCE("𖹨", 1, 2, 1),FCE("J", 0, 2, 1), -FCE("j", 1, 2, 1),FCE("Ꭶ", 0, 2, 1),FCE("ꭶ", 1, 2, 1),FCE("Ş", 0, 2, 1), -FCE("ş", 1, 2, 1),FCE("DŽ", 0, 3, 1),FCE("Dž", 1, 3, 1),FCE("dž", 2, 3, 1), -FCE("ὀ", 0, 2, 1),FCE("Ὀ", 1, 2, 1),FCE("Ꙙ", 0, 2, 1),FCE("ꙙ", 1, 2, 1), -FCE("Ȭ", 0, 2, 1),FCE("ȭ", 1, 2, 1),FCE("𐲟", 0, 2, 1),FCE("𐳟", 1, 2, 1), -FCE("ὐ", 0, 2, 1),FCE("ὐ", 1, 2, 2),FCE("ᾧ", 0, 3, 1),FCE("ᾯ", 1, 3, 1), -FCE("ὧι", 2, 3, 2),FCE("B", 0, 2, 1),FCE("b", 1, 2, 1),FCE("Ꭾ", 0, 2, 1), -FCE("ꭾ", 1, 2, 1),FCE("𖹀", 0, 2, 1),FCE("𖹠", 1, 2, 1),FCE("Ò", 0, 2, 1), -FCE("ò", 1, 2, 1),FCE("Ẃ", 0, 2, 1),FCE("ẃ", 1, 2, 1),FCE("Ꮥ", 0, 2, 1), -FCE("ꮥ", 1, 2, 1),FCE("რ", 0, 2, 1),FCE("Რ", 1, 2, 1),FCE("Ľ", 0, 2, 1), -FCE("ľ", 1, 2, 1),FCE("І", 0, 2, 1),FCE("і", 1, 2, 1),FCE("ʝ", 0, 2, 1), -FCE("Ʝ", 1, 2, 1),FCE("Ĺ", 0, 2, 1),FCE("ĺ", 1, 2, 1),FCE("Ƙ", 0, 2, 1), -FCE("ƙ", 1, 2, 1),FCE("Ẽ", 0, 2, 1),FCE("ẽ", 1, 2, 1),FCE("Ϋ", 0, 2, 1), -FCE("ϋ", 1, 2, 1),FCE("Ў", 0, 2, 1),FCE("ў", 1, 2, 1),FCE("Ꞷ", 0, 2, 1), -FCE("ꞷ", 1, 2, 1),FCE("Њ", 0, 2, 1),FCE("њ", 1, 2, 1),FCE("Ề", 0, 2, 1), -FCE("ề", 1, 2, 1),FCE("𐕲", 0, 2, 1),FCE("𐖙", 1, 2, 1),FCE("Ⓓ", 0, 2, 1), -FCE("ⓓ", 1, 2, 1),FCE("Ⱆ", 0, 2, 1),FCE("ⱆ", 1, 2, 1),FCE("Ɯ", 0, 2, 1), -FCE("ɯ", 1, 2, 1),FCE("Χ", 0, 2, 1),FCE("χ", 1, 2, 1),FCE("Ꚓ", 0, 2, 1), -FCE("ꚓ", 1, 2, 1),FCE("Å", 0, 3, 1),FCE("å", 1, 3, 1),FCE("Å", 2, 3, 1), -FCE("Ԧ", 0, 2, 1),FCE("ԧ", 1, 2, 1),FCE("ɦ", 0, 2, 1),FCE("Ɦ", 1, 2, 1), -FCE("𐕺", 0, 2, 1),FCE("𐖡", 1, 2, 1),FCE("𐕾", 0, 2, 1),FCE("𐖥", 1, 2, 1), -FCE("ῐ", 0, 2, 1),FCE("Ῐ", 1, 2, 1),FCE("F", 0, 2, 1),FCE("f", 1, 2, 1), -FCE("𞤊", 0, 2, 1),FCE("𞤬", 1, 2, 1),FCE("Ȩ", 0, 2, 1),FCE("ȩ", 1, 2, 1), -FCE("Ꭲ", 0, 2, 1),FCE("ꭲ", 1, 2, 1),FCE("Ꜧ", 0, 2, 1),FCE("ꜧ", 1, 2, 1), -FCE("𐲓", 0, 2, 1),FCE("𐳓", 1, 2, 1),FCE("Қ", 0, 2, 1),FCE("қ", 1, 2, 1), -FCE("Ö", 0, 2, 1),FCE("ö", 1, 2, 1),FCE("Č", 0, 2, 1),FCE("č", 1, 2, 1), -FCE("𐲗", 0, 2, 1),FCE("𐳗", 1, 2, 1),FCE("Ţ", 0, 2, 1),FCE("ţ", 1, 2, 1), -FCE("ƞ", 0, 2, 1),FCE("Ƞ", 1, 2, 1),FCE("ẗ", 0, 2, 1),FCE("ẗ", 1, 2, 2), -FCE("Β", 0, 3, 1),FCE("β", 1, 3, 1),FCE("ϐ", 2, 3, 1),FCE("Ḱ", 0, 2, 1), -FCE("ḱ", 1, 2, 1),FCE("ᾣ", 0, 3, 1),FCE("ᾫ", 1, 3, 1),FCE("ὣι", 2, 3, 2), -FCE("𑢨", 0, 2, 1),FCE("𑣈", 1, 2, 1),FCE("Ⅽ", 0, 2, 1),FCE("ⅽ", 1, 2, 1), -FCE("Ⲟ", 0, 2, 1),FCE("ⲟ", 1, 2, 1),FCE("N", 0, 2, 1),FCE("n", 1, 2, 1), -FCE("µ", 0, 3, 1),FCE("Μ", 1, 3, 1),FCE("μ", 2, 3, 1),FCE("Ҏ", 0, 2, 1), -FCE("ҏ", 1, 2, 1),FCE("Ꜫ", 0, 2, 1),FCE("ꜫ", 1, 2, 1),FCE("𐐐", 0, 2, 1), -FCE("𐐸", 1, 2, 1),FCE("Ί", 0, 2, 1),FCE("ί", 1, 2, 1),FCE("Ỿ", 0, 2, 1), -FCE("ỿ", 1, 2, 1),FCE("𑢬", 0, 2, 1),FCE("𑣌", 1, 2, 1),FCE("Ǫ", 0, 2, 1), -FCE("ǫ", 1, 2, 1),FCE("ἆ", 0, 2, 1),FCE("Ἆ", 1, 2, 1),FCE("ῃ", 0, 3, 1), -FCE("ῌ", 1, 3, 1),FCE("ηι", 2, 3, 2),FCE("Ⴔ", 0, 2, 1),FCE("ⴔ", 1, 2, 1), -FCE("ɪ", 0, 2, 1),FCE("Ɪ", 1, 2, 1),FCE("В", 0, 3, 1),FCE("в", 1, 3, 1), -FCE("ᲀ", 2, 3, 1),FCE("ᾆ", 0, 3, 1),FCE("ᾎ", 1, 3, 1),FCE("ἆι", 2, 3, 2), -FCE("𐲛", 0, 2, 1),FCE("𐳛", 1, 2, 1),FCE("Ꝡ", 0, 2, 1),FCE("ꝡ", 1, 2, 1), -FCE("Ⓢ", 0, 2, 1),FCE("ⓢ", 1, 2, 1),FCE("Ƥ", 0, 2, 1),FCE("ƥ", 1, 2, 1), -FCE("Ο", 0, 2, 1),FCE("ο", 1, 2, 1),FCE("Ⴤ", 0, 2, 1),FCE("ⴤ", 1, 2, 1), -FCE("Ң", 0, 2, 1),FCE("ң", 1, 2, 1),FCE("Ⰳ", 0, 2, 1),FCE("ⰳ", 1, 2, 1), -FCE("Ⳡ", 0, 2, 1),FCE("ⳡ", 1, 2, 1),FCE("𐕶", 0, 2, 1),FCE("𐖝", 1, 2, 1), -FCE("ᾖ", 0, 3, 1),FCE("ᾞ", 1, 3, 1),FCE("ἦι", 2, 3, 2),FCE("Ӡ", 0, 2, 1), -FCE("ӡ", 1, 2, 1),FCE("Ⱚ", 0, 2, 1),FCE("ⱚ", 1, 2, 1),FCE("Ố", 0, 2, 1), -FCE("ố", 1, 2, 1),FCE("Â", 0, 2, 1),FCE("â", 1, 2, 1),FCE("Ө", 0, 2, 1), -FCE("ө", 1, 2, 1),FCE("Ꞧ", 0, 2, 1),FCE("ꞧ", 1, 2, 1),FCE("ჹ", 0, 2, 1), -FCE("Ჹ", 1, 2, 1),FCE("Ņ", 0, 2, 1),FCE("ņ", 1, 2, 1),FCE("ͼ", 0, 2, 1), -FCE("Ͼ", 1, 2, 1),FCE("Ỉ", 0, 2, 1),FCE("ỉ", 1, 2, 1),FCE("К", 0, 2, 1), -FCE("к", 1, 2, 1),FCE("Ê", 0, 2, 1),FCE("ê", 1, 2, 1),FCE("ᾆ", 0, 3, 1), -FCE("ᾎ", 1, 3, 1),FCE("ἆι", 2, 3, 2),FCE("С", 0, 3, 1),FCE("с", 1, 3, 1), -FCE("ᲃ", 2, 3, 1),FCE("𐐄", 0, 2, 1),FCE("𐐬", 1, 2, 1),FCE("fl", 0, 2, 1), -FCE("fl", 1, 2, 2),FCE("Կ", 0, 2, 1),FCE("կ", 1, 2, 1),FCE("Շ", 0, 2, 1), -FCE("շ", 1, 2, 1),FCE("Ꮆ", 0, 2, 1),FCE("ꮆ", 1, 2, 1),FCE("Ꮼ", 0, 2, 1), -FCE("ꮼ", 1, 2, 1),FCE("L", 0, 2, 1),FCE("l", 1, 2, 1),FCE("Ꞻ", 0, 2, 1), -FCE("ꞻ", 1, 2, 1),FCE("Ꙉ", 0, 2, 1),FCE("ꙉ", 1, 2, 1),FCE("Ꮕ", 0, 2, 1), -FCE("ꮕ", 1, 2, 1),FCE("D", 0, 2, 1),FCE("d", 1, 2, 1),FCE("𐐏", 0, 2, 1), -FCE("𐐷", 1, 2, 1),FCE("𐐜", 0, 2, 1),FCE("𐑄", 1, 2, 1),FCE("𐖃", 0, 2, 1), -FCE("𐖪", 1, 2, 1),FCE("𐲃", 0, 2, 1),FCE("𐳃", 1, 2, 1),FCE("Ɂ", 0, 2, 1), -FCE("ɂ", 1, 2, 1),FCE("Ṷ", 0, 2, 1),FCE("ṷ", 1, 2, 1),FCE("Ⴜ", 0, 2, 1), -FCE("ⴜ", 1, 2, 1),FCE("Ⱒ", 0, 2, 1),FCE("ⱒ", 1, 2, 1),FCE("ა", 0, 2, 1), -FCE("Ა", 1, 2, 1),FCE("Ꝩ", 0, 2, 1),FCE("ꝩ", 1, 2, 1),FCE("Ꜳ", 0, 2, 1), -FCE("ꜳ", 1, 2, 1),FCE("Ĝ", 0, 2, 1),FCE("ĝ", 1, 2, 1),FCE("Ч", 0, 2, 1), -FCE("ч", 1, 2, 1),FCE("Ṁ", 0, 2, 1),FCE("ṁ", 1, 2, 1),FCE("𑢱", 0, 2, 1), -FCE("𑣑", 1, 2, 1),FCE("Œ", 0, 2, 1),FCE("œ", 1, 2, 1),FCE("Ρ", 0, 3, 1), -FCE("ρ", 1, 3, 1),FCE("ϱ", 2, 3, 1),FCE("Η", 0, 2, 1),FCE("η", 1, 2, 1), -FCE("Ƭ", 0, 2, 1),FCE("ƭ", 1, 2, 1),FCE("Ǣ", 0, 2, 1),FCE("ǣ", 1, 2, 1), -FCE("Ș", 0, 2, 1),FCE("ș", 1, 2, 1),FCE("𞤚", 0, 2, 1),FCE("𞤼", 1, 2, 1), -FCE("Ԗ", 0, 2, 1),FCE("ԗ", 1, 2, 1),FCE("ἧ", 0, 2, 1),FCE("Ἧ", 1, 2, 1), -FCE("Ꟊ", 0, 2, 1),FCE("ꟊ", 1, 2, 1),FCE("ῠ", 0, 2, 1),FCE("Ῠ", 1, 2, 1), -FCE("Ⅵ", 0, 2, 1),FCE("ⅵ", 1, 2, 1),FCE("Ꙭ", 0, 2, 1),FCE("ꙭ", 1, 2, 1), -FCE("Γ", 0, 2, 1),FCE("γ", 1, 2, 1),FCE("Բ", 0, 2, 1),FCE("բ", 1, 2, 1), -FCE("V", 0, 2, 1),FCE("v", 1, 2, 1),FCE("ἳ", 0, 2, 1),FCE("Ἳ", 1, 2, 1), -FCE("Ք", 0, 2, 1),FCE("ք", 1, 2, 1),FCE("ᲈ", 0, 3, 1),FCE("Ꙋ", 1, 3, 1), -FCE("ꙋ", 2, 3, 1),FCE("Ꚏ", 0, 2, 1),FCE("ꚏ", 1, 2, 1),FCE("Ϙ", 0, 2, 1), -FCE("ϙ", 1, 2, 1),FCE("Ⓟ", 0, 2, 1),FCE("ⓟ", 1, 2, 1),FCE("Ⲳ", 0, 2, 1), -FCE("ⲳ", 1, 2, 1),FCE("𐲂", 0, 2, 1),FCE("𐳂", 1, 2, 1),FCE("W", 0, 2, 1), -FCE("w", 1, 2, 1),FCE("𖹓", 0, 2, 1),FCE("𖹳", 1, 2, 1),FCE("W", 0, 2, 1), -FCE("w", 1, 2, 1),FCE("Ỷ", 0, 2, 1),FCE("ỷ", 1, 2, 1),FCE("𞤒", 0, 2, 1), -FCE("𞤴", 1, 2, 1),FCE("ἒ", 0, 2, 1),FCE("Ἒ", 1, 2, 1),FCE("Ҧ", 0, 2, 1), -FCE("ҧ", 1, 2, 1),FCE("Ū", 0, 2, 1),FCE("ū", 1, 2, 1),FCE("ἴ", 0, 2, 1), -FCE("Ἴ", 1, 2, 1),FCE("Ⳝ", 0, 2, 1),FCE("ⳝ", 1, 2, 1),FCE("Ʊ", 0, 2, 1), -FCE("ʊ", 1, 2, 1),FCE("𑢤", 0, 2, 1),FCE("𑣄", 1, 2, 1),FCE("Ḩ", 0, 2, 1), -FCE("ḩ", 1, 2, 1),FCE("ƿ", 0, 2, 1),FCE("Ƿ", 1, 2, 1),FCE("Ƌ", 0, 2, 1), -FCE("ƌ", 1, 2, 1),FCE("Ⴇ", 0, 2, 1),FCE("ⴇ", 1, 2, 1),FCE("Ĩ", 0, 2, 1), -FCE("ĩ", 1, 2, 1),FCE("Ṫ", 0, 2, 1),FCE("ṫ", 1, 2, 1),FCE("Ⴋ", 0, 2, 1), -FCE("ⴋ", 1, 2, 1),FCE("П", 0, 2, 1),FCE("п", 1, 2, 1),FCE("Ⱞ", 0, 2, 1), -FCE("ⱞ", 1, 2, 1),FCE("𐲯", 0, 2, 1),FCE("𐳯", 1, 2, 1),FCE("𐓅", 0, 2, 1), -FCE("𐓭", 1, 2, 1),FCE("𑢥", 0, 2, 1),FCE("𑣅", 1, 2, 1),FCE("ῡ", 0, 2, 1), -FCE("Ῡ", 1, 2, 1),FCE("Φ", 0, 3, 1),FCE("φ", 1, 3, 1),FCE("ϕ", 2, 3, 1), -FCE("Ⰺ", 0, 2, 1),FCE("ⰺ", 1, 2, 1),FCE("Ԏ", 0, 2, 1),FCE("ԏ", 1, 2, 1), -FCE("Ą", 0, 2, 1),FCE("ą", 1, 2, 1),FCE("Ͳ", 0, 2, 1),FCE("ͳ", 1, 2, 1), -FCE("Ẏ", 0, 2, 1),FCE("ẏ", 1, 2, 1),FCE("Ζ", 0, 2, 1),FCE("ζ", 1, 2, 1), -FCE("Ỻ", 0, 2, 1),FCE("ỻ", 1, 2, 1),FCE("ϲ", 0, 2, 1),FCE("Ϲ", 1, 2, 1), -FCE("Ꙁ", 0, 2, 1),FCE("ꙁ", 1, 2, 1),FCE("წ", 0, 2, 1),FCE("Წ", 1, 2, 1), -FCE("𑢡", 0, 2, 1),FCE("𑣁", 1, 2, 1),FCE("ᾧ", 0, 3, 1),FCE("ᾯ", 1, 3, 1), -FCE("ὧι", 2, 3, 2),FCE("Ŧ", 0, 2, 1),FCE("ŧ", 1, 2, 1),FCE("ἷ", 0, 2, 1), -FCE("Ἷ", 1, 2, 1),FCE("𐲆", 0, 2, 1),FCE("𐳆", 1, 2, 1),FCE("Ꮭ", 0, 2, 1), -FCE("ꮭ", 1, 2, 1),FCE("ὑ", 0, 2, 1),FCE("Ὑ", 1, 2, 1),FCE("Ⲛ", 0, 2, 1), -FCE("ⲛ", 1, 2, 1),FCE("Ǻ", 0, 2, 1),FCE("ǻ", 1, 2, 1),FCE("Ⅹ", 0, 2, 1), -FCE("ⅹ", 1, 2, 1),FCE("𖹗", 0, 2, 1),FCE("𖹷", 1, 2, 1),FCE("Ⴄ", 0, 2, 1), -FCE("ⴄ", 1, 2, 1),FCE("S", 0, 3, 1),FCE("s", 1, 3, 1),FCE("ſ", 2, 3, 1), -FCE("Ͷ", 0, 2, 1),FCE("ͷ", 1, 2, 1),FCE("Ꮁ", 0, 2, 1),FCE("ꮁ", 1, 2, 1), -FCE("Ѩ", 0, 2, 1),FCE("ѩ", 1, 2, 1),FCE("Ꮴ", 0, 2, 1),FCE("ꮴ", 1, 2, 1), -FCE("ᾖ", 0, 3, 1),FCE("ᾞ", 1, 3, 1),FCE("ἦι", 2, 3, 2),FCE("Ĉ", 0, 2, 1), -FCE("ĉ", 1, 2, 1),FCE("𐲠", 0, 2, 1),FCE("𐳠", 1, 2, 1),FCE("Ṧ", 0, 2, 1), -FCE("ṧ", 1, 2, 1),FCE("Ẋ", 0, 2, 1),FCE("ẋ", 1, 2, 1),FCE("Ṍ", 0, 2, 1), -FCE("ṍ", 1, 2, 1),FCE("ή", 0, 2, 1),FCE("Ή", 1, 2, 1),FCE("Ⰾ", 0, 2, 1), -FCE("ⰾ", 1, 2, 1),FCE("Ṑ", 0, 2, 1),FCE("ṑ", 1, 2, 1),FCE("Ⓚ", 0, 2, 1), -FCE("ⓚ", 1, 2, 1),FCE("Ꝑ", 0, 2, 1),FCE("ꝑ", 1, 2, 1),FCE("Ú", 0, 2, 1), -FCE("ú", 1, 2, 1),FCE("ჩ", 0, 2, 1),FCE("Ჩ", 1, 2, 1),FCE("Ⳙ", 0, 2, 1), -FCE("ⳙ", 1, 2, 1),FCE("Ẹ", 0, 2, 1),FCE("ẹ", 1, 2, 1),FCE("Ĭ", 0, 2, 1), -FCE("ĭ", 1, 2, 1),FCE("ɒ", 0, 2, 1),FCE("Ɒ", 1, 2, 1),FCE("Ӄ", 0, 2, 1), -FCE("ӄ", 1, 2, 1),FCE("ΰ", 0, 3, 1),FCE("ΰ", 1, 3, 1),FCE("ΰ", 2, 3, 3), -FCE("Ⓞ", 0, 2, 1),FCE("ⓞ", 1, 2, 1),FCE("Ⰿ", 0, 2, 1),FCE("ⰿ", 1, 2, 1), -FCE("Գ", 0, 2, 1),FCE("գ", 1, 2, 1),FCE("ƕ", 0, 2, 1),FCE("Ƕ", 1, 2, 1), -FCE("ἓ", 0, 2, 1),FCE("Ἓ", 1, 2, 1),FCE("𐒸", 0, 2, 1),FCE("𐓠", 1, 2, 1), -FCE("Փ", 0, 2, 1),FCE("փ", 1, 2, 1),FCE("𐐥", 0, 2, 1),FCE("𐑍", 1, 2, 1), -FCE("Ꮡ", 0, 2, 1),FCE("ꮡ", 1, 2, 1),FCE("Ӵ", 0, 2, 1),FCE("ӵ", 1, 2, 1), -FCE("Ӈ", 0, 2, 1),FCE("ӈ", 1, 2, 1),FCE("𐒵", 0, 2, 1),FCE("𐓝", 1, 2, 1), -FCE("Ӑ", 0, 2, 1),FCE("ӑ", 1, 2, 1),FCE("Ꝝ", 0, 2, 1),FCE("ꝝ", 1, 2, 1), -FCE("𐲬", 0, 2, 1),FCE("𐳬", 1, 2, 1),FCE("Ḭ", 0, 2, 1),FCE("ḭ", 1, 2, 1), -FCE("Ⴈ", 0, 2, 1),FCE("ⴈ", 1, 2, 1),FCE("Ѥ", 0, 2, 1),FCE("ѥ", 1, 2, 1), -FCE("Ц", 0, 2, 1),FCE("ц", 1, 2, 1),FCE("Ӥ", 0, 2, 1),FCE("ӥ", 1, 2, 1), -FCE("ჭ", 0, 2, 1),FCE("Ჭ", 1, 2, 1),FCE("Ꞓ", 0, 2, 1),FCE("ꞓ", 1, 2, 1), -FCE("Ờ", 0, 2, 1),FCE("ờ", 1, 2, 1),FCE("𐒼", 0, 2, 1),FCE("𐓤", 1, 2, 1), -FCE("𐕷", 0, 2, 1),FCE("𐖞", 1, 2, 1),FCE("Ẩ", 0, 2, 1),FCE("ẩ", 1, 2, 1), -FCE("Ƹ", 0, 2, 1),FCE("ƹ", 1, 2, 1),FCE("Æ", 0, 2, 1),FCE("æ", 1, 2, 1), -FCE("P", 0, 2, 1),FCE("p", 1, 2, 1),FCE("𖹄", 0, 2, 1),FCE("𖹤", 1, 2, 1), -FCE("𐐛", 0, 2, 1),FCE("𐑃", 1, 2, 1),FCE("Ḏ", 0, 2, 1),FCE("ḏ", 1, 2, 1), -FCE("Ӕ", 0, 2, 1),FCE("ӕ", 1, 2, 1),FCE("Ⲯ", 0, 2, 1),FCE("ⲯ", 1, 2, 1), -FCE("Ⱬ", 0, 2, 1),FCE("ⱬ", 1, 2, 1),FCE("C", 0, 2, 1),FCE("c", 1, 2, 1), -FCE("Ƅ", 0, 2, 1),FCE("ƅ", 1, 2, 1),FCE("𐕳", 0, 2, 1),FCE("𐖚", 1, 2, 1), -FCE("Θ", 0, 4, 1),FCE("θ", 1, 4, 1),FCE("ϑ", 2, 4, 1),FCE("ϴ", 3, 4, 1), -FCE("Ꮤ", 0, 2, 1),FCE("ꮤ", 1, 2, 1),FCE("𞤙", 0, 2, 1),FCE("𞤻", 1, 2, 1), -FCE("Ƈ", 0, 2, 1),FCE("ƈ", 1, 2, 1),FCE("Ⱃ", 0, 2, 1),FCE("ⱃ", 1, 2, 1), -FCE("Ꞣ", 0, 2, 1),FCE("ꞣ", 1, 2, 1),FCE("Ɣ", 0, 2, 1),FCE("ɣ", 1, 2, 1), -FCE("Ж", 0, 2, 1),FCE("ж", 1, 2, 1),FCE("Ⲿ", 0, 2, 1),FCE("ⲿ", 1, 2, 1), -FCE("ᾦ", 0, 3, 1),FCE("ᾮ", 1, 3, 1),FCE("ὦι", 2, 3, 2),FCE("𐓆", 0, 2, 1), -FCE("𐓮", 1, 2, 1),FCE("ᾂ", 0, 3, 1),FCE("ᾊ", 1, 3, 1),FCE("ἂι", 2, 3, 2), -FCE("𐓉", 0, 2, 1),FCE("𐓱", 1, 2, 1),FCE("Ꮰ", 0, 2, 1),FCE("ꮰ", 1, 2, 1), -FCE("ɀ", 0, 2, 1),FCE("Ɀ", 1, 2, 1),FCE("Ꞿ", 0, 2, 1),FCE("ꞿ", 1, 2, 1), -FCE("ᾒ", 0, 3, 1),FCE("ᾚ", 1, 3, 1),FCE("ἢι", 2, 3, 2),FCE("Ђ", 0, 2, 1), -FCE("ђ", 1, 2, 1),FCE("Զ", 0, 2, 1),FCE("զ", 1, 2, 1),FCE("Ր", 0, 2, 1), -FCE("ր", 1, 2, 1),FCE("Ꚃ", 0, 2, 1),FCE("ꚃ", 1, 2, 1),FCE("Ά", 0, 2, 1), -FCE("ά", 1, 2, 1),FCE("ῥ", 0, 2, 1),FCE("Ῥ", 1, 2, 1),FCE("Ⓣ", 0, 2, 1), -FCE("ⓣ", 1, 2, 1),FCE("Ó", 0, 2, 1),FCE("ó", 1, 2, 1),FCE("ჰ", 0, 2, 1), -FCE("Ჰ", 1, 2, 1),FCE("Ḽ", 0, 2, 1),FCE("ḽ", 1, 2, 1),FCE("Ⲁ", 0, 2, 1), -FCE("ⲁ", 1, 2, 1),FCE("ᾗ", 0, 3, 1),FCE("ᾟ", 1, 3, 1),FCE("ἧι", 2, 3, 2), -FCE("𐖊", 0, 2, 1),FCE("𐖱", 1, 2, 1),FCE("Ŗ", 0, 2, 1),FCE("ŗ", 1, 2, 1), -FCE("Ṻ", 0, 2, 1),FCE("ṻ", 1, 2, 1),FCE("Ꮽ", 0, 2, 1),FCE("ꮽ", 1, 2, 1), -FCE("Ꜿ", 0, 2, 1),FCE("ꜿ", 1, 2, 1),FCE("Ę", 0, 2, 1),FCE("ę", 1, 2, 1), -FCE("Ȕ", 0, 2, 1),FCE("ȕ", 1, 2, 1),FCE("Ṡ", 0, 3, 1),FCE("ṡ", 1, 3, 1), -FCE("ẛ", 2, 3, 1),FCE("Ⲋ", 0, 2, 1),FCE("ⲋ", 1, 2, 1),FCE("Ꙍ", 0, 2, 1), -FCE("ꙍ", 1, 2, 1),FCE("Ε", 0, 3, 1),FCE("ε", 1, 3, 1),FCE("ϵ", 2, 3, 1), -FCE("Ǧ", 0, 2, 1),FCE("ǧ", 1, 2, 1),FCE("ᾅ", 0, 3, 1),FCE("ᾍ", 1, 3, 1), -FCE("ἅι", 2, 3, 2),FCE("Ԓ", 0, 2, 1),FCE("ԓ", 1, 2, 1),FCE("ὡ", 0, 2, 1), -FCE("Ὡ", 1, 2, 1),FCE("Ꙩ", 0, 2, 1),FCE("ꙩ", 1, 2, 1),FCE("𐖔", 0, 2, 1), -FCE("𐖻", 1, 2, 1),FCE("Ḙ", 0, 2, 1),FCE("ḙ", 1, 2, 1),FCE("Ꮂ", 0, 2, 1), -FCE("ꮂ", 1, 2, 1),FCE("𐐕", 0, 2, 1),FCE("𐐽", 1, 2, 1),FCE("𐐘", 0, 2, 1), -FCE("𐑀", 1, 2, 1),FCE("Ʌ", 0, 2, 1),FCE("ʌ", 1, 2, 1),FCE("ὲ", 0, 2, 1), -FCE("Ὲ", 1, 2, 1),FCE("𑢵", 0, 2, 1),FCE("𑣕", 1, 2, 1),FCE("Ⴘ", 0, 2, 1), -FCE("ⴘ", 1, 2, 1),FCE("Ӏ", 0, 2, 1),FCE("ӏ", 1, 2, 1),FCE("𐐋", 0, 2, 1), -FCE("𐐳", 1, 2, 1),FCE("У", 0, 2, 1),FCE("у", 1, 2, 1),FCE("Ⴥ", 0, 2, 1), -FCE("ⴥ", 1, 2, 1),FCE("Ⱝ", 0, 2, 1),FCE("ⱝ", 1, 2, 1),FCE("ἰ", 0, 2, 1), -FCE("Ἰ", 1, 2, 1),FCE("Ꮑ", 0, 2, 1),FCE("ꮑ", 1, 2, 1),FCE("Ꝭ", 0, 2, 1), -FCE("ꝭ", 1, 2, 1),FCE("𐓌", 0, 2, 1),FCE("𐓴", 1, 2, 1),FCE("ά", 0, 2, 1), -FCE("Ά", 1, 2, 1),FCE("S", 0, 2, 1),FCE("s", 1, 2, 1),FCE("Ⅺ", 0, 2, 1), -FCE("ⅺ", 1, 2, 1),FCE("ʼn", 0, 2, 1),FCE("ʼn", 1, 2, 2),FCE("Ϩ", 0, 2, 1), -FCE("ϩ", 1, 2, 1),FCE("Ꟑ", 0, 2, 1),FCE("ꟑ", 1, 2, 1),FCE("Z", 0, 2, 1), -FCE("z", 1, 2, 1),FCE("𐲰", 0, 2, 1),FCE("𐳰", 1, 2, 1),FCE("Ǚ", 0, 2, 1), -FCE("ǚ", 1, 2, 1),FCE("Ọ", 0, 2, 1),FCE("ọ", 1, 2, 1),FCE("Ƶ", 0, 2, 1), -FCE("ƶ", 1, 2, 1),FCE("Ճ", 0, 2, 1),FCE("ճ", 1, 2, 1),FCE("ἢ", 0, 2, 1), -FCE("Ἢ", 1, 2, 1),FCE("𐖇", 0, 2, 1),FCE("𐖮", 1, 2, 1),FCE("Ạ", 0, 2, 1), -FCE("ạ", 1, 2, 1),FCE("𐲏", 0, 2, 1),FCE("𐳏", 1, 2, 1),FCE("𖹔", 0, 2, 1), -FCE("𖹴", 1, 2, 1),FCE("ᾴ", 0, 2, 1),FCE("άι", 1, 2, 2),FCE("ᵽ", 0, 2, 1), -FCE("Ᵽ", 1, 2, 1),FCE("Ꟗ", 0, 2, 1),FCE("ꟗ", 1, 2, 1),FCE("Ꝍ", 0, 2, 1), -FCE("ꝍ", 1, 2, 1),FCE("Ꮞ", 0, 2, 1),FCE("ꮞ", 1, 2, 1),FCE("Ï", 0, 2, 1), -FCE("ï", 1, 2, 1),FCE("კ", 0, 2, 1),FCE("Კ", 1, 2, 1),FCE("E", 0, 2, 1), -FCE("e", 1, 2, 1),FCE("Ķ", 0, 2, 1),FCE("ķ", 1, 2, 1),FCE("Ѝ", 0, 2, 1), -FCE("ѝ", 1, 2, 1),FCE("𖹃", 0, 2, 1),FCE("𖹣", 1, 2, 1),FCE("ὼ", 0, 2, 1), -FCE("Ὼ", 1, 2, 1),FCE("Ɋ", 0, 2, 1),FCE("ɋ", 1, 2, 1),FCE("Ҹ", 0, 2, 1), -FCE("ҹ", 1, 2, 1),FCE("Ⳋ", 0, 2, 1),FCE("ⳋ", 1, 2, 1),FCE("Ⳮ", 0, 2, 1), -FCE("ⳮ", 1, 2, 1),FCE("Ɵ", 0, 2, 1),FCE("ɵ", 1, 2, 1),FCE("Τ", 0, 2, 1), -FCE("τ", 1, 2, 1),FCE("ﬗ", 0, 2, 1),FCE("մխ", 1, 2, 2),FCE("Ꝏ", 0, 2, 1), -FCE("ꝏ", 1, 2, 1),FCE("𐓀", 0, 2, 1),FCE("𐓨", 1, 2, 1),FCE("Ḗ", 0, 2, 1), -FCE("ḗ", 1, 2, 1),FCE("Ꭿ", 0, 2, 1),FCE("ꭿ", 1, 2, 1),FCE("Ԁ", 0, 2, 1), -FCE("ԁ", 1, 2, 1),FCE("Ⲃ", 0, 2, 1),FCE("ⲃ", 1, 2, 1),FCE("Ⴝ", 0, 2, 1), -FCE("ⴝ", 1, 2, 1),FCE("𞤖", 0, 2, 1),FCE("𞤸", 1, 2, 1),FCE("𐲣", 0, 2, 1), -FCE("𐳣", 1, 2, 1),FCE("𐲔", 0, 2, 1),FCE("𐳔", 1, 2, 1),FCE("𐓂", 0, 2, 1), -FCE("𐓪", 1, 2, 1),FCE("Φ", 0, 3, 1),FCE("φ", 1, 3, 1),FCE("ϕ", 2, 3, 1), -FCE("ᾓ", 0, 3, 1),FCE("ᾛ", 1, 3, 1),FCE("ἣι", 2, 3, 2),FCE("𑢴", 0, 2, 1), -FCE("𑣔", 1, 2, 1),FCE("Ꮹ", 0, 2, 1),FCE("ꮹ", 1, 2, 1),FCE("𖹍", 0, 2, 1), -FCE("𖹭", 1, 2, 1),FCE("ὁ", 0, 2, 1),FCE("Ὁ", 1, 2, 1),FCE("ʇ", 0, 2, 1), -FCE("Ʇ", 1, 2, 1),FCE("Ղ", 0, 2, 1),FCE("ղ", 1, 2, 1),FCE("Ṙ", 0, 2, 1), -FCE("ṙ", 1, 2, 1),FCE("ὃ", 0, 2, 1),FCE("Ὃ", 1, 2, 1),FCE("ᾑ", 0, 3, 1), -FCE("ᾙ", 1, 3, 1),FCE("ἡι", 2, 3, 2),FCE("Ⳬ", 0, 2, 1),FCE("ⳬ", 1, 2, 1), -FCE("ῑ", 0, 2, 1),FCE("Ῑ", 1, 2, 1),FCE("Ứ", 0, 2, 1),FCE("ứ", 1, 2, 1), -FCE("Ꭳ", 0, 2, 1),FCE("ꭳ", 1, 2, 1),FCE("Ϯ", 0, 2, 1),FCE("ϯ", 1, 2, 1), -FCE("𑢸", 0, 2, 1),FCE("𑣘", 1, 2, 1),FCE("𐲞", 0, 2, 1),FCE("𐳞", 1, 2, 1), -FCE("Ꮻ", 0, 2, 1),FCE("ꮻ", 1, 2, 1),FCE("ÿ", 0, 2, 1),FCE("Ÿ", 1, 2, 1), -FCE("𐐗", 0, 2, 1),FCE("𐐿", 1, 2, 1),FCE("𑢩", 0, 2, 1),FCE("𑣉", 1, 2, 1), -FCE("ᾰ", 0, 2, 1),FCE("Ᾰ", 1, 2, 1),FCE("Ⲉ", 0, 2, 1),FCE("ⲉ", 1, 2, 1), -FCE("Ꭹ", 0, 2, 1),FCE("ꭹ", 1, 2, 1),FCE("𞤉", 0, 2, 1),FCE("𞤫", 1, 2, 1), -FCE("Ꮒ", 0, 2, 1),FCE("ꮒ", 1, 2, 1),FCE("Ⓐ", 0, 2, 1),FCE("ⓐ", 1, 2, 1), -FCE("Ṟ", 0, 2, 1),FCE("ṟ", 1, 2, 1),FCE("Ⱪ", 0, 2, 1),FCE("ⱪ", 1, 2, 1), -FCE("𐐟", 0, 2, 1),FCE("𐑇", 1, 2, 1),FCE("Ϳ", 0, 2, 1),FCE("ϳ", 1, 2, 1), -FCE("Հ", 0, 2, 1),FCE("հ", 1, 2, 1),FCE("ΐ", 0, 3, 1),FCE("ΐ", 1, 3, 1), -FCE("ΐ", 2, 3, 3),FCE("K", 0, 3, 1),FCE("k", 1, 3, 1),FCE("K", 2, 3, 1), -FCE("Ӹ", 0, 2, 1),FCE("ӹ", 1, 2, 1),FCE("Ᏻ", 0, 2, 1),FCE("ᏻ", 1, 2, 1), -FCE("É", 0, 2, 1),FCE("é", 1, 2, 1),FCE("Џ", 0, 2, 1),FCE("џ", 1, 2, 1), -FCE("Ⴕ", 0, 2, 1),FCE("ⴕ", 1, 2, 1),FCE("Ꝇ", 0, 2, 1),FCE("ꝇ", 1, 2, 1), -FCE("Í", 0, 2, 1),FCE("í", 1, 2, 1),FCE("Ѷ", 0, 2, 1),FCE("ѷ", 1, 2, 1), -FCE("Ξ", 0, 2, 1),FCE("ξ", 1, 2, 1),FCE("ἠ", 0, 2, 1),FCE("Ἠ", 1, 2, 1), -FCE("ჺ", 0, 2, 1),FCE("Ჺ", 1, 2, 1),FCE("Ⱑ", 0, 2, 1),FCE("ⱑ", 1, 2, 1), -FCE("Ầ", 0, 2, 1),FCE("ầ", 1, 2, 1),FCE("ᾃ", 0, 3, 1),FCE("ᾋ", 1, 3, 1), -FCE("ἃι", 2, 3, 2),FCE("Լ", 0, 2, 1),FCE("լ", 1, 2, 1),FCE("ἁ", 0, 2, 1), -FCE("Ἁ", 1, 2, 1),FCE("Ⳃ", 0, 2, 1),FCE("ⳃ", 1, 2, 1),FCE("Ȉ", 0, 2, 1), -FCE("ȉ", 1, 2, 1),FCE("Ꮳ", 0, 2, 1),FCE("ꮳ", 1, 2, 1),FCE("Ꞗ", 0, 2, 1), -FCE("ꞗ", 1, 2, 1),FCE("ὤ", 0, 2, 1),FCE("Ὤ", 1, 2, 1),FCE("𐖒", 0, 2, 1), -FCE("𐖹", 1, 2, 1),FCE("Ҿ", 0, 2, 1),FCE("ҿ", 1, 2, 1),FCE("ᾑ", 0, 3, 1), -FCE("ᾙ", 1, 3, 1),FCE("ἡι", 2, 3, 2),FCE("Ϧ", 0, 2, 1),FCE("ϧ", 1, 2, 1), -FCE("Ỡ", 0, 2, 1),FCE("ỡ", 1, 2, 1),FCE("ῳ", 0, 3, 1),FCE("ῼ", 1, 3, 1), -FCE("ωι", 2, 3, 2),FCE("İ", 0, 2, 1),FCE("i̇", 1, 2, 2),FCE("Г", 0, 2, 1), -FCE("г", 1, 2, 1),FCE("ẘ", 0, 2, 1),FCE("ẘ", 1, 2, 2),FCE("Ю", 0, 2, 1), -FCE("ю", 1, 2, 1),FCE("მ", 0, 2, 1),FCE("Მ", 1, 2, 1),FCE("ჶ", 0, 2, 1), -FCE("Ჶ", 1, 2, 1),FCE("Ⰰ", 0, 2, 1),FCE("ⰰ", 1, 2, 1),FCE("𑢾", 0, 2, 1), -FCE("𑣞", 1, 2, 1),FCE("Ƨ", 0, 2, 1),FCE("ƨ", 1, 2, 1),FCE("Ⴣ", 0, 2, 1), -FCE("ⴣ", 1, 2, 1),FCE("Е", 0, 2, 1),FCE("е", 1, 2, 1),FCE("Ḟ", 0, 2, 1), -FCE("ḟ", 1, 2, 1),FCE("Ԇ", 0, 2, 1),FCE("ԇ", 1, 2, 1),FCE("Ṥ", 0, 2, 1), -FCE("ṥ", 1, 2, 1),FCE("Ç", 0, 2, 1),FCE("ç", 1, 2, 1),FCE("Ѽ", 0, 2, 1), -FCE("ѽ", 1, 2, 1),FCE("Ṓ", 0, 2, 1),FCE("ṓ", 1, 2, 1),FCE("ჴ", 0, 2, 1), -FCE("Ჴ", 1, 2, 1),FCE("𐖆", 0, 2, 1),FCE("𐖭", 1, 2, 1),FCE("Ѫ", 0, 2, 1), -FCE("ѫ", 1, 2, 1),FCE("Ⱗ", 0, 2, 1),FCE("ⱗ", 1, 2, 1),FCE("𐓊", 0, 2, 1), -FCE("𐓲", 1, 2, 1),FCE("Ⴂ", 0, 2, 1),FCE("ⴂ", 1, 2, 1),FCE("𐲉", 0, 2, 1), -FCE("𐳉", 1, 2, 1),FCE("R", 0, 2, 1),FCE("r", 1, 2, 1),FCE("Θ", 0, 4, 1), -FCE("θ", 1, 4, 1),FCE("ϑ", 2, 4, 1),FCE("ϴ", 3, 4, 1),FCE("Ω", 0, 3, 1), -FCE("ω", 1, 3, 1),FCE("Ω", 2, 3, 1),FCE("Ớ", 0, 2, 1),FCE("ớ", 1, 2, 1), -FCE("𞤁", 0, 2, 1),FCE("𞤣", 1, 2, 1),FCE("Ꞝ", 0, 2, 1),FCE("ꞝ", 1, 2, 1), -FCE("დ", 0, 2, 1),FCE("Დ", 1, 2, 1),FCE("Ⓖ", 0, 2, 1),FCE("ⓖ", 1, 2, 1), -FCE("O", 0, 2, 1),FCE("o", 1, 2, 1),FCE("ɐ", 0, 2, 1),FCE("Ɐ", 1, 2, 1), -FCE("Ⱙ", 0, 2, 1),FCE("ⱙ", 1, 2, 1),FCE("𞤠", 0, 2, 1),FCE("𞥂", 1, 2, 1), -FCE("Ҳ", 0, 2, 1),FCE("ҳ", 1, 2, 1),FCE("𐐙", 0, 2, 1),FCE("𐑁", 1, 2, 1), -FCE("Ȑ", 0, 2, 1),FCE("ȑ", 1, 2, 1),FCE("Ⱅ", 0, 2, 1),FCE("ⱅ", 1, 2, 1), -FCE("𖹇", 0, 2, 1),FCE("𖹧", 1, 2, 1),FCE("Ꝕ", 0, 2, 1),FCE("ꝕ", 1, 2, 1), -FCE("𖹅", 0, 2, 1),FCE("𖹥", 1, 2, 1),FCE("LJ", 0, 3, 1),FCE("Lj", 1, 3, 1), -FCE("lj", 2, 3, 1),FCE("Ѿ", 0, 2, 1),FCE("ѿ", 1, 2, 1),FCE("Ǽ", 0, 2, 1), -FCE("ǽ", 1, 2, 1),FCE("Ȏ", 0, 2, 1),FCE("ȏ", 1, 2, 1),FCE("Ʉ", 0, 2, 1), -FCE("ʉ", 1, 2, 1),FCE("ί", 0, 2, 1),FCE("Ί", 1, 2, 1),FCE("Ⳗ", 0, 2, 1), -FCE("ⳗ", 1, 2, 1),FCE("𐖉", 0, 2, 1),FCE("𐖰", 1, 2, 1),FCE("Т", 0, 4, 1), -FCE("т", 1, 4, 1),FCE("ᲄ", 2, 4, 1),FCE("ᲅ", 3, 4, 1),FCE("ყ", 0, 2, 1), -FCE("Ყ", 1, 2, 1),FCE("Ӻ", 0, 2, 1),FCE("ӻ", 1, 2, 1),FCE("ვ", 0, 2, 1), -FCE("Ვ", 1, 2, 1),FCE("Ậ", 0, 2, 1),FCE("ậ", 1, 2, 1),FCE("Ⴗ", 0, 2, 1), -FCE("ⴗ", 1, 2, 1),FCE("Ꭱ", 0, 2, 1),FCE("ꭱ", 1, 2, 1),FCE("Ꟃ", 0, 2, 1), -FCE("ꟃ", 1, 2, 1),FCE("𞤇", 0, 2, 1),FCE("𞤩", 1, 2, 1),FCE("Ᏽ", 0, 2, 1), -FCE("ᏽ", 1, 2, 1),FCE("Ợ", 0, 2, 1),FCE("ợ", 1, 2, 1),FCE("ὢ", 0, 2, 1), -FCE("Ὢ", 1, 2, 1),FCE("Ẓ", 0, 2, 1),FCE("ẓ", 1, 2, 1),FCE("Ǖ", 0, 2, 1), -FCE("ǖ", 1, 2, 1),FCE("Ⰶ", 0, 2, 1),FCE("ⰶ", 1, 2, 1),FCE("𐲋", 0, 2, 1), -FCE("𐳋", 1, 2, 1),FCE("ὰ", 0, 2, 1),FCE("Ὰ", 1, 2, 1),FCE("Ϭ", 0, 2, 1), -FCE("ϭ", 1, 2, 1),FCE("𞤕", 0, 2, 1),FCE("𞤷", 1, 2, 1),FCE("Ⅾ", 0, 2, 1), -FCE("ⅾ", 1, 2, 1),FCE("Ꮐ", 0, 2, 1),FCE("ꮐ", 1, 2, 1),FCE("Ỵ", 0, 2, 1), -FCE("ỵ", 1, 2, 1),FCE("ᾲ", 0, 2, 1),FCE("ὰι", 1, 2, 2),FCE("Z", 0, 2, 1), -FCE("z", 1, 2, 1),FCE("𑢼", 0, 2, 1),FCE("𑣜", 1, 2, 1),FCE("Ҫ", 0, 2, 1), -FCE("ҫ", 1, 2, 1),FCE("Ⅳ", 0, 2, 1),FCE("ⅳ", 1, 2, 1),FCE("Ḝ", 0, 2, 1), -FCE("ḝ", 1, 2, 1),FCE("Ꮘ", 0, 2, 1),FCE("ꮘ", 1, 2, 1),FCE("𑢯", 0, 2, 1), -FCE("𑣏", 1, 2, 1),FCE("ẚ", 0, 2, 1),FCE("aʾ", 1, 2, 2),FCE("𐕱", 0, 2, 1), -FCE("𐖘", 1, 2, 1),FCE("𐲧", 0, 2, 1),FCE("𐳧", 1, 2, 1),FCE("𐲘", 0, 2, 1), -FCE("𐳘", 1, 2, 1),FCE("Q", 0, 2, 1),FCE("q", 1, 2, 1),FCE("Ӳ", 0, 2, 1), -FCE("ӳ", 1, 2, 1),FCE("𐲪", 0, 2, 1),FCE("𐳪", 1, 2, 1),FCE("Ⴏ", 0, 2, 1), -FCE("ⴏ", 1, 2, 1),FCE("Ⲏ", 0, 2, 1),FCE("ⲏ", 1, 2, 1),FCE("Ⳅ", 0, 2, 1), -FCE("ⳅ", 1, 2, 1),FCE("Ḋ", 0, 2, 1),FCE("ḋ", 1, 2, 1),FCE("ﬕ", 0, 2, 1), -FCE("մի", 1, 2, 2),FCE("𖹐", 0, 2, 1),FCE("𖹰", 1, 2, 1),FCE("𐖎", 0, 2, 1), -FCE("𐖵", 1, 2, 1),FCE("𐐑", 0, 2, 1),FCE("𐐹", 1, 2, 1),FCE("𐐣", 0, 2, 1), -FCE("𐑋", 1, 2, 1),FCE("Ժ", 0, 2, 1),FCE("ժ", 1, 2, 1),FCE("Ṭ", 0, 2, 1), -FCE("ṭ", 1, 2, 1),FCE("𐒾", 0, 2, 1),FCE("𐓦", 1, 2, 1),FCE("𐐤", 0, 2, 1), -FCE("𐑌", 1, 2, 1),FCE("Ⴉ", 0, 2, 1),FCE("ⴉ", 1, 2, 1),FCE("Ⓜ", 0, 2, 1), -FCE("ⓜ", 1, 2, 1),FCE("𐲁", 0, 2, 1),FCE("𐳁", 1, 2, 1),FCE("Ꮌ", 0, 2, 1), -FCE("ꮌ", 1, 2, 1),FCE("Ѣ", 0, 3, 1),FCE("ѣ", 1, 3, 1),FCE("ᲇ", 2, 3, 1), -FCE("𑢦", 0, 2, 1),FCE("𑣆", 1, 2, 1),FCE("Ṋ", 0, 2, 1),FCE("ṋ", 1, 2, 1), -FCE("Ⅲ", 0, 2, 1),FCE("ⅲ", 1, 2, 1),FCE("Ổ", 0, 2, 1),FCE("ổ", 1, 2, 1), -FCE("Ⴊ", 0, 2, 1),FCE("ⴊ", 1, 2, 1),FCE("Ӭ", 0, 2, 1),FCE("ӭ", 1, 2, 1), -FCE("Ⰼ", 0, 2, 1),FCE("ⰼ", 1, 2, 1),FCE("Ꞛ", 0, 2, 1),FCE("ꞛ", 1, 2, 1), -FCE("Ӌ", 0, 2, 1),FCE("ӌ", 1, 2, 1),FCE("𐒽", 0, 2, 1),FCE("𐓥", 1, 2, 1), -FCE("Ͱ", 0, 2, 1),FCE("ͱ", 1, 2, 1),FCE("ῧ", 0, 2, 1),FCE("ῧ", 1, 2, 3), -FCE("𞤔", 0, 2, 1),FCE("𞤶", 1, 2, 1),FCE("Ϛ", 0, 2, 1),FCE("ϛ", 1, 2, 1), -FCE("ἵ", 0, 2, 1),FCE("Ἵ", 1, 2, 1),FCE("𖹑", 0, 2, 1),FCE("𖹱", 1, 2, 1), -FCE("Β", 0, 3, 1),FCE("β", 1, 3, 1),FCE("ϐ", 2, 3, 1),FCE("Ⲗ", 0, 2, 1), -FCE("ⲗ", 1, 2, 1),FCE("ᾥ", 0, 3, 1),FCE("ᾭ", 1, 3, 1),FCE("ὥι", 2, 3, 2), -FCE("Α", 0, 2, 1),FCE("α", 1, 2, 1),FCE("Դ", 0, 2, 1),FCE("դ", 1, 2, 1), -FCE("Л", 0, 2, 1),FCE("л", 1, 2, 1),FCE("Ꮯ", 0, 2, 1),FCE("ꮯ", 1, 2, 1), -FCE("Ⱜ", 0, 2, 1),FCE("ⱜ", 1, 2, 1),FCE("Ĥ", 0, 2, 1),FCE("ĥ", 1, 2, 1), -FCE("𐲢", 0, 2, 1),FCE("𐳢", 1, 2, 1),FCE("Ẍ", 0, 2, 1),FCE("ẍ", 1, 2, 1), -FCE("Ẵ", 0, 2, 1),FCE("ẵ", 1, 2, 1),FCE("Ŭ", 0, 2, 1),FCE("ŭ", 1, 2, 1), -FCE("Ḃ", 0, 2, 1),FCE("ḃ", 1, 2, 1),FCE("ƚ", 0, 2, 1),FCE("Ƚ", 1, 2, 1), -FCE("Ă", 0, 2, 1),FCE("ă", 1, 2, 1),FCE("ἔ", 0, 2, 1),FCE("Ἔ", 1, 2, 1), -FCE("H", 0, 2, 1),FCE("h", 1, 2, 1),FCE("𐲀", 0, 2, 1),FCE("𐳀", 1, 2, 1), -FCE("ხ", 0, 2, 1),FCE("Ხ", 1, 2, 1),FCE("ὕ", 0, 2, 1),FCE("Ὕ", 1, 2, 1), -FCE("Ꝼ", 0, 2, 1),FCE("ꝼ", 1, 2, 1),FCE("ῇ", 0, 2, 1),FCE("ῆι", 1, 2, 3), -FCE("Y", 0, 2, 1),FCE("y", 1, 2, 1),FCE("Ŋ", 0, 2, 1),FCE("ŋ", 1, 2, 1), -FCE("Ḥ", 0, 2, 1),FCE("ḥ", 1, 2, 1),FCE("Ꮍ", 0, 2, 1),FCE("ꮍ", 1, 2, 1), -FCE("Ⲽ", 0, 2, 1),FCE("ⲽ", 1, 2, 1),FCE("𐐍", 0, 2, 1),FCE("𐐵", 1, 2, 1), -FCE("𐖏", 0, 2, 1),FCE("𐖶", 1, 2, 1),FCE("𑢧", 0, 2, 1),FCE("𑣇", 1, 2, 1), -FCE("Ꙡ", 0, 2, 1),FCE("ꙡ", 1, 2, 1),FCE("Ԕ", 0, 2, 1),FCE("ԕ", 1, 2, 1), -FCE("Ԯ", 0, 2, 1),FCE("ԯ", 1, 2, 1),FCE("Ҥ", 0, 2, 1),FCE("ҥ", 1, 2, 1), -FCE("Ѐ", 0, 2, 1),FCE("ѐ", 1, 2, 1),FCE("𖹘", 0, 2, 1),FCE("𖹸", 1, 2, 1), -FCE("Ꙏ", 0, 2, 1),FCE("ꙏ", 1, 2, 1),FCE("N", 0, 2, 1),FCE("n", 1, 2, 1), -FCE("𐐌", 0, 2, 1),FCE("𐐴", 1, 2, 1),FCE("Û", 0, 2, 1),FCE("û", 1, 2, 1), -FCE("Ǎ", 0, 2, 1),FCE("ǎ", 1, 2, 1),FCE("შ", 0, 2, 1),FCE("Შ", 1, 2, 1), -FCE("Տ", 0, 2, 1),FCE("տ", 1, 2, 1),FCE("Ꜹ", 0, 2, 1),FCE("ꜹ", 1, 2, 1), -FCE("𖹟", 0, 2, 1),FCE("𖹿", 1, 2, 1),FCE("ᾦ", 0, 3, 1),FCE("ᾮ", 1, 3, 1), -FCE("ὦι", 2, 3, 2),FCE("𞤏", 0, 2, 1),FCE("𞤱", 1, 2, 1),FCE("Ⰷ", 0, 2, 1), -FCE("ⰷ", 1, 2, 1),FCE("Ⴃ", 0, 2, 1),FCE("ⴃ", 1, 2, 1),FCE("Ꞡ", 0, 2, 1), -FCE("ꞡ", 1, 2, 1),FCE("С", 0, 3, 1),FCE("с", 1, 3, 1),FCE("ᲃ", 2, 3, 1), -FCE("Ꚁ", 0, 2, 1),FCE("ꚁ", 1, 2, 1),FCE("ʂ", 0, 2, 1),FCE("Ʂ", 1, 2, 1), -FCE("ᵹ", 0, 2, 1),FCE("Ᵹ", 1, 2, 1),FCE("Ⓥ", 0, 2, 1),FCE("ⓥ", 1, 2, 1), -FCE("Ё", 0, 2, 1),FCE("ё", 1, 2, 1),FCE("Ꝙ", 0, 2, 1),FCE("ꝙ", 1, 2, 1), -FCE("X", 0, 2, 1),FCE("x", 1, 2, 1),FCE("Ɠ", 0, 2, 1),FCE("ɠ", 1, 2, 1), -FCE("𐲡", 0, 2, 1),FCE("𐳡", 1, 2, 1),FCE("Վ", 0, 2, 1),FCE("վ", 1, 2, 1), -FCE("Ɔ", 0, 2, 1),FCE("ɔ", 1, 2, 1),FCE("Ꮬ", 0, 2, 1),FCE("ꮬ", 1, 2, 1), -FCE("Ⓗ", 0, 2, 1),FCE("ⓗ", 1, 2, 1),FCE("Ƴ", 0, 2, 1),FCE("ƴ", 1, 2, 1), -FCE("Ꚗ", 0, 2, 1),FCE("ꚗ", 1, 2, 1),FCE("Ȗ", 0, 2, 1),FCE("ȗ", 1, 2, 1), -FCE("Ỏ", 0, 2, 1),FCE("ỏ", 1, 2, 1),FCE("Ⅸ", 0, 2, 1),FCE("ⅸ", 1, 2, 1), -FCE("ῆ", 0, 2, 1),FCE("ῆ", 1, 2, 2),FCE("Ⱂ", 0, 2, 1),FCE("ⱂ", 1, 2, 1), -FCE("Ⱟ", 0, 2, 1),FCE("ⱟ", 1, 2, 1),FCE("𞤎", 0, 2, 1),FCE("𞤰", 1, 2, 1), -FCE("𐲫", 0, 2, 1),FCE("𐳫", 1, 2, 1),FCE("Ẇ", 0, 2, 1),FCE("ẇ", 1, 2, 1), -FCE("В", 0, 3, 1),FCE("в", 1, 3, 1),FCE("ᲀ", 2, 3, 1),FCE("Ꮦ", 0, 2, 1), -FCE("ꮦ", 1, 2, 1),FCE("Ẻ", 0, 2, 1),FCE("ẻ", 1, 2, 1),FCE("𞤛", 0, 2, 1), -FCE("𞤽", 1, 2, 1),FCE("𐐚", 0, 2, 1),FCE("𐑂", 1, 2, 1),FCE("Ữ", 0, 2, 1), -FCE("ữ", 1, 2, 1),FCE("Q", 0, 2, 1),FCE("q", 1, 2, 1),FCE("Ꞽ", 0, 2, 1), -FCE("ꞽ", 1, 2, 1),FCE("Ǜ", 0, 2, 1),FCE("ǜ", 1, 2, 1),FCE("Ʀ", 0, 2, 1), -FCE("ʀ", 1, 2, 1),FCE("ἇ", 0, 2, 1),FCE("Ἇ", 1, 2, 1),FCE("𑢽", 0, 2, 1), -FCE("𑣝", 1, 2, 1),FCE("È", 0, 2, 1),FCE("è", 1, 2, 1),FCE("Ӓ", 0, 2, 1), -FCE("ӓ", 1, 2, 1),FCE("ს", 0, 2, 1),FCE("Ს", 1, 2, 1),FCE("Ꮇ", 0, 2, 1), -FCE("ꮇ", 1, 2, 1),FCE("𐖅", 0, 2, 1),FCE("𐖬", 1, 2, 1),FCE("𖹋", 0, 2, 1), -FCE("𖹫", 1, 2, 1),FCE("Ų", 0, 2, 1),FCE("ų", 1, 2, 1),FCE("Ҟ", 0, 2, 1), -FCE("ҟ", 1, 2, 1),FCE("Ӧ", 0, 2, 1),FCE("ӧ", 1, 2, 1),FCE("Ⴐ", 0, 2, 1), -FCE("ⴐ", 1, 2, 1),FCE("ẙ", 0, 2, 1),FCE("ẙ", 1, 2, 2),FCE("Ǯ", 0, 2, 1), -FCE("ǯ", 1, 2, 1),FCE("Ⲝ", 0, 2, 1),FCE("ⲝ", 1, 2, 1),FCE("𐒴", 0, 2, 1), -FCE("𐓜", 1, 2, 1),FCE("𐲇", 0, 2, 1),FCE("𐳇", 1, 2, 1),FCE("Ꮊ", 0, 2, 1), -FCE("ꮊ", 1, 2, 1),FCE("Ḑ", 0, 2, 1),FCE("ḑ", 1, 2, 1),FCE("Ȱ", 0, 2, 1), -FCE("ȱ", 1, 2, 1),FCE("Ш", 0, 2, 1),FCE("ш", 1, 2, 1),FCE("Ⳑ", 0, 2, 1), -FCE("ⳑ", 1, 2, 1),FCE("𑢠", 0, 2, 1),FCE("𑣀", 1, 2, 1),FCE("Ϡ", 0, 2, 1), -FCE("ϡ", 1, 2, 1),FCE("ῴ", 0, 2, 1),FCE("ώι", 1, 2, 2),FCE("Ꞁ", 0, 2, 1), -FCE("ꞁ", 1, 2, 1),FCE("ჵ", 0, 2, 1),FCE("Ჵ", 1, 2, 1),FCE("Ի", 0, 2, 1), -FCE("ի", 1, 2, 1),FCE("Õ", 0, 2, 1),FCE("õ", 1, 2, 1),FCE("𐖈", 0, 2, 1), -FCE("𐖯", 1, 2, 1),FCE("Д", 0, 3, 1),FCE("д", 1, 3, 1),FCE("ᲁ", 2, 3, 1), -FCE("ᾤ", 0, 3, 1),FCE("ᾬ", 1, 3, 1),FCE("ὤι", 2, 3, 2),FCE("Ī", 0, 2, 1), -FCE("ī", 1, 2, 1),FCE("R", 0, 2, 1),FCE("r", 1, 2, 1),FCE("Ⓑ", 0, 2, 1), -FCE("ⓑ", 1, 2, 1),FCE("𞤈", 0, 2, 1),FCE("𞤪", 1, 2, 1),FCE("Θ", 0, 4, 1), -FCE("θ", 1, 4, 1),FCE("ϑ", 2, 4, 1),FCE("ϴ", 3, 4, 1),FCE("Ȃ", 0, 2, 1), -FCE("ȃ", 1, 2, 1),FCE("ᾅ", 0, 3, 1),FCE("ᾍ", 1, 3, 1),FCE("ἅι", 2, 3, 2), -FCE("Ѱ", 0, 2, 1),FCE("ѱ", 1, 2, 1),FCE("ɱ", 0, 2, 1),FCE("Ɱ", 1, 2, 1), -FCE("Ⱋ", 0, 2, 1),FCE("ⱋ", 1, 2, 1),FCE("ffi", 0, 2, 1),FCE("ffi", 1, 2, 3), -FCE("Ҋ", 0, 2, 1),FCE("ҋ", 1, 2, 1),FCE("Ꝓ", 0, 2, 1),FCE("ꝓ", 1, 2, 1), -FCE("E", 0, 2, 1),FCE("e", 1, 2, 1),FCE("Ї", 0, 2, 1),FCE("ї", 1, 2, 1), -FCE("Á", 0, 2, 1),FCE("á", 1, 2, 1),FCE("Ṅ", 0, 2, 1),FCE("ṅ", 1, 2, 1), -FCE("ᾗ", 0, 3, 1),FCE("ᾟ", 1, 3, 1),FCE("ἧι", 2, 3, 2),FCE("Ո", 0, 2, 1), -FCE("ո", 1, 2, 1),FCE("Ȝ", 0, 2, 1),FCE("ȝ", 1, 2, 1),FCE("Ꮵ", 0, 2, 1), -FCE("ꮵ", 1, 2, 1),FCE("Ԛ", 0, 2, 1),FCE("ԛ", 1, 2, 1),FCE("Ⲷ", 0, 2, 1), -FCE("ⲷ", 1, 2, 1),FCE("Ꙕ", 0, 2, 1),FCE("ꙕ", 1, 2, 1),FCE("𐐃", 0, 2, 1), -FCE("𐐫", 1, 2, 1),FCE("Ṳ", 0, 2, 1),FCE("ṳ", 1, 2, 1),FCE("ე", 0, 2, 1), -FCE("Ე", 1, 2, 1),FCE("𐓁", 0, 2, 1),FCE("𐓩", 1, 2, 1),FCE("𐲊", 0, 2, 1), -FCE("𐳊", 1, 2, 1),FCE("Ḫ", 0, 2, 1),FCE("ḫ", 1, 2, 1),FCE("Ѣ", 0, 3, 1), -FCE("ѣ", 1, 3, 1),FCE("ᲇ", 2, 3, 1),FCE("ὶ", 0, 2, 1),FCE("Ὶ", 1, 2, 1), -FCE("S", 0, 3, 1),FCE("s", 1, 3, 1),FCE("ſ", 2, 3, 1),FCE("Ⱖ", 0, 2, 1), -FCE("ⱖ", 1, 2, 1),FCE("Ꭰ", 0, 2, 1),FCE("ꭰ", 1, 2, 1),FCE("Ϻ", 0, 2, 1), -FCE("ϻ", 1, 2, 1),FCE("Ӆ", 0, 2, 1),FCE("ӆ", 1, 2, 1),FCE("ᾒ", 0, 3, 1), -FCE("ᾚ", 1, 3, 1),FCE("ἢι", 2, 3, 2),FCE("Օ", 0, 2, 1),FCE("օ", 1, 2, 1), -FCE("Ꮸ", 0, 2, 1),FCE("ꮸ", 1, 2, 1),FCE("LJ", 0, 3, 1),FCE("Lj", 1, 3, 1), -FCE("lj", 2, 3, 1),FCE("ὂ", 0, 2, 1),FCE("Ὂ", 1, 2, 1),FCE("ὧ", 0, 2, 1), -FCE("Ὧ", 1, 2, 1),FCE("𐕼", 0, 2, 1),FCE("𐖣", 1, 2, 1),FCE("Ꞵ", 0, 2, 1), -FCE("ꞵ", 1, 2, 1),FCE("Ꚙ", 0, 2, 1),FCE("ꚙ", 1, 2, 1),FCE("𞤄", 0, 2, 1), -FCE("𞤦", 1, 2, 1),FCE("Ќ", 0, 2, 1),FCE("ќ", 1, 2, 1),FCE("ლ", 0, 2, 1), -FCE("Ლ", 1, 2, 1),FCE("ῖ", 0, 2, 1),FCE("ῖ", 1, 2, 2),FCE("Ð", 0, 2, 1), -FCE("ð", 1, 2, 1),FCE("𖹆", 0, 2, 1),FCE("𖹦", 1, 2, 1),FCE("Ể", 0, 2, 1), -FCE("ể", 1, 2, 1),FCE("Ǥ", 0, 2, 1),FCE("ǥ", 1, 2, 1),FCE("D", 0, 2, 1), -FCE("d", 1, 2, 1),FCE("Ž", 0, 2, 1),FCE("ž", 1, 2, 1),FCE("ἡ", 0, 2, 1), -FCE("Ἡ", 1, 2, 1),FCE("Y", 0, 2, 1),FCE("y", 1, 2, 1),FCE("Ꭼ", 0, 2, 1), -FCE("ꭼ", 1, 2, 1),FCE("և", 0, 2, 1),FCE("եւ", 1, 2, 2),FCE("ἀ", 0, 2, 1), -FCE("Ἀ", 1, 2, 1),FCE("Υ", 0, 2, 1),FCE("υ", 1, 2, 1),FCE("Ř", 0, 2, 1), -FCE("ř", 1, 2, 1),FCE("𐓏", 0, 2, 1),FCE("𐓷", 1, 2, 1),FCE("Ḻ", 0, 2, 1), -FCE("ḻ", 1, 2, 1),FCE("Ꜭ", 0, 2, 1),FCE("ꜭ", 1, 2, 1),FCE("𑢷", 0, 2, 1), -FCE("𑣗", 1, 2, 1),FCE("Ē", 0, 2, 1),FCE("ē", 1, 2, 1),FCE("Ḷ", 0, 2, 1), -FCE("ḷ", 1, 2, 1),FCE("𖹎", 0, 2, 1),FCE("𖹮", 1, 2, 1),FCE("ώ", 0, 2, 1), -FCE("Ώ", 1, 2, 1),FCE("Ҕ", 0, 2, 1),FCE("ҕ", 1, 2, 1),FCE("Ẁ", 0, 2, 1), -FCE("ẁ", 1, 2, 1),FCE("Ė", 0, 2, 1),FCE("ė", 1, 2, 1),FCE("Э", 0, 2, 1), -FCE("э", 1, 2, 1),FCE("Ᏺ", 0, 2, 1),FCE("ᏺ", 1, 2, 1),FCE("Ź", 0, 2, 1), -FCE("ź", 1, 2, 1),FCE("Ӛ", 0, 2, 1),FCE("ӛ", 1, 2, 1),FCE("Ⲩ", 0, 2, 1), -FCE("ⲩ", 1, 2, 1),FCE("Ì", 0, 2, 1),FCE("ì", 1, 2, 1),FCE("Ƣ", 0, 2, 1), -FCE("ƣ", 1, 2, 1),FCE("Ρ", 0, 3, 1),FCE("ρ", 1, 3, 1),FCE("ϱ", 2, 3, 1), -FCE("Ṽ", 0, 2, 1),FCE("ṽ", 1, 2, 1),FCE("Ꮟ", 0, 2, 1),FCE("ꮟ", 1, 2, 1), -FCE("𐐒", 0, 2, 1),FCE("𐐺", 1, 2, 1),FCE("Ԡ", 0, 2, 1),FCE("ԡ", 1, 2, 1), -FCE("Ⱌ", 0, 2, 1),FCE("ⱌ", 1, 2, 1),FCE("ɫ", 0, 2, 1),FCE("Ɫ", 1, 2, 1), -FCE("ﬔ", 0, 2, 1),FCE("մե", 1, 2, 2),FCE("Ŝ", 0, 2, 1),FCE("ŝ", 1, 2, 1), -FCE("Ꙓ", 0, 2, 1),FCE("ꙓ", 1, 2, 1),FCE("F", 0, 2, 1),FCE("f", 1, 2, 1), -FCE("Ǩ", 0, 2, 1),FCE("ǩ", 1, 2, 1),FCE("Ⴖ", 0, 2, 1),FCE("ⴖ", 1, 2, 1), -FCE("Ꙗ", 0, 2, 1),FCE("ꙗ", 1, 2, 1),FCE("Ԝ", 0, 2, 1),FCE("ԝ", 1, 2, 1), -FCE("Ꮓ", 0, 2, 1),FCE("ꮓ", 1, 2, 1),FCE("𐖑", 0, 2, 1),FCE("𐖸", 1, 2, 1), -FCE("𐓋", 0, 2, 1),FCE("𐓳", 1, 2, 1),FCE("Ệ", 0, 2, 1),FCE("ệ", 1, 2, 1), -FCE("Ǡ", 0, 2, 1),FCE("ǡ", 1, 2, 1),FCE("ὣ", 0, 2, 1),FCE("Ὣ", 1, 2, 1), -FCE("Ⰱ", 0, 2, 1),FCE("ⰱ", 1, 2, 1),FCE("𞤀", 0, 2, 1),FCE("𞤢", 1, 2, 1), -FCE("Ṹ", 0, 2, 1),FCE("ṹ", 1, 2, 1),FCE("Ⓨ", 0, 2, 1),FCE("ⓨ", 1, 2, 1), -FCE("Ꝫ", 0, 2, 1),FCE("ꝫ", 1, 2, 1),FCE("Ě", 0, 2, 1),FCE("ě", 1, 2, 1), -FCE("Щ", 0, 2, 1),FCE("щ", 1, 2, 1),FCE("ᾄ", 0, 3, 1),FCE("ᾌ", 1, 3, 1), -FCE("ἄι", 2, 3, 2),FCE("ზ", 0, 2, 1),FCE("Ზ", 1, 2, 1),FCE("ᾱ", 0, 2, 1), -FCE("Ᾱ", 1, 2, 1),FCE("Ꝣ", 0, 2, 1),FCE("ꝣ", 1, 2, 1),FCE("𐲲", 0, 2, 1), -FCE("𐳲", 1, 2, 1),FCE("Ⱐ", 0, 2, 1),FCE("ⱐ", 1, 2, 1),FCE("Ⴞ", 0, 2, 1), -FCE("ⴞ", 1, 2, 1),FCE("𐐞", 0, 2, 1),FCE("𐑆", 1, 2, 1),FCE("ῷ", 0, 2, 1), -FCE("ῶι", 1, 2, 3),FCE("Ӣ", 0, 2, 1),FCE("ӣ", 1, 2, 1),FCE("ᾐ", 0, 3, 1), -FCE("ᾘ", 1, 3, 1),FCE("ἠι", 2, 3, 2),FCE("Ӟ", 0, 2, 1),FCE("ӟ", 1, 2, 1), -FCE("ᾔ", 0, 3, 1),FCE("ᾜ", 1, 3, 1),FCE("ἤι", 2, 3, 2),FCE("Ձ", 0, 2, 1), -FCE("ձ", 1, 2, 1),FCE("Յ", 0, 2, 1),FCE("յ", 1, 2, 1),FCE("ἥ", 0, 2, 1), -FCE("Ἥ", 1, 2, 1),FCE("Ŕ", 0, 2, 1),FCE("ŕ", 1, 2, 1),FCE("Ⱔ", 0, 2, 1), -FCE("ⱔ", 1, 2, 1),FCE("Ꮺ", 0, 2, 1),FCE("ꮺ", 1, 2, 1),FCE("Ɓ", 0, 2, 1), -FCE("ɓ", 1, 2, 1),FCE("Σ", 0, 3, 1),FCE("ς", 1, 3, 1),FCE("σ", 2, 3, 1), -FCE("𑢳", 0, 2, 1),FCE("𑣓", 1, 2, 1),FCE("Ⴚ", 0, 2, 1),FCE("ⴚ", 1, 2, 1), -FCE("ƀ", 0, 2, 1),FCE("Ƀ", 1, 2, 1),FCE("Ḿ", 0, 2, 1),FCE("ḿ", 1, 2, 1), -FCE("ჿ", 0, 2, 1),FCE("Ჿ", 1, 2, 1),FCE("ῳ", 0, 3, 1),FCE("ῼ", 1, 3, 1), -FCE("ωι", 2, 3, 2),FCE("გ", 0, 2, 1),FCE("Გ", 1, 2, 1),FCE("Ꝯ", 0, 2, 1), -FCE("ꝯ", 1, 2, 1),FCE("𐲈", 0, 2, 1),FCE("𐳈", 1, 2, 1),FCE("ᲈ", 0, 3, 1), -FCE("Ꙋ", 1, 3, 1),FCE("ꙋ", 2, 3, 1),FCE("Ⴒ", 0, 2, 1),FCE("ⴒ", 1, 2, 1), -FCE("Ꮗ", 0, 2, 1),FCE("ꮗ", 1, 2, 1),FCE("Ԙ", 0, 2, 1),FCE("ԙ", 1, 2, 1), -FCE("Ꝧ", 0, 2, 1),FCE("ꝧ", 1, 2, 1),FCE("Ǭ", 0, 2, 1),FCE("ǭ", 1, 2, 1), -FCE("𐓃", 0, 2, 1),FCE("𐓫", 1, 2, 1),FCE("𐕴", 0, 2, 1),FCE("𐖛", 1, 2, 1), -FCE("Ꮾ", 0, 2, 1),FCE("ꮾ", 1, 2, 1),FCE("𞤜", 0, 2, 1),FCE("𞤾", 1, 2, 1), -FCE("ტ", 0, 2, 1),FCE("Ტ", 1, 2, 1),FCE("Ⰵ", 0, 2, 1),FCE("ⰵ", 1, 2, 1), -FCE("Ҡ", 0, 2, 1),FCE("ҡ", 1, 2, 1),FCE("Ṃ", 0, 2, 1),FCE("ṃ", 1, 2, 1), -FCE("Ꮄ", 0, 2, 1),FCE("ꮄ", 1, 2, 1),FCE("𑢿", 0, 2, 1),FCE("𑣟", 1, 2, 1), -FCE("Ő", 0, 2, 1),FCE("ő", 1, 2, 1),FCE("ὖ", 0, 2, 1),FCE("ὖ", 1, 2, 3), -FCE("Ⲱ", 0, 2, 1),FCE("ⲱ", 1, 2, 1),FCE("Ꭴ", 0, 2, 1),FCE("ꭴ", 1, 2, 1), -FCE("Ӂ", 0, 2, 1),FCE("ӂ", 1, 2, 1),FCE("NJ", 0, 3, 1),FCE("Nj", 1, 3, 1), -FCE("nj", 2, 3, 1),FCE("L", 0, 2, 1),FCE("l", 1, 2, 1),FCE("𐓇", 0, 2, 1), -FCE("𐓯", 1, 2, 1),FCE("𖹚", 0, 2, 1),FCE("𖹺", 1, 2, 1),FCE("Ȣ", 0, 2, 1), -FCE("ȣ", 1, 2, 1),FCE("Ґ", 0, 2, 1),FCE("ґ", 1, 2, 1),FCE("Ⳳ", 0, 2, 1), -FCE("ⳳ", 1, 2, 1),FCE("𐖕", 0, 2, 1),FCE("𐖼", 1, 2, 1),FCE("Խ", 0, 2, 1), -FCE("խ", 1, 2, 1),FCE("Έ", 0, 2, 1),FCE("έ", 1, 2, 1),FCE("Չ", 0, 2, 1), -FCE("չ", 1, 2, 1),FCE("Ꮲ", 0, 2, 1),FCE("ꮲ", 1, 2, 1),FCE("𖹊", 0, 2, 1), -FCE("𖹪", 1, 2, 1),FCE("Ỽ", 0, 2, 1),FCE("ỽ", 1, 2, 1),FCE("ᾐ", 0, 3, 1), -FCE("ᾘ", 1, 3, 1),FCE("ἠι", 2, 3, 2),FCE("Ӗ", 0, 2, 1),FCE("ӗ", 1, 2, 1), -FCE("Ꞹ", 0, 2, 1),FCE("ꞹ", 1, 2, 1),FCE("Д", 0, 3, 1),FCE("д", 1, 3, 1), -FCE("ᲁ", 2, 3, 1),FCE("𐲭", 0, 2, 1),FCE("𐳭", 1, 2, 1),FCE("ჷ", 0, 2, 1), -FCE("Ჷ", 1, 2, 1),FCE("𖹕", 0, 2, 1),FCE("𖹵", 1, 2, 1),FCE("Ꜩ", 0, 2, 1), -FCE("ꜩ", 1, 2, 1),FCE("Ḁ", 0, 2, 1),FCE("ḁ", 1, 2, 1),FCE("Ȳ", 0, 2, 1), -FCE("ȳ", 1, 2, 1),FCE("Ⴅ", 0, 2, 1),FCE("ⴅ", 1, 2, 1),FCE("ἕ", 0, 2, 1), -FCE("Ἕ", 1, 2, 1),FCE("Ω", 0, 3, 1),FCE("ω", 1, 3, 1),FCE("Ω", 2, 3, 1), -FCE("Ļ", 0, 2, 1),FCE("ļ", 1, 2, 1),FCE("Ј", 0, 2, 1),FCE("ј", 1, 2, 1), -FCE("Ü", 0, 2, 1),FCE("ü", 1, 2, 1),FCE("Ế", 0, 2, 1),FCE("ế", 1, 2, 1), -FCE("Ⱈ", 0, 2, 1),FCE("ⱈ", 1, 2, 1),FCE("Ꞩ", 0, 2, 1),FCE("ꞩ", 1, 2, 1), -FCE("Ⅻ", 0, 2, 1),FCE("ⅻ", 1, 2, 1),FCE("Ⱀ", 0, 2, 1),FCE("ⱀ", 1, 2, 1), -FCE("Ⳟ", 0, 2, 1),FCE("ⳟ", 1, 2, 1),FCE("ʞ", 0, 2, 1),FCE("Ʞ", 1, 2, 1), -FCE("Ô", 0, 2, 1),FCE("ô", 1, 2, 1),FCE("ჯ", 0, 2, 1),FCE("Ჯ", 1, 2, 1), -FCE("Ց", 0, 2, 1),FCE("ց", 1, 2, 1),FCE("Ꮪ", 0, 2, 1),FCE("ꮪ", 1, 2, 1), -FCE("Ե", 0, 2, 1),FCE("ե", 1, 2, 1),FCE("ᾠ", 0, 3, 1),FCE("ᾨ", 1, 3, 1), -FCE("ὠι", 2, 3, 2),FCE("Ⓠ", 0, 2, 1),FCE("ⓠ", 1, 2, 1),FCE("А", 0, 2, 1), -FCE("а", 1, 2, 1),FCE("Ặ", 0, 2, 1),FCE("ặ", 1, 2, 1),FCE("ᾄ", 0, 3, 1), -FCE("ᾌ", 1, 3, 1),FCE("ἄι", 2, 3, 2),FCE("𐐖", 0, 2, 1),FCE("𐐾", 1, 2, 1), -FCE("𖹂", 0, 2, 1),FCE("𖹢", 1, 2, 1),FCE("Ť", 0, 2, 1),FCE("ť", 1, 2, 1), -FCE("Ⲡ", 0, 2, 1),FCE("ⲡ", 1, 2, 1),FCE("Ḯ", 0, 2, 1),FCE("ḯ", 1, 2, 1), -FCE("𐲕", 0, 2, 1),FCE("𐳕", 1, 2, 1),FCE("Ҙ", 0, 2, 1),FCE("ҙ", 1, 2, 1), -FCE("Ċ", 0, 2, 1),FCE("ċ", 1, 2, 1),FCE("𐲝", 0, 2, 1),FCE("𐳝", 1, 2, 1), -FCE("𑢪", 0, 2, 1),FCE("𑣊", 1, 2, 1),FCE("Ẉ", 0, 2, 1),FCE("ẉ", 1, 2, 1), -FCE("Ԩ", 0, 2, 1),FCE("ԩ", 1, 2, 1),FCE("Ꮧ", 0, 2, 1),FCE("ꮧ", 1, 2, 1), -FCE("Ꙛ", 0, 2, 1),FCE("ꙛ", 1, 2, 1),FCE("Ȫ", 0, 2, 1),FCE("ȫ", 1, 2, 1), -FCE("ᾥ", 0, 3, 1),FCE("ᾭ", 1, 3, 1),FCE("ὥι", 2, 3, 2),FCE("𐒳", 0, 2, 1), -FCE("𐓛", 1, 2, 1),FCE("𞤌", 0, 2, 1),FCE("𞤮", 1, 2, 1),FCE("Ⓕ", 0, 2, 1), -FCE("ⓕ", 1, 2, 1),FCE("Ǵ", 0, 2, 1),FCE("ǵ", 1, 2, 1),FCE("Ꚑ", 0, 2, 1), -FCE("ꚑ", 1, 2, 1),FCE("I", 0, 2, 1),FCE("i", 1, 2, 1),FCE("Ⱶ", 0, 2, 1), -FCE("ⱶ", 1, 2, 1),FCE("Ⲹ", 0, 2, 1),FCE("ⲹ", 1, 2, 1),FCE("𐐁", 0, 2, 1), -FCE("𐐩", 1, 2, 1),FCE("Ⰽ", 0, 2, 1),FCE("ⰽ", 1, 2, 1),FCE("𐓐", 0, 2, 1), -FCE("𐓸", 1, 2, 1),FCE("𞤓", 0, 2, 1),FCE("𞤵", 1, 2, 1),FCE("Ư", 0, 2, 1), -FCE("ư", 1, 2, 1),FCE("Ꟈ", 0, 2, 1),FCE("ꟈ", 1, 2, 1),FCE("Ꮏ", 0, 2, 1), -FCE("ꮏ", 1, 2, 1),FCE("𐐂", 0, 2, 1),FCE("𐐪", 1, 2, 1),FCE("ც", 0, 2, 1), -FCE("Ც", 1, 2, 1),FCE("𐒿", 0, 2, 1),FCE("𐓧", 1, 2, 1),FCE("𐖍", 0, 2, 1), -FCE("𐖴", 1, 2, 1),FCE("Ⅴ", 0, 2, 1),FCE("ⅴ", 1, 2, 1),FCE("Ǝ", 0, 2, 1), -FCE("ǝ", 1, 2, 1),FCE("Ǔ", 0, 2, 1),FCE("ǔ", 1, 2, 1),FCE("ἐ", 0, 2, 1), -FCE("Ἐ", 1, 2, 1),FCE("ὗ", 0, 2, 1),FCE("Ὗ", 1, 2, 1),FCE("Ồ", 0, 2, 1), -FCE("ồ", 1, 2, 1),FCE("J", 0, 2, 1),FCE("j", 1, 2, 1),FCE("Ḅ", 0, 2, 1), -FCE("ḅ", 1, 2, 1),FCE("Ӯ", 0, 2, 1),FCE("ӯ", 1, 2, 1),FCE("Ⲕ", 0, 2, 1), -FCE("ⲕ", 1, 2, 1),FCE("À", 0, 2, 1),FCE("à", 1, 2, 1),FCE("ῦ", 0, 2, 1), -FCE("ῦ", 1, 2, 2),FCE("Ꮫ", 0, 2, 1),FCE("ꮫ", 1, 2, 1),FCE("Ʋ", 0, 2, 1), -FCE("ʋ", 1, 2, 1),FCE("𐐦", 0, 2, 1),FCE("𐑎", 1, 2, 1),FCE("Ꙣ", 0, 2, 1), -FCE("ꙣ", 1, 2, 1),FCE("T", 0, 2, 1),FCE("t", 1, 2, 1),FCE("Ֆ", 0, 2, 1), -FCE("ֆ", 1, 2, 1),FCE("Ъ", 0, 3, 1),FCE("ъ", 1, 3, 1),FCE("ᲆ", 2, 3, 1), -FCE("𐐢", 0, 2, 1),FCE("𐑊", 1, 2, 1),FCE("ἶ", 0, 2, 1),FCE("Ἶ", 1, 2, 1), -FCE("ᾡ", 0, 3, 1),FCE("ᾩ", 1, 3, 1),FCE("ὡι", 2, 3, 2),FCE("Ӎ", 0, 2, 1), -FCE("ӎ", 1, 2, 1),FCE("𐒻", 0, 2, 1),FCE("𐓣", 1, 2, 1),FCE("Ȼ", 0, 2, 1), -FCE("ȼ", 1, 2, 1),FCE("Ǐ", 0, 2, 1),FCE("ǐ", 1, 2, 1),FCE("Ԍ", 0, 2, 1), -FCE("ԍ", 1, 2, 1),FCE("Ꙇ", 0, 2, 1),FCE("ꙇ", 1, 2, 1),FCE("Ṇ", 0, 2, 1), -FCE("ṇ", 1, 2, 1),FCE("𐲦", 0, 2, 1),FCE("𐳦", 1, 2, 1),FCE("Ꝺ", 0, 2, 1), -FCE("ꝺ", 1, 2, 1),FCE("V", 0, 2, 1),FCE("v", 1, 2, 1),FCE("𑢢", 0, 2, 1), -FCE("𑣂", 1, 2, 1),FCE("Ӫ", 0, 2, 1),FCE("ӫ", 1, 2, 1),FCE("Н", 0, 2, 1), -FCE("н", 1, 2, 1),FCE("ꞔ", 0, 2, 1),FCE("Ꞔ", 1, 2, 1),FCE("Ꚉ", 0, 2, 1), -FCE("ꚉ", 1, 2, 1),FCE("Ẳ", 0, 2, 1),FCE("ẳ", 1, 2, 1),FCE("Ⅰ", 0, 2, 1), -FCE("ⅰ", 1, 2, 1),FCE("Ỗ", 0, 2, 1),FCE("ỗ", 1, 2, 1),FCE("Ⓝ", 0, 2, 1), -FCE("ⓝ", 1, 2, 1),FCE("𖹞", 0, 2, 1),FCE("𖹾", 1, 2, 1),FCE("Ҭ", 0, 2, 1), -FCE("ҭ", 1, 2, 1),FCE("𖹒", 0, 2, 1),FCE("𖹲", 1, 2, 1),FCE("Ⱦ", 0, 2, 1), -FCE("ⱦ", 1, 2, 1),FCE("Ⲵ", 0, 2, 1),FCE("ⲵ", 1, 2, 1),FCE("M", 0, 2, 1), -FCE("m", 1, 2, 1),FCE("Ō", 0, 2, 1),FCE("ō", 1, 2, 1),FCE("Ḣ", 0, 2, 1), -FCE("ḣ", 1, 2, 1),FCE("Ꮋ", 0, 2, 1),FCE("ꮋ", 1, 2, 1),FCE("Ń", 0, 2, 1), -FCE("ń", 1, 2, 1),FCE("ffl", 0, 2, 1),FCE("ffl", 1, 2, 3),FCE("𐖁", 0, 2, 1), -FCE("𐖨", 1, 2, 1),FCE("Ű", 0, 2, 1),FCE("ű", 1, 2, 1),FCE("Ẕ", 0, 2, 1), -FCE("ẕ", 1, 2, 1),FCE("ῂ", 0, 2, 1),FCE("ὴι", 1, 2, 2),FCE("Ⱘ", 0, 2, 1), -FCE("ⱘ", 1, 2, 1),FCE("𞤐", 0, 2, 1),FCE("𞤲", 1, 2, 1),FCE("𐐎", 0, 2, 1), -FCE("𐐶", 1, 2, 1),FCE("ᾃ", 0, 3, 1),FCE("ᾋ", 1, 3, 1),FCE("ἃι", 2, 3, 2), -FCE("Ꞙ", 0, 2, 1),FCE("ꞙ", 1, 2, 1),FCE("Ꮈ", 0, 2, 1),FCE("ꮈ", 1, 2, 1), -FCE("Ṱ", 0, 2, 1),FCE("ṱ", 1, 2, 1),FCE("Т", 0, 4, 1),FCE("т", 1, 4, 1), -FCE("ᲄ", 2, 4, 1),FCE("ᲅ", 3, 4, 1),FCE("𐲅", 0, 2, 1),FCE("𐳅", 1, 2, 1), -FCE("Ắ", 0, 2, 1),FCE("ắ", 1, 2, 1),FCE("Ģ", 0, 2, 1),FCE("ģ", 1, 2, 1), -FCE("𐒲", 0, 2, 1),FCE("𐓚", 1, 2, 1),FCE("𐲌", 0, 2, 1),FCE("𐳌", 1, 2, 1), -FCE("𐐅", 0, 2, 1),FCE("𐐭", 1, 2, 1),FCE("ᾇ", 0, 3, 1),FCE("ᾏ", 1, 3, 1), -FCE("ἇι", 2, 3, 2),FCE("Р", 0, 2, 1),FCE("р", 1, 2, 1),FCE("Ʈ", 0, 2, 1), -FCE("ʈ", 1, 2, 1),FCE("Ț", 0, 2, 1),FCE("ț", 1, 2, 1),FCE("Ό", 0, 2, 1), -FCE("ό", 1, 2, 1),FCE("ᾕ", 0, 3, 1),FCE("ᾝ", 1, 3, 1),FCE("ἥι", 2, 3, 2), -FCE("ͅ", 0, 4, 1),FCE("Ι", 1, 4, 1),FCE("ι", 2, 4, 1),FCE("ι", 3, 4, 1), -FCE("Ɗ", 0, 2, 1),FCE("ɗ", 1, 2, 1),FCE("ΐ", 0, 3, 1),FCE("ΐ", 1, 3, 1), -FCE("ΐ", 2, 3, 3),FCE("Ⴑ", 0, 2, 1),FCE("ⴑ", 1, 2, 1),FCE("Ğ", 0, 2, 1), -FCE("ğ", 1, 2, 1),FCE("Ḉ", 0, 2, 1),FCE("ḉ", 1, 2, 1),FCE("Ⲑ", 0, 2, 1), -FCE("ⲑ", 1, 2, 1),FCE("Ꟁ", 0, 2, 1),FCE("ꟁ", 1, 2, 1),FCE("Ꮷ", 0, 2, 1), -FCE("ꮷ", 1, 2, 1),FCE("𐖀", 0, 2, 1),FCE("𐖧", 1, 2, 1),FCE("М", 0, 2, 1), -FCE("м", 1, 2, 1),FCE("ſt", 0, 3, 1),FCE("st", 1, 3, 1),FCE("st", 2, 3, 2), -FCE("Ꞥ", 0, 2, 1),FCE("ꞥ", 1, 2, 1),FCE("Ṵ", 0, 2, 1),FCE("ṵ", 1, 2, 1), -FCE("Ⱄ", 0, 2, 1),FCE("ⱄ", 1, 2, 1),FCE("𞤍", 0, 2, 1),FCE("𞤯", 1, 2, 1), -FCE("Ꭵ", 0, 2, 1),FCE("ꭵ", 1, 2, 1),FCE("ჳ", 0, 2, 1),FCE("Ჳ", 1, 2, 1), -FCE("Ⓔ", 0, 2, 1),FCE("ⓔ", 1, 2, 1),FCE("Ŀ", 0, 2, 1),FCE("ŀ", 1, 2, 1), -FCE("Ν", 0, 2, 1),FCE("ν", 1, 2, 1),FCE("Ⳣ", 0, 2, 1),FCE("ⳣ", 1, 2, 1), -FCE("Ⴁ", 0, 2, 1),FCE("ⴁ", 1, 2, 1),FCE("Ԉ", 0, 2, 1),FCE("ԉ", 1, 2, 1), -FCE("M", 0, 2, 1),FCE("m", 1, 2, 1),FCE("Ή", 0, 2, 1),FCE("ή", 1, 2, 1), -FCE("Ҍ", 0, 2, 1),FCE("ҍ", 1, 2, 1),FCE("Ⰴ", 0, 2, 1),FCE("ⰴ", 1, 2, 1), -FCE("Ⅿ", 0, 2, 1),FCE("ⅿ", 1, 2, 1),FCE("Ұ", 0, 2, 1),FCE("ұ", 1, 2, 1), -FCE("Ⳓ", 0, 2, 1),FCE("ⳓ", 1, 2, 1),FCE("Ꜵ", 0, 2, 1),FCE("ꜵ", 1, 2, 1), -FCE("fi", 0, 2, 1),FCE("fi", 1, 2, 2),FCE("P", 0, 2, 1),FCE("p", 1, 2, 1), -FCE("Š", 0, 2, 1),FCE("š", 1, 2, 1),FCE("𐖄", 0, 2, 1),FCE("𐖫", 1, 2, 1), -FCE("Ḳ", 0, 2, 1),FCE("ḳ", 1, 2, 1),FCE("𐲩", 0, 2, 1),FCE("𐳩", 1, 2, 1), -FCE("Ȁ", 0, 2, 1),FCE("ȁ", 1, 2, 1),FCE("𑢫", 0, 2, 1),FCE("𑣋", 1, 2, 1), -FCE("Ꞇ", 0, 2, 1),FCE("ꞇ", 1, 2, 1),FCE("𑢻", 0, 2, 1),FCE("𑣛", 1, 2, 1), -FCE("𑢮", 0, 2, 1),FCE("𑣎", 1, 2, 1),FCE("Ȟ", 0, 2, 1),FCE("ȟ", 1, 2, 1), -FCE("Ϊ", 0, 2, 1),FCE("ϊ", 1, 2, 1),FCE("Ⴢ", 0, 2, 1),FCE("ⴢ", 1, 2, 1), -FCE("Ꮔ", 0, 2, 1),FCE("ꮔ", 1, 2, 1),FCE("Թ", 0, 2, 1),FCE("թ", 1, 2, 1), -FCE("Ꝋ", 0, 2, 1),FCE("ꝋ", 1, 2, 1),FCE("Ã", 0, 2, 1),FCE("ã", 1, 2, 1), -FCE("Ѯ", 0, 2, 1),FCE("ѯ", 1, 2, 1),FCE("Ս", 0, 2, 1),FCE("ս", 1, 2, 1), -FCE("ῢ", 0, 2, 1),FCE("ῢ", 1, 2, 3),FCE("უ", 0, 2, 1),FCE("Უ", 1, 2, 1), -FCE("ὒ", 0, 2, 1),FCE("ὒ", 1, 2, 3),FCE("Ϟ", 0, 2, 1),FCE("ϟ", 1, 2, 1), -FCE("Ⓤ", 0, 2, 1),FCE("ⓤ", 1, 2, 1),FCE("ͅ", 0, 4, 1),FCE("Ι", 1, 4, 1), -FCE("ι", 2, 4, 1),FCE("ι", 3, 4, 1),FCE("𐲙", 0, 2, 1),FCE("𐳙", 1, 2, 1), -FCE("Ꝛ", 0, 2, 1),FCE("ꝛ", 1, 2, 1),FCE("Й", 0, 2, 1),FCE("й", 1, 2, 1), -FCE("Ⰹ", 0, 2, 1),FCE("ⰹ", 1, 2, 1),FCE("ͽ", 0, 2, 1),FCE("Ͽ", 1, 2, 1), -FCE("ἦ", 0, 2, 1),FCE("Ἦ", 1, 2, 1),FCE("𑢲", 0, 2, 1),FCE("𑣒", 1, 2, 1), -FCE("Ↄ", 0, 2, 1),FCE("ↄ", 1, 2, 1),FCE("Ⱓ", 0, 2, 1),FCE("ⱓ", 1, 2, 1), -FCE("IJ", 0, 2, 1),FCE("ij", 1, 2, 1),FCE("Ṗ", 0, 2, 1),FCE("ṗ", 1, 2, 1), -FCE("Ⴎ", 0, 2, 1),FCE("ⴎ", 1, 2, 1),FCE("Ꝁ", 0, 2, 1),FCE("ꝁ", 1, 2, 1), -FCE("Ý", 0, 2, 1),FCE("ý", 1, 2, 1),FCE("ღ", 0, 2, 1),FCE("Ღ", 1, 2, 1), -FCE("Ṡ", 0, 3, 1),FCE("ṡ", 1, 3, 1),FCE("ẛ", 2, 3, 1),FCE("Ѹ", 0, 2, 1), -FCE("ѹ", 1, 2, 1),FCE("Ȯ", 0, 2, 1),FCE("ȯ", 1, 2, 1),FCE("ῶ", 0, 2, 1), -FCE("ῶ", 1, 2, 2),FCE("ῒ", 0, 2, 1),FCE("ῒ", 1, 2, 3),FCE("Ꚕ", 0, 2, 1), -FCE("ꚕ", 1, 2, 1),FCE("Ԭ", 0, 2, 1),FCE("ԭ", 1, 2, 1),FCE("𐕰", 0, 2, 1), -FCE("𐖗", 1, 2, 1),FCE("Ꙧ", 0, 2, 1),FCE("ꙧ", 1, 2, 1),FCE("ǰ", 0, 2, 1), -FCE("ǰ", 1, 2, 2),FCE("𐲖", 0, 2, 1),FCE("𐳖", 1, 2, 1),FCE("Ȋ", 0, 2, 1), -FCE("ȋ", 1, 2, 1),FCE("Ⓙ", 0, 2, 1),FCE("ⓙ", 1, 2, 1),FCE("Ꮛ", 0, 2, 1), -FCE("ꮛ", 1, 2, 1),FCE("𐲜", 0, 2, 1),FCE("𐳜", 1, 2, 1),FCE("О", 0, 3, 1), -FCE("о", 1, 3, 1),FCE("ᲂ", 2, 3, 1),FCE("Ẅ", 0, 2, 1),FCE("ẅ", 1, 2, 1), -FCE("Ự", 0, 2, 1),FCE("ự", 1, 2, 1),FCE("Ꭸ", 0, 2, 1),FCE("ꭸ", 1, 2, 1), -FCE("𖹙", 0, 2, 1),FCE("𖹹", 1, 2, 1),FCE("Ⲥ", 0, 2, 1),FCE("ⲥ", 1, 2, 1), -FCE("Ꜥ", 0, 2, 1),FCE("ꜥ", 1, 2, 1),FCE("Ҝ", 0, 2, 1),FCE("ҝ", 1, 2, 1), -FCE("Ď", 0, 2, 1),FCE("ď", 1, 2, 1),FCE("ᾤ", 0, 3, 1),FCE("ᾬ", 1, 3, 1), -FCE("ὤι", 2, 3, 2),FCE("𐓓", 0, 2, 1),FCE("𐓻", 1, 2, 1),FCE("𞤃", 0, 2, 1), -FCE("𞤥", 1, 2, 1),FCE("Ƒ", 0, 2, 1),FCE("ƒ", 1, 2, 1),FCE("ᾀ", 0, 3, 1), -FCE("ᾈ", 1, 3, 1),FCE("ἀι", 2, 3, 2),FCE("Ꮮ", 0, 2, 1),FCE("ꮮ", 1, 2, 1), -FCE("Π", 0, 3, 1),FCE("π", 1, 3, 1),FCE("ϖ", 2, 3, 1),FCE("Ꭽ", 0, 2, 1), -FCE("ꭽ", 1, 2, 1),FCE("Ȇ", 0, 2, 1),FCE("ȇ", 1, 2, 1),FCE("ὅ", 0, 2, 1), -FCE("Ὅ", 1, 2, 1),FCE("Ϫ", 0, 2, 1),FCE("ϫ", 1, 2, 1),FCE("Ⴛ", 0, 2, 1), -FCE("ⴛ", 1, 2, 1),FCE("Ѵ", 0, 2, 1),FCE("ѵ", 1, 2, 1),FCE("X", 0, 2, 1), -FCE("x", 1, 2, 1),FCE("Ӿ", 0, 2, 1),FCE("ӿ", 1, 2, 1),FCE("Ⲅ", 0, 2, 1), -FCE("ⲅ", 1, 2, 1),FCE("𐐓", 0, 2, 1),FCE("𐐻", 1, 2, 1),FCE("ῗ", 0, 2, 1), -FCE("ῗ", 1, 2, 3),FCE("Ṝ", 0, 2, 1),FCE("ṝ", 1, 2, 1),FCE("Ụ", 0, 2, 1), -FCE("ụ", 1, 2, 1),FCE("Ⳉ", 0, 2, 1),FCE("ⳉ", 1, 2, 1),FCE("Ⱏ", 0, 2, 1), -FCE("ⱏ", 1, 2, 1),FCE("Һ", 0, 2, 1),FCE("һ", 1, 2, 1),FCE("𐓎", 0, 2, 1), -FCE("𐓶", 1, 2, 1),FCE("𞤅", 0, 2, 1),FCE("𞤧", 1, 2, 1),FCE("Ñ", 0, 2, 1), -FCE("ñ", 1, 2, 1),FCE("Ѳ", 0, 2, 1),FCE("ѳ", 1, 2, 1),FCE("𑢶", 0, 2, 1), -FCE("𑣖", 1, 2, 1),FCE("ὸ", 0, 2, 1),FCE("Ὸ", 1, 2, 1),FCE("C", 0, 2, 1), -FCE("c", 1, 2, 1),FCE("Ả", 0, 2, 1),FCE("ả", 1, 2, 1),FCE("ἤ", 0, 2, 1), -FCE("Ἤ", 1, 2, 1),FCE("Ɲ", 0, 2, 1),FCE("ɲ", 1, 2, 1),FCE("Ҷ", 0, 2, 1), -FCE("ҷ", 1, 2, 1),FCE("ß", 0, 3, 1),FCE("ẞ", 1, 3, 1),FCE("ss", 2, 3, 2), -FCE("ᾇ", 0, 3, 1),FCE("ᾏ", 1, 3, 1),FCE("ἇι", 2, 3, 2),FCE("Ḕ", 0, 2, 1), -FCE("ḕ", 1, 2, 1),FCE("Ủ", 0, 2, 1),FCE("ủ", 1, 2, 1),FCE("Ћ", 0, 2, 1), -FCE("ћ", 1, 2, 1),FCE("Љ", 0, 2, 1),FCE("љ", 1, 2, 1),FCE("𐕽", 0, 2, 1), -FCE("𐖤", 1, 2, 1),FCE("Ψ", 0, 2, 1),FCE("ψ", 1, 2, 1),FCE("Ṛ", 0, 2, 1), -FCE("ṛ", 1, 2, 1),FCE("𐕿", 0, 2, 1),FCE("𐖦", 1, 2, 1),FCE("Մ", 0, 2, 1), -FCE("մ", 1, 2, 1),FCE("ჾ", 0, 2, 1),FCE("Ჾ", 1, 2, 1),FCE("Ḓ", 0, 2, 1), -FCE("ḓ", 1, 2, 1),FCE("Ⴙ", 0, 2, 1),FCE("ⴙ", 1, 2, 1),FCE("G", 0, 2, 1), -FCE("g", 1, 2, 1),FCE("Ӽ", 0, 2, 1),FCE("ӽ", 1, 2, 1),FCE("𐲒", 0, 2, 1), -FCE("𐳒", 1, 2, 1),FCE("Ⲇ", 0, 2, 1),FCE("ⲇ", 1, 2, 1),FCE("Ḛ", 0, 2, 1), -FCE("ḛ", 1, 2, 1),FCE("𐲐", 0, 2, 1),FCE("𐳐", 1, 2, 1),FCE("Ⴟ", 0, 2, 1), -FCE("ⴟ", 1, 2, 1),FCE("Ꮚ", 0, 2, 1),FCE("ꮚ", 1, 2, 1),FCE("𖹉", 0, 2, 1), -FCE("𖹩", 1, 2, 1),FCE("A", 0, 2, 1),FCE("a", 1, 2, 1),FCE("Ƽ", 0, 2, 1), -FCE("ƽ", 1, 2, 1),FCE("Ừ", 0, 2, 1),FCE("ừ", 1, 2, 1),FCE("Ԃ", 0, 2, 1), -FCE("ԃ", 1, 2, 1),FCE("Ɉ", 0, 2, 1),FCE("ɉ", 1, 2, 1),FCE("ᾕ", 0, 3, 1), -FCE("ᾝ", 1, 3, 1),FCE("ἥι", 2, 3, 2),FCE("ჟ", 0, 2, 1),FCE("Ჟ", 1, 2, 1), -FCE("DŽ", 0, 3, 1),FCE("Dž", 1, 3, 1),FCE("dž", 2, 3, 1),FCE("Ն", 0, 2, 1), -FCE("ն", 1, 2, 1),FCE("Ꮿ", 0, 2, 1),FCE("ꮿ", 1, 2, 1),FCE("Ⳍ", 0, 2, 1), -FCE("ⳍ", 1, 2, 1),FCE("თ", 0, 2, 1),FCE("Თ", 1, 2, 1),FCE("Ꭷ", 0, 2, 1), -FCE("ꭷ", 1, 2, 1),FCE("Ѻ", 0, 2, 1),FCE("ѻ", 1, 2, 1),FCE("Ĵ", 0, 2, 1), -FCE("ĵ", 1, 2, 1),FCE("Ъ", 0, 3, 1),FCE("ъ", 1, 3, 1),FCE("ᲆ", 2, 3, 1), -FCE("Ⱉ", 0, 2, 1),FCE("ⱉ", 1, 2, 1),FCE("Ȅ", 0, 2, 1),FCE("ȅ", 1, 2, 1), -FCE("ɜ", 0, 2, 1),FCE("Ɜ", 1, 2, 1),FCE("Ⓩ", 0, 2, 1),FCE("ⓩ", 1, 2, 1), -FCE("Ṕ", 0, 2, 1),FCE("ṕ", 1, 2, 1),FCE("𐕹", 0, 2, 1),FCE("𐖠", 1, 2, 1), -FCE("Պ", 0, 2, 1),FCE("պ", 1, 2, 1),FCE("Ꚅ", 0, 2, 1),FCE("ꚅ", 1, 2, 1), -FCE("G", 0, 2, 1),FCE("g", 1, 2, 1),FCE("ἅ", 0, 2, 1),FCE("Ἅ", 1, 2, 1), -FCE("ﬓ", 0, 2, 1),FCE("մն", 1, 2, 2),FCE("Ⅎ", 0, 2, 1),FCE("ⅎ", 1, 2, 1), -FCE("Ɍ", 0, 2, 1),FCE("ɍ", 1, 2, 1),FCE("Ꮅ", 0, 2, 1),FCE("ꮅ", 1, 2, 1), -FCE("Ⳇ", 0, 2, 1),FCE("ⳇ", 1, 2, 1),FCE("𐐈", 0, 2, 1),FCE("𐐰", 1, 2, 1), -FCE("Ⱍ", 0, 2, 1),FCE("ⱍ", 1, 2, 1),FCE("ȿ", 0, 2, 1),FCE("Ȿ", 1, 2, 1), -FCE("Ꝃ", 0, 2, 1),FCE("ꝃ", 1, 2, 1),FCE("Ṣ", 0, 2, 1),FCE("ṣ", 1, 2, 1), -FCE("𐲨", 0, 2, 1),FCE("𐳨", 1, 2, 1),FCE("µ", 0, 3, 1),FCE("Μ", 1, 3, 1), -FCE("μ", 2, 3, 1),FCE("ᾁ", 0, 3, 1),FCE("ᾉ", 1, 3, 1),FCE("ἁι", 2, 3, 2), -FCE("𐲚", 0, 2, 1),FCE("𐳚", 1, 2, 1),FCE("Į", 0, 2, 1),FCE("į", 1, 2, 1), -FCE("Ѓ", 0, 2, 1),FCE("ѓ", 1, 2, 1),FCE("Ǿ", 0, 2, 1),FCE("ǿ", 1, 2, 1), -FCE("ͅ", 0, 4, 1),FCE("Ι", 1, 4, 1),FCE("ι", 2, 4, 1),FCE("ι", 3, 4, 1), -FCE("Ŵ", 0, 2, 1),FCE("ŵ", 1, 2, 1),FCE("Ϗ", 0, 2, 1),FCE("ϗ", 1, 2, 1), -FCE("Ⓧ", 0, 2, 1),FCE("ⓧ", 1, 2, 1),FCE("ᾳ", 0, 3, 1),FCE("ᾼ", 1, 3, 1), -FCE("αι", 2, 3, 2),FCE("𑢭", 0, 2, 1),FCE("𑣍", 1, 2, 1),FCE("Ꝅ", 0, 2, 1), -FCE("ꝅ", 1, 2, 1),FCE("Ù", 0, 2, 1),FCE("ù", 1, 2, 1),FCE("Ḍ", 0, 2, 1), -FCE("ḍ", 1, 2, 1),FCE("Ⱇ", 0, 2, 1),FCE("ⱇ", 1, 2, 1),FCE("Ϣ", 0, 2, 1), -FCE("ϣ", 1, 2, 1),FCE("ɬ", 0, 2, 1),FCE("Ɬ", 1, 2, 1),FCE("Ꝗ", 0, 2, 1), -FCE("ꝗ", 1, 2, 1),FCE("Ѕ", 0, 2, 1),FCE("ѕ", 1, 2, 1),FCE("Ɨ", 0, 2, 1), -FCE("ɨ", 1, 2, 1),FCE("ὠ", 0, 2, 1),FCE("Ὠ", 1, 2, 1),FCE("Ử", 0, 2, 1), -FCE("ử", 1, 2, 1),FCE("Ⲍ", 0, 2, 1),FCE("ⲍ", 1, 2, 1),FCE("ჲ", 0, 2, 1), -FCE("Ჲ", 1, 2, 1),FCE("𐒶", 0, 2, 1),FCE("𐓞", 1, 2, 1),FCE("𞤝", 0, 2, 1), -FCE("𞤿", 1, 2, 1),FCE("𐐊", 0, 2, 1),FCE("𐐲", 1, 2, 1),FCE("Ꮖ", 0, 2, 1), -FCE("ꮖ", 1, 2, 1),FCE("𖹁", 0, 2, 1),FCE("𖹡", 1, 2, 1),FCE("Ф", 0, 2, 1), -FCE("ф", 1, 2, 1),FCE("Ʃ", 0, 2, 1),FCE("ʃ", 1, 2, 1),FCE("Κ", 0, 3, 1), -FCE("κ", 1, 3, 1),FCE("ϰ", 2, 3, 1),FCE("ქ", 0, 2, 1),FCE("Ქ", 1, 2, 1), -FCE("𐓈", 0, 2, 1),FCE("𐓰", 1, 2, 1),FCE("𐐇", 0, 2, 1),FCE("𐐯", 1, 2, 1), -FCE("Ꮠ", 0, 2, 1),FCE("ꮠ", 1, 2, 1),FCE("ᾢ", 0, 3, 1),FCE("ᾪ", 1, 3, 1), -FCE("ὢι", 2, 3, 2),FCE("Ѭ", 0, 2, 1),FCE("ѭ", 1, 2, 1),FCE("Ⴀ", 0, 2, 1), -FCE("ⴀ", 1, 2, 1),FCE("Ꞃ", 0, 2, 1),FCE("ꞃ", 1, 2, 1),FCE("Å", 0, 3, 1), -FCE("å", 1, 3, 1),FCE("Å", 2, 3, 1),FCE("Ҵ", 0, 2, 1),FCE("ҵ", 1, 2, 1), -FCE("Ⳏ", 0, 2, 1),FCE("ⳏ", 1, 2, 1),FCE("ῲ", 0, 2, 1),FCE("ὼι", 1, 2, 2), -FCE("A", 0, 2, 1),FCE("a", 1, 2, 1),FCE("Ꜻ", 0, 2, 1),FCE("ꜻ", 1, 2, 1), -FCE("𐒹", 0, 2, 1),FCE("𐓡", 1, 2, 1),FCE("Ấ", 0, 2, 1),FCE("ấ", 1, 2, 1), -FCE("Ώ", 0, 2, 1),FCE("ώ", 1, 2, 1),FCE("Ⓘ", 0, 2, 1),FCE("ⓘ", 1, 2, 1), -FCE("ΰ", 0, 3, 1),FCE("ΰ", 1, 3, 1),FCE("ΰ", 2, 3, 3),FCE("I", 0, 2, 1), -FCE("i", 1, 2, 1),FCE("𞤟", 0, 2, 1),FCE("𞥁", 1, 2, 1),FCE("Ɇ", 0, 2, 1), -FCE("ɇ", 1, 2, 1),FCE("έ", 0, 2, 1),FCE("Έ", 1, 2, 1),FCE("Ⱨ", 0, 2, 1), -FCE("ⱨ", 1, 2, 1),FCE("Ⅶ", 0, 2, 1),FCE("ⅶ", 1, 2, 1),FCE("Ā", 0, 2, 1), -FCE("ā", 1, 2, 1),FCE("Ϥ", 0, 2, 1),FCE("ϥ", 1, 2, 1),FCE("Ꮢ", 0, 2, 1), -FCE("ꮢ", 1, 2, 1),FCE("Ꞟ", 0, 2, 1),FCE("ꞟ", 1, 2, 1),FCE("ᾠ", 0, 3, 1), -FCE("ᾨ", 1, 3, 1),FCE("ὠι", 2, 3, 2),FCE("𐲱", 0, 2, 1),FCE("𐳱", 1, 2, 1), -FCE("𖹝", 0, 2, 1),FCE("𖹽", 1, 2, 1),FCE("Ⴡ", 0, 2, 1),FCE("ⴡ", 1, 2, 1), -FCE("Ꟶ", 0, 2, 1),FCE("ꟶ", 1, 2, 1),FCE("Ꮎ", 0, 2, 1),FCE("ꮎ", 1, 2, 1), -FCE("Ь", 0, 2, 1),FCE("ь", 1, 2, 1),FCE("ῄ", 0, 2, 1),FCE("ήι", 1, 2, 2), -FCE("ო", 0, 2, 1),FCE("Ო", 1, 2, 1),FCE("ᾓ", 0, 3, 1),FCE("ᾛ", 1, 3, 1), -FCE("ἣι", 2, 3, 2),FCE("Ɏ", 0, 2, 1),FCE("ɏ", 1, 2, 1),FCE("Ҽ", 0, 2, 1), -FCE("ҽ", 1, 2, 1),FCE("Ŷ", 0, 2, 1),FCE("ŷ", 1, 2, 1),FCE("Ꭻ", 0, 2, 1), -FCE("ꭻ", 1, 2, 1),FCE("Ꮱ", 0, 2, 1),FCE("ꮱ", 1, 2, 1),FCE("Ԅ", 0, 2, 1), -FCE("ԅ", 1, 2, 1),FCE("ἃ", 0, 2, 1),FCE("Ἃ", 1, 2, 1),FCE("Ꚇ", 0, 2, 1), -FCE("ꚇ", 1, 2, 1),FCE("Ռ", 0, 2, 1),FCE("ռ", 1, 2, 1),FCE("𖹏", 0, 2, 1), -FCE("𖹯", 1, 2, 1),FCE("ძ", 0, 2, 1),FCE("Ძ", 1, 2, 1),FCE("Ꮩ", 0, 2, 1), -FCE("ꮩ", 1, 2, 1),FCE("Ⱥ", 0, 2, 1),FCE("ⱥ", 1, 2, 1),FCE("Ҩ", 0, 2, 1), -FCE("ҩ", 1, 2, 1),FCE("Ⳛ", 0, 2, 1),FCE("ⳛ", 1, 2, 1),FCE("О", 0, 3, 1), -FCE("о", 1, 3, 1),FCE("ᲂ", 2, 3, 1),FCE("ᾁ", 0, 3, 1),FCE("ᾉ", 1, 3, 1), -FCE("ἁι", 2, 3, 2),FCE("Δ", 0, 2, 1),FCE("δ", 1, 2, 1),FCE("Ⱳ", 0, 2, 1), -FCE("ⱳ", 1, 2, 1),FCE("Ԑ", 0, 2, 1),FCE("ԑ", 1, 2, 1),FCE("Ḧ", 0, 2, 1), -FCE("ḧ", 1, 2, 1),FCE("Ꙃ", 0, 2, 1),FCE("ꙃ", 1, 2, 1),FCE("Ӊ", 0, 2, 1), -FCE("ӊ", 1, 2, 1),FCE("Ň", 0, 2, 1),FCE("ň", 1, 2, 1),FCE("Ằ", 0, 2, 1), -FCE("ằ", 1, 2, 1),FCE("Ꝟ", 0, 2, 1),FCE("ꝟ", 1, 2, 1),FCE("𐖌", 0, 2, 1), -FCE("𐖳", 1, 2, 1),FCE("Ꜽ", 0, 2, 1),FCE("ꜽ", 1, 2, 1),FCE("𐓑", 0, 2, 1), -FCE("𐓹", 1, 2, 1),FCE("𐓒", 0, 2, 1),FCE("𐓺", 1, 2, 1),FCE("𐖐", 0, 2, 1), -FCE("𐖷", 1, 2, 1),FCE("U", 0, 2, 1),FCE("u", 1, 2, 1),FCE("ἑ", 0, 2, 1), -FCE("Ἑ", 1, 2, 1),FCE("ͻ", 0, 2, 1),FCE("Ͻ", 1, 2, 1),FCE("ἱ", 0, 2, 1), -FCE("Ἱ", 1, 2, 1),FCE("Ⲻ", 0, 2, 1),FCE("ⲻ", 1, 2, 1),FCE("Ւ", 0, 2, 1), -FCE("ւ", 1, 2, 1),FCE("ῃ", 0, 3, 1),FCE("ῌ", 1, 3, 1),FCE("ηι", 2, 3, 2), -FCE("Ṯ", 0, 2, 1),FCE("ṯ", 1, 2, 1),FCE("Ⅷ", 0, 2, 1),FCE("ⅷ", 1, 2, 1), -FCE("Þ", 0, 2, 1),FCE("þ", 1, 2, 1),FCE("Ɛ", 0, 2, 1),FCE("ɛ", 1, 2, 1), -FCE("Ꚍ", 0, 2, 1),FCE("ꚍ", 1, 2, 1),FCE("Ỹ", 0, 2, 1),FCE("ỹ", 1, 2, 1), -FCE("𐒰", 0, 2, 1),FCE("𐓘", 1, 2, 1),FCE("𐲎", 0, 2, 1),FCE("𐳎", 1, 2, 1), -FCE("Ⰸ", 0, 2, 1),FCE("ⰸ", 1, 2, 1),FCE("Ů", 0, 2, 1),FCE("ů", 1, 2, 1), -FCE("𖹜", 0, 2, 1),FCE("𖹼", 1, 2, 1),FCE("Ⴭ", 0, 2, 1),FCE("ⴭ", 1, 2, 1), -FCE("ύ", 0, 2, 1),FCE("Ύ", 1, 2, 1),FCE("Ẑ", 0, 2, 1),FCE("ẑ", 1, 2, 1), -FCE("Ꮃ", 0, 2, 1),FCE("ꮃ", 1, 2, 1),FCE("Ǒ", 0, 2, 1),FCE("ǒ", 1, 2, 1), -FCE("ὓ", 0, 2, 1),FCE("Ὓ", 1, 2, 1),FCE("Ħ", 0, 2, 1),FCE("ħ", 1, 2, 1), -FCE("Ṉ", 0, 2, 1),FCE("ṉ", 1, 2, 1),FCE("Ⲙ", 0, 2, 1),FCE("ⲙ", 1, 2, 1), -FCE("𐐀", 0, 2, 1),FCE("𐐨", 1, 2, 1),FCE("ᾣ", 0, 3, 1),FCE("ᾫ", 1, 3, 1), -FCE("ὣι", 2, 3, 2),FCE("𑢹", 0, 2, 1),FCE("𑣙", 1, 2, 1),FCE("Ꮀ", 0, 2, 1), -FCE("ꮀ", 1, 2, 1),FCE("Ộ", 0, 2, 1),FCE("ộ", 1, 2, 1),FCE("𐲤", 0, 2, 1), -FCE("𐳤", 1, 2, 1),FCE("ὴ", 0, 2, 1),FCE("Ὴ", 1, 2, 1),FCE("Т", 0, 4, 1), -FCE("т", 1, 4, 1),FCE("ᲄ", 2, 4, 1),FCE("ᲅ", 3, 4, 1),FCE("Ỳ", 0, 2, 1), -FCE("ỳ", 1, 2, 1),FCE("Ⅱ", 0, 2, 1),FCE("ⅱ", 1, 2, 1),FCE("𐐠", 0, 2, 1), -FCE("𐑈", 1, 2, 1),FCE("DZ", 0, 3, 1),FCE("Dz", 1, 3, 1),FCE("dz", 2, 3, 1), -FCE("Ǘ", 0, 2, 1),FCE("ǘ", 1, 2, 1),FCE("Ꚋ", 0, 2, 1),FCE("ꚋ", 1, 2, 1), -FCE("Ϸ", 0, 2, 1),FCE("ϸ", 1, 2, 1),FCE("U", 0, 2, 1),FCE("u", 1, 2, 1), -FCE("Ϝ", 0, 2, 1),FCE("ϝ", 1, 2, 1),FCE("𐲍", 0, 2, 1),FCE("𐳍", 1, 2, 1), -FCE("И", 0, 2, 1),FCE("и", 1, 2, 1),FCE("Ȓ", 0, 2, 1),FCE("ȓ", 1, 2, 1), -FCE("Ӱ", 0, 2, 1),FCE("ӱ", 1, 2, 1),FCE("Ⓛ", 0, 2, 1),FCE("ⓛ", 1, 2, 1), -FCE("Ԋ", 0, 2, 1),FCE("ԋ", 1, 2, 1),FCE("𞤗", 0, 2, 1),FCE("𞤹", 1, 2, 1), -FCE("Ꙅ", 0, 2, 1),FCE("ꙅ", 1, 2, 1),FCE("Է", 0, 2, 1),FCE("է", 1, 2, 1), -FCE("Ⴌ", 0, 2, 1),FCE("ⴌ", 1, 2, 1),FCE("Ⴍ", 0, 2, 1),FCE("ⴍ", 1, 2, 1), -FCE("Ⓡ", 0, 2, 1),FCE("ⓡ", 1, 2, 1),FCE("Ѡ", 0, 2, 1),FCE("ѡ", 1, 2, 1), -FCE("Ⱛ", 0, 2, 1),FCE("ⱛ", 1, 2, 1),FCE("𖹖", 0, 2, 1),FCE("𖹶", 1, 2, 1), -FCE("Ⴧ", 0, 2, 1),FCE("ⴧ", 1, 2, 1),FCE("ſt", 0, 3, 1),FCE("st", 1, 3, 1), -FCE("st", 2, 3, 2),FCE("Ⳕ", 0, 2, 1),FCE("ⳕ", 1, 2, 1),FCE("ჱ", 0, 2, 1), -FCE("Ჱ", 1, 2, 1),FCE("ὺ", 0, 2, 1),FCE("Ὺ", 1, 2, 1),FCE("Ⰻ", 0, 2, 1), -FCE("ⰻ", 1, 2, 1),FCE("T", 0, 2, 1),FCE("t", 1, 2, 1),FCE("𐐆", 0, 2, 1), -FCE("𐐮", 1, 2, 1),FCE("З", 0, 2, 1),FCE("з", 1, 2, 1),FCE("𑢺", 0, 2, 1), -FCE("𑣚", 1, 2, 1),FCE("ᾂ", 0, 3, 1),FCE("ᾊ", 1, 3, 1),FCE("ἂι", 2, 3, 2), -FCE("DZ", 0, 3, 1),FCE("Dz", 1, 3, 1),FCE("dz", 2, 3, 1),FCE("Ε", 0, 3, 1), -FCE("ε", 1, 3, 1),FCE("ϵ", 2, 3, 1),FCE("Ʒ", 0, 2, 1),FCE("ʒ", 1, 2, 1), -FCE("Ə", 0, 2, 1),FCE("ə", 1, 2, 1),FCE("Ը", 0, 2, 1),FCE("ը", 1, 2, 1), -FCE("Ꙫ", 0, 2, 1),FCE("ꙫ", 1, 2, 1),FCE("ἲ", 0, 2, 1),FCE("Ἲ", 1, 2, 1), -FCE("𐐡", 0, 2, 1),FCE("𐑉", 1, 2, 1),FCE("Ԫ", 0, 2, 1),FCE("ԫ", 1, 2, 1), -FCE("Х", 0, 2, 1),FCE("х", 1, 2, 1),FCE("Ꞅ", 0, 2, 1),FCE("ꞅ", 1, 2, 1), -FCE("O", 0, 2, 1),FCE("o", 1, 2, 1),FCE("Ꙥ", 0, 2, 1),FCE("ꙥ", 1, 2, 1), -FCE("ᾢ", 0, 3, 1),FCE("ᾪ", 1, 3, 1),FCE("ὢι", 2, 3, 2),FCE("𐒱", 0, 2, 1), -FCE("𐓙", 1, 2, 1),FCE("Ä", 0, 2, 1),FCE("ä", 1, 2, 1),FCE("𐲥", 0, 2, 1), -FCE("𐳥", 1, 2, 1),FCE("Ẫ", 0, 2, 1),FCE("ẫ", 1, 2, 1),FCE("Ꮨ", 0, 2, 1), -FCE("ꮨ", 1, 2, 1),FCE("ß", 0, 3, 1),FCE("ẞ", 1, 3, 1),FCE("ss", 2, 3, 2), -FCE("ფ", 0, 2, 1),FCE("Ფ", 1, 2, 1),FCE("Ø", 0, 2, 1),FCE("ø", 1, 2, 1), -FCE("NJ", 0, 3, 1),FCE("Nj", 1, 3, 1),FCE("nj", 2, 3, 1),FCE("ბ", 0, 2, 1), -FCE("Ბ", 1, 2, 1),FCE("𐕵", 0, 2, 1),FCE("𐖜", 1, 2, 1),FCE("Ⅼ", 0, 2, 1), -FCE("ⅼ", 1, 2, 1),FCE("Ⰲ", 0, 2, 1),FCE("ⰲ", 1, 2, 1),FCE("𖹛", 0, 2, 1), -FCE("𖹻", 1, 2, 1),FCE("Ꟙ", 0, 2, 1),FCE("ꟙ", 1, 2, 1),FCE("B", 0, 2, 1), -FCE("b", 1, 2, 1),FCE("Є", 0, 2, 1),FCE("є", 1, 2, 1),FCE("Ⴓ", 0, 2, 1), -FCE("ⴓ", 1, 2, 1),FCE("Ị", 0, 2, 1),FCE("ị", 1, 2, 1),FCE("𐐉", 0, 2, 1), -FCE("𐐱", 1, 2, 1),FCE("𞤘", 0, 2, 1),FCE("𞤺", 1, 2, 1),FCE("Ӷ", 0, 2, 1), -FCE("ӷ", 1, 2, 1),FCE("Ⳁ", 0, 2, 1),FCE("ⳁ", 1, 2, 1),FCE("Ḡ", 0, 2, 1), -FCE("ḡ", 1, 2, 1),FCE("ff", 0, 2, 1),FCE("ff", 1, 2, 2),FCE("𐒷", 0, 2, 1), -FCE("𐓟", 1, 2, 1),FCE("Λ", 0, 2, 1),FCE("λ", 1, 2, 1),FCE("Ɩ", 0, 2, 1), -FCE("ɩ", 1, 2, 1),FCE("Ⱕ", 0, 2, 1),FCE("ⱕ", 1, 2, 1),FCE("Ꞑ", 0, 2, 1), -FCE("ꞑ", 1, 2, 1),FCE("Ꝥ", 0, 2, 1),FCE("ꝥ", 1, 2, 1),FCE("Ȍ", 0, 2, 1), -FCE("ȍ", 1, 2, 1),FCE("ᾔ", 0, 3, 1),FCE("ᾜ", 1, 3, 1),FCE("ἤι", 2, 3, 2), -FCE("𑢰", 0, 2, 1),FCE("𑣐", 1, 2, 1),FCE("Ƃ", 0, 2, 1),FCE("ƃ", 1, 2, 1), -FCE("Ⲭ", 0, 2, 1),FCE("ⲭ", 1, 2, 1),FCE("ᾀ", 0, 3, 1),FCE("ᾈ", 1, 3, 1), -FCE("ἀι", 2, 3, 2),FCE("Ⓦ", 0, 2, 1),FCE("ⓦ", 1, 2, 1),FCE("ɑ", 0, 2, 1), -FCE("Ɑ", 1, 2, 1),FCE("Ҁ", 0, 2, 1),FCE("ҁ", 1, 2, 1),FCE("ὔ", 0, 2, 1), -FCE("ὔ", 1, 2, 3),FCE("Ⓒ", 0, 2, 1),FCE("ⓒ", 1, 2, 1),FCE("Ջ", 0, 2, 1), -FCE("ջ", 1, 2, 1),FCE("Ꭺ", 0, 2, 1),FCE("ꭺ", 1, 2, 1),FCE("K", 0, 3, 1), -FCE("k", 1, 3, 1),FCE("K", 2, 3, 1),FCE("ɡ", 0, 2, 1),FCE("Ɡ", 1, 2, 1), -FCE("Ł", 0, 2, 1),FCE("ł", 1, 2, 1),FCE("Κ", 0, 3, 1),FCE("κ", 1, 3, 1), -FCE("ϰ", 2, 3, 1),FCE("ჸ", 0, 2, 1),FCE("Ჸ", 1, 2, 1),FCE("𐓄", 0, 2, 1), -FCE("𐓬", 1, 2, 1),FCE("Ɖ", 0, 2, 1),FCE("ɖ", 1, 2, 1),FCE("პ", 0, 2, 1), -FCE("Პ", 1, 2, 1),FCE("Ṩ", 0, 2, 1),FCE("ṩ", 1, 2, 1),FCE("Ꮶ", 0, 2, 1), -FCE("ꮶ", 1, 2, 1),FCE("ἄ", 0, 2, 1),FCE("Ἄ", 1, 2, 1),FCE("𐕸", 0, 2, 1), -FCE("𐖟", 1, 2, 1),FCE("Б", 0, 2, 1),FCE("б", 1, 2, 1),FCE("𐒺", 0, 2, 1), -FCE("𐓢", 1, 2, 1),FCE("Ѧ", 0, 2, 1),FCE("ѧ", 1, 2, 1),FCE("Ꜷ", 0, 2, 1), -FCE("ꜷ", 1, 2, 1),FCE("ῤ", 0, 2, 1),FCE("ῤ", 1, 2, 2),FCE("Ë", 0, 2, 1), -FCE("ë", 1, 2, 1),FCE("Ⴠ", 0, 2, 1),FCE("ⴠ", 1, 2, 1),FCE("𐐧", 0, 2, 1), -FCE("𐑏", 1, 2, 1),FCE("Ǟ", 0, 2, 1),FCE("ǟ", 1, 2, 1),FCE("Ⲓ", 0, 2, 1), -FCE("ⲓ", 1, 2, 1),FCE("Ć", 0, 2, 1),FCE("ć", 1, 2, 1),FCE("Ṏ", 0, 2, 1), -FCE("ṏ", 1, 2, 1),FCE("Ы", 0, 2, 1),FCE("ы", 1, 2, 1),FCE("Ꝉ", 0, 2, 1), -FCE("ꝉ", 1, 2, 1),FCE("Ⱁ", 0, 2, 1),FCE("ⱁ", 1, 2, 1),FCE("Ꭓ", 0, 2, 1), -FCE("ꭓ", 1, 2, 1),FCE("Ծ", 0, 2, 1),FCE("ծ", 1, 2, 1),FCE("Ŏ", 0, 2, 1), -FCE("ŏ", 1, 2, 1),FCE("Ꮣ", 0, 2, 1),FCE("ꮣ", 1, 2, 1),FCE("Ԥ", 0, 2, 1), -FCE("ԥ", 1, 2, 1),FCE("Ꙟ", 0, 2, 1),FCE("ꙟ", 1, 2, 1),FCE("Ǹ", 0, 2, 1), -FCE("ǹ", 1, 2, 1),FCE("Ү", 0, 2, 1),FCE("ү", 1, 2, 1),FCE("Ꝿ", 0, 2, 1), -FCE("ꝿ", 1, 2, 1),FCE("Π", 0, 3, 1),FCE("π", 1, 3, 1),FCE("ϖ", 2, 3, 1), -FCE("ɥ", 0, 2, 1),FCE("Ɥ", 1, 2, 1),FCE("ᾶ", 0, 2, 1),FCE("ᾶ", 1, 2, 2), -FCE("ᾡ", 0, 3, 1),FCE("ᾩ", 1, 3, 1),FCE("ὡι", 2, 3, 2),FCE("Ở", 0, 2, 1), -FCE("ở", 1, 2, 1),FCE("Ꮉ", 0, 2, 1),FCE("ꮉ", 1, 2, 1),FCE("Ũ", 0, 2, 1), -FCE("ũ", 1, 2, 1),FCE("Ȧ", 0, 2, 1),FCE("ȧ", 1, 2, 1),FCE("Ᏹ", 0, 2, 1), -FCE("ᏹ", 1, 2, 1),FCE("Ḇ", 0, 2, 1),FCE("ḇ", 1, 2, 1),FCE("Ġ", 0, 2, 1), -FCE("ġ", 1, 2, 1),FCE("𐐝", 0, 2, 1),FCE("𐑅", 1, 2, 1),FCE("𐖂", 0, 2, 1), -FCE("𐖩", 1, 2, 1),FCE("ὦ", 0, 2, 1),FCE("Ὦ", 1, 2, 1),FCE("ẖ", 0, 2, 1), -FCE("ẖ", 1, 2, 2),FCE("Ⴆ", 0, 2, 1),FCE("ⴆ", 1, 2, 1),FCE("𐲑", 0, 2, 1), -FCE("𐳑", 1, 2, 1),FCE("ᶎ", 0, 2, 1),FCE("Ᶎ", 1, 2, 1),FCE("𐲄", 0, 2, 1), -FCE("𐳄", 1, 2, 1),FCE("K", 0, 2, 1),FCE("k", 1, 2, 1),FCE("𑢣", 0, 2, 1), -FCE("𑣃", 1, 2, 1),FCE("H", 0, 2, 1),FCE("h", 1, 2, 1),FCE("Ꮜ", 0, 2, 1), -FCE("ꮜ", 1, 2, 1),FCE("𞤞", 0, 2, 1),FCE("𞥀", 1, 2, 1),FCE("Ύ", 0, 2, 1), -FCE("ύ", 1, 2, 1),FCE("Ա", 0, 2, 1),FCE("ա", 1, 2, 1),]; -return t; +static immutable ulong[] t = [ +0x1E90B000000021,0x1E92D000000121,0x10CAE000000021,0x10CEE000000121,0x00496000000021,0x00497000000121, +0x1E911000000021,0x1E933000000121,0x0A722000000021,0x0A723000000121,0x01F79000000021,0x01FF9000000121, +0x01F44000000021,0x01F4C000000121,0x0015A000000021,0x0015B000000121,0x010FD000000021,0x01CBD000000121, +0x16E4C000000021,0x16E6C000000121,0x01E38000000021,0x01E39000000121,0x0FB16000000021,0x0057E576000122, +0x1E921000000021,0x1E943000000121,0x01F23000000021,0x01F2B000000121,0x001A0000000021,0x001A1000000121, +0x003A3000000031,0x003C2000000131,0x003C3000000231,0x004DC000000021,0x004DD000000121,0x02CA6000000021, +0x02CA7000000121,0x0017B000000021,0x0017C000000121,0x1E906000000021,0x1E928000000121,0x010DC000000021, +0x01C9C000000121,0x104CD000000021,0x104F5000000121,0x01F65000000021,0x01F6D000000121,0x0051E000000021, +0x0051F000000121,0x010D8000000021,0x01C98000000121,0x02C1A000000021,0x02C4A000000121,0x0027D000000021, +0x02C64000000121,0x0A69A000000021,0x0A69B000000121,0x01F02000000021,0x01F0A000000121,0x00522000000021, +0x00523000000121,0x02C60000000021,0x02C61000000121,0x01FB7000000021,0x003B13423B9123,0x0A650000000021, +0x0A651000000121,0x0A65C000000021,0x0A65D000000121,0x02C1E000000021,0x02C4E000000121,0x01FB3000000031, +0x01FBC000000131,0x003B13B9000232,0x013C9000000021,0x0AB99000000121,0x013CD000000021,0x0AB9D000000121, +0x000CE000000021,0x000EE000000121,0x01E7E000000021,0x01E7F000000121,0x10414000000021,0x1043C000000121, +0x013F0000000021,0x013F8000000121,0x01EC4000000021,0x01EC5000000121,0x0A78B000000021,0x0A78C000000121, +0x00114000000021,0x00115000000121,0x0042F000000021,0x0044F000000121,0x1E902000000021,0x1E924000000121, +0x004D8000000021,0x004D9000000121,0x02CAA000000021,0x02CAB000000121,0x00110000000021,0x00111000000121, +0x00492000000021,0x00493000000121,0x01E34000000021,0x01E35000000121,0x013F4000000021,0x013FC000000121, +0x00224000000021,0x00225000000121,0x02CA2000000021,0x02CA3000000121,0x0A72E000000021,0x0A72F000000121, +0x16E48000000021,0x16E68000000121,0x0004A000000021,0x0006A000000121,0x013A6000000021,0x0AB76000000121, +0x0015E000000021,0x0015F000000121,0x001C4000000031,0x001C5000000131,0x001C6000000231,0x01F40000000021, +0x01F48000000121,0x0A658000000021,0x0A659000000121,0x0022C000000021,0x0022D000000121,0x10C9F000000021, +0x10CDF000000121,0x01F50000000021,0x003C5313000122,0x01FA7000000031,0x01FAF000000131,0x01F673B9000232, +0x00042000000021,0x00062000000121,0x013AE000000021,0x0AB7E000000121,0x16E40000000021,0x16E60000000121, +0x000D2000000021,0x000F2000000121,0x01E82000000021,0x01E83000000121,0x013D5000000021,0x0ABA5000000121, +0x010E0000000021,0x01CA0000000121,0x0013D000000021,0x0013E000000121,0x00406000000021,0x00456000000121, +0x0029D000000021,0x0A7B2000000121,0x00139000000021,0x0013A000000121,0x00198000000021,0x00199000000121, +0x01EBC000000021,0x01EBD000000121,0x003AB000000021,0x003CB000000121,0x0040E000000021,0x0045E000000121, +0x0A7B6000000021,0x0A7B7000000121,0x0040A000000021,0x0045A000000121,0x01EC0000000021,0x01EC1000000121, +0x10572000000021,0x10599000000121,0x024B9000000021,0x024D3000000121,0x02C16000000021,0x02C46000000121, +0x0019C000000021,0x0026F000000121,0x003A7000000021,0x003C7000000121,0x0A692000000021,0x0A693000000121, +0x000C5000000031,0x000E5000000131,0x0212B000000231,0x00526000000021,0x00527000000121,0x00266000000021, +0x0A7AA000000121,0x1057A000000021,0x105A1000000121,0x1057E000000021,0x105A5000000121,0x01FD0000000021, +0x01FD8000000121,0x00046000000021,0x00066000000121,0x1E90A000000021,0x1E92C000000121,0x00228000000021, +0x00229000000121,0x013A2000000021,0x0AB72000000121,0x0A726000000021,0x0A727000000121,0x10C93000000021, +0x10CD3000000121,0x0049A000000021,0x0049B000000121,0x000D6000000021,0x000F6000000121,0x0010C000000021, +0x0010D000000121,0x10C97000000021,0x10CD7000000121,0x00162000000021,0x00163000000121,0x0019E000000021, +0x00220000000121,0x01E97000000021,0x00074308000122,0x00392000000031,0x003B2000000131,0x003D0000000231, +0x01E30000000021,0x01E31000000121,0x01FA3000000031,0x01FAB000000131,0x01F633B9000232,0x118A8000000021, +0x118C8000000121,0x0216D000000021,0x0217D000000121,0x02C9E000000021,0x02C9F000000121,0x0004E000000021, +0x0006E000000121,0x000B5000000031,0x0039C000000131,0x003BC000000231,0x0048E000000021,0x0048F000000121, +0x0A72A000000021,0x0A72B000000121,0x10410000000021,0x10438000000121,0x0038A000000021,0x003AF000000121, +0x01EFE000000021,0x01EFF000000121,0x118AC000000021,0x118CC000000121,0x001EA000000021,0x001EB000000121, +0x01F06000000021,0x01F0E000000121,0x01FC3000000031,0x01FCC000000131,0x003B73B9000232,0x010B4000000021, +0x02D14000000121,0x0026A000000021,0x0A7AE000000121,0x00412000000031,0x00432000000131,0x01C80000000231, +0x01F86000000031,0x01F8E000000131,0x01F063B9000232,0x10C9B000000021,0x10CDB000000121,0x0A760000000021, +0x0A761000000121,0x024C8000000021,0x024E2000000121,0x001A4000000021,0x001A5000000121,0x0039F000000021, +0x003BF000000121,0x010C4000000021,0x02D24000000121,0x004A2000000021,0x004A3000000121,0x02C03000000021, +0x02C33000000121,0x02CE0000000021,0x02CE1000000121,0x10576000000021,0x1059D000000121,0x01F96000000031, +0x01F9E000000131,0x01F263B9000232,0x004E0000000021,0x004E1000000121,0x02C2A000000021,0x02C5A000000121, +0x01ED0000000021,0x01ED1000000121,0x000C2000000021,0x000E2000000121,0x004E8000000021,0x004E9000000121, +0x0A7A6000000021,0x0A7A7000000121,0x010F9000000021,0x01CB9000000121,0x00145000000021,0x00146000000121, +0x0037C000000021,0x003FE000000121,0x01EC8000000021,0x01EC9000000121,0x0041A000000021,0x0043A000000121, +0x000CA000000021,0x000EA000000121,0x01F86000000031,0x01F8E000000131,0x01F063B9000232,0x00421000000031, +0x00441000000131,0x01C83000000231,0x10404000000021,0x1042C000000121,0x0FB02000000021,0x0006606C000122, +0x0053F000000021,0x0056F000000121,0x00547000000021,0x00577000000121,0x013B6000000021,0x0AB86000000121, +0x013EC000000021,0x0ABBC000000121,0x0FF2C000000021,0x0FF4C000000121,0x0A7BA000000021,0x0A7BB000000121, +0x0A648000000021,0x0A649000000121,0x013C5000000021,0x0AB95000000121,0x0FF24000000021,0x0FF44000000121, +0x1040F000000021,0x10437000000121,0x1041C000000021,0x10444000000121,0x10583000000021,0x105AA000000121, +0x10C83000000021,0x10CC3000000121,0x00241000000021,0x00242000000121,0x01E76000000021,0x01E77000000121, +0x010BC000000021,0x02D1C000000121,0x02C22000000021,0x02C52000000121,0x010D0000000021,0x01C90000000121, +0x0A768000000021,0x0A769000000121,0x0A732000000021,0x0A733000000121,0x0011C000000021,0x0011D000000121, +0x00427000000021,0x00447000000121,0x01E40000000021,0x01E41000000121,0x118B1000000021,0x118D1000000121, +0x00152000000021,0x00153000000121,0x003A1000000031,0x003C1000000131,0x003F1000000231,0x00397000000021, +0x003B7000000121,0x001AC000000021,0x001AD000000121,0x001E2000000021,0x001E3000000121,0x00218000000021, +0x00219000000121,0x1E91A000000021,0x1E93C000000121,0x00516000000021,0x00517000000121,0x01F27000000021, +0x01F2F000000121,0x0A7C9000000021,0x0A7CA000000121,0x01FE0000000021,0x01FE8000000121,0x02165000000021, +0x02175000000121,0x0A66C000000021,0x0A66D000000121,0x00393000000021,0x003B3000000121,0x00532000000021, +0x00562000000121,0x00056000000021,0x00076000000121,0x01F33000000021,0x01F3B000000121,0x00554000000021, +0x00584000000121,0x01C88000000031,0x0A64A000000131,0x0A64B000000231,0x0A68E000000021,0x0A68F000000121, +0x003D8000000021,0x003D9000000121,0x024C5000000021,0x024DF000000121,0x02CB2000000021,0x02CB3000000121, +0x10C82000000021,0x10CC2000000121,0x00057000000021,0x00077000000121,0x16E53000000021,0x16E73000000121, +0x0FF37000000021,0x0FF57000000121,0x01EF6000000021,0x01EF7000000121,0x1E912000000021,0x1E934000000121, +0x01F12000000021,0x01F1A000000121,0x004A6000000021,0x004A7000000121,0x0016A000000021,0x0016B000000121, +0x01F34000000021,0x01F3C000000121,0x02CDC000000021,0x02CDD000000121,0x001B1000000021,0x0028A000000121, +0x118A4000000021,0x118C4000000121,0x01E28000000021,0x01E29000000121,0x001BF000000021,0x001F7000000121, +0x0018B000000021,0x0018C000000121,0x010A7000000021,0x02D07000000121,0x00128000000021,0x00129000000121, +0x01E6A000000021,0x01E6B000000121,0x010AB000000021,0x02D0B000000121,0x0041F000000021,0x0043F000000121, +0x02C2E000000021,0x02C5E000000121,0x10CAF000000021,0x10CEF000000121,0x104C5000000021,0x104ED000000121, +0x118A5000000021,0x118C5000000121,0x01FE1000000021,0x01FE9000000121,0x003A6000000031,0x003C6000000131, +0x003D5000000231,0x02C0A000000021,0x02C3A000000121,0x0050E000000021,0x0050F000000121,0x00104000000021, +0x00105000000121,0x00372000000021,0x00373000000121,0x01E8E000000021,0x01E8F000000121,0x00396000000021, +0x003B6000000121,0x01EFA000000021,0x01EFB000000121,0x003F2000000021,0x003F9000000121,0x0A640000000021, +0x0A641000000121,0x010EC000000021,0x01CAC000000121,0x118A1000000021,0x118C1000000121,0x01FA7000000031, +0x01FAF000000131,0x01F673B9000232,0x00166000000021,0x00167000000121,0x01F37000000021,0x01F3F000000121, +0x10C86000000021,0x10CC6000000121,0x013DD000000021,0x0ABAD000000121,0x01F51000000021,0x01F59000000121, +0x02C9A000000021,0x02C9B000000121,0x001FA000000021,0x001FB000000121,0x02169000000021,0x02179000000121, +0x16E57000000021,0x16E77000000121,0x010A4000000021,0x02D04000000121,0x00053000000031,0x00073000000131, +0x0017F000000231,0x00376000000021,0x00377000000121,0x013B1000000021,0x0AB81000000121,0x00468000000021, +0x00469000000121,0x013E4000000021,0x0ABB4000000121,0x01F96000000031,0x01F9E000000131,0x01F263B9000232, +0x00108000000021,0x00109000000121,0x10CA0000000021,0x10CE0000000121,0x01E66000000021,0x01E67000000121, +0x01E8A000000021,0x01E8B000000121,0x01E4C000000021,0x01E4D000000121,0x01F75000000021,0x01FCB000000121, +0x02C0E000000021,0x02C3E000000121,0x01E50000000021,0x01E51000000121,0x024C0000000021,0x024DA000000121, +0x0A750000000021,0x0A751000000121,0x000DA000000021,0x000FA000000121,0x010E9000000021,0x01CA9000000121, +0x02CD8000000021,0x02CD9000000121,0x01EB8000000021,0x01EB9000000121,0x0012C000000021,0x0012D000000121, +0x00252000000021,0x02C70000000121,0x004C3000000021,0x004C4000000121,0x003B0000000031,0x01FE3000000131, +0x003C5308301233,0x024C4000000021,0x024DE000000121,0x02C0F000000021,0x02C3F000000121,0x00533000000021, +0x00563000000121,0x00195000000021,0x001F6000000121,0x01F13000000021,0x01F1B000000121,0x104B8000000021, +0x104E0000000121,0x00553000000021,0x00583000000121,0x10425000000021,0x1044D000000121,0x013D1000000021, +0x0ABA1000000121,0x004F4000000021,0x004F5000000121,0x004C7000000021,0x004C8000000121,0x104B5000000021, +0x104DD000000121,0x004D0000000021,0x004D1000000121,0x0A75C000000021,0x0A75D000000121,0x10CAC000000021, +0x10CEC000000121,0x01E2C000000021,0x01E2D000000121,0x010A8000000021,0x02D08000000121,0x00464000000021, +0x00465000000121,0x00426000000021,0x00446000000121,0x004E4000000021,0x004E5000000121,0x010ED000000021, +0x01CAD000000121,0x0A792000000021,0x0A793000000121,0x01EDC000000021,0x01EDD000000121,0x104BC000000021, +0x104E4000000121,0x10577000000021,0x1059E000000121,0x01EA8000000021,0x01EA9000000121,0x001B8000000021, +0x001B9000000121,0x000C6000000021,0x000E6000000121,0x0FF30000000021,0x0FF50000000121,0x16E44000000021, +0x16E64000000121,0x1041B000000021,0x10443000000121,0x01E0E000000021,0x01E0F000000121,0x004D4000000021, +0x004D5000000121,0x02CAE000000021,0x02CAF000000121,0x02C6B000000021,0x02C6C000000121,0x0FF23000000021, +0x0FF43000000121,0x00184000000021,0x00185000000121,0x10573000000021,0x1059A000000121,0x00398000000041, +0x003B8000000141,0x003D1000000241,0x003F4000000341,0x013D4000000021,0x0ABA4000000121,0x1E919000000021, +0x1E93B000000121,0x00187000000021,0x00188000000121,0x02C13000000021,0x02C43000000121,0x0A7A2000000021, +0x0A7A3000000121,0x00194000000021,0x00263000000121,0x00416000000021,0x00436000000121,0x02CBE000000021, +0x02CBF000000121,0x01FA6000000031,0x01FAE000000131,0x01F663B9000232,0x104C6000000021,0x104EE000000121, +0x01F82000000031,0x01F8A000000131,0x01F023B9000232,0x104C9000000021,0x104F1000000121,0x013E0000000021, +0x0ABB0000000121,0x00240000000021,0x02C7F000000121,0x0A7BE000000021,0x0A7BF000000121,0x01F92000000031, +0x01F9A000000131,0x01F223B9000232,0x00402000000021,0x00452000000121,0x00536000000021,0x00566000000121, +0x00550000000021,0x00580000000121,0x0A682000000021,0x0A683000000121,0x00386000000021,0x003AC000000121, +0x01FE5000000021,0x01FEC000000121,0x024C9000000021,0x024E3000000121,0x000D3000000021,0x000F3000000121, +0x010F0000000021,0x01CB0000000121,0x01E3C000000021,0x01E3D000000121,0x02C80000000021,0x02C81000000121, +0x01F97000000031,0x01F9F000000131,0x01F273B9000232,0x1058A000000021,0x105B1000000121,0x00156000000021, +0x00157000000121,0x01E7A000000021,0x01E7B000000121,0x013ED000000021,0x0ABBD000000121,0x0A73E000000021, +0x0A73F000000121,0x00118000000021,0x00119000000121,0x00214000000021,0x00215000000121,0x01E60000000031, +0x01E61000000131,0x01E9B000000231,0x02C8A000000021,0x02C8B000000121,0x0A64C000000021,0x0A64D000000121, +0x00395000000031,0x003B5000000131,0x003F5000000231,0x001E6000000021,0x001E7000000121,0x01F85000000031, +0x01F8D000000131,0x01F053B9000232,0x00512000000021,0x00513000000121,0x01F61000000021,0x01F69000000121, +0x0A668000000021,0x0A669000000121,0x10594000000021,0x105BB000000121,0x01E18000000021,0x01E19000000121, +0x013B2000000021,0x0AB82000000121,0x10415000000021,0x1043D000000121,0x10418000000021,0x10440000000121, +0x00245000000021,0x0028C000000121,0x01F72000000021,0x01FC8000000121,0x118B5000000021,0x118D5000000121, +0x010B8000000021,0x02D18000000121,0x004C0000000021,0x004CF000000121,0x1040B000000021,0x10433000000121, +0x00423000000021,0x00443000000121,0x010C5000000021,0x02D25000000121,0x02C2D000000021,0x02C5D000000121, +0x01F30000000021,0x01F38000000121,0x013C1000000021,0x0AB91000000121,0x0A76C000000021,0x0A76D000000121, +0x104CC000000021,0x104F4000000121,0x01F71000000021,0x01FBB000000121,0x0FF33000000021,0x0FF53000000121, +0x0216A000000021,0x0217A000000121,0x00149000000021,0x002BC06E000122,0x003E8000000021,0x003E9000000121, +0x0A7D0000000021,0x0A7D1000000121,0x0005A000000021,0x0007A000000121,0x10CB0000000021,0x10CF0000000121, +0x001D9000000021,0x001DA000000121,0x01ECC000000021,0x01ECD000000121,0x001B5000000021,0x001B6000000121, +0x00543000000021,0x00573000000121,0x01F22000000021,0x01F2A000000121,0x10587000000021,0x105AE000000121, +0x01EA0000000021,0x01EA1000000121,0x10C8F000000021,0x10CCF000000121,0x16E54000000021,0x16E74000000121, +0x01FB4000000021,0x003AC3B9000122,0x01D7D000000021,0x02C63000000121,0x0A7D6000000021,0x0A7D7000000121, +0x0A74C000000021,0x0A74D000000121,0x013CE000000021,0x0AB9E000000121,0x000CF000000021,0x000EF000000121, +0x010D9000000021,0x01C99000000121,0x00045000000021,0x00065000000121,0x00136000000021,0x00137000000121, +0x0040D000000021,0x0045D000000121,0x16E43000000021,0x16E63000000121,0x01F7C000000021,0x01FFA000000121, +0x0024A000000021,0x0024B000000121,0x004B8000000021,0x004B9000000121,0x02CCA000000021,0x02CCB000000121, +0x02CED000000021,0x02CEE000000121,0x0019F000000021,0x00275000000121,0x003A4000000021,0x003C4000000121, +0x0FB17000000021,0x0057456D000122,0x0A74E000000021,0x0A74F000000121,0x104C0000000021,0x104E8000000121, +0x01E16000000021,0x01E17000000121,0x013AF000000021,0x0AB7F000000121,0x00500000000021,0x00501000000121, +0x02C82000000021,0x02C83000000121,0x010BD000000021,0x02D1D000000121,0x1E916000000021,0x1E938000000121, +0x10CA3000000021,0x10CE3000000121,0x10C94000000021,0x10CD4000000121,0x104C2000000021,0x104EA000000121, +0x003A6000000031,0x003C6000000131,0x003D5000000231,0x01F93000000031,0x01F9B000000131,0x01F233B9000232, +0x118B4000000021,0x118D4000000121,0x013E9000000021,0x0ABB9000000121,0x16E4D000000021,0x16E6D000000121, +0x01F41000000021,0x01F49000000121,0x00287000000021,0x0A7B1000000121,0x00542000000021,0x00572000000121, +0x01E58000000021,0x01E59000000121,0x01F43000000021,0x01F4B000000121,0x01F91000000031,0x01F99000000131, +0x01F213B9000232,0x02CEB000000021,0x02CEC000000121,0x01FD1000000021,0x01FD9000000121,0x01EE8000000021, +0x01EE9000000121,0x013A3000000021,0x0AB73000000121,0x003EE000000021,0x003EF000000121,0x118B8000000021, +0x118D8000000121,0x10C9E000000021,0x10CDE000000121,0x013EB000000021,0x0ABBB000000121,0x000FF000000021, +0x00178000000121,0x10417000000021,0x1043F000000121,0x118A9000000021,0x118C9000000121,0x01FB0000000021, +0x01FB8000000121,0x02C88000000021,0x02C89000000121,0x013A9000000021,0x0AB79000000121,0x1E909000000021, +0x1E92B000000121,0x013C2000000021,0x0AB92000000121,0x024B6000000021,0x024D0000000121,0x01E5E000000021, +0x01E5F000000121,0x02C69000000021,0x02C6A000000121,0x1041F000000021,0x10447000000121,0x0037F000000021, +0x003F3000000121,0x00540000000021,0x00570000000121,0x00390000000031,0x01FD3000000131,0x003B9308301233, +0x0004B000000031,0x0006B000000131,0x0212A000000231,0x004F8000000021,0x004F9000000121,0x013F3000000021, +0x013FB000000121,0x000C9000000021,0x000E9000000121,0x0040F000000021,0x0045F000000121,0x010B5000000021, +0x02D15000000121,0x0A746000000021,0x0A747000000121,0x000CD000000021,0x000ED000000121,0x00476000000021, +0x00477000000121,0x0039E000000021,0x003BE000000121,0x01F20000000021,0x01F28000000121,0x010FA000000021, +0x01CBA000000121,0x02C21000000021,0x02C51000000121,0x01EA6000000021,0x01EA7000000121,0x01F83000000031, +0x01F8B000000131,0x01F033B9000232,0x0053C000000021,0x0056C000000121,0x01F01000000021,0x01F09000000121, +0x02CC2000000021,0x02CC3000000121,0x00208000000021,0x00209000000121,0x013E3000000021,0x0ABB3000000121, +0x0A796000000021,0x0A797000000121,0x01F64000000021,0x01F6C000000121,0x10592000000021,0x105B9000000121, +0x004BE000000021,0x004BF000000121,0x01F91000000031,0x01F99000000131,0x01F213B9000232,0x003E6000000021, +0x003E7000000121,0x01EE0000000021,0x01EE1000000121,0x01FF3000000031,0x01FFC000000131,0x003C93B9000232, +0x00130000000021,0x00069307000122,0x00413000000021,0x00433000000121,0x01E98000000021,0x0007730A000122, +0x0042E000000021,0x0044E000000121,0x010DB000000021,0x01C9B000000121,0x010F6000000021,0x01CB6000000121, +0x02C00000000021,0x02C30000000121,0x118BE000000021,0x118DE000000121,0x001A7000000021,0x001A8000000121, +0x010C3000000021,0x02D23000000121,0x00415000000021,0x00435000000121,0x01E1E000000021,0x01E1F000000121, +0x00506000000021,0x00507000000121,0x01E64000000021,0x01E65000000121,0x000C7000000021,0x000E7000000121, +0x0047C000000021,0x0047D000000121,0x01E52000000021,0x01E53000000121,0x010F4000000021,0x01CB4000000121, +0x10586000000021,0x105AD000000121,0x0046A000000021,0x0046B000000121,0x02C27000000021,0x02C57000000121, +0x104CA000000021,0x104F2000000121,0x010A2000000021,0x02D02000000121,0x10C89000000021,0x10CC9000000121, +0x0FF32000000021,0x0FF52000000121,0x00398000000041,0x003B8000000141,0x003D1000000241,0x003F4000000341, +0x003A9000000031,0x003C9000000131,0x02126000000231,0x01EDA000000021,0x01EDB000000121,0x1E901000000021, +0x1E923000000121,0x0A79C000000021,0x0A79D000000121,0x010D3000000021,0x01C93000000121,0x024BC000000021, +0x024D6000000121,0x0FF2F000000021,0x0FF4F000000121,0x00250000000021,0x02C6F000000121,0x02C29000000021, +0x02C59000000121,0x1E920000000021,0x1E942000000121,0x004B2000000021,0x004B3000000121,0x10419000000021, +0x10441000000121,0x00210000000021,0x00211000000121,0x02C15000000021,0x02C45000000121,0x16E47000000021, +0x16E67000000121,0x0A754000000021,0x0A755000000121,0x16E45000000021,0x16E65000000121,0x001C7000000031, +0x001C8000000131,0x001C9000000231,0x0047E000000021,0x0047F000000121,0x001FC000000021,0x001FD000000121, +0x0020E000000021,0x0020F000000121,0x00244000000021,0x00289000000121,0x01F77000000021,0x01FDB000000121, +0x02CD6000000021,0x02CD7000000121,0x10589000000021,0x105B0000000121,0x00422000000041,0x00442000000141, +0x01C84000000241,0x01C85000000341,0x010E7000000021,0x01CA7000000121,0x004FA000000021,0x004FB000000121, +0x010D5000000021,0x01C95000000121,0x01EAC000000021,0x01EAD000000121,0x010B7000000021,0x02D17000000121, +0x013A1000000021,0x0AB71000000121,0x0A7C2000000021,0x0A7C3000000121,0x1E907000000021,0x1E929000000121, +0x013F5000000021,0x013FD000000121,0x01EE2000000021,0x01EE3000000121,0x01F62000000021,0x01F6A000000121, +0x01E92000000021,0x01E93000000121,0x001D5000000021,0x001D6000000121,0x02C06000000021,0x02C36000000121, +0x10C8B000000021,0x10CCB000000121,0x01F70000000021,0x01FBA000000121,0x003EC000000021,0x003ED000000121, +0x1E915000000021,0x1E937000000121,0x0216E000000021,0x0217E000000121,0x013C0000000021,0x0AB90000000121, +0x01EF4000000021,0x01EF5000000121,0x01FB2000000021,0x01F703B9000122,0x0FF3A000000021,0x0FF5A000000121, +0x118BC000000021,0x118DC000000121,0x004AA000000021,0x004AB000000121,0x02163000000021,0x02173000000121, +0x01E1C000000021,0x01E1D000000121,0x013C8000000021,0x0AB98000000121,0x118AF000000021,0x118CF000000121, +0x01E9A000000021,0x000612BE000122,0x10571000000021,0x10598000000121,0x10CA7000000021,0x10CE7000000121, +0x10C98000000021,0x10CD8000000121,0x00051000000021,0x00071000000121,0x004F2000000021,0x004F3000000121, +0x10CAA000000021,0x10CEA000000121,0x010AF000000021,0x02D0F000000121,0x02C8E000000021,0x02C8F000000121, +0x02CC4000000021,0x02CC5000000121,0x01E0A000000021,0x01E0B000000121,0x0FB15000000021,0x0057456B000122, +0x16E50000000021,0x16E70000000121,0x1058E000000021,0x105B5000000121,0x10411000000021,0x10439000000121, +0x10423000000021,0x1044B000000121,0x0053A000000021,0x0056A000000121,0x01E6C000000021,0x01E6D000000121, +0x104BE000000021,0x104E6000000121,0x10424000000021,0x1044C000000121,0x010A9000000021,0x02D09000000121, +0x024C2000000021,0x024DC000000121,0x10C81000000021,0x10CC1000000121,0x013BC000000021,0x0AB8C000000121, +0x00462000000031,0x00463000000131,0x01C87000000231,0x118A6000000021,0x118C6000000121,0x01E4A000000021, +0x01E4B000000121,0x02162000000021,0x02172000000121,0x01ED4000000021,0x01ED5000000121,0x010AA000000021, +0x02D0A000000121,0x004EC000000021,0x004ED000000121,0x02C0C000000021,0x02C3C000000121,0x0A79A000000021, +0x0A79B000000121,0x004CB000000021,0x004CC000000121,0x104BD000000021,0x104E5000000121,0x00370000000021, +0x00371000000121,0x01FE7000000021,0x003C5308342123,0x1E914000000021,0x1E936000000121,0x003DA000000021, +0x003DB000000121,0x01F35000000021,0x01F3D000000121,0x16E51000000021,0x16E71000000121,0x00392000000031, +0x003B2000000131,0x003D0000000231,0x02C96000000021,0x02C97000000121,0x01FA5000000031,0x01FAD000000131, +0x01F653B9000232,0x00391000000021,0x003B1000000121,0x00534000000021,0x00564000000121,0x0041B000000021, +0x0043B000000121,0x013DF000000021,0x0ABAF000000121,0x02C2C000000021,0x02C5C000000121,0x00124000000021, +0x00125000000121,0x10CA2000000021,0x10CE2000000121,0x01E8C000000021,0x01E8D000000121,0x01EB4000000021, +0x01EB5000000121,0x0016C000000021,0x0016D000000121,0x01E02000000021,0x01E03000000121,0x0019A000000021, +0x0023D000000121,0x00102000000021,0x00103000000121,0x01F14000000021,0x01F1C000000121,0x0FF28000000021, +0x0FF48000000121,0x10C80000000021,0x10CC0000000121,0x010EE000000021,0x01CAE000000121,0x01F55000000021, +0x01F5D000000121,0x0A77B000000021,0x0A77C000000121,0x01FC7000000021,0x003B73423B9123,0x00059000000021, +0x00079000000121,0x0014A000000021,0x0014B000000121,0x01E24000000021,0x01E25000000121,0x013BD000000021, +0x0AB8D000000121,0x02CBC000000021,0x02CBD000000121,0x1040D000000021,0x10435000000121,0x1058F000000021, +0x105B6000000121,0x118A7000000021,0x118C7000000121,0x0A660000000021,0x0A661000000121,0x00514000000021, +0x00515000000121,0x0052E000000021,0x0052F000000121,0x004A4000000021,0x004A5000000121,0x00400000000021, +0x00450000000121,0x16E58000000021,0x16E78000000121,0x0A64E000000021,0x0A64F000000121,0x0FF2E000000021, +0x0FF4E000000121,0x1040C000000021,0x10434000000121,0x000DB000000021,0x000FB000000121,0x001CD000000021, +0x001CE000000121,0x010E8000000021,0x01CA8000000121,0x0054F000000021,0x0057F000000121,0x0A738000000021, +0x0A739000000121,0x16E5F000000021,0x16E7F000000121,0x01FA6000000031,0x01FAE000000131,0x01F663B9000232, +0x1E90F000000021,0x1E931000000121,0x02C07000000021,0x02C37000000121,0x010A3000000021,0x02D03000000121, +0x0A7A0000000021,0x0A7A1000000121,0x00421000000031,0x00441000000131,0x01C83000000231,0x0A680000000021, +0x0A681000000121,0x00282000000021,0x0A7C5000000121,0x01D79000000021,0x0A77D000000121,0x024CB000000021, +0x024E5000000121,0x00401000000021,0x00451000000121,0x0A758000000021,0x0A759000000121,0x00058000000021, +0x00078000000121,0x00193000000021,0x00260000000121,0x10CA1000000021,0x10CE1000000121,0x0054E000000021, +0x0057E000000121,0x00186000000021,0x00254000000121,0x013DC000000021,0x0ABAC000000121,0x024BD000000021, +0x024D7000000121,0x001B3000000021,0x001B4000000121,0x0A696000000021,0x0A697000000121,0x00216000000021, +0x00217000000121,0x01ECE000000021,0x01ECF000000121,0x02168000000021,0x02178000000121,0x01FC6000000021, +0x003B7342000122,0x02C12000000021,0x02C42000000121,0x02C2F000000021,0x02C5F000000121,0x1E90E000000021, +0x1E930000000121,0x10CAB000000021,0x10CEB000000121,0x01E86000000021,0x01E87000000121,0x00412000000031, +0x00432000000131,0x01C80000000231,0x013D6000000021,0x0ABA6000000121,0x01EBA000000021,0x01EBB000000121, +0x1E91B000000021,0x1E93D000000121,0x1041A000000021,0x10442000000121,0x01EEE000000021,0x01EEF000000121, +0x0FF31000000021,0x0FF51000000121,0x0A7BC000000021,0x0A7BD000000121,0x001DB000000021,0x001DC000000121, +0x001A6000000021,0x00280000000121,0x01F07000000021,0x01F0F000000121,0x118BD000000021,0x118DD000000121, +0x000C8000000021,0x000E8000000121,0x004D2000000021,0x004D3000000121,0x010E1000000021,0x01CA1000000121, +0x013B7000000021,0x0AB87000000121,0x10585000000021,0x105AC000000121,0x16E4B000000021,0x16E6B000000121, +0x00172000000021,0x00173000000121,0x0049E000000021,0x0049F000000121,0x004E6000000021,0x004E7000000121, +0x010B0000000021,0x02D10000000121,0x01E99000000021,0x0007930A000122,0x001EE000000021,0x001EF000000121, +0x02C9C000000021,0x02C9D000000121,0x104B4000000021,0x104DC000000121,0x10C87000000021,0x10CC7000000121, +0x013BA000000021,0x0AB8A000000121,0x01E10000000021,0x01E11000000121,0x00230000000021,0x00231000000121, +0x00428000000021,0x00448000000121,0x02CD0000000021,0x02CD1000000121,0x118A0000000021,0x118C0000000121, +0x003E0000000021,0x003E1000000121,0x01FF4000000021,0x003CE3B9000122,0x0A780000000021,0x0A781000000121, +0x010F5000000021,0x01CB5000000121,0x0053B000000021,0x0056B000000121,0x000D5000000021,0x000F5000000121, +0x10588000000021,0x105AF000000121,0x00414000000031,0x00434000000131,0x01C81000000231,0x01FA4000000031, +0x01FAC000000131,0x01F643B9000232,0x0012A000000021,0x0012B000000121,0x00052000000021,0x00072000000121, +0x024B7000000021,0x024D1000000121,0x1E908000000021,0x1E92A000000121,0x00398000000041,0x003B8000000141, +0x003D1000000241,0x003F4000000341,0x00202000000021,0x00203000000121,0x01F85000000031,0x01F8D000000131, +0x01F053B9000232,0x00470000000021,0x00471000000121,0x00271000000021,0x02C6E000000121,0x02C1B000000021, +0x02C4B000000121,0x0FB03000000021,0x00066066069123,0x0048A000000021,0x0048B000000121,0x0A752000000021, +0x0A753000000121,0x0FF25000000021,0x0FF45000000121,0x00407000000021,0x00457000000121,0x000C1000000021, +0x000E1000000121,0x01E44000000021,0x01E45000000121,0x01F97000000031,0x01F9F000000131,0x01F273B9000232, +0x00548000000021,0x00578000000121,0x0021C000000021,0x0021D000000121,0x013E5000000021,0x0ABB5000000121, +0x0051A000000021,0x0051B000000121,0x02CB6000000021,0x02CB7000000121,0x0A654000000021,0x0A655000000121, +0x10403000000021,0x1042B000000121,0x01E72000000021,0x01E73000000121,0x010D4000000021,0x01C94000000121, +0x104C1000000021,0x104E9000000121,0x10C8A000000021,0x10CCA000000121,0x01E2A000000021,0x01E2B000000121, +0x00462000000031,0x00463000000131,0x01C87000000231,0x01F76000000021,0x01FDA000000121,0x00053000000031, +0x00073000000131,0x0017F000000231,0x02C26000000021,0x02C56000000121,0x013A0000000021,0x0AB70000000121, +0x003FA000000021,0x003FB000000121,0x004C5000000021,0x004C6000000121,0x01F92000000031,0x01F9A000000131, +0x01F223B9000232,0x00555000000021,0x00585000000121,0x013E8000000021,0x0ABB8000000121,0x001C7000000031, +0x001C8000000131,0x001C9000000231,0x01F42000000021,0x01F4A000000121,0x01F67000000021,0x01F6F000000121, +0x1057C000000021,0x105A3000000121,0x0A7B4000000021,0x0A7B5000000121,0x0A698000000021,0x0A699000000121, +0x1E904000000021,0x1E926000000121,0x0040C000000021,0x0045C000000121,0x010DA000000021,0x01C9A000000121, +0x01FD6000000021,0x003B9342000122,0x000D0000000021,0x000F0000000121,0x16E46000000021,0x16E66000000121, +0x01EC2000000021,0x01EC3000000121,0x001E4000000021,0x001E5000000121,0x00044000000021,0x00064000000121, +0x0017D000000021,0x0017E000000121,0x01F21000000021,0x01F29000000121,0x0FF39000000021,0x0FF59000000121, +0x013AC000000021,0x0AB7C000000121,0x00587000000021,0x00565582000122,0x01F00000000021,0x01F08000000121, +0x003A5000000021,0x003C5000000121,0x00158000000021,0x00159000000121,0x104CF000000021,0x104F7000000121, +0x01E3A000000021,0x01E3B000000121,0x0A72C000000021,0x0A72D000000121,0x118B7000000021,0x118D7000000121, +0x00112000000021,0x00113000000121,0x01E36000000021,0x01E37000000121,0x16E4E000000021,0x16E6E000000121, +0x01F7D000000021,0x01FFB000000121,0x00494000000021,0x00495000000121,0x01E80000000021,0x01E81000000121, +0x00116000000021,0x00117000000121,0x0042D000000021,0x0044D000000121,0x013F2000000021,0x013FA000000121, +0x00179000000021,0x0017A000000121,0x004DA000000021,0x004DB000000121,0x02CA8000000021,0x02CA9000000121, +0x000CC000000021,0x000EC000000121,0x001A2000000021,0x001A3000000121,0x003A1000000031,0x003C1000000131, +0x003F1000000231,0x01E7C000000021,0x01E7D000000121,0x013CF000000021,0x0AB9F000000121,0x10412000000021, +0x1043A000000121,0x00520000000021,0x00521000000121,0x02C1C000000021,0x02C4C000000121,0x0026B000000021, +0x02C62000000121,0x0FB14000000021,0x00574565000122,0x0015C000000021,0x0015D000000121,0x0A652000000021, +0x0A653000000121,0x0FF26000000021,0x0FF46000000121,0x001E8000000021,0x001E9000000121,0x010B6000000021, +0x02D16000000121,0x0A656000000021,0x0A657000000121,0x0051C000000021,0x0051D000000121,0x013C3000000021, +0x0AB93000000121,0x10591000000021,0x105B8000000121,0x104CB000000021,0x104F3000000121,0x01EC6000000021, +0x01EC7000000121,0x001E0000000021,0x001E1000000121,0x01F63000000021,0x01F6B000000121,0x02C01000000021, +0x02C31000000121,0x1E900000000021,0x1E922000000121,0x01E78000000021,0x01E79000000121,0x024CE000000021, +0x024E8000000121,0x0A76A000000021,0x0A76B000000121,0x0011A000000021,0x0011B000000121,0x00429000000021, +0x00449000000121,0x01F84000000031,0x01F8C000000131,0x01F043B9000232,0x010D6000000021,0x01C96000000121, +0x01FB1000000021,0x01FB9000000121,0x0A762000000021,0x0A763000000121,0x10CB2000000021,0x10CF2000000121, +0x02C20000000021,0x02C50000000121,0x010BE000000021,0x02D1E000000121,0x1041E000000021,0x10446000000121, +0x01FF7000000021,0x003C93423B9123,0x004E2000000021,0x004E3000000121,0x01F90000000031,0x01F98000000131, +0x01F203B9000232,0x004DE000000021,0x004DF000000121,0x01F94000000031,0x01F9C000000131,0x01F243B9000232, +0x00541000000021,0x00571000000121,0x00545000000021,0x00575000000121,0x01F25000000021,0x01F2D000000121, +0x00154000000021,0x00155000000121,0x02C24000000021,0x02C54000000121,0x013EA000000021,0x0ABBA000000121, +0x00181000000021,0x00253000000121,0x003A3000000031,0x003C2000000131,0x003C3000000231,0x118B3000000021, +0x118D3000000121,0x010BA000000021,0x02D1A000000121,0x00180000000021,0x00243000000121,0x01E3E000000021, +0x01E3F000000121,0x010FF000000021,0x01CBF000000121,0x01FF3000000031,0x01FFC000000131,0x003C93B9000232, +0x010D2000000021,0x01C92000000121,0x0A76E000000021,0x0A76F000000121,0x10C88000000021,0x10CC8000000121, +0x01C88000000031,0x0A64A000000131,0x0A64B000000231,0x010B2000000021,0x02D12000000121,0x013C7000000021, +0x0AB97000000121,0x00518000000021,0x00519000000121,0x0A766000000021,0x0A767000000121,0x001EC000000021, +0x001ED000000121,0x104C3000000021,0x104EB000000121,0x10574000000021,0x1059B000000121,0x013EE000000021, +0x0ABBE000000121,0x1E91C000000021,0x1E93E000000121,0x010E2000000021,0x01CA2000000121,0x02C05000000021, +0x02C35000000121,0x004A0000000021,0x004A1000000121,0x01E42000000021,0x01E43000000121,0x013B4000000021, +0x0AB84000000121,0x118BF000000021,0x118DF000000121,0x00150000000021,0x00151000000121,0x01F56000000021, +0x003C5313342123,0x02CB0000000021,0x02CB1000000121,0x013A4000000021,0x0AB74000000121,0x004C1000000021, +0x004C2000000121,0x001CA000000031,0x001CB000000131,0x001CC000000231,0x0004C000000021,0x0006C000000121, +0x104C7000000021,0x104EF000000121,0x16E5A000000021,0x16E7A000000121,0x00222000000021,0x00223000000121, +0x00490000000021,0x00491000000121,0x02CF2000000021,0x02CF3000000121,0x10595000000021,0x105BC000000121, +0x0053D000000021,0x0056D000000121,0x00388000000021,0x003AD000000121,0x00549000000021,0x00579000000121, +0x013E2000000021,0x0ABB2000000121,0x16E4A000000021,0x16E6A000000121,0x01EFC000000021,0x01EFD000000121, +0x01F90000000031,0x01F98000000131,0x01F203B9000232,0x004D6000000021,0x004D7000000121,0x0A7B8000000021, +0x0A7B9000000121,0x00414000000031,0x00434000000131,0x01C81000000231,0x10CAD000000021,0x10CED000000121, +0x010F7000000021,0x01CB7000000121,0x16E55000000021,0x16E75000000121,0x0A728000000021,0x0A729000000121, +0x01E00000000021,0x01E01000000121,0x00232000000021,0x00233000000121,0x010A5000000021,0x02D05000000121, +0x01F15000000021,0x01F1D000000121,0x003A9000000031,0x003C9000000131,0x02126000000231,0x0013B000000021, +0x0013C000000121,0x00408000000021,0x00458000000121,0x000DC000000021,0x000FC000000121,0x01EBE000000021, +0x01EBF000000121,0x02C18000000021,0x02C48000000121,0x0A7A8000000021,0x0A7A9000000121,0x0216B000000021, +0x0217B000000121,0x02C10000000021,0x02C40000000121,0x02CDE000000021,0x02CDF000000121,0x0029E000000021, +0x0A7B0000000121,0x000D4000000021,0x000F4000000121,0x010EF000000021,0x01CAF000000121,0x00551000000021, +0x00581000000121,0x013DA000000021,0x0ABAA000000121,0x00535000000021,0x00565000000121,0x01FA0000000031, +0x01FA8000000131,0x01F603B9000232,0x024C6000000021,0x024E0000000121,0x00410000000021,0x00430000000121, +0x01EB6000000021,0x01EB7000000121,0x01F84000000031,0x01F8C000000131,0x01F043B9000232,0x10416000000021, +0x1043E000000121,0x16E42000000021,0x16E62000000121,0x00164000000021,0x00165000000121,0x02CA0000000021, +0x02CA1000000121,0x01E2E000000021,0x01E2F000000121,0x10C95000000021,0x10CD5000000121,0x00498000000021, +0x00499000000121,0x0010A000000021,0x0010B000000121,0x10C9D000000021,0x10CDD000000121,0x118AA000000021, +0x118CA000000121,0x01E88000000021,0x01E89000000121,0x00528000000021,0x00529000000121,0x013D7000000021, +0x0ABA7000000121,0x0A65A000000021,0x0A65B000000121,0x0022A000000021,0x0022B000000121,0x01FA5000000031, +0x01FAD000000131,0x01F653B9000232,0x104B3000000021,0x104DB000000121,0x1E90C000000021,0x1E92E000000121, +0x024BB000000021,0x024D5000000121,0x001F4000000021,0x001F5000000121,0x0A690000000021,0x0A691000000121, +0x0FF29000000021,0x0FF49000000121,0x02C75000000021,0x02C76000000121,0x02CB8000000021,0x02CB9000000121, +0x10401000000021,0x10429000000121,0x02C0D000000021,0x02C3D000000121,0x104D0000000021,0x104F8000000121, +0x1E913000000021,0x1E935000000121,0x001AF000000021,0x001B0000000121,0x0A7C7000000021,0x0A7C8000000121, +0x013BF000000021,0x0AB8F000000121,0x10402000000021,0x1042A000000121,0x010EA000000021,0x01CAA000000121, +0x104BF000000021,0x104E7000000121,0x1058D000000021,0x105B4000000121,0x02164000000021,0x02174000000121, +0x0018E000000021,0x001DD000000121,0x001D3000000021,0x001D4000000121,0x01F10000000021,0x01F18000000121, +0x01F57000000021,0x01F5F000000121,0x01ED2000000021,0x01ED3000000121,0x0FF2A000000021,0x0FF4A000000121, +0x01E04000000021,0x01E05000000121,0x004EE000000021,0x004EF000000121,0x02C94000000021,0x02C95000000121, +0x000C0000000021,0x000E0000000121,0x01FE6000000021,0x003C5342000122,0x013DB000000021,0x0ABAB000000121, +0x001B2000000021,0x0028B000000121,0x10426000000021,0x1044E000000121,0x0A662000000021,0x0A663000000121, +0x00054000000021,0x00074000000121,0x00556000000021,0x00586000000121,0x0042A000000031,0x0044A000000131, +0x01C86000000231,0x10422000000021,0x1044A000000121,0x01F36000000021,0x01F3E000000121,0x01FA1000000031, +0x01FA9000000131,0x01F613B9000232,0x004CD000000021,0x004CE000000121,0x104BB000000021,0x104E3000000121, +0x0023B000000021,0x0023C000000121,0x001CF000000021,0x001D0000000121,0x0050C000000021,0x0050D000000121, +0x0A646000000021,0x0A647000000121,0x01E46000000021,0x01E47000000121,0x10CA6000000021,0x10CE6000000121, +0x0A779000000021,0x0A77A000000121,0x0FF36000000021,0x0FF56000000121,0x118A2000000021,0x118C2000000121, +0x004EA000000021,0x004EB000000121,0x0041D000000021,0x0043D000000121,0x0A794000000021,0x0A7C4000000121, +0x0A688000000021,0x0A689000000121,0x01EB2000000021,0x01EB3000000121,0x02160000000021,0x02170000000121, +0x01ED6000000021,0x01ED7000000121,0x024C3000000021,0x024DD000000121,0x16E5E000000021,0x16E7E000000121, +0x004AC000000021,0x004AD000000121,0x16E52000000021,0x16E72000000121,0x0023E000000021,0x02C66000000121, +0x02CB4000000021,0x02CB5000000121,0x0FF2D000000021,0x0FF4D000000121,0x0014C000000021,0x0014D000000121, +0x01E22000000021,0x01E23000000121,0x013BB000000021,0x0AB8B000000121,0x00143000000021,0x00144000000121, +0x0FB04000000021,0x0006606606C123,0x10581000000021,0x105A8000000121,0x00170000000021,0x00171000000121, +0x01E94000000021,0x01E95000000121,0x01FC2000000021,0x01F743B9000122,0x02C28000000021,0x02C58000000121, +0x1E910000000021,0x1E932000000121,0x1040E000000021,0x10436000000121,0x01F83000000031,0x01F8B000000131, +0x01F033B9000232,0x0A798000000021,0x0A799000000121,0x013B8000000021,0x0AB88000000121,0x01E70000000021, +0x01E71000000121,0x00422000000041,0x00442000000141,0x01C84000000241,0x01C85000000341,0x10C85000000021, +0x10CC5000000121,0x01EAE000000021,0x01EAF000000121,0x00122000000021,0x00123000000121,0x104B2000000021, +0x104DA000000121,0x10C8C000000021,0x10CCC000000121,0x10405000000021,0x1042D000000121,0x01F87000000031, +0x01F8F000000131,0x01F073B9000232,0x00420000000021,0x00440000000121,0x001AE000000021,0x00288000000121, +0x0021A000000021,0x0021B000000121,0x0038C000000021,0x003CC000000121,0x01F95000000031,0x01F9D000000131, +0x01F253B9000232,0x00345000000041,0x00399000000141,0x003B9000000241,0x01FBE000000341,0x0018A000000021, +0x00257000000121,0x00390000000031,0x01FD3000000131,0x003B9308301233,0x010B1000000021,0x02D11000000121, +0x0011E000000021,0x0011F000000121,0x01E08000000021,0x01E09000000121,0x02C90000000021,0x02C91000000121, +0x0A7C0000000021,0x0A7C1000000121,0x013E7000000021,0x0ABB7000000121,0x10580000000021,0x105A7000000121, +0x0041C000000021,0x0043C000000121,0x0FB05000000031,0x0FB06000000131,0x00073074000232,0x0A7A4000000021, +0x0A7A5000000121,0x01E74000000021,0x01E75000000121,0x02C14000000021,0x02C44000000121,0x1E90D000000021, +0x1E92F000000121,0x013A5000000021,0x0AB75000000121,0x010F3000000021,0x01CB3000000121,0x024BA000000021, +0x024D4000000121,0x0013F000000021,0x00140000000121,0x0039D000000021,0x003BD000000121,0x02CE2000000021, +0x02CE3000000121,0x010A1000000021,0x02D01000000121,0x00508000000021,0x00509000000121,0x0004D000000021, +0x0006D000000121,0x00389000000021,0x003AE000000121,0x0048C000000021,0x0048D000000121,0x02C04000000021, +0x02C34000000121,0x0216F000000021,0x0217F000000121,0x004B0000000021,0x004B1000000121,0x02CD2000000021, +0x02CD3000000121,0x0A734000000021,0x0A735000000121,0x0FB01000000021,0x00066069000122,0x00050000000021, +0x00070000000121,0x00160000000021,0x00161000000121,0x10584000000021,0x105AB000000121,0x01E32000000021, +0x01E33000000121,0x10CA9000000021,0x10CE9000000121,0x00200000000021,0x00201000000121,0x118AB000000021, +0x118CB000000121,0x0A786000000021,0x0A787000000121,0x118BB000000021,0x118DB000000121,0x118AE000000021, +0x118CE000000121,0x0021E000000021,0x0021F000000121,0x003AA000000021,0x003CA000000121,0x010C2000000021, +0x02D22000000121,0x013C4000000021,0x0AB94000000121,0x00539000000021,0x00569000000121,0x0A74A000000021, +0x0A74B000000121,0x000C3000000021,0x000E3000000121,0x0046E000000021,0x0046F000000121,0x0054D000000021, +0x0057D000000121,0x01FE2000000021,0x003C5308300123,0x010E3000000021,0x01CA3000000121,0x01F52000000021, +0x003C5313300123,0x003DE000000021,0x003DF000000121,0x024CA000000021,0x024E4000000121,0x00345000000041, +0x00399000000141,0x003B9000000241,0x01FBE000000341,0x10C99000000021,0x10CD9000000121,0x0A75A000000021, +0x0A75B000000121,0x00419000000021,0x00439000000121,0x02C09000000021,0x02C39000000121,0x0037D000000021, +0x003FF000000121,0x01F26000000021,0x01F2E000000121,0x118B2000000021,0x118D2000000121,0x02183000000021, +0x02184000000121,0x02C23000000021,0x02C53000000121,0x00132000000021,0x00133000000121,0x01E56000000021, +0x01E57000000121,0x010AE000000021,0x02D0E000000121,0x0A740000000021,0x0A741000000121,0x000DD000000021, +0x000FD000000121,0x010E6000000021,0x01CA6000000121,0x01E60000000031,0x01E61000000131,0x01E9B000000231, +0x00478000000021,0x00479000000121,0x0022E000000021,0x0022F000000121,0x01FF6000000021,0x003C9342000122, +0x01FD2000000021,0x003B9308300123,0x0A694000000021,0x0A695000000121,0x0052C000000021,0x0052D000000121, +0x10570000000021,0x10597000000121,0x0A666000000021,0x0A667000000121,0x001F0000000021,0x0006A30C000122, +0x10C96000000021,0x10CD6000000121,0x0020A000000021,0x0020B000000121,0x024BF000000021,0x024D9000000121, +0x013CB000000021,0x0AB9B000000121,0x10C9C000000021,0x10CDC000000121,0x0041E000000031,0x0043E000000131, +0x01C82000000231,0x01E84000000021,0x01E85000000121,0x01EF0000000021,0x01EF1000000121,0x013A8000000021, +0x0AB78000000121,0x16E59000000021,0x16E79000000121,0x02CA4000000021,0x02CA5000000121,0x0A724000000021, +0x0A725000000121,0x0049C000000021,0x0049D000000121,0x0010E000000021,0x0010F000000121,0x01FA4000000031, +0x01FAC000000131,0x01F643B9000232,0x104D3000000021,0x104FB000000121,0x1E903000000021,0x1E925000000121, +0x00191000000021,0x00192000000121,0x01F80000000031,0x01F88000000131,0x01F003B9000232,0x013DE000000021, +0x0ABAE000000121,0x003A0000000031,0x003C0000000131,0x003D6000000231,0x013AD000000021,0x0AB7D000000121, +0x00206000000021,0x00207000000121,0x01F45000000021,0x01F4D000000121,0x003EA000000021,0x003EB000000121, +0x010BB000000021,0x02D1B000000121,0x00474000000021,0x00475000000121,0x0FF38000000021,0x0FF58000000121, +0x004FE000000021,0x004FF000000121,0x02C84000000021,0x02C85000000121,0x10413000000021,0x1043B000000121, +0x01FD7000000021,0x003B9308342123,0x01E5C000000021,0x01E5D000000121,0x01EE4000000021,0x01EE5000000121, +0x02CC8000000021,0x02CC9000000121,0x02C1F000000021,0x02C4F000000121,0x004BA000000021,0x004BB000000121, +0x104CE000000021,0x104F6000000121,0x1E905000000021,0x1E927000000121,0x000D1000000021,0x000F1000000121, +0x00472000000021,0x00473000000121,0x118B6000000021,0x118D6000000121,0x01F78000000021,0x01FF8000000121, +0x00043000000021,0x00063000000121,0x01EA2000000021,0x01EA3000000121,0x01F24000000021,0x01F2C000000121, +0x0019D000000021,0x00272000000121,0x004B6000000021,0x004B7000000121,0x000DF000000031,0x01E9E000000131, +0x00073073000232,0x01F87000000031,0x01F8F000000131,0x01F073B9000232,0x01E14000000021,0x01E15000000121, +0x01EE6000000021,0x01EE7000000121,0x0040B000000021,0x0045B000000121,0x00409000000021,0x00459000000121, +0x1057D000000021,0x105A4000000121,0x003A8000000021,0x003C8000000121,0x01E5A000000021,0x01E5B000000121, +0x1057F000000021,0x105A6000000121,0x00544000000021,0x00574000000121,0x010FE000000021,0x01CBE000000121, +0x01E12000000021,0x01E13000000121,0x010B9000000021,0x02D19000000121,0x00047000000021,0x00067000000121, +0x004FC000000021,0x004FD000000121,0x10C92000000021,0x10CD2000000121,0x02C86000000021,0x02C87000000121, +0x01E1A000000021,0x01E1B000000121,0x10C90000000021,0x10CD0000000121,0x010BF000000021,0x02D1F000000121, +0x013CA000000021,0x0AB9A000000121,0x16E49000000021,0x16E69000000121,0x00041000000021,0x00061000000121, +0x001BC000000021,0x001BD000000121,0x01EEA000000021,0x01EEB000000121,0x00502000000021,0x00503000000121, +0x00248000000021,0x00249000000121,0x01F95000000031,0x01F9D000000131,0x01F253B9000232,0x010DF000000021, +0x01C9F000000121,0x001C4000000031,0x001C5000000131,0x001C6000000231,0x00546000000021,0x00576000000121, +0x013EF000000021,0x0ABBF000000121,0x02CCC000000021,0x02CCD000000121,0x010D7000000021,0x01C97000000121, +0x013A7000000021,0x0AB77000000121,0x0047A000000021,0x0047B000000121,0x00134000000021,0x00135000000121, +0x0042A000000031,0x0044A000000131,0x01C86000000231,0x02C19000000021,0x02C49000000121,0x00204000000021, +0x00205000000121,0x0025C000000021,0x0A7AB000000121,0x024CF000000021,0x024E9000000121,0x01E54000000021, +0x01E55000000121,0x10579000000021,0x105A0000000121,0x0054A000000021,0x0057A000000121,0x0A684000000021, +0x0A685000000121,0x0FF27000000021,0x0FF47000000121,0x01F05000000021,0x01F0D000000121,0x0FB13000000021, +0x00574576000122,0x02132000000021,0x0214E000000121,0x0024C000000021,0x0024D000000121,0x013B5000000021, +0x0AB85000000121,0x02CC6000000021,0x02CC7000000121,0x10408000000021,0x10430000000121,0x02C1D000000021, +0x02C4D000000121,0x0023F000000021,0x02C7E000000121,0x0A742000000021,0x0A743000000121,0x01E62000000021, +0x01E63000000121,0x10CA8000000021,0x10CE8000000121,0x000B5000000031,0x0039C000000131,0x003BC000000231, +0x01F81000000031,0x01F89000000131,0x01F013B9000232,0x10C9A000000021,0x10CDA000000121,0x0012E000000021, +0x0012F000000121,0x00403000000021,0x00453000000121,0x001FE000000021,0x001FF000000121,0x00345000000041, +0x00399000000141,0x003B9000000241,0x01FBE000000341,0x00174000000021,0x00175000000121,0x003CF000000021, +0x003D7000000121,0x024CD000000021,0x024E7000000121,0x01FB3000000031,0x01FBC000000131,0x003B13B9000232, +0x118AD000000021,0x118CD000000121,0x0A744000000021,0x0A745000000121,0x000D9000000021,0x000F9000000121, +0x01E0C000000021,0x01E0D000000121,0x02C17000000021,0x02C47000000121,0x003E2000000021,0x003E3000000121, +0x0026C000000021,0x0A7AD000000121,0x0A756000000021,0x0A757000000121,0x00405000000021,0x00455000000121, +0x00197000000021,0x00268000000121,0x01F60000000021,0x01F68000000121,0x01EEC000000021,0x01EED000000121, +0x02C8C000000021,0x02C8D000000121,0x010F2000000021,0x01CB2000000121,0x104B6000000021,0x104DE000000121, +0x1E91D000000021,0x1E93F000000121,0x1040A000000021,0x10432000000121,0x013C6000000021,0x0AB96000000121, +0x16E41000000021,0x16E61000000121,0x00424000000021,0x00444000000121,0x001A9000000021,0x00283000000121, +0x0039A000000031,0x003BA000000131,0x003F0000000231,0x010E5000000021,0x01CA5000000121,0x104C8000000021, +0x104F0000000121,0x10407000000021,0x1042F000000121,0x013D0000000021,0x0ABA0000000121,0x01FA2000000031, +0x01FAA000000131,0x01F623B9000232,0x0046C000000021,0x0046D000000121,0x010A0000000021,0x02D00000000121, +0x0A782000000021,0x0A783000000121,0x000C5000000031,0x000E5000000131,0x0212B000000231,0x004B4000000021, +0x004B5000000121,0x02CCE000000021,0x02CCF000000121,0x01FF2000000021,0x01F7C3B9000122,0x0FF21000000021, +0x0FF41000000121,0x0A73A000000021,0x0A73B000000121,0x104B9000000021,0x104E1000000121,0x01EA4000000021, +0x01EA5000000121,0x0038F000000021,0x003CE000000121,0x024BE000000021,0x024D8000000121,0x003B0000000031, +0x01FE3000000131,0x003C5308301233,0x00049000000021,0x00069000000121,0x1E91F000000021,0x1E941000000121, +0x00246000000021,0x00247000000121,0x01F73000000021,0x01FC9000000121,0x02C67000000021,0x02C68000000121, +0x02166000000021,0x02176000000121,0x00100000000021,0x00101000000121,0x003E4000000021,0x003E5000000121, +0x013D2000000021,0x0ABA2000000121,0x0A79E000000021,0x0A79F000000121,0x01FA0000000031,0x01FA8000000131, +0x01F603B9000232,0x10CB1000000021,0x10CF1000000121,0x16E5D000000021,0x16E7D000000121,0x010C1000000021, +0x02D21000000121,0x0A7F5000000021,0x0A7F6000000121,0x013BE000000021,0x0AB8E000000121,0x0042C000000021, +0x0044C000000121,0x01FC4000000021,0x003AE3B9000122,0x010DD000000021,0x01C9D000000121,0x01F93000000031, +0x01F9B000000131,0x01F233B9000232,0x0024E000000021,0x0024F000000121,0x004BC000000021,0x004BD000000121, +0x00176000000021,0x00177000000121,0x013AB000000021,0x0AB7B000000121,0x013E1000000021,0x0ABB1000000121, +0x00504000000021,0x00505000000121,0x01F03000000021,0x01F0B000000121,0x0A686000000021,0x0A687000000121, +0x0054C000000021,0x0057C000000121,0x16E4F000000021,0x16E6F000000121,0x010EB000000021,0x01CAB000000121, +0x013D9000000021,0x0ABA9000000121,0x0023A000000021,0x02C65000000121,0x004A8000000021,0x004A9000000121, +0x02CDA000000021,0x02CDB000000121,0x0041E000000031,0x0043E000000131,0x01C82000000231,0x01F81000000031, +0x01F89000000131,0x01F013B9000232,0x00394000000021,0x003B4000000121,0x02C72000000021,0x02C73000000121, +0x00510000000021,0x00511000000121,0x01E26000000021,0x01E27000000121,0x0A642000000021,0x0A643000000121, +0x004C9000000021,0x004CA000000121,0x00147000000021,0x00148000000121,0x01EB0000000021,0x01EB1000000121, +0x0A75E000000021,0x0A75F000000121,0x1058C000000021,0x105B3000000121,0x0A73C000000021,0x0A73D000000121, +0x104D1000000021,0x104F9000000121,0x104D2000000021,0x104FA000000121,0x10590000000021,0x105B7000000121, +0x00055000000021,0x00075000000121,0x01F11000000021,0x01F19000000121,0x0037B000000021,0x003FD000000121, +0x01F31000000021,0x01F39000000121,0x02CBA000000021,0x02CBB000000121,0x00552000000021,0x00582000000121, +0x01FC3000000031,0x01FCC000000131,0x003B73B9000232,0x01E6E000000021,0x01E6F000000121,0x02167000000021, +0x02177000000121,0x000DE000000021,0x000FE000000121,0x00190000000021,0x0025B000000121,0x0A68C000000021, +0x0A68D000000121,0x01EF8000000021,0x01EF9000000121,0x104B0000000021,0x104D8000000121,0x10C8E000000021, +0x10CCE000000121,0x02C08000000021,0x02C38000000121,0x0016E000000021,0x0016F000000121,0x16E5C000000021, +0x16E7C000000121,0x010CD000000021,0x02D2D000000121,0x01F7B000000021,0x01FEB000000121,0x01E90000000021, +0x01E91000000121,0x013B3000000021,0x0AB83000000121,0x001D1000000021,0x001D2000000121,0x01F53000000021, +0x01F5B000000121,0x00126000000021,0x00127000000121,0x01E48000000021,0x01E49000000121,0x02C98000000021, +0x02C99000000121,0x10400000000021,0x10428000000121,0x01FA3000000031,0x01FAB000000131,0x01F633B9000232, +0x118B9000000021,0x118D9000000121,0x013B0000000021,0x0AB80000000121,0x01ED8000000021,0x01ED9000000121, +0x10CA4000000021,0x10CE4000000121,0x01F74000000021,0x01FCA000000121,0x00422000000041,0x00442000000141, +0x01C84000000241,0x01C85000000341,0x01EF2000000021,0x01EF3000000121,0x02161000000021,0x02171000000121, +0x10420000000021,0x10448000000121,0x001F1000000031,0x001F2000000131,0x001F3000000231,0x001D7000000021, +0x001D8000000121,0x0A68A000000021,0x0A68B000000121,0x003F7000000021,0x003F8000000121,0x0FF35000000021, +0x0FF55000000121,0x003DC000000021,0x003DD000000121,0x10C8D000000021,0x10CCD000000121,0x00418000000021, +0x00438000000121,0x00212000000021,0x00213000000121,0x004F0000000021,0x004F1000000121,0x024C1000000021, +0x024DB000000121,0x0050A000000021,0x0050B000000121,0x1E917000000021,0x1E939000000121,0x0A644000000021, +0x0A645000000121,0x00537000000021,0x00567000000121,0x010AC000000021,0x02D0C000000121,0x010AD000000021, +0x02D0D000000121,0x024C7000000021,0x024E1000000121,0x00460000000021,0x00461000000121,0x02C2B000000021, +0x02C5B000000121,0x16E56000000021,0x16E76000000121,0x010C7000000021,0x02D27000000121,0x0FB05000000031, +0x0FB06000000131,0x00073074000232,0x02CD4000000021,0x02CD5000000121,0x010F1000000021,0x01CB1000000121, +0x01F7A000000021,0x01FEA000000121,0x02C0B000000021,0x02C3B000000121,0x0FF34000000021,0x0FF54000000121, +0x10406000000021,0x1042E000000121,0x00417000000021,0x00437000000121,0x118BA000000021,0x118DA000000121, +0x01F82000000031,0x01F8A000000131,0x01F023B9000232,0x001F1000000031,0x001F2000000131,0x001F3000000231, +0x00395000000031,0x003B5000000131,0x003F5000000231,0x001B7000000021,0x00292000000121,0x0018F000000021, +0x00259000000121,0x00538000000021,0x00568000000121,0x0A66A000000021,0x0A66B000000121,0x01F32000000021, +0x01F3A000000121,0x10421000000021,0x10449000000121,0x0052A000000021,0x0052B000000121,0x00425000000021, +0x00445000000121,0x0A784000000021,0x0A785000000121,0x0004F000000021,0x0006F000000121,0x0A664000000021, +0x0A665000000121,0x01FA2000000031,0x01FAA000000131,0x01F623B9000232,0x104B1000000021,0x104D9000000121, +0x000C4000000021,0x000E4000000121,0x10CA5000000021,0x10CE5000000121,0x01EAA000000021,0x01EAB000000121, +0x013D8000000021,0x0ABA8000000121,0x000DF000000031,0x01E9E000000131,0x00073073000232,0x010E4000000021, +0x01CA4000000121,0x000D8000000021,0x000F8000000121,0x001CA000000031,0x001CB000000131,0x001CC000000231, +0x010D1000000021,0x01C91000000121,0x10575000000021,0x1059C000000121,0x0216C000000021,0x0217C000000121, +0x02C02000000021,0x02C32000000121,0x16E5B000000021,0x16E7B000000121,0x0A7D8000000021,0x0A7D9000000121, +0x0FF22000000021,0x0FF42000000121,0x00404000000021,0x00454000000121,0x010B3000000021,0x02D13000000121, +0x01ECA000000021,0x01ECB000000121,0x10409000000021,0x10431000000121,0x1E918000000021,0x1E93A000000121, +0x004F6000000021,0x004F7000000121,0x02CC0000000021,0x02CC1000000121,0x01E20000000021,0x01E21000000121, +0x0FB00000000021,0x00066066000122,0x104B7000000021,0x104DF000000121,0x0039B000000021,0x003BB000000121, +0x00196000000021,0x00269000000121,0x02C25000000021,0x02C55000000121,0x0A790000000021,0x0A791000000121, +0x0A764000000021,0x0A765000000121,0x0020C000000021,0x0020D000000121,0x01F94000000031,0x01F9C000000131, +0x01F243B9000232,0x118B0000000021,0x118D0000000121,0x00182000000021,0x00183000000121,0x02CAC000000021, +0x02CAD000000121,0x01F80000000031,0x01F88000000131,0x01F003B9000232,0x024CC000000021,0x024E6000000121, +0x00251000000021,0x02C6D000000121,0x00480000000021,0x00481000000121,0x01F54000000021,0x003C5313301123, +0x024B8000000021,0x024D2000000121,0x0054B000000021,0x0057B000000121,0x013AA000000021,0x0AB7A000000121, +0x0004B000000031,0x0006B000000131,0x0212A000000231,0x00261000000021,0x0A7AC000000121,0x00141000000021, +0x00142000000121,0x0039A000000031,0x003BA000000131,0x003F0000000231,0x010F8000000021,0x01CB8000000121, +0x104C4000000021,0x104EC000000121,0x00189000000021,0x00256000000121,0x010DE000000021,0x01C9E000000121, +0x01E68000000021,0x01E69000000121,0x013E6000000021,0x0ABB6000000121,0x01F04000000021,0x01F0C000000121, +0x10578000000021,0x1059F000000121,0x00411000000021,0x00431000000121,0x104BA000000021,0x104E2000000121, +0x00466000000021,0x00467000000121,0x0A736000000021,0x0A737000000121,0x01FE4000000021,0x003C1313000122, +0x000CB000000021,0x000EB000000121,0x010C0000000021,0x02D20000000121,0x10427000000021,0x1044F000000121, +0x001DE000000021,0x001DF000000121,0x02C92000000021,0x02C93000000121,0x00106000000021,0x00107000000121, +0x01E4E000000021,0x01E4F000000121,0x0042B000000021,0x0044B000000121,0x0A748000000021,0x0A749000000121, +0x02C11000000021,0x02C41000000121,0x0A7B3000000021,0x0AB53000000121,0x0053E000000021,0x0056E000000121, +0x0014E000000021,0x0014F000000121,0x013D3000000021,0x0ABA3000000121,0x00524000000021,0x00525000000121, +0x0A65E000000021,0x0A65F000000121,0x001F8000000021,0x001F9000000121,0x004AE000000021,0x004AF000000121, +0x0A77E000000021,0x0A77F000000121,0x003A0000000031,0x003C0000000131,0x003D6000000231,0x00265000000021, +0x0A78D000000121,0x01FB6000000021,0x003B1342000122,0x01FA1000000031,0x01FA9000000131,0x01F613B9000232, +0x01EDE000000021,0x01EDF000000121,0x013B9000000021,0x0AB89000000121,0x00168000000021,0x00169000000121, +0x00226000000021,0x00227000000121,0x013F1000000021,0x013F9000000121,0x01E06000000021,0x01E07000000121, +0x00120000000021,0x00121000000121,0x1041D000000021,0x10445000000121,0x10582000000021,0x105A9000000121, +0x01F66000000021,0x01F6E000000121,0x01E96000000021,0x00068331000122,0x010A6000000021,0x02D06000000121, +0x10C91000000021,0x10CD1000000121,0x01D8E000000021,0x0A7C6000000121,0x10C84000000021,0x10CC4000000121, +0x0FF2B000000021,0x0FF4B000000121,0x118A3000000021,0x118C3000000121,0x00048000000021,0x00068000000121, +0x013CC000000021,0x0AB9C000000121,0x1E91E000000021,0x1E940000000121,0x0038E000000021,0x003CD000000121, +0x00531000000021,0x00561000000121,]; +return FCE(t[index]); } struct uniProps diff --git a/std/uni/package.d b/std/uni/package.d index fec7e5f78ac..c7daa93a9f8 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -8073,22 +8073,23 @@ private int fullCasedCmp(Range)(dchar lhs, dchar rhs, ref Range rtail) // fullCaseTrie is packed index table if (idx == EMPTY_CASE_TRIE) return lhs; - immutable start = idx - fTable[idx].n; - immutable end = fTable[idx].size + start; - assert(fTable[start].entry_len == 1); + immutable start = idx - fTable(idx).n; + immutable end = fTable(idx).size + start; + assert(fTable(start).entry_len == 1); for (idx=start; idx> 36) & 0x1FFFF, (x >> 24) & 0xFFF, (x >> 12) & 0xFFF]; } + ubyte n() const { return (x >> 8) & 0xF; } + ubyte size() const { return (x >> 4) & 0xF; } + ubyte entry_len() const { return (x >> 0) & 0xF; } } struct CompEntry @@ -160,7 +184,7 @@ struct TrieEntry(T...) auto fullCaseEntry(dstring value, ubyte num, ubyte batch_size) { - dchar[3] val; + dchar[3] val = 0; val[0 .. value.length] = value[]; return FullCaseEntry(val, num, batch_size, cast(ubyte) value.length); } @@ -875,25 +899,30 @@ void writeCaseFolding(File sink) writeln("];"); writeln("return t;"); writeln("}"); - static uint maxLen = 0; - writeln("@property immutable(FullCaseEntry[]) fullCaseTable() nothrow @nogc @safe pure"); + writeln("@property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure"); writeln("{"); - writeln("alias FCE = FullCaseEntry;"); - writeln("static immutable FCE[] t = ["); + write("static immutable ulong[] t = ["); + int[4] maxS = 0; foreach (i, v; fullTable) { - maxLen = max(maxLen, v.entry_len); + foreach (j; 0 .. v.entry_len) + maxS[j] = max(maxS[j], v.value[j]); + if (v.entry_len > 1) { assert(v.n >= 1); // meaning that start of bucket is always single char } - writef("FCE(\"%s\", %s, %s, %s),", v.value, v.n, v.size, v.entry_len); - if (i % 4 == 0) writeln(); + if (i % 6 == 0) writeln(); + writef("0x%014X,", FCE(v.seq, v.n, v.size, v.entry_len).x); } writeln("];"); - writeln("return t;"); + writeln("return FCE(t[index]);"); writeln("}"); - stderr.writefln("MAX FCF len = %d", maxLen); + import core.bitop : bsr; + stderr.writefln("max seq bits: [%d, %d, %d]", 1 + bsr(maxS[0]), 1 + bsr(maxS[1]), 1 + bsr(maxS[2])); //[17, 11, 10] + stderr.writefln("max n = %d", fullTable.map!(x => x.n).maxElement); // 3 + stderr.writefln("max size = %d", fullTable.map!(x => x.size).maxElement); // 4 + stderr.writefln("max entry_len = %d", fullTable.map!(x => x.entry_len).maxElement); // 3 } } From bdbce3b67ddf4c4a0ed48d18305315ab7da5ba01 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 17:43:49 +0100 Subject: [PATCH 156/327] Use static array for table --- .dscanner.ini | 1 + std/internal/unicode_tables.d | 2 +- tools/unicode_table_generator.d | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.dscanner.ini b/.dscanner.ini index 4a79219bbfe..1e57b92b57d 100644 --- a/.dscanner.ini +++ b/.dscanner.ini @@ -255,6 +255,7 @@ has_public_example="-etc.c.curl,\ -std.internal.math.gammafunction,\ -std.internal.scopebuffer,\ -std.internal.test.dummyrange,\ +-std.internal.unicode_tables,\ -std.int128,\ -std.json,\ -std.mathspecial,\ diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index d400ee64e8e..0daae86557b 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -831,7 +831,7 @@ return t; } @property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure { -static immutable ulong[] t = [ +static immutable ulong[3188] t = [ 0x1E90B000000021,0x1E92D000000121,0x10CAE000000021,0x10CEE000000121,0x00496000000021,0x00497000000121, 0x1E911000000021,0x1E933000000121,0x0A722000000021,0x0A723000000121,0x01F79000000021,0x01FF9000000121, 0x01F44000000021,0x01F4C000000121,0x0015A000000021,0x0015B000000121,0x010FD000000021,0x01CBD000000121, diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 70ec6fde394..6f80ef3a109 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -901,7 +901,7 @@ void writeCaseFolding(File sink) writeln("}"); writeln("@property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure"); writeln("{"); - write("static immutable ulong[] t = ["); + writef("static immutable ulong[%d] t = [", fullTable.length); int[4] maxS = 0; foreach (i, v; fullTable) { From 90715f3b0712462a91cb602b92c31861770ccf74 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Mon, 8 Jan 2024 23:27:08 +0100 Subject: [PATCH 157/327] std.uni: use dstring for compositionTable --- std/internal/unicode_comp.d | 216 ++++++++++++++++++++++++++++++-- std/internal/unicode_tables.d | 5 - std/uni/package.d | 10 +- tools/unicode_table_generator.d | 38 ++++-- 4 files changed, 239 insertions(+), 30 deletions(-) diff --git a/std/internal/unicode_comp.d b/std/internal/unicode_comp.d index 6ce79e1f66a..160f2343ae2 100644 --- a/std/internal/unicode_comp.d +++ b/std/internal/unicode_comp.d @@ -10,11 +10,111 @@ static if (size_t.sizeof == 4) enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)([ 0x0, 0x40, 0x5c0], [ 0x100, 0xb00, 0x10a0], [ 0x2020100, 0x4020302, 0x6020205, 0x9080702, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x40003, 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x70006, 0x8, 0x9, 0xb000a, 0x0, 0xd000c, 0xf000e, 0x10, 0x0, 0x110000, 0x130012, 0x14, 0x15, 0x170016, 0x180000, 0x19, 0x180000, 0x1b001a, 0x180000, 0x1a, 0x180000, 0x1a, 0x180000, 0x1a, 0x0, 0x1a, 0x180000, 0x1c, 0x180000, 0x1a, 0x1d0000, 0x1a, 0x0, 0x1e, 0x1f0000, 0x20, 0x210000, 0x22, 0x240023, 0x250000, 0x26, 0x27, 0x280000, 0x0, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b, 0x0, 0x0, 0x2d, 0x0, 0x0, 0x2e0000, 0x0, 0x2f0000, 0x0, 0x0, 0x0, 0x30, 0x310000, 0x320000, 0x33, 0x340000, 0x360035, 0x370000, 0x380000, 0x390000, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x3d003c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x410000, 0x0, 0x420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450000, 0x46, 0x470000, 0x0, 0x0, 0x0, 0x0, 0x490048, 0x0, 0x0, 0x4a0035, 0x4b0000, 0x4c, 0x4d0000, 0x4e, 0x0, 0x0, 0x4f0000, 0x510050, 0x0, 0x0, 0x0, 0x1a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x530000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x540000, 0x0, 0x0, 0x0, 0x550000, 0x0, 0x560000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x580057, 0x0, 0x0, 0x590000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5b0000, 0x5c0000, 0x0, 0x5d, 0x5e, 0x0, 0x0, 0x5f0048, 0x600000, 0x0, 0x620061, 0x4d0000, 0x0, 0x63, 0x640000, 0x0, 0x0, 0x650000, 0x660000, 0x67001a, 0x0, 0x0, 0x0, 0x68, 0x0, 0x69, 0x0, 0x0, 0x410000, 0x6a, 0x410000, 0x0, 0x6b0000, 0x0, 0x6c0000, 0x0, 0x0, 0x0, 0x600000, 0x0, 0x0, 0x0, 0x6d0000, 0x6e, 0x0, 0x4e0000, 0x2c0000, 0x6f, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x410000, 0x0, 0x0, 0x0, 0x0, 0x71, 0x72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x740000, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x760000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x780000, 0x7a0079, 0x0, 0x0, 0x7b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d007c, 0x0, 0x7e, 0x0, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f0000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x810000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x0, 0x83, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xdcdce8e6, 0xd8e8dcdc, 0xdcdcdcdc, 0xdccacadc, 0xcadcdcdc, 0xdcdcdcca, 0xdcdcdcdc, 0xdcdcdcdc, 0x1010101, 0xdcdcdc01, 0xe6e6e6dc, 0xe6e6e6e6, 0xdce6f0e6, 0xe6e6dcdc, 0xdcdce6, 0xdce6e6e6, 0xe6dcdcdc, 0xe6dcdce8, 0xe9eaeae9, 0xe6e9eaea, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6dc00, 0xe6dce6e6, 0xdcdee6e6, 0xe6e6e6e6, 0xdcdce6e6, 0xdcdcdcdc, 0xe6dce6e6, 0xe6e4dee6, 0xd0c0b0a, 0x11100f0e, 0x14131312, 0x17001615, 0x191800, 0x1200dce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0x201f1e, 0x0, 0x0, 0x0, 0x1b000000, 0x1f1e1d1c, 0xe6222120, 0xe6dcdce6, 0xe6e6e6e6, 0xdce6e6dc, 0x0, 0x0, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6e6e6, 0xe60000e6, 0xdce6e6e6, 0xe60000e6, 0xe6dc00e6, 0xdce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6dce6, 0xdce6e6dc, 0xdce6dcdc, 0xe6dce6dc, 0xe6dce6e6, 0xe6dce6dc, 0xe6e6dc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6e6, 0xe6dce6e6, 0x0, 0x0, 0xdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe600e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e600, 0xe6e6e600, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdce6, 0xe6e6e6e6, 0x0, 0x0, 0xe6e60000, 0xdce6e6e6, 0xdcdcdcdc, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xdc00e6e6, 0xe6dce6e6, 0xe6e6dce6, 0xdcdcdce6, 0xe61d1c1b, 0xe6dce6e6, 0xe6dcdce6, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x900, 0xe6dce600, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x0, 0x0, 0x0, 0x900, 0x0, 0x5b5400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x9, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96767, 0x0, 0x0, 0x0, 0x6b6b6b6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x97676, 0x0, 0x0, 0x0, 0x7a7a7a7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00dc00, 0xd800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x828100, 0x84, 0x82820000, 0x8282, 0xe6e60082, 0xe6e60009, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x90900, 0x0, 0x0, 0x0, 0x0, 0xdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x909, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0xe600, 0x0, 0x0, 0xe400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdce6de00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xdc, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe6e6e600, 0xe6e6e6e6, 0xdc0000e6, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xdcdcdce6, 0xe6dcdcdc, 0xdc00dce6, 0xdce6e6dc, 0xe6e6e6dc, 0xe6dce6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6dc, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70000, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6, 0xdcdcdc01, 0xe6e6dcdc, 0xdcdcdcdc, 0x10100e6, 0x1010101, 0x1, 0xdc00, 0x0, 0xe6, 0xe6e6, 0x0, 0xe6dce6e6, 0xe6e6e6e6, 0xe6dce6e6, 0xdcd6eae6, 0xe6e6e6ca, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe4e8e6e6, 0xe6dadce4, 0xdce6dce9, 0x0, 0x0, 0x0, 0x0, 0x101e6e6, 0xe6e6e6e6, 0xe6010101, 0xe6, 0xe600, 0xe6010100, 0x101e6dc, 0xdcdcdcdc, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0x0, 0x0, 0xe4da0000, 0xe0e0dee8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80800, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0x0, 0x0, 0x0, 0x0, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc000000, 0xdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e600e6, 0xe60000dc, 0xe6, 0xe6e60000, 0xe600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a0000, 0xe6e6e6e6, 0xdce6e6e6, 0xdcdcdcdc, 0xe6e6dcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0xe600dc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc01e6, 0x9000000, 0x0, 0xdce600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0xdcdc0000, 0xdce6e6e6, 0xdcdcdce6, 0xdc, 0x0, 0x0, 0x0, 0xdce60000, 0xdce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70900, 0x0, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x9, 0x0, 0x0, 0x9, 0x0, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70900, 0x0, 0x0, 0x0, 0x0, 0x90700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x7, 0x0, 0xe6e60000, 0xe6e6e6e6, 0xe6, 0xe6e6e6e6, 0xe6, 0x0, 0x0, 0x90000, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x7090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7090000, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90900, 0x7000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x0, 0x70000, 0x909, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x90900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1010101, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x1d8d800, 0x101, 0xd8d8e200, 0xd8d8d8, 0x0, 0xdc000000, 0xdcdcdcdc, 0xdcdcdc, 0xe6e6e600, 0xdcdce6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe60000e6, 0xe6e6e6e6, 0xe600e6e6, 0xe6e600e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6dce8e8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdcdc, 0xdcdcdc, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x7e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)([ 0x0, 0x800], [ 0x1000, 0x2600], [ 0x10000, 0x30002, 0x50004, 0x70006, 0x70008, 0x70007, 0x90007, 0xa0007, 0xc000b, 0x70007, 0x70007, 0x70007, 0x7000d, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0xf000e, 0x70010, 0x70011, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x8010800, 0xffff0802, 0x8003ffff, 0x28161813, 0x8821301b, 0x38330832, 0x7841383a, 0x28510850, 0x185c3056, 0x8068485f, 0xffff1078, 0x3882407a, 0x98903889, 0x30a510a3, 0x48ad10ab, 0xffff30b6, 0xffffffff, 0xffffffff, 0x80bcffff, 0x28cf18cc, 0x88da30d4, 0x38ec08eb, 0x70fb40f3, 0x290b1109, 0x19163110, 0x81224919, 0xffff1132, 0x393c4134, 0x994b4143, 0x3960115e, 0x51691167, 0xffff3173, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1979, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff217c, 0x9810980, 0x9841182, 0xffffffff, 0xffff2185, 0xffffffff, 0x989ffff, 0xffffffff, 0xffffffff, 0x198e218a, 0xffff0991, 0xffff0992, 0xffffffff, 0xffff2193, 0xffffffff, 0xffffffff, 0xffff2197, 0x99c099b, 0x99f119d, 0xffffffff, 0xffff21a0, 0xffffffff, 0x9a4ffff, 0xffffffff, 0xffffffff, 0x19a921a5, 0xffff09ac, 0xffff09ad, 0xffffffff, 0xffff21ae, 0xffffffff, 0xffffffff, 0x21b621b2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11bc11ba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11c011be, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c309c2, 0xffffffff, 0xffffffff, 0x9c509c4, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c709c6, 0x9c909c8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9caffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x29d029cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x29d5ffff, 0xffff29da, 0xffffffff, 0xffffffff, 0x9dfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9e109e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9e309e2, 0x9e509e4, 0xffffffff, 0xffffffff, 0x9e709e6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff09e8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x39e9ffff, 0xffffffff, 0x21f0ffff, 0x29f4ffff, 0x39f9ffff, 0xffffffff, 0xffffffff, 0x2200ffff, 0xa04ffff, 0xffffffff, 0x3205ffff, 0xffffffff, 0x2a0bffff, 0xffffffff, 0xffff0a10, 0xffff0a11, 0x4212ffff, 0xffffffff, 0x221affff, 0x321effff, 0x4224ffff, 0xffffffff, 0xffffffff, 0x222cffff, 0x1230ffff, 0xffffffff, 0x4232ffff, 0xffffffff, 0x323affff, 0x1a431a40, 0xffffffff, 0xffff0a46, 0xffffffff, 0xffff1247, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a49, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff124a, 0xa4cffff, 0x1a4dffff, 0xa521250, 0xffff2253, 0xffff0a57, 0xffffffff, 0xffff0a58, 0xffffffff, 0x2259ffff, 0xffffffff, 0xa5dffff, 0xffffffff, 0xa5effff, 0xa5fffff, 0xffffffff, 0xffff1260, 0xa62ffff, 0x1a63ffff, 0xa681266, 0xffff2269, 0xffff0a6d, 0xffffffff, 0xffff0a6e, 0xffffffff, 0x226fffff, 0xffffffff, 0xa73ffff, 0xffffffff, 0xa74ffff, 0xa75ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a76, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa780a77, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7a0a79, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7c0a7b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a7dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a80, 0xffff0a81, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa82ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a83, 0xa84ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a85, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a86, 0xa87ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1288ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a8affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa90128e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a91, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa92ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1a93, 0xffffffff, 0xffff0a96, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa991297, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a9affff, 0xffffffff, 0xffff0a9d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa9effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa9fffff, 0xaa0ffff, 0xaa1ffff, 0xaa2ffff, 0xaa3ffff, 0xffffffff, 0xaa4ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0aa5, 0xffff0aa6, 0xaa80aa7, 0xffffffff, 0xffff0aa9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xaab0aaa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xaad0aac, 0xffffffff, 0xffffffff, 0xffffffff, 0xaaf0aae, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12b212b0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xab50ab4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xab70ab6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x22bc22b8, 0xac10ac0, 0xac30ac2, 0xac50ac4, 0x22ca22c6, 0xacf0ace, 0xad10ad0, 0xad30ad2, 0x12d612d4, 0xffffffff, 0xffffffff, 0xffffffff, 0x12da12d8, 0xffffffff, 0xffffffff, 0xffffffff, 0x22e022dc, 0xae50ae4, 0xae70ae6, 0xae90ae8, 0x22ee22ea, 0xaf30af2, 0xaf50af4, 0xaf70af6, 0x1afb1af8, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b011afe, 0xffffffff, 0xffffffff, 0xffffffff, 0x13061304, 0xffffffff, 0xffffffff, 0xffffffff, 0x130a1308, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b0f1b0c, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b12ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x23192315, 0xb1e0b1d, 0xb200b1f, 0xb220b21, 0x23272323, 0xb2c0b2b, 0xb2e0b2d, 0xb300b2f, 0xffff0b31, 0xffffffff, 0xffff0b32, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b33, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b34, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b35ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b38, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b39, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1b3a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b3d, 0xffff0b3e, 0xffff0b3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b40, 0xffff0b41, 0xffff0b42, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb43ffff, 0xffffffff, 0xffffffff, 0xffff0b44, 0xb45ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb46ffff, 0xb47ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b48, 0xffffffff, 0xffffffff, 0xb49ffff, 0xb4affff, 0xffffffff, 0xffff0b4b, 0xffffffff, 0xb4cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb4dffff, 0xffffffff, 0xb4f0b4e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb510b50, 0xffffffff, 0xb530b52, 0xffffffff, 0xb550b54, 0xb570b56, 0xffffffff, 0xffffffff, 0xb590b58, 0xffffffff, 0xb5b0b5a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb5cffff, 0xffff0b5d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b5e, 0xffffffff, 0xffffffff, 0xb600b5f, 0xb61ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb630b62, 0xb650b64, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b66, 0xffffffff, 0xb67ffff, 0xb68ffff, 0xb69ffff, 0xb6affff, 0xb6bffff, 0xb6cffff, 0xb6dffff, 0xb6effff, 0xb6fffff, 0xb70ffff, 0xb71ffff, 0xb72ffff, 0xffffffff, 0xffff0b73, 0xffff0b74, 0xffff0b75, 0xffffffff, 0xffffffff, 0x1376ffff, 0xffffffff, 0xffff1378, 0x137affff, 0xffffffff, 0xffff137c, 0x137effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb80ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b81, 0xffffffff, 0xb82ffff, 0xb83ffff, 0xb84ffff, 0xb85ffff, 0xb86ffff, 0xb87ffff, 0xb88ffff, 0xb89ffff, 0xb8affff, 0xb8bffff, 0xb8cffff, 0xb8dffff, 0xffffffff, 0xffff0b8e, 0xffff0b8f, 0xffff0b90, 0xffffffff, 0xffffffff, 0x1391ffff, 0xffffffff, 0xffff1393, 0x1395ffff, 0xffffffff, 0xffff1397, 0x1399ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb9bffff, 0xb9d0b9c, 0xffff0b9e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb9fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba0ffff, 0xba1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba2ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba3ffff, 0xffff0ba4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13a5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ba7ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xbab0baa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xbacffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); -@property immutable(CompEntry[]) compositionTable() nothrow pure @nogc @safe +dstring compositionTable() nothrow pure @nogc @safe { -alias CE = CompEntry; -static immutable CE[] t = [CE(0x00338, 0x0226e),CE(0x00338, 0x02260),CE(0x00338, 0x0226f),CE(0x00300, 0x000c0),CE(0x00301, 0x000c1),CE(0x00302, 0x000c2),CE(0x00303, 0x000c3),CE(0x00304, 0x00100),CE(0x00306, 0x00102),CE(0x00307, 0x00226),CE(0x00308, 0x000c4),CE(0x00309, 0x01ea2),CE(0x0030a, 0x000c5),CE(0x0030c, 0x001cd),CE(0x0030f, 0x00200),CE(0x00311, 0x00202),CE(0x00323, 0x01ea0),CE(0x00325, 0x01e00),CE(0x00328, 0x00104),CE(0x00307, 0x01e02),CE(0x00323, 0x01e04),CE(0x00331, 0x01e06),CE(0x00301, 0x00106),CE(0x00302, 0x00108),CE(0x00307, 0x0010a),CE(0x0030c, 0x0010c),CE(0x00327, 0x000c7),CE(0x00307, 0x01e0a),CE(0x0030c, 0x0010e),CE(0x00323, 0x01e0c),CE(0x00327, 0x01e10),CE(0x0032d, 0x01e12),CE(0x00331, 0x01e0e),CE(0x00300, 0x000c8),CE(0x00301, 0x000c9),CE(0x00302, 0x000ca),CE(0x00303, 0x01ebc),CE(0x00304, 0x00112),CE(0x00306, 0x00114),CE(0x00307, 0x00116),CE(0x00308, 0x000cb),CE(0x00309, 0x01eba),CE(0x0030c, 0x0011a),CE(0x0030f, 0x00204),CE(0x00311, 0x00206),CE(0x00323, 0x01eb8),CE(0x00327, 0x00228),CE(0x00328, 0x00118),CE(0x0032d, 0x01e18),CE(0x00330, 0x01e1a),CE(0x00307, 0x01e1e),CE(0x00301, 0x001f4),CE(0x00302, 0x0011c),CE(0x00304, 0x01e20),CE(0x00306, 0x0011e),CE(0x00307, 0x00120),CE(0x0030c, 0x001e6),CE(0x00327, 0x00122),CE(0x00302, 0x00124),CE(0x00307, 0x01e22),CE(0x00308, 0x01e26),CE(0x0030c, 0x0021e),CE(0x00323, 0x01e24),CE(0x00327, 0x01e28),CE(0x0032e, 0x01e2a),CE(0x00300, 0x000cc),CE(0x00301, 0x000cd),CE(0x00302, 0x000ce),CE(0x00303, 0x00128),CE(0x00304, 0x0012a),CE(0x00306, 0x0012c),CE(0x00307, 0x00130),CE(0x00308, 0x000cf),CE(0x00309, 0x01ec8),CE(0x0030c, 0x001cf),CE(0x0030f, 0x00208),CE(0x00311, 0x0020a),CE(0x00323, 0x01eca),CE(0x00328, 0x0012e),CE(0x00330, 0x01e2c),CE(0x00302, 0x00134),CE(0x00301, 0x01e30),CE(0x0030c, 0x001e8),CE(0x00323, 0x01e32),CE(0x00327, 0x00136),CE(0x00331, 0x01e34),CE(0x00301, 0x00139),CE(0x0030c, 0x0013d),CE(0x00323, 0x01e36),CE(0x00327, 0x0013b),CE(0x0032d, 0x01e3c),CE(0x00331, 0x01e3a),CE(0x00301, 0x01e3e),CE(0x00307, 0x01e40),CE(0x00323, 0x01e42),CE(0x00300, 0x001f8),CE(0x00301, 0x00143),CE(0x00303, 0x000d1),CE(0x00307, 0x01e44),CE(0x0030c, 0x00147),CE(0x00323, 0x01e46),CE(0x00327, 0x00145),CE(0x0032d, 0x01e4a),CE(0x00331, 0x01e48),CE(0x00300, 0x000d2),CE(0x00301, 0x000d3),CE(0x00302, 0x000d4),CE(0x00303, 0x000d5),CE(0x00304, 0x0014c),CE(0x00306, 0x0014e),CE(0x00307, 0x0022e),CE(0x00308, 0x000d6),CE(0x00309, 0x01ece),CE(0x0030b, 0x00150),CE(0x0030c, 0x001d1),CE(0x0030f, 0x0020c),CE(0x00311, 0x0020e),CE(0x0031b, 0x001a0),CE(0x00323, 0x01ecc),CE(0x00328, 0x001ea),CE(0x00301, 0x01e54),CE(0x00307, 0x01e56),CE(0x00301, 0x00154),CE(0x00307, 0x01e58),CE(0x0030c, 0x00158),CE(0x0030f, 0x00210),CE(0x00311, 0x00212),CE(0x00323, 0x01e5a),CE(0x00327, 0x00156),CE(0x00331, 0x01e5e),CE(0x00301, 0x0015a),CE(0x00302, 0x0015c),CE(0x00307, 0x01e60),CE(0x0030c, 0x00160),CE(0x00323, 0x01e62),CE(0x00326, 0x00218),CE(0x00327, 0x0015e),CE(0x00307, 0x01e6a),CE(0x0030c, 0x00164),CE(0x00323, 0x01e6c),CE(0x00326, 0x0021a),CE(0x00327, 0x00162),CE(0x0032d, 0x01e70),CE(0x00331, 0x01e6e),CE(0x00300, 0x000d9),CE(0x00301, 0x000da),CE(0x00302, 0x000db),CE(0x00303, 0x00168),CE(0x00304, 0x0016a),CE(0x00306, 0x0016c),CE(0x00308, 0x000dc),CE(0x00309, 0x01ee6),CE(0x0030a, 0x0016e),CE(0x0030b, 0x00170),CE(0x0030c, 0x001d3),CE(0x0030f, 0x00214),CE(0x00311, 0x00216),CE(0x0031b, 0x001af),CE(0x00323, 0x01ee4),CE(0x00324, 0x01e72),CE(0x00328, 0x00172),CE(0x0032d, 0x01e76),CE(0x00330, 0x01e74),CE(0x00303, 0x01e7c),CE(0x00323, 0x01e7e),CE(0x00300, 0x01e80),CE(0x00301, 0x01e82),CE(0x00302, 0x00174),CE(0x00307, 0x01e86),CE(0x00308, 0x01e84),CE(0x00323, 0x01e88),CE(0x00307, 0x01e8a),CE(0x00308, 0x01e8c),CE(0x00300, 0x01ef2),CE(0x00301, 0x000dd),CE(0x00302, 0x00176),CE(0x00303, 0x01ef8),CE(0x00304, 0x00232),CE(0x00307, 0x01e8e),CE(0x00308, 0x00178),CE(0x00309, 0x01ef6),CE(0x00323, 0x01ef4),CE(0x00301, 0x00179),CE(0x00302, 0x01e90),CE(0x00307, 0x0017b),CE(0x0030c, 0x0017d),CE(0x00323, 0x01e92),CE(0x00331, 0x01e94),CE(0x00300, 0x000e0),CE(0x00301, 0x000e1),CE(0x00302, 0x000e2),CE(0x00303, 0x000e3),CE(0x00304, 0x00101),CE(0x00306, 0x00103),CE(0x00307, 0x00227),CE(0x00308, 0x000e4),CE(0x00309, 0x01ea3),CE(0x0030a, 0x000e5),CE(0x0030c, 0x001ce),CE(0x0030f, 0x00201),CE(0x00311, 0x00203),CE(0x00323, 0x01ea1),CE(0x00325, 0x01e01),CE(0x00328, 0x00105),CE(0x00307, 0x01e03),CE(0x00323, 0x01e05),CE(0x00331, 0x01e07),CE(0x00301, 0x00107),CE(0x00302, 0x00109),CE(0x00307, 0x0010b),CE(0x0030c, 0x0010d),CE(0x00327, 0x000e7),CE(0x00307, 0x01e0b),CE(0x0030c, 0x0010f),CE(0x00323, 0x01e0d),CE(0x00327, 0x01e11),CE(0x0032d, 0x01e13),CE(0x00331, 0x01e0f),CE(0x00300, 0x000e8),CE(0x00301, 0x000e9),CE(0x00302, 0x000ea),CE(0x00303, 0x01ebd),CE(0x00304, 0x00113),CE(0x00306, 0x00115),CE(0x00307, 0x00117),CE(0x00308, 0x000eb),CE(0x00309, 0x01ebb),CE(0x0030c, 0x0011b),CE(0x0030f, 0x00205),CE(0x00311, 0x00207),CE(0x00323, 0x01eb9),CE(0x00327, 0x00229),CE(0x00328, 0x00119),CE(0x0032d, 0x01e19),CE(0x00330, 0x01e1b),CE(0x00307, 0x01e1f),CE(0x00301, 0x001f5),CE(0x00302, 0x0011d),CE(0x00304, 0x01e21),CE(0x00306, 0x0011f),CE(0x00307, 0x00121),CE(0x0030c, 0x001e7),CE(0x00327, 0x00123),CE(0x00302, 0x00125),CE(0x00307, 0x01e23),CE(0x00308, 0x01e27),CE(0x0030c, 0x0021f),CE(0x00323, 0x01e25),CE(0x00327, 0x01e29),CE(0x0032e, 0x01e2b),CE(0x00331, 0x01e96),CE(0x00300, 0x000ec),CE(0x00301, 0x000ed),CE(0x00302, 0x000ee),CE(0x00303, 0x00129),CE(0x00304, 0x0012b),CE(0x00306, 0x0012d),CE(0x00308, 0x000ef),CE(0x00309, 0x01ec9),CE(0x0030c, 0x001d0),CE(0x0030f, 0x00209),CE(0x00311, 0x0020b),CE(0x00323, 0x01ecb),CE(0x00328, 0x0012f),CE(0x00330, 0x01e2d),CE(0x00302, 0x00135),CE(0x0030c, 0x001f0),CE(0x00301, 0x01e31),CE(0x0030c, 0x001e9),CE(0x00323, 0x01e33),CE(0x00327, 0x00137),CE(0x00331, 0x01e35),CE(0x00301, 0x0013a),CE(0x0030c, 0x0013e),CE(0x00323, 0x01e37),CE(0x00327, 0x0013c),CE(0x0032d, 0x01e3d),CE(0x00331, 0x01e3b),CE(0x00301, 0x01e3f),CE(0x00307, 0x01e41),CE(0x00323, 0x01e43),CE(0x00300, 0x001f9),CE(0x00301, 0x00144),CE(0x00303, 0x000f1),CE(0x00307, 0x01e45),CE(0x0030c, 0x00148),CE(0x00323, 0x01e47),CE(0x00327, 0x00146),CE(0x0032d, 0x01e4b),CE(0x00331, 0x01e49),CE(0x00300, 0x000f2),CE(0x00301, 0x000f3),CE(0x00302, 0x000f4),CE(0x00303, 0x000f5),CE(0x00304, 0x0014d),CE(0x00306, 0x0014f),CE(0x00307, 0x0022f),CE(0x00308, 0x000f6),CE(0x00309, 0x01ecf),CE(0x0030b, 0x00151),CE(0x0030c, 0x001d2),CE(0x0030f, 0x0020d),CE(0x00311, 0x0020f),CE(0x0031b, 0x001a1),CE(0x00323, 0x01ecd),CE(0x00328, 0x001eb),CE(0x00301, 0x01e55),CE(0x00307, 0x01e57),CE(0x00301, 0x00155),CE(0x00307, 0x01e59),CE(0x0030c, 0x00159),CE(0x0030f, 0x00211),CE(0x00311, 0x00213),CE(0x00323, 0x01e5b),CE(0x00327, 0x00157),CE(0x00331, 0x01e5f),CE(0x00301, 0x0015b),CE(0x00302, 0x0015d),CE(0x00307, 0x01e61),CE(0x0030c, 0x00161),CE(0x00323, 0x01e63),CE(0x00326, 0x00219),CE(0x00327, 0x0015f),CE(0x00307, 0x01e6b),CE(0x00308, 0x01e97),CE(0x0030c, 0x00165),CE(0x00323, 0x01e6d),CE(0x00326, 0x0021b),CE(0x00327, 0x00163),CE(0x0032d, 0x01e71),CE(0x00331, 0x01e6f),CE(0x00300, 0x000f9),CE(0x00301, 0x000fa),CE(0x00302, 0x000fb),CE(0x00303, 0x00169),CE(0x00304, 0x0016b),CE(0x00306, 0x0016d),CE(0x00308, 0x000fc),CE(0x00309, 0x01ee7),CE(0x0030a, 0x0016f),CE(0x0030b, 0x00171),CE(0x0030c, 0x001d4),CE(0x0030f, 0x00215),CE(0x00311, 0x00217),CE(0x0031b, 0x001b0),CE(0x00323, 0x01ee5),CE(0x00324, 0x01e73),CE(0x00328, 0x00173),CE(0x0032d, 0x01e77),CE(0x00330, 0x01e75),CE(0x00303, 0x01e7d),CE(0x00323, 0x01e7f),CE(0x00300, 0x01e81),CE(0x00301, 0x01e83),CE(0x00302, 0x00175),CE(0x00307, 0x01e87),CE(0x00308, 0x01e85),CE(0x0030a, 0x01e98),CE(0x00323, 0x01e89),CE(0x00307, 0x01e8b),CE(0x00308, 0x01e8d),CE(0x00300, 0x01ef3),CE(0x00301, 0x000fd),CE(0x00302, 0x00177),CE(0x00303, 0x01ef9),CE(0x00304, 0x00233),CE(0x00307, 0x01e8f),CE(0x00308, 0x000ff),CE(0x00309, 0x01ef7),CE(0x0030a, 0x01e99),CE(0x00323, 0x01ef5),CE(0x00301, 0x0017a),CE(0x00302, 0x01e91),CE(0x00307, 0x0017c),CE(0x0030c, 0x0017e),CE(0x00323, 0x01e93),CE(0x00331, 0x01e95),CE(0x00300, 0x01fed),CE(0x00301, 0x00385),CE(0x00342, 0x01fc1),CE(0x00300, 0x01ea6),CE(0x00301, 0x01ea4),CE(0x00303, 0x01eaa),CE(0x00309, 0x01ea8),CE(0x00304, 0x001de),CE(0x00301, 0x001fa),CE(0x00301, 0x001fc),CE(0x00304, 0x001e2),CE(0x00301, 0x01e08),CE(0x00300, 0x01ec0),CE(0x00301, 0x01ebe),CE(0x00303, 0x01ec4),CE(0x00309, 0x01ec2),CE(0x00301, 0x01e2e),CE(0x00300, 0x01ed2),CE(0x00301, 0x01ed0),CE(0x00303, 0x01ed6),CE(0x00309, 0x01ed4),CE(0x00301, 0x01e4c),CE(0x00304, 0x0022c),CE(0x00308, 0x01e4e),CE(0x00304, 0x0022a),CE(0x00301, 0x001fe),CE(0x00300, 0x001db),CE(0x00301, 0x001d7),CE(0x00304, 0x001d5),CE(0x0030c, 0x001d9),CE(0x00300, 0x01ea7),CE(0x00301, 0x01ea5),CE(0x00303, 0x01eab),CE(0x00309, 0x01ea9),CE(0x00304, 0x001df),CE(0x00301, 0x001fb),CE(0x00301, 0x001fd),CE(0x00304, 0x001e3),CE(0x00301, 0x01e09),CE(0x00300, 0x01ec1),CE(0x00301, 0x01ebf),CE(0x00303, 0x01ec5),CE(0x00309, 0x01ec3),CE(0x00301, 0x01e2f),CE(0x00300, 0x01ed3),CE(0x00301, 0x01ed1),CE(0x00303, 0x01ed7),CE(0x00309, 0x01ed5),CE(0x00301, 0x01e4d),CE(0x00304, 0x0022d),CE(0x00308, 0x01e4f),CE(0x00304, 0x0022b),CE(0x00301, 0x001ff),CE(0x00300, 0x001dc),CE(0x00301, 0x001d8),CE(0x00304, 0x001d6),CE(0x0030c, 0x001da),CE(0x00300, 0x01eb0),CE(0x00301, 0x01eae),CE(0x00303, 0x01eb4),CE(0x00309, 0x01eb2),CE(0x00300, 0x01eb1),CE(0x00301, 0x01eaf),CE(0x00303, 0x01eb5),CE(0x00309, 0x01eb3),CE(0x00300, 0x01e14),CE(0x00301, 0x01e16),CE(0x00300, 0x01e15),CE(0x00301, 0x01e17),CE(0x00300, 0x01e50),CE(0x00301, 0x01e52),CE(0x00300, 0x01e51),CE(0x00301, 0x01e53),CE(0x00307, 0x01e64),CE(0x00307, 0x01e65),CE(0x00307, 0x01e66),CE(0x00307, 0x01e67),CE(0x00301, 0x01e78),CE(0x00301, 0x01e79),CE(0x00308, 0x01e7a),CE(0x00308, 0x01e7b),CE(0x00307, 0x01e9b),CE(0x00300, 0x01edc),CE(0x00301, 0x01eda),CE(0x00303, 0x01ee0),CE(0x00309, 0x01ede),CE(0x00323, 0x01ee2),CE(0x00300, 0x01edd),CE(0x00301, 0x01edb),CE(0x00303, 0x01ee1),CE(0x00309, 0x01edf),CE(0x00323, 0x01ee3),CE(0x00300, 0x01eea),CE(0x00301, 0x01ee8),CE(0x00303, 0x01eee),CE(0x00309, 0x01eec),CE(0x00323, 0x01ef0),CE(0x00300, 0x01eeb),CE(0x00301, 0x01ee9),CE(0x00303, 0x01eef),CE(0x00309, 0x01eed),CE(0x00323, 0x01ef1),CE(0x0030c, 0x001ee),CE(0x00304, 0x001ec),CE(0x00304, 0x001ed),CE(0x00304, 0x001e0),CE(0x00304, 0x001e1),CE(0x00306, 0x01e1c),CE(0x00306, 0x01e1d),CE(0x00304, 0x00230),CE(0x00304, 0x00231),CE(0x0030c, 0x001ef),CE(0x00300, 0x01fba),CE(0x00301, 0x00386),CE(0x00304, 0x01fb9),CE(0x00306, 0x01fb8),CE(0x00313, 0x01f08),CE(0x00314, 0x01f09),CE(0x00345, 0x01fbc),CE(0x00300, 0x01fc8),CE(0x00301, 0x00388),CE(0x00313, 0x01f18),CE(0x00314, 0x01f19),CE(0x00300, 0x01fca),CE(0x00301, 0x00389),CE(0x00313, 0x01f28),CE(0x00314, 0x01f29),CE(0x00345, 0x01fcc),CE(0x00300, 0x01fda),CE(0x00301, 0x0038a),CE(0x00304, 0x01fd9),CE(0x00306, 0x01fd8),CE(0x00308, 0x003aa),CE(0x00313, 0x01f38),CE(0x00314, 0x01f39),CE(0x00300, 0x01ff8),CE(0x00301, 0x0038c),CE(0x00313, 0x01f48),CE(0x00314, 0x01f49),CE(0x00314, 0x01fec),CE(0x00300, 0x01fea),CE(0x00301, 0x0038e),CE(0x00304, 0x01fe9),CE(0x00306, 0x01fe8),CE(0x00308, 0x003ab),CE(0x00314, 0x01f59),CE(0x00300, 0x01ffa),CE(0x00301, 0x0038f),CE(0x00313, 0x01f68),CE(0x00314, 0x01f69),CE(0x00345, 0x01ffc),CE(0x00345, 0x01fb4),CE(0x00345, 0x01fc4),CE(0x00300, 0x01f70),CE(0x00301, 0x003ac),CE(0x00304, 0x01fb1),CE(0x00306, 0x01fb0),CE(0x00313, 0x01f00),CE(0x00314, 0x01f01),CE(0x00342, 0x01fb6),CE(0x00345, 0x01fb3),CE(0x00300, 0x01f72),CE(0x00301, 0x003ad),CE(0x00313, 0x01f10),CE(0x00314, 0x01f11),CE(0x00300, 0x01f74),CE(0x00301, 0x003ae),CE(0x00313, 0x01f20),CE(0x00314, 0x01f21),CE(0x00342, 0x01fc6),CE(0x00345, 0x01fc3),CE(0x00300, 0x01f76),CE(0x00301, 0x003af),CE(0x00304, 0x01fd1),CE(0x00306, 0x01fd0),CE(0x00308, 0x003ca),CE(0x00313, 0x01f30),CE(0x00314, 0x01f31),CE(0x00342, 0x01fd6),CE(0x00300, 0x01f78),CE(0x00301, 0x003cc),CE(0x00313, 0x01f40),CE(0x00314, 0x01f41),CE(0x00313, 0x01fe4),CE(0x00314, 0x01fe5),CE(0x00300, 0x01f7a),CE(0x00301, 0x003cd),CE(0x00304, 0x01fe1),CE(0x00306, 0x01fe0),CE(0x00308, 0x003cb),CE(0x00313, 0x01f50),CE(0x00314, 0x01f51),CE(0x00342, 0x01fe6),CE(0x00300, 0x01f7c),CE(0x00301, 0x003ce),CE(0x00313, 0x01f60),CE(0x00314, 0x01f61),CE(0x00342, 0x01ff6),CE(0x00345, 0x01ff3),CE(0x00300, 0x01fd2),CE(0x00301, 0x00390),CE(0x00342, 0x01fd7),CE(0x00300, 0x01fe2),CE(0x00301, 0x003b0),CE(0x00342, 0x01fe7),CE(0x00345, 0x01ff4),CE(0x00301, 0x003d3),CE(0x00308, 0x003d4),CE(0x00308, 0x00407),CE(0x00306, 0x004d0),CE(0x00308, 0x004d2),CE(0x00301, 0x00403),CE(0x00300, 0x00400),CE(0x00306, 0x004d6),CE(0x00308, 0x00401),CE(0x00306, 0x004c1),CE(0x00308, 0x004dc),CE(0x00308, 0x004de),CE(0x00300, 0x0040d),CE(0x00304, 0x004e2),CE(0x00306, 0x00419),CE(0x00308, 0x004e4),CE(0x00301, 0x0040c),CE(0x00308, 0x004e6),CE(0x00304, 0x004ee),CE(0x00306, 0x0040e),CE(0x00308, 0x004f0),CE(0x0030b, 0x004f2),CE(0x00308, 0x004f4),CE(0x00308, 0x004f8),CE(0x00308, 0x004ec),CE(0x00306, 0x004d1),CE(0x00308, 0x004d3),CE(0x00301, 0x00453),CE(0x00300, 0x00450),CE(0x00306, 0x004d7),CE(0x00308, 0x00451),CE(0x00306, 0x004c2),CE(0x00308, 0x004dd),CE(0x00308, 0x004df),CE(0x00300, 0x0045d),CE(0x00304, 0x004e3),CE(0x00306, 0x00439),CE(0x00308, 0x004e5),CE(0x00301, 0x0045c),CE(0x00308, 0x004e7),CE(0x00304, 0x004ef),CE(0x00306, 0x0045e),CE(0x00308, 0x004f1),CE(0x0030b, 0x004f3),CE(0x00308, 0x004f5),CE(0x00308, 0x004f9),CE(0x00308, 0x004ed),CE(0x00308, 0x00457),CE(0x0030f, 0x00476),CE(0x0030f, 0x00477),CE(0x00308, 0x004da),CE(0x00308, 0x004db),CE(0x00308, 0x004ea),CE(0x00308, 0x004eb),CE(0x00653, 0x00622),CE(0x00654, 0x00623),CE(0x00655, 0x00625),CE(0x00654, 0x00624),CE(0x00654, 0x00626),CE(0x00654, 0x006c2),CE(0x00654, 0x006d3),CE(0x00654, 0x006c0),CE(0x0093c, 0x00929),CE(0x0093c, 0x00931),CE(0x0093c, 0x00934),CE(0x009be, 0x009cb),CE(0x009d7, 0x009cc),CE(0x00b3e, 0x00b4b),CE(0x00b56, 0x00b48),CE(0x00b57, 0x00b4c),CE(0x00bd7, 0x00b94),CE(0x00bbe, 0x00bca),CE(0x00bd7, 0x00bcc),CE(0x00bbe, 0x00bcb),CE(0x00c56, 0x00c48),CE(0x00cd5, 0x00cc0),CE(0x00cc2, 0x00cca),CE(0x00cd5, 0x00cc7),CE(0x00cd6, 0x00cc8),CE(0x00cd5, 0x00ccb),CE(0x00d3e, 0x00d4a),CE(0x00d57, 0x00d4c),CE(0x00d3e, 0x00d4b),CE(0x00dca, 0x00dda),CE(0x00dcf, 0x00ddc),CE(0x00ddf, 0x00dde),CE(0x00dca, 0x00ddd),CE(0x0102e, 0x01026),CE(0x01b35, 0x01b06),CE(0x01b35, 0x01b08),CE(0x01b35, 0x01b0a),CE(0x01b35, 0x01b0c),CE(0x01b35, 0x01b0e),CE(0x01b35, 0x01b12),CE(0x01b35, 0x01b3b),CE(0x01b35, 0x01b3d),CE(0x01b35, 0x01b40),CE(0x01b35, 0x01b41),CE(0x01b35, 0x01b43),CE(0x00304, 0x01e38),CE(0x00304, 0x01e39),CE(0x00304, 0x01e5c),CE(0x00304, 0x01e5d),CE(0x00307, 0x01e68),CE(0x00307, 0x01e69),CE(0x00302, 0x01eac),CE(0x00306, 0x01eb6),CE(0x00302, 0x01ead),CE(0x00306, 0x01eb7),CE(0x00302, 0x01ec6),CE(0x00302, 0x01ec7),CE(0x00302, 0x01ed8),CE(0x00302, 0x01ed9),CE(0x00300, 0x01f02),CE(0x00301, 0x01f04),CE(0x00342, 0x01f06),CE(0x00345, 0x01f80),CE(0x00300, 0x01f03),CE(0x00301, 0x01f05),CE(0x00342, 0x01f07),CE(0x00345, 0x01f81),CE(0x00345, 0x01f82),CE(0x00345, 0x01f83),CE(0x00345, 0x01f84),CE(0x00345, 0x01f85),CE(0x00345, 0x01f86),CE(0x00345, 0x01f87),CE(0x00300, 0x01f0a),CE(0x00301, 0x01f0c),CE(0x00342, 0x01f0e),CE(0x00345, 0x01f88),CE(0x00300, 0x01f0b),CE(0x00301, 0x01f0d),CE(0x00342, 0x01f0f),CE(0x00345, 0x01f89),CE(0x00345, 0x01f8a),CE(0x00345, 0x01f8b),CE(0x00345, 0x01f8c),CE(0x00345, 0x01f8d),CE(0x00345, 0x01f8e),CE(0x00345, 0x01f8f),CE(0x00300, 0x01f12),CE(0x00301, 0x01f14),CE(0x00300, 0x01f13),CE(0x00301, 0x01f15),CE(0x00300, 0x01f1a),CE(0x00301, 0x01f1c),CE(0x00300, 0x01f1b),CE(0x00301, 0x01f1d),CE(0x00300, 0x01f22),CE(0x00301, 0x01f24),CE(0x00342, 0x01f26),CE(0x00345, 0x01f90),CE(0x00300, 0x01f23),CE(0x00301, 0x01f25),CE(0x00342, 0x01f27),CE(0x00345, 0x01f91),CE(0x00345, 0x01f92),CE(0x00345, 0x01f93),CE(0x00345, 0x01f94),CE(0x00345, 0x01f95),CE(0x00345, 0x01f96),CE(0x00345, 0x01f97),CE(0x00300, 0x01f2a),CE(0x00301, 0x01f2c),CE(0x00342, 0x01f2e),CE(0x00345, 0x01f98),CE(0x00300, 0x01f2b),CE(0x00301, 0x01f2d),CE(0x00342, 0x01f2f),CE(0x00345, 0x01f99),CE(0x00345, 0x01f9a),CE(0x00345, 0x01f9b),CE(0x00345, 0x01f9c),CE(0x00345, 0x01f9d),CE(0x00345, 0x01f9e),CE(0x00345, 0x01f9f),CE(0x00300, 0x01f32),CE(0x00301, 0x01f34),CE(0x00342, 0x01f36),CE(0x00300, 0x01f33),CE(0x00301, 0x01f35),CE(0x00342, 0x01f37),CE(0x00300, 0x01f3a),CE(0x00301, 0x01f3c),CE(0x00342, 0x01f3e),CE(0x00300, 0x01f3b),CE(0x00301, 0x01f3d),CE(0x00342, 0x01f3f),CE(0x00300, 0x01f42),CE(0x00301, 0x01f44),CE(0x00300, 0x01f43),CE(0x00301, 0x01f45),CE(0x00300, 0x01f4a),CE(0x00301, 0x01f4c),CE(0x00300, 0x01f4b),CE(0x00301, 0x01f4d),CE(0x00300, 0x01f52),CE(0x00301, 0x01f54),CE(0x00342, 0x01f56),CE(0x00300, 0x01f53),CE(0x00301, 0x01f55),CE(0x00342, 0x01f57),CE(0x00300, 0x01f5b),CE(0x00301, 0x01f5d),CE(0x00342, 0x01f5f),CE(0x00300, 0x01f62),CE(0x00301, 0x01f64),CE(0x00342, 0x01f66),CE(0x00345, 0x01fa0),CE(0x00300, 0x01f63),CE(0x00301, 0x01f65),CE(0x00342, 0x01f67),CE(0x00345, 0x01fa1),CE(0x00345, 0x01fa2),CE(0x00345, 0x01fa3),CE(0x00345, 0x01fa4),CE(0x00345, 0x01fa5),CE(0x00345, 0x01fa6),CE(0x00345, 0x01fa7),CE(0x00300, 0x01f6a),CE(0x00301, 0x01f6c),CE(0x00342, 0x01f6e),CE(0x00345, 0x01fa8),CE(0x00300, 0x01f6b),CE(0x00301, 0x01f6d),CE(0x00342, 0x01f6f),CE(0x00345, 0x01fa9),CE(0x00345, 0x01faa),CE(0x00345, 0x01fab),CE(0x00345, 0x01fac),CE(0x00345, 0x01fad),CE(0x00345, 0x01fae),CE(0x00345, 0x01faf),CE(0x00345, 0x01fb2),CE(0x00345, 0x01fc2),CE(0x00345, 0x01ff2),CE(0x00345, 0x01fb7),CE(0x00300, 0x01fcd),CE(0x00301, 0x01fce),CE(0x00342, 0x01fcf),CE(0x00345, 0x01fc7),CE(0x00345, 0x01ff7),CE(0x00300, 0x01fdd),CE(0x00301, 0x01fde),CE(0x00342, 0x01fdf),CE(0x00338, 0x0219a),CE(0x00338, 0x0219b),CE(0x00338, 0x021ae),CE(0x00338, 0x021cd),CE(0x00338, 0x021cf),CE(0x00338, 0x021ce),CE(0x00338, 0x02204),CE(0x00338, 0x02209),CE(0x00338, 0x0220c),CE(0x00338, 0x02224),CE(0x00338, 0x02226),CE(0x00338, 0x02241),CE(0x00338, 0x02244),CE(0x00338, 0x02247),CE(0x00338, 0x02249),CE(0x00338, 0x0226d),CE(0x00338, 0x02262),CE(0x00338, 0x02270),CE(0x00338, 0x02271),CE(0x00338, 0x02274),CE(0x00338, 0x02275),CE(0x00338, 0x02278),CE(0x00338, 0x02279),CE(0x00338, 0x02280),CE(0x00338, 0x02281),CE(0x00338, 0x022e0),CE(0x00338, 0x022e1),CE(0x00338, 0x02284),CE(0x00338, 0x02285),CE(0x00338, 0x02288),CE(0x00338, 0x02289),CE(0x00338, 0x022e2),CE(0x00338, 0x022e3),CE(0x00338, 0x022ac),CE(0x00338, 0x022ad),CE(0x00338, 0x022ae),CE(0x00338, 0x022af),CE(0x00338, 0x022ea),CE(0x00338, 0x022eb),CE(0x00338, 0x022ec),CE(0x00338, 0x022ed),CE(0x03099, 0x03094),CE(0x03099, 0x0304c),CE(0x03099, 0x0304e),CE(0x03099, 0x03050),CE(0x03099, 0x03052),CE(0x03099, 0x03054),CE(0x03099, 0x03056),CE(0x03099, 0x03058),CE(0x03099, 0x0305a),CE(0x03099, 0x0305c),CE(0x03099, 0x0305e),CE(0x03099, 0x03060),CE(0x03099, 0x03062),CE(0x03099, 0x03065),CE(0x03099, 0x03067),CE(0x03099, 0x03069),CE(0x03099, 0x03070),CE(0x0309a, 0x03071),CE(0x03099, 0x03073),CE(0x0309a, 0x03074),CE(0x03099, 0x03076),CE(0x0309a, 0x03077),CE(0x03099, 0x03079),CE(0x0309a, 0x0307a),CE(0x03099, 0x0307c),CE(0x0309a, 0x0307d),CE(0x03099, 0x0309e),CE(0x03099, 0x030f4),CE(0x03099, 0x030ac),CE(0x03099, 0x030ae),CE(0x03099, 0x030b0),CE(0x03099, 0x030b2),CE(0x03099, 0x030b4),CE(0x03099, 0x030b6),CE(0x03099, 0x030b8),CE(0x03099, 0x030ba),CE(0x03099, 0x030bc),CE(0x03099, 0x030be),CE(0x03099, 0x030c0),CE(0x03099, 0x030c2),CE(0x03099, 0x030c5),CE(0x03099, 0x030c7),CE(0x03099, 0x030c9),CE(0x03099, 0x030d0),CE(0x0309a, 0x030d1),CE(0x03099, 0x030d3),CE(0x0309a, 0x030d4),CE(0x03099, 0x030d6),CE(0x0309a, 0x030d7),CE(0x03099, 0x030d9),CE(0x0309a, 0x030da),CE(0x03099, 0x030dc),CE(0x0309a, 0x030dd),CE(0x03099, 0x030f7),CE(0x03099, 0x030f8),CE(0x03099, 0x030f9),CE(0x03099, 0x030fa),CE(0x03099, 0x030fe),CE(0x110ba, 0x1109a),CE(0x110ba, 0x1109c),CE(0x110ba, 0x110ab),CE(0x11127, 0x1112e),CE(0x11127, 0x1112f),CE(0x1133e, 0x1134b),CE(0x11357, 0x1134c),CE(0x114b0, 0x114bc),CE(0x114ba, 0x114bb),CE(0x114bd, 0x114be),CE(0x115af, 0x115ba),CE(0x115af, 0x115bb),CE(0x11930, 0x11938),]; -return t; +static immutable dchar[1882] t = +"\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"~ +"\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"~ +"\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"~ +"\u010E\u0323\u1E0C\u0327\u1E10\u032D\u1E12\u0331\u1E0E\u0300\u00C8\u0301\u00C9\u0302\u00CA\u0303\u1EBC\u0304\u0112"~ +"\u0306\u0114\u0307\u0116\u0308\u00CB\u0309\u1EBA\u030C\u011A\u030F\u0204\u0311\u0206\u0323\u1EB8\u0327\u0228\u0328"~ +"\u0118\u032D\u1E18\u0330\u1E1A\u0307\u1E1E\u0301\u01F4\u0302\u011C\u0304\u1E20\u0306\u011E\u0307\u0120\u030C\u01E6"~ +"\u0327\u0122\u0302\u0124\u0307\u1E22\u0308\u1E26\u030C\u021E\u0323\u1E24\u0327\u1E28\u032E\u1E2A\u0300\u00CC\u0301"~ +"\u00CD\u0302\u00CE\u0303\u0128\u0304\u012A\u0306\u012C\u0307\u0130\u0308\u00CF\u0309\u1EC8\u030C\u01CF\u030F\u0208"~ +"\u0311\u020A\u0323\u1ECA\u0328\u012E\u0330\u1E2C\u0302\u0134\u0301\u1E30\u030C\u01E8\u0323\u1E32\u0327\u0136\u0331"~ +"\u1E34\u0301\u0139\u030C\u013D\u0323\u1E36\u0327\u013B\u032D\u1E3C\u0331\u1E3A\u0301\u1E3E\u0307\u1E40\u0323\u1E42"~ +"\u0300\u01F8\u0301\u0143\u0303\u00D1\u0307\u1E44\u030C\u0147\u0323\u1E46\u0327\u0145\u032D\u1E4A\u0331\u1E48\u0300"~ +"\u00D2\u0301\u00D3\u0302\u00D4\u0303\u00D5\u0304\u014C\u0306\u014E\u0307\u022E\u0308\u00D6\u0309\u1ECE\u030B\u0150"~ +"\u030C\u01D1\u030F\u020C\u0311\u020E\u031B\u01A0\u0323\u1ECC\u0328\u01EA\u0301\u1E54\u0307\u1E56\u0301\u0154\u0307"~ +"\u1E58\u030C\u0158\u030F\u0210\u0311\u0212\u0323\u1E5A\u0327\u0156\u0331\u1E5E\u0301\u015A\u0302\u015C\u0307\u1E60"~ +"\u030C\u0160\u0323\u1E62\u0326\u0218\u0327\u015E\u0307\u1E6A\u030C\u0164\u0323\u1E6C\u0326\u021A\u0327\u0162\u032D"~ +"\u1E70\u0331\u1E6E\u0300\u00D9\u0301\u00DA\u0302\u00DB\u0303\u0168\u0304\u016A\u0306\u016C\u0308\u00DC\u0309\u1EE6"~ +"\u030A\u016E\u030B\u0170\u030C\u01D3\u030F\u0214\u0311\u0216\u031B\u01AF\u0323\u1EE4\u0324\u1E72\u0328\u0172\u032D"~ +"\u1E76\u0330\u1E74\u0303\u1E7C\u0323\u1E7E\u0300\u1E80\u0301\u1E82\u0302\u0174\u0307\u1E86\u0308\u1E84\u0323\u1E88"~ +"\u0307\u1E8A\u0308\u1E8C\u0300\u1EF2\u0301\u00DD\u0302\u0176\u0303\u1EF8\u0304\u0232\u0307\u1E8E\u0308\u0178\u0309"~ +"\u1EF6\u0323\u1EF4\u0301\u0179\u0302\u1E90\u0307\u017B\u030C\u017D\u0323\u1E92\u0331\u1E94\u0300\u00E0\u0301\u00E1"~ +"\u0302\u00E2\u0303\u00E3\u0304\u0101\u0306\u0103\u0307\u0227\u0308\u00E4\u0309\u1EA3\u030A\u00E5\u030C\u01CE\u030F"~ +"\u0201\u0311\u0203\u0323\u1EA1\u0325\u1E01\u0328\u0105\u0307\u1E03\u0323\u1E05\u0331\u1E07\u0301\u0107\u0302\u0109"~ +"\u0307\u010B\u030C\u010D\u0327\u00E7\u0307\u1E0B\u030C\u010F\u0323\u1E0D\u0327\u1E11\u032D\u1E13\u0331\u1E0F\u0300"~ +"\u00E8\u0301\u00E9\u0302\u00EA\u0303\u1EBD\u0304\u0113\u0306\u0115\u0307\u0117\u0308\u00EB\u0309\u1EBB\u030C\u011B"~ +"\u030F\u0205\u0311\u0207\u0323\u1EB9\u0327\u0229\u0328\u0119\u032D\u1E19\u0330\u1E1B\u0307\u1E1F\u0301\u01F5\u0302"~ +"\u011D\u0304\u1E21\u0306\u011F\u0307\u0121\u030C\u01E7\u0327\u0123\u0302\u0125\u0307\u1E23\u0308\u1E27\u030C\u021F"~ +"\u0323\u1E25\u0327\u1E29\u032E\u1E2B\u0331\u1E96\u0300\u00EC\u0301\u00ED\u0302\u00EE\u0303\u0129\u0304\u012B\u0306"~ +"\u012D\u0308\u00EF\u0309\u1EC9\u030C\u01D0\u030F\u0209\u0311\u020B\u0323\u1ECB\u0328\u012F\u0330\u1E2D\u0302\u0135"~ +"\u030C\u01F0\u0301\u1E31\u030C\u01E9\u0323\u1E33\u0327\u0137\u0331\u1E35\u0301\u013A\u030C\u013E\u0323\u1E37\u0327"~ +"\u013C\u032D\u1E3D\u0331\u1E3B\u0301\u1E3F\u0307\u1E41\u0323\u1E43\u0300\u01F9\u0301\u0144\u0303\u00F1\u0307\u1E45"~ +"\u030C\u0148\u0323\u1E47\u0327\u0146\u032D\u1E4B\u0331\u1E49\u0300\u00F2\u0301\u00F3\u0302\u00F4\u0303\u00F5\u0304"~ +"\u014D\u0306\u014F\u0307\u022F\u0308\u00F6\u0309\u1ECF\u030B\u0151\u030C\u01D2\u030F\u020D\u0311\u020F\u031B\u01A1"~ +"\u0323\u1ECD\u0328\u01EB\u0301\u1E55\u0307\u1E57\u0301\u0155\u0307\u1E59\u030C\u0159\u030F\u0211\u0311\u0213\u0323"~ +"\u1E5B\u0327\u0157\u0331\u1E5F\u0301\u015B\u0302\u015D\u0307\u1E61\u030C\u0161\u0323\u1E63\u0326\u0219\u0327\u015F"~ +"\u0307\u1E6B\u0308\u1E97\u030C\u0165\u0323\u1E6D\u0326\u021B\u0327\u0163\u032D\u1E71\u0331\u1E6F\u0300\u00F9\u0301"~ +"\u00FA\u0302\u00FB\u0303\u0169\u0304\u016B\u0306\u016D\u0308\u00FC\u0309\u1EE7\u030A\u016F\u030B\u0171\u030C\u01D4"~ +"\u030F\u0215\u0311\u0217\u031B\u01B0\u0323\u1EE5\u0324\u1E73\u0328\u0173\u032D\u1E77\u0330\u1E75\u0303\u1E7D\u0323"~ +"\u1E7F\u0300\u1E81\u0301\u1E83\u0302\u0175\u0307\u1E87\u0308\u1E85\u030A\u1E98\u0323\u1E89\u0307\u1E8B\u0308\u1E8D"~ +"\u0300\u1EF3\u0301\u00FD\u0302\u0177\u0303\u1EF9\u0304\u0233\u0307\u1E8F\u0308\u00FF\u0309\u1EF7\u030A\u1E99\u0323"~ +"\u1EF5\u0301\u017A\u0302\u1E91\u0307\u017C\u030C\u017E\u0323\u1E93\u0331\u1E95\u0300\u1FED\u0301\u0385\u0342\u1FC1"~ +"\u0300\u1EA6\u0301\u1EA4\u0303\u1EAA\u0309\u1EA8\u0304\u01DE\u0301\u01FA\u0301\u01FC\u0304\u01E2\u0301\u1E08\u0300"~ +"\u1EC0\u0301\u1EBE\u0303\u1EC4\u0309\u1EC2\u0301\u1E2E\u0300\u1ED2\u0301\u1ED0\u0303\u1ED6\u0309\u1ED4\u0301\u1E4C"~ +"\u0304\u022C\u0308\u1E4E\u0304\u022A\u0301\u01FE\u0300\u01DB\u0301\u01D7\u0304\u01D5\u030C\u01D9\u0300\u1EA7\u0301"~ +"\u1EA5\u0303\u1EAB\u0309\u1EA9\u0304\u01DF\u0301\u01FB\u0301\u01FD\u0304\u01E3\u0301\u1E09\u0300\u1EC1\u0301\u1EBF"~ +"\u0303\u1EC5\u0309\u1EC3\u0301\u1E2F\u0300\u1ED3\u0301\u1ED1\u0303\u1ED7\u0309\u1ED5\u0301\u1E4D\u0304\u022D\u0308"~ +"\u1E4F\u0304\u022B\u0301\u01FF\u0300\u01DC\u0301\u01D8\u0304\u01D6\u030C\u01DA\u0300\u1EB0\u0301\u1EAE\u0303\u1EB4"~ +"\u0309\u1EB2\u0300\u1EB1\u0301\u1EAF\u0303\u1EB5\u0309\u1EB3\u0300\u1E14\u0301\u1E16\u0300\u1E15\u0301\u1E17\u0300"~ +"\u1E50\u0301\u1E52\u0300\u1E51\u0301\u1E53\u0307\u1E64\u0307\u1E65\u0307\u1E66\u0307\u1E67\u0301\u1E78\u0301\u1E79"~ +"\u0308\u1E7A\u0308\u1E7B\u0307\u1E9B\u0300\u1EDC\u0301\u1EDA\u0303\u1EE0\u0309\u1EDE\u0323\u1EE2\u0300\u1EDD\u0301"~ +"\u1EDB\u0303\u1EE1\u0309\u1EDF\u0323\u1EE3\u0300\u1EEA\u0301\u1EE8\u0303\u1EEE\u0309\u1EEC\u0323\u1EF0\u0300\u1EEB"~ +"\u0301\u1EE9\u0303\u1EEF\u0309\u1EED\u0323\u1EF1\u030C\u01EE\u0304\u01EC\u0304\u01ED\u0304\u01E0\u0304\u01E1\u0306"~ +"\u1E1C\u0306\u1E1D\u0304\u0230\u0304\u0231\u030C\u01EF\u0300\u1FBA\u0301\u0386\u0304\u1FB9\u0306\u1FB8\u0313\u1F08"~ +"\u0314\u1F09\u0345\u1FBC\u0300\u1FC8\u0301\u0388\u0313\u1F18\u0314\u1F19\u0300\u1FCA\u0301\u0389\u0313\u1F28\u0314"~ +"\u1F29\u0345\u1FCC\u0300\u1FDA\u0301\u038A\u0304\u1FD9\u0306\u1FD8\u0308\u03AA\u0313\u1F38\u0314\u1F39\u0300\u1FF8"~ +"\u0301\u038C\u0313\u1F48\u0314\u1F49\u0314\u1FEC\u0300\u1FEA\u0301\u038E\u0304\u1FE9\u0306\u1FE8\u0308\u03AB\u0314"~ +"\u1F59\u0300\u1FFA\u0301\u038F\u0313\u1F68\u0314\u1F69\u0345\u1FFC\u0345\u1FB4\u0345\u1FC4\u0300\u1F70\u0301\u03AC"~ +"\u0304\u1FB1\u0306\u1FB0\u0313\u1F00\u0314\u1F01\u0342\u1FB6\u0345\u1FB3\u0300\u1F72\u0301\u03AD\u0313\u1F10\u0314"~ +"\u1F11\u0300\u1F74\u0301\u03AE\u0313\u1F20\u0314\u1F21\u0342\u1FC6\u0345\u1FC3\u0300\u1F76\u0301\u03AF\u0304\u1FD1"~ +"\u0306\u1FD0\u0308\u03CA\u0313\u1F30\u0314\u1F31\u0342\u1FD6\u0300\u1F78\u0301\u03CC\u0313\u1F40\u0314\u1F41\u0313"~ +"\u1FE4\u0314\u1FE5\u0300\u1F7A\u0301\u03CD\u0304\u1FE1\u0306\u1FE0\u0308\u03CB\u0313\u1F50\u0314\u1F51\u0342\u1FE6"~ +"\u0300\u1F7C\u0301\u03CE\u0313\u1F60\u0314\u1F61\u0342\u1FF6\u0345\u1FF3\u0300\u1FD2\u0301\u0390\u0342\u1FD7\u0300"~ +"\u1FE2\u0301\u03B0\u0342\u1FE7\u0345\u1FF4\u0301\u03D3\u0308\u03D4\u0308\u0407\u0306\u04D0\u0308\u04D2\u0301\u0403"~ +"\u0300\u0400\u0306\u04D6\u0308\u0401\u0306\u04C1\u0308\u04DC\u0308\u04DE\u0300\u040D\u0304\u04E2\u0306\u0419\u0308"~ +"\u04E4\u0301\u040C\u0308\u04E6\u0304\u04EE\u0306\u040E\u0308\u04F0\u030B\u04F2\u0308\u04F4\u0308\u04F8\u0308\u04EC"~ +"\u0306\u04D1\u0308\u04D3\u0301\u0453\u0300\u0450\u0306\u04D7\u0308\u0451\u0306\u04C2\u0308\u04DD\u0308\u04DF\u0300"~ +"\u045D\u0304\u04E3\u0306\u0439\u0308\u04E5\u0301\u045C\u0308\u04E7\u0304\u04EF\u0306\u045E\u0308\u04F1\u030B\u04F3"~ +"\u0308\u04F5\u0308\u04F9\u0308\u04ED\u0308\u0457\u030F\u0476\u030F\u0477\u0308\u04DA\u0308\u04DB\u0308\u04EA\u0308"~ +"\u04EB\u0653\u0622\u0654\u0623\u0655\u0625\u0654\u0624\u0654\u0626\u0654\u06C2\u0654\u06D3\u0654\u06C0\u093C\u0929"~ +"\u093C\u0931\u093C\u0934\u09BE\u09CB\u09D7\u09CC\u0B3E\u0B4B\u0B56\u0B48\u0B57\u0B4C\u0BD7\u0B94\u0BBE\u0BCA\u0BD7"~ +"\u0BCC\u0BBE\u0BCB\u0C56\u0C48\u0CD5\u0CC0\u0CC2\u0CCA\u0CD5\u0CC7\u0CD6\u0CC8\u0CD5\u0CCB\u0D3E\u0D4A\u0D57\u0D4C"~ +"\u0D3E\u0D4B\u0DCA\u0DDA\u0DCF\u0DDC\u0DDF\u0DDE\u0DCA\u0DDD\u102E\u1026\u1B35\u1B06\u1B35\u1B08\u1B35\u1B0A\u1B35"~ +"\u1B0C\u1B35\u1B0E\u1B35\u1B12\u1B35\u1B3B\u1B35\u1B3D\u1B35\u1B40\u1B35\u1B41\u1B35\u1B43\u0304\u1E38\u0304\u1E39"~ +"\u0304\u1E5C\u0304\u1E5D\u0307\u1E68\u0307\u1E69\u0302\u1EAC\u0306\u1EB6\u0302\u1EAD\u0306\u1EB7\u0302\u1EC6\u0302"~ +"\u1EC7\u0302\u1ED8\u0302\u1ED9\u0300\u1F02\u0301\u1F04\u0342\u1F06\u0345\u1F80\u0300\u1F03\u0301\u1F05\u0342\u1F07"~ +"\u0345\u1F81\u0345\u1F82\u0345\u1F83\u0345\u1F84\u0345\u1F85\u0345\u1F86\u0345\u1F87\u0300\u1F0A\u0301\u1F0C\u0342"~ +"\u1F0E\u0345\u1F88\u0300\u1F0B\u0301\u1F0D\u0342\u1F0F\u0345\u1F89\u0345\u1F8A\u0345\u1F8B\u0345\u1F8C\u0345\u1F8D"~ +"\u0345\u1F8E\u0345\u1F8F\u0300\u1F12\u0301\u1F14\u0300\u1F13\u0301\u1F15\u0300\u1F1A\u0301\u1F1C\u0300\u1F1B\u0301"~ +"\u1F1D\u0300\u1F22\u0301\u1F24\u0342\u1F26\u0345\u1F90\u0300\u1F23\u0301\u1F25\u0342\u1F27\u0345\u1F91\u0345\u1F92"~ +"\u0345\u1F93\u0345\u1F94\u0345\u1F95\u0345\u1F96\u0345\u1F97\u0300\u1F2A\u0301\u1F2C\u0342\u1F2E\u0345\u1F98\u0300"~ +"\u1F2B\u0301\u1F2D\u0342\u1F2F\u0345\u1F99\u0345\u1F9A\u0345\u1F9B\u0345\u1F9C\u0345\u1F9D\u0345\u1F9E\u0345\u1F9F"~ +"\u0300\u1F32\u0301\u1F34\u0342\u1F36\u0300\u1F33\u0301\u1F35\u0342\u1F37\u0300\u1F3A\u0301\u1F3C\u0342\u1F3E\u0300"~ +"\u1F3B\u0301\u1F3D\u0342\u1F3F\u0300\u1F42\u0301\u1F44\u0300\u1F43\u0301\u1F45\u0300\u1F4A\u0301\u1F4C\u0300\u1F4B"~ +"\u0301\u1F4D\u0300\u1F52\u0301\u1F54\u0342\u1F56\u0300\u1F53\u0301\u1F55\u0342\u1F57\u0300\u1F5B\u0301\u1F5D\u0342"~ +"\u1F5F\u0300\u1F62\u0301\u1F64\u0342\u1F66\u0345\u1FA0\u0300\u1F63\u0301\u1F65\u0342\u1F67\u0345\u1FA1\u0345\u1FA2"~ +"\u0345\u1FA3\u0345\u1FA4\u0345\u1FA5\u0345\u1FA6\u0345\u1FA7\u0300\u1F6A\u0301\u1F6C\u0342\u1F6E\u0345\u1FA8\u0300"~ +"\u1F6B\u0301\u1F6D\u0342\u1F6F\u0345\u1FA9\u0345\u1FAA\u0345\u1FAB\u0345\u1FAC\u0345\u1FAD\u0345\u1FAE\u0345\u1FAF"~ +"\u0345\u1FB2\u0345\u1FC2\u0345\u1FF2\u0345\u1FB7\u0300\u1FCD\u0301\u1FCE\u0342\u1FCF\u0345\u1FC7\u0345\u1FF7\u0300"~ +"\u1FDD\u0301\u1FDE\u0342\u1FDF\u0338\u219A\u0338\u219B\u0338\u21AE\u0338\u21CD\u0338\u21CF\u0338\u21CE\u0338\u2204"~ +"\u0338\u2209\u0338\u220C\u0338\u2224\u0338\u2226\u0338\u2241\u0338\u2244\u0338\u2247\u0338\u2249\u0338\u226D\u0338"~ +"\u2262\u0338\u2270\u0338\u2271\u0338\u2274\u0338\u2275\u0338\u2278\u0338\u2279\u0338\u2280\u0338\u2281\u0338\u22E0"~ +"\u0338\u22E1\u0338\u2284\u0338\u2285\u0338\u2288\u0338\u2289\u0338\u22E2\u0338\u22E3\u0338\u22AC\u0338\u22AD\u0338"~ +"\u22AE\u0338\u22AF\u0338\u22EA\u0338\u22EB\u0338\u22EC\u0338\u22ED\u3099\u3094\u3099\u304C\u3099\u304E\u3099\u3050"~ +"\u3099\u3052\u3099\u3054\u3099\u3056\u3099\u3058\u3099\u305A\u3099\u305C\u3099\u305E\u3099\u3060\u3099\u3062\u3099"~ +"\u3065\u3099\u3067\u3099\u3069\u3099\u3070\u309A\u3071\u3099\u3073\u309A\u3074\u3099\u3076\u309A\u3077\u3099\u3079"~ +"\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"~ +"\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"~ +"\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"~ +"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"~ +"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"~ +"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"~ +""d; +return t[]; } } @@ -26,11 +126,111 @@ static if (size_t.sizeof == 8) enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)([ 0x0, 0x20, 0x2e0], [ 0x100, 0xb00, 0x10a0], [ 0x402030202020100, 0x908070206020205, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000300020001, 0x0, 0x0, 0x5, 0x0, 0x800070006, 0xb000a00000009, 0xd000c00000000, 0x10000f000e, 0x11000000000000, 0x1400130012, 0x17001600000015, 0x1900180000, 0x1b001a00180000, 0x1a00180000, 0x1a00180000, 0x1a00180000, 0x1a00000000, 0x1c00180000, 0x1a00180000, 0x1a001d0000, 0x1e00000000, 0x20001f0000, 0x2200210000, 0x25000000240023, 0x2700000026, 0x280000, 0x29, 0x0, 0x0, 0x0, 0x0, 0x2a00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b, 0x2d00000000, 0x0, 0x2e0000, 0x2f0000, 0x0, 0x31000000000030, 0x3300320000, 0x36003500340000, 0x38000000370000, 0x390000, 0x3b003a00000000, 0x0, 0x3d003c00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000000000, 0x41000000000000, 0x42000000000000, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45000000000000, 0x47000000000046, 0x0, 0x0, 0x490048, 0x4a003500000000, 0x4c004b0000, 0x4e004d0000, 0x0, 0x510050004f0000, 0x0, 0x1a000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x530000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x54000000000000, 0x0, 0x55000000000000, 0x56000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x580057, 0x59000000000000, 0x0, 0x0, 0x0, 0x0, 0x5a0000, 0x0, 0x0, 0x5c0000005b0000, 0x5d00000000, 0x5e, 0x5f004800000000, 0x600000, 0x4d000000620061, 0x6300000000, 0x640000, 0x65000000000000, 0x67001a00660000, 0x0, 0x6800000000, 0x6900000000, 0x0, 0x6a00410000, 0x410000, 0x6b0000, 0x6c0000, 0x0, 0x600000, 0x0, 0x6e006d0000, 0x4e000000000000, 0x6f002c0000, 0x70, 0x0, 0x0, 0x410000, 0x0, 0x7100000000, 0x72, 0x0, 0x0, 0x7300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x74000000000000, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78000000000000, 0x7a0079, 0x7b00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d007c, 0x7e, 0x750000, 0x0, 0x0, 0x800000007f0000, 0x0, 0x0, 0x0, 0x81000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8200000000, 0x8300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xdcdce8e6e6e6e6e6, 0xdcdcdcdcd8e8dcdc, 0xcadcdcdcdccacadc, 0xdcdcdcdcdcdcdcca, 0x1010101dcdcdcdc, 0xe6e6e6dcdcdcdc01, 0xdce6f0e6e6e6e6e6, 0xdcdce6e6e6dcdc, 0xe6dcdcdcdce6e6e6, 0xe9eaeae9e6dcdce8, 0xe6e6e6e6e6e9eaea, 0xe6e6e6e6e6e6e6e6, 0x0, 0x0, 0xe6e6e6e6e6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6dce6e6e6e6dc00, 0xe6e6e6e6dcdee6e6, 0xdcdcdcdcdcdce6e6, 0xe6e4dee6e6dce6e6, 0x11100f0e0d0c0b0a, 0x1700161514131312, 0x1200dce600191800, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0x201f1e, 0x0, 0x1f1e1d1c1b000000, 0xe6dcdce6e6222120, 0xdce6e6dce6e6e6e6, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0xe60000e6e6e6e6e6, 0xe60000e6dce6e6e6, 0xdce6e6dc00e6, 0x0, 0x0, 0x0, 0x0, 0x2400, 0x0, 0x0, 0x0, 0xdce6e6dce6e6dce6, 0xe6dce6dcdce6dcdc, 0xe6dce6dce6dce6e6, 0xe6e6dc, 0x0, 0x0, 0x0, 0xe6e6e6e6e6000000, 0xe6dce6e6, 0xdc0000000000, 0x0, 0x0, 0xe6e6000000000000, 0xe6e6e6e6e600e6e6, 0xe6e6e600e6e6e6e6, 0xe6e6e6e6e600, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0x0, 0x0, 0xe6e6e6e6dcdcdce6, 0x0, 0xdce6e6e6e6e60000, 0xe6e6e6e6dcdcdcdc, 0xe6e6e6e6e6e6e6e6, 0xe6dce6e6dc00e6e6, 0xdcdcdce6e6e6dce6, 0xe6dce6e6e61d1c1b, 0xe6e6e6e6e6dcdce6, 0x0, 0x0, 0x0, 0x700000000, 0x0, 0x90000000000, 0xe6e6dce600, 0x0, 0x0, 0x90000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000000000, 0x0, 0x90000000000, 0x5b540000000000, 0x0, 0x0, 0x0, 0x0, 0x909000000, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96767, 0x0, 0x6b6b6b6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x97676, 0x0, 0x7a7a7a7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdc, 0x0, 0x0, 0xdc00dc0000000000, 0xd800, 0x0, 0x0, 0x8400828100, 0x828282820000, 0xe6e60009e6e60082, 0x0, 0x0, 0x0, 0xdc000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x700000000000000, 0x90900, 0x0, 0xdc0000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e60000000000, 0x0, 0x0, 0x90900000000, 0x0, 0x0, 0x0, 0x900000000, 0x0, 0x0, 0x0, 0x90000, 0xe60000000000, 0x0, 0xe400, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdce6de00, 0x0, 0x0, 0xe600000000000000, 0xdc, 0x9, 0x0, 0xe6e6e60000000000, 0xdc0000e6e6e6e6e6, 0x0, 0x0, 0xdcdcdce6e6e6e6e6, 0xdc00dce6e6dcdcdc, 0xe6e6e6dcdce6e6dc, 0xe6e6e6e6dce6e6, 0x0, 0x0, 0x0, 0x0, 0x700000000, 0x0, 0x900000000, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6dce6000000, 0xe6e6e6e6, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x7000000000000, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x700000000000000, 0x0, 0x0, 0x0, 0xdcdcdc0100e6e6e6, 0xdcdcdcdce6e6dcdc, 0x1010101010100e6, 0xdc0000000001, 0xe600000000, 0xe6e6, 0xe6e6e6e6e6dce6e6, 0xdcd6eae6e6dce6e6, 0xe6e6e6e6e6e6e6ca, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe4e8e6e6e6e6e6e6, 0xdce6dce9e6dadce4, 0x0, 0x0, 0xe6e6e6e60101e6e6, 0xe6e6010101, 0xe60101000000e600, 0xdcdcdcdc0101e6dc, 0xe6, 0x0, 0x0, 0xe600000000000000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x900000000000000, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0x0, 0xe0e0dee8e4da0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80800, 0x0, 0xe600000000000000, 0xe6e6e6e600000000, 0xe6e6e6e6e6e6, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0x0, 0x0, 0xe6e6, 0x0, 0x9000000000000, 0x0, 0x0, 0x0, 0x0, 0x900000000, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6, 0x0, 0x0, 0xdcdcdc000000, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000dce6e600e6, 0xe6e60000000000e6, 0xe600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000000000, 0x0, 0x0, 0x0, 0x0, 0x1a000000000000, 0xdce6e6e6e6e6e6e6, 0xe6e6dcdcdcdcdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc0000000000, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0xe6e6e6, 0x0, 0xe600dc0000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900000000dc01e6, 0xdce60000000000, 0x0, 0x0, 0x0, 0xe6e6e6e600000000, 0x0, 0x0, 0x0, 0x0, 0xe6e6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc0000000000, 0xdcdc000000000000, 0xdcdcdce6dce6e6e6, 0xdc, 0x0, 0xdce6dce60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x900000000000000, 0x0, 0x0, 0x0, 0x70900, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x909000000, 0x0, 0x9, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x7090000000000, 0x0, 0x0, 0x90700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x707000000, 0xe6e6000000000000, 0xe6e6e6e6e6, 0xe6e6e6e6e6, 0x0, 0x7000000090000, 0x0, 0x0, 0xe6000000000000, 0x7090000, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x709000000000000, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9090000000000, 0x7000000, 0x0, 0x0, 0x0, 0x900000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x90900070000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900000000000000, 0x0, 0x90900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x101010101, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x1000000000000, 0x1d8d80000000000, 0xd8d8e20000000101, 0xd8d8d8, 0xdcdcdcdcdc000000, 0xe6e6e60000dcdcdc, 0xdcdce6e6, 0x0, 0x0, 0x0, 0xe6e6e6e60000, 0x0, 0x0, 0xe6e6e60000, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e60000e6, 0xe6e600e6e600e6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0xe600000000000000, 0x0, 0x0, 0x0, 0xe6000000000000, 0x0, 0x0, 0x0, 0xe6e6e6e600000000, 0x0, 0x0, 0x0, 0xe6dce8e800000000, 0x0, 0x0, 0x0, 0x0, 0xdcdcdcdcdcdcdc, 0x0, 0xe6e6e6e600000000, 0x7e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)([ 0x0, 0x400], [ 0x1000, 0x2600], [ 0x3000200010000, 0x7000600050004, 0x7000700070008, 0xa000700090007, 0x70007000c000b, 0x7000700070007, 0x700070007000d, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x70010000f000e, 0x7000700070011, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff080208010800, 0x281618138003ffff, 0x383308328821301b, 0x285108507841383a, 0x8068485f185c3056, 0x3882407affff1078, 0x30a510a398903889, 0xffff30b648ad10ab, 0xffffffffffffffff, 0x28cf18cc80bcffff, 0x38ec08eb88da30d4, 0x290b110970fb40f3, 0x8122491919163110, 0x393c4134ffff1132, 0x3960115e994b4143, 0xffff317351691167, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff1979, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff217cffffffff, 0x984118209810980, 0xffff2185ffffffff, 0x989ffffffffffff, 0xffffffffffffffff, 0xffff0991198e218a, 0xffffffffffff0992, 0xffffffffffff2193, 0xffff2197ffffffff, 0x99f119d099c099b, 0xffff21a0ffffffff, 0x9a4ffffffffffff, 0xffffffffffffffff, 0xffff09ac19a921a5, 0xffffffffffff09ad, 0xffffffffffff21ae, 0x21b621b2ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x11bc11baffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff11c011be, 0xffffffffffffffff, 0xffffffffffffffff, 0x9c309c2ffffffff, 0xffffffffffffffff, 0xffffffff09c509c4, 0xffffffffffffffff, 0x9c909c809c709c6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9caffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff29d029cb, 0xffffffffffffffff, 0xffffffffffffffff, 0x29d5ffffffffffff, 0xffffffffffff29da, 0x9dfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9e109e0ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9e309e2ffffffff, 0xffffffff09e509e4, 0x9e709e6ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09e8ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff39e9ffff, 0x29f4ffff21f0ffff, 0xffffffff39f9ffff, 0x2200ffffffffffff, 0xffffffff0a04ffff, 0xffffffff3205ffff, 0xffffffff2a0bffff, 0xffff0a11ffff0a10, 0xffffffff4212ffff, 0x321effff221affff, 0xffffffff4224ffff, 0x222cffffffffffff, 0xffffffff1230ffff, 0xffffffff4232ffff, 0x1a431a40323affff, 0xffff0a46ffffffff, 0xffff1247ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a49ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa4cffffffff124a, 0xa5212501a4dffff, 0xffff0a57ffff2253, 0xffff0a58ffffffff, 0x2259ffffffffffff, 0xa5dffffffffffff, 0xa5effffffffffff, 0xffffffff0a5fffff, 0xa62ffffffff1260, 0xa6812661a63ffff, 0xffff0a6dffff2269, 0xffff0a6effffffff, 0x226fffffffffffff, 0xa73ffffffffffff, 0xa74ffffffffffff, 0xffffffff0a75ffff, 0xffffffffffffffff, 0xffff0a76ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a780a77, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a7a0a79, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a7c0a7b, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1a7dffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a81ffff0a80, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a82ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a83ffffffff, 0xffffffff0a84ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0a85, 0xffffffffffffffff, 0xa87ffffffff0a86, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1288ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1a8affffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a8dffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa90128effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a91ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa92ffffffffffff, 0xffffffffffffffff, 0xffff1a93ffffffff, 0xffff0a96ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa991297ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1a9affff, 0xffffffffffff0a9d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a9effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaa0ffff0a9fffff, 0xaa2ffff0aa1ffff, 0xffffffff0aa3ffff, 0xffffffff0aa4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0aa5ffffffff, 0xaa80aa7ffff0aa6, 0xffff0aa9ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaab0aaaffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaad0aacffffffff, 0xffffffffffffffff, 0xaaf0aaeffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff12b212b0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ab50ab4, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ab70ab6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xac10ac022bc22b8, 0xac50ac40ac30ac2, 0xacf0ace22ca22c6, 0xad30ad20ad10ad0, 0xffffffff12d612d4, 0xffffffffffffffff, 0xffffffff12da12d8, 0xffffffffffffffff, 0xae50ae422e022dc, 0xae90ae80ae70ae6, 0xaf30af222ee22ea, 0xaf70af60af50af4, 0xffffffff1afb1af8, 0xffffffffffffffff, 0xffffffff1b011afe, 0xffffffffffffffff, 0xffffffff13061304, 0xffffffffffffffff, 0xffffffff130a1308, 0xffffffffffffffff, 0xffffffff1b0f1b0c, 0xffffffffffffffff, 0xffffffff1b12ffff, 0xffffffffffffffff, 0xb1e0b1d23192315, 0xb220b210b200b1f, 0xb2c0b2b23272323, 0xb300b2f0b2e0b2d, 0xffffffffffff0b31, 0xffffffffffff0b32, 0xffffffffffffffff, 0xffffffffffff0b33, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b34ffffffff, 0xffffffffffffffff, 0x1b35ffffffffffff, 0xffffffffffffffff, 0xffff0b38ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b39ffffffff, 0xffffffffffffffff, 0xffff1b3affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b3effff0b3d, 0xffffffffffff0b3f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b41ffff0b40, 0xffffffffffff0b42, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb43ffffffffffff, 0xffffffffffffffff, 0xb45ffffffff0b44, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb46ffffffffffff, 0xffffffff0b47ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0b48, 0xb49ffffffffffff, 0xffffffff0b4affff, 0xffffffffffff0b4b, 0xffffffff0b4cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b4dffff, 0xffffffff0b4f0b4e, 0xffffffffffffffff, 0xffffffffffffffff, 0xb510b50ffffffff, 0xb530b52ffffffff, 0xb550b54ffffffff, 0xffffffff0b570b56, 0xb590b58ffffffff, 0xb5b0b5affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b5d0b5cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b5effffffff, 0xffffffffffffffff, 0xb61ffff0b600b5f, 0xffffffffffffffff, 0xb630b62ffffffff, 0xffffffff0b650b64, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b66ffffffff, 0xb67ffffffffffff, 0xb69ffff0b68ffff, 0xb6bffff0b6affff, 0xb6dffff0b6cffff, 0xb6fffff0b6effff, 0xb71ffff0b70ffff, 0xffffffff0b72ffff, 0xffff0b74ffff0b73, 0xffffffffffff0b75, 0x1376ffffffffffff, 0xffff1378ffffffff, 0xffffffff137affff, 0x137effffffff137c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b80ffff, 0xffffffffffffffff, 0xffff0b81ffffffff, 0xb82ffffffffffff, 0xb84ffff0b83ffff, 0xb86ffff0b85ffff, 0xb88ffff0b87ffff, 0xb8affff0b89ffff, 0xb8cffff0b8bffff, 0xffffffff0b8dffff, 0xffff0b8fffff0b8e, 0xffffffffffff0b90, 0x1391ffffffffffff, 0xffff1393ffffffff, 0xffffffff1395ffff, 0x1399ffffffff1397, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb9bffffffffffff, 0xffff0b9e0b9d0b9c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b9fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xba1ffff0ba0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ba2ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0ba40ba3ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x13a5ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1ba7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0bab0baa, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0bacffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); -@property immutable(CompEntry[]) compositionTable() nothrow pure @nogc @safe +dstring compositionTable() nothrow pure @nogc @safe { -alias CE = CompEntry; -static immutable CE[] t = [CE(0x00338, 0x0226e),CE(0x00338, 0x02260),CE(0x00338, 0x0226f),CE(0x00300, 0x000c0),CE(0x00301, 0x000c1),CE(0x00302, 0x000c2),CE(0x00303, 0x000c3),CE(0x00304, 0x00100),CE(0x00306, 0x00102),CE(0x00307, 0x00226),CE(0x00308, 0x000c4),CE(0x00309, 0x01ea2),CE(0x0030a, 0x000c5),CE(0x0030c, 0x001cd),CE(0x0030f, 0x00200),CE(0x00311, 0x00202),CE(0x00323, 0x01ea0),CE(0x00325, 0x01e00),CE(0x00328, 0x00104),CE(0x00307, 0x01e02),CE(0x00323, 0x01e04),CE(0x00331, 0x01e06),CE(0x00301, 0x00106),CE(0x00302, 0x00108),CE(0x00307, 0x0010a),CE(0x0030c, 0x0010c),CE(0x00327, 0x000c7),CE(0x00307, 0x01e0a),CE(0x0030c, 0x0010e),CE(0x00323, 0x01e0c),CE(0x00327, 0x01e10),CE(0x0032d, 0x01e12),CE(0x00331, 0x01e0e),CE(0x00300, 0x000c8),CE(0x00301, 0x000c9),CE(0x00302, 0x000ca),CE(0x00303, 0x01ebc),CE(0x00304, 0x00112),CE(0x00306, 0x00114),CE(0x00307, 0x00116),CE(0x00308, 0x000cb),CE(0x00309, 0x01eba),CE(0x0030c, 0x0011a),CE(0x0030f, 0x00204),CE(0x00311, 0x00206),CE(0x00323, 0x01eb8),CE(0x00327, 0x00228),CE(0x00328, 0x00118),CE(0x0032d, 0x01e18),CE(0x00330, 0x01e1a),CE(0x00307, 0x01e1e),CE(0x00301, 0x001f4),CE(0x00302, 0x0011c),CE(0x00304, 0x01e20),CE(0x00306, 0x0011e),CE(0x00307, 0x00120),CE(0x0030c, 0x001e6),CE(0x00327, 0x00122),CE(0x00302, 0x00124),CE(0x00307, 0x01e22),CE(0x00308, 0x01e26),CE(0x0030c, 0x0021e),CE(0x00323, 0x01e24),CE(0x00327, 0x01e28),CE(0x0032e, 0x01e2a),CE(0x00300, 0x000cc),CE(0x00301, 0x000cd),CE(0x00302, 0x000ce),CE(0x00303, 0x00128),CE(0x00304, 0x0012a),CE(0x00306, 0x0012c),CE(0x00307, 0x00130),CE(0x00308, 0x000cf),CE(0x00309, 0x01ec8),CE(0x0030c, 0x001cf),CE(0x0030f, 0x00208),CE(0x00311, 0x0020a),CE(0x00323, 0x01eca),CE(0x00328, 0x0012e),CE(0x00330, 0x01e2c),CE(0x00302, 0x00134),CE(0x00301, 0x01e30),CE(0x0030c, 0x001e8),CE(0x00323, 0x01e32),CE(0x00327, 0x00136),CE(0x00331, 0x01e34),CE(0x00301, 0x00139),CE(0x0030c, 0x0013d),CE(0x00323, 0x01e36),CE(0x00327, 0x0013b),CE(0x0032d, 0x01e3c),CE(0x00331, 0x01e3a),CE(0x00301, 0x01e3e),CE(0x00307, 0x01e40),CE(0x00323, 0x01e42),CE(0x00300, 0x001f8),CE(0x00301, 0x00143),CE(0x00303, 0x000d1),CE(0x00307, 0x01e44),CE(0x0030c, 0x00147),CE(0x00323, 0x01e46),CE(0x00327, 0x00145),CE(0x0032d, 0x01e4a),CE(0x00331, 0x01e48),CE(0x00300, 0x000d2),CE(0x00301, 0x000d3),CE(0x00302, 0x000d4),CE(0x00303, 0x000d5),CE(0x00304, 0x0014c),CE(0x00306, 0x0014e),CE(0x00307, 0x0022e),CE(0x00308, 0x000d6),CE(0x00309, 0x01ece),CE(0x0030b, 0x00150),CE(0x0030c, 0x001d1),CE(0x0030f, 0x0020c),CE(0x00311, 0x0020e),CE(0x0031b, 0x001a0),CE(0x00323, 0x01ecc),CE(0x00328, 0x001ea),CE(0x00301, 0x01e54),CE(0x00307, 0x01e56),CE(0x00301, 0x00154),CE(0x00307, 0x01e58),CE(0x0030c, 0x00158),CE(0x0030f, 0x00210),CE(0x00311, 0x00212),CE(0x00323, 0x01e5a),CE(0x00327, 0x00156),CE(0x00331, 0x01e5e),CE(0x00301, 0x0015a),CE(0x00302, 0x0015c),CE(0x00307, 0x01e60),CE(0x0030c, 0x00160),CE(0x00323, 0x01e62),CE(0x00326, 0x00218),CE(0x00327, 0x0015e),CE(0x00307, 0x01e6a),CE(0x0030c, 0x00164),CE(0x00323, 0x01e6c),CE(0x00326, 0x0021a),CE(0x00327, 0x00162),CE(0x0032d, 0x01e70),CE(0x00331, 0x01e6e),CE(0x00300, 0x000d9),CE(0x00301, 0x000da),CE(0x00302, 0x000db),CE(0x00303, 0x00168),CE(0x00304, 0x0016a),CE(0x00306, 0x0016c),CE(0x00308, 0x000dc),CE(0x00309, 0x01ee6),CE(0x0030a, 0x0016e),CE(0x0030b, 0x00170),CE(0x0030c, 0x001d3),CE(0x0030f, 0x00214),CE(0x00311, 0x00216),CE(0x0031b, 0x001af),CE(0x00323, 0x01ee4),CE(0x00324, 0x01e72),CE(0x00328, 0x00172),CE(0x0032d, 0x01e76),CE(0x00330, 0x01e74),CE(0x00303, 0x01e7c),CE(0x00323, 0x01e7e),CE(0x00300, 0x01e80),CE(0x00301, 0x01e82),CE(0x00302, 0x00174),CE(0x00307, 0x01e86),CE(0x00308, 0x01e84),CE(0x00323, 0x01e88),CE(0x00307, 0x01e8a),CE(0x00308, 0x01e8c),CE(0x00300, 0x01ef2),CE(0x00301, 0x000dd),CE(0x00302, 0x00176),CE(0x00303, 0x01ef8),CE(0x00304, 0x00232),CE(0x00307, 0x01e8e),CE(0x00308, 0x00178),CE(0x00309, 0x01ef6),CE(0x00323, 0x01ef4),CE(0x00301, 0x00179),CE(0x00302, 0x01e90),CE(0x00307, 0x0017b),CE(0x0030c, 0x0017d),CE(0x00323, 0x01e92),CE(0x00331, 0x01e94),CE(0x00300, 0x000e0),CE(0x00301, 0x000e1),CE(0x00302, 0x000e2),CE(0x00303, 0x000e3),CE(0x00304, 0x00101),CE(0x00306, 0x00103),CE(0x00307, 0x00227),CE(0x00308, 0x000e4),CE(0x00309, 0x01ea3),CE(0x0030a, 0x000e5),CE(0x0030c, 0x001ce),CE(0x0030f, 0x00201),CE(0x00311, 0x00203),CE(0x00323, 0x01ea1),CE(0x00325, 0x01e01),CE(0x00328, 0x00105),CE(0x00307, 0x01e03),CE(0x00323, 0x01e05),CE(0x00331, 0x01e07),CE(0x00301, 0x00107),CE(0x00302, 0x00109),CE(0x00307, 0x0010b),CE(0x0030c, 0x0010d),CE(0x00327, 0x000e7),CE(0x00307, 0x01e0b),CE(0x0030c, 0x0010f),CE(0x00323, 0x01e0d),CE(0x00327, 0x01e11),CE(0x0032d, 0x01e13),CE(0x00331, 0x01e0f),CE(0x00300, 0x000e8),CE(0x00301, 0x000e9),CE(0x00302, 0x000ea),CE(0x00303, 0x01ebd),CE(0x00304, 0x00113),CE(0x00306, 0x00115),CE(0x00307, 0x00117),CE(0x00308, 0x000eb),CE(0x00309, 0x01ebb),CE(0x0030c, 0x0011b),CE(0x0030f, 0x00205),CE(0x00311, 0x00207),CE(0x00323, 0x01eb9),CE(0x00327, 0x00229),CE(0x00328, 0x00119),CE(0x0032d, 0x01e19),CE(0x00330, 0x01e1b),CE(0x00307, 0x01e1f),CE(0x00301, 0x001f5),CE(0x00302, 0x0011d),CE(0x00304, 0x01e21),CE(0x00306, 0x0011f),CE(0x00307, 0x00121),CE(0x0030c, 0x001e7),CE(0x00327, 0x00123),CE(0x00302, 0x00125),CE(0x00307, 0x01e23),CE(0x00308, 0x01e27),CE(0x0030c, 0x0021f),CE(0x00323, 0x01e25),CE(0x00327, 0x01e29),CE(0x0032e, 0x01e2b),CE(0x00331, 0x01e96),CE(0x00300, 0x000ec),CE(0x00301, 0x000ed),CE(0x00302, 0x000ee),CE(0x00303, 0x00129),CE(0x00304, 0x0012b),CE(0x00306, 0x0012d),CE(0x00308, 0x000ef),CE(0x00309, 0x01ec9),CE(0x0030c, 0x001d0),CE(0x0030f, 0x00209),CE(0x00311, 0x0020b),CE(0x00323, 0x01ecb),CE(0x00328, 0x0012f),CE(0x00330, 0x01e2d),CE(0x00302, 0x00135),CE(0x0030c, 0x001f0),CE(0x00301, 0x01e31),CE(0x0030c, 0x001e9),CE(0x00323, 0x01e33),CE(0x00327, 0x00137),CE(0x00331, 0x01e35),CE(0x00301, 0x0013a),CE(0x0030c, 0x0013e),CE(0x00323, 0x01e37),CE(0x00327, 0x0013c),CE(0x0032d, 0x01e3d),CE(0x00331, 0x01e3b),CE(0x00301, 0x01e3f),CE(0x00307, 0x01e41),CE(0x00323, 0x01e43),CE(0x00300, 0x001f9),CE(0x00301, 0x00144),CE(0x00303, 0x000f1),CE(0x00307, 0x01e45),CE(0x0030c, 0x00148),CE(0x00323, 0x01e47),CE(0x00327, 0x00146),CE(0x0032d, 0x01e4b),CE(0x00331, 0x01e49),CE(0x00300, 0x000f2),CE(0x00301, 0x000f3),CE(0x00302, 0x000f4),CE(0x00303, 0x000f5),CE(0x00304, 0x0014d),CE(0x00306, 0x0014f),CE(0x00307, 0x0022f),CE(0x00308, 0x000f6),CE(0x00309, 0x01ecf),CE(0x0030b, 0x00151),CE(0x0030c, 0x001d2),CE(0x0030f, 0x0020d),CE(0x00311, 0x0020f),CE(0x0031b, 0x001a1),CE(0x00323, 0x01ecd),CE(0x00328, 0x001eb),CE(0x00301, 0x01e55),CE(0x00307, 0x01e57),CE(0x00301, 0x00155),CE(0x00307, 0x01e59),CE(0x0030c, 0x00159),CE(0x0030f, 0x00211),CE(0x00311, 0x00213),CE(0x00323, 0x01e5b),CE(0x00327, 0x00157),CE(0x00331, 0x01e5f),CE(0x00301, 0x0015b),CE(0x00302, 0x0015d),CE(0x00307, 0x01e61),CE(0x0030c, 0x00161),CE(0x00323, 0x01e63),CE(0x00326, 0x00219),CE(0x00327, 0x0015f),CE(0x00307, 0x01e6b),CE(0x00308, 0x01e97),CE(0x0030c, 0x00165),CE(0x00323, 0x01e6d),CE(0x00326, 0x0021b),CE(0x00327, 0x00163),CE(0x0032d, 0x01e71),CE(0x00331, 0x01e6f),CE(0x00300, 0x000f9),CE(0x00301, 0x000fa),CE(0x00302, 0x000fb),CE(0x00303, 0x00169),CE(0x00304, 0x0016b),CE(0x00306, 0x0016d),CE(0x00308, 0x000fc),CE(0x00309, 0x01ee7),CE(0x0030a, 0x0016f),CE(0x0030b, 0x00171),CE(0x0030c, 0x001d4),CE(0x0030f, 0x00215),CE(0x00311, 0x00217),CE(0x0031b, 0x001b0),CE(0x00323, 0x01ee5),CE(0x00324, 0x01e73),CE(0x00328, 0x00173),CE(0x0032d, 0x01e77),CE(0x00330, 0x01e75),CE(0x00303, 0x01e7d),CE(0x00323, 0x01e7f),CE(0x00300, 0x01e81),CE(0x00301, 0x01e83),CE(0x00302, 0x00175),CE(0x00307, 0x01e87),CE(0x00308, 0x01e85),CE(0x0030a, 0x01e98),CE(0x00323, 0x01e89),CE(0x00307, 0x01e8b),CE(0x00308, 0x01e8d),CE(0x00300, 0x01ef3),CE(0x00301, 0x000fd),CE(0x00302, 0x00177),CE(0x00303, 0x01ef9),CE(0x00304, 0x00233),CE(0x00307, 0x01e8f),CE(0x00308, 0x000ff),CE(0x00309, 0x01ef7),CE(0x0030a, 0x01e99),CE(0x00323, 0x01ef5),CE(0x00301, 0x0017a),CE(0x00302, 0x01e91),CE(0x00307, 0x0017c),CE(0x0030c, 0x0017e),CE(0x00323, 0x01e93),CE(0x00331, 0x01e95),CE(0x00300, 0x01fed),CE(0x00301, 0x00385),CE(0x00342, 0x01fc1),CE(0x00300, 0x01ea6),CE(0x00301, 0x01ea4),CE(0x00303, 0x01eaa),CE(0x00309, 0x01ea8),CE(0x00304, 0x001de),CE(0x00301, 0x001fa),CE(0x00301, 0x001fc),CE(0x00304, 0x001e2),CE(0x00301, 0x01e08),CE(0x00300, 0x01ec0),CE(0x00301, 0x01ebe),CE(0x00303, 0x01ec4),CE(0x00309, 0x01ec2),CE(0x00301, 0x01e2e),CE(0x00300, 0x01ed2),CE(0x00301, 0x01ed0),CE(0x00303, 0x01ed6),CE(0x00309, 0x01ed4),CE(0x00301, 0x01e4c),CE(0x00304, 0x0022c),CE(0x00308, 0x01e4e),CE(0x00304, 0x0022a),CE(0x00301, 0x001fe),CE(0x00300, 0x001db),CE(0x00301, 0x001d7),CE(0x00304, 0x001d5),CE(0x0030c, 0x001d9),CE(0x00300, 0x01ea7),CE(0x00301, 0x01ea5),CE(0x00303, 0x01eab),CE(0x00309, 0x01ea9),CE(0x00304, 0x001df),CE(0x00301, 0x001fb),CE(0x00301, 0x001fd),CE(0x00304, 0x001e3),CE(0x00301, 0x01e09),CE(0x00300, 0x01ec1),CE(0x00301, 0x01ebf),CE(0x00303, 0x01ec5),CE(0x00309, 0x01ec3),CE(0x00301, 0x01e2f),CE(0x00300, 0x01ed3),CE(0x00301, 0x01ed1),CE(0x00303, 0x01ed7),CE(0x00309, 0x01ed5),CE(0x00301, 0x01e4d),CE(0x00304, 0x0022d),CE(0x00308, 0x01e4f),CE(0x00304, 0x0022b),CE(0x00301, 0x001ff),CE(0x00300, 0x001dc),CE(0x00301, 0x001d8),CE(0x00304, 0x001d6),CE(0x0030c, 0x001da),CE(0x00300, 0x01eb0),CE(0x00301, 0x01eae),CE(0x00303, 0x01eb4),CE(0x00309, 0x01eb2),CE(0x00300, 0x01eb1),CE(0x00301, 0x01eaf),CE(0x00303, 0x01eb5),CE(0x00309, 0x01eb3),CE(0x00300, 0x01e14),CE(0x00301, 0x01e16),CE(0x00300, 0x01e15),CE(0x00301, 0x01e17),CE(0x00300, 0x01e50),CE(0x00301, 0x01e52),CE(0x00300, 0x01e51),CE(0x00301, 0x01e53),CE(0x00307, 0x01e64),CE(0x00307, 0x01e65),CE(0x00307, 0x01e66),CE(0x00307, 0x01e67),CE(0x00301, 0x01e78),CE(0x00301, 0x01e79),CE(0x00308, 0x01e7a),CE(0x00308, 0x01e7b),CE(0x00307, 0x01e9b),CE(0x00300, 0x01edc),CE(0x00301, 0x01eda),CE(0x00303, 0x01ee0),CE(0x00309, 0x01ede),CE(0x00323, 0x01ee2),CE(0x00300, 0x01edd),CE(0x00301, 0x01edb),CE(0x00303, 0x01ee1),CE(0x00309, 0x01edf),CE(0x00323, 0x01ee3),CE(0x00300, 0x01eea),CE(0x00301, 0x01ee8),CE(0x00303, 0x01eee),CE(0x00309, 0x01eec),CE(0x00323, 0x01ef0),CE(0x00300, 0x01eeb),CE(0x00301, 0x01ee9),CE(0x00303, 0x01eef),CE(0x00309, 0x01eed),CE(0x00323, 0x01ef1),CE(0x0030c, 0x001ee),CE(0x00304, 0x001ec),CE(0x00304, 0x001ed),CE(0x00304, 0x001e0),CE(0x00304, 0x001e1),CE(0x00306, 0x01e1c),CE(0x00306, 0x01e1d),CE(0x00304, 0x00230),CE(0x00304, 0x00231),CE(0x0030c, 0x001ef),CE(0x00300, 0x01fba),CE(0x00301, 0x00386),CE(0x00304, 0x01fb9),CE(0x00306, 0x01fb8),CE(0x00313, 0x01f08),CE(0x00314, 0x01f09),CE(0x00345, 0x01fbc),CE(0x00300, 0x01fc8),CE(0x00301, 0x00388),CE(0x00313, 0x01f18),CE(0x00314, 0x01f19),CE(0x00300, 0x01fca),CE(0x00301, 0x00389),CE(0x00313, 0x01f28),CE(0x00314, 0x01f29),CE(0x00345, 0x01fcc),CE(0x00300, 0x01fda),CE(0x00301, 0x0038a),CE(0x00304, 0x01fd9),CE(0x00306, 0x01fd8),CE(0x00308, 0x003aa),CE(0x00313, 0x01f38),CE(0x00314, 0x01f39),CE(0x00300, 0x01ff8),CE(0x00301, 0x0038c),CE(0x00313, 0x01f48),CE(0x00314, 0x01f49),CE(0x00314, 0x01fec),CE(0x00300, 0x01fea),CE(0x00301, 0x0038e),CE(0x00304, 0x01fe9),CE(0x00306, 0x01fe8),CE(0x00308, 0x003ab),CE(0x00314, 0x01f59),CE(0x00300, 0x01ffa),CE(0x00301, 0x0038f),CE(0x00313, 0x01f68),CE(0x00314, 0x01f69),CE(0x00345, 0x01ffc),CE(0x00345, 0x01fb4),CE(0x00345, 0x01fc4),CE(0x00300, 0x01f70),CE(0x00301, 0x003ac),CE(0x00304, 0x01fb1),CE(0x00306, 0x01fb0),CE(0x00313, 0x01f00),CE(0x00314, 0x01f01),CE(0x00342, 0x01fb6),CE(0x00345, 0x01fb3),CE(0x00300, 0x01f72),CE(0x00301, 0x003ad),CE(0x00313, 0x01f10),CE(0x00314, 0x01f11),CE(0x00300, 0x01f74),CE(0x00301, 0x003ae),CE(0x00313, 0x01f20),CE(0x00314, 0x01f21),CE(0x00342, 0x01fc6),CE(0x00345, 0x01fc3),CE(0x00300, 0x01f76),CE(0x00301, 0x003af),CE(0x00304, 0x01fd1),CE(0x00306, 0x01fd0),CE(0x00308, 0x003ca),CE(0x00313, 0x01f30),CE(0x00314, 0x01f31),CE(0x00342, 0x01fd6),CE(0x00300, 0x01f78),CE(0x00301, 0x003cc),CE(0x00313, 0x01f40),CE(0x00314, 0x01f41),CE(0x00313, 0x01fe4),CE(0x00314, 0x01fe5),CE(0x00300, 0x01f7a),CE(0x00301, 0x003cd),CE(0x00304, 0x01fe1),CE(0x00306, 0x01fe0),CE(0x00308, 0x003cb),CE(0x00313, 0x01f50),CE(0x00314, 0x01f51),CE(0x00342, 0x01fe6),CE(0x00300, 0x01f7c),CE(0x00301, 0x003ce),CE(0x00313, 0x01f60),CE(0x00314, 0x01f61),CE(0x00342, 0x01ff6),CE(0x00345, 0x01ff3),CE(0x00300, 0x01fd2),CE(0x00301, 0x00390),CE(0x00342, 0x01fd7),CE(0x00300, 0x01fe2),CE(0x00301, 0x003b0),CE(0x00342, 0x01fe7),CE(0x00345, 0x01ff4),CE(0x00301, 0x003d3),CE(0x00308, 0x003d4),CE(0x00308, 0x00407),CE(0x00306, 0x004d0),CE(0x00308, 0x004d2),CE(0x00301, 0x00403),CE(0x00300, 0x00400),CE(0x00306, 0x004d6),CE(0x00308, 0x00401),CE(0x00306, 0x004c1),CE(0x00308, 0x004dc),CE(0x00308, 0x004de),CE(0x00300, 0x0040d),CE(0x00304, 0x004e2),CE(0x00306, 0x00419),CE(0x00308, 0x004e4),CE(0x00301, 0x0040c),CE(0x00308, 0x004e6),CE(0x00304, 0x004ee),CE(0x00306, 0x0040e),CE(0x00308, 0x004f0),CE(0x0030b, 0x004f2),CE(0x00308, 0x004f4),CE(0x00308, 0x004f8),CE(0x00308, 0x004ec),CE(0x00306, 0x004d1),CE(0x00308, 0x004d3),CE(0x00301, 0x00453),CE(0x00300, 0x00450),CE(0x00306, 0x004d7),CE(0x00308, 0x00451),CE(0x00306, 0x004c2),CE(0x00308, 0x004dd),CE(0x00308, 0x004df),CE(0x00300, 0x0045d),CE(0x00304, 0x004e3),CE(0x00306, 0x00439),CE(0x00308, 0x004e5),CE(0x00301, 0x0045c),CE(0x00308, 0x004e7),CE(0x00304, 0x004ef),CE(0x00306, 0x0045e),CE(0x00308, 0x004f1),CE(0x0030b, 0x004f3),CE(0x00308, 0x004f5),CE(0x00308, 0x004f9),CE(0x00308, 0x004ed),CE(0x00308, 0x00457),CE(0x0030f, 0x00476),CE(0x0030f, 0x00477),CE(0x00308, 0x004da),CE(0x00308, 0x004db),CE(0x00308, 0x004ea),CE(0x00308, 0x004eb),CE(0x00653, 0x00622),CE(0x00654, 0x00623),CE(0x00655, 0x00625),CE(0x00654, 0x00624),CE(0x00654, 0x00626),CE(0x00654, 0x006c2),CE(0x00654, 0x006d3),CE(0x00654, 0x006c0),CE(0x0093c, 0x00929),CE(0x0093c, 0x00931),CE(0x0093c, 0x00934),CE(0x009be, 0x009cb),CE(0x009d7, 0x009cc),CE(0x00b3e, 0x00b4b),CE(0x00b56, 0x00b48),CE(0x00b57, 0x00b4c),CE(0x00bd7, 0x00b94),CE(0x00bbe, 0x00bca),CE(0x00bd7, 0x00bcc),CE(0x00bbe, 0x00bcb),CE(0x00c56, 0x00c48),CE(0x00cd5, 0x00cc0),CE(0x00cc2, 0x00cca),CE(0x00cd5, 0x00cc7),CE(0x00cd6, 0x00cc8),CE(0x00cd5, 0x00ccb),CE(0x00d3e, 0x00d4a),CE(0x00d57, 0x00d4c),CE(0x00d3e, 0x00d4b),CE(0x00dca, 0x00dda),CE(0x00dcf, 0x00ddc),CE(0x00ddf, 0x00dde),CE(0x00dca, 0x00ddd),CE(0x0102e, 0x01026),CE(0x01b35, 0x01b06),CE(0x01b35, 0x01b08),CE(0x01b35, 0x01b0a),CE(0x01b35, 0x01b0c),CE(0x01b35, 0x01b0e),CE(0x01b35, 0x01b12),CE(0x01b35, 0x01b3b),CE(0x01b35, 0x01b3d),CE(0x01b35, 0x01b40),CE(0x01b35, 0x01b41),CE(0x01b35, 0x01b43),CE(0x00304, 0x01e38),CE(0x00304, 0x01e39),CE(0x00304, 0x01e5c),CE(0x00304, 0x01e5d),CE(0x00307, 0x01e68),CE(0x00307, 0x01e69),CE(0x00302, 0x01eac),CE(0x00306, 0x01eb6),CE(0x00302, 0x01ead),CE(0x00306, 0x01eb7),CE(0x00302, 0x01ec6),CE(0x00302, 0x01ec7),CE(0x00302, 0x01ed8),CE(0x00302, 0x01ed9),CE(0x00300, 0x01f02),CE(0x00301, 0x01f04),CE(0x00342, 0x01f06),CE(0x00345, 0x01f80),CE(0x00300, 0x01f03),CE(0x00301, 0x01f05),CE(0x00342, 0x01f07),CE(0x00345, 0x01f81),CE(0x00345, 0x01f82),CE(0x00345, 0x01f83),CE(0x00345, 0x01f84),CE(0x00345, 0x01f85),CE(0x00345, 0x01f86),CE(0x00345, 0x01f87),CE(0x00300, 0x01f0a),CE(0x00301, 0x01f0c),CE(0x00342, 0x01f0e),CE(0x00345, 0x01f88),CE(0x00300, 0x01f0b),CE(0x00301, 0x01f0d),CE(0x00342, 0x01f0f),CE(0x00345, 0x01f89),CE(0x00345, 0x01f8a),CE(0x00345, 0x01f8b),CE(0x00345, 0x01f8c),CE(0x00345, 0x01f8d),CE(0x00345, 0x01f8e),CE(0x00345, 0x01f8f),CE(0x00300, 0x01f12),CE(0x00301, 0x01f14),CE(0x00300, 0x01f13),CE(0x00301, 0x01f15),CE(0x00300, 0x01f1a),CE(0x00301, 0x01f1c),CE(0x00300, 0x01f1b),CE(0x00301, 0x01f1d),CE(0x00300, 0x01f22),CE(0x00301, 0x01f24),CE(0x00342, 0x01f26),CE(0x00345, 0x01f90),CE(0x00300, 0x01f23),CE(0x00301, 0x01f25),CE(0x00342, 0x01f27),CE(0x00345, 0x01f91),CE(0x00345, 0x01f92),CE(0x00345, 0x01f93),CE(0x00345, 0x01f94),CE(0x00345, 0x01f95),CE(0x00345, 0x01f96),CE(0x00345, 0x01f97),CE(0x00300, 0x01f2a),CE(0x00301, 0x01f2c),CE(0x00342, 0x01f2e),CE(0x00345, 0x01f98),CE(0x00300, 0x01f2b),CE(0x00301, 0x01f2d),CE(0x00342, 0x01f2f),CE(0x00345, 0x01f99),CE(0x00345, 0x01f9a),CE(0x00345, 0x01f9b),CE(0x00345, 0x01f9c),CE(0x00345, 0x01f9d),CE(0x00345, 0x01f9e),CE(0x00345, 0x01f9f),CE(0x00300, 0x01f32),CE(0x00301, 0x01f34),CE(0x00342, 0x01f36),CE(0x00300, 0x01f33),CE(0x00301, 0x01f35),CE(0x00342, 0x01f37),CE(0x00300, 0x01f3a),CE(0x00301, 0x01f3c),CE(0x00342, 0x01f3e),CE(0x00300, 0x01f3b),CE(0x00301, 0x01f3d),CE(0x00342, 0x01f3f),CE(0x00300, 0x01f42),CE(0x00301, 0x01f44),CE(0x00300, 0x01f43),CE(0x00301, 0x01f45),CE(0x00300, 0x01f4a),CE(0x00301, 0x01f4c),CE(0x00300, 0x01f4b),CE(0x00301, 0x01f4d),CE(0x00300, 0x01f52),CE(0x00301, 0x01f54),CE(0x00342, 0x01f56),CE(0x00300, 0x01f53),CE(0x00301, 0x01f55),CE(0x00342, 0x01f57),CE(0x00300, 0x01f5b),CE(0x00301, 0x01f5d),CE(0x00342, 0x01f5f),CE(0x00300, 0x01f62),CE(0x00301, 0x01f64),CE(0x00342, 0x01f66),CE(0x00345, 0x01fa0),CE(0x00300, 0x01f63),CE(0x00301, 0x01f65),CE(0x00342, 0x01f67),CE(0x00345, 0x01fa1),CE(0x00345, 0x01fa2),CE(0x00345, 0x01fa3),CE(0x00345, 0x01fa4),CE(0x00345, 0x01fa5),CE(0x00345, 0x01fa6),CE(0x00345, 0x01fa7),CE(0x00300, 0x01f6a),CE(0x00301, 0x01f6c),CE(0x00342, 0x01f6e),CE(0x00345, 0x01fa8),CE(0x00300, 0x01f6b),CE(0x00301, 0x01f6d),CE(0x00342, 0x01f6f),CE(0x00345, 0x01fa9),CE(0x00345, 0x01faa),CE(0x00345, 0x01fab),CE(0x00345, 0x01fac),CE(0x00345, 0x01fad),CE(0x00345, 0x01fae),CE(0x00345, 0x01faf),CE(0x00345, 0x01fb2),CE(0x00345, 0x01fc2),CE(0x00345, 0x01ff2),CE(0x00345, 0x01fb7),CE(0x00300, 0x01fcd),CE(0x00301, 0x01fce),CE(0x00342, 0x01fcf),CE(0x00345, 0x01fc7),CE(0x00345, 0x01ff7),CE(0x00300, 0x01fdd),CE(0x00301, 0x01fde),CE(0x00342, 0x01fdf),CE(0x00338, 0x0219a),CE(0x00338, 0x0219b),CE(0x00338, 0x021ae),CE(0x00338, 0x021cd),CE(0x00338, 0x021cf),CE(0x00338, 0x021ce),CE(0x00338, 0x02204),CE(0x00338, 0x02209),CE(0x00338, 0x0220c),CE(0x00338, 0x02224),CE(0x00338, 0x02226),CE(0x00338, 0x02241),CE(0x00338, 0x02244),CE(0x00338, 0x02247),CE(0x00338, 0x02249),CE(0x00338, 0x0226d),CE(0x00338, 0x02262),CE(0x00338, 0x02270),CE(0x00338, 0x02271),CE(0x00338, 0x02274),CE(0x00338, 0x02275),CE(0x00338, 0x02278),CE(0x00338, 0x02279),CE(0x00338, 0x02280),CE(0x00338, 0x02281),CE(0x00338, 0x022e0),CE(0x00338, 0x022e1),CE(0x00338, 0x02284),CE(0x00338, 0x02285),CE(0x00338, 0x02288),CE(0x00338, 0x02289),CE(0x00338, 0x022e2),CE(0x00338, 0x022e3),CE(0x00338, 0x022ac),CE(0x00338, 0x022ad),CE(0x00338, 0x022ae),CE(0x00338, 0x022af),CE(0x00338, 0x022ea),CE(0x00338, 0x022eb),CE(0x00338, 0x022ec),CE(0x00338, 0x022ed),CE(0x03099, 0x03094),CE(0x03099, 0x0304c),CE(0x03099, 0x0304e),CE(0x03099, 0x03050),CE(0x03099, 0x03052),CE(0x03099, 0x03054),CE(0x03099, 0x03056),CE(0x03099, 0x03058),CE(0x03099, 0x0305a),CE(0x03099, 0x0305c),CE(0x03099, 0x0305e),CE(0x03099, 0x03060),CE(0x03099, 0x03062),CE(0x03099, 0x03065),CE(0x03099, 0x03067),CE(0x03099, 0x03069),CE(0x03099, 0x03070),CE(0x0309a, 0x03071),CE(0x03099, 0x03073),CE(0x0309a, 0x03074),CE(0x03099, 0x03076),CE(0x0309a, 0x03077),CE(0x03099, 0x03079),CE(0x0309a, 0x0307a),CE(0x03099, 0x0307c),CE(0x0309a, 0x0307d),CE(0x03099, 0x0309e),CE(0x03099, 0x030f4),CE(0x03099, 0x030ac),CE(0x03099, 0x030ae),CE(0x03099, 0x030b0),CE(0x03099, 0x030b2),CE(0x03099, 0x030b4),CE(0x03099, 0x030b6),CE(0x03099, 0x030b8),CE(0x03099, 0x030ba),CE(0x03099, 0x030bc),CE(0x03099, 0x030be),CE(0x03099, 0x030c0),CE(0x03099, 0x030c2),CE(0x03099, 0x030c5),CE(0x03099, 0x030c7),CE(0x03099, 0x030c9),CE(0x03099, 0x030d0),CE(0x0309a, 0x030d1),CE(0x03099, 0x030d3),CE(0x0309a, 0x030d4),CE(0x03099, 0x030d6),CE(0x0309a, 0x030d7),CE(0x03099, 0x030d9),CE(0x0309a, 0x030da),CE(0x03099, 0x030dc),CE(0x0309a, 0x030dd),CE(0x03099, 0x030f7),CE(0x03099, 0x030f8),CE(0x03099, 0x030f9),CE(0x03099, 0x030fa),CE(0x03099, 0x030fe),CE(0x110ba, 0x1109a),CE(0x110ba, 0x1109c),CE(0x110ba, 0x110ab),CE(0x11127, 0x1112e),CE(0x11127, 0x1112f),CE(0x1133e, 0x1134b),CE(0x11357, 0x1134c),CE(0x114b0, 0x114bc),CE(0x114ba, 0x114bb),CE(0x114bd, 0x114be),CE(0x115af, 0x115ba),CE(0x115af, 0x115bb),CE(0x11930, 0x11938),]; -return t; +static immutable dchar[1882] t = +"\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"~ +"\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"~ +"\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"~ +"\u010E\u0323\u1E0C\u0327\u1E10\u032D\u1E12\u0331\u1E0E\u0300\u00C8\u0301\u00C9\u0302\u00CA\u0303\u1EBC\u0304\u0112"~ +"\u0306\u0114\u0307\u0116\u0308\u00CB\u0309\u1EBA\u030C\u011A\u030F\u0204\u0311\u0206\u0323\u1EB8\u0327\u0228\u0328"~ +"\u0118\u032D\u1E18\u0330\u1E1A\u0307\u1E1E\u0301\u01F4\u0302\u011C\u0304\u1E20\u0306\u011E\u0307\u0120\u030C\u01E6"~ +"\u0327\u0122\u0302\u0124\u0307\u1E22\u0308\u1E26\u030C\u021E\u0323\u1E24\u0327\u1E28\u032E\u1E2A\u0300\u00CC\u0301"~ +"\u00CD\u0302\u00CE\u0303\u0128\u0304\u012A\u0306\u012C\u0307\u0130\u0308\u00CF\u0309\u1EC8\u030C\u01CF\u030F\u0208"~ +"\u0311\u020A\u0323\u1ECA\u0328\u012E\u0330\u1E2C\u0302\u0134\u0301\u1E30\u030C\u01E8\u0323\u1E32\u0327\u0136\u0331"~ +"\u1E34\u0301\u0139\u030C\u013D\u0323\u1E36\u0327\u013B\u032D\u1E3C\u0331\u1E3A\u0301\u1E3E\u0307\u1E40\u0323\u1E42"~ +"\u0300\u01F8\u0301\u0143\u0303\u00D1\u0307\u1E44\u030C\u0147\u0323\u1E46\u0327\u0145\u032D\u1E4A\u0331\u1E48\u0300"~ +"\u00D2\u0301\u00D3\u0302\u00D4\u0303\u00D5\u0304\u014C\u0306\u014E\u0307\u022E\u0308\u00D6\u0309\u1ECE\u030B\u0150"~ +"\u030C\u01D1\u030F\u020C\u0311\u020E\u031B\u01A0\u0323\u1ECC\u0328\u01EA\u0301\u1E54\u0307\u1E56\u0301\u0154\u0307"~ +"\u1E58\u030C\u0158\u030F\u0210\u0311\u0212\u0323\u1E5A\u0327\u0156\u0331\u1E5E\u0301\u015A\u0302\u015C\u0307\u1E60"~ +"\u030C\u0160\u0323\u1E62\u0326\u0218\u0327\u015E\u0307\u1E6A\u030C\u0164\u0323\u1E6C\u0326\u021A\u0327\u0162\u032D"~ +"\u1E70\u0331\u1E6E\u0300\u00D9\u0301\u00DA\u0302\u00DB\u0303\u0168\u0304\u016A\u0306\u016C\u0308\u00DC\u0309\u1EE6"~ +"\u030A\u016E\u030B\u0170\u030C\u01D3\u030F\u0214\u0311\u0216\u031B\u01AF\u0323\u1EE4\u0324\u1E72\u0328\u0172\u032D"~ +"\u1E76\u0330\u1E74\u0303\u1E7C\u0323\u1E7E\u0300\u1E80\u0301\u1E82\u0302\u0174\u0307\u1E86\u0308\u1E84\u0323\u1E88"~ +"\u0307\u1E8A\u0308\u1E8C\u0300\u1EF2\u0301\u00DD\u0302\u0176\u0303\u1EF8\u0304\u0232\u0307\u1E8E\u0308\u0178\u0309"~ +"\u1EF6\u0323\u1EF4\u0301\u0179\u0302\u1E90\u0307\u017B\u030C\u017D\u0323\u1E92\u0331\u1E94\u0300\u00E0\u0301\u00E1"~ +"\u0302\u00E2\u0303\u00E3\u0304\u0101\u0306\u0103\u0307\u0227\u0308\u00E4\u0309\u1EA3\u030A\u00E5\u030C\u01CE\u030F"~ +"\u0201\u0311\u0203\u0323\u1EA1\u0325\u1E01\u0328\u0105\u0307\u1E03\u0323\u1E05\u0331\u1E07\u0301\u0107\u0302\u0109"~ +"\u0307\u010B\u030C\u010D\u0327\u00E7\u0307\u1E0B\u030C\u010F\u0323\u1E0D\u0327\u1E11\u032D\u1E13\u0331\u1E0F\u0300"~ +"\u00E8\u0301\u00E9\u0302\u00EA\u0303\u1EBD\u0304\u0113\u0306\u0115\u0307\u0117\u0308\u00EB\u0309\u1EBB\u030C\u011B"~ +"\u030F\u0205\u0311\u0207\u0323\u1EB9\u0327\u0229\u0328\u0119\u032D\u1E19\u0330\u1E1B\u0307\u1E1F\u0301\u01F5\u0302"~ +"\u011D\u0304\u1E21\u0306\u011F\u0307\u0121\u030C\u01E7\u0327\u0123\u0302\u0125\u0307\u1E23\u0308\u1E27\u030C\u021F"~ +"\u0323\u1E25\u0327\u1E29\u032E\u1E2B\u0331\u1E96\u0300\u00EC\u0301\u00ED\u0302\u00EE\u0303\u0129\u0304\u012B\u0306"~ +"\u012D\u0308\u00EF\u0309\u1EC9\u030C\u01D0\u030F\u0209\u0311\u020B\u0323\u1ECB\u0328\u012F\u0330\u1E2D\u0302\u0135"~ +"\u030C\u01F0\u0301\u1E31\u030C\u01E9\u0323\u1E33\u0327\u0137\u0331\u1E35\u0301\u013A\u030C\u013E\u0323\u1E37\u0327"~ +"\u013C\u032D\u1E3D\u0331\u1E3B\u0301\u1E3F\u0307\u1E41\u0323\u1E43\u0300\u01F9\u0301\u0144\u0303\u00F1\u0307\u1E45"~ +"\u030C\u0148\u0323\u1E47\u0327\u0146\u032D\u1E4B\u0331\u1E49\u0300\u00F2\u0301\u00F3\u0302\u00F4\u0303\u00F5\u0304"~ +"\u014D\u0306\u014F\u0307\u022F\u0308\u00F6\u0309\u1ECF\u030B\u0151\u030C\u01D2\u030F\u020D\u0311\u020F\u031B\u01A1"~ +"\u0323\u1ECD\u0328\u01EB\u0301\u1E55\u0307\u1E57\u0301\u0155\u0307\u1E59\u030C\u0159\u030F\u0211\u0311\u0213\u0323"~ +"\u1E5B\u0327\u0157\u0331\u1E5F\u0301\u015B\u0302\u015D\u0307\u1E61\u030C\u0161\u0323\u1E63\u0326\u0219\u0327\u015F"~ +"\u0307\u1E6B\u0308\u1E97\u030C\u0165\u0323\u1E6D\u0326\u021B\u0327\u0163\u032D\u1E71\u0331\u1E6F\u0300\u00F9\u0301"~ +"\u00FA\u0302\u00FB\u0303\u0169\u0304\u016B\u0306\u016D\u0308\u00FC\u0309\u1EE7\u030A\u016F\u030B\u0171\u030C\u01D4"~ +"\u030F\u0215\u0311\u0217\u031B\u01B0\u0323\u1EE5\u0324\u1E73\u0328\u0173\u032D\u1E77\u0330\u1E75\u0303\u1E7D\u0323"~ +"\u1E7F\u0300\u1E81\u0301\u1E83\u0302\u0175\u0307\u1E87\u0308\u1E85\u030A\u1E98\u0323\u1E89\u0307\u1E8B\u0308\u1E8D"~ +"\u0300\u1EF3\u0301\u00FD\u0302\u0177\u0303\u1EF9\u0304\u0233\u0307\u1E8F\u0308\u00FF\u0309\u1EF7\u030A\u1E99\u0323"~ +"\u1EF5\u0301\u017A\u0302\u1E91\u0307\u017C\u030C\u017E\u0323\u1E93\u0331\u1E95\u0300\u1FED\u0301\u0385\u0342\u1FC1"~ +"\u0300\u1EA6\u0301\u1EA4\u0303\u1EAA\u0309\u1EA8\u0304\u01DE\u0301\u01FA\u0301\u01FC\u0304\u01E2\u0301\u1E08\u0300"~ +"\u1EC0\u0301\u1EBE\u0303\u1EC4\u0309\u1EC2\u0301\u1E2E\u0300\u1ED2\u0301\u1ED0\u0303\u1ED6\u0309\u1ED4\u0301\u1E4C"~ +"\u0304\u022C\u0308\u1E4E\u0304\u022A\u0301\u01FE\u0300\u01DB\u0301\u01D7\u0304\u01D5\u030C\u01D9\u0300\u1EA7\u0301"~ +"\u1EA5\u0303\u1EAB\u0309\u1EA9\u0304\u01DF\u0301\u01FB\u0301\u01FD\u0304\u01E3\u0301\u1E09\u0300\u1EC1\u0301\u1EBF"~ +"\u0303\u1EC5\u0309\u1EC3\u0301\u1E2F\u0300\u1ED3\u0301\u1ED1\u0303\u1ED7\u0309\u1ED5\u0301\u1E4D\u0304\u022D\u0308"~ +"\u1E4F\u0304\u022B\u0301\u01FF\u0300\u01DC\u0301\u01D8\u0304\u01D6\u030C\u01DA\u0300\u1EB0\u0301\u1EAE\u0303\u1EB4"~ +"\u0309\u1EB2\u0300\u1EB1\u0301\u1EAF\u0303\u1EB5\u0309\u1EB3\u0300\u1E14\u0301\u1E16\u0300\u1E15\u0301\u1E17\u0300"~ +"\u1E50\u0301\u1E52\u0300\u1E51\u0301\u1E53\u0307\u1E64\u0307\u1E65\u0307\u1E66\u0307\u1E67\u0301\u1E78\u0301\u1E79"~ +"\u0308\u1E7A\u0308\u1E7B\u0307\u1E9B\u0300\u1EDC\u0301\u1EDA\u0303\u1EE0\u0309\u1EDE\u0323\u1EE2\u0300\u1EDD\u0301"~ +"\u1EDB\u0303\u1EE1\u0309\u1EDF\u0323\u1EE3\u0300\u1EEA\u0301\u1EE8\u0303\u1EEE\u0309\u1EEC\u0323\u1EF0\u0300\u1EEB"~ +"\u0301\u1EE9\u0303\u1EEF\u0309\u1EED\u0323\u1EF1\u030C\u01EE\u0304\u01EC\u0304\u01ED\u0304\u01E0\u0304\u01E1\u0306"~ +"\u1E1C\u0306\u1E1D\u0304\u0230\u0304\u0231\u030C\u01EF\u0300\u1FBA\u0301\u0386\u0304\u1FB9\u0306\u1FB8\u0313\u1F08"~ +"\u0314\u1F09\u0345\u1FBC\u0300\u1FC8\u0301\u0388\u0313\u1F18\u0314\u1F19\u0300\u1FCA\u0301\u0389\u0313\u1F28\u0314"~ +"\u1F29\u0345\u1FCC\u0300\u1FDA\u0301\u038A\u0304\u1FD9\u0306\u1FD8\u0308\u03AA\u0313\u1F38\u0314\u1F39\u0300\u1FF8"~ +"\u0301\u038C\u0313\u1F48\u0314\u1F49\u0314\u1FEC\u0300\u1FEA\u0301\u038E\u0304\u1FE9\u0306\u1FE8\u0308\u03AB\u0314"~ +"\u1F59\u0300\u1FFA\u0301\u038F\u0313\u1F68\u0314\u1F69\u0345\u1FFC\u0345\u1FB4\u0345\u1FC4\u0300\u1F70\u0301\u03AC"~ +"\u0304\u1FB1\u0306\u1FB0\u0313\u1F00\u0314\u1F01\u0342\u1FB6\u0345\u1FB3\u0300\u1F72\u0301\u03AD\u0313\u1F10\u0314"~ +"\u1F11\u0300\u1F74\u0301\u03AE\u0313\u1F20\u0314\u1F21\u0342\u1FC6\u0345\u1FC3\u0300\u1F76\u0301\u03AF\u0304\u1FD1"~ +"\u0306\u1FD0\u0308\u03CA\u0313\u1F30\u0314\u1F31\u0342\u1FD6\u0300\u1F78\u0301\u03CC\u0313\u1F40\u0314\u1F41\u0313"~ +"\u1FE4\u0314\u1FE5\u0300\u1F7A\u0301\u03CD\u0304\u1FE1\u0306\u1FE0\u0308\u03CB\u0313\u1F50\u0314\u1F51\u0342\u1FE6"~ +"\u0300\u1F7C\u0301\u03CE\u0313\u1F60\u0314\u1F61\u0342\u1FF6\u0345\u1FF3\u0300\u1FD2\u0301\u0390\u0342\u1FD7\u0300"~ +"\u1FE2\u0301\u03B0\u0342\u1FE7\u0345\u1FF4\u0301\u03D3\u0308\u03D4\u0308\u0407\u0306\u04D0\u0308\u04D2\u0301\u0403"~ +"\u0300\u0400\u0306\u04D6\u0308\u0401\u0306\u04C1\u0308\u04DC\u0308\u04DE\u0300\u040D\u0304\u04E2\u0306\u0419\u0308"~ +"\u04E4\u0301\u040C\u0308\u04E6\u0304\u04EE\u0306\u040E\u0308\u04F0\u030B\u04F2\u0308\u04F4\u0308\u04F8\u0308\u04EC"~ +"\u0306\u04D1\u0308\u04D3\u0301\u0453\u0300\u0450\u0306\u04D7\u0308\u0451\u0306\u04C2\u0308\u04DD\u0308\u04DF\u0300"~ +"\u045D\u0304\u04E3\u0306\u0439\u0308\u04E5\u0301\u045C\u0308\u04E7\u0304\u04EF\u0306\u045E\u0308\u04F1\u030B\u04F3"~ +"\u0308\u04F5\u0308\u04F9\u0308\u04ED\u0308\u0457\u030F\u0476\u030F\u0477\u0308\u04DA\u0308\u04DB\u0308\u04EA\u0308"~ +"\u04EB\u0653\u0622\u0654\u0623\u0655\u0625\u0654\u0624\u0654\u0626\u0654\u06C2\u0654\u06D3\u0654\u06C0\u093C\u0929"~ +"\u093C\u0931\u093C\u0934\u09BE\u09CB\u09D7\u09CC\u0B3E\u0B4B\u0B56\u0B48\u0B57\u0B4C\u0BD7\u0B94\u0BBE\u0BCA\u0BD7"~ +"\u0BCC\u0BBE\u0BCB\u0C56\u0C48\u0CD5\u0CC0\u0CC2\u0CCA\u0CD5\u0CC7\u0CD6\u0CC8\u0CD5\u0CCB\u0D3E\u0D4A\u0D57\u0D4C"~ +"\u0D3E\u0D4B\u0DCA\u0DDA\u0DCF\u0DDC\u0DDF\u0DDE\u0DCA\u0DDD\u102E\u1026\u1B35\u1B06\u1B35\u1B08\u1B35\u1B0A\u1B35"~ +"\u1B0C\u1B35\u1B0E\u1B35\u1B12\u1B35\u1B3B\u1B35\u1B3D\u1B35\u1B40\u1B35\u1B41\u1B35\u1B43\u0304\u1E38\u0304\u1E39"~ +"\u0304\u1E5C\u0304\u1E5D\u0307\u1E68\u0307\u1E69\u0302\u1EAC\u0306\u1EB6\u0302\u1EAD\u0306\u1EB7\u0302\u1EC6\u0302"~ +"\u1EC7\u0302\u1ED8\u0302\u1ED9\u0300\u1F02\u0301\u1F04\u0342\u1F06\u0345\u1F80\u0300\u1F03\u0301\u1F05\u0342\u1F07"~ +"\u0345\u1F81\u0345\u1F82\u0345\u1F83\u0345\u1F84\u0345\u1F85\u0345\u1F86\u0345\u1F87\u0300\u1F0A\u0301\u1F0C\u0342"~ +"\u1F0E\u0345\u1F88\u0300\u1F0B\u0301\u1F0D\u0342\u1F0F\u0345\u1F89\u0345\u1F8A\u0345\u1F8B\u0345\u1F8C\u0345\u1F8D"~ +"\u0345\u1F8E\u0345\u1F8F\u0300\u1F12\u0301\u1F14\u0300\u1F13\u0301\u1F15\u0300\u1F1A\u0301\u1F1C\u0300\u1F1B\u0301"~ +"\u1F1D\u0300\u1F22\u0301\u1F24\u0342\u1F26\u0345\u1F90\u0300\u1F23\u0301\u1F25\u0342\u1F27\u0345\u1F91\u0345\u1F92"~ +"\u0345\u1F93\u0345\u1F94\u0345\u1F95\u0345\u1F96\u0345\u1F97\u0300\u1F2A\u0301\u1F2C\u0342\u1F2E\u0345\u1F98\u0300"~ +"\u1F2B\u0301\u1F2D\u0342\u1F2F\u0345\u1F99\u0345\u1F9A\u0345\u1F9B\u0345\u1F9C\u0345\u1F9D\u0345\u1F9E\u0345\u1F9F"~ +"\u0300\u1F32\u0301\u1F34\u0342\u1F36\u0300\u1F33\u0301\u1F35\u0342\u1F37\u0300\u1F3A\u0301\u1F3C\u0342\u1F3E\u0300"~ +"\u1F3B\u0301\u1F3D\u0342\u1F3F\u0300\u1F42\u0301\u1F44\u0300\u1F43\u0301\u1F45\u0300\u1F4A\u0301\u1F4C\u0300\u1F4B"~ +"\u0301\u1F4D\u0300\u1F52\u0301\u1F54\u0342\u1F56\u0300\u1F53\u0301\u1F55\u0342\u1F57\u0300\u1F5B\u0301\u1F5D\u0342"~ +"\u1F5F\u0300\u1F62\u0301\u1F64\u0342\u1F66\u0345\u1FA0\u0300\u1F63\u0301\u1F65\u0342\u1F67\u0345\u1FA1\u0345\u1FA2"~ +"\u0345\u1FA3\u0345\u1FA4\u0345\u1FA5\u0345\u1FA6\u0345\u1FA7\u0300\u1F6A\u0301\u1F6C\u0342\u1F6E\u0345\u1FA8\u0300"~ +"\u1F6B\u0301\u1F6D\u0342\u1F6F\u0345\u1FA9\u0345\u1FAA\u0345\u1FAB\u0345\u1FAC\u0345\u1FAD\u0345\u1FAE\u0345\u1FAF"~ +"\u0345\u1FB2\u0345\u1FC2\u0345\u1FF2\u0345\u1FB7\u0300\u1FCD\u0301\u1FCE\u0342\u1FCF\u0345\u1FC7\u0345\u1FF7\u0300"~ +"\u1FDD\u0301\u1FDE\u0342\u1FDF\u0338\u219A\u0338\u219B\u0338\u21AE\u0338\u21CD\u0338\u21CF\u0338\u21CE\u0338\u2204"~ +"\u0338\u2209\u0338\u220C\u0338\u2224\u0338\u2226\u0338\u2241\u0338\u2244\u0338\u2247\u0338\u2249\u0338\u226D\u0338"~ +"\u2262\u0338\u2270\u0338\u2271\u0338\u2274\u0338\u2275\u0338\u2278\u0338\u2279\u0338\u2280\u0338\u2281\u0338\u22E0"~ +"\u0338\u22E1\u0338\u2284\u0338\u2285\u0338\u2288\u0338\u2289\u0338\u22E2\u0338\u22E3\u0338\u22AC\u0338\u22AD\u0338"~ +"\u22AE\u0338\u22AF\u0338\u22EA\u0338\u22EB\u0338\u22EC\u0338\u22ED\u3099\u3094\u3099\u304C\u3099\u304E\u3099\u3050"~ +"\u3099\u3052\u3099\u3054\u3099\u3056\u3099\u3058\u3099\u305A\u3099\u305C\u3099\u305E\u3099\u3060\u3099\u3062\u3099"~ +"\u3065\u3099\u3067\u3099\u3069\u3099\u3070\u309A\u3071\u3099\u3073\u309A\u3074\u3099\u3076\u309A\u3077\u3099\u3079"~ +"\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"~ +"\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"~ +"\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"~ +"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"~ +"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"~ +"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"~ +""d; +return t[]; } } diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index 0daae86557b..df41c2fef41 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -59,11 +59,6 @@ nothrow @nogc pure @safe: ubyte entry_len() const { return (x >> 0) & 0xF; } } -struct CompEntry -{ - dchar rhs, composed; -} - struct UnicodeProperty { string name; diff --git a/std/uni/package.d b/std/uni/package.d index c7daa93a9f8..dba109ff7d1 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -8458,21 +8458,21 @@ public dchar compose(dchar first, dchar second) pure nothrow @safe { import std.algorithm.iteration : map; import std.internal.unicode_comp : compositionTable, composeCntShift, composeIdxMask; - import std.range : assumeSorted; + import std.range : assumeSorted, stride; immutable packed = compositionJumpTrie[first]; if (packed == ushort.max) return dchar.init; // unpack offset and length immutable idx = packed & composeIdxMask, cnt = packed >> composeCntShift; // TODO: optimize this micro binary search (no more then 4-5 steps) - auto r = compositionTable[idx .. idx+cnt].map!"a.rhs"().assumeSorted(); + auto r = compositionTable.stride(2)[idx .. idx+cnt].assumeSorted(); immutable target = r.lowerBound(second).length; if (target == cnt) return dchar.init; - immutable entry = compositionTable[idx+target]; - if (entry.rhs != second) + immutable entry = compositionTable[(idx+target)*2]; + if (entry != second) return dchar.init; - return entry.composed; + return compositionTable[(idx+target)*2 + 1]; } /// diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 6f80ef3a109..40d8d1c3bbb 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -162,11 +162,6 @@ nothrow @nogc pure @safe: ubyte entry_len() const { return (x >> 0) & 0xF; } } -struct CompEntry -{ - dchar rhs, composed; -} - struct UnicodeProperty { string name; @@ -1200,14 +1195,33 @@ void writeCompositionTable(File sink) write("enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)("); triT.store(sink.lockingTextWriter()); writeln(");"); - writeln("@property immutable(CompEntry[]) compositionTable() nothrow pure @nogc @safe"); + writeln("dstring compositionTable() nothrow pure @nogc @safe"); writeln("{"); - writeln("alias CE = CompEntry;"); - write("static immutable CE[] t = ["); - foreach (pair; dupletes) - writef("CE(0x%05x, 0x%05x),", pair[0], pair[1]); - writeln("];"); - writeln("return t;"); + writef("static immutable dchar[%d] t =\n\"", dupletes.length * 2); + size_t lineCount = 1; + foreach (i, pair; dupletes) + { + static foreach(j; 0 .. 2) + { + if (pair[j] <= 0xFFFF) + { + writef("\\u%04X", pair[j]); + lineCount += 6; + } + else + { + writef("\\U%08X", pair[j]); + lineCount += 10; + } + if (lineCount >= 110) + { + write("\"~\n\""); + lineCount = 1; + } + } + } + writeln("\"d;"); + writeln("return t[];"); writeln("}"); } } From 135e9ad193a75864b1df33f1f65324433db9bbb1 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 6 Jan 2024 15:05:35 +0100 Subject: [PATCH 158/327] std.uni: optimize simpleCaseTable Cuts size of simpleCaseTable entries in half (8 -> 4 bytes), reducing table size from 24 Kb to 12 Kb. Still only 22 out of 32 bits per entry are actually used, so could be optimized further. Using plain integers saves 10 ms semantic2 compile time. --- std/internal/unicode_tables.d | 1151 +++++++++++-------------------- std/uni/package.d | 14 +- tools/unicode_table_generator.d | 61 +- 3 files changed, 436 insertions(+), 790 deletions(-) diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index df41c2fef41..82ac8468ff9 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -15,25 +15,26 @@ module std.internal.unicode_tables; @safe pure nothrow @nogc package(std): -struct SimpleCaseEntry +/// Simple Case Entry, wrapper around uint to extract bit fields from simpleCaseTable() +struct SCE { - uint ch; - ubyte n, bucket;// n - number in bucket + uint x; -pure nothrow @nogc: + nothrow @nogc pure @safe: - @property ubyte size() const + this(uint x) { - return bucket & 0x3F; - } - @property auto isLower() const - { - return bucket & 0x40; + this.x = x; } - @property auto isUpper() const + + this(uint ch, ubyte n, ubyte size) { - return bucket & 0x80; + this.x = ch | n << 20 | size << 24; } + + int ch() const { return this.x & 0x1FFFF; } + int n() const { return (this.x >> 20) & 0xF; } + int size() const { return this.x >> 24; } } /// Bit backed FullCaseEntry @@ -72,757 +73,383 @@ struct TrieEntry(T...) size_t[] data; } -@property immutable(SimpleCaseEntry[]) simpleCaseTable() +SCE simpleCaseTable(size_t i) { -alias SCE = SimpleCaseEntry; -static immutable SCE[] t = [ -SCE(0x1e90b, 0, 0x82), -SCE(0x1e92d, 1, 0x42),SCE(0x1e911, 0, 0x82),SCE(0x1e933, 1, 0x42),SCE(0x0496, 0, 0x82), -SCE(0x0497, 1, 0x42),SCE(0xa722, 0, 0x82),SCE(0xa723, 1, 0x42),SCE(0x1f79, 0, 0x42), -SCE(0x1ff9, 1, 0x82),SCE(0x1f44, 0, 0x42),SCE(0x1f4c, 1, 0x82),SCE(0x015a, 0, 0x82), -SCE(0x015b, 1, 0x42),SCE(0x10fd, 0, 0x42),SCE(0x1cbd, 1, 0x82),SCE(0x16e4c, 0, 0x82), -SCE(0x16e6c, 1, 0x42),SCE(0x1e38, 0, 0x82),SCE(0x1e39, 1, 0x42),SCE(0x1e921, 0, 0x82), -SCE(0x1e943, 1, 0x42),SCE(0x1f23, 0, 0x42),SCE(0x1f2b, 1, 0x82),SCE(0x01a0, 0, 0x82), -SCE(0x01a1, 1, 0x42),SCE(0x03a3, 0, 0x83),SCE(0x03c2, 1, 0x43),SCE(0x03c3, 2, 0x43), -SCE(0x04dc, 0, 0x82),SCE(0x04dd, 1, 0x42),SCE(0x2ca6, 0, 0x82),SCE(0x2ca7, 1, 0x42), -SCE(0x017b, 0, 0x82),SCE(0x017c, 1, 0x42),SCE(0x1e906, 0, 0x82),SCE(0x1e928, 1, 0x42), -SCE(0x10dc, 0, 0x42),SCE(0x1c9c, 1, 0x82),SCE(0x104cd, 0, 0x82),SCE(0x104f5, 1, 0x42), -SCE(0x1f65, 0, 0x42),SCE(0x1f6d, 1, 0x82),SCE(0x051e, 0, 0x82),SCE(0x051f, 1, 0x42), -SCE(0x10d8, 0, 0x42),SCE(0x1c98, 1, 0x82),SCE(0x2c1a, 0, 0x82),SCE(0x2c4a, 1, 0x42), -SCE(0x027d, 0, 0x42),SCE(0x2c64, 1, 0x82),SCE(0xa69a, 0, 0x82),SCE(0xa69b, 1, 0x42), -SCE(0x1f02, 0, 0x42),SCE(0x1f0a, 1, 0x82),SCE(0x0522, 0, 0x82),SCE(0x0523, 1, 0x42), -SCE(0x2c60, 0, 0x82),SCE(0x2c61, 1, 0x42),SCE(0x2c1e, 0, 0x82),SCE(0x2c4e, 1, 0x42), -SCE(0xa650, 0, 0x82),SCE(0xa651, 1, 0x42),SCE(0xa65c, 0, 0x82),SCE(0xa65d, 1, 0x42), -SCE(0x13c9, 0, 0x82),SCE(0xab99, 1, 0x42),SCE(0x10414, 0, 0x82),SCE(0x1043c, 1, 0x42), -SCE(0x13cd, 0, 0x82),SCE(0xab9d, 1, 0x42),SCE(0x00ce, 0, 0x82),SCE(0x00ee, 1, 0x42), -SCE(0x1e7e, 0, 0x82),SCE(0x1e7f, 1, 0x42),SCE(0x13f0, 0, 0x82),SCE(0x13f8, 1, 0x42), -SCE(0x1ec4, 0, 0x82),SCE(0x1ec5, 1, 0x42),SCE(0xa78b, 0, 0x82),SCE(0xa78c, 1, 0x42), -SCE(0x0114, 0, 0x82),SCE(0x0115, 1, 0x42),SCE(0x042f, 0, 0x82),SCE(0x044f, 1, 0x42), -SCE(0x1e902, 0, 0x82),SCE(0x1e924, 1, 0x42),SCE(0x04d8, 0, 0x82),SCE(0x04d9, 1, 0x42), -SCE(0x2caa, 0, 0x82),SCE(0x2cab, 1, 0x42),SCE(0x0110, 0, 0x82),SCE(0x0111, 1, 0x42), -SCE(0x0492, 0, 0x82),SCE(0x0493, 1, 0x42),SCE(0x1e34, 0, 0x82),SCE(0x1e35, 1, 0x42), -SCE(0x13f4, 0, 0x82),SCE(0x13fc, 1, 0x42),SCE(0x0224, 0, 0x82),SCE(0x0225, 1, 0x42), -SCE(0x2ca2, 0, 0x82),SCE(0x2ca3, 1, 0x42),SCE(0xa72e, 0, 0x82),SCE(0xa72f, 1, 0x42), -SCE(0x16e48, 0, 0x82),SCE(0x16e68, 1, 0x42),SCE(0x004a, 0, 0x82),SCE(0x006a, 1, 0x42), -SCE(0x13a6, 0, 0x82),SCE(0xab76, 1, 0x42),SCE(0x015e, 0, 0x82),SCE(0x015f, 1, 0x42), -SCE(0x01c4, 0, 0x83),SCE(0x01c5, 1, 0x3),SCE(0x01c6, 2, 0x43),SCE(0x1f40, 0, 0x42), -SCE(0x1f48, 1, 0x82),SCE(0xa658, 0, 0x82),SCE(0xa659, 1, 0x42),SCE(0x022c, 0, 0x82), -SCE(0x022d, 1, 0x42),SCE(0x10c9f, 0, 0x82),SCE(0x10cdf, 1, 0x42),SCE(0x1fa7, 0, 0x42), -SCE(0x1faf, 1, 0x2),SCE(0x13ae, 0, 0x82),SCE(0xab7e, 1, 0x42),SCE(0x0042, 0, 0x82), -SCE(0x0062, 1, 0x42),SCE(0x13d5, 0, 0x82),SCE(0xaba5, 1, 0x42),SCE(0x16e40, 0, 0x82), -SCE(0x16e60, 1, 0x42),SCE(0x00d2, 0, 0x82),SCE(0x00f2, 1, 0x42),SCE(0x1e82, 0, 0x82), -SCE(0x1e83, 1, 0x42),SCE(0x10c97, 0, 0x82),SCE(0x10cd7, 1, 0x42),SCE(0x10e0, 0, 0x42), -SCE(0x1ca0, 1, 0x82),SCE(0x013d, 0, 0x82),SCE(0x013e, 1, 0x42),SCE(0x0406, 0, 0x82), -SCE(0x0456, 1, 0x42),SCE(0x029d, 0, 0x42),SCE(0xa7b2, 1, 0x82),SCE(0x0139, 0, 0x82), -SCE(0x013a, 1, 0x42),SCE(0x0198, 0, 0x82),SCE(0x0199, 1, 0x42),SCE(0x1ebc, 0, 0x82), -SCE(0x1ebd, 1, 0x42),SCE(0x03ab, 0, 0x82),SCE(0x03cb, 1, 0x42),SCE(0x040e, 0, 0x82), -SCE(0x045e, 1, 0x42),SCE(0xa7b6, 0, 0x82),SCE(0xa7b7, 1, 0x42),SCE(0x040a, 0, 0x82), -SCE(0x045a, 1, 0x42),SCE(0x1ec0, 0, 0x82),SCE(0x1ec1, 1, 0x42),SCE(0x10572, 0, 0x82), -SCE(0x10599, 1, 0x42),SCE(0x24b9, 0, 0x82),SCE(0x24d3, 1, 0x42),SCE(0x2c16, 0, 0x82), -SCE(0x2c46, 1, 0x42),SCE(0x019c, 0, 0x82),SCE(0x026f, 1, 0x42),SCE(0x03a7, 0, 0x82), -SCE(0x03c7, 1, 0x42),SCE(0xa692, 0, 0x82),SCE(0xa693, 1, 0x42),SCE(0x00c5, 0, 0x83), -SCE(0x00e5, 1, 0x43),SCE(0x212b, 2, 0x83),SCE(0x0526, 0, 0x82),SCE(0x0527, 1, 0x42), -SCE(0x0266, 0, 0x42),SCE(0xa7aa, 1, 0x82),SCE(0x1057a, 0, 0x82),SCE(0x105a1, 1, 0x42), -SCE(0x1057e, 0, 0x82),SCE(0x105a5, 1, 0x42),SCE(0x1fd0, 0, 0x42),SCE(0x1fd8, 1, 0x82), -SCE(0x0046, 0, 0x82),SCE(0x0066, 1, 0x42),SCE(0x1e90a, 0, 0x82),SCE(0x1e92c, 1, 0x42), -SCE(0x0228, 0, 0x82),SCE(0x0229, 1, 0x42),SCE(0x13a2, 0, 0x82),SCE(0xab72, 1, 0x42), -SCE(0xa726, 0, 0x82),SCE(0xa727, 1, 0x42),SCE(0x10c93, 0, 0x82),SCE(0x10cd3, 1, 0x42), -SCE(0x049a, 0, 0x82),SCE(0x049b, 1, 0x42),SCE(0x00d6, 0, 0x82),SCE(0x00f6, 1, 0x42), -SCE(0x010c, 0, 0x82),SCE(0x010d, 1, 0x42),SCE(0x118a8, 0, 0x82),SCE(0x118c8, 1, 0x42), -SCE(0x0162, 0, 0x82),SCE(0x0163, 1, 0x42),SCE(0x019e, 0, 0x42),SCE(0x0220, 1, 0x82), -SCE(0x2c9e, 0, 0x82),SCE(0x2c9f, 1, 0x42),SCE(0x0392, 0, 0x83),SCE(0x03b2, 1, 0x43), -SCE(0x03d0, 2, 0x43),SCE(0x1e30, 0, 0x82),SCE(0x1e31, 1, 0x42),SCE(0x1fa3, 0, 0x42), -SCE(0x1fab, 1, 0x2),SCE(0x216d, 0, 0x82),SCE(0x217d, 1, 0x42),SCE(0x004e, 0, 0x82), -SCE(0x006e, 1, 0x42),SCE(0x00b5, 0, 0x43),SCE(0x039c, 1, 0x83),SCE(0x03bc, 2, 0x43), -SCE(0x048e, 0, 0x82),SCE(0x048f, 1, 0x42),SCE(0xa72a, 0, 0x82),SCE(0xa72b, 1, 0x42), -SCE(0x10410, 0, 0x82),SCE(0x10438, 1, 0x42),SCE(0x038a, 0, 0x82),SCE(0x03af, 1, 0x42), -SCE(0x1efe, 0, 0x82),SCE(0x1eff, 1, 0x42),SCE(0x118ac, 0, 0x82),SCE(0x118cc, 1, 0x42), -SCE(0x01ea, 0, 0x82),SCE(0x01eb, 1, 0x42),SCE(0x1f06, 0, 0x42),SCE(0x1f0e, 1, 0x82), -SCE(0x1fc3, 0, 0x42),SCE(0x1fcc, 1, 0x2),SCE(0x10b4, 0, 0x82),SCE(0x2d14, 1, 0x42), -SCE(0x026a, 0, 0x42),SCE(0xa7ae, 1, 0x82),SCE(0x0412, 0, 0x83),SCE(0x0432, 1, 0x43), -SCE(0x1c80, 2, 0x43),SCE(0xa760, 0, 0x82),SCE(0xa761, 1, 0x42),SCE(0x10c9b, 0, 0x82), -SCE(0x10cdb, 1, 0x42),SCE(0x24c8, 0, 0x82),SCE(0x24e2, 1, 0x42),SCE(0x01a4, 0, 0x82), -SCE(0x01a5, 1, 0x42),SCE(0x039f, 0, 0x82),SCE(0x03bf, 1, 0x42),SCE(0x10c4, 0, 0x82), -SCE(0x2d24, 1, 0x42),SCE(0x04a2, 0, 0x82),SCE(0x04a3, 1, 0x42),SCE(0x2c03, 0, 0x82), -SCE(0x2c33, 1, 0x42),SCE(0x2ce0, 0, 0x82),SCE(0x2ce1, 1, 0x42),SCE(0x10576, 0, 0x82), -SCE(0x1059d, 1, 0x42),SCE(0x04e0, 0, 0x82),SCE(0x04e1, 1, 0x42),SCE(0x2c2a, 0, 0x82), -SCE(0x2c5a, 1, 0x42),SCE(0x1ed0, 0, 0x82),SCE(0x1ed1, 1, 0x42),SCE(0x00c2, 0, 0x82), -SCE(0x00e2, 1, 0x42),SCE(0x04e8, 0, 0x82),SCE(0x04e9, 1, 0x42),SCE(0xa7a6, 0, 0x82), -SCE(0xa7a7, 1, 0x42),SCE(0x10f9, 0, 0x42),SCE(0x1cb9, 1, 0x82),SCE(0x0145, 0, 0x82), -SCE(0x0146, 1, 0x42),SCE(0x037c, 0, 0x42),SCE(0x03fe, 1, 0x82),SCE(0x1ec8, 0, 0x82), -SCE(0x1ec9, 1, 0x42),SCE(0x041a, 0, 0x82),SCE(0x043a, 1, 0x42),SCE(0x00ca, 0, 0x82), -SCE(0x00ea, 1, 0x42),SCE(0x1f86, 0, 0x42),SCE(0x1f8e, 1, 0x2),SCE(0x0421, 0, 0x83), -SCE(0x0441, 1, 0x43),SCE(0x1c83, 2, 0x43),SCE(0x10404, 0, 0x82),SCE(0x1042c, 1, 0x42), -SCE(0x10583, 0, 0x82),SCE(0x105aa, 1, 0x42),SCE(0x053f, 0, 0x82),SCE(0x056f, 1, 0x42), -SCE(0x0547, 0, 0x82),SCE(0x0577, 1, 0x42),SCE(0x13b6, 0, 0x82),SCE(0xab86, 1, 0x42), -SCE(0x13ec, 0, 0x82),SCE(0xabbc, 1, 0x42),SCE(0xff2c, 0, 0x82),SCE(0xff4c, 1, 0x42), -SCE(0xa7ba, 0, 0x82),SCE(0xa7bb, 1, 0x42),SCE(0xa648, 0, 0x82),SCE(0xa649, 1, 0x42), -SCE(0x13c5, 0, 0x82),SCE(0xab95, 1, 0x42),SCE(0xff24, 0, 0x82),SCE(0xff44, 1, 0x42), -SCE(0x1040f, 0, 0x82),SCE(0x10437, 1, 0x42),SCE(0x1041c, 0, 0x82),SCE(0x10444, 1, 0x42), -SCE(0x10c83, 0, 0x82),SCE(0x10cc3, 1, 0x42),SCE(0x0241, 0, 0x82),SCE(0x0242, 1, 0x42), -SCE(0x1e76, 0, 0x82),SCE(0x1e77, 1, 0x42),SCE(0x10bc, 0, 0x82),SCE(0x2d1c, 1, 0x42), -SCE(0x2c22, 0, 0x82),SCE(0x2c52, 1, 0x42),SCE(0x10d0, 0, 0x42),SCE(0x1c90, 1, 0x82), -SCE(0xa768, 0, 0x82),SCE(0xa769, 1, 0x42),SCE(0xa732, 0, 0x82),SCE(0xa733, 1, 0x42), -SCE(0x011c, 0, 0x82),SCE(0x011d, 1, 0x42),SCE(0x0427, 0, 0x82),SCE(0x0447, 1, 0x42), -SCE(0x1e40, 0, 0x82),SCE(0x1e41, 1, 0x42),SCE(0x118b1, 0, 0x82),SCE(0x118d1, 1, 0x42), -SCE(0x0152, 0, 0x82),SCE(0x0153, 1, 0x42),SCE(0x03a1, 0, 0x83),SCE(0x03c1, 1, 0x43), -SCE(0x03f1, 2, 0x43),SCE(0x0397, 0, 0x82),SCE(0x03b7, 1, 0x42),SCE(0x01ac, 0, 0x82), -SCE(0x01ad, 1, 0x42),SCE(0x01e2, 0, 0x82),SCE(0x01e3, 1, 0x42),SCE(0x0218, 0, 0x82), -SCE(0x0219, 1, 0x42),SCE(0x1e91a, 0, 0x82),SCE(0x1e93c, 1, 0x42),SCE(0x0516, 0, 0x82), -SCE(0x0517, 1, 0x42),SCE(0x1f27, 0, 0x42),SCE(0x1f2f, 1, 0x82),SCE(0xa7c9, 0, 0x82), -SCE(0xa7ca, 1, 0x42),SCE(0x1fe0, 0, 0x42),SCE(0x1fe8, 1, 0x82),SCE(0x2165, 0, 0x82), -SCE(0x2175, 1, 0x42),SCE(0xa66c, 0, 0x82),SCE(0xa66d, 1, 0x42),SCE(0x0393, 0, 0x82), -SCE(0x03b3, 1, 0x42),SCE(0x0532, 0, 0x82),SCE(0x0562, 1, 0x42),SCE(0x0056, 0, 0x82), -SCE(0x0076, 1, 0x42),SCE(0x1f33, 0, 0x42),SCE(0x1f3b, 1, 0x82),SCE(0x0554, 0, 0x82), -SCE(0x0584, 1, 0x42),SCE(0x1c88, 0, 0x43),SCE(0xa64a, 1, 0x83),SCE(0xa64b, 2, 0x43), -SCE(0xa68e, 0, 0x82),SCE(0xa68f, 1, 0x42),SCE(0x03d8, 0, 0x82),SCE(0x03d9, 1, 0x42), -SCE(0x24c5, 0, 0x82),SCE(0x24df, 1, 0x42),SCE(0x2cb2, 0, 0x82),SCE(0x2cb3, 1, 0x42), -SCE(0x10c82, 0, 0x82),SCE(0x10cc2, 1, 0x42),SCE(0x0057, 0, 0x82),SCE(0x0077, 1, 0x42), -SCE(0x16e53, 0, 0x82),SCE(0x16e73, 1, 0x42),SCE(0xff37, 0, 0x82),SCE(0xff57, 1, 0x42), -SCE(0x1ef6, 0, 0x82),SCE(0x1ef7, 1, 0x42),SCE(0x1e912, 0, 0x82),SCE(0x1e934, 1, 0x42), -SCE(0x1f12, 0, 0x42),SCE(0x1f1a, 1, 0x82),SCE(0x04a6, 0, 0x82),SCE(0x04a7, 1, 0x42), -SCE(0x016a, 0, 0x82),SCE(0x016b, 1, 0x42),SCE(0x1f34, 0, 0x42),SCE(0x1f3c, 1, 0x82), -SCE(0x2cdc, 0, 0x82),SCE(0x2cdd, 1, 0x42),SCE(0x01b1, 0, 0x82),SCE(0x028a, 1, 0x42), -SCE(0x118a4, 0, 0x82),SCE(0x118c4, 1, 0x42),SCE(0x1e28, 0, 0x82),SCE(0x1e29, 1, 0x42), -SCE(0x01bf, 0, 0x42),SCE(0x01f7, 1, 0x82),SCE(0x018b, 0, 0x82),SCE(0x018c, 1, 0x42), -SCE(0x10a7, 0, 0x82),SCE(0x2d07, 1, 0x42),SCE(0x0128, 0, 0x82),SCE(0x0129, 1, 0x42), -SCE(0x1e6a, 0, 0x82),SCE(0x1e6b, 1, 0x42),SCE(0x10ab, 0, 0x82),SCE(0x2d0b, 1, 0x42), -SCE(0x041f, 0, 0x82),SCE(0x043f, 1, 0x42),SCE(0x2c2e, 0, 0x82),SCE(0x2c5e, 1, 0x42), -SCE(0x10caf, 0, 0x82),SCE(0x10cef, 1, 0x42),SCE(0x104c5, 0, 0x82),SCE(0x104ed, 1, 0x42), -SCE(0x118a5, 0, 0x82),SCE(0x118c5, 1, 0x42),SCE(0x1fe1, 0, 0x42),SCE(0x1fe9, 1, 0x82), -SCE(0x03a6, 0, 0x83),SCE(0x03c6, 1, 0x43),SCE(0x03d5, 2, 0x43),SCE(0x2c0a, 0, 0x82), -SCE(0x2c3a, 1, 0x42),SCE(0x050e, 0, 0x82),SCE(0x050f, 1, 0x42),SCE(0x0104, 0, 0x82), -SCE(0x0105, 1, 0x42),SCE(0x0372, 0, 0x82),SCE(0x0373, 1, 0x42),SCE(0x1e8e, 0, 0x82), -SCE(0x1e8f, 1, 0x42),SCE(0x0396, 0, 0x82),SCE(0x03b6, 1, 0x42),SCE(0x1efa, 0, 0x82), -SCE(0x1efb, 1, 0x42),SCE(0x03f2, 0, 0x42),SCE(0x03f9, 1, 0x82),SCE(0xa640, 0, 0x82), -SCE(0xa641, 1, 0x42),SCE(0x10ec, 0, 0x42),SCE(0x1cac, 1, 0x82),SCE(0x118a1, 0, 0x82), -SCE(0x118c1, 1, 0x42),SCE(0x0166, 0, 0x82),SCE(0x0167, 1, 0x42),SCE(0x1f37, 0, 0x42), -SCE(0x1f3f, 1, 0x82),SCE(0x10c86, 0, 0x82),SCE(0x10cc6, 1, 0x42),SCE(0x13dd, 0, 0x82), -SCE(0xabad, 1, 0x42),SCE(0x1f51, 0, 0x42),SCE(0x1f59, 1, 0x82),SCE(0x2c9a, 0, 0x82), -SCE(0x2c9b, 1, 0x42),SCE(0x01fa, 0, 0x82),SCE(0x01fb, 1, 0x42),SCE(0x2169, 0, 0x82), -SCE(0x2179, 1, 0x42),SCE(0x16e57, 0, 0x82),SCE(0x16e77, 1, 0x42),SCE(0x10a4, 0, 0x82), -SCE(0x2d04, 1, 0x42),SCE(0x0053, 0, 0x83),SCE(0x0073, 1, 0x43),SCE(0x017f, 2, 0x43), -SCE(0x0376, 0, 0x82),SCE(0x0377, 1, 0x42),SCE(0x13b1, 0, 0x82),SCE(0xab81, 1, 0x42), -SCE(0x0468, 0, 0x82),SCE(0x0469, 1, 0x42),SCE(0x13e4, 0, 0x82),SCE(0xabb4, 1, 0x42), -SCE(0x1f96, 0, 0x42),SCE(0x1f9e, 1, 0x2),SCE(0x0108, 0, 0x82),SCE(0x0109, 1, 0x42), -SCE(0x10ca0, 0, 0x82),SCE(0x10ce0, 1, 0x42),SCE(0x1e66, 0, 0x82),SCE(0x1e67, 1, 0x42), -SCE(0x1e8a, 0, 0x82),SCE(0x1e8b, 1, 0x42),SCE(0x1e4c, 0, 0x82),SCE(0x1e4d, 1, 0x42), -SCE(0x1f75, 0, 0x42),SCE(0x1fcb, 1, 0x82),SCE(0x2c0e, 0, 0x82),SCE(0x2c3e, 1, 0x42), -SCE(0x1e50, 0, 0x82),SCE(0x1e51, 1, 0x42),SCE(0x24c0, 0, 0x82),SCE(0x24da, 1, 0x42), -SCE(0xa750, 0, 0x82),SCE(0xa751, 1, 0x42),SCE(0x00da, 0, 0x82),SCE(0x00fa, 1, 0x42), -SCE(0x10e9, 0, 0x42),SCE(0x1ca9, 1, 0x82),SCE(0x2cd8, 0, 0x82),SCE(0x2cd9, 1, 0x42), -SCE(0x1eb8, 0, 0x82),SCE(0x1eb9, 1, 0x42),SCE(0x012c, 0, 0x82),SCE(0x012d, 1, 0x42), -SCE(0x0252, 0, 0x42),SCE(0x2c70, 1, 0x82),SCE(0x04c3, 0, 0x82),SCE(0x04c4, 1, 0x42), -SCE(0x24c4, 0, 0x82),SCE(0x24de, 1, 0x42),SCE(0x104b5, 0, 0x82),SCE(0x104dd, 1, 0x42), -SCE(0x2c0f, 0, 0x82),SCE(0x2c3f, 1, 0x42),SCE(0x0533, 0, 0x82),SCE(0x0563, 1, 0x42), -SCE(0x0195, 0, 0x42),SCE(0x01f6, 1, 0x82),SCE(0x1f13, 0, 0x42),SCE(0x1f1b, 1, 0x82), -SCE(0x104b8, 0, 0x82),SCE(0x104e0, 1, 0x42),SCE(0x0553, 0, 0x82),SCE(0x0583, 1, 0x42), -SCE(0x10425, 0, 0x82),SCE(0x1044d, 1, 0x42),SCE(0x13d1, 0, 0x82),SCE(0xaba1, 1, 0x42), -SCE(0x04f4, 0, 0x82),SCE(0x04f5, 1, 0x42),SCE(0x04c7, 0, 0x82),SCE(0x04c8, 1, 0x42), -SCE(0x10cac, 0, 0x82),SCE(0x10cec, 1, 0x42),SCE(0x04d0, 0, 0x82),SCE(0x04d1, 1, 0x42), -SCE(0xa75c, 0, 0x82),SCE(0xa75d, 1, 0x42),SCE(0x1e2c, 0, 0x82),SCE(0x1e2d, 1, 0x42), -SCE(0x10a8, 0, 0x82),SCE(0x2d08, 1, 0x42),SCE(0x0464, 0, 0x82),SCE(0x0465, 1, 0x42), -SCE(0x0426, 0, 0x82),SCE(0x0446, 1, 0x42),SCE(0x04e4, 0, 0x82),SCE(0x04e5, 1, 0x42), -SCE(0x10ed, 0, 0x42),SCE(0x1cad, 1, 0x82),SCE(0xa792, 0, 0x82),SCE(0xa793, 1, 0x42), -SCE(0x1edc, 0, 0x82),SCE(0x1edd, 1, 0x42),SCE(0x104bc, 0, 0x82),SCE(0x104e4, 1, 0x42), -SCE(0x10577, 0, 0x82),SCE(0x1059e, 1, 0x42),SCE(0x1ea8, 0, 0x82),SCE(0x1ea9, 1, 0x42), -SCE(0x01b8, 0, 0x82),SCE(0x01b9, 1, 0x42),SCE(0x00c6, 0, 0x82),SCE(0x00e6, 1, 0x42), -SCE(0xff30, 0, 0x82),SCE(0xff50, 1, 0x42),SCE(0x16e44, 0, 0x82),SCE(0x16e64, 1, 0x42), -SCE(0x1041b, 0, 0x82),SCE(0x10443, 1, 0x42),SCE(0x1e0e, 0, 0x82),SCE(0x1e0f, 1, 0x42), -SCE(0x04d4, 0, 0x82),SCE(0x04d5, 1, 0x42),SCE(0x2cae, 0, 0x82),SCE(0x2caf, 1, 0x42), -SCE(0x2c6b, 0, 0x82),SCE(0x2c6c, 1, 0x42),SCE(0xff23, 0, 0x82),SCE(0xff43, 1, 0x42), -SCE(0x0184, 0, 0x82),SCE(0x0185, 1, 0x42),SCE(0x10573, 0, 0x82),SCE(0x1059a, 1, 0x42), -SCE(0x0398, 0, 0x84),SCE(0x03b8, 1, 0x44),SCE(0x03d1, 2, 0x44),SCE(0x03f4, 3, 0x84), -SCE(0x13d4, 0, 0x82),SCE(0xaba4, 1, 0x42),SCE(0x1e919, 0, 0x82),SCE(0x1e93b, 1, 0x42), -SCE(0x0187, 0, 0x82),SCE(0x0188, 1, 0x42),SCE(0x2c13, 0, 0x82),SCE(0x2c43, 1, 0x42), -SCE(0xa7a2, 0, 0x82),SCE(0xa7a3, 1, 0x42),SCE(0x0194, 0, 0x82),SCE(0x0263, 1, 0x42), -SCE(0x0416, 0, 0x82),SCE(0x0436, 1, 0x42),SCE(0x2cbe, 0, 0x82),SCE(0x2cbf, 1, 0x42), -SCE(0x1fa6, 0, 0x42),SCE(0x1fae, 1, 0x2),SCE(0x104c6, 0, 0x82),SCE(0x104ee, 1, 0x42), -SCE(0x1f82, 0, 0x42),SCE(0x1f8a, 1, 0x2),SCE(0x104c9, 0, 0x82),SCE(0x104f1, 1, 0x42), -SCE(0x13e0, 0, 0x82),SCE(0xabb0, 1, 0x42),SCE(0x0240, 0, 0x42),SCE(0x2c7f, 1, 0x82), -SCE(0xa7be, 0, 0x82),SCE(0xa7bf, 1, 0x42),SCE(0x1f92, 0, 0x42),SCE(0x1f9a, 1, 0x2), -SCE(0x0402, 0, 0x82),SCE(0x0452, 1, 0x42),SCE(0x0536, 0, 0x82),SCE(0x0566, 1, 0x42), -SCE(0x0550, 0, 0x82),SCE(0x0580, 1, 0x42),SCE(0xa682, 0, 0x82),SCE(0xa683, 1, 0x42), -SCE(0x0386, 0, 0x82),SCE(0x03ac, 1, 0x42),SCE(0x1fe5, 0, 0x42),SCE(0x1fec, 1, 0x82), -SCE(0x24c9, 0, 0x82),SCE(0x24e3, 1, 0x42),SCE(0x00d3, 0, 0x82),SCE(0x00f3, 1, 0x42), -SCE(0x10f0, 0, 0x42),SCE(0x1cb0, 1, 0x82),SCE(0x1e3c, 0, 0x82),SCE(0x1e3d, 1, 0x42), -SCE(0x2c80, 0, 0x82),SCE(0x2c81, 1, 0x42),SCE(0x1058a, 0, 0x82),SCE(0x105b1, 1, 0x42), -SCE(0x0156, 0, 0x82),SCE(0x0157, 1, 0x42),SCE(0x1e7a, 0, 0x82),SCE(0x1e7b, 1, 0x42), -SCE(0x13ed, 0, 0x82),SCE(0xabbd, 1, 0x42),SCE(0xa73e, 0, 0x82),SCE(0xa73f, 1, 0x42), -SCE(0x0118, 0, 0x82),SCE(0x0119, 1, 0x42),SCE(0x0214, 0, 0x82),SCE(0x0215, 1, 0x42), -SCE(0x1e60, 0, 0x83),SCE(0x1e61, 1, 0x43),SCE(0x1e9b, 2, 0x43),SCE(0x2c8a, 0, 0x82), -SCE(0x2c8b, 1, 0x42),SCE(0xa64c, 0, 0x82),SCE(0xa64d, 1, 0x42),SCE(0x0395, 0, 0x83), -SCE(0x03b5, 1, 0x43),SCE(0x03f5, 2, 0x43),SCE(0x01e6, 0, 0x82),SCE(0x01e7, 1, 0x42), -SCE(0x1f85, 0, 0x42),SCE(0x1f8d, 1, 0x2),SCE(0x0512, 0, 0x82),SCE(0x0513, 1, 0x42), -SCE(0x1f61, 0, 0x42),SCE(0x1f69, 1, 0x82),SCE(0xa668, 0, 0x82),SCE(0xa669, 1, 0x42), -SCE(0x10594, 0, 0x82),SCE(0x105bb, 1, 0x42),SCE(0x1e18, 0, 0x82),SCE(0x1e19, 1, 0x42), -SCE(0x13b2, 0, 0x82),SCE(0xab82, 1, 0x42),SCE(0x10415, 0, 0x82),SCE(0x1043d, 1, 0x42), -SCE(0x10418, 0, 0x82),SCE(0x10440, 1, 0x42),SCE(0x0245, 0, 0x82),SCE(0x028c, 1, 0x42), -SCE(0x1f72, 0, 0x42),SCE(0x1fc8, 1, 0x82),SCE(0x118b5, 0, 0x82),SCE(0x118d5, 1, 0x42), -SCE(0x10b8, 0, 0x82),SCE(0x2d18, 1, 0x42),SCE(0x04c0, 0, 0x82),SCE(0x04cf, 1, 0x42), -SCE(0x1040b, 0, 0x82),SCE(0x10433, 1, 0x42),SCE(0x0423, 0, 0x82),SCE(0x0443, 1, 0x42), -SCE(0x10c5, 0, 0x82),SCE(0x2d25, 1, 0x42),SCE(0x2c2d, 0, 0x82),SCE(0x2c5d, 1, 0x42), -SCE(0x1f30, 0, 0x42),SCE(0x1f38, 1, 0x82),SCE(0x13c1, 0, 0x82),SCE(0xab91, 1, 0x42), -SCE(0xa76c, 0, 0x82),SCE(0xa76d, 1, 0x42),SCE(0x104cc, 0, 0x82),SCE(0x104f4, 1, 0x42), -SCE(0x1f71, 0, 0x42),SCE(0x1fbb, 1, 0x82),SCE(0xff33, 0, 0x82),SCE(0xff53, 1, 0x42), -SCE(0x216a, 0, 0x82),SCE(0x217a, 1, 0x42),SCE(0x1ecc, 0, 0x82),SCE(0x1ecd, 1, 0x42), -SCE(0x03e8, 0, 0x82),SCE(0x03e9, 1, 0x42),SCE(0xa7d0, 0, 0x82),SCE(0xa7d1, 1, 0x42), -SCE(0x005a, 0, 0x82),SCE(0x007a, 1, 0x42),SCE(0x10cb0, 0, 0x82),SCE(0x10cf0, 1, 0x42), -SCE(0x01d9, 0, 0x82),SCE(0x01da, 1, 0x42),SCE(0x10587, 0, 0x82),SCE(0x105ae, 1, 0x42), -SCE(0x01b5, 0, 0x82),SCE(0x01b6, 1, 0x42),SCE(0x0543, 0, 0x82),SCE(0x0573, 1, 0x42), -SCE(0x1f22, 0, 0x42),SCE(0x1f2a, 1, 0x82),SCE(0x1ea0, 0, 0x82),SCE(0x1ea1, 1, 0x42), -SCE(0x10c8f, 0, 0x82),SCE(0x10ccf, 1, 0x42),SCE(0x16e54, 0, 0x82),SCE(0x16e74, 1, 0x42), -SCE(0x1d7d, 0, 0x42),SCE(0x2c63, 1, 0x82),SCE(0xa7d6, 0, 0x82),SCE(0xa7d7, 1, 0x42), -SCE(0xa74c, 0, 0x82),SCE(0xa74d, 1, 0x42),SCE(0x13ce, 0, 0x82),SCE(0xab9e, 1, 0x42), -SCE(0x00cf, 0, 0x82),SCE(0x00ef, 1, 0x42),SCE(0x10d9, 0, 0x42),SCE(0x1c99, 1, 0x82), -SCE(0x0045, 0, 0x82),SCE(0x0065, 1, 0x42),SCE(0x0136, 0, 0x82),SCE(0x0137, 1, 0x42), -SCE(0x040d, 0, 0x82),SCE(0x045d, 1, 0x42),SCE(0x16e43, 0, 0x82),SCE(0x16e63, 1, 0x42), -SCE(0x1f7c, 0, 0x42),SCE(0x1ffa, 1, 0x82),SCE(0x024a, 0, 0x82),SCE(0x024b, 1, 0x42), -SCE(0x04b8, 0, 0x82),SCE(0x04b9, 1, 0x42),SCE(0x2cca, 0, 0x82),SCE(0x2ccb, 1, 0x42), -SCE(0x2ced, 0, 0x82),SCE(0x2cee, 1, 0x42),SCE(0x019f, 0, 0x82),SCE(0x0275, 1, 0x42), -SCE(0x03a4, 0, 0x82),SCE(0x03c4, 1, 0x42),SCE(0xa74e, 0, 0x82),SCE(0xa74f, 1, 0x42), -SCE(0x104c0, 0, 0x82),SCE(0x104e8, 1, 0x42),SCE(0x1e16, 0, 0x82),SCE(0x1e17, 1, 0x42), -SCE(0x13af, 0, 0x82),SCE(0xab7f, 1, 0x42),SCE(0x0500, 0, 0x82),SCE(0x0501, 1, 0x42), -SCE(0x2c82, 0, 0x82),SCE(0x2c83, 1, 0x42),SCE(0x10bd, 0, 0x82),SCE(0x2d1d, 1, 0x42), -SCE(0x1e916, 0, 0x82),SCE(0x1e938, 1, 0x42),SCE(0x10ca3, 0, 0x82),SCE(0x10ce3, 1, 0x42), -SCE(0x10c94, 0, 0x82),SCE(0x10cd4, 1, 0x42),SCE(0x104c2, 0, 0x82),SCE(0x104ea, 1, 0x42), -SCE(0x03a6, 0, 0x83),SCE(0x03c6, 1, 0x43),SCE(0x03d5, 2, 0x43),SCE(0x16e4d, 0, 0x82), -SCE(0x16e6d, 1, 0x42),SCE(0x118b4, 0, 0x82),SCE(0x118d4, 1, 0x42),SCE(0x13e9, 0, 0x82), -SCE(0xabb9, 1, 0x42),SCE(0x1f41, 0, 0x42),SCE(0x1f49, 1, 0x82),SCE(0x0287, 0, 0x42), -SCE(0xa7b1, 1, 0x82),SCE(0x0542, 0, 0x82),SCE(0x0572, 1, 0x42),SCE(0x1e58, 0, 0x82), -SCE(0x1e59, 1, 0x42),SCE(0x1f43, 0, 0x42),SCE(0x1f4b, 1, 0x82),SCE(0x2ceb, 0, 0x82), -SCE(0x2cec, 1, 0x42),SCE(0x13eb, 0, 0x82),SCE(0xabbb, 1, 0x42),SCE(0x1fd1, 0, 0x42), -SCE(0x1fd9, 1, 0x82),SCE(0x1ee8, 0, 0x82),SCE(0x1ee9, 1, 0x42),SCE(0x13a3, 0, 0x82), -SCE(0xab73, 1, 0x42),SCE(0x03ee, 0, 0x82),SCE(0x03ef, 1, 0x42),SCE(0x118b8, 0, 0x82), -SCE(0x118d8, 1, 0x42),SCE(0x10c9e, 0, 0x82),SCE(0x10cde, 1, 0x42),SCE(0x1e920, 0, 0x82), -SCE(0x1e942, 1, 0x42),SCE(0x00ff, 0, 0x42),SCE(0x0178, 1, 0x82),SCE(0x10417, 0, 0x82), -SCE(0x1043f, 1, 0x42),SCE(0x118a9, 0, 0x82),SCE(0x118c9, 1, 0x42),SCE(0x1fb0, 0, 0x42), -SCE(0x1fb8, 1, 0x82),SCE(0x2c88, 0, 0x82),SCE(0x2c89, 1, 0x42),SCE(0x13a9, 0, 0x82), -SCE(0xab79, 1, 0x42),SCE(0x1e909, 0, 0x82),SCE(0x1e92b, 1, 0x42),SCE(0x13c2, 0, 0x82), -SCE(0xab92, 1, 0x42),SCE(0x24b6, 0, 0x82),SCE(0x24d0, 1, 0x42),SCE(0x1e5e, 0, 0x82), -SCE(0x1e5f, 1, 0x42),SCE(0x2c69, 0, 0x82),SCE(0x2c6a, 1, 0x42),SCE(0x1041f, 0, 0x82), -SCE(0x10447, 1, 0x42),SCE(0x037f, 0, 0x82),SCE(0x03f3, 1, 0x42),SCE(0x0540, 0, 0x82), -SCE(0x0570, 1, 0x42),SCE(0x0390, 0, 0x42),SCE(0x1fd3, 1, 0x42),SCE(0x004b, 0, 0x83), -SCE(0x006b, 1, 0x43),SCE(0x212a, 2, 0x83),SCE(0x04f8, 0, 0x82),SCE(0x04f9, 1, 0x42), -SCE(0x13f3, 0, 0x82),SCE(0x13fb, 1, 0x42),SCE(0x00c9, 0, 0x82),SCE(0x00e9, 1, 0x42), -SCE(0x040f, 0, 0x82),SCE(0x045f, 1, 0x42),SCE(0x10b5, 0, 0x82),SCE(0x2d15, 1, 0x42), -SCE(0xa746, 0, 0x82),SCE(0xa747, 1, 0x42),SCE(0x00cd, 0, 0x82),SCE(0x00ed, 1, 0x42), -SCE(0x0476, 0, 0x82),SCE(0x0477, 1, 0x42),SCE(0x039e, 0, 0x82),SCE(0x03be, 1, 0x42), -SCE(0x1f20, 0, 0x42),SCE(0x1f28, 1, 0x82),SCE(0x10fa, 0, 0x42),SCE(0x1cba, 1, 0x82), -SCE(0x2c21, 0, 0x82),SCE(0x2c51, 1, 0x42),SCE(0x1ea6, 0, 0x82),SCE(0x1ea7, 1, 0x42), -SCE(0x1f83, 0, 0x42),SCE(0x1f8b, 1, 0x2),SCE(0x053c, 0, 0x82),SCE(0x056c, 1, 0x42), -SCE(0x1f01, 0, 0x42),SCE(0x1f09, 1, 0x82),SCE(0x2cc2, 0, 0x82),SCE(0x2cc3, 1, 0x42), -SCE(0x0208, 0, 0x82),SCE(0x0209, 1, 0x42),SCE(0x13e3, 0, 0x82),SCE(0xabb3, 1, 0x42), -SCE(0xa796, 0, 0x82),SCE(0xa797, 1, 0x42),SCE(0x1f64, 0, 0x42),SCE(0x1f6c, 1, 0x82), -SCE(0x10592, 0, 0x82),SCE(0x105b9, 1, 0x42),SCE(0x04be, 0, 0x82),SCE(0x04bf, 1, 0x42), -SCE(0x1f91, 0, 0x42),SCE(0x1f99, 1, 0x2),SCE(0x03e6, 0, 0x82),SCE(0x03e7, 1, 0x42), -SCE(0x1ee0, 0, 0x82),SCE(0x1ee1, 1, 0x42),SCE(0x1ff3, 0, 0x42),SCE(0x1ffc, 1, 0x2), -SCE(0x0413, 0, 0x82),SCE(0x0433, 1, 0x42),SCE(0x042e, 0, 0x82),SCE(0x044e, 1, 0x42), -SCE(0x104ca, 0, 0x82),SCE(0x104f2, 1, 0x42),SCE(0x2c00, 0, 0x82),SCE(0x2c30, 1, 0x42), -SCE(0x10db, 0, 0x42),SCE(0x1c9b, 1, 0x82),SCE(0x10f6, 0, 0x42),SCE(0x1cb6, 1, 0x82), -SCE(0x118be, 0, 0x82),SCE(0x118de, 1, 0x42),SCE(0x01a7, 0, 0x82),SCE(0x01a8, 1, 0x42), -SCE(0x10c3, 0, 0x82),SCE(0x2d23, 1, 0x42),SCE(0x0415, 0, 0x82),SCE(0x0435, 1, 0x42), -SCE(0x1e1e, 0, 0x82),SCE(0x1e1f, 1, 0x42),SCE(0x0506, 0, 0x82),SCE(0x0507, 1, 0x42), -SCE(0x1e64, 0, 0x82),SCE(0x1e65, 1, 0x42),SCE(0x00c7, 0, 0x82),SCE(0x00e7, 1, 0x42), -SCE(0x047c, 0, 0x82),SCE(0x047d, 1, 0x42),SCE(0x1e52, 0, 0x82),SCE(0x1e53, 1, 0x42), -SCE(0x10f4, 0, 0x42),SCE(0x1cb4, 1, 0x82),SCE(0x10586, 0, 0x82),SCE(0x105ad, 1, 0x42), -SCE(0x046a, 0, 0x82),SCE(0x046b, 1, 0x42),SCE(0x2c27, 0, 0x82),SCE(0x2c57, 1, 0x42), -SCE(0x10c89, 0, 0x82),SCE(0x10cc9, 1, 0x42),SCE(0x10a2, 0, 0x82),SCE(0x2d02, 1, 0x42), -SCE(0xff32, 0, 0x82),SCE(0xff52, 1, 0x42),SCE(0x0398, 0, 0x84),SCE(0x03b8, 1, 0x44), -SCE(0x03d1, 2, 0x44),SCE(0x03f4, 3, 0x84),SCE(0x03a9, 0, 0x83),SCE(0x03c9, 1, 0x43), -SCE(0x2126, 2, 0x83),SCE(0x1eda, 0, 0x82),SCE(0x1edb, 1, 0x42),SCE(0x1e901, 0, 0x82), -SCE(0x1e923, 1, 0x42),SCE(0xa79c, 0, 0x82),SCE(0xa79d, 1, 0x42),SCE(0x10d3, 0, 0x42), -SCE(0x1c93, 1, 0x82),SCE(0x24bc, 0, 0x82),SCE(0x24d6, 1, 0x42),SCE(0xff2f, 0, 0x82), -SCE(0xff4f, 1, 0x42),SCE(0x0250, 0, 0x42),SCE(0x2c6f, 1, 0x82),SCE(0x2c29, 0, 0x82), -SCE(0x2c59, 1, 0x42),SCE(0x04b2, 0, 0x82),SCE(0x04b3, 1, 0x42),SCE(0x10419, 0, 0x82), -SCE(0x10441, 1, 0x42),SCE(0x0210, 0, 0x82),SCE(0x0211, 1, 0x42),SCE(0x2c15, 0, 0x82), -SCE(0x2c45, 1, 0x42),SCE(0x16e47, 0, 0x82),SCE(0x16e67, 1, 0x42),SCE(0xa754, 0, 0x82), -SCE(0xa755, 1, 0x42),SCE(0x16e45, 0, 0x82),SCE(0x16e65, 1, 0x42),SCE(0x01c7, 0, 0x83), -SCE(0x01c8, 1, 0x3),SCE(0x01c9, 2, 0x43),SCE(0x047e, 0, 0x82),SCE(0x047f, 1, 0x42), -SCE(0x01fc, 0, 0x82),SCE(0x01fd, 1, 0x42),SCE(0x020e, 0, 0x82),SCE(0x020f, 1, 0x42), -SCE(0x0244, 0, 0x82),SCE(0x0289, 1, 0x42),SCE(0x1f77, 0, 0x42),SCE(0x1fdb, 1, 0x82), -SCE(0x2cd6, 0, 0x82),SCE(0x2cd7, 1, 0x42),SCE(0x10589, 0, 0x82),SCE(0x105b0, 1, 0x42), -SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44),SCE(0x1c84, 2, 0x44),SCE(0x1c85, 3, 0x44), -SCE(0x10e7, 0, 0x42),SCE(0x1ca7, 1, 0x82),SCE(0x04fa, 0, 0x82),SCE(0x04fb, 1, 0x42), -SCE(0x10d5, 0, 0x42),SCE(0x1c95, 1, 0x82),SCE(0x1eac, 0, 0x82),SCE(0x1ead, 1, 0x42), -SCE(0x10b7, 0, 0x82),SCE(0x2d17, 1, 0x42),SCE(0x13a1, 0, 0x82),SCE(0xab71, 1, 0x42), -SCE(0xa7c2, 0, 0x82),SCE(0xa7c3, 1, 0x42),SCE(0x1e907, 0, 0x82),SCE(0x1e929, 1, 0x42), -SCE(0x13f5, 0, 0x82),SCE(0x13fd, 1, 0x42),SCE(0x1ee2, 0, 0x82),SCE(0x1ee3, 1, 0x42), -SCE(0x1f62, 0, 0x42),SCE(0x1f6a, 1, 0x82),SCE(0x1e92, 0, 0x82),SCE(0x1e93, 1, 0x42), -SCE(0x01d5, 0, 0x82),SCE(0x01d6, 1, 0x42),SCE(0x2c06, 0, 0x82),SCE(0x2c36, 1, 0x42), -SCE(0x10c8b, 0, 0x82),SCE(0x10ccb, 1, 0x42),SCE(0x1f70, 0, 0x42),SCE(0x1fba, 1, 0x82), -SCE(0x03ec, 0, 0x82),SCE(0x03ed, 1, 0x42),SCE(0x1e915, 0, 0x82),SCE(0x1e937, 1, 0x42), -SCE(0x216e, 0, 0x82),SCE(0x217e, 1, 0x42),SCE(0x13c0, 0, 0x82),SCE(0xab90, 1, 0x42), -SCE(0x1ef4, 0, 0x82),SCE(0x1ef5, 1, 0x42),SCE(0xff3a, 0, 0x82),SCE(0xff5a, 1, 0x42), -SCE(0x118bc, 0, 0x82),SCE(0x118dc, 1, 0x42),SCE(0x04aa, 0, 0x82),SCE(0x04ab, 1, 0x42), -SCE(0x2163, 0, 0x82),SCE(0x2173, 1, 0x42),SCE(0x1e1c, 0, 0x82),SCE(0x1e1d, 1, 0x42), -SCE(0x13c8, 0, 0x82),SCE(0xab98, 1, 0x42),SCE(0x118af, 0, 0x82),SCE(0x118cf, 1, 0x42), -SCE(0x10c98, 0, 0x82),SCE(0x10cd8, 1, 0x42),SCE(0x10571, 0, 0x82),SCE(0x10598, 1, 0x42), -SCE(0x10ca7, 0, 0x82),SCE(0x10ce7, 1, 0x42),SCE(0x0051, 0, 0x82),SCE(0x0071, 1, 0x42), -SCE(0x04f2, 0, 0x82),SCE(0x04f3, 1, 0x42),SCE(0x10caa, 0, 0x82),SCE(0x10cea, 1, 0x42), -SCE(0x10af, 0, 0x82),SCE(0x2d0f, 1, 0x42),SCE(0x2c8e, 0, 0x82),SCE(0x2c8f, 1, 0x42), -SCE(0x2cc4, 0, 0x82),SCE(0x2cc5, 1, 0x42),SCE(0x1e0a, 0, 0x82),SCE(0x1e0b, 1, 0x42), -SCE(0x16e50, 0, 0x82),SCE(0x16e70, 1, 0x42),SCE(0x1058e, 0, 0x82),SCE(0x105b5, 1, 0x42), -SCE(0x10411, 0, 0x82),SCE(0x10439, 1, 0x42),SCE(0x10423, 0, 0x82),SCE(0x1044b, 1, 0x42), -SCE(0x053a, 0, 0x82),SCE(0x056a, 1, 0x42),SCE(0x1e6c, 0, 0x82),SCE(0x1e6d, 1, 0x42), -SCE(0x104be, 0, 0x82),SCE(0x104e6, 1, 0x42),SCE(0x10424, 0, 0x82),SCE(0x1044c, 1, 0x42), -SCE(0x10a9, 0, 0x82),SCE(0x2d09, 1, 0x42),SCE(0x24c2, 0, 0x82),SCE(0x24dc, 1, 0x42), -SCE(0x10c81, 0, 0x82),SCE(0x10cc1, 1, 0x42),SCE(0x13bc, 0, 0x82),SCE(0xab8c, 1, 0x42), -SCE(0x0462, 0, 0x83),SCE(0x0463, 1, 0x43),SCE(0x1c87, 2, 0x43),SCE(0x118a6, 0, 0x82), -SCE(0x118c6, 1, 0x42),SCE(0x1e4a, 0, 0x82),SCE(0x1e4b, 1, 0x42),SCE(0x2162, 0, 0x82), -SCE(0x2172, 1, 0x42),SCE(0x1ed4, 0, 0x82),SCE(0x1ed5, 1, 0x42),SCE(0x10aa, 0, 0x82), -SCE(0x2d0a, 1, 0x42),SCE(0x04ec, 0, 0x82),SCE(0x04ed, 1, 0x42),SCE(0x2c0c, 0, 0x82), -SCE(0x2c3c, 1, 0x42),SCE(0xa79a, 0, 0x82),SCE(0xa79b, 1, 0x42),SCE(0x04cb, 0, 0x82), -SCE(0x04cc, 1, 0x42),SCE(0x104bd, 0, 0x82),SCE(0x104e5, 1, 0x42),SCE(0x0370, 0, 0x82), -SCE(0x0371, 1, 0x42),SCE(0x1e914, 0, 0x82),SCE(0x1e936, 1, 0x42),SCE(0x03da, 0, 0x82), -SCE(0x03db, 1, 0x42),SCE(0x1f35, 0, 0x42),SCE(0x1f3d, 1, 0x82),SCE(0x16e51, 0, 0x82), -SCE(0x16e71, 1, 0x42),SCE(0x0392, 0, 0x83),SCE(0x03b2, 1, 0x43),SCE(0x03d0, 2, 0x43), -SCE(0x2c96, 0, 0x82),SCE(0x2c97, 1, 0x42),SCE(0x0391, 0, 0x82),SCE(0x03b1, 1, 0x42), -SCE(0x0534, 0, 0x82),SCE(0x0564, 1, 0x42),SCE(0x041b, 0, 0x82),SCE(0x043b, 1, 0x42), -SCE(0x13df, 0, 0x82),SCE(0xabaf, 1, 0x42),SCE(0x2c2c, 0, 0x82),SCE(0x2c5c, 1, 0x42), -SCE(0x0124, 0, 0x82),SCE(0x0125, 1, 0x42),SCE(0x10ca2, 0, 0x82),SCE(0x10ce2, 1, 0x42), -SCE(0x1e8c, 0, 0x82),SCE(0x1e8d, 1, 0x42),SCE(0x1eb4, 0, 0x82),SCE(0x1eb5, 1, 0x42), -SCE(0x016c, 0, 0x82),SCE(0x016d, 1, 0x42),SCE(0x1e02, 0, 0x82),SCE(0x1e03, 1, 0x42), -SCE(0x019a, 0, 0x42),SCE(0x023d, 1, 0x82),SCE(0x0102, 0, 0x82),SCE(0x0103, 1, 0x42), -SCE(0x1f14, 0, 0x42),SCE(0x1f1c, 1, 0x82),SCE(0xff28, 0, 0x82),SCE(0xff48, 1, 0x42), -SCE(0x10c80, 0, 0x82),SCE(0x10cc0, 1, 0x42),SCE(0x10ee, 0, 0x42),SCE(0x1cae, 1, 0x82), -SCE(0x1f55, 0, 0x42),SCE(0x1f5d, 1, 0x82),SCE(0xa77b, 0, 0x82),SCE(0xa77c, 1, 0x42), -SCE(0x0059, 0, 0x82),SCE(0x0079, 1, 0x42),SCE(0x014a, 0, 0x82),SCE(0x014b, 1, 0x42), -SCE(0x1e24, 0, 0x82),SCE(0x1e25, 1, 0x42),SCE(0x13bd, 0, 0x82),SCE(0xab8d, 1, 0x42), -SCE(0x2cbc, 0, 0x82),SCE(0x2cbd, 1, 0x42),SCE(0x1040d, 0, 0x82),SCE(0x10435, 1, 0x42), -SCE(0x1058f, 0, 0x82),SCE(0x105b6, 1, 0x42),SCE(0x118a7, 0, 0x82),SCE(0x118c7, 1, 0x42), -SCE(0xa660, 0, 0x82),SCE(0xa661, 1, 0x42),SCE(0x0514, 0, 0x82),SCE(0x0515, 1, 0x42), -SCE(0x052e, 0, 0x82),SCE(0x052f, 1, 0x42),SCE(0x04a4, 0, 0x82),SCE(0x04a5, 1, 0x42), -SCE(0x0400, 0, 0x82),SCE(0x0450, 1, 0x42),SCE(0x16e58, 0, 0x82),SCE(0x16e78, 1, 0x42), -SCE(0xa64e, 0, 0x82),SCE(0xa64f, 1, 0x42),SCE(0xff2e, 0, 0x82),SCE(0xff4e, 1, 0x42), -SCE(0x1040c, 0, 0x82),SCE(0x10434, 1, 0x42),SCE(0x00db, 0, 0x82),SCE(0x00fb, 1, 0x42), -SCE(0x01cd, 0, 0x82),SCE(0x01ce, 1, 0x42),SCE(0x10e8, 0, 0x42),SCE(0x1ca8, 1, 0x82), -SCE(0x054f, 0, 0x82),SCE(0x057f, 1, 0x42),SCE(0xa738, 0, 0x82),SCE(0xa739, 1, 0x42), -SCE(0x16e5f, 0, 0x82),SCE(0x16e7f, 1, 0x42),SCE(0x1d79, 0, 0x42),SCE(0xa77d, 1, 0x82), -SCE(0x1e90f, 0, 0x82),SCE(0x1e931, 1, 0x42),SCE(0x2c07, 0, 0x82),SCE(0x2c37, 1, 0x42), -SCE(0x10a3, 0, 0x82),SCE(0x2d03, 1, 0x42),SCE(0xa7a0, 0, 0x82),SCE(0xa7a1, 1, 0x42), -SCE(0x0421, 0, 0x83),SCE(0x0441, 1, 0x43),SCE(0x1c83, 2, 0x43),SCE(0xa680, 0, 0x82), -SCE(0xa681, 1, 0x42),SCE(0x0282, 0, 0x42),SCE(0xa7c5, 1, 0x82),SCE(0x24cb, 0, 0x82), -SCE(0x24e5, 1, 0x42),SCE(0x0401, 0, 0x82),SCE(0x0451, 1, 0x42),SCE(0xa758, 0, 0x82), -SCE(0xa759, 1, 0x42),SCE(0x0058, 0, 0x82),SCE(0x0078, 1, 0x42),SCE(0x0193, 0, 0x82), -SCE(0x0260, 1, 0x42),SCE(0x10ca1, 0, 0x82),SCE(0x10ce1, 1, 0x42),SCE(0x054e, 0, 0x82), -SCE(0x057e, 1, 0x42),SCE(0x0186, 0, 0x82),SCE(0x0254, 1, 0x42),SCE(0x13dc, 0, 0x82), -SCE(0xabac, 1, 0x42),SCE(0x24bd, 0, 0x82),SCE(0x24d7, 1, 0x42),SCE(0x01b3, 0, 0x82), -SCE(0x01b4, 1, 0x42),SCE(0xa696, 0, 0x82),SCE(0xa697, 1, 0x42),SCE(0x0216, 0, 0x82), -SCE(0x0217, 1, 0x42),SCE(0x1ece, 0, 0x82),SCE(0x1ecf, 1, 0x42),SCE(0x2168, 0, 0x82), -SCE(0x2178, 1, 0x42),SCE(0x1e90e, 0, 0x82),SCE(0x1e930, 1, 0x42),SCE(0x2c12, 0, 0x82), -SCE(0x2c42, 1, 0x42),SCE(0x2c2f, 0, 0x82),SCE(0x2c5f, 1, 0x42),SCE(0x10cab, 0, 0x82), -SCE(0x10ceb, 1, 0x42),SCE(0x1e86, 0, 0x82),SCE(0x1e87, 1, 0x42),SCE(0x0412, 0, 0x83), -SCE(0x0432, 1, 0x43),SCE(0x1c80, 2, 0x43),SCE(0x13d6, 0, 0x82),SCE(0xaba6, 1, 0x42), -SCE(0x1eba, 0, 0x82),SCE(0x1ebb, 1, 0x42),SCE(0x1e91b, 0, 0x82),SCE(0x1e93d, 1, 0x42), -SCE(0x1041a, 0, 0x82),SCE(0x10442, 1, 0x42),SCE(0x1eee, 0, 0x82),SCE(0x1eef, 1, 0x42), -SCE(0xff31, 0, 0x82),SCE(0xff51, 1, 0x42),SCE(0xa7bc, 0, 0x82),SCE(0xa7bd, 1, 0x42), -SCE(0x01db, 0, 0x82),SCE(0x01dc, 1, 0x42),SCE(0x01a6, 0, 0x82),SCE(0x0280, 1, 0x42), -SCE(0x1f07, 0, 0x42),SCE(0x1f0f, 1, 0x82),SCE(0x118bd, 0, 0x82),SCE(0x118dd, 1, 0x42), -SCE(0x00c8, 0, 0x82),SCE(0x00e8, 1, 0x42),SCE(0x04d2, 0, 0x82),SCE(0x04d3, 1, 0x42), -SCE(0x10e1, 0, 0x42),SCE(0x1ca1, 1, 0x82),SCE(0x13b7, 0, 0x82),SCE(0xab87, 1, 0x42), -SCE(0x10585, 0, 0x82),SCE(0x105ac, 1, 0x42),SCE(0x16e4b, 0, 0x82),SCE(0x16e6b, 1, 0x42), -SCE(0x0172, 0, 0x82),SCE(0x0173, 1, 0x42),SCE(0x049e, 0, 0x82),SCE(0x049f, 1, 0x42), -SCE(0x04e6, 0, 0x82),SCE(0x04e7, 1, 0x42),SCE(0x10b0, 0, 0x82),SCE(0x2d10, 1, 0x42), -SCE(0x2c9c, 0, 0x82),SCE(0x2c9d, 1, 0x42),SCE(0x01ee, 0, 0x82),SCE(0x01ef, 1, 0x42), -SCE(0x104b4, 0, 0x82),SCE(0x104dc, 1, 0x42),SCE(0x10c87, 0, 0x82),SCE(0x10cc7, 1, 0x42), -SCE(0x13ba, 0, 0x82),SCE(0xab8a, 1, 0x42),SCE(0x1e10, 0, 0x82),SCE(0x1e11, 1, 0x42), -SCE(0x0230, 0, 0x82),SCE(0x0231, 1, 0x42),SCE(0x0428, 0, 0x82),SCE(0x0448, 1, 0x42), -SCE(0x2cd0, 0, 0x82),SCE(0x2cd1, 1, 0x42),SCE(0x118a0, 0, 0x82),SCE(0x118c0, 1, 0x42), -SCE(0x03e0, 0, 0x82),SCE(0x03e1, 1, 0x42),SCE(0x10588, 0, 0x82),SCE(0x105af, 1, 0x42), -SCE(0xa780, 0, 0x82),SCE(0xa781, 1, 0x42),SCE(0x10f5, 0, 0x42),SCE(0x1cb5, 1, 0x82), -SCE(0x053b, 0, 0x82),SCE(0x056b, 1, 0x42),SCE(0x00d5, 0, 0x82),SCE(0x00f5, 1, 0x42), -SCE(0x0414, 0, 0x83),SCE(0x0434, 1, 0x43),SCE(0x1c81, 2, 0x43),SCE(0x1fa4, 0, 0x42), -SCE(0x1fac, 1, 0x2),SCE(0x012a, 0, 0x82),SCE(0x012b, 1, 0x42),SCE(0x0052, 0, 0x82), -SCE(0x0072, 1, 0x42),SCE(0x24b7, 0, 0x82),SCE(0x24d1, 1, 0x42),SCE(0x1e908, 0, 0x82), -SCE(0x1e92a, 1, 0x42),SCE(0x0398, 0, 0x84),SCE(0x03b8, 1, 0x44),SCE(0x03d1, 2, 0x44), -SCE(0x03f4, 3, 0x84),SCE(0x0202, 0, 0x82),SCE(0x0203, 1, 0x42),SCE(0x0271, 0, 0x42), -SCE(0x2c6e, 1, 0x82),SCE(0x0470, 0, 0x82),SCE(0x0471, 1, 0x42),SCE(0x2c1b, 0, 0x82), -SCE(0x2c4b, 1, 0x42),SCE(0x048a, 0, 0x82),SCE(0x048b, 1, 0x42),SCE(0xa752, 0, 0x82), -SCE(0xa753, 1, 0x42),SCE(0xff25, 0, 0x82),SCE(0xff45, 1, 0x42),SCE(0x0407, 0, 0x82), -SCE(0x0457, 1, 0x42),SCE(0x00c1, 0, 0x82),SCE(0x00e1, 1, 0x42),SCE(0x1e44, 0, 0x82), -SCE(0x1e45, 1, 0x42),SCE(0x1f97, 0, 0x42),SCE(0x1f9f, 1, 0x2),SCE(0x0548, 0, 0x82), -SCE(0x0578, 1, 0x42),SCE(0x021c, 0, 0x82),SCE(0x021d, 1, 0x42),SCE(0x13e5, 0, 0x82), -SCE(0xabb5, 1, 0x42),SCE(0x051a, 0, 0x82),SCE(0x051b, 1, 0x42),SCE(0x2cb6, 0, 0x82), -SCE(0x2cb7, 1, 0x42),SCE(0xa654, 0, 0x82),SCE(0xa655, 1, 0x42),SCE(0x10403, 0, 0x82), -SCE(0x1042b, 1, 0x42),SCE(0x1e72, 0, 0x82),SCE(0x1e73, 1, 0x42),SCE(0x10d4, 0, 0x42), -SCE(0x1c94, 1, 0x82),SCE(0x104c1, 0, 0x82),SCE(0x104e9, 1, 0x42),SCE(0x10c8a, 0, 0x82), -SCE(0x10cca, 1, 0x42),SCE(0x1e2a, 0, 0x82),SCE(0x1e2b, 1, 0x42),SCE(0x0462, 0, 0x83), -SCE(0x0463, 1, 0x43),SCE(0x1c87, 2, 0x43),SCE(0x1f76, 0, 0x42),SCE(0x1fda, 1, 0x82), -SCE(0x0053, 0, 0x83),SCE(0x0073, 1, 0x43),SCE(0x017f, 2, 0x43),SCE(0x2c26, 0, 0x82), -SCE(0x2c56, 1, 0x42),SCE(0x13a0, 0, 0x82),SCE(0xab70, 1, 0x42),SCE(0x04c5, 0, 0x82), -SCE(0x04c6, 1, 0x42),SCE(0x03fa, 0, 0x82),SCE(0x03fb, 1, 0x42),SCE(0x0555, 0, 0x82), -SCE(0x0585, 1, 0x42),SCE(0x13e8, 0, 0x82),SCE(0xabb8, 1, 0x42),SCE(0x01c7, 0, 0x83), -SCE(0x01c8, 1, 0x3),SCE(0x01c9, 2, 0x43),SCE(0x1f42, 0, 0x42),SCE(0x1f4a, 1, 0x82), -SCE(0x1f67, 0, 0x42),SCE(0x1f6f, 1, 0x82),SCE(0x1057c, 0, 0x82),SCE(0x105a3, 1, 0x42), -SCE(0xa7b4, 0, 0x82),SCE(0xa7b5, 1, 0x42),SCE(0xa698, 0, 0x82),SCE(0xa699, 1, 0x42), -SCE(0x1e904, 0, 0x82),SCE(0x1e926, 1, 0x42),SCE(0x040c, 0, 0x82),SCE(0x045c, 1, 0x42), -SCE(0x10da, 0, 0x42),SCE(0x1c9a, 1, 0x82),SCE(0x00d0, 0, 0x82),SCE(0x00f0, 1, 0x42), -SCE(0x16e46, 0, 0x82),SCE(0x16e66, 1, 0x42),SCE(0x1ec2, 0, 0x82),SCE(0x1ec3, 1, 0x42), -SCE(0x01e4, 0, 0x82),SCE(0x01e5, 1, 0x42),SCE(0x0044, 0, 0x82),SCE(0x0064, 1, 0x42), -SCE(0x017d, 0, 0x82),SCE(0x017e, 1, 0x42),SCE(0x1f21, 0, 0x42),SCE(0x1f29, 1, 0x82), -SCE(0xff39, 0, 0x82),SCE(0xff59, 1, 0x42),SCE(0x13ac, 0, 0x82),SCE(0xab7c, 1, 0x42), -SCE(0x1f00, 0, 0x42),SCE(0x1f08, 1, 0x82),SCE(0x03a5, 0, 0x82),SCE(0x03c5, 1, 0x42), -SCE(0x0158, 0, 0x82),SCE(0x0159, 1, 0x42),SCE(0x104cf, 0, 0x82),SCE(0x104f7, 1, 0x42), -SCE(0x1e3a, 0, 0x82),SCE(0x1e3b, 1, 0x42),SCE(0xa72c, 0, 0x82),SCE(0xa72d, 1, 0x42), -SCE(0x118b7, 0, 0x82),SCE(0x118d7, 1, 0x42),SCE(0x0112, 0, 0x82),SCE(0x0113, 1, 0x42), -SCE(0x1e36, 0, 0x82),SCE(0x1e37, 1, 0x42),SCE(0x16e4e, 0, 0x82),SCE(0x16e6e, 1, 0x42), -SCE(0x1f7d, 0, 0x42),SCE(0x1ffb, 1, 0x82),SCE(0x0494, 0, 0x82),SCE(0x0495, 1, 0x42), -SCE(0x1e80, 0, 0x82),SCE(0x1e81, 1, 0x42),SCE(0x0116, 0, 0x82),SCE(0x0117, 1, 0x42), -SCE(0x042d, 0, 0x82),SCE(0x044d, 1, 0x42),SCE(0x13f2, 0, 0x82),SCE(0x13fa, 1, 0x42), -SCE(0x0179, 0, 0x82),SCE(0x017a, 1, 0x42),SCE(0x04da, 0, 0x82),SCE(0x04db, 1, 0x42), -SCE(0x2ca8, 0, 0x82),SCE(0x2ca9, 1, 0x42),SCE(0x00cc, 0, 0x82),SCE(0x00ec, 1, 0x42), -SCE(0x01a2, 0, 0x82),SCE(0x01a3, 1, 0x42),SCE(0x03a1, 0, 0x83),SCE(0x03c1, 1, 0x43), -SCE(0x03f1, 2, 0x43),SCE(0x1e7c, 0, 0x82),SCE(0x1e7d, 1, 0x42),SCE(0x13cf, 0, 0x82), -SCE(0xab9f, 1, 0x42),SCE(0x10412, 0, 0x82),SCE(0x1043a, 1, 0x42),SCE(0x0520, 0, 0x82), -SCE(0x0521, 1, 0x42),SCE(0x2c1c, 0, 0x82),SCE(0x2c4c, 1, 0x42),SCE(0x026b, 0, 0x42), -SCE(0x2c62, 1, 0x82),SCE(0x10591, 0, 0x82),SCE(0x105b8, 1, 0x42),SCE(0x015c, 0, 0x82), -SCE(0x015d, 1, 0x42),SCE(0xa652, 0, 0x82),SCE(0xa653, 1, 0x42),SCE(0xff26, 0, 0x82), -SCE(0xff46, 1, 0x42),SCE(0x01e8, 0, 0x82),SCE(0x01e9, 1, 0x42),SCE(0x10b6, 0, 0x82), -SCE(0x2d16, 1, 0x42),SCE(0xa656, 0, 0x82),SCE(0xa657, 1, 0x42),SCE(0x051c, 0, 0x82), -SCE(0x051d, 1, 0x42),SCE(0x13c3, 0, 0x82),SCE(0xab93, 1, 0x42),SCE(0x104cb, 0, 0x82), -SCE(0x104f3, 1, 0x42),SCE(0x1ec6, 0, 0x82),SCE(0x1ec7, 1, 0x42),SCE(0x01e0, 0, 0x82), -SCE(0x01e1, 1, 0x42),SCE(0x1f63, 0, 0x42),SCE(0x1f6b, 1, 0x82),SCE(0x2c01, 0, 0x82), -SCE(0x2c31, 1, 0x42),SCE(0x1e900, 0, 0x82),SCE(0x1e922, 1, 0x42),SCE(0x1e78, 0, 0x82), -SCE(0x1e79, 1, 0x42),SCE(0x24ce, 0, 0x82),SCE(0x24e8, 1, 0x42),SCE(0xa76a, 0, 0x82), -SCE(0xa76b, 1, 0x42),SCE(0x011a, 0, 0x82),SCE(0x011b, 1, 0x42),SCE(0x0429, 0, 0x82), -SCE(0x0449, 1, 0x42),SCE(0x1f84, 0, 0x42),SCE(0x1f8c, 1, 0x2),SCE(0x10d6, 0, 0x42), -SCE(0x1c96, 1, 0x82),SCE(0x1fb1, 0, 0x42),SCE(0x1fb9, 1, 0x82),SCE(0xa762, 0, 0x82), -SCE(0xa763, 1, 0x42),SCE(0x10cb2, 0, 0x82),SCE(0x10cf2, 1, 0x42),SCE(0x2c20, 0, 0x82), -SCE(0x2c50, 1, 0x42),SCE(0x10be, 0, 0x82),SCE(0x2d1e, 1, 0x42),SCE(0x1041e, 0, 0x82), -SCE(0x10446, 1, 0x42),SCE(0x04e2, 0, 0x82),SCE(0x04e3, 1, 0x42),SCE(0x04de, 0, 0x82), -SCE(0x04df, 1, 0x42),SCE(0x13ea, 0, 0x82),SCE(0xabba, 1, 0x42),SCE(0x0541, 0, 0x82), -SCE(0x0571, 1, 0x42),SCE(0x0545, 0, 0x82),SCE(0x0575, 1, 0x42),SCE(0x1f25, 0, 0x42), -SCE(0x1f2d, 1, 0x82),SCE(0x0154, 0, 0x82),SCE(0x0155, 1, 0x42),SCE(0x2c24, 0, 0x82), -SCE(0x2c54, 1, 0x42),SCE(0x13ee, 0, 0x82),SCE(0xabbe, 1, 0x42),SCE(0x0181, 0, 0x82), -SCE(0x0253, 1, 0x42),SCE(0x03a3, 0, 0x83),SCE(0x03c2, 1, 0x43),SCE(0x03c3, 2, 0x43), -SCE(0x118b3, 0, 0x82),SCE(0x118d3, 1, 0x42),SCE(0x10ba, 0, 0x82),SCE(0x2d1a, 1, 0x42), -SCE(0x0180, 0, 0x42),SCE(0x0243, 1, 0x82),SCE(0x1e3e, 0, 0x82),SCE(0x1e3f, 1, 0x42), -SCE(0x10ff, 0, 0x42),SCE(0x1cbf, 1, 0x82),SCE(0x10c88, 0, 0x82),SCE(0x10cc8, 1, 0x42), -SCE(0x10d2, 0, 0x42),SCE(0x1c92, 1, 0x82),SCE(0xa76e, 0, 0x82),SCE(0xa76f, 1, 0x42), -SCE(0x1c88, 0, 0x43),SCE(0xa64a, 1, 0x83),SCE(0xa64b, 2, 0x43),SCE(0x10b2, 0, 0x82), -SCE(0x2d12, 1, 0x42),SCE(0x13c7, 0, 0x82),SCE(0xab97, 1, 0x42),SCE(0x0518, 0, 0x82), -SCE(0x0519, 1, 0x42),SCE(0xa766, 0, 0x82),SCE(0xa767, 1, 0x42),SCE(0x01ec, 0, 0x82), -SCE(0x01ed, 1, 0x42),SCE(0x104c3, 0, 0x82),SCE(0x104eb, 1, 0x42),SCE(0x10574, 0, 0x82), -SCE(0x1059b, 1, 0x42),SCE(0x1e91c, 0, 0x82),SCE(0x1e93e, 1, 0x42),SCE(0x10e2, 0, 0x42), -SCE(0x1ca2, 1, 0x82),SCE(0x2c05, 0, 0x82),SCE(0x2c35, 1, 0x42),SCE(0x04a0, 0, 0x82), -SCE(0x04a1, 1, 0x42),SCE(0x1e42, 0, 0x82),SCE(0x1e43, 1, 0x42),SCE(0x13b4, 0, 0x82), -SCE(0xab84, 1, 0x42),SCE(0x118bf, 0, 0x82),SCE(0x118df, 1, 0x42),SCE(0x0150, 0, 0x82), -SCE(0x0151, 1, 0x42),SCE(0x2cb0, 0, 0x82),SCE(0x2cb1, 1, 0x42),SCE(0x13a4, 0, 0x82), -SCE(0xab74, 1, 0x42),SCE(0x04c1, 0, 0x82),SCE(0x04c2, 1, 0x42),SCE(0x01ca, 0, 0x83), -SCE(0x01cb, 1, 0x3),SCE(0x01cc, 2, 0x43),SCE(0x004c, 0, 0x82),SCE(0x006c, 1, 0x42), -SCE(0x104c7, 0, 0x82),SCE(0x104ef, 1, 0x42),SCE(0x16e5a, 0, 0x82),SCE(0x16e7a, 1, 0x42), -SCE(0x0222, 0, 0x82),SCE(0x0223, 1, 0x42),SCE(0x0490, 0, 0x82),SCE(0x0491, 1, 0x42), -SCE(0x2cf2, 0, 0x82),SCE(0x2cf3, 1, 0x42),SCE(0x10595, 0, 0x82),SCE(0x105bc, 1, 0x42), -SCE(0x053d, 0, 0x82),SCE(0x056d, 1, 0x42),SCE(0x0388, 0, 0x82),SCE(0x03ad, 1, 0x42), -SCE(0x0549, 0, 0x82),SCE(0x0579, 1, 0x42),SCE(0x13e2, 0, 0x82),SCE(0xabb2, 1, 0x42), -SCE(0x16e4a, 0, 0x82),SCE(0x16e6a, 1, 0x42),SCE(0x1efc, 0, 0x82),SCE(0x1efd, 1, 0x42), -SCE(0x1f90, 0, 0x42),SCE(0x1f98, 1, 0x2),SCE(0x04d6, 0, 0x82),SCE(0x04d7, 1, 0x42), -SCE(0xa7b8, 0, 0x82),SCE(0xa7b9, 1, 0x42),SCE(0x0414, 0, 0x83),SCE(0x0434, 1, 0x43), -SCE(0x1c81, 2, 0x43),SCE(0x10cad, 0, 0x82),SCE(0x10ced, 1, 0x42),SCE(0x10f7, 0, 0x42), -SCE(0x1cb7, 1, 0x82),SCE(0x16e55, 0, 0x82),SCE(0x16e75, 1, 0x42),SCE(0xa728, 0, 0x82), -SCE(0xa729, 1, 0x42),SCE(0x1e00, 0, 0x82),SCE(0x1e01, 1, 0x42),SCE(0x0232, 0, 0x82), -SCE(0x0233, 1, 0x42),SCE(0x10a5, 0, 0x82),SCE(0x2d05, 1, 0x42),SCE(0x1f15, 0, 0x42), -SCE(0x1f1d, 1, 0x82),SCE(0x03a9, 0, 0x83),SCE(0x03c9, 1, 0x43),SCE(0x2126, 2, 0x83), -SCE(0x013b, 0, 0x82),SCE(0x013c, 1, 0x42),SCE(0x0408, 0, 0x82),SCE(0x0458, 1, 0x42), -SCE(0x00dc, 0, 0x82),SCE(0x00fc, 1, 0x42),SCE(0x1ebe, 0, 0x82),SCE(0x1ebf, 1, 0x42), -SCE(0x2c18, 0, 0x82),SCE(0x2c48, 1, 0x42),SCE(0xa7a8, 0, 0x82),SCE(0xa7a9, 1, 0x42), -SCE(0x216b, 0, 0x82),SCE(0x217b, 1, 0x42),SCE(0x2c10, 0, 0x82),SCE(0x2c40, 1, 0x42), -SCE(0x2cde, 0, 0x82),SCE(0x2cdf, 1, 0x42),SCE(0x029e, 0, 0x42),SCE(0xa7b0, 1, 0x82), -SCE(0x00d4, 0, 0x82),SCE(0x00f4, 1, 0x42),SCE(0x10ef, 0, 0x42),SCE(0x1caf, 1, 0x82), -SCE(0x0551, 0, 0x82),SCE(0x0581, 1, 0x42),SCE(0x13da, 0, 0x82),SCE(0xabaa, 1, 0x42), -SCE(0x0535, 0, 0x82),SCE(0x0565, 1, 0x42),SCE(0x10c9d, 0, 0x82),SCE(0x10cdd, 1, 0x42), -SCE(0x24c6, 0, 0x82),SCE(0x24e0, 1, 0x42),SCE(0x0410, 0, 0x82),SCE(0x0430, 1, 0x42), -SCE(0x1eb6, 0, 0x82),SCE(0x1eb7, 1, 0x42),SCE(0x10416, 0, 0x82),SCE(0x1043e, 1, 0x42), -SCE(0x16e42, 0, 0x82),SCE(0x16e62, 1, 0x42),SCE(0x0164, 0, 0x82),SCE(0x0165, 1, 0x42), -SCE(0x2ca0, 0, 0x82),SCE(0x2ca1, 1, 0x42),SCE(0x1e2e, 0, 0x82),SCE(0x1e2f, 1, 0x42), -SCE(0x10c95, 0, 0x82),SCE(0x10cd5, 1, 0x42),SCE(0x0498, 0, 0x82),SCE(0x0499, 1, 0x42), -SCE(0x010a, 0, 0x82),SCE(0x010b, 1, 0x42),SCE(0x118aa, 0, 0x82),SCE(0x118ca, 1, 0x42), -SCE(0x1e88, 0, 0x82),SCE(0x1e89, 1, 0x42),SCE(0x0528, 0, 0x82),SCE(0x0529, 1, 0x42), -SCE(0x13d7, 0, 0x82),SCE(0xaba7, 1, 0x42),SCE(0xa65a, 0, 0x82),SCE(0xa65b, 1, 0x42), -SCE(0x022a, 0, 0x82),SCE(0x022b, 1, 0x42),SCE(0x1fa5, 0, 0x42),SCE(0x1fad, 1, 0x2), -SCE(0x104b3, 0, 0x82),SCE(0x104db, 1, 0x42),SCE(0x1e90c, 0, 0x82),SCE(0x1e92e, 1, 0x42), -SCE(0x24bb, 0, 0x82),SCE(0x24d5, 1, 0x42),SCE(0x01f4, 0, 0x82),SCE(0x01f5, 1, 0x42), -SCE(0xa690, 0, 0x82),SCE(0xa691, 1, 0x42),SCE(0xff29, 0, 0x82),SCE(0xff49, 1, 0x42), -SCE(0x2c75, 0, 0x82),SCE(0x2c76, 1, 0x42),SCE(0x2cb8, 0, 0x82),SCE(0x2cb9, 1, 0x42), -SCE(0x10401, 0, 0x82),SCE(0x10429, 1, 0x42),SCE(0x2c0d, 0, 0x82),SCE(0x2c3d, 1, 0x42), -SCE(0x104d0, 0, 0x82),SCE(0x104f8, 1, 0x42),SCE(0x1e913, 0, 0x82),SCE(0x1e935, 1, 0x42), -SCE(0x01af, 0, 0x82),SCE(0x01b0, 1, 0x42),SCE(0xa7c7, 0, 0x82),SCE(0xa7c8, 1, 0x42), -SCE(0x13bf, 0, 0x82),SCE(0xab8f, 1, 0x42),SCE(0x10402, 0, 0x82),SCE(0x1042a, 1, 0x42), -SCE(0x10ea, 0, 0x42),SCE(0x1caa, 1, 0x82),SCE(0x104bf, 0, 0x82),SCE(0x104e7, 1, 0x42), -SCE(0x1058d, 0, 0x82),SCE(0x105b4, 1, 0x42),SCE(0x2164, 0, 0x82),SCE(0x2174, 1, 0x42), -SCE(0x018e, 0, 0x82),SCE(0x01dd, 1, 0x42),SCE(0x01d3, 0, 0x82),SCE(0x01d4, 1, 0x42), -SCE(0x1f10, 0, 0x42),SCE(0x1f18, 1, 0x82),SCE(0x1f57, 0, 0x42),SCE(0x1f5f, 1, 0x82), -SCE(0x1ed2, 0, 0x82),SCE(0x1ed3, 1, 0x42),SCE(0xff2a, 0, 0x82),SCE(0xff4a, 1, 0x42), -SCE(0x1e04, 0, 0x82),SCE(0x1e05, 1, 0x42),SCE(0x04ee, 0, 0x82),SCE(0x04ef, 1, 0x42), -SCE(0x2c94, 0, 0x82),SCE(0x2c95, 1, 0x42),SCE(0x00c0, 0, 0x82),SCE(0x00e0, 1, 0x42), -SCE(0x13db, 0, 0x82),SCE(0xabab, 1, 0x42),SCE(0x01b2, 0, 0x82),SCE(0x028b, 1, 0x42), -SCE(0x10426, 0, 0x82),SCE(0x1044e, 1, 0x42),SCE(0xa662, 0, 0x82),SCE(0xa663, 1, 0x42), -SCE(0x0054, 0, 0x82),SCE(0x0074, 1, 0x42),SCE(0x0556, 0, 0x82),SCE(0x0586, 1, 0x42), -SCE(0x042a, 0, 0x83),SCE(0x044a, 1, 0x43),SCE(0x1c86, 2, 0x43),SCE(0x10422, 0, 0x82), -SCE(0x1044a, 1, 0x42),SCE(0x1f36, 0, 0x42),SCE(0x1f3e, 1, 0x82),SCE(0xa794, 0, 0x42), -SCE(0xa7c4, 1, 0x82),SCE(0x04cd, 0, 0x82),SCE(0x04ce, 1, 0x42),SCE(0x104bb, 0, 0x82), -SCE(0x104e3, 1, 0x42),SCE(0x023b, 0, 0x82),SCE(0x023c, 1, 0x42),SCE(0x01cf, 0, 0x82), -SCE(0x01d0, 1, 0x42),SCE(0x050c, 0, 0x82),SCE(0x050d, 1, 0x42),SCE(0xa646, 0, 0x82), -SCE(0xa647, 1, 0x42),SCE(0x1e46, 0, 0x82),SCE(0x1e47, 1, 0x42),SCE(0x10ca6, 0, 0x82), -SCE(0x10ce6, 1, 0x42),SCE(0xa779, 0, 0x82),SCE(0xa77a, 1, 0x42),SCE(0xff36, 0, 0x82), -SCE(0xff56, 1, 0x42),SCE(0x118a2, 0, 0x82),SCE(0x118c2, 1, 0x42),SCE(0x04ea, 0, 0x82), -SCE(0x04eb, 1, 0x42),SCE(0x041d, 0, 0x82),SCE(0x043d, 1, 0x42),SCE(0x16e52, 0, 0x82), -SCE(0x16e72, 1, 0x42),SCE(0xa688, 0, 0x82),SCE(0xa689, 1, 0x42),SCE(0x1eb2, 0, 0x82), -SCE(0x1eb3, 1, 0x42),SCE(0x2160, 0, 0x82),SCE(0x2170, 1, 0x42),SCE(0x1ed6, 0, 0x82), -SCE(0x1ed7, 1, 0x42),SCE(0x24c3, 0, 0x82),SCE(0x24dd, 1, 0x42),SCE(0x16e5e, 0, 0x82), -SCE(0x16e7e, 1, 0x42),SCE(0x04ac, 0, 0x82),SCE(0x04ad, 1, 0x42),SCE(0x1e910, 0, 0x82), -SCE(0x1e932, 1, 0x42),SCE(0x023e, 0, 0x82),SCE(0x2c66, 1, 0x42),SCE(0x2cb4, 0, 0x82), -SCE(0x2cb5, 1, 0x42),SCE(0xff2d, 0, 0x82),SCE(0xff4d, 1, 0x42),SCE(0x014c, 0, 0x82), -SCE(0x014d, 1, 0x42),SCE(0x1e22, 0, 0x82),SCE(0x1e23, 1, 0x42),SCE(0x13bb, 0, 0x82), -SCE(0xab8b, 1, 0x42),SCE(0x0143, 0, 0x82),SCE(0x0144, 1, 0x42),SCE(0x10581, 0, 0x82), -SCE(0x105a8, 1, 0x42),SCE(0x0170, 0, 0x82),SCE(0x0171, 1, 0x42),SCE(0x1e94, 0, 0x82), -SCE(0x1e95, 1, 0x42),SCE(0x2c28, 0, 0x82),SCE(0x2c58, 1, 0x42),SCE(0x1040e, 0, 0x82), -SCE(0x10436, 1, 0x42),SCE(0x104b2, 0, 0x82),SCE(0x104da, 1, 0x42),SCE(0xa798, 0, 0x82), -SCE(0xa799, 1, 0x42),SCE(0x13b8, 0, 0x82),SCE(0xab88, 1, 0x42),SCE(0x1e70, 0, 0x82), -SCE(0x1e71, 1, 0x42),SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44),SCE(0x1c84, 2, 0x44), -SCE(0x1c85, 3, 0x44),SCE(0x10c85, 0, 0x82),SCE(0x10cc5, 1, 0x42),SCE(0x1eae, 0, 0x82), -SCE(0x1eaf, 1, 0x42),SCE(0x0122, 0, 0x82),SCE(0x0123, 1, 0x42),SCE(0x10c8c, 0, 0x82), -SCE(0x10ccc, 1, 0x42),SCE(0x10405, 0, 0x82),SCE(0x1042d, 1, 0x42),SCE(0x0420, 0, 0x82), -SCE(0x0440, 1, 0x42),SCE(0x01ae, 0, 0x82),SCE(0x0288, 1, 0x42),SCE(0x021a, 0, 0x82), -SCE(0x021b, 1, 0x42),SCE(0x038c, 0, 0x82),SCE(0x03cc, 1, 0x42),SCE(0x1f95, 0, 0x42), -SCE(0x1f9d, 1, 0x2),SCE(0x0345, 0, 0x44),SCE(0x0399, 1, 0x84),SCE(0x03b9, 2, 0x44), -SCE(0x1fbe, 3, 0x44),SCE(0x018a, 0, 0x82),SCE(0x0257, 1, 0x42),SCE(0x2c90, 0, 0x82), -SCE(0x2c91, 1, 0x42),SCE(0x10b1, 0, 0x82),SCE(0x2d11, 1, 0x42),SCE(0x011e, 0, 0x82), -SCE(0x011f, 1, 0x42),SCE(0x1e08, 0, 0x82),SCE(0x1e09, 1, 0x42),SCE(0xa7c0, 0, 0x82), -SCE(0xa7c1, 1, 0x42),SCE(0x13e7, 0, 0x82),SCE(0xabb7, 1, 0x42),SCE(0x10580, 0, 0x82), -SCE(0x105a7, 1, 0x42),SCE(0x041c, 0, 0x82),SCE(0x043c, 1, 0x42),SCE(0xfb05, 0, 0x42), -SCE(0xfb06, 1, 0x42),SCE(0xa7a4, 0, 0x82),SCE(0xa7a5, 1, 0x42),SCE(0x1e74, 0, 0x82), -SCE(0x1e75, 1, 0x42),SCE(0x2c14, 0, 0x82),SCE(0x2c44, 1, 0x42),SCE(0x1e90d, 0, 0x82), -SCE(0x1e92f, 1, 0x42),SCE(0x13a5, 0, 0x82),SCE(0xab75, 1, 0x42),SCE(0x10f3, 0, 0x42), -SCE(0x1cb3, 1, 0x82),SCE(0x24ba, 0, 0x82),SCE(0x24d4, 1, 0x42),SCE(0x013f, 0, 0x82), -SCE(0x0140, 1, 0x42),SCE(0x039d, 0, 0x82),SCE(0x03bd, 1, 0x42),SCE(0x2ce2, 0, 0x82), -SCE(0x2ce3, 1, 0x42),SCE(0x10a1, 0, 0x82),SCE(0x2d01, 1, 0x42),SCE(0x0508, 0, 0x82), -SCE(0x0509, 1, 0x42),SCE(0x004d, 0, 0x82),SCE(0x006d, 1, 0x42),SCE(0x0389, 0, 0x82), -SCE(0x03ae, 1, 0x42),SCE(0x048c, 0, 0x82),SCE(0x048d, 1, 0x42),SCE(0x2c04, 0, 0x82), -SCE(0x2c34, 1, 0x42),SCE(0x216f, 0, 0x82),SCE(0x217f, 1, 0x42),SCE(0x04b0, 0, 0x82), -SCE(0x04b1, 1, 0x42),SCE(0x2cd2, 0, 0x82),SCE(0x2cd3, 1, 0x42),SCE(0xa734, 0, 0x82), -SCE(0xa735, 1, 0x42),SCE(0x10584, 0, 0x82),SCE(0x105ab, 1, 0x42),SCE(0x0050, 0, 0x82), -SCE(0x0070, 1, 0x42),SCE(0x0160, 0, 0x82),SCE(0x0161, 1, 0x42),SCE(0x10ca9, 0, 0x82), -SCE(0x10ce9, 1, 0x42),SCE(0x1e32, 0, 0x82),SCE(0x1e33, 1, 0x42),SCE(0x0200, 0, 0x82), -SCE(0x0201, 1, 0x42),SCE(0x118ab, 0, 0x82),SCE(0x118cb, 1, 0x42),SCE(0xa786, 0, 0x82), -SCE(0xa787, 1, 0x42),SCE(0x118bb, 0, 0x82),SCE(0x118db, 1, 0x42),SCE(0x118ae, 0, 0x82), -SCE(0x118ce, 1, 0x42),SCE(0x021e, 0, 0x82),SCE(0x021f, 1, 0x42),SCE(0x03aa, 0, 0x82), -SCE(0x03ca, 1, 0x42),SCE(0x10c2, 0, 0x82),SCE(0x2d22, 1, 0x42),SCE(0x13c4, 0, 0x82), -SCE(0xab94, 1, 0x42),SCE(0x0539, 0, 0x82),SCE(0x0569, 1, 0x42),SCE(0xa74a, 0, 0x82), -SCE(0xa74b, 1, 0x42),SCE(0x00c3, 0, 0x82),SCE(0x00e3, 1, 0x42),SCE(0x046e, 0, 0x82), -SCE(0x046f, 1, 0x42),SCE(0x054d, 0, 0x82),SCE(0x057d, 1, 0x42),SCE(0x10e3, 0, 0x42), -SCE(0x1ca3, 1, 0x82),SCE(0x03de, 0, 0x82),SCE(0x03df, 1, 0x42),SCE(0x24ca, 0, 0x82), -SCE(0x24e4, 1, 0x42),SCE(0x0345, 0, 0x44),SCE(0x0399, 1, 0x84),SCE(0x03b9, 2, 0x44), -SCE(0x1fbe, 3, 0x44),SCE(0x10c99, 0, 0x82),SCE(0x10cd9, 1, 0x42),SCE(0xa75a, 0, 0x82), -SCE(0xa75b, 1, 0x42),SCE(0x0419, 0, 0x82),SCE(0x0439, 1, 0x42),SCE(0x2c09, 0, 0x82), -SCE(0x2c39, 1, 0x42),SCE(0x037d, 0, 0x42),SCE(0x03ff, 1, 0x82),SCE(0x1f26, 0, 0x42), -SCE(0x1f2e, 1, 0x82),SCE(0x118b2, 0, 0x82),SCE(0x118d2, 1, 0x42),SCE(0x2183, 0, 0x82), -SCE(0x2184, 1, 0x42),SCE(0x2c23, 0, 0x82),SCE(0x2c53, 1, 0x42),SCE(0x0132, 0, 0x82), -SCE(0x0133, 1, 0x42),SCE(0x1e56, 0, 0x82),SCE(0x1e57, 1, 0x42),SCE(0x10ae, 0, 0x82), -SCE(0x2d0e, 1, 0x42),SCE(0xa740, 0, 0x82),SCE(0xa741, 1, 0x42),SCE(0x00dd, 0, 0x82), -SCE(0x00fd, 1, 0x42),SCE(0x10e6, 0, 0x42),SCE(0x1ca6, 1, 0x82),SCE(0x1e60, 0, 0x83), -SCE(0x1e61, 1, 0x43),SCE(0x1e9b, 2, 0x43),SCE(0x0478, 0, 0x82),SCE(0x0479, 1, 0x42), -SCE(0x022e, 0, 0x82),SCE(0x022f, 1, 0x42),SCE(0xa694, 0, 0x82),SCE(0xa695, 1, 0x42), -SCE(0x052c, 0, 0x82),SCE(0x052d, 1, 0x42),SCE(0x10570, 0, 0x82),SCE(0x10597, 1, 0x42), -SCE(0xa666, 0, 0x82),SCE(0xa667, 1, 0x42),SCE(0x13a8, 0, 0x82),SCE(0xab78, 1, 0x42), -SCE(0x10c96, 0, 0x82),SCE(0x10cd6, 1, 0x42),SCE(0x020a, 0, 0x82),SCE(0x020b, 1, 0x42), -SCE(0x24bf, 0, 0x82),SCE(0x24d9, 1, 0x42),SCE(0x13cb, 0, 0x82),SCE(0xab9b, 1, 0x42), -SCE(0x10c9c, 0, 0x82),SCE(0x10cdc, 1, 0x42),SCE(0x041e, 0, 0x83),SCE(0x043e, 1, 0x43), -SCE(0x1c82, 2, 0x43),SCE(0x1e84, 0, 0x82),SCE(0x1e85, 1, 0x42),SCE(0x1ef0, 0, 0x82), -SCE(0x1ef1, 1, 0x42),SCE(0x16e59, 0, 0x82),SCE(0x16e79, 1, 0x42),SCE(0x2ca4, 0, 0x82), -SCE(0x2ca5, 1, 0x42),SCE(0xa724, 0, 0x82),SCE(0xa725, 1, 0x42),SCE(0x049c, 0, 0x82), -SCE(0x049d, 1, 0x42),SCE(0x010e, 0, 0x82),SCE(0x010f, 1, 0x42),SCE(0x104d3, 0, 0x82), -SCE(0x104fb, 1, 0x42),SCE(0x1e903, 0, 0x82),SCE(0x1e925, 1, 0x42),SCE(0x0191, 0, 0x82), -SCE(0x0192, 1, 0x42),SCE(0x13de, 0, 0x82),SCE(0xabae, 1, 0x42),SCE(0x03a0, 0, 0x83), -SCE(0x03c0, 1, 0x43),SCE(0x03d6, 2, 0x43),SCE(0x13ad, 0, 0x82),SCE(0xab7d, 1, 0x42), -SCE(0x0206, 0, 0x82),SCE(0x0207, 1, 0x42),SCE(0x1f45, 0, 0x42),SCE(0x1f4d, 1, 0x82), -SCE(0x03ea, 0, 0x82),SCE(0x03eb, 1, 0x42),SCE(0x10bb, 0, 0x82),SCE(0x2d1b, 1, 0x42), -SCE(0x0474, 0, 0x82),SCE(0x0475, 1, 0x42),SCE(0xff38, 0, 0x82),SCE(0xff58, 1, 0x42), -SCE(0x04fe, 0, 0x82),SCE(0x04ff, 1, 0x42),SCE(0x2c84, 0, 0x82),SCE(0x2c85, 1, 0x42), -SCE(0x10413, 0, 0x82),SCE(0x1043b, 1, 0x42),SCE(0x2c1f, 0, 0x82),SCE(0x2c4f, 1, 0x42), -SCE(0x1e5c, 0, 0x82),SCE(0x1e5d, 1, 0x42),SCE(0x1ee4, 0, 0x82),SCE(0x1ee5, 1, 0x42), -SCE(0x2cc8, 0, 0x82),SCE(0x2cc9, 1, 0x42),SCE(0x104ce, 0, 0x82),SCE(0x104f6, 1, 0x42), -SCE(0x04ba, 0, 0x82),SCE(0x04bb, 1, 0x42),SCE(0x1e905, 0, 0x82),SCE(0x1e927, 1, 0x42), -SCE(0x00d1, 0, 0x82),SCE(0x00f1, 1, 0x42),SCE(0x0472, 0, 0x82),SCE(0x0473, 1, 0x42), -SCE(0x118b6, 0, 0x82),SCE(0x118d6, 1, 0x42),SCE(0x1f78, 0, 0x42),SCE(0x1ff8, 1, 0x82), -SCE(0x0043, 0, 0x82),SCE(0x0063, 1, 0x42),SCE(0x1ea2, 0, 0x82),SCE(0x1ea3, 1, 0x42), -SCE(0x1f24, 0, 0x42),SCE(0x1f2c, 1, 0x82),SCE(0x019d, 0, 0x82),SCE(0x0272, 1, 0x42), -SCE(0x04b6, 0, 0x82),SCE(0x04b7, 1, 0x42),SCE(0x00df, 0, 0x42),SCE(0x1e9e, 1, 0x82), -SCE(0x1f87, 0, 0x42),SCE(0x1f8f, 1, 0x2),SCE(0x1e14, 0, 0x82),SCE(0x1e15, 1, 0x42), -SCE(0x1ee6, 0, 0x82),SCE(0x1ee7, 1, 0x42),SCE(0x040b, 0, 0x82),SCE(0x045b, 1, 0x42), -SCE(0x0409, 0, 0x82),SCE(0x0459, 1, 0x42),SCE(0x1057d, 0, 0x82),SCE(0x105a4, 1, 0x42), -SCE(0x03a8, 0, 0x82),SCE(0x03c8, 1, 0x42),SCE(0x1e5a, 0, 0x82),SCE(0x1e5b, 1, 0x42), -SCE(0x1057f, 0, 0x82),SCE(0x105a6, 1, 0x42),SCE(0x0544, 0, 0x82),SCE(0x0574, 1, 0x42), -SCE(0x10fe, 0, 0x42),SCE(0x1cbe, 1, 0x82),SCE(0x1e12, 0, 0x82),SCE(0x1e13, 1, 0x42), -SCE(0x10b9, 0, 0x82),SCE(0x2d19, 1, 0x42),SCE(0x0047, 0, 0x82),SCE(0x0067, 1, 0x42), -SCE(0x04fc, 0, 0x82),SCE(0x04fd, 1, 0x42),SCE(0x10c92, 0, 0x82),SCE(0x10cd2, 1, 0x42), -SCE(0x2c86, 0, 0x82),SCE(0x2c87, 1, 0x42),SCE(0x1e1a, 0, 0x82),SCE(0x1e1b, 1, 0x42), -SCE(0x10c90, 0, 0x82),SCE(0x10cd0, 1, 0x42),SCE(0x10bf, 0, 0x82),SCE(0x2d1f, 1, 0x42), -SCE(0x13ca, 0, 0x82),SCE(0xab9a, 1, 0x42),SCE(0x16e49, 0, 0x82),SCE(0x16e69, 1, 0x42), -SCE(0x0041, 0, 0x82),SCE(0x0061, 1, 0x42),SCE(0x01bc, 0, 0x82),SCE(0x01bd, 1, 0x42), -SCE(0x1eea, 0, 0x82),SCE(0x1eeb, 1, 0x42),SCE(0x0502, 0, 0x82),SCE(0x0503, 1, 0x42), -SCE(0x0248, 0, 0x82),SCE(0x0249, 1, 0x42),SCE(0x10df, 0, 0x42),SCE(0x1c9f, 1, 0x82), -SCE(0x01c4, 0, 0x83),SCE(0x01c5, 1, 0x3),SCE(0x01c6, 2, 0x43),SCE(0x0546, 0, 0x82), -SCE(0x0576, 1, 0x42),SCE(0x13ef, 0, 0x82),SCE(0xabbf, 1, 0x42),SCE(0x2ccc, 0, 0x82), -SCE(0x2ccd, 1, 0x42),SCE(0x10d7, 0, 0x42),SCE(0x1c97, 1, 0x82),SCE(0x13a7, 0, 0x82), -SCE(0xab77, 1, 0x42),SCE(0x047a, 0, 0x82),SCE(0x047b, 1, 0x42),SCE(0x0134, 0, 0x82), -SCE(0x0135, 1, 0x42),SCE(0x042a, 0, 0x83),SCE(0x044a, 1, 0x43),SCE(0x1c86, 2, 0x43), -SCE(0x2c19, 0, 0x82),SCE(0x2c49, 1, 0x42),SCE(0x0204, 0, 0x82),SCE(0x0205, 1, 0x42), -SCE(0x025c, 0, 0x42),SCE(0xa7ab, 1, 0x82),SCE(0x24cf, 0, 0x82),SCE(0x24e9, 1, 0x42), -SCE(0x1e54, 0, 0x82),SCE(0x1e55, 1, 0x42),SCE(0x10579, 0, 0x82),SCE(0x105a0, 1, 0x42), -SCE(0x054a, 0, 0x82),SCE(0x057a, 1, 0x42),SCE(0xa684, 0, 0x82),SCE(0xa685, 1, 0x42), -SCE(0xff27, 0, 0x82),SCE(0xff47, 1, 0x42),SCE(0x1f05, 0, 0x42),SCE(0x1f0d, 1, 0x82), -SCE(0x2132, 0, 0x82),SCE(0x214e, 1, 0x42),SCE(0x024c, 0, 0x82),SCE(0x024d, 1, 0x42), -SCE(0x13b5, 0, 0x82),SCE(0xab85, 1, 0x42),SCE(0x2cc6, 0, 0x82),SCE(0x2cc7, 1, 0x42), -SCE(0x10408, 0, 0x82),SCE(0x10430, 1, 0x42),SCE(0x2c1d, 0, 0x82),SCE(0x2c4d, 1, 0x42), -SCE(0x023f, 0, 0x42),SCE(0x2c7e, 1, 0x82),SCE(0xa742, 0, 0x82),SCE(0xa743, 1, 0x42), -SCE(0x1e62, 0, 0x82),SCE(0x1e63, 1, 0x42),SCE(0x10ca8, 0, 0x82),SCE(0x10ce8, 1, 0x42), -SCE(0x00b5, 0, 0x43),SCE(0x039c, 1, 0x83),SCE(0x03bc, 2, 0x43),SCE(0x1f81, 0, 0x42), -SCE(0x1f89, 1, 0x2),SCE(0x10c9a, 0, 0x82),SCE(0x10cda, 1, 0x42),SCE(0x012e, 0, 0x82), -SCE(0x012f, 1, 0x42),SCE(0x0403, 0, 0x82),SCE(0x0453, 1, 0x42),SCE(0x01fe, 0, 0x82), -SCE(0x01ff, 1, 0x42),SCE(0x0345, 0, 0x44),SCE(0x0399, 1, 0x84),SCE(0x03b9, 2, 0x44), -SCE(0x1fbe, 3, 0x44),SCE(0x0174, 0, 0x82),SCE(0x0175, 1, 0x42),SCE(0x03cf, 0, 0x82), -SCE(0x03d7, 1, 0x42),SCE(0x24cd, 0, 0x82),SCE(0x24e7, 1, 0x42),SCE(0x1fb3, 0, 0x42), -SCE(0x1fbc, 1, 0x2),SCE(0x118ad, 0, 0x82),SCE(0x118cd, 1, 0x42),SCE(0xa744, 0, 0x82), -SCE(0xa745, 1, 0x42),SCE(0x00d9, 0, 0x82),SCE(0x00f9, 1, 0x42),SCE(0x1e0c, 0, 0x82), -SCE(0x1e0d, 1, 0x42),SCE(0x2c17, 0, 0x82),SCE(0x2c47, 1, 0x42),SCE(0x03e2, 0, 0x82), -SCE(0x03e3, 1, 0x42),SCE(0x026c, 0, 0x42),SCE(0xa7ad, 1, 0x82),SCE(0xa756, 0, 0x82), -SCE(0xa757, 1, 0x42),SCE(0x0405, 0, 0x82),SCE(0x0455, 1, 0x42),SCE(0x0197, 0, 0x82), -SCE(0x0268, 1, 0x42),SCE(0x1f60, 0, 0x42),SCE(0x1f68, 1, 0x82),SCE(0x1eec, 0, 0x82), -SCE(0x1eed, 1, 0x42),SCE(0x2c8c, 0, 0x82),SCE(0x2c8d, 1, 0x42),SCE(0x10f2, 0, 0x42), -SCE(0x1cb2, 1, 0x82),SCE(0x104b6, 0, 0x82),SCE(0x104de, 1, 0x42),SCE(0x1e91d, 0, 0x82), -SCE(0x1e93f, 1, 0x42),SCE(0x1040a, 0, 0x82),SCE(0x10432, 1, 0x42),SCE(0x13c6, 0, 0x82), -SCE(0xab96, 1, 0x42),SCE(0x16e41, 0, 0x82),SCE(0x16e61, 1, 0x42),SCE(0x0424, 0, 0x82), -SCE(0x0444, 1, 0x42),SCE(0x01a9, 0, 0x82),SCE(0x0283, 1, 0x42),SCE(0x039a, 0, 0x83), -SCE(0x03ba, 1, 0x43),SCE(0x03f0, 2, 0x43),SCE(0x10e5, 0, 0x42),SCE(0x1ca5, 1, 0x82), -SCE(0x104c8, 0, 0x82),SCE(0x104f0, 1, 0x42),SCE(0x10407, 0, 0x82),SCE(0x1042f, 1, 0x42), -SCE(0x13d0, 0, 0x82),SCE(0xaba0, 1, 0x42),SCE(0x1fa2, 0, 0x42),SCE(0x1faa, 1, 0x2), -SCE(0x046c, 0, 0x82),SCE(0x046d, 1, 0x42),SCE(0x10a0, 0, 0x82),SCE(0x2d00, 1, 0x42), -SCE(0xa782, 0, 0x82),SCE(0xa783, 1, 0x42),SCE(0x00c5, 0, 0x83),SCE(0x00e5, 1, 0x43), -SCE(0x212b, 2, 0x83),SCE(0x04b4, 0, 0x82),SCE(0x04b5, 1, 0x42),SCE(0x2cce, 0, 0x82), -SCE(0x2ccf, 1, 0x42),SCE(0xa73a, 0, 0x82),SCE(0xa73b, 1, 0x42),SCE(0xff21, 0, 0x82), -SCE(0xff41, 1, 0x42),SCE(0x104b9, 0, 0x82),SCE(0x104e1, 1, 0x42),SCE(0x1ea4, 0, 0x82), -SCE(0x1ea5, 1, 0x42),SCE(0x038f, 0, 0x82),SCE(0x03ce, 1, 0x42),SCE(0x24be, 0, 0x82), -SCE(0x24d8, 1, 0x42),SCE(0x03b0, 0, 0x42),SCE(0x1fe3, 1, 0x42),SCE(0x0049, 0, 0x82), -SCE(0x0069, 1, 0x42),SCE(0x1e91f, 0, 0x82),SCE(0x1e941, 1, 0x42),SCE(0x0246, 0, 0x82), -SCE(0x0247, 1, 0x42),SCE(0x1f73, 0, 0x42),SCE(0x1fc9, 1, 0x82),SCE(0x2c67, 0, 0x82), -SCE(0x2c68, 1, 0x42),SCE(0x2166, 0, 0x82),SCE(0x2176, 1, 0x42),SCE(0x0100, 0, 0x82), -SCE(0x0101, 1, 0x42),SCE(0x03e4, 0, 0x82),SCE(0x03e5, 1, 0x42),SCE(0x13d2, 0, 0x82), -SCE(0xaba2, 1, 0x42),SCE(0xa79e, 0, 0x82),SCE(0xa79f, 1, 0x42),SCE(0x1fa0, 0, 0x42), -SCE(0x1fa8, 1, 0x2),SCE(0x10cb1, 0, 0x82),SCE(0x10cf1, 1, 0x42),SCE(0x16e5d, 0, 0x82), -SCE(0x16e7d, 1, 0x42),SCE(0x10c1, 0, 0x82),SCE(0x2d21, 1, 0x42),SCE(0xa7f5, 0, 0x82), -SCE(0xa7f6, 1, 0x42),SCE(0x13be, 0, 0x82),SCE(0xab8e, 1, 0x42),SCE(0x042c, 0, 0x82), -SCE(0x044c, 1, 0x42),SCE(0x10dd, 0, 0x42),SCE(0x1c9d, 1, 0x82),SCE(0x1f93, 0, 0x42), -SCE(0x1f9b, 1, 0x2),SCE(0x024e, 0, 0x82),SCE(0x024f, 1, 0x42),SCE(0x04bc, 0, 0x82), -SCE(0x04bd, 1, 0x42),SCE(0x0176, 0, 0x82),SCE(0x0177, 1, 0x42),SCE(0x13ab, 0, 0x82), -SCE(0xab7b, 1, 0x42),SCE(0x13e1, 0, 0x82),SCE(0xabb1, 1, 0x42),SCE(0x0504, 0, 0x82), -SCE(0x0505, 1, 0x42),SCE(0x1f03, 0, 0x42),SCE(0x1f0b, 1, 0x82),SCE(0xa686, 0, 0x82), -SCE(0xa687, 1, 0x42),SCE(0x054c, 0, 0x82),SCE(0x057c, 1, 0x42),SCE(0x16e4f, 0, 0x82), -SCE(0x16e6f, 1, 0x42),SCE(0x10eb, 0, 0x42),SCE(0x1cab, 1, 0x82),SCE(0x13d9, 0, 0x82), -SCE(0xaba9, 1, 0x42),SCE(0x023a, 0, 0x82),SCE(0x2c65, 1, 0x42),SCE(0x04a8, 0, 0x82), -SCE(0x04a9, 1, 0x42),SCE(0x2cda, 0, 0x82),SCE(0x2cdb, 1, 0x42),SCE(0x041e, 0, 0x83), -SCE(0x043e, 1, 0x43),SCE(0x1c82, 2, 0x43),SCE(0x0394, 0, 0x82),SCE(0x03b4, 1, 0x42), -SCE(0x2c72, 0, 0x82),SCE(0x2c73, 1, 0x42),SCE(0x0510, 0, 0x82),SCE(0x0511, 1, 0x42), -SCE(0x1e26, 0, 0x82),SCE(0x1e27, 1, 0x42),SCE(0xa642, 0, 0x82),SCE(0xa643, 1, 0x42), -SCE(0x04c9, 0, 0x82),SCE(0x04ca, 1, 0x42),SCE(0x0147, 0, 0x82),SCE(0x0148, 1, 0x42), -SCE(0x1eb0, 0, 0x82),SCE(0x1eb1, 1, 0x42),SCE(0xa75e, 0, 0x82),SCE(0xa75f, 1, 0x42), -SCE(0x1058c, 0, 0x82),SCE(0x105b3, 1, 0x42),SCE(0xa73c, 0, 0x82),SCE(0xa73d, 1, 0x42), -SCE(0x104d1, 0, 0x82),SCE(0x104f9, 1, 0x42),SCE(0x104d2, 0, 0x82),SCE(0x104fa, 1, 0x42), -SCE(0x10590, 0, 0x82),SCE(0x105b7, 1, 0x42),SCE(0x0055, 0, 0x82),SCE(0x0075, 1, 0x42), -SCE(0x1f11, 0, 0x42),SCE(0x1f19, 1, 0x82),SCE(0x037b, 0, 0x42),SCE(0x03fd, 1, 0x82), -SCE(0x1f31, 0, 0x42),SCE(0x1f39, 1, 0x82),SCE(0x2cba, 0, 0x82),SCE(0x2cbb, 1, 0x42), -SCE(0x0552, 0, 0x82),SCE(0x0582, 1, 0x42),SCE(0xa68c, 0, 0x82),SCE(0xa68d, 1, 0x42), -SCE(0x1e6e, 0, 0x82),SCE(0x1e6f, 1, 0x42),SCE(0x2167, 0, 0x82),SCE(0x2177, 1, 0x42), -SCE(0x00de, 0, 0x82),SCE(0x00fe, 1, 0x42),SCE(0x0190, 0, 0x82),SCE(0x025b, 1, 0x42), -SCE(0x1ef8, 0, 0x82),SCE(0x1ef9, 1, 0x42),SCE(0x104b0, 0, 0x82),SCE(0x104d8, 1, 0x42), -SCE(0x10c8e, 0, 0x82),SCE(0x10cce, 1, 0x42),SCE(0x2c08, 0, 0x82),SCE(0x2c38, 1, 0x42), -SCE(0x016e, 0, 0x82),SCE(0x016f, 1, 0x42),SCE(0x16e5c, 0, 0x82),SCE(0x16e7c, 1, 0x42), -SCE(0x10cd, 0, 0x82),SCE(0x2d2d, 1, 0x42),SCE(0x1f7b, 0, 0x42),SCE(0x1feb, 1, 0x82), -SCE(0x1e90, 0, 0x82),SCE(0x1e91, 1, 0x42),SCE(0x13b3, 0, 0x82),SCE(0xab83, 1, 0x42), -SCE(0x01d1, 0, 0x82),SCE(0x01d2, 1, 0x42),SCE(0x1f53, 0, 0x42),SCE(0x1f5b, 1, 0x82), -SCE(0x0126, 0, 0x82),SCE(0x0127, 1, 0x42),SCE(0x1e48, 0, 0x82),SCE(0x1e49, 1, 0x42), -SCE(0x2c98, 0, 0x82),SCE(0x2c99, 1, 0x42),SCE(0x10400, 0, 0x82),SCE(0x10428, 1, 0x42), -SCE(0x10ca4, 0, 0x82),SCE(0x10ce4, 1, 0x42),SCE(0x118b9, 0, 0x82),SCE(0x118d9, 1, 0x42), -SCE(0x13b0, 0, 0x82),SCE(0xab80, 1, 0x42),SCE(0x1ed8, 0, 0x82),SCE(0x1ed9, 1, 0x42), -SCE(0x1f74, 0, 0x42),SCE(0x1fca, 1, 0x82),SCE(0x0422, 0, 0x84),SCE(0x0442, 1, 0x44), -SCE(0x1c84, 2, 0x44),SCE(0x1c85, 3, 0x44),SCE(0x1ef2, 0, 0x82),SCE(0x1ef3, 1, 0x42), -SCE(0x2161, 0, 0x82),SCE(0x2171, 1, 0x42),SCE(0x10420, 0, 0x82),SCE(0x10448, 1, 0x42), -SCE(0x01f1, 0, 0x83),SCE(0x01f2, 1, 0x3),SCE(0x01f3, 2, 0x43),SCE(0x01d7, 0, 0x82), -SCE(0x01d8, 1, 0x42),SCE(0xa68a, 0, 0x82),SCE(0xa68b, 1, 0x42),SCE(0x03f7, 0, 0x82), -SCE(0x03f8, 1, 0x42),SCE(0xff35, 0, 0x82),SCE(0xff55, 1, 0x42),SCE(0x03dc, 0, 0x82), -SCE(0x03dd, 1, 0x42),SCE(0x10c8d, 0, 0x82),SCE(0x10ccd, 1, 0x42),SCE(0x0418, 0, 0x82), -SCE(0x0438, 1, 0x42),SCE(0x0212, 0, 0x82),SCE(0x0213, 1, 0x42),SCE(0x04f0, 0, 0x82), -SCE(0x04f1, 1, 0x42),SCE(0x24c1, 0, 0x82),SCE(0x24db, 1, 0x42),SCE(0x050a, 0, 0x82), -SCE(0x050b, 1, 0x42),SCE(0x1e917, 0, 0x82),SCE(0x1e939, 1, 0x42),SCE(0xa644, 0, 0x82), -SCE(0xa645, 1, 0x42),SCE(0x0537, 0, 0x82),SCE(0x0567, 1, 0x42),SCE(0x10ac, 0, 0x82), -SCE(0x2d0c, 1, 0x42),SCE(0x10ad, 0, 0x82),SCE(0x2d0d, 1, 0x42),SCE(0x24c7, 0, 0x82), -SCE(0x24e1, 1, 0x42),SCE(0x0460, 0, 0x82),SCE(0x0461, 1, 0x42),SCE(0x2c2b, 0, 0x82), -SCE(0x2c5b, 1, 0x42),SCE(0x16e56, 0, 0x82),SCE(0x16e76, 1, 0x42),SCE(0x10c7, 0, 0x82), -SCE(0x2d27, 1, 0x42),SCE(0x10406, 0, 0x82),SCE(0x1042e, 1, 0x42),SCE(0x2cd4, 0, 0x82), -SCE(0x2cd5, 1, 0x42),SCE(0x10f1, 0, 0x42),SCE(0x1cb1, 1, 0x82),SCE(0x1f7a, 0, 0x42), -SCE(0x1fea, 1, 0x82),SCE(0x2c0b, 0, 0x82),SCE(0x2c3b, 1, 0x42),SCE(0xff34, 0, 0x82), -SCE(0xff54, 1, 0x42),SCE(0x0417, 0, 0x82),SCE(0x0437, 1, 0x42),SCE(0x118ba, 0, 0x82), -SCE(0x118da, 1, 0x42),SCE(0x01f1, 0, 0x83),SCE(0x01f2, 1, 0x3),SCE(0x01f3, 2, 0x43), -SCE(0x0395, 0, 0x83),SCE(0x03b5, 1, 0x43),SCE(0x03f5, 2, 0x43),SCE(0x01b7, 0, 0x82), -SCE(0x0292, 1, 0x42),SCE(0x018f, 0, 0x82),SCE(0x0259, 1, 0x42),SCE(0x0538, 0, 0x82), -SCE(0x0568, 1, 0x42),SCE(0xa66a, 0, 0x82),SCE(0xa66b, 1, 0x42),SCE(0x1f32, 0, 0x42), -SCE(0x1f3a, 1, 0x82),SCE(0x10421, 0, 0x82),SCE(0x10449, 1, 0x42),SCE(0x052a, 0, 0x82), -SCE(0x052b, 1, 0x42),SCE(0x0425, 0, 0x82),SCE(0x0445, 1, 0x42),SCE(0xa784, 0, 0x82), -SCE(0xa785, 1, 0x42),SCE(0x004f, 0, 0x82),SCE(0x006f, 1, 0x42),SCE(0xa664, 0, 0x82), -SCE(0xa665, 1, 0x42),SCE(0x104b1, 0, 0x82),SCE(0x104d9, 1, 0x42),SCE(0x00c4, 0, 0x82), -SCE(0x00e4, 1, 0x42),SCE(0x10ca5, 0, 0x82),SCE(0x10ce5, 1, 0x42),SCE(0x1eaa, 0, 0x82), -SCE(0x1eab, 1, 0x42),SCE(0x13d8, 0, 0x82),SCE(0xaba8, 1, 0x42),SCE(0x10e4, 0, 0x42), -SCE(0x1ca4, 1, 0x82),SCE(0x00d8, 0, 0x82),SCE(0x00f8, 1, 0x42),SCE(0x01ca, 0, 0x83), -SCE(0x01cb, 1, 0x3),SCE(0x01cc, 2, 0x43),SCE(0x10d1, 0, 0x42),SCE(0x1c91, 1, 0x82), -SCE(0x10575, 0, 0x82),SCE(0x1059c, 1, 0x42),SCE(0x216c, 0, 0x82),SCE(0x217c, 1, 0x42), -SCE(0x2c02, 0, 0x82),SCE(0x2c32, 1, 0x42),SCE(0x16e5b, 0, 0x82),SCE(0x16e7b, 1, 0x42), -SCE(0xa7d8, 0, 0x82),SCE(0xa7d9, 1, 0x42),SCE(0xff22, 0, 0x82),SCE(0xff42, 1, 0x42), -SCE(0x0404, 0, 0x82),SCE(0x0454, 1, 0x42),SCE(0x10b3, 0, 0x82),SCE(0x2d13, 1, 0x42), -SCE(0x1eca, 0, 0x82),SCE(0x1ecb, 1, 0x42),SCE(0x10409, 0, 0x82),SCE(0x10431, 1, 0x42), -SCE(0x1e918, 0, 0x82),SCE(0x1e93a, 1, 0x42),SCE(0x04f6, 0, 0x82),SCE(0x04f7, 1, 0x42), -SCE(0x2cc0, 0, 0x82),SCE(0x2cc1, 1, 0x42),SCE(0x1e20, 0, 0x82),SCE(0x1e21, 1, 0x42), -SCE(0x104b7, 0, 0x82),SCE(0x104df, 1, 0x42),SCE(0x039b, 0, 0x82),SCE(0x03bb, 1, 0x42), -SCE(0x0196, 0, 0x82),SCE(0x0269, 1, 0x42),SCE(0x2c25, 0, 0x82),SCE(0x2c55, 1, 0x42), -SCE(0xa790, 0, 0x82),SCE(0xa791, 1, 0x42),SCE(0xa764, 0, 0x82),SCE(0xa765, 1, 0x42), -SCE(0x020c, 0, 0x82),SCE(0x020d, 1, 0x42),SCE(0x1f94, 0, 0x42),SCE(0x1f9c, 1, 0x2), -SCE(0x118b0, 0, 0x82),SCE(0x118d0, 1, 0x42),SCE(0x0182, 0, 0x82),SCE(0x0183, 1, 0x42), -SCE(0x2cac, 0, 0x82),SCE(0x2cad, 1, 0x42),SCE(0x1f80, 0, 0x42),SCE(0x1f88, 1, 0x2), -SCE(0x24cc, 0, 0x82),SCE(0x24e6, 1, 0x42),SCE(0x0251, 0, 0x42),SCE(0x2c6d, 1, 0x82), -SCE(0x0480, 0, 0x82),SCE(0x0481, 1, 0x42),SCE(0x13e6, 0, 0x82),SCE(0xabb6, 1, 0x42), -SCE(0x24b8, 0, 0x82),SCE(0x24d2, 1, 0x42),SCE(0x054b, 0, 0x82),SCE(0x057b, 1, 0x42), -SCE(0x13aa, 0, 0x82),SCE(0xab7a, 1, 0x42),SCE(0x004b, 0, 0x83),SCE(0x006b, 1, 0x43), -SCE(0x212a, 2, 0x83),SCE(0x0261, 0, 0x42),SCE(0xa7ac, 1, 0x82),SCE(0x0141, 0, 0x82), -SCE(0x0142, 1, 0x42),SCE(0x039a, 0, 0x83),SCE(0x03ba, 1, 0x43),SCE(0x03f0, 2, 0x43), -SCE(0x10f8, 0, 0x42),SCE(0x1cb8, 1, 0x82),SCE(0x104c4, 0, 0x82),SCE(0x104ec, 1, 0x42), -SCE(0x0189, 0, 0x82),SCE(0x0256, 1, 0x42),SCE(0x10de, 0, 0x42),SCE(0x1c9e, 1, 0x82), -SCE(0x1e68, 0, 0x82),SCE(0x1e69, 1, 0x42),SCE(0x104ba, 0, 0x82),SCE(0x104e2, 1, 0x42), -SCE(0x1f04, 0, 0x42),SCE(0x1f0c, 1, 0x82),SCE(0x10578, 0, 0x82),SCE(0x1059f, 1, 0x42), -SCE(0x0411, 0, 0x82),SCE(0x0431, 1, 0x42),SCE(0x10582, 0, 0x82),SCE(0x105a9, 1, 0x42), -SCE(0x0466, 0, 0x82),SCE(0x0467, 1, 0x42),SCE(0xa736, 0, 0x82),SCE(0xa737, 1, 0x42), -SCE(0x00cb, 0, 0x82),SCE(0x00eb, 1, 0x42),SCE(0x10c0, 0, 0x82),SCE(0x2d20, 1, 0x42), -SCE(0x10427, 0, 0x82),SCE(0x1044f, 1, 0x42),SCE(0x01de, 0, 0x82),SCE(0x01df, 1, 0x42), -SCE(0x2c92, 0, 0x82),SCE(0x2c93, 1, 0x42),SCE(0x0106, 0, 0x82),SCE(0x0107, 1, 0x42), -SCE(0x1e4e, 0, 0x82),SCE(0x1e4f, 1, 0x42),SCE(0x042b, 0, 0x82),SCE(0x044b, 1, 0x42), -SCE(0xa748, 0, 0x82),SCE(0xa749, 1, 0x42),SCE(0x2c11, 0, 0x82),SCE(0x2c41, 1, 0x42), -SCE(0xa7b3, 0, 0x82),SCE(0xab53, 1, 0x42),SCE(0x053e, 0, 0x82),SCE(0x056e, 1, 0x42), -SCE(0x014e, 0, 0x82),SCE(0x014f, 1, 0x42),SCE(0x13d3, 0, 0x82),SCE(0xaba3, 1, 0x42), -SCE(0x0524, 0, 0x82),SCE(0x0525, 1, 0x42),SCE(0xa65e, 0, 0x82),SCE(0xa65f, 1, 0x42), -SCE(0x01f8, 0, 0x82),SCE(0x01f9, 1, 0x42),SCE(0x04ae, 0, 0x82),SCE(0x04af, 1, 0x42), -SCE(0xa77e, 0, 0x82),SCE(0xa77f, 1, 0x42),SCE(0x03a0, 0, 0x83),SCE(0x03c0, 1, 0x43), -SCE(0x03d6, 2, 0x43),SCE(0x0265, 0, 0x42),SCE(0xa78d, 1, 0x82),SCE(0xff2b, 0, 0x82), -SCE(0xff4b, 1, 0x42),SCE(0x1fa1, 0, 0x42),SCE(0x1fa9, 1, 0x2),SCE(0x1ede, 0, 0x82), -SCE(0x1edf, 1, 0x42),SCE(0x13b9, 0, 0x82),SCE(0xab89, 1, 0x42),SCE(0x0168, 0, 0x82), -SCE(0x0169, 1, 0x42),SCE(0x0226, 0, 0x82),SCE(0x0227, 1, 0x42),SCE(0x13f1, 0, 0x82), -SCE(0x13f9, 1, 0x42),SCE(0x1e06, 0, 0x82),SCE(0x1e07, 1, 0x42),SCE(0x0120, 0, 0x82), -SCE(0x0121, 1, 0x42),SCE(0x1041d, 0, 0x82),SCE(0x10445, 1, 0x42),SCE(0x1f66, 0, 0x42), -SCE(0x1f6e, 1, 0x82),SCE(0x10a6, 0, 0x82),SCE(0x2d06, 1, 0x42),SCE(0x10c91, 0, 0x82), -SCE(0x10cd1, 1, 0x42),SCE(0x1d8e, 0, 0x42),SCE(0xa7c6, 1, 0x82),SCE(0x10c84, 0, 0x82), -SCE(0x10cc4, 1, 0x42),SCE(0x10cae, 0, 0x82),SCE(0x10cee, 1, 0x42),SCE(0x118a3, 0, 0x82), -SCE(0x118c3, 1, 0x42),SCE(0x0048, 0, 0x82),SCE(0x0068, 1, 0x42),SCE(0x13cc, 0, 0x82), -SCE(0xab9c, 1, 0x42),SCE(0x1e91e, 0, 0x82),SCE(0x1e940, 1, 0x42),SCE(0x038e, 0, 0x82), -SCE(0x03cd, 1, 0x42),SCE(0x0531, 0, 0x82),SCE(0x0561, 1, 0x42),]; -return t; +static immutable uint[2980] t = [ +0x0201E90B,0x0211E92D,0x0201E911,0x0211E933,0x02000496,0x02100497,0x0200A722,0x0210A723, +0x02001F79,0x02101FF9,0x02001F44,0x02101F4C,0x0200015A,0x0210015B,0x020010FD,0x02101CBD, +0x02016E4C,0x02116E6C,0x02001E38,0x02101E39,0x0201E921,0x0211E943,0x02001F23,0x02101F2B, +0x020001A0,0x021001A1,0x030003A3,0x031003C2,0x032003C3,0x020004DC,0x021004DD,0x02002CA6, +0x02102CA7,0x0200017B,0x0210017C,0x0201E906,0x0211E928,0x020010DC,0x02101C9C,0x020104CD, +0x021104F5,0x02001F65,0x02101F6D,0x0200051E,0x0210051F,0x020010D8,0x02101C98,0x02002C1A, +0x02102C4A,0x0200027D,0x02102C64,0x0200A69A,0x0210A69B,0x02001F02,0x02101F0A,0x02000522, +0x02100523,0x02002C60,0x02102C61,0x02002C1E,0x02102C4E,0x0200A650,0x0210A651,0x0200A65C, +0x0210A65D,0x020013C9,0x0210AB99,0x02010414,0x0211043C,0x020013CD,0x0210AB9D,0x020000CE, +0x021000EE,0x02001E7E,0x02101E7F,0x020013F0,0x021013F8,0x02001EC4,0x02101EC5,0x0200A78B, +0x0210A78C,0x02000114,0x02100115,0x0200042F,0x0210044F,0x0201E902,0x0211E924,0x020004D8, +0x021004D9,0x02002CAA,0x02102CAB,0x02000110,0x02100111,0x02000492,0x02100493,0x02001E34, +0x02101E35,0x020013F4,0x021013FC,0x02000224,0x02100225,0x02002CA2,0x02102CA3,0x0200A72E, +0x0210A72F,0x02016E48,0x02116E68,0x0200004A,0x0210006A,0x020013A6,0x0210AB76,0x0200015E, +0x0210015F,0x030001C4,0x031001C5,0x032001C6,0x02001F40,0x02101F48,0x0200A658,0x0210A659, +0x0200022C,0x0210022D,0x02010C9F,0x02110CDF,0x02001FA7,0x02101FAF,0x020013AE,0x0210AB7E, +0x02000042,0x02100062,0x020013D5,0x0210ABA5,0x02016E40,0x02116E60,0x020000D2,0x021000F2, +0x02001E82,0x02101E83,0x02010C97,0x02110CD7,0x020010E0,0x02101CA0,0x0200013D,0x0210013E, +0x02000406,0x02100456,0x0200029D,0x0210A7B2,0x02000139,0x0210013A,0x02000198,0x02100199, +0x02001EBC,0x02101EBD,0x020003AB,0x021003CB,0x0200040E,0x0210045E,0x0200A7B6,0x0210A7B7, +0x0200040A,0x0210045A,0x02001EC0,0x02101EC1,0x02010572,0x02110599,0x020024B9,0x021024D3, +0x02002C16,0x02102C46,0x0200019C,0x0210026F,0x020003A7,0x021003C7,0x0200A692,0x0210A693, +0x030000C5,0x031000E5,0x0320212B,0x02000526,0x02100527,0x02000266,0x0210A7AA,0x0201057A, +0x021105A1,0x0201057E,0x021105A5,0x02001FD0,0x02101FD8,0x02000046,0x02100066,0x0201E90A, +0x0211E92C,0x02000228,0x02100229,0x020013A2,0x0210AB72,0x0200A726,0x0210A727,0x02010C93, +0x02110CD3,0x0200049A,0x0210049B,0x020000D6,0x021000F6,0x0200010C,0x0210010D,0x020118A8, +0x021118C8,0x02000162,0x02100163,0x0200019E,0x02100220,0x02002C9E,0x02102C9F,0x03000392, +0x031003B2,0x032003D0,0x02001E30,0x02101E31,0x02001FA3,0x02101FAB,0x0200216D,0x0210217D, +0x0200004E,0x0210006E,0x030000B5,0x0310039C,0x032003BC,0x0200048E,0x0210048F,0x0200A72A, +0x0210A72B,0x02010410,0x02110438,0x0200038A,0x021003AF,0x02001EFE,0x02101EFF,0x020118AC, +0x021118CC,0x020001EA,0x021001EB,0x02001F06,0x02101F0E,0x02001FC3,0x02101FCC,0x020010B4, +0x02102D14,0x0200026A,0x0210A7AE,0x03000412,0x03100432,0x03201C80,0x0200A760,0x0210A761, +0x02010C9B,0x02110CDB,0x020024C8,0x021024E2,0x020001A4,0x021001A5,0x0200039F,0x021003BF, +0x020010C4,0x02102D24,0x020004A2,0x021004A3,0x02002C03,0x02102C33,0x02002CE0,0x02102CE1, +0x02010576,0x0211059D,0x020004E0,0x021004E1,0x02002C2A,0x02102C5A,0x02001ED0,0x02101ED1, +0x020000C2,0x021000E2,0x020004E8,0x021004E9,0x0200A7A6,0x0210A7A7,0x020010F9,0x02101CB9, +0x02000145,0x02100146,0x0200037C,0x021003FE,0x02001EC8,0x02101EC9,0x0200041A,0x0210043A, +0x020000CA,0x021000EA,0x02001F86,0x02101F8E,0x03000421,0x03100441,0x03201C83,0x02010404, +0x0211042C,0x02010583,0x021105AA,0x0200053F,0x0210056F,0x02000547,0x02100577,0x020013B6, +0x0210AB86,0x020013EC,0x0210ABBC,0x0200FF2C,0x0210FF4C,0x0200A7BA,0x0210A7BB,0x0200A648, +0x0210A649,0x020013C5,0x0210AB95,0x0200FF24,0x0210FF44,0x0201040F,0x02110437,0x0201041C, +0x02110444,0x02010C83,0x02110CC3,0x02000241,0x02100242,0x02001E76,0x02101E77,0x020010BC, +0x02102D1C,0x02002C22,0x02102C52,0x020010D0,0x02101C90,0x0200A768,0x0210A769,0x0200A732, +0x0210A733,0x0200011C,0x0210011D,0x02000427,0x02100447,0x02001E40,0x02101E41,0x020118B1, +0x021118D1,0x02000152,0x02100153,0x030003A1,0x031003C1,0x032003F1,0x02000397,0x021003B7, +0x020001AC,0x021001AD,0x020001E2,0x021001E3,0x02000218,0x02100219,0x0201E91A,0x0211E93C, +0x02000516,0x02100517,0x02001F27,0x02101F2F,0x0200A7C9,0x0210A7CA,0x02001FE0,0x02101FE8, +0x02002165,0x02102175,0x0200A66C,0x0210A66D,0x02000393,0x021003B3,0x02000532,0x02100562, +0x02000056,0x02100076,0x02001F33,0x02101F3B,0x02000554,0x02100584,0x03001C88,0x0310A64A, +0x0320A64B,0x0200A68E,0x0210A68F,0x020003D8,0x021003D9,0x020024C5,0x021024DF,0x02002CB2, +0x02102CB3,0x02010C82,0x02110CC2,0x02000057,0x02100077,0x02016E53,0x02116E73,0x0200FF37, +0x0210FF57,0x02001EF6,0x02101EF7,0x0201E912,0x0211E934,0x02001F12,0x02101F1A,0x020004A6, +0x021004A7,0x0200016A,0x0210016B,0x02001F34,0x02101F3C,0x02002CDC,0x02102CDD,0x020001B1, +0x0210028A,0x020118A4,0x021118C4,0x02001E28,0x02101E29,0x020001BF,0x021001F7,0x0200018B, +0x0210018C,0x020010A7,0x02102D07,0x02000128,0x02100129,0x02001E6A,0x02101E6B,0x020010AB, +0x02102D0B,0x0200041F,0x0210043F,0x02002C2E,0x02102C5E,0x02010CAF,0x02110CEF,0x020104C5, +0x021104ED,0x020118A5,0x021118C5,0x02001FE1,0x02101FE9,0x030003A6,0x031003C6,0x032003D5, +0x02002C0A,0x02102C3A,0x0200050E,0x0210050F,0x02000104,0x02100105,0x02000372,0x02100373, +0x02001E8E,0x02101E8F,0x02000396,0x021003B6,0x02001EFA,0x02101EFB,0x020003F2,0x021003F9, +0x0200A640,0x0210A641,0x020010EC,0x02101CAC,0x020118A1,0x021118C1,0x02000166,0x02100167, +0x02001F37,0x02101F3F,0x02010C86,0x02110CC6,0x020013DD,0x0210ABAD,0x02001F51,0x02101F59, +0x02002C9A,0x02102C9B,0x020001FA,0x021001FB,0x02002169,0x02102179,0x02016E57,0x02116E77, +0x020010A4,0x02102D04,0x03000053,0x03100073,0x0320017F,0x02000376,0x02100377,0x020013B1, +0x0210AB81,0x02000468,0x02100469,0x020013E4,0x0210ABB4,0x02001F96,0x02101F9E,0x02000108, +0x02100109,0x02010CA0,0x02110CE0,0x02001E66,0x02101E67,0x02001E8A,0x02101E8B,0x02001E4C, +0x02101E4D,0x02001F75,0x02101FCB,0x02002C0E,0x02102C3E,0x02001E50,0x02101E51,0x020024C0, +0x021024DA,0x0200A750,0x0210A751,0x020000DA,0x021000FA,0x020010E9,0x02101CA9,0x02002CD8, +0x02102CD9,0x02001EB8,0x02101EB9,0x0200012C,0x0210012D,0x02000252,0x02102C70,0x020004C3, +0x021004C4,0x020024C4,0x021024DE,0x020104B5,0x021104DD,0x02002C0F,0x02102C3F,0x02000533, +0x02100563,0x02000195,0x021001F6,0x02001F13,0x02101F1B,0x020104B8,0x021104E0,0x02000553, +0x02100583,0x02010425,0x0211044D,0x020013D1,0x0210ABA1,0x020004F4,0x021004F5,0x020004C7, +0x021004C8,0x02010CAC,0x02110CEC,0x020004D0,0x021004D1,0x0200A75C,0x0210A75D,0x02001E2C, +0x02101E2D,0x020010A8,0x02102D08,0x02000464,0x02100465,0x02000426,0x02100446,0x020004E4, +0x021004E5,0x020010ED,0x02101CAD,0x0200A792,0x0210A793,0x02001EDC,0x02101EDD,0x020104BC, +0x021104E4,0x02010577,0x0211059E,0x02001EA8,0x02101EA9,0x020001B8,0x021001B9,0x020000C6, +0x021000E6,0x0200FF30,0x0210FF50,0x02016E44,0x02116E64,0x0201041B,0x02110443,0x02001E0E, +0x02101E0F,0x020004D4,0x021004D5,0x02002CAE,0x02102CAF,0x02002C6B,0x02102C6C,0x0200FF23, +0x0210FF43,0x02000184,0x02100185,0x02010573,0x0211059A,0x04000398,0x041003B8,0x042003D1, +0x043003F4,0x020013D4,0x0210ABA4,0x0201E919,0x0211E93B,0x02000187,0x02100188,0x02002C13, +0x02102C43,0x0200A7A2,0x0210A7A3,0x02000194,0x02100263,0x02000416,0x02100436,0x02002CBE, +0x02102CBF,0x02001FA6,0x02101FAE,0x020104C6,0x021104EE,0x02001F82,0x02101F8A,0x020104C9, +0x021104F1,0x020013E0,0x0210ABB0,0x02000240,0x02102C7F,0x0200A7BE,0x0210A7BF,0x02001F92, +0x02101F9A,0x02000402,0x02100452,0x02000536,0x02100566,0x02000550,0x02100580,0x0200A682, +0x0210A683,0x02000386,0x021003AC,0x02001FE5,0x02101FEC,0x020024C9,0x021024E3,0x020000D3, +0x021000F3,0x020010F0,0x02101CB0,0x02001E3C,0x02101E3D,0x02002C80,0x02102C81,0x0201058A, +0x021105B1,0x02000156,0x02100157,0x02001E7A,0x02101E7B,0x020013ED,0x0210ABBD,0x0200A73E, +0x0210A73F,0x02000118,0x02100119,0x02000214,0x02100215,0x03001E60,0x03101E61,0x03201E9B, +0x02002C8A,0x02102C8B,0x0200A64C,0x0210A64D,0x03000395,0x031003B5,0x032003F5,0x020001E6, +0x021001E7,0x02001F85,0x02101F8D,0x02000512,0x02100513,0x02001F61,0x02101F69,0x0200A668, +0x0210A669,0x02010594,0x021105BB,0x02001E18,0x02101E19,0x020013B2,0x0210AB82,0x02010415, +0x0211043D,0x02010418,0x02110440,0x02000245,0x0210028C,0x02001F72,0x02101FC8,0x020118B5, +0x021118D5,0x020010B8,0x02102D18,0x020004C0,0x021004CF,0x0201040B,0x02110433,0x02000423, +0x02100443,0x020010C5,0x02102D25,0x02002C2D,0x02102C5D,0x02001F30,0x02101F38,0x020013C1, +0x0210AB91,0x0200A76C,0x0210A76D,0x020104CC,0x021104F4,0x02001F71,0x02101FBB,0x0200FF33, +0x0210FF53,0x0200216A,0x0210217A,0x02001ECC,0x02101ECD,0x020003E8,0x021003E9,0x0200A7D0, +0x0210A7D1,0x0200005A,0x0210007A,0x02010CB0,0x02110CF0,0x020001D9,0x021001DA,0x02010587, +0x021105AE,0x020001B5,0x021001B6,0x02000543,0x02100573,0x02001F22,0x02101F2A,0x02001EA0, +0x02101EA1,0x02010C8F,0x02110CCF,0x02016E54,0x02116E74,0x02001D7D,0x02102C63,0x0200A7D6, +0x0210A7D7,0x0200A74C,0x0210A74D,0x020013CE,0x0210AB9E,0x020000CF,0x021000EF,0x020010D9, +0x02101C99,0x02000045,0x02100065,0x02000136,0x02100137,0x0200040D,0x0210045D,0x02016E43, +0x02116E63,0x02001F7C,0x02101FFA,0x0200024A,0x0210024B,0x020004B8,0x021004B9,0x02002CCA, +0x02102CCB,0x02002CED,0x02102CEE,0x0200019F,0x02100275,0x020003A4,0x021003C4,0x0200A74E, +0x0210A74F,0x020104C0,0x021104E8,0x02001E16,0x02101E17,0x020013AF,0x0210AB7F,0x02000500, +0x02100501,0x02002C82,0x02102C83,0x020010BD,0x02102D1D,0x0201E916,0x0211E938,0x02010CA3, +0x02110CE3,0x02010C94,0x02110CD4,0x020104C2,0x021104EA,0x030003A6,0x031003C6,0x032003D5, +0x02016E4D,0x02116E6D,0x020118B4,0x021118D4,0x020013E9,0x0210ABB9,0x02001F41,0x02101F49, +0x02000287,0x0210A7B1,0x02000542,0x02100572,0x02001E58,0x02101E59,0x02001F43,0x02101F4B, +0x02002CEB,0x02102CEC,0x020013EB,0x0210ABBB,0x02001FD1,0x02101FD9,0x02001EE8,0x02101EE9, +0x020013A3,0x0210AB73,0x020003EE,0x021003EF,0x020118B8,0x021118D8,0x02010C9E,0x02110CDE, +0x0201E920,0x0211E942,0x020000FF,0x02100178,0x02010417,0x0211043F,0x020118A9,0x021118C9, +0x02001FB0,0x02101FB8,0x02002C88,0x02102C89,0x020013A9,0x0210AB79,0x0201E909,0x0211E92B, +0x020013C2,0x0210AB92,0x020024B6,0x021024D0,0x02001E5E,0x02101E5F,0x02002C69,0x02102C6A, +0x0201041F,0x02110447,0x0200037F,0x021003F3,0x02000540,0x02100570,0x02000390,0x02101FD3, +0x0300004B,0x0310006B,0x0320212A,0x020004F8,0x021004F9,0x020013F3,0x021013FB,0x020000C9, +0x021000E9,0x0200040F,0x0210045F,0x020010B5,0x02102D15,0x0200A746,0x0210A747,0x020000CD, +0x021000ED,0x02000476,0x02100477,0x0200039E,0x021003BE,0x02001F20,0x02101F28,0x020010FA, +0x02101CBA,0x02002C21,0x02102C51,0x02001EA6,0x02101EA7,0x02001F83,0x02101F8B,0x0200053C, +0x0210056C,0x02001F01,0x02101F09,0x02002CC2,0x02102CC3,0x02000208,0x02100209,0x020013E3, +0x0210ABB3,0x0200A796,0x0210A797,0x02001F64,0x02101F6C,0x02010592,0x021105B9,0x020004BE, +0x021004BF,0x02001F91,0x02101F99,0x020003E6,0x021003E7,0x02001EE0,0x02101EE1,0x02001FF3, +0x02101FFC,0x02000413,0x02100433,0x0200042E,0x0210044E,0x020104CA,0x021104F2,0x02002C00, +0x02102C30,0x020010DB,0x02101C9B,0x020010F6,0x02101CB6,0x020118BE,0x021118DE,0x020001A7, +0x021001A8,0x020010C3,0x02102D23,0x02000415,0x02100435,0x02001E1E,0x02101E1F,0x02000506, +0x02100507,0x02001E64,0x02101E65,0x020000C7,0x021000E7,0x0200047C,0x0210047D,0x02001E52, +0x02101E53,0x020010F4,0x02101CB4,0x02010586,0x021105AD,0x0200046A,0x0210046B,0x02002C27, +0x02102C57,0x02010C89,0x02110CC9,0x020010A2,0x02102D02,0x0200FF32,0x0210FF52,0x04000398, +0x041003B8,0x042003D1,0x043003F4,0x030003A9,0x031003C9,0x03202126,0x02001EDA,0x02101EDB, +0x0201E901,0x0211E923,0x0200A79C,0x0210A79D,0x020010D3,0x02101C93,0x020024BC,0x021024D6, +0x0200FF2F,0x0210FF4F,0x02000250,0x02102C6F,0x02002C29,0x02102C59,0x020004B2,0x021004B3, +0x02010419,0x02110441,0x02000210,0x02100211,0x02002C15,0x02102C45,0x02016E47,0x02116E67, +0x0200A754,0x0210A755,0x02016E45,0x02116E65,0x030001C7,0x031001C8,0x032001C9,0x0200047E, +0x0210047F,0x020001FC,0x021001FD,0x0200020E,0x0210020F,0x02000244,0x02100289,0x02001F77, +0x02101FDB,0x02002CD6,0x02102CD7,0x02010589,0x021105B0,0x04000422,0x04100442,0x04201C84, +0x04301C85,0x020010E7,0x02101CA7,0x020004FA,0x021004FB,0x020010D5,0x02101C95,0x02001EAC, +0x02101EAD,0x020010B7,0x02102D17,0x020013A1,0x0210AB71,0x0200A7C2,0x0210A7C3,0x0201E907, +0x0211E929,0x020013F5,0x021013FD,0x02001EE2,0x02101EE3,0x02001F62,0x02101F6A,0x02001E92, +0x02101E93,0x020001D5,0x021001D6,0x02002C06,0x02102C36,0x02010C8B,0x02110CCB,0x02001F70, +0x02101FBA,0x020003EC,0x021003ED,0x0201E915,0x0211E937,0x0200216E,0x0210217E,0x020013C0, +0x0210AB90,0x02001EF4,0x02101EF5,0x0200FF3A,0x0210FF5A,0x020118BC,0x021118DC,0x020004AA, +0x021004AB,0x02002163,0x02102173,0x02001E1C,0x02101E1D,0x020013C8,0x0210AB98,0x020118AF, +0x021118CF,0x02010C98,0x02110CD8,0x02010571,0x02110598,0x02010CA7,0x02110CE7,0x02000051, +0x02100071,0x020004F2,0x021004F3,0x02010CAA,0x02110CEA,0x020010AF,0x02102D0F,0x02002C8E, +0x02102C8F,0x02002CC4,0x02102CC5,0x02001E0A,0x02101E0B,0x02016E50,0x02116E70,0x0201058E, +0x021105B5,0x02010411,0x02110439,0x02010423,0x0211044B,0x0200053A,0x0210056A,0x02001E6C, +0x02101E6D,0x020104BE,0x021104E6,0x02010424,0x0211044C,0x020010A9,0x02102D09,0x020024C2, +0x021024DC,0x02010C81,0x02110CC1,0x020013BC,0x0210AB8C,0x03000462,0x03100463,0x03201C87, +0x020118A6,0x021118C6,0x02001E4A,0x02101E4B,0x02002162,0x02102172,0x02001ED4,0x02101ED5, +0x020010AA,0x02102D0A,0x020004EC,0x021004ED,0x02002C0C,0x02102C3C,0x0200A79A,0x0210A79B, +0x020004CB,0x021004CC,0x020104BD,0x021104E5,0x02000370,0x02100371,0x0201E914,0x0211E936, +0x020003DA,0x021003DB,0x02001F35,0x02101F3D,0x02016E51,0x02116E71,0x03000392,0x031003B2, +0x032003D0,0x02002C96,0x02102C97,0x02000391,0x021003B1,0x02000534,0x02100564,0x0200041B, +0x0210043B,0x020013DF,0x0210ABAF,0x02002C2C,0x02102C5C,0x02000124,0x02100125,0x02010CA2, +0x02110CE2,0x02001E8C,0x02101E8D,0x02001EB4,0x02101EB5,0x0200016C,0x0210016D,0x02001E02, +0x02101E03,0x0200019A,0x0210023D,0x02000102,0x02100103,0x02001F14,0x02101F1C,0x0200FF28, +0x0210FF48,0x02010C80,0x02110CC0,0x020010EE,0x02101CAE,0x02001F55,0x02101F5D,0x0200A77B, +0x0210A77C,0x02000059,0x02100079,0x0200014A,0x0210014B,0x02001E24,0x02101E25,0x020013BD, +0x0210AB8D,0x02002CBC,0x02102CBD,0x0201040D,0x02110435,0x0201058F,0x021105B6,0x020118A7, +0x021118C7,0x0200A660,0x0210A661,0x02000514,0x02100515,0x0200052E,0x0210052F,0x020004A4, +0x021004A5,0x02000400,0x02100450,0x02016E58,0x02116E78,0x0200A64E,0x0210A64F,0x0200FF2E, +0x0210FF4E,0x0201040C,0x02110434,0x020000DB,0x021000FB,0x020001CD,0x021001CE,0x020010E8, +0x02101CA8,0x0200054F,0x0210057F,0x0200A738,0x0210A739,0x02016E5F,0x02116E7F,0x02001D79, +0x0210A77D,0x0201E90F,0x0211E931,0x02002C07,0x02102C37,0x020010A3,0x02102D03,0x0200A7A0, +0x0210A7A1,0x03000421,0x03100441,0x03201C83,0x0200A680,0x0210A681,0x02000282,0x0210A7C5, +0x020024CB,0x021024E5,0x02000401,0x02100451,0x0200A758,0x0210A759,0x02000058,0x02100078, +0x02000193,0x02100260,0x02010CA1,0x02110CE1,0x0200054E,0x0210057E,0x02000186,0x02100254, +0x020013DC,0x0210ABAC,0x020024BD,0x021024D7,0x020001B3,0x021001B4,0x0200A696,0x0210A697, +0x02000216,0x02100217,0x02001ECE,0x02101ECF,0x02002168,0x02102178,0x0201E90E,0x0211E930, +0x02002C12,0x02102C42,0x02002C2F,0x02102C5F,0x02010CAB,0x02110CEB,0x02001E86,0x02101E87, +0x03000412,0x03100432,0x03201C80,0x020013D6,0x0210ABA6,0x02001EBA,0x02101EBB,0x0201E91B, +0x0211E93D,0x0201041A,0x02110442,0x02001EEE,0x02101EEF,0x0200FF31,0x0210FF51,0x0200A7BC, +0x0210A7BD,0x020001DB,0x021001DC,0x020001A6,0x02100280,0x02001F07,0x02101F0F,0x020118BD, +0x021118DD,0x020000C8,0x021000E8,0x020004D2,0x021004D3,0x020010E1,0x02101CA1,0x020013B7, +0x0210AB87,0x02010585,0x021105AC,0x02016E4B,0x02116E6B,0x02000172,0x02100173,0x0200049E, +0x0210049F,0x020004E6,0x021004E7,0x020010B0,0x02102D10,0x02002C9C,0x02102C9D,0x020001EE, +0x021001EF,0x020104B4,0x021104DC,0x02010C87,0x02110CC7,0x020013BA,0x0210AB8A,0x02001E10, +0x02101E11,0x02000230,0x02100231,0x02000428,0x02100448,0x02002CD0,0x02102CD1,0x020118A0, +0x021118C0,0x020003E0,0x021003E1,0x02010588,0x021105AF,0x0200A780,0x0210A781,0x020010F5, +0x02101CB5,0x0200053B,0x0210056B,0x020000D5,0x021000F5,0x03000414,0x03100434,0x03201C81, +0x02001FA4,0x02101FAC,0x0200012A,0x0210012B,0x02000052,0x02100072,0x020024B7,0x021024D1, +0x0201E908,0x0211E92A,0x04000398,0x041003B8,0x042003D1,0x043003F4,0x02000202,0x02100203, +0x02000271,0x02102C6E,0x02000470,0x02100471,0x02002C1B,0x02102C4B,0x0200048A,0x0210048B, +0x0200A752,0x0210A753,0x0200FF25,0x0210FF45,0x02000407,0x02100457,0x020000C1,0x021000E1, +0x02001E44,0x02101E45,0x02001F97,0x02101F9F,0x02000548,0x02100578,0x0200021C,0x0210021D, +0x020013E5,0x0210ABB5,0x0200051A,0x0210051B,0x02002CB6,0x02102CB7,0x0200A654,0x0210A655, +0x02010403,0x0211042B,0x02001E72,0x02101E73,0x020010D4,0x02101C94,0x020104C1,0x021104E9, +0x02010C8A,0x02110CCA,0x02001E2A,0x02101E2B,0x03000462,0x03100463,0x03201C87,0x02001F76, +0x02101FDA,0x03000053,0x03100073,0x0320017F,0x02002C26,0x02102C56,0x020013A0,0x0210AB70, +0x020004C5,0x021004C6,0x020003FA,0x021003FB,0x02000555,0x02100585,0x020013E8,0x0210ABB8, +0x030001C7,0x031001C8,0x032001C9,0x02001F42,0x02101F4A,0x02001F67,0x02101F6F,0x0201057C, +0x021105A3,0x0200A7B4,0x0210A7B5,0x0200A698,0x0210A699,0x0201E904,0x0211E926,0x0200040C, +0x0210045C,0x020010DA,0x02101C9A,0x020000D0,0x021000F0,0x02016E46,0x02116E66,0x02001EC2, +0x02101EC3,0x020001E4,0x021001E5,0x02000044,0x02100064,0x0200017D,0x0210017E,0x02001F21, +0x02101F29,0x0200FF39,0x0210FF59,0x020013AC,0x0210AB7C,0x02001F00,0x02101F08,0x020003A5, +0x021003C5,0x02000158,0x02100159,0x020104CF,0x021104F7,0x02001E3A,0x02101E3B,0x0200A72C, +0x0210A72D,0x020118B7,0x021118D7,0x02000112,0x02100113,0x02001E36,0x02101E37,0x02016E4E, +0x02116E6E,0x02001F7D,0x02101FFB,0x02000494,0x02100495,0x02001E80,0x02101E81,0x02000116, +0x02100117,0x0200042D,0x0210044D,0x020013F2,0x021013FA,0x02000179,0x0210017A,0x020004DA, +0x021004DB,0x02002CA8,0x02102CA9,0x020000CC,0x021000EC,0x020001A2,0x021001A3,0x030003A1, +0x031003C1,0x032003F1,0x02001E7C,0x02101E7D,0x020013CF,0x0210AB9F,0x02010412,0x0211043A, +0x02000520,0x02100521,0x02002C1C,0x02102C4C,0x0200026B,0x02102C62,0x02010591,0x021105B8, +0x0200015C,0x0210015D,0x0200A652,0x0210A653,0x0200FF26,0x0210FF46,0x020001E8,0x021001E9, +0x020010B6,0x02102D16,0x0200A656,0x0210A657,0x0200051C,0x0210051D,0x020013C3,0x0210AB93, +0x020104CB,0x021104F3,0x02001EC6,0x02101EC7,0x020001E0,0x021001E1,0x02001F63,0x02101F6B, +0x02002C01,0x02102C31,0x0201E900,0x0211E922,0x02001E78,0x02101E79,0x020024CE,0x021024E8, +0x0200A76A,0x0210A76B,0x0200011A,0x0210011B,0x02000429,0x02100449,0x02001F84,0x02101F8C, +0x020010D6,0x02101C96,0x02001FB1,0x02101FB9,0x0200A762,0x0210A763,0x02010CB2,0x02110CF2, +0x02002C20,0x02102C50,0x020010BE,0x02102D1E,0x0201041E,0x02110446,0x020004E2,0x021004E3, +0x020004DE,0x021004DF,0x020013EA,0x0210ABBA,0x02000541,0x02100571,0x02000545,0x02100575, +0x02001F25,0x02101F2D,0x02000154,0x02100155,0x02002C24,0x02102C54,0x020013EE,0x0210ABBE, +0x02000181,0x02100253,0x030003A3,0x031003C2,0x032003C3,0x020118B3,0x021118D3,0x020010BA, +0x02102D1A,0x02000180,0x02100243,0x02001E3E,0x02101E3F,0x020010FF,0x02101CBF,0x02010C88, +0x02110CC8,0x020010D2,0x02101C92,0x0200A76E,0x0210A76F,0x03001C88,0x0310A64A,0x0320A64B, +0x020010B2,0x02102D12,0x020013C7,0x0210AB97,0x02000518,0x02100519,0x0200A766,0x0210A767, +0x020001EC,0x021001ED,0x020104C3,0x021104EB,0x02010574,0x0211059B,0x0201E91C,0x0211E93E, +0x020010E2,0x02101CA2,0x02002C05,0x02102C35,0x020004A0,0x021004A1,0x02001E42,0x02101E43, +0x020013B4,0x0210AB84,0x020118BF,0x021118DF,0x02000150,0x02100151,0x02002CB0,0x02102CB1, +0x020013A4,0x0210AB74,0x020004C1,0x021004C2,0x030001CA,0x031001CB,0x032001CC,0x0200004C, +0x0210006C,0x020104C7,0x021104EF,0x02016E5A,0x02116E7A,0x02000222,0x02100223,0x02000490, +0x02100491,0x02002CF2,0x02102CF3,0x02010595,0x021105BC,0x0200053D,0x0210056D,0x02000388, +0x021003AD,0x02000549,0x02100579,0x020013E2,0x0210ABB2,0x02016E4A,0x02116E6A,0x02001EFC, +0x02101EFD,0x02001F90,0x02101F98,0x020004D6,0x021004D7,0x0200A7B8,0x0210A7B9,0x03000414, +0x03100434,0x03201C81,0x02010CAD,0x02110CED,0x020010F7,0x02101CB7,0x02016E55,0x02116E75, +0x0200A728,0x0210A729,0x02001E00,0x02101E01,0x02000232,0x02100233,0x020010A5,0x02102D05, +0x02001F15,0x02101F1D,0x030003A9,0x031003C9,0x03202126,0x0200013B,0x0210013C,0x02000408, +0x02100458,0x020000DC,0x021000FC,0x02001EBE,0x02101EBF,0x02002C18,0x02102C48,0x0200A7A8, +0x0210A7A9,0x0200216B,0x0210217B,0x02002C10,0x02102C40,0x02002CDE,0x02102CDF,0x0200029E, +0x0210A7B0,0x020000D4,0x021000F4,0x020010EF,0x02101CAF,0x02000551,0x02100581,0x020013DA, +0x0210ABAA,0x02000535,0x02100565,0x02010C9D,0x02110CDD,0x020024C6,0x021024E0,0x02000410, +0x02100430,0x02001EB6,0x02101EB7,0x02010416,0x0211043E,0x02016E42,0x02116E62,0x02000164, +0x02100165,0x02002CA0,0x02102CA1,0x02001E2E,0x02101E2F,0x02010C95,0x02110CD5,0x02000498, +0x02100499,0x0200010A,0x0210010B,0x020118AA,0x021118CA,0x02001E88,0x02101E89,0x02000528, +0x02100529,0x020013D7,0x0210ABA7,0x0200A65A,0x0210A65B,0x0200022A,0x0210022B,0x02001FA5, +0x02101FAD,0x020104B3,0x021104DB,0x0201E90C,0x0211E92E,0x020024BB,0x021024D5,0x020001F4, +0x021001F5,0x0200A690,0x0210A691,0x0200FF29,0x0210FF49,0x02002C75,0x02102C76,0x02002CB8, +0x02102CB9,0x02010401,0x02110429,0x02002C0D,0x02102C3D,0x020104D0,0x021104F8,0x0201E913, +0x0211E935,0x020001AF,0x021001B0,0x0200A7C7,0x0210A7C8,0x020013BF,0x0210AB8F,0x02010402, +0x0211042A,0x020010EA,0x02101CAA,0x020104BF,0x021104E7,0x0201058D,0x021105B4,0x02002164, +0x02102174,0x0200018E,0x021001DD,0x020001D3,0x021001D4,0x02001F10,0x02101F18,0x02001F57, +0x02101F5F,0x02001ED2,0x02101ED3,0x0200FF2A,0x0210FF4A,0x02001E04,0x02101E05,0x020004EE, +0x021004EF,0x02002C94,0x02102C95,0x020000C0,0x021000E0,0x020013DB,0x0210ABAB,0x020001B2, +0x0210028B,0x02010426,0x0211044E,0x0200A662,0x0210A663,0x02000054,0x02100074,0x02000556, +0x02100586,0x0300042A,0x0310044A,0x03201C86,0x02010422,0x0211044A,0x02001F36,0x02101F3E, +0x0200A794,0x0210A7C4,0x020004CD,0x021004CE,0x020104BB,0x021104E3,0x0200023B,0x0210023C, +0x020001CF,0x021001D0,0x0200050C,0x0210050D,0x0200A646,0x0210A647,0x02001E46,0x02101E47, +0x02010CA6,0x02110CE6,0x0200A779,0x0210A77A,0x0200FF36,0x0210FF56,0x020118A2,0x021118C2, +0x020004EA,0x021004EB,0x0200041D,0x0210043D,0x02016E52,0x02116E72,0x0200A688,0x0210A689, +0x02001EB2,0x02101EB3,0x02002160,0x02102170,0x02001ED6,0x02101ED7,0x020024C3,0x021024DD, +0x02016E5E,0x02116E7E,0x020004AC,0x021004AD,0x0201E910,0x0211E932,0x0200023E,0x02102C66, +0x02002CB4,0x02102CB5,0x0200FF2D,0x0210FF4D,0x0200014C,0x0210014D,0x02001E22,0x02101E23, +0x020013BB,0x0210AB8B,0x02000143,0x02100144,0x02010581,0x021105A8,0x02000170,0x02100171, +0x02001E94,0x02101E95,0x02002C28,0x02102C58,0x0201040E,0x02110436,0x020104B2,0x021104DA, +0x0200A798,0x0210A799,0x020013B8,0x0210AB88,0x02001E70,0x02101E71,0x04000422,0x04100442, +0x04201C84,0x04301C85,0x02010C85,0x02110CC5,0x02001EAE,0x02101EAF,0x02000122,0x02100123, +0x02010C8C,0x02110CCC,0x02010405,0x0211042D,0x02000420,0x02100440,0x020001AE,0x02100288, +0x0200021A,0x0210021B,0x0200038C,0x021003CC,0x02001F95,0x02101F9D,0x04000345,0x04100399, +0x042003B9,0x04301FBE,0x0200018A,0x02100257,0x02002C90,0x02102C91,0x020010B1,0x02102D11, +0x0200011E,0x0210011F,0x02001E08,0x02101E09,0x0200A7C0,0x0210A7C1,0x020013E7,0x0210ABB7, +0x02010580,0x021105A7,0x0200041C,0x0210043C,0x0200FB05,0x0210FB06,0x0200A7A4,0x0210A7A5, +0x02001E74,0x02101E75,0x02002C14,0x02102C44,0x0201E90D,0x0211E92F,0x020013A5,0x0210AB75, +0x020010F3,0x02101CB3,0x020024BA,0x021024D4,0x0200013F,0x02100140,0x0200039D,0x021003BD, +0x02002CE2,0x02102CE3,0x020010A1,0x02102D01,0x02000508,0x02100509,0x0200004D,0x0210006D, +0x02000389,0x021003AE,0x0200048C,0x0210048D,0x02002C04,0x02102C34,0x0200216F,0x0210217F, +0x020004B0,0x021004B1,0x02002CD2,0x02102CD3,0x0200A734,0x0210A735,0x02010584,0x021105AB, +0x02000050,0x02100070,0x02000160,0x02100161,0x02010CA9,0x02110CE9,0x02001E32,0x02101E33, +0x02000200,0x02100201,0x020118AB,0x021118CB,0x0200A786,0x0210A787,0x020118BB,0x021118DB, +0x020118AE,0x021118CE,0x0200021E,0x0210021F,0x020003AA,0x021003CA,0x020010C2,0x02102D22, +0x020013C4,0x0210AB94,0x02000539,0x02100569,0x0200A74A,0x0210A74B,0x020000C3,0x021000E3, +0x0200046E,0x0210046F,0x0200054D,0x0210057D,0x020010E3,0x02101CA3,0x020003DE,0x021003DF, +0x020024CA,0x021024E4,0x04000345,0x04100399,0x042003B9,0x04301FBE,0x02010C99,0x02110CD9, +0x0200A75A,0x0210A75B,0x02000419,0x02100439,0x02002C09,0x02102C39,0x0200037D,0x021003FF, +0x02001F26,0x02101F2E,0x020118B2,0x021118D2,0x02002183,0x02102184,0x02002C23,0x02102C53, +0x02000132,0x02100133,0x02001E56,0x02101E57,0x020010AE,0x02102D0E,0x0200A740,0x0210A741, +0x020000DD,0x021000FD,0x020010E6,0x02101CA6,0x03001E60,0x03101E61,0x03201E9B,0x02000478, +0x02100479,0x0200022E,0x0210022F,0x0200A694,0x0210A695,0x0200052C,0x0210052D,0x02010570, +0x02110597,0x0200A666,0x0210A667,0x020013A8,0x0210AB78,0x02010C96,0x02110CD6,0x0200020A, +0x0210020B,0x020024BF,0x021024D9,0x020013CB,0x0210AB9B,0x02010C9C,0x02110CDC,0x0300041E, +0x0310043E,0x03201C82,0x02001E84,0x02101E85,0x02001EF0,0x02101EF1,0x02016E59,0x02116E79, +0x02002CA4,0x02102CA5,0x0200A724,0x0210A725,0x0200049C,0x0210049D,0x0200010E,0x0210010F, +0x020104D3,0x021104FB,0x0201E903,0x0211E925,0x02000191,0x02100192,0x020013DE,0x0210ABAE, +0x030003A0,0x031003C0,0x032003D6,0x020013AD,0x0210AB7D,0x02000206,0x02100207,0x02001F45, +0x02101F4D,0x020003EA,0x021003EB,0x020010BB,0x02102D1B,0x02000474,0x02100475,0x0200FF38, +0x0210FF58,0x020004FE,0x021004FF,0x02002C84,0x02102C85,0x02010413,0x0211043B,0x02002C1F, +0x02102C4F,0x02001E5C,0x02101E5D,0x02001EE4,0x02101EE5,0x02002CC8,0x02102CC9,0x020104CE, +0x021104F6,0x020004BA,0x021004BB,0x0201E905,0x0211E927,0x020000D1,0x021000F1,0x02000472, +0x02100473,0x020118B6,0x021118D6,0x02001F78,0x02101FF8,0x02000043,0x02100063,0x02001EA2, +0x02101EA3,0x02001F24,0x02101F2C,0x0200019D,0x02100272,0x020004B6,0x021004B7,0x020000DF, +0x02101E9E,0x02001F87,0x02101F8F,0x02001E14,0x02101E15,0x02001EE6,0x02101EE7,0x0200040B, +0x0210045B,0x02000409,0x02100459,0x0201057D,0x021105A4,0x020003A8,0x021003C8,0x02001E5A, +0x02101E5B,0x0201057F,0x021105A6,0x02000544,0x02100574,0x020010FE,0x02101CBE,0x02001E12, +0x02101E13,0x020010B9,0x02102D19,0x02000047,0x02100067,0x020004FC,0x021004FD,0x02010C92, +0x02110CD2,0x02002C86,0x02102C87,0x02001E1A,0x02101E1B,0x02010C90,0x02110CD0,0x020010BF, +0x02102D1F,0x020013CA,0x0210AB9A,0x02016E49,0x02116E69,0x02000041,0x02100061,0x020001BC, +0x021001BD,0x02001EEA,0x02101EEB,0x02000502,0x02100503,0x02000248,0x02100249,0x020010DF, +0x02101C9F,0x030001C4,0x031001C5,0x032001C6,0x02000546,0x02100576,0x020013EF,0x0210ABBF, +0x02002CCC,0x02102CCD,0x020010D7,0x02101C97,0x020013A7,0x0210AB77,0x0200047A,0x0210047B, +0x02000134,0x02100135,0x0300042A,0x0310044A,0x03201C86,0x02002C19,0x02102C49,0x02000204, +0x02100205,0x0200025C,0x0210A7AB,0x020024CF,0x021024E9,0x02001E54,0x02101E55,0x02010579, +0x021105A0,0x0200054A,0x0210057A,0x0200A684,0x0210A685,0x0200FF27,0x0210FF47,0x02001F05, +0x02101F0D,0x02002132,0x0210214E,0x0200024C,0x0210024D,0x020013B5,0x0210AB85,0x02002CC6, +0x02102CC7,0x02010408,0x02110430,0x02002C1D,0x02102C4D,0x0200023F,0x02102C7E,0x0200A742, +0x0210A743,0x02001E62,0x02101E63,0x02010CA8,0x02110CE8,0x030000B5,0x0310039C,0x032003BC, +0x02001F81,0x02101F89,0x02010C9A,0x02110CDA,0x0200012E,0x0210012F,0x02000403,0x02100453, +0x020001FE,0x021001FF,0x04000345,0x04100399,0x042003B9,0x04301FBE,0x02000174,0x02100175, +0x020003CF,0x021003D7,0x020024CD,0x021024E7,0x02001FB3,0x02101FBC,0x020118AD,0x021118CD, +0x0200A744,0x0210A745,0x020000D9,0x021000F9,0x02001E0C,0x02101E0D,0x02002C17,0x02102C47, +0x020003E2,0x021003E3,0x0200026C,0x0210A7AD,0x0200A756,0x0210A757,0x02000405,0x02100455, +0x02000197,0x02100268,0x02001F60,0x02101F68,0x02001EEC,0x02101EED,0x02002C8C,0x02102C8D, +0x020010F2,0x02101CB2,0x020104B6,0x021104DE,0x0201E91D,0x0211E93F,0x0201040A,0x02110432, +0x020013C6,0x0210AB96,0x02016E41,0x02116E61,0x02000424,0x02100444,0x020001A9,0x02100283, +0x0300039A,0x031003BA,0x032003F0,0x020010E5,0x02101CA5,0x020104C8,0x021104F0,0x02010407, +0x0211042F,0x020013D0,0x0210ABA0,0x02001FA2,0x02101FAA,0x0200046C,0x0210046D,0x020010A0, +0x02102D00,0x0200A782,0x0210A783,0x030000C5,0x031000E5,0x0320212B,0x020004B4,0x021004B5, +0x02002CCE,0x02102CCF,0x0200A73A,0x0210A73B,0x0200FF21,0x0210FF41,0x020104B9,0x021104E1, +0x02001EA4,0x02101EA5,0x0200038F,0x021003CE,0x020024BE,0x021024D8,0x020003B0,0x02101FE3, +0x02000049,0x02100069,0x0201E91F,0x0211E941,0x02000246,0x02100247,0x02001F73,0x02101FC9, +0x02002C67,0x02102C68,0x02002166,0x02102176,0x02000100,0x02100101,0x020003E4,0x021003E5, +0x020013D2,0x0210ABA2,0x0200A79E,0x0210A79F,0x02001FA0,0x02101FA8,0x02010CB1,0x02110CF1, +0x02016E5D,0x02116E7D,0x020010C1,0x02102D21,0x0200A7F5,0x0210A7F6,0x020013BE,0x0210AB8E, +0x0200042C,0x0210044C,0x020010DD,0x02101C9D,0x02001F93,0x02101F9B,0x0200024E,0x0210024F, +0x020004BC,0x021004BD,0x02000176,0x02100177,0x020013AB,0x0210AB7B,0x020013E1,0x0210ABB1, +0x02000504,0x02100505,0x02001F03,0x02101F0B,0x0200A686,0x0210A687,0x0200054C,0x0210057C, +0x02016E4F,0x02116E6F,0x020010EB,0x02101CAB,0x020013D9,0x0210ABA9,0x0200023A,0x02102C65, +0x020004A8,0x021004A9,0x02002CDA,0x02102CDB,0x0300041E,0x0310043E,0x03201C82,0x02000394, +0x021003B4,0x02002C72,0x02102C73,0x02000510,0x02100511,0x02001E26,0x02101E27,0x0200A642, +0x0210A643,0x020004C9,0x021004CA,0x02000147,0x02100148,0x02001EB0,0x02101EB1,0x0200A75E, +0x0210A75F,0x0201058C,0x021105B3,0x0200A73C,0x0210A73D,0x020104D1,0x021104F9,0x020104D2, +0x021104FA,0x02010590,0x021105B7,0x02000055,0x02100075,0x02001F11,0x02101F19,0x0200037B, +0x021003FD,0x02001F31,0x02101F39,0x02002CBA,0x02102CBB,0x02000552,0x02100582,0x0200A68C, +0x0210A68D,0x02001E6E,0x02101E6F,0x02002167,0x02102177,0x020000DE,0x021000FE,0x02000190, +0x0210025B,0x02001EF8,0x02101EF9,0x020104B0,0x021104D8,0x02010C8E,0x02110CCE,0x02002C08, +0x02102C38,0x0200016E,0x0210016F,0x02016E5C,0x02116E7C,0x020010CD,0x02102D2D,0x02001F7B, +0x02101FEB,0x02001E90,0x02101E91,0x020013B3,0x0210AB83,0x020001D1,0x021001D2,0x02001F53, +0x02101F5B,0x02000126,0x02100127,0x02001E48,0x02101E49,0x02002C98,0x02102C99,0x02010400, +0x02110428,0x02010CA4,0x02110CE4,0x020118B9,0x021118D9,0x020013B0,0x0210AB80,0x02001ED8, +0x02101ED9,0x02001F74,0x02101FCA,0x04000422,0x04100442,0x04201C84,0x04301C85,0x02001EF2, +0x02101EF3,0x02002161,0x02102171,0x02010420,0x02110448,0x030001F1,0x031001F2,0x032001F3, +0x020001D7,0x021001D8,0x0200A68A,0x0210A68B,0x020003F7,0x021003F8,0x0200FF35,0x0210FF55, +0x020003DC,0x021003DD,0x02010C8D,0x02110CCD,0x02000418,0x02100438,0x02000212,0x02100213, +0x020004F0,0x021004F1,0x020024C1,0x021024DB,0x0200050A,0x0210050B,0x0201E917,0x0211E939, +0x0200A644,0x0210A645,0x02000537,0x02100567,0x020010AC,0x02102D0C,0x020010AD,0x02102D0D, +0x020024C7,0x021024E1,0x02000460,0x02100461,0x02002C2B,0x02102C5B,0x02016E56,0x02116E76, +0x020010C7,0x02102D27,0x02010406,0x0211042E,0x02002CD4,0x02102CD5,0x020010F1,0x02101CB1, +0x02001F7A,0x02101FEA,0x02002C0B,0x02102C3B,0x0200FF34,0x0210FF54,0x02000417,0x02100437, +0x020118BA,0x021118DA,0x030001F1,0x031001F2,0x032001F3,0x03000395,0x031003B5,0x032003F5, +0x020001B7,0x02100292,0x0200018F,0x02100259,0x02000538,0x02100568,0x0200A66A,0x0210A66B, +0x02001F32,0x02101F3A,0x02010421,0x02110449,0x0200052A,0x0210052B,0x02000425,0x02100445, +0x0200A784,0x0210A785,0x0200004F,0x0210006F,0x0200A664,0x0210A665,0x020104B1,0x021104D9, +0x020000C4,0x021000E4,0x02010CA5,0x02110CE5,0x02001EAA,0x02101EAB,0x020013D8,0x0210ABA8, +0x020010E4,0x02101CA4,0x020000D8,0x021000F8,0x030001CA,0x031001CB,0x032001CC,0x020010D1, +0x02101C91,0x02010575,0x0211059C,0x0200216C,0x0210217C,0x02002C02,0x02102C32,0x02016E5B, +0x02116E7B,0x0200A7D8,0x0210A7D9,0x0200FF22,0x0210FF42,0x02000404,0x02100454,0x020010B3, +0x02102D13,0x02001ECA,0x02101ECB,0x02010409,0x02110431,0x0201E918,0x0211E93A,0x020004F6, +0x021004F7,0x02002CC0,0x02102CC1,0x02001E20,0x02101E21,0x020104B7,0x021104DF,0x0200039B, +0x021003BB,0x02000196,0x02100269,0x02002C25,0x02102C55,0x0200A790,0x0210A791,0x0200A764, +0x0210A765,0x0200020C,0x0210020D,0x02001F94,0x02101F9C,0x020118B0,0x021118D0,0x02000182, +0x02100183,0x02002CAC,0x02102CAD,0x02001F80,0x02101F88,0x020024CC,0x021024E6,0x02000251, +0x02102C6D,0x02000480,0x02100481,0x020013E6,0x0210ABB6,0x020024B8,0x021024D2,0x0200054B, +0x0210057B,0x020013AA,0x0210AB7A,0x0300004B,0x0310006B,0x0320212A,0x02000261,0x0210A7AC, +0x02000141,0x02100142,0x0300039A,0x031003BA,0x032003F0,0x020010F8,0x02101CB8,0x020104C4, +0x021104EC,0x02000189,0x02100256,0x020010DE,0x02101C9E,0x02001E68,0x02101E69,0x020104BA, +0x021104E2,0x02001F04,0x02101F0C,0x02010578,0x0211059F,0x02000411,0x02100431,0x02010582, +0x021105A9,0x02000466,0x02100467,0x0200A736,0x0210A737,0x020000CB,0x021000EB,0x020010C0, +0x02102D20,0x02010427,0x0211044F,0x020001DE,0x021001DF,0x02002C92,0x02102C93,0x02000106, +0x02100107,0x02001E4E,0x02101E4F,0x0200042B,0x0210044B,0x0200A748,0x0210A749,0x02002C11, +0x02102C41,0x0200A7B3,0x0210AB53,0x0200053E,0x0210056E,0x0200014E,0x0210014F,0x020013D3, +0x0210ABA3,0x02000524,0x02100525,0x0200A65E,0x0210A65F,0x020001F8,0x021001F9,0x020004AE, +0x021004AF,0x0200A77E,0x0210A77F,0x030003A0,0x031003C0,0x032003D6,0x02000265,0x0210A78D, +0x0200FF2B,0x0210FF4B,0x02001FA1,0x02101FA9,0x02001EDE,0x02101EDF,0x020013B9,0x0210AB89, +0x02000168,0x02100169,0x02000226,0x02100227,0x020013F1,0x021013F9,0x02001E06,0x02101E07, +0x02000120,0x02100121,0x0201041D,0x02110445,0x02001F66,0x02101F6E,0x020010A6,0x02102D06, +0x02010C91,0x02110CD1,0x02001D8E,0x0210A7C6,0x02010C84,0x02110CC4,0x02010CAE,0x02110CEE, +0x020118A3,0x021118C3,0x02000048,0x02100068,0x020013CC,0x0210AB9C,0x0201E91E,0x0211E940, +0x0200038E,0x021003CD,0x02000531,0x02100561,]; +return SCE(t[i]); } @property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure { diff --git a/std/uni/package.d b/std/uni/package.d index dba109ff7d1..632704b59b3 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -8016,19 +8016,19 @@ if (isInputRange!S1 && isSomeChar!(ElementEncodingType!S1) if (idx2 != EMPTY_CASE_TRIE) {// both cased chars // adjust idx --> start of bucket - idx = idx - sTable[idx].n; - idx2 = idx2 - sTable[idx2].n; + idx = idx - sTable(idx).n; + idx2 = idx2 - sTable(idx2).n; if (idx == idx2)// one bucket, equivalent chars continue; else// not the same bucket - diff = sTable[idx].ch - sTable[idx2].ch; + diff = sTable(idx).ch - sTable(idx2).ch; } else - diff = sTable[idx - sTable[idx].n].ch - rhs; + diff = sTable(idx - sTable(idx).n).ch - rhs; } else if (idx2 != EMPTY_CASE_TRIE) { - diff = lhs - sTable[idx2 - sTable[idx2].n].ch; + diff = lhs - sTable(idx2 - sTable(idx2).n).ch; } // one of chars is not cased at all return diff; @@ -8331,7 +8331,7 @@ package(std) auto simpleCaseFoldings(dchar ch) @safe { return c; } - auto ch = sTable[idx].ch; + auto ch = sTable(idx).ch; return ch; } @@ -8367,7 +8367,7 @@ package(std) auto simpleCaseFoldings(dchar ch) @safe immutable idx = simpleCaseTrie[ch]; if (idx == EMPTY_CASE_TRIE) return Range(ch); - auto entry = sTable[idx]; + auto entry = sTable(idx); immutable start = idx - entry.n; return Range(start, entry.size); } diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 40d8d1c3bbb..df773bcd151 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -117,26 +117,37 @@ struct FullCaseEntry } } -enum mixedCCEntry = ` +/// 8 byte easy SimpleCaseEntry, will be compressed to SCE which bit packs values to 4 bytes struct SimpleCaseEntry { uint ch; - ubyte n, bucket;// n - number in bucket + ubyte n; // number in bucket + ubyte size; + bool isLower; + bool isUpper; +} -pure nothrow @nogc: +enum mixedCCEntry = ` +/// Simple Case Entry, wrapper around uint to extract bit fields from simpleCaseTable() +struct SCE +{ + uint x; - @property ubyte size() const - { - return bucket & 0x3F; - } - @property auto isLower() const + nothrow @nogc pure @safe: + + this(uint x) { - return bucket & 0x40; + this.x = x; } - @property auto isUpper() const + + this(uint ch, ubyte n, ubyte size) { - return bucket & 0x80; + this.x = ch | n << 20 | size << 24; } + + int ch() const { return this.x & 0x1FFFF; } + int n() const { return (this.x >> 20) & 0xF; } + int size() const { return this.x >> 24; } } /// Bit backed FullCaseEntry @@ -432,10 +443,13 @@ void loadCaseFolding(string f) sort(entry[0 .. size]); foreach (i, value; entry[0 .. size]) { - auto withFlags = cast(ubyte) size | (value in lowerCaseSet ? 0x40 : 0) - | (value in upperCaseSet ? 0x80 : 0); - simpleTable ~= SimpleCaseEntry(value, cast(ubyte) i, - cast(ubyte) withFlags); + simpleTable ~= SimpleCaseEntry( + value, + cast(ubyte) i, + cast(ubyte) size, + cast(bool) (value in lowerCaseSet), + cast(bool) (value in upperCaseSet) + ); } } @@ -882,17 +896,22 @@ void writeCaseFolding(File sink) { write(mixedCCEntry); - writeln("@property immutable(SimpleCaseEntry[]) simpleCaseTable()"); + writeln("SCE simpleCaseTable(size_t i)"); writeln("{"); - writeln("alias SCE = SimpleCaseEntry;"); - writeln("static immutable SCE[] t = ["); + writef("static immutable uint[%d] t = [", simpleTable.length); foreach (i, v; simpleTable) { - writef("SCE(0x%04x, %s, 0x%0x),", v.ch, v.n, v.bucket); - if (i % 4 == 0) writeln(); + if (i % 8 == 0) writeln(); + writef("0x%08X,", SCE(v.ch, v.n, v.size).x); } + + // Inspect max integer size, so efficient bit packing can be found: + stderr.writefln("max n: %X", simpleTable.maxElement!(x => x.n).n); // n: 2-bit + stderr.writefln("max ch: %X", simpleTable.maxElement!(x => x.ch).ch); // ch: 17-bit + stderr.writefln("max size: %X", simpleTable.maxElement!(x => x.size).size); // size: 3-bit + writeln("];"); - writeln("return t;"); + writeln("return SCE(t[i]);"); writeln("}"); writeln("@property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure"); writeln("{"); From 2bb54df391fbf8d57f1c861ee9e0076faec03ad9 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Tue, 9 Jan 2024 00:27:22 +0100 Subject: [PATCH 159/327] Move floatTraits to std.math.traits --- std/complex.d | 2 +- std/conv.d | 8 +- std/math/algebraic.d | 2 +- std/math/exponential.d | 44 +++++----- std/math/operations.d | 21 +++-- std/math/package.d | 166 ------------------------------------- std/math/rounding.d | 4 +- std/math/traits.d | 179 ++++++++++++++++++++++++++++++++++++++-- std/math/trigonometry.d | 5 +- 9 files changed, 211 insertions(+), 220 deletions(-) diff --git a/std/complex.d b/std/complex.d index 347e351c26a..60746f98ef7 100644 --- a/std/complex.d +++ b/std/complex.d @@ -1892,7 +1892,7 @@ Complex!T pow(T)(const T x, Complex!T n) @trusted pure nothrow @nogc @safe pure nothrow @nogc unittest { import std.meta : AliasSeq; - import std.math : RealFormat, floatTraits; + import std.math.traits : floatTraits, RealFormat; static foreach (T; AliasSeq!(float, double, real)) {{ static if (floatTraits!T.realFormat == RealFormat.ibmExtended) diff --git a/std/conv.d b/std/conv.d index 23b33c4d78c..5d02df08bf9 100644 --- a/std/conv.d +++ b/std/conv.d @@ -1804,7 +1804,7 @@ if (!is(S : T) && isAssociativeArray!S && } static void testFloatingToIntegral(Floating, Integral)() { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; bool convFails(Source, Target, E)(Source src) { @@ -3430,7 +3430,7 @@ if (isFloatingPoint!Target && !is(Target == enum) && Target result = cast(Target) (sign ? -ldval : ldval); // if overflow occurred - import std.math : isFinite; + import std.math.traits : isFinite; enforce(isFinite(result), new ConvException("Range error")); advanceSource(); @@ -3598,7 +3598,7 @@ if (isFloatingPoint!Target && !is(Target == enum) && @system unittest { // @system because strtod is not @safe. - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; static if (floatTraits!real.realFormat == RealFormat.ieeeDouble) { @@ -3682,7 +3682,7 @@ if (isFloatingPoint!Target && !is(Target == enum) && { import core.stdc.errno; import core.stdc.stdlib; - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; errno = 0; // In case it was set by another unittest in a different module. struct longdouble diff --git a/std/math/algebraic.d b/std/math/algebraic.d index 99990716460..fd305231d08 100644 --- a/std/math/algebraic.d +++ b/std/math/algebraic.d @@ -308,7 +308,7 @@ if (isFloatingPoint!T) // If both are huge, avoid overflow by scaling by 2^^-N. // If both are tiny, avoid underflow by scaling by 2^^N. import core.math : fabs, sqrt; - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; alias F = floatTraits!T; diff --git a/std/math/exponential.d b/std/math/exponential.d index 2c28ebaf017..0ca12f8e337 100644 --- a/std/math/exponential.d +++ b/std/math/exponential.d @@ -1002,8 +1002,7 @@ float exp(float x) @safe pure nothrow @nogc { return __ctfe ? cast(float) exp(ca private T expImpl(T)(T x) @safe pure nothrow @nogc { - import std.math : floatTraits, RealFormat; - import std.math.traits : isNaN; + import std.math.traits : floatTraits, RealFormat, isNaN; import std.math.rounding : floor; import std.math.algebraic : poly; import std.math.constants : LOG2E; @@ -1143,7 +1142,7 @@ private T expImpl(T)(T x) @safe pure nothrow @nogc @safe @nogc nothrow unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.math.operations : NaN, feqrel, isClose; import std.math.constants : E; import std.math.traits : isIdentical; @@ -1517,7 +1516,7 @@ L_largenegative: private T expm1Impl(T)(T x) @safe pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.math.rounding : floor; import std.math.algebraic : poly; import std.math.constants : LN2; @@ -1909,8 +1908,7 @@ L_was_nan: private T exp2Impl(T)(T x) @nogc @safe pure nothrow { - import std.math : floatTraits, RealFormat; - import std.math.traits : isNaN; + import std.math.traits : floatTraits, RealFormat, isNaN; import std.math.rounding : floor; import std.math.algebraic : poly; @@ -2098,8 +2096,7 @@ private T exp2Impl(T)(T x) @nogc @safe pure nothrow T frexp(T)(const T value, out int exp) @trusted pure nothrow @nogc if (isFloatingPoint!T) { - import std.math : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; - import std.math.traits : isSubnormal; + import std.math.traits : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB, isSubnormal; if (__ctfe) { @@ -2353,8 +2350,7 @@ if (isFloatingPoint!T) @safe unittest { - import std.math : floatTraits, RealFormat; - import std.math.traits : isIdentical; + import std.math.traits : floatTraits, RealFormat, isIdentical; import std.meta : AliasSeq; import std.typecons : tuple, Tuple; @@ -2486,7 +2482,7 @@ if (isFloatingPoint!T) int ilogb(T)(const T x) @trusted pure nothrow @nogc if (isFloatingPoint!T) { - import std.math : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; + import std.math.traits : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; import core.bitop : bsr; alias F = floatTraits!T; @@ -2681,7 +2677,7 @@ alias FP_ILOGBNAN = core.stdc.math.FP_ILOGBNAN; @safe nothrow @nogc unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.math.operations : nextUp; import std.meta : AliasSeq; import std.typecons : Tuple; @@ -2778,7 +2774,7 @@ float ldexp(float n, int exp) @safe pure nothrow @nogc { return core.math.ldex @safe pure nothrow @nogc unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; static if (floatTraits!(real).realFormat == RealFormat.ieeeExtended || floatTraits!(real).realFormat == RealFormat.ieeeExtended53 || @@ -2866,7 +2862,7 @@ private // Coefficients shared across log(), log2(), log10(), log1p(). template LogCoeffs(T) { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; static if (floatTraits!T.realFormat == RealFormat.ieeeQuadruple) { @@ -3179,8 +3175,7 @@ private T logImpl(T, bool LOG1P = false)(T x) @safe pure nothrow @nogc { import std.math.constants : SQRT1_2; import std.math.algebraic : poly; - import std.math.traits : isInfinity, isNaN, signbit; - import std.math : floatTraits, RealFormat; + import std.math.traits : isInfinity, isNaN, signbit, floatTraits, RealFormat; alias coeffs = LogCoeffs!T; alias F = floatTraits!T; @@ -3306,7 +3301,7 @@ private T logImpl(T, bool LOG1P = false)(T x) @safe pure nothrow @nogc @safe @nogc nothrow unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.meta : AliasSeq; static void testLog(T)(T[2][] vals) @@ -3452,8 +3447,7 @@ private T log10Impl(T)(T x) @safe pure nothrow @nogc { import std.math.constants : SQRT1_2; import std.math.algebraic : poly; - import std.math.traits : isNaN, isInfinity, signbit; - import std.math : floatTraits, RealFormat; + import std.math.traits : isNaN, isInfinity, signbit, floatTraits, RealFormat; alias coeffs = LogCoeffs!T; alias F = floatTraits!T; @@ -3558,7 +3552,7 @@ Ldone: @safe @nogc nothrow unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.meta : AliasSeq; static void testLog10(T)(T[2][] vals) @@ -3710,7 +3704,7 @@ private T log1pImpl(T)(T x) @safe pure nothrow @nogc import std.math.traits : isNaN, isInfinity, signbit; import std.math.algebraic : poly; import std.math.constants : SQRT1_2, SQRT2; - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; // Special cases. if (isNaN(x) || x == 0.0) @@ -3746,7 +3740,7 @@ private T log1pImpl(T)(T x) @safe pure nothrow @nogc @safe @nogc nothrow unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.meta : AliasSeq; static void testLog1p(T)(T[2][] vals) @@ -3891,7 +3885,7 @@ private T log2Impl(T)(T x) @safe pure nothrow @nogc import std.math.traits : isNaN, isInfinity, signbit; import std.math.constants : SQRT1_2, LOG2E; import std.math.algebraic : poly; - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; alias coeffs = LogCoeffs!T; alias F = floatTraits!T; @@ -3972,7 +3966,7 @@ Ldone: @safe @nogc nothrow unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.meta : AliasSeq; static void testLog2(T)(T[2][] vals) @@ -4172,7 +4166,7 @@ private T logbImpl(T)(T x) @trusted pure nothrow @nogc @safe @nogc nothrow unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.meta : AliasSeq; static void testLogb(T)(T[2][] vals) diff --git a/std/math/operations.d b/std/math/operations.d index 4bf19ee3da9..d456e29adb6 100644 --- a/std/math/operations.d +++ b/std/math/operations.d @@ -44,7 +44,7 @@ import std.traits : CommonType, isFloatingPoint, isIntegral, Unqual; */ real NaN(ulong payload) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; alias F = floatTraits!(real); static if (F.realFormat == RealFormat.ieeeExtended || @@ -136,7 +136,7 @@ real NaN(ulong payload) @trusted pure nothrow @nogc @system pure nothrow @nogc unittest // not @safe because taking address of local. { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; static if (floatTraits!(real).realFormat == RealFormat.ieeeDouble) { @@ -159,7 +159,7 @@ real NaN(ulong payload) @trusted pure nothrow @nogc */ ulong getNaNPayload(real x) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; // assert(isNaN(x)); alias F = floatTraits!(real); @@ -283,7 +283,7 @@ debug(UnitTest) */ real nextUp(real x) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; + import std.math.traits : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; alias F = floatTraits!(real); static if (F.realFormat != RealFormat.ieeeDouble) @@ -522,8 +522,7 @@ float nextDown(float x) @safe pure nothrow @nogc @safe pure nothrow @nogc unittest { - import std.math : floatTraits, RealFormat; - import std.math.traits : isIdentical; + import std.math.traits : floatTraits, RealFormat, isIdentical; static if (floatTraits!(real).realFormat == RealFormat.ieeeExtended || floatTraits!(real).realFormat == RealFormat.ieeeDouble || @@ -865,7 +864,7 @@ real fma(real x, real y, real z) @safe pure nothrow @nogc { return (x * y) + z; int feqrel(X)(const X x, const X y) @trusted pure nothrow @nogc if (isFloatingPoint!(X)) { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import core.math : fabs; /* Public Domain. Author: Don Clugston, 18 Aug 2005. @@ -1495,7 +1494,7 @@ private template FloatingPointBaseType(T) int cmp(T)(const(T) x, const(T) y) @nogc @trusted pure nothrow if (isFloatingPoint!T) { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; alias F = floatTraits!T; @@ -1723,7 +1722,7 @@ if (isFloatingPoint!T) FloatingPointBitpattern!T extractBitpattern(T)(const(T) value) @trusted if (isFloatingPoint!T) { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; T val = value; FloatingPointBitpattern!T ret; @@ -1895,7 +1894,7 @@ if (isFloatingPoint!T) @safe pure unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; alias F = floatTraits!real; static if (F.realFormat == RealFormat.ieeeExtended) @@ -1946,7 +1945,7 @@ if (isFloatingPoint!T) @safe pure unittest { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.math.exponential : log2; alias F = floatTraits!real; diff --git a/std/math/package.d b/std/math/package.d index 614f4d36fbb..0d1ecc35642 100644 --- a/std/math/package.d +++ b/std/math/package.d @@ -321,169 +321,3 @@ else static assert(real.mant_dig == 53 || real.mant_dig == 113, "Only 64-bit and 128-bit reals are supported for BigEndian CPUs."); } - -// Underlying format exposed through floatTraits -enum RealFormat -{ - ieeeHalf, - ieeeSingle, - ieeeDouble, - ieeeExtended, // x87 80-bit real - ieeeExtended53, // x87 real rounded to precision of double. - ibmExtended, // IBM 128-bit extended - ieeeQuadruple, -} - -// Constants used for extracting the components of the representation. -// They supplement the built-in floating point properties. -template floatTraits(T) -{ - import std.traits : Unqual; - - // EXPMASK is a ushort mask to select the exponent portion (without sign) - // EXPSHIFT is the number of bits the exponent is left-shifted by in its ushort - // EXPBIAS is the exponent bias - 1 (exp == EXPBIAS yields ×2^-1). - // EXPPOS_SHORT is the index of the exponent when represented as a ushort array. - // SIGNPOS_BYTE is the index of the sign when represented as a ubyte array. - // RECIP_EPSILON is the value such that (smallest_subnormal) * RECIP_EPSILON == T.min_normal - enum Unqual!T RECIP_EPSILON = (1/T.epsilon); - static if (T.mant_dig == 24) - { - // Single precision float - enum ushort EXPMASK = 0x7F80; - enum ushort EXPSHIFT = 7; - enum ushort EXPBIAS = 0x3F00; - enum uint EXPMASK_INT = 0x7F80_0000; - enum uint MANTISSAMASK_INT = 0x007F_FFFF; - enum realFormat = RealFormat.ieeeSingle; - version (LittleEndian) - { - enum EXPPOS_SHORT = 1; - enum SIGNPOS_BYTE = 3; - } - else - { - enum EXPPOS_SHORT = 0; - enum SIGNPOS_BYTE = 0; - } - } - else static if (T.mant_dig == 53) - { - static if (T.sizeof == 8) - { - // Double precision float, or real == double - enum ushort EXPMASK = 0x7FF0; - enum ushort EXPSHIFT = 4; - enum ushort EXPBIAS = 0x3FE0; - enum uint EXPMASK_INT = 0x7FF0_0000; - enum uint MANTISSAMASK_INT = 0x000F_FFFF; // for the MSB only - enum ulong MANTISSAMASK_LONG = 0x000F_FFFF_FFFF_FFFF; - enum realFormat = RealFormat.ieeeDouble; - version (LittleEndian) - { - enum EXPPOS_SHORT = 3; - enum SIGNPOS_BYTE = 7; - } - else - { - enum EXPPOS_SHORT = 0; - enum SIGNPOS_BYTE = 0; - } - } - else static if (T.sizeof == 12) - { - // Intel extended real80 rounded to double - enum ushort EXPMASK = 0x7FFF; - enum ushort EXPSHIFT = 0; - enum ushort EXPBIAS = 0x3FFE; - enum realFormat = RealFormat.ieeeExtended53; - version (LittleEndian) - { - enum EXPPOS_SHORT = 4; - enum SIGNPOS_BYTE = 9; - } - else - { - enum EXPPOS_SHORT = 0; - enum SIGNPOS_BYTE = 0; - } - } - else - static assert(false, "No traits support for " ~ T.stringof); - } - else static if (T.mant_dig == 64) - { - // Intel extended real80 - enum ushort EXPMASK = 0x7FFF; - enum ushort EXPSHIFT = 0; - enum ushort EXPBIAS = 0x3FFE; - enum realFormat = RealFormat.ieeeExtended; - version (LittleEndian) - { - enum EXPPOS_SHORT = 4; - enum SIGNPOS_BYTE = 9; - } - else - { - enum EXPPOS_SHORT = 0; - enum SIGNPOS_BYTE = 0; - } - } - else static if (T.mant_dig == 113) - { - // Quadruple precision float - enum ushort EXPMASK = 0x7FFF; - enum ushort EXPSHIFT = 0; - enum ushort EXPBIAS = 0x3FFE; - enum realFormat = RealFormat.ieeeQuadruple; - version (LittleEndian) - { - enum EXPPOS_SHORT = 7; - enum SIGNPOS_BYTE = 15; - } - else - { - enum EXPPOS_SHORT = 0; - enum SIGNPOS_BYTE = 0; - } - } - else static if (T.mant_dig == 106) - { - // IBM Extended doubledouble - enum ushort EXPMASK = 0x7FF0; - enum ushort EXPSHIFT = 4; - enum realFormat = RealFormat.ibmExtended; - - // For IBM doubledouble the larger magnitude double comes first. - // It's really a double[2] and arrays don't index differently - // between little and big-endian targets. - enum DOUBLEPAIR_MSB = 0; - enum DOUBLEPAIR_LSB = 1; - - // The exponent/sign byte is for most significant part. - version (LittleEndian) - { - enum EXPPOS_SHORT = 3; - enum SIGNPOS_BYTE = 7; - } - else - { - enum EXPPOS_SHORT = 0; - enum SIGNPOS_BYTE = 0; - } - } - else - static assert(false, "No traits support for " ~ T.stringof); -} - -// These apply to all floating-point types -version (LittleEndian) -{ - enum MANTISSA_LSB = 0; - enum MANTISSA_MSB = 1; -} -else -{ - enum MANTISSA_LSB = 1; - enum MANTISSA_MSB = 0; -} diff --git a/std/math/rounding.d b/std/math/rounding.d index 9cf4efd564b..16b02259721 100644 --- a/std/math/rounding.d +++ b/std/math/rounding.d @@ -547,7 +547,7 @@ long lrint(real x) @trusted pure nothrow @nogc } else { - import std.math : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; + import std.math.traits : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; alias F = floatTraits!(real); static if (F.realFormat == RealFormat.ieeeDouble) @@ -892,7 +892,7 @@ long rndtol(float x) @safe pure nothrow @nogc { return rndtol(cast(real) x); } // Helper for floor/ceil T floorImpl(T)(const T x) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; alias F = floatTraits!(T); // Take care not to trigger library calls from the compiler, diff --git a/std/math/traits.d b/std/math/traits.d index 2841bad219f..81ab1b789db 100644 --- a/std/math/traits.d +++ b/std/math/traits.d @@ -137,7 +137,7 @@ if (isFloatingPoint!(X)) */ bool isFinite(X)(X x) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; static if (__traits(isFloating, X)) if (__ctfe) @@ -202,7 +202,7 @@ bool isFinite(X)(X x) @trusted pure nothrow @nogc */ bool isNormal(X)(X x) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; static if (__traits(isFloating, X)) if (__ctfe) @@ -264,7 +264,7 @@ bool isNormal(X)(X x) @trusted pure nothrow @nogc */ bool isSubnormal(X)(X x) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; + import std.math.traits : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; static if (__traits(isFloating, X)) if (__ctfe) @@ -344,7 +344,7 @@ bool isSubnormal(X)(X x) @trusted pure nothrow @nogc bool isInfinity(X)(X x) @nogc @trusted pure nothrow if (isFloatingPoint!(X)) { - import std.math : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; + import std.math.traits : floatTraits, RealFormat, MANTISSA_MSB, MANTISSA_LSB; alias F = floatTraits!(X); static if (F.realFormat == RealFormat.ieeeSingle) @@ -466,7 +466,7 @@ if (isFloatingPoint!(X)) */ bool isIdentical(real x, real y) @trusted pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; // We're doing a bitwise comparison so the endianness is irrelevant. long* pxs = cast(long *)&x; @@ -510,7 +510,7 @@ bool isIdentical(real x, real y) @trusted pure nothrow @nogc */ int signbit(X)(X x) @nogc @trusted pure nothrow { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; if (__ctfe) { @@ -594,7 +594,7 @@ Returns: R copysign(R, X)(R to, X from) @trusted pure nothrow @nogc if (isFloatingPoint!(R) && isFloatingPoint!(X)) { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; if (__ctfe) { @@ -851,3 +851,168 @@ if (isNumeric!X) }} } +// Underlying format exposed through floatTraits +enum RealFormat +{ + ieeeHalf, + ieeeSingle, + ieeeDouble, + ieeeExtended, // x87 80-bit real + ieeeExtended53, // x87 real rounded to precision of double. + ibmExtended, // IBM 128-bit extended + ieeeQuadruple, +} + +// Constants used for extracting the components of the representation. +// They supplement the built-in floating point properties. +template floatTraits(T) +{ + import std.traits : Unqual; + + // EXPMASK is a ushort mask to select the exponent portion (without sign) + // EXPSHIFT is the number of bits the exponent is left-shifted by in its ushort + // EXPBIAS is the exponent bias - 1 (exp == EXPBIAS yields ×2^-1). + // EXPPOS_SHORT is the index of the exponent when represented as a ushort array. + // SIGNPOS_BYTE is the index of the sign when represented as a ubyte array. + // RECIP_EPSILON is the value such that (smallest_subnormal) * RECIP_EPSILON == T.min_normal + enum Unqual!T RECIP_EPSILON = (1/T.epsilon); + static if (T.mant_dig == 24) + { + // Single precision float + enum ushort EXPMASK = 0x7F80; + enum ushort EXPSHIFT = 7; + enum ushort EXPBIAS = 0x3F00; + enum uint EXPMASK_INT = 0x7F80_0000; + enum uint MANTISSAMASK_INT = 0x007F_FFFF; + enum realFormat = RealFormat.ieeeSingle; + version (LittleEndian) + { + enum EXPPOS_SHORT = 1; + enum SIGNPOS_BYTE = 3; + } + else + { + enum EXPPOS_SHORT = 0; + enum SIGNPOS_BYTE = 0; + } + } + else static if (T.mant_dig == 53) + { + static if (T.sizeof == 8) + { + // Double precision float, or real == double + enum ushort EXPMASK = 0x7FF0; + enum ushort EXPSHIFT = 4; + enum ushort EXPBIAS = 0x3FE0; + enum uint EXPMASK_INT = 0x7FF0_0000; + enum uint MANTISSAMASK_INT = 0x000F_FFFF; // for the MSB only + enum ulong MANTISSAMASK_LONG = 0x000F_FFFF_FFFF_FFFF; + enum realFormat = RealFormat.ieeeDouble; + version (LittleEndian) + { + enum EXPPOS_SHORT = 3; + enum SIGNPOS_BYTE = 7; + } + else + { + enum EXPPOS_SHORT = 0; + enum SIGNPOS_BYTE = 0; + } + } + else static if (T.sizeof == 12) + { + // Intel extended real80 rounded to double + enum ushort EXPMASK = 0x7FFF; + enum ushort EXPSHIFT = 0; + enum ushort EXPBIAS = 0x3FFE; + enum realFormat = RealFormat.ieeeExtended53; + version (LittleEndian) + { + enum EXPPOS_SHORT = 4; + enum SIGNPOS_BYTE = 9; + } + else + { + enum EXPPOS_SHORT = 0; + enum SIGNPOS_BYTE = 0; + } + } + else + static assert(false, "No traits support for " ~ T.stringof); + } + else static if (T.mant_dig == 64) + { + // Intel extended real80 + enum ushort EXPMASK = 0x7FFF; + enum ushort EXPSHIFT = 0; + enum ushort EXPBIAS = 0x3FFE; + enum realFormat = RealFormat.ieeeExtended; + version (LittleEndian) + { + enum EXPPOS_SHORT = 4; + enum SIGNPOS_BYTE = 9; + } + else + { + enum EXPPOS_SHORT = 0; + enum SIGNPOS_BYTE = 0; + } + } + else static if (T.mant_dig == 113) + { + // Quadruple precision float + enum ushort EXPMASK = 0x7FFF; + enum ushort EXPSHIFT = 0; + enum ushort EXPBIAS = 0x3FFE; + enum realFormat = RealFormat.ieeeQuadruple; + version (LittleEndian) + { + enum EXPPOS_SHORT = 7; + enum SIGNPOS_BYTE = 15; + } + else + { + enum EXPPOS_SHORT = 0; + enum SIGNPOS_BYTE = 0; + } + } + else static if (T.mant_dig == 106) + { + // IBM Extended doubledouble + enum ushort EXPMASK = 0x7FF0; + enum ushort EXPSHIFT = 4; + enum realFormat = RealFormat.ibmExtended; + + // For IBM doubledouble the larger magnitude double comes first. + // It's really a double[2] and arrays don't index differently + // between little and big-endian targets. + enum DOUBLEPAIR_MSB = 0; + enum DOUBLEPAIR_LSB = 1; + + // The exponent/sign byte is for most significant part. + version (LittleEndian) + { + enum EXPPOS_SHORT = 3; + enum SIGNPOS_BYTE = 7; + } + else + { + enum EXPPOS_SHORT = 0; + enum SIGNPOS_BYTE = 0; + } + } + else + static assert(false, "No traits support for " ~ T.stringof); +} + +// These apply to all floating-point types +version (LittleEndian) +{ + enum MANTISSA_LSB = 0; + enum MANTISSA_MSB = 1; +} +else +{ + enum MANTISSA_LSB = 1; + enum MANTISSA_MSB = 0; +} diff --git a/std/math/trigonometry.d b/std/math/trigonometry.d index a3d04c60402..4f5f5c50e55 100644 --- a/std/math/trigonometry.d +++ b/std/math/trigonometry.d @@ -307,7 +307,7 @@ Lret: private T tanImpl(T)(T x) @safe pure nothrow @nogc { - import std.math : floatTraits, RealFormat; + import std.math.traits : floatTraits, RealFormat; import std.math.constants : PI, PI_4; import std.math.rounding : floor; import std.math.algebraic : poly; @@ -675,8 +675,7 @@ float atan(float x) @safe pure nothrow @nogc { return __ctfe ? cast(float) atan( private T atanImpl(T)(T x) @safe pure nothrow @nogc { - import std.math : floatTraits, RealFormat; - import std.math.traits : copysign, isInfinity, signbit; + import std.math.traits : floatTraits, RealFormat, copysign, isInfinity, signbit; import std.math.constants : PI_2, PI_4; import std.math.algebraic : poly; From af132bedb1cc596aa313f7ac71b282bddeacd62e Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Tue, 9 Jan 2024 15:47:21 +0100 Subject: [PATCH 160/327] std.regex: put disassemble function in debug version --- std/regex/internal/backtracking.d | 2 +- std/regex/internal/ir.d | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/std/regex/internal/backtracking.d b/std/regex/internal/backtracking.d index ac73f70f0f3..a488e0660d0 100644 --- a/std/regex/internal/backtracking.d +++ b/std/regex/internal/backtracking.d @@ -682,7 +682,7 @@ final: while (prevStack()) {} return re.ir[pc].data; default: - debug printBytecode(re.ir[0..$]); + debug(std_regex_debug) printBytecode(re.ir[0..$]); assert(0); L_backtrack: if (!popState()) diff --git a/std/regex/internal/ir.d b/std/regex/internal/ir.d index 069d75f8822..04b902fc39d 100644 --- a/std/regex/internal/ir.d +++ b/std/regex/internal/ir.d @@ -403,7 +403,7 @@ struct Group(DataIndex) } //debugging tool, prints out instruction along with opcodes -@trusted string disassemble(in Bytecode[] irb, uint pc, in NamedGroup[] dict=[]) +debug(std_regex_parser) @trusted string disassemble(in Bytecode[] irb, uint pc, in NamedGroup[] dict=[]) { import std.array : appender; import std.format.write : formattedWrite; @@ -467,7 +467,7 @@ struct Group(DataIndex) } //disassemble the whole chunk -@trusted void printBytecode()(in Bytecode[] slice, in NamedGroup[] dict=[]) +debug(std_regex_parser) @trusted void printBytecode()(in Bytecode[] slice, in NamedGroup[] dict=[]) { import std.stdio : writeln; for (uint pc=0; pc Date: Wed, 10 Jan 2024 16:46:22 +0100 Subject: [PATCH 161/327] Reduce imports needed to print floats (#8890) --- std/format/internal/floats.d | 14 ++++++++++---- std/format/internal/write.d | 7 ++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/std/format/internal/floats.d b/std/format/internal/floats.d index afe0bfa3cb5..88b9d22d7d9 100644 --- a/std/format/internal/floats.d +++ b/std/format/internal/floats.d @@ -28,6 +28,15 @@ if (is(T == float) || is(T == double) return w.data; } +/// Returns: whether `c` is a supported format specifier for floats +package(std.format) bool isFloatSpec(char c) nothrow @nogc pure @safe +{ + return c == 'a' || c == 'A' + || c == 'e' || c == 'E' + || c == 'f' || c == 'F' + || c == 'g' || c == 'G'; +} + package(std.format) void printFloat(Writer, T, Char)(auto ref Writer w, const(T) val, FormatSpec!Char f) if (is(T == float) || is(T == double) || (is(T == real) && (T.mant_dig == double.mant_dig || T.mant_dig == 64))) @@ -43,10 +52,7 @@ if (is(T == float) || is(T == double) if (sgn == "" && f.flPlus) sgn = "+"; if (sgn == "" && f.flSpace) sgn = " "; - assert(f.spec == 'a' || f.spec == 'A' - || f.spec == 'e' || f.spec == 'E' - || f.spec == 'f' || f.spec == 'F' - || f.spec == 'g' || f.spec == 'G', "unsupported format specifier"); + assert(isFloatSpec(f.spec), "unsupported format specifier"); bool is_upper = f.spec == 'A' || f.spec == 'E' || f.spec=='F' || f.spec=='G'; // special treatment for nan and inf diff --git a/std/format/internal/write.d b/std/format/internal/write.d index 85954faa35e..16c7a51d8c6 100644 --- a/std/format/internal/write.d +++ b/std/format/internal/write.d @@ -570,9 +570,9 @@ void formatValueImpl(Writer, T, Char)(auto ref Writer w, const(T) obj, scope const ref FormatSpec!Char f) if (is(FloatingPointTypeOf!T) && !is(T == enum) && !hasToString!(T, Char)) { - import std.algorithm.searching : find; import std.format : enforceFmt; import std.range.primitives : put; + import std.format.internal.floats : printFloat, isFloatSpec; FloatingPointTypeOf!T val = obj; const char spec = f.spec; @@ -597,11 +597,9 @@ if (is(FloatingPointTypeOf!T) && !is(T == enum) && !hasToString!(T, Char)) return; } - enforceFmt(find("fgFGaAeEs", spec).length, - "incompatible format character for floating point argument: %" ~ spec); - FormatSpec!Char fs = f; // fs is copy for change its values. fs.spec = spec == 's' ? 'g' : spec; + enforceFmt(isFloatSpec(fs.spec), "incompatible format character for floating point argument: %" ~ spec); static if (is(T == float) || is(T == double) || (is(T == real) && (T.mant_dig == double.mant_dig || T.mant_dig == 64))) @@ -631,7 +629,6 @@ if (is(FloatingPointTypeOf!T) && !is(T == enum) && !hasToString!(T, Char)) tval = -doubleLowest; } - import std.format.internal.floats : printFloat; printFloat(w, tval, fs); } From fa7f22b2cf66d991d8dcf2b0cc0dbeba89a6ea9f Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 10 Jan 2024 16:48:25 +0100 Subject: [PATCH 162/327] std.uni: Use dstring for dchar tables (#8889) * std.uni: use dstring for upper/lower/title tables * std.uni: make tables use dstring * Add space after cast for Dscanner * Remove redundant semicolons --- std/internal/unicode_comp.d | 408 ++++---- std/internal/unicode_decomp.d | 1698 ++++++++++++++++++++++++++++++- std/internal/unicode_tables.d | 650 +++++++++++- tools/unicode_table_generator.d | 95 +- 4 files changed, 2576 insertions(+), 275 deletions(-) diff --git a/std/internal/unicode_comp.d b/std/internal/unicode_comp.d index 160f2343ae2..dd0e5ff16f1 100644 --- a/std/internal/unicode_comp.d +++ b/std/internal/unicode_comp.d @@ -10,110 +10,108 @@ static if (size_t.sizeof == 4) enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)([ 0x0, 0x40, 0x5c0], [ 0x100, 0xb00, 0x10a0], [ 0x2020100, 0x4020302, 0x6020205, 0x9080702, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x40003, 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x70006, 0x8, 0x9, 0xb000a, 0x0, 0xd000c, 0xf000e, 0x10, 0x0, 0x110000, 0x130012, 0x14, 0x15, 0x170016, 0x180000, 0x19, 0x180000, 0x1b001a, 0x180000, 0x1a, 0x180000, 0x1a, 0x180000, 0x1a, 0x0, 0x1a, 0x180000, 0x1c, 0x180000, 0x1a, 0x1d0000, 0x1a, 0x0, 0x1e, 0x1f0000, 0x20, 0x210000, 0x22, 0x240023, 0x250000, 0x26, 0x27, 0x280000, 0x0, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b, 0x0, 0x0, 0x2d, 0x0, 0x0, 0x2e0000, 0x0, 0x2f0000, 0x0, 0x0, 0x0, 0x30, 0x310000, 0x320000, 0x33, 0x340000, 0x360035, 0x370000, 0x380000, 0x390000, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x3d003c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x410000, 0x0, 0x420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450000, 0x46, 0x470000, 0x0, 0x0, 0x0, 0x0, 0x490048, 0x0, 0x0, 0x4a0035, 0x4b0000, 0x4c, 0x4d0000, 0x4e, 0x0, 0x0, 0x4f0000, 0x510050, 0x0, 0x0, 0x0, 0x1a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x530000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x540000, 0x0, 0x0, 0x0, 0x550000, 0x0, 0x560000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x580057, 0x0, 0x0, 0x590000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5b0000, 0x5c0000, 0x0, 0x5d, 0x5e, 0x0, 0x0, 0x5f0048, 0x600000, 0x0, 0x620061, 0x4d0000, 0x0, 0x63, 0x640000, 0x0, 0x0, 0x650000, 0x660000, 0x67001a, 0x0, 0x0, 0x0, 0x68, 0x0, 0x69, 0x0, 0x0, 0x410000, 0x6a, 0x410000, 0x0, 0x6b0000, 0x0, 0x6c0000, 0x0, 0x0, 0x0, 0x600000, 0x0, 0x0, 0x0, 0x6d0000, 0x6e, 0x0, 0x4e0000, 0x2c0000, 0x6f, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x410000, 0x0, 0x0, 0x0, 0x0, 0x71, 0x72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x740000, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x760000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x780000, 0x7a0079, 0x0, 0x0, 0x7b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d007c, 0x0, 0x7e, 0x0, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f0000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x810000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x0, 0x83, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xdcdce8e6, 0xd8e8dcdc, 0xdcdcdcdc, 0xdccacadc, 0xcadcdcdc, 0xdcdcdcca, 0xdcdcdcdc, 0xdcdcdcdc, 0x1010101, 0xdcdcdc01, 0xe6e6e6dc, 0xe6e6e6e6, 0xdce6f0e6, 0xe6e6dcdc, 0xdcdce6, 0xdce6e6e6, 0xe6dcdcdc, 0xe6dcdce8, 0xe9eaeae9, 0xe6e9eaea, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6dc00, 0xe6dce6e6, 0xdcdee6e6, 0xe6e6e6e6, 0xdcdce6e6, 0xdcdcdcdc, 0xe6dce6e6, 0xe6e4dee6, 0xd0c0b0a, 0x11100f0e, 0x14131312, 0x17001615, 0x191800, 0x1200dce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0x201f1e, 0x0, 0x0, 0x0, 0x1b000000, 0x1f1e1d1c, 0xe6222120, 0xe6dcdce6, 0xe6e6e6e6, 0xdce6e6dc, 0x0, 0x0, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6e6e6, 0xe60000e6, 0xdce6e6e6, 0xe60000e6, 0xe6dc00e6, 0xdce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6dce6, 0xdce6e6dc, 0xdce6dcdc, 0xe6dce6dc, 0xe6dce6e6, 0xe6dce6dc, 0xe6e6dc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6e6, 0xe6dce6e6, 0x0, 0x0, 0xdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe600e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e600, 0xe6e6e600, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdce6, 0xe6e6e6e6, 0x0, 0x0, 0xe6e60000, 0xdce6e6e6, 0xdcdcdcdc, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xdc00e6e6, 0xe6dce6e6, 0xe6e6dce6, 0xdcdcdce6, 0xe61d1c1b, 0xe6dce6e6, 0xe6dcdce6, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x900, 0xe6dce600, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x0, 0x0, 0x0, 0x900, 0x0, 0x5b5400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x9, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96767, 0x0, 0x0, 0x0, 0x6b6b6b6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x97676, 0x0, 0x0, 0x0, 0x7a7a7a7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00dc00, 0xd800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x828100, 0x84, 0x82820000, 0x8282, 0xe6e60082, 0xe6e60009, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x90900, 0x0, 0x0, 0x0, 0x0, 0xdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x909, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0xe600, 0x0, 0x0, 0xe400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdce6de00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xdc, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe6e6e600, 0xe6e6e6e6, 0xdc0000e6, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xdcdcdce6, 0xe6dcdcdc, 0xdc00dce6, 0xdce6e6dc, 0xe6e6e6dc, 0xe6dce6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6dc, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70000, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6, 0xdcdcdc01, 0xe6e6dcdc, 0xdcdcdcdc, 0x10100e6, 0x1010101, 0x1, 0xdc00, 0x0, 0xe6, 0xe6e6, 0x0, 0xe6dce6e6, 0xe6e6e6e6, 0xe6dce6e6, 0xdcd6eae6, 0xe6e6e6ca, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe4e8e6e6, 0xe6dadce4, 0xdce6dce9, 0x0, 0x0, 0x0, 0x0, 0x101e6e6, 0xe6e6e6e6, 0xe6010101, 0xe6, 0xe600, 0xe6010100, 0x101e6dc, 0xdcdcdcdc, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0x0, 0x0, 0xe4da0000, 0xe0e0dee8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80800, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0x0, 0x0, 0x0, 0x0, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc000000, 0xdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e600e6, 0xe60000dc, 0xe6, 0xe6e60000, 0xe600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a0000, 0xe6e6e6e6, 0xdce6e6e6, 0xdcdcdcdc, 0xe6e6dcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0xe600dc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc01e6, 0x9000000, 0x0, 0xdce600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0xdcdc0000, 0xdce6e6e6, 0xdcdcdce6, 0xdc, 0x0, 0x0, 0x0, 0xdce60000, 0xdce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70900, 0x0, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x9, 0x0, 0x0, 0x9, 0x0, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70900, 0x0, 0x0, 0x0, 0x0, 0x90700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x7, 0x0, 0xe6e60000, 0xe6e6e6e6, 0xe6, 0xe6e6e6e6, 0xe6, 0x0, 0x0, 0x90000, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x7090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7090000, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90900, 0x7000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x0, 0x70000, 0x909, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x90900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1010101, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x1d8d800, 0x101, 0xd8d8e200, 0xd8d8d8, 0x0, 0xdc000000, 0xdcdcdcdc, 0xdcdcdc, 0xe6e6e600, 0xdcdce6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe60000e6, 0xe6e6e6e6, 0xe600e6e6, 0xe6e600e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6dce8e8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdcdc, 0xdcdcdc, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x7e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)([ 0x0, 0x800], [ 0x1000, 0x2600], [ 0x10000, 0x30002, 0x50004, 0x70006, 0x70008, 0x70007, 0x90007, 0xa0007, 0xc000b, 0x70007, 0x70007, 0x70007, 0x7000d, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0xf000e, 0x70010, 0x70011, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x8010800, 0xffff0802, 0x8003ffff, 0x28161813, 0x8821301b, 0x38330832, 0x7841383a, 0x28510850, 0x185c3056, 0x8068485f, 0xffff1078, 0x3882407a, 0x98903889, 0x30a510a3, 0x48ad10ab, 0xffff30b6, 0xffffffff, 0xffffffff, 0x80bcffff, 0x28cf18cc, 0x88da30d4, 0x38ec08eb, 0x70fb40f3, 0x290b1109, 0x19163110, 0x81224919, 0xffff1132, 0x393c4134, 0x994b4143, 0x3960115e, 0x51691167, 0xffff3173, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1979, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff217c, 0x9810980, 0x9841182, 0xffffffff, 0xffff2185, 0xffffffff, 0x989ffff, 0xffffffff, 0xffffffff, 0x198e218a, 0xffff0991, 0xffff0992, 0xffffffff, 0xffff2193, 0xffffffff, 0xffffffff, 0xffff2197, 0x99c099b, 0x99f119d, 0xffffffff, 0xffff21a0, 0xffffffff, 0x9a4ffff, 0xffffffff, 0xffffffff, 0x19a921a5, 0xffff09ac, 0xffff09ad, 0xffffffff, 0xffff21ae, 0xffffffff, 0xffffffff, 0x21b621b2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11bc11ba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11c011be, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c309c2, 0xffffffff, 0xffffffff, 0x9c509c4, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c709c6, 0x9c909c8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9caffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x29d029cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x29d5ffff, 0xffff29da, 0xffffffff, 0xffffffff, 0x9dfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9e109e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9e309e2, 0x9e509e4, 0xffffffff, 0xffffffff, 0x9e709e6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff09e8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x39e9ffff, 0xffffffff, 0x21f0ffff, 0x29f4ffff, 0x39f9ffff, 0xffffffff, 0xffffffff, 0x2200ffff, 0xa04ffff, 0xffffffff, 0x3205ffff, 0xffffffff, 0x2a0bffff, 0xffffffff, 0xffff0a10, 0xffff0a11, 0x4212ffff, 0xffffffff, 0x221affff, 0x321effff, 0x4224ffff, 0xffffffff, 0xffffffff, 0x222cffff, 0x1230ffff, 0xffffffff, 0x4232ffff, 0xffffffff, 0x323affff, 0x1a431a40, 0xffffffff, 0xffff0a46, 0xffffffff, 0xffff1247, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a49, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff124a, 0xa4cffff, 0x1a4dffff, 0xa521250, 0xffff2253, 0xffff0a57, 0xffffffff, 0xffff0a58, 0xffffffff, 0x2259ffff, 0xffffffff, 0xa5dffff, 0xffffffff, 0xa5effff, 0xa5fffff, 0xffffffff, 0xffff1260, 0xa62ffff, 0x1a63ffff, 0xa681266, 0xffff2269, 0xffff0a6d, 0xffffffff, 0xffff0a6e, 0xffffffff, 0x226fffff, 0xffffffff, 0xa73ffff, 0xffffffff, 0xa74ffff, 0xa75ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a76, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa780a77, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7a0a79, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7c0a7b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a7dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a80, 0xffff0a81, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa82ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a83, 0xa84ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a85, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a86, 0xa87ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1288ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a8affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa90128e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a91, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa92ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1a93, 0xffffffff, 0xffff0a96, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa991297, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a9affff, 0xffffffff, 0xffff0a9d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa9effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa9fffff, 0xaa0ffff, 0xaa1ffff, 0xaa2ffff, 0xaa3ffff, 0xffffffff, 0xaa4ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0aa5, 0xffff0aa6, 0xaa80aa7, 0xffffffff, 0xffff0aa9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xaab0aaa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xaad0aac, 0xffffffff, 0xffffffff, 0xffffffff, 0xaaf0aae, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12b212b0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xab50ab4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xab70ab6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x22bc22b8, 0xac10ac0, 0xac30ac2, 0xac50ac4, 0x22ca22c6, 0xacf0ace, 0xad10ad0, 0xad30ad2, 0x12d612d4, 0xffffffff, 0xffffffff, 0xffffffff, 0x12da12d8, 0xffffffff, 0xffffffff, 0xffffffff, 0x22e022dc, 0xae50ae4, 0xae70ae6, 0xae90ae8, 0x22ee22ea, 0xaf30af2, 0xaf50af4, 0xaf70af6, 0x1afb1af8, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b011afe, 0xffffffff, 0xffffffff, 0xffffffff, 0x13061304, 0xffffffff, 0xffffffff, 0xffffffff, 0x130a1308, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b0f1b0c, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b12ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x23192315, 0xb1e0b1d, 0xb200b1f, 0xb220b21, 0x23272323, 0xb2c0b2b, 0xb2e0b2d, 0xb300b2f, 0xffff0b31, 0xffffffff, 0xffff0b32, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b33, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b34, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b35ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b38, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b39, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1b3a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b3d, 0xffff0b3e, 0xffff0b3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b40, 0xffff0b41, 0xffff0b42, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb43ffff, 0xffffffff, 0xffffffff, 0xffff0b44, 0xb45ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb46ffff, 0xb47ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b48, 0xffffffff, 0xffffffff, 0xb49ffff, 0xb4affff, 0xffffffff, 0xffff0b4b, 0xffffffff, 0xb4cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb4dffff, 0xffffffff, 0xb4f0b4e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb510b50, 0xffffffff, 0xb530b52, 0xffffffff, 0xb550b54, 0xb570b56, 0xffffffff, 0xffffffff, 0xb590b58, 0xffffffff, 0xb5b0b5a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb5cffff, 0xffff0b5d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b5e, 0xffffffff, 0xffffffff, 0xb600b5f, 0xb61ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb630b62, 0xb650b64, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b66, 0xffffffff, 0xb67ffff, 0xb68ffff, 0xb69ffff, 0xb6affff, 0xb6bffff, 0xb6cffff, 0xb6dffff, 0xb6effff, 0xb6fffff, 0xb70ffff, 0xb71ffff, 0xb72ffff, 0xffffffff, 0xffff0b73, 0xffff0b74, 0xffff0b75, 0xffffffff, 0xffffffff, 0x1376ffff, 0xffffffff, 0xffff1378, 0x137affff, 0xffffffff, 0xffff137c, 0x137effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb80ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b81, 0xffffffff, 0xb82ffff, 0xb83ffff, 0xb84ffff, 0xb85ffff, 0xb86ffff, 0xb87ffff, 0xb88ffff, 0xb89ffff, 0xb8affff, 0xb8bffff, 0xb8cffff, 0xb8dffff, 0xffffffff, 0xffff0b8e, 0xffff0b8f, 0xffff0b90, 0xffffffff, 0xffffffff, 0x1391ffff, 0xffffffff, 0xffff1393, 0x1395ffff, 0xffffffff, 0xffff1397, 0x1399ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb9bffff, 0xb9d0b9c, 0xffff0b9e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb9fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba0ffff, 0xba1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba2ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba3ffff, 0xffff0ba4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13a5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ba7ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xbab0baa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xbacffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); -dstring compositionTable() nothrow pure @nogc @safe -{ +dstring compositionTable() nothrow @nogc pure @safe { static immutable dchar[1882] t = -"\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"~ -"\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"~ -"\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"~ -"\u010E\u0323\u1E0C\u0327\u1E10\u032D\u1E12\u0331\u1E0E\u0300\u00C8\u0301\u00C9\u0302\u00CA\u0303\u1EBC\u0304\u0112"~ -"\u0306\u0114\u0307\u0116\u0308\u00CB\u0309\u1EBA\u030C\u011A\u030F\u0204\u0311\u0206\u0323\u1EB8\u0327\u0228\u0328"~ -"\u0118\u032D\u1E18\u0330\u1E1A\u0307\u1E1E\u0301\u01F4\u0302\u011C\u0304\u1E20\u0306\u011E\u0307\u0120\u030C\u01E6"~ -"\u0327\u0122\u0302\u0124\u0307\u1E22\u0308\u1E26\u030C\u021E\u0323\u1E24\u0327\u1E28\u032E\u1E2A\u0300\u00CC\u0301"~ -"\u00CD\u0302\u00CE\u0303\u0128\u0304\u012A\u0306\u012C\u0307\u0130\u0308\u00CF\u0309\u1EC8\u030C\u01CF\u030F\u0208"~ -"\u0311\u020A\u0323\u1ECA\u0328\u012E\u0330\u1E2C\u0302\u0134\u0301\u1E30\u030C\u01E8\u0323\u1E32\u0327\u0136\u0331"~ -"\u1E34\u0301\u0139\u030C\u013D\u0323\u1E36\u0327\u013B\u032D\u1E3C\u0331\u1E3A\u0301\u1E3E\u0307\u1E40\u0323\u1E42"~ -"\u0300\u01F8\u0301\u0143\u0303\u00D1\u0307\u1E44\u030C\u0147\u0323\u1E46\u0327\u0145\u032D\u1E4A\u0331\u1E48\u0300"~ -"\u00D2\u0301\u00D3\u0302\u00D4\u0303\u00D5\u0304\u014C\u0306\u014E\u0307\u022E\u0308\u00D6\u0309\u1ECE\u030B\u0150"~ -"\u030C\u01D1\u030F\u020C\u0311\u020E\u031B\u01A0\u0323\u1ECC\u0328\u01EA\u0301\u1E54\u0307\u1E56\u0301\u0154\u0307"~ -"\u1E58\u030C\u0158\u030F\u0210\u0311\u0212\u0323\u1E5A\u0327\u0156\u0331\u1E5E\u0301\u015A\u0302\u015C\u0307\u1E60"~ -"\u030C\u0160\u0323\u1E62\u0326\u0218\u0327\u015E\u0307\u1E6A\u030C\u0164\u0323\u1E6C\u0326\u021A\u0327\u0162\u032D"~ -"\u1E70\u0331\u1E6E\u0300\u00D9\u0301\u00DA\u0302\u00DB\u0303\u0168\u0304\u016A\u0306\u016C\u0308\u00DC\u0309\u1EE6"~ -"\u030A\u016E\u030B\u0170\u030C\u01D3\u030F\u0214\u0311\u0216\u031B\u01AF\u0323\u1EE4\u0324\u1E72\u0328\u0172\u032D"~ -"\u1E76\u0330\u1E74\u0303\u1E7C\u0323\u1E7E\u0300\u1E80\u0301\u1E82\u0302\u0174\u0307\u1E86\u0308\u1E84\u0323\u1E88"~ -"\u0307\u1E8A\u0308\u1E8C\u0300\u1EF2\u0301\u00DD\u0302\u0176\u0303\u1EF8\u0304\u0232\u0307\u1E8E\u0308\u0178\u0309"~ -"\u1EF6\u0323\u1EF4\u0301\u0179\u0302\u1E90\u0307\u017B\u030C\u017D\u0323\u1E92\u0331\u1E94\u0300\u00E0\u0301\u00E1"~ -"\u0302\u00E2\u0303\u00E3\u0304\u0101\u0306\u0103\u0307\u0227\u0308\u00E4\u0309\u1EA3\u030A\u00E5\u030C\u01CE\u030F"~ -"\u0201\u0311\u0203\u0323\u1EA1\u0325\u1E01\u0328\u0105\u0307\u1E03\u0323\u1E05\u0331\u1E07\u0301\u0107\u0302\u0109"~ -"\u0307\u010B\u030C\u010D\u0327\u00E7\u0307\u1E0B\u030C\u010F\u0323\u1E0D\u0327\u1E11\u032D\u1E13\u0331\u1E0F\u0300"~ -"\u00E8\u0301\u00E9\u0302\u00EA\u0303\u1EBD\u0304\u0113\u0306\u0115\u0307\u0117\u0308\u00EB\u0309\u1EBB\u030C\u011B"~ -"\u030F\u0205\u0311\u0207\u0323\u1EB9\u0327\u0229\u0328\u0119\u032D\u1E19\u0330\u1E1B\u0307\u1E1F\u0301\u01F5\u0302"~ -"\u011D\u0304\u1E21\u0306\u011F\u0307\u0121\u030C\u01E7\u0327\u0123\u0302\u0125\u0307\u1E23\u0308\u1E27\u030C\u021F"~ -"\u0323\u1E25\u0327\u1E29\u032E\u1E2B\u0331\u1E96\u0300\u00EC\u0301\u00ED\u0302\u00EE\u0303\u0129\u0304\u012B\u0306"~ -"\u012D\u0308\u00EF\u0309\u1EC9\u030C\u01D0\u030F\u0209\u0311\u020B\u0323\u1ECB\u0328\u012F\u0330\u1E2D\u0302\u0135"~ -"\u030C\u01F0\u0301\u1E31\u030C\u01E9\u0323\u1E33\u0327\u0137\u0331\u1E35\u0301\u013A\u030C\u013E\u0323\u1E37\u0327"~ -"\u013C\u032D\u1E3D\u0331\u1E3B\u0301\u1E3F\u0307\u1E41\u0323\u1E43\u0300\u01F9\u0301\u0144\u0303\u00F1\u0307\u1E45"~ -"\u030C\u0148\u0323\u1E47\u0327\u0146\u032D\u1E4B\u0331\u1E49\u0300\u00F2\u0301\u00F3\u0302\u00F4\u0303\u00F5\u0304"~ -"\u014D\u0306\u014F\u0307\u022F\u0308\u00F6\u0309\u1ECF\u030B\u0151\u030C\u01D2\u030F\u020D\u0311\u020F\u031B\u01A1"~ -"\u0323\u1ECD\u0328\u01EB\u0301\u1E55\u0307\u1E57\u0301\u0155\u0307\u1E59\u030C\u0159\u030F\u0211\u0311\u0213\u0323"~ -"\u1E5B\u0327\u0157\u0331\u1E5F\u0301\u015B\u0302\u015D\u0307\u1E61\u030C\u0161\u0323\u1E63\u0326\u0219\u0327\u015F"~ -"\u0307\u1E6B\u0308\u1E97\u030C\u0165\u0323\u1E6D\u0326\u021B\u0327\u0163\u032D\u1E71\u0331\u1E6F\u0300\u00F9\u0301"~ -"\u00FA\u0302\u00FB\u0303\u0169\u0304\u016B\u0306\u016D\u0308\u00FC\u0309\u1EE7\u030A\u016F\u030B\u0171\u030C\u01D4"~ -"\u030F\u0215\u0311\u0217\u031B\u01B0\u0323\u1EE5\u0324\u1E73\u0328\u0173\u032D\u1E77\u0330\u1E75\u0303\u1E7D\u0323"~ -"\u1E7F\u0300\u1E81\u0301\u1E83\u0302\u0175\u0307\u1E87\u0308\u1E85\u030A\u1E98\u0323\u1E89\u0307\u1E8B\u0308\u1E8D"~ -"\u0300\u1EF3\u0301\u00FD\u0302\u0177\u0303\u1EF9\u0304\u0233\u0307\u1E8F\u0308\u00FF\u0309\u1EF7\u030A\u1E99\u0323"~ -"\u1EF5\u0301\u017A\u0302\u1E91\u0307\u017C\u030C\u017E\u0323\u1E93\u0331\u1E95\u0300\u1FED\u0301\u0385\u0342\u1FC1"~ -"\u0300\u1EA6\u0301\u1EA4\u0303\u1EAA\u0309\u1EA8\u0304\u01DE\u0301\u01FA\u0301\u01FC\u0304\u01E2\u0301\u1E08\u0300"~ -"\u1EC0\u0301\u1EBE\u0303\u1EC4\u0309\u1EC2\u0301\u1E2E\u0300\u1ED2\u0301\u1ED0\u0303\u1ED6\u0309\u1ED4\u0301\u1E4C"~ -"\u0304\u022C\u0308\u1E4E\u0304\u022A\u0301\u01FE\u0300\u01DB\u0301\u01D7\u0304\u01D5\u030C\u01D9\u0300\u1EA7\u0301"~ -"\u1EA5\u0303\u1EAB\u0309\u1EA9\u0304\u01DF\u0301\u01FB\u0301\u01FD\u0304\u01E3\u0301\u1E09\u0300\u1EC1\u0301\u1EBF"~ -"\u0303\u1EC5\u0309\u1EC3\u0301\u1E2F\u0300\u1ED3\u0301\u1ED1\u0303\u1ED7\u0309\u1ED5\u0301\u1E4D\u0304\u022D\u0308"~ -"\u1E4F\u0304\u022B\u0301\u01FF\u0300\u01DC\u0301\u01D8\u0304\u01D6\u030C\u01DA\u0300\u1EB0\u0301\u1EAE\u0303\u1EB4"~ -"\u0309\u1EB2\u0300\u1EB1\u0301\u1EAF\u0303\u1EB5\u0309\u1EB3\u0300\u1E14\u0301\u1E16\u0300\u1E15\u0301\u1E17\u0300"~ -"\u1E50\u0301\u1E52\u0300\u1E51\u0301\u1E53\u0307\u1E64\u0307\u1E65\u0307\u1E66\u0307\u1E67\u0301\u1E78\u0301\u1E79"~ -"\u0308\u1E7A\u0308\u1E7B\u0307\u1E9B\u0300\u1EDC\u0301\u1EDA\u0303\u1EE0\u0309\u1EDE\u0323\u1EE2\u0300\u1EDD\u0301"~ -"\u1EDB\u0303\u1EE1\u0309\u1EDF\u0323\u1EE3\u0300\u1EEA\u0301\u1EE8\u0303\u1EEE\u0309\u1EEC\u0323\u1EF0\u0300\u1EEB"~ -"\u0301\u1EE9\u0303\u1EEF\u0309\u1EED\u0323\u1EF1\u030C\u01EE\u0304\u01EC\u0304\u01ED\u0304\u01E0\u0304\u01E1\u0306"~ -"\u1E1C\u0306\u1E1D\u0304\u0230\u0304\u0231\u030C\u01EF\u0300\u1FBA\u0301\u0386\u0304\u1FB9\u0306\u1FB8\u0313\u1F08"~ -"\u0314\u1F09\u0345\u1FBC\u0300\u1FC8\u0301\u0388\u0313\u1F18\u0314\u1F19\u0300\u1FCA\u0301\u0389\u0313\u1F28\u0314"~ -"\u1F29\u0345\u1FCC\u0300\u1FDA\u0301\u038A\u0304\u1FD9\u0306\u1FD8\u0308\u03AA\u0313\u1F38\u0314\u1F39\u0300\u1FF8"~ -"\u0301\u038C\u0313\u1F48\u0314\u1F49\u0314\u1FEC\u0300\u1FEA\u0301\u038E\u0304\u1FE9\u0306\u1FE8\u0308\u03AB\u0314"~ -"\u1F59\u0300\u1FFA\u0301\u038F\u0313\u1F68\u0314\u1F69\u0345\u1FFC\u0345\u1FB4\u0345\u1FC4\u0300\u1F70\u0301\u03AC"~ -"\u0304\u1FB1\u0306\u1FB0\u0313\u1F00\u0314\u1F01\u0342\u1FB6\u0345\u1FB3\u0300\u1F72\u0301\u03AD\u0313\u1F10\u0314"~ -"\u1F11\u0300\u1F74\u0301\u03AE\u0313\u1F20\u0314\u1F21\u0342\u1FC6\u0345\u1FC3\u0300\u1F76\u0301\u03AF\u0304\u1FD1"~ -"\u0306\u1FD0\u0308\u03CA\u0313\u1F30\u0314\u1F31\u0342\u1FD6\u0300\u1F78\u0301\u03CC\u0313\u1F40\u0314\u1F41\u0313"~ -"\u1FE4\u0314\u1FE5\u0300\u1F7A\u0301\u03CD\u0304\u1FE1\u0306\u1FE0\u0308\u03CB\u0313\u1F50\u0314\u1F51\u0342\u1FE6"~ -"\u0300\u1F7C\u0301\u03CE\u0313\u1F60\u0314\u1F61\u0342\u1FF6\u0345\u1FF3\u0300\u1FD2\u0301\u0390\u0342\u1FD7\u0300"~ -"\u1FE2\u0301\u03B0\u0342\u1FE7\u0345\u1FF4\u0301\u03D3\u0308\u03D4\u0308\u0407\u0306\u04D0\u0308\u04D2\u0301\u0403"~ -"\u0300\u0400\u0306\u04D6\u0308\u0401\u0306\u04C1\u0308\u04DC\u0308\u04DE\u0300\u040D\u0304\u04E2\u0306\u0419\u0308"~ -"\u04E4\u0301\u040C\u0308\u04E6\u0304\u04EE\u0306\u040E\u0308\u04F0\u030B\u04F2\u0308\u04F4\u0308\u04F8\u0308\u04EC"~ -"\u0306\u04D1\u0308\u04D3\u0301\u0453\u0300\u0450\u0306\u04D7\u0308\u0451\u0306\u04C2\u0308\u04DD\u0308\u04DF\u0300"~ -"\u045D\u0304\u04E3\u0306\u0439\u0308\u04E5\u0301\u045C\u0308\u04E7\u0304\u04EF\u0306\u045E\u0308\u04F1\u030B\u04F3"~ -"\u0308\u04F5\u0308\u04F9\u0308\u04ED\u0308\u0457\u030F\u0476\u030F\u0477\u0308\u04DA\u0308\u04DB\u0308\u04EA\u0308"~ -"\u04EB\u0653\u0622\u0654\u0623\u0655\u0625\u0654\u0624\u0654\u0626\u0654\u06C2\u0654\u06D3\u0654\u06C0\u093C\u0929"~ -"\u093C\u0931\u093C\u0934\u09BE\u09CB\u09D7\u09CC\u0B3E\u0B4B\u0B56\u0B48\u0B57\u0B4C\u0BD7\u0B94\u0BBE\u0BCA\u0BD7"~ -"\u0BCC\u0BBE\u0BCB\u0C56\u0C48\u0CD5\u0CC0\u0CC2\u0CCA\u0CD5\u0CC7\u0CD6\u0CC8\u0CD5\u0CCB\u0D3E\u0D4A\u0D57\u0D4C"~ -"\u0D3E\u0D4B\u0DCA\u0DDA\u0DCF\u0DDC\u0DDF\u0DDE\u0DCA\u0DDD\u102E\u1026\u1B35\u1B06\u1B35\u1B08\u1B35\u1B0A\u1B35"~ -"\u1B0C\u1B35\u1B0E\u1B35\u1B12\u1B35\u1B3B\u1B35\u1B3D\u1B35\u1B40\u1B35\u1B41\u1B35\u1B43\u0304\u1E38\u0304\u1E39"~ -"\u0304\u1E5C\u0304\u1E5D\u0307\u1E68\u0307\u1E69\u0302\u1EAC\u0306\u1EB6\u0302\u1EAD\u0306\u1EB7\u0302\u1EC6\u0302"~ -"\u1EC7\u0302\u1ED8\u0302\u1ED9\u0300\u1F02\u0301\u1F04\u0342\u1F06\u0345\u1F80\u0300\u1F03\u0301\u1F05\u0342\u1F07"~ -"\u0345\u1F81\u0345\u1F82\u0345\u1F83\u0345\u1F84\u0345\u1F85\u0345\u1F86\u0345\u1F87\u0300\u1F0A\u0301\u1F0C\u0342"~ -"\u1F0E\u0345\u1F88\u0300\u1F0B\u0301\u1F0D\u0342\u1F0F\u0345\u1F89\u0345\u1F8A\u0345\u1F8B\u0345\u1F8C\u0345\u1F8D"~ -"\u0345\u1F8E\u0345\u1F8F\u0300\u1F12\u0301\u1F14\u0300\u1F13\u0301\u1F15\u0300\u1F1A\u0301\u1F1C\u0300\u1F1B\u0301"~ -"\u1F1D\u0300\u1F22\u0301\u1F24\u0342\u1F26\u0345\u1F90\u0300\u1F23\u0301\u1F25\u0342\u1F27\u0345\u1F91\u0345\u1F92"~ -"\u0345\u1F93\u0345\u1F94\u0345\u1F95\u0345\u1F96\u0345\u1F97\u0300\u1F2A\u0301\u1F2C\u0342\u1F2E\u0345\u1F98\u0300"~ -"\u1F2B\u0301\u1F2D\u0342\u1F2F\u0345\u1F99\u0345\u1F9A\u0345\u1F9B\u0345\u1F9C\u0345\u1F9D\u0345\u1F9E\u0345\u1F9F"~ -"\u0300\u1F32\u0301\u1F34\u0342\u1F36\u0300\u1F33\u0301\u1F35\u0342\u1F37\u0300\u1F3A\u0301\u1F3C\u0342\u1F3E\u0300"~ -"\u1F3B\u0301\u1F3D\u0342\u1F3F\u0300\u1F42\u0301\u1F44\u0300\u1F43\u0301\u1F45\u0300\u1F4A\u0301\u1F4C\u0300\u1F4B"~ -"\u0301\u1F4D\u0300\u1F52\u0301\u1F54\u0342\u1F56\u0300\u1F53\u0301\u1F55\u0342\u1F57\u0300\u1F5B\u0301\u1F5D\u0342"~ -"\u1F5F\u0300\u1F62\u0301\u1F64\u0342\u1F66\u0345\u1FA0\u0300\u1F63\u0301\u1F65\u0342\u1F67\u0345\u1FA1\u0345\u1FA2"~ -"\u0345\u1FA3\u0345\u1FA4\u0345\u1FA5\u0345\u1FA6\u0345\u1FA7\u0300\u1F6A\u0301\u1F6C\u0342\u1F6E\u0345\u1FA8\u0300"~ -"\u1F6B\u0301\u1F6D\u0342\u1F6F\u0345\u1FA9\u0345\u1FAA\u0345\u1FAB\u0345\u1FAC\u0345\u1FAD\u0345\u1FAE\u0345\u1FAF"~ -"\u0345\u1FB2\u0345\u1FC2\u0345\u1FF2\u0345\u1FB7\u0300\u1FCD\u0301\u1FCE\u0342\u1FCF\u0345\u1FC7\u0345\u1FF7\u0300"~ -"\u1FDD\u0301\u1FDE\u0342\u1FDF\u0338\u219A\u0338\u219B\u0338\u21AE\u0338\u21CD\u0338\u21CF\u0338\u21CE\u0338\u2204"~ -"\u0338\u2209\u0338\u220C\u0338\u2224\u0338\u2226\u0338\u2241\u0338\u2244\u0338\u2247\u0338\u2249\u0338\u226D\u0338"~ -"\u2262\u0338\u2270\u0338\u2271\u0338\u2274\u0338\u2275\u0338\u2278\u0338\u2279\u0338\u2280\u0338\u2281\u0338\u22E0"~ -"\u0338\u22E1\u0338\u2284\u0338\u2285\u0338\u2288\u0338\u2289\u0338\u22E2\u0338\u22E3\u0338\u22AC\u0338\u22AD\u0338"~ -"\u22AE\u0338\u22AF\u0338\u22EA\u0338\u22EB\u0338\u22EC\u0338\u22ED\u3099\u3094\u3099\u304C\u3099\u304E\u3099\u3050"~ -"\u3099\u3052\u3099\u3054\u3099\u3056\u3099\u3058\u3099\u305A\u3099\u305C\u3099\u305E\u3099\u3060\u3099\u3062\u3099"~ -"\u3065\u3099\u3067\u3099\u3069\u3099\u3070\u309A\u3071\u3099\u3073\u309A\u3074\u3099\u3076\u309A\u3077\u3099\u3079"~ -"\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"~ -"\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"~ -"\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"~ -"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"~ -"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"~ -"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"~ -""d; +"\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"d~ +"\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"d~ +"\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"d~ +"\u010E\u0323\u1E0C\u0327\u1E10\u032D\u1E12\u0331\u1E0E\u0300\u00C8\u0301\u00C9\u0302\u00CA\u0303\u1EBC\u0304\u0112"d~ +"\u0306\u0114\u0307\u0116\u0308\u00CB\u0309\u1EBA\u030C\u011A\u030F\u0204\u0311\u0206\u0323\u1EB8\u0327\u0228\u0328"d~ +"\u0118\u032D\u1E18\u0330\u1E1A\u0307\u1E1E\u0301\u01F4\u0302\u011C\u0304\u1E20\u0306\u011E\u0307\u0120\u030C\u01E6"d~ +"\u0327\u0122\u0302\u0124\u0307\u1E22\u0308\u1E26\u030C\u021E\u0323\u1E24\u0327\u1E28\u032E\u1E2A\u0300\u00CC\u0301"d~ +"\u00CD\u0302\u00CE\u0303\u0128\u0304\u012A\u0306\u012C\u0307\u0130\u0308\u00CF\u0309\u1EC8\u030C\u01CF\u030F\u0208"d~ +"\u0311\u020A\u0323\u1ECA\u0328\u012E\u0330\u1E2C\u0302\u0134\u0301\u1E30\u030C\u01E8\u0323\u1E32\u0327\u0136\u0331"d~ +"\u1E34\u0301\u0139\u030C\u013D\u0323\u1E36\u0327\u013B\u032D\u1E3C\u0331\u1E3A\u0301\u1E3E\u0307\u1E40\u0323\u1E42"d~ +"\u0300\u01F8\u0301\u0143\u0303\u00D1\u0307\u1E44\u030C\u0147\u0323\u1E46\u0327\u0145\u032D\u1E4A\u0331\u1E48\u0300"d~ +"\u00D2\u0301\u00D3\u0302\u00D4\u0303\u00D5\u0304\u014C\u0306\u014E\u0307\u022E\u0308\u00D6\u0309\u1ECE\u030B\u0150"d~ +"\u030C\u01D1\u030F\u020C\u0311\u020E\u031B\u01A0\u0323\u1ECC\u0328\u01EA\u0301\u1E54\u0307\u1E56\u0301\u0154\u0307"d~ +"\u1E58\u030C\u0158\u030F\u0210\u0311\u0212\u0323\u1E5A\u0327\u0156\u0331\u1E5E\u0301\u015A\u0302\u015C\u0307\u1E60"d~ +"\u030C\u0160\u0323\u1E62\u0326\u0218\u0327\u015E\u0307\u1E6A\u030C\u0164\u0323\u1E6C\u0326\u021A\u0327\u0162\u032D"d~ +"\u1E70\u0331\u1E6E\u0300\u00D9\u0301\u00DA\u0302\u00DB\u0303\u0168\u0304\u016A\u0306\u016C\u0308\u00DC\u0309\u1EE6"d~ +"\u030A\u016E\u030B\u0170\u030C\u01D3\u030F\u0214\u0311\u0216\u031B\u01AF\u0323\u1EE4\u0324\u1E72\u0328\u0172\u032D"d~ +"\u1E76\u0330\u1E74\u0303\u1E7C\u0323\u1E7E\u0300\u1E80\u0301\u1E82\u0302\u0174\u0307\u1E86\u0308\u1E84\u0323\u1E88"d~ +"\u0307\u1E8A\u0308\u1E8C\u0300\u1EF2\u0301\u00DD\u0302\u0176\u0303\u1EF8\u0304\u0232\u0307\u1E8E\u0308\u0178\u0309"d~ +"\u1EF6\u0323\u1EF4\u0301\u0179\u0302\u1E90\u0307\u017B\u030C\u017D\u0323\u1E92\u0331\u1E94\u0300\u00E0\u0301\u00E1"d~ +"\u0302\u00E2\u0303\u00E3\u0304\u0101\u0306\u0103\u0307\u0227\u0308\u00E4\u0309\u1EA3\u030A\u00E5\u030C\u01CE\u030F"d~ +"\u0201\u0311\u0203\u0323\u1EA1\u0325\u1E01\u0328\u0105\u0307\u1E03\u0323\u1E05\u0331\u1E07\u0301\u0107\u0302\u0109"d~ +"\u0307\u010B\u030C\u010D\u0327\u00E7\u0307\u1E0B\u030C\u010F\u0323\u1E0D\u0327\u1E11\u032D\u1E13\u0331\u1E0F\u0300"d~ +"\u00E8\u0301\u00E9\u0302\u00EA\u0303\u1EBD\u0304\u0113\u0306\u0115\u0307\u0117\u0308\u00EB\u0309\u1EBB\u030C\u011B"d~ +"\u030F\u0205\u0311\u0207\u0323\u1EB9\u0327\u0229\u0328\u0119\u032D\u1E19\u0330\u1E1B\u0307\u1E1F\u0301\u01F5\u0302"d~ +"\u011D\u0304\u1E21\u0306\u011F\u0307\u0121\u030C\u01E7\u0327\u0123\u0302\u0125\u0307\u1E23\u0308\u1E27\u030C\u021F"d~ +"\u0323\u1E25\u0327\u1E29\u032E\u1E2B\u0331\u1E96\u0300\u00EC\u0301\u00ED\u0302\u00EE\u0303\u0129\u0304\u012B\u0306"d~ +"\u012D\u0308\u00EF\u0309\u1EC9\u030C\u01D0\u030F\u0209\u0311\u020B\u0323\u1ECB\u0328\u012F\u0330\u1E2D\u0302\u0135"d~ +"\u030C\u01F0\u0301\u1E31\u030C\u01E9\u0323\u1E33\u0327\u0137\u0331\u1E35\u0301\u013A\u030C\u013E\u0323\u1E37\u0327"d~ +"\u013C\u032D\u1E3D\u0331\u1E3B\u0301\u1E3F\u0307\u1E41\u0323\u1E43\u0300\u01F9\u0301\u0144\u0303\u00F1\u0307\u1E45"d~ +"\u030C\u0148\u0323\u1E47\u0327\u0146\u032D\u1E4B\u0331\u1E49\u0300\u00F2\u0301\u00F3\u0302\u00F4\u0303\u00F5\u0304"d~ +"\u014D\u0306\u014F\u0307\u022F\u0308\u00F6\u0309\u1ECF\u030B\u0151\u030C\u01D2\u030F\u020D\u0311\u020F\u031B\u01A1"d~ +"\u0323\u1ECD\u0328\u01EB\u0301\u1E55\u0307\u1E57\u0301\u0155\u0307\u1E59\u030C\u0159\u030F\u0211\u0311\u0213\u0323"d~ +"\u1E5B\u0327\u0157\u0331\u1E5F\u0301\u015B\u0302\u015D\u0307\u1E61\u030C\u0161\u0323\u1E63\u0326\u0219\u0327\u015F"d~ +"\u0307\u1E6B\u0308\u1E97\u030C\u0165\u0323\u1E6D\u0326\u021B\u0327\u0163\u032D\u1E71\u0331\u1E6F\u0300\u00F9\u0301"d~ +"\u00FA\u0302\u00FB\u0303\u0169\u0304\u016B\u0306\u016D\u0308\u00FC\u0309\u1EE7\u030A\u016F\u030B\u0171\u030C\u01D4"d~ +"\u030F\u0215\u0311\u0217\u031B\u01B0\u0323\u1EE5\u0324\u1E73\u0328\u0173\u032D\u1E77\u0330\u1E75\u0303\u1E7D\u0323"d~ +"\u1E7F\u0300\u1E81\u0301\u1E83\u0302\u0175\u0307\u1E87\u0308\u1E85\u030A\u1E98\u0323\u1E89\u0307\u1E8B\u0308\u1E8D"d~ +"\u0300\u1EF3\u0301\u00FD\u0302\u0177\u0303\u1EF9\u0304\u0233\u0307\u1E8F\u0308\u00FF\u0309\u1EF7\u030A\u1E99\u0323"d~ +"\u1EF5\u0301\u017A\u0302\u1E91\u0307\u017C\u030C\u017E\u0323\u1E93\u0331\u1E95\u0300\u1FED\u0301\u0385\u0342\u1FC1"d~ +"\u0300\u1EA6\u0301\u1EA4\u0303\u1EAA\u0309\u1EA8\u0304\u01DE\u0301\u01FA\u0301\u01FC\u0304\u01E2\u0301\u1E08\u0300"d~ +"\u1EC0\u0301\u1EBE\u0303\u1EC4\u0309\u1EC2\u0301\u1E2E\u0300\u1ED2\u0301\u1ED0\u0303\u1ED6\u0309\u1ED4\u0301\u1E4C"d~ +"\u0304\u022C\u0308\u1E4E\u0304\u022A\u0301\u01FE\u0300\u01DB\u0301\u01D7\u0304\u01D5\u030C\u01D9\u0300\u1EA7\u0301"d~ +"\u1EA5\u0303\u1EAB\u0309\u1EA9\u0304\u01DF\u0301\u01FB\u0301\u01FD\u0304\u01E3\u0301\u1E09\u0300\u1EC1\u0301\u1EBF"d~ +"\u0303\u1EC5\u0309\u1EC3\u0301\u1E2F\u0300\u1ED3\u0301\u1ED1\u0303\u1ED7\u0309\u1ED5\u0301\u1E4D\u0304\u022D\u0308"d~ +"\u1E4F\u0304\u022B\u0301\u01FF\u0300\u01DC\u0301\u01D8\u0304\u01D6\u030C\u01DA\u0300\u1EB0\u0301\u1EAE\u0303\u1EB4"d~ +"\u0309\u1EB2\u0300\u1EB1\u0301\u1EAF\u0303\u1EB5\u0309\u1EB3\u0300\u1E14\u0301\u1E16\u0300\u1E15\u0301\u1E17\u0300"d~ +"\u1E50\u0301\u1E52\u0300\u1E51\u0301\u1E53\u0307\u1E64\u0307\u1E65\u0307\u1E66\u0307\u1E67\u0301\u1E78\u0301\u1E79"d~ +"\u0308\u1E7A\u0308\u1E7B\u0307\u1E9B\u0300\u1EDC\u0301\u1EDA\u0303\u1EE0\u0309\u1EDE\u0323\u1EE2\u0300\u1EDD\u0301"d~ +"\u1EDB\u0303\u1EE1\u0309\u1EDF\u0323\u1EE3\u0300\u1EEA\u0301\u1EE8\u0303\u1EEE\u0309\u1EEC\u0323\u1EF0\u0300\u1EEB"d~ +"\u0301\u1EE9\u0303\u1EEF\u0309\u1EED\u0323\u1EF1\u030C\u01EE\u0304\u01EC\u0304\u01ED\u0304\u01E0\u0304\u01E1\u0306"d~ +"\u1E1C\u0306\u1E1D\u0304\u0230\u0304\u0231\u030C\u01EF\u0300\u1FBA\u0301\u0386\u0304\u1FB9\u0306\u1FB8\u0313\u1F08"d~ +"\u0314\u1F09\u0345\u1FBC\u0300\u1FC8\u0301\u0388\u0313\u1F18\u0314\u1F19\u0300\u1FCA\u0301\u0389\u0313\u1F28\u0314"d~ +"\u1F29\u0345\u1FCC\u0300\u1FDA\u0301\u038A\u0304\u1FD9\u0306\u1FD8\u0308\u03AA\u0313\u1F38\u0314\u1F39\u0300\u1FF8"d~ +"\u0301\u038C\u0313\u1F48\u0314\u1F49\u0314\u1FEC\u0300\u1FEA\u0301\u038E\u0304\u1FE9\u0306\u1FE8\u0308\u03AB\u0314"d~ +"\u1F59\u0300\u1FFA\u0301\u038F\u0313\u1F68\u0314\u1F69\u0345\u1FFC\u0345\u1FB4\u0345\u1FC4\u0300\u1F70\u0301\u03AC"d~ +"\u0304\u1FB1\u0306\u1FB0\u0313\u1F00\u0314\u1F01\u0342\u1FB6\u0345\u1FB3\u0300\u1F72\u0301\u03AD\u0313\u1F10\u0314"d~ +"\u1F11\u0300\u1F74\u0301\u03AE\u0313\u1F20\u0314\u1F21\u0342\u1FC6\u0345\u1FC3\u0300\u1F76\u0301\u03AF\u0304\u1FD1"d~ +"\u0306\u1FD0\u0308\u03CA\u0313\u1F30\u0314\u1F31\u0342\u1FD6\u0300\u1F78\u0301\u03CC\u0313\u1F40\u0314\u1F41\u0313"d~ +"\u1FE4\u0314\u1FE5\u0300\u1F7A\u0301\u03CD\u0304\u1FE1\u0306\u1FE0\u0308\u03CB\u0313\u1F50\u0314\u1F51\u0342\u1FE6"d~ +"\u0300\u1F7C\u0301\u03CE\u0313\u1F60\u0314\u1F61\u0342\u1FF6\u0345\u1FF3\u0300\u1FD2\u0301\u0390\u0342\u1FD7\u0300"d~ +"\u1FE2\u0301\u03B0\u0342\u1FE7\u0345\u1FF4\u0301\u03D3\u0308\u03D4\u0308\u0407\u0306\u04D0\u0308\u04D2\u0301\u0403"d~ +"\u0300\u0400\u0306\u04D6\u0308\u0401\u0306\u04C1\u0308\u04DC\u0308\u04DE\u0300\u040D\u0304\u04E2\u0306\u0419\u0308"d~ +"\u04E4\u0301\u040C\u0308\u04E6\u0304\u04EE\u0306\u040E\u0308\u04F0\u030B\u04F2\u0308\u04F4\u0308\u04F8\u0308\u04EC"d~ +"\u0306\u04D1\u0308\u04D3\u0301\u0453\u0300\u0450\u0306\u04D7\u0308\u0451\u0306\u04C2\u0308\u04DD\u0308\u04DF\u0300"d~ +"\u045D\u0304\u04E3\u0306\u0439\u0308\u04E5\u0301\u045C\u0308\u04E7\u0304\u04EF\u0306\u045E\u0308\u04F1\u030B\u04F3"d~ +"\u0308\u04F5\u0308\u04F9\u0308\u04ED\u0308\u0457\u030F\u0476\u030F\u0477\u0308\u04DA\u0308\u04DB\u0308\u04EA\u0308"d~ +"\u04EB\u0653\u0622\u0654\u0623\u0655\u0625\u0654\u0624\u0654\u0626\u0654\u06C2\u0654\u06D3\u0654\u06C0\u093C\u0929"d~ +"\u093C\u0931\u093C\u0934\u09BE\u09CB\u09D7\u09CC\u0B3E\u0B4B\u0B56\u0B48\u0B57\u0B4C\u0BD7\u0B94\u0BBE\u0BCA\u0BD7"d~ +"\u0BCC\u0BBE\u0BCB\u0C56\u0C48\u0CD5\u0CC0\u0CC2\u0CCA\u0CD5\u0CC7\u0CD6\u0CC8\u0CD5\u0CCB\u0D3E\u0D4A\u0D57\u0D4C"d~ +"\u0D3E\u0D4B\u0DCA\u0DDA\u0DCF\u0DDC\u0DDF\u0DDE\u0DCA\u0DDD\u102E\u1026\u1B35\u1B06\u1B35\u1B08\u1B35\u1B0A\u1B35"d~ +"\u1B0C\u1B35\u1B0E\u1B35\u1B12\u1B35\u1B3B\u1B35\u1B3D\u1B35\u1B40\u1B35\u1B41\u1B35\u1B43\u0304\u1E38\u0304\u1E39"d~ +"\u0304\u1E5C\u0304\u1E5D\u0307\u1E68\u0307\u1E69\u0302\u1EAC\u0306\u1EB6\u0302\u1EAD\u0306\u1EB7\u0302\u1EC6\u0302"d~ +"\u1EC7\u0302\u1ED8\u0302\u1ED9\u0300\u1F02\u0301\u1F04\u0342\u1F06\u0345\u1F80\u0300\u1F03\u0301\u1F05\u0342\u1F07"d~ +"\u0345\u1F81\u0345\u1F82\u0345\u1F83\u0345\u1F84\u0345\u1F85\u0345\u1F86\u0345\u1F87\u0300\u1F0A\u0301\u1F0C\u0342"d~ +"\u1F0E\u0345\u1F88\u0300\u1F0B\u0301\u1F0D\u0342\u1F0F\u0345\u1F89\u0345\u1F8A\u0345\u1F8B\u0345\u1F8C\u0345\u1F8D"d~ +"\u0345\u1F8E\u0345\u1F8F\u0300\u1F12\u0301\u1F14\u0300\u1F13\u0301\u1F15\u0300\u1F1A\u0301\u1F1C\u0300\u1F1B\u0301"d~ +"\u1F1D\u0300\u1F22\u0301\u1F24\u0342\u1F26\u0345\u1F90\u0300\u1F23\u0301\u1F25\u0342\u1F27\u0345\u1F91\u0345\u1F92"d~ +"\u0345\u1F93\u0345\u1F94\u0345\u1F95\u0345\u1F96\u0345\u1F97\u0300\u1F2A\u0301\u1F2C\u0342\u1F2E\u0345\u1F98\u0300"d~ +"\u1F2B\u0301\u1F2D\u0342\u1F2F\u0345\u1F99\u0345\u1F9A\u0345\u1F9B\u0345\u1F9C\u0345\u1F9D\u0345\u1F9E\u0345\u1F9F"d~ +"\u0300\u1F32\u0301\u1F34\u0342\u1F36\u0300\u1F33\u0301\u1F35\u0342\u1F37\u0300\u1F3A\u0301\u1F3C\u0342\u1F3E\u0300"d~ +"\u1F3B\u0301\u1F3D\u0342\u1F3F\u0300\u1F42\u0301\u1F44\u0300\u1F43\u0301\u1F45\u0300\u1F4A\u0301\u1F4C\u0300\u1F4B"d~ +"\u0301\u1F4D\u0300\u1F52\u0301\u1F54\u0342\u1F56\u0300\u1F53\u0301\u1F55\u0342\u1F57\u0300\u1F5B\u0301\u1F5D\u0342"d~ +"\u1F5F\u0300\u1F62\u0301\u1F64\u0342\u1F66\u0345\u1FA0\u0300\u1F63\u0301\u1F65\u0342\u1F67\u0345\u1FA1\u0345\u1FA2"d~ +"\u0345\u1FA3\u0345\u1FA4\u0345\u1FA5\u0345\u1FA6\u0345\u1FA7\u0300\u1F6A\u0301\u1F6C\u0342\u1F6E\u0345\u1FA8\u0300"d~ +"\u1F6B\u0301\u1F6D\u0342\u1F6F\u0345\u1FA9\u0345\u1FAA\u0345\u1FAB\u0345\u1FAC\u0345\u1FAD\u0345\u1FAE\u0345\u1FAF"d~ +"\u0345\u1FB2\u0345\u1FC2\u0345\u1FF2\u0345\u1FB7\u0300\u1FCD\u0301\u1FCE\u0342\u1FCF\u0345\u1FC7\u0345\u1FF7\u0300"d~ +"\u1FDD\u0301\u1FDE\u0342\u1FDF\u0338\u219A\u0338\u219B\u0338\u21AE\u0338\u21CD\u0338\u21CF\u0338\u21CE\u0338\u2204"d~ +"\u0338\u2209\u0338\u220C\u0338\u2224\u0338\u2226\u0338\u2241\u0338\u2244\u0338\u2247\u0338\u2249\u0338\u226D\u0338"d~ +"\u2262\u0338\u2270\u0338\u2271\u0338\u2274\u0338\u2275\u0338\u2278\u0338\u2279\u0338\u2280\u0338\u2281\u0338\u22E0"d~ +"\u0338\u22E1\u0338\u2284\u0338\u2285\u0338\u2288\u0338\u2289\u0338\u22E2\u0338\u22E3\u0338\u22AC\u0338\u22AD\u0338"d~ +"\u22AE\u0338\u22AF\u0338\u22EA\u0338\u22EB\u0338\u22EC\u0338\u22ED\u3099\u3094\u3099\u304C\u3099\u304E\u3099\u3050"d~ +"\u3099\u3052\u3099\u3054\u3099\u3056\u3099\u3058\u3099\u305A\u3099\u305C\u3099\u305E\u3099\u3060\u3099\u3062\u3099"d~ +"\u3065\u3099\u3067\u3099\u3069\u3099\u3070\u309A\u3071\u3099\u3073\u309A\u3074\u3099\u3076\u309A\u3077\u3099\u3079"d~ +"\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"d~ +"\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"d~ +"\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"d~ +"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"d~ +"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"d~ +"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"d; return t[]; } @@ -126,110 +124,108 @@ static if (size_t.sizeof == 8) enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)([ 0x0, 0x20, 0x2e0], [ 0x100, 0xb00, 0x10a0], [ 0x402030202020100, 0x908070206020205, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000300020001, 0x0, 0x0, 0x5, 0x0, 0x800070006, 0xb000a00000009, 0xd000c00000000, 0x10000f000e, 0x11000000000000, 0x1400130012, 0x17001600000015, 0x1900180000, 0x1b001a00180000, 0x1a00180000, 0x1a00180000, 0x1a00180000, 0x1a00000000, 0x1c00180000, 0x1a00180000, 0x1a001d0000, 0x1e00000000, 0x20001f0000, 0x2200210000, 0x25000000240023, 0x2700000026, 0x280000, 0x29, 0x0, 0x0, 0x0, 0x0, 0x2a00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b, 0x2d00000000, 0x0, 0x2e0000, 0x2f0000, 0x0, 0x31000000000030, 0x3300320000, 0x36003500340000, 0x38000000370000, 0x390000, 0x3b003a00000000, 0x0, 0x3d003c00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000000000, 0x41000000000000, 0x42000000000000, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45000000000000, 0x47000000000046, 0x0, 0x0, 0x490048, 0x4a003500000000, 0x4c004b0000, 0x4e004d0000, 0x0, 0x510050004f0000, 0x0, 0x1a000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x530000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x54000000000000, 0x0, 0x55000000000000, 0x56000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x580057, 0x59000000000000, 0x0, 0x0, 0x0, 0x0, 0x5a0000, 0x0, 0x0, 0x5c0000005b0000, 0x5d00000000, 0x5e, 0x5f004800000000, 0x600000, 0x4d000000620061, 0x6300000000, 0x640000, 0x65000000000000, 0x67001a00660000, 0x0, 0x6800000000, 0x6900000000, 0x0, 0x6a00410000, 0x410000, 0x6b0000, 0x6c0000, 0x0, 0x600000, 0x0, 0x6e006d0000, 0x4e000000000000, 0x6f002c0000, 0x70, 0x0, 0x0, 0x410000, 0x0, 0x7100000000, 0x72, 0x0, 0x0, 0x7300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x74000000000000, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78000000000000, 0x7a0079, 0x7b00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d007c, 0x7e, 0x750000, 0x0, 0x0, 0x800000007f0000, 0x0, 0x0, 0x0, 0x81000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8200000000, 0x8300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xdcdce8e6e6e6e6e6, 0xdcdcdcdcd8e8dcdc, 0xcadcdcdcdccacadc, 0xdcdcdcdcdcdcdcca, 0x1010101dcdcdcdc, 0xe6e6e6dcdcdcdc01, 0xdce6f0e6e6e6e6e6, 0xdcdce6e6e6dcdc, 0xe6dcdcdcdce6e6e6, 0xe9eaeae9e6dcdce8, 0xe6e6e6e6e6e9eaea, 0xe6e6e6e6e6e6e6e6, 0x0, 0x0, 0xe6e6e6e6e6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6dce6e6e6e6dc00, 0xe6e6e6e6dcdee6e6, 0xdcdcdcdcdcdce6e6, 0xe6e4dee6e6dce6e6, 0x11100f0e0d0c0b0a, 0x1700161514131312, 0x1200dce600191800, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0x201f1e, 0x0, 0x1f1e1d1c1b000000, 0xe6dcdce6e6222120, 0xdce6e6dce6e6e6e6, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0xe60000e6e6e6e6e6, 0xe60000e6dce6e6e6, 0xdce6e6dc00e6, 0x0, 0x0, 0x0, 0x0, 0x2400, 0x0, 0x0, 0x0, 0xdce6e6dce6e6dce6, 0xe6dce6dcdce6dcdc, 0xe6dce6dce6dce6e6, 0xe6e6dc, 0x0, 0x0, 0x0, 0xe6e6e6e6e6000000, 0xe6dce6e6, 0xdc0000000000, 0x0, 0x0, 0xe6e6000000000000, 0xe6e6e6e6e600e6e6, 0xe6e6e600e6e6e6e6, 0xe6e6e6e6e600, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0x0, 0x0, 0xe6e6e6e6dcdcdce6, 0x0, 0xdce6e6e6e6e60000, 0xe6e6e6e6dcdcdcdc, 0xe6e6e6e6e6e6e6e6, 0xe6dce6e6dc00e6e6, 0xdcdcdce6e6e6dce6, 0xe6dce6e6e61d1c1b, 0xe6e6e6e6e6dcdce6, 0x0, 0x0, 0x0, 0x700000000, 0x0, 0x90000000000, 0xe6e6dce600, 0x0, 0x0, 0x90000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000000000, 0x0, 0x90000000000, 0x5b540000000000, 0x0, 0x0, 0x0, 0x0, 0x909000000, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96767, 0x0, 0x6b6b6b6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x97676, 0x0, 0x7a7a7a7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdc, 0x0, 0x0, 0xdc00dc0000000000, 0xd800, 0x0, 0x0, 0x8400828100, 0x828282820000, 0xe6e60009e6e60082, 0x0, 0x0, 0x0, 0xdc000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x700000000000000, 0x90900, 0x0, 0xdc0000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e60000000000, 0x0, 0x0, 0x90900000000, 0x0, 0x0, 0x0, 0x900000000, 0x0, 0x0, 0x0, 0x90000, 0xe60000000000, 0x0, 0xe400, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdce6de00, 0x0, 0x0, 0xe600000000000000, 0xdc, 0x9, 0x0, 0xe6e6e60000000000, 0xdc0000e6e6e6e6e6, 0x0, 0x0, 0xdcdcdce6e6e6e6e6, 0xdc00dce6e6dcdcdc, 0xe6e6e6dcdce6e6dc, 0xe6e6e6e6dce6e6, 0x0, 0x0, 0x0, 0x0, 0x700000000, 0x0, 0x900000000, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6dce6000000, 0xe6e6e6e6, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x7000000000000, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x700000000000000, 0x0, 0x0, 0x0, 0xdcdcdc0100e6e6e6, 0xdcdcdcdce6e6dcdc, 0x1010101010100e6, 0xdc0000000001, 0xe600000000, 0xe6e6, 0xe6e6e6e6e6dce6e6, 0xdcd6eae6e6dce6e6, 0xe6e6e6e6e6e6e6ca, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe4e8e6e6e6e6e6e6, 0xdce6dce9e6dadce4, 0x0, 0x0, 0xe6e6e6e60101e6e6, 0xe6e6010101, 0xe60101000000e600, 0xdcdcdcdc0101e6dc, 0xe6, 0x0, 0x0, 0xe600000000000000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x900000000000000, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0x0, 0xe0e0dee8e4da0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80800, 0x0, 0xe600000000000000, 0xe6e6e6e600000000, 0xe6e6e6e6e6e6, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0x0, 0x0, 0xe6e6, 0x0, 0x9000000000000, 0x0, 0x0, 0x0, 0x0, 0x900000000, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6, 0x0, 0x0, 0xdcdcdc000000, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000dce6e600e6, 0xe6e60000000000e6, 0xe600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000000000, 0x0, 0x0, 0x0, 0x0, 0x1a000000000000, 0xdce6e6e6e6e6e6e6, 0xe6e6dcdcdcdcdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc0000000000, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0xe6e6e6, 0x0, 0xe600dc0000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900000000dc01e6, 0xdce60000000000, 0x0, 0x0, 0x0, 0xe6e6e6e600000000, 0x0, 0x0, 0x0, 0x0, 0xe6e6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc0000000000, 0xdcdc000000000000, 0xdcdcdce6dce6e6e6, 0xdc, 0x0, 0xdce6dce60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x900000000000000, 0x0, 0x0, 0x0, 0x70900, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x909000000, 0x0, 0x9, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x7090000000000, 0x0, 0x0, 0x90700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x707000000, 0xe6e6000000000000, 0xe6e6e6e6e6, 0xe6e6e6e6e6, 0x0, 0x7000000090000, 0x0, 0x0, 0xe6000000000000, 0x7090000, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x709000000000000, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9090000000000, 0x7000000, 0x0, 0x0, 0x0, 0x900000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x90900070000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900000000000000, 0x0, 0x90900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x101010101, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x1000000000000, 0x1d8d80000000000, 0xd8d8e20000000101, 0xd8d8d8, 0xdcdcdcdcdc000000, 0xe6e6e60000dcdcdc, 0xdcdce6e6, 0x0, 0x0, 0x0, 0xe6e6e6e60000, 0x0, 0x0, 0xe6e6e60000, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e60000e6, 0xe6e600e6e600e6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0xe600000000000000, 0x0, 0x0, 0x0, 0xe6000000000000, 0x0, 0x0, 0x0, 0xe6e6e6e600000000, 0x0, 0x0, 0x0, 0xe6dce8e800000000, 0x0, 0x0, 0x0, 0x0, 0xdcdcdcdcdcdcdc, 0x0, 0xe6e6e6e600000000, 0x7e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)([ 0x0, 0x400], [ 0x1000, 0x2600], [ 0x3000200010000, 0x7000600050004, 0x7000700070008, 0xa000700090007, 0x70007000c000b, 0x7000700070007, 0x700070007000d, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x70010000f000e, 0x7000700070011, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff080208010800, 0x281618138003ffff, 0x383308328821301b, 0x285108507841383a, 0x8068485f185c3056, 0x3882407affff1078, 0x30a510a398903889, 0xffff30b648ad10ab, 0xffffffffffffffff, 0x28cf18cc80bcffff, 0x38ec08eb88da30d4, 0x290b110970fb40f3, 0x8122491919163110, 0x393c4134ffff1132, 0x3960115e994b4143, 0xffff317351691167, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff1979, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff217cffffffff, 0x984118209810980, 0xffff2185ffffffff, 0x989ffffffffffff, 0xffffffffffffffff, 0xffff0991198e218a, 0xffffffffffff0992, 0xffffffffffff2193, 0xffff2197ffffffff, 0x99f119d099c099b, 0xffff21a0ffffffff, 0x9a4ffffffffffff, 0xffffffffffffffff, 0xffff09ac19a921a5, 0xffffffffffff09ad, 0xffffffffffff21ae, 0x21b621b2ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x11bc11baffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff11c011be, 0xffffffffffffffff, 0xffffffffffffffff, 0x9c309c2ffffffff, 0xffffffffffffffff, 0xffffffff09c509c4, 0xffffffffffffffff, 0x9c909c809c709c6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9caffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff29d029cb, 0xffffffffffffffff, 0xffffffffffffffff, 0x29d5ffffffffffff, 0xffffffffffff29da, 0x9dfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9e109e0ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9e309e2ffffffff, 0xffffffff09e509e4, 0x9e709e6ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09e8ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff39e9ffff, 0x29f4ffff21f0ffff, 0xffffffff39f9ffff, 0x2200ffffffffffff, 0xffffffff0a04ffff, 0xffffffff3205ffff, 0xffffffff2a0bffff, 0xffff0a11ffff0a10, 0xffffffff4212ffff, 0x321effff221affff, 0xffffffff4224ffff, 0x222cffffffffffff, 0xffffffff1230ffff, 0xffffffff4232ffff, 0x1a431a40323affff, 0xffff0a46ffffffff, 0xffff1247ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a49ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa4cffffffff124a, 0xa5212501a4dffff, 0xffff0a57ffff2253, 0xffff0a58ffffffff, 0x2259ffffffffffff, 0xa5dffffffffffff, 0xa5effffffffffff, 0xffffffff0a5fffff, 0xa62ffffffff1260, 0xa6812661a63ffff, 0xffff0a6dffff2269, 0xffff0a6effffffff, 0x226fffffffffffff, 0xa73ffffffffffff, 0xa74ffffffffffff, 0xffffffff0a75ffff, 0xffffffffffffffff, 0xffff0a76ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a780a77, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a7a0a79, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a7c0a7b, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1a7dffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a81ffff0a80, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a82ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a83ffffffff, 0xffffffff0a84ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0a85, 0xffffffffffffffff, 0xa87ffffffff0a86, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1288ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1a8affffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a8dffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa90128effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a91ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa92ffffffffffff, 0xffffffffffffffff, 0xffff1a93ffffffff, 0xffff0a96ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa991297ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1a9affff, 0xffffffffffff0a9d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a9effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaa0ffff0a9fffff, 0xaa2ffff0aa1ffff, 0xffffffff0aa3ffff, 0xffffffff0aa4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0aa5ffffffff, 0xaa80aa7ffff0aa6, 0xffff0aa9ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaab0aaaffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaad0aacffffffff, 0xffffffffffffffff, 0xaaf0aaeffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff12b212b0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ab50ab4, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ab70ab6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xac10ac022bc22b8, 0xac50ac40ac30ac2, 0xacf0ace22ca22c6, 0xad30ad20ad10ad0, 0xffffffff12d612d4, 0xffffffffffffffff, 0xffffffff12da12d8, 0xffffffffffffffff, 0xae50ae422e022dc, 0xae90ae80ae70ae6, 0xaf30af222ee22ea, 0xaf70af60af50af4, 0xffffffff1afb1af8, 0xffffffffffffffff, 0xffffffff1b011afe, 0xffffffffffffffff, 0xffffffff13061304, 0xffffffffffffffff, 0xffffffff130a1308, 0xffffffffffffffff, 0xffffffff1b0f1b0c, 0xffffffffffffffff, 0xffffffff1b12ffff, 0xffffffffffffffff, 0xb1e0b1d23192315, 0xb220b210b200b1f, 0xb2c0b2b23272323, 0xb300b2f0b2e0b2d, 0xffffffffffff0b31, 0xffffffffffff0b32, 0xffffffffffffffff, 0xffffffffffff0b33, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b34ffffffff, 0xffffffffffffffff, 0x1b35ffffffffffff, 0xffffffffffffffff, 0xffff0b38ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b39ffffffff, 0xffffffffffffffff, 0xffff1b3affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b3effff0b3d, 0xffffffffffff0b3f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b41ffff0b40, 0xffffffffffff0b42, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb43ffffffffffff, 0xffffffffffffffff, 0xb45ffffffff0b44, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb46ffffffffffff, 0xffffffff0b47ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0b48, 0xb49ffffffffffff, 0xffffffff0b4affff, 0xffffffffffff0b4b, 0xffffffff0b4cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b4dffff, 0xffffffff0b4f0b4e, 0xffffffffffffffff, 0xffffffffffffffff, 0xb510b50ffffffff, 0xb530b52ffffffff, 0xb550b54ffffffff, 0xffffffff0b570b56, 0xb590b58ffffffff, 0xb5b0b5affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b5d0b5cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b5effffffff, 0xffffffffffffffff, 0xb61ffff0b600b5f, 0xffffffffffffffff, 0xb630b62ffffffff, 0xffffffff0b650b64, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b66ffffffff, 0xb67ffffffffffff, 0xb69ffff0b68ffff, 0xb6bffff0b6affff, 0xb6dffff0b6cffff, 0xb6fffff0b6effff, 0xb71ffff0b70ffff, 0xffffffff0b72ffff, 0xffff0b74ffff0b73, 0xffffffffffff0b75, 0x1376ffffffffffff, 0xffff1378ffffffff, 0xffffffff137affff, 0x137effffffff137c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b80ffff, 0xffffffffffffffff, 0xffff0b81ffffffff, 0xb82ffffffffffff, 0xb84ffff0b83ffff, 0xb86ffff0b85ffff, 0xb88ffff0b87ffff, 0xb8affff0b89ffff, 0xb8cffff0b8bffff, 0xffffffff0b8dffff, 0xffff0b8fffff0b8e, 0xffffffffffff0b90, 0x1391ffffffffffff, 0xffff1393ffffffff, 0xffffffff1395ffff, 0x1399ffffffff1397, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb9bffffffffffff, 0xffff0b9e0b9d0b9c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b9fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xba1ffff0ba0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ba2ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0ba40ba3ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x13a5ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1ba7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0bab0baa, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0bacffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); -dstring compositionTable() nothrow pure @nogc @safe -{ +dstring compositionTable() nothrow @nogc pure @safe { static immutable dchar[1882] t = -"\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"~ -"\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"~ -"\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"~ -"\u010E\u0323\u1E0C\u0327\u1E10\u032D\u1E12\u0331\u1E0E\u0300\u00C8\u0301\u00C9\u0302\u00CA\u0303\u1EBC\u0304\u0112"~ -"\u0306\u0114\u0307\u0116\u0308\u00CB\u0309\u1EBA\u030C\u011A\u030F\u0204\u0311\u0206\u0323\u1EB8\u0327\u0228\u0328"~ -"\u0118\u032D\u1E18\u0330\u1E1A\u0307\u1E1E\u0301\u01F4\u0302\u011C\u0304\u1E20\u0306\u011E\u0307\u0120\u030C\u01E6"~ -"\u0327\u0122\u0302\u0124\u0307\u1E22\u0308\u1E26\u030C\u021E\u0323\u1E24\u0327\u1E28\u032E\u1E2A\u0300\u00CC\u0301"~ -"\u00CD\u0302\u00CE\u0303\u0128\u0304\u012A\u0306\u012C\u0307\u0130\u0308\u00CF\u0309\u1EC8\u030C\u01CF\u030F\u0208"~ -"\u0311\u020A\u0323\u1ECA\u0328\u012E\u0330\u1E2C\u0302\u0134\u0301\u1E30\u030C\u01E8\u0323\u1E32\u0327\u0136\u0331"~ -"\u1E34\u0301\u0139\u030C\u013D\u0323\u1E36\u0327\u013B\u032D\u1E3C\u0331\u1E3A\u0301\u1E3E\u0307\u1E40\u0323\u1E42"~ -"\u0300\u01F8\u0301\u0143\u0303\u00D1\u0307\u1E44\u030C\u0147\u0323\u1E46\u0327\u0145\u032D\u1E4A\u0331\u1E48\u0300"~ -"\u00D2\u0301\u00D3\u0302\u00D4\u0303\u00D5\u0304\u014C\u0306\u014E\u0307\u022E\u0308\u00D6\u0309\u1ECE\u030B\u0150"~ -"\u030C\u01D1\u030F\u020C\u0311\u020E\u031B\u01A0\u0323\u1ECC\u0328\u01EA\u0301\u1E54\u0307\u1E56\u0301\u0154\u0307"~ -"\u1E58\u030C\u0158\u030F\u0210\u0311\u0212\u0323\u1E5A\u0327\u0156\u0331\u1E5E\u0301\u015A\u0302\u015C\u0307\u1E60"~ -"\u030C\u0160\u0323\u1E62\u0326\u0218\u0327\u015E\u0307\u1E6A\u030C\u0164\u0323\u1E6C\u0326\u021A\u0327\u0162\u032D"~ -"\u1E70\u0331\u1E6E\u0300\u00D9\u0301\u00DA\u0302\u00DB\u0303\u0168\u0304\u016A\u0306\u016C\u0308\u00DC\u0309\u1EE6"~ -"\u030A\u016E\u030B\u0170\u030C\u01D3\u030F\u0214\u0311\u0216\u031B\u01AF\u0323\u1EE4\u0324\u1E72\u0328\u0172\u032D"~ -"\u1E76\u0330\u1E74\u0303\u1E7C\u0323\u1E7E\u0300\u1E80\u0301\u1E82\u0302\u0174\u0307\u1E86\u0308\u1E84\u0323\u1E88"~ -"\u0307\u1E8A\u0308\u1E8C\u0300\u1EF2\u0301\u00DD\u0302\u0176\u0303\u1EF8\u0304\u0232\u0307\u1E8E\u0308\u0178\u0309"~ -"\u1EF6\u0323\u1EF4\u0301\u0179\u0302\u1E90\u0307\u017B\u030C\u017D\u0323\u1E92\u0331\u1E94\u0300\u00E0\u0301\u00E1"~ -"\u0302\u00E2\u0303\u00E3\u0304\u0101\u0306\u0103\u0307\u0227\u0308\u00E4\u0309\u1EA3\u030A\u00E5\u030C\u01CE\u030F"~ -"\u0201\u0311\u0203\u0323\u1EA1\u0325\u1E01\u0328\u0105\u0307\u1E03\u0323\u1E05\u0331\u1E07\u0301\u0107\u0302\u0109"~ -"\u0307\u010B\u030C\u010D\u0327\u00E7\u0307\u1E0B\u030C\u010F\u0323\u1E0D\u0327\u1E11\u032D\u1E13\u0331\u1E0F\u0300"~ -"\u00E8\u0301\u00E9\u0302\u00EA\u0303\u1EBD\u0304\u0113\u0306\u0115\u0307\u0117\u0308\u00EB\u0309\u1EBB\u030C\u011B"~ -"\u030F\u0205\u0311\u0207\u0323\u1EB9\u0327\u0229\u0328\u0119\u032D\u1E19\u0330\u1E1B\u0307\u1E1F\u0301\u01F5\u0302"~ -"\u011D\u0304\u1E21\u0306\u011F\u0307\u0121\u030C\u01E7\u0327\u0123\u0302\u0125\u0307\u1E23\u0308\u1E27\u030C\u021F"~ -"\u0323\u1E25\u0327\u1E29\u032E\u1E2B\u0331\u1E96\u0300\u00EC\u0301\u00ED\u0302\u00EE\u0303\u0129\u0304\u012B\u0306"~ -"\u012D\u0308\u00EF\u0309\u1EC9\u030C\u01D0\u030F\u0209\u0311\u020B\u0323\u1ECB\u0328\u012F\u0330\u1E2D\u0302\u0135"~ -"\u030C\u01F0\u0301\u1E31\u030C\u01E9\u0323\u1E33\u0327\u0137\u0331\u1E35\u0301\u013A\u030C\u013E\u0323\u1E37\u0327"~ -"\u013C\u032D\u1E3D\u0331\u1E3B\u0301\u1E3F\u0307\u1E41\u0323\u1E43\u0300\u01F9\u0301\u0144\u0303\u00F1\u0307\u1E45"~ -"\u030C\u0148\u0323\u1E47\u0327\u0146\u032D\u1E4B\u0331\u1E49\u0300\u00F2\u0301\u00F3\u0302\u00F4\u0303\u00F5\u0304"~ -"\u014D\u0306\u014F\u0307\u022F\u0308\u00F6\u0309\u1ECF\u030B\u0151\u030C\u01D2\u030F\u020D\u0311\u020F\u031B\u01A1"~ -"\u0323\u1ECD\u0328\u01EB\u0301\u1E55\u0307\u1E57\u0301\u0155\u0307\u1E59\u030C\u0159\u030F\u0211\u0311\u0213\u0323"~ -"\u1E5B\u0327\u0157\u0331\u1E5F\u0301\u015B\u0302\u015D\u0307\u1E61\u030C\u0161\u0323\u1E63\u0326\u0219\u0327\u015F"~ -"\u0307\u1E6B\u0308\u1E97\u030C\u0165\u0323\u1E6D\u0326\u021B\u0327\u0163\u032D\u1E71\u0331\u1E6F\u0300\u00F9\u0301"~ -"\u00FA\u0302\u00FB\u0303\u0169\u0304\u016B\u0306\u016D\u0308\u00FC\u0309\u1EE7\u030A\u016F\u030B\u0171\u030C\u01D4"~ -"\u030F\u0215\u0311\u0217\u031B\u01B0\u0323\u1EE5\u0324\u1E73\u0328\u0173\u032D\u1E77\u0330\u1E75\u0303\u1E7D\u0323"~ -"\u1E7F\u0300\u1E81\u0301\u1E83\u0302\u0175\u0307\u1E87\u0308\u1E85\u030A\u1E98\u0323\u1E89\u0307\u1E8B\u0308\u1E8D"~ -"\u0300\u1EF3\u0301\u00FD\u0302\u0177\u0303\u1EF9\u0304\u0233\u0307\u1E8F\u0308\u00FF\u0309\u1EF7\u030A\u1E99\u0323"~ -"\u1EF5\u0301\u017A\u0302\u1E91\u0307\u017C\u030C\u017E\u0323\u1E93\u0331\u1E95\u0300\u1FED\u0301\u0385\u0342\u1FC1"~ -"\u0300\u1EA6\u0301\u1EA4\u0303\u1EAA\u0309\u1EA8\u0304\u01DE\u0301\u01FA\u0301\u01FC\u0304\u01E2\u0301\u1E08\u0300"~ -"\u1EC0\u0301\u1EBE\u0303\u1EC4\u0309\u1EC2\u0301\u1E2E\u0300\u1ED2\u0301\u1ED0\u0303\u1ED6\u0309\u1ED4\u0301\u1E4C"~ -"\u0304\u022C\u0308\u1E4E\u0304\u022A\u0301\u01FE\u0300\u01DB\u0301\u01D7\u0304\u01D5\u030C\u01D9\u0300\u1EA7\u0301"~ -"\u1EA5\u0303\u1EAB\u0309\u1EA9\u0304\u01DF\u0301\u01FB\u0301\u01FD\u0304\u01E3\u0301\u1E09\u0300\u1EC1\u0301\u1EBF"~ -"\u0303\u1EC5\u0309\u1EC3\u0301\u1E2F\u0300\u1ED3\u0301\u1ED1\u0303\u1ED7\u0309\u1ED5\u0301\u1E4D\u0304\u022D\u0308"~ -"\u1E4F\u0304\u022B\u0301\u01FF\u0300\u01DC\u0301\u01D8\u0304\u01D6\u030C\u01DA\u0300\u1EB0\u0301\u1EAE\u0303\u1EB4"~ -"\u0309\u1EB2\u0300\u1EB1\u0301\u1EAF\u0303\u1EB5\u0309\u1EB3\u0300\u1E14\u0301\u1E16\u0300\u1E15\u0301\u1E17\u0300"~ -"\u1E50\u0301\u1E52\u0300\u1E51\u0301\u1E53\u0307\u1E64\u0307\u1E65\u0307\u1E66\u0307\u1E67\u0301\u1E78\u0301\u1E79"~ -"\u0308\u1E7A\u0308\u1E7B\u0307\u1E9B\u0300\u1EDC\u0301\u1EDA\u0303\u1EE0\u0309\u1EDE\u0323\u1EE2\u0300\u1EDD\u0301"~ -"\u1EDB\u0303\u1EE1\u0309\u1EDF\u0323\u1EE3\u0300\u1EEA\u0301\u1EE8\u0303\u1EEE\u0309\u1EEC\u0323\u1EF0\u0300\u1EEB"~ -"\u0301\u1EE9\u0303\u1EEF\u0309\u1EED\u0323\u1EF1\u030C\u01EE\u0304\u01EC\u0304\u01ED\u0304\u01E0\u0304\u01E1\u0306"~ -"\u1E1C\u0306\u1E1D\u0304\u0230\u0304\u0231\u030C\u01EF\u0300\u1FBA\u0301\u0386\u0304\u1FB9\u0306\u1FB8\u0313\u1F08"~ -"\u0314\u1F09\u0345\u1FBC\u0300\u1FC8\u0301\u0388\u0313\u1F18\u0314\u1F19\u0300\u1FCA\u0301\u0389\u0313\u1F28\u0314"~ -"\u1F29\u0345\u1FCC\u0300\u1FDA\u0301\u038A\u0304\u1FD9\u0306\u1FD8\u0308\u03AA\u0313\u1F38\u0314\u1F39\u0300\u1FF8"~ -"\u0301\u038C\u0313\u1F48\u0314\u1F49\u0314\u1FEC\u0300\u1FEA\u0301\u038E\u0304\u1FE9\u0306\u1FE8\u0308\u03AB\u0314"~ -"\u1F59\u0300\u1FFA\u0301\u038F\u0313\u1F68\u0314\u1F69\u0345\u1FFC\u0345\u1FB4\u0345\u1FC4\u0300\u1F70\u0301\u03AC"~ -"\u0304\u1FB1\u0306\u1FB0\u0313\u1F00\u0314\u1F01\u0342\u1FB6\u0345\u1FB3\u0300\u1F72\u0301\u03AD\u0313\u1F10\u0314"~ -"\u1F11\u0300\u1F74\u0301\u03AE\u0313\u1F20\u0314\u1F21\u0342\u1FC6\u0345\u1FC3\u0300\u1F76\u0301\u03AF\u0304\u1FD1"~ -"\u0306\u1FD0\u0308\u03CA\u0313\u1F30\u0314\u1F31\u0342\u1FD6\u0300\u1F78\u0301\u03CC\u0313\u1F40\u0314\u1F41\u0313"~ -"\u1FE4\u0314\u1FE5\u0300\u1F7A\u0301\u03CD\u0304\u1FE1\u0306\u1FE0\u0308\u03CB\u0313\u1F50\u0314\u1F51\u0342\u1FE6"~ -"\u0300\u1F7C\u0301\u03CE\u0313\u1F60\u0314\u1F61\u0342\u1FF6\u0345\u1FF3\u0300\u1FD2\u0301\u0390\u0342\u1FD7\u0300"~ -"\u1FE2\u0301\u03B0\u0342\u1FE7\u0345\u1FF4\u0301\u03D3\u0308\u03D4\u0308\u0407\u0306\u04D0\u0308\u04D2\u0301\u0403"~ -"\u0300\u0400\u0306\u04D6\u0308\u0401\u0306\u04C1\u0308\u04DC\u0308\u04DE\u0300\u040D\u0304\u04E2\u0306\u0419\u0308"~ -"\u04E4\u0301\u040C\u0308\u04E6\u0304\u04EE\u0306\u040E\u0308\u04F0\u030B\u04F2\u0308\u04F4\u0308\u04F8\u0308\u04EC"~ -"\u0306\u04D1\u0308\u04D3\u0301\u0453\u0300\u0450\u0306\u04D7\u0308\u0451\u0306\u04C2\u0308\u04DD\u0308\u04DF\u0300"~ -"\u045D\u0304\u04E3\u0306\u0439\u0308\u04E5\u0301\u045C\u0308\u04E7\u0304\u04EF\u0306\u045E\u0308\u04F1\u030B\u04F3"~ -"\u0308\u04F5\u0308\u04F9\u0308\u04ED\u0308\u0457\u030F\u0476\u030F\u0477\u0308\u04DA\u0308\u04DB\u0308\u04EA\u0308"~ -"\u04EB\u0653\u0622\u0654\u0623\u0655\u0625\u0654\u0624\u0654\u0626\u0654\u06C2\u0654\u06D3\u0654\u06C0\u093C\u0929"~ -"\u093C\u0931\u093C\u0934\u09BE\u09CB\u09D7\u09CC\u0B3E\u0B4B\u0B56\u0B48\u0B57\u0B4C\u0BD7\u0B94\u0BBE\u0BCA\u0BD7"~ -"\u0BCC\u0BBE\u0BCB\u0C56\u0C48\u0CD5\u0CC0\u0CC2\u0CCA\u0CD5\u0CC7\u0CD6\u0CC8\u0CD5\u0CCB\u0D3E\u0D4A\u0D57\u0D4C"~ -"\u0D3E\u0D4B\u0DCA\u0DDA\u0DCF\u0DDC\u0DDF\u0DDE\u0DCA\u0DDD\u102E\u1026\u1B35\u1B06\u1B35\u1B08\u1B35\u1B0A\u1B35"~ -"\u1B0C\u1B35\u1B0E\u1B35\u1B12\u1B35\u1B3B\u1B35\u1B3D\u1B35\u1B40\u1B35\u1B41\u1B35\u1B43\u0304\u1E38\u0304\u1E39"~ -"\u0304\u1E5C\u0304\u1E5D\u0307\u1E68\u0307\u1E69\u0302\u1EAC\u0306\u1EB6\u0302\u1EAD\u0306\u1EB7\u0302\u1EC6\u0302"~ -"\u1EC7\u0302\u1ED8\u0302\u1ED9\u0300\u1F02\u0301\u1F04\u0342\u1F06\u0345\u1F80\u0300\u1F03\u0301\u1F05\u0342\u1F07"~ -"\u0345\u1F81\u0345\u1F82\u0345\u1F83\u0345\u1F84\u0345\u1F85\u0345\u1F86\u0345\u1F87\u0300\u1F0A\u0301\u1F0C\u0342"~ -"\u1F0E\u0345\u1F88\u0300\u1F0B\u0301\u1F0D\u0342\u1F0F\u0345\u1F89\u0345\u1F8A\u0345\u1F8B\u0345\u1F8C\u0345\u1F8D"~ -"\u0345\u1F8E\u0345\u1F8F\u0300\u1F12\u0301\u1F14\u0300\u1F13\u0301\u1F15\u0300\u1F1A\u0301\u1F1C\u0300\u1F1B\u0301"~ -"\u1F1D\u0300\u1F22\u0301\u1F24\u0342\u1F26\u0345\u1F90\u0300\u1F23\u0301\u1F25\u0342\u1F27\u0345\u1F91\u0345\u1F92"~ -"\u0345\u1F93\u0345\u1F94\u0345\u1F95\u0345\u1F96\u0345\u1F97\u0300\u1F2A\u0301\u1F2C\u0342\u1F2E\u0345\u1F98\u0300"~ -"\u1F2B\u0301\u1F2D\u0342\u1F2F\u0345\u1F99\u0345\u1F9A\u0345\u1F9B\u0345\u1F9C\u0345\u1F9D\u0345\u1F9E\u0345\u1F9F"~ -"\u0300\u1F32\u0301\u1F34\u0342\u1F36\u0300\u1F33\u0301\u1F35\u0342\u1F37\u0300\u1F3A\u0301\u1F3C\u0342\u1F3E\u0300"~ -"\u1F3B\u0301\u1F3D\u0342\u1F3F\u0300\u1F42\u0301\u1F44\u0300\u1F43\u0301\u1F45\u0300\u1F4A\u0301\u1F4C\u0300\u1F4B"~ -"\u0301\u1F4D\u0300\u1F52\u0301\u1F54\u0342\u1F56\u0300\u1F53\u0301\u1F55\u0342\u1F57\u0300\u1F5B\u0301\u1F5D\u0342"~ -"\u1F5F\u0300\u1F62\u0301\u1F64\u0342\u1F66\u0345\u1FA0\u0300\u1F63\u0301\u1F65\u0342\u1F67\u0345\u1FA1\u0345\u1FA2"~ -"\u0345\u1FA3\u0345\u1FA4\u0345\u1FA5\u0345\u1FA6\u0345\u1FA7\u0300\u1F6A\u0301\u1F6C\u0342\u1F6E\u0345\u1FA8\u0300"~ -"\u1F6B\u0301\u1F6D\u0342\u1F6F\u0345\u1FA9\u0345\u1FAA\u0345\u1FAB\u0345\u1FAC\u0345\u1FAD\u0345\u1FAE\u0345\u1FAF"~ -"\u0345\u1FB2\u0345\u1FC2\u0345\u1FF2\u0345\u1FB7\u0300\u1FCD\u0301\u1FCE\u0342\u1FCF\u0345\u1FC7\u0345\u1FF7\u0300"~ -"\u1FDD\u0301\u1FDE\u0342\u1FDF\u0338\u219A\u0338\u219B\u0338\u21AE\u0338\u21CD\u0338\u21CF\u0338\u21CE\u0338\u2204"~ -"\u0338\u2209\u0338\u220C\u0338\u2224\u0338\u2226\u0338\u2241\u0338\u2244\u0338\u2247\u0338\u2249\u0338\u226D\u0338"~ -"\u2262\u0338\u2270\u0338\u2271\u0338\u2274\u0338\u2275\u0338\u2278\u0338\u2279\u0338\u2280\u0338\u2281\u0338\u22E0"~ -"\u0338\u22E1\u0338\u2284\u0338\u2285\u0338\u2288\u0338\u2289\u0338\u22E2\u0338\u22E3\u0338\u22AC\u0338\u22AD\u0338"~ -"\u22AE\u0338\u22AF\u0338\u22EA\u0338\u22EB\u0338\u22EC\u0338\u22ED\u3099\u3094\u3099\u304C\u3099\u304E\u3099\u3050"~ -"\u3099\u3052\u3099\u3054\u3099\u3056\u3099\u3058\u3099\u305A\u3099\u305C\u3099\u305E\u3099\u3060\u3099\u3062\u3099"~ -"\u3065\u3099\u3067\u3099\u3069\u3099\u3070\u309A\u3071\u3099\u3073\u309A\u3074\u3099\u3076\u309A\u3077\u3099\u3079"~ -"\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"~ -"\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"~ -"\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"~ -"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"~ -"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"~ -"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"~ -""d; +"\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"d~ +"\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"d~ +"\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"d~ +"\u010E\u0323\u1E0C\u0327\u1E10\u032D\u1E12\u0331\u1E0E\u0300\u00C8\u0301\u00C9\u0302\u00CA\u0303\u1EBC\u0304\u0112"d~ +"\u0306\u0114\u0307\u0116\u0308\u00CB\u0309\u1EBA\u030C\u011A\u030F\u0204\u0311\u0206\u0323\u1EB8\u0327\u0228\u0328"d~ +"\u0118\u032D\u1E18\u0330\u1E1A\u0307\u1E1E\u0301\u01F4\u0302\u011C\u0304\u1E20\u0306\u011E\u0307\u0120\u030C\u01E6"d~ +"\u0327\u0122\u0302\u0124\u0307\u1E22\u0308\u1E26\u030C\u021E\u0323\u1E24\u0327\u1E28\u032E\u1E2A\u0300\u00CC\u0301"d~ +"\u00CD\u0302\u00CE\u0303\u0128\u0304\u012A\u0306\u012C\u0307\u0130\u0308\u00CF\u0309\u1EC8\u030C\u01CF\u030F\u0208"d~ +"\u0311\u020A\u0323\u1ECA\u0328\u012E\u0330\u1E2C\u0302\u0134\u0301\u1E30\u030C\u01E8\u0323\u1E32\u0327\u0136\u0331"d~ +"\u1E34\u0301\u0139\u030C\u013D\u0323\u1E36\u0327\u013B\u032D\u1E3C\u0331\u1E3A\u0301\u1E3E\u0307\u1E40\u0323\u1E42"d~ +"\u0300\u01F8\u0301\u0143\u0303\u00D1\u0307\u1E44\u030C\u0147\u0323\u1E46\u0327\u0145\u032D\u1E4A\u0331\u1E48\u0300"d~ +"\u00D2\u0301\u00D3\u0302\u00D4\u0303\u00D5\u0304\u014C\u0306\u014E\u0307\u022E\u0308\u00D6\u0309\u1ECE\u030B\u0150"d~ +"\u030C\u01D1\u030F\u020C\u0311\u020E\u031B\u01A0\u0323\u1ECC\u0328\u01EA\u0301\u1E54\u0307\u1E56\u0301\u0154\u0307"d~ +"\u1E58\u030C\u0158\u030F\u0210\u0311\u0212\u0323\u1E5A\u0327\u0156\u0331\u1E5E\u0301\u015A\u0302\u015C\u0307\u1E60"d~ +"\u030C\u0160\u0323\u1E62\u0326\u0218\u0327\u015E\u0307\u1E6A\u030C\u0164\u0323\u1E6C\u0326\u021A\u0327\u0162\u032D"d~ +"\u1E70\u0331\u1E6E\u0300\u00D9\u0301\u00DA\u0302\u00DB\u0303\u0168\u0304\u016A\u0306\u016C\u0308\u00DC\u0309\u1EE6"d~ +"\u030A\u016E\u030B\u0170\u030C\u01D3\u030F\u0214\u0311\u0216\u031B\u01AF\u0323\u1EE4\u0324\u1E72\u0328\u0172\u032D"d~ +"\u1E76\u0330\u1E74\u0303\u1E7C\u0323\u1E7E\u0300\u1E80\u0301\u1E82\u0302\u0174\u0307\u1E86\u0308\u1E84\u0323\u1E88"d~ +"\u0307\u1E8A\u0308\u1E8C\u0300\u1EF2\u0301\u00DD\u0302\u0176\u0303\u1EF8\u0304\u0232\u0307\u1E8E\u0308\u0178\u0309"d~ +"\u1EF6\u0323\u1EF4\u0301\u0179\u0302\u1E90\u0307\u017B\u030C\u017D\u0323\u1E92\u0331\u1E94\u0300\u00E0\u0301\u00E1"d~ +"\u0302\u00E2\u0303\u00E3\u0304\u0101\u0306\u0103\u0307\u0227\u0308\u00E4\u0309\u1EA3\u030A\u00E5\u030C\u01CE\u030F"d~ +"\u0201\u0311\u0203\u0323\u1EA1\u0325\u1E01\u0328\u0105\u0307\u1E03\u0323\u1E05\u0331\u1E07\u0301\u0107\u0302\u0109"d~ +"\u0307\u010B\u030C\u010D\u0327\u00E7\u0307\u1E0B\u030C\u010F\u0323\u1E0D\u0327\u1E11\u032D\u1E13\u0331\u1E0F\u0300"d~ +"\u00E8\u0301\u00E9\u0302\u00EA\u0303\u1EBD\u0304\u0113\u0306\u0115\u0307\u0117\u0308\u00EB\u0309\u1EBB\u030C\u011B"d~ +"\u030F\u0205\u0311\u0207\u0323\u1EB9\u0327\u0229\u0328\u0119\u032D\u1E19\u0330\u1E1B\u0307\u1E1F\u0301\u01F5\u0302"d~ +"\u011D\u0304\u1E21\u0306\u011F\u0307\u0121\u030C\u01E7\u0327\u0123\u0302\u0125\u0307\u1E23\u0308\u1E27\u030C\u021F"d~ +"\u0323\u1E25\u0327\u1E29\u032E\u1E2B\u0331\u1E96\u0300\u00EC\u0301\u00ED\u0302\u00EE\u0303\u0129\u0304\u012B\u0306"d~ +"\u012D\u0308\u00EF\u0309\u1EC9\u030C\u01D0\u030F\u0209\u0311\u020B\u0323\u1ECB\u0328\u012F\u0330\u1E2D\u0302\u0135"d~ +"\u030C\u01F0\u0301\u1E31\u030C\u01E9\u0323\u1E33\u0327\u0137\u0331\u1E35\u0301\u013A\u030C\u013E\u0323\u1E37\u0327"d~ +"\u013C\u032D\u1E3D\u0331\u1E3B\u0301\u1E3F\u0307\u1E41\u0323\u1E43\u0300\u01F9\u0301\u0144\u0303\u00F1\u0307\u1E45"d~ +"\u030C\u0148\u0323\u1E47\u0327\u0146\u032D\u1E4B\u0331\u1E49\u0300\u00F2\u0301\u00F3\u0302\u00F4\u0303\u00F5\u0304"d~ +"\u014D\u0306\u014F\u0307\u022F\u0308\u00F6\u0309\u1ECF\u030B\u0151\u030C\u01D2\u030F\u020D\u0311\u020F\u031B\u01A1"d~ +"\u0323\u1ECD\u0328\u01EB\u0301\u1E55\u0307\u1E57\u0301\u0155\u0307\u1E59\u030C\u0159\u030F\u0211\u0311\u0213\u0323"d~ +"\u1E5B\u0327\u0157\u0331\u1E5F\u0301\u015B\u0302\u015D\u0307\u1E61\u030C\u0161\u0323\u1E63\u0326\u0219\u0327\u015F"d~ +"\u0307\u1E6B\u0308\u1E97\u030C\u0165\u0323\u1E6D\u0326\u021B\u0327\u0163\u032D\u1E71\u0331\u1E6F\u0300\u00F9\u0301"d~ +"\u00FA\u0302\u00FB\u0303\u0169\u0304\u016B\u0306\u016D\u0308\u00FC\u0309\u1EE7\u030A\u016F\u030B\u0171\u030C\u01D4"d~ +"\u030F\u0215\u0311\u0217\u031B\u01B0\u0323\u1EE5\u0324\u1E73\u0328\u0173\u032D\u1E77\u0330\u1E75\u0303\u1E7D\u0323"d~ +"\u1E7F\u0300\u1E81\u0301\u1E83\u0302\u0175\u0307\u1E87\u0308\u1E85\u030A\u1E98\u0323\u1E89\u0307\u1E8B\u0308\u1E8D"d~ +"\u0300\u1EF3\u0301\u00FD\u0302\u0177\u0303\u1EF9\u0304\u0233\u0307\u1E8F\u0308\u00FF\u0309\u1EF7\u030A\u1E99\u0323"d~ +"\u1EF5\u0301\u017A\u0302\u1E91\u0307\u017C\u030C\u017E\u0323\u1E93\u0331\u1E95\u0300\u1FED\u0301\u0385\u0342\u1FC1"d~ +"\u0300\u1EA6\u0301\u1EA4\u0303\u1EAA\u0309\u1EA8\u0304\u01DE\u0301\u01FA\u0301\u01FC\u0304\u01E2\u0301\u1E08\u0300"d~ +"\u1EC0\u0301\u1EBE\u0303\u1EC4\u0309\u1EC2\u0301\u1E2E\u0300\u1ED2\u0301\u1ED0\u0303\u1ED6\u0309\u1ED4\u0301\u1E4C"d~ +"\u0304\u022C\u0308\u1E4E\u0304\u022A\u0301\u01FE\u0300\u01DB\u0301\u01D7\u0304\u01D5\u030C\u01D9\u0300\u1EA7\u0301"d~ +"\u1EA5\u0303\u1EAB\u0309\u1EA9\u0304\u01DF\u0301\u01FB\u0301\u01FD\u0304\u01E3\u0301\u1E09\u0300\u1EC1\u0301\u1EBF"d~ +"\u0303\u1EC5\u0309\u1EC3\u0301\u1E2F\u0300\u1ED3\u0301\u1ED1\u0303\u1ED7\u0309\u1ED5\u0301\u1E4D\u0304\u022D\u0308"d~ +"\u1E4F\u0304\u022B\u0301\u01FF\u0300\u01DC\u0301\u01D8\u0304\u01D6\u030C\u01DA\u0300\u1EB0\u0301\u1EAE\u0303\u1EB4"d~ +"\u0309\u1EB2\u0300\u1EB1\u0301\u1EAF\u0303\u1EB5\u0309\u1EB3\u0300\u1E14\u0301\u1E16\u0300\u1E15\u0301\u1E17\u0300"d~ +"\u1E50\u0301\u1E52\u0300\u1E51\u0301\u1E53\u0307\u1E64\u0307\u1E65\u0307\u1E66\u0307\u1E67\u0301\u1E78\u0301\u1E79"d~ +"\u0308\u1E7A\u0308\u1E7B\u0307\u1E9B\u0300\u1EDC\u0301\u1EDA\u0303\u1EE0\u0309\u1EDE\u0323\u1EE2\u0300\u1EDD\u0301"d~ +"\u1EDB\u0303\u1EE1\u0309\u1EDF\u0323\u1EE3\u0300\u1EEA\u0301\u1EE8\u0303\u1EEE\u0309\u1EEC\u0323\u1EF0\u0300\u1EEB"d~ +"\u0301\u1EE9\u0303\u1EEF\u0309\u1EED\u0323\u1EF1\u030C\u01EE\u0304\u01EC\u0304\u01ED\u0304\u01E0\u0304\u01E1\u0306"d~ +"\u1E1C\u0306\u1E1D\u0304\u0230\u0304\u0231\u030C\u01EF\u0300\u1FBA\u0301\u0386\u0304\u1FB9\u0306\u1FB8\u0313\u1F08"d~ +"\u0314\u1F09\u0345\u1FBC\u0300\u1FC8\u0301\u0388\u0313\u1F18\u0314\u1F19\u0300\u1FCA\u0301\u0389\u0313\u1F28\u0314"d~ +"\u1F29\u0345\u1FCC\u0300\u1FDA\u0301\u038A\u0304\u1FD9\u0306\u1FD8\u0308\u03AA\u0313\u1F38\u0314\u1F39\u0300\u1FF8"d~ +"\u0301\u038C\u0313\u1F48\u0314\u1F49\u0314\u1FEC\u0300\u1FEA\u0301\u038E\u0304\u1FE9\u0306\u1FE8\u0308\u03AB\u0314"d~ +"\u1F59\u0300\u1FFA\u0301\u038F\u0313\u1F68\u0314\u1F69\u0345\u1FFC\u0345\u1FB4\u0345\u1FC4\u0300\u1F70\u0301\u03AC"d~ +"\u0304\u1FB1\u0306\u1FB0\u0313\u1F00\u0314\u1F01\u0342\u1FB6\u0345\u1FB3\u0300\u1F72\u0301\u03AD\u0313\u1F10\u0314"d~ +"\u1F11\u0300\u1F74\u0301\u03AE\u0313\u1F20\u0314\u1F21\u0342\u1FC6\u0345\u1FC3\u0300\u1F76\u0301\u03AF\u0304\u1FD1"d~ +"\u0306\u1FD0\u0308\u03CA\u0313\u1F30\u0314\u1F31\u0342\u1FD6\u0300\u1F78\u0301\u03CC\u0313\u1F40\u0314\u1F41\u0313"d~ +"\u1FE4\u0314\u1FE5\u0300\u1F7A\u0301\u03CD\u0304\u1FE1\u0306\u1FE0\u0308\u03CB\u0313\u1F50\u0314\u1F51\u0342\u1FE6"d~ +"\u0300\u1F7C\u0301\u03CE\u0313\u1F60\u0314\u1F61\u0342\u1FF6\u0345\u1FF3\u0300\u1FD2\u0301\u0390\u0342\u1FD7\u0300"d~ +"\u1FE2\u0301\u03B0\u0342\u1FE7\u0345\u1FF4\u0301\u03D3\u0308\u03D4\u0308\u0407\u0306\u04D0\u0308\u04D2\u0301\u0403"d~ +"\u0300\u0400\u0306\u04D6\u0308\u0401\u0306\u04C1\u0308\u04DC\u0308\u04DE\u0300\u040D\u0304\u04E2\u0306\u0419\u0308"d~ +"\u04E4\u0301\u040C\u0308\u04E6\u0304\u04EE\u0306\u040E\u0308\u04F0\u030B\u04F2\u0308\u04F4\u0308\u04F8\u0308\u04EC"d~ +"\u0306\u04D1\u0308\u04D3\u0301\u0453\u0300\u0450\u0306\u04D7\u0308\u0451\u0306\u04C2\u0308\u04DD\u0308\u04DF\u0300"d~ +"\u045D\u0304\u04E3\u0306\u0439\u0308\u04E5\u0301\u045C\u0308\u04E7\u0304\u04EF\u0306\u045E\u0308\u04F1\u030B\u04F3"d~ +"\u0308\u04F5\u0308\u04F9\u0308\u04ED\u0308\u0457\u030F\u0476\u030F\u0477\u0308\u04DA\u0308\u04DB\u0308\u04EA\u0308"d~ +"\u04EB\u0653\u0622\u0654\u0623\u0655\u0625\u0654\u0624\u0654\u0626\u0654\u06C2\u0654\u06D3\u0654\u06C0\u093C\u0929"d~ +"\u093C\u0931\u093C\u0934\u09BE\u09CB\u09D7\u09CC\u0B3E\u0B4B\u0B56\u0B48\u0B57\u0B4C\u0BD7\u0B94\u0BBE\u0BCA\u0BD7"d~ +"\u0BCC\u0BBE\u0BCB\u0C56\u0C48\u0CD5\u0CC0\u0CC2\u0CCA\u0CD5\u0CC7\u0CD6\u0CC8\u0CD5\u0CCB\u0D3E\u0D4A\u0D57\u0D4C"d~ +"\u0D3E\u0D4B\u0DCA\u0DDA\u0DCF\u0DDC\u0DDF\u0DDE\u0DCA\u0DDD\u102E\u1026\u1B35\u1B06\u1B35\u1B08\u1B35\u1B0A\u1B35"d~ +"\u1B0C\u1B35\u1B0E\u1B35\u1B12\u1B35\u1B3B\u1B35\u1B3D\u1B35\u1B40\u1B35\u1B41\u1B35\u1B43\u0304\u1E38\u0304\u1E39"d~ +"\u0304\u1E5C\u0304\u1E5D\u0307\u1E68\u0307\u1E69\u0302\u1EAC\u0306\u1EB6\u0302\u1EAD\u0306\u1EB7\u0302\u1EC6\u0302"d~ +"\u1EC7\u0302\u1ED8\u0302\u1ED9\u0300\u1F02\u0301\u1F04\u0342\u1F06\u0345\u1F80\u0300\u1F03\u0301\u1F05\u0342\u1F07"d~ +"\u0345\u1F81\u0345\u1F82\u0345\u1F83\u0345\u1F84\u0345\u1F85\u0345\u1F86\u0345\u1F87\u0300\u1F0A\u0301\u1F0C\u0342"d~ +"\u1F0E\u0345\u1F88\u0300\u1F0B\u0301\u1F0D\u0342\u1F0F\u0345\u1F89\u0345\u1F8A\u0345\u1F8B\u0345\u1F8C\u0345\u1F8D"d~ +"\u0345\u1F8E\u0345\u1F8F\u0300\u1F12\u0301\u1F14\u0300\u1F13\u0301\u1F15\u0300\u1F1A\u0301\u1F1C\u0300\u1F1B\u0301"d~ +"\u1F1D\u0300\u1F22\u0301\u1F24\u0342\u1F26\u0345\u1F90\u0300\u1F23\u0301\u1F25\u0342\u1F27\u0345\u1F91\u0345\u1F92"d~ +"\u0345\u1F93\u0345\u1F94\u0345\u1F95\u0345\u1F96\u0345\u1F97\u0300\u1F2A\u0301\u1F2C\u0342\u1F2E\u0345\u1F98\u0300"d~ +"\u1F2B\u0301\u1F2D\u0342\u1F2F\u0345\u1F99\u0345\u1F9A\u0345\u1F9B\u0345\u1F9C\u0345\u1F9D\u0345\u1F9E\u0345\u1F9F"d~ +"\u0300\u1F32\u0301\u1F34\u0342\u1F36\u0300\u1F33\u0301\u1F35\u0342\u1F37\u0300\u1F3A\u0301\u1F3C\u0342\u1F3E\u0300"d~ +"\u1F3B\u0301\u1F3D\u0342\u1F3F\u0300\u1F42\u0301\u1F44\u0300\u1F43\u0301\u1F45\u0300\u1F4A\u0301\u1F4C\u0300\u1F4B"d~ +"\u0301\u1F4D\u0300\u1F52\u0301\u1F54\u0342\u1F56\u0300\u1F53\u0301\u1F55\u0342\u1F57\u0300\u1F5B\u0301\u1F5D\u0342"d~ +"\u1F5F\u0300\u1F62\u0301\u1F64\u0342\u1F66\u0345\u1FA0\u0300\u1F63\u0301\u1F65\u0342\u1F67\u0345\u1FA1\u0345\u1FA2"d~ +"\u0345\u1FA3\u0345\u1FA4\u0345\u1FA5\u0345\u1FA6\u0345\u1FA7\u0300\u1F6A\u0301\u1F6C\u0342\u1F6E\u0345\u1FA8\u0300"d~ +"\u1F6B\u0301\u1F6D\u0342\u1F6F\u0345\u1FA9\u0345\u1FAA\u0345\u1FAB\u0345\u1FAC\u0345\u1FAD\u0345\u1FAE\u0345\u1FAF"d~ +"\u0345\u1FB2\u0345\u1FC2\u0345\u1FF2\u0345\u1FB7\u0300\u1FCD\u0301\u1FCE\u0342\u1FCF\u0345\u1FC7\u0345\u1FF7\u0300"d~ +"\u1FDD\u0301\u1FDE\u0342\u1FDF\u0338\u219A\u0338\u219B\u0338\u21AE\u0338\u21CD\u0338\u21CF\u0338\u21CE\u0338\u2204"d~ +"\u0338\u2209\u0338\u220C\u0338\u2224\u0338\u2226\u0338\u2241\u0338\u2244\u0338\u2247\u0338\u2249\u0338\u226D\u0338"d~ +"\u2262\u0338\u2270\u0338\u2271\u0338\u2274\u0338\u2275\u0338\u2278\u0338\u2279\u0338\u2280\u0338\u2281\u0338\u22E0"d~ +"\u0338\u22E1\u0338\u2284\u0338\u2285\u0338\u2288\u0338\u2289\u0338\u22E2\u0338\u22E3\u0338\u22AC\u0338\u22AD\u0338"d~ +"\u22AE\u0338\u22AF\u0338\u22EA\u0338\u22EB\u0338\u22EC\u0338\u22ED\u3099\u3094\u3099\u304C\u3099\u304E\u3099\u3050"d~ +"\u3099\u3052\u3099\u3054\u3099\u3056\u3099\u3058\u3099\u305A\u3099\u305C\u3099\u305E\u3099\u3060\u3099\u3062\u3099"d~ +"\u3065\u3099\u3067\u3099\u3069\u3099\u3070\u309A\u3071\u3099\u3073\u309A\u3074\u3099\u3076\u309A\u3077\u3099\u3079"d~ +"\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"d~ +"\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"d~ +"\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"d~ +"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"d~ +"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"d~ +"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"d; return t[]; } diff --git a/std/internal/unicode_decomp.d b/std/internal/unicode_decomp.d index 66bb35217c0..3e41811e4a3 100644 --- a/std/internal/unicode_decomp.d +++ b/std/internal/unicode_decomp.d @@ -22,11 +22,850 @@ static if (size_t.sizeof == 4) enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x40, 0x540], [ 0x100, 0xa00, 0x2360], [ 0x2020100, 0x4020302, 0x2020205, 0x7060202, 0x2020202, 0x8020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x80000, 0xa0009, 0xc000b, 0x0, 0xd0000, 0xf000e, 0x0, 0x110010, 0x130012, 0x150014, 0x170016, 0x190018, 0x0, 0x1b001a, 0x0, 0x0, 0x1c, 0x0, 0x1d0000, 0x1e0000, 0x0, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200000, 0x21, 0x0, 0x22, 0x230000, 0x24, 0x0, 0x0, 0x0, 0x25, 0x26, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0x2b, 0x2c0000, 0x0, 0x2d0000, 0x2e, 0x2f, 0x310030, 0x330032, 0x0, 0x340000, 0x0, 0x0, 0x350000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x370036, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x3b003a, 0x3d003c, 0x0, 0x3f003e, 0x410040, 0x430042, 0x450044, 0x470046, 0x490048, 0x4b004a, 0x4d004c, 0x4f004e, 0x510050, 0x530052, 0x0, 0x550054, 0x570056, 0x590058, 0x5a, 0x5c005b, 0x5e005d, 0x60005f, 0x610000, 0x620000, 0x0, 0x0, 0x0, 0x0, 0x630000, 0x650064, 0x670066, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x690000, 0x0, 0x6a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b0000, 0x0, 0x0, 0x0, 0x6c0000, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x6e0000, 0x70006f, 0x720071, 0x740073, 0x75, 0x770076, 0x790078, 0x7b007a, 0x7d007c, 0x7e0000, 0x80007f, 0x81, 0x0, 0x830082, 0x850084, 0x870086, 0x890088, 0x8b008a, 0x8d008c, 0x8f008e, 0x910090, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x930000, 0x0, 0x940000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x960095, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x980097, 0x9a0099, 0x9c009b, 0x9e009d, 0xa0009f, 0xa200a1, 0xa400a3, 0xa5, 0xa700a6, 0xa900a8, 0xab00aa, 0xad00ac, 0xaf00ae, 0xb100b0, 0xb300b2, 0xb500b4, 0xb700b6, 0xb900b8, 0xbb00ba, 0xbd00bc, 0xbf00be, 0xc100c0, 0xc300c2, 0xc500c4, 0xc700c6, 0xc900c8, 0xcb00ca, 0xcd00cc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcf00ce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd100d0, 0x0, 0xd20000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd3, 0x0, 0x0, 0x0, 0x0, 0xd40000, 0x0, 0x0, 0x0, 0xd50000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd800d7, 0xd90000, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00db, 0xde00dd, 0xe000df, 0xe200e1, 0xe400e3, 0xe600e5, 0xdb00e7, 0xe800dc, 0xe900de, 0xeb00ea, 0xec00e2, 0xee00ed, 0xf000ef, 0xf200f1, 0xf400f3, 0xf600f5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf70000, 0xf900f8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfb00fa, 0xfd00fc, 0xff00fe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1010100, 0x1030102, 0x104, 0x0, 0x1060105, 0x107, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1080000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10a0109, 0x10c010b, 0x10e010d, 0x110010f, 0x1120111, 0x1140113, 0x1160115, 0x1180117, 0x119, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x15, 0x692, 0x0, 0x90000, 0x0, 0x30f0343, 0x120f0003, 0x0, 0x3140048, 0x78a, 0x3c603ce, 0x494, 0x570056d, 0x5860573, 0x5b005a6, 0x5f80000, 0x62e062b, 0x6580631, 0x6e706e4, 0x6f906ea, 0x7920000, 0x7ac07a9, 0x7c207af, 0x7e6, 0x8b40000, 0x8ba08b7, 0x96208ce, 0x0, 0x9af09ac, 0x9c509b2, 0x9ef09e5, 0xa4a0000, 0xa8c0a89, 0xab60a8f, 0xb490b46, 0xb580b4c, 0xc440000, 0xc610c5e, 0xc770c64, 0xc9b, 0xd6b0000, 0xd710d6e, 0xe0f0d85, 0xe1e0000, 0x9c80589, 0x9cb058c, 0xa0d05ce, 0xa3e05ec, 0xa4105ef, 0xa4405f2, 0xa4705f5, 0xa71061a, 0x0, 0xaa50647, 0xab00652, 0xab30655, 0xad30675, 0xabc065e, 0xafe069a, 0xb0406a0, 0xb0706a3, 0xb0d06a9, 0xb1906ba, 0x0, 0xb4f06ed, 0xb5206f0, 0xb5506f3, 0xb6e070f, 0x6f6, 0xb3a06d8, 0xb760717, 0xbb1072e, 0x7430000, 0x7500bcf, 0x7460bdc, 0x7400bd2, 0xbcc, 0x78f0000, 0x79e0c41, 0x7980c50, 0xf300c4a, 0x0, 0xc8607d1, 0xc9107dc, 0xca507f0, 0x0, 0xd0a0845, 0xd20085b, 0xd10084b, 0xd2e086f, 0xd350876, 0xd4c088d, 0xd3b087c, 0xd6008a9, 0xd5708a0, 0x0, 0xd7408bd, 0xd7b08c4, 0xd8208cb, 0xd9b08e4, 0xd9e08e7, 0xdc70910, 0xdec0942, 0xe120965, 0x97c0971, 0x9820e2c, 0x60d0e32, 0x8430614, 0xcb107fc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f30000, 0xdaa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x613060c, 0x7360a6a, 0xbbc073d, 0x7860783, 0x5b70c35, 0x70309f6, 0x7f30b62, 0x8ea0ca8, 0x8d90da1, 0x8d50d90, 0x8dd0d8c, 0x8d10d94, 0xd88, 0x9e805a9, 0x9e105a2, 0xe680e5d, 0x0, 0xb0a06a6, 0xbab0728, 0xccf081a, 0xcd2081d, 0xf070e82, 0x6090b79, 0xa670610, 0xafb0697, 0x0, 0xc3e078c, 0x9f205b3, 0xe650e5a, 0xe6f0e60, 0x9f905ba, 0x9fc05bd, 0xabf0661, 0xac20664, 0xb650706, 0xb680709, 0xcab07f6, 0xcae07f9, 0xd13084e, 0xd160851, 0xda408ed, 0xda708f0, 0xd49088a, 0xd5d08a6, 0x0, 0xb2206c3, 0x0, 0x0, 0x0, 0x9de059f, 0xacc066e, 0xc9e07e9, 0xc7e07c9, 0xc9407df, 0xc9707e2, 0xe18096b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xeb70b10, 0xa14073e, 0xee10edd, 0xde40ee9, 0x695, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12000f, 0x4b0024, 0x270006, 0x0, 0xa2b0eb1, 0xb440843, 0xf0a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4001a, 0x2b0000, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf2e, 0x0, 0x0, 0x54, 0x0, 0x546, 0x0, 0x0, 0x1c0003, 0x7410f45, 0xfc00fa0, 0x1011, 0x104a, 0x10991073, 0x11e2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x107c101a, 0x115210ec, 0x11d21176, 0x1270, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x126911db, 0x12601232, 0x12a8, 0x11cb1147, 0x1073106e, 0x1299107c, 0x124b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x124d120b, 0x1255, 0x114d100a, 0x0, 0x106a0000, 0x0, 0x0, 0x0, 0x1313130d, 0x130a0000, 0x0, 0x13010000, 0x0, 0x0, 0x131f132b, 0x1334, 0x0, 0x0, 0x0, 0x0, 0x13250000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13790000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1361135b, 0x13540000, 0x0, 0x13c60000, 0x0, 0x0, 0x13731381, 0x139c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13d013cd, 0x0, 0x0, 0x0, 0x0, 0x13160000, 0x1366, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13481304, 0x134b1307, 0x0, 0x135e1310, 0x0, 0x13e213dd, 0x13691319, 0x136e131c, 0x0, 0x13761322, 0x137c1328, 0x138c132e, 0x0, 0x13ea13e5, 0x13bd1343, 0x13991331, 0x139f1337, 0x13a2133a, 0x13ad133d, 0x0, 0x13b61340, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13ed0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14941491, 0x1497183a, 0x1875, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x149a0000, 0x1906183d, 0x18bc, 0x0, 0x0, 0x0, 0x1918, 0x18fd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19150000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x192d0000, 0x0, 0x0, 0x0, 0x19360000, 0x0, 0x1939, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x191e191b, 0x19241921, 0x192a1927, 0x19331930, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19450000, 0x1948, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x193f193c, 0x19420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19570000, 0x0, 0x195a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x194b0000, 0x1951194e, 0x0, 0x1954, 0x0, 0x0, 0x0, 0x0, 0x1966, 0x19630000, 0x1969, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1960195d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x196c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1975196f, 0x1972, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1978, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x197b, 0x0, 0x0, 0x19850000, 0x1988, 0x1981197e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1991198b, 0x198e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1994, 0x199a1997, 0x199e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19a10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19aa0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19a719a4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ad, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19b20000, 0x0, 0x0, 0x0, 0x0, 0x19b50000, 0x0, 0x0, 0x19b8, 0x0, 0x19bb0000, 0x0, 0x0, 0x19be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19af0000, 0x0, 0x0, 0x0, 0x0, 0x19c10000, 0x19c40000, 0x19dc19e0, 0x19e319e7, 0x0, 0x0, 0x0, 0x19c70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19cd0000, 0x0, 0x0, 0x0, 0x0, 0x19d00000, 0x0, 0x0, 0x19d3, 0x0, 0x19d60000, 0x0, 0x0, 0x19d9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ca0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ea, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ed, 0x0, 0x0, 0x0, 0x0, 0x1ae3, 0x1ae6, 0x1ae9, 0x1aec, 0x1aef, 0x0, 0x1af2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1af50000, 0x1af80000, 0x0, 0x1afe1afb, 0x1b010000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe580568, 0x5d5, 0x62905e6, 0x6870e7c, 0x6cf06ac, 0x71a0607, 0x7230734, 0x781, 0xe8b07a7, 0x76d06af, 0x56b0890, 0x6920773, 0xe910e8f, 0x93a1b04, 0xa800a31, 0xea30ea1, 0x6020ea5, 0xb7c0000, 0xe7805d3, 0xe97078a, 0x1b081b06, 0xba60cd6, 0x1b0c0a27, 0x86d0ec9, 0x11471b0e, 0x114b1149, 0x129b1299, 0xa140ae3, 0x86d0a27, 0x11491147, 0x1299124d, 0x129b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1388, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe930000, 0xe9909a3, 0xea50e6b, 0xea90adc, 0xeb50ead, 0xebd0ebb, 0x1b100ebf, 0xec50f14, 0xf161b12, 0xecb0ecd, 0xed10ecf, 0xed50ed3, 0xeeb0edb, 0xe800eed, 0xef50ef3, 0xef71b0a, 0x6110ef9, 0xf030f01, 0x11cb0f05, 0xa0a05cb, 0xa1605da, 0xa1905dd, 0xa1c05e0, 0xa4d05fb, 0xa6e0617, 0xa74061d, 0xa7d0626, 0xa770620, 0xa7a0623, 0xaa8064a, 0xaac064e, 0xad60678, 0xad9067b, 0xacf0671, 0xaf20684, 0xb01069d, 0xb1c06bd, 0xb2506c6, 0xb1f06c0, 0xb2806c9, 0xb2b06cc, 0xb710712, 0xb5b06fc, 0xba80725, 0xbae072b, 0xbb40731, 0xbd50749, 0xbd8074c, 0xbe20756, 0xbdf0753, 0xc150775, 0xc180778, 0xc1b077b, 0xc470795, 0xc4d079b, 0xc5607a4, 0xc5307a1, 0xc7a07c5, 0xc8207cd, 0xc8907d4, 0xc8d07d8, 0xcef0838, 0xcf2083b, 0xd0d0848, 0xd190854, 0xd1c0857, 0xd23085e, 0xd380879, 0xd420883, 0xd310872, 0xd3e087f, 0xd450886, 0xd51089d, 0xd5a08a3, 0xd6608af, 0xd6308ac, 0xdc4090d, 0xdcd0916, 0xdca0913, 0xd7708c0, 0xd7e08c7, 0xdde0927, 0xde1092a, 0xde6093c, 0xde9093f, 0xdf20948, 0xdef0945, 0xdf8094b, 0xe040957, 0xe07095a, 0xe1b096e, 0xe2f097f, 0xe380988, 0xe3b098b, 0xd540b2e, 0xe240df5, 0xd3809a9, 0x0, 0x0, 0x9ff05c0, 0x9ec05ad, 0x9b9057a, 0x9b50576, 0x9c10582, 0x9bd057e, 0xa0205c3, 0x9d20593, 0x9ce058f, 0x9da059b, 0x9d60597, 0xa0605c7, 0xac50667, 0xab9065b, 0xaa20644, 0xa960638, 0xa920634, 0xa9e0640, 0xa9a063c, 0xac8066a, 0xb5f0700, 0xb6b070c, 0xcc80813, 0xca207ed, 0xc6b07b6, 0xc6707b2, 0xc7307be, 0xc6f07ba, 0xccb0816, 0xcb80803, 0xcb407ff, 0xcc0080b, 0xcbc0807, 0xcc4080f, 0xdc1090a, 0xd9808e1, 0xdb108fa, 0xdad08f6, 0xdb90902, 0xdb508fe, 0xdbd0906, 0xe0c095f, 0xe270977, 0xe210974, 0xe150968, 0x0, 0x0, 0x0, 0x111b10f9, 0x111e10fc, 0x11271105, 0x1130110e, 0xf700f4e, 0xf730f51, 0xf7c0f5a, 0xf850f63, 0x11601155, 0x11631158, 0x1167115c, 0x0, 0xfae0fa3, 0xfb10fa6, 0xfb50faa, 0x0, 0x119f117d, 0x11a21180, 0x11ab1189, 0x11b41192, 0xfe50fc3, 0xfe80fc6, 0xff10fcf, 0xffa0fd8, 0x11f911ea, 0x11fc11ed, 0x120011f1, 0x120411f5, 0x102c101d, 0x102f1020, 0x10331024, 0x10371028, 0x12401235, 0x12431238, 0x1247123c, 0x0, 0x1058104d, 0x105b1050, 0x105f1054, 0x0, 0x12871278, 0x128a127b, 0x128e127f, 0x12921283, 0x107f0000, 0x10820000, 0x10860000, 0x108a0000, 0x12d112af, 0x12d412b2, 0x12dd12bb, 0x12e612c4, 0x10be109c, 0x10c1109f, 0x10ca10a8, 0x10d310b1, 0x10ec10e5, 0x1152114f, 0x1176116f, 0x11d211cf, 0x1232122f, 0x1260125d, 0x12a812a1, 0x0, 0x11391117, 0x11221100, 0x112b1109, 0x11341112, 0xf8e0f6c, 0xf770f55, 0xf800f5e, 0xf890f67, 0x11bd119b, 0x11a61184, 0x11af118d, 0x11b81196, 0x10030fe1, 0xfec0fca, 0xff50fd3, 0xffe0fdc, 0x12ef12cd, 0x12d812b6, 0x12e112bf, 0x12ea12c8, 0x10dc10ba, 0x10c510a3, 0x10ce10ac, 0x10d710b5, 0x10f310f6, 0x114410e8, 0x10ef, 0x1140113d, 0xf480f4b, 0xf450f42, 0x2a0f92, 0x2a11cd, 0x200051, 0x11c81172, 0x1179, 0x11c411c1, 0xfa00f9d, 0xfc00fbd, 0x2d1007, 0x350031, 0x11d511d8, 0x11e211de, 0x0, 0x11e61208, 0x10141017, 0x1011100e, 0x3c0000, 0x440040, 0x12631266, 0x1270126c, 0x1252124f, 0x12741296, 0x10761079, 0x10731070, 0x181067, 0x998001c, 0x0, 0x12fa12a4, 0x12ab, 0x12f612f3, 0x104a1047, 0x10991096, 0x310e0, 0x39, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x1, 0x0, 0x0, 0x1b160000, 0x0, 0x0, 0x4e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2fc02fa, 0x2ff, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x1b1c0000, 0x1b1f, 0x1b2b1b28, 0x0, 0x0, 0x8f, 0xc, 0x0, 0x0, 0x0, 0x5630000, 0x920560, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b230000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xae30305, 0x0, 0x3740365, 0x3920383, 0x3b003a1, 0x1b5a02f4, 0xa10544, 0xb3e00a5, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x1b5a02f4, 0xa10544, 0xa5, 0xa800692, 0xb44078a, 0xb100ea1, 0xa2b0b7c, 0xb3e05d3, 0x8430cd6, 0xba6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x842, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9a509a1, 0xe5005e3, 0xa210000, 0xe7e0a25, 0xe530000, 0x6ac0602, 0x6ac06ac, 0xe740b10, 0x6cf06cf, 0xa2b0734, 0x7810000, 0x789, 0x6af0000, 0x76d083e, 0x76d076d, 0x0, 0x8920866, 0x89a, 0x60a, 0x77f, 0x60a, 0x5b0071a, 0x5e305d5, 0xa800000, 0x67e0629, 0x7230000, 0x13ff078a, 0x1415140d, 0xae3141a, 0x6800000, 0x1149124b, 0x10630f97, 0x1b58, 0x0, 0x5e60000, 0xa800a31, 0x73e0ae3, 0x0, 0x0, 0x0, 0x3e203da, 0x3ca03c1, 0x3d20455, 0x4980459, 0x3d604cf, 0x3de04e7, 0x4eb049c, 0x3be0511, 0x6d106cf, 0x6de06d4, 0x91b06b2, 0x922091e, 0x68206e1, 0x9530950, 0x5e30734, 0x72305e6, 0xb330ae3, 0xb400b36, 0xdd2086d, 0xdd90dd5, 0xb440b43, 0xe000dfd, 0x9a30a2b, 0x5d30a31, 0x0, 0x0, 0x0, 0x0, 0x30d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b3a1b33, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b420000, 0x1b451b48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b4d, 0x0, 0x1b520000, 0x0, 0x1b55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b5c, 0x1b5f, 0x0, 0x0, 0x1b651b62, 0x1b6e0000, 0x1b71, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b750000, 0x0, 0x1b78, 0x1b7b0000, 0x1b7e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x556, 0x1b84, 0x0, 0x0, 0x0, 0x0, 0x1b810000, 0x55b054a, 0x1b8a1b87, 0x0, 0x1b901b8d, 0x0, 0x1b961b93, 0x0, 0x0, 0x0, 0x1b9c1b99, 0x0, 0x1ba81ba5, 0x0, 0x1bae1bab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bba1bb7, 0x1bc01bbd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ba21b9f, 0x1bb41bb1, 0x0, 0x0, 0x0, 0x1bc61bc3, 0x1bcc1bc9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1be40000, 0x1be6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3430314, 0x365030f, 0x3830374, 0x3a10392, 0x31c03b0, 0x342032f, 0x3640355, 0x3820373, 0x3a00391, 0x3f703af, 0xd900a3, 0xe600e2, 0xee00ea, 0xf600f2, 0xa700fa, 0xb100ac, 0xbb00b6, 0xc500c0, 0xcf00ca, 0xdd00d4, 0x3460319, 0x3680359, 0x3860377, 0x3a40395, 0x31f03b3, 0x3450332, 0x3670358, 0x3850376, 0x3a30394, 0x3fa03b2, 0x16a0166, 0x172016e, 0x17a0176, 0x182017e, 0x18a0186, 0x192018e, 0x19a0196, 0x1a2019e, 0x1aa01a6, 0x1b201ae, 0x1ba01b6, 0x1c201be, 0x1ca01c6, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x305, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b69, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x54f0542, 0x552, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bd9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b2073e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bde0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x232e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27640000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1faa1f98, 0x1fb81fb0, 0x1fc21fbc, 0x1fca1fc6, 0x1ffd1fd0, 0x20112009, 0x20212019, 0x20392029, 0x203d203b, 0x206b2057, 0x20772073, 0x207f2079, 0x208f208d, 0x209d209b, 0x20a920a1, 0x210120f7, 0x212b2121, 0x2131212f, 0x214a2139, 0x21662160, 0x217c2176, 0x2180217e, 0x218e218c, 0x21aa21a4, 0x21b221ae, 0x21c121ba, 0x21db21c5, 0x21e121dd, 0x21e721e3, 0x21f321eb, 0x223d2201, 0x22492247, 0x228b2289, 0x22972295, 0x229f229b, 0x32522a3, 0x32922c3, 0x231222d5, 0x23202318, 0x232c2326, 0x23322330, 0x23362334, 0x23942338, 0x23be23b8, 0x23c223c0, 0x23c823c4, 0x23d423ca, 0x23e623e2, 0x24082406, 0x240e240c, 0x24142412, 0x24282426, 0x24382436, 0x243c243a, 0x24582446, 0x245c245a, 0x248e246e, 0x24a02490, 0x24ac24a8, 0x24ce24bc, 0x24f424f0, 0x250424fe, 0x250c2508, 0x2510250e, 0x251e251c, 0x2530252c, 0x25362534, 0x2540253c, 0x25442542, 0x254a2548, 0x25a4259a, 0x25c025be, 0x25da25c4, 0x25e225de, 0x260425e6, 0x260a2606, 0x260e260c, 0x26262624, 0x2634262a, 0x26442636, 0x264a2648, 0x266c265c, 0x26782676, 0x2692267c, 0x269c2694, 0x26b426ae, 0x26c826bc, 0x26ce26cc, 0x26d226d0, 0x26da26d8, 0x26ec26de, 0x26f026ee, 0x26fe26fc, 0x270c2702, 0x2710270e, 0x27162714, 0x271a2718, 0x2724271c, 0x27322730, 0x273a2738, 0x273e273c, 0x27442742, 0x274c2746, 0x27542750, 0x275a2756, 0x275e275c, 0x27662762, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bf8, 0x2081207f, 0x2083, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c2d, 0x1c30, 0x1c33, 0x1c36, 0x1c39, 0x1c3c, 0x1c3f, 0x1c42, 0x1c45, 0x1c48, 0x1c4b, 0x1c4e, 0x1c510000, 0x1c540000, 0x1c570000, 0x0, 0x0, 0x0, 0x1c5d1c5a, 0x1c600000, 0x1c63, 0x1c691c66, 0x1c6c0000, 0x1c6f, 0x1c781c75, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c2a, 0x0, 0x0, 0x870000, 0x8a, 0x1c7b1c82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1cd5, 0x1cf2, 0x1ca5, 0x1d41, 0x1d4a, 0x1d5e, 0x1d6e, 0x1d79, 0x1d7e, 0x1d8b, 0x1d90, 0x1d9a, 0x1da10000, 0x1da60000, 0x1cbf0000, 0x0, 0x0, 0x0, 0x1dd51dcc, 0x1dea0000, 0x1df1, 0x1e101e06, 0x1e250000, 0x1e2d, 0x1d591e50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1cb0, 0x1ef30000, 0x1f011efc, 0x1f06, 0x0, 0x1d501f0f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ef0000, 0x1abb19f4, 0x1abd19f6, 0x19fb1abf, 0x1a021a00, 0x1ac31ac1, 0x1ac71ac5, 0x1acb1ac9, 0x1a071a51, 0x1a111a0c, 0x1a131a5b, 0x1a1a1a18, 0x1a2c1a22, 0x1a391a2e, 0x1a431a3e, 0x19f21a48, 0x1a851a83, 0x1a891a87, 0x1a8d1a8b, 0x1a371a8f, 0x1a951a93, 0x1a991a97, 0x1a9d1a20, 0x1aa11a9f, 0x1aa51aa3, 0x1aa91a2a, 0x1a4d1a7f, 0x1acd1a4f, 0x1ad11acf, 0x1ad51ad3, 0x1ad91ad7, 0x1adb1a53, 0x1a551add, 0x1a591a57, 0x1a5f1a5d, 0x1a631a61, 0x1a671a65, 0x1a6b1a69, 0x1a6f1a6d, 0x1a731a71, 0x1a771a75, 0x1ae11adf, 0x1a7b1a79, 0x1aab1a7d, 0x1aaf1aad, 0x1ab31ab1, 0x1ab71ab5, 0x1ab9, 0x0, 0x1fc61f98, 0x20f91f9e, 0x1fac1fa0, 0x24161fa2, 0x1fa61fbc, 0x213e1f9a, 0x1fd02103, 0x1d701ce, 0x1e901e0, 0x1fb01f2, 0x20d0204, 0x2330225, 0x245023c, 0x257024e, 0x1db01d2, 0x1ed01e4, 0x1ff01f6, 0x2110208, 0x2370229, 0x2490240, 0x25b0252, 0x216022e, 0x21e, 0x2700260, 0x2a00268, 0x2880274, 0x2840264, 0x290026c, 0x2c402b0, 0x2b802c0, 0x2a402ec, 0x2bc02ac, 0x2d002b4, 0x2c80298, 0x2d402e4, 0x278028c, 0x2a8029c, 0x27c02cc, 0x29402e8, 0x28002d8, 0x2e002dc, 0x21c320d3, 0x24b02295, 0x0, 0x0, 0x0, 0x0, 0x4060831, 0x41c0411, 0x4320427, 0x4400439, 0x44e0447, 0x475046e, 0x47f047c, 0x4850482, 0x19f619ef, 0x1a0219fb, 0x1a0c1a07, 0x1a1a1a13, 0x1a2e1a22, 0x1a3e1a39, 0x1a481a43, 0x19f819f1, 0x1a0419fd, 0x1a0e1a09, 0x1a1c1a15, 0x1a301a24, 0x1a401a3b, 0x1a4a1a45, 0x1a271a33, 0x1a1f, 0x1fc61f98, 0x20f91f9e, 0x20131fc8, 0x20111f9c, 0x207f1fbe, 0x23940329, 0x22d52338, 0x2101267c, 0x22ed0325, 0x22f222cd, 0x23ce20b9, 0x247c2610, 0x2494205d, 0x214a241a, 0x1ffb2654, 0x23482091, 0x1fdd26e0, 0x213c2025, 0x1fac1fa0, 0x21ac1fa2, 0x207b20b3, 0x2164216a, 0x1fdb2442, 0x2089261a, 0x4882135, 0x48e048b, 0x4b10491, 0x4b704b4, 0x4bd04ba, 0x4c304c0, 0x4c904c6, 0x4e404cc, 0x34e033b, 0x4d604a3, 0x50304f2, 0x5290518, 0x327053a, 0x34d033a, 0xa8506b4, 0x7390a82, 0x1ca01c87, 0x1cb91cae, 0x1cd31cc9, 0x1d221cf0, 0x1d481d3f, 0x1d6c1d5c, 0x1d7c1ccd, 0x1d8e1d89, 0x1d9f1caa, 0x1c8d1da4, 0x1dbe1d55, 0x1d3d1dc0, 0x1dca1dbc, 0x1e041de8, 0x1e4e1e23, 0x1e8b1ce0, 0x1e9e1cd1, 0x1eb31eaf, 0x1ec81ec0, 0x1ce41eca, 0x1ee31c9c, 0x1ef11d0c, 0x1eff1efa, 0x1fd81f04, 0x1c8f1c89, 0x1c9a1c94, 0x1ca81ca2, 0x1cbb1cb3, 0x1ccb1cc2, 0x1ce21ccf, 0x1ceb1ce6, 0x1cdd1cd8, 0x1cfa1cf5, 0x1cff1d06, 0x1d0e1d0b, 0x1d1c1d15, 0x1d2c1d10, 0x1d3a1d33, 0x1d531d44, 0x1d611d57, 0x1d711d66, 0x1d851d81, 0x1da91d93, 0x1d301db2, 0x1dc61dbb, 0x1dd81de4, 0x1dcf1ddf, 0x1dfb1df4, 0x1ded1e00, 0x1e1a1e13, 0x1e1f1e09, 0x1e301e44, 0x1e4a1e34, 0x1e3e1e39, 0x1e5b1e28, 0x1e671e53, 0x1e6a1e61, 0x1e741e6e, 0x1e7d1e79, 0x1e851e81, 0x1e921e8d, 0x1ea01e95, 0x1d171ea4, 0x1eba1eb5, 0x1ece1ec2, 0x1ed81ed3, 0x1ee51edd, 0x1d1e1ee8, 0x33f0311, 0x3610352, 0x37f0370, 0x39d038e, 0x3bb03ac, 0x33e032b, 0x3600351, 0x37e036f, 0x39c038d, 0x3ba03ab, 0x40d0402, 0x4230418, 0xb12042e, 0x56a0a56, 0xc5b0a12, 0xa5c0ce9, 0xa630a5f, 0x21bc06db, 0x213b22b2, 0x22ef22ab, 0xc290cdd, 0xbed1211, 0x71c0b7e, 0x689075b, 0xb8f0a29, 0xc2c0ce0, 0x121d1214, 0x6010bf9, 0xb81068d, 0x68c0764, 0x12200896, 0xa590c00, 0xaef0b97, 0x12230c38, 0xa330c03, 0xc060b9a, 0xa370a36, 0xc0a0b9d, 0xa3b0a3a, 0xc1e0ba1, 0x6910c22, 0x7680b85, 0xcf90690, 0xd030cfd, 0xc3b0cec, 0xc121226, 0xc2f0ce3, 0xbf01217, 0x76f0b89, 0xc320ce6, 0xbf3121a, 0x7720b8c, 0x77e0bb7, 0x5d7099c, 0xa300a2d, 0x5e805ff, 0x6940a53, 0x6ae0b16, 0x71f0b3d, 0xba50722, 0xbc20bbf, 0xbc90bc5, 0xbfc0bf6, 0x8230c0e, 0x8260cd8, 0xd28082e, 0x939086c, 0x5d1092d, 0x34a0337, 0x36c035d, 0x38a037b, 0x3a80399, 0x32303b7, 0x3490336, 0x36b035c, 0x389037a, 0x3a70398, 0x3fe03b6, 0x4140409, 0x42a041f, 0x43c0435, 0x44a0443, 0x4710451, 0xaf70478, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13b913b2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x276e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x67e05e3, 0x83e, 0x0, 0xe7a0e72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2772276c, 0x27740ec1, 0x0, 0x0, 0x0, 0x0, 0xefb0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22c52608, 0x261c2636, 0x1fae2378, 0x276220ab, 0x21442762, 0x20dd267c, 0x22392142, 0x24fc2434, 0x25b62598, 0x265a25d0, 0x234c2306, 0x23ee23a2, 0x2670257c, 0x1fc02706, 0x23102095, 0x259623b4, 0x2198272e, 0x258e2388, 0x225325d8, 0x25bc252a, 0x22cf21d1, 0x23da2358, 0x1fe32660, 0x2065202f, 0x230c2287, 0x244423b2, 0x25922508, 0x2630259e, 0x271e26c4, 0x2462272c, 0x24de2482, 0x268a256e, 0x25f22732, 0x21df211f, 0x251a24ba, 0x246623cc, 0x26c02618, 0x2186211d, 0x23622308, 0x24d6237c, 0x26a024ea, 0x25202063, 0x20332035, 0x24e02498, 0x26a4257a, 0x22552600, 0x25f82306, 0x21701fb4, 0x23e4220b, 0x20752424, 0x1feb246a, 0x1fa421fd, 0x22932342, 0x209f24d4, 0x244a2115, 0x25ea257e, 0x26482328, 0x225d233e, 0x226d255a, 0x1fce2422, 0x2031200f, 0x24ca22f6, 0x25f02546, 0x2069267a, 0x214a20c3, 0x22a121d9, 0x246c238a, 0x270a2698, 0x27402734, 0x22c12057, 0x2642231e, 0x222d21bf, 0x2283223b, 0x23a82382, 0x24922400, 0x251624e4, 0x2582263a, 0x268c264e, 0x20592043, 0x23a020cd, 0x25ea25c6, 0x220721cf, 0x23242269, 0x23de24b8, 0x20fb1fd6, 0x21a22170, 0x23ec220d, 0x250223fa, 0x267e2512, 0x26c626be, 0x1fe526e4, 0x2674248c, 0x221926b2, 0x1ff71fc4, 0x21822172, 0x23062299, 0x243223ae, 0x26582588, 0x22b9275e, 0x2055269e, 0x22e522df, 0x23702354, 0x242023f2, 0x24d22460, 0x201326ea, 0x26a62243, 0x21941fef, 0x263c2364, 0x221d21f5, 0x23e422e9, 0x204726aa, 0x218a20bb, 0x22d722ae, 0x234622fc, 0x242a23f0, 0x25c824f8, 0x267825ce, 0x207d26b8, 0x20bd2372, 0x240223b0, 0x26ac2590, 0x27362722, 0x236022e3, 0x24a8252e, 0x24c024ae, 0x239c23d8, 0x1fd225fe, 0x20492562, 0x21c72041, 0x24c62257, 0x234e2168, 0x264022bf, 0x26a225c0, 0x21d525de, 0x20e91fff, 0x0, 0x2113, 0x22b7, 0x20370000, 0x243e23dc, 0x247e2470, 0x248a2480, 0x24c226ca, 0x2504, 0x2594, 0x25f6, 0x26500000, 0x2666, 0x0, 0x26f626f4, 0x272a26f8, 0x26b02662, 0x1ff91fe7, 0x20612003, 0x20872067, 0x20ef20e1, 0x211120f3, 0x21882117, 0x2213218c, 0x222b2227, 0x228d2237, 0x22bb22a5, 0x235a22f8, 0x23802368, 0x23ba23aa, 0x246423f4, 0x247622f2, 0x24782474, 0x247c247a, 0x24882486, 0x24a4249a, 0x24e424b2, 0x24ec24e8, 0x250a24f6, 0x254c2532, 0x2580254c, 0x25e025d4, 0x25fc25fa, 0x2620261e, 0x2650264c, 0x26dc26ba, 0x220f26e8, 0x253e2833, 0x0, 0x202d1fa8, 0x1fe1200d, 0x20172001, 0x206d205f, 0x20d720e1, 0x20ed20df, 0x211b2113, 0x21462140, 0x215c2154, 0x21d721d3, 0x21ff21ef, 0x22232217, 0x222b221b, 0x22372225, 0x22712245, 0x227b2277, 0x22b7228f, 0x22d122cf, 0x232022db, 0x23542328, 0x2376237a, 0x238e2380, 0x245623aa, 0x23d623bc, 0x23fc23dc, 0x241c240a, 0x2430242e, 0x2440243e, 0x24522448, 0x24682450, 0x24b224a6, 0x24da24be, 0x24f224e4, 0x2564250a, 0x25b22578, 0x25dc25d6, 0x25ec25e0, 0x25ee25f6, 0x25f825fa, 0x25fc25f4, 0x26202602, 0x2656263e, 0x26822672, 0x26ba26a8, 0x26d426ca, 0x26e226dc, 0x271226e8, 0x28092762, 0x281b2807, 0x1f501f3c, 0x284f1f52, 0x28912861, 0x27602758, 0x0, 0x0, 0x0, 0xae20ade, 0xae10ae6, 0xd2b0ae5, 0xd2b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13f90000, 0x13f313f0, 0x13f613fc, 0x0, 0x0, 0x14300000, 0x147d0000, 0x13ff1451, 0x141f141a, 0x140b1439, 0x14621446, 0x2f41478, 0x14751472, 0x146e146a, 0x14041401, 0x140f1407, 0x141c1417, 0x14271421, 0x142a, 0x1433142d, 0x143b1436, 0x1443, 0x1448, 0x144e144b, 0x14530000, 0x1456, 0x145f145c, 0x14671464, 0x1424147a, 0x143e1412, 0x140a1459, 0x18c318c3, 0x18c918c9, 0x18c918c9, 0x18cb18cb, 0x18cb18cb, 0x18cf18cf, 0x18cf18cf, 0x18c718c7, 0x18c718c7, 0x18cd18cd, 0x18cd18cd, 0x18c518c5, 0x18c518c5, 0x18e718e7, 0x18e718e7, 0x18e918e9, 0x18e918e9, 0x18d318d3, 0x18d318d3, 0x18d118d1, 0x18d118d1, 0x18d518d5, 0x18d518d5, 0x18d718d7, 0x18d718d7, 0x18dd18dd, 0x18db18db, 0x18df18df, 0x18d918d9, 0x18e318e3, 0x18e118e1, 0x18eb18eb, 0x18eb18eb, 0x18ef18ef, 0x18ef18ef, 0x18f318f3, 0x18f318f3, 0x18f118f1, 0x18f118f1, 0x18f518f5, 0x18f718f7, 0x18f718f7, 0x19181918, 0x18fb18fb, 0x18fb18fb, 0x18f918f9, 0x18f918f9, 0x163c163c, 0x19151915, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18ed0000, 0x18ed18ed, 0x18ae18ed, 0x18aa18ae, 0x18b218aa, 0x190618b2, 0x190d190d, 0x19001900, 0x190b190b, 0x18b618b6, 0x18b618b6, 0x14c014c0, 0x18781878, 0x18b818b8, 0x189c189c, 0x18ac18ac, 0x18a818a8, 0x18b018b0, 0x18b418b4, 0x18a018b4, 0x18a018a0, 0x190f190f, 0x190f190f, 0x1880187c, 0x18a01890, 0x149f18a4, 0x14a914a2, 0x14bf14b6, 0x14c914c2, 0x14e314d8, 0x151514f8, 0x151d1518, 0x152f1526, 0x15371532, 0x14dc14cd, 0x157c14e0, 0x14e7157f, 0x15b015a5, 0x15c515b7, 0x163e160d, 0x1650164d, 0x1665165b, 0x16731670, 0x168f168a, 0x16b21620, 0x16ea16b5, 0x16f016ed, 0x16fe16f7, 0x17061701, 0x171c170d, 0x1724171f, 0x172a1727, 0x1730172d, 0x173e1733, 0x17551741, 0x17731764, 0x16241637, 0x14fc178b, 0x15041500, 0x150815d1, 0x17d8150c, 0x17fa17eb, 0x18141803, 0x181c1817, 0x182a181f, 0x1847182d, 0x1855184e, 0x186f185e, 0x158f1872, 0x18421599, 0x64005d, 0x72006b, 0x800079, 0x188c1888, 0x18941890, 0x18a418a0, 0x14b31486, 0x14b914b6, 0x14c214bf, 0x14f514f2, 0x150f14f8, 0x15181515, 0x15231520, 0x15291526, 0x1532152f, 0x170116fe, 0x171f171c, 0x17301724, 0x173e1733, 0x16371741, 0x178b1624, 0x15d11790, 0x180017fd, 0x180e1803, 0x18171814, 0x18581842, 0x185e185b, 0x186f1869, 0x187c1872, 0x18841880, 0x18981890, 0x14a2149f, 0x14b614a9, 0x14c914bc, 0x14e314d8, 0x151214f8, 0x15371526, 0x14dc14cd, 0x157c14e0, 0x15a514e7, 0x15b715b0, 0x160d15c5, 0x163e1618, 0x1650164d, 0x1665165b, 0x168a1670, 0x1620168f, 0x16b516b2, 0x16ed16ea, 0x16f716f0, 0x170d1706, 0x172a1727, 0x1730172d, 0x17551733, 0x17731764, 0x148b1637, 0x150014fc, 0x15d11504, 0x17eb17d8, 0x180317fa, 0x181c1811, 0x1830181f, 0x184e1847, 0x185e1855, 0x18901698, 0x14b61898, 0x14f814bc, 0x15261512, 0x15c5152c, 0x15f715d4, 0x17301602, 0x16371733, 0x18111803, 0x1698185e, 0x16d716d0, 0x168216de, 0x16aa1685, 0x16c416ad, 0x15d716c7, 0x160515da, 0x153b1608, 0x14d114a6, 0x14eb14d5, 0x164514ad, 0x16681648, 0x15df166b, 0x15f115e6, 0x15f415f7, 0x161b15c2, 0x16821662, 0x16aa1685, 0x16c416ad, 0x15d716c7, 0x160515da, 0x153b1608, 0x14d114a6, 0x14eb14d5, 0x164514ad, 0x16681648, 0x15df166b, 0x15f115e6, 0x15f415f7, 0x161b15c2, 0x15df1662, 0x15f115e6, 0x15d415f7, 0x16731602, 0x15b015a5, 0x15df15b7, 0x15f115e6, 0x168a1673, 0x148e148e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14db14cc, 0x14df14db, 0x14fb14e6, 0x150314ff, 0x154e154e, 0x156c1570, 0x15a815b3, 0x15cc15ac, 0x15c815cc, 0x15d015d0, 0x16101610, 0x15e91641, 0x15e215e9, 0x15fa15fa, 0x15fe15fe, 0x165e1653, 0x1676165e, 0x167a1676, 0x1692167e, 0x169e169e, 0x16b816a2, 0x16bc16c0, 0x16f316f3, 0x17141710, 0x176f1767, 0x1758176b, 0x17761758, 0x177d1776, 0x17a9177d, 0x17b617ad, 0x179e1796, 0x17c117bd, 0x0, 0x1822179a, 0x17ee1826, 0x17df17f2, 0x17e317df, 0x1806180a, 0x18611861, 0x14d414ac, 0x14ee14d0, 0x150b14ea, 0x15561507, 0x1552153a, 0x161415ba, 0x165715ed, 0x17811760, 0x184a1851, 0x17cc1865, 0x17f61718, 0x17671710, 0x173a16a6, 0x17c517db, 0x1736175c, 0x17db175c, 0x1565153e, 0x16fa17a2, 0x173614a5, 0x16411692, 0x17e715be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1709163a, 0x14841489, 0x161e17b1, 0x16961594, 0x16231635, 0x15421627, 0x159c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1be002f6, 0x5401be2, 0x8d0546, 0x1c260093, 0x2ff1c28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b1a02fc, 0x9961b18, 0xa10996, 0xe3e00a5, 0x1bfa0e42, 0x1bf41bfe, 0x1be81bf6, 0x1be41bea, 0x1bec1be6, 0x1bf01bee, 0x1bf2, 0x98e0000, 0xc0992, 0xc000c, 0x996000c, 0x9960996, 0x1be002f6, 0x2fa, 0x5400546, 0x8d0093, 0xa11b1a, 0xe3e00a5, 0x1bfa0e42, 0x971bfe, 0x2f2009d, 0x2f802f4, 0x5590548, 0x544, 0x990990, 0x566009b, 0x0, 0x0, 0x16ca0057, 0x5a, 0x61, 0x16cd0068, 0x16d4006f, 0x16db0076, 0x16e2007d, 0x16e50084, 0x14911480, 0x14941491, 0x183a1494, 0x1497183a, 0x18751497, 0x18751875, 0x14821875, 0x149d1482, 0x149d149d, 0x14c5149d, 0x14c714c5, 0x14c714c7, 0x151b14c7, 0x151b151b, 0x14a0151b, 0x14a014a0, 0x14a314a0, 0x14a314a3, 0x14aa14a3, 0x14aa14aa, 0x158b14aa, 0x158d158b, 0x1487158d, 0x14b41487, 0x15a314b4, 0x15a315a3, 0x15dd15a3, 0x15dd15dd, 0x160b15dd, 0x160b160b, 0x164b160b, 0x164b164b, 0x166e164b, 0x166e166e, 0x1688166e, 0x16881688, 0x168d1688, 0x168d168d, 0x16b0168d, 0x16b016b0, 0x16e816b0, 0x16e816e8, 0x170416e8, 0x17041704, 0x17221704, 0x17221722, 0x15971722, 0x15971597, 0x14b71597, 0x14b714b7, 0x14ba14b7, 0x14ba14ba, 0x148c14ba, 0x148c148c, 0x1833148c, 0x14c01833, 0x14a714c0, 0x14a714a7, 0x174914a7, 0x174d1749, 0x1751174d, 0x17461751, 0x1746, 0x0, 0x8d0000, 0x970095, 0x9b0099, 0x9f009d, 0xa500a1, 0x2f402f2, 0x2f802f6, 0x30302fa, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x5460540, 0x5440548, 0x930559, 0x5680566, 0x5e305d5, 0x62905e6, 0x687067e, 0x6cf06ac, 0x71a0607, 0x7230734, 0x7a70781, 0x83e06af, 0x861076d, 0x56b0890, 0x77306b2, 0x95d0682, 0x98e060a, 0x9920990, 0x9960994, 0x6920998, 0x9a3093a, 0xa800a31, 0x6020adc, 0xae30b10, 0xb7c073e, 0x5d30a2b, 0x78a0b3e, 0x5d80cd6, 0x8430a14, 0xa270ba6, 0xde4086d, 0x6950b44, 0xe3e0611, 0xe420e40, 0x1bd50e44, 0x1be21bd7, 0x1bee1bec, 0x1f0b1be0, 0x1c851f04, 0x1cac1c9e, 0x1cc71cb7, 0x1ebe1eb1, 0x1d9d1ec6, 0x1c871cc5, 0x1cae1ca0, 0x1cc91cb9, 0x1cf01cd3, 0x1d3f1d22, 0x1d5c1d48, 0x1ccd1d6c, 0x1d891d7c, 0x1caa1d8e, 0x1da41d9f, 0x1d551c8d, 0x1dc01dbe, 0x1dbc1d3d, 0x1de81dca, 0x1e231e04, 0x1ce01e4e, 0x1cd11e8b, 0x1eaf1e9e, 0x1ec01eb3, 0x1eca1ec8, 0x1c9c1ce4, 0x1d0c1ee3, 0x1cb51ef1, 0x8b0088, 0x19ef1a7f, 0x1abb19f4, 0x1abd19f6, 0x19fb1abf, 0x1a021a00, 0x1ac31ac1, 0x1ac71ac5, 0x1acb1ac9, 0x1a071a51, 0x1a111a0c, 0x1a131a5b, 0x1a1a1a18, 0x1a2c1a22, 0x1a391a2e, 0x1a431a3e, 0x1a48, 0x0, 0x1a8319f2, 0x1a871a85, 0x1a8b1a89, 0x0, 0x1a8f1a8d, 0x1a931a37, 0x1a971a95, 0x0, 0x1a201a99, 0x1a9f1a9d, 0x1aa31aa1, 0x0, 0x1a2a1aa5, 0x1aa9, 0x0, 0xe480e46, 0x90e4e, 0xe4a0e4c, 0x1b2f, 0x1b311bcf, 0x1b381b36, 0x1bd11b3d, 0x1bd3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf330000, 0xe630f35, 0xe950f0e, 0xf1c0000, 0xf202776, 0xe9b0f1e, 0x1b140e9d, 0xea70e9f, 0xeb30f28, 0xeab0eaf, 0xe740f10, 0xeb90f12, 0xf2a0eef, 0xec30f2c, 0x277027d1, 0x27d30ec7, 0x27d50efd, 0xed70e6d, 0x5d80ed9, 0x27d70edf, 0xee50ee3, 0xf260ee7, 0x27780f22, 0xef10f24, 0x1bdc, 0xf180eff, 0xf0c0f1a, 0xe870e85, 0x27d90e89, 0x27db, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x277a, 0x277d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27862783, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27890000, 0x278c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27920000, 0x278f, 0x2795, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279b2798, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27a427a1, 0x27ab27a7, 0x27b327af, 0x27b7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27bb0000, 0x27be27c6, 0x27c227c9, 0x27cd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0x602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x568, 0x5e605e3, 0x0, 0x687, 0x6070000, 0x71a, 0x7810000, 0x6af07a7, 0x83e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0000, 0xb100000, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd60000, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e60000, 0x67e0629, 0x687, 0x6070000, 0x734071a, 0x7810723, 0x6af07a7, 0x83e, 0x8900861, 0x6b2056b, 0x6820773, 0x95d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e60000, 0x67e0629, 0x687, 0x60706cf, 0x734071a, 0x723, 0x7a7, 0x0, 0x8900861, 0x6b2056b, 0x6820773, 0x95d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0xb440de4, 0x6110695, 0xe8d0e76, 0x0, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0x12ff12fd, 0x0, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134e1346, 0x13521350, 0x13591357, 0x136c1364, 0x137f1371, 0x13861384, 0x138f138a, 0x13931391, 0x13971395, 0x13a713a5, 0x13ab13a9, 0x13b413b0, 0x13c013bb, 0x13e0276a, 0x13c913c4, 0x13d713e8, 0x134613db, 0x1350134e, 0x13571352, 0x13641359, 0x1371136c, 0x1384137f, 0x138f138a, 0x13971393, 0x13a713a5, 0x13ab13a9, 0x13b213b0, 0x13d313b4, 0x13c213c4, 0x13d513cb, 0x13d92768, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x149d1482, 0x158b14a0, 0x18330000, 0x14a314b4, 0x14a7166e, 0x15971722, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x14871704, 0x14c715dd, 0x14aa151b, 0x164b158d, 0x16b01688, 0x18f518bf, 0x18c118e5, 0x149d0000, 0x14a0, 0x148c, 0x14a30000, 0x14a70000, 0x15971722, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x1704, 0x14c715dd, 0x14aa151b, 0x164b0000, 0x16b00000, 0x0, 0x0, 0x0, 0x14a0, 0x0, 0x14a30000, 0x14a70000, 0x15970000, 0x14ba0000, 0x168d15a3, 0x160b0000, 0x1704, 0x15dd, 0x14aa0000, 0x164b0000, 0x16b00000, 0x18f50000, 0x18c10000, 0x149d0000, 0x14a0, 0x148c, 0x14a30000, 0x14a7166e, 0x1722, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x1704, 0x14c715dd, 0x14aa151b, 0x164b0000, 0x16b01688, 0x18bf, 0x18e5, 0x149d1482, 0x158b14a0, 0x1833148c, 0x14a314b4, 0x14a7166e, 0x15970000, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x14871704, 0x14c715dd, 0x14aa151b, 0x164b158d, 0x16b01688, 0x0, 0x0, 0x149d0000, 0x158b14a0, 0x18330000, 0x14a314b4, 0x14a7166e, 0x15970000, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x14871704, 0x14c715dd, 0x14aa151b, 0x164b158d, 0x16b01688, 0x0, 0x0, 0x307030a, 0x3f10316, 0x4ab0468, 0x4fa04de, 0x520050b, 0x531, 0x0, 0x0, 0x10200fe, 0x10a0106, 0x112010e, 0x11a0116, 0x122011e, 0x12a0126, 0x132012e, 0x13a0136, 0x142013e, 0x14a0146, 0x152014e, 0x15a0156, 0x162015e, 0x5e31bfc, 0x5e5076d, 0x936, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x76f06b1, 0x8690863, 0x933082a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x761075e, 0x76c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d4d1c72, 0x1d5c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21622249, 0x1da620a5, 0x21331fc6, 0x213e25e4, 0x22b01fcc, 0x229923a4, 0x21f7204f, 0x229d201b, 0x24d82045, 0x2612240e, 0x20c12125, 0x224f237e, 0x1f982265, 0x26521f9e, 0x1fac21ac, 0x225f20b3, 0x224b2626, 0x24a22484, 0x236e20b7, 0x32922cd, 0x20512418, 0x266e20e7, 0x0, 0x0, 0x1c001c18, 0x1c0c1c04, 0x1c101c1c, 0x1c081c20, 0x1c14, 0x0, 0x0, 0x0, 0x20af21f9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x0, 0x0, 0x0, 0x1fb21fb6, 0x27dd1fba, 0x1fe71fdf, 0x1fed1fe9, 0x1ff31ff1, 0x1ff51ff9, 0x27e51f12, 0x20052003, 0x20152007, 0x1f1427df, 0x201b200b, 0x202327e3, 0x1fd42027, 0x202d202b, 0x203b28a1, 0x1f18203f, 0x204d204b, 0x20532051, 0x205f1f1a, 0x20672061, 0x206f206d, 0x20752071, 0x20872085, 0x2093208b, 0x20992097, 0x20992099, 0x239627eb, 0x20a720a3, 0x20ad27ed, 0x20b520b1, 0x20bf20c9, 0x20c720c5, 0x20cf20cb, 0x20d520d1, 0x20db20d9, 0x20df20db, 0x20e520e3, 0x20fd20eb, 0x20ff20ef, 0x20f520f1, 0x21232041, 0x21092107, 0x2105210b, 0x210d210f, 0x27ef2119, 0x21292127, 0x2133212d, 0x21482137, 0x27f327f1, 0x2150214e, 0x214c2152, 0x1f1c2156, 0x215a1f1e, 0x215e215e, 0x216c27f5, 0x2170216e, 0x27f72174, 0x217a2178, 0x217e21e9, 0x21841f20, 0x2192218c, 0x27fb2190, 0x27fd2196, 0x219a219c, 0x21a6219e, 0x1f2221a8, 0x21b421b0, 0x21b821b6, 0x27ff1f24, 0x21c91f26, 0x21cd21cb, 0x28b521d1, 0x280321dd, 0x25382803, 0x21e521e5, 0x28111f28, 0x21ed2865, 0x1f2a21f1, 0x220321fb, 0x22092205, 0x1f2e2211, 0x22131f2c, 0x22152805, 0x2221221f, 0x22212223, 0x222b2229, 0x222f2233, 0x22352231, 0x22392237, 0x224121bd, 0x2251224d, 0x22632259, 0x2261280b, 0x2267225b, 0x2275226b, 0x2279280d, 0x226f2273, 0x227d1f30, 0x22852281, 0x1f32227f, 0x2291228d, 0x22a7280f, 0x22b522c7, 0x22bb1f38, 0x1f341f36, 0x201f201d, 0x22bd22c9, 0x1f6a2522, 0x22d122cf, 0x22dd22d3, 0x281922d9, 0x22e71f3a, 0x22f422e1, 0x281d22f8, 0x22eb22fa, 0x1f3c22fe, 0x23022300, 0x230a2304, 0x230e281f, 0x23141f3e, 0x23162821, 0x231c1f40, 0x23282322, 0x2823232a, 0x282527f9, 0x2827233a, 0x23442340, 0x234a233c, 0x235a2352, 0x23562354, 0x235e235c, 0x23502829, 0x236c236a, 0x23761f42, 0x282b2374, 0x23842366, 0x282f282d, 0x23902386, 0x238c238e, 0x23921f44, 0x2398239a, 0x27e1239e, 0x283123a6, 0x283523ac, 0x23bc23b6, 0x283723c6, 0x23d223d0, 0x283b2839, 0x23e823e0, 0x23ea1f46, 0x1f481f48, 0x23f823f6, 0x23fe23fc, 0x1f4a2404, 0x283d2410, 0x283f241e, 0x28012424, 0x2841242c, 0x28452843, 0x1f4e1f4c, 0x28492448, 0x284b2847, 0x244c284d, 0x244e244e, 0x1f522452, 0x1f542454, 0x28511f56, 0x2462245e, 0x1f582468, 0x247a2853, 0x28572855, 0x2496248a, 0x249a1f5a, 0x249e249c, 0x285b2859, 0x24aa285b, 0x285d1f5c, 0x24b624b4, 0x285f1f5e, 0x1f6024c4, 0x24c824cc, 0x286324d0, 0x1f6224dc, 0x24e624e2, 0x1f6424ee, 0x28692867, 0x286b1f66, 0x286d24fa, 0x25062500, 0x286f250a, 0x25142871, 0x25182873, 0x1f682813, 0x25262524, 0x25281f6c, 0x28752158, 0x28152877, 0x25382817, 0x2646253a, 0x25501f6e, 0x2552254e, 0x2554205b, 0x25582556, 0x2879255c, 0x255e255a, 0x256a2568, 0x256c2560, 0x25802576, 0x25702566, 0x25742572, 0x287f287b, 0x1f70287d, 0x25862584, 0x2887258a, 0x2881258c, 0x1f741f72, 0x28852883, 0x259c1f76, 0x25a0259e, 0x25a825a2, 0x25ac25a6, 0x25b225aa, 0x25b025ae, 0x1f7825b4, 0x25ba25b8, 0x25c21f7a, 0x288925c4, 0x25cc25ca, 0x25d21f7c, 0x288b1f16, 0x1f7e288d, 0x25e81f80, 0x260225f4, 0x288f260a, 0x26162614, 0x26282622, 0x27e72893, 0x262c262e, 0x27e92632, 0x263e2638, 0x28972895, 0x2664265e, 0x28992668, 0x2680266a, 0x26882686, 0x268e2684, 0x289b2690, 0x1f822696, 0x289d269a, 0x26b61f84, 0x26c221a0, 0x28a3289f, 0x1f881f86, 0x28a526d6, 0x28a71f8a, 0x26e226e2, 0x28a926e6, 0x1f8c26f2, 0x270026fa, 0x27082704, 0x28ab1f8e, 0x27202712, 0x1f902726, 0x27281f92, 0x1f9428ad, 0x28b128af, 0x273a28b3, 0x27441f96, 0x274a2748, 0x2752274e, 0x28b72756, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //12544 bytes enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x40, 0x440], [ 0x100, 0x800, 0x1000], [ 0x2020100, 0x3020202, 0x2020204, 0x2050202, 0x2020202, 0x6020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x40003, 0x60005, 0x70000, 0x90008, 0xb000a, 0x0, 0x0, 0x0, 0x0, 0xd000c, 0xf000e, 0x10, 0x120011, 0x140013, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x170000, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x190000, 0x1a, 0x0, 0x1b, 0x1c0000, 0x1d, 0x0, 0x0, 0x0, 0x1e, 0x1f, 0x20, 0x0, 0x21, 0x0, 0x22, 0x0, 0x23, 0x0, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x0, 0x290000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b002a, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e002d, 0x30002f, 0x320031, 0x340033, 0x360035, 0x380037, 0x3a0039, 0x3c003b, 0x3d, 0x0, 0x0, 0x0, 0x3e0000, 0x0, 0x40003f, 0x41, 0x430042, 0x450044, 0x470046, 0x480000, 0x490000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c004b, 0x4e004d, 0x50004f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x520051, 0x540053, 0x560055, 0x580057, 0x5a0059, 0x5c005b, 0x5e005d, 0x5f, 0x610060, 0x62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x640063, 0x0, 0x650000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x0, 0x0, 0x670000, 0x0, 0x0, 0x0, 0x680000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x690000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b006a, 0x6c0000, 0x6d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f006e, 0x710070, 0x730072, 0x750074, 0x770076, 0x790078, 0x7b007a, 0x7d007c, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf000c, 0x250012, 0x4f0045, 0x850000, 0xa1009e, 0xcb00a4, 0x121011e, 0x1330124, 0x1880000, 0x1a0019d, 0x1b601a3, 0x1da, 0x26d0000, 0x2730270, 0x2f30287, 0x0, 0x322031f, 0x3380325, 0x3620358, 0x3980000, 0x3b403b1, 0x3de03b7, 0x4370434, 0x446043a, 0x49c0000, 0x4b404b1, 0x4ca04b7, 0x4ee, 0x5840000, 0x58a0587, 0x60d059e, 0x61c0000, 0x33b0028, 0x33e002b, 0x380006d, 0x38c0079, 0x38f007c, 0x392007f, 0x3950082, 0x3a2008f, 0x0, 0x3cd00ba, 0x3d800c5, 0x3db00c8, 0x3fb00e8, 0x3e400d1, 0x40a00f7, 0x41000fd, 0x4130100, 0x4190106, 0x41c0109, 0x0, 0x43d0127, 0x440012a, 0x443012d, 0x45c0149, 0x130, 0x0, 0x462014f, 0x471015d, 0x1630000, 0x1700477, 0x1660484, 0x47a, 0x0, 0x1850000, 0x1940499, 0x18e04a8, 0x4a2, 0x0, 0x4d901c5, 0x4e401d0, 0x4f801e4, 0x0, 0x52f021b, 0x5450231, 0x5350221, 0x54b0237, 0x552023e, 0x5690255, 0x5580244, 0x57b0264, 0x572025b, 0x0, 0x58d0276, 0x594027d, 0x59b0284, 0x5b4029d, 0x5b702a0, 0x5e002c9, 0x5f502de, 0x61002f6, 0x30b0302, 0x3110628, 0x314062e, 0x631, 0x50401f0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2ac0000, 0x5c3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x560000, 0x13d0369, 0x1e70450, 0x2a304fb, 0x29205ba, 0x28e05a9, 0x29605a5, 0x28a05ad, 0x5a1, 0x35b0048, 0x3540041, 0x653064a, 0x0, 0x4160103, 0x46b0157, 0x522020e, 0x5250211, 0x65f065c, 0x465, 0x0, 0x40700f4, 0x0, 0x4960182, 0x3650052, 0x6500647, 0x656064d, 0x36c0059, 0x36f005c, 0x3e700d4, 0x3ea00d7, 0x4530140, 0x4560143, 0x4fe01ea, 0x50101ed, 0x5380224, 0x53b0227, 0x5bd02a6, 0x5c002a9, 0x5660252, 0x5780261, 0x0, 0x4250112, 0x0, 0x0, 0x0, 0x351003e, 0x3f400e1, 0x4f101dd, 0x4d101bd, 0x4e701d3, 0x4ea01d6, 0x61602fc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000d, 0x66b0000, 0x137, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x662, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x63d0000, 0x6450670, 0x6df06c3, 0x72c, 0x759, 0x7980778, 0x8d1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7810735, 0x84707e9, 0x8c10867, 0x92f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92808ca, 0x91f08fd, 0x95f, 0x0, 0x9b40000, 0x9b7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9cc09c6, 0x9c30000, 0x0, 0x9ba0000, 0x0, 0x0, 0x9d809e4, 0x9ed, 0x0, 0x0, 0x0, 0x0, 0x9de0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa200000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0e0a08, 0xa050000, 0x0, 0xa410000, 0x0, 0x0, 0xa1a0a26, 0xa2f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa470a44, 0x0, 0x0, 0x0, 0x0, 0x9cf0000, 0xa11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9ff09bd, 0xa0209c0, 0x0, 0xa0b09c9, 0x0, 0xa4d0a4a, 0xa1409d2, 0xa1709d5, 0x0, 0xa1d09db, 0xa2309e1, 0xa2909e7, 0x0, 0xa530a50, 0xa3e09fc, 0xa2c09ea, 0xa3209f0, 0xa3509f3, 0xa3809f6, 0x0, 0xa3b09f9, 0x0, 0x0, 0x0, 0x0, 0xac10abe, 0xac40ac7, 0xaca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xad3, 0xacd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xad00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xae80000, 0x0, 0x0, 0x0, 0xaf10000, 0x0, 0xaf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xad90ad6, 0xadf0adc, 0xae50ae2, 0xaee0aeb, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb000000, 0xb03, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xafa0af7, 0xafd0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb120000, 0x0, 0xb15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb060000, 0xb0c0b09, 0x0, 0xb0f, 0x0, 0x0, 0x0, 0x0, 0xb21, 0xb1e0000, 0xb24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb1b0b18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb300b2a, 0xb2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb33, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb36, 0x0, 0x0, 0xb400000, 0xb43, 0xb3c0b39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4c0b46, 0xb49, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4f, 0xb550b52, 0xb59, 0x0, 0xb5f0000, 0x0, 0x0, 0x0, 0x0, 0xb620000, 0x0, 0x0, 0xb65, 0x0, 0xb680000, 0x0, 0x0, 0xb6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb5c0000, 0x0, 0x0, 0x0, 0x0, 0xb6e0000, 0xb710000, 0xb89, 0xb8c, 0x0, 0x0, 0x0, 0xb740000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb7a0000, 0x0, 0x0, 0x0, 0x0, 0xb7d0000, 0x0, 0x0, 0xb80, 0x0, 0xb830000, 0x0, 0x0, 0xb86, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb770000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb8f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb92, 0xb95, 0xb98, 0xb9b, 0xb9e, 0x0, 0xba1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba40000, 0xba70000, 0x0, 0xbad0baa, 0xbb00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37d006a, 0x3830070, 0x3860073, 0x3890076, 0x39b0088, 0x39f008c, 0x3a50092, 0x3ae009b, 0x3a80095, 0x3ab0098, 0x3d000bd, 0x3d400c1, 0x3fe00eb, 0x40100ee, 0x3f700e4, 0x40400f1, 0x40d00fa, 0x41f010c, 0x4280115, 0x422010f, 0x42b0118, 0x42e011b, 0x45f014c, 0x4490136, 0x4680154, 0x46e015a, 0x4740160, 0x47d0169, 0x480016c, 0x48a0176, 0x4870173, 0x48d0179, 0x490017c, 0x493017f, 0x49f018b, 0x4a50191, 0x4ae019a, 0x4ab0197, 0x4cd01b9, 0x4d501c1, 0x4dc01c8, 0x4e001cc, 0x5290215, 0x52c0218, 0x532021e, 0x53e022a, 0x541022d, 0x5480234, 0x5550241, 0x55f024b, 0x54e023a, 0x55b0247, 0x562024e, 0x56c0258, 0x575025e, 0x581026a, 0x57e0267, 0x5dd02c6, 0x5e602cf, 0x5e302cc, 0x5900279, 0x5970280, 0x5e902d2, 0x5ec02d5, 0x5ef02d8, 0x5f202db, 0x5fb02e4, 0x5f802e1, 0x60102e7, 0x60402ea, 0x60702ed, 0x61902ff, 0x62b030e, 0x6340317, 0x637031a, 0x56f0431, 0x62205fe, 0x6590000, 0x0, 0x0, 0x372005f, 0x35f004c, 0x32c0019, 0x3280015, 0x3340021, 0x330001d, 0x3750062, 0x3450032, 0x341002e, 0x34d003a, 0x3490036, 0x3790066, 0x3ed00da, 0x3e100ce, 0x3ca00b7, 0x3be00ab, 0x3ba00a7, 0x3c600b3, 0x3c200af, 0x3f000dd, 0x44d013a, 0x4590146, 0x51b0207, 0x4f501e1, 0x4be01aa, 0x4ba01a6, 0x4c601b2, 0x4c201ae, 0x51e020a, 0x50b01f7, 0x50701f3, 0x51301ff, 0x50f01fb, 0x5170203, 0x5da02c3, 0x5b1029a, 0x5ca02b3, 0x5c602af, 0x5d202bb, 0x5ce02b7, 0x5d602bf, 0x60a02f0, 0x6250308, 0x61f0305, 0x61302f9, 0x0, 0x0, 0x0, 0x81807f6, 0x81b07f9, 0x8240802, 0x82d080b, 0x69b0679, 0x69e067c, 0x6a70685, 0x6b0068e, 0x855084a, 0x858084d, 0x85c0851, 0x0, 0x6d106c6, 0x6d406c9, 0x6d806cd, 0x0, 0x890086e, 0x8930871, 0x89c087a, 0x8a50883, 0x70406e2, 0x70706e5, 0x71006ee, 0x71906f7, 0x8e808d9, 0x8eb08dc, 0x8ef08e0, 0x8f308e4, 0x7470738, 0x74a073b, 0x74e073f, 0x7520743, 0x90b0900, 0x90e0903, 0x9120907, 0x0, 0x767075c, 0x76a075f, 0x76e0763, 0x0, 0x9460937, 0x949093a, 0x94d093e, 0x9510942, 0x7840000, 0x7870000, 0x78b0000, 0x78f0000, 0x9880966, 0x98b0969, 0x9940972, 0x99d097b, 0x7bd079b, 0x7c0079e, 0x7c907a7, 0x7d207b0, 0x7e907e2, 0x8470844, 0x8670860, 0x8c108be, 0x8fd08fa, 0x91f091c, 0x95f0958, 0x0, 0x8360814, 0x81f07fd, 0x8280806, 0x831080f, 0x6b90697, 0x6a20680, 0x6ab0689, 0x6b40692, 0x8ae088c, 0x8970875, 0x8a0087e, 0x8a90887, 0x7220700, 0x70b06e9, 0x71406f2, 0x71d06fb, 0x9a60984, 0x98f096d, 0x9980976, 0x9a1097f, 0x7db07b9, 0x7c407a2, 0x7cd07ab, 0x7d607b4, 0x7f007f3, 0x84107e5, 0x7ec, 0x83d083a, 0x6730676, 0x670066d, 0x6bd, 0x8bc, 0x6400000, 0x8b90863, 0x86a, 0x8b508b2, 0x6c306c0, 0x6df06dc, 0xbb30726, 0xbb90bb6, 0x8c408c7, 0x8d108cd, 0x0, 0x8d508f7, 0x72f0732, 0x72c0729, 0xbbc0000, 0xbc20bbf, 0x9220925, 0x92f092b, 0x9190916, 0x9330955, 0x77b077e, 0x7780775, 0x63a0772, 0x31d063d, 0x0, 0x9b1095b, 0x962, 0x9ad09aa, 0x7590756, 0x7980795, 0x64307df, 0x0, 0xbc70bc5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x793, 0x0, 0x4f0152, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbcc0bc9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbcf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbd20000, 0xbd50bd8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbdb, 0x0, 0xbde0000, 0x0, 0xbe1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe4, 0xbe7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbea0000, 0x0, 0xbed, 0xbf00000, 0xbf30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xbf9, 0x0, 0x0, 0x0, 0x0, 0xbf60000, 0x90003, 0xbff0bfc, 0x0, 0xc050c02, 0x0, 0xc0b0c08, 0x0, 0x0, 0x0, 0xc110c0e, 0x0, 0xc1d0c1a, 0x0, 0xc230c20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc2f0c2c, 0xc350c32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc170c14, 0xc290c26, 0x0, 0x0, 0x0, 0xc3b0c38, 0xc410c3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc470000, 0xc49, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4e, 0xc51, 0xc54, 0xc57, 0xc5a, 0xc5d, 0xc60, 0xc63, 0xc66, 0xc69, 0xc6c, 0xc6f, 0xc720000, 0xc750000, 0xc780000, 0x0, 0x0, 0x0, 0xc7e0c7b, 0xc810000, 0xc84, 0xc8a0c87, 0xc8d0000, 0xc90, 0xc960c93, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4b, 0x0, 0x0, 0x0, 0x0, 0xc99, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc9f, 0xca2, 0xca5, 0xca8, 0xcab, 0xcae, 0xcb1, 0xcb4, 0xcb7, 0xcba, 0xcbd, 0xcc0, 0xcc30000, 0xcc60000, 0xcc90000, 0x0, 0x0, 0x0, 0xccf0ccc, 0xcd20000, 0xcd5, 0xcdb0cd8, 0xcde0000, 0xce1, 0xce70ce4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc9c, 0xcea0000, 0xcf00ced, 0xcf3, 0x0, 0xcf6, 0xfb71241, 0x124b125d, 0xd831043, 0x13270e29, 0xe991327, 0xe4f1293, 0xf550e97, 0x116710cd, 0x11fd11e3, 0x12791215, 0x10190feb, 0x109d1069, 0x128911c7, 0xd8d12f3, 0xff50e1d, 0x11e11079, 0xedb1309, 0x11d91051, 0xf65121d, 0x12031189, 0xfbd0eff, 0x108d1025, 0xd9d127d, 0xe050dd9, 0xff10f95, 0x10d31077, 0x11dd1171, 0x125911e7, 0x12fb12cf, 0x10e91307, 0x114d1107, 0x12a111b9, 0x122f130b, 0xf0b0e87, 0x117d112f, 0x10ed1083, 0x12cb1249, 0xecb0e85, 0x102f0fed, 0x11471047, 0x12b11159, 0x117f0e03, 0xddd0ddf, 0x114f1115, 0x12b511c5, 0xf67123d, 0x12350feb, 0xebb0d87, 0x10950f27, 0xe1110c1, 0xda510f1, 0xd7f0f1b, 0xf9d1011, 0xe231145, 0x10d70e7d, 0x122711c9, 0x126d1005, 0xf6f100d, 0xf7b11a5, 0xd9110bf, 0xddb0dc3, 0x113d0fdb, 0x122d1195, 0xe091291, 0xe9f0e37, 0xfa10f07, 0x10f31053, 0x12f712ab, 0x1313130d, 0xfb50df9, 0x12690ffd, 0xf490ef3, 0xf910f57, 0x106d104b, 0x111110af, 0x11791153, 0x11cd1261, 0x12a31271, 0xdfb0de9, 0x10670e41, 0x1227120b, 0xf230efd, 0x10030f77, 0x1091112d, 0xe670d97, 0xee50ebb, 0x109b0f29, 0x116b10a9, 0x12951175, 0x12d112c9, 0xd9f12dd, 0x128d110f, 0xf3512c1, 0xdb10d8f, 0xec70ebd, 0xfeb0f9f, 0x10cb1073, 0x127711d3, 0xfad1323, 0xdf712af, 0xfd10fcb, 0x103b1021, 0x10bd10a1, 0x114310e7, 0xdc512e3, 0x12b70f5d, 0xed70da9, 0x12631031, 0xf390f17, 0x10950fd5, 0xdeb12bb, 0xecf0e31, 0xfc30fa7, 0x10150fe1, 0x10c3109f, 0x120d1163, 0x128f1213, 0xe1312c5, 0xe33103d, 0x10b11075, 0x12bd11db, 0x130f12ff, 0x102d0fcf, 0x1121118b, 0x11331125, 0x1063108b, 0xd93123b, 0xded11ad, 0xef50de7, 0x11390f69, 0x101b0eb5, 0x12670fb3, 0x12b31205, 0xf031221, 0xe590db5, 0x0, 0xe7b, 0xfab, 0xde10000, 0x10cf108f, 0x110310f5, 0x110d1105, 0x113512d3, 0x116d, 0x11df, 0x1233, 0x12730000, 0x1283, 0x0, 0x12e912e7, 0x130512eb, 0x12bf127f, 0xdb30da1, 0xe010db9, 0xe170e07, 0xe5f0e53, 0xe790e63, 0xecd0e7f, 0xf2f0ed1, 0xf470f43, 0xf970f53, 0xfaf0fa3, 0x10270fdd, 0x10491035, 0x107d106f, 0x10eb10a3, 0x10fb10f7, 0x10fd10f9, 0x110110ff, 0x110b1109, 0x111d1117, 0x11531127, 0x115b1157, 0x11731161, 0x1197118d, 0x11cb1197, 0x12231219, 0x12391237, 0x124f124d, 0x1273126f, 0x12d912c7, 0xf2b12e1, 0x119313d6, 0x0, 0xdd70d81, 0xd9b0dc1, 0xdc90db7, 0xe0b0dff, 0xe490e53, 0xe5d0e51, 0xe830e7b, 0xe9b0e95, 0xeb10ea9, 0xf050f01, 0xf1d0f13, 0xf3f0f33, 0xf470f37, 0xf530f41, 0xf7f0f5f, 0xf890f85, 0xfab0f99, 0xfbf0fbd, 0xfff0fc7, 0x10211005, 0x10411045, 0x10571049, 0x10e3106f, 0x1089107f, 0x10ab108f, 0x10b910b5, 0x10c910c7, 0x10d110cf, 0x10df10d5, 0x10ef10dd, 0x1127111f, 0x11491131, 0x115f1153, 0x11af1173, 0x11f911c3, 0x121f121b, 0x12291223, 0x122b1233, 0x12351237, 0x12391231, 0x124f123f, 0x12751265, 0x1299128b, 0x12c712b9, 0x12d512d3, 0x12db12d9, 0x12f912e1, 0x13ac1327, 0x13be13aa, 0xd370d23, 0x13f20d39, 0x14341404, 0x13251321, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa7a0000, 0xabb0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xab50ab2, 0xaae0aaa, 0xa590a56, 0xa5f0a5c, 0xa680a65, 0xa710a6b, 0xa74, 0xa7d0a77, 0xa830a80, 0xa89, 0xa8c, 0xa920a8f, 0xa950000, 0xa98, 0xaa10a9e, 0xaa70aa4, 0xa6e0ab8, 0xa860a62, 0xa9b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1329, 0x132c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x132f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13351332, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13380000, 0x133b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13410000, 0x133e, 0x1344, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134a1347, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13531350, 0x135a1356, 0x1362135e, 0x1366, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x136a0000, 0x136d1375, 0x13711378, 0x137c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd850d89, 0x13800d8b, 0xda10d99, 0xda70da3, 0xdad0dab, 0xdaf0db3, 0x13880cf9, 0xdbb0db9, 0xdc70dbd, 0xcfb1382, 0xdcb0dbf, 0xdd11386, 0xd950dd3, 0xdd70dd5, 0xde31444, 0xcff0de5, 0xdf10def, 0xdf50df3, 0xdff0d01, 0xe070e01, 0xe0d0e0b, 0xe110e0f, 0xe170e15, 0xe1b0e19, 0xe210e1f, 0xe210e21, 0x105d138e, 0xe270e25, 0xe2b1390, 0xe2f0e2d, 0xe350e3d, 0xe3b0e39, 0xe430e3f, 0xe470e45, 0xe4d0e4b, 0xe510e4d, 0xe570e55, 0xe690e5b, 0xe6b0e5f, 0xe650e61, 0xe890de7, 0xe710e6f, 0xe6d0e73, 0xe750e77, 0x13920e81, 0xe8d0e8b, 0xe910e8f, 0xe9d0e93, 0x13961394, 0xea50ea3, 0xea10ea7, 0xd030eab, 0xeaf0d05, 0xeb30eb3, 0xeb71398, 0xebb0eb9, 0x139a0ebf, 0xec30ec1, 0xec50f0f, 0xec90d07, 0xed50ed1, 0x139e0ed3, 0x13a00ed9, 0xedd0edf, 0xee70ee1, 0xd090ee9, 0xeed0eeb, 0xef10eef, 0x13a20d0b, 0xef70d0d, 0xefb0ef9, 0x14580eff, 0x13a60f09, 0x118f13a6, 0xf0d0f0d, 0x13b40d0f, 0xf111408, 0xd110f15, 0xf1f0f19, 0xf250f21, 0xd150f2d, 0xf2f0d13, 0xf3113a8, 0xf3d0f3b, 0xf3d0f3f, 0xf470f45, 0xf4b0f4f, 0xf510f4d, 0xf550f53, 0xf5b0f59, 0xf630f61, 0xf730f6b, 0xf7113ae, 0xf750f6d, 0xf830f79, 0xf8713b0, 0xf7d0f81, 0xf8b0d17, 0xf930f8f, 0xd190f8d, 0xf9b0f97, 0xfa513b2, 0xfa90fb9, 0xfaf0d1f, 0xd1b0d1d, 0xdcf0dcd, 0xfb10fbb, 0xd511181, 0xfbf0fbd, 0xfc90fc1, 0x13bc0fc5, 0xfd30d21, 0xfd90fcd, 0x13c00fdd, 0xfd70fdf, 0xd230fe3, 0xfe70fe5, 0xfef0fe9, 0xff313c2, 0xff70d25, 0xff913c4, 0xffb0d27, 0x10051001, 0x13c61007, 0x13c8139c, 0x13ca1009, 0x1013100f, 0x1017100b, 0x1027101f, 0x10231021, 0x102b1029, 0x101d13cc, 0x10391037, 0x10410d29, 0x13ce103f, 0x104d1033, 0x13d213d0, 0x1059104f, 0x10551057, 0x105b0d2b, 0x105f1061, 0x13841065, 0x13d4106b, 0x13d81071, 0x107f107b, 0x13da1081, 0x10871085, 0x13de13dc, 0x10971093, 0x10990d2d, 0xd2f0d2f, 0x10a710a5, 0x10ad10ab, 0xd3110b3, 0x13e010b7, 0x13e210bb, 0x13a410c1, 0x13e410c5, 0x13e813e6, 0xd350d33, 0x13ec10d5, 0x13ee13ea, 0x10d913f0, 0x10db10db, 0xd3910df, 0xd3b10e1, 0x13f40d3d, 0x10e910e5, 0xd3f10ef, 0x10ff13f6, 0x13fa13f8, 0x1113110d, 0x11170d41, 0x111b1119, 0x13fe13fc, 0x112313fe, 0x14000d43, 0x112b1129, 0x14020d45, 0xd471137, 0x113b113f, 0x14061141, 0xd49114b, 0x11551151, 0xd4b115d, 0x140c140a, 0x140e0d4d, 0x14101165, 0x116f1169, 0x14121173, 0x11771414, 0x117b1416, 0xd4f13b6, 0x11851183, 0x11870d53, 0x14180ead, 0x13b8141a, 0x118f13ba, 0x126b1191, 0x119b0d55, 0x119d1199, 0x119f0dfd, 0x11a311a1, 0x141c11a7, 0x11a911a5, 0x11b511b3, 0x11b711ab, 0x11cb11c1, 0x11bb11b1, 0x11bf11bd, 0x1422141e, 0xd571420, 0x11d111cf, 0x142a11d5, 0x142411d7, 0xd5b0d59, 0x14281426, 0x11e50d5d, 0x11e911e7, 0x11ef11eb, 0x11f311ed, 0x11f911f1, 0x11f711f5, 0xd5f11fb, 0x120111ff, 0x12070d61, 0x142c1209, 0x1211120f, 0x12170d63, 0x142e0cfd, 0xd651430, 0x12250d67, 0x123f1231, 0x14321243, 0x12471245, 0x12531251, 0x138a1436, 0x12551257, 0x138c125b, 0x1265125f, 0x143a1438, 0x1281127b, 0x143c1285, 0x12971287, 0x129f129d, 0x12a5129b, 0x143e12a7, 0xd6912a9, 0x144012ad, 0x12c30d6b, 0x12cd0ee3, 0x14461442, 0xd6f0d6d, 0x144812d7, 0x144a0d71, 0x12db12db, 0x144c12df, 0xd7312e5, 0x12ef12ed, 0x12f512f1, 0x144e0d75, 0x12fd12f9, 0xd771301, 0x13030d79, 0xd7b1450, 0x14541452, 0x13111456, 0x13150d7d, 0x13191317, 0x131d131b, 0x145a131f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); -@property -{ -private alias _IDCA = immutable(dchar[]); -_IDCA decompCanonTable() @safe pure nothrow { static _IDCA t = [ 0x0, 0x3b, 0x0, 0x3c, 0x338, 0x0, 0x3d, 0x338, 0x0, 0x3e, 0x338, 0x0, 0x41, 0x300, 0x0, 0x41, 0x301, 0x0, 0x41, 0x302, 0x0, 0x41, 0x302, 0x300, 0x0, 0x41, 0x302, 0x301, 0x0, 0x41, 0x302, 0x303, 0x0, 0x41, 0x302, 0x309, 0x0, 0x41, 0x303, 0x0, 0x41, 0x304, 0x0, 0x41, 0x306, 0x0, 0x41, 0x306, 0x300, 0x0, 0x41, 0x306, 0x301, 0x0, 0x41, 0x306, 0x303, 0x0, 0x41, 0x306, 0x309, 0x0, 0x41, 0x307, 0x0, 0x41, 0x307, 0x304, 0x0, 0x41, 0x308, 0x0, 0x41, 0x308, 0x304, 0x0, 0x41, 0x309, 0x0, 0x41, 0x30a, 0x0, 0x41, 0x30a, 0x301, 0x0, 0x41, 0x30c, 0x0, 0x41, 0x30f, 0x0, 0x41, 0x311, 0x0, 0x41, 0x323, 0x0, 0x41, 0x323, 0x302, 0x0, 0x41, 0x323, 0x306, 0x0, 0x41, 0x325, 0x0, 0x41, 0x328, 0x0, 0x42, 0x307, 0x0, 0x42, 0x323, 0x0, 0x42, 0x331, 0x0, 0x43, 0x301, 0x0, 0x43, 0x302, 0x0, 0x43, 0x307, 0x0, 0x43, 0x30c, 0x0, 0x43, 0x327, 0x0, 0x43, 0x327, 0x301, 0x0, 0x44, 0x307, 0x0, 0x44, 0x30c, 0x0, 0x44, 0x323, 0x0, 0x44, 0x327, 0x0, 0x44, 0x32d, 0x0, 0x44, 0x331, 0x0, 0x45, 0x300, 0x0, 0x45, 0x301, 0x0, 0x45, 0x302, 0x0, 0x45, 0x302, 0x300, 0x0, 0x45, 0x302, 0x301, 0x0, 0x45, 0x302, 0x303, 0x0, 0x45, 0x302, 0x309, 0x0, 0x45, 0x303, 0x0, 0x45, 0x304, 0x0, 0x45, 0x304, 0x300, 0x0, 0x45, 0x304, 0x301, 0x0, 0x45, 0x306, 0x0, 0x45, 0x307, 0x0, 0x45, 0x308, 0x0, 0x45, 0x309, 0x0, 0x45, 0x30c, 0x0, 0x45, 0x30f, 0x0, 0x45, 0x311, 0x0, 0x45, 0x323, 0x0, 0x45, 0x323, 0x302, 0x0, 0x45, 0x327, 0x0, 0x45, 0x327, 0x306, 0x0, 0x45, 0x328, 0x0, 0x45, 0x32d, 0x0, 0x45, 0x330, 0x0, 0x46, 0x307, 0x0, 0x47, 0x301, 0x0, 0x47, 0x302, 0x0, 0x47, 0x304, 0x0, 0x47, 0x306, 0x0, 0x47, 0x307, 0x0, 0x47, 0x30c, 0x0, 0x47, 0x327, 0x0, 0x48, 0x302, 0x0, 0x48, 0x307, 0x0, 0x48, 0x308, 0x0, 0x48, 0x30c, 0x0, 0x48, 0x323, 0x0, 0x48, 0x327, 0x0, 0x48, 0x32e, 0x0, 0x49, 0x300, 0x0, 0x49, 0x301, 0x0, 0x49, 0x302, 0x0, 0x49, 0x303, 0x0, 0x49, 0x304, 0x0, 0x49, 0x306, 0x0, 0x49, 0x307, 0x0, 0x49, 0x308, 0x0, 0x49, 0x308, 0x301, 0x0, 0x49, 0x309, 0x0, 0x49, 0x30c, 0x0, 0x49, 0x30f, 0x0, 0x49, 0x311, 0x0, 0x49, 0x323, 0x0, 0x49, 0x328, 0x0, 0x49, 0x330, 0x0, 0x4a, 0x302, 0x0, 0x4b, 0x0, 0x4b, 0x301, 0x0, 0x4b, 0x30c, 0x0, 0x4b, 0x323, 0x0, 0x4b, 0x327, 0x0, 0x4b, 0x331, 0x0, 0x4c, 0x301, 0x0, 0x4c, 0x30c, 0x0, 0x4c, 0x323, 0x0, 0x4c, 0x323, 0x304, 0x0, 0x4c, 0x327, 0x0, 0x4c, 0x32d, 0x0, 0x4c, 0x331, 0x0, 0x4d, 0x301, 0x0, 0x4d, 0x307, 0x0, 0x4d, 0x323, 0x0, 0x4e, 0x300, 0x0, 0x4e, 0x301, 0x0, 0x4e, 0x303, 0x0, 0x4e, 0x307, 0x0, 0x4e, 0x30c, 0x0, 0x4e, 0x323, 0x0, 0x4e, 0x327, 0x0, 0x4e, 0x32d, 0x0, 0x4e, 0x331, 0x0, 0x4f, 0x300, 0x0, 0x4f, 0x301, 0x0, 0x4f, 0x302, 0x0, 0x4f, 0x302, 0x300, 0x0, 0x4f, 0x302, 0x301, 0x0, 0x4f, 0x302, 0x303, 0x0, 0x4f, 0x302, 0x309, 0x0, 0x4f, 0x303, 0x0, 0x4f, 0x303, 0x301, 0x0, 0x4f, 0x303, 0x304, 0x0, 0x4f, 0x303, 0x308, 0x0, 0x4f, 0x304, 0x0, 0x4f, 0x304, 0x300, 0x0, 0x4f, 0x304, 0x301, 0x0, 0x4f, 0x306, 0x0, 0x4f, 0x307, 0x0, 0x4f, 0x307, 0x304, 0x0, 0x4f, 0x308, 0x0, 0x4f, 0x308, 0x304, 0x0, 0x4f, 0x309, 0x0, 0x4f, 0x30b, 0x0, 0x4f, 0x30c, 0x0, 0x4f, 0x30f, 0x0, 0x4f, 0x311, 0x0, 0x4f, 0x31b, 0x0, 0x4f, 0x31b, 0x300, 0x0, 0x4f, 0x31b, 0x301, 0x0, 0x4f, 0x31b, 0x303, 0x0, 0x4f, 0x31b, 0x309, 0x0, 0x4f, 0x31b, 0x323, 0x0, 0x4f, 0x323, 0x0, 0x4f, 0x323, 0x302, 0x0, 0x4f, 0x328, 0x0, 0x4f, 0x328, 0x304, 0x0, 0x50, 0x301, 0x0, 0x50, 0x307, 0x0, 0x52, 0x301, 0x0, 0x52, 0x307, 0x0, 0x52, 0x30c, 0x0, 0x52, 0x30f, 0x0, 0x52, 0x311, 0x0, 0x52, 0x323, 0x0, 0x52, 0x323, 0x304, 0x0, 0x52, 0x327, 0x0, 0x52, 0x331, 0x0, 0x53, 0x301, 0x0, 0x53, 0x301, 0x307, 0x0, 0x53, 0x302, 0x0, 0x53, 0x307, 0x0, 0x53, 0x30c, 0x0, 0x53, 0x30c, 0x307, 0x0, 0x53, 0x323, 0x0, 0x53, 0x323, 0x307, 0x0, 0x53, 0x326, 0x0, 0x53, 0x327, 0x0, 0x54, 0x307, 0x0, 0x54, 0x30c, 0x0, 0x54, 0x323, 0x0, 0x54, 0x326, 0x0, 0x54, 0x327, 0x0, 0x54, 0x32d, 0x0, 0x54, 0x331, 0x0, 0x55, 0x300, 0x0, 0x55, 0x301, 0x0, 0x55, 0x302, 0x0, 0x55, 0x303, 0x0, 0x55, 0x303, 0x301, 0x0, 0x55, 0x304, 0x0, 0x55, 0x304, 0x308, 0x0, 0x55, 0x306, 0x0, 0x55, 0x308, 0x0, 0x55, 0x308, 0x300, 0x0, 0x55, 0x308, 0x301, 0x0, 0x55, 0x308, 0x304, 0x0, 0x55, 0x308, 0x30c, 0x0, 0x55, 0x309, 0x0, 0x55, 0x30a, 0x0, 0x55, 0x30b, 0x0, 0x55, 0x30c, 0x0, 0x55, 0x30f, 0x0, 0x55, 0x311, 0x0, 0x55, 0x31b, 0x0, 0x55, 0x31b, 0x300, 0x0, 0x55, 0x31b, 0x301, 0x0, 0x55, 0x31b, 0x303, 0x0, 0x55, 0x31b, 0x309, 0x0, 0x55, 0x31b, 0x323, 0x0, 0x55, 0x323, 0x0, 0x55, 0x324, 0x0, 0x55, 0x328, 0x0, 0x55, 0x32d, 0x0, 0x55, 0x330, 0x0, 0x56, 0x303, 0x0, 0x56, 0x323, 0x0, 0x57, 0x300, 0x0, 0x57, 0x301, 0x0, 0x57, 0x302, 0x0, 0x57, 0x307, 0x0, 0x57, 0x308, 0x0, 0x57, 0x323, 0x0, 0x58, 0x307, 0x0, 0x58, 0x308, 0x0, 0x59, 0x300, 0x0, 0x59, 0x301, 0x0, 0x59, 0x302, 0x0, 0x59, 0x303, 0x0, 0x59, 0x304, 0x0, 0x59, 0x307, 0x0, 0x59, 0x308, 0x0, 0x59, 0x309, 0x0, 0x59, 0x323, 0x0, 0x5a, 0x301, 0x0, 0x5a, 0x302, 0x0, 0x5a, 0x307, 0x0, 0x5a, 0x30c, 0x0, 0x5a, 0x323, 0x0, 0x5a, 0x331, 0x0, 0x60, 0x0, 0x61, 0x300, 0x0, 0x61, 0x301, 0x0, 0x61, 0x302, 0x0, 0x61, 0x302, 0x300, 0x0, 0x61, 0x302, 0x301, 0x0, 0x61, 0x302, 0x303, 0x0, 0x61, 0x302, 0x309, 0x0, 0x61, 0x303, 0x0, 0x61, 0x304, 0x0, 0x61, 0x306, 0x0, 0x61, 0x306, 0x300, 0x0, 0x61, 0x306, 0x301, 0x0, 0x61, 0x306, 0x303, 0x0, 0x61, 0x306, 0x309, 0x0, 0x61, 0x307, 0x0, 0x61, 0x307, 0x304, 0x0, 0x61, 0x308, 0x0, 0x61, 0x308, 0x304, 0x0, 0x61, 0x309, 0x0, 0x61, 0x30a, 0x0, 0x61, 0x30a, 0x301, 0x0, 0x61, 0x30c, 0x0, 0x61, 0x30f, 0x0, 0x61, 0x311, 0x0, 0x61, 0x323, 0x0, 0x61, 0x323, 0x302, 0x0, 0x61, 0x323, 0x306, 0x0, 0x61, 0x325, 0x0, 0x61, 0x328, 0x0, 0x62, 0x307, 0x0, 0x62, 0x323, 0x0, 0x62, 0x331, 0x0, 0x63, 0x301, 0x0, 0x63, 0x302, 0x0, 0x63, 0x307, 0x0, 0x63, 0x30c, 0x0, 0x63, 0x327, 0x0, 0x63, 0x327, 0x301, 0x0, 0x64, 0x307, 0x0, 0x64, 0x30c, 0x0, 0x64, 0x323, 0x0, 0x64, 0x327, 0x0, 0x64, 0x32d, 0x0, 0x64, 0x331, 0x0, 0x65, 0x300, 0x0, 0x65, 0x301, 0x0, 0x65, 0x302, 0x0, 0x65, 0x302, 0x300, 0x0, 0x65, 0x302, 0x301, 0x0, 0x65, 0x302, 0x303, 0x0, 0x65, 0x302, 0x309, 0x0, 0x65, 0x303, 0x0, 0x65, 0x304, 0x0, 0x65, 0x304, 0x300, 0x0, 0x65, 0x304, 0x301, 0x0, 0x65, 0x306, 0x0, 0x65, 0x307, 0x0, 0x65, 0x308, 0x0, 0x65, 0x309, 0x0, 0x65, 0x30c, 0x0, 0x65, 0x30f, 0x0, 0x65, 0x311, 0x0, 0x65, 0x323, 0x0, 0x65, 0x323, 0x302, 0x0, 0x65, 0x327, 0x0, 0x65, 0x327, 0x306, 0x0, 0x65, 0x328, 0x0, 0x65, 0x32d, 0x0, 0x65, 0x330, 0x0, 0x66, 0x307, 0x0, 0x67, 0x301, 0x0, 0x67, 0x302, 0x0, 0x67, 0x304, 0x0, 0x67, 0x306, 0x0, 0x67, 0x307, 0x0, 0x67, 0x30c, 0x0, 0x67, 0x327, 0x0, 0x68, 0x302, 0x0, 0x68, 0x307, 0x0, 0x68, 0x308, 0x0, 0x68, 0x30c, 0x0, 0x68, 0x323, 0x0, 0x68, 0x327, 0x0, 0x68, 0x32e, 0x0, 0x68, 0x331, 0x0, 0x69, 0x300, 0x0, 0x69, 0x301, 0x0, 0x69, 0x302, 0x0, 0x69, 0x303, 0x0, 0x69, 0x304, 0x0, 0x69, 0x306, 0x0, 0x69, 0x308, 0x0, 0x69, 0x308, 0x301, 0x0, 0x69, 0x309, 0x0, 0x69, 0x30c, 0x0, 0x69, 0x30f, 0x0, 0x69, 0x311, 0x0, 0x69, 0x323, 0x0, 0x69, 0x328, 0x0, 0x69, 0x330, 0x0, 0x6a, 0x302, 0x0, 0x6a, 0x30c, 0x0, 0x6b, 0x301, 0x0, 0x6b, 0x30c, 0x0, 0x6b, 0x323, 0x0, 0x6b, 0x327, 0x0, 0x6b, 0x331, 0x0, 0x6c, 0x301, 0x0, 0x6c, 0x30c, 0x0, 0x6c, 0x323, 0x0, 0x6c, 0x323, 0x304, 0x0, 0x6c, 0x327, 0x0, 0x6c, 0x32d, 0x0, 0x6c, 0x331, 0x0, 0x6d, 0x301, 0x0, 0x6d, 0x307, 0x0, 0x6d, 0x323, 0x0, 0x6e, 0x300, 0x0, 0x6e, 0x301, 0x0, 0x6e, 0x303, 0x0, 0x6e, 0x307, 0x0, 0x6e, 0x30c, 0x0, 0x6e, 0x323, 0x0, 0x6e, 0x327, 0x0, 0x6e, 0x32d, 0x0, 0x6e, 0x331, 0x0, 0x6f, 0x300, 0x0, 0x6f, 0x301, 0x0, 0x6f, 0x302, 0x0, 0x6f, 0x302, 0x300, 0x0, 0x6f, 0x302, 0x301, 0x0, 0x6f, 0x302, 0x303, 0x0, 0x6f, 0x302, 0x309, 0x0, 0x6f, 0x303, 0x0, 0x6f, 0x303, 0x301, 0x0, 0x6f, 0x303, 0x304, 0x0, 0x6f, 0x303, 0x308, 0x0, 0x6f, 0x304, 0x0, 0x6f, 0x304, 0x300, 0x0, 0x6f, 0x304, 0x301, 0x0, 0x6f, 0x306, 0x0, 0x6f, 0x307, 0x0, 0x6f, 0x307, 0x304, 0x0, 0x6f, 0x308, 0x0, 0x6f, 0x308, 0x304, 0x0, 0x6f, 0x309, 0x0, 0x6f, 0x30b, 0x0, 0x6f, 0x30c, 0x0, 0x6f, 0x30f, 0x0, 0x6f, 0x311, 0x0, 0x6f, 0x31b, 0x0, 0x6f, 0x31b, 0x300, 0x0, 0x6f, 0x31b, 0x301, 0x0, 0x6f, 0x31b, 0x303, 0x0, 0x6f, 0x31b, 0x309, 0x0, 0x6f, 0x31b, 0x323, 0x0, 0x6f, 0x323, 0x0, 0x6f, 0x323, 0x302, 0x0, 0x6f, 0x328, 0x0, 0x6f, 0x328, 0x304, 0x0, 0x70, 0x301, 0x0, 0x70, 0x307, 0x0, 0x72, 0x301, 0x0, 0x72, 0x307, 0x0, 0x72, 0x30c, 0x0, 0x72, 0x30f, 0x0, 0x72, 0x311, 0x0, 0x72, 0x323, 0x0, 0x72, 0x323, 0x304, 0x0, 0x72, 0x327, 0x0, 0x72, 0x331, 0x0, 0x73, 0x301, 0x0, 0x73, 0x301, 0x307, 0x0, 0x73, 0x302, 0x0, 0x73, 0x307, 0x0, 0x73, 0x30c, 0x0, 0x73, 0x30c, 0x307, 0x0, 0x73, 0x323, 0x0, 0x73, 0x323, 0x307, 0x0, 0x73, 0x326, 0x0, 0x73, 0x327, 0x0, 0x74, 0x307, 0x0, 0x74, 0x308, 0x0, 0x74, 0x30c, 0x0, 0x74, 0x323, 0x0, 0x74, 0x326, 0x0, 0x74, 0x327, 0x0, 0x74, 0x32d, 0x0, 0x74, 0x331, 0x0, 0x75, 0x300, 0x0, 0x75, 0x301, 0x0, 0x75, 0x302, 0x0, 0x75, 0x303, 0x0, 0x75, 0x303, 0x301, 0x0, 0x75, 0x304, 0x0, 0x75, 0x304, 0x308, 0x0, 0x75, 0x306, 0x0, 0x75, 0x308, 0x0, 0x75, 0x308, 0x300, 0x0, 0x75, 0x308, 0x301, 0x0, 0x75, 0x308, 0x304, 0x0, 0x75, 0x308, 0x30c, 0x0, 0x75, 0x309, 0x0, 0x75, 0x30a, 0x0, 0x75, 0x30b, 0x0, 0x75, 0x30c, 0x0, 0x75, 0x30f, 0x0, 0x75, 0x311, 0x0, 0x75, 0x31b, 0x0, 0x75, 0x31b, 0x300, 0x0, 0x75, 0x31b, 0x301, 0x0, 0x75, 0x31b, 0x303, 0x0, 0x75, 0x31b, 0x309, 0x0, 0x75, 0x31b, 0x323, 0x0, 0x75, 0x323, 0x0, 0x75, 0x324, 0x0, 0x75, 0x328, 0x0, 0x75, 0x32d, 0x0, 0x75, 0x330, 0x0, 0x76, 0x303, 0x0, 0x76, 0x323, 0x0, 0x77, 0x300, 0x0, 0x77, 0x301, 0x0, 0x77, 0x302, 0x0, 0x77, 0x307, 0x0, 0x77, 0x308, 0x0, 0x77, 0x30a, 0x0, 0x77, 0x323, 0x0, 0x78, 0x307, 0x0, 0x78, 0x308, 0x0, 0x79, 0x300, 0x0, 0x79, 0x301, 0x0, 0x79, 0x302, 0x0, 0x79, 0x303, 0x0, 0x79, 0x304, 0x0, 0x79, 0x307, 0x0, 0x79, 0x308, 0x0, 0x79, 0x309, 0x0, 0x79, 0x30a, 0x0, 0x79, 0x323, 0x0, 0x7a, 0x301, 0x0, 0x7a, 0x302, 0x0, 0x7a, 0x307, 0x0, 0x7a, 0x30c, 0x0, 0x7a, 0x323, 0x0, 0x7a, 0x331, 0x0, 0xa8, 0x300, 0x0, 0xa8, 0x301, 0x0, 0xa8, 0x342, 0x0, 0xb4, 0x0, 0xb7, 0x0, 0xc6, 0x301, 0x0, 0xc6, 0x304, 0x0, 0xd8, 0x301, 0x0, 0xe6, 0x301, 0x0, 0xe6, 0x304, 0x0, 0xf8, 0x301, 0x0, 0x17f, 0x307, 0x0, 0x1b7, 0x30c, 0x0, 0x292, 0x30c, 0x0, 0x2b9, 0x0, 0x300, 0x0, 0x301, 0x0, 0x308, 0x301, 0x0, 0x313, 0x0, 0x391, 0x300, 0x0, 0x391, 0x301, 0x0, 0x391, 0x304, 0x0, 0x391, 0x306, 0x0, 0x391, 0x313, 0x0, 0x391, 0x313, 0x300, 0x0, 0x391, 0x313, 0x300, 0x345, 0x0, 0x391, 0x313, 0x301, 0x0, 0x391, 0x313, 0x301, 0x345, 0x0, 0x391, 0x313, 0x342, 0x0, 0x391, 0x313, 0x342, 0x345, 0x0, 0x391, 0x313, 0x345, 0x0, 0x391, 0x314, 0x0, 0x391, 0x314, 0x300, 0x0, 0x391, 0x314, 0x300, 0x345, 0x0, 0x391, 0x314, 0x301, 0x0, 0x391, 0x314, 0x301, 0x345, 0x0, 0x391, 0x314, 0x342, 0x0, 0x391, 0x314, 0x342, 0x345, 0x0, 0x391, 0x314, 0x345, 0x0, 0x391, 0x345, 0x0, 0x395, 0x300, 0x0, 0x395, 0x301, 0x0, 0x395, 0x313, 0x0, 0x395, 0x313, 0x300, 0x0, 0x395, 0x313, 0x301, 0x0, 0x395, 0x314, 0x0, 0x395, 0x314, 0x300, 0x0, 0x395, 0x314, 0x301, 0x0, 0x397, 0x300, 0x0, 0x397, 0x301, 0x0, 0x397, 0x313, 0x0, 0x397, 0x313, 0x300, 0x0, 0x397, 0x313, 0x300, 0x345, 0x0, 0x397, 0x313, 0x301, 0x0, 0x397, 0x313, 0x301, 0x345, 0x0, 0x397, 0x313, 0x342, 0x0, 0x397, 0x313, 0x342, 0x345, 0x0, 0x397, 0x313, 0x345, 0x0, 0x397, 0x314, 0x0, 0x397, 0x314, 0x300, 0x0, 0x397, 0x314, 0x300, 0x345, 0x0, 0x397, 0x314, 0x301, 0x0, 0x397, 0x314, 0x301, 0x345, 0x0, 0x397, 0x314, 0x342, 0x0, 0x397, 0x314, 0x342, 0x345, 0x0, 0x397, 0x314, 0x345, 0x0, 0x397, 0x345, 0x0, 0x399, 0x300, 0x0, 0x399, 0x301, 0x0, 0x399, 0x304, 0x0, 0x399, 0x306, 0x0, 0x399, 0x308, 0x0, 0x399, 0x313, 0x0, 0x399, 0x313, 0x300, 0x0, 0x399, 0x313, 0x301, 0x0, 0x399, 0x313, 0x342, 0x0, 0x399, 0x314, 0x0, 0x399, 0x314, 0x300, 0x0, 0x399, 0x314, 0x301, 0x0, 0x399, 0x314, 0x342, 0x0, 0x39f, 0x300, 0x0, 0x39f, 0x301, 0x0, 0x39f, 0x313, 0x0, 0x39f, 0x313, 0x300, 0x0, 0x39f, 0x313, 0x301, 0x0, 0x39f, 0x314, 0x0, 0x39f, 0x314, 0x300, 0x0, 0x39f, 0x314, 0x301, 0x0, 0x3a1, 0x314, 0x0, 0x3a5, 0x300, 0x0, 0x3a5, 0x301, 0x0, 0x3a5, 0x304, 0x0, 0x3a5, 0x306, 0x0, 0x3a5, 0x308, 0x0, 0x3a5, 0x314, 0x0, 0x3a5, 0x314, 0x300, 0x0, 0x3a5, 0x314, 0x301, 0x0, 0x3a5, 0x314, 0x342, 0x0, 0x3a9, 0x0, 0x3a9, 0x300, 0x0, 0x3a9, 0x301, 0x0, 0x3a9, 0x313, 0x0, 0x3a9, 0x313, 0x300, 0x0, 0x3a9, 0x313, 0x300, 0x345, 0x0, 0x3a9, 0x313, 0x301, 0x0, 0x3a9, 0x313, 0x301, 0x345, 0x0, 0x3a9, 0x313, 0x342, 0x0, 0x3a9, 0x313, 0x342, 0x345, 0x0, 0x3a9, 0x313, 0x345, 0x0, 0x3a9, 0x314, 0x0, 0x3a9, 0x314, 0x300, 0x0, 0x3a9, 0x314, 0x300, 0x345, 0x0, 0x3a9, 0x314, 0x301, 0x0, 0x3a9, 0x314, 0x301, 0x345, 0x0, 0x3a9, 0x314, 0x342, 0x0, 0x3a9, 0x314, 0x342, 0x345, 0x0, 0x3a9, 0x314, 0x345, 0x0, 0x3a9, 0x345, 0x0, 0x3b1, 0x300, 0x0, 0x3b1, 0x300, 0x345, 0x0, 0x3b1, 0x301, 0x0, 0x3b1, 0x301, 0x345, 0x0, 0x3b1, 0x304, 0x0, 0x3b1, 0x306, 0x0, 0x3b1, 0x313, 0x0, 0x3b1, 0x313, 0x300, 0x0, 0x3b1, 0x313, 0x300, 0x345, 0x0, 0x3b1, 0x313, 0x301, 0x0, 0x3b1, 0x313, 0x301, 0x345, 0x0, 0x3b1, 0x313, 0x342, 0x0, 0x3b1, 0x313, 0x342, 0x345, 0x0, 0x3b1, 0x313, 0x345, 0x0, 0x3b1, 0x314, 0x0, 0x3b1, 0x314, 0x300, 0x0, 0x3b1, 0x314, 0x300, 0x345, 0x0, 0x3b1, 0x314, 0x301, 0x0, 0x3b1, 0x314, 0x301, 0x345, 0x0, 0x3b1, 0x314, 0x342, 0x0, 0x3b1, 0x314, 0x342, 0x345, 0x0, 0x3b1, 0x314, 0x345, 0x0, 0x3b1, 0x342, 0x0, 0x3b1, 0x342, 0x345, 0x0, 0x3b1, 0x345, 0x0, 0x3b5, 0x300, 0x0, 0x3b5, 0x301, 0x0, 0x3b5, 0x313, 0x0, 0x3b5, 0x313, 0x300, 0x0, 0x3b5, 0x313, 0x301, 0x0, 0x3b5, 0x314, 0x0, 0x3b5, 0x314, 0x300, 0x0, 0x3b5, 0x314, 0x301, 0x0, 0x3b7, 0x300, 0x0, 0x3b7, 0x300, 0x345, 0x0, 0x3b7, 0x301, 0x0, 0x3b7, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x0, 0x3b7, 0x313, 0x300, 0x0, 0x3b7, 0x313, 0x300, 0x345, 0x0, 0x3b7, 0x313, 0x301, 0x0, 0x3b7, 0x313, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x342, 0x0, 0x3b7, 0x313, 0x342, 0x345, 0x0, 0x3b7, 0x313, 0x345, 0x0, 0x3b7, 0x314, 0x0, 0x3b7, 0x314, 0x300, 0x0, 0x3b7, 0x314, 0x300, 0x345, 0x0, 0x3b7, 0x314, 0x301, 0x0, 0x3b7, 0x314, 0x301, 0x345, 0x0, 0x3b7, 0x314, 0x342, 0x0, 0x3b7, 0x314, 0x342, 0x345, 0x0, 0x3b7, 0x314, 0x345, 0x0, 0x3b7, 0x342, 0x0, 0x3b7, 0x342, 0x345, 0x0, 0x3b7, 0x345, 0x0, 0x3b9, 0x0, 0x3b9, 0x300, 0x0, 0x3b9, 0x301, 0x0, 0x3b9, 0x304, 0x0, 0x3b9, 0x306, 0x0, 0x3b9, 0x308, 0x0, 0x3b9, 0x308, 0x300, 0x0, 0x3b9, 0x308, 0x301, 0x0, 0x3b9, 0x308, 0x342, 0x0, 0x3b9, 0x313, 0x0, 0x3b9, 0x313, 0x300, 0x0, 0x3b9, 0x313, 0x301, 0x0, 0x3b9, 0x313, 0x342, 0x0, 0x3b9, 0x314, 0x0, 0x3b9, 0x314, 0x300, 0x0, 0x3b9, 0x314, 0x301, 0x0, 0x3b9, 0x314, 0x342, 0x0, 0x3b9, 0x342, 0x0, 0x3bf, 0x300, 0x0, 0x3bf, 0x301, 0x0, 0x3bf, 0x313, 0x0, 0x3bf, 0x313, 0x300, 0x0, 0x3bf, 0x313, 0x301, 0x0, 0x3bf, 0x314, 0x0, 0x3bf, 0x314, 0x300, 0x0, 0x3bf, 0x314, 0x301, 0x0, 0x3c1, 0x313, 0x0, 0x3c1, 0x314, 0x0, 0x3c5, 0x300, 0x0, 0x3c5, 0x301, 0x0, 0x3c5, 0x304, 0x0, 0x3c5, 0x306, 0x0, 0x3c5, 0x308, 0x0, 0x3c5, 0x308, 0x300, 0x0, 0x3c5, 0x308, 0x301, 0x0, 0x3c5, 0x308, 0x342, 0x0, 0x3c5, 0x313, 0x0, 0x3c5, 0x313, 0x300, 0x0, 0x3c5, 0x313, 0x301, 0x0, 0x3c5, 0x313, 0x342, 0x0, 0x3c5, 0x314, 0x0, 0x3c5, 0x314, 0x300, 0x0, 0x3c5, 0x314, 0x301, 0x0, 0x3c5, 0x314, 0x342, 0x0, 0x3c5, 0x342, 0x0, 0x3c9, 0x300, 0x0, 0x3c9, 0x300, 0x345, 0x0, 0x3c9, 0x301, 0x0, 0x3c9, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x0, 0x3c9, 0x313, 0x300, 0x0, 0x3c9, 0x313, 0x300, 0x345, 0x0, 0x3c9, 0x313, 0x301, 0x0, 0x3c9, 0x313, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x342, 0x0, 0x3c9, 0x313, 0x342, 0x345, 0x0, 0x3c9, 0x313, 0x345, 0x0, 0x3c9, 0x314, 0x0, 0x3c9, 0x314, 0x300, 0x0, 0x3c9, 0x314, 0x300, 0x345, 0x0, 0x3c9, 0x314, 0x301, 0x0, 0x3c9, 0x314, 0x301, 0x345, 0x0, 0x3c9, 0x314, 0x342, 0x0, 0x3c9, 0x314, 0x342, 0x345, 0x0, 0x3c9, 0x314, 0x345, 0x0, 0x3c9, 0x342, 0x0, 0x3c9, 0x342, 0x345, 0x0, 0x3c9, 0x345, 0x0, 0x3d2, 0x301, 0x0, 0x3d2, 0x308, 0x0, 0x406, 0x308, 0x0, 0x410, 0x306, 0x0, 0x410, 0x308, 0x0, 0x413, 0x301, 0x0, 0x415, 0x300, 0x0, 0x415, 0x306, 0x0, 0x415, 0x308, 0x0, 0x416, 0x306, 0x0, 0x416, 0x308, 0x0, 0x417, 0x308, 0x0, 0x418, 0x300, 0x0, 0x418, 0x304, 0x0, 0x418, 0x306, 0x0, 0x418, 0x308, 0x0, 0x41a, 0x301, 0x0, 0x41e, 0x308, 0x0, 0x423, 0x304, 0x0, 0x423, 0x306, 0x0, 0x423, 0x308, 0x0, 0x423, 0x30b, 0x0, 0x427, 0x308, 0x0, 0x42b, 0x308, 0x0, 0x42d, 0x308, 0x0, 0x430, 0x306, 0x0, 0x430, 0x308, 0x0, 0x433, 0x301, 0x0, 0x435, 0x300, 0x0, 0x435, 0x306, 0x0, 0x435, 0x308, 0x0, 0x436, 0x306, 0x0, 0x436, 0x308, 0x0, 0x437, 0x308, 0x0, 0x438, 0x300, 0x0, 0x438, 0x304, 0x0, 0x438, 0x306, 0x0, 0x438, 0x308, 0x0, 0x43a, 0x301, 0x0, 0x43e, 0x308, 0x0, 0x443, 0x304, 0x0, 0x443, 0x306, 0x0, 0x443, 0x308, 0x0, 0x443, 0x30b, 0x0, 0x447, 0x308, 0x0, 0x44b, 0x308, 0x0, 0x44d, 0x308, 0x0, 0x456, 0x308, 0x0, 0x474, 0x30f, 0x0, 0x475, 0x30f, 0x0, 0x4d8, 0x308, 0x0, 0x4d9, 0x308, 0x0, 0x4e8, 0x308, 0x0, 0x4e9, 0x308, 0x0, 0x5d0, 0x5b7, 0x0, 0x5d0, 0x5b8, 0x0, 0x5d0, 0x5bc, 0x0, 0x5d1, 0x5bc, 0x0, 0x5d1, 0x5bf, 0x0, 0x5d2, 0x5bc, 0x0, 0x5d3, 0x5bc, 0x0, 0x5d4, 0x5bc, 0x0, 0x5d5, 0x5b9, 0x0, 0x5d5, 0x5bc, 0x0, 0x5d6, 0x5bc, 0x0, 0x5d8, 0x5bc, 0x0, 0x5d9, 0x5b4, 0x0, 0x5d9, 0x5bc, 0x0, 0x5da, 0x5bc, 0x0, 0x5db, 0x5bc, 0x0, 0x5db, 0x5bf, 0x0, 0x5dc, 0x5bc, 0x0, 0x5de, 0x5bc, 0x0, 0x5e0, 0x5bc, 0x0, 0x5e1, 0x5bc, 0x0, 0x5e3, 0x5bc, 0x0, 0x5e4, 0x5bc, 0x0, 0x5e4, 0x5bf, 0x0, 0x5e6, 0x5bc, 0x0, 0x5e7, 0x5bc, 0x0, 0x5e8, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x5c1, 0x0, 0x5e9, 0x5bc, 0x5c2, 0x0, 0x5e9, 0x5c1, 0x0, 0x5e9, 0x5c2, 0x0, 0x5ea, 0x5bc, 0x0, 0x5f2, 0x5b7, 0x0, 0x627, 0x653, 0x0, 0x627, 0x654, 0x0, 0x627, 0x655, 0x0, 0x648, 0x654, 0x0, 0x64a, 0x654, 0x0, 0x6c1, 0x654, 0x0, 0x6d2, 0x654, 0x0, 0x6d5, 0x654, 0x0, 0x915, 0x93c, 0x0, 0x916, 0x93c, 0x0, 0x917, 0x93c, 0x0, 0x91c, 0x93c, 0x0, 0x921, 0x93c, 0x0, 0x922, 0x93c, 0x0, 0x928, 0x93c, 0x0, 0x92b, 0x93c, 0x0, 0x92f, 0x93c, 0x0, 0x930, 0x93c, 0x0, 0x933, 0x93c, 0x0, 0x9a1, 0x9bc, 0x0, 0x9a2, 0x9bc, 0x0, 0x9af, 0x9bc, 0x0, 0x9c7, 0x9be, 0x0, 0x9c7, 0x9d7, 0x0, 0xa16, 0xa3c, 0x0, 0xa17, 0xa3c, 0x0, 0xa1c, 0xa3c, 0x0, 0xa2b, 0xa3c, 0x0, 0xa32, 0xa3c, 0x0, 0xa38, 0xa3c, 0x0, 0xb21, 0xb3c, 0x0, 0xb22, 0xb3c, 0x0, 0xb47, 0xb3e, 0x0, 0xb47, 0xb56, 0x0, 0xb47, 0xb57, 0x0, 0xb92, 0xbd7, 0x0, 0xbc6, 0xbbe, 0x0, 0xbc6, 0xbd7, 0x0, 0xbc7, 0xbbe, 0x0, 0xc46, 0xc56, 0x0, 0xcbf, 0xcd5, 0x0, 0xcc6, 0xcc2, 0x0, 0xcc6, 0xcc2, 0xcd5, 0x0, 0xcc6, 0xcd5, 0x0, 0xcc6, 0xcd6, 0x0, 0xd46, 0xd3e, 0x0, 0xd46, 0xd57, 0x0, 0xd47, 0xd3e, 0x0, 0xdd9, 0xdca, 0x0, 0xdd9, 0xdcf, 0x0, 0xdd9, 0xdcf, 0xdca, 0x0, 0xdd9, 0xddf, 0x0, 0xf40, 0xfb5, 0x0, 0xf42, 0xfb7, 0x0, 0xf4c, 0xfb7, 0x0, 0xf51, 0xfb7, 0x0, 0xf56, 0xfb7, 0x0, 0xf5b, 0xfb7, 0x0, 0xf71, 0xf72, 0x0, 0xf71, 0xf74, 0x0, 0xf71, 0xf80, 0x0, 0xf90, 0xfb5, 0x0, 0xf92, 0xfb7, 0x0, 0xf9c, 0xfb7, 0x0, 0xfa1, 0xfb7, 0x0, 0xfa6, 0xfb7, 0x0, 0xfab, 0xfb7, 0x0, 0xfb2, 0xf80, 0x0, 0xfb3, 0xf80, 0x0, 0x1025, 0x102e, 0x0, 0x1b05, 0x1b35, 0x0, 0x1b07, 0x1b35, 0x0, 0x1b09, 0x1b35, 0x0, 0x1b0b, 0x1b35, 0x0, 0x1b0d, 0x1b35, 0x0, 0x1b11, 0x1b35, 0x0, 0x1b3a, 0x1b35, 0x0, 0x1b3c, 0x1b35, 0x0, 0x1b3e, 0x1b35, 0x0, 0x1b3f, 0x1b35, 0x0, 0x1b42, 0x1b35, 0x0, 0x1fbf, 0x300, 0x0, 0x1fbf, 0x301, 0x0, 0x1fbf, 0x342, 0x0, 0x1ffe, 0x300, 0x0, 0x1ffe, 0x301, 0x0, 0x1ffe, 0x342, 0x0, 0x2002, 0x0, 0x2003, 0x0, 0x2190, 0x338, 0x0, 0x2192, 0x338, 0x0, 0x2194, 0x338, 0x0, 0x21d0, 0x338, 0x0, 0x21d2, 0x338, 0x0, 0x21d4, 0x338, 0x0, 0x2203, 0x338, 0x0, 0x2208, 0x338, 0x0, 0x220b, 0x338, 0x0, 0x2223, 0x338, 0x0, 0x2225, 0x338, 0x0, 0x223c, 0x338, 0x0, 0x2243, 0x338, 0x0, 0x2245, 0x338, 0x0, 0x2248, 0x338, 0x0, 0x224d, 0x338, 0x0, 0x2261, 0x338, 0x0, 0x2264, 0x338, 0x0, 0x2265, 0x338, 0x0, 0x2272, 0x338, 0x0, 0x2273, 0x338, 0x0, 0x2276, 0x338, 0x0, 0x2277, 0x338, 0x0, 0x227a, 0x338, 0x0, 0x227b, 0x338, 0x0, 0x227c, 0x338, 0x0, 0x227d, 0x338, 0x0, 0x2282, 0x338, 0x0, 0x2283, 0x338, 0x0, 0x2286, 0x338, 0x0, 0x2287, 0x338, 0x0, 0x2291, 0x338, 0x0, 0x2292, 0x338, 0x0, 0x22a2, 0x338, 0x0, 0x22a8, 0x338, 0x0, 0x22a9, 0x338, 0x0, 0x22ab, 0x338, 0x0, 0x22b2, 0x338, 0x0, 0x22b3, 0x338, 0x0, 0x22b4, 0x338, 0x0, 0x22b5, 0x338, 0x0, 0x2add, 0x338, 0x0, 0x3008, 0x0, 0x3009, 0x0, 0x3046, 0x3099, 0x0, 0x304b, 0x3099, 0x0, 0x304d, 0x3099, 0x0, 0x304f, 0x3099, 0x0, 0x3051, 0x3099, 0x0, 0x3053, 0x3099, 0x0, 0x3055, 0x3099, 0x0, 0x3057, 0x3099, 0x0, 0x3059, 0x3099, 0x0, 0x305b, 0x3099, 0x0, 0x305d, 0x3099, 0x0, 0x305f, 0x3099, 0x0, 0x3061, 0x3099, 0x0, 0x3064, 0x3099, 0x0, 0x3066, 0x3099, 0x0, 0x3068, 0x3099, 0x0, 0x306f, 0x3099, 0x0, 0x306f, 0x309a, 0x0, 0x3072, 0x3099, 0x0, 0x3072, 0x309a, 0x0, 0x3075, 0x3099, 0x0, 0x3075, 0x309a, 0x0, 0x3078, 0x3099, 0x0, 0x3078, 0x309a, 0x0, 0x307b, 0x3099, 0x0, 0x307b, 0x309a, 0x0, 0x309d, 0x3099, 0x0, 0x30a6, 0x3099, 0x0, 0x30ab, 0x3099, 0x0, 0x30ad, 0x3099, 0x0, 0x30af, 0x3099, 0x0, 0x30b1, 0x3099, 0x0, 0x30b3, 0x3099, 0x0, 0x30b5, 0x3099, 0x0, 0x30b7, 0x3099, 0x0, 0x30b9, 0x3099, 0x0, 0x30bb, 0x3099, 0x0, 0x30bd, 0x3099, 0x0, 0x30bf, 0x3099, 0x0, 0x30c1, 0x3099, 0x0, 0x30c4, 0x3099, 0x0, 0x30c6, 0x3099, 0x0, 0x30c8, 0x3099, 0x0, 0x30cf, 0x3099, 0x0, 0x30cf, 0x309a, 0x0, 0x30d2, 0x3099, 0x0, 0x30d2, 0x309a, 0x0, 0x30d5, 0x3099, 0x0, 0x30d5, 0x309a, 0x0, 0x30d8, 0x3099, 0x0, 0x30d8, 0x309a, 0x0, 0x30db, 0x3099, 0x0, 0x30db, 0x309a, 0x0, 0x30ef, 0x3099, 0x0, 0x30f0, 0x3099, 0x0, 0x30f1, 0x3099, 0x0, 0x30f2, 0x3099, 0x0, 0x30fd, 0x3099, 0x0, 0x349e, 0x0, 0x34b9, 0x0, 0x34bb, 0x0, 0x34df, 0x0, 0x3515, 0x0, 0x36ee, 0x0, 0x36fc, 0x0, 0x3781, 0x0, 0x382f, 0x0, 0x3862, 0x0, 0x387c, 0x0, 0x38c7, 0x0, 0x38e3, 0x0, 0x391c, 0x0, 0x393a, 0x0, 0x3a2e, 0x0, 0x3a6c, 0x0, 0x3ae4, 0x0, 0x3b08, 0x0, 0x3b19, 0x0, 0x3b49, 0x0, 0x3b9d, 0x0, 0x3c18, 0x0, 0x3c4e, 0x0, 0x3d33, 0x0, 0x3d96, 0x0, 0x3eac, 0x0, 0x3eb8, 0x0, 0x3f1b, 0x0, 0x3ffc, 0x0, 0x4008, 0x0, 0x4018, 0x0, 0x4039, 0x0, 0x4046, 0x0, 0x4096, 0x0, 0x40e3, 0x0, 0x412f, 0x0, 0x4202, 0x0, 0x4227, 0x0, 0x42a0, 0x0, 0x4301, 0x0, 0x4334, 0x0, 0x4359, 0x0, 0x43d5, 0x0, 0x43d9, 0x0, 0x440b, 0x0, 0x446b, 0x0, 0x452b, 0x0, 0x455d, 0x0, 0x4561, 0x0, 0x456b, 0x0, 0x45d7, 0x0, 0x45f9, 0x0, 0x4635, 0x0, 0x46be, 0x0, 0x46c7, 0x0, 0x4995, 0x0, 0x49e6, 0x0, 0x4a6e, 0x0, 0x4a76, 0x0, 0x4ab2, 0x0, 0x4b33, 0x0, 0x4bce, 0x0, 0x4cce, 0x0, 0x4ced, 0x0, 0x4cf8, 0x0, 0x4d56, 0x0, 0x4e0d, 0x0, 0x4e26, 0x0, 0x4e32, 0x0, 0x4e38, 0x0, 0x4e39, 0x0, 0x4e3d, 0x0, 0x4e41, 0x0, 0x4e82, 0x0, 0x4e86, 0x0, 0x4eae, 0x0, 0x4ec0, 0x0, 0x4ecc, 0x0, 0x4ee4, 0x0, 0x4f60, 0x0, 0x4f80, 0x0, 0x4f86, 0x0, 0x4f8b, 0x0, 0x4fae, 0x0, 0x4fbb, 0x0, 0x4fbf, 0x0, 0x5002, 0x0, 0x502b, 0x0, 0x507a, 0x0, 0x5099, 0x0, 0x50cf, 0x0, 0x50da, 0x0, 0x50e7, 0x0, 0x5140, 0x0, 0x5145, 0x0, 0x514d, 0x0, 0x5154, 0x0, 0x5164, 0x0, 0x5167, 0x0, 0x5168, 0x0, 0x5169, 0x0, 0x516d, 0x0, 0x5177, 0x0, 0x5180, 0x0, 0x518d, 0x0, 0x5192, 0x0, 0x5195, 0x0, 0x5197, 0x0, 0x51a4, 0x0, 0x51ac, 0x0, 0x51b5, 0x0, 0x51b7, 0x0, 0x51c9, 0x0, 0x51cc, 0x0, 0x51dc, 0x0, 0x51de, 0x0, 0x51f5, 0x0, 0x5203, 0x0, 0x5207, 0x0, 0x5217, 0x0, 0x5229, 0x0, 0x523a, 0x0, 0x523b, 0x0, 0x5246, 0x0, 0x5272, 0x0, 0x5277, 0x0, 0x5289, 0x0, 0x529b, 0x0, 0x52a3, 0x0, 0x52b3, 0x0, 0x52c7, 0x0, 0x52c9, 0x0, 0x52d2, 0x0, 0x52de, 0x0, 0x52e4, 0x0, 0x52f5, 0x0, 0x52fa, 0x0, 0x5305, 0x0, 0x5306, 0x0, 0x5317, 0x0, 0x533f, 0x0, 0x5349, 0x0, 0x5351, 0x0, 0x535a, 0x0, 0x5373, 0x0, 0x5375, 0x0, 0x537d, 0x0, 0x537f, 0x0, 0x53c3, 0x0, 0x53ca, 0x0, 0x53df, 0x0, 0x53e5, 0x0, 0x53eb, 0x0, 0x53f1, 0x0, 0x5406, 0x0, 0x540f, 0x0, 0x541d, 0x0, 0x5438, 0x0, 0x5442, 0x0, 0x5448, 0x0, 0x5468, 0x0, 0x549e, 0x0, 0x54a2, 0x0, 0x54bd, 0x0, 0x54f6, 0x0, 0x5510, 0x0, 0x5553, 0x0, 0x5555, 0x0, 0x5563, 0x0, 0x5584, 0x0, 0x5587, 0x0, 0x5599, 0x0, 0x559d, 0x0, 0x55ab, 0x0, 0x55b3, 0x0, 0x55c0, 0x0, 0x55c2, 0x0, 0x55e2, 0x0, 0x5606, 0x0, 0x5651, 0x0, 0x5668, 0x0, 0x5674, 0x0, 0x56f9, 0x0, 0x5716, 0x0, 0x5717, 0x0, 0x578b, 0x0, 0x57ce, 0x0, 0x57f4, 0x0, 0x580d, 0x0, 0x5831, 0x0, 0x5832, 0x0, 0x5840, 0x0, 0x585a, 0x0, 0x585e, 0x0, 0x58a8, 0x0, 0x58ac, 0x0, 0x58b3, 0x0, 0x58d8, 0x0, 0x58df, 0x0, 0x58ee, 0x0, 0x58f2, 0x0, 0x58f7, 0x0, 0x5906, 0x0, 0x591a, 0x0, 0x5922, 0x0, 0x5944, 0x0, 0x5948, 0x0, 0x5951, 0x0, 0x5954, 0x0, 0x5962, 0x0, 0x5973, 0x0, 0x59d8, 0x0, 0x59ec, 0x0, 0x5a1b, 0x0, 0x5a27, 0x0, 0x5a62, 0x0, 0x5a66, 0x0, 0x5ab5, 0x0, 0x5b08, 0x0, 0x5b28, 0x0, 0x5b3e, 0x0, 0x5b85, 0x0, 0x5bc3, 0x0, 0x5bd8, 0x0, 0x5be7, 0x0, 0x5bee, 0x0, 0x5bf3, 0x0, 0x5bff, 0x0, 0x5c06, 0x0, 0x5c22, 0x0, 0x5c3f, 0x0, 0x5c60, 0x0, 0x5c62, 0x0, 0x5c64, 0x0, 0x5c65, 0x0, 0x5c6e, 0x0, 0x5c8d, 0x0, 0x5cc0, 0x0, 0x5d19, 0x0, 0x5d43, 0x0, 0x5d50, 0x0, 0x5d6b, 0x0, 0x5d6e, 0x0, 0x5d7c, 0x0, 0x5db2, 0x0, 0x5dba, 0x0, 0x5de1, 0x0, 0x5de2, 0x0, 0x5dfd, 0x0, 0x5e28, 0x0, 0x5e3d, 0x0, 0x5e69, 0x0, 0x5e74, 0x0, 0x5ea6, 0x0, 0x5eb0, 0x0, 0x5eb3, 0x0, 0x5eb6, 0x0, 0x5ec9, 0x0, 0x5eca, 0x0, 0x5ed2, 0x0, 0x5ed3, 0x0, 0x5ed9, 0x0, 0x5eec, 0x0, 0x5efe, 0x0, 0x5f04, 0x0, 0x5f22, 0x0, 0x5f53, 0x0, 0x5f62, 0x0, 0x5f69, 0x0, 0x5f6b, 0x0, 0x5f8b, 0x0, 0x5f9a, 0x0, 0x5fa9, 0x0, 0x5fad, 0x0, 0x5fcd, 0x0, 0x5fd7, 0x0, 0x5ff5, 0x0, 0x5ff9, 0x0, 0x6012, 0x0, 0x601c, 0x0, 0x6075, 0x0, 0x6081, 0x0, 0x6094, 0x0, 0x60c7, 0x0, 0x60d8, 0x0, 0x60e1, 0x0, 0x6108, 0x0, 0x6144, 0x0, 0x6148, 0x0, 0x614c, 0x0, 0x614e, 0x0, 0x6160, 0x0, 0x6168, 0x0, 0x617a, 0x0, 0x618e, 0x0, 0x6190, 0x0, 0x61a4, 0x0, 0x61af, 0x0, 0x61b2, 0x0, 0x61de, 0x0, 0x61f2, 0x0, 0x61f6, 0x0, 0x6200, 0x0, 0x6210, 0x0, 0x621b, 0x0, 0x622e, 0x0, 0x6234, 0x0, 0x625d, 0x0, 0x62b1, 0x0, 0x62c9, 0x0, 0x62cf, 0x0, 0x62d3, 0x0, 0x62d4, 0x0, 0x62fc, 0x0, 0x62fe, 0x0, 0x633d, 0x0, 0x6350, 0x0, 0x6368, 0x0, 0x637b, 0x0, 0x6383, 0x0, 0x63a0, 0x0, 0x63a9, 0x0, 0x63c4, 0x0, 0x63c5, 0x0, 0x63e4, 0x0, 0x641c, 0x0, 0x6422, 0x0, 0x6452, 0x0, 0x6469, 0x0, 0x6477, 0x0, 0x647e, 0x0, 0x649a, 0x0, 0x649d, 0x0, 0x64c4, 0x0, 0x654f, 0x0, 0x6556, 0x0, 0x656c, 0x0, 0x6578, 0x0, 0x6599, 0x0, 0x65c5, 0x0, 0x65e2, 0x0, 0x65e3, 0x0, 0x6613, 0x0, 0x6649, 0x0, 0x6674, 0x0, 0x6688, 0x0, 0x6691, 0x0, 0x669c, 0x0, 0x66b4, 0x0, 0x66c6, 0x0, 0x66f4, 0x0, 0x66f8, 0x0, 0x6700, 0x0, 0x6717, 0x0, 0x671b, 0x0, 0x6721, 0x0, 0x674e, 0x0, 0x6753, 0x0, 0x6756, 0x0, 0x675e, 0x0, 0x677b, 0x0, 0x6785, 0x0, 0x6797, 0x0, 0x67f3, 0x0, 0x67fa, 0x0, 0x6817, 0x0, 0x681f, 0x0, 0x6852, 0x0, 0x6881, 0x0, 0x6885, 0x0, 0x688e, 0x0, 0x68a8, 0x0, 0x6914, 0x0, 0x6942, 0x0, 0x69a3, 0x0, 0x69ea, 0x0, 0x6a02, 0x0, 0x6a13, 0x0, 0x6aa8, 0x0, 0x6ad3, 0x0, 0x6adb, 0x0, 0x6b04, 0x0, 0x6b21, 0x0, 0x6b54, 0x0, 0x6b72, 0x0, 0x6b77, 0x0, 0x6b79, 0x0, 0x6b9f, 0x0, 0x6bae, 0x0, 0x6bba, 0x0, 0x6bbb, 0x0, 0x6c4e, 0x0, 0x6c67, 0x0, 0x6c88, 0x0, 0x6cbf, 0x0, 0x6ccc, 0x0, 0x6ccd, 0x0, 0x6ce5, 0x0, 0x6d16, 0x0, 0x6d1b, 0x0, 0x6d1e, 0x0, 0x6d34, 0x0, 0x6d3e, 0x0, 0x6d41, 0x0, 0x6d69, 0x0, 0x6d6a, 0x0, 0x6d77, 0x0, 0x6d78, 0x0, 0x6d85, 0x0, 0x6dcb, 0x0, 0x6dda, 0x0, 0x6dea, 0x0, 0x6df9, 0x0, 0x6e1a, 0x0, 0x6e2f, 0x0, 0x6e6e, 0x0, 0x6e9c, 0x0, 0x6eba, 0x0, 0x6ec7, 0x0, 0x6ecb, 0x0, 0x6ed1, 0x0, 0x6edb, 0x0, 0x6f0f, 0x0, 0x6f22, 0x0, 0x6f23, 0x0, 0x6f6e, 0x0, 0x6fc6, 0x0, 0x6feb, 0x0, 0x6ffe, 0x0, 0x701b, 0x0, 0x701e, 0x0, 0x7039, 0x0, 0x704a, 0x0, 0x7070, 0x0, 0x7077, 0x0, 0x707d, 0x0, 0x7099, 0x0, 0x70ad, 0x0, 0x70c8, 0x0, 0x70d9, 0x0, 0x7145, 0x0, 0x7149, 0x0, 0x716e, 0x0, 0x719c, 0x0, 0x71ce, 0x0, 0x71d0, 0x0, 0x7210, 0x0, 0x721b, 0x0, 0x7228, 0x0, 0x722b, 0x0, 0x7235, 0x0, 0x7250, 0x0, 0x7262, 0x0, 0x7280, 0x0, 0x7295, 0x0, 0x72af, 0x0, 0x72c0, 0x0, 0x72fc, 0x0, 0x732a, 0x0, 0x7375, 0x0, 0x737a, 0x0, 0x7387, 0x0, 0x738b, 0x0, 0x73a5, 0x0, 0x73b2, 0x0, 0x73de, 0x0, 0x7406, 0x0, 0x7409, 0x0, 0x7422, 0x0, 0x7447, 0x0, 0x745c, 0x0, 0x7469, 0x0, 0x7471, 0x0, 0x7485, 0x0, 0x7489, 0x0, 0x7498, 0x0, 0x74ca, 0x0, 0x7506, 0x0, 0x7524, 0x0, 0x753b, 0x0, 0x753e, 0x0, 0x7559, 0x0, 0x7565, 0x0, 0x7570, 0x0, 0x75e2, 0x0, 0x7610, 0x0, 0x761d, 0x0, 0x761f, 0x0, 0x7642, 0x0, 0x7669, 0x0, 0x76ca, 0x0, 0x76db, 0x0, 0x76e7, 0x0, 0x76f4, 0x0, 0x7701, 0x0, 0x771e, 0x0, 0x771f, 0x0, 0x7740, 0x0, 0x774a, 0x0, 0x778b, 0x0, 0x77a7, 0x0, 0x784e, 0x0, 0x786b, 0x0, 0x788c, 0x0, 0x7891, 0x0, 0x78ca, 0x0, 0x78cc, 0x0, 0x78fb, 0x0, 0x792a, 0x0, 0x793c, 0x0, 0x793e, 0x0, 0x7948, 0x0, 0x7949, 0x0, 0x7950, 0x0, 0x7956, 0x0, 0x795d, 0x0, 0x795e, 0x0, 0x7965, 0x0, 0x797f, 0x0, 0x798d, 0x0, 0x798e, 0x0, 0x798f, 0x0, 0x79ae, 0x0, 0x79ca, 0x0, 0x79eb, 0x0, 0x7a1c, 0x0, 0x7a40, 0x0, 0x7a4a, 0x0, 0x7a4f, 0x0, 0x7a81, 0x0, 0x7ab1, 0x0, 0x7acb, 0x0, 0x7aee, 0x0, 0x7b20, 0x0, 0x7bc0, 0x0, 0x7bc6, 0x0, 0x7bc9, 0x0, 0x7c3e, 0x0, 0x7c60, 0x0, 0x7c7b, 0x0, 0x7c92, 0x0, 0x7cbe, 0x0, 0x7cd2, 0x0, 0x7cd6, 0x0, 0x7ce3, 0x0, 0x7ce7, 0x0, 0x7ce8, 0x0, 0x7d00, 0x0, 0x7d10, 0x0, 0x7d22, 0x0, 0x7d2f, 0x0, 0x7d5b, 0x0, 0x7d63, 0x0, 0x7da0, 0x0, 0x7dbe, 0x0, 0x7dc7, 0x0, 0x7df4, 0x0, 0x7e02, 0x0, 0x7e09, 0x0, 0x7e37, 0x0, 0x7e41, 0x0, 0x7e45, 0x0, 0x7f3e, 0x0, 0x7f72, 0x0, 0x7f79, 0x0, 0x7f7a, 0x0, 0x7f85, 0x0, 0x7f95, 0x0, 0x7f9a, 0x0, 0x7fbd, 0x0, 0x7ffa, 0x0, 0x8001, 0x0, 0x8005, 0x0, 0x8046, 0x0, 0x8060, 0x0, 0x806f, 0x0, 0x8070, 0x0, 0x807e, 0x0, 0x808b, 0x0, 0x80ad, 0x0, 0x80b2, 0x0, 0x8103, 0x0, 0x813e, 0x0, 0x81d8, 0x0, 0x81e8, 0x0, 0x81ed, 0x0, 0x8201, 0x0, 0x8204, 0x0, 0x8218, 0x0, 0x826f, 0x0, 0x8279, 0x0, 0x828b, 0x0, 0x8291, 0x0, 0x829d, 0x0, 0x82b1, 0x0, 0x82b3, 0x0, 0x82bd, 0x0, 0x82e5, 0x0, 0x82e6, 0x0, 0x831d, 0x0, 0x8323, 0x0, 0x8336, 0x0, 0x8352, 0x0, 0x8353, 0x0, 0x8363, 0x0, 0x83ad, 0x0, 0x83bd, 0x0, 0x83c9, 0x0, 0x83ca, 0x0, 0x83cc, 0x0, 0x83dc, 0x0, 0x83e7, 0x0, 0x83ef, 0x0, 0x83f1, 0x0, 0x843d, 0x0, 0x8449, 0x0, 0x8457, 0x0, 0x84ee, 0x0, 0x84f1, 0x0, 0x84f3, 0x0, 0x84fc, 0x0, 0x8516, 0x0, 0x8564, 0x0, 0x85cd, 0x0, 0x85fa, 0x0, 0x8606, 0x0, 0x8612, 0x0, 0x862d, 0x0, 0x863f, 0x0, 0x8650, 0x0, 0x865c, 0x0, 0x8667, 0x0, 0x8669, 0x0, 0x8688, 0x0, 0x86a9, 0x0, 0x86e2, 0x0, 0x870e, 0x0, 0x8728, 0x0, 0x876b, 0x0, 0x8779, 0x0, 0x8786, 0x0, 0x87ba, 0x0, 0x87e1, 0x0, 0x8801, 0x0, 0x881f, 0x0, 0x884c, 0x0, 0x8860, 0x0, 0x8863, 0x0, 0x88c2, 0x0, 0x88cf, 0x0, 0x88d7, 0x0, 0x88de, 0x0, 0x88e1, 0x0, 0x88f8, 0x0, 0x88fa, 0x0, 0x8910, 0x0, 0x8941, 0x0, 0x8964, 0x0, 0x8986, 0x0, 0x898b, 0x0, 0x8996, 0x0, 0x8aa0, 0x0, 0x8aaa, 0x0, 0x8abf, 0x0, 0x8acb, 0x0, 0x8ad2, 0x0, 0x8ad6, 0x0, 0x8aed, 0x0, 0x8af8, 0x0, 0x8afe, 0x0, 0x8b01, 0x0, 0x8b39, 0x0, 0x8b58, 0x0, 0x8b80, 0x0, 0x8b8a, 0x0, 0x8c48, 0x0, 0x8c55, 0x0, 0x8cab, 0x0, 0x8cc1, 0x0, 0x8cc2, 0x0, 0x8cc8, 0x0, 0x8cd3, 0x0, 0x8d08, 0x0, 0x8d1b, 0x0, 0x8d77, 0x0, 0x8dbc, 0x0, 0x8dcb, 0x0, 0x8def, 0x0, 0x8df0, 0x0, 0x8eca, 0x0, 0x8ed4, 0x0, 0x8f26, 0x0, 0x8f2a, 0x0, 0x8f38, 0x0, 0x8f3b, 0x0, 0x8f62, 0x0, 0x8f9e, 0x0, 0x8fb0, 0x0, 0x8fb6, 0x0, 0x9023, 0x0, 0x9038, 0x0, 0x9072, 0x0, 0x907c, 0x0, 0x908f, 0x0, 0x9094, 0x0, 0x90ce, 0x0, 0x90de, 0x0, 0x90f1, 0x0, 0x90fd, 0x0, 0x9111, 0x0, 0x911b, 0x0, 0x916a, 0x0, 0x9199, 0x0, 0x91b4, 0x0, 0x91cc, 0x0, 0x91cf, 0x0, 0x91d1, 0x0, 0x9234, 0x0, 0x9238, 0x0, 0x9276, 0x0, 0x927c, 0x0, 0x92d7, 0x0, 0x92d8, 0x0, 0x9304, 0x0, 0x934a, 0x0, 0x93f9, 0x0, 0x9415, 0x0, 0x958b, 0x0, 0x95ad, 0x0, 0x95b7, 0x0, 0x962e, 0x0, 0x964b, 0x0, 0x964d, 0x0, 0x9675, 0x0, 0x9678, 0x0, 0x967c, 0x0, 0x9686, 0x0, 0x96a3, 0x0, 0x96b7, 0x0, 0x96b8, 0x0, 0x96c3, 0x0, 0x96e2, 0x0, 0x96e3, 0x0, 0x96f6, 0x0, 0x96f7, 0x0, 0x9723, 0x0, 0x9732, 0x0, 0x9748, 0x0, 0x9756, 0x0, 0x97db, 0x0, 0x97e0, 0x0, 0x97ff, 0x0, 0x980b, 0x0, 0x9818, 0x0, 0x9829, 0x0, 0x983b, 0x0, 0x985e, 0x0, 0x98e2, 0x0, 0x98ef, 0x0, 0x98fc, 0x0, 0x9928, 0x0, 0x9929, 0x0, 0x99a7, 0x0, 0x99c2, 0x0, 0x99f1, 0x0, 0x99fe, 0x0, 0x9a6a, 0x0, 0x9b12, 0x0, 0x9b6f, 0x0, 0x9c40, 0x0, 0x9c57, 0x0, 0x9cfd, 0x0, 0x9d67, 0x0, 0x9db4, 0x0, 0x9dfa, 0x0, 0x9e1e, 0x0, 0x9e7f, 0x0, 0x9e97, 0x0, 0x9e9f, 0x0, 0x9ebb, 0x0, 0x9ece, 0x0, 0x9ef9, 0x0, 0x9efe, 0x0, 0x9f05, 0x0, 0x9f0f, 0x0, 0x9f16, 0x0, 0x9f3b, 0x0, 0x9f43, 0x0, 0x9f8d, 0x0, 0x9f8e, 0x0, 0x9f9c, 0x0, 0x11099, 0x110ba, 0x0, 0x1109b, 0x110ba, 0x0, 0x110a5, 0x110ba, 0x0, 0x11131, 0x11127, 0x0, 0x11132, 0x11127, 0x0, 0x11347, 0x1133e, 0x0, 0x11347, 0x11357, 0x0, 0x114b9, 0x114b0, 0x0, 0x114b9, 0x114ba, 0x0, 0x114b9, 0x114bd, 0x0, 0x115b8, 0x115af, 0x0, 0x115b9, 0x115af, 0x0, 0x11935, 0x11930, 0x0, 0x1d157, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x1d16e, 0x0, 0x1d158, 0x1d165, 0x1d16f, 0x0, 0x1d158, 0x1d165, 0x1d170, 0x0, 0x1d158, 0x1d165, 0x1d171, 0x0, 0x1d158, 0x1d165, 0x1d172, 0x0, 0x1d1b9, 0x1d165, 0x0, 0x1d1b9, 0x1d165, 0x1d16e, 0x0, 0x1d1b9, 0x1d165, 0x1d16f, 0x0, 0x1d1ba, 0x1d165, 0x0, 0x1d1ba, 0x1d165, 0x1d16e, 0x0, 0x1d1ba, 0x1d165, 0x1d16f, 0x0, 0x20122, 0x0, 0x2051c, 0x0, 0x20525, 0x0, 0x2054b, 0x0, 0x2063a, 0x0, 0x20804, 0x0, 0x208de, 0x0, 0x20a2c, 0x0, 0x20b63, 0x0, 0x214e4, 0x0, 0x216a8, 0x0, 0x216ea, 0x0, 0x219c8, 0x0, 0x21b18, 0x0, 0x21d0b, 0x0, 0x21de4, 0x0, 0x21de6, 0x0, 0x22183, 0x0, 0x2219f, 0x0, 0x22331, 0x0, 0x226d4, 0x0, 0x22844, 0x0, 0x2284a, 0x0, 0x22b0c, 0x0, 0x22bf1, 0x0, 0x2300a, 0x0, 0x232b8, 0x0, 0x2335f, 0x0, 0x23393, 0x0, 0x2339c, 0x0, 0x233c3, 0x0, 0x233d5, 0x0, 0x2346d, 0x0, 0x236a3, 0x0, 0x238a7, 0x0, 0x23a8d, 0x0, 0x23afa, 0x0, 0x23cbc, 0x0, 0x23d1e, 0x0, 0x23ed1, 0x0, 0x23f5e, 0x0, 0x23f8e, 0x0, 0x24263, 0x0, 0x242ee, 0x0, 0x243ab, 0x0, 0x24608, 0x0, 0x24735, 0x0, 0x24814, 0x0, 0x24c36, 0x0, 0x24c92, 0x0, 0x24fa1, 0x0, 0x24fb8, 0x0, 0x25044, 0x0, 0x250f2, 0x0, 0x250f3, 0x0, 0x25119, 0x0, 0x25133, 0x0, 0x25249, 0x0, 0x2541d, 0x0, 0x25626, 0x0, 0x2569a, 0x0, 0x256c5, 0x0, 0x2597c, 0x0, 0x25aa7, 0x0, 0x25bab, 0x0, 0x25c80, 0x0, 0x25cd0, 0x0, 0x25f86, 0x0, 0x261da, 0x0, 0x26228, 0x0, 0x26247, 0x0, 0x262d9, 0x0, 0x2633e, 0x0, 0x264da, 0x0, 0x26523, 0x0, 0x265a8, 0x0, 0x267a7, 0x0, 0x267b5, 0x0, 0x26b3c, 0x0, 0x26c36, 0x0, 0x26cd5, 0x0, 0x26d6b, 0x0, 0x26f2c, 0x0, 0x26fb1, 0x0, 0x270d2, 0x0, 0x273ca, 0x0, 0x27667, 0x0, 0x278ae, 0x0, 0x27966, 0x0, 0x27ca8, 0x0, 0x27ed3, 0x0, 0x27f2f, 0x0, 0x285d2, 0x0, 0x285ed, 0x0, 0x2872e, 0x0, 0x28bfa, 0x0, 0x28d77, 0x0, 0x29145, 0x0, 0x291df, 0x0, 0x2921a, 0x0, 0x2940a, 0x0, 0x29496, 0x0, 0x295b6, 0x0, 0x29b30, 0x0, 0x2a0ce, 0x0, 0x2a105, 0x0, 0x2a20e, 0x0, 0x2a291, 0x0, 0x2a392, 0x0, 0x2a600, 0x0]; return t; } -_IDCA decompCompatTable() @safe pure nothrow { static _IDCA t = [ 0x0, 0x20, 0x0, 0x20, 0x301, 0x0, 0x20, 0x303, 0x0, 0x20, 0x304, 0x0, 0x20, 0x305, 0x0, 0x20, 0x306, 0x0, 0x20, 0x307, 0x0, 0x20, 0x308, 0x0, 0x20, 0x308, 0x300, 0x0, 0x20, 0x308, 0x301, 0x0, 0x20, 0x308, 0x342, 0x0, 0x20, 0x30a, 0x0, 0x20, 0x30b, 0x0, 0x20, 0x313, 0x0, 0x20, 0x313, 0x300, 0x0, 0x20, 0x313, 0x301, 0x0, 0x20, 0x313, 0x342, 0x0, 0x20, 0x314, 0x0, 0x20, 0x314, 0x300, 0x0, 0x20, 0x314, 0x301, 0x0, 0x20, 0x314, 0x342, 0x0, 0x20, 0x327, 0x0, 0x20, 0x328, 0x0, 0x20, 0x333, 0x0, 0x20, 0x342, 0x0, 0x20, 0x345, 0x0, 0x20, 0x64b, 0x0, 0x20, 0x64c, 0x0, 0x20, 0x64c, 0x651, 0x0, 0x20, 0x64d, 0x0, 0x20, 0x64d, 0x651, 0x0, 0x20, 0x64e, 0x0, 0x20, 0x64e, 0x651, 0x0, 0x20, 0x64f, 0x0, 0x20, 0x64f, 0x651, 0x0, 0x20, 0x650, 0x0, 0x20, 0x650, 0x651, 0x0, 0x20, 0x651, 0x0, 0x20, 0x651, 0x670, 0x0, 0x20, 0x652, 0x0, 0x20, 0x3099, 0x0, 0x20, 0x309a, 0x0, 0x21, 0x0, 0x21, 0x21, 0x0, 0x21, 0x3f, 0x0, 0x22, 0x0, 0x23, 0x0, 0x24, 0x0, 0x25, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x28, 0x31, 0x29, 0x0, 0x28, 0x31, 0x30, 0x29, 0x0, 0x28, 0x31, 0x31, 0x29, 0x0, 0x28, 0x31, 0x32, 0x29, 0x0, 0x28, 0x31, 0x33, 0x29, 0x0, 0x28, 0x31, 0x34, 0x29, 0x0, 0x28, 0x31, 0x35, 0x29, 0x0, 0x28, 0x31, 0x36, 0x29, 0x0, 0x28, 0x31, 0x37, 0x29, 0x0, 0x28, 0x31, 0x38, 0x29, 0x0, 0x28, 0x31, 0x39, 0x29, 0x0, 0x28, 0x32, 0x29, 0x0, 0x28, 0x32, 0x30, 0x29, 0x0, 0x28, 0x33, 0x29, 0x0, 0x28, 0x34, 0x29, 0x0, 0x28, 0x35, 0x29, 0x0, 0x28, 0x36, 0x29, 0x0, 0x28, 0x37, 0x29, 0x0, 0x28, 0x38, 0x29, 0x0, 0x28, 0x39, 0x29, 0x0, 0x28, 0x41, 0x29, 0x0, 0x28, 0x42, 0x29, 0x0, 0x28, 0x43, 0x29, 0x0, 0x28, 0x44, 0x29, 0x0, 0x28, 0x45, 0x29, 0x0, 0x28, 0x46, 0x29, 0x0, 0x28, 0x47, 0x29, 0x0, 0x28, 0x48, 0x29, 0x0, 0x28, 0x49, 0x29, 0x0, 0x28, 0x4a, 0x29, 0x0, 0x28, 0x4b, 0x29, 0x0, 0x28, 0x4c, 0x29, 0x0, 0x28, 0x4d, 0x29, 0x0, 0x28, 0x4e, 0x29, 0x0, 0x28, 0x4f, 0x29, 0x0, 0x28, 0x50, 0x29, 0x0, 0x28, 0x51, 0x29, 0x0, 0x28, 0x52, 0x29, 0x0, 0x28, 0x53, 0x29, 0x0, 0x28, 0x54, 0x29, 0x0, 0x28, 0x55, 0x29, 0x0, 0x28, 0x56, 0x29, 0x0, 0x28, 0x57, 0x29, 0x0, 0x28, 0x58, 0x29, 0x0, 0x28, 0x59, 0x29, 0x0, 0x28, 0x5a, 0x29, 0x0, 0x28, 0x61, 0x29, 0x0, 0x28, 0x62, 0x29, 0x0, 0x28, 0x63, 0x29, 0x0, 0x28, 0x64, 0x29, 0x0, 0x28, 0x65, 0x29, 0x0, 0x28, 0x66, 0x29, 0x0, 0x28, 0x67, 0x29, 0x0, 0x28, 0x68, 0x29, 0x0, 0x28, 0x69, 0x29, 0x0, 0x28, 0x6a, 0x29, 0x0, 0x28, 0x6b, 0x29, 0x0, 0x28, 0x6c, 0x29, 0x0, 0x28, 0x6d, 0x29, 0x0, 0x28, 0x6e, 0x29, 0x0, 0x28, 0x6f, 0x29, 0x0, 0x28, 0x70, 0x29, 0x0, 0x28, 0x71, 0x29, 0x0, 0x28, 0x72, 0x29, 0x0, 0x28, 0x73, 0x29, 0x0, 0x28, 0x74, 0x29, 0x0, 0x28, 0x75, 0x29, 0x0, 0x28, 0x76, 0x29, 0x0, 0x28, 0x77, 0x29, 0x0, 0x28, 0x78, 0x29, 0x0, 0x28, 0x79, 0x29, 0x0, 0x28, 0x7a, 0x29, 0x0, 0x28, 0x1100, 0x29, 0x0, 0x28, 0x1100, 0x1161, 0x29, 0x0, 0x28, 0x1102, 0x29, 0x0, 0x28, 0x1102, 0x1161, 0x29, 0x0, 0x28, 0x1103, 0x29, 0x0, 0x28, 0x1103, 0x1161, 0x29, 0x0, 0x28, 0x1105, 0x29, 0x0, 0x28, 0x1105, 0x1161, 0x29, 0x0, 0x28, 0x1106, 0x29, 0x0, 0x28, 0x1106, 0x1161, 0x29, 0x0, 0x28, 0x1107, 0x29, 0x0, 0x28, 0x1107, 0x1161, 0x29, 0x0, 0x28, 0x1109, 0x29, 0x0, 0x28, 0x1109, 0x1161, 0x29, 0x0, 0x28, 0x110b, 0x29, 0x0, 0x28, 0x110b, 0x1161, 0x29, 0x0, 0x28, 0x110b, 0x1169, 0x110c, 0x1165, 0x11ab, 0x29, 0x0, 0x28, 0x110b, 0x1169, 0x1112, 0x116e, 0x29, 0x0, 0x28, 0x110c, 0x29, 0x0, 0x28, 0x110c, 0x1161, 0x29, 0x0, 0x28, 0x110c, 0x116e, 0x29, 0x0, 0x28, 0x110e, 0x29, 0x0, 0x28, 0x110e, 0x1161, 0x29, 0x0, 0x28, 0x110f, 0x29, 0x0, 0x28, 0x110f, 0x1161, 0x29, 0x0, 0x28, 0x1110, 0x29, 0x0, 0x28, 0x1110, 0x1161, 0x29, 0x0, 0x28, 0x1111, 0x29, 0x0, 0x28, 0x1111, 0x1161, 0x29, 0x0, 0x28, 0x1112, 0x29, 0x0, 0x28, 0x1112, 0x1161, 0x29, 0x0, 0x28, 0x4e00, 0x29, 0x0, 0x28, 0x4e03, 0x29, 0x0, 0x28, 0x4e09, 0x29, 0x0, 0x28, 0x4e5d, 0x29, 0x0, 0x28, 0x4e8c, 0x29, 0x0, 0x28, 0x4e94, 0x29, 0x0, 0x28, 0x4ee3, 0x29, 0x0, 0x28, 0x4f01, 0x29, 0x0, 0x28, 0x4f11, 0x29, 0x0, 0x28, 0x516b, 0x29, 0x0, 0x28, 0x516d, 0x29, 0x0, 0x28, 0x52b4, 0x29, 0x0, 0x28, 0x5341, 0x29, 0x0, 0x28, 0x5354, 0x29, 0x0, 0x28, 0x540d, 0x29, 0x0, 0x28, 0x547c, 0x29, 0x0, 0x28, 0x56db, 0x29, 0x0, 0x28, 0x571f, 0x29, 0x0, 0x28, 0x5b66, 0x29, 0x0, 0x28, 0x65e5, 0x29, 0x0, 0x28, 0x6708, 0x29, 0x0, 0x28, 0x6709, 0x29, 0x0, 0x28, 0x6728, 0x29, 0x0, 0x28, 0x682a, 0x29, 0x0, 0x28, 0x6c34, 0x29, 0x0, 0x28, 0x706b, 0x29, 0x0, 0x28, 0x7279, 0x29, 0x0, 0x28, 0x76e3, 0x29, 0x0, 0x28, 0x793e, 0x29, 0x0, 0x28, 0x795d, 0x29, 0x0, 0x28, 0x796d, 0x29, 0x0, 0x28, 0x81ea, 0x29, 0x0, 0x28, 0x81f3, 0x29, 0x0, 0x28, 0x8ca1, 0x29, 0x0, 0x28, 0x8cc7, 0x29, 0x0, 0x28, 0x91d1, 0x29, 0x0, 0x29, 0x0, 0x2a, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, 0x2e, 0x0, 0x2e, 0x2e, 0x0, 0x2e, 0x2e, 0x2e, 0x0, 0x2f, 0x0, 0x30, 0x0, 0x30, 0x2c, 0x0, 0x30, 0x2e, 0x0, 0x30, 0x2044, 0x33, 0x0, 0x30, 0x70b9, 0x0, 0x31, 0x0, 0x31, 0x2c, 0x0, 0x31, 0x2e, 0x0, 0x31, 0x30, 0x0, 0x31, 0x30, 0x2e, 0x0, 0x31, 0x30, 0x65e5, 0x0, 0x31, 0x30, 0x6708, 0x0, 0x31, 0x30, 0x70b9, 0x0, 0x31, 0x31, 0x0, 0x31, 0x31, 0x2e, 0x0, 0x31, 0x31, 0x65e5, 0x0, 0x31, 0x31, 0x6708, 0x0, 0x31, 0x31, 0x70b9, 0x0, 0x31, 0x32, 0x0, 0x31, 0x32, 0x2e, 0x0, 0x31, 0x32, 0x65e5, 0x0, 0x31, 0x32, 0x6708, 0x0, 0x31, 0x32, 0x70b9, 0x0, 0x31, 0x33, 0x0, 0x31, 0x33, 0x2e, 0x0, 0x31, 0x33, 0x65e5, 0x0, 0x31, 0x33, 0x70b9, 0x0, 0x31, 0x34, 0x0, 0x31, 0x34, 0x2e, 0x0, 0x31, 0x34, 0x65e5, 0x0, 0x31, 0x34, 0x70b9, 0x0, 0x31, 0x35, 0x0, 0x31, 0x35, 0x2e, 0x0, 0x31, 0x35, 0x65e5, 0x0, 0x31, 0x35, 0x70b9, 0x0, 0x31, 0x36, 0x0, 0x31, 0x36, 0x2e, 0x0, 0x31, 0x36, 0x65e5, 0x0, 0x31, 0x36, 0x70b9, 0x0, 0x31, 0x37, 0x0, 0x31, 0x37, 0x2e, 0x0, 0x31, 0x37, 0x65e5, 0x0, 0x31, 0x37, 0x70b9, 0x0, 0x31, 0x38, 0x0, 0x31, 0x38, 0x2e, 0x0, 0x31, 0x38, 0x65e5, 0x0, 0x31, 0x38, 0x70b9, 0x0, 0x31, 0x39, 0x0, 0x31, 0x39, 0x2e, 0x0, 0x31, 0x39, 0x65e5, 0x0, 0x31, 0x39, 0x70b9, 0x0, 0x31, 0x2044, 0x0, 0x31, 0x2044, 0x31, 0x30, 0x0, 0x31, 0x2044, 0x32, 0x0, 0x31, 0x2044, 0x33, 0x0, 0x31, 0x2044, 0x34, 0x0, 0x31, 0x2044, 0x35, 0x0, 0x31, 0x2044, 0x36, 0x0, 0x31, 0x2044, 0x37, 0x0, 0x31, 0x2044, 0x38, 0x0, 0x31, 0x2044, 0x39, 0x0, 0x31, 0x65e5, 0x0, 0x31, 0x6708, 0x0, 0x31, 0x70b9, 0x0, 0x32, 0x0, 0x32, 0x2c, 0x0, 0x32, 0x2e, 0x0, 0x32, 0x30, 0x0, 0x32, 0x30, 0x2e, 0x0, 0x32, 0x30, 0x65e5, 0x0, 0x32, 0x30, 0x70b9, 0x0, 0x32, 0x31, 0x0, 0x32, 0x31, 0x65e5, 0x0, 0x32, 0x31, 0x70b9, 0x0, 0x32, 0x32, 0x0, 0x32, 0x32, 0x65e5, 0x0, 0x32, 0x32, 0x70b9, 0x0, 0x32, 0x33, 0x0, 0x32, 0x33, 0x65e5, 0x0, 0x32, 0x33, 0x70b9, 0x0, 0x32, 0x34, 0x0, 0x32, 0x34, 0x65e5, 0x0, 0x32, 0x34, 0x70b9, 0x0, 0x32, 0x35, 0x0, 0x32, 0x35, 0x65e5, 0x0, 0x32, 0x36, 0x0, 0x32, 0x36, 0x65e5, 0x0, 0x32, 0x37, 0x0, 0x32, 0x37, 0x65e5, 0x0, 0x32, 0x38, 0x0, 0x32, 0x38, 0x65e5, 0x0, 0x32, 0x39, 0x0, 0x32, 0x39, 0x65e5, 0x0, 0x32, 0x2044, 0x33, 0x0, 0x32, 0x2044, 0x35, 0x0, 0x32, 0x65e5, 0x0, 0x32, 0x6708, 0x0, 0x32, 0x70b9, 0x0, 0x33, 0x0, 0x33, 0x2c, 0x0, 0x33, 0x2e, 0x0, 0x33, 0x30, 0x0, 0x33, 0x30, 0x65e5, 0x0, 0x33, 0x31, 0x0, 0x33, 0x31, 0x65e5, 0x0, 0x33, 0x32, 0x0, 0x33, 0x33, 0x0, 0x33, 0x34, 0x0, 0x33, 0x35, 0x0, 0x33, 0x36, 0x0, 0x33, 0x37, 0x0, 0x33, 0x38, 0x0, 0x33, 0x39, 0x0, 0x33, 0x2044, 0x34, 0x0, 0x33, 0x2044, 0x35, 0x0, 0x33, 0x2044, 0x38, 0x0, 0x33, 0x65e5, 0x0, 0x33, 0x6708, 0x0, 0x33, 0x70b9, 0x0, 0x34, 0x0, 0x34, 0x2c, 0x0, 0x34, 0x2e, 0x0, 0x34, 0x30, 0x0, 0x34, 0x31, 0x0, 0x34, 0x32, 0x0, 0x34, 0x33, 0x0, 0x34, 0x34, 0x0, 0x34, 0x35, 0x0, 0x34, 0x36, 0x0, 0x34, 0x37, 0x0, 0x34, 0x38, 0x0, 0x34, 0x39, 0x0, 0x34, 0x2044, 0x35, 0x0, 0x34, 0x65e5, 0x0, 0x34, 0x6708, 0x0, 0x34, 0x70b9, 0x0, 0x35, 0x0, 0x35, 0x2c, 0x0, 0x35, 0x2e, 0x0, 0x35, 0x30, 0x0, 0x35, 0x2044, 0x36, 0x0, 0x35, 0x2044, 0x38, 0x0, 0x35, 0x65e5, 0x0, 0x35, 0x6708, 0x0, 0x35, 0x70b9, 0x0, 0x36, 0x0, 0x36, 0x2c, 0x0, 0x36, 0x2e, 0x0, 0x36, 0x65e5, 0x0, 0x36, 0x6708, 0x0, 0x36, 0x70b9, 0x0, 0x37, 0x0, 0x37, 0x2c, 0x0, 0x37, 0x2e, 0x0, 0x37, 0x2044, 0x38, 0x0, 0x37, 0x65e5, 0x0, 0x37, 0x6708, 0x0, 0x37, 0x70b9, 0x0, 0x38, 0x0, 0x38, 0x2c, 0x0, 0x38, 0x2e, 0x0, 0x38, 0x65e5, 0x0, 0x38, 0x6708, 0x0, 0x38, 0x70b9, 0x0, 0x39, 0x0, 0x39, 0x2c, 0x0, 0x39, 0x2e, 0x0, 0x39, 0x65e5, 0x0, 0x39, 0x6708, 0x0, 0x39, 0x70b9, 0x0, 0x3a, 0x0, 0x3a, 0x3a, 0x3d, 0x0, 0x3b, 0x0, 0x3c, 0x0, 0x3c, 0x338, 0x0, 0x3d, 0x0, 0x3d, 0x3d, 0x0, 0x3d, 0x3d, 0x3d, 0x0, 0x3d, 0x338, 0x0, 0x3e, 0x0, 0x3e, 0x338, 0x0, 0x3f, 0x0, 0x3f, 0x21, 0x0, 0x3f, 0x3f, 0x0, 0x40, 0x0, 0x41, 0x0, 0x41, 0x55, 0x0, 0x41, 0x300, 0x0, 0x41, 0x301, 0x0, 0x41, 0x302, 0x0, 0x41, 0x302, 0x300, 0x0, 0x41, 0x302, 0x301, 0x0, 0x41, 0x302, 0x303, 0x0, 0x41, 0x302, 0x309, 0x0, 0x41, 0x303, 0x0, 0x41, 0x304, 0x0, 0x41, 0x306, 0x0, 0x41, 0x306, 0x300, 0x0, 0x41, 0x306, 0x301, 0x0, 0x41, 0x306, 0x303, 0x0, 0x41, 0x306, 0x309, 0x0, 0x41, 0x307, 0x0, 0x41, 0x307, 0x304, 0x0, 0x41, 0x308, 0x0, 0x41, 0x308, 0x304, 0x0, 0x41, 0x309, 0x0, 0x41, 0x30a, 0x0, 0x41, 0x30a, 0x301, 0x0, 0x41, 0x30c, 0x0, 0x41, 0x30f, 0x0, 0x41, 0x311, 0x0, 0x41, 0x323, 0x0, 0x41, 0x323, 0x302, 0x0, 0x41, 0x323, 0x306, 0x0, 0x41, 0x325, 0x0, 0x41, 0x328, 0x0, 0x41, 0x2215, 0x6d, 0x0, 0x42, 0x0, 0x42, 0x71, 0x0, 0x42, 0x307, 0x0, 0x42, 0x323, 0x0, 0x42, 0x331, 0x0, 0x43, 0x0, 0x43, 0x44, 0x0, 0x43, 0x6f, 0x2e, 0x0, 0x43, 0x301, 0x0, 0x43, 0x302, 0x0, 0x43, 0x307, 0x0, 0x43, 0x30c, 0x0, 0x43, 0x327, 0x0, 0x43, 0x327, 0x301, 0x0, 0x43, 0x2215, 0x6b, 0x67, 0x0, 0x44, 0x0, 0x44, 0x4a, 0x0, 0x44, 0x5a, 0x0, 0x44, 0x5a, 0x30c, 0x0, 0x44, 0x7a, 0x0, 0x44, 0x7a, 0x30c, 0x0, 0x44, 0x307, 0x0, 0x44, 0x30c, 0x0, 0x44, 0x323, 0x0, 0x44, 0x327, 0x0, 0x44, 0x32d, 0x0, 0x44, 0x331, 0x0, 0x45, 0x0, 0x45, 0x300, 0x0, 0x45, 0x301, 0x0, 0x45, 0x302, 0x0, 0x45, 0x302, 0x300, 0x0, 0x45, 0x302, 0x301, 0x0, 0x45, 0x302, 0x303, 0x0, 0x45, 0x302, 0x309, 0x0, 0x45, 0x303, 0x0, 0x45, 0x304, 0x0, 0x45, 0x304, 0x300, 0x0, 0x45, 0x304, 0x301, 0x0, 0x45, 0x306, 0x0, 0x45, 0x307, 0x0, 0x45, 0x308, 0x0, 0x45, 0x309, 0x0, 0x45, 0x30c, 0x0, 0x45, 0x30f, 0x0, 0x45, 0x311, 0x0, 0x45, 0x323, 0x0, 0x45, 0x323, 0x302, 0x0, 0x45, 0x327, 0x0, 0x45, 0x327, 0x306, 0x0, 0x45, 0x328, 0x0, 0x45, 0x32d, 0x0, 0x45, 0x330, 0x0, 0x46, 0x0, 0x46, 0x41, 0x58, 0x0, 0x46, 0x307, 0x0, 0x47, 0x0, 0x47, 0x42, 0x0, 0x47, 0x48, 0x7a, 0x0, 0x47, 0x50, 0x61, 0x0, 0x47, 0x79, 0x0, 0x47, 0x301, 0x0, 0x47, 0x302, 0x0, 0x47, 0x304, 0x0, 0x47, 0x306, 0x0, 0x47, 0x307, 0x0, 0x47, 0x30c, 0x0, 0x47, 0x327, 0x0, 0x48, 0x0, 0x48, 0x50, 0x0, 0x48, 0x56, 0x0, 0x48, 0x67, 0x0, 0x48, 0x7a, 0x0, 0x48, 0x302, 0x0, 0x48, 0x307, 0x0, 0x48, 0x308, 0x0, 0x48, 0x30c, 0x0, 0x48, 0x323, 0x0, 0x48, 0x327, 0x0, 0x48, 0x32e, 0x0, 0x49, 0x0, 0x49, 0x49, 0x0, 0x49, 0x49, 0x49, 0x0, 0x49, 0x4a, 0x0, 0x49, 0x55, 0x0, 0x49, 0x56, 0x0, 0x49, 0x58, 0x0, 0x49, 0x300, 0x0, 0x49, 0x301, 0x0, 0x49, 0x302, 0x0, 0x49, 0x303, 0x0, 0x49, 0x304, 0x0, 0x49, 0x306, 0x0, 0x49, 0x307, 0x0, 0x49, 0x308, 0x0, 0x49, 0x308, 0x301, 0x0, 0x49, 0x309, 0x0, 0x49, 0x30c, 0x0, 0x49, 0x30f, 0x0, 0x49, 0x311, 0x0, 0x49, 0x323, 0x0, 0x49, 0x328, 0x0, 0x49, 0x330, 0x0, 0x4a, 0x0, 0x4a, 0x302, 0x0, 0x4b, 0x0, 0x4b, 0x42, 0x0, 0x4b, 0x4b, 0x0, 0x4b, 0x4d, 0x0, 0x4b, 0x301, 0x0, 0x4b, 0x30c, 0x0, 0x4b, 0x323, 0x0, 0x4b, 0x327, 0x0, 0x4b, 0x331, 0x0, 0x4c, 0x0, 0x4c, 0x4a, 0x0, 0x4c, 0x54, 0x44, 0x0, 0x4c, 0x6a, 0x0, 0x4c, 0xb7, 0x0, 0x4c, 0x301, 0x0, 0x4c, 0x30c, 0x0, 0x4c, 0x323, 0x0, 0x4c, 0x323, 0x304, 0x0, 0x4c, 0x327, 0x0, 0x4c, 0x32d, 0x0, 0x4c, 0x331, 0x0, 0x4d, 0x0, 0x4d, 0x42, 0x0, 0x4d, 0x43, 0x0, 0x4d, 0x44, 0x0, 0x4d, 0x48, 0x7a, 0x0, 0x4d, 0x50, 0x61, 0x0, 0x4d, 0x52, 0x0, 0x4d, 0x56, 0x0, 0x4d, 0x57, 0x0, 0x4d, 0x301, 0x0, 0x4d, 0x307, 0x0, 0x4d, 0x323, 0x0, 0x4d, 0x3a9, 0x0, 0x4e, 0x0, 0x4e, 0x4a, 0x0, 0x4e, 0x6a, 0x0, 0x4e, 0x6f, 0x0, 0x4e, 0x300, 0x0, 0x4e, 0x301, 0x0, 0x4e, 0x303, 0x0, 0x4e, 0x307, 0x0, 0x4e, 0x30c, 0x0, 0x4e, 0x323, 0x0, 0x4e, 0x327, 0x0, 0x4e, 0x32d, 0x0, 0x4e, 0x331, 0x0, 0x4f, 0x0, 0x4f, 0x300, 0x0, 0x4f, 0x301, 0x0, 0x4f, 0x302, 0x0, 0x4f, 0x302, 0x300, 0x0, 0x4f, 0x302, 0x301, 0x0, 0x4f, 0x302, 0x303, 0x0, 0x4f, 0x302, 0x309, 0x0, 0x4f, 0x303, 0x0, 0x4f, 0x303, 0x301, 0x0, 0x4f, 0x303, 0x304, 0x0, 0x4f, 0x303, 0x308, 0x0, 0x4f, 0x304, 0x0, 0x4f, 0x304, 0x300, 0x0, 0x4f, 0x304, 0x301, 0x0, 0x4f, 0x306, 0x0, 0x4f, 0x307, 0x0, 0x4f, 0x307, 0x304, 0x0, 0x4f, 0x308, 0x0, 0x4f, 0x308, 0x304, 0x0, 0x4f, 0x309, 0x0, 0x4f, 0x30b, 0x0, 0x4f, 0x30c, 0x0, 0x4f, 0x30f, 0x0, 0x4f, 0x311, 0x0, 0x4f, 0x31b, 0x0, 0x4f, 0x31b, 0x300, 0x0, 0x4f, 0x31b, 0x301, 0x0, 0x4f, 0x31b, 0x303, 0x0, 0x4f, 0x31b, 0x309, 0x0, 0x4f, 0x31b, 0x323, 0x0, 0x4f, 0x323, 0x0, 0x4f, 0x323, 0x302, 0x0, 0x4f, 0x328, 0x0, 0x4f, 0x328, 0x304, 0x0, 0x50, 0x0, 0x50, 0x48, 0x0, 0x50, 0x50, 0x4d, 0x0, 0x50, 0x50, 0x56, 0x0, 0x50, 0x52, 0x0, 0x50, 0x54, 0x45, 0x0, 0x50, 0x61, 0x0, 0x50, 0x301, 0x0, 0x50, 0x307, 0x0, 0x51, 0x0, 0x52, 0x0, 0x52, 0x73, 0x0, 0x52, 0x301, 0x0, 0x52, 0x307, 0x0, 0x52, 0x30c, 0x0, 0x52, 0x30f, 0x0, 0x52, 0x311, 0x0, 0x52, 0x323, 0x0, 0x52, 0x323, 0x304, 0x0, 0x52, 0x327, 0x0, 0x52, 0x331, 0x0, 0x53, 0x0, 0x53, 0x44, 0x0, 0x53, 0x4d, 0x0, 0x53, 0x53, 0x0, 0x53, 0x76, 0x0, 0x53, 0x301, 0x0, 0x53, 0x301, 0x307, 0x0, 0x53, 0x302, 0x0, 0x53, 0x307, 0x0, 0x53, 0x30c, 0x0, 0x53, 0x30c, 0x307, 0x0, 0x53, 0x323, 0x0, 0x53, 0x323, 0x307, 0x0, 0x53, 0x326, 0x0, 0x53, 0x327, 0x0, 0x54, 0x0, 0x54, 0x45, 0x4c, 0x0, 0x54, 0x48, 0x7a, 0x0, 0x54, 0x4d, 0x0, 0x54, 0x307, 0x0, 0x54, 0x30c, 0x0, 0x54, 0x323, 0x0, 0x54, 0x326, 0x0, 0x54, 0x327, 0x0, 0x54, 0x32d, 0x0, 0x54, 0x331, 0x0, 0x55, 0x0, 0x55, 0x300, 0x0, 0x55, 0x301, 0x0, 0x55, 0x302, 0x0, 0x55, 0x303, 0x0, 0x55, 0x303, 0x301, 0x0, 0x55, 0x304, 0x0, 0x55, 0x304, 0x308, 0x0, 0x55, 0x306, 0x0, 0x55, 0x308, 0x0, 0x55, 0x308, 0x300, 0x0, 0x55, 0x308, 0x301, 0x0, 0x55, 0x308, 0x304, 0x0, 0x55, 0x308, 0x30c, 0x0, 0x55, 0x309, 0x0, 0x55, 0x30a, 0x0, 0x55, 0x30b, 0x0, 0x55, 0x30c, 0x0, 0x55, 0x30f, 0x0, 0x55, 0x311, 0x0, 0x55, 0x31b, 0x0, 0x55, 0x31b, 0x300, 0x0, 0x55, 0x31b, 0x301, 0x0, 0x55, 0x31b, 0x303, 0x0, 0x55, 0x31b, 0x309, 0x0, 0x55, 0x31b, 0x323, 0x0, 0x55, 0x323, 0x0, 0x55, 0x324, 0x0, 0x55, 0x328, 0x0, 0x55, 0x32d, 0x0, 0x55, 0x330, 0x0, 0x56, 0x0, 0x56, 0x49, 0x0, 0x56, 0x49, 0x49, 0x0, 0x56, 0x49, 0x49, 0x49, 0x0, 0x56, 0x303, 0x0, 0x56, 0x323, 0x0, 0x56, 0x2215, 0x6d, 0x0, 0x57, 0x0, 0x57, 0x43, 0x0, 0x57, 0x5a, 0x0, 0x57, 0x62, 0x0, 0x57, 0x300, 0x0, 0x57, 0x301, 0x0, 0x57, 0x302, 0x0, 0x57, 0x307, 0x0, 0x57, 0x308, 0x0, 0x57, 0x323, 0x0, 0x58, 0x0, 0x58, 0x49, 0x0, 0x58, 0x49, 0x49, 0x0, 0x58, 0x307, 0x0, 0x58, 0x308, 0x0, 0x59, 0x0, 0x59, 0x300, 0x0, 0x59, 0x301, 0x0, 0x59, 0x302, 0x0, 0x59, 0x303, 0x0, 0x59, 0x304, 0x0, 0x59, 0x307, 0x0, 0x59, 0x308, 0x0, 0x59, 0x309, 0x0, 0x59, 0x323, 0x0, 0x5a, 0x0, 0x5a, 0x301, 0x0, 0x5a, 0x302, 0x0, 0x5a, 0x307, 0x0, 0x5a, 0x30c, 0x0, 0x5a, 0x323, 0x0, 0x5a, 0x331, 0x0, 0x5b, 0x0, 0x5c, 0x0, 0x5d, 0x0, 0x5e, 0x0, 0x5f, 0x0, 0x60, 0x0, 0x61, 0x0, 0x61, 0x2e, 0x6d, 0x2e, 0x0, 0x61, 0x2f, 0x63, 0x0, 0x61, 0x2f, 0x73, 0x0, 0x61, 0x2be, 0x0, 0x61, 0x300, 0x0, 0x61, 0x301, 0x0, 0x61, 0x302, 0x0, 0x61, 0x302, 0x300, 0x0, 0x61, 0x302, 0x301, 0x0, 0x61, 0x302, 0x303, 0x0, 0x61, 0x302, 0x309, 0x0, 0x61, 0x303, 0x0, 0x61, 0x304, 0x0, 0x61, 0x306, 0x0, 0x61, 0x306, 0x300, 0x0, 0x61, 0x306, 0x301, 0x0, 0x61, 0x306, 0x303, 0x0, 0x61, 0x306, 0x309, 0x0, 0x61, 0x307, 0x0, 0x61, 0x307, 0x304, 0x0, 0x61, 0x308, 0x0, 0x61, 0x308, 0x304, 0x0, 0x61, 0x309, 0x0, 0x61, 0x30a, 0x0, 0x61, 0x30a, 0x301, 0x0, 0x61, 0x30c, 0x0, 0x61, 0x30f, 0x0, 0x61, 0x311, 0x0, 0x61, 0x323, 0x0, 0x61, 0x323, 0x302, 0x0, 0x61, 0x323, 0x306, 0x0, 0x61, 0x325, 0x0, 0x61, 0x328, 0x0, 0x62, 0x0, 0x62, 0x61, 0x72, 0x0, 0x62, 0x307, 0x0, 0x62, 0x323, 0x0, 0x62, 0x331, 0x0, 0x63, 0x0, 0x63, 0x2f, 0x6f, 0x0, 0x63, 0x2f, 0x75, 0x0, 0x63, 0x61, 0x6c, 0x0, 0x63, 0x63, 0x0, 0x63, 0x64, 0x0, 0x63, 0x6d, 0x0, 0x63, 0x6d, 0x32, 0x0, 0x63, 0x6d, 0x33, 0x0, 0x63, 0x301, 0x0, 0x63, 0x302, 0x0, 0x63, 0x307, 0x0, 0x63, 0x30c, 0x0, 0x63, 0x327, 0x0, 0x63, 0x327, 0x301, 0x0, 0x64, 0x0, 0x64, 0x42, 0x0, 0x64, 0x61, 0x0, 0x64, 0x6c, 0x0, 0x64, 0x6d, 0x0, 0x64, 0x6d, 0x32, 0x0, 0x64, 0x6d, 0x33, 0x0, 0x64, 0x7a, 0x0, 0x64, 0x7a, 0x30c, 0x0, 0x64, 0x307, 0x0, 0x64, 0x30c, 0x0, 0x64, 0x323, 0x0, 0x64, 0x327, 0x0, 0x64, 0x32d, 0x0, 0x64, 0x331, 0x0, 0x65, 0x0, 0x65, 0x56, 0x0, 0x65, 0x72, 0x67, 0x0, 0x65, 0x300, 0x0, 0x65, 0x301, 0x0, 0x65, 0x302, 0x0, 0x65, 0x302, 0x300, 0x0, 0x65, 0x302, 0x301, 0x0, 0x65, 0x302, 0x303, 0x0, 0x65, 0x302, 0x309, 0x0, 0x65, 0x303, 0x0, 0x65, 0x304, 0x0, 0x65, 0x304, 0x300, 0x0, 0x65, 0x304, 0x301, 0x0, 0x65, 0x306, 0x0, 0x65, 0x307, 0x0, 0x65, 0x308, 0x0, 0x65, 0x309, 0x0, 0x65, 0x30c, 0x0, 0x65, 0x30f, 0x0, 0x65, 0x311, 0x0, 0x65, 0x323, 0x0, 0x65, 0x323, 0x302, 0x0, 0x65, 0x327, 0x0, 0x65, 0x327, 0x306, 0x0, 0x65, 0x328, 0x0, 0x65, 0x32d, 0x0, 0x65, 0x330, 0x0, 0x66, 0x0, 0x66, 0x66, 0x0, 0x66, 0x66, 0x69, 0x0, 0x66, 0x66, 0x6c, 0x0, 0x66, 0x69, 0x0, 0x66, 0x6c, 0x0, 0x66, 0x6d, 0x0, 0x66, 0x307, 0x0, 0x67, 0x0, 0x67, 0x61, 0x6c, 0x0, 0x67, 0x301, 0x0, 0x67, 0x302, 0x0, 0x67, 0x304, 0x0, 0x67, 0x306, 0x0, 0x67, 0x307, 0x0, 0x67, 0x30c, 0x0, 0x67, 0x327, 0x0, 0x68, 0x0, 0x68, 0x50, 0x61, 0x0, 0x68, 0x61, 0x0, 0x68, 0x302, 0x0, 0x68, 0x307, 0x0, 0x68, 0x308, 0x0, 0x68, 0x30c, 0x0, 0x68, 0x323, 0x0, 0x68, 0x327, 0x0, 0x68, 0x32e, 0x0, 0x68, 0x331, 0x0, 0x69, 0x0, 0x69, 0x69, 0x0, 0x69, 0x69, 0x69, 0x0, 0x69, 0x6a, 0x0, 0x69, 0x6e, 0x0, 0x69, 0x76, 0x0, 0x69, 0x78, 0x0, 0x69, 0x300, 0x0, 0x69, 0x301, 0x0, 0x69, 0x302, 0x0, 0x69, 0x303, 0x0, 0x69, 0x304, 0x0, 0x69, 0x306, 0x0, 0x69, 0x308, 0x0, 0x69, 0x308, 0x301, 0x0, 0x69, 0x309, 0x0, 0x69, 0x30c, 0x0, 0x69, 0x30f, 0x0, 0x69, 0x311, 0x0, 0x69, 0x323, 0x0, 0x69, 0x328, 0x0, 0x69, 0x330, 0x0, 0x6a, 0x0, 0x6a, 0x302, 0x0, 0x6a, 0x30c, 0x0, 0x6b, 0x0, 0x6b, 0x41, 0x0, 0x6b, 0x48, 0x7a, 0x0, 0x6b, 0x50, 0x61, 0x0, 0x6b, 0x56, 0x0, 0x6b, 0x57, 0x0, 0x6b, 0x63, 0x61, 0x6c, 0x0, 0x6b, 0x67, 0x0, 0x6b, 0x6c, 0x0, 0x6b, 0x6d, 0x0, 0x6b, 0x6d, 0x32, 0x0, 0x6b, 0x6d, 0x33, 0x0, 0x6b, 0x74, 0x0, 0x6b, 0x301, 0x0, 0x6b, 0x30c, 0x0, 0x6b, 0x323, 0x0, 0x6b, 0x327, 0x0, 0x6b, 0x331, 0x0, 0x6b, 0x3a9, 0x0, 0x6c, 0x0, 0x6c, 0x6a, 0x0, 0x6c, 0x6d, 0x0, 0x6c, 0x6e, 0x0, 0x6c, 0x6f, 0x67, 0x0, 0x6c, 0x78, 0x0, 0x6c, 0xb7, 0x0, 0x6c, 0x301, 0x0, 0x6c, 0x30c, 0x0, 0x6c, 0x323, 0x0, 0x6c, 0x323, 0x304, 0x0, 0x6c, 0x327, 0x0, 0x6c, 0x32d, 0x0, 0x6c, 0x331, 0x0, 0x6d, 0x0, 0x6d, 0x32, 0x0, 0x6d, 0x33, 0x0, 0x6d, 0x41, 0x0, 0x6d, 0x56, 0x0, 0x6d, 0x57, 0x0, 0x6d, 0x62, 0x0, 0x6d, 0x67, 0x0, 0x6d, 0x69, 0x6c, 0x0, 0x6d, 0x6c, 0x0, 0x6d, 0x6d, 0x0, 0x6d, 0x6d, 0x32, 0x0, 0x6d, 0x6d, 0x33, 0x0, 0x6d, 0x6f, 0x6c, 0x0, 0x6d, 0x73, 0x0, 0x6d, 0x301, 0x0, 0x6d, 0x307, 0x0, 0x6d, 0x323, 0x0, 0x6d, 0x2215, 0x73, 0x0, 0x6d, 0x2215, 0x73, 0x32, 0x0, 0x6e, 0x0, 0x6e, 0x41, 0x0, 0x6e, 0x46, 0x0, 0x6e, 0x56, 0x0, 0x6e, 0x57, 0x0, 0x6e, 0x6a, 0x0, 0x6e, 0x6d, 0x0, 0x6e, 0x73, 0x0, 0x6e, 0x300, 0x0, 0x6e, 0x301, 0x0, 0x6e, 0x303, 0x0, 0x6e, 0x307, 0x0, 0x6e, 0x30c, 0x0, 0x6e, 0x323, 0x0, 0x6e, 0x327, 0x0, 0x6e, 0x32d, 0x0, 0x6e, 0x331, 0x0, 0x6f, 0x0, 0x6f, 0x56, 0x0, 0x6f, 0x300, 0x0, 0x6f, 0x301, 0x0, 0x6f, 0x302, 0x0, 0x6f, 0x302, 0x300, 0x0, 0x6f, 0x302, 0x301, 0x0, 0x6f, 0x302, 0x303, 0x0, 0x6f, 0x302, 0x309, 0x0, 0x6f, 0x303, 0x0, 0x6f, 0x303, 0x301, 0x0, 0x6f, 0x303, 0x304, 0x0, 0x6f, 0x303, 0x308, 0x0, 0x6f, 0x304, 0x0, 0x6f, 0x304, 0x300, 0x0, 0x6f, 0x304, 0x301, 0x0, 0x6f, 0x306, 0x0, 0x6f, 0x307, 0x0, 0x6f, 0x307, 0x304, 0x0, 0x6f, 0x308, 0x0, 0x6f, 0x308, 0x304, 0x0, 0x6f, 0x309, 0x0, 0x6f, 0x30b, 0x0, 0x6f, 0x30c, 0x0, 0x6f, 0x30f, 0x0, 0x6f, 0x311, 0x0, 0x6f, 0x31b, 0x0, 0x6f, 0x31b, 0x300, 0x0, 0x6f, 0x31b, 0x301, 0x0, 0x6f, 0x31b, 0x303, 0x0, 0x6f, 0x31b, 0x309, 0x0, 0x6f, 0x31b, 0x323, 0x0, 0x6f, 0x323, 0x0, 0x6f, 0x323, 0x302, 0x0, 0x6f, 0x328, 0x0, 0x6f, 0x328, 0x304, 0x0, 0x70, 0x0, 0x70, 0x2e, 0x6d, 0x2e, 0x0, 0x70, 0x41, 0x0, 0x70, 0x46, 0x0, 0x70, 0x56, 0x0, 0x70, 0x57, 0x0, 0x70, 0x63, 0x0, 0x70, 0x73, 0x0, 0x70, 0x301, 0x0, 0x70, 0x307, 0x0, 0x71, 0x0, 0x72, 0x0, 0x72, 0x61, 0x64, 0x0, 0x72, 0x61, 0x64, 0x2215, 0x73, 0x0, 0x72, 0x61, 0x64, 0x2215, 0x73, 0x32, 0x0, 0x72, 0x301, 0x0, 0x72, 0x307, 0x0, 0x72, 0x30c, 0x0, 0x72, 0x30f, 0x0, 0x72, 0x311, 0x0, 0x72, 0x323, 0x0, 0x72, 0x323, 0x304, 0x0, 0x72, 0x327, 0x0, 0x72, 0x331, 0x0, 0x73, 0x0, 0x73, 0x72, 0x0, 0x73, 0x74, 0x0, 0x73, 0x301, 0x0, 0x73, 0x301, 0x307, 0x0, 0x73, 0x302, 0x0, 0x73, 0x307, 0x0, 0x73, 0x30c, 0x0, 0x73, 0x30c, 0x307, 0x0, 0x73, 0x323, 0x0, 0x73, 0x323, 0x307, 0x0, 0x73, 0x326, 0x0, 0x73, 0x327, 0x0, 0x74, 0x0, 0x74, 0x307, 0x0, 0x74, 0x308, 0x0, 0x74, 0x30c, 0x0, 0x74, 0x323, 0x0, 0x74, 0x326, 0x0, 0x74, 0x327, 0x0, 0x74, 0x32d, 0x0, 0x74, 0x331, 0x0, 0x75, 0x0, 0x75, 0x300, 0x0, 0x75, 0x301, 0x0, 0x75, 0x302, 0x0, 0x75, 0x303, 0x0, 0x75, 0x303, 0x301, 0x0, 0x75, 0x304, 0x0, 0x75, 0x304, 0x308, 0x0, 0x75, 0x306, 0x0, 0x75, 0x308, 0x0, 0x75, 0x308, 0x300, 0x0, 0x75, 0x308, 0x301, 0x0, 0x75, 0x308, 0x304, 0x0, 0x75, 0x308, 0x30c, 0x0, 0x75, 0x309, 0x0, 0x75, 0x30a, 0x0, 0x75, 0x30b, 0x0, 0x75, 0x30c, 0x0, 0x75, 0x30f, 0x0, 0x75, 0x311, 0x0, 0x75, 0x31b, 0x0, 0x75, 0x31b, 0x300, 0x0, 0x75, 0x31b, 0x301, 0x0, 0x75, 0x31b, 0x303, 0x0, 0x75, 0x31b, 0x309, 0x0, 0x75, 0x31b, 0x323, 0x0, 0x75, 0x323, 0x0, 0x75, 0x324, 0x0, 0x75, 0x328, 0x0, 0x75, 0x32d, 0x0, 0x75, 0x330, 0x0, 0x76, 0x0, 0x76, 0x69, 0x0, 0x76, 0x69, 0x69, 0x0, 0x76, 0x69, 0x69, 0x69, 0x0, 0x76, 0x303, 0x0, 0x76, 0x323, 0x0, 0x77, 0x0, 0x77, 0x300, 0x0, 0x77, 0x301, 0x0, 0x77, 0x302, 0x0, 0x77, 0x307, 0x0, 0x77, 0x308, 0x0, 0x77, 0x30a, 0x0, 0x77, 0x323, 0x0, 0x78, 0x0, 0x78, 0x69, 0x0, 0x78, 0x69, 0x69, 0x0, 0x78, 0x307, 0x0, 0x78, 0x308, 0x0, 0x79, 0x0, 0x79, 0x300, 0x0, 0x79, 0x301, 0x0, 0x79, 0x302, 0x0, 0x79, 0x303, 0x0, 0x79, 0x304, 0x0, 0x79, 0x307, 0x0, 0x79, 0x308, 0x0, 0x79, 0x309, 0x0, 0x79, 0x30a, 0x0, 0x79, 0x323, 0x0, 0x7a, 0x0, 0x7a, 0x301, 0x0, 0x7a, 0x302, 0x0, 0x7a, 0x307, 0x0, 0x7a, 0x30c, 0x0, 0x7a, 0x323, 0x0, 0x7a, 0x331, 0x0, 0x7b, 0x0, 0x7c, 0x0, 0x7d, 0x0, 0x7e, 0x0, 0xa2, 0x0, 0xa3, 0x0, 0xa5, 0x0, 0xa6, 0x0, 0xac, 0x0, 0xb0, 0x43, 0x0, 0xb0, 0x46, 0x0, 0xb7, 0x0, 0xc6, 0x0, 0xc6, 0x301, 0x0, 0xc6, 0x304, 0x0, 0xd8, 0x301, 0x0, 0xe6, 0x0, 0xe6, 0x301, 0x0, 0xe6, 0x304, 0x0, 0xf0, 0x0, 0xf8, 0x0, 0xf8, 0x301, 0x0, 0x126, 0x0, 0x127, 0x0, 0x131, 0x0, 0x14b, 0x0, 0x153, 0x0, 0x18e, 0x0, 0x190, 0x0, 0x1ab, 0x0, 0x1b7, 0x30c, 0x0, 0x1c0, 0x0, 0x1c1, 0x0, 0x1c2, 0x0, 0x222, 0x0, 0x237, 0x0, 0x250, 0x0, 0x251, 0x0, 0x252, 0x0, 0x253, 0x0, 0x254, 0x0, 0x255, 0x0, 0x256, 0x0, 0x257, 0x0, 0x258, 0x0, 0x259, 0x0, 0x25b, 0x0, 0x25c, 0x0, 0x25e, 0x0, 0x25f, 0x0, 0x260, 0x0, 0x261, 0x0, 0x262, 0x0, 0x263, 0x0, 0x264, 0x0, 0x265, 0x0, 0x266, 0x0, 0x267, 0x0, 0x268, 0x0, 0x269, 0x0, 0x26a, 0x0, 0x26b, 0x0, 0x26c, 0x0, 0x26d, 0x0, 0x26e, 0x0, 0x26f, 0x0, 0x270, 0x0, 0x271, 0x0, 0x272, 0x0, 0x273, 0x0, 0x274, 0x0, 0x275, 0x0, 0x276, 0x0, 0x277, 0x0, 0x278, 0x0, 0x279, 0x0, 0x27a, 0x0, 0x27b, 0x0, 0x27d, 0x0, 0x27e, 0x0, 0x280, 0x0, 0x281, 0x0, 0x282, 0x0, 0x283, 0x0, 0x284, 0x0, 0x288, 0x0, 0x289, 0x0, 0x28a, 0x0, 0x28b, 0x0, 0x28c, 0x0, 0x28d, 0x0, 0x28e, 0x0, 0x28f, 0x0, 0x290, 0x0, 0x291, 0x0, 0x292, 0x0, 0x292, 0x30c, 0x0, 0x295, 0x0, 0x298, 0x0, 0x299, 0x0, 0x29b, 0x0, 0x29c, 0x0, 0x29d, 0x0, 0x29f, 0x0, 0x2a1, 0x0, 0x2a2, 0x0, 0x2a3, 0x0, 0x2a4, 0x0, 0x2a5, 0x0, 0x2a6, 0x0, 0x2a7, 0x0, 0x2a8, 0x0, 0x2a9, 0x0, 0x2aa, 0x0, 0x2ab, 0x0, 0x2b9, 0x0, 0x2bc, 0x6e, 0x0, 0x2d0, 0x0, 0x2d1, 0x0, 0x300, 0x0, 0x301, 0x0, 0x308, 0x301, 0x0, 0x313, 0x0, 0x391, 0x0, 0x391, 0x300, 0x0, 0x391, 0x301, 0x0, 0x391, 0x304, 0x0, 0x391, 0x306, 0x0, 0x391, 0x313, 0x0, 0x391, 0x313, 0x300, 0x0, 0x391, 0x313, 0x300, 0x345, 0x0, 0x391, 0x313, 0x301, 0x0, 0x391, 0x313, 0x301, 0x345, 0x0, 0x391, 0x313, 0x342, 0x0, 0x391, 0x313, 0x342, 0x345, 0x0, 0x391, 0x313, 0x345, 0x0, 0x391, 0x314, 0x0, 0x391, 0x314, 0x300, 0x0, 0x391, 0x314, 0x300, 0x345, 0x0, 0x391, 0x314, 0x301, 0x0, 0x391, 0x314, 0x301, 0x345, 0x0, 0x391, 0x314, 0x342, 0x0, 0x391, 0x314, 0x342, 0x345, 0x0, 0x391, 0x314, 0x345, 0x0, 0x391, 0x345, 0x0, 0x392, 0x0, 0x393, 0x0, 0x394, 0x0, 0x395, 0x0, 0x395, 0x300, 0x0, 0x395, 0x301, 0x0, 0x395, 0x313, 0x0, 0x395, 0x313, 0x300, 0x0, 0x395, 0x313, 0x301, 0x0, 0x395, 0x314, 0x0, 0x395, 0x314, 0x300, 0x0, 0x395, 0x314, 0x301, 0x0, 0x396, 0x0, 0x397, 0x0, 0x397, 0x300, 0x0, 0x397, 0x301, 0x0, 0x397, 0x313, 0x0, 0x397, 0x313, 0x300, 0x0, 0x397, 0x313, 0x300, 0x345, 0x0, 0x397, 0x313, 0x301, 0x0, 0x397, 0x313, 0x301, 0x345, 0x0, 0x397, 0x313, 0x342, 0x0, 0x397, 0x313, 0x342, 0x345, 0x0, 0x397, 0x313, 0x345, 0x0, 0x397, 0x314, 0x0, 0x397, 0x314, 0x300, 0x0, 0x397, 0x314, 0x300, 0x345, 0x0, 0x397, 0x314, 0x301, 0x0, 0x397, 0x314, 0x301, 0x345, 0x0, 0x397, 0x314, 0x342, 0x0, 0x397, 0x314, 0x342, 0x345, 0x0, 0x397, 0x314, 0x345, 0x0, 0x397, 0x345, 0x0, 0x398, 0x0, 0x399, 0x0, 0x399, 0x300, 0x0, 0x399, 0x301, 0x0, 0x399, 0x304, 0x0, 0x399, 0x306, 0x0, 0x399, 0x308, 0x0, 0x399, 0x313, 0x0, 0x399, 0x313, 0x300, 0x0, 0x399, 0x313, 0x301, 0x0, 0x399, 0x313, 0x342, 0x0, 0x399, 0x314, 0x0, 0x399, 0x314, 0x300, 0x0, 0x399, 0x314, 0x301, 0x0, 0x399, 0x314, 0x342, 0x0, 0x39a, 0x0, 0x39b, 0x0, 0x39c, 0x0, 0x39d, 0x0, 0x39e, 0x0, 0x39f, 0x0, 0x39f, 0x300, 0x0, 0x39f, 0x301, 0x0, 0x39f, 0x313, 0x0, 0x39f, 0x313, 0x300, 0x0, 0x39f, 0x313, 0x301, 0x0, 0x39f, 0x314, 0x0, 0x39f, 0x314, 0x300, 0x0, 0x39f, 0x314, 0x301, 0x0, 0x3a0, 0x0, 0x3a1, 0x0, 0x3a1, 0x314, 0x0, 0x3a3, 0x0, 0x3a4, 0x0, 0x3a5, 0x0, 0x3a5, 0x300, 0x0, 0x3a5, 0x301, 0x0, 0x3a5, 0x304, 0x0, 0x3a5, 0x306, 0x0, 0x3a5, 0x308, 0x0, 0x3a5, 0x314, 0x0, 0x3a5, 0x314, 0x300, 0x0, 0x3a5, 0x314, 0x301, 0x0, 0x3a5, 0x314, 0x342, 0x0, 0x3a6, 0x0, 0x3a7, 0x0, 0x3a8, 0x0, 0x3a9, 0x0, 0x3a9, 0x300, 0x0, 0x3a9, 0x301, 0x0, 0x3a9, 0x313, 0x0, 0x3a9, 0x313, 0x300, 0x0, 0x3a9, 0x313, 0x300, 0x345, 0x0, 0x3a9, 0x313, 0x301, 0x0, 0x3a9, 0x313, 0x301, 0x345, 0x0, 0x3a9, 0x313, 0x342, 0x0, 0x3a9, 0x313, 0x342, 0x345, 0x0, 0x3a9, 0x313, 0x345, 0x0, 0x3a9, 0x314, 0x0, 0x3a9, 0x314, 0x300, 0x0, 0x3a9, 0x314, 0x300, 0x345, 0x0, 0x3a9, 0x314, 0x301, 0x0, 0x3a9, 0x314, 0x301, 0x345, 0x0, 0x3a9, 0x314, 0x342, 0x0, 0x3a9, 0x314, 0x342, 0x345, 0x0, 0x3a9, 0x314, 0x345, 0x0, 0x3a9, 0x345, 0x0, 0x3b1, 0x0, 0x3b1, 0x300, 0x0, 0x3b1, 0x300, 0x345, 0x0, 0x3b1, 0x301, 0x0, 0x3b1, 0x301, 0x345, 0x0, 0x3b1, 0x304, 0x0, 0x3b1, 0x306, 0x0, 0x3b1, 0x313, 0x0, 0x3b1, 0x313, 0x300, 0x0, 0x3b1, 0x313, 0x300, 0x345, 0x0, 0x3b1, 0x313, 0x301, 0x0, 0x3b1, 0x313, 0x301, 0x345, 0x0, 0x3b1, 0x313, 0x342, 0x0, 0x3b1, 0x313, 0x342, 0x345, 0x0, 0x3b1, 0x313, 0x345, 0x0, 0x3b1, 0x314, 0x0, 0x3b1, 0x314, 0x300, 0x0, 0x3b1, 0x314, 0x300, 0x345, 0x0, 0x3b1, 0x314, 0x301, 0x0, 0x3b1, 0x314, 0x301, 0x345, 0x0, 0x3b1, 0x314, 0x342, 0x0, 0x3b1, 0x314, 0x342, 0x345, 0x0, 0x3b1, 0x314, 0x345, 0x0, 0x3b1, 0x342, 0x0, 0x3b1, 0x342, 0x345, 0x0, 0x3b1, 0x345, 0x0, 0x3b2, 0x0, 0x3b3, 0x0, 0x3b4, 0x0, 0x3b5, 0x0, 0x3b5, 0x300, 0x0, 0x3b5, 0x301, 0x0, 0x3b5, 0x313, 0x0, 0x3b5, 0x313, 0x300, 0x0, 0x3b5, 0x313, 0x301, 0x0, 0x3b5, 0x314, 0x0, 0x3b5, 0x314, 0x300, 0x0, 0x3b5, 0x314, 0x301, 0x0, 0x3b6, 0x0, 0x3b7, 0x0, 0x3b7, 0x300, 0x0, 0x3b7, 0x300, 0x345, 0x0, 0x3b7, 0x301, 0x0, 0x3b7, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x0, 0x3b7, 0x313, 0x300, 0x0, 0x3b7, 0x313, 0x300, 0x345, 0x0, 0x3b7, 0x313, 0x301, 0x0, 0x3b7, 0x313, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x342, 0x0, 0x3b7, 0x313, 0x342, 0x345, 0x0, 0x3b7, 0x313, 0x345, 0x0, 0x3b7, 0x314, 0x0, 0x3b7, 0x314, 0x300, 0x0, 0x3b7, 0x314, 0x300, 0x345, 0x0, 0x3b7, 0x314, 0x301, 0x0, 0x3b7, 0x314, 0x301, 0x345, 0x0, 0x3b7, 0x314, 0x342, 0x0, 0x3b7, 0x314, 0x342, 0x345, 0x0, 0x3b7, 0x314, 0x345, 0x0, 0x3b7, 0x342, 0x0, 0x3b7, 0x342, 0x345, 0x0, 0x3b7, 0x345, 0x0, 0x3b8, 0x0, 0x3b9, 0x0, 0x3b9, 0x300, 0x0, 0x3b9, 0x301, 0x0, 0x3b9, 0x304, 0x0, 0x3b9, 0x306, 0x0, 0x3b9, 0x308, 0x0, 0x3b9, 0x308, 0x300, 0x0, 0x3b9, 0x308, 0x301, 0x0, 0x3b9, 0x308, 0x342, 0x0, 0x3b9, 0x313, 0x0, 0x3b9, 0x313, 0x300, 0x0, 0x3b9, 0x313, 0x301, 0x0, 0x3b9, 0x313, 0x342, 0x0, 0x3b9, 0x314, 0x0, 0x3b9, 0x314, 0x300, 0x0, 0x3b9, 0x314, 0x301, 0x0, 0x3b9, 0x314, 0x342, 0x0, 0x3b9, 0x342, 0x0, 0x3ba, 0x0, 0x3bb, 0x0, 0x3bc, 0x0, 0x3bc, 0x41, 0x0, 0x3bc, 0x46, 0x0, 0x3bc, 0x56, 0x0, 0x3bc, 0x57, 0x0, 0x3bc, 0x67, 0x0, 0x3bc, 0x6c, 0x0, 0x3bc, 0x6d, 0x0, 0x3bc, 0x73, 0x0, 0x3bd, 0x0, 0x3be, 0x0, 0x3bf, 0x0, 0x3bf, 0x300, 0x0, 0x3bf, 0x301, 0x0, 0x3bf, 0x313, 0x0, 0x3bf, 0x313, 0x300, 0x0, 0x3bf, 0x313, 0x301, 0x0, 0x3bf, 0x314, 0x0, 0x3bf, 0x314, 0x300, 0x0, 0x3bf, 0x314, 0x301, 0x0, 0x3c0, 0x0, 0x3c1, 0x0, 0x3c1, 0x313, 0x0, 0x3c1, 0x314, 0x0, 0x3c2, 0x0, 0x3c3, 0x0, 0x3c4, 0x0, 0x3c5, 0x0, 0x3c5, 0x300, 0x0, 0x3c5, 0x301, 0x0, 0x3c5, 0x304, 0x0, 0x3c5, 0x306, 0x0, 0x3c5, 0x308, 0x0, 0x3c5, 0x308, 0x300, 0x0, 0x3c5, 0x308, 0x301, 0x0, 0x3c5, 0x308, 0x342, 0x0, 0x3c5, 0x313, 0x0, 0x3c5, 0x313, 0x300, 0x0, 0x3c5, 0x313, 0x301, 0x0, 0x3c5, 0x313, 0x342, 0x0, 0x3c5, 0x314, 0x0, 0x3c5, 0x314, 0x300, 0x0, 0x3c5, 0x314, 0x301, 0x0, 0x3c5, 0x314, 0x342, 0x0, 0x3c5, 0x342, 0x0, 0x3c6, 0x0, 0x3c7, 0x0, 0x3c8, 0x0, 0x3c9, 0x0, 0x3c9, 0x300, 0x0, 0x3c9, 0x300, 0x345, 0x0, 0x3c9, 0x301, 0x0, 0x3c9, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x0, 0x3c9, 0x313, 0x300, 0x0, 0x3c9, 0x313, 0x300, 0x345, 0x0, 0x3c9, 0x313, 0x301, 0x0, 0x3c9, 0x313, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x342, 0x0, 0x3c9, 0x313, 0x342, 0x345, 0x0, 0x3c9, 0x313, 0x345, 0x0, 0x3c9, 0x314, 0x0, 0x3c9, 0x314, 0x300, 0x0, 0x3c9, 0x314, 0x300, 0x345, 0x0, 0x3c9, 0x314, 0x301, 0x0, 0x3c9, 0x314, 0x301, 0x345, 0x0, 0x3c9, 0x314, 0x342, 0x0, 0x3c9, 0x314, 0x342, 0x345, 0x0, 0x3c9, 0x314, 0x345, 0x0, 0x3c9, 0x342, 0x0, 0x3c9, 0x342, 0x345, 0x0, 0x3c9, 0x345, 0x0, 0x3dc, 0x0, 0x3dd, 0x0, 0x406, 0x308, 0x0, 0x410, 0x306, 0x0, 0x410, 0x308, 0x0, 0x413, 0x301, 0x0, 0x415, 0x300, 0x0, 0x415, 0x306, 0x0, 0x415, 0x308, 0x0, 0x416, 0x306, 0x0, 0x416, 0x308, 0x0, 0x417, 0x308, 0x0, 0x418, 0x300, 0x0, 0x418, 0x304, 0x0, 0x418, 0x306, 0x0, 0x418, 0x308, 0x0, 0x41a, 0x301, 0x0, 0x41e, 0x308, 0x0, 0x423, 0x304, 0x0, 0x423, 0x306, 0x0, 0x423, 0x308, 0x0, 0x423, 0x30b, 0x0, 0x427, 0x308, 0x0, 0x42b, 0x308, 0x0, 0x42d, 0x308, 0x0, 0x430, 0x0, 0x430, 0x306, 0x0, 0x430, 0x308, 0x0, 0x431, 0x0, 0x432, 0x0, 0x433, 0x0, 0x433, 0x301, 0x0, 0x434, 0x0, 0x435, 0x0, 0x435, 0x300, 0x0, 0x435, 0x306, 0x0, 0x435, 0x308, 0x0, 0x436, 0x0, 0x436, 0x306, 0x0, 0x436, 0x308, 0x0, 0x437, 0x0, 0x437, 0x308, 0x0, 0x438, 0x0, 0x438, 0x300, 0x0, 0x438, 0x304, 0x0, 0x438, 0x306, 0x0, 0x438, 0x308, 0x0, 0x43a, 0x0, 0x43a, 0x301, 0x0, 0x43b, 0x0, 0x43c, 0x0, 0x43d, 0x0, 0x43e, 0x0, 0x43e, 0x308, 0x0, 0x43f, 0x0, 0x440, 0x0, 0x441, 0x0, 0x442, 0x0, 0x443, 0x0, 0x443, 0x304, 0x0, 0x443, 0x306, 0x0, 0x443, 0x308, 0x0, 0x443, 0x30b, 0x0, 0x444, 0x0, 0x445, 0x0, 0x446, 0x0, 0x447, 0x0, 0x447, 0x308, 0x0, 0x448, 0x0, 0x44a, 0x0, 0x44b, 0x0, 0x44b, 0x308, 0x0, 0x44c, 0x0, 0x44d, 0x0, 0x44d, 0x308, 0x0, 0x44e, 0x0, 0x455, 0x0, 0x456, 0x0, 0x456, 0x308, 0x0, 0x458, 0x0, 0x45f, 0x0, 0x474, 0x30f, 0x0, 0x475, 0x30f, 0x0, 0x491, 0x0, 0x4ab, 0x0, 0x4af, 0x0, 0x4b1, 0x0, 0x4cf, 0x0, 0x4d8, 0x308, 0x0, 0x4d9, 0x0, 0x4d9, 0x308, 0x0, 0x4e8, 0x308, 0x0, 0x4e9, 0x0, 0x4e9, 0x308, 0x0, 0x565, 0x582, 0x0, 0x574, 0x565, 0x0, 0x574, 0x56b, 0x0, 0x574, 0x56d, 0x0, 0x574, 0x576, 0x0, 0x57e, 0x576, 0x0, 0x5d0, 0x0, 0x5d0, 0x5b7, 0x0, 0x5d0, 0x5b8, 0x0, 0x5d0, 0x5bc, 0x0, 0x5d0, 0x5dc, 0x0, 0x5d1, 0x0, 0x5d1, 0x5bc, 0x0, 0x5d1, 0x5bf, 0x0, 0x5d2, 0x0, 0x5d2, 0x5bc, 0x0, 0x5d3, 0x0, 0x5d3, 0x5bc, 0x0, 0x5d4, 0x0, 0x5d4, 0x5bc, 0x0, 0x5d5, 0x5b9, 0x0, 0x5d5, 0x5bc, 0x0, 0x5d6, 0x5bc, 0x0, 0x5d8, 0x5bc, 0x0, 0x5d9, 0x5b4, 0x0, 0x5d9, 0x5bc, 0x0, 0x5da, 0x5bc, 0x0, 0x5db, 0x0, 0x5db, 0x5bc, 0x0, 0x5db, 0x5bf, 0x0, 0x5dc, 0x0, 0x5dc, 0x5bc, 0x0, 0x5dd, 0x0, 0x5de, 0x5bc, 0x0, 0x5e0, 0x5bc, 0x0, 0x5e1, 0x5bc, 0x0, 0x5e2, 0x0, 0x5e3, 0x5bc, 0x0, 0x5e4, 0x5bc, 0x0, 0x5e4, 0x5bf, 0x0, 0x5e6, 0x5bc, 0x0, 0x5e7, 0x5bc, 0x0, 0x5e8, 0x0, 0x5e8, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x5c1, 0x0, 0x5e9, 0x5bc, 0x5c2, 0x0, 0x5e9, 0x5c1, 0x0, 0x5e9, 0x5c2, 0x0, 0x5ea, 0x0, 0x5ea, 0x5bc, 0x0, 0x5f2, 0x5b7, 0x0, 0x621, 0x0, 0x627, 0x0, 0x627, 0x643, 0x628, 0x631, 0x0, 0x627, 0x644, 0x644, 0x647, 0x0, 0x627, 0x64b, 0x0, 0x627, 0x653, 0x0, 0x627, 0x654, 0x0, 0x627, 0x655, 0x0, 0x627, 0x674, 0x0, 0x628, 0x0, 0x628, 0x62c, 0x0, 0x628, 0x62d, 0x0, 0x628, 0x62d, 0x64a, 0x0, 0x628, 0x62e, 0x0, 0x628, 0x62e, 0x64a, 0x0, 0x628, 0x631, 0x0, 0x628, 0x632, 0x0, 0x628, 0x645, 0x0, 0x628, 0x646, 0x0, 0x628, 0x647, 0x0, 0x628, 0x649, 0x0, 0x628, 0x64a, 0x0, 0x629, 0x0, 0x62a, 0x0, 0x62a, 0x62c, 0x0, 0x62a, 0x62c, 0x645, 0x0, 0x62a, 0x62c, 0x649, 0x0, 0x62a, 0x62c, 0x64a, 0x0, 0x62a, 0x62d, 0x0, 0x62a, 0x62d, 0x62c, 0x0, 0x62a, 0x62d, 0x645, 0x0, 0x62a, 0x62e, 0x0, 0x62a, 0x62e, 0x645, 0x0, 0x62a, 0x62e, 0x649, 0x0, 0x62a, 0x62e, 0x64a, 0x0, 0x62a, 0x631, 0x0, 0x62a, 0x632, 0x0, 0x62a, 0x645, 0x0, 0x62a, 0x645, 0x62c, 0x0, 0x62a, 0x645, 0x62d, 0x0, 0x62a, 0x645, 0x62e, 0x0, 0x62a, 0x645, 0x649, 0x0, 0x62a, 0x645, 0x64a, 0x0, 0x62a, 0x646, 0x0, 0x62a, 0x647, 0x0, 0x62a, 0x649, 0x0, 0x62a, 0x64a, 0x0, 0x62b, 0x0, 0x62b, 0x62c, 0x0, 0x62b, 0x631, 0x0, 0x62b, 0x632, 0x0, 0x62b, 0x645, 0x0, 0x62b, 0x646, 0x0, 0x62b, 0x647, 0x0, 0x62b, 0x649, 0x0, 0x62b, 0x64a, 0x0, 0x62c, 0x0, 0x62c, 0x62d, 0x0, 0x62c, 0x62d, 0x649, 0x0, 0x62c, 0x62d, 0x64a, 0x0, 0x62c, 0x644, 0x20, 0x62c, 0x644, 0x627, 0x644, 0x647, 0x0, 0x62c, 0x645, 0x0, 0x62c, 0x645, 0x62d, 0x0, 0x62c, 0x645, 0x649, 0x0, 0x62c, 0x645, 0x64a, 0x0, 0x62c, 0x649, 0x0, 0x62c, 0x64a, 0x0, 0x62d, 0x0, 0x62d, 0x62c, 0x0, 0x62d, 0x62c, 0x64a, 0x0, 0x62d, 0x645, 0x0, 0x62d, 0x645, 0x649, 0x0, 0x62d, 0x645, 0x64a, 0x0, 0x62d, 0x649, 0x0, 0x62d, 0x64a, 0x0, 0x62e, 0x0, 0x62e, 0x62c, 0x0, 0x62e, 0x62d, 0x0, 0x62e, 0x645, 0x0, 0x62e, 0x649, 0x0, 0x62e, 0x64a, 0x0, 0x62f, 0x0, 0x630, 0x0, 0x630, 0x670, 0x0, 0x631, 0x0, 0x631, 0x633, 0x648, 0x644, 0x0, 0x631, 0x670, 0x0, 0x631, 0x6cc, 0x627, 0x644, 0x0, 0x632, 0x0, 0x633, 0x0, 0x633, 0x62c, 0x0, 0x633, 0x62c, 0x62d, 0x0, 0x633, 0x62c, 0x649, 0x0, 0x633, 0x62d, 0x0, 0x633, 0x62d, 0x62c, 0x0, 0x633, 0x62e, 0x0, 0x633, 0x62e, 0x649, 0x0, 0x633, 0x62e, 0x64a, 0x0, 0x633, 0x631, 0x0, 0x633, 0x645, 0x0, 0x633, 0x645, 0x62c, 0x0, 0x633, 0x645, 0x62d, 0x0, 0x633, 0x645, 0x645, 0x0, 0x633, 0x647, 0x0, 0x633, 0x649, 0x0, 0x633, 0x64a, 0x0, 0x634, 0x0, 0x634, 0x62c, 0x0, 0x634, 0x62c, 0x64a, 0x0, 0x634, 0x62d, 0x0, 0x634, 0x62d, 0x645, 0x0, 0x634, 0x62d, 0x64a, 0x0, 0x634, 0x62e, 0x0, 0x634, 0x631, 0x0, 0x634, 0x645, 0x0, 0x634, 0x645, 0x62e, 0x0, 0x634, 0x645, 0x645, 0x0, 0x634, 0x647, 0x0, 0x634, 0x649, 0x0, 0x634, 0x64a, 0x0, 0x635, 0x0, 0x635, 0x62d, 0x0, 0x635, 0x62d, 0x62d, 0x0, 0x635, 0x62d, 0x64a, 0x0, 0x635, 0x62e, 0x0, 0x635, 0x631, 0x0, 0x635, 0x644, 0x639, 0x645, 0x0, 0x635, 0x644, 0x649, 0x0, 0x635, 0x644, 0x649, 0x20, 0x627, 0x644, 0x644, 0x647, 0x20, 0x639, 0x644, 0x64a, 0x647, 0x20, 0x648, 0x633, 0x644, 0x645, 0x0, 0x635, 0x644, 0x6d2, 0x0, 0x635, 0x645, 0x0, 0x635, 0x645, 0x645, 0x0, 0x635, 0x649, 0x0, 0x635, 0x64a, 0x0, 0x636, 0x0, 0x636, 0x62c, 0x0, 0x636, 0x62d, 0x0, 0x636, 0x62d, 0x649, 0x0, 0x636, 0x62d, 0x64a, 0x0, 0x636, 0x62e, 0x0, 0x636, 0x62e, 0x645, 0x0, 0x636, 0x631, 0x0, 0x636, 0x645, 0x0, 0x636, 0x649, 0x0, 0x636, 0x64a, 0x0, 0x637, 0x0, 0x637, 0x62d, 0x0, 0x637, 0x645, 0x0, 0x637, 0x645, 0x62d, 0x0, 0x637, 0x645, 0x645, 0x0, 0x637, 0x645, 0x64a, 0x0, 0x637, 0x649, 0x0, 0x637, 0x64a, 0x0, 0x638, 0x0, 0x638, 0x645, 0x0, 0x639, 0x0, 0x639, 0x62c, 0x0, 0x639, 0x62c, 0x645, 0x0, 0x639, 0x644, 0x64a, 0x647, 0x0, 0x639, 0x645, 0x0, 0x639, 0x645, 0x645, 0x0, 0x639, 0x645, 0x649, 0x0, 0x639, 0x645, 0x64a, 0x0, 0x639, 0x649, 0x0, 0x639, 0x64a, 0x0, 0x63a, 0x0, 0x63a, 0x62c, 0x0, 0x63a, 0x645, 0x0, 0x63a, 0x645, 0x645, 0x0, 0x63a, 0x645, 0x649, 0x0, 0x63a, 0x645, 0x64a, 0x0, 0x63a, 0x649, 0x0, 0x63a, 0x64a, 0x0, 0x640, 0x64b, 0x0, 0x640, 0x64e, 0x0, 0x640, 0x64e, 0x651, 0x0, 0x640, 0x64f, 0x0, 0x640, 0x64f, 0x651, 0x0, 0x640, 0x650, 0x0, 0x640, 0x650, 0x651, 0x0, 0x640, 0x651, 0x0, 0x640, 0x652, 0x0, 0x641, 0x0, 0x641, 0x62c, 0x0, 0x641, 0x62d, 0x0, 0x641, 0x62e, 0x0, 0x641, 0x62e, 0x645, 0x0, 0x641, 0x645, 0x0, 0x641, 0x645, 0x64a, 0x0, 0x641, 0x649, 0x0, 0x641, 0x64a, 0x0, 0x642, 0x0, 0x642, 0x62d, 0x0, 0x642, 0x644, 0x6d2, 0x0, 0x642, 0x645, 0x0, 0x642, 0x645, 0x62d, 0x0, 0x642, 0x645, 0x645, 0x0, 0x642, 0x645, 0x64a, 0x0, 0x642, 0x649, 0x0, 0x642, 0x64a, 0x0, 0x643, 0x0, 0x643, 0x627, 0x0, 0x643, 0x62c, 0x0, 0x643, 0x62d, 0x0, 0x643, 0x62e, 0x0, 0x643, 0x644, 0x0, 0x643, 0x645, 0x0, 0x643, 0x645, 0x645, 0x0, 0x643, 0x645, 0x64a, 0x0, 0x643, 0x649, 0x0, 0x643, 0x64a, 0x0, 0x644, 0x0, 0x644, 0x627, 0x0, 0x644, 0x627, 0x653, 0x0, 0x644, 0x627, 0x654, 0x0, 0x644, 0x627, 0x655, 0x0, 0x644, 0x62c, 0x0, 0x644, 0x62c, 0x62c, 0x0, 0x644, 0x62c, 0x645, 0x0, 0x644, 0x62c, 0x64a, 0x0, 0x644, 0x62d, 0x0, 0x644, 0x62d, 0x645, 0x0, 0x644, 0x62d, 0x649, 0x0, 0x644, 0x62d, 0x64a, 0x0, 0x644, 0x62e, 0x0, 0x644, 0x62e, 0x645, 0x0, 0x644, 0x645, 0x0, 0x644, 0x645, 0x62d, 0x0, 0x644, 0x645, 0x64a, 0x0, 0x644, 0x647, 0x0, 0x644, 0x649, 0x0, 0x644, 0x64a, 0x0, 0x645, 0x0, 0x645, 0x627, 0x0, 0x645, 0x62c, 0x0, 0x645, 0x62c, 0x62d, 0x0, 0x645, 0x62c, 0x62e, 0x0, 0x645, 0x62c, 0x645, 0x0, 0x645, 0x62c, 0x64a, 0x0, 0x645, 0x62d, 0x0, 0x645, 0x62d, 0x62c, 0x0, 0x645, 0x62d, 0x645, 0x0, 0x645, 0x62d, 0x645, 0x62f, 0x0, 0x645, 0x62d, 0x64a, 0x0, 0x645, 0x62e, 0x0, 0x645, 0x62e, 0x62c, 0x0, 0x645, 0x62e, 0x645, 0x0, 0x645, 0x62e, 0x64a, 0x0, 0x645, 0x645, 0x0, 0x645, 0x645, 0x64a, 0x0, 0x645, 0x649, 0x0, 0x645, 0x64a, 0x0, 0x646, 0x0, 0x646, 0x62c, 0x0, 0x646, 0x62c, 0x62d, 0x0, 0x646, 0x62c, 0x645, 0x0, 0x646, 0x62c, 0x649, 0x0, 0x646, 0x62c, 0x64a, 0x0, 0x646, 0x62d, 0x0, 0x646, 0x62d, 0x645, 0x0, 0x646, 0x62d, 0x649, 0x0, 0x646, 0x62d, 0x64a, 0x0, 0x646, 0x62e, 0x0, 0x646, 0x631, 0x0, 0x646, 0x632, 0x0, 0x646, 0x645, 0x0, 0x646, 0x645, 0x649, 0x0, 0x646, 0x645, 0x64a, 0x0, 0x646, 0x646, 0x0, 0x646, 0x647, 0x0, 0x646, 0x649, 0x0, 0x646, 0x64a, 0x0, 0x647, 0x0, 0x647, 0x62c, 0x0, 0x647, 0x645, 0x0, 0x647, 0x645, 0x62c, 0x0, 0x647, 0x645, 0x645, 0x0, 0x647, 0x649, 0x0, 0x647, 0x64a, 0x0, 0x647, 0x670, 0x0, 0x648, 0x0, 0x648, 0x633, 0x644, 0x645, 0x0, 0x648, 0x654, 0x0, 0x648, 0x674, 0x0, 0x649, 0x0, 0x649, 0x670, 0x0, 0x64a, 0x0, 0x64a, 0x62c, 0x0, 0x64a, 0x62c, 0x64a, 0x0, 0x64a, 0x62d, 0x0, 0x64a, 0x62d, 0x64a, 0x0, 0x64a, 0x62e, 0x0, 0x64a, 0x631, 0x0, 0x64a, 0x632, 0x0, 0x64a, 0x645, 0x0, 0x64a, 0x645, 0x645, 0x0, 0x64a, 0x645, 0x64a, 0x0, 0x64a, 0x646, 0x0, 0x64a, 0x647, 0x0, 0x64a, 0x649, 0x0, 0x64a, 0x64a, 0x0, 0x64a, 0x654, 0x0, 0x64a, 0x654, 0x627, 0x0, 0x64a, 0x654, 0x62c, 0x0, 0x64a, 0x654, 0x62d, 0x0, 0x64a, 0x654, 0x62e, 0x0, 0x64a, 0x654, 0x631, 0x0, 0x64a, 0x654, 0x632, 0x0, 0x64a, 0x654, 0x645, 0x0, 0x64a, 0x654, 0x646, 0x0, 0x64a, 0x654, 0x647, 0x0, 0x64a, 0x654, 0x648, 0x0, 0x64a, 0x654, 0x649, 0x0, 0x64a, 0x654, 0x64a, 0x0, 0x64a, 0x654, 0x6c6, 0x0, 0x64a, 0x654, 0x6c7, 0x0, 0x64a, 0x654, 0x6c8, 0x0, 0x64a, 0x654, 0x6d0, 0x0, 0x64a, 0x654, 0x6d5, 0x0, 0x64a, 0x674, 0x0, 0x66e, 0x0, 0x66f, 0x0, 0x671, 0x0, 0x679, 0x0, 0x67a, 0x0, 0x67b, 0x0, 0x67e, 0x0, 0x67f, 0x0, 0x680, 0x0, 0x683, 0x0, 0x684, 0x0, 0x686, 0x0, 0x687, 0x0, 0x688, 0x0, 0x68c, 0x0, 0x68d, 0x0, 0x68e, 0x0, 0x691, 0x0, 0x698, 0x0, 0x6a1, 0x0, 0x6a4, 0x0, 0x6a6, 0x0, 0x6a9, 0x0, 0x6ad, 0x0, 0x6af, 0x0, 0x6b1, 0x0, 0x6b3, 0x0, 0x6ba, 0x0, 0x6bb, 0x0, 0x6be, 0x0, 0x6c1, 0x0, 0x6c1, 0x654, 0x0, 0x6c5, 0x0, 0x6c6, 0x0, 0x6c7, 0x0, 0x6c7, 0x674, 0x0, 0x6c8, 0x0, 0x6c9, 0x0, 0x6cb, 0x0, 0x6cc, 0x0, 0x6d0, 0x0, 0x6d2, 0x0, 0x6d2, 0x654, 0x0, 0x6d5, 0x654, 0x0, 0x915, 0x93c, 0x0, 0x916, 0x93c, 0x0, 0x917, 0x93c, 0x0, 0x91c, 0x93c, 0x0, 0x921, 0x93c, 0x0, 0x922, 0x93c, 0x0, 0x928, 0x93c, 0x0, 0x92b, 0x93c, 0x0, 0x92f, 0x93c, 0x0, 0x930, 0x93c, 0x0, 0x933, 0x93c, 0x0, 0x9a1, 0x9bc, 0x0, 0x9a2, 0x9bc, 0x0, 0x9af, 0x9bc, 0x0, 0x9c7, 0x9be, 0x0, 0x9c7, 0x9d7, 0x0, 0xa16, 0xa3c, 0x0, 0xa17, 0xa3c, 0x0, 0xa1c, 0xa3c, 0x0, 0xa2b, 0xa3c, 0x0, 0xa32, 0xa3c, 0x0, 0xa38, 0xa3c, 0x0, 0xb21, 0xb3c, 0x0, 0xb22, 0xb3c, 0x0, 0xb47, 0xb3e, 0x0, 0xb47, 0xb56, 0x0, 0xb47, 0xb57, 0x0, 0xb92, 0xbd7, 0x0, 0xbc6, 0xbbe, 0x0, 0xbc6, 0xbd7, 0x0, 0xbc7, 0xbbe, 0x0, 0xc46, 0xc56, 0x0, 0xcbf, 0xcd5, 0x0, 0xcc6, 0xcc2, 0x0, 0xcc6, 0xcc2, 0xcd5, 0x0, 0xcc6, 0xcd5, 0x0, 0xcc6, 0xcd6, 0x0, 0xd46, 0xd3e, 0x0, 0xd46, 0xd57, 0x0, 0xd47, 0xd3e, 0x0, 0xdd9, 0xdca, 0x0, 0xdd9, 0xdcf, 0x0, 0xdd9, 0xdcf, 0xdca, 0x0, 0xdd9, 0xddf, 0x0, 0xe4d, 0xe32, 0x0, 0xeab, 0xe99, 0x0, 0xeab, 0xea1, 0x0, 0xecd, 0xeb2, 0x0, 0xf0b, 0x0, 0xf40, 0xfb5, 0x0, 0xf42, 0xfb7, 0x0, 0xf4c, 0xfb7, 0x0, 0xf51, 0xfb7, 0x0, 0xf56, 0xfb7, 0x0, 0xf5b, 0xfb7, 0x0, 0xf71, 0xf72, 0x0, 0xf71, 0xf74, 0x0, 0xf71, 0xf80, 0x0, 0xf90, 0xfb5, 0x0, 0xf92, 0xfb7, 0x0, 0xf9c, 0xfb7, 0x0, 0xfa1, 0xfb7, 0x0, 0xfa6, 0xfb7, 0x0, 0xfab, 0xfb7, 0x0, 0xfb2, 0xf71, 0xf80, 0x0, 0xfb2, 0xf80, 0x0, 0xfb3, 0xf71, 0xf80, 0x0, 0xfb3, 0xf80, 0x0, 0x1025, 0x102e, 0x0, 0x10dc, 0x0, 0x1100, 0x0, 0x1100, 0x1161, 0x0, 0x1101, 0x0, 0x1102, 0x0, 0x1102, 0x1161, 0x0, 0x1103, 0x0, 0x1103, 0x1161, 0x0, 0x1104, 0x0, 0x1105, 0x0, 0x1105, 0x1161, 0x0, 0x1106, 0x0, 0x1106, 0x1161, 0x0, 0x1107, 0x0, 0x1107, 0x1161, 0x0, 0x1108, 0x0, 0x1109, 0x0, 0x1109, 0x1161, 0x0, 0x110a, 0x0, 0x110b, 0x0, 0x110b, 0x1161, 0x0, 0x110b, 0x116e, 0x0, 0x110c, 0x0, 0x110c, 0x1161, 0x0, 0x110c, 0x116e, 0x110b, 0x1174, 0x0, 0x110d, 0x0, 0x110e, 0x0, 0x110e, 0x1161, 0x0, 0x110e, 0x1161, 0x11b7, 0x1100, 0x1169, 0x0, 0x110f, 0x0, 0x110f, 0x1161, 0x0, 0x1110, 0x0, 0x1110, 0x1161, 0x0, 0x1111, 0x0, 0x1111, 0x1161, 0x0, 0x1112, 0x0, 0x1112, 0x1161, 0x0, 0x1114, 0x0, 0x1115, 0x0, 0x111a, 0x0, 0x111c, 0x0, 0x111d, 0x0, 0x111e, 0x0, 0x1120, 0x0, 0x1121, 0x0, 0x1122, 0x0, 0x1123, 0x0, 0x1127, 0x0, 0x1129, 0x0, 0x112b, 0x0, 0x112c, 0x0, 0x112d, 0x0, 0x112e, 0x0, 0x112f, 0x0, 0x1132, 0x0, 0x1136, 0x0, 0x1140, 0x0, 0x1147, 0x0, 0x114c, 0x0, 0x1157, 0x0, 0x1158, 0x0, 0x1159, 0x0, 0x1160, 0x0, 0x1161, 0x0, 0x1162, 0x0, 0x1163, 0x0, 0x1164, 0x0, 0x1165, 0x0, 0x1166, 0x0, 0x1167, 0x0, 0x1168, 0x0, 0x1169, 0x0, 0x116a, 0x0, 0x116b, 0x0, 0x116c, 0x0, 0x116d, 0x0, 0x116e, 0x0, 0x116f, 0x0, 0x1170, 0x0, 0x1171, 0x0, 0x1172, 0x0, 0x1173, 0x0, 0x1174, 0x0, 0x1175, 0x0, 0x1184, 0x0, 0x1185, 0x0, 0x1188, 0x0, 0x1191, 0x0, 0x1192, 0x0, 0x1194, 0x0, 0x119e, 0x0, 0x11a1, 0x0, 0x11aa, 0x0, 0x11ac, 0x0, 0x11ad, 0x0, 0x11b0, 0x0, 0x11b1, 0x0, 0x11b2, 0x0, 0x11b3, 0x0, 0x11b4, 0x0, 0x11b5, 0x0, 0x11c7, 0x0, 0x11c8, 0x0, 0x11cc, 0x0, 0x11ce, 0x0, 0x11d3, 0x0, 0x11d7, 0x0, 0x11d9, 0x0, 0x11dd, 0x0, 0x11df, 0x0, 0x11f1, 0x0, 0x11f2, 0x0, 0x1b05, 0x1b35, 0x0, 0x1b07, 0x1b35, 0x0, 0x1b09, 0x1b35, 0x0, 0x1b0b, 0x1b35, 0x0, 0x1b0d, 0x1b35, 0x0, 0x1b11, 0x1b35, 0x0, 0x1b3a, 0x1b35, 0x0, 0x1b3c, 0x1b35, 0x0, 0x1b3e, 0x1b35, 0x0, 0x1b3f, 0x1b35, 0x0, 0x1b42, 0x1b35, 0x0, 0x1d02, 0x0, 0x1d16, 0x0, 0x1d17, 0x0, 0x1d1c, 0x0, 0x1d1d, 0x0, 0x1d25, 0x0, 0x1d7b, 0x0, 0x1d85, 0x0, 0x1d91, 0x0, 0x2010, 0x0, 0x2013, 0x0, 0x2014, 0x0, 0x2032, 0x2032, 0x0, 0x2032, 0x2032, 0x2032, 0x0, 0x2032, 0x2032, 0x2032, 0x2032, 0x0, 0x2035, 0x2035, 0x0, 0x2035, 0x2035, 0x2035, 0x0, 0x20a9, 0x0, 0x2190, 0x0, 0x2190, 0x338, 0x0, 0x2191, 0x0, 0x2192, 0x0, 0x2192, 0x338, 0x0, 0x2193, 0x0, 0x2194, 0x338, 0x0, 0x21d0, 0x338, 0x0, 0x21d2, 0x338, 0x0, 0x21d4, 0x338, 0x0, 0x2202, 0x0, 0x2203, 0x338, 0x0, 0x2207, 0x0, 0x2208, 0x338, 0x0, 0x220b, 0x338, 0x0, 0x2211, 0x0, 0x2212, 0x0, 0x2223, 0x338, 0x0, 0x2225, 0x338, 0x0, 0x222b, 0x222b, 0x0, 0x222b, 0x222b, 0x222b, 0x0, 0x222b, 0x222b, 0x222b, 0x222b, 0x0, 0x222e, 0x222e, 0x0, 0x222e, 0x222e, 0x222e, 0x0, 0x223c, 0x338, 0x0, 0x2243, 0x338, 0x0, 0x2245, 0x338, 0x0, 0x2248, 0x338, 0x0, 0x224d, 0x338, 0x0, 0x2261, 0x338, 0x0, 0x2264, 0x338, 0x0, 0x2265, 0x338, 0x0, 0x2272, 0x338, 0x0, 0x2273, 0x338, 0x0, 0x2276, 0x338, 0x0, 0x2277, 0x338, 0x0, 0x227a, 0x338, 0x0, 0x227b, 0x338, 0x0, 0x227c, 0x338, 0x0, 0x227d, 0x338, 0x0, 0x2282, 0x338, 0x0, 0x2283, 0x338, 0x0, 0x2286, 0x338, 0x0, 0x2287, 0x338, 0x0, 0x2291, 0x338, 0x0, 0x2292, 0x338, 0x0, 0x22a2, 0x338, 0x0, 0x22a8, 0x338, 0x0, 0x22a9, 0x338, 0x0, 0x22ab, 0x338, 0x0, 0x22b2, 0x338, 0x0, 0x22b3, 0x338, 0x0, 0x22b4, 0x338, 0x0, 0x22b5, 0x338, 0x0, 0x2502, 0x0, 0x25a0, 0x0, 0x25cb, 0x0, 0x2985, 0x0, 0x2986, 0x0, 0x2add, 0x338, 0x0, 0x2c71, 0x0, 0x2d61, 0x0, 0x3001, 0x0, 0x3002, 0x0, 0x3008, 0x0, 0x3009, 0x0, 0x300a, 0x0, 0x300b, 0x0, 0x300c, 0x0, 0x300d, 0x0, 0x300e, 0x0, 0x300f, 0x0, 0x3010, 0x0, 0x3011, 0x0, 0x3012, 0x0, 0x3014, 0x0, 0x3014, 0x53, 0x3015, 0x0, 0x3014, 0x4e09, 0x3015, 0x0, 0x3014, 0x4e8c, 0x3015, 0x0, 0x3014, 0x52dd, 0x3015, 0x0, 0x3014, 0x5b89, 0x3015, 0x0, 0x3014, 0x6253, 0x3015, 0x0, 0x3014, 0x6557, 0x3015, 0x0, 0x3014, 0x672c, 0x3015, 0x0, 0x3014, 0x70b9, 0x3015, 0x0, 0x3014, 0x76d7, 0x3015, 0x0, 0x3015, 0x0, 0x3016, 0x0, 0x3017, 0x0, 0x3046, 0x3099, 0x0, 0x304b, 0x3099, 0x0, 0x304d, 0x3099, 0x0, 0x304f, 0x3099, 0x0, 0x3051, 0x3099, 0x0, 0x3053, 0x3099, 0x0, 0x3055, 0x3099, 0x0, 0x3057, 0x3099, 0x0, 0x3059, 0x3099, 0x0, 0x305b, 0x3099, 0x0, 0x305d, 0x3099, 0x0, 0x305f, 0x3099, 0x0, 0x3061, 0x3099, 0x0, 0x3064, 0x3099, 0x0, 0x3066, 0x3099, 0x0, 0x3068, 0x3099, 0x0, 0x306f, 0x3099, 0x0, 0x306f, 0x309a, 0x0, 0x3072, 0x3099, 0x0, 0x3072, 0x309a, 0x0, 0x3075, 0x3099, 0x0, 0x3075, 0x309a, 0x0, 0x3078, 0x3099, 0x0, 0x3078, 0x309a, 0x0, 0x307b, 0x304b, 0x0, 0x307b, 0x3099, 0x0, 0x307b, 0x309a, 0x0, 0x3088, 0x308a, 0x0, 0x3099, 0x0, 0x309a, 0x0, 0x309d, 0x3099, 0x0, 0x30a1, 0x0, 0x30a2, 0x0, 0x30a2, 0x30cf, 0x309a, 0x30fc, 0x30c8, 0x0, 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0x0, 0x30a2, 0x30f3, 0x30d8, 0x309a, 0x30a2, 0x0, 0x30a2, 0x30fc, 0x30eb, 0x0, 0x30a3, 0x0, 0x30a4, 0x0, 0x30a4, 0x30cb, 0x30f3, 0x30af, 0x3099, 0x0, 0x30a4, 0x30f3, 0x30c1, 0x0, 0x30a5, 0x0, 0x30a6, 0x0, 0x30a6, 0x3099, 0x0, 0x30a6, 0x30a9, 0x30f3, 0x0, 0x30a7, 0x0, 0x30a8, 0x0, 0x30a8, 0x30b9, 0x30af, 0x30fc, 0x30c8, 0x3099, 0x0, 0x30a8, 0x30fc, 0x30ab, 0x30fc, 0x0, 0x30a9, 0x0, 0x30aa, 0x0, 0x30aa, 0x30f3, 0x30b9, 0x0, 0x30aa, 0x30fc, 0x30e0, 0x0, 0x30ab, 0x0, 0x30ab, 0x3099, 0x0, 0x30ab, 0x3099, 0x30ed, 0x30f3, 0x0, 0x30ab, 0x3099, 0x30f3, 0x30de, 0x0, 0x30ab, 0x30a4, 0x30ea, 0x0, 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0x0, 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0x0, 0x30ad, 0x0, 0x30ad, 0x3099, 0x0, 0x30ad, 0x3099, 0x30ab, 0x3099, 0x0, 0x30ad, 0x3099, 0x30cb, 0x30fc, 0x0, 0x30ad, 0x3099, 0x30eb, 0x30bf, 0x3099, 0x30fc, 0x0, 0x30ad, 0x30e5, 0x30ea, 0x30fc, 0x0, 0x30ad, 0x30ed, 0x0, 0x30ad, 0x30ed, 0x30af, 0x3099, 0x30e9, 0x30e0, 0x0, 0x30ad, 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x0, 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0x0, 0x30af, 0x0, 0x30af, 0x3099, 0x0, 0x30af, 0x3099, 0x30e9, 0x30e0, 0x0, 0x30af, 0x3099, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0x0, 0x30af, 0x30eb, 0x30bb, 0x3099, 0x30a4, 0x30ed, 0x0, 0x30af, 0x30ed, 0x30fc, 0x30cd, 0x0, 0x30b1, 0x0, 0x30b1, 0x3099, 0x0, 0x30b1, 0x30fc, 0x30b9, 0x0, 0x30b3, 0x0, 0x30b3, 0x3099, 0x0, 0x30b3, 0x30b3, 0x0, 0x30b3, 0x30c8, 0x0, 0x30b3, 0x30eb, 0x30ca, 0x0, 0x30b3, 0x30fc, 0x30db, 0x309a, 0x0, 0x30b5, 0x0, 0x30b5, 0x3099, 0x0, 0x30b5, 0x30a4, 0x30af, 0x30eb, 0x0, 0x30b5, 0x30f3, 0x30c1, 0x30fc, 0x30e0, 0x0, 0x30b7, 0x0, 0x30b7, 0x3099, 0x0, 0x30b7, 0x30ea, 0x30f3, 0x30af, 0x3099, 0x0, 0x30b9, 0x0, 0x30b9, 0x3099, 0x0, 0x30bb, 0x0, 0x30bb, 0x3099, 0x0, 0x30bb, 0x30f3, 0x30c1, 0x0, 0x30bb, 0x30f3, 0x30c8, 0x0, 0x30bd, 0x0, 0x30bd, 0x3099, 0x0, 0x30bf, 0x0, 0x30bf, 0x3099, 0x0, 0x30bf, 0x3099, 0x30fc, 0x30b9, 0x0, 0x30c1, 0x0, 0x30c1, 0x3099, 0x0, 0x30c3, 0x0, 0x30c4, 0x0, 0x30c4, 0x3099, 0x0, 0x30c6, 0x0, 0x30c6, 0x3099, 0x0, 0x30c6, 0x3099, 0x30b7, 0x0, 0x30c8, 0x0, 0x30c8, 0x3099, 0x0, 0x30c8, 0x3099, 0x30eb, 0x0, 0x30c8, 0x30f3, 0x0, 0x30ca, 0x0, 0x30ca, 0x30ce, 0x0, 0x30cb, 0x0, 0x30cc, 0x0, 0x30cd, 0x0, 0x30ce, 0x0, 0x30ce, 0x30c3, 0x30c8, 0x0, 0x30cf, 0x0, 0x30cf, 0x3099, 0x0, 0x30cf, 0x3099, 0x30fc, 0x30ec, 0x30eb, 0x0, 0x30cf, 0x309a, 0x0, 0x30cf, 0x309a, 0x30fc, 0x30bb, 0x30f3, 0x30c8, 0x0, 0x30cf, 0x309a, 0x30fc, 0x30c4, 0x0, 0x30cf, 0x30a4, 0x30c4, 0x0, 0x30d2, 0x0, 0x30d2, 0x3099, 0x0, 0x30d2, 0x3099, 0x30eb, 0x0, 0x30d2, 0x309a, 0x0, 0x30d2, 0x309a, 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0x0, 0x30d2, 0x309a, 0x30af, 0x30eb, 0x0, 0x30d2, 0x309a, 0x30b3, 0x0, 0x30d5, 0x0, 0x30d5, 0x3099, 0x0, 0x30d5, 0x3099, 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0x0, 0x30d5, 0x309a, 0x0, 0x30d5, 0x30a1, 0x30e9, 0x30c3, 0x30c8, 0x3099, 0x0, 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0x0, 0x30d5, 0x30e9, 0x30f3, 0x0, 0x30d8, 0x0, 0x30d8, 0x3099, 0x0, 0x30d8, 0x3099, 0x30fc, 0x30bf, 0x0, 0x30d8, 0x309a, 0x0, 0x30d8, 0x309a, 0x30bd, 0x0, 0x30d8, 0x309a, 0x30cb, 0x30d2, 0x0, 0x30d8, 0x309a, 0x30f3, 0x30b9, 0x0, 0x30d8, 0x309a, 0x30fc, 0x30b7, 0x3099, 0x0, 0x30d8, 0x30af, 0x30bf, 0x30fc, 0x30eb, 0x0, 0x30d8, 0x30eb, 0x30c4, 0x0, 0x30db, 0x0, 0x30db, 0x3099, 0x0, 0x30db, 0x3099, 0x30eb, 0x30c8, 0x0, 0x30db, 0x309a, 0x0, 0x30db, 0x309a, 0x30a4, 0x30f3, 0x30c8, 0x0, 0x30db, 0x309a, 0x30f3, 0x30c8, 0x3099, 0x0, 0x30db, 0x30f3, 0x0, 0x30db, 0x30fc, 0x30eb, 0x0, 0x30db, 0x30fc, 0x30f3, 0x0, 0x30de, 0x0, 0x30de, 0x30a4, 0x30af, 0x30ed, 0x0, 0x30de, 0x30a4, 0x30eb, 0x0, 0x30de, 0x30c3, 0x30cf, 0x0, 0x30de, 0x30eb, 0x30af, 0x0, 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0x0, 0x30df, 0x0, 0x30df, 0x30af, 0x30ed, 0x30f3, 0x0, 0x30df, 0x30ea, 0x0, 0x30df, 0x30ea, 0x30cf, 0x3099, 0x30fc, 0x30eb, 0x0, 0x30e0, 0x0, 0x30e1, 0x0, 0x30e1, 0x30ab, 0x3099, 0x0, 0x30e1, 0x30ab, 0x3099, 0x30c8, 0x30f3, 0x0, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x0, 0x30e2, 0x0, 0x30e3, 0x0, 0x30e4, 0x0, 0x30e4, 0x30fc, 0x30c8, 0x3099, 0x0, 0x30e4, 0x30fc, 0x30eb, 0x0, 0x30e5, 0x0, 0x30e6, 0x0, 0x30e6, 0x30a2, 0x30f3, 0x0, 0x30e7, 0x0, 0x30e8, 0x0, 0x30e9, 0x0, 0x30ea, 0x0, 0x30ea, 0x30c3, 0x30c8, 0x30eb, 0x0, 0x30ea, 0x30e9, 0x0, 0x30eb, 0x0, 0x30eb, 0x30d2, 0x309a, 0x30fc, 0x0, 0x30eb, 0x30fc, 0x30d5, 0x3099, 0x30eb, 0x0, 0x30ec, 0x0, 0x30ec, 0x30e0, 0x0, 0x30ec, 0x30f3, 0x30c8, 0x30b1, 0x3099, 0x30f3, 0x0, 0x30ed, 0x0, 0x30ef, 0x0, 0x30ef, 0x3099, 0x0, 0x30ef, 0x30c3, 0x30c8, 0x0, 0x30f0, 0x0, 0x30f0, 0x3099, 0x0, 0x30f1, 0x0, 0x30f1, 0x3099, 0x0, 0x30f2, 0x0, 0x30f2, 0x3099, 0x0, 0x30f3, 0x0, 0x30fb, 0x0, 0x30fc, 0x0, 0x30fd, 0x3099, 0x0, 0x349e, 0x0, 0x34b9, 0x0, 0x34bb, 0x0, 0x34df, 0x0, 0x3515, 0x0, 0x36ee, 0x0, 0x36fc, 0x0, 0x3781, 0x0, 0x382f, 0x0, 0x3862, 0x0, 0x387c, 0x0, 0x38c7, 0x0, 0x38e3, 0x0, 0x391c, 0x0, 0x393a, 0x0, 0x3a2e, 0x0, 0x3a6c, 0x0, 0x3ae4, 0x0, 0x3b08, 0x0, 0x3b19, 0x0, 0x3b49, 0x0, 0x3b9d, 0x0, 0x3c18, 0x0, 0x3c4e, 0x0, 0x3d33, 0x0, 0x3d96, 0x0, 0x3eac, 0x0, 0x3eb8, 0x0, 0x3f1b, 0x0, 0x3ffc, 0x0, 0x4008, 0x0, 0x4018, 0x0, 0x4039, 0x0, 0x4046, 0x0, 0x4096, 0x0, 0x40e3, 0x0, 0x412f, 0x0, 0x4202, 0x0, 0x4227, 0x0, 0x42a0, 0x0, 0x4301, 0x0, 0x4334, 0x0, 0x4359, 0x0, 0x43d5, 0x0, 0x43d9, 0x0, 0x440b, 0x0, 0x446b, 0x0, 0x452b, 0x0, 0x455d, 0x0, 0x4561, 0x0, 0x456b, 0x0, 0x45d7, 0x0, 0x45f9, 0x0, 0x4635, 0x0, 0x46be, 0x0, 0x46c7, 0x0, 0x4995, 0x0, 0x49e6, 0x0, 0x4a6e, 0x0, 0x4a76, 0x0, 0x4ab2, 0x0, 0x4b33, 0x0, 0x4bce, 0x0, 0x4cce, 0x0, 0x4ced, 0x0, 0x4cf8, 0x0, 0x4d56, 0x0, 0x4e00, 0x0, 0x4e01, 0x0, 0x4e03, 0x0, 0x4e09, 0x0, 0x4e0a, 0x0, 0x4e0b, 0x0, 0x4e0d, 0x0, 0x4e19, 0x0, 0x4e26, 0x0, 0x4e28, 0x0, 0x4e2d, 0x0, 0x4e32, 0x0, 0x4e36, 0x0, 0x4e38, 0x0, 0x4e39, 0x0, 0x4e3d, 0x0, 0x4e3f, 0x0, 0x4e41, 0x0, 0x4e59, 0x0, 0x4e5d, 0x0, 0x4e82, 0x0, 0x4e85, 0x0, 0x4e86, 0x0, 0x4e8c, 0x0, 0x4e94, 0x0, 0x4ea0, 0x0, 0x4ea4, 0x0, 0x4eae, 0x0, 0x4eba, 0x0, 0x4ec0, 0x0, 0x4ecc, 0x0, 0x4ee4, 0x0, 0x4ee4, 0x548c, 0x0, 0x4f01, 0x0, 0x4f11, 0x0, 0x4f60, 0x0, 0x4f80, 0x0, 0x4f86, 0x0, 0x4f8b, 0x0, 0x4fae, 0x0, 0x4fbb, 0x0, 0x4fbf, 0x0, 0x5002, 0x0, 0x502b, 0x0, 0x507a, 0x0, 0x5099, 0x0, 0x50cf, 0x0, 0x50da, 0x0, 0x50e7, 0x0, 0x512a, 0x0, 0x513f, 0x0, 0x5140, 0x0, 0x5145, 0x0, 0x514d, 0x0, 0x5154, 0x0, 0x5164, 0x0, 0x5165, 0x0, 0x5167, 0x0, 0x5168, 0x0, 0x5169, 0x0, 0x516b, 0x0, 0x516d, 0x0, 0x5177, 0x0, 0x5180, 0x0, 0x5182, 0x0, 0x518d, 0x0, 0x5192, 0x0, 0x5195, 0x0, 0x5196, 0x0, 0x5197, 0x0, 0x5199, 0x0, 0x51a4, 0x0, 0x51ab, 0x0, 0x51ac, 0x0, 0x51b5, 0x0, 0x51b7, 0x0, 0x51c9, 0x0, 0x51cc, 0x0, 0x51dc, 0x0, 0x51de, 0x0, 0x51e0, 0x0, 0x51f5, 0x0, 0x5200, 0x0, 0x5203, 0x0, 0x5207, 0x0, 0x5217, 0x0, 0x521d, 0x0, 0x5229, 0x0, 0x523a, 0x0, 0x523b, 0x0, 0x5246, 0x0, 0x524d, 0x0, 0x5272, 0x0, 0x5277, 0x0, 0x5289, 0x0, 0x529b, 0x0, 0x52a3, 0x0, 0x52b3, 0x0, 0x52b4, 0x0, 0x52c7, 0x0, 0x52c9, 0x0, 0x52d2, 0x0, 0x52de, 0x0, 0x52e4, 0x0, 0x52f5, 0x0, 0x52f9, 0x0, 0x52fa, 0x0, 0x5305, 0x0, 0x5306, 0x0, 0x5315, 0x0, 0x5317, 0x0, 0x531a, 0x0, 0x5338, 0x0, 0x533b, 0x0, 0x533f, 0x0, 0x5341, 0x0, 0x5344, 0x0, 0x5345, 0x0, 0x5349, 0x0, 0x5351, 0x0, 0x5354, 0x0, 0x535a, 0x0, 0x535c, 0x0, 0x5369, 0x0, 0x5370, 0x0, 0x5373, 0x0, 0x5375, 0x0, 0x537d, 0x0, 0x537f, 0x0, 0x5382, 0x0, 0x53b6, 0x0, 0x53c3, 0x0, 0x53c8, 0x0, 0x53ca, 0x0, 0x53cc, 0x0, 0x53df, 0x0, 0x53e3, 0x0, 0x53e5, 0x0, 0x53eb, 0x0, 0x53ef, 0x0, 0x53f1, 0x0, 0x53f3, 0x0, 0x5406, 0x0, 0x5408, 0x0, 0x540d, 0x0, 0x540f, 0x0, 0x541d, 0x0, 0x5438, 0x0, 0x5439, 0x0, 0x5442, 0x0, 0x5448, 0x0, 0x5468, 0x0, 0x549e, 0x0, 0x54a2, 0x0, 0x54bd, 0x0, 0x54f6, 0x0, 0x5510, 0x0, 0x554f, 0x0, 0x5553, 0x0, 0x5555, 0x0, 0x5563, 0x0, 0x5584, 0x0, 0x5587, 0x0, 0x5599, 0x0, 0x559d, 0x0, 0x55ab, 0x0, 0x55b3, 0x0, 0x55b6, 0x0, 0x55c0, 0x0, 0x55c2, 0x0, 0x55e2, 0x0, 0x5606, 0x0, 0x5651, 0x0, 0x5668, 0x0, 0x5674, 0x0, 0x56d7, 0x0, 0x56db, 0x0, 0x56f9, 0x0, 0x5716, 0x0, 0x5717, 0x0, 0x571f, 0x0, 0x5730, 0x0, 0x578b, 0x0, 0x57ce, 0x0, 0x57f4, 0x0, 0x580d, 0x0, 0x5831, 0x0, 0x5832, 0x0, 0x5840, 0x0, 0x585a, 0x0, 0x585e, 0x0, 0x58a8, 0x0, 0x58ac, 0x0, 0x58b3, 0x0, 0x58d8, 0x0, 0x58df, 0x0, 0x58eb, 0x0, 0x58ee, 0x0, 0x58f0, 0x0, 0x58f2, 0x0, 0x58f7, 0x0, 0x5902, 0x0, 0x5906, 0x0, 0x590a, 0x0, 0x5915, 0x0, 0x591a, 0x0, 0x591c, 0x0, 0x5922, 0x0, 0x5927, 0x0, 0x5927, 0x6b63, 0x0, 0x5929, 0x0, 0x5944, 0x0, 0x5948, 0x0, 0x5951, 0x0, 0x5954, 0x0, 0x5962, 0x0, 0x5973, 0x0, 0x59d8, 0x0, 0x59ec, 0x0, 0x5a1b, 0x0, 0x5a27, 0x0, 0x5a62, 0x0, 0x5a66, 0x0, 0x5ab5, 0x0, 0x5b08, 0x0, 0x5b28, 0x0, 0x5b3e, 0x0, 0x5b50, 0x0, 0x5b57, 0x0, 0x5b66, 0x0, 0x5b80, 0x0, 0x5b85, 0x0, 0x5b97, 0x0, 0x5bc3, 0x0, 0x5bd8, 0x0, 0x5be7, 0x0, 0x5bee, 0x0, 0x5bf3, 0x0, 0x5bf8, 0x0, 0x5bff, 0x0, 0x5c06, 0x0, 0x5c0f, 0x0, 0x5c22, 0x0, 0x5c38, 0x0, 0x5c3f, 0x0, 0x5c60, 0x0, 0x5c62, 0x0, 0x5c64, 0x0, 0x5c65, 0x0, 0x5c6e, 0x0, 0x5c71, 0x0, 0x5c8d, 0x0, 0x5cc0, 0x0, 0x5d19, 0x0, 0x5d43, 0x0, 0x5d50, 0x0, 0x5d6b, 0x0, 0x5d6e, 0x0, 0x5d7c, 0x0, 0x5db2, 0x0, 0x5dba, 0x0, 0x5ddb, 0x0, 0x5de1, 0x0, 0x5de2, 0x0, 0x5de5, 0x0, 0x5de6, 0x0, 0x5df1, 0x0, 0x5dfd, 0x0, 0x5dfe, 0x0, 0x5e28, 0x0, 0x5e3d, 0x0, 0x5e69, 0x0, 0x5e72, 0x0, 0x5e73, 0x6210, 0x0, 0x5e74, 0x0, 0x5e7a, 0x0, 0x5e7c, 0x0, 0x5e7f, 0x0, 0x5ea6, 0x0, 0x5eb0, 0x0, 0x5eb3, 0x0, 0x5eb6, 0x0, 0x5ec9, 0x0, 0x5eca, 0x0, 0x5ed2, 0x0, 0x5ed3, 0x0, 0x5ed9, 0x0, 0x5eec, 0x0, 0x5ef4, 0x0, 0x5efe, 0x0, 0x5f04, 0x0, 0x5f0b, 0x0, 0x5f13, 0x0, 0x5f22, 0x0, 0x5f50, 0x0, 0x5f53, 0x0, 0x5f61, 0x0, 0x5f62, 0x0, 0x5f69, 0x0, 0x5f6b, 0x0, 0x5f73, 0x0, 0x5f8b, 0x0, 0x5f8c, 0x0, 0x5f97, 0x0, 0x5f9a, 0x0, 0x5fa9, 0x0, 0x5fad, 0x0, 0x5fc3, 0x0, 0x5fcd, 0x0, 0x5fd7, 0x0, 0x5ff5, 0x0, 0x5ff9, 0x0, 0x6012, 0x0, 0x601c, 0x0, 0x6075, 0x0, 0x6081, 0x0, 0x6094, 0x0, 0x60c7, 0x0, 0x60d8, 0x0, 0x60e1, 0x0, 0x6108, 0x0, 0x6144, 0x0, 0x6148, 0x0, 0x614c, 0x0, 0x614e, 0x0, 0x6160, 0x0, 0x6168, 0x0, 0x617a, 0x0, 0x618e, 0x0, 0x6190, 0x0, 0x61a4, 0x0, 0x61af, 0x0, 0x61b2, 0x0, 0x61de, 0x0, 0x61f2, 0x0, 0x61f6, 0x0, 0x6200, 0x0, 0x6208, 0x0, 0x6210, 0x0, 0x621b, 0x0, 0x622e, 0x0, 0x6234, 0x0, 0x6236, 0x0, 0x624b, 0x0, 0x6253, 0x0, 0x625d, 0x0, 0x6295, 0x0, 0x62b1, 0x0, 0x62c9, 0x0, 0x62cf, 0x0, 0x62d3, 0x0, 0x62d4, 0x0, 0x62fc, 0x0, 0x62fe, 0x0, 0x6307, 0x0, 0x633d, 0x0, 0x6350, 0x0, 0x6355, 0x0, 0x6368, 0x0, 0x637b, 0x0, 0x6383, 0x0, 0x63a0, 0x0, 0x63a9, 0x0, 0x63c4, 0x0, 0x63c5, 0x0, 0x63e4, 0x0, 0x641c, 0x0, 0x6422, 0x0, 0x6452, 0x0, 0x6469, 0x0, 0x6477, 0x0, 0x647e, 0x0, 0x649a, 0x0, 0x649d, 0x0, 0x64c4, 0x0, 0x652f, 0x0, 0x6534, 0x0, 0x654f, 0x0, 0x6556, 0x0, 0x656c, 0x0, 0x6578, 0x0, 0x6587, 0x0, 0x6597, 0x0, 0x6599, 0x0, 0x65a4, 0x0, 0x65b0, 0x0, 0x65b9, 0x0, 0x65c5, 0x0, 0x65e0, 0x0, 0x65e2, 0x0, 0x65e3, 0x0, 0x65e5, 0x0, 0x660e, 0x6cbb, 0x0, 0x6613, 0x0, 0x6620, 0x0, 0x662d, 0x548c, 0x0, 0x6649, 0x0, 0x6674, 0x0, 0x6688, 0x0, 0x6691, 0x0, 0x669c, 0x0, 0x66b4, 0x0, 0x66c6, 0x0, 0x66f0, 0x0, 0x66f4, 0x0, 0x66f8, 0x0, 0x6700, 0x0, 0x6708, 0x0, 0x6709, 0x0, 0x6717, 0x0, 0x671b, 0x0, 0x6721, 0x0, 0x6728, 0x0, 0x674e, 0x0, 0x6753, 0x0, 0x6756, 0x0, 0x675e, 0x0, 0x677b, 0x0, 0x6785, 0x0, 0x6797, 0x0, 0x67f3, 0x0, 0x67fa, 0x0, 0x6817, 0x0, 0x681f, 0x0, 0x682a, 0x0, 0x682a, 0x5f0f, 0x4f1a, 0x793e, 0x0, 0x6852, 0x0, 0x6881, 0x0, 0x6885, 0x0, 0x688e, 0x0, 0x68a8, 0x0, 0x6914, 0x0, 0x6942, 0x0, 0x69a3, 0x0, 0x69ea, 0x0, 0x6a02, 0x0, 0x6a13, 0x0, 0x6aa8, 0x0, 0x6ad3, 0x0, 0x6adb, 0x0, 0x6b04, 0x0, 0x6b20, 0x0, 0x6b21, 0x0, 0x6b54, 0x0, 0x6b62, 0x0, 0x6b63, 0x0, 0x6b72, 0x0, 0x6b77, 0x0, 0x6b79, 0x0, 0x6b9f, 0x0, 0x6bae, 0x0, 0x6bb3, 0x0, 0x6bba, 0x0, 0x6bbb, 0x0, 0x6bcb, 0x0, 0x6bcd, 0x0, 0x6bd4, 0x0, 0x6bdb, 0x0, 0x6c0f, 0x0, 0x6c14, 0x0, 0x6c34, 0x0, 0x6c4e, 0x0, 0x6c67, 0x0, 0x6c88, 0x0, 0x6cbf, 0x0, 0x6ccc, 0x0, 0x6ccd, 0x0, 0x6ce5, 0x0, 0x6ce8, 0x0, 0x6d16, 0x0, 0x6d1b, 0x0, 0x6d1e, 0x0, 0x6d34, 0x0, 0x6d3e, 0x0, 0x6d41, 0x0, 0x6d69, 0x0, 0x6d6a, 0x0, 0x6d77, 0x0, 0x6d78, 0x0, 0x6d85, 0x0, 0x6dcb, 0x0, 0x6dda, 0x0, 0x6dea, 0x0, 0x6df9, 0x0, 0x6e1a, 0x0, 0x6e2f, 0x0, 0x6e6e, 0x0, 0x6e80, 0x0, 0x6e9c, 0x0, 0x6eba, 0x0, 0x6ec7, 0x0, 0x6ecb, 0x0, 0x6ed1, 0x0, 0x6edb, 0x0, 0x6f0f, 0x0, 0x6f14, 0x0, 0x6f22, 0x0, 0x6f23, 0x0, 0x6f6e, 0x0, 0x6fc6, 0x0, 0x6feb, 0x0, 0x6ffe, 0x0, 0x701b, 0x0, 0x701e, 0x0, 0x7039, 0x0, 0x704a, 0x0, 0x706b, 0x0, 0x7070, 0x0, 0x7077, 0x0, 0x707d, 0x0, 0x7099, 0x0, 0x70ad, 0x0, 0x70c8, 0x0, 0x70d9, 0x0, 0x7121, 0x0, 0x7145, 0x0, 0x7149, 0x0, 0x716e, 0x0, 0x719c, 0x0, 0x71ce, 0x0, 0x71d0, 0x0, 0x7210, 0x0, 0x721b, 0x0, 0x7228, 0x0, 0x722a, 0x0, 0x722b, 0x0, 0x7235, 0x0, 0x7236, 0x0, 0x723b, 0x0, 0x723f, 0x0, 0x7247, 0x0, 0x7250, 0x0, 0x7259, 0x0, 0x725b, 0x0, 0x7262, 0x0, 0x7279, 0x0, 0x7280, 0x0, 0x7295, 0x0, 0x72ac, 0x0, 0x72af, 0x0, 0x72c0, 0x0, 0x72fc, 0x0, 0x732a, 0x0, 0x7375, 0x0, 0x737a, 0x0, 0x7384, 0x0, 0x7387, 0x0, 0x7389, 0x0, 0x738b, 0x0, 0x73a5, 0x0, 0x73b2, 0x0, 0x73de, 0x0, 0x7406, 0x0, 0x7409, 0x0, 0x7422, 0x0, 0x7447, 0x0, 0x745c, 0x0, 0x7469, 0x0, 0x7471, 0x0, 0x7485, 0x0, 0x7489, 0x0, 0x7498, 0x0, 0x74ca, 0x0, 0x74dc, 0x0, 0x74e6, 0x0, 0x7506, 0x0, 0x7518, 0x0, 0x751f, 0x0, 0x7524, 0x0, 0x7528, 0x0, 0x7530, 0x0, 0x7532, 0x0, 0x7533, 0x0, 0x7537, 0x0, 0x753b, 0x0, 0x753e, 0x0, 0x7559, 0x0, 0x7565, 0x0, 0x7570, 0x0, 0x758b, 0x0, 0x7592, 0x0, 0x75e2, 0x0, 0x7610, 0x0, 0x761d, 0x0, 0x761f, 0x0, 0x7642, 0x0, 0x7669, 0x0, 0x7676, 0x0, 0x767d, 0x0, 0x76ae, 0x0, 0x76bf, 0x0, 0x76ca, 0x0, 0x76db, 0x0, 0x76e3, 0x0, 0x76e7, 0x0, 0x76ee, 0x0, 0x76f4, 0x0, 0x7701, 0x0, 0x771e, 0x0, 0x771f, 0x0, 0x7740, 0x0, 0x774a, 0x0, 0x778b, 0x0, 0x77a7, 0x0, 0x77db, 0x0, 0x77e2, 0x0, 0x77f3, 0x0, 0x784e, 0x0, 0x786b, 0x0, 0x788c, 0x0, 0x7891, 0x0, 0x78ca, 0x0, 0x78cc, 0x0, 0x78fb, 0x0, 0x792a, 0x0, 0x793a, 0x0, 0x793c, 0x0, 0x793e, 0x0, 0x7948, 0x0, 0x7949, 0x0, 0x7950, 0x0, 0x7956, 0x0, 0x795d, 0x0, 0x795e, 0x0, 0x7965, 0x0, 0x797f, 0x0, 0x7981, 0x0, 0x798d, 0x0, 0x798e, 0x0, 0x798f, 0x0, 0x79ae, 0x0, 0x79b8, 0x0, 0x79be, 0x0, 0x79ca, 0x0, 0x79d8, 0x0, 0x79eb, 0x0, 0x7a1c, 0x0, 0x7a40, 0x0, 0x7a4a, 0x0, 0x7a4f, 0x0, 0x7a74, 0x0, 0x7a7a, 0x0, 0x7a81, 0x0, 0x7ab1, 0x0, 0x7acb, 0x0, 0x7aee, 0x0, 0x7af9, 0x0, 0x7b20, 0x0, 0x7b8f, 0x0, 0x7bc0, 0x0, 0x7bc6, 0x0, 0x7bc9, 0x0, 0x7c3e, 0x0, 0x7c60, 0x0, 0x7c73, 0x0, 0x7c7b, 0x0, 0x7c92, 0x0, 0x7cbe, 0x0, 0x7cd2, 0x0, 0x7cd6, 0x0, 0x7ce3, 0x0, 0x7ce7, 0x0, 0x7ce8, 0x0, 0x7cf8, 0x0, 0x7d00, 0x0, 0x7d10, 0x0, 0x7d22, 0x0, 0x7d2f, 0x0, 0x7d42, 0x0, 0x7d5b, 0x0, 0x7d63, 0x0, 0x7da0, 0x0, 0x7dbe, 0x0, 0x7dc7, 0x0, 0x7df4, 0x0, 0x7e02, 0x0, 0x7e09, 0x0, 0x7e37, 0x0, 0x7e41, 0x0, 0x7e45, 0x0, 0x7f36, 0x0, 0x7f3e, 0x0, 0x7f51, 0x0, 0x7f72, 0x0, 0x7f79, 0x0, 0x7f7a, 0x0, 0x7f85, 0x0, 0x7f8a, 0x0, 0x7f95, 0x0, 0x7f9a, 0x0, 0x7fbd, 0x0, 0x7ffa, 0x0, 0x8001, 0x0, 0x8005, 0x0, 0x800c, 0x0, 0x8012, 0x0, 0x8033, 0x0, 0x8046, 0x0, 0x8060, 0x0, 0x806f, 0x0, 0x8070, 0x0, 0x807e, 0x0, 0x807f, 0x0, 0x8089, 0x0, 0x808b, 0x0, 0x80ad, 0x0, 0x80b2, 0x0, 0x8103, 0x0, 0x813e, 0x0, 0x81d8, 0x0, 0x81e3, 0x0, 0x81e8, 0x0, 0x81ea, 0x0, 0x81ed, 0x0, 0x81f3, 0x0, 0x81fc, 0x0, 0x8201, 0x0, 0x8204, 0x0, 0x820c, 0x0, 0x8218, 0x0, 0x821b, 0x0, 0x821f, 0x0, 0x826e, 0x0, 0x826f, 0x0, 0x8272, 0x0, 0x8278, 0x0, 0x8279, 0x0, 0x828b, 0x0, 0x8291, 0x0, 0x829d, 0x0, 0x82b1, 0x0, 0x82b3, 0x0, 0x82bd, 0x0, 0x82e5, 0x0, 0x82e6, 0x0, 0x831d, 0x0, 0x8323, 0x0, 0x8336, 0x0, 0x8352, 0x0, 0x8353, 0x0, 0x8363, 0x0, 0x83ad, 0x0, 0x83bd, 0x0, 0x83c9, 0x0, 0x83ca, 0x0, 0x83cc, 0x0, 0x83dc, 0x0, 0x83e7, 0x0, 0x83ef, 0x0, 0x83f1, 0x0, 0x843d, 0x0, 0x8449, 0x0, 0x8457, 0x0, 0x84ee, 0x0, 0x84f1, 0x0, 0x84f3, 0x0, 0x84fc, 0x0, 0x8516, 0x0, 0x8564, 0x0, 0x85cd, 0x0, 0x85fa, 0x0, 0x8606, 0x0, 0x8612, 0x0, 0x862d, 0x0, 0x863f, 0x0, 0x864d, 0x0, 0x8650, 0x0, 0x865c, 0x0, 0x8667, 0x0, 0x8669, 0x0, 0x866b, 0x0, 0x8688, 0x0, 0x86a9, 0x0, 0x86e2, 0x0, 0x870e, 0x0, 0x8728, 0x0, 0x876b, 0x0, 0x8779, 0x0, 0x8786, 0x0, 0x87ba, 0x0, 0x87e1, 0x0, 0x8801, 0x0, 0x881f, 0x0, 0x8840, 0x0, 0x884c, 0x0, 0x8860, 0x0, 0x8863, 0x0, 0x88c2, 0x0, 0x88cf, 0x0, 0x88d7, 0x0, 0x88de, 0x0, 0x88e1, 0x0, 0x88f8, 0x0, 0x88fa, 0x0, 0x8910, 0x0, 0x8941, 0x0, 0x8964, 0x0, 0x897e, 0x0, 0x8986, 0x0, 0x898b, 0x0, 0x8996, 0x0, 0x89d2, 0x0, 0x89e3, 0x0, 0x8a00, 0x0, 0x8aa0, 0x0, 0x8aaa, 0x0, 0x8abf, 0x0, 0x8acb, 0x0, 0x8ad2, 0x0, 0x8ad6, 0x0, 0x8aed, 0x0, 0x8af8, 0x0, 0x8afe, 0x0, 0x8b01, 0x0, 0x8b39, 0x0, 0x8b58, 0x0, 0x8b80, 0x0, 0x8b8a, 0x0, 0x8c37, 0x0, 0x8c46, 0x0, 0x8c48, 0x0, 0x8c55, 0x0, 0x8c78, 0x0, 0x8c9d, 0x0, 0x8ca1, 0x0, 0x8ca9, 0x0, 0x8cab, 0x0, 0x8cc1, 0x0, 0x8cc2, 0x0, 0x8cc7, 0x0, 0x8cc8, 0x0, 0x8cd3, 0x0, 0x8d08, 0x0, 0x8d1b, 0x0, 0x8d64, 0x0, 0x8d70, 0x0, 0x8d77, 0x0, 0x8db3, 0x0, 0x8dbc, 0x0, 0x8dcb, 0x0, 0x8def, 0x0, 0x8df0, 0x0, 0x8eab, 0x0, 0x8eca, 0x0, 0x8ed4, 0x0, 0x8f26, 0x0, 0x8f2a, 0x0, 0x8f38, 0x0, 0x8f3b, 0x0, 0x8f62, 0x0, 0x8f9b, 0x0, 0x8f9e, 0x0, 0x8fb0, 0x0, 0x8fb5, 0x0, 0x8fb6, 0x0, 0x9023, 0x0, 0x9038, 0x0, 0x904a, 0x0, 0x9069, 0x0, 0x9072, 0x0, 0x907c, 0x0, 0x908f, 0x0, 0x9091, 0x0, 0x9094, 0x0, 0x90ce, 0x0, 0x90de, 0x0, 0x90f1, 0x0, 0x90fd, 0x0, 0x9111, 0x0, 0x911b, 0x0, 0x9149, 0x0, 0x914d, 0x0, 0x916a, 0x0, 0x9199, 0x0, 0x91b4, 0x0, 0x91c6, 0x0, 0x91cc, 0x0, 0x91cf, 0x0, 0x91d1, 0x0, 0x9234, 0x0, 0x9238, 0x0, 0x9276, 0x0, 0x927c, 0x0, 0x92d7, 0x0, 0x92d8, 0x0, 0x9304, 0x0, 0x934a, 0x0, 0x93f9, 0x0, 0x9415, 0x0, 0x9577, 0x0, 0x9580, 0x0, 0x958b, 0x0, 0x95ad, 0x0, 0x95b7, 0x0, 0x961c, 0x0, 0x962e, 0x0, 0x964b, 0x0, 0x964d, 0x0, 0x9675, 0x0, 0x9678, 0x0, 0x967c, 0x0, 0x9686, 0x0, 0x96a3, 0x0, 0x96b6, 0x0, 0x96b7, 0x0, 0x96b8, 0x0, 0x96b9, 0x0, 0x96c3, 0x0, 0x96e2, 0x0, 0x96e3, 0x0, 0x96e8, 0x0, 0x96f6, 0x0, 0x96f7, 0x0, 0x9723, 0x0, 0x9732, 0x0, 0x9748, 0x0, 0x9751, 0x0, 0x9756, 0x0, 0x975e, 0x0, 0x9762, 0x0, 0x9769, 0x0, 0x97cb, 0x0, 0x97db, 0x0, 0x97e0, 0x0, 0x97ed, 0x0, 0x97f3, 0x0, 0x97ff, 0x0, 0x9801, 0x0, 0x9805, 0x0, 0x980b, 0x0, 0x9818, 0x0, 0x9829, 0x0, 0x983b, 0x0, 0x985e, 0x0, 0x98a8, 0x0, 0x98db, 0x0, 0x98df, 0x0, 0x98e2, 0x0, 0x98ef, 0x0, 0x98fc, 0x0, 0x9928, 0x0, 0x9929, 0x0, 0x9996, 0x0, 0x9999, 0x0, 0x99a7, 0x0, 0x99ac, 0x0, 0x99c2, 0x0, 0x99f1, 0x0, 0x99fe, 0x0, 0x9a6a, 0x0, 0x9aa8, 0x0, 0x9ad8, 0x0, 0x9adf, 0x0, 0x9b12, 0x0, 0x9b25, 0x0, 0x9b2f, 0x0, 0x9b32, 0x0, 0x9b3c, 0x0, 0x9b5a, 0x0, 0x9b6f, 0x0, 0x9c40, 0x0, 0x9c57, 0x0, 0x9ce5, 0x0, 0x9cfd, 0x0, 0x9d67, 0x0, 0x9db4, 0x0, 0x9dfa, 0x0, 0x9e1e, 0x0, 0x9e75, 0x0, 0x9e7f, 0x0, 0x9e97, 0x0, 0x9e9f, 0x0, 0x9ea5, 0x0, 0x9ebb, 0x0, 0x9ec3, 0x0, 0x9ecd, 0x0, 0x9ece, 0x0, 0x9ed1, 0x0, 0x9ef9, 0x0, 0x9efd, 0x0, 0x9efe, 0x0, 0x9f05, 0x0, 0x9f0e, 0x0, 0x9f0f, 0x0, 0x9f13, 0x0, 0x9f16, 0x0, 0x9f20, 0x0, 0x9f3b, 0x0, 0x9f43, 0x0, 0x9f4a, 0x0, 0x9f52, 0x0, 0x9f8d, 0x0, 0x9f8e, 0x0, 0x9f9c, 0x0, 0x9f9f, 0x0, 0x9fa0, 0x0, 0xa651, 0x0, 0xa689, 0x0, 0xa727, 0x0, 0xa76f, 0x0, 0xa78e, 0x0, 0xab37, 0x0, 0xab52, 0x0, 0xab66, 0x0, 0xab67, 0x0, 0x11099, 0x110ba, 0x0, 0x1109b, 0x110ba, 0x0, 0x110a5, 0x110ba, 0x0, 0x11131, 0x11127, 0x0, 0x11132, 0x11127, 0x0, 0x11347, 0x1133e, 0x0, 0x11347, 0x11357, 0x0, 0x114b9, 0x114b0, 0x0, 0x114b9, 0x114ba, 0x0, 0x114b9, 0x114bd, 0x0, 0x115b8, 0x115af, 0x0, 0x115b9, 0x115af, 0x0, 0x11935, 0x11930, 0x0, 0x1d157, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x1d16e, 0x0, 0x1d158, 0x1d165, 0x1d16f, 0x0, 0x1d158, 0x1d165, 0x1d170, 0x0, 0x1d158, 0x1d165, 0x1d171, 0x0, 0x1d158, 0x1d165, 0x1d172, 0x0, 0x1d1b9, 0x1d165, 0x0, 0x1d1b9, 0x1d165, 0x1d16e, 0x0, 0x1d1b9, 0x1d165, 0x1d16f, 0x0, 0x1d1ba, 0x1d165, 0x0, 0x1d1ba, 0x1d165, 0x1d16e, 0x0, 0x1d1ba, 0x1d165, 0x1d16f, 0x0, 0x1df04, 0x0, 0x1df05, 0x0, 0x1df06, 0x0, 0x1df08, 0x0, 0x1df0a, 0x0, 0x1df1e, 0x0, 0x20122, 0x0, 0x2051c, 0x0, 0x20525, 0x0, 0x2054b, 0x0, 0x2063a, 0x0, 0x20804, 0x0, 0x208de, 0x0, 0x20a2c, 0x0, 0x20b63, 0x0, 0x214e4, 0x0, 0x216a8, 0x0, 0x216ea, 0x0, 0x219c8, 0x0, 0x21b18, 0x0, 0x21d0b, 0x0, 0x21de4, 0x0, 0x21de6, 0x0, 0x22183, 0x0, 0x2219f, 0x0, 0x22331, 0x0, 0x226d4, 0x0, 0x22844, 0x0, 0x2284a, 0x0, 0x22b0c, 0x0, 0x22bf1, 0x0, 0x2300a, 0x0, 0x232b8, 0x0, 0x2335f, 0x0, 0x23393, 0x0, 0x2339c, 0x0, 0x233c3, 0x0, 0x233d5, 0x0, 0x2346d, 0x0, 0x236a3, 0x0, 0x238a7, 0x0, 0x23a8d, 0x0, 0x23afa, 0x0, 0x23cbc, 0x0, 0x23d1e, 0x0, 0x23ed1, 0x0, 0x23f5e, 0x0, 0x23f8e, 0x0, 0x24263, 0x0, 0x242ee, 0x0, 0x243ab, 0x0, 0x24608, 0x0, 0x24735, 0x0, 0x24814, 0x0, 0x24c36, 0x0, 0x24c92, 0x0, 0x24fa1, 0x0, 0x24fb8, 0x0, 0x25044, 0x0, 0x250f2, 0x0, 0x250f3, 0x0, 0x25119, 0x0, 0x25133, 0x0, 0x25249, 0x0, 0x2541d, 0x0, 0x25626, 0x0, 0x2569a, 0x0, 0x256c5, 0x0, 0x2597c, 0x0, 0x25aa7, 0x0, 0x25bab, 0x0, 0x25c80, 0x0, 0x25cd0, 0x0, 0x25f86, 0x0, 0x261da, 0x0, 0x26228, 0x0, 0x26247, 0x0, 0x262d9, 0x0, 0x2633e, 0x0, 0x264da, 0x0, 0x26523, 0x0, 0x265a8, 0x0, 0x267a7, 0x0, 0x267b5, 0x0, 0x26b3c, 0x0, 0x26c36, 0x0, 0x26cd5, 0x0, 0x26d6b, 0x0, 0x26f2c, 0x0, 0x26fb1, 0x0, 0x270d2, 0x0, 0x273ca, 0x0, 0x27667, 0x0, 0x278ae, 0x0, 0x27966, 0x0, 0x27ca8, 0x0, 0x27ed3, 0x0, 0x27f2f, 0x0, 0x285d2, 0x0, 0x285ed, 0x0, 0x2872e, 0x0, 0x28bfa, 0x0, 0x28d77, 0x0, 0x29145, 0x0, 0x291df, 0x0, 0x2921a, 0x0, 0x2940a, 0x0, 0x29496, 0x0, 0x295b6, 0x0, 0x29b30, 0x0, 0x2a0ce, 0x0, 0x2a105, 0x0, 0x2a20e, 0x0, 0x2a291, 0x0, 0x2a392, 0x0, 0x2a600, 0x0]; return t; } +dstring decompCanonTable() nothrow @nogc pure @safe { +static immutable dchar[5212] t = +"\u0000\u003B\u0000\u003C\u0338\u0000\u003D\u0338\u0000\u003E\u0338\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041"d~ +"\u0302\u0000\u0041\u0302\u0300\u0000\u0041\u0302\u0301\u0000\u0041\u0302\u0303\u0000\u0041\u0302\u0309\u0000\u0041"d~ +"\u0303\u0000\u0041\u0304\u0000\u0041\u0306\u0000\u0041\u0306\u0300\u0000\u0041\u0306\u0301\u0000\u0041\u0306\u0303"d~ +"\u0000\u0041\u0306\u0309\u0000\u0041\u0307\u0000\u0041\u0307\u0304\u0000\u0041\u0308\u0000\u0041\u0308\u0304\u0000"d~ +"\u0041\u0309\u0000\u0041\u030A\u0000\u0041\u030A\u0301\u0000\u0041\u030C\u0000\u0041\u030F\u0000\u0041\u0311\u0000"d~ +"\u0041\u0323\u0000\u0041\u0323\u0302\u0000\u0041\u0323\u0306\u0000\u0041\u0325\u0000\u0041\u0328\u0000\u0042\u0307"d~ +"\u0000\u0042\u0323\u0000\u0042\u0331\u0000\u0043\u0301\u0000\u0043\u0302\u0000\u0043\u0307\u0000\u0043\u030C\u0000"d~ +"\u0043\u0327\u0000\u0043\u0327\u0301\u0000\u0044\u0307\u0000\u0044\u030C\u0000\u0044\u0323\u0000\u0044\u0327\u0000"d~ +"\u0044\u032D\u0000\u0044\u0331\u0000\u0045\u0300\u0000\u0045\u0301\u0000\u0045\u0302\u0000\u0045\u0302\u0300\u0000"d~ +"\u0045\u0302\u0301\u0000\u0045\u0302\u0303\u0000\u0045\u0302\u0309\u0000\u0045\u0303\u0000\u0045\u0304\u0000\u0045"d~ +"\u0304\u0300\u0000\u0045\u0304\u0301\u0000\u0045\u0306\u0000\u0045\u0307\u0000\u0045\u0308\u0000\u0045\u0309\u0000"d~ +"\u0045\u030C\u0000\u0045\u030F\u0000\u0045\u0311\u0000\u0045\u0323\u0000\u0045\u0323\u0302\u0000\u0045\u0327\u0000"d~ +"\u0045\u0327\u0306\u0000\u0045\u0328\u0000\u0045\u032D\u0000\u0045\u0330\u0000\u0046\u0307\u0000\u0047\u0301\u0000"d~ +"\u0047\u0302\u0000\u0047\u0304\u0000\u0047\u0306\u0000\u0047\u0307\u0000\u0047\u030C\u0000\u0047\u0327\u0000\u0048"d~ +"\u0302\u0000\u0048\u0307\u0000\u0048\u0308\u0000\u0048\u030C\u0000\u0048\u0323\u0000\u0048\u0327\u0000\u0048\u032E"d~ +"\u0000\u0049\u0300\u0000\u0049\u0301\u0000\u0049\u0302\u0000\u0049\u0303\u0000\u0049\u0304\u0000\u0049\u0306\u0000"d~ +"\u0049\u0307\u0000\u0049\u0308\u0000\u0049\u0308\u0301\u0000\u0049\u0309\u0000\u0049\u030C\u0000\u0049\u030F\u0000"d~ +"\u0049\u0311\u0000\u0049\u0323\u0000\u0049\u0328\u0000\u0049\u0330\u0000\u004A\u0302\u0000\u004B\u0000\u004B\u0301"d~ +"\u0000\u004B\u030C\u0000\u004B\u0323\u0000\u004B\u0327\u0000\u004B\u0331\u0000\u004C\u0301\u0000\u004C\u030C\u0000"d~ +"\u004C\u0323\u0000\u004C\u0323\u0304\u0000\u004C\u0327\u0000\u004C\u032D\u0000\u004C\u0331\u0000\u004D\u0301\u0000"d~ +"\u004D\u0307\u0000\u004D\u0323\u0000\u004E\u0300\u0000\u004E\u0301\u0000\u004E\u0303\u0000\u004E\u0307\u0000\u004E"d~ +"\u030C\u0000\u004E\u0323\u0000\u004E\u0327\u0000\u004E\u032D\u0000\u004E\u0331\u0000\u004F\u0300\u0000\u004F\u0301"d~ +"\u0000\u004F\u0302\u0000\u004F\u0302\u0300\u0000\u004F\u0302\u0301\u0000\u004F\u0302\u0303\u0000\u004F\u0302\u0309"d~ +"\u0000\u004F\u0303\u0000\u004F\u0303\u0301\u0000\u004F\u0303\u0304\u0000\u004F\u0303\u0308\u0000\u004F\u0304\u0000"d~ +"\u004F\u0304\u0300\u0000\u004F\u0304\u0301\u0000\u004F\u0306\u0000\u004F\u0307\u0000\u004F\u0307\u0304\u0000\u004F"d~ +"\u0308\u0000\u004F\u0308\u0304\u0000\u004F\u0309\u0000\u004F\u030B\u0000\u004F\u030C\u0000\u004F\u030F\u0000\u004F"d~ +"\u0311\u0000\u004F\u031B\u0000\u004F\u031B\u0300\u0000\u004F\u031B\u0301\u0000\u004F\u031B\u0303\u0000\u004F\u031B"d~ +"\u0309\u0000\u004F\u031B\u0323\u0000\u004F\u0323\u0000\u004F\u0323\u0302\u0000\u004F\u0328\u0000\u004F\u0328\u0304"d~ +"\u0000\u0050\u0301\u0000\u0050\u0307\u0000\u0052\u0301\u0000\u0052\u0307\u0000\u0052\u030C\u0000\u0052\u030F\u0000"d~ +"\u0052\u0311\u0000\u0052\u0323\u0000\u0052\u0323\u0304\u0000\u0052\u0327\u0000\u0052\u0331\u0000\u0053\u0301\u0000"d~ +"\u0053\u0301\u0307\u0000\u0053\u0302\u0000\u0053\u0307\u0000\u0053\u030C\u0000\u0053\u030C\u0307\u0000\u0053\u0323"d~ +"\u0000\u0053\u0323\u0307\u0000\u0053\u0326\u0000\u0053\u0327\u0000\u0054\u0307\u0000\u0054\u030C\u0000\u0054\u0323"d~ +"\u0000\u0054\u0326\u0000\u0054\u0327\u0000\u0054\u032D\u0000\u0054\u0331\u0000\u0055\u0300\u0000\u0055\u0301\u0000"d~ +"\u0055\u0302\u0000\u0055\u0303\u0000\u0055\u0303\u0301\u0000\u0055\u0304\u0000\u0055\u0304\u0308\u0000\u0055\u0306"d~ +"\u0000\u0055\u0308\u0000\u0055\u0308\u0300\u0000\u0055\u0308\u0301\u0000\u0055\u0308\u0304\u0000\u0055\u0308\u030C"d~ +"\u0000\u0055\u0309\u0000\u0055\u030A\u0000\u0055\u030B\u0000\u0055\u030C\u0000\u0055\u030F\u0000\u0055\u0311\u0000"d~ +"\u0055\u031B\u0000\u0055\u031B\u0300\u0000\u0055\u031B\u0301\u0000\u0055\u031B\u0303\u0000\u0055\u031B\u0309\u0000"d~ +"\u0055\u031B\u0323\u0000\u0055\u0323\u0000\u0055\u0324\u0000\u0055\u0328\u0000\u0055\u032D\u0000\u0055\u0330\u0000"d~ +"\u0056\u0303\u0000\u0056\u0323\u0000\u0057\u0300\u0000\u0057\u0301\u0000\u0057\u0302\u0000\u0057\u0307\u0000\u0057"d~ +"\u0308\u0000\u0057\u0323\u0000\u0058\u0307\u0000\u0058\u0308\u0000\u0059\u0300\u0000\u0059\u0301\u0000\u0059\u0302"d~ +"\u0000\u0059\u0303\u0000\u0059\u0304\u0000\u0059\u0307\u0000\u0059\u0308\u0000\u0059\u0309\u0000\u0059\u0323\u0000"d~ +"\u005A\u0301\u0000\u005A\u0302\u0000\u005A\u0307\u0000\u005A\u030C\u0000\u005A\u0323\u0000\u005A\u0331\u0000\u0060"d~ +"\u0000\u0061\u0300\u0000\u0061\u0301\u0000\u0061\u0302\u0000\u0061\u0302\u0300\u0000\u0061\u0302\u0301\u0000\u0061"d~ +"\u0302\u0303\u0000\u0061\u0302\u0309\u0000\u0061\u0303\u0000\u0061\u0304\u0000\u0061\u0306\u0000\u0061\u0306\u0300"d~ +"\u0000\u0061\u0306\u0301\u0000\u0061\u0306\u0303\u0000\u0061\u0306\u0309\u0000\u0061\u0307\u0000\u0061\u0307\u0304"d~ +"\u0000\u0061\u0308\u0000\u0061\u0308\u0304\u0000\u0061\u0309\u0000\u0061\u030A\u0000\u0061\u030A\u0301\u0000\u0061"d~ +"\u030C\u0000\u0061\u030F\u0000\u0061\u0311\u0000\u0061\u0323\u0000\u0061\u0323\u0302\u0000\u0061\u0323\u0306\u0000"d~ +"\u0061\u0325\u0000\u0061\u0328\u0000\u0062\u0307\u0000\u0062\u0323\u0000\u0062\u0331\u0000\u0063\u0301\u0000\u0063"d~ +"\u0302\u0000\u0063\u0307\u0000\u0063\u030C\u0000\u0063\u0327\u0000\u0063\u0327\u0301\u0000\u0064\u0307\u0000\u0064"d~ +"\u030C\u0000\u0064\u0323\u0000\u0064\u0327\u0000\u0064\u032D\u0000\u0064\u0331\u0000\u0065\u0300\u0000\u0065\u0301"d~ +"\u0000\u0065\u0302\u0000\u0065\u0302\u0300\u0000\u0065\u0302\u0301\u0000\u0065\u0302\u0303\u0000\u0065\u0302\u0309"d~ +"\u0000\u0065\u0303\u0000\u0065\u0304\u0000\u0065\u0304\u0300\u0000\u0065\u0304\u0301\u0000\u0065\u0306\u0000\u0065"d~ +"\u0307\u0000\u0065\u0308\u0000\u0065\u0309\u0000\u0065\u030C\u0000\u0065\u030F\u0000\u0065\u0311\u0000\u0065\u0323"d~ +"\u0000\u0065\u0323\u0302\u0000\u0065\u0327\u0000\u0065\u0327\u0306\u0000\u0065\u0328\u0000\u0065\u032D\u0000\u0065"d~ +"\u0330\u0000\u0066\u0307\u0000\u0067\u0301\u0000\u0067\u0302\u0000\u0067\u0304\u0000\u0067\u0306\u0000\u0067\u0307"d~ +"\u0000\u0067\u030C\u0000\u0067\u0327\u0000\u0068\u0302\u0000\u0068\u0307\u0000\u0068\u0308\u0000\u0068\u030C\u0000"d~ +"\u0068\u0323\u0000\u0068\u0327\u0000\u0068\u032E\u0000\u0068\u0331\u0000\u0069\u0300\u0000\u0069\u0301\u0000\u0069"d~ +"\u0302\u0000\u0069\u0303\u0000\u0069\u0304\u0000\u0069\u0306\u0000\u0069\u0308\u0000\u0069\u0308\u0301\u0000\u0069"d~ +"\u0309\u0000\u0069\u030C\u0000\u0069\u030F\u0000\u0069\u0311\u0000\u0069\u0323\u0000\u0069\u0328\u0000\u0069\u0330"d~ +"\u0000\u006A\u0302\u0000\u006A\u030C\u0000\u006B\u0301\u0000\u006B\u030C\u0000\u006B\u0323\u0000\u006B\u0327\u0000"d~ +"\u006B\u0331\u0000\u006C\u0301\u0000\u006C\u030C\u0000\u006C\u0323\u0000\u006C\u0323\u0304\u0000\u006C\u0327\u0000"d~ +"\u006C\u032D\u0000\u006C\u0331\u0000\u006D\u0301\u0000\u006D\u0307\u0000\u006D\u0323\u0000\u006E\u0300\u0000\u006E"d~ +"\u0301\u0000\u006E\u0303\u0000\u006E\u0307\u0000\u006E\u030C\u0000\u006E\u0323\u0000\u006E\u0327\u0000\u006E\u032D"d~ +"\u0000\u006E\u0331\u0000\u006F\u0300\u0000\u006F\u0301\u0000\u006F\u0302\u0000\u006F\u0302\u0300\u0000\u006F\u0302"d~ +"\u0301\u0000\u006F\u0302\u0303\u0000\u006F\u0302\u0309\u0000\u006F\u0303\u0000\u006F\u0303\u0301\u0000\u006F\u0303"d~ +"\u0304\u0000\u006F\u0303\u0308\u0000\u006F\u0304\u0000\u006F\u0304\u0300\u0000\u006F\u0304\u0301\u0000\u006F\u0306"d~ +"\u0000\u006F\u0307\u0000\u006F\u0307\u0304\u0000\u006F\u0308\u0000\u006F\u0308\u0304\u0000\u006F\u0309\u0000\u006F"d~ +"\u030B\u0000\u006F\u030C\u0000\u006F\u030F\u0000\u006F\u0311\u0000\u006F\u031B\u0000\u006F\u031B\u0300\u0000\u006F"d~ +"\u031B\u0301\u0000\u006F\u031B\u0303\u0000\u006F\u031B\u0309\u0000\u006F\u031B\u0323\u0000\u006F\u0323\u0000\u006F"d~ +"\u0323\u0302\u0000\u006F\u0328\u0000\u006F\u0328\u0304\u0000\u0070\u0301\u0000\u0070\u0307\u0000\u0072\u0301\u0000"d~ +"\u0072\u0307\u0000\u0072\u030C\u0000\u0072\u030F\u0000\u0072\u0311\u0000\u0072\u0323\u0000\u0072\u0323\u0304\u0000"d~ +"\u0072\u0327\u0000\u0072\u0331\u0000\u0073\u0301\u0000\u0073\u0301\u0307\u0000\u0073\u0302\u0000\u0073\u0307\u0000"d~ +"\u0073\u030C\u0000\u0073\u030C\u0307\u0000\u0073\u0323\u0000\u0073\u0323\u0307\u0000\u0073\u0326\u0000\u0073\u0327"d~ +"\u0000\u0074\u0307\u0000\u0074\u0308\u0000\u0074\u030C\u0000\u0074\u0323\u0000\u0074\u0326\u0000\u0074\u0327\u0000"d~ +"\u0074\u032D\u0000\u0074\u0331\u0000\u0075\u0300\u0000\u0075\u0301\u0000\u0075\u0302\u0000\u0075\u0303\u0000\u0075"d~ +"\u0303\u0301\u0000\u0075\u0304\u0000\u0075\u0304\u0308\u0000\u0075\u0306\u0000\u0075\u0308\u0000\u0075\u0308\u0300"d~ +"\u0000\u0075\u0308\u0301\u0000\u0075\u0308\u0304\u0000\u0075\u0308\u030C\u0000\u0075\u0309\u0000\u0075\u030A\u0000"d~ +"\u0075\u030B\u0000\u0075\u030C\u0000\u0075\u030F\u0000\u0075\u0311\u0000\u0075\u031B\u0000\u0075\u031B\u0300\u0000"d~ +"\u0075\u031B\u0301\u0000\u0075\u031B\u0303\u0000\u0075\u031B\u0309\u0000\u0075\u031B\u0323\u0000\u0075\u0323\u0000"d~ +"\u0075\u0324\u0000\u0075\u0328\u0000\u0075\u032D\u0000\u0075\u0330\u0000\u0076\u0303\u0000\u0076\u0323\u0000\u0077"d~ +"\u0300\u0000\u0077\u0301\u0000\u0077\u0302\u0000\u0077\u0307\u0000\u0077\u0308\u0000\u0077\u030A\u0000\u0077\u0323"d~ +"\u0000\u0078\u0307\u0000\u0078\u0308\u0000\u0079\u0300\u0000\u0079\u0301\u0000\u0079\u0302\u0000\u0079\u0303\u0000"d~ +"\u0079\u0304\u0000\u0079\u0307\u0000\u0079\u0308\u0000\u0079\u0309\u0000\u0079\u030A\u0000\u0079\u0323\u0000\u007A"d~ +"\u0301\u0000\u007A\u0302\u0000\u007A\u0307\u0000\u007A\u030C\u0000\u007A\u0323\u0000\u007A\u0331\u0000\u00A8\u0300"d~ +"\u0000\u00A8\u0301\u0000\u00A8\u0342\u0000\u00B4\u0000\u00B7\u0000\u00C6\u0301\u0000\u00C6\u0304\u0000\u00D8\u0301"d~ +"\u0000\u00E6\u0301\u0000\u00E6\u0304\u0000\u00F8\u0301\u0000\u017F\u0307\u0000\u01B7\u030C\u0000\u0292\u030C\u0000"d~ +"\u02B9\u0000\u0300\u0000\u0301\u0000\u0308\u0301\u0000\u0313\u0000\u0391\u0300\u0000\u0391\u0301\u0000\u0391\u0304"d~ +"\u0000\u0391\u0306\u0000\u0391\u0313\u0000\u0391\u0313\u0300\u0000\u0391\u0313\u0300\u0345\u0000\u0391\u0313\u0301"d~ +"\u0000\u0391\u0313\u0301\u0345\u0000\u0391\u0313\u0342\u0000\u0391\u0313\u0342\u0345\u0000\u0391\u0313\u0345\u0000"d~ +"\u0391\u0314\u0000\u0391\u0314\u0300\u0000\u0391\u0314\u0300\u0345\u0000\u0391\u0314\u0301\u0000\u0391\u0314\u0301"d~ +"\u0345\u0000\u0391\u0314\u0342\u0000\u0391\u0314\u0342\u0345\u0000\u0391\u0314\u0345\u0000\u0391\u0345\u0000\u0395"d~ +"\u0300\u0000\u0395\u0301\u0000\u0395\u0313\u0000\u0395\u0313\u0300\u0000\u0395\u0313\u0301\u0000\u0395\u0314\u0000"d~ +"\u0395\u0314\u0300\u0000\u0395\u0314\u0301\u0000\u0397\u0300\u0000\u0397\u0301\u0000\u0397\u0313\u0000\u0397\u0313"d~ +"\u0300\u0000\u0397\u0313\u0300\u0345\u0000\u0397\u0313\u0301\u0000\u0397\u0313\u0301\u0345\u0000\u0397\u0313\u0342"d~ +"\u0000\u0397\u0313\u0342\u0345\u0000\u0397\u0313\u0345\u0000\u0397\u0314\u0000\u0397\u0314\u0300\u0000\u0397\u0314"d~ +"\u0300\u0345\u0000\u0397\u0314\u0301\u0000\u0397\u0314\u0301\u0345\u0000\u0397\u0314\u0342\u0000\u0397\u0314\u0342"d~ +"\u0345\u0000\u0397\u0314\u0345\u0000\u0397\u0345\u0000\u0399\u0300\u0000\u0399\u0301\u0000\u0399\u0304\u0000\u0399"d~ +"\u0306\u0000\u0399\u0308\u0000\u0399\u0313\u0000\u0399\u0313\u0300\u0000\u0399\u0313\u0301\u0000\u0399\u0313\u0342"d~ +"\u0000\u0399\u0314\u0000\u0399\u0314\u0300\u0000\u0399\u0314\u0301\u0000\u0399\u0314\u0342\u0000\u039F\u0300\u0000"d~ +"\u039F\u0301\u0000\u039F\u0313\u0000\u039F\u0313\u0300\u0000\u039F\u0313\u0301\u0000\u039F\u0314\u0000\u039F\u0314"d~ +"\u0300\u0000\u039F\u0314\u0301\u0000\u03A1\u0314\u0000\u03A5\u0300\u0000\u03A5\u0301\u0000\u03A5\u0304\u0000\u03A5"d~ +"\u0306\u0000\u03A5\u0308\u0000\u03A5\u0314\u0000\u03A5\u0314\u0300\u0000\u03A5\u0314\u0301\u0000\u03A5\u0314\u0342"d~ +"\u0000\u03A9\u0000\u03A9\u0300\u0000\u03A9\u0301\u0000\u03A9\u0313\u0000\u03A9\u0313\u0300\u0000\u03A9\u0313\u0300"d~ +"\u0345\u0000\u03A9\u0313\u0301\u0000\u03A9\u0313\u0301\u0345\u0000\u03A9\u0313\u0342\u0000\u03A9\u0313\u0342\u0345"d~ +"\u0000\u03A9\u0313\u0345\u0000\u03A9\u0314\u0000\u03A9\u0314\u0300\u0000\u03A9\u0314\u0300\u0345\u0000\u03A9\u0314"d~ +"\u0301\u0000\u03A9\u0314\u0301\u0345\u0000\u03A9\u0314\u0342\u0000\u03A9\u0314\u0342\u0345\u0000\u03A9\u0314\u0345"d~ +"\u0000\u03A9\u0345\u0000\u03B1\u0300\u0000\u03B1\u0300\u0345\u0000\u03B1\u0301\u0000\u03B1\u0301\u0345\u0000\u03B1"d~ +"\u0304\u0000\u03B1\u0306\u0000\u03B1\u0313\u0000\u03B1\u0313\u0300\u0000\u03B1\u0313\u0300\u0345\u0000\u03B1\u0313"d~ +"\u0301\u0000\u03B1\u0313\u0301\u0345\u0000\u03B1\u0313\u0342\u0000\u03B1\u0313\u0342\u0345\u0000\u03B1\u0313\u0345"d~ +"\u0000\u03B1\u0314\u0000\u03B1\u0314\u0300\u0000\u03B1\u0314\u0300\u0345\u0000\u03B1\u0314\u0301\u0000\u03B1\u0314"d~ +"\u0301\u0345\u0000\u03B1\u0314\u0342\u0000\u03B1\u0314\u0342\u0345\u0000\u03B1\u0314\u0345\u0000\u03B1\u0342\u0000"d~ +"\u03B1\u0342\u0345\u0000\u03B1\u0345\u0000\u03B5\u0300\u0000\u03B5\u0301\u0000\u03B5\u0313\u0000\u03B5\u0313\u0300"d~ +"\u0000\u03B5\u0313\u0301\u0000\u03B5\u0314\u0000\u03B5\u0314\u0300\u0000\u03B5\u0314\u0301\u0000\u03B7\u0300\u0000"d~ +"\u03B7\u0300\u0345\u0000\u03B7\u0301\u0000\u03B7\u0301\u0345\u0000\u03B7\u0313\u0000\u03B7\u0313\u0300\u0000\u03B7"d~ +"\u0313\u0300\u0345\u0000\u03B7\u0313\u0301\u0000\u03B7\u0313\u0301\u0345\u0000\u03B7\u0313\u0342\u0000\u03B7\u0313"d~ +"\u0342\u0345\u0000\u03B7\u0313\u0345\u0000\u03B7\u0314\u0000\u03B7\u0314\u0300\u0000\u03B7\u0314\u0300\u0345\u0000"d~ +"\u03B7\u0314\u0301\u0000\u03B7\u0314\u0301\u0345\u0000\u03B7\u0314\u0342\u0000\u03B7\u0314\u0342\u0345\u0000\u03B7"d~ +"\u0314\u0345\u0000\u03B7\u0342\u0000\u03B7\u0342\u0345\u0000\u03B7\u0345\u0000\u03B9\u0000\u03B9\u0300\u0000\u03B9"d~ +"\u0301\u0000\u03B9\u0304\u0000\u03B9\u0306\u0000\u03B9\u0308\u0000\u03B9\u0308\u0300\u0000\u03B9\u0308\u0301\u0000"d~ +"\u03B9\u0308\u0342\u0000\u03B9\u0313\u0000\u03B9\u0313\u0300\u0000\u03B9\u0313\u0301\u0000\u03B9\u0313\u0342\u0000"d~ +"\u03B9\u0314\u0000\u03B9\u0314\u0300\u0000\u03B9\u0314\u0301\u0000\u03B9\u0314\u0342\u0000\u03B9\u0342\u0000\u03BF"d~ +"\u0300\u0000\u03BF\u0301\u0000\u03BF\u0313\u0000\u03BF\u0313\u0300\u0000\u03BF\u0313\u0301\u0000\u03BF\u0314\u0000"d~ +"\u03BF\u0314\u0300\u0000\u03BF\u0314\u0301\u0000\u03C1\u0313\u0000\u03C1\u0314\u0000\u03C5\u0300\u0000\u03C5\u0301"d~ +"\u0000\u03C5\u0304\u0000\u03C5\u0306\u0000\u03C5\u0308\u0000\u03C5\u0308\u0300\u0000\u03C5\u0308\u0301\u0000\u03C5"d~ +"\u0308\u0342\u0000\u03C5\u0313\u0000\u03C5\u0313\u0300\u0000\u03C5\u0313\u0301\u0000\u03C5\u0313\u0342\u0000\u03C5"d~ +"\u0314\u0000\u03C5\u0314\u0300\u0000\u03C5\u0314\u0301\u0000\u03C5\u0314\u0342\u0000\u03C5\u0342\u0000\u03C9\u0300"d~ +"\u0000\u03C9\u0300\u0345\u0000\u03C9\u0301\u0000\u03C9\u0301\u0345\u0000\u03C9\u0313\u0000\u03C9\u0313\u0300\u0000"d~ +"\u03C9\u0313\u0300\u0345\u0000\u03C9\u0313\u0301\u0000\u03C9\u0313\u0301\u0345\u0000\u03C9\u0313\u0342\u0000\u03C9"d~ +"\u0313\u0342\u0345\u0000\u03C9\u0313\u0345\u0000\u03C9\u0314\u0000\u03C9\u0314\u0300\u0000\u03C9\u0314\u0300\u0345"d~ +"\u0000\u03C9\u0314\u0301\u0000\u03C9\u0314\u0301\u0345\u0000\u03C9\u0314\u0342\u0000\u03C9\u0314\u0342\u0345\u0000"d~ +"\u03C9\u0314\u0345\u0000\u03C9\u0342\u0000\u03C9\u0342\u0345\u0000\u03C9\u0345\u0000\u03D2\u0301\u0000\u03D2\u0308"d~ +"\u0000\u0406\u0308\u0000\u0410\u0306\u0000\u0410\u0308\u0000\u0413\u0301\u0000\u0415\u0300\u0000\u0415\u0306\u0000"d~ +"\u0415\u0308\u0000\u0416\u0306\u0000\u0416\u0308\u0000\u0417\u0308\u0000\u0418\u0300\u0000\u0418\u0304\u0000\u0418"d~ +"\u0306\u0000\u0418\u0308\u0000\u041A\u0301\u0000\u041E\u0308\u0000\u0423\u0304\u0000\u0423\u0306\u0000\u0423\u0308"d~ +"\u0000\u0423\u030B\u0000\u0427\u0308\u0000\u042B\u0308\u0000\u042D\u0308\u0000\u0430\u0306\u0000\u0430\u0308\u0000"d~ +"\u0433\u0301\u0000\u0435\u0300\u0000\u0435\u0306\u0000\u0435\u0308\u0000\u0436\u0306\u0000\u0436\u0308\u0000\u0437"d~ +"\u0308\u0000\u0438\u0300\u0000\u0438\u0304\u0000\u0438\u0306\u0000\u0438\u0308\u0000\u043A\u0301\u0000\u043E\u0308"d~ +"\u0000\u0443\u0304\u0000\u0443\u0306\u0000\u0443\u0308\u0000\u0443\u030B\u0000\u0447\u0308\u0000\u044B\u0308\u0000"d~ +"\u044D\u0308\u0000\u0456\u0308\u0000\u0474\u030F\u0000\u0475\u030F\u0000\u04D8\u0308\u0000\u04D9\u0308\u0000\u04E8"d~ +"\u0308\u0000\u04E9\u0308\u0000\u05D0\u05B7\u0000\u05D0\u05B8\u0000\u05D0\u05BC\u0000\u05D1\u05BC\u0000\u05D1\u05BF"d~ +"\u0000\u05D2\u05BC\u0000\u05D3\u05BC\u0000\u05D4\u05BC\u0000\u05D5\u05B9\u0000\u05D5\u05BC\u0000\u05D6\u05BC\u0000"d~ +"\u05D8\u05BC\u0000\u05D9\u05B4\u0000\u05D9\u05BC\u0000\u05DA\u05BC\u0000\u05DB\u05BC\u0000\u05DB\u05BF\u0000\u05DC"d~ +"\u05BC\u0000\u05DE\u05BC\u0000\u05E0\u05BC\u0000\u05E1\u05BC\u0000\u05E3\u05BC\u0000\u05E4\u05BC\u0000\u05E4\u05BF"d~ +"\u0000\u05E6\u05BC\u0000\u05E7\u05BC\u0000\u05E8\u05BC\u0000\u05E9\u05BC\u0000\u05E9\u05BC\u05C1\u0000\u05E9\u05BC"d~ +"\u05C2\u0000\u05E9\u05C1\u0000\u05E9\u05C2\u0000\u05EA\u05BC\u0000\u05F2\u05B7\u0000\u0627\u0653\u0000\u0627\u0654"d~ +"\u0000\u0627\u0655\u0000\u0648\u0654\u0000\u064A\u0654\u0000\u06C1\u0654\u0000\u06D2\u0654\u0000\u06D5\u0654\u0000"d~ +"\u0915\u093C\u0000\u0916\u093C\u0000\u0917\u093C\u0000\u091C\u093C\u0000\u0921\u093C\u0000\u0922\u093C\u0000\u0928"d~ +"\u093C\u0000\u092B\u093C\u0000\u092F\u093C\u0000\u0930\u093C\u0000\u0933\u093C\u0000\u09A1\u09BC\u0000\u09A2\u09BC"d~ +"\u0000\u09AF\u09BC\u0000\u09C7\u09BE\u0000\u09C7\u09D7\u0000\u0A16\u0A3C\u0000\u0A17\u0A3C\u0000\u0A1C\u0A3C\u0000"d~ +"\u0A2B\u0A3C\u0000\u0A32\u0A3C\u0000\u0A38\u0A3C\u0000\u0B21\u0B3C\u0000\u0B22\u0B3C\u0000\u0B47\u0B3E\u0000\u0B47"d~ +"\u0B56\u0000\u0B47\u0B57\u0000\u0B92\u0BD7\u0000\u0BC6\u0BBE\u0000\u0BC6\u0BD7\u0000\u0BC7\u0BBE\u0000\u0C46\u0C56"d~ +"\u0000\u0CBF\u0CD5\u0000\u0CC6\u0CC2\u0000\u0CC6\u0CC2\u0CD5\u0000\u0CC6\u0CD5\u0000\u0CC6\u0CD6\u0000\u0D46\u0D3E"d~ +"\u0000\u0D46\u0D57\u0000\u0D47\u0D3E\u0000\u0DD9\u0DCA\u0000\u0DD9\u0DCF\u0000\u0DD9\u0DCF\u0DCA\u0000\u0DD9\u0DDF"d~ +"\u0000\u0F40\u0FB5\u0000\u0F42\u0FB7\u0000\u0F4C\u0FB7\u0000\u0F51\u0FB7\u0000\u0F56\u0FB7\u0000\u0F5B\u0FB7\u0000"d~ +"\u0F71\u0F72\u0000\u0F71\u0F74\u0000\u0F71\u0F80\u0000\u0F90\u0FB5\u0000\u0F92\u0FB7\u0000\u0F9C\u0FB7\u0000\u0FA1"d~ +"\u0FB7\u0000\u0FA6\u0FB7\u0000\u0FAB\u0FB7\u0000\u0FB2\u0F80\u0000\u0FB3\u0F80\u0000\u1025\u102E\u0000\u1B05\u1B35"d~ +"\u0000\u1B07\u1B35\u0000\u1B09\u1B35\u0000\u1B0B\u1B35\u0000\u1B0D\u1B35\u0000\u1B11\u1B35\u0000\u1B3A\u1B35\u0000"d~ +"\u1B3C\u1B35\u0000\u1B3E\u1B35\u0000\u1B3F\u1B35\u0000\u1B42\u1B35\u0000\u1FBF\u0300\u0000\u1FBF\u0301\u0000\u1FBF"d~ +"\u0342\u0000\u1FFE\u0300\u0000\u1FFE\u0301\u0000\u1FFE\u0342\u0000\u2002\u0000\u2003\u0000\u2190\u0338\u0000\u2192"d~ +"\u0338\u0000\u2194\u0338\u0000\u21D0\u0338\u0000\u21D2\u0338\u0000\u21D4\u0338\u0000\u2203\u0338\u0000\u2208\u0338"d~ +"\u0000\u220B\u0338\u0000\u2223\u0338\u0000\u2225\u0338\u0000\u223C\u0338\u0000\u2243\u0338\u0000\u2245\u0338\u0000"d~ +"\u2248\u0338\u0000\u224D\u0338\u0000\u2261\u0338\u0000\u2264\u0338\u0000\u2265\u0338\u0000\u2272\u0338\u0000\u2273"d~ +"\u0338\u0000\u2276\u0338\u0000\u2277\u0338\u0000\u227A\u0338\u0000\u227B\u0338\u0000\u227C\u0338\u0000\u227D\u0338"d~ +"\u0000\u2282\u0338\u0000\u2283\u0338\u0000\u2286\u0338\u0000\u2287\u0338\u0000\u2291\u0338\u0000\u2292\u0338\u0000"d~ +"\u22A2\u0338\u0000\u22A8\u0338\u0000\u22A9\u0338\u0000\u22AB\u0338\u0000\u22B2\u0338\u0000\u22B3\u0338\u0000\u22B4"d~ +"\u0338\u0000\u22B5\u0338\u0000\u2ADD\u0338\u0000\u3008\u0000\u3009\u0000\u3046\u3099\u0000\u304B\u3099\u0000\u304D"d~ +"\u3099\u0000\u304F\u3099\u0000\u3051\u3099\u0000\u3053\u3099\u0000\u3055\u3099\u0000\u3057\u3099\u0000\u3059\u3099"d~ +"\u0000\u305B\u3099\u0000\u305D\u3099\u0000\u305F\u3099\u0000\u3061\u3099\u0000\u3064\u3099\u0000\u3066\u3099\u0000"d~ +"\u3068\u3099\u0000\u306F\u3099\u0000\u306F\u309A\u0000\u3072\u3099\u0000\u3072\u309A\u0000\u3075\u3099\u0000\u3075"d~ +"\u309A\u0000\u3078\u3099\u0000\u3078\u309A\u0000\u307B\u3099\u0000\u307B\u309A\u0000\u309D\u3099\u0000\u30A6\u3099"d~ +"\u0000\u30AB\u3099\u0000\u30AD\u3099\u0000\u30AF\u3099\u0000\u30B1\u3099\u0000\u30B3\u3099\u0000\u30B5\u3099\u0000"d~ +"\u30B7\u3099\u0000\u30B9\u3099\u0000\u30BB\u3099\u0000\u30BD\u3099\u0000\u30BF\u3099\u0000\u30C1\u3099\u0000\u30C4"d~ +"\u3099\u0000\u30C6\u3099\u0000\u30C8\u3099\u0000\u30CF\u3099\u0000\u30CF\u309A\u0000\u30D2\u3099\u0000\u30D2\u309A"d~ +"\u0000\u30D5\u3099\u0000\u30D5\u309A\u0000\u30D8\u3099\u0000\u30D8\u309A\u0000\u30DB\u3099\u0000\u30DB\u309A\u0000"d~ +"\u30EF\u3099\u0000\u30F0\u3099\u0000\u30F1\u3099\u0000\u30F2\u3099\u0000\u30FD\u3099\u0000\u349E\u0000\u34B9\u0000"d~ +"\u34BB\u0000\u34DF\u0000\u3515\u0000\u36EE\u0000\u36FC\u0000\u3781\u0000\u382F\u0000\u3862\u0000\u387C\u0000\u38C7"d~ +"\u0000\u38E3\u0000\u391C\u0000\u393A\u0000\u3A2E\u0000\u3A6C\u0000\u3AE4\u0000\u3B08\u0000\u3B19\u0000\u3B49\u0000"d~ +"\u3B9D\u0000\u3C18\u0000\u3C4E\u0000\u3D33\u0000\u3D96\u0000\u3EAC\u0000\u3EB8\u0000\u3F1B\u0000\u3FFC\u0000\u4008"d~ +"\u0000\u4018\u0000\u4039\u0000\u4046\u0000\u4096\u0000\u40E3\u0000\u412F\u0000\u4202\u0000\u4227\u0000\u42A0\u0000"d~ +"\u4301\u0000\u4334\u0000\u4359\u0000\u43D5\u0000\u43D9\u0000\u440B\u0000\u446B\u0000\u452B\u0000\u455D\u0000\u4561"d~ +"\u0000\u456B\u0000\u45D7\u0000\u45F9\u0000\u4635\u0000\u46BE\u0000\u46C7\u0000\u4995\u0000\u49E6\u0000\u4A6E\u0000"d~ +"\u4A76\u0000\u4AB2\u0000\u4B33\u0000\u4BCE\u0000\u4CCE\u0000\u4CED\u0000\u4CF8\u0000\u4D56\u0000\u4E0D\u0000\u4E26"d~ +"\u0000\u4E32\u0000\u4E38\u0000\u4E39\u0000\u4E3D\u0000\u4E41\u0000\u4E82\u0000\u4E86\u0000\u4EAE\u0000\u4EC0\u0000"d~ +"\u4ECC\u0000\u4EE4\u0000\u4F60\u0000\u4F80\u0000\u4F86\u0000\u4F8B\u0000\u4FAE\u0000\u4FBB\u0000\u4FBF\u0000\u5002"d~ +"\u0000\u502B\u0000\u507A\u0000\u5099\u0000\u50CF\u0000\u50DA\u0000\u50E7\u0000\u5140\u0000\u5145\u0000\u514D\u0000"d~ +"\u5154\u0000\u5164\u0000\u5167\u0000\u5168\u0000\u5169\u0000\u516D\u0000\u5177\u0000\u5180\u0000\u518D\u0000\u5192"d~ +"\u0000\u5195\u0000\u5197\u0000\u51A4\u0000\u51AC\u0000\u51B5\u0000\u51B7\u0000\u51C9\u0000\u51CC\u0000\u51DC\u0000"d~ +"\u51DE\u0000\u51F5\u0000\u5203\u0000\u5207\u0000\u5217\u0000\u5229\u0000\u523A\u0000\u523B\u0000\u5246\u0000\u5272"d~ +"\u0000\u5277\u0000\u5289\u0000\u529B\u0000\u52A3\u0000\u52B3\u0000\u52C7\u0000\u52C9\u0000\u52D2\u0000\u52DE\u0000"d~ +"\u52E4\u0000\u52F5\u0000\u52FA\u0000\u5305\u0000\u5306\u0000\u5317\u0000\u533F\u0000\u5349\u0000\u5351\u0000\u535A"d~ +"\u0000\u5373\u0000\u5375\u0000\u537D\u0000\u537F\u0000\u53C3\u0000\u53CA\u0000\u53DF\u0000\u53E5\u0000\u53EB\u0000"d~ +"\u53F1\u0000\u5406\u0000\u540F\u0000\u541D\u0000\u5438\u0000\u5442\u0000\u5448\u0000\u5468\u0000\u549E\u0000\u54A2"d~ +"\u0000\u54BD\u0000\u54F6\u0000\u5510\u0000\u5553\u0000\u5555\u0000\u5563\u0000\u5584\u0000\u5587\u0000\u5599\u0000"d~ +"\u559D\u0000\u55AB\u0000\u55B3\u0000\u55C0\u0000\u55C2\u0000\u55E2\u0000\u5606\u0000\u5651\u0000\u5668\u0000\u5674"d~ +"\u0000\u56F9\u0000\u5716\u0000\u5717\u0000\u578B\u0000\u57CE\u0000\u57F4\u0000\u580D\u0000\u5831\u0000\u5832\u0000"d~ +"\u5840\u0000\u585A\u0000\u585E\u0000\u58A8\u0000\u58AC\u0000\u58B3\u0000\u58D8\u0000\u58DF\u0000\u58EE\u0000\u58F2"d~ +"\u0000\u58F7\u0000\u5906\u0000\u591A\u0000\u5922\u0000\u5944\u0000\u5948\u0000\u5951\u0000\u5954\u0000\u5962\u0000"d~ +"\u5973\u0000\u59D8\u0000\u59EC\u0000\u5A1B\u0000\u5A27\u0000\u5A62\u0000\u5A66\u0000\u5AB5\u0000\u5B08\u0000\u5B28"d~ +"\u0000\u5B3E\u0000\u5B85\u0000\u5BC3\u0000\u5BD8\u0000\u5BE7\u0000\u5BEE\u0000\u5BF3\u0000\u5BFF\u0000\u5C06\u0000"d~ +"\u5C22\u0000\u5C3F\u0000\u5C60\u0000\u5C62\u0000\u5C64\u0000\u5C65\u0000\u5C6E\u0000\u5C8D\u0000\u5CC0\u0000\u5D19"d~ +"\u0000\u5D43\u0000\u5D50\u0000\u5D6B\u0000\u5D6E\u0000\u5D7C\u0000\u5DB2\u0000\u5DBA\u0000\u5DE1\u0000\u5DE2\u0000"d~ +"\u5DFD\u0000\u5E28\u0000\u5E3D\u0000\u5E69\u0000\u5E74\u0000\u5EA6\u0000\u5EB0\u0000\u5EB3\u0000\u5EB6\u0000\u5EC9"d~ +"\u0000\u5ECA\u0000\u5ED2\u0000\u5ED3\u0000\u5ED9\u0000\u5EEC\u0000\u5EFE\u0000\u5F04\u0000\u5F22\u0000\u5F53\u0000"d~ +"\u5F62\u0000\u5F69\u0000\u5F6B\u0000\u5F8B\u0000\u5F9A\u0000\u5FA9\u0000\u5FAD\u0000\u5FCD\u0000\u5FD7\u0000\u5FF5"d~ +"\u0000\u5FF9\u0000\u6012\u0000\u601C\u0000\u6075\u0000\u6081\u0000\u6094\u0000\u60C7\u0000\u60D8\u0000\u60E1\u0000"d~ +"\u6108\u0000\u6144\u0000\u6148\u0000\u614C\u0000\u614E\u0000\u6160\u0000\u6168\u0000\u617A\u0000\u618E\u0000\u6190"d~ +"\u0000\u61A4\u0000\u61AF\u0000\u61B2\u0000\u61DE\u0000\u61F2\u0000\u61F6\u0000\u6200\u0000\u6210\u0000\u621B\u0000"d~ +"\u622E\u0000\u6234\u0000\u625D\u0000\u62B1\u0000\u62C9\u0000\u62CF\u0000\u62D3\u0000\u62D4\u0000\u62FC\u0000\u62FE"d~ +"\u0000\u633D\u0000\u6350\u0000\u6368\u0000\u637B\u0000\u6383\u0000\u63A0\u0000\u63A9\u0000\u63C4\u0000\u63C5\u0000"d~ +"\u63E4\u0000\u641C\u0000\u6422\u0000\u6452\u0000\u6469\u0000\u6477\u0000\u647E\u0000\u649A\u0000\u649D\u0000\u64C4"d~ +"\u0000\u654F\u0000\u6556\u0000\u656C\u0000\u6578\u0000\u6599\u0000\u65C5\u0000\u65E2\u0000\u65E3\u0000\u6613\u0000"d~ +"\u6649\u0000\u6674\u0000\u6688\u0000\u6691\u0000\u669C\u0000\u66B4\u0000\u66C6\u0000\u66F4\u0000\u66F8\u0000\u6700"d~ +"\u0000\u6717\u0000\u671B\u0000\u6721\u0000\u674E\u0000\u6753\u0000\u6756\u0000\u675E\u0000\u677B\u0000\u6785\u0000"d~ +"\u6797\u0000\u67F3\u0000\u67FA\u0000\u6817\u0000\u681F\u0000\u6852\u0000\u6881\u0000\u6885\u0000\u688E\u0000\u68A8"d~ +"\u0000\u6914\u0000\u6942\u0000\u69A3\u0000\u69EA\u0000\u6A02\u0000\u6A13\u0000\u6AA8\u0000\u6AD3\u0000\u6ADB\u0000"d~ +"\u6B04\u0000\u6B21\u0000\u6B54\u0000\u6B72\u0000\u6B77\u0000\u6B79\u0000\u6B9F\u0000\u6BAE\u0000\u6BBA\u0000\u6BBB"d~ +"\u0000\u6C4E\u0000\u6C67\u0000\u6C88\u0000\u6CBF\u0000\u6CCC\u0000\u6CCD\u0000\u6CE5\u0000\u6D16\u0000\u6D1B\u0000"d~ +"\u6D1E\u0000\u6D34\u0000\u6D3E\u0000\u6D41\u0000\u6D69\u0000\u6D6A\u0000\u6D77\u0000\u6D78\u0000\u6D85\u0000\u6DCB"d~ +"\u0000\u6DDA\u0000\u6DEA\u0000\u6DF9\u0000\u6E1A\u0000\u6E2F\u0000\u6E6E\u0000\u6E9C\u0000\u6EBA\u0000\u6EC7\u0000"d~ +"\u6ECB\u0000\u6ED1\u0000\u6EDB\u0000\u6F0F\u0000\u6F22\u0000\u6F23\u0000\u6F6E\u0000\u6FC6\u0000\u6FEB\u0000\u6FFE"d~ +"\u0000\u701B\u0000\u701E\u0000\u7039\u0000\u704A\u0000\u7070\u0000\u7077\u0000\u707D\u0000\u7099\u0000\u70AD\u0000"d~ +"\u70C8\u0000\u70D9\u0000\u7145\u0000\u7149\u0000\u716E\u0000\u719C\u0000\u71CE\u0000\u71D0\u0000\u7210\u0000\u721B"d~ +"\u0000\u7228\u0000\u722B\u0000\u7235\u0000\u7250\u0000\u7262\u0000\u7280\u0000\u7295\u0000\u72AF\u0000\u72C0\u0000"d~ +"\u72FC\u0000\u732A\u0000\u7375\u0000\u737A\u0000\u7387\u0000\u738B\u0000\u73A5\u0000\u73B2\u0000\u73DE\u0000\u7406"d~ +"\u0000\u7409\u0000\u7422\u0000\u7447\u0000\u745C\u0000\u7469\u0000\u7471\u0000\u7485\u0000\u7489\u0000\u7498\u0000"d~ +"\u74CA\u0000\u7506\u0000\u7524\u0000\u753B\u0000\u753E\u0000\u7559\u0000\u7565\u0000\u7570\u0000\u75E2\u0000\u7610"d~ +"\u0000\u761D\u0000\u761F\u0000\u7642\u0000\u7669\u0000\u76CA\u0000\u76DB\u0000\u76E7\u0000\u76F4\u0000\u7701\u0000"d~ +"\u771E\u0000\u771F\u0000\u7740\u0000\u774A\u0000\u778B\u0000\u77A7\u0000\u784E\u0000\u786B\u0000\u788C\u0000\u7891"d~ +"\u0000\u78CA\u0000\u78CC\u0000\u78FB\u0000\u792A\u0000\u793C\u0000\u793E\u0000\u7948\u0000\u7949\u0000\u7950\u0000"d~ +"\u7956\u0000\u795D\u0000\u795E\u0000\u7965\u0000\u797F\u0000\u798D\u0000\u798E\u0000\u798F\u0000\u79AE\u0000\u79CA"d~ +"\u0000\u79EB\u0000\u7A1C\u0000\u7A40\u0000\u7A4A\u0000\u7A4F\u0000\u7A81\u0000\u7AB1\u0000\u7ACB\u0000\u7AEE\u0000"d~ +"\u7B20\u0000\u7BC0\u0000\u7BC6\u0000\u7BC9\u0000\u7C3E\u0000\u7C60\u0000\u7C7B\u0000\u7C92\u0000\u7CBE\u0000\u7CD2"d~ +"\u0000\u7CD6\u0000\u7CE3\u0000\u7CE7\u0000\u7CE8\u0000\u7D00\u0000\u7D10\u0000\u7D22\u0000\u7D2F\u0000\u7D5B\u0000"d~ +"\u7D63\u0000\u7DA0\u0000\u7DBE\u0000\u7DC7\u0000\u7DF4\u0000\u7E02\u0000\u7E09\u0000\u7E37\u0000\u7E41\u0000\u7E45"d~ +"\u0000\u7F3E\u0000\u7F72\u0000\u7F79\u0000\u7F7A\u0000\u7F85\u0000\u7F95\u0000\u7F9A\u0000\u7FBD\u0000\u7FFA\u0000"d~ +"\u8001\u0000\u8005\u0000\u8046\u0000\u8060\u0000\u806F\u0000\u8070\u0000\u807E\u0000\u808B\u0000\u80AD\u0000\u80B2"d~ +"\u0000\u8103\u0000\u813E\u0000\u81D8\u0000\u81E8\u0000\u81ED\u0000\u8201\u0000\u8204\u0000\u8218\u0000\u826F\u0000"d~ +"\u8279\u0000\u828B\u0000\u8291\u0000\u829D\u0000\u82B1\u0000\u82B3\u0000\u82BD\u0000\u82E5\u0000\u82E6\u0000\u831D"d~ +"\u0000\u8323\u0000\u8336\u0000\u8352\u0000\u8353\u0000\u8363\u0000\u83AD\u0000\u83BD\u0000\u83C9\u0000\u83CA\u0000"d~ +"\u83CC\u0000\u83DC\u0000\u83E7\u0000\u83EF\u0000\u83F1\u0000\u843D\u0000\u8449\u0000\u8457\u0000\u84EE\u0000\u84F1"d~ +"\u0000\u84F3\u0000\u84FC\u0000\u8516\u0000\u8564\u0000\u85CD\u0000\u85FA\u0000\u8606\u0000\u8612\u0000\u862D\u0000"d~ +"\u863F\u0000\u8650\u0000\u865C\u0000\u8667\u0000\u8669\u0000\u8688\u0000\u86A9\u0000\u86E2\u0000\u870E\u0000\u8728"d~ +"\u0000\u876B\u0000\u8779\u0000\u8786\u0000\u87BA\u0000\u87E1\u0000\u8801\u0000\u881F\u0000\u884C\u0000\u8860\u0000"d~ +"\u8863\u0000\u88C2\u0000\u88CF\u0000\u88D7\u0000\u88DE\u0000\u88E1\u0000\u88F8\u0000\u88FA\u0000\u8910\u0000\u8941"d~ +"\u0000\u8964\u0000\u8986\u0000\u898B\u0000\u8996\u0000\u8AA0\u0000\u8AAA\u0000\u8ABF\u0000\u8ACB\u0000\u8AD2\u0000"d~ +"\u8AD6\u0000\u8AED\u0000\u8AF8\u0000\u8AFE\u0000\u8B01\u0000\u8B39\u0000\u8B58\u0000\u8B80\u0000\u8B8A\u0000\u8C48"d~ +"\u0000\u8C55\u0000\u8CAB\u0000\u8CC1\u0000\u8CC2\u0000\u8CC8\u0000\u8CD3\u0000\u8D08\u0000\u8D1B\u0000\u8D77\u0000"d~ +"\u8DBC\u0000\u8DCB\u0000\u8DEF\u0000\u8DF0\u0000\u8ECA\u0000\u8ED4\u0000\u8F26\u0000\u8F2A\u0000\u8F38\u0000\u8F3B"d~ +"\u0000\u8F62\u0000\u8F9E\u0000\u8FB0\u0000\u8FB6\u0000\u9023\u0000\u9038\u0000\u9072\u0000\u907C\u0000\u908F\u0000"d~ +"\u9094\u0000\u90CE\u0000\u90DE\u0000\u90F1\u0000\u90FD\u0000\u9111\u0000\u911B\u0000\u916A\u0000\u9199\u0000\u91B4"d~ +"\u0000\u91CC\u0000\u91CF\u0000\u91D1\u0000\u9234\u0000\u9238\u0000\u9276\u0000\u927C\u0000\u92D7\u0000\u92D8\u0000"d~ +"\u9304\u0000\u934A\u0000\u93F9\u0000\u9415\u0000\u958B\u0000\u95AD\u0000\u95B7\u0000\u962E\u0000\u964B\u0000\u964D"d~ +"\u0000\u9675\u0000\u9678\u0000\u967C\u0000\u9686\u0000\u96A3\u0000\u96B7\u0000\u96B8\u0000\u96C3\u0000\u96E2\u0000"d~ +"\u96E3\u0000\u96F6\u0000\u96F7\u0000\u9723\u0000\u9732\u0000\u9748\u0000\u9756\u0000\u97DB\u0000\u97E0\u0000\u97FF"d~ +"\u0000\u980B\u0000\u9818\u0000\u9829\u0000\u983B\u0000\u985E\u0000\u98E2\u0000\u98EF\u0000\u98FC\u0000\u9928\u0000"d~ +"\u9929\u0000\u99A7\u0000\u99C2\u0000\u99F1\u0000\u99FE\u0000\u9A6A\u0000\u9B12\u0000\u9B6F\u0000\u9C40\u0000\u9C57"d~ +"\u0000\u9CFD\u0000\u9D67\u0000\u9DB4\u0000\u9DFA\u0000\u9E1E\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EBB\u0000"d~ +"\u9ECE\u0000\u9EF9\u0000\u9EFE\u0000\u9F05\u0000\u9F0F\u0000\u9F16\u0000\u9F3B\u0000\u9F43\u0000\u9F8D\u0000\u9F8E"d~ +"\u0000\u9F9C\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127"d~ +"\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000"d~ +"\U000114B9\U000114BA\u0000\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935"d~ +"\U00011930\u0000\U0001D157\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158"d~ +"\U0001D165\U0001D16F\u0000\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165"d~ +"\U0001D172\u0000\U0001D1B9\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000"d~ +"\U0001D1BA\U0001D165\u0000\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U00020122\u0000"d~ +"\U0002051C\u0000\U00020525\u0000\U0002054B\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000"d~ +"\U00020B63\u0000\U000214E4\u0000\U000216A8\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000"d~ +"\U00021DE4\u0000\U00021DE6\u0000\U00022183\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000"d~ +"\U0002284A\u0000\U00022B0C\u0000\U00022BF1\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000"d~ +"\U0002339C\u0000\U000233C3\u0000\U000233D5\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000"d~ +"\U00023AFA\u0000\U00023CBC\u0000\U00023D1E\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000"d~ +"\U000242EE\u0000\U000243AB\u0000\U00024608\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000"d~ +"\U00024FA1\u0000\U00024FB8\u0000\U00025044\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000"d~ +"\U00025249\u0000\U0002541D\u0000\U00025626\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000"d~ +"\U00025BAB\u0000\U00025C80\u0000\U00025CD0\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000"d~ +"\U000262D9\u0000\U0002633E\u0000\U000264DA\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000"d~ +"\U00026B3C\u0000\U00026C36\u0000\U00026CD5\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000"d~ +"\U000273CA\u0000\U00027667\u0000\U000278AE\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000"d~ +"\U000285D2\u0000\U000285ED\u0000\U0002872E\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000"d~ +"\U0002921A\u0000\U0002940A\u0000\U00029496\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000"d~ +"\U0002A20E\u0000\U0002A291\u0000\U0002A392\u0000\U0002A600\u0000"d; +return t[]; +} +dstring decompCompatTable() nothrow @nogc pure @safe { +static immutable dchar[10425] t = +"\u0000\u0020\u0000\u0020\u0301\u0000\u0020\u0303\u0000\u0020\u0304\u0000\u0020\u0305\u0000\u0020\u0306\u0000\u0020"d~ +"\u0307\u0000\u0020\u0308\u0000\u0020\u0308\u0300\u0000\u0020\u0308\u0301\u0000\u0020\u0308\u0342\u0000\u0020\u030A"d~ +"\u0000\u0020\u030B\u0000\u0020\u0313\u0000\u0020\u0313\u0300\u0000\u0020\u0313\u0301\u0000\u0020\u0313\u0342\u0000"d~ +"\u0020\u0314\u0000\u0020\u0314\u0300\u0000\u0020\u0314\u0301\u0000\u0020\u0314\u0342\u0000\u0020\u0327\u0000\u0020"d~ +"\u0328\u0000\u0020\u0333\u0000\u0020\u0342\u0000\u0020\u0345\u0000\u0020\u064B\u0000\u0020\u064C\u0000\u0020\u064C"d~ +"\u0651\u0000\u0020\u064D\u0000\u0020\u064D\u0651\u0000\u0020\u064E\u0000\u0020\u064E\u0651\u0000\u0020\u064F\u0000"d~ +"\u0020\u064F\u0651\u0000\u0020\u0650\u0000\u0020\u0650\u0651\u0000\u0020\u0651\u0000\u0020\u0651\u0670\u0000\u0020"d~ +"\u0652\u0000\u0020\u3099\u0000\u0020\u309A\u0000\u0021\u0000\u0021\u0021\u0000\u0021\u003F\u0000\u0022\u0000\u0023"d~ +"\u0000\u0024\u0000\u0025\u0000\u0026\u0000\u0027\u0000\u0028\u0000\u0028\u0031\u0029\u0000\u0028\u0031\u0030\u0029"d~ +"\u0000\u0028\u0031\u0031\u0029\u0000\u0028\u0031\u0032\u0029\u0000\u0028\u0031\u0033\u0029\u0000\u0028\u0031\u0034"d~ +"\u0029\u0000\u0028\u0031\u0035\u0029\u0000\u0028\u0031\u0036\u0029\u0000\u0028\u0031\u0037\u0029\u0000\u0028\u0031"d~ +"\u0038\u0029\u0000\u0028\u0031\u0039\u0029\u0000\u0028\u0032\u0029\u0000\u0028\u0032\u0030\u0029\u0000\u0028\u0033"d~ +"\u0029\u0000\u0028\u0034\u0029\u0000\u0028\u0035\u0029\u0000\u0028\u0036\u0029\u0000\u0028\u0037\u0029\u0000\u0028"d~ +"\u0038\u0029\u0000\u0028\u0039\u0029\u0000\u0028\u0041\u0029\u0000\u0028\u0042\u0029\u0000\u0028\u0043\u0029\u0000"d~ +"\u0028\u0044\u0029\u0000\u0028\u0045\u0029\u0000\u0028\u0046\u0029\u0000\u0028\u0047\u0029\u0000\u0028\u0048\u0029"d~ +"\u0000\u0028\u0049\u0029\u0000\u0028\u004A\u0029\u0000\u0028\u004B\u0029\u0000\u0028\u004C\u0029\u0000\u0028\u004D"d~ +"\u0029\u0000\u0028\u004E\u0029\u0000\u0028\u004F\u0029\u0000\u0028\u0050\u0029\u0000\u0028\u0051\u0029\u0000\u0028"d~ +"\u0052\u0029\u0000\u0028\u0053\u0029\u0000\u0028\u0054\u0029\u0000\u0028\u0055\u0029\u0000\u0028\u0056\u0029\u0000"d~ +"\u0028\u0057\u0029\u0000\u0028\u0058\u0029\u0000\u0028\u0059\u0029\u0000\u0028\u005A\u0029\u0000\u0028\u0061\u0029"d~ +"\u0000\u0028\u0062\u0029\u0000\u0028\u0063\u0029\u0000\u0028\u0064\u0029\u0000\u0028\u0065\u0029\u0000\u0028\u0066"d~ +"\u0029\u0000\u0028\u0067\u0029\u0000\u0028\u0068\u0029\u0000\u0028\u0069\u0029\u0000\u0028\u006A\u0029\u0000\u0028"d~ +"\u006B\u0029\u0000\u0028\u006C\u0029\u0000\u0028\u006D\u0029\u0000\u0028\u006E\u0029\u0000\u0028\u006F\u0029\u0000"d~ +"\u0028\u0070\u0029\u0000\u0028\u0071\u0029\u0000\u0028\u0072\u0029\u0000\u0028\u0073\u0029\u0000\u0028\u0074\u0029"d~ +"\u0000\u0028\u0075\u0029\u0000\u0028\u0076\u0029\u0000\u0028\u0077\u0029\u0000\u0028\u0078\u0029\u0000\u0028\u0079"d~ +"\u0029\u0000\u0028\u007A\u0029\u0000\u0028\u1100\u0029\u0000\u0028\u1100\u1161\u0029\u0000\u0028\u1102\u0029\u0000"d~ +"\u0028\u1102\u1161\u0029\u0000\u0028\u1103\u0029\u0000\u0028\u1103\u1161\u0029\u0000\u0028\u1105\u0029\u0000\u0028"d~ +"\u1105\u1161\u0029\u0000\u0028\u1106\u0029\u0000\u0028\u1106\u1161\u0029\u0000\u0028\u1107\u0029\u0000\u0028\u1107"d~ +"\u1161\u0029\u0000\u0028\u1109\u0029\u0000\u0028\u1109\u1161\u0029\u0000\u0028\u110B\u0029\u0000\u0028\u110B\u1161"d~ +"\u0029\u0000\u0028\u110B\u1169\u110C\u1165\u11AB\u0029\u0000\u0028\u110B\u1169\u1112\u116E\u0029\u0000\u0028\u110C"d~ +"\u0029\u0000\u0028\u110C\u1161\u0029\u0000\u0028\u110C\u116E\u0029\u0000\u0028\u110E\u0029\u0000\u0028\u110E\u1161"d~ +"\u0029\u0000\u0028\u110F\u0029\u0000\u0028\u110F\u1161\u0029\u0000\u0028\u1110\u0029\u0000\u0028\u1110\u1161\u0029"d~ +"\u0000\u0028\u1111\u0029\u0000\u0028\u1111\u1161\u0029\u0000\u0028\u1112\u0029\u0000\u0028\u1112\u1161\u0029\u0000"d~ +"\u0028\u4E00\u0029\u0000\u0028\u4E03\u0029\u0000\u0028\u4E09\u0029\u0000\u0028\u4E5D\u0029\u0000\u0028\u4E8C\u0029"d~ +"\u0000\u0028\u4E94\u0029\u0000\u0028\u4EE3\u0029\u0000\u0028\u4F01\u0029\u0000\u0028\u4F11\u0029\u0000\u0028\u516B"d~ +"\u0029\u0000\u0028\u516D\u0029\u0000\u0028\u52B4\u0029\u0000\u0028\u5341\u0029\u0000\u0028\u5354\u0029\u0000\u0028"d~ +"\u540D\u0029\u0000\u0028\u547C\u0029\u0000\u0028\u56DB\u0029\u0000\u0028\u571F\u0029\u0000\u0028\u5B66\u0029\u0000"d~ +"\u0028\u65E5\u0029\u0000\u0028\u6708\u0029\u0000\u0028\u6709\u0029\u0000\u0028\u6728\u0029\u0000\u0028\u682A\u0029"d~ +"\u0000\u0028\u6C34\u0029\u0000\u0028\u706B\u0029\u0000\u0028\u7279\u0029\u0000\u0028\u76E3\u0029\u0000\u0028\u793E"d~ +"\u0029\u0000\u0028\u795D\u0029\u0000\u0028\u796D\u0029\u0000\u0028\u81EA\u0029\u0000\u0028\u81F3\u0029\u0000\u0028"d~ +"\u8CA1\u0029\u0000\u0028\u8CC7\u0029\u0000\u0028\u91D1\u0029\u0000\u0029\u0000\u002A\u0000\u002B\u0000\u002C\u0000"d~ +"\u002D\u0000\u002E\u0000\u002E\u002E\u0000\u002E\u002E\u002E\u0000\u002F\u0000\u0030\u0000\u0030\u002C\u0000\u0030"d~ +"\u002E\u0000\u0030\u2044\u0033\u0000\u0030\u70B9\u0000\u0031\u0000\u0031\u002C\u0000\u0031\u002E\u0000\u0031\u0030"d~ +"\u0000\u0031\u0030\u002E\u0000\u0031\u0030\u65E5\u0000\u0031\u0030\u6708\u0000\u0031\u0030\u70B9\u0000\u0031\u0031"d~ +"\u0000\u0031\u0031\u002E\u0000\u0031\u0031\u65E5\u0000\u0031\u0031\u6708\u0000\u0031\u0031\u70B9\u0000\u0031\u0032"d~ +"\u0000\u0031\u0032\u002E\u0000\u0031\u0032\u65E5\u0000\u0031\u0032\u6708\u0000\u0031\u0032\u70B9\u0000\u0031\u0033"d~ +"\u0000\u0031\u0033\u002E\u0000\u0031\u0033\u65E5\u0000\u0031\u0033\u70B9\u0000\u0031\u0034\u0000\u0031\u0034\u002E"d~ +"\u0000\u0031\u0034\u65E5\u0000\u0031\u0034\u70B9\u0000\u0031\u0035\u0000\u0031\u0035\u002E\u0000\u0031\u0035\u65E5"d~ +"\u0000\u0031\u0035\u70B9\u0000\u0031\u0036\u0000\u0031\u0036\u002E\u0000\u0031\u0036\u65E5\u0000\u0031\u0036\u70B9"d~ +"\u0000\u0031\u0037\u0000\u0031\u0037\u002E\u0000\u0031\u0037\u65E5\u0000\u0031\u0037\u70B9\u0000\u0031\u0038\u0000"d~ +"\u0031\u0038\u002E\u0000\u0031\u0038\u65E5\u0000\u0031\u0038\u70B9\u0000\u0031\u0039\u0000\u0031\u0039\u002E\u0000"d~ +"\u0031\u0039\u65E5\u0000\u0031\u0039\u70B9\u0000\u0031\u2044\u0000\u0031\u2044\u0031\u0030\u0000\u0031\u2044\u0032"d~ +"\u0000\u0031\u2044\u0033\u0000\u0031\u2044\u0034\u0000\u0031\u2044\u0035\u0000\u0031\u2044\u0036\u0000\u0031\u2044"d~ +"\u0037\u0000\u0031\u2044\u0038\u0000\u0031\u2044\u0039\u0000\u0031\u65E5\u0000\u0031\u6708\u0000\u0031\u70B9\u0000"d~ +"\u0032\u0000\u0032\u002C\u0000\u0032\u002E\u0000\u0032\u0030\u0000\u0032\u0030\u002E\u0000\u0032\u0030\u65E5\u0000"d~ +"\u0032\u0030\u70B9\u0000\u0032\u0031\u0000\u0032\u0031\u65E5\u0000\u0032\u0031\u70B9\u0000\u0032\u0032\u0000\u0032"d~ +"\u0032\u65E5\u0000\u0032\u0032\u70B9\u0000\u0032\u0033\u0000\u0032\u0033\u65E5\u0000\u0032\u0033\u70B9\u0000\u0032"d~ +"\u0034\u0000\u0032\u0034\u65E5\u0000\u0032\u0034\u70B9\u0000\u0032\u0035\u0000\u0032\u0035\u65E5\u0000\u0032\u0036"d~ +"\u0000\u0032\u0036\u65E5\u0000\u0032\u0037\u0000\u0032\u0037\u65E5\u0000\u0032\u0038\u0000\u0032\u0038\u65E5\u0000"d~ +"\u0032\u0039\u0000\u0032\u0039\u65E5\u0000\u0032\u2044\u0033\u0000\u0032\u2044\u0035\u0000\u0032\u65E5\u0000\u0032"d~ +"\u6708\u0000\u0032\u70B9\u0000\u0033\u0000\u0033\u002C\u0000\u0033\u002E\u0000\u0033\u0030\u0000\u0033\u0030\u65E5"d~ +"\u0000\u0033\u0031\u0000\u0033\u0031\u65E5\u0000\u0033\u0032\u0000\u0033\u0033\u0000\u0033\u0034\u0000\u0033\u0035"d~ +"\u0000\u0033\u0036\u0000\u0033\u0037\u0000\u0033\u0038\u0000\u0033\u0039\u0000\u0033\u2044\u0034\u0000\u0033\u2044"d~ +"\u0035\u0000\u0033\u2044\u0038\u0000\u0033\u65E5\u0000\u0033\u6708\u0000\u0033\u70B9\u0000\u0034\u0000\u0034\u002C"d~ +"\u0000\u0034\u002E\u0000\u0034\u0030\u0000\u0034\u0031\u0000\u0034\u0032\u0000\u0034\u0033\u0000\u0034\u0034\u0000"d~ +"\u0034\u0035\u0000\u0034\u0036\u0000\u0034\u0037\u0000\u0034\u0038\u0000\u0034\u0039\u0000\u0034\u2044\u0035\u0000"d~ +"\u0034\u65E5\u0000\u0034\u6708\u0000\u0034\u70B9\u0000\u0035\u0000\u0035\u002C\u0000\u0035\u002E\u0000\u0035\u0030"d~ +"\u0000\u0035\u2044\u0036\u0000\u0035\u2044\u0038\u0000\u0035\u65E5\u0000\u0035\u6708\u0000\u0035\u70B9\u0000\u0036"d~ +"\u0000\u0036\u002C\u0000\u0036\u002E\u0000\u0036\u65E5\u0000\u0036\u6708\u0000\u0036\u70B9\u0000\u0037\u0000\u0037"d~ +"\u002C\u0000\u0037\u002E\u0000\u0037\u2044\u0038\u0000\u0037\u65E5\u0000\u0037\u6708\u0000\u0037\u70B9\u0000\u0038"d~ +"\u0000\u0038\u002C\u0000\u0038\u002E\u0000\u0038\u65E5\u0000\u0038\u6708\u0000\u0038\u70B9\u0000\u0039\u0000\u0039"d~ +"\u002C\u0000\u0039\u002E\u0000\u0039\u65E5\u0000\u0039\u6708\u0000\u0039\u70B9\u0000\u003A\u0000\u003A\u003A\u003D"d~ +"\u0000\u003B\u0000\u003C\u0000\u003C\u0338\u0000\u003D\u0000\u003D\u003D\u0000\u003D\u003D\u003D\u0000\u003D\u0338"d~ +"\u0000\u003E\u0000\u003E\u0338\u0000\u003F\u0000\u003F\u0021\u0000\u003F\u003F\u0000\u0040\u0000\u0041\u0000\u0041"d~ +"\u0055\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041\u0302\u0000\u0041\u0302\u0300\u0000\u0041\u0302\u0301\u0000"d~ +"\u0041\u0302\u0303\u0000\u0041\u0302\u0309\u0000\u0041\u0303\u0000\u0041\u0304\u0000\u0041\u0306\u0000\u0041\u0306"d~ +"\u0300\u0000\u0041\u0306\u0301\u0000\u0041\u0306\u0303\u0000\u0041\u0306\u0309\u0000\u0041\u0307\u0000\u0041\u0307"d~ +"\u0304\u0000\u0041\u0308\u0000\u0041\u0308\u0304\u0000\u0041\u0309\u0000\u0041\u030A\u0000\u0041\u030A\u0301\u0000"d~ +"\u0041\u030C\u0000\u0041\u030F\u0000\u0041\u0311\u0000\u0041\u0323\u0000\u0041\u0323\u0302\u0000\u0041\u0323\u0306"d~ +"\u0000\u0041\u0325\u0000\u0041\u0328\u0000\u0041\u2215\u006D\u0000\u0042\u0000\u0042\u0071\u0000\u0042\u0307\u0000"d~ +"\u0042\u0323\u0000\u0042\u0331\u0000\u0043\u0000\u0043\u0044\u0000\u0043\u006F\u002E\u0000\u0043\u0301\u0000\u0043"d~ +"\u0302\u0000\u0043\u0307\u0000\u0043\u030C\u0000\u0043\u0327\u0000\u0043\u0327\u0301\u0000\u0043\u2215\u006B\u0067"d~ +"\u0000\u0044\u0000\u0044\u004A\u0000\u0044\u005A\u0000\u0044\u005A\u030C\u0000\u0044\u007A\u0000\u0044\u007A\u030C"d~ +"\u0000\u0044\u0307\u0000\u0044\u030C\u0000\u0044\u0323\u0000\u0044\u0327\u0000\u0044\u032D\u0000\u0044\u0331\u0000"d~ +"\u0045\u0000\u0045\u0300\u0000\u0045\u0301\u0000\u0045\u0302\u0000\u0045\u0302\u0300\u0000\u0045\u0302\u0301\u0000"d~ +"\u0045\u0302\u0303\u0000\u0045\u0302\u0309\u0000\u0045\u0303\u0000\u0045\u0304\u0000\u0045\u0304\u0300\u0000\u0045"d~ +"\u0304\u0301\u0000\u0045\u0306\u0000\u0045\u0307\u0000\u0045\u0308\u0000\u0045\u0309\u0000\u0045\u030C\u0000\u0045"d~ +"\u030F\u0000\u0045\u0311\u0000\u0045\u0323\u0000\u0045\u0323\u0302\u0000\u0045\u0327\u0000\u0045\u0327\u0306\u0000"d~ +"\u0045\u0328\u0000\u0045\u032D\u0000\u0045\u0330\u0000\u0046\u0000\u0046\u0041\u0058\u0000\u0046\u0307\u0000\u0047"d~ +"\u0000\u0047\u0042\u0000\u0047\u0048\u007A\u0000\u0047\u0050\u0061\u0000\u0047\u0079\u0000\u0047\u0301\u0000\u0047"d~ +"\u0302\u0000\u0047\u0304\u0000\u0047\u0306\u0000\u0047\u0307\u0000\u0047\u030C\u0000\u0047\u0327\u0000\u0048\u0000"d~ +"\u0048\u0050\u0000\u0048\u0056\u0000\u0048\u0067\u0000\u0048\u007A\u0000\u0048\u0302\u0000\u0048\u0307\u0000\u0048"d~ +"\u0308\u0000\u0048\u030C\u0000\u0048\u0323\u0000\u0048\u0327\u0000\u0048\u032E\u0000\u0049\u0000\u0049\u0049\u0000"d~ +"\u0049\u0049\u0049\u0000\u0049\u004A\u0000\u0049\u0055\u0000\u0049\u0056\u0000\u0049\u0058\u0000\u0049\u0300\u0000"d~ +"\u0049\u0301\u0000\u0049\u0302\u0000\u0049\u0303\u0000\u0049\u0304\u0000\u0049\u0306\u0000\u0049\u0307\u0000\u0049"d~ +"\u0308\u0000\u0049\u0308\u0301\u0000\u0049\u0309\u0000\u0049\u030C\u0000\u0049\u030F\u0000\u0049\u0311\u0000\u0049"d~ +"\u0323\u0000\u0049\u0328\u0000\u0049\u0330\u0000\u004A\u0000\u004A\u0302\u0000\u004B\u0000\u004B\u0042\u0000\u004B"d~ +"\u004B\u0000\u004B\u004D\u0000\u004B\u0301\u0000\u004B\u030C\u0000\u004B\u0323\u0000\u004B\u0327\u0000\u004B\u0331"d~ +"\u0000\u004C\u0000\u004C\u004A\u0000\u004C\u0054\u0044\u0000\u004C\u006A\u0000\u004C\u00B7\u0000\u004C\u0301\u0000"d~ +"\u004C\u030C\u0000\u004C\u0323\u0000\u004C\u0323\u0304\u0000\u004C\u0327\u0000\u004C\u032D\u0000\u004C\u0331\u0000"d~ +"\u004D\u0000\u004D\u0042\u0000\u004D\u0043\u0000\u004D\u0044\u0000\u004D\u0048\u007A\u0000\u004D\u0050\u0061\u0000"d~ +"\u004D\u0052\u0000\u004D\u0056\u0000\u004D\u0057\u0000\u004D\u0301\u0000\u004D\u0307\u0000\u004D\u0323\u0000\u004D"d~ +"\u03A9\u0000\u004E\u0000\u004E\u004A\u0000\u004E\u006A\u0000\u004E\u006F\u0000\u004E\u0300\u0000\u004E\u0301\u0000"d~ +"\u004E\u0303\u0000\u004E\u0307\u0000\u004E\u030C\u0000\u004E\u0323\u0000\u004E\u0327\u0000\u004E\u032D\u0000\u004E"d~ +"\u0331\u0000\u004F\u0000\u004F\u0300\u0000\u004F\u0301\u0000\u004F\u0302\u0000\u004F\u0302\u0300\u0000\u004F\u0302"d~ +"\u0301\u0000\u004F\u0302\u0303\u0000\u004F\u0302\u0309\u0000\u004F\u0303\u0000\u004F\u0303\u0301\u0000\u004F\u0303"d~ +"\u0304\u0000\u004F\u0303\u0308\u0000\u004F\u0304\u0000\u004F\u0304\u0300\u0000\u004F\u0304\u0301\u0000\u004F\u0306"d~ +"\u0000\u004F\u0307\u0000\u004F\u0307\u0304\u0000\u004F\u0308\u0000\u004F\u0308\u0304\u0000\u004F\u0309\u0000\u004F"d~ +"\u030B\u0000\u004F\u030C\u0000\u004F\u030F\u0000\u004F\u0311\u0000\u004F\u031B\u0000\u004F\u031B\u0300\u0000\u004F"d~ +"\u031B\u0301\u0000\u004F\u031B\u0303\u0000\u004F\u031B\u0309\u0000\u004F\u031B\u0323\u0000\u004F\u0323\u0000\u004F"d~ +"\u0323\u0302\u0000\u004F\u0328\u0000\u004F\u0328\u0304\u0000\u0050\u0000\u0050\u0048\u0000\u0050\u0050\u004D\u0000"d~ +"\u0050\u0050\u0056\u0000\u0050\u0052\u0000\u0050\u0054\u0045\u0000\u0050\u0061\u0000\u0050\u0301\u0000\u0050\u0307"d~ +"\u0000\u0051\u0000\u0052\u0000\u0052\u0073\u0000\u0052\u0301\u0000\u0052\u0307\u0000\u0052\u030C\u0000\u0052\u030F"d~ +"\u0000\u0052\u0311\u0000\u0052\u0323\u0000\u0052\u0323\u0304\u0000\u0052\u0327\u0000\u0052\u0331\u0000\u0053\u0000"d~ +"\u0053\u0044\u0000\u0053\u004D\u0000\u0053\u0053\u0000\u0053\u0076\u0000\u0053\u0301\u0000\u0053\u0301\u0307\u0000"d~ +"\u0053\u0302\u0000\u0053\u0307\u0000\u0053\u030C\u0000\u0053\u030C\u0307\u0000\u0053\u0323\u0000\u0053\u0323\u0307"d~ +"\u0000\u0053\u0326\u0000\u0053\u0327\u0000\u0054\u0000\u0054\u0045\u004C\u0000\u0054\u0048\u007A\u0000\u0054\u004D"d~ +"\u0000\u0054\u0307\u0000\u0054\u030C\u0000\u0054\u0323\u0000\u0054\u0326\u0000\u0054\u0327\u0000\u0054\u032D\u0000"d~ +"\u0054\u0331\u0000\u0055\u0000\u0055\u0300\u0000\u0055\u0301\u0000\u0055\u0302\u0000\u0055\u0303\u0000\u0055\u0303"d~ +"\u0301\u0000\u0055\u0304\u0000\u0055\u0304\u0308\u0000\u0055\u0306\u0000\u0055\u0308\u0000\u0055\u0308\u0300\u0000"d~ +"\u0055\u0308\u0301\u0000\u0055\u0308\u0304\u0000\u0055\u0308\u030C\u0000\u0055\u0309\u0000\u0055\u030A\u0000\u0055"d~ +"\u030B\u0000\u0055\u030C\u0000\u0055\u030F\u0000\u0055\u0311\u0000\u0055\u031B\u0000\u0055\u031B\u0300\u0000\u0055"d~ +"\u031B\u0301\u0000\u0055\u031B\u0303\u0000\u0055\u031B\u0309\u0000\u0055\u031B\u0323\u0000\u0055\u0323\u0000\u0055"d~ +"\u0324\u0000\u0055\u0328\u0000\u0055\u032D\u0000\u0055\u0330\u0000\u0056\u0000\u0056\u0049\u0000\u0056\u0049\u0049"d~ +"\u0000\u0056\u0049\u0049\u0049\u0000\u0056\u0303\u0000\u0056\u0323\u0000\u0056\u2215\u006D\u0000\u0057\u0000\u0057"d~ +"\u0043\u0000\u0057\u005A\u0000\u0057\u0062\u0000\u0057\u0300\u0000\u0057\u0301\u0000\u0057\u0302\u0000\u0057\u0307"d~ +"\u0000\u0057\u0308\u0000\u0057\u0323\u0000\u0058\u0000\u0058\u0049\u0000\u0058\u0049\u0049\u0000\u0058\u0307\u0000"d~ +"\u0058\u0308\u0000\u0059\u0000\u0059\u0300\u0000\u0059\u0301\u0000\u0059\u0302\u0000\u0059\u0303\u0000\u0059\u0304"d~ +"\u0000\u0059\u0307\u0000\u0059\u0308\u0000\u0059\u0309\u0000\u0059\u0323\u0000\u005A\u0000\u005A\u0301\u0000\u005A"d~ +"\u0302\u0000\u005A\u0307\u0000\u005A\u030C\u0000\u005A\u0323\u0000\u005A\u0331\u0000\u005B\u0000\u005C\u0000\u005D"d~ +"\u0000\u005E\u0000\u005F\u0000\u0060\u0000\u0061\u0000\u0061\u002E\u006D\u002E\u0000\u0061\u002F\u0063\u0000\u0061"d~ +"\u002F\u0073\u0000\u0061\u02BE\u0000\u0061\u0300\u0000\u0061\u0301\u0000\u0061\u0302\u0000\u0061\u0302\u0300\u0000"d~ +"\u0061\u0302\u0301\u0000\u0061\u0302\u0303\u0000\u0061\u0302\u0309\u0000\u0061\u0303\u0000\u0061\u0304\u0000\u0061"d~ +"\u0306\u0000\u0061\u0306\u0300\u0000\u0061\u0306\u0301\u0000\u0061\u0306\u0303\u0000\u0061\u0306\u0309\u0000\u0061"d~ +"\u0307\u0000\u0061\u0307\u0304\u0000\u0061\u0308\u0000\u0061\u0308\u0304\u0000\u0061\u0309\u0000\u0061\u030A\u0000"d~ +"\u0061\u030A\u0301\u0000\u0061\u030C\u0000\u0061\u030F\u0000\u0061\u0311\u0000\u0061\u0323\u0000\u0061\u0323\u0302"d~ +"\u0000\u0061\u0323\u0306\u0000\u0061\u0325\u0000\u0061\u0328\u0000\u0062\u0000\u0062\u0061\u0072\u0000\u0062\u0307"d~ +"\u0000\u0062\u0323\u0000\u0062\u0331\u0000\u0063\u0000\u0063\u002F\u006F\u0000\u0063\u002F\u0075\u0000\u0063\u0061"d~ +"\u006C\u0000\u0063\u0063\u0000\u0063\u0064\u0000\u0063\u006D\u0000\u0063\u006D\u0032\u0000\u0063\u006D\u0033\u0000"d~ +"\u0063\u0301\u0000\u0063\u0302\u0000\u0063\u0307\u0000\u0063\u030C\u0000\u0063\u0327\u0000\u0063\u0327\u0301\u0000"d~ +"\u0064\u0000\u0064\u0042\u0000\u0064\u0061\u0000\u0064\u006C\u0000\u0064\u006D\u0000\u0064\u006D\u0032\u0000\u0064"d~ +"\u006D\u0033\u0000\u0064\u007A\u0000\u0064\u007A\u030C\u0000\u0064\u0307\u0000\u0064\u030C\u0000\u0064\u0323\u0000"d~ +"\u0064\u0327\u0000\u0064\u032D\u0000\u0064\u0331\u0000\u0065\u0000\u0065\u0056\u0000\u0065\u0072\u0067\u0000\u0065"d~ +"\u0300\u0000\u0065\u0301\u0000\u0065\u0302\u0000\u0065\u0302\u0300\u0000\u0065\u0302\u0301\u0000\u0065\u0302\u0303"d~ +"\u0000\u0065\u0302\u0309\u0000\u0065\u0303\u0000\u0065\u0304\u0000\u0065\u0304\u0300\u0000\u0065\u0304\u0301\u0000"d~ +"\u0065\u0306\u0000\u0065\u0307\u0000\u0065\u0308\u0000\u0065\u0309\u0000\u0065\u030C\u0000\u0065\u030F\u0000\u0065"d~ +"\u0311\u0000\u0065\u0323\u0000\u0065\u0323\u0302\u0000\u0065\u0327\u0000\u0065\u0327\u0306\u0000\u0065\u0328\u0000"d~ +"\u0065\u032D\u0000\u0065\u0330\u0000\u0066\u0000\u0066\u0066\u0000\u0066\u0066\u0069\u0000\u0066\u0066\u006C\u0000"d~ +"\u0066\u0069\u0000\u0066\u006C\u0000\u0066\u006D\u0000\u0066\u0307\u0000\u0067\u0000\u0067\u0061\u006C\u0000\u0067"d~ +"\u0301\u0000\u0067\u0302\u0000\u0067\u0304\u0000\u0067\u0306\u0000\u0067\u0307\u0000\u0067\u030C\u0000\u0067\u0327"d~ +"\u0000\u0068\u0000\u0068\u0050\u0061\u0000\u0068\u0061\u0000\u0068\u0302\u0000\u0068\u0307\u0000\u0068\u0308\u0000"d~ +"\u0068\u030C\u0000\u0068\u0323\u0000\u0068\u0327\u0000\u0068\u032E\u0000\u0068\u0331\u0000\u0069\u0000\u0069\u0069"d~ +"\u0000\u0069\u0069\u0069\u0000\u0069\u006A\u0000\u0069\u006E\u0000\u0069\u0076\u0000\u0069\u0078\u0000\u0069\u0300"d~ +"\u0000\u0069\u0301\u0000\u0069\u0302\u0000\u0069\u0303\u0000\u0069\u0304\u0000\u0069\u0306\u0000\u0069\u0308\u0000"d~ +"\u0069\u0308\u0301\u0000\u0069\u0309\u0000\u0069\u030C\u0000\u0069\u030F\u0000\u0069\u0311\u0000\u0069\u0323\u0000"d~ +"\u0069\u0328\u0000\u0069\u0330\u0000\u006A\u0000\u006A\u0302\u0000\u006A\u030C\u0000\u006B\u0000\u006B\u0041\u0000"d~ +"\u006B\u0048\u007A\u0000\u006B\u0050\u0061\u0000\u006B\u0056\u0000\u006B\u0057\u0000\u006B\u0063\u0061\u006C\u0000"d~ +"\u006B\u0067\u0000\u006B\u006C\u0000\u006B\u006D\u0000\u006B\u006D\u0032\u0000\u006B\u006D\u0033\u0000\u006B\u0074"d~ +"\u0000\u006B\u0301\u0000\u006B\u030C\u0000\u006B\u0323\u0000\u006B\u0327\u0000\u006B\u0331\u0000\u006B\u03A9\u0000"d~ +"\u006C\u0000\u006C\u006A\u0000\u006C\u006D\u0000\u006C\u006E\u0000\u006C\u006F\u0067\u0000\u006C\u0078\u0000\u006C"d~ +"\u00B7\u0000\u006C\u0301\u0000\u006C\u030C\u0000\u006C\u0323\u0000\u006C\u0323\u0304\u0000\u006C\u0327\u0000\u006C"d~ +"\u032D\u0000\u006C\u0331\u0000\u006D\u0000\u006D\u0032\u0000\u006D\u0033\u0000\u006D\u0041\u0000\u006D\u0056\u0000"d~ +"\u006D\u0057\u0000\u006D\u0062\u0000\u006D\u0067\u0000\u006D\u0069\u006C\u0000\u006D\u006C\u0000\u006D\u006D\u0000"d~ +"\u006D\u006D\u0032\u0000\u006D\u006D\u0033\u0000\u006D\u006F\u006C\u0000\u006D\u0073\u0000\u006D\u0301\u0000\u006D"d~ +"\u0307\u0000\u006D\u0323\u0000\u006D\u2215\u0073\u0000\u006D\u2215\u0073\u0032\u0000\u006E\u0000\u006E\u0041\u0000"d~ +"\u006E\u0046\u0000\u006E\u0056\u0000\u006E\u0057\u0000\u006E\u006A\u0000\u006E\u006D\u0000\u006E\u0073\u0000\u006E"d~ +"\u0300\u0000\u006E\u0301\u0000\u006E\u0303\u0000\u006E\u0307\u0000\u006E\u030C\u0000\u006E\u0323\u0000\u006E\u0327"d~ +"\u0000\u006E\u032D\u0000\u006E\u0331\u0000\u006F\u0000\u006F\u0056\u0000\u006F\u0300\u0000\u006F\u0301\u0000\u006F"d~ +"\u0302\u0000\u006F\u0302\u0300\u0000\u006F\u0302\u0301\u0000\u006F\u0302\u0303\u0000\u006F\u0302\u0309\u0000\u006F"d~ +"\u0303\u0000\u006F\u0303\u0301\u0000\u006F\u0303\u0304\u0000\u006F\u0303\u0308\u0000\u006F\u0304\u0000\u006F\u0304"d~ +"\u0300\u0000\u006F\u0304\u0301\u0000\u006F\u0306\u0000\u006F\u0307\u0000\u006F\u0307\u0304\u0000\u006F\u0308\u0000"d~ +"\u006F\u0308\u0304\u0000\u006F\u0309\u0000\u006F\u030B\u0000\u006F\u030C\u0000\u006F\u030F\u0000\u006F\u0311\u0000"d~ +"\u006F\u031B\u0000\u006F\u031B\u0300\u0000\u006F\u031B\u0301\u0000\u006F\u031B\u0303\u0000\u006F\u031B\u0309\u0000"d~ +"\u006F\u031B\u0323\u0000\u006F\u0323\u0000\u006F\u0323\u0302\u0000\u006F\u0328\u0000\u006F\u0328\u0304\u0000\u0070"d~ +"\u0000\u0070\u002E\u006D\u002E\u0000\u0070\u0041\u0000\u0070\u0046\u0000\u0070\u0056\u0000\u0070\u0057\u0000\u0070"d~ +"\u0063\u0000\u0070\u0073\u0000\u0070\u0301\u0000\u0070\u0307\u0000\u0071\u0000\u0072\u0000\u0072\u0061\u0064\u0000"d~ +"\u0072\u0061\u0064\u2215\u0073\u0000\u0072\u0061\u0064\u2215\u0073\u0032\u0000\u0072\u0301\u0000\u0072\u0307\u0000"d~ +"\u0072\u030C\u0000\u0072\u030F\u0000\u0072\u0311\u0000\u0072\u0323\u0000\u0072\u0323\u0304\u0000\u0072\u0327\u0000"d~ +"\u0072\u0331\u0000\u0073\u0000\u0073\u0072\u0000\u0073\u0074\u0000\u0073\u0301\u0000\u0073\u0301\u0307\u0000\u0073"d~ +"\u0302\u0000\u0073\u0307\u0000\u0073\u030C\u0000\u0073\u030C\u0307\u0000\u0073\u0323\u0000\u0073\u0323\u0307\u0000"d~ +"\u0073\u0326\u0000\u0073\u0327\u0000\u0074\u0000\u0074\u0307\u0000\u0074\u0308\u0000\u0074\u030C\u0000\u0074\u0323"d~ +"\u0000\u0074\u0326\u0000\u0074\u0327\u0000\u0074\u032D\u0000\u0074\u0331\u0000\u0075\u0000\u0075\u0300\u0000\u0075"d~ +"\u0301\u0000\u0075\u0302\u0000\u0075\u0303\u0000\u0075\u0303\u0301\u0000\u0075\u0304\u0000\u0075\u0304\u0308\u0000"d~ +"\u0075\u0306\u0000\u0075\u0308\u0000\u0075\u0308\u0300\u0000\u0075\u0308\u0301\u0000\u0075\u0308\u0304\u0000\u0075"d~ +"\u0308\u030C\u0000\u0075\u0309\u0000\u0075\u030A\u0000\u0075\u030B\u0000\u0075\u030C\u0000\u0075\u030F\u0000\u0075"d~ +"\u0311\u0000\u0075\u031B\u0000\u0075\u031B\u0300\u0000\u0075\u031B\u0301\u0000\u0075\u031B\u0303\u0000\u0075\u031B"d~ +"\u0309\u0000\u0075\u031B\u0323\u0000\u0075\u0323\u0000\u0075\u0324\u0000\u0075\u0328\u0000\u0075\u032D\u0000\u0075"d~ +"\u0330\u0000\u0076\u0000\u0076\u0069\u0000\u0076\u0069\u0069\u0000\u0076\u0069\u0069\u0069\u0000\u0076\u0303\u0000"d~ +"\u0076\u0323\u0000\u0077\u0000\u0077\u0300\u0000\u0077\u0301\u0000\u0077\u0302\u0000\u0077\u0307\u0000\u0077\u0308"d~ +"\u0000\u0077\u030A\u0000\u0077\u0323\u0000\u0078\u0000\u0078\u0069\u0000\u0078\u0069\u0069\u0000\u0078\u0307\u0000"d~ +"\u0078\u0308\u0000\u0079\u0000\u0079\u0300\u0000\u0079\u0301\u0000\u0079\u0302\u0000\u0079\u0303\u0000\u0079\u0304"d~ +"\u0000\u0079\u0307\u0000\u0079\u0308\u0000\u0079\u0309\u0000\u0079\u030A\u0000\u0079\u0323\u0000\u007A\u0000\u007A"d~ +"\u0301\u0000\u007A\u0302\u0000\u007A\u0307\u0000\u007A\u030C\u0000\u007A\u0323\u0000\u007A\u0331\u0000\u007B\u0000"d~ +"\u007C\u0000\u007D\u0000\u007E\u0000\u00A2\u0000\u00A3\u0000\u00A5\u0000\u00A6\u0000\u00AC\u0000\u00B0\u0043\u0000"d~ +"\u00B0\u0046\u0000\u00B7\u0000\u00C6\u0000\u00C6\u0301\u0000\u00C6\u0304\u0000\u00D8\u0301\u0000\u00E6\u0000\u00E6"d~ +"\u0301\u0000\u00E6\u0304\u0000\u00F0\u0000\u00F8\u0000\u00F8\u0301\u0000\u0126\u0000\u0127\u0000\u0131\u0000\u014B"d~ +"\u0000\u0153\u0000\u018E\u0000\u0190\u0000\u01AB\u0000\u01B7\u030C\u0000\u01C0\u0000\u01C1\u0000\u01C2\u0000\u0222"d~ +"\u0000\u0237\u0000\u0250\u0000\u0251\u0000\u0252\u0000\u0253\u0000\u0254\u0000\u0255\u0000\u0256\u0000\u0257\u0000"d~ +"\u0258\u0000\u0259\u0000\u025B\u0000\u025C\u0000\u025E\u0000\u025F\u0000\u0260\u0000\u0261\u0000\u0262\u0000\u0263"d~ +"\u0000\u0264\u0000\u0265\u0000\u0266\u0000\u0267\u0000\u0268\u0000\u0269\u0000\u026A\u0000\u026B\u0000\u026C\u0000"d~ +"\u026D\u0000\u026E\u0000\u026F\u0000\u0270\u0000\u0271\u0000\u0272\u0000\u0273\u0000\u0274\u0000\u0275\u0000\u0276"d~ +"\u0000\u0277\u0000\u0278\u0000\u0279\u0000\u027A\u0000\u027B\u0000\u027D\u0000\u027E\u0000\u0280\u0000\u0281\u0000"d~ +"\u0282\u0000\u0283\u0000\u0284\u0000\u0288\u0000\u0289\u0000\u028A\u0000\u028B\u0000\u028C\u0000\u028D\u0000\u028E"d~ +"\u0000\u028F\u0000\u0290\u0000\u0291\u0000\u0292\u0000\u0292\u030C\u0000\u0295\u0000\u0298\u0000\u0299\u0000\u029B"d~ +"\u0000\u029C\u0000\u029D\u0000\u029F\u0000\u02A1\u0000\u02A2\u0000\u02A3\u0000\u02A4\u0000\u02A5\u0000\u02A6\u0000"d~ +"\u02A7\u0000\u02A8\u0000\u02A9\u0000\u02AA\u0000\u02AB\u0000\u02B9\u0000\u02BC\u006E\u0000\u02D0\u0000\u02D1\u0000"d~ +"\u0300\u0000\u0301\u0000\u0308\u0301\u0000\u0313\u0000\u0391\u0000\u0391\u0300\u0000\u0391\u0301\u0000\u0391\u0304"d~ +"\u0000\u0391\u0306\u0000\u0391\u0313\u0000\u0391\u0313\u0300\u0000\u0391\u0313\u0300\u0345\u0000\u0391\u0313\u0301"d~ +"\u0000\u0391\u0313\u0301\u0345\u0000\u0391\u0313\u0342\u0000\u0391\u0313\u0342\u0345\u0000\u0391\u0313\u0345\u0000"d~ +"\u0391\u0314\u0000\u0391\u0314\u0300\u0000\u0391\u0314\u0300\u0345\u0000\u0391\u0314\u0301\u0000\u0391\u0314\u0301"d~ +"\u0345\u0000\u0391\u0314\u0342\u0000\u0391\u0314\u0342\u0345\u0000\u0391\u0314\u0345\u0000\u0391\u0345\u0000\u0392"d~ +"\u0000\u0393\u0000\u0394\u0000\u0395\u0000\u0395\u0300\u0000\u0395\u0301\u0000\u0395\u0313\u0000\u0395\u0313\u0300"d~ +"\u0000\u0395\u0313\u0301\u0000\u0395\u0314\u0000\u0395\u0314\u0300\u0000\u0395\u0314\u0301\u0000\u0396\u0000\u0397"d~ +"\u0000\u0397\u0300\u0000\u0397\u0301\u0000\u0397\u0313\u0000\u0397\u0313\u0300\u0000\u0397\u0313\u0300\u0345\u0000"d~ +"\u0397\u0313\u0301\u0000\u0397\u0313\u0301\u0345\u0000\u0397\u0313\u0342\u0000\u0397\u0313\u0342\u0345\u0000\u0397"d~ +"\u0313\u0345\u0000\u0397\u0314\u0000\u0397\u0314\u0300\u0000\u0397\u0314\u0300\u0345\u0000\u0397\u0314\u0301\u0000"d~ +"\u0397\u0314\u0301\u0345\u0000\u0397\u0314\u0342\u0000\u0397\u0314\u0342\u0345\u0000\u0397\u0314\u0345\u0000\u0397"d~ +"\u0345\u0000\u0398\u0000\u0399\u0000\u0399\u0300\u0000\u0399\u0301\u0000\u0399\u0304\u0000\u0399\u0306\u0000\u0399"d~ +"\u0308\u0000\u0399\u0313\u0000\u0399\u0313\u0300\u0000\u0399\u0313\u0301\u0000\u0399\u0313\u0342\u0000\u0399\u0314"d~ +"\u0000\u0399\u0314\u0300\u0000\u0399\u0314\u0301\u0000\u0399\u0314\u0342\u0000\u039A\u0000\u039B\u0000\u039C\u0000"d~ +"\u039D\u0000\u039E\u0000\u039F\u0000\u039F\u0300\u0000\u039F\u0301\u0000\u039F\u0313\u0000\u039F\u0313\u0300\u0000"d~ +"\u039F\u0313\u0301\u0000\u039F\u0314\u0000\u039F\u0314\u0300\u0000\u039F\u0314\u0301\u0000\u03A0\u0000\u03A1\u0000"d~ +"\u03A1\u0314\u0000\u03A3\u0000\u03A4\u0000\u03A5\u0000\u03A5\u0300\u0000\u03A5\u0301\u0000\u03A5\u0304\u0000\u03A5"d~ +"\u0306\u0000\u03A5\u0308\u0000\u03A5\u0314\u0000\u03A5\u0314\u0300\u0000\u03A5\u0314\u0301\u0000\u03A5\u0314\u0342"d~ +"\u0000\u03A6\u0000\u03A7\u0000\u03A8\u0000\u03A9\u0000\u03A9\u0300\u0000\u03A9\u0301\u0000\u03A9\u0313\u0000\u03A9"d~ +"\u0313\u0300\u0000\u03A9\u0313\u0300\u0345\u0000\u03A9\u0313\u0301\u0000\u03A9\u0313\u0301\u0345\u0000\u03A9\u0313"d~ +"\u0342\u0000\u03A9\u0313\u0342\u0345\u0000\u03A9\u0313\u0345\u0000\u03A9\u0314\u0000\u03A9\u0314\u0300\u0000\u03A9"d~ +"\u0314\u0300\u0345\u0000\u03A9\u0314\u0301\u0000\u03A9\u0314\u0301\u0345\u0000\u03A9\u0314\u0342\u0000\u03A9\u0314"d~ +"\u0342\u0345\u0000\u03A9\u0314\u0345\u0000\u03A9\u0345\u0000\u03B1\u0000\u03B1\u0300\u0000\u03B1\u0300\u0345\u0000"d~ +"\u03B1\u0301\u0000\u03B1\u0301\u0345\u0000\u03B1\u0304\u0000\u03B1\u0306\u0000\u03B1\u0313\u0000\u03B1\u0313\u0300"d~ +"\u0000\u03B1\u0313\u0300\u0345\u0000\u03B1\u0313\u0301\u0000\u03B1\u0313\u0301\u0345\u0000\u03B1\u0313\u0342\u0000"d~ +"\u03B1\u0313\u0342\u0345\u0000\u03B1\u0313\u0345\u0000\u03B1\u0314\u0000\u03B1\u0314\u0300\u0000\u03B1\u0314\u0300"d~ +"\u0345\u0000\u03B1\u0314\u0301\u0000\u03B1\u0314\u0301\u0345\u0000\u03B1\u0314\u0342\u0000\u03B1\u0314\u0342\u0345"d~ +"\u0000\u03B1\u0314\u0345\u0000\u03B1\u0342\u0000\u03B1\u0342\u0345\u0000\u03B1\u0345\u0000\u03B2\u0000\u03B3\u0000"d~ +"\u03B4\u0000\u03B5\u0000\u03B5\u0300\u0000\u03B5\u0301\u0000\u03B5\u0313\u0000\u03B5\u0313\u0300\u0000\u03B5\u0313"d~ +"\u0301\u0000\u03B5\u0314\u0000\u03B5\u0314\u0300\u0000\u03B5\u0314\u0301\u0000\u03B6\u0000\u03B7\u0000\u03B7\u0300"d~ +"\u0000\u03B7\u0300\u0345\u0000\u03B7\u0301\u0000\u03B7\u0301\u0345\u0000\u03B7\u0313\u0000\u03B7\u0313\u0300\u0000"d~ +"\u03B7\u0313\u0300\u0345\u0000\u03B7\u0313\u0301\u0000\u03B7\u0313\u0301\u0345\u0000\u03B7\u0313\u0342\u0000\u03B7"d~ +"\u0313\u0342\u0345\u0000\u03B7\u0313\u0345\u0000\u03B7\u0314\u0000\u03B7\u0314\u0300\u0000\u03B7\u0314\u0300\u0345"d~ +"\u0000\u03B7\u0314\u0301\u0000\u03B7\u0314\u0301\u0345\u0000\u03B7\u0314\u0342\u0000\u03B7\u0314\u0342\u0345\u0000"d~ +"\u03B7\u0314\u0345\u0000\u03B7\u0342\u0000\u03B7\u0342\u0345\u0000\u03B7\u0345\u0000\u03B8\u0000\u03B9\u0000\u03B9"d~ +"\u0300\u0000\u03B9\u0301\u0000\u03B9\u0304\u0000\u03B9\u0306\u0000\u03B9\u0308\u0000\u03B9\u0308\u0300\u0000\u03B9"d~ +"\u0308\u0301\u0000\u03B9\u0308\u0342\u0000\u03B9\u0313\u0000\u03B9\u0313\u0300\u0000\u03B9\u0313\u0301\u0000\u03B9"d~ +"\u0313\u0342\u0000\u03B9\u0314\u0000\u03B9\u0314\u0300\u0000\u03B9\u0314\u0301\u0000\u03B9\u0314\u0342\u0000\u03B9"d~ +"\u0342\u0000\u03BA\u0000\u03BB\u0000\u03BC\u0000\u03BC\u0041\u0000\u03BC\u0046\u0000\u03BC\u0056\u0000\u03BC\u0057"d~ +"\u0000\u03BC\u0067\u0000\u03BC\u006C\u0000\u03BC\u006D\u0000\u03BC\u0073\u0000\u03BD\u0000\u03BE\u0000\u03BF\u0000"d~ +"\u03BF\u0300\u0000\u03BF\u0301\u0000\u03BF\u0313\u0000\u03BF\u0313\u0300\u0000\u03BF\u0313\u0301\u0000\u03BF\u0314"d~ +"\u0000\u03BF\u0314\u0300\u0000\u03BF\u0314\u0301\u0000\u03C0\u0000\u03C1\u0000\u03C1\u0313\u0000\u03C1\u0314\u0000"d~ +"\u03C2\u0000\u03C3\u0000\u03C4\u0000\u03C5\u0000\u03C5\u0300\u0000\u03C5\u0301\u0000\u03C5\u0304\u0000\u03C5\u0306"d~ +"\u0000\u03C5\u0308\u0000\u03C5\u0308\u0300\u0000\u03C5\u0308\u0301\u0000\u03C5\u0308\u0342\u0000\u03C5\u0313\u0000"d~ +"\u03C5\u0313\u0300\u0000\u03C5\u0313\u0301\u0000\u03C5\u0313\u0342\u0000\u03C5\u0314\u0000\u03C5\u0314\u0300\u0000"d~ +"\u03C5\u0314\u0301\u0000\u03C5\u0314\u0342\u0000\u03C5\u0342\u0000\u03C6\u0000\u03C7\u0000\u03C8\u0000\u03C9\u0000"d~ +"\u03C9\u0300\u0000\u03C9\u0300\u0345\u0000\u03C9\u0301\u0000\u03C9\u0301\u0345\u0000\u03C9\u0313\u0000\u03C9\u0313"d~ +"\u0300\u0000\u03C9\u0313\u0300\u0345\u0000\u03C9\u0313\u0301\u0000\u03C9\u0313\u0301\u0345\u0000\u03C9\u0313\u0342"d~ +"\u0000\u03C9\u0313\u0342\u0345\u0000\u03C9\u0313\u0345\u0000\u03C9\u0314\u0000\u03C9\u0314\u0300\u0000\u03C9\u0314"d~ +"\u0300\u0345\u0000\u03C9\u0314\u0301\u0000\u03C9\u0314\u0301\u0345\u0000\u03C9\u0314\u0342\u0000\u03C9\u0314\u0342"d~ +"\u0345\u0000\u03C9\u0314\u0345\u0000\u03C9\u0342\u0000\u03C9\u0342\u0345\u0000\u03C9\u0345\u0000\u03DC\u0000\u03DD"d~ +"\u0000\u0406\u0308\u0000\u0410\u0306\u0000\u0410\u0308\u0000\u0413\u0301\u0000\u0415\u0300\u0000\u0415\u0306\u0000"d~ +"\u0415\u0308\u0000\u0416\u0306\u0000\u0416\u0308\u0000\u0417\u0308\u0000\u0418\u0300\u0000\u0418\u0304\u0000\u0418"d~ +"\u0306\u0000\u0418\u0308\u0000\u041A\u0301\u0000\u041E\u0308\u0000\u0423\u0304\u0000\u0423\u0306\u0000\u0423\u0308"d~ +"\u0000\u0423\u030B\u0000\u0427\u0308\u0000\u042B\u0308\u0000\u042D\u0308\u0000\u0430\u0000\u0430\u0306\u0000\u0430"d~ +"\u0308\u0000\u0431\u0000\u0432\u0000\u0433\u0000\u0433\u0301\u0000\u0434\u0000\u0435\u0000\u0435\u0300\u0000\u0435"d~ +"\u0306\u0000\u0435\u0308\u0000\u0436\u0000\u0436\u0306\u0000\u0436\u0308\u0000\u0437\u0000\u0437\u0308\u0000\u0438"d~ +"\u0000\u0438\u0300\u0000\u0438\u0304\u0000\u0438\u0306\u0000\u0438\u0308\u0000\u043A\u0000\u043A\u0301\u0000\u043B"d~ +"\u0000\u043C\u0000\u043D\u0000\u043E\u0000\u043E\u0308\u0000\u043F\u0000\u0440\u0000\u0441\u0000\u0442\u0000\u0443"d~ +"\u0000\u0443\u0304\u0000\u0443\u0306\u0000\u0443\u0308\u0000\u0443\u030B\u0000\u0444\u0000\u0445\u0000\u0446\u0000"d~ +"\u0447\u0000\u0447\u0308\u0000\u0448\u0000\u044A\u0000\u044B\u0000\u044B\u0308\u0000\u044C\u0000\u044D\u0000\u044D"d~ +"\u0308\u0000\u044E\u0000\u0455\u0000\u0456\u0000\u0456\u0308\u0000\u0458\u0000\u045F\u0000\u0474\u030F\u0000\u0475"d~ +"\u030F\u0000\u0491\u0000\u04AB\u0000\u04AF\u0000\u04B1\u0000\u04CF\u0000\u04D8\u0308\u0000\u04D9\u0000\u04D9\u0308"d~ +"\u0000\u04E8\u0308\u0000\u04E9\u0000\u04E9\u0308\u0000\u0565\u0582\u0000\u0574\u0565\u0000\u0574\u056B\u0000\u0574"d~ +"\u056D\u0000\u0574\u0576\u0000\u057E\u0576\u0000\u05D0\u0000\u05D0\u05B7\u0000\u05D0\u05B8\u0000\u05D0\u05BC\u0000"d~ +"\u05D0\u05DC\u0000\u05D1\u0000\u05D1\u05BC\u0000\u05D1\u05BF\u0000\u05D2\u0000\u05D2\u05BC\u0000\u05D3\u0000\u05D3"d~ +"\u05BC\u0000\u05D4\u0000\u05D4\u05BC\u0000\u05D5\u05B9\u0000\u05D5\u05BC\u0000\u05D6\u05BC\u0000\u05D8\u05BC\u0000"d~ +"\u05D9\u05B4\u0000\u05D9\u05BC\u0000\u05DA\u05BC\u0000\u05DB\u0000\u05DB\u05BC\u0000\u05DB\u05BF\u0000\u05DC\u0000"d~ +"\u05DC\u05BC\u0000\u05DD\u0000\u05DE\u05BC\u0000\u05E0\u05BC\u0000\u05E1\u05BC\u0000\u05E2\u0000\u05E3\u05BC\u0000"d~ +"\u05E4\u05BC\u0000\u05E4\u05BF\u0000\u05E6\u05BC\u0000\u05E7\u05BC\u0000\u05E8\u0000\u05E8\u05BC\u0000\u05E9\u05BC"d~ +"\u0000\u05E9\u05BC\u05C1\u0000\u05E9\u05BC\u05C2\u0000\u05E9\u05C1\u0000\u05E9\u05C2\u0000\u05EA\u0000\u05EA\u05BC"d~ +"\u0000\u05F2\u05B7\u0000\u0621\u0000\u0627\u0000\u0627\u0643\u0628\u0631\u0000\u0627\u0644\u0644\u0647\u0000\u0627"d~ +"\u064B\u0000\u0627\u0653\u0000\u0627\u0654\u0000\u0627\u0655\u0000\u0627\u0674\u0000\u0628\u0000\u0628\u062C\u0000"d~ +"\u0628\u062D\u0000\u0628\u062D\u064A\u0000\u0628\u062E\u0000\u0628\u062E\u064A\u0000\u0628\u0631\u0000\u0628\u0632"d~ +"\u0000\u0628\u0645\u0000\u0628\u0646\u0000\u0628\u0647\u0000\u0628\u0649\u0000\u0628\u064A\u0000\u0629\u0000\u062A"d~ +"\u0000\u062A\u062C\u0000\u062A\u062C\u0645\u0000\u062A\u062C\u0649\u0000\u062A\u062C\u064A\u0000\u062A\u062D\u0000"d~ +"\u062A\u062D\u062C\u0000\u062A\u062D\u0645\u0000\u062A\u062E\u0000\u062A\u062E\u0645\u0000\u062A\u062E\u0649\u0000"d~ +"\u062A\u062E\u064A\u0000\u062A\u0631\u0000\u062A\u0632\u0000\u062A\u0645\u0000\u062A\u0645\u062C\u0000\u062A\u0645"d~ +"\u062D\u0000\u062A\u0645\u062E\u0000\u062A\u0645\u0649\u0000\u062A\u0645\u064A\u0000\u062A\u0646\u0000\u062A\u0647"d~ +"\u0000\u062A\u0649\u0000\u062A\u064A\u0000\u062B\u0000\u062B\u062C\u0000\u062B\u0631\u0000\u062B\u0632\u0000\u062B"d~ +"\u0645\u0000\u062B\u0646\u0000\u062B\u0647\u0000\u062B\u0649\u0000\u062B\u064A\u0000\u062C\u0000\u062C\u062D\u0000"d~ +"\u062C\u062D\u0649\u0000\u062C\u062D\u064A\u0000\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647\u0000\u062C\u0645"d~ +"\u0000\u062C\u0645\u062D\u0000\u062C\u0645\u0649\u0000\u062C\u0645\u064A\u0000\u062C\u0649\u0000\u062C\u064A\u0000"d~ +"\u062D\u0000\u062D\u062C\u0000\u062D\u062C\u064A\u0000\u062D\u0645\u0000\u062D\u0645\u0649\u0000\u062D\u0645\u064A"d~ +"\u0000\u062D\u0649\u0000\u062D\u064A\u0000\u062E\u0000\u062E\u062C\u0000\u062E\u062D\u0000\u062E\u0645\u0000\u062E"d~ +"\u0649\u0000\u062E\u064A\u0000\u062F\u0000\u0630\u0000\u0630\u0670\u0000\u0631\u0000\u0631\u0633\u0648\u0644\u0000"d~ +"\u0631\u0670\u0000\u0631\u06CC\u0627\u0644\u0000\u0632\u0000\u0633\u0000\u0633\u062C\u0000\u0633\u062C\u062D\u0000"d~ +"\u0633\u062C\u0649\u0000\u0633\u062D\u0000\u0633\u062D\u062C\u0000\u0633\u062E\u0000\u0633\u062E\u0649\u0000\u0633"d~ +"\u062E\u064A\u0000\u0633\u0631\u0000\u0633\u0645\u0000\u0633\u0645\u062C\u0000\u0633\u0645\u062D\u0000\u0633\u0645"d~ +"\u0645\u0000\u0633\u0647\u0000\u0633\u0649\u0000\u0633\u064A\u0000\u0634\u0000\u0634\u062C\u0000\u0634\u062C\u064A"d~ +"\u0000\u0634\u062D\u0000\u0634\u062D\u0645\u0000\u0634\u062D\u064A\u0000\u0634\u062E\u0000\u0634\u0631\u0000\u0634"d~ +"\u0645\u0000\u0634\u0645\u062E\u0000\u0634\u0645\u0645\u0000\u0634\u0647\u0000\u0634\u0649\u0000\u0634\u064A\u0000"d~ +"\u0635\u0000\u0635\u062D\u0000\u0635\u062D\u062D\u0000\u0635\u062D\u064A\u0000\u0635\u062E\u0000\u0635\u0631\u0000"d~ +"\u0635\u0644\u0639\u0645\u0000\u0635\u0644\u0649\u0000\u0635\u0644\u0649\u0020\u0627\u0644\u0644\u0647\u0020\u0639"d~ +"\u0644\u064A\u0647\u0020\u0648\u0633\u0644\u0645\u0000\u0635\u0644\u06D2\u0000\u0635\u0645\u0000\u0635\u0645\u0645"d~ +"\u0000\u0635\u0649\u0000\u0635\u064A\u0000\u0636\u0000\u0636\u062C\u0000\u0636\u062D\u0000\u0636\u062D\u0649\u0000"d~ +"\u0636\u062D\u064A\u0000\u0636\u062E\u0000\u0636\u062E\u0645\u0000\u0636\u0631\u0000\u0636\u0645\u0000\u0636\u0649"d~ +"\u0000\u0636\u064A\u0000\u0637\u0000\u0637\u062D\u0000\u0637\u0645\u0000\u0637\u0645\u062D\u0000\u0637\u0645\u0645"d~ +"\u0000\u0637\u0645\u064A\u0000\u0637\u0649\u0000\u0637\u064A\u0000\u0638\u0000\u0638\u0645\u0000\u0639\u0000\u0639"d~ +"\u062C\u0000\u0639\u062C\u0645\u0000\u0639\u0644\u064A\u0647\u0000\u0639\u0645\u0000\u0639\u0645\u0645\u0000\u0639"d~ +"\u0645\u0649\u0000\u0639\u0645\u064A\u0000\u0639\u0649\u0000\u0639\u064A\u0000\u063A\u0000\u063A\u062C\u0000\u063A"d~ +"\u0645\u0000\u063A\u0645\u0645\u0000\u063A\u0645\u0649\u0000\u063A\u0645\u064A\u0000\u063A\u0649\u0000\u063A\u064A"d~ +"\u0000\u0640\u064B\u0000\u0640\u064E\u0000\u0640\u064E\u0651\u0000\u0640\u064F\u0000\u0640\u064F\u0651\u0000\u0640"d~ +"\u0650\u0000\u0640\u0650\u0651\u0000\u0640\u0651\u0000\u0640\u0652\u0000\u0641\u0000\u0641\u062C\u0000\u0641\u062D"d~ +"\u0000\u0641\u062E\u0000\u0641\u062E\u0645\u0000\u0641\u0645\u0000\u0641\u0645\u064A\u0000\u0641\u0649\u0000\u0641"d~ +"\u064A\u0000\u0642\u0000\u0642\u062D\u0000\u0642\u0644\u06D2\u0000\u0642\u0645\u0000\u0642\u0645\u062D\u0000\u0642"d~ +"\u0645\u0645\u0000\u0642\u0645\u064A\u0000\u0642\u0649\u0000\u0642\u064A\u0000\u0643\u0000\u0643\u0627\u0000\u0643"d~ +"\u062C\u0000\u0643\u062D\u0000\u0643\u062E\u0000\u0643\u0644\u0000\u0643\u0645\u0000\u0643\u0645\u0645\u0000\u0643"d~ +"\u0645\u064A\u0000\u0643\u0649\u0000\u0643\u064A\u0000\u0644\u0000\u0644\u0627\u0000\u0644\u0627\u0653\u0000\u0644"d~ +"\u0627\u0654\u0000\u0644\u0627\u0655\u0000\u0644\u062C\u0000\u0644\u062C\u062C\u0000\u0644\u062C\u0645\u0000\u0644"d~ +"\u062C\u064A\u0000\u0644\u062D\u0000\u0644\u062D\u0645\u0000\u0644\u062D\u0649\u0000\u0644\u062D\u064A\u0000\u0644"d~ +"\u062E\u0000\u0644\u062E\u0645\u0000\u0644\u0645\u0000\u0644\u0645\u062D\u0000\u0644\u0645\u064A\u0000\u0644\u0647"d~ +"\u0000\u0644\u0649\u0000\u0644\u064A\u0000\u0645\u0000\u0645\u0627\u0000\u0645\u062C\u0000\u0645\u062C\u062D\u0000"d~ +"\u0645\u062C\u062E\u0000\u0645\u062C\u0645\u0000\u0645\u062C\u064A\u0000\u0645\u062D\u0000\u0645\u062D\u062C\u0000"d~ +"\u0645\u062D\u0645\u0000\u0645\u062D\u0645\u062F\u0000\u0645\u062D\u064A\u0000\u0645\u062E\u0000\u0645\u062E\u062C"d~ +"\u0000\u0645\u062E\u0645\u0000\u0645\u062E\u064A\u0000\u0645\u0645\u0000\u0645\u0645\u064A\u0000\u0645\u0649\u0000"d~ +"\u0645\u064A\u0000\u0646\u0000\u0646\u062C\u0000\u0646\u062C\u062D\u0000\u0646\u062C\u0645\u0000\u0646\u062C\u0649"d~ +"\u0000\u0646\u062C\u064A\u0000\u0646\u062D\u0000\u0646\u062D\u0645\u0000\u0646\u062D\u0649\u0000\u0646\u062D\u064A"d~ +"\u0000\u0646\u062E\u0000\u0646\u0631\u0000\u0646\u0632\u0000\u0646\u0645\u0000\u0646\u0645\u0649\u0000\u0646\u0645"d~ +"\u064A\u0000\u0646\u0646\u0000\u0646\u0647\u0000\u0646\u0649\u0000\u0646\u064A\u0000\u0647\u0000\u0647\u062C\u0000"d~ +"\u0647\u0645\u0000\u0647\u0645\u062C\u0000\u0647\u0645\u0645\u0000\u0647\u0649\u0000\u0647\u064A\u0000\u0647\u0670"d~ +"\u0000\u0648\u0000\u0648\u0633\u0644\u0645\u0000\u0648\u0654\u0000\u0648\u0674\u0000\u0649\u0000\u0649\u0670\u0000"d~ +"\u064A\u0000\u064A\u062C\u0000\u064A\u062C\u064A\u0000\u064A\u062D\u0000\u064A\u062D\u064A\u0000\u064A\u062E\u0000"d~ +"\u064A\u0631\u0000\u064A\u0632\u0000\u064A\u0645\u0000\u064A\u0645\u0645\u0000\u064A\u0645\u064A\u0000\u064A\u0646"d~ +"\u0000\u064A\u0647\u0000\u064A\u0649\u0000\u064A\u064A\u0000\u064A\u0654\u0000\u064A\u0654\u0627\u0000\u064A\u0654"d~ +"\u062C\u0000\u064A\u0654\u062D\u0000\u064A\u0654\u062E\u0000\u064A\u0654\u0631\u0000\u064A\u0654\u0632\u0000\u064A"d~ +"\u0654\u0645\u0000\u064A\u0654\u0646\u0000\u064A\u0654\u0647\u0000\u064A\u0654\u0648\u0000\u064A\u0654\u0649\u0000"d~ +"\u064A\u0654\u064A\u0000\u064A\u0654\u06C6\u0000\u064A\u0654\u06C7\u0000\u064A\u0654\u06C8\u0000\u064A\u0654\u06D0"d~ +"\u0000\u064A\u0654\u06D5\u0000\u064A\u0674\u0000\u066E\u0000\u066F\u0000\u0671\u0000\u0679\u0000\u067A\u0000\u067B"d~ +"\u0000\u067E\u0000\u067F\u0000\u0680\u0000\u0683\u0000\u0684\u0000\u0686\u0000\u0687\u0000\u0688\u0000\u068C\u0000"d~ +"\u068D\u0000\u068E\u0000\u0691\u0000\u0698\u0000\u06A1\u0000\u06A4\u0000\u06A6\u0000\u06A9\u0000\u06AD\u0000\u06AF"d~ +"\u0000\u06B1\u0000\u06B3\u0000\u06BA\u0000\u06BB\u0000\u06BE\u0000\u06C1\u0000\u06C1\u0654\u0000\u06C5\u0000\u06C6"d~ +"\u0000\u06C7\u0000\u06C7\u0674\u0000\u06C8\u0000\u06C9\u0000\u06CB\u0000\u06CC\u0000\u06D0\u0000\u06D2\u0000\u06D2"d~ +"\u0654\u0000\u06D5\u0654\u0000\u0915\u093C\u0000\u0916\u093C\u0000\u0917\u093C\u0000\u091C\u093C\u0000\u0921\u093C"d~ +"\u0000\u0922\u093C\u0000\u0928\u093C\u0000\u092B\u093C\u0000\u092F\u093C\u0000\u0930\u093C\u0000\u0933\u093C\u0000"d~ +"\u09A1\u09BC\u0000\u09A2\u09BC\u0000\u09AF\u09BC\u0000\u09C7\u09BE\u0000\u09C7\u09D7\u0000\u0A16\u0A3C\u0000\u0A17"d~ +"\u0A3C\u0000\u0A1C\u0A3C\u0000\u0A2B\u0A3C\u0000\u0A32\u0A3C\u0000\u0A38\u0A3C\u0000\u0B21\u0B3C\u0000\u0B22\u0B3C"d~ +"\u0000\u0B47\u0B3E\u0000\u0B47\u0B56\u0000\u0B47\u0B57\u0000\u0B92\u0BD7\u0000\u0BC6\u0BBE\u0000\u0BC6\u0BD7\u0000"d~ +"\u0BC7\u0BBE\u0000\u0C46\u0C56\u0000\u0CBF\u0CD5\u0000\u0CC6\u0CC2\u0000\u0CC6\u0CC2\u0CD5\u0000\u0CC6\u0CD5\u0000"d~ +"\u0CC6\u0CD6\u0000\u0D46\u0D3E\u0000\u0D46\u0D57\u0000\u0D47\u0D3E\u0000\u0DD9\u0DCA\u0000\u0DD9\u0DCF\u0000\u0DD9"d~ +"\u0DCF\u0DCA\u0000\u0DD9\u0DDF\u0000\u0E4D\u0E32\u0000\u0EAB\u0E99\u0000\u0EAB\u0EA1\u0000\u0ECD\u0EB2\u0000\u0F0B"d~ +"\u0000\u0F40\u0FB5\u0000\u0F42\u0FB7\u0000\u0F4C\u0FB7\u0000\u0F51\u0FB7\u0000\u0F56\u0FB7\u0000\u0F5B\u0FB7\u0000"d~ +"\u0F71\u0F72\u0000\u0F71\u0F74\u0000\u0F71\u0F80\u0000\u0F90\u0FB5\u0000\u0F92\u0FB7\u0000\u0F9C\u0FB7\u0000\u0FA1"d~ +"\u0FB7\u0000\u0FA6\u0FB7\u0000\u0FAB\u0FB7\u0000\u0FB2\u0F71\u0F80\u0000\u0FB2\u0F80\u0000\u0FB3\u0F71\u0F80\u0000"d~ +"\u0FB3\u0F80\u0000\u1025\u102E\u0000\u10DC\u0000\u1100\u0000\u1100\u1161\u0000\u1101\u0000\u1102\u0000\u1102\u1161"d~ +"\u0000\u1103\u0000\u1103\u1161\u0000\u1104\u0000\u1105\u0000\u1105\u1161\u0000\u1106\u0000\u1106\u1161\u0000\u1107"d~ +"\u0000\u1107\u1161\u0000\u1108\u0000\u1109\u0000\u1109\u1161\u0000\u110A\u0000\u110B\u0000\u110B\u1161\u0000\u110B"d~ +"\u116E\u0000\u110C\u0000\u110C\u1161\u0000\u110C\u116E\u110B\u1174\u0000\u110D\u0000\u110E\u0000\u110E\u1161\u0000"d~ +"\u110E\u1161\u11B7\u1100\u1169\u0000\u110F\u0000\u110F\u1161\u0000\u1110\u0000\u1110\u1161\u0000\u1111\u0000\u1111"d~ +"\u1161\u0000\u1112\u0000\u1112\u1161\u0000\u1114\u0000\u1115\u0000\u111A\u0000\u111C\u0000\u111D\u0000\u111E\u0000"d~ +"\u1120\u0000\u1121\u0000\u1122\u0000\u1123\u0000\u1127\u0000\u1129\u0000\u112B\u0000\u112C\u0000\u112D\u0000\u112E"d~ +"\u0000\u112F\u0000\u1132\u0000\u1136\u0000\u1140\u0000\u1147\u0000\u114C\u0000\u1157\u0000\u1158\u0000\u1159\u0000"d~ +"\u1160\u0000\u1161\u0000\u1162\u0000\u1163\u0000\u1164\u0000\u1165\u0000\u1166\u0000\u1167\u0000\u1168\u0000\u1169"d~ +"\u0000\u116A\u0000\u116B\u0000\u116C\u0000\u116D\u0000\u116E\u0000\u116F\u0000\u1170\u0000\u1171\u0000\u1172\u0000"d~ +"\u1173\u0000\u1174\u0000\u1175\u0000\u1184\u0000\u1185\u0000\u1188\u0000\u1191\u0000\u1192\u0000\u1194\u0000\u119E"d~ +"\u0000\u11A1\u0000\u11AA\u0000\u11AC\u0000\u11AD\u0000\u11B0\u0000\u11B1\u0000\u11B2\u0000\u11B3\u0000\u11B4\u0000"d~ +"\u11B5\u0000\u11C7\u0000\u11C8\u0000\u11CC\u0000\u11CE\u0000\u11D3\u0000\u11D7\u0000\u11D9\u0000\u11DD\u0000\u11DF"d~ +"\u0000\u11F1\u0000\u11F2\u0000\u1B05\u1B35\u0000\u1B07\u1B35\u0000\u1B09\u1B35\u0000\u1B0B\u1B35\u0000\u1B0D\u1B35"d~ +"\u0000\u1B11\u1B35\u0000\u1B3A\u1B35\u0000\u1B3C\u1B35\u0000\u1B3E\u1B35\u0000\u1B3F\u1B35\u0000\u1B42\u1B35\u0000"d~ +"\u1D02\u0000\u1D16\u0000\u1D17\u0000\u1D1C\u0000\u1D1D\u0000\u1D25\u0000\u1D7B\u0000\u1D85\u0000\u1D91\u0000\u2010"d~ +"\u0000\u2013\u0000\u2014\u0000\u2032\u2032\u0000\u2032\u2032\u2032\u0000\u2032\u2032\u2032\u2032\u0000\u2035\u2035"d~ +"\u0000\u2035\u2035\u2035\u0000\u20A9\u0000\u2190\u0000\u2190\u0338\u0000\u2191\u0000\u2192\u0000\u2192\u0338\u0000"d~ +"\u2193\u0000\u2194\u0338\u0000\u21D0\u0338\u0000\u21D2\u0338\u0000\u21D4\u0338\u0000\u2202\u0000\u2203\u0338\u0000"d~ +"\u2207\u0000\u2208\u0338\u0000\u220B\u0338\u0000\u2211\u0000\u2212\u0000\u2223\u0338\u0000\u2225\u0338\u0000\u222B"d~ +"\u222B\u0000\u222B\u222B\u222B\u0000\u222B\u222B\u222B\u222B\u0000\u222E\u222E\u0000\u222E\u222E\u222E\u0000\u223C"d~ +"\u0338\u0000\u2243\u0338\u0000\u2245\u0338\u0000\u2248\u0338\u0000\u224D\u0338\u0000\u2261\u0338\u0000\u2264\u0338"d~ +"\u0000\u2265\u0338\u0000\u2272\u0338\u0000\u2273\u0338\u0000\u2276\u0338\u0000\u2277\u0338\u0000\u227A\u0338\u0000"d~ +"\u227B\u0338\u0000\u227C\u0338\u0000\u227D\u0338\u0000\u2282\u0338\u0000\u2283\u0338\u0000\u2286\u0338\u0000\u2287"d~ +"\u0338\u0000\u2291\u0338\u0000\u2292\u0338\u0000\u22A2\u0338\u0000\u22A8\u0338\u0000\u22A9\u0338\u0000\u22AB\u0338"d~ +"\u0000\u22B2\u0338\u0000\u22B3\u0338\u0000\u22B4\u0338\u0000\u22B5\u0338\u0000\u2502\u0000\u25A0\u0000\u25CB\u0000"d~ +"\u2985\u0000\u2986\u0000\u2ADD\u0338\u0000\u2C71\u0000\u2D61\u0000\u3001\u0000\u3002\u0000\u3008\u0000\u3009\u0000"d~ +"\u300A\u0000\u300B\u0000\u300C\u0000\u300D\u0000\u300E\u0000\u300F\u0000\u3010\u0000\u3011\u0000\u3012\u0000\u3014"d~ +"\u0000\u3014\u0053\u3015\u0000\u3014\u4E09\u3015\u0000\u3014\u4E8C\u3015\u0000\u3014\u52DD\u3015\u0000\u3014\u5B89"d~ +"\u3015\u0000\u3014\u6253\u3015\u0000\u3014\u6557\u3015\u0000\u3014\u672C\u3015\u0000\u3014\u70B9\u3015\u0000\u3014"d~ +"\u76D7\u3015\u0000\u3015\u0000\u3016\u0000\u3017\u0000\u3046\u3099\u0000\u304B\u3099\u0000\u304D\u3099\u0000\u304F"d~ +"\u3099\u0000\u3051\u3099\u0000\u3053\u3099\u0000\u3055\u3099\u0000\u3057\u3099\u0000\u3059\u3099\u0000\u305B\u3099"d~ +"\u0000\u305D\u3099\u0000\u305F\u3099\u0000\u3061\u3099\u0000\u3064\u3099\u0000\u3066\u3099\u0000\u3068\u3099\u0000"d~ +"\u306F\u3099\u0000\u306F\u309A\u0000\u3072\u3099\u0000\u3072\u309A\u0000\u3075\u3099\u0000\u3075\u309A\u0000\u3078"d~ +"\u3099\u0000\u3078\u309A\u0000\u307B\u304B\u0000\u307B\u3099\u0000\u307B\u309A\u0000\u3088\u308A\u0000\u3099\u0000"d~ +"\u309A\u0000\u309D\u3099\u0000\u30A1\u0000\u30A2\u0000\u30A2\u30CF\u309A\u30FC\u30C8\u0000\u30A2\u30EB\u30D5\u30A1"d~ +"\u0000\u30A2\u30F3\u30D8\u309A\u30A2\u0000\u30A2\u30FC\u30EB\u0000\u30A3\u0000\u30A4\u0000\u30A4\u30CB\u30F3\u30AF"d~ +"\u3099\u0000\u30A4\u30F3\u30C1\u0000\u30A5\u0000\u30A6\u0000\u30A6\u3099\u0000\u30A6\u30A9\u30F3\u0000\u30A7\u0000"d~ +"\u30A8\u0000\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\u0000\u30A8\u30FC\u30AB\u30FC\u0000\u30A9\u0000\u30AA\u0000\u30AA"d~ +"\u30F3\u30B9\u0000\u30AA\u30FC\u30E0\u0000\u30AB\u0000\u30AB\u3099\u0000\u30AB\u3099\u30ED\u30F3\u0000\u30AB\u3099"d~ +"\u30F3\u30DE\u0000\u30AB\u30A4\u30EA\u0000\u30AB\u30E9\u30C3\u30C8\u0000\u30AB\u30ED\u30EA\u30FC\u0000\u30AD\u0000"d~ +"\u30AD\u3099\u0000\u30AD\u3099\u30AB\u3099\u0000\u30AD\u3099\u30CB\u30FC\u0000\u30AD\u3099\u30EB\u30BF\u3099\u30FC"d~ +"\u0000\u30AD\u30E5\u30EA\u30FC\u0000\u30AD\u30ED\u0000\u30AD\u30ED\u30AF\u3099\u30E9\u30E0\u0000\u30AD\u30ED\u30E1"d~ +"\u30FC\u30C8\u30EB\u0000\u30AD\u30ED\u30EF\u30C3\u30C8\u0000\u30AF\u0000\u30AF\u3099\u0000\u30AF\u3099\u30E9\u30E0"d~ +"\u0000\u30AF\u3099\u30E9\u30E0\u30C8\u30F3\u0000\u30AF\u30EB\u30BB\u3099\u30A4\u30ED\u0000\u30AF\u30ED\u30FC\u30CD"d~ +"\u0000\u30B1\u0000\u30B1\u3099\u0000\u30B1\u30FC\u30B9\u0000\u30B3\u0000\u30B3\u3099\u0000\u30B3\u30B3\u0000\u30B3"d~ +"\u30C8\u0000\u30B3\u30EB\u30CA\u0000\u30B3\u30FC\u30DB\u309A\u0000\u30B5\u0000\u30B5\u3099\u0000\u30B5\u30A4\u30AF"d~ +"\u30EB\u0000\u30B5\u30F3\u30C1\u30FC\u30E0\u0000\u30B7\u0000\u30B7\u3099\u0000\u30B7\u30EA\u30F3\u30AF\u3099\u0000"d~ +"\u30B9\u0000\u30B9\u3099\u0000\u30BB\u0000\u30BB\u3099\u0000\u30BB\u30F3\u30C1\u0000\u30BB\u30F3\u30C8\u0000\u30BD"d~ +"\u0000\u30BD\u3099\u0000\u30BF\u0000\u30BF\u3099\u0000\u30BF\u3099\u30FC\u30B9\u0000\u30C1\u0000\u30C1\u3099\u0000"d~ +"\u30C3\u0000\u30C4\u0000\u30C4\u3099\u0000\u30C6\u0000\u30C6\u3099\u0000\u30C6\u3099\u30B7\u0000\u30C8\u0000\u30C8"d~ +"\u3099\u0000\u30C8\u3099\u30EB\u0000\u30C8\u30F3\u0000\u30CA\u0000\u30CA\u30CE\u0000\u30CB\u0000\u30CC\u0000\u30CD"d~ +"\u0000\u30CE\u0000\u30CE\u30C3\u30C8\u0000\u30CF\u0000\u30CF\u3099\u0000\u30CF\u3099\u30FC\u30EC\u30EB\u0000\u30CF"d~ +"\u309A\u0000\u30CF\u309A\u30FC\u30BB\u30F3\u30C8\u0000\u30CF\u309A\u30FC\u30C4\u0000\u30CF\u30A4\u30C4\u0000\u30D2"d~ +"\u0000\u30D2\u3099\u0000\u30D2\u3099\u30EB\u0000\u30D2\u309A\u0000\u30D2\u309A\u30A2\u30B9\u30C8\u30EB\u0000\u30D2"d~ +"\u309A\u30AF\u30EB\u0000\u30D2\u309A\u30B3\u0000\u30D5\u0000\u30D5\u3099\u0000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB"d~ +"\u0000\u30D5\u309A\u0000\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\u0000\u30D5\u30A3\u30FC\u30C8\u0000\u30D5\u30E9\u30F3"d~ +"\u0000\u30D8\u0000\u30D8\u3099\u0000\u30D8\u3099\u30FC\u30BF\u0000\u30D8\u309A\u0000\u30D8\u309A\u30BD\u0000\u30D8"d~ +"\u309A\u30CB\u30D2\u0000\u30D8\u309A\u30F3\u30B9\u0000\u30D8\u309A\u30FC\u30B7\u3099\u0000\u30D8\u30AF\u30BF\u30FC"d~ +"\u30EB\u0000\u30D8\u30EB\u30C4\u0000\u30DB\u0000\u30DB\u3099\u0000\u30DB\u3099\u30EB\u30C8\u0000\u30DB\u309A\u0000"d~ +"\u30DB\u309A\u30A4\u30F3\u30C8\u0000\u30DB\u309A\u30F3\u30C8\u3099\u0000\u30DB\u30F3\u0000\u30DB\u30FC\u30EB\u0000"d~ +"\u30DB\u30FC\u30F3\u0000\u30DE\u0000\u30DE\u30A4\u30AF\u30ED\u0000\u30DE\u30A4\u30EB\u0000\u30DE\u30C3\u30CF\u0000"d~ +"\u30DE\u30EB\u30AF\u0000\u30DE\u30F3\u30B7\u30E7\u30F3\u0000\u30DF\u0000\u30DF\u30AF\u30ED\u30F3\u0000\u30DF\u30EA"d~ +"\u0000\u30DF\u30EA\u30CF\u3099\u30FC\u30EB\u0000\u30E0\u0000\u30E1\u0000\u30E1\u30AB\u3099\u0000\u30E1\u30AB\u3099"d~ +"\u30C8\u30F3\u0000\u30E1\u30FC\u30C8\u30EB\u0000\u30E2\u0000\u30E3\u0000\u30E4\u0000\u30E4\u30FC\u30C8\u3099\u0000"d~ +"\u30E4\u30FC\u30EB\u0000\u30E5\u0000\u30E6\u0000\u30E6\u30A2\u30F3\u0000\u30E7\u0000\u30E8\u0000\u30E9\u0000\u30EA"d~ +"\u0000\u30EA\u30C3\u30C8\u30EB\u0000\u30EA\u30E9\u0000\u30EB\u0000\u30EB\u30D2\u309A\u30FC\u0000\u30EB\u30FC\u30D5"d~ +"\u3099\u30EB\u0000\u30EC\u0000\u30EC\u30E0\u0000\u30EC\u30F3\u30C8\u30B1\u3099\u30F3\u0000\u30ED\u0000\u30EF\u0000"d~ +"\u30EF\u3099\u0000\u30EF\u30C3\u30C8\u0000\u30F0\u0000\u30F0\u3099\u0000\u30F1\u0000\u30F1\u3099\u0000\u30F2\u0000"d~ +"\u30F2\u3099\u0000\u30F3\u0000\u30FB\u0000\u30FC\u0000\u30FD\u3099\u0000\u349E\u0000\u34B9\u0000\u34BB\u0000\u34DF"d~ +"\u0000\u3515\u0000\u36EE\u0000\u36FC\u0000\u3781\u0000\u382F\u0000\u3862\u0000\u387C\u0000\u38C7\u0000\u38E3\u0000"d~ +"\u391C\u0000\u393A\u0000\u3A2E\u0000\u3A6C\u0000\u3AE4\u0000\u3B08\u0000\u3B19\u0000\u3B49\u0000\u3B9D\u0000\u3C18"d~ +"\u0000\u3C4E\u0000\u3D33\u0000\u3D96\u0000\u3EAC\u0000\u3EB8\u0000\u3F1B\u0000\u3FFC\u0000\u4008\u0000\u4018\u0000"d~ +"\u4039\u0000\u4046\u0000\u4096\u0000\u40E3\u0000\u412F\u0000\u4202\u0000\u4227\u0000\u42A0\u0000\u4301\u0000\u4334"d~ +"\u0000\u4359\u0000\u43D5\u0000\u43D9\u0000\u440B\u0000\u446B\u0000\u452B\u0000\u455D\u0000\u4561\u0000\u456B\u0000"d~ +"\u45D7\u0000\u45F9\u0000\u4635\u0000\u46BE\u0000\u46C7\u0000\u4995\u0000\u49E6\u0000\u4A6E\u0000\u4A76\u0000\u4AB2"d~ +"\u0000\u4B33\u0000\u4BCE\u0000\u4CCE\u0000\u4CED\u0000\u4CF8\u0000\u4D56\u0000\u4E00\u0000\u4E01\u0000\u4E03\u0000"d~ +"\u4E09\u0000\u4E0A\u0000\u4E0B\u0000\u4E0D\u0000\u4E19\u0000\u4E26\u0000\u4E28\u0000\u4E2D\u0000\u4E32\u0000\u4E36"d~ +"\u0000\u4E38\u0000\u4E39\u0000\u4E3D\u0000\u4E3F\u0000\u4E41\u0000\u4E59\u0000\u4E5D\u0000\u4E82\u0000\u4E85\u0000"d~ +"\u4E86\u0000\u4E8C\u0000\u4E94\u0000\u4EA0\u0000\u4EA4\u0000\u4EAE\u0000\u4EBA\u0000\u4EC0\u0000\u4ECC\u0000\u4EE4"d~ +"\u0000\u4EE4\u548C\u0000\u4F01\u0000\u4F11\u0000\u4F60\u0000\u4F80\u0000\u4F86\u0000\u4F8B\u0000\u4FAE\u0000\u4FBB"d~ +"\u0000\u4FBF\u0000\u5002\u0000\u502B\u0000\u507A\u0000\u5099\u0000\u50CF\u0000\u50DA\u0000\u50E7\u0000\u512A\u0000"d~ +"\u513F\u0000\u5140\u0000\u5145\u0000\u514D\u0000\u5154\u0000\u5164\u0000\u5165\u0000\u5167\u0000\u5168\u0000\u5169"d~ +"\u0000\u516B\u0000\u516D\u0000\u5177\u0000\u5180\u0000\u5182\u0000\u518D\u0000\u5192\u0000\u5195\u0000\u5196\u0000"d~ +"\u5197\u0000\u5199\u0000\u51A4\u0000\u51AB\u0000\u51AC\u0000\u51B5\u0000\u51B7\u0000\u51C9\u0000\u51CC\u0000\u51DC"d~ +"\u0000\u51DE\u0000\u51E0\u0000\u51F5\u0000\u5200\u0000\u5203\u0000\u5207\u0000\u5217\u0000\u521D\u0000\u5229\u0000"d~ +"\u523A\u0000\u523B\u0000\u5246\u0000\u524D\u0000\u5272\u0000\u5277\u0000\u5289\u0000\u529B\u0000\u52A3\u0000\u52B3"d~ +"\u0000\u52B4\u0000\u52C7\u0000\u52C9\u0000\u52D2\u0000\u52DE\u0000\u52E4\u0000\u52F5\u0000\u52F9\u0000\u52FA\u0000"d~ +"\u5305\u0000\u5306\u0000\u5315\u0000\u5317\u0000\u531A\u0000\u5338\u0000\u533B\u0000\u533F\u0000\u5341\u0000\u5344"d~ +"\u0000\u5345\u0000\u5349\u0000\u5351\u0000\u5354\u0000\u535A\u0000\u535C\u0000\u5369\u0000\u5370\u0000\u5373\u0000"d~ +"\u5375\u0000\u537D\u0000\u537F\u0000\u5382\u0000\u53B6\u0000\u53C3\u0000\u53C8\u0000\u53CA\u0000\u53CC\u0000\u53DF"d~ +"\u0000\u53E3\u0000\u53E5\u0000\u53EB\u0000\u53EF\u0000\u53F1\u0000\u53F3\u0000\u5406\u0000\u5408\u0000\u540D\u0000"d~ +"\u540F\u0000\u541D\u0000\u5438\u0000\u5439\u0000\u5442\u0000\u5448\u0000\u5468\u0000\u549E\u0000\u54A2\u0000\u54BD"d~ +"\u0000\u54F6\u0000\u5510\u0000\u554F\u0000\u5553\u0000\u5555\u0000\u5563\u0000\u5584\u0000\u5587\u0000\u5599\u0000"d~ +"\u559D\u0000\u55AB\u0000\u55B3\u0000\u55B6\u0000\u55C0\u0000\u55C2\u0000\u55E2\u0000\u5606\u0000\u5651\u0000\u5668"d~ +"\u0000\u5674\u0000\u56D7\u0000\u56DB\u0000\u56F9\u0000\u5716\u0000\u5717\u0000\u571F\u0000\u5730\u0000\u578B\u0000"d~ +"\u57CE\u0000\u57F4\u0000\u580D\u0000\u5831\u0000\u5832\u0000\u5840\u0000\u585A\u0000\u585E\u0000\u58A8\u0000\u58AC"d~ +"\u0000\u58B3\u0000\u58D8\u0000\u58DF\u0000\u58EB\u0000\u58EE\u0000\u58F0\u0000\u58F2\u0000\u58F7\u0000\u5902\u0000"d~ +"\u5906\u0000\u590A\u0000\u5915\u0000\u591A\u0000\u591C\u0000\u5922\u0000\u5927\u0000\u5927\u6B63\u0000\u5929\u0000"d~ +"\u5944\u0000\u5948\u0000\u5951\u0000\u5954\u0000\u5962\u0000\u5973\u0000\u59D8\u0000\u59EC\u0000\u5A1B\u0000\u5A27"d~ +"\u0000\u5A62\u0000\u5A66\u0000\u5AB5\u0000\u5B08\u0000\u5B28\u0000\u5B3E\u0000\u5B50\u0000\u5B57\u0000\u5B66\u0000"d~ +"\u5B80\u0000\u5B85\u0000\u5B97\u0000\u5BC3\u0000\u5BD8\u0000\u5BE7\u0000\u5BEE\u0000\u5BF3\u0000\u5BF8\u0000\u5BFF"d~ +"\u0000\u5C06\u0000\u5C0F\u0000\u5C22\u0000\u5C38\u0000\u5C3F\u0000\u5C60\u0000\u5C62\u0000\u5C64\u0000\u5C65\u0000"d~ +"\u5C6E\u0000\u5C71\u0000\u5C8D\u0000\u5CC0\u0000\u5D19\u0000\u5D43\u0000\u5D50\u0000\u5D6B\u0000\u5D6E\u0000\u5D7C"d~ +"\u0000\u5DB2\u0000\u5DBA\u0000\u5DDB\u0000\u5DE1\u0000\u5DE2\u0000\u5DE5\u0000\u5DE6\u0000\u5DF1\u0000\u5DFD\u0000"d~ +"\u5DFE\u0000\u5E28\u0000\u5E3D\u0000\u5E69\u0000\u5E72\u0000\u5E73\u6210\u0000\u5E74\u0000\u5E7A\u0000\u5E7C\u0000"d~ +"\u5E7F\u0000\u5EA6\u0000\u5EB0\u0000\u5EB3\u0000\u5EB6\u0000\u5EC9\u0000\u5ECA\u0000\u5ED2\u0000\u5ED3\u0000\u5ED9"d~ +"\u0000\u5EEC\u0000\u5EF4\u0000\u5EFE\u0000\u5F04\u0000\u5F0B\u0000\u5F13\u0000\u5F22\u0000\u5F50\u0000\u5F53\u0000"d~ +"\u5F61\u0000\u5F62\u0000\u5F69\u0000\u5F6B\u0000\u5F73\u0000\u5F8B\u0000\u5F8C\u0000\u5F97\u0000\u5F9A\u0000\u5FA9"d~ +"\u0000\u5FAD\u0000\u5FC3\u0000\u5FCD\u0000\u5FD7\u0000\u5FF5\u0000\u5FF9\u0000\u6012\u0000\u601C\u0000\u6075\u0000"d~ +"\u6081\u0000\u6094\u0000\u60C7\u0000\u60D8\u0000\u60E1\u0000\u6108\u0000\u6144\u0000\u6148\u0000\u614C\u0000\u614E"d~ +"\u0000\u6160\u0000\u6168\u0000\u617A\u0000\u618E\u0000\u6190\u0000\u61A4\u0000\u61AF\u0000\u61B2\u0000\u61DE\u0000"d~ +"\u61F2\u0000\u61F6\u0000\u6200\u0000\u6208\u0000\u6210\u0000\u621B\u0000\u622E\u0000\u6234\u0000\u6236\u0000\u624B"d~ +"\u0000\u6253\u0000\u625D\u0000\u6295\u0000\u62B1\u0000\u62C9\u0000\u62CF\u0000\u62D3\u0000\u62D4\u0000\u62FC\u0000"d~ +"\u62FE\u0000\u6307\u0000\u633D\u0000\u6350\u0000\u6355\u0000\u6368\u0000\u637B\u0000\u6383\u0000\u63A0\u0000\u63A9"d~ +"\u0000\u63C4\u0000\u63C5\u0000\u63E4\u0000\u641C\u0000\u6422\u0000\u6452\u0000\u6469\u0000\u6477\u0000\u647E\u0000"d~ +"\u649A\u0000\u649D\u0000\u64C4\u0000\u652F\u0000\u6534\u0000\u654F\u0000\u6556\u0000\u656C\u0000\u6578\u0000\u6587"d~ +"\u0000\u6597\u0000\u6599\u0000\u65A4\u0000\u65B0\u0000\u65B9\u0000\u65C5\u0000\u65E0\u0000\u65E2\u0000\u65E3\u0000"d~ +"\u65E5\u0000\u660E\u6CBB\u0000\u6613\u0000\u6620\u0000\u662D\u548C\u0000\u6649\u0000\u6674\u0000\u6688\u0000\u6691"d~ +"\u0000\u669C\u0000\u66B4\u0000\u66C6\u0000\u66F0\u0000\u66F4\u0000\u66F8\u0000\u6700\u0000\u6708\u0000\u6709\u0000"d~ +"\u6717\u0000\u671B\u0000\u6721\u0000\u6728\u0000\u674E\u0000\u6753\u0000\u6756\u0000\u675E\u0000\u677B\u0000\u6785"d~ +"\u0000\u6797\u0000\u67F3\u0000\u67FA\u0000\u6817\u0000\u681F\u0000\u682A\u0000\u682A\u5F0F\u4F1A\u793E\u0000\u6852"d~ +"\u0000\u6881\u0000\u6885\u0000\u688E\u0000\u68A8\u0000\u6914\u0000\u6942\u0000\u69A3\u0000\u69EA\u0000\u6A02\u0000"d~ +"\u6A13\u0000\u6AA8\u0000\u6AD3\u0000\u6ADB\u0000\u6B04\u0000\u6B20\u0000\u6B21\u0000\u6B54\u0000\u6B62\u0000\u6B63"d~ +"\u0000\u6B72\u0000\u6B77\u0000\u6B79\u0000\u6B9F\u0000\u6BAE\u0000\u6BB3\u0000\u6BBA\u0000\u6BBB\u0000\u6BCB\u0000"d~ +"\u6BCD\u0000\u6BD4\u0000\u6BDB\u0000\u6C0F\u0000\u6C14\u0000\u6C34\u0000\u6C4E\u0000\u6C67\u0000\u6C88\u0000\u6CBF"d~ +"\u0000\u6CCC\u0000\u6CCD\u0000\u6CE5\u0000\u6CE8\u0000\u6D16\u0000\u6D1B\u0000\u6D1E\u0000\u6D34\u0000\u6D3E\u0000"d~ +"\u6D41\u0000\u6D69\u0000\u6D6A\u0000\u6D77\u0000\u6D78\u0000\u6D85\u0000\u6DCB\u0000\u6DDA\u0000\u6DEA\u0000\u6DF9"d~ +"\u0000\u6E1A\u0000\u6E2F\u0000\u6E6E\u0000\u6E80\u0000\u6E9C\u0000\u6EBA\u0000\u6EC7\u0000\u6ECB\u0000\u6ED1\u0000"d~ +"\u6EDB\u0000\u6F0F\u0000\u6F14\u0000\u6F22\u0000\u6F23\u0000\u6F6E\u0000\u6FC6\u0000\u6FEB\u0000\u6FFE\u0000\u701B"d~ +"\u0000\u701E\u0000\u7039\u0000\u704A\u0000\u706B\u0000\u7070\u0000\u7077\u0000\u707D\u0000\u7099\u0000\u70AD\u0000"d~ +"\u70C8\u0000\u70D9\u0000\u7121\u0000\u7145\u0000\u7149\u0000\u716E\u0000\u719C\u0000\u71CE\u0000\u71D0\u0000\u7210"d~ +"\u0000\u721B\u0000\u7228\u0000\u722A\u0000\u722B\u0000\u7235\u0000\u7236\u0000\u723B\u0000\u723F\u0000\u7247\u0000"d~ +"\u7250\u0000\u7259\u0000\u725B\u0000\u7262\u0000\u7279\u0000\u7280\u0000\u7295\u0000\u72AC\u0000\u72AF\u0000\u72C0"d~ +"\u0000\u72FC\u0000\u732A\u0000\u7375\u0000\u737A\u0000\u7384\u0000\u7387\u0000\u7389\u0000\u738B\u0000\u73A5\u0000"d~ +"\u73B2\u0000\u73DE\u0000\u7406\u0000\u7409\u0000\u7422\u0000\u7447\u0000\u745C\u0000\u7469\u0000\u7471\u0000\u7485"d~ +"\u0000\u7489\u0000\u7498\u0000\u74CA\u0000\u74DC\u0000\u74E6\u0000\u7506\u0000\u7518\u0000\u751F\u0000\u7524\u0000"d~ +"\u7528\u0000\u7530\u0000\u7532\u0000\u7533\u0000\u7537\u0000\u753B\u0000\u753E\u0000\u7559\u0000\u7565\u0000\u7570"d~ +"\u0000\u758B\u0000\u7592\u0000\u75E2\u0000\u7610\u0000\u761D\u0000\u761F\u0000\u7642\u0000\u7669\u0000\u7676\u0000"d~ +"\u767D\u0000\u76AE\u0000\u76BF\u0000\u76CA\u0000\u76DB\u0000\u76E3\u0000\u76E7\u0000\u76EE\u0000\u76F4\u0000\u7701"d~ +"\u0000\u771E\u0000\u771F\u0000\u7740\u0000\u774A\u0000\u778B\u0000\u77A7\u0000\u77DB\u0000\u77E2\u0000\u77F3\u0000"d~ +"\u784E\u0000\u786B\u0000\u788C\u0000\u7891\u0000\u78CA\u0000\u78CC\u0000\u78FB\u0000\u792A\u0000\u793A\u0000\u793C"d~ +"\u0000\u793E\u0000\u7948\u0000\u7949\u0000\u7950\u0000\u7956\u0000\u795D\u0000\u795E\u0000\u7965\u0000\u797F\u0000"d~ +"\u7981\u0000\u798D\u0000\u798E\u0000\u798F\u0000\u79AE\u0000\u79B8\u0000\u79BE\u0000\u79CA\u0000\u79D8\u0000\u79EB"d~ +"\u0000\u7A1C\u0000\u7A40\u0000\u7A4A\u0000\u7A4F\u0000\u7A74\u0000\u7A7A\u0000\u7A81\u0000\u7AB1\u0000\u7ACB\u0000"d~ +"\u7AEE\u0000\u7AF9\u0000\u7B20\u0000\u7B8F\u0000\u7BC0\u0000\u7BC6\u0000\u7BC9\u0000\u7C3E\u0000\u7C60\u0000\u7C73"d~ +"\u0000\u7C7B\u0000\u7C92\u0000\u7CBE\u0000\u7CD2\u0000\u7CD6\u0000\u7CE3\u0000\u7CE7\u0000\u7CE8\u0000\u7CF8\u0000"d~ +"\u7D00\u0000\u7D10\u0000\u7D22\u0000\u7D2F\u0000\u7D42\u0000\u7D5B\u0000\u7D63\u0000\u7DA0\u0000\u7DBE\u0000\u7DC7"d~ +"\u0000\u7DF4\u0000\u7E02\u0000\u7E09\u0000\u7E37\u0000\u7E41\u0000\u7E45\u0000\u7F36\u0000\u7F3E\u0000\u7F51\u0000"d~ +"\u7F72\u0000\u7F79\u0000\u7F7A\u0000\u7F85\u0000\u7F8A\u0000\u7F95\u0000\u7F9A\u0000\u7FBD\u0000\u7FFA\u0000\u8001"d~ +"\u0000\u8005\u0000\u800C\u0000\u8012\u0000\u8033\u0000\u8046\u0000\u8060\u0000\u806F\u0000\u8070\u0000\u807E\u0000"d~ +"\u807F\u0000\u8089\u0000\u808B\u0000\u80AD\u0000\u80B2\u0000\u8103\u0000\u813E\u0000\u81D8\u0000\u81E3\u0000\u81E8"d~ +"\u0000\u81EA\u0000\u81ED\u0000\u81F3\u0000\u81FC\u0000\u8201\u0000\u8204\u0000\u820C\u0000\u8218\u0000\u821B\u0000"d~ +"\u821F\u0000\u826E\u0000\u826F\u0000\u8272\u0000\u8278\u0000\u8279\u0000\u828B\u0000\u8291\u0000\u829D\u0000\u82B1"d~ +"\u0000\u82B3\u0000\u82BD\u0000\u82E5\u0000\u82E6\u0000\u831D\u0000\u8323\u0000\u8336\u0000\u8352\u0000\u8353\u0000"d~ +"\u8363\u0000\u83AD\u0000\u83BD\u0000\u83C9\u0000\u83CA\u0000\u83CC\u0000\u83DC\u0000\u83E7\u0000\u83EF\u0000\u83F1"d~ +"\u0000\u843D\u0000\u8449\u0000\u8457\u0000\u84EE\u0000\u84F1\u0000\u84F3\u0000\u84FC\u0000\u8516\u0000\u8564\u0000"d~ +"\u85CD\u0000\u85FA\u0000\u8606\u0000\u8612\u0000\u862D\u0000\u863F\u0000\u864D\u0000\u8650\u0000\u865C\u0000\u8667"d~ +"\u0000\u8669\u0000\u866B\u0000\u8688\u0000\u86A9\u0000\u86E2\u0000\u870E\u0000\u8728\u0000\u876B\u0000\u8779\u0000"d~ +"\u8786\u0000\u87BA\u0000\u87E1\u0000\u8801\u0000\u881F\u0000\u8840\u0000\u884C\u0000\u8860\u0000\u8863\u0000\u88C2"d~ +"\u0000\u88CF\u0000\u88D7\u0000\u88DE\u0000\u88E1\u0000\u88F8\u0000\u88FA\u0000\u8910\u0000\u8941\u0000\u8964\u0000"d~ +"\u897E\u0000\u8986\u0000\u898B\u0000\u8996\u0000\u89D2\u0000\u89E3\u0000\u8A00\u0000\u8AA0\u0000\u8AAA\u0000\u8ABF"d~ +"\u0000\u8ACB\u0000\u8AD2\u0000\u8AD6\u0000\u8AED\u0000\u8AF8\u0000\u8AFE\u0000\u8B01\u0000\u8B39\u0000\u8B58\u0000"d~ +"\u8B80\u0000\u8B8A\u0000\u8C37\u0000\u8C46\u0000\u8C48\u0000\u8C55\u0000\u8C78\u0000\u8C9D\u0000\u8CA1\u0000\u8CA9"d~ +"\u0000\u8CAB\u0000\u8CC1\u0000\u8CC2\u0000\u8CC7\u0000\u8CC8\u0000\u8CD3\u0000\u8D08\u0000\u8D1B\u0000\u8D64\u0000"d~ +"\u8D70\u0000\u8D77\u0000\u8DB3\u0000\u8DBC\u0000\u8DCB\u0000\u8DEF\u0000\u8DF0\u0000\u8EAB\u0000\u8ECA\u0000\u8ED4"d~ +"\u0000\u8F26\u0000\u8F2A\u0000\u8F38\u0000\u8F3B\u0000\u8F62\u0000\u8F9B\u0000\u8F9E\u0000\u8FB0\u0000\u8FB5\u0000"d~ +"\u8FB6\u0000\u9023\u0000\u9038\u0000\u904A\u0000\u9069\u0000\u9072\u0000\u907C\u0000\u908F\u0000\u9091\u0000\u9094"d~ +"\u0000\u90CE\u0000\u90DE\u0000\u90F1\u0000\u90FD\u0000\u9111\u0000\u911B\u0000\u9149\u0000\u914D\u0000\u916A\u0000"d~ +"\u9199\u0000\u91B4\u0000\u91C6\u0000\u91CC\u0000\u91CF\u0000\u91D1\u0000\u9234\u0000\u9238\u0000\u9276\u0000\u927C"d~ +"\u0000\u92D7\u0000\u92D8\u0000\u9304\u0000\u934A\u0000\u93F9\u0000\u9415\u0000\u9577\u0000\u9580\u0000\u958B\u0000"d~ +"\u95AD\u0000\u95B7\u0000\u961C\u0000\u962E\u0000\u964B\u0000\u964D\u0000\u9675\u0000\u9678\u0000\u967C\u0000\u9686"d~ +"\u0000\u96A3\u0000\u96B6\u0000\u96B7\u0000\u96B8\u0000\u96B9\u0000\u96C3\u0000\u96E2\u0000\u96E3\u0000\u96E8\u0000"d~ +"\u96F6\u0000\u96F7\u0000\u9723\u0000\u9732\u0000\u9748\u0000\u9751\u0000\u9756\u0000\u975E\u0000\u9762\u0000\u9769"d~ +"\u0000\u97CB\u0000\u97DB\u0000\u97E0\u0000\u97ED\u0000\u97F3\u0000\u97FF\u0000\u9801\u0000\u9805\u0000\u980B\u0000"d~ +"\u9818\u0000\u9829\u0000\u983B\u0000\u985E\u0000\u98A8\u0000\u98DB\u0000\u98DF\u0000\u98E2\u0000\u98EF\u0000\u98FC"d~ +"\u0000\u9928\u0000\u9929\u0000\u9996\u0000\u9999\u0000\u99A7\u0000\u99AC\u0000\u99C2\u0000\u99F1\u0000\u99FE\u0000"d~ +"\u9A6A\u0000\u9AA8\u0000\u9AD8\u0000\u9ADF\u0000\u9B12\u0000\u9B25\u0000\u9B2F\u0000\u9B32\u0000\u9B3C\u0000\u9B5A"d~ +"\u0000\u9B6F\u0000\u9C40\u0000\u9C57\u0000\u9CE5\u0000\u9CFD\u0000\u9D67\u0000\u9DB4\u0000\u9DFA\u0000\u9E1E\u0000"d~ +"\u9E75\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EA5\u0000\u9EBB\u0000\u9EC3\u0000\u9ECD\u0000\u9ECE\u0000\u9ED1"d~ +"\u0000\u9EF9\u0000\u9EFD\u0000\u9EFE\u0000\u9F05\u0000\u9F0E\u0000\u9F0F\u0000\u9F13\u0000\u9F16\u0000\u9F20\u0000"d~ +"\u9F3B\u0000\u9F43\u0000\u9F4A\u0000\u9F52\u0000\u9F8D\u0000\u9F8E\u0000\u9F9C\u0000\u9F9F\u0000\u9FA0\u0000\uA651"d~ +"\u0000\uA689\u0000\uA727\u0000\uA76F\u0000\uA78E\u0000\uAB37\u0000\uAB52\u0000\uAB66\u0000\uAB67\u0000\U00011099"d~ +"\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127\u0000\U00011132\U00011127"d~ +"\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000\U000114B9\U000114BA\u0000"d~ +"\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935\U00011930\u0000\U0001D157"d~ +"\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F\u0000"d~ +"\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000\U0001D1B9"d~ +"\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165\u0000"d~ +"\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U0001DF04\u0000\U0001DF05\u0000\U0001DF06"d~ +"\u0000\U0001DF08\u0000\U0001DF0A\u0000\U0001DF1E\u0000\U00020122\u0000\U0002051C\u0000\U00020525\u0000\U0002054B"d~ +"\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000\U000214E4\u0000\U000216A8"d~ +"\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000\U00021DE6\u0000\U00022183"d~ +"\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000\U00022B0C\u0000\U00022BF1"d~ +"\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000\U000233C3\u0000\U000233D5"d~ +"\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000\U00023CBC\u0000\U00023D1E"d~ +"\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000\U000243AB\u0000\U00024608"d~ +"\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000\U00024FB8\u0000\U00025044"d~ +"\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000\U0002541D\u0000\U00025626"d~ +"\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000\U00025C80\u0000\U00025CD0"d~ +"\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000\U0002633E\u0000\U000264DA"d~ +"\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000\U00026C36\u0000\U00026CD5"d~ +"\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000\U00027667\u0000\U000278AE"d~ +"\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000\U000285ED\u0000\U0002872E"d~ +"\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000\U0002940A\u0000\U00029496"d~ +"\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000\U0002A291\u0000\U0002A392"d~ +"\u0000\U0002A600\u0000"d; +return t[]; } } @@ -38,11 +877,850 @@ static if (size_t.sizeof == 8) enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x20, 0x2a0], [ 0x100, 0xa00, 0x2360], [ 0x402030202020100, 0x706020202020205, 0x802020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xa000900080000, 0xc000b, 0xf000e000d0000, 0x11001000000000, 0x15001400130012, 0x19001800170016, 0x1b001a00000000, 0x0, 0x1c, 0x1e0000001d0000, 0x1f00000000, 0x0, 0x0, 0x0, 0x0, 0x2100200000, 0x2200000000, 0x2400230000, 0x0, 0x2500000000, 0x2700000026, 0x2800000000, 0x2900000000, 0x2a00000000, 0x2b00000000, 0x2c0000, 0x2e002d0000, 0x3100300000002f, 0x330032, 0x340000, 0x35000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3800370036, 0x0, 0x0, 0x0, 0x3b003a00390000, 0x3d003c, 0x410040003f003e, 0x45004400430042, 0x49004800470046, 0x4d004c004b004a, 0x510050004f004e, 0x530052, 0x57005600550054, 0x5a00590058, 0x5e005d005c005b, 0x6100000060005f, 0x620000, 0x0, 0x63000000000000, 0x67006600650064, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x69000000000068, 0x6a00000000, 0x0, 0x0, 0x6b000000000000, 0x0, 0x6c000000000000, 0x0, 0x0, 0x6e00000000006d, 0x7200710070006f, 0x7500740073, 0x79007800770076, 0x7d007c007b007a, 0x80007f007e0000, 0x81, 0x85008400830082, 0x89008800870086, 0x8d008c008b008a, 0x910090008f008e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x93000000000000, 0x94000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96009500000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9a009900980097, 0x9e009d009c009b, 0xa200a100a0009f, 0xa500a400a3, 0xa900a800a700a6, 0xad00ac00ab00aa, 0xb100b000af00ae, 0xb500b400b300b2, 0xb900b800b700b6, 0xbd00bc00bb00ba, 0xc100c000bf00be, 0xc500c400c300c2, 0xc900c800c700c6, 0xcd00cc00cb00ca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcf00ce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd100d0, 0xd20000, 0x0, 0x0, 0x0, 0xd300000000, 0x0, 0x0, 0xd40000, 0x0, 0xd50000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd800d700000000, 0xda00d90000, 0x0, 0x0, 0x0, 0x0, 0xde00dd00dc00db, 0xe200e100e000df, 0xe600e500e400e3, 0xe800dc00db00e7, 0xeb00ea00e900de, 0xee00ed00ec00e2, 0xf200f100f000ef, 0xf600f500f400f3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf900f800f70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd00fc00fb00fa, 0xff00fe, 0x0, 0x0, 0x0, 0x0, 0x103010201010100, 0x104, 0x10701060105, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x108000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10c010b010a0109, 0x110010f010e010d, 0x114011301120111, 0x118011701160115, 0x119, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x69200000015, 0x9000000000000, 0x30f034300000000, 0x120f0003, 0x78a03140048, 0x49403c603ce, 0x58605730570056d, 0x5f8000005b005a6, 0x6580631062e062b, 0x6f906ea06e706e4, 0x7ac07a907920000, 0x7e607c207af, 0x8ba08b708b40000, 0x96208ce, 0x9c509b209af09ac, 0xa4a000009ef09e5, 0xab60a8f0a8c0a89, 0xb580b4c0b490b46, 0xc610c5e0c440000, 0xc9b0c770c64, 0xd710d6e0d6b0000, 0xe1e00000e0f0d85, 0x9cb058c09c80589, 0xa3e05ec0a0d05ce, 0xa4405f20a4105ef, 0xa71061a0a4705f5, 0xaa5064700000000, 0xab306550ab00652, 0xabc065e0ad30675, 0xb0406a00afe069a, 0xb0d06a90b0706a3, 0xb1906ba, 0xb5206f00b4f06ed, 0xb6e070f0b5506f3, 0xb3a06d8000006f6, 0xbb1072e0b760717, 0x7500bcf07430000, 0x7400bd207460bdc, 0x78f000000000bcc, 0x7980c50079e0c41, 0xf300c4a, 0xc9107dc0c8607d1, 0xca507f0, 0xd20085b0d0a0845, 0xd2e086f0d10084b, 0xd4c088d0d350876, 0xd6008a90d3b087c, 0xd5708a0, 0xd7b08c40d7408bd, 0xd9b08e40d8208cb, 0xdc709100d9e08e7, 0xe1209650dec0942, 0x9820e2c097c0971, 0x8430614060d0e32, 0xcb107fc, 0x0, 0x0, 0x8f3000000000000, 0xdaa, 0x0, 0x0, 0x0, 0x0, 0x7360a6a0613060c, 0x78607830bbc073d, 0x70309f605b70c35, 0x8ea0ca807f30b62, 0x8d50d9008d90da1, 0x8d10d9408dd0d8c, 0x9e805a900000d88, 0xe680e5d09e105a2, 0xb0a06a600000000, 0xccf081a0bab0728, 0xf070e820cd2081d, 0xa67061006090b79, 0xafb0697, 0x9f205b30c3e078c, 0xe6f0e600e650e5a, 0x9fc05bd09f905ba, 0xac206640abf0661, 0xb6807090b650706, 0xcae07f90cab07f6, 0xd1608510d13084e, 0xda708f00da408ed, 0xd5d08a60d49088a, 0xb2206c300000000, 0x0, 0x9de059f00000000, 0xc9e07e90acc066e, 0xc9407df0c7e07c9, 0xe18096b0c9707e2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa14073e0eb70b10, 0xde40ee90ee10edd, 0x695, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4b00240012000f, 0x270006, 0xb4408430a2b0eb1, 0xf0a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b00000004001a, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf2e, 0x5400000000, 0x54600000000, 0x0, 0x7410f45001c0003, 0x10110fc00fa0, 0x109910730000104a, 0x11e2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x107c101a00000000, 0x11d21176115210ec, 0x1270, 0x0, 0x0, 0x0, 0x0, 0x0, 0x126911db00000000, 0x12a812601232, 0x1073106e11cb1147, 0x124b1299107c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1255124d120b, 0x114d100a, 0x106a0000, 0x0, 0x130a00001313130d, 0x1301000000000000, 0x0, 0x1334131f132b, 0x0, 0x0, 0x13250000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13790000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x135400001361135b, 0x13c6000000000000, 0x0, 0x139c13731381, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13d013cd00000000, 0x0, 0x0, 0x136613160000, 0x0, 0x0, 0x0, 0x134b130713481304, 0x135e131000000000, 0x13e213dd00000000, 0x136e131c13691319, 0x1376132200000000, 0x138c132e137c1328, 0x13ea13e500000000, 0x1399133113bd1343, 0x13a2133a139f1337, 0x13ad133d, 0x13b61340, 0x0, 0x0, 0x13ed000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1494149100000000, 0x18751497183a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1906183d149a0000, 0x18bc, 0x0, 0x18fd00001918, 0x0, 0x0, 0x0, 0x1915000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x192d0000, 0x0, 0x19360000, 0x1939, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19241921191e191b, 0x19331930192a1927, 0x0, 0x0, 0x1945000000000000, 0x1948, 0x0, 0x0, 0x0, 0x19420000193f193c, 0x0, 0x0, 0x0, 0x0, 0x1957000000000000, 0x195a00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1951194e194b0000, 0x195400000000, 0x0, 0x0, 0x1963000000001966, 0x1969, 0x0, 0x0, 0x0, 0x1960195d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x196c, 0x0, 0x0, 0x0, 0x0, 0x1975196f00000000, 0x1972, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1978, 0x0, 0x0, 0x0, 0x0, 0x0, 0x197b, 0x1985000000000000, 0x1981197e00001988, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1991198b00000000, 0x198e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x199400000000, 0x199e199a1997, 0x0, 0x0, 0x0, 0x0, 0x19a1000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19aa000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19a719a4, 0x0, 0x0, 0x0, 0x19ad, 0x0, 0x0, 0x0, 0x0, 0x19b2000000000000, 0x0, 0x0, 0x19b50000, 0x19b800000000, 0x19bb000000000000, 0x0, 0x19be, 0x0, 0x0, 0x19af0000, 0x0, 0x19c1000000000000, 0x19dc19e019c40000, 0x19e319e7, 0x0, 0x19c70000, 0x0, 0x0, 0x0, 0x19cd000000000000, 0x0, 0x0, 0x19d00000, 0x19d300000000, 0x19d6000000000000, 0x0, 0x19d9, 0x0, 0x0, 0x19ca0000, 0x0, 0x0, 0x19ea00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ed, 0x0, 0x1ae300000000, 0x1ae900001ae6, 0x1aef00001aec, 0x1af200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1af5000000000000, 0x1af80000, 0x1b0100001afe1afb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5d50e580568, 0x6870e7c062905e6, 0x71a060706cf06ac, 0x78107230734, 0x76d06af0e8b07a7, 0x6920773056b0890, 0x93a1b040e910e8f, 0xea30ea10a800a31, 0xb7c000006020ea5, 0xe97078a0e7805d3, 0xba60cd61b081b06, 0x86d0ec91b0c0a27, 0x114b114911471b0e, 0xa140ae3129b1299, 0x11491147086d0a27, 0x129b1299124d, 0x0, 0x0, 0x0, 0x1388, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe93000000000000, 0xea50e6b0e9909a3, 0xeb50ead0ea90adc, 0x1b100ebf0ebd0ebb, 0xf161b120ec50f14, 0xed10ecf0ecb0ecd, 0xeeb0edb0ed50ed3, 0xef50ef30e800eed, 0x6110ef90ef71b0a, 0x11cb0f050f030f01, 0xa1605da0a0a05cb, 0xa1c05e00a1905dd, 0xa6e06170a4d05fb, 0xa7d06260a74061d, 0xa7a06230a770620, 0xaac064e0aa8064a, 0xad9067b0ad60678, 0xaf206840acf0671, 0xb1c06bd0b01069d, 0xb1f06c00b2506c6, 0xb2b06cc0b2806c9, 0xb5b06fc0b710712, 0xbae072b0ba80725, 0xbd507490bb40731, 0xbe207560bd8074c, 0xc1507750bdf0753, 0xc1b077b0c180778, 0xc4d079b0c470795, 0xc5307a10c5607a4, 0xc8207cd0c7a07c5, 0xc8d07d80c8907d4, 0xcf2083b0cef0838, 0xd1908540d0d0848, 0xd23085e0d1c0857, 0xd4208830d380879, 0xd3e087f0d310872, 0xd51089d0d450886, 0xd6608af0d5a08a3, 0xdc4090d0d6308ac, 0xdca09130dcd0916, 0xd7e08c70d7708c0, 0xde1092a0dde0927, 0xde9093f0de6093c, 0xdef09450df20948, 0xe0409570df8094b, 0xe1b096e0e07095a, 0xe3809880e2f097f, 0xd540b2e0e3b098b, 0xd3809a90e240df5, 0x0, 0x9ec05ad09ff05c0, 0x9b5057609b9057a, 0x9bd057e09c10582, 0x9d205930a0205c3, 0x9da059b09ce058f, 0xa0605c709d60597, 0xab9065b0ac50667, 0xa9606380aa20644, 0xa9e06400a920634, 0xac8066a0a9a063c, 0xb6b070c0b5f0700, 0xca207ed0cc80813, 0xc6707b20c6b07b6, 0xc6f07ba0c7307be, 0xcb808030ccb0816, 0xcc0080b0cb407ff, 0xcc4080f0cbc0807, 0xd9808e10dc1090a, 0xdad08f60db108fa, 0xdb508fe0db90902, 0xe0c095f0dbd0906, 0xe2109740e270977, 0xe150968, 0x0, 0x111e10fc111b10f9, 0x1130110e11271105, 0xf730f510f700f4e, 0xf850f630f7c0f5a, 0x1163115811601155, 0x1167115c, 0xfb10fa60fae0fa3, 0xfb50faa, 0x11a21180119f117d, 0x11b4119211ab1189, 0xfe80fc60fe50fc3, 0xffa0fd80ff10fcf, 0x11fc11ed11f911ea, 0x120411f5120011f1, 0x102f1020102c101d, 0x1037102810331024, 0x1243123812401235, 0x1247123c, 0x105b10501058104d, 0x105f1054, 0x128a127b12871278, 0x12921283128e127f, 0x10820000107f0000, 0x108a000010860000, 0x12d412b212d112af, 0x12e612c412dd12bb, 0x10c1109f10be109c, 0x10d310b110ca10a8, 0x1152114f10ec10e5, 0x11d211cf1176116f, 0x1260125d1232122f, 0x12a812a1, 0x1122110011391117, 0x11341112112b1109, 0xf770f550f8e0f6c, 0xf890f670f800f5e, 0x11a6118411bd119b, 0x11b8119611af118d, 0xfec0fca10030fe1, 0xffe0fdc0ff50fd3, 0x12d812b612ef12cd, 0x12ea12c812e112bf, 0x10c510a310dc10ba, 0x10d710b510ce10ac, 0x114410e810f310f6, 0x1140113d000010ef, 0xf450f420f480f4b, 0x2a11cd002a0f92, 0x11c8117200200051, 0x11c411c100001179, 0xfc00fbd0fa00f9d, 0x350031002d1007, 0x11e211de11d511d8, 0x11e6120800000000, 0x1011100e10141017, 0x440040003c0000, 0x1270126c12631266, 0x127412961252124f, 0x1073107010761079, 0x998001c00181067, 0x12fa12a400000000, 0x12f612f3000012ab, 0x10991096104a1047, 0x39000310e0, 0x1000100010001, 0x1000100010001, 0x100010001, 0x0, 0x1b160000, 0x4e000000000000, 0x0, 0x0, 0x0, 0x2ff02fc02fa, 0x0, 0x1000000000000, 0x1b1c000000000000, 0x1b2b1b2800001b1f, 0x0, 0xc0000008f, 0x0, 0x563000000000000, 0x920560, 0x0, 0x0, 0x1b23000000000000, 0x0, 0x1000000000000, 0x0, 0x0, 0x0, 0x0, 0xae30305, 0x392038303740365, 0x1b5a02f403b003a1, 0xb3e00a500a10544, 0x30f034303140305, 0x392038303740365, 0x1b5a02f403b003a1, 0xa500a10544, 0xb44078a0a800692, 0xa2b0b7c0b100ea1, 0x8430cd60b3e05d3, 0xba6, 0x0, 0x0, 0x842, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe5005e309a509a1, 0xe7e0a250a210000, 0x6ac06020e530000, 0xe740b1006ac06ac, 0xa2b073406cf06cf, 0x78907810000, 0x76d083e06af0000, 0x76d076d, 0x89a08920866, 0x77f0000060a, 0x5b0071a0000060a, 0xa80000005e305d5, 0x7230000067e0629, 0x1415140d13ff078a, 0x68000000ae3141a, 0x10630f971149124b, 0x1b58, 0xa800a3105e60000, 0x73e0ae3, 0x0, 0x3ca03c103e203da, 0x498045903d20455, 0x3de04e703d604cf, 0x3be051104eb049c, 0x6de06d406d106cf, 0x922091e091b06b2, 0x9530950068206e1, 0x72305e605e30734, 0xb400b360b330ae3, 0xdd90dd50dd2086d, 0xe000dfd0b440b43, 0x5d30a3109a30a2b, 0x0, 0x0, 0x30d0000, 0x0, 0x0, 0x0, 0x1b3a1b3300000000, 0x0, 0x0, 0x0, 0x0, 0x1b3f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b451b481b420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b4d, 0x1b520000, 0x1b55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b5f00001b5c, 0x0, 0x1b6e00001b651b62, 0x1b71, 0x0, 0x0, 0x0, 0x1b750000, 0x1b7b000000001b78, 0x1b7e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b8400000556, 0x0, 0x0, 0x55b054a1b810000, 0x1b8a1b87, 0x1b901b8d, 0x1b961b93, 0x0, 0x1b9c1b99, 0x1ba81ba5, 0x1bae1bab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bc01bbd1bba1bb7, 0x0, 0x0, 0x0, 0x0, 0x1bb41bb11ba21b9f, 0x0, 0x1bc61bc300000000, 0x1bcc1bc9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1be61be40000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x365030f03430314, 0x3a1039203830374, 0x342032f031c03b0, 0x382037303640355, 0x3f703af03a00391, 0xe600e200d900a3, 0xf600f200ee00ea, 0xb100ac00a700fa, 0xc500c000bb00b6, 0xdd00d400cf00ca, 0x368035903460319, 0x3a4039503860377, 0x3450332031f03b3, 0x385037603670358, 0x3fa03b203a30394, 0x172016e016a0166, 0x182017e017a0176, 0x192018e018a0186, 0x1a2019e019a0196, 0x1b201ae01aa01a6, 0x1c201be01ba01b6, 0x5d5056801ca01c6, 0x67e062905e605e3, 0x60706cf06ac0687, 0x78107230734071a, 0x76d083e06af07a7, 0x6b2056b08900861, 0x60a095d06820773, 0xa3109a3093a0692, 0xb1006020adc0a80, 0xa2b0b7c073e0ae3, 0xcd6078a0b3e05d3, 0xba608430a1405d8, 0xb440de4086d0a27, 0x30506110695, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b69, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x552054f0542, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bd9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b2073e, 0x0, 0x0, 0x0, 0x1bde000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x232e000000000000, 0x0, 0x0, 0x0, 0x0, 0x2764000000000000, 0x0, 0x0, 0x0, 0x1fb81fb01faa1f98, 0x1fca1fc61fc21fbc, 0x201120091ffd1fd0, 0x2039202920212019, 0x206b2057203d203b, 0x207f207920772073, 0x209d209b208f208d, 0x210120f720a920a1, 0x2131212f212b2121, 0x21662160214a2139, 0x2180217e217c2176, 0x21aa21a4218e218c, 0x21c121ba21b221ae, 0x21e121dd21db21c5, 0x21f321eb21e721e3, 0x22492247223d2201, 0x22972295228b2289, 0x32522a3229f229b, 0x231222d5032922c3, 0x232c232623202318, 0x2336233423322330, 0x23be23b823942338, 0x23c823c423c223c0, 0x23e623e223d423ca, 0x240e240c24082406, 0x2428242624142412, 0x243c243a24382436, 0x245c245a24582446, 0x24a02490248e246e, 0x24ce24bc24ac24a8, 0x250424fe24f424f0, 0x2510250e250c2508, 0x2530252c251e251c, 0x2540253c25362534, 0x254a254825442542, 0x25c025be25a4259a, 0x25e225de25da25c4, 0x260a2606260425e6, 0x26262624260e260c, 0x264426362634262a, 0x266c265c264a2648, 0x2692267c26782676, 0x26b426ae269c2694, 0x26ce26cc26c826bc, 0x26da26d826d226d0, 0x26f026ee26ec26de, 0x270c270226fe26fc, 0x271627142710270e, 0x2724271c271a2718, 0x273a273827322730, 0x27442742273e273c, 0x27542750274c2746, 0x275e275c275a2756, 0x27662762, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bf800000000, 0x20832081207f, 0x0, 0x0, 0x0, 0x0, 0x1c3000001c2d, 0x1c3600001c33, 0x1c3c00001c39, 0x1c4200001c3f, 0x1c4800001c45, 0x1c4e00001c4b, 0x1c5400001c510000, 0x1c570000, 0x0, 0x1c6000001c5d1c5a, 0x1c691c6600001c63, 0x1c6f1c6c0000, 0x1c781c75, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c2a, 0x87000000000000, 0x1c7b1c820000008a, 0x0, 0x0, 0x0, 0x1cf200001cd5, 0x1d4100001ca5, 0x1d5e00001d4a, 0x1d7900001d6e, 0x1d8b00001d7e, 0x1d9a00001d90, 0x1da600001da10000, 0x1cbf0000, 0x0, 0x1dea00001dd51dcc, 0x1e101e0600001df1, 0x1e2d1e250000, 0x1d591e50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ef3000000001cb0, 0x1f061f011efc, 0x1d501f0f00000000, 0x0, 0x0, 0x0, 0x0, 0x1abb19f419ef0000, 0x19fb1abf1abd19f6, 0x1ac31ac11a021a00, 0x1acb1ac91ac71ac5, 0x1a111a0c1a071a51, 0x1a1a1a181a131a5b, 0x1a391a2e1a2c1a22, 0x19f21a481a431a3e, 0x1a891a871a851a83, 0x1a371a8f1a8d1a8b, 0x1a991a971a951a93, 0x1aa11a9f1a9d1a20, 0x1aa91a2a1aa51aa3, 0x1acd1a4f1a4d1a7f, 0x1ad51ad31ad11acf, 0x1adb1a531ad91ad7, 0x1a591a571a551add, 0x1a631a611a5f1a5d, 0x1a6b1a691a671a65, 0x1a731a711a6f1a6d, 0x1ae11adf1a771a75, 0x1aab1a7d1a7b1a79, 0x1ab31ab11aaf1aad, 0x1ab91ab71ab5, 0x1fc61f9800000000, 0x1fac1fa020f91f9e, 0x1fa61fbc24161fa2, 0x1fd02103213e1f9a, 0x1e901e001d701ce, 0x20d020401fb01f2, 0x245023c02330225, 0x1db01d20257024e, 0x1ff01f601ed01e4, 0x237022902110208, 0x25b025202490240, 0x21e0216022e, 0x2a0026802700260, 0x284026402880274, 0x2c402b00290026c, 0x2a402ec02b802c0, 0x2d002b402bc02ac, 0x2d402e402c80298, 0x2a8029c0278028c, 0x29402e8027c02cc, 0x2e002dc028002d8, 0x24b0229521c320d3, 0x0, 0x0, 0x41c041104060831, 0x440043904320427, 0x475046e044e0447, 0x4850482047f047c, 0x1a0219fb19f619ef, 0x1a1a1a131a0c1a07, 0x1a3e1a391a2e1a22, 0x19f819f11a481a43, 0x1a0e1a091a0419fd, 0x1a301a241a1c1a15, 0x1a4a1a451a401a3b, 0x1a1f1a271a33, 0x20f91f9e1fc61f98, 0x20111f9c20131fc8, 0x23940329207f1fbe, 0x2101267c22d52338, 0x22f222cd22ed0325, 0x247c261023ce20b9, 0x214a241a2494205d, 0x234820911ffb2654, 0x213c20251fdd26e0, 0x21ac1fa21fac1fa0, 0x2164216a207b20b3, 0x2089261a1fdb2442, 0x48e048b04882135, 0x4b704b404b10491, 0x4c304c004bd04ba, 0x4e404cc04c904c6, 0x4d604a3034e033b, 0x5290518050304f2, 0x34d033a0327053a, 0x7390a820a8506b4, 0x1cb91cae1ca01c87, 0x1d221cf01cd31cc9, 0x1d6c1d5c1d481d3f, 0x1d8e1d891d7c1ccd, 0x1c8d1da41d9f1caa, 0x1d3d1dc01dbe1d55, 0x1e041de81dca1dbc, 0x1e8b1ce01e4e1e23, 0x1eb31eaf1e9e1cd1, 0x1ce41eca1ec81ec0, 0x1ef11d0c1ee31c9c, 0x1fd81f041eff1efa, 0x1c9a1c941c8f1c89, 0x1cbb1cb31ca81ca2, 0x1ce21ccf1ccb1cc2, 0x1cdd1cd81ceb1ce6, 0x1cff1d061cfa1cf5, 0x1d1c1d151d0e1d0b, 0x1d3a1d331d2c1d10, 0x1d611d571d531d44, 0x1d851d811d711d66, 0x1d301db21da91d93, 0x1dd81de41dc61dbb, 0x1dfb1df41dcf1ddf, 0x1e1a1e131ded1e00, 0x1e301e441e1f1e09, 0x1e3e1e391e4a1e34, 0x1e671e531e5b1e28, 0x1e741e6e1e6a1e61, 0x1e851e811e7d1e79, 0x1ea01e951e921e8d, 0x1eba1eb51d171ea4, 0x1ed81ed31ece1ec2, 0x1d1e1ee81ee51edd, 0x3610352033f0311, 0x39d038e037f0370, 0x33e032b03bb03ac, 0x37e036f03600351, 0x3ba03ab039c038d, 0x4230418040d0402, 0x56a0a560b12042e, 0xa5c0ce90c5b0a12, 0x21bc06db0a630a5f, 0x22ef22ab213b22b2, 0xbed12110c290cdd, 0x689075b071c0b7e, 0xc2c0ce00b8f0a29, 0x6010bf9121d1214, 0x68c07640b81068d, 0xa590c0012200896, 0x12230c380aef0b97, 0xc060b9a0a330c03, 0xc0a0b9d0a370a36, 0xc1e0ba10a3b0a3a, 0x7680b8506910c22, 0xd030cfd0cf90690, 0xc1212260c3b0cec, 0xbf012170c2f0ce3, 0xc320ce6076f0b89, 0x7720b8c0bf3121a, 0x5d7099c077e0bb7, 0x5e805ff0a300a2d, 0x6ae0b1606940a53, 0xba50722071f0b3d, 0xbc90bc50bc20bbf, 0x8230c0e0bfc0bf6, 0xd28082e08260cd8, 0x5d1092d0939086c, 0x36c035d034a0337, 0x3a80399038a037b, 0x3490336032303b7, 0x389037a036b035c, 0x3fe03b603a70398, 0x42a041f04140409, 0x44a0443043c0435, 0xaf7047804710451, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13b913b2, 0x0, 0x0, 0x0, 0x0, 0x276e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x67e05e300000000, 0x83e, 0xe7a0e72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27740ec12772276c, 0x0, 0x0, 0xefb0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x261c263622c52608, 0x276220ab1fae2378, 0x20dd267c21442762, 0x24fc243422392142, 0x265a25d025b62598, 0x23ee23a2234c2306, 0x1fc027062670257c, 0x259623b423102095, 0x258e23882198272e, 0x25bc252a225325d8, 0x23da235822cf21d1, 0x2065202f1fe32660, 0x244423b2230c2287, 0x2630259e25922508, 0x2462272c271e26c4, 0x268a256e24de2482, 0x21df211f25f22732, 0x246623cc251a24ba, 0x2186211d26c02618, 0x24d6237c23622308, 0x2520206326a024ea, 0x24e0249820332035, 0x2255260026a4257a, 0x21701fb425f82306, 0x2075242423e4220b, 0x1fa421fd1feb246a, 0x209f24d422932342, 0x25ea257e244a2115, 0x225d233e26482328, 0x1fce2422226d255a, 0x24ca22f62031200f, 0x2069267a25f02546, 0x22a121d9214a20c3, 0x270a2698246c238a, 0x22c1205727402734, 0x222d21bf2642231e, 0x23a823822283223b, 0x251624e424922400, 0x268c264e2582263a, 0x23a020cd20592043, 0x220721cf25ea25c6, 0x23de24b823242269, 0x21a2217020fb1fd6, 0x250223fa23ec220d, 0x26c626be267e2512, 0x2674248c1fe526e4, 0x1ff71fc4221926b2, 0x2306229921822172, 0x26582588243223ae, 0x2055269e22b9275e, 0x2370235422e522df, 0x24d22460242023f2, 0x26a62243201326ea, 0x263c236421941fef, 0x23e422e9221d21f5, 0x218a20bb204726aa, 0x234622fc22d722ae, 0x25c824f8242a23f0, 0x207d26b8267825ce, 0x240223b020bd2372, 0x2736272226ac2590, 0x24a8252e236022e3, 0x239c23d824c024ae, 0x204925621fd225fe, 0x24c6225721c72041, 0x264022bf234e2168, 0x21d525de26a225c0, 0x20e91fff, 0x22b700002113, 0x243e23dc20370000, 0x248a2480247e2470, 0x250424c226ca, 0x25f600002594, 0x266626500000, 0x26f626f400000000, 0x26b02662272a26f8, 0x206120031ff91fe7, 0x20ef20e120872067, 0x21882117211120f3, 0x222b22272213218c, 0x22bb22a5228d2237, 0x23802368235a22f8, 0x246423f423ba23aa, 0x24782474247622f2, 0x24882486247c247a, 0x24e424b224a4249a, 0x250a24f624ec24e8, 0x2580254c254c2532, 0x25fc25fa25e025d4, 0x2650264c2620261e, 0x220f26e826dc26ba, 0x253e2833, 0x1fe1200d202d1fa8, 0x206d205f20172001, 0x20ed20df20d720e1, 0x21462140211b2113, 0x21d721d3215c2154, 0x2223221721ff21ef, 0x22372225222b221b, 0x227b227722712245, 0x22d122cf22b7228f, 0x23542328232022db, 0x238e23802376237a, 0x23d623bc245623aa, 0x241c240a23fc23dc, 0x2440243e2430242e, 0x2468245024522448, 0x24da24be24b224a6, 0x2564250a24f224e4, 0x25dc25d625b22578, 0x25ee25f625ec25e0, 0x25fc25f425f825fa, 0x2656263e26202602, 0x26ba26a826822672, 0x26e226dc26d426ca, 0x28092762271226e8, 0x1f501f3c281b2807, 0x28912861284f1f52, 0x27602758, 0x0, 0xae10ae60ae20ade, 0xd2b0d2b0ae5, 0x0, 0x0, 0x13f9000000000000, 0x13f613fc13f313f0, 0x0, 0x147d000014300000, 0x141f141a13ff1451, 0x14621446140b1439, 0x1475147202f41478, 0x14041401146e146a, 0x141c1417140f1407, 0x142a14271421, 0x143b14361433142d, 0x144800001443, 0x14530000144e144b, 0x145f145c00001456, 0x1424147a14671464, 0x140a1459143e1412, 0x18c918c918c318c3, 0x18cb18cb18c918c9, 0x18cf18cf18cb18cb, 0x18c718c718cf18cf, 0x18cd18cd18c718c7, 0x18c518c518cd18cd, 0x18e718e718c518c5, 0x18e918e918e718e7, 0x18d318d318e918e9, 0x18d118d118d318d3, 0x18d518d518d118d1, 0x18d718d718d518d5, 0x18dd18dd18d718d7, 0x18df18df18db18db, 0x18e318e318d918d9, 0x18eb18eb18e118e1, 0x18ef18ef18eb18eb, 0x18f318f318ef18ef, 0x18f118f118f318f3, 0x18f518f518f118f1, 0x18f718f718f718f7, 0x18fb18fb19181918, 0x18f918f918fb18fb, 0x163c163c18f918f9, 0x19151915, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18ed000000000000, 0x18ae18ed18ed18ed, 0x18b218aa18aa18ae, 0x190d190d190618b2, 0x190b190b19001900, 0x18b618b618b618b6, 0x1878187814c014c0, 0x189c189c18b818b8, 0x18a818a818ac18ac, 0x18b418b418b018b0, 0x18a018a018a018b4, 0x190f190f190f190f, 0x18a018901880187c, 0x14a914a2149f18a4, 0x14c914c214bf14b6, 0x151514f814e314d8, 0x152f1526151d1518, 0x14dc14cd15371532, 0x14e7157f157c14e0, 0x15c515b715b015a5, 0x1650164d163e160d, 0x167316701665165b, 0x16b21620168f168a, 0x16f016ed16ea16b5, 0x1706170116fe16f7, 0x1724171f171c170d, 0x1730172d172a1727, 0x17551741173e1733, 0x1624163717731764, 0x1504150014fc178b, 0x17d8150c150815d1, 0x1814180317fa17eb, 0x182a181f181c1817, 0x1855184e1847182d, 0x158f1872186f185e, 0x64005d18421599, 0x8000790072006b, 0x18941890188c1888, 0x14b3148618a418a0, 0x14c214bf14b914b6, 0x150f14f814f514f2, 0x1523152015181515, 0x1532152f15291526, 0x171f171c170116fe, 0x173e173317301724, 0x178b162416371741, 0x180017fd15d11790, 0x18171814180e1803, 0x185e185b18581842, 0x187c1872186f1869, 0x1898189018841880, 0x14b614a914a2149f, 0x14e314d814c914bc, 0x15371526151214f8, 0x157c14e014dc14cd, 0x15b715b015a514e7, 0x163e1618160d15c5, 0x1665165b1650164d, 0x1620168f168a1670, 0x16ed16ea16b516b2, 0x170d170616f716f0, 0x1730172d172a1727, 0x1773176417551733, 0x150014fc148b1637, 0x17eb17d815d11504, 0x181c1811180317fa, 0x184e18471830181f, 0x18901698185e1855, 0x14f814bc14b61898, 0x15c5152c15261512, 0x1730160215f715d4, 0x1811180316371733, 0x16d716d01698185e, 0x16aa1685168216de, 0x15d716c716c416ad, 0x153b1608160515da, 0x14eb14d514d114a6, 0x16681648164514ad, 0x15f115e615df166b, 0x161b15c215f415f7, 0x16aa168516821662, 0x15d716c716c416ad, 0x153b1608160515da, 0x14eb14d514d114a6, 0x16681648164514ad, 0x15f115e615df166b, 0x161b15c215f415f7, 0x15f115e615df1662, 0x1673160215d415f7, 0x15df15b715b015a5, 0x168a167315f115e6, 0x148e148e, 0x0, 0x0, 0x0, 0x0, 0x14df14db14db14cc, 0x150314ff14fb14e6, 0x156c1570154e154e, 0x15cc15ac15a815b3, 0x15d015d015c815cc, 0x15e9164116101610, 0x15fa15fa15e215e9, 0x165e165315fe15fe, 0x167a16761676165e, 0x169e169e1692167e, 0x16bc16c016b816a2, 0x1714171016f316f3, 0x1758176b176f1767, 0x177d177617761758, 0x17b617ad17a9177d, 0x17c117bd179e1796, 0x1822179a00000000, 0x17df17f217ee1826, 0x1806180a17e317df, 0x14d414ac18611861, 0x150b14ea14ee14d0, 0x1552153a15561507, 0x165715ed161415ba, 0x184a185117811760, 0x17f6171817cc1865, 0x173a16a617671710, 0x1736175c17c517db, 0x1565153e17db175c, 0x173614a516fa17a2, 0x17e715be16411692, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x148414891709163a, 0x16961594161e17b1, 0x1542162716231635, 0x159c, 0x0, 0x0, 0x0, 0x0, 0x5401be21be002f6, 0x1c260093008d0546, 0x2ff1c28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9961b181b1a02fc, 0xe3e00a500a10996, 0x1bf41bfe1bfa0e42, 0x1be41bea1be81bf6, 0x1bf01bee1bec1be6, 0x98e000000001bf2, 0xc000c000c0992, 0x99609960996000c, 0x2fa1be002f6, 0x8d009305400546, 0xe3e00a500a11b1a, 0x971bfe1bfa0e42, 0x2f802f402f2009d, 0x54405590548, 0x566009b00990990, 0x0, 0x5a16ca0057, 0x16cd006800000061, 0x16db007616d4006f, 0x16e5008416e2007d, 0x1494149114911480, 0x1497183a183a1494, 0x1875187518751497, 0x149d148214821875, 0x14c5149d149d149d, 0x14c714c714c714c5, 0x151b151b151b14c7, 0x14a014a014a0151b, 0x14a314a314a314a0, 0x14aa14aa14aa14a3, 0x158d158b158b14aa, 0x14b414871487158d, 0x15a315a315a314b4, 0x15dd15dd15dd15a3, 0x160b160b160b15dd, 0x164b164b164b160b, 0x166e166e166e164b, 0x168816881688166e, 0x168d168d168d1688, 0x16b016b016b0168d, 0x16e816e816e816b0, 0x17041704170416e8, 0x1722172217221704, 0x1597159715971722, 0x14b714b714b71597, 0x14ba14ba14ba14b7, 0x148c148c148c14ba, 0x14c018331833148c, 0x14a714a714a714c0, 0x174d1749174914a7, 0x174617511751174d, 0x1746, 0x970095008d0000, 0x9f009d009b0099, 0x2f402f200a500a1, 0x30302fa02f802f6, 0x30f034303140305, 0x392038303740365, 0x546054003b003a1, 0x93055905440548, 0x5e305d505680566, 0x687067e062905e6, 0x71a060706cf06ac, 0x7a7078107230734, 0x861076d083e06af, 0x77306b2056b0890, 0x98e060a095d0682, 0x996099409920990, 0x9a3093a06920998, 0x6020adc0a800a31, 0xb7c073e0ae30b10, 0x78a0b3e05d30a2b, 0x8430a1405d80cd6, 0xde4086d0a270ba6, 0xe3e061106950b44, 0x1bd50e440e420e40, 0x1bee1bec1be21bd7, 0x1c851f041f0b1be0, 0x1cc71cb71cac1c9e, 0x1d9d1ec61ebe1eb1, 0x1cae1ca01c871cc5, 0x1cf01cd31cc91cb9, 0x1d5c1d481d3f1d22, 0x1d891d7c1ccd1d6c, 0x1da41d9f1caa1d8e, 0x1dc01dbe1d551c8d, 0x1de81dca1dbc1d3d, 0x1ce01e4e1e231e04, 0x1eaf1e9e1cd11e8b, 0x1eca1ec81ec01eb3, 0x1d0c1ee31c9c1ce4, 0x8b00881cb51ef1, 0x1abb19f419ef1a7f, 0x19fb1abf1abd19f6, 0x1ac31ac11a021a00, 0x1acb1ac91ac71ac5, 0x1a111a0c1a071a51, 0x1a1a1a181a131a5b, 0x1a391a2e1a2c1a22, 0x1a481a431a3e, 0x1a8319f200000000, 0x1a8b1a891a871a85, 0x1a8f1a8d00000000, 0x1a971a951a931a37, 0x1a201a9900000000, 0x1aa31aa11a9f1a9d, 0x1a2a1aa500000000, 0x1aa9, 0x90e4e0e480e46, 0x1b2f0e4a0e4c, 0x1b381b361b311bcf, 0x1bd31bd11b3d, 0x0, 0x0, 0x0, 0x0, 0xe630f350f330000, 0xf1c00000e950f0e, 0xe9b0f1e0f202776, 0xea70e9f1b140e9d, 0xeab0eaf0eb30f28, 0xeb90f120e740f10, 0xec30f2c0f2a0eef, 0x27d30ec7277027d1, 0xed70e6d27d50efd, 0x27d70edf05d80ed9, 0xf260ee70ee50ee3, 0xef10f2427780f22, 0xf180eff00001bdc, 0xe870e850f0c0f1a, 0x27db27d90e89, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x277a00000000, 0x277d, 0x0, 0x0, 0x2780000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2786278300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2789000000000000, 0x278c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2792000000000000, 0x27950000278f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279b279800000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27a427a100000000, 0x27b327af27ab27a7, 0x27b7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27bb000000000000, 0x27c227c927be27c6, 0x27cd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae300000602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e300000568, 0x68700000000, 0x71a06070000, 0x6af07a707810000, 0x89008610000083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc00000a3109a3, 0x73e0ae30b100000, 0xb3e05d30a2b0b7c, 0xa1405d80cd60000, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e6000005d50568, 0x687067e0629, 0x734071a06070000, 0x6af07a707810723, 0x89008610000083e, 0x682077306b2056b, 0x93a06920000095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e6000005d50568, 0x687067e0629, 0x734071a060706cf, 0x7a700000723, 0x890086100000000, 0x682077306b2056b, 0x93a06920000095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x61106950b440de4, 0xe8d0e76, 0xf990f970f950f40, 0x100a0fbb0fb90f9b, 0x103f103d103b100c, 0x1063104510431041, 0x106c106a100a1065, 0x10921090108e106e, 0x114710e31b50077f, 0x116b114d114b1149, 0x120b11cd11cb116d, 0x122b1229120f120d, 0x1255124d124b122d, 0x1299125b12591257, 0x1b4b129f129d129b, 0x1299120b11cb114d, 0xf950f40124b124d, 0xfb90f9b0f990f97, 0x103b100c100a0fbb, 0x10431041103f103d, 0x100a106510631045, 0x108e106e106c106a, 0x1b50077f10921090, 0x114b1149114710e3, 0x11cb116d116b114d, 0x120f120d120b11cd, 0x124b122d122b1229, 0x125912571255124d, 0x129d129b1299125b, 0x11cb114d1b4b129f, 0x124b124d1299120b, 0xf990f970f950f40, 0x100a0fbb0fb90f9b, 0x103f103d103b100c, 0x1063104510431041, 0x106c106a100a1065, 0x10921090108e106e, 0x114710e31b50077f, 0x116b114d114b1149, 0x120b11cd11cb116d, 0x122b1229120f120d, 0x1255124d124b122d, 0x1299125b12591257, 0x1b4b129f129d129b, 0x1299120b11cb114d, 0xf950f40124b124d, 0xfb90f9b0f990f97, 0x103b100c100a0fbb, 0x10431041103f103d, 0x100a106510631045, 0x108e106e106c106a, 0x1b50077f10921090, 0x114b1149114710e3, 0x11cb116d116b114d, 0x120f120d120b11cd, 0x124b122d122b1229, 0x125912571255124d, 0x129d129b1299125b, 0x11cb114d1b4b129f, 0x124b124d1299120b, 0xf990f970f950f40, 0x100a0fbb0fb90f9b, 0x103f103d103b100c, 0x1063104510431041, 0x106c106a100a1065, 0x10921090108e106e, 0x114710e31b50077f, 0x116b114d114b1149, 0x120b11cd11cb116d, 0x122b1229120f120d, 0x1255124d124b122d, 0x1299125b12591257, 0x1b4b129f129d129b, 0x1299120b11cb114d, 0x12ff12fd124b124d, 0x314030500000000, 0x3740365030f0343, 0x3b003a103920383, 0x30f034303140305, 0x392038303740365, 0x314030503b003a1, 0x3740365030f0343, 0x3b003a103920383, 0x30f034303140305, 0x392038303740365, 0x314030503b003a1, 0x3740365030f0343, 0x3b003a103920383, 0x0, 0x0, 0x0, 0x0, 0x13521350134e1346, 0x136c136413591357, 0x13861384137f1371, 0x13931391138f138a, 0x13a713a513971395, 0x13b413b013ab13a9, 0x13e0276a13c013bb, 0x13d713e813c913c4, 0x1350134e134613db, 0x1364135913571352, 0x1384137f1371136c, 0x13971393138f138a, 0x13ab13a913a713a5, 0x13d313b413b213b0, 0x13d513cb13c213c4, 0x13d92768, 0x0, 0x0, 0x0, 0x0, 0x158b14a0149d1482, 0x14a314b418330000, 0x1597172214a7166e, 0x168d15a314ba14b7, 0x14871704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b158d, 0x18c118e518f518bf, 0x14a0149d0000, 0x14a300000000148c, 0x1597172214a70000, 0x168d15a314ba14b7, 0x1704160b16e8, 0x14aa151b14c715dd, 0x16b00000164b0000, 0x0, 0x14a000000000, 0x14a3000000000000, 0x1597000014a70000, 0x168d15a314ba0000, 0x1704160b0000, 0x14aa0000000015dd, 0x16b00000164b0000, 0x18c1000018f50000, 0x14a0149d0000, 0x14a300000000148c, 0x172214a7166e, 0x168d15a314ba14b7, 0x1704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b0000, 0x18e5000018bf, 0x158b14a0149d1482, 0x14a314b41833148c, 0x1597000014a7166e, 0x168d15a314ba14b7, 0x14871704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b158d, 0x0, 0x158b14a0149d0000, 0x14a314b418330000, 0x1597000014a7166e, 0x168d15a314ba14b7, 0x14871704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b158d, 0x0, 0x3f103160307030a, 0x4fa04de04ab0468, 0x5310520050b, 0x0, 0x10a0106010200fe, 0x11a01160112010e, 0x12a01260122011e, 0x13a01360132012e, 0x14a01460142013e, 0x15a01560152014e, 0x5e31bfc0162015e, 0x93605e5076d, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x76f06b1060a095d, 0x933082a08690863, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x761075e00000000, 0x76c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x1d5c1d4d1c72, 0x0, 0x0, 0x0, 0x1da620a521622249, 0x213e25e421331fc6, 0x229923a422b01fcc, 0x229d201b21f7204f, 0x2612240e24d82045, 0x224f237e20c12125, 0x26521f9e1f982265, 0x225f20b31fac21ac, 0x24a22484224b2626, 0x32922cd236e20b7, 0x266e20e720512418, 0x0, 0x1c0c1c041c001c18, 0x1c081c201c101c1c, 0x1c14, 0x0, 0x20af21f9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30f034303140305, 0x392038303740365, 0x3b003a1, 0x0, 0x27dd1fba1fb21fb6, 0x1fed1fe91fe71fdf, 0x1ff51ff91ff31ff1, 0x2005200327e51f12, 0x1f1427df20152007, 0x202327e3201b200b, 0x202d202b1fd42027, 0x1f18203f203b28a1, 0x20532051204d204b, 0x20672061205f1f1a, 0x20752071206f206d, 0x2093208b20872085, 0x2099209920992097, 0x20a720a3239627eb, 0x20b520b120ad27ed, 0x20c720c520bf20c9, 0x20d520d120cf20cb, 0x20df20db20db20d9, 0x20fd20eb20e520e3, 0x20f520f120ff20ef, 0x2109210721232041, 0x210d210f2105210b, 0x2129212727ef2119, 0x214821372133212d, 0x2150214e27f327f1, 0x1f1c2156214c2152, 0x215e215e215a1f1e, 0x2170216e216c27f5, 0x217a217827f72174, 0x21841f20217e21e9, 0x27fb21902192218c, 0x219a219c27fd2196, 0x1f2221a821a6219e, 0x21b821b621b421b0, 0x21c91f2627ff1f24, 0x28b521d121cd21cb, 0x25382803280321dd, 0x28111f2821e521e5, 0x1f2a21f121ed2865, 0x22092205220321fb, 0x22131f2c1f2e2211, 0x2221221f22152805, 0x222b222922212223, 0x22352231222f2233, 0x224121bd22392237, 0x226322592251224d, 0x2267225b2261280b, 0x2279280d2275226b, 0x227d1f30226f2273, 0x1f32227f22852281, 0x22a7280f2291228d, 0x22bb1f3822b522c7, 0x201f201d1f341f36, 0x1f6a252222bd22c9, 0x22dd22d322d122cf, 0x22e71f3a281922d9, 0x281d22f822f422e1, 0x1f3c22fe22eb22fa, 0x230a230423022300, 0x23141f3e230e281f, 0x231c1f4023162821, 0x2823232a23282322, 0x2827233a282527f9, 0x234a233c23442340, 0x23562354235a2352, 0x23502829235e235c, 0x23761f42236c236a, 0x23842366282b2374, 0x23902386282f282d, 0x23921f44238c238e, 0x27e1239e2398239a, 0x283523ac283123a6, 0x283723c623bc23b6, 0x283b283923d223d0, 0x23ea1f4623e823e0, 0x23f823f61f481f48, 0x1f4a240423fe23fc, 0x283f241e283d2410, 0x2841242c28012424, 0x1f4e1f4c28452843, 0x284b284728492448, 0x244e244e244c284d, 0x1f5424541f522452, 0x2462245e28511f56, 0x247a28531f582468, 0x2496248a28572855, 0x249e249c249a1f5a, 0x24aa285b285b2859, 0x24b624b4285d1f5c, 0x1f6024c4285f1f5e, 0x286324d024c824cc, 0x24e624e21f6224dc, 0x286928671f6424ee, 0x286d24fa286b1f66, 0x286f250a25062500, 0x2518287325142871, 0x252625241f682813, 0x2875215825281f6c, 0x2538281728152877, 0x25501f6e2646253a, 0x2554205b2552254e, 0x2879255c25582556, 0x256a2568255e255a, 0x25802576256c2560, 0x2574257225702566, 0x1f70287d287f287b, 0x2887258a25862584, 0x1f741f722881258c, 0x259c1f7628852883, 0x25a825a225a0259e, 0x25b225aa25ac25a6, 0x1f7825b425b025ae, 0x25c21f7a25ba25b8, 0x25cc25ca288925c4, 0x288b1f1625d21f7c, 0x25e81f801f7e288d, 0x288f260a260225f4, 0x2628262226162614, 0x262c262e27e72893, 0x263e263827e92632, 0x2664265e28972895, 0x2680266a28992668, 0x268e268426882686, 0x1f822696289b2690, 0x26b61f84289d269a, 0x28a3289f26c221a0, 0x28a526d61f881f86, 0x26e226e228a71f8a, 0x1f8c26f228a926e6, 0x27082704270026fa, 0x2720271228ab1f8e, 0x27281f921f902726, 0x28b128af1f9428ad, 0x27441f96273a28b3, 0x2752274e274a2748, 0x28b72756, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); //12544 bytes enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x20, 0x220], [ 0x100, 0x800, 0x1000], [ 0x302020202020100, 0x205020202020204, 0x602020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100000000, 0x6000500040003, 0x9000800070000, 0xb000a, 0x0, 0xd000c00000000, 0x10000f000e, 0x14001300120011, 0x16001500000000, 0x0, 0x0, 0x170000, 0x1800000000, 0x0, 0x0, 0x0, 0x0, 0x1a00190000, 0x1b00000000, 0x1d001c0000, 0x0, 0x1e00000000, 0x200000001f, 0x2100000000, 0x2200000000, 0x2300000000, 0x2400000000, 0x0, 0x0, 0x26002500000000, 0x280027, 0x290000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b002a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30002f002e002d, 0x34003300320031, 0x38003700360035, 0x3c003b003a0039, 0x3d, 0x0, 0x3e0000, 0x410040003f, 0x45004400430042, 0x48000000470046, 0x490000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c004b00000000, 0x50004f004e004d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x54005300520051, 0x58005700560055, 0x5c005b005a0059, 0x5f005e005d, 0x6200610060, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x640063, 0x650000, 0x0, 0x0, 0x0, 0x6600000000, 0x0, 0x0, 0x670000, 0x0, 0x680000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x690000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b006a00000000, 0x6d006c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x710070006f006e, 0x75007400730072, 0x79007800770076, 0x7d007c007b007a, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x250012000f000c, 0x850000004f0045, 0xcb00a400a1009e, 0x13301240121011e, 0x1a0019d01880000, 0x1da01b601a3, 0x2730270026d0000, 0x2f30287, 0x33803250322031f, 0x398000003620358, 0x3de03b703b403b1, 0x446043a04370434, 0x4b404b1049c0000, 0x4ee04ca04b7, 0x58a058705840000, 0x61c0000060d059e, 0x33e002b033b0028, 0x38c00790380006d, 0x392007f038f007c, 0x3a2008f03950082, 0x3cd00ba00000000, 0x3db00c803d800c5, 0x3e400d103fb00e8, 0x41000fd040a00f7, 0x419010604130100, 0x41c0109, 0x440012a043d0127, 0x45c01490443012d, 0x130, 0x471015d0462014f, 0x170047701630000, 0x47a01660484, 0x185000000000000, 0x18e04a801940499, 0x4a2, 0x4e401d004d901c5, 0x4f801e4, 0x5450231052f021b, 0x54b023705350221, 0x56902550552023e, 0x57b026405580244, 0x572025b, 0x594027d058d0276, 0x5b4029d059b0284, 0x5e002c905b702a0, 0x61002f605f502de, 0x3110628030b0302, 0x6310314062e, 0x50401f0, 0x0, 0x0, 0x2ac000000000000, 0x5c3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13d036900560000, 0x2a304fb01e70450, 0x28e05a9029205ba, 0x28a05ad029605a5, 0x35b0048000005a1, 0x653064a03540041, 0x416010300000000, 0x522020e046b0157, 0x65f065c05250211, 0x465, 0x40700f4, 0x365005204960182, 0x656064d06500647, 0x36f005c036c0059, 0x3ea00d703e700d4, 0x456014304530140, 0x50101ed04fe01ea, 0x53b022705380224, 0x5c002a905bd02a6, 0x578026105660252, 0x425011200000000, 0x0, 0x351003e00000000, 0x4f101dd03f400e1, 0x4e701d304d101bd, 0x61602fc04ea01d6, 0x0, 0x0, 0x0, 0x66b00000010000d, 0x137, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x662, 0x0, 0x100000000, 0x0, 0x6450670063d0000, 0x72c06df06c3, 0x798077800000759, 0x8d1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x781073500000000, 0x8c10867084707e9, 0x92f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92808ca00000000, 0x95f091f08fd, 0x9b4000000000000, 0x9b7, 0x0, 0x0, 0x9c3000009cc09c6, 0x9ba000000000000, 0x0, 0x9ed09d809e4, 0x0, 0x0, 0x9de0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa200000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0500000a0e0a08, 0xa41000000000000, 0x0, 0xa2f0a1a0a26, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa470a4400000000, 0x0, 0x0, 0xa1109cf0000, 0x0, 0x0, 0x0, 0xa0209c009ff09bd, 0xa0b09c900000000, 0xa4d0a4a00000000, 0xa1709d50a1409d2, 0xa1d09db00000000, 0xa2909e70a2309e1, 0xa530a5000000000, 0xa2c09ea0a3e09fc, 0xa3509f30a3209f0, 0xa3809f6, 0xa3b09f9, 0x0, 0xac10abe00000000, 0xaca0ac40ac7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xacd00000ad3, 0x0, 0x0, 0x0, 0xad0000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xae80000, 0x0, 0xaf10000, 0xaf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xadf0adc0ad90ad6, 0xaee0aeb0ae50ae2, 0x0, 0x0, 0xb00000000000000, 0xb03, 0x0, 0x0, 0x0, 0xafd00000afa0af7, 0x0, 0x0, 0x0, 0x0, 0xb12000000000000, 0xb1500000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0c0b090b060000, 0xb0f00000000, 0x0, 0x0, 0xb1e000000000b21, 0xb24, 0x0, 0x0, 0x0, 0xb1b0b18, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb27, 0x0, 0x0, 0x0, 0x0, 0xb300b2a00000000, 0xb2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb33, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb36, 0xb40000000000000, 0xb3c0b3900000b43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4c0b4600000000, 0xb49, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4f00000000, 0xb590b550b52, 0xb5f000000000000, 0x0, 0x0, 0xb620000, 0xb6500000000, 0xb68000000000000, 0x0, 0xb6b, 0x0, 0x0, 0xb5c0000, 0x0, 0xb6e000000000000, 0xb890b710000, 0xb8c, 0x0, 0xb740000, 0x0, 0x0, 0x0, 0xb7a000000000000, 0x0, 0x0, 0xb7d0000, 0xb8000000000, 0xb83000000000000, 0x0, 0xb86, 0x0, 0x0, 0xb770000, 0x0, 0x0, 0xb8f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb9200000000, 0xb9800000b95, 0xb9e00000b9b, 0xba100000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba4000000000000, 0xba70000, 0xbb000000bad0baa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3830070037d006a, 0x389007603860073, 0x39f008c039b0088, 0x3ae009b03a50092, 0x3ab009803a80095, 0x3d400c103d000bd, 0x40100ee03fe00eb, 0x40400f103f700e4, 0x41f010c040d00fa, 0x422010f04280115, 0x42e011b042b0118, 0x4490136045f014c, 0x46e015a04680154, 0x47d016904740160, 0x48a01760480016c, 0x48d017904870173, 0x493017f0490017c, 0x4a50191049f018b, 0x4ab019704ae019a, 0x4d501c104cd01b9, 0x4e001cc04dc01c8, 0x52c021805290215, 0x53e022a0532021e, 0x54802340541022d, 0x55f024b05550241, 0x55b0247054e023a, 0x56c02580562024e, 0x581026a0575025e, 0x5dd02c6057e0267, 0x5e302cc05e602cf, 0x597028005900279, 0x5ec02d505e902d2, 0x5f202db05ef02d8, 0x5f802e105fb02e4, 0x60402ea060102e7, 0x61902ff060702ed, 0x6340317062b030e, 0x56f04310637031a, 0x6590000062205fe, 0x0, 0x35f004c0372005f, 0x3280015032c0019, 0x330001d03340021, 0x345003203750062, 0x34d003a0341002e, 0x379006603490036, 0x3e100ce03ed00da, 0x3be00ab03ca00b7, 0x3c600b303ba00a7, 0x3f000dd03c200af, 0x4590146044d013a, 0x4f501e1051b0207, 0x4ba01a604be01aa, 0x4c201ae04c601b2, 0x50b01f7051e020a, 0x51301ff050701f3, 0x5170203050f01fb, 0x5b1029a05da02c3, 0x5c602af05ca02b3, 0x5ce02b705d202bb, 0x60a02f005d602bf, 0x61f030506250308, 0x61302f9, 0x0, 0x81b07f9081807f6, 0x82d080b08240802, 0x69e067c069b0679, 0x6b0068e06a70685, 0x858084d0855084a, 0x85c0851, 0x6d406c906d106c6, 0x6d806cd, 0x89308710890086e, 0x8a50883089c087a, 0x70706e5070406e2, 0x71906f7071006ee, 0x8eb08dc08e808d9, 0x8f308e408ef08e0, 0x74a073b07470738, 0x7520743074e073f, 0x90e0903090b0900, 0x9120907, 0x76a075f0767075c, 0x76e0763, 0x949093a09460937, 0x9510942094d093e, 0x787000007840000, 0x78f0000078b0000, 0x98b096909880966, 0x99d097b09940972, 0x7c0079e07bd079b, 0x7d207b007c907a7, 0x847084407e907e2, 0x8c108be08670860, 0x91f091c08fd08fa, 0x95f0958, 0x81f07fd08360814, 0x831080f08280806, 0x6a2068006b90697, 0x6b4069206ab0689, 0x897087508ae088c, 0x8a9088708a0087e, 0x70b06e907220700, 0x71d06fb071406f2, 0x98f096d09a60984, 0x9a1097f09980976, 0x7c407a207db07b9, 0x7d607b407cd07ab, 0x84107e507f007f3, 0x83d083a000007ec, 0x670066d06730676, 0x8bc000006bd, 0x8b9086306400000, 0x8b508b20000086a, 0x6df06dc06c306c0, 0xbb90bb60bb30726, 0x8d108cd08c408c7, 0x8d508f700000000, 0x72c0729072f0732, 0xbc20bbf0bbc0000, 0x92f092b09220925, 0x933095509190916, 0x7780775077b077e, 0x31d063d063a0772, 0x9b1095b00000000, 0x9ad09aa00000962, 0x798079507590756, 0x64307df, 0xbc70bc5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79300000000, 0x4f015200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbcc0bc900000000, 0x0, 0x0, 0x0, 0x0, 0xbcf00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbd50bd80bd20000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbdb, 0xbde0000, 0xbe1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe700000be4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbea0000, 0xbf0000000000bed, 0xbf30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf900000006, 0x0, 0x0, 0x900030bf60000, 0xbff0bfc, 0xc050c02, 0xc0b0c08, 0x0, 0xc110c0e, 0xc1d0c1a, 0xc230c20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc350c320c2f0c2c, 0x0, 0x0, 0x0, 0x0, 0xc290c260c170c14, 0x0, 0xc3b0c3800000000, 0xc410c3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc490c470000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc44, 0x0, 0x0, 0x0, 0xc5100000c4e, 0xc5700000c54, 0xc5d00000c5a, 0xc6300000c60, 0xc6900000c66, 0xc6f00000c6c, 0xc7500000c720000, 0xc780000, 0x0, 0xc8100000c7e0c7b, 0xc8a0c8700000c84, 0xc900c8d0000, 0xc960c93, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4b, 0x0, 0xc9900000000, 0x0, 0x0, 0x0, 0xca200000c9f, 0xca800000ca5, 0xcae00000cab, 0xcb400000cb1, 0xcba00000cb7, 0xcc000000cbd, 0xcc600000cc30000, 0xcc90000, 0x0, 0xcd200000ccf0ccc, 0xcdb0cd800000cd5, 0xce10cde0000, 0xce70ce4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcea000000000c9c, 0xcf30cf00ced, 0xcf600000000, 0x124b125d0fb71241, 0x13270e290d831043, 0xe4f12930e991327, 0x116710cd0f550e97, 0x1279121511fd11e3, 0x109d106910190feb, 0xd8d12f3128911c7, 0x11e110790ff50e1d, 0x11d910510edb1309, 0x120311890f65121d, 0x108d10250fbd0eff, 0xe050dd90d9d127d, 0x10d310770ff10f95, 0x125911e711dd1171, 0x10e9130712fb12cf, 0x12a111b9114d1107, 0xf0b0e87122f130b, 0x10ed1083117d112f, 0xecb0e8512cb1249, 0x11471047102f0fed, 0x117f0e0312b11159, 0x114f11150ddd0ddf, 0xf67123d12b511c5, 0xebb0d8712350feb, 0xe1110c110950f27, 0xd7f0f1b0da510f1, 0xe2311450f9d1011, 0x122711c910d70e7d, 0xf6f100d126d1005, 0xd9110bf0f7b11a5, 0x113d0fdb0ddb0dc3, 0xe091291122d1195, 0xfa10f070e9f0e37, 0x12f712ab10f31053, 0xfb50df91313130d, 0xf490ef312690ffd, 0x106d104b0f910f57, 0x11791153111110af, 0x12a3127111cd1261, 0x10670e410dfb0de9, 0xf230efd1227120b, 0x1091112d10030f77, 0xee50ebb0e670d97, 0x116b10a9109b0f29, 0x12d112c912951175, 0x128d110f0d9f12dd, 0xdb10d8f0f3512c1, 0xfeb0f9f0ec70ebd, 0x127711d310cb1073, 0xdf712af0fad1323, 0x103b10210fd10fcb, 0x114310e710bd10a1, 0x12b70f5d0dc512e3, 0x126310310ed70da9, 0x10950fd50f390f17, 0xecf0e310deb12bb, 0x10150fe10fc30fa7, 0x120d116310c3109f, 0xe1312c5128f1213, 0x10b110750e33103d, 0x130f12ff12bd11db, 0x1121118b102d0fcf, 0x1063108b11331125, 0xded11ad0d93123b, 0x11390f690ef50de7, 0x12670fb3101b0eb5, 0xf03122112b31205, 0xe590db5, 0xfab00000e7b, 0x10cf108f0de10000, 0x110d1105110310f5, 0x116d113512d3, 0x1233000011df, 0x128312730000, 0x12e912e700000000, 0x12bf127f130512eb, 0xe010db90db30da1, 0xe5f0e530e170e07, 0xecd0e7f0e790e63, 0xf470f430f2f0ed1, 0xfaf0fa30f970f53, 0x1049103510270fdd, 0x10eb10a3107d106f, 0x10fd10f910fb10f7, 0x110b1109110110ff, 0x11531127111d1117, 0x11731161115b1157, 0x11cb11971197118d, 0x1239123712231219, 0x1273126f124f124d, 0xf2b12e112d912c7, 0x119313d6, 0xd9b0dc10dd70d81, 0xe0b0dff0dc90db7, 0xe5d0e510e490e53, 0xe9b0e950e830e7b, 0xf050f010eb10ea9, 0xf3f0f330f1d0f13, 0xf530f410f470f37, 0xf890f850f7f0f5f, 0xfbf0fbd0fab0f99, 0x102110050fff0fc7, 0x1057104910411045, 0x1089107f10e3106f, 0x10b910b510ab108f, 0x10d110cf10c910c7, 0x10ef10dd10df10d5, 0x114911311127111f, 0x11af1173115f1153, 0x121f121b11f911c3, 0x122b123312291223, 0x1239123112351237, 0x12751265124f123f, 0x12c712b91299128b, 0x12db12d912d512d3, 0x13ac132712f912e1, 0xd370d2313be13aa, 0x1434140413f20d39, 0x13251321, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xabb00000a7a0000, 0x0, 0x0, 0xab50ab200000000, 0xa590a560aae0aaa, 0xa680a650a5f0a5c, 0xa740a710a6b, 0xa830a800a7d0a77, 0xa8c00000a89, 0xa9500000a920a8f, 0xaa10a9e00000a98, 0xa6e0ab80aa70aa4, 0xa9b0a860a62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x132900000000, 0x132c, 0x0, 0x0, 0x132f000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1335133200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1338000000000000, 0x133b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1341000000000000, 0x13440000133e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134a134700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1353135000000000, 0x1362135e135a1356, 0x1366, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x136a000000000000, 0x13711378136d1375, 0x137c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13800d8b0d850d89, 0xda70da30da10d99, 0xdaf0db30dad0dab, 0xdbb0db913880cf9, 0xcfb13820dc70dbd, 0xdd113860dcb0dbf, 0xdd70dd50d950dd3, 0xcff0de50de31444, 0xdf50df30df10def, 0xe070e010dff0d01, 0xe110e0f0e0d0e0b, 0xe1b0e190e170e15, 0xe210e210e210e1f, 0xe270e25105d138e, 0xe2f0e2d0e2b1390, 0xe3b0e390e350e3d, 0xe470e450e430e3f, 0xe510e4d0e4d0e4b, 0xe690e5b0e570e55, 0xe650e610e6b0e5f, 0xe710e6f0e890de7, 0xe750e770e6d0e73, 0xe8d0e8b13920e81, 0xe9d0e930e910e8f, 0xea50ea313961394, 0xd030eab0ea10ea7, 0xeb30eb30eaf0d05, 0xebb0eb90eb71398, 0xec30ec1139a0ebf, 0xec90d070ec50f0f, 0x139e0ed30ed50ed1, 0xedd0edf13a00ed9, 0xd090ee90ee70ee1, 0xef10eef0eed0eeb, 0xef70d0d13a20d0b, 0x14580eff0efb0ef9, 0x118f13a613a60f09, 0x13b40d0f0f0d0f0d, 0xd110f150f111408, 0xf250f210f1f0f19, 0xf2f0d130d150f2d, 0xf3d0f3b0f3113a8, 0xf470f450f3d0f3f, 0xf510f4d0f4b0f4f, 0xf5b0f590f550f53, 0xf730f6b0f630f61, 0xf750f6d0f7113ae, 0xf8713b00f830f79, 0xf8b0d170f7d0f81, 0xd190f8d0f930f8f, 0xfa513b20f9b0f97, 0xfaf0d1f0fa90fb9, 0xdcf0dcd0d1b0d1d, 0xd5111810fb10fbb, 0xfc90fc10fbf0fbd, 0xfd30d2113bc0fc5, 0x13c00fdd0fd90fcd, 0xd230fe30fd70fdf, 0xfef0fe90fe70fe5, 0xff70d250ff313c2, 0xffb0d270ff913c4, 0x13c6100710051001, 0x13ca100913c8139c, 0x1017100b1013100f, 0x102310211027101f, 0x101d13cc102b1029, 0x10410d2910391037, 0x104d103313ce103f, 0x1059104f13d213d0, 0x105b0d2b10551057, 0x13841065105f1061, 0x13d8107113d4106b, 0x13da1081107f107b, 0x13de13dc10871085, 0x10990d2d10971093, 0x10a710a50d2f0d2f, 0xd3110b310ad10ab, 0x13e210bb13e010b7, 0x13e410c513a410c1, 0xd350d3313e813e6, 0x13ee13ea13ec10d5, 0x10db10db10d913f0, 0xd3b10e10d3910df, 0x10e910e513f40d3d, 0x10ff13f60d3f10ef, 0x1113110d13fa13f8, 0x111b111911170d41, 0x112313fe13fe13fc, 0x112b112914000d43, 0xd47113714020d45, 0x14061141113b113f, 0x115511510d49114b, 0x140c140a0d4b115d, 0x14101165140e0d4d, 0x14121173116f1169, 0x117b141611771414, 0x118511830d4f13b6, 0x14180ead11870d53, 0x118f13ba13b8141a, 0x119b0d55126b1191, 0x119f0dfd119d1199, 0x141c11a711a311a1, 0x11b511b311a911a5, 0x11cb11c111b711ab, 0x11bf11bd11bb11b1, 0xd5714201422141e, 0x142a11d511d111cf, 0xd5b0d59142411d7, 0x11e50d5d14281426, 0x11ef11eb11e911e7, 0x11f911f111f311ed, 0xd5f11fb11f711f5, 0x12070d61120111ff, 0x1211120f142c1209, 0x142e0cfd12170d63, 0x12250d670d651430, 0x14321243123f1231, 0x1253125112471245, 0x12551257138a1436, 0x1265125f138c125b, 0x1281127b143a1438, 0x12971287143c1285, 0x12a5129b129f129d, 0xd6912a9143e12a7, 0x12c30d6b144012ad, 0x1446144212cd0ee3, 0x144812d70d6f0d6d, 0x12db12db144a0d71, 0xd7312e5144c12df, 0x12f512f112ef12ed, 0x12fd12f9144e0d75, 0x13030d790d771301, 0x145414520d7b1450, 0x13150d7d13111456, 0x131d131b13191317, 0x145a131f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); -@property -{ -private alias _IDCA = immutable(dchar[]); -_IDCA decompCanonTable() @safe pure nothrow { static _IDCA t = [ 0x0, 0x3b, 0x0, 0x3c, 0x338, 0x0, 0x3d, 0x338, 0x0, 0x3e, 0x338, 0x0, 0x41, 0x300, 0x0, 0x41, 0x301, 0x0, 0x41, 0x302, 0x0, 0x41, 0x302, 0x300, 0x0, 0x41, 0x302, 0x301, 0x0, 0x41, 0x302, 0x303, 0x0, 0x41, 0x302, 0x309, 0x0, 0x41, 0x303, 0x0, 0x41, 0x304, 0x0, 0x41, 0x306, 0x0, 0x41, 0x306, 0x300, 0x0, 0x41, 0x306, 0x301, 0x0, 0x41, 0x306, 0x303, 0x0, 0x41, 0x306, 0x309, 0x0, 0x41, 0x307, 0x0, 0x41, 0x307, 0x304, 0x0, 0x41, 0x308, 0x0, 0x41, 0x308, 0x304, 0x0, 0x41, 0x309, 0x0, 0x41, 0x30a, 0x0, 0x41, 0x30a, 0x301, 0x0, 0x41, 0x30c, 0x0, 0x41, 0x30f, 0x0, 0x41, 0x311, 0x0, 0x41, 0x323, 0x0, 0x41, 0x323, 0x302, 0x0, 0x41, 0x323, 0x306, 0x0, 0x41, 0x325, 0x0, 0x41, 0x328, 0x0, 0x42, 0x307, 0x0, 0x42, 0x323, 0x0, 0x42, 0x331, 0x0, 0x43, 0x301, 0x0, 0x43, 0x302, 0x0, 0x43, 0x307, 0x0, 0x43, 0x30c, 0x0, 0x43, 0x327, 0x0, 0x43, 0x327, 0x301, 0x0, 0x44, 0x307, 0x0, 0x44, 0x30c, 0x0, 0x44, 0x323, 0x0, 0x44, 0x327, 0x0, 0x44, 0x32d, 0x0, 0x44, 0x331, 0x0, 0x45, 0x300, 0x0, 0x45, 0x301, 0x0, 0x45, 0x302, 0x0, 0x45, 0x302, 0x300, 0x0, 0x45, 0x302, 0x301, 0x0, 0x45, 0x302, 0x303, 0x0, 0x45, 0x302, 0x309, 0x0, 0x45, 0x303, 0x0, 0x45, 0x304, 0x0, 0x45, 0x304, 0x300, 0x0, 0x45, 0x304, 0x301, 0x0, 0x45, 0x306, 0x0, 0x45, 0x307, 0x0, 0x45, 0x308, 0x0, 0x45, 0x309, 0x0, 0x45, 0x30c, 0x0, 0x45, 0x30f, 0x0, 0x45, 0x311, 0x0, 0x45, 0x323, 0x0, 0x45, 0x323, 0x302, 0x0, 0x45, 0x327, 0x0, 0x45, 0x327, 0x306, 0x0, 0x45, 0x328, 0x0, 0x45, 0x32d, 0x0, 0x45, 0x330, 0x0, 0x46, 0x307, 0x0, 0x47, 0x301, 0x0, 0x47, 0x302, 0x0, 0x47, 0x304, 0x0, 0x47, 0x306, 0x0, 0x47, 0x307, 0x0, 0x47, 0x30c, 0x0, 0x47, 0x327, 0x0, 0x48, 0x302, 0x0, 0x48, 0x307, 0x0, 0x48, 0x308, 0x0, 0x48, 0x30c, 0x0, 0x48, 0x323, 0x0, 0x48, 0x327, 0x0, 0x48, 0x32e, 0x0, 0x49, 0x300, 0x0, 0x49, 0x301, 0x0, 0x49, 0x302, 0x0, 0x49, 0x303, 0x0, 0x49, 0x304, 0x0, 0x49, 0x306, 0x0, 0x49, 0x307, 0x0, 0x49, 0x308, 0x0, 0x49, 0x308, 0x301, 0x0, 0x49, 0x309, 0x0, 0x49, 0x30c, 0x0, 0x49, 0x30f, 0x0, 0x49, 0x311, 0x0, 0x49, 0x323, 0x0, 0x49, 0x328, 0x0, 0x49, 0x330, 0x0, 0x4a, 0x302, 0x0, 0x4b, 0x0, 0x4b, 0x301, 0x0, 0x4b, 0x30c, 0x0, 0x4b, 0x323, 0x0, 0x4b, 0x327, 0x0, 0x4b, 0x331, 0x0, 0x4c, 0x301, 0x0, 0x4c, 0x30c, 0x0, 0x4c, 0x323, 0x0, 0x4c, 0x323, 0x304, 0x0, 0x4c, 0x327, 0x0, 0x4c, 0x32d, 0x0, 0x4c, 0x331, 0x0, 0x4d, 0x301, 0x0, 0x4d, 0x307, 0x0, 0x4d, 0x323, 0x0, 0x4e, 0x300, 0x0, 0x4e, 0x301, 0x0, 0x4e, 0x303, 0x0, 0x4e, 0x307, 0x0, 0x4e, 0x30c, 0x0, 0x4e, 0x323, 0x0, 0x4e, 0x327, 0x0, 0x4e, 0x32d, 0x0, 0x4e, 0x331, 0x0, 0x4f, 0x300, 0x0, 0x4f, 0x301, 0x0, 0x4f, 0x302, 0x0, 0x4f, 0x302, 0x300, 0x0, 0x4f, 0x302, 0x301, 0x0, 0x4f, 0x302, 0x303, 0x0, 0x4f, 0x302, 0x309, 0x0, 0x4f, 0x303, 0x0, 0x4f, 0x303, 0x301, 0x0, 0x4f, 0x303, 0x304, 0x0, 0x4f, 0x303, 0x308, 0x0, 0x4f, 0x304, 0x0, 0x4f, 0x304, 0x300, 0x0, 0x4f, 0x304, 0x301, 0x0, 0x4f, 0x306, 0x0, 0x4f, 0x307, 0x0, 0x4f, 0x307, 0x304, 0x0, 0x4f, 0x308, 0x0, 0x4f, 0x308, 0x304, 0x0, 0x4f, 0x309, 0x0, 0x4f, 0x30b, 0x0, 0x4f, 0x30c, 0x0, 0x4f, 0x30f, 0x0, 0x4f, 0x311, 0x0, 0x4f, 0x31b, 0x0, 0x4f, 0x31b, 0x300, 0x0, 0x4f, 0x31b, 0x301, 0x0, 0x4f, 0x31b, 0x303, 0x0, 0x4f, 0x31b, 0x309, 0x0, 0x4f, 0x31b, 0x323, 0x0, 0x4f, 0x323, 0x0, 0x4f, 0x323, 0x302, 0x0, 0x4f, 0x328, 0x0, 0x4f, 0x328, 0x304, 0x0, 0x50, 0x301, 0x0, 0x50, 0x307, 0x0, 0x52, 0x301, 0x0, 0x52, 0x307, 0x0, 0x52, 0x30c, 0x0, 0x52, 0x30f, 0x0, 0x52, 0x311, 0x0, 0x52, 0x323, 0x0, 0x52, 0x323, 0x304, 0x0, 0x52, 0x327, 0x0, 0x52, 0x331, 0x0, 0x53, 0x301, 0x0, 0x53, 0x301, 0x307, 0x0, 0x53, 0x302, 0x0, 0x53, 0x307, 0x0, 0x53, 0x30c, 0x0, 0x53, 0x30c, 0x307, 0x0, 0x53, 0x323, 0x0, 0x53, 0x323, 0x307, 0x0, 0x53, 0x326, 0x0, 0x53, 0x327, 0x0, 0x54, 0x307, 0x0, 0x54, 0x30c, 0x0, 0x54, 0x323, 0x0, 0x54, 0x326, 0x0, 0x54, 0x327, 0x0, 0x54, 0x32d, 0x0, 0x54, 0x331, 0x0, 0x55, 0x300, 0x0, 0x55, 0x301, 0x0, 0x55, 0x302, 0x0, 0x55, 0x303, 0x0, 0x55, 0x303, 0x301, 0x0, 0x55, 0x304, 0x0, 0x55, 0x304, 0x308, 0x0, 0x55, 0x306, 0x0, 0x55, 0x308, 0x0, 0x55, 0x308, 0x300, 0x0, 0x55, 0x308, 0x301, 0x0, 0x55, 0x308, 0x304, 0x0, 0x55, 0x308, 0x30c, 0x0, 0x55, 0x309, 0x0, 0x55, 0x30a, 0x0, 0x55, 0x30b, 0x0, 0x55, 0x30c, 0x0, 0x55, 0x30f, 0x0, 0x55, 0x311, 0x0, 0x55, 0x31b, 0x0, 0x55, 0x31b, 0x300, 0x0, 0x55, 0x31b, 0x301, 0x0, 0x55, 0x31b, 0x303, 0x0, 0x55, 0x31b, 0x309, 0x0, 0x55, 0x31b, 0x323, 0x0, 0x55, 0x323, 0x0, 0x55, 0x324, 0x0, 0x55, 0x328, 0x0, 0x55, 0x32d, 0x0, 0x55, 0x330, 0x0, 0x56, 0x303, 0x0, 0x56, 0x323, 0x0, 0x57, 0x300, 0x0, 0x57, 0x301, 0x0, 0x57, 0x302, 0x0, 0x57, 0x307, 0x0, 0x57, 0x308, 0x0, 0x57, 0x323, 0x0, 0x58, 0x307, 0x0, 0x58, 0x308, 0x0, 0x59, 0x300, 0x0, 0x59, 0x301, 0x0, 0x59, 0x302, 0x0, 0x59, 0x303, 0x0, 0x59, 0x304, 0x0, 0x59, 0x307, 0x0, 0x59, 0x308, 0x0, 0x59, 0x309, 0x0, 0x59, 0x323, 0x0, 0x5a, 0x301, 0x0, 0x5a, 0x302, 0x0, 0x5a, 0x307, 0x0, 0x5a, 0x30c, 0x0, 0x5a, 0x323, 0x0, 0x5a, 0x331, 0x0, 0x60, 0x0, 0x61, 0x300, 0x0, 0x61, 0x301, 0x0, 0x61, 0x302, 0x0, 0x61, 0x302, 0x300, 0x0, 0x61, 0x302, 0x301, 0x0, 0x61, 0x302, 0x303, 0x0, 0x61, 0x302, 0x309, 0x0, 0x61, 0x303, 0x0, 0x61, 0x304, 0x0, 0x61, 0x306, 0x0, 0x61, 0x306, 0x300, 0x0, 0x61, 0x306, 0x301, 0x0, 0x61, 0x306, 0x303, 0x0, 0x61, 0x306, 0x309, 0x0, 0x61, 0x307, 0x0, 0x61, 0x307, 0x304, 0x0, 0x61, 0x308, 0x0, 0x61, 0x308, 0x304, 0x0, 0x61, 0x309, 0x0, 0x61, 0x30a, 0x0, 0x61, 0x30a, 0x301, 0x0, 0x61, 0x30c, 0x0, 0x61, 0x30f, 0x0, 0x61, 0x311, 0x0, 0x61, 0x323, 0x0, 0x61, 0x323, 0x302, 0x0, 0x61, 0x323, 0x306, 0x0, 0x61, 0x325, 0x0, 0x61, 0x328, 0x0, 0x62, 0x307, 0x0, 0x62, 0x323, 0x0, 0x62, 0x331, 0x0, 0x63, 0x301, 0x0, 0x63, 0x302, 0x0, 0x63, 0x307, 0x0, 0x63, 0x30c, 0x0, 0x63, 0x327, 0x0, 0x63, 0x327, 0x301, 0x0, 0x64, 0x307, 0x0, 0x64, 0x30c, 0x0, 0x64, 0x323, 0x0, 0x64, 0x327, 0x0, 0x64, 0x32d, 0x0, 0x64, 0x331, 0x0, 0x65, 0x300, 0x0, 0x65, 0x301, 0x0, 0x65, 0x302, 0x0, 0x65, 0x302, 0x300, 0x0, 0x65, 0x302, 0x301, 0x0, 0x65, 0x302, 0x303, 0x0, 0x65, 0x302, 0x309, 0x0, 0x65, 0x303, 0x0, 0x65, 0x304, 0x0, 0x65, 0x304, 0x300, 0x0, 0x65, 0x304, 0x301, 0x0, 0x65, 0x306, 0x0, 0x65, 0x307, 0x0, 0x65, 0x308, 0x0, 0x65, 0x309, 0x0, 0x65, 0x30c, 0x0, 0x65, 0x30f, 0x0, 0x65, 0x311, 0x0, 0x65, 0x323, 0x0, 0x65, 0x323, 0x302, 0x0, 0x65, 0x327, 0x0, 0x65, 0x327, 0x306, 0x0, 0x65, 0x328, 0x0, 0x65, 0x32d, 0x0, 0x65, 0x330, 0x0, 0x66, 0x307, 0x0, 0x67, 0x301, 0x0, 0x67, 0x302, 0x0, 0x67, 0x304, 0x0, 0x67, 0x306, 0x0, 0x67, 0x307, 0x0, 0x67, 0x30c, 0x0, 0x67, 0x327, 0x0, 0x68, 0x302, 0x0, 0x68, 0x307, 0x0, 0x68, 0x308, 0x0, 0x68, 0x30c, 0x0, 0x68, 0x323, 0x0, 0x68, 0x327, 0x0, 0x68, 0x32e, 0x0, 0x68, 0x331, 0x0, 0x69, 0x300, 0x0, 0x69, 0x301, 0x0, 0x69, 0x302, 0x0, 0x69, 0x303, 0x0, 0x69, 0x304, 0x0, 0x69, 0x306, 0x0, 0x69, 0x308, 0x0, 0x69, 0x308, 0x301, 0x0, 0x69, 0x309, 0x0, 0x69, 0x30c, 0x0, 0x69, 0x30f, 0x0, 0x69, 0x311, 0x0, 0x69, 0x323, 0x0, 0x69, 0x328, 0x0, 0x69, 0x330, 0x0, 0x6a, 0x302, 0x0, 0x6a, 0x30c, 0x0, 0x6b, 0x301, 0x0, 0x6b, 0x30c, 0x0, 0x6b, 0x323, 0x0, 0x6b, 0x327, 0x0, 0x6b, 0x331, 0x0, 0x6c, 0x301, 0x0, 0x6c, 0x30c, 0x0, 0x6c, 0x323, 0x0, 0x6c, 0x323, 0x304, 0x0, 0x6c, 0x327, 0x0, 0x6c, 0x32d, 0x0, 0x6c, 0x331, 0x0, 0x6d, 0x301, 0x0, 0x6d, 0x307, 0x0, 0x6d, 0x323, 0x0, 0x6e, 0x300, 0x0, 0x6e, 0x301, 0x0, 0x6e, 0x303, 0x0, 0x6e, 0x307, 0x0, 0x6e, 0x30c, 0x0, 0x6e, 0x323, 0x0, 0x6e, 0x327, 0x0, 0x6e, 0x32d, 0x0, 0x6e, 0x331, 0x0, 0x6f, 0x300, 0x0, 0x6f, 0x301, 0x0, 0x6f, 0x302, 0x0, 0x6f, 0x302, 0x300, 0x0, 0x6f, 0x302, 0x301, 0x0, 0x6f, 0x302, 0x303, 0x0, 0x6f, 0x302, 0x309, 0x0, 0x6f, 0x303, 0x0, 0x6f, 0x303, 0x301, 0x0, 0x6f, 0x303, 0x304, 0x0, 0x6f, 0x303, 0x308, 0x0, 0x6f, 0x304, 0x0, 0x6f, 0x304, 0x300, 0x0, 0x6f, 0x304, 0x301, 0x0, 0x6f, 0x306, 0x0, 0x6f, 0x307, 0x0, 0x6f, 0x307, 0x304, 0x0, 0x6f, 0x308, 0x0, 0x6f, 0x308, 0x304, 0x0, 0x6f, 0x309, 0x0, 0x6f, 0x30b, 0x0, 0x6f, 0x30c, 0x0, 0x6f, 0x30f, 0x0, 0x6f, 0x311, 0x0, 0x6f, 0x31b, 0x0, 0x6f, 0x31b, 0x300, 0x0, 0x6f, 0x31b, 0x301, 0x0, 0x6f, 0x31b, 0x303, 0x0, 0x6f, 0x31b, 0x309, 0x0, 0x6f, 0x31b, 0x323, 0x0, 0x6f, 0x323, 0x0, 0x6f, 0x323, 0x302, 0x0, 0x6f, 0x328, 0x0, 0x6f, 0x328, 0x304, 0x0, 0x70, 0x301, 0x0, 0x70, 0x307, 0x0, 0x72, 0x301, 0x0, 0x72, 0x307, 0x0, 0x72, 0x30c, 0x0, 0x72, 0x30f, 0x0, 0x72, 0x311, 0x0, 0x72, 0x323, 0x0, 0x72, 0x323, 0x304, 0x0, 0x72, 0x327, 0x0, 0x72, 0x331, 0x0, 0x73, 0x301, 0x0, 0x73, 0x301, 0x307, 0x0, 0x73, 0x302, 0x0, 0x73, 0x307, 0x0, 0x73, 0x30c, 0x0, 0x73, 0x30c, 0x307, 0x0, 0x73, 0x323, 0x0, 0x73, 0x323, 0x307, 0x0, 0x73, 0x326, 0x0, 0x73, 0x327, 0x0, 0x74, 0x307, 0x0, 0x74, 0x308, 0x0, 0x74, 0x30c, 0x0, 0x74, 0x323, 0x0, 0x74, 0x326, 0x0, 0x74, 0x327, 0x0, 0x74, 0x32d, 0x0, 0x74, 0x331, 0x0, 0x75, 0x300, 0x0, 0x75, 0x301, 0x0, 0x75, 0x302, 0x0, 0x75, 0x303, 0x0, 0x75, 0x303, 0x301, 0x0, 0x75, 0x304, 0x0, 0x75, 0x304, 0x308, 0x0, 0x75, 0x306, 0x0, 0x75, 0x308, 0x0, 0x75, 0x308, 0x300, 0x0, 0x75, 0x308, 0x301, 0x0, 0x75, 0x308, 0x304, 0x0, 0x75, 0x308, 0x30c, 0x0, 0x75, 0x309, 0x0, 0x75, 0x30a, 0x0, 0x75, 0x30b, 0x0, 0x75, 0x30c, 0x0, 0x75, 0x30f, 0x0, 0x75, 0x311, 0x0, 0x75, 0x31b, 0x0, 0x75, 0x31b, 0x300, 0x0, 0x75, 0x31b, 0x301, 0x0, 0x75, 0x31b, 0x303, 0x0, 0x75, 0x31b, 0x309, 0x0, 0x75, 0x31b, 0x323, 0x0, 0x75, 0x323, 0x0, 0x75, 0x324, 0x0, 0x75, 0x328, 0x0, 0x75, 0x32d, 0x0, 0x75, 0x330, 0x0, 0x76, 0x303, 0x0, 0x76, 0x323, 0x0, 0x77, 0x300, 0x0, 0x77, 0x301, 0x0, 0x77, 0x302, 0x0, 0x77, 0x307, 0x0, 0x77, 0x308, 0x0, 0x77, 0x30a, 0x0, 0x77, 0x323, 0x0, 0x78, 0x307, 0x0, 0x78, 0x308, 0x0, 0x79, 0x300, 0x0, 0x79, 0x301, 0x0, 0x79, 0x302, 0x0, 0x79, 0x303, 0x0, 0x79, 0x304, 0x0, 0x79, 0x307, 0x0, 0x79, 0x308, 0x0, 0x79, 0x309, 0x0, 0x79, 0x30a, 0x0, 0x79, 0x323, 0x0, 0x7a, 0x301, 0x0, 0x7a, 0x302, 0x0, 0x7a, 0x307, 0x0, 0x7a, 0x30c, 0x0, 0x7a, 0x323, 0x0, 0x7a, 0x331, 0x0, 0xa8, 0x300, 0x0, 0xa8, 0x301, 0x0, 0xa8, 0x342, 0x0, 0xb4, 0x0, 0xb7, 0x0, 0xc6, 0x301, 0x0, 0xc6, 0x304, 0x0, 0xd8, 0x301, 0x0, 0xe6, 0x301, 0x0, 0xe6, 0x304, 0x0, 0xf8, 0x301, 0x0, 0x17f, 0x307, 0x0, 0x1b7, 0x30c, 0x0, 0x292, 0x30c, 0x0, 0x2b9, 0x0, 0x300, 0x0, 0x301, 0x0, 0x308, 0x301, 0x0, 0x313, 0x0, 0x391, 0x300, 0x0, 0x391, 0x301, 0x0, 0x391, 0x304, 0x0, 0x391, 0x306, 0x0, 0x391, 0x313, 0x0, 0x391, 0x313, 0x300, 0x0, 0x391, 0x313, 0x300, 0x345, 0x0, 0x391, 0x313, 0x301, 0x0, 0x391, 0x313, 0x301, 0x345, 0x0, 0x391, 0x313, 0x342, 0x0, 0x391, 0x313, 0x342, 0x345, 0x0, 0x391, 0x313, 0x345, 0x0, 0x391, 0x314, 0x0, 0x391, 0x314, 0x300, 0x0, 0x391, 0x314, 0x300, 0x345, 0x0, 0x391, 0x314, 0x301, 0x0, 0x391, 0x314, 0x301, 0x345, 0x0, 0x391, 0x314, 0x342, 0x0, 0x391, 0x314, 0x342, 0x345, 0x0, 0x391, 0x314, 0x345, 0x0, 0x391, 0x345, 0x0, 0x395, 0x300, 0x0, 0x395, 0x301, 0x0, 0x395, 0x313, 0x0, 0x395, 0x313, 0x300, 0x0, 0x395, 0x313, 0x301, 0x0, 0x395, 0x314, 0x0, 0x395, 0x314, 0x300, 0x0, 0x395, 0x314, 0x301, 0x0, 0x397, 0x300, 0x0, 0x397, 0x301, 0x0, 0x397, 0x313, 0x0, 0x397, 0x313, 0x300, 0x0, 0x397, 0x313, 0x300, 0x345, 0x0, 0x397, 0x313, 0x301, 0x0, 0x397, 0x313, 0x301, 0x345, 0x0, 0x397, 0x313, 0x342, 0x0, 0x397, 0x313, 0x342, 0x345, 0x0, 0x397, 0x313, 0x345, 0x0, 0x397, 0x314, 0x0, 0x397, 0x314, 0x300, 0x0, 0x397, 0x314, 0x300, 0x345, 0x0, 0x397, 0x314, 0x301, 0x0, 0x397, 0x314, 0x301, 0x345, 0x0, 0x397, 0x314, 0x342, 0x0, 0x397, 0x314, 0x342, 0x345, 0x0, 0x397, 0x314, 0x345, 0x0, 0x397, 0x345, 0x0, 0x399, 0x300, 0x0, 0x399, 0x301, 0x0, 0x399, 0x304, 0x0, 0x399, 0x306, 0x0, 0x399, 0x308, 0x0, 0x399, 0x313, 0x0, 0x399, 0x313, 0x300, 0x0, 0x399, 0x313, 0x301, 0x0, 0x399, 0x313, 0x342, 0x0, 0x399, 0x314, 0x0, 0x399, 0x314, 0x300, 0x0, 0x399, 0x314, 0x301, 0x0, 0x399, 0x314, 0x342, 0x0, 0x39f, 0x300, 0x0, 0x39f, 0x301, 0x0, 0x39f, 0x313, 0x0, 0x39f, 0x313, 0x300, 0x0, 0x39f, 0x313, 0x301, 0x0, 0x39f, 0x314, 0x0, 0x39f, 0x314, 0x300, 0x0, 0x39f, 0x314, 0x301, 0x0, 0x3a1, 0x314, 0x0, 0x3a5, 0x300, 0x0, 0x3a5, 0x301, 0x0, 0x3a5, 0x304, 0x0, 0x3a5, 0x306, 0x0, 0x3a5, 0x308, 0x0, 0x3a5, 0x314, 0x0, 0x3a5, 0x314, 0x300, 0x0, 0x3a5, 0x314, 0x301, 0x0, 0x3a5, 0x314, 0x342, 0x0, 0x3a9, 0x0, 0x3a9, 0x300, 0x0, 0x3a9, 0x301, 0x0, 0x3a9, 0x313, 0x0, 0x3a9, 0x313, 0x300, 0x0, 0x3a9, 0x313, 0x300, 0x345, 0x0, 0x3a9, 0x313, 0x301, 0x0, 0x3a9, 0x313, 0x301, 0x345, 0x0, 0x3a9, 0x313, 0x342, 0x0, 0x3a9, 0x313, 0x342, 0x345, 0x0, 0x3a9, 0x313, 0x345, 0x0, 0x3a9, 0x314, 0x0, 0x3a9, 0x314, 0x300, 0x0, 0x3a9, 0x314, 0x300, 0x345, 0x0, 0x3a9, 0x314, 0x301, 0x0, 0x3a9, 0x314, 0x301, 0x345, 0x0, 0x3a9, 0x314, 0x342, 0x0, 0x3a9, 0x314, 0x342, 0x345, 0x0, 0x3a9, 0x314, 0x345, 0x0, 0x3a9, 0x345, 0x0, 0x3b1, 0x300, 0x0, 0x3b1, 0x300, 0x345, 0x0, 0x3b1, 0x301, 0x0, 0x3b1, 0x301, 0x345, 0x0, 0x3b1, 0x304, 0x0, 0x3b1, 0x306, 0x0, 0x3b1, 0x313, 0x0, 0x3b1, 0x313, 0x300, 0x0, 0x3b1, 0x313, 0x300, 0x345, 0x0, 0x3b1, 0x313, 0x301, 0x0, 0x3b1, 0x313, 0x301, 0x345, 0x0, 0x3b1, 0x313, 0x342, 0x0, 0x3b1, 0x313, 0x342, 0x345, 0x0, 0x3b1, 0x313, 0x345, 0x0, 0x3b1, 0x314, 0x0, 0x3b1, 0x314, 0x300, 0x0, 0x3b1, 0x314, 0x300, 0x345, 0x0, 0x3b1, 0x314, 0x301, 0x0, 0x3b1, 0x314, 0x301, 0x345, 0x0, 0x3b1, 0x314, 0x342, 0x0, 0x3b1, 0x314, 0x342, 0x345, 0x0, 0x3b1, 0x314, 0x345, 0x0, 0x3b1, 0x342, 0x0, 0x3b1, 0x342, 0x345, 0x0, 0x3b1, 0x345, 0x0, 0x3b5, 0x300, 0x0, 0x3b5, 0x301, 0x0, 0x3b5, 0x313, 0x0, 0x3b5, 0x313, 0x300, 0x0, 0x3b5, 0x313, 0x301, 0x0, 0x3b5, 0x314, 0x0, 0x3b5, 0x314, 0x300, 0x0, 0x3b5, 0x314, 0x301, 0x0, 0x3b7, 0x300, 0x0, 0x3b7, 0x300, 0x345, 0x0, 0x3b7, 0x301, 0x0, 0x3b7, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x0, 0x3b7, 0x313, 0x300, 0x0, 0x3b7, 0x313, 0x300, 0x345, 0x0, 0x3b7, 0x313, 0x301, 0x0, 0x3b7, 0x313, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x342, 0x0, 0x3b7, 0x313, 0x342, 0x345, 0x0, 0x3b7, 0x313, 0x345, 0x0, 0x3b7, 0x314, 0x0, 0x3b7, 0x314, 0x300, 0x0, 0x3b7, 0x314, 0x300, 0x345, 0x0, 0x3b7, 0x314, 0x301, 0x0, 0x3b7, 0x314, 0x301, 0x345, 0x0, 0x3b7, 0x314, 0x342, 0x0, 0x3b7, 0x314, 0x342, 0x345, 0x0, 0x3b7, 0x314, 0x345, 0x0, 0x3b7, 0x342, 0x0, 0x3b7, 0x342, 0x345, 0x0, 0x3b7, 0x345, 0x0, 0x3b9, 0x0, 0x3b9, 0x300, 0x0, 0x3b9, 0x301, 0x0, 0x3b9, 0x304, 0x0, 0x3b9, 0x306, 0x0, 0x3b9, 0x308, 0x0, 0x3b9, 0x308, 0x300, 0x0, 0x3b9, 0x308, 0x301, 0x0, 0x3b9, 0x308, 0x342, 0x0, 0x3b9, 0x313, 0x0, 0x3b9, 0x313, 0x300, 0x0, 0x3b9, 0x313, 0x301, 0x0, 0x3b9, 0x313, 0x342, 0x0, 0x3b9, 0x314, 0x0, 0x3b9, 0x314, 0x300, 0x0, 0x3b9, 0x314, 0x301, 0x0, 0x3b9, 0x314, 0x342, 0x0, 0x3b9, 0x342, 0x0, 0x3bf, 0x300, 0x0, 0x3bf, 0x301, 0x0, 0x3bf, 0x313, 0x0, 0x3bf, 0x313, 0x300, 0x0, 0x3bf, 0x313, 0x301, 0x0, 0x3bf, 0x314, 0x0, 0x3bf, 0x314, 0x300, 0x0, 0x3bf, 0x314, 0x301, 0x0, 0x3c1, 0x313, 0x0, 0x3c1, 0x314, 0x0, 0x3c5, 0x300, 0x0, 0x3c5, 0x301, 0x0, 0x3c5, 0x304, 0x0, 0x3c5, 0x306, 0x0, 0x3c5, 0x308, 0x0, 0x3c5, 0x308, 0x300, 0x0, 0x3c5, 0x308, 0x301, 0x0, 0x3c5, 0x308, 0x342, 0x0, 0x3c5, 0x313, 0x0, 0x3c5, 0x313, 0x300, 0x0, 0x3c5, 0x313, 0x301, 0x0, 0x3c5, 0x313, 0x342, 0x0, 0x3c5, 0x314, 0x0, 0x3c5, 0x314, 0x300, 0x0, 0x3c5, 0x314, 0x301, 0x0, 0x3c5, 0x314, 0x342, 0x0, 0x3c5, 0x342, 0x0, 0x3c9, 0x300, 0x0, 0x3c9, 0x300, 0x345, 0x0, 0x3c9, 0x301, 0x0, 0x3c9, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x0, 0x3c9, 0x313, 0x300, 0x0, 0x3c9, 0x313, 0x300, 0x345, 0x0, 0x3c9, 0x313, 0x301, 0x0, 0x3c9, 0x313, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x342, 0x0, 0x3c9, 0x313, 0x342, 0x345, 0x0, 0x3c9, 0x313, 0x345, 0x0, 0x3c9, 0x314, 0x0, 0x3c9, 0x314, 0x300, 0x0, 0x3c9, 0x314, 0x300, 0x345, 0x0, 0x3c9, 0x314, 0x301, 0x0, 0x3c9, 0x314, 0x301, 0x345, 0x0, 0x3c9, 0x314, 0x342, 0x0, 0x3c9, 0x314, 0x342, 0x345, 0x0, 0x3c9, 0x314, 0x345, 0x0, 0x3c9, 0x342, 0x0, 0x3c9, 0x342, 0x345, 0x0, 0x3c9, 0x345, 0x0, 0x3d2, 0x301, 0x0, 0x3d2, 0x308, 0x0, 0x406, 0x308, 0x0, 0x410, 0x306, 0x0, 0x410, 0x308, 0x0, 0x413, 0x301, 0x0, 0x415, 0x300, 0x0, 0x415, 0x306, 0x0, 0x415, 0x308, 0x0, 0x416, 0x306, 0x0, 0x416, 0x308, 0x0, 0x417, 0x308, 0x0, 0x418, 0x300, 0x0, 0x418, 0x304, 0x0, 0x418, 0x306, 0x0, 0x418, 0x308, 0x0, 0x41a, 0x301, 0x0, 0x41e, 0x308, 0x0, 0x423, 0x304, 0x0, 0x423, 0x306, 0x0, 0x423, 0x308, 0x0, 0x423, 0x30b, 0x0, 0x427, 0x308, 0x0, 0x42b, 0x308, 0x0, 0x42d, 0x308, 0x0, 0x430, 0x306, 0x0, 0x430, 0x308, 0x0, 0x433, 0x301, 0x0, 0x435, 0x300, 0x0, 0x435, 0x306, 0x0, 0x435, 0x308, 0x0, 0x436, 0x306, 0x0, 0x436, 0x308, 0x0, 0x437, 0x308, 0x0, 0x438, 0x300, 0x0, 0x438, 0x304, 0x0, 0x438, 0x306, 0x0, 0x438, 0x308, 0x0, 0x43a, 0x301, 0x0, 0x43e, 0x308, 0x0, 0x443, 0x304, 0x0, 0x443, 0x306, 0x0, 0x443, 0x308, 0x0, 0x443, 0x30b, 0x0, 0x447, 0x308, 0x0, 0x44b, 0x308, 0x0, 0x44d, 0x308, 0x0, 0x456, 0x308, 0x0, 0x474, 0x30f, 0x0, 0x475, 0x30f, 0x0, 0x4d8, 0x308, 0x0, 0x4d9, 0x308, 0x0, 0x4e8, 0x308, 0x0, 0x4e9, 0x308, 0x0, 0x5d0, 0x5b7, 0x0, 0x5d0, 0x5b8, 0x0, 0x5d0, 0x5bc, 0x0, 0x5d1, 0x5bc, 0x0, 0x5d1, 0x5bf, 0x0, 0x5d2, 0x5bc, 0x0, 0x5d3, 0x5bc, 0x0, 0x5d4, 0x5bc, 0x0, 0x5d5, 0x5b9, 0x0, 0x5d5, 0x5bc, 0x0, 0x5d6, 0x5bc, 0x0, 0x5d8, 0x5bc, 0x0, 0x5d9, 0x5b4, 0x0, 0x5d9, 0x5bc, 0x0, 0x5da, 0x5bc, 0x0, 0x5db, 0x5bc, 0x0, 0x5db, 0x5bf, 0x0, 0x5dc, 0x5bc, 0x0, 0x5de, 0x5bc, 0x0, 0x5e0, 0x5bc, 0x0, 0x5e1, 0x5bc, 0x0, 0x5e3, 0x5bc, 0x0, 0x5e4, 0x5bc, 0x0, 0x5e4, 0x5bf, 0x0, 0x5e6, 0x5bc, 0x0, 0x5e7, 0x5bc, 0x0, 0x5e8, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x5c1, 0x0, 0x5e9, 0x5bc, 0x5c2, 0x0, 0x5e9, 0x5c1, 0x0, 0x5e9, 0x5c2, 0x0, 0x5ea, 0x5bc, 0x0, 0x5f2, 0x5b7, 0x0, 0x627, 0x653, 0x0, 0x627, 0x654, 0x0, 0x627, 0x655, 0x0, 0x648, 0x654, 0x0, 0x64a, 0x654, 0x0, 0x6c1, 0x654, 0x0, 0x6d2, 0x654, 0x0, 0x6d5, 0x654, 0x0, 0x915, 0x93c, 0x0, 0x916, 0x93c, 0x0, 0x917, 0x93c, 0x0, 0x91c, 0x93c, 0x0, 0x921, 0x93c, 0x0, 0x922, 0x93c, 0x0, 0x928, 0x93c, 0x0, 0x92b, 0x93c, 0x0, 0x92f, 0x93c, 0x0, 0x930, 0x93c, 0x0, 0x933, 0x93c, 0x0, 0x9a1, 0x9bc, 0x0, 0x9a2, 0x9bc, 0x0, 0x9af, 0x9bc, 0x0, 0x9c7, 0x9be, 0x0, 0x9c7, 0x9d7, 0x0, 0xa16, 0xa3c, 0x0, 0xa17, 0xa3c, 0x0, 0xa1c, 0xa3c, 0x0, 0xa2b, 0xa3c, 0x0, 0xa32, 0xa3c, 0x0, 0xa38, 0xa3c, 0x0, 0xb21, 0xb3c, 0x0, 0xb22, 0xb3c, 0x0, 0xb47, 0xb3e, 0x0, 0xb47, 0xb56, 0x0, 0xb47, 0xb57, 0x0, 0xb92, 0xbd7, 0x0, 0xbc6, 0xbbe, 0x0, 0xbc6, 0xbd7, 0x0, 0xbc7, 0xbbe, 0x0, 0xc46, 0xc56, 0x0, 0xcbf, 0xcd5, 0x0, 0xcc6, 0xcc2, 0x0, 0xcc6, 0xcc2, 0xcd5, 0x0, 0xcc6, 0xcd5, 0x0, 0xcc6, 0xcd6, 0x0, 0xd46, 0xd3e, 0x0, 0xd46, 0xd57, 0x0, 0xd47, 0xd3e, 0x0, 0xdd9, 0xdca, 0x0, 0xdd9, 0xdcf, 0x0, 0xdd9, 0xdcf, 0xdca, 0x0, 0xdd9, 0xddf, 0x0, 0xf40, 0xfb5, 0x0, 0xf42, 0xfb7, 0x0, 0xf4c, 0xfb7, 0x0, 0xf51, 0xfb7, 0x0, 0xf56, 0xfb7, 0x0, 0xf5b, 0xfb7, 0x0, 0xf71, 0xf72, 0x0, 0xf71, 0xf74, 0x0, 0xf71, 0xf80, 0x0, 0xf90, 0xfb5, 0x0, 0xf92, 0xfb7, 0x0, 0xf9c, 0xfb7, 0x0, 0xfa1, 0xfb7, 0x0, 0xfa6, 0xfb7, 0x0, 0xfab, 0xfb7, 0x0, 0xfb2, 0xf80, 0x0, 0xfb3, 0xf80, 0x0, 0x1025, 0x102e, 0x0, 0x1b05, 0x1b35, 0x0, 0x1b07, 0x1b35, 0x0, 0x1b09, 0x1b35, 0x0, 0x1b0b, 0x1b35, 0x0, 0x1b0d, 0x1b35, 0x0, 0x1b11, 0x1b35, 0x0, 0x1b3a, 0x1b35, 0x0, 0x1b3c, 0x1b35, 0x0, 0x1b3e, 0x1b35, 0x0, 0x1b3f, 0x1b35, 0x0, 0x1b42, 0x1b35, 0x0, 0x1fbf, 0x300, 0x0, 0x1fbf, 0x301, 0x0, 0x1fbf, 0x342, 0x0, 0x1ffe, 0x300, 0x0, 0x1ffe, 0x301, 0x0, 0x1ffe, 0x342, 0x0, 0x2002, 0x0, 0x2003, 0x0, 0x2190, 0x338, 0x0, 0x2192, 0x338, 0x0, 0x2194, 0x338, 0x0, 0x21d0, 0x338, 0x0, 0x21d2, 0x338, 0x0, 0x21d4, 0x338, 0x0, 0x2203, 0x338, 0x0, 0x2208, 0x338, 0x0, 0x220b, 0x338, 0x0, 0x2223, 0x338, 0x0, 0x2225, 0x338, 0x0, 0x223c, 0x338, 0x0, 0x2243, 0x338, 0x0, 0x2245, 0x338, 0x0, 0x2248, 0x338, 0x0, 0x224d, 0x338, 0x0, 0x2261, 0x338, 0x0, 0x2264, 0x338, 0x0, 0x2265, 0x338, 0x0, 0x2272, 0x338, 0x0, 0x2273, 0x338, 0x0, 0x2276, 0x338, 0x0, 0x2277, 0x338, 0x0, 0x227a, 0x338, 0x0, 0x227b, 0x338, 0x0, 0x227c, 0x338, 0x0, 0x227d, 0x338, 0x0, 0x2282, 0x338, 0x0, 0x2283, 0x338, 0x0, 0x2286, 0x338, 0x0, 0x2287, 0x338, 0x0, 0x2291, 0x338, 0x0, 0x2292, 0x338, 0x0, 0x22a2, 0x338, 0x0, 0x22a8, 0x338, 0x0, 0x22a9, 0x338, 0x0, 0x22ab, 0x338, 0x0, 0x22b2, 0x338, 0x0, 0x22b3, 0x338, 0x0, 0x22b4, 0x338, 0x0, 0x22b5, 0x338, 0x0, 0x2add, 0x338, 0x0, 0x3008, 0x0, 0x3009, 0x0, 0x3046, 0x3099, 0x0, 0x304b, 0x3099, 0x0, 0x304d, 0x3099, 0x0, 0x304f, 0x3099, 0x0, 0x3051, 0x3099, 0x0, 0x3053, 0x3099, 0x0, 0x3055, 0x3099, 0x0, 0x3057, 0x3099, 0x0, 0x3059, 0x3099, 0x0, 0x305b, 0x3099, 0x0, 0x305d, 0x3099, 0x0, 0x305f, 0x3099, 0x0, 0x3061, 0x3099, 0x0, 0x3064, 0x3099, 0x0, 0x3066, 0x3099, 0x0, 0x3068, 0x3099, 0x0, 0x306f, 0x3099, 0x0, 0x306f, 0x309a, 0x0, 0x3072, 0x3099, 0x0, 0x3072, 0x309a, 0x0, 0x3075, 0x3099, 0x0, 0x3075, 0x309a, 0x0, 0x3078, 0x3099, 0x0, 0x3078, 0x309a, 0x0, 0x307b, 0x3099, 0x0, 0x307b, 0x309a, 0x0, 0x309d, 0x3099, 0x0, 0x30a6, 0x3099, 0x0, 0x30ab, 0x3099, 0x0, 0x30ad, 0x3099, 0x0, 0x30af, 0x3099, 0x0, 0x30b1, 0x3099, 0x0, 0x30b3, 0x3099, 0x0, 0x30b5, 0x3099, 0x0, 0x30b7, 0x3099, 0x0, 0x30b9, 0x3099, 0x0, 0x30bb, 0x3099, 0x0, 0x30bd, 0x3099, 0x0, 0x30bf, 0x3099, 0x0, 0x30c1, 0x3099, 0x0, 0x30c4, 0x3099, 0x0, 0x30c6, 0x3099, 0x0, 0x30c8, 0x3099, 0x0, 0x30cf, 0x3099, 0x0, 0x30cf, 0x309a, 0x0, 0x30d2, 0x3099, 0x0, 0x30d2, 0x309a, 0x0, 0x30d5, 0x3099, 0x0, 0x30d5, 0x309a, 0x0, 0x30d8, 0x3099, 0x0, 0x30d8, 0x309a, 0x0, 0x30db, 0x3099, 0x0, 0x30db, 0x309a, 0x0, 0x30ef, 0x3099, 0x0, 0x30f0, 0x3099, 0x0, 0x30f1, 0x3099, 0x0, 0x30f2, 0x3099, 0x0, 0x30fd, 0x3099, 0x0, 0x349e, 0x0, 0x34b9, 0x0, 0x34bb, 0x0, 0x34df, 0x0, 0x3515, 0x0, 0x36ee, 0x0, 0x36fc, 0x0, 0x3781, 0x0, 0x382f, 0x0, 0x3862, 0x0, 0x387c, 0x0, 0x38c7, 0x0, 0x38e3, 0x0, 0x391c, 0x0, 0x393a, 0x0, 0x3a2e, 0x0, 0x3a6c, 0x0, 0x3ae4, 0x0, 0x3b08, 0x0, 0x3b19, 0x0, 0x3b49, 0x0, 0x3b9d, 0x0, 0x3c18, 0x0, 0x3c4e, 0x0, 0x3d33, 0x0, 0x3d96, 0x0, 0x3eac, 0x0, 0x3eb8, 0x0, 0x3f1b, 0x0, 0x3ffc, 0x0, 0x4008, 0x0, 0x4018, 0x0, 0x4039, 0x0, 0x4046, 0x0, 0x4096, 0x0, 0x40e3, 0x0, 0x412f, 0x0, 0x4202, 0x0, 0x4227, 0x0, 0x42a0, 0x0, 0x4301, 0x0, 0x4334, 0x0, 0x4359, 0x0, 0x43d5, 0x0, 0x43d9, 0x0, 0x440b, 0x0, 0x446b, 0x0, 0x452b, 0x0, 0x455d, 0x0, 0x4561, 0x0, 0x456b, 0x0, 0x45d7, 0x0, 0x45f9, 0x0, 0x4635, 0x0, 0x46be, 0x0, 0x46c7, 0x0, 0x4995, 0x0, 0x49e6, 0x0, 0x4a6e, 0x0, 0x4a76, 0x0, 0x4ab2, 0x0, 0x4b33, 0x0, 0x4bce, 0x0, 0x4cce, 0x0, 0x4ced, 0x0, 0x4cf8, 0x0, 0x4d56, 0x0, 0x4e0d, 0x0, 0x4e26, 0x0, 0x4e32, 0x0, 0x4e38, 0x0, 0x4e39, 0x0, 0x4e3d, 0x0, 0x4e41, 0x0, 0x4e82, 0x0, 0x4e86, 0x0, 0x4eae, 0x0, 0x4ec0, 0x0, 0x4ecc, 0x0, 0x4ee4, 0x0, 0x4f60, 0x0, 0x4f80, 0x0, 0x4f86, 0x0, 0x4f8b, 0x0, 0x4fae, 0x0, 0x4fbb, 0x0, 0x4fbf, 0x0, 0x5002, 0x0, 0x502b, 0x0, 0x507a, 0x0, 0x5099, 0x0, 0x50cf, 0x0, 0x50da, 0x0, 0x50e7, 0x0, 0x5140, 0x0, 0x5145, 0x0, 0x514d, 0x0, 0x5154, 0x0, 0x5164, 0x0, 0x5167, 0x0, 0x5168, 0x0, 0x5169, 0x0, 0x516d, 0x0, 0x5177, 0x0, 0x5180, 0x0, 0x518d, 0x0, 0x5192, 0x0, 0x5195, 0x0, 0x5197, 0x0, 0x51a4, 0x0, 0x51ac, 0x0, 0x51b5, 0x0, 0x51b7, 0x0, 0x51c9, 0x0, 0x51cc, 0x0, 0x51dc, 0x0, 0x51de, 0x0, 0x51f5, 0x0, 0x5203, 0x0, 0x5207, 0x0, 0x5217, 0x0, 0x5229, 0x0, 0x523a, 0x0, 0x523b, 0x0, 0x5246, 0x0, 0x5272, 0x0, 0x5277, 0x0, 0x5289, 0x0, 0x529b, 0x0, 0x52a3, 0x0, 0x52b3, 0x0, 0x52c7, 0x0, 0x52c9, 0x0, 0x52d2, 0x0, 0x52de, 0x0, 0x52e4, 0x0, 0x52f5, 0x0, 0x52fa, 0x0, 0x5305, 0x0, 0x5306, 0x0, 0x5317, 0x0, 0x533f, 0x0, 0x5349, 0x0, 0x5351, 0x0, 0x535a, 0x0, 0x5373, 0x0, 0x5375, 0x0, 0x537d, 0x0, 0x537f, 0x0, 0x53c3, 0x0, 0x53ca, 0x0, 0x53df, 0x0, 0x53e5, 0x0, 0x53eb, 0x0, 0x53f1, 0x0, 0x5406, 0x0, 0x540f, 0x0, 0x541d, 0x0, 0x5438, 0x0, 0x5442, 0x0, 0x5448, 0x0, 0x5468, 0x0, 0x549e, 0x0, 0x54a2, 0x0, 0x54bd, 0x0, 0x54f6, 0x0, 0x5510, 0x0, 0x5553, 0x0, 0x5555, 0x0, 0x5563, 0x0, 0x5584, 0x0, 0x5587, 0x0, 0x5599, 0x0, 0x559d, 0x0, 0x55ab, 0x0, 0x55b3, 0x0, 0x55c0, 0x0, 0x55c2, 0x0, 0x55e2, 0x0, 0x5606, 0x0, 0x5651, 0x0, 0x5668, 0x0, 0x5674, 0x0, 0x56f9, 0x0, 0x5716, 0x0, 0x5717, 0x0, 0x578b, 0x0, 0x57ce, 0x0, 0x57f4, 0x0, 0x580d, 0x0, 0x5831, 0x0, 0x5832, 0x0, 0x5840, 0x0, 0x585a, 0x0, 0x585e, 0x0, 0x58a8, 0x0, 0x58ac, 0x0, 0x58b3, 0x0, 0x58d8, 0x0, 0x58df, 0x0, 0x58ee, 0x0, 0x58f2, 0x0, 0x58f7, 0x0, 0x5906, 0x0, 0x591a, 0x0, 0x5922, 0x0, 0x5944, 0x0, 0x5948, 0x0, 0x5951, 0x0, 0x5954, 0x0, 0x5962, 0x0, 0x5973, 0x0, 0x59d8, 0x0, 0x59ec, 0x0, 0x5a1b, 0x0, 0x5a27, 0x0, 0x5a62, 0x0, 0x5a66, 0x0, 0x5ab5, 0x0, 0x5b08, 0x0, 0x5b28, 0x0, 0x5b3e, 0x0, 0x5b85, 0x0, 0x5bc3, 0x0, 0x5bd8, 0x0, 0x5be7, 0x0, 0x5bee, 0x0, 0x5bf3, 0x0, 0x5bff, 0x0, 0x5c06, 0x0, 0x5c22, 0x0, 0x5c3f, 0x0, 0x5c60, 0x0, 0x5c62, 0x0, 0x5c64, 0x0, 0x5c65, 0x0, 0x5c6e, 0x0, 0x5c8d, 0x0, 0x5cc0, 0x0, 0x5d19, 0x0, 0x5d43, 0x0, 0x5d50, 0x0, 0x5d6b, 0x0, 0x5d6e, 0x0, 0x5d7c, 0x0, 0x5db2, 0x0, 0x5dba, 0x0, 0x5de1, 0x0, 0x5de2, 0x0, 0x5dfd, 0x0, 0x5e28, 0x0, 0x5e3d, 0x0, 0x5e69, 0x0, 0x5e74, 0x0, 0x5ea6, 0x0, 0x5eb0, 0x0, 0x5eb3, 0x0, 0x5eb6, 0x0, 0x5ec9, 0x0, 0x5eca, 0x0, 0x5ed2, 0x0, 0x5ed3, 0x0, 0x5ed9, 0x0, 0x5eec, 0x0, 0x5efe, 0x0, 0x5f04, 0x0, 0x5f22, 0x0, 0x5f53, 0x0, 0x5f62, 0x0, 0x5f69, 0x0, 0x5f6b, 0x0, 0x5f8b, 0x0, 0x5f9a, 0x0, 0x5fa9, 0x0, 0x5fad, 0x0, 0x5fcd, 0x0, 0x5fd7, 0x0, 0x5ff5, 0x0, 0x5ff9, 0x0, 0x6012, 0x0, 0x601c, 0x0, 0x6075, 0x0, 0x6081, 0x0, 0x6094, 0x0, 0x60c7, 0x0, 0x60d8, 0x0, 0x60e1, 0x0, 0x6108, 0x0, 0x6144, 0x0, 0x6148, 0x0, 0x614c, 0x0, 0x614e, 0x0, 0x6160, 0x0, 0x6168, 0x0, 0x617a, 0x0, 0x618e, 0x0, 0x6190, 0x0, 0x61a4, 0x0, 0x61af, 0x0, 0x61b2, 0x0, 0x61de, 0x0, 0x61f2, 0x0, 0x61f6, 0x0, 0x6200, 0x0, 0x6210, 0x0, 0x621b, 0x0, 0x622e, 0x0, 0x6234, 0x0, 0x625d, 0x0, 0x62b1, 0x0, 0x62c9, 0x0, 0x62cf, 0x0, 0x62d3, 0x0, 0x62d4, 0x0, 0x62fc, 0x0, 0x62fe, 0x0, 0x633d, 0x0, 0x6350, 0x0, 0x6368, 0x0, 0x637b, 0x0, 0x6383, 0x0, 0x63a0, 0x0, 0x63a9, 0x0, 0x63c4, 0x0, 0x63c5, 0x0, 0x63e4, 0x0, 0x641c, 0x0, 0x6422, 0x0, 0x6452, 0x0, 0x6469, 0x0, 0x6477, 0x0, 0x647e, 0x0, 0x649a, 0x0, 0x649d, 0x0, 0x64c4, 0x0, 0x654f, 0x0, 0x6556, 0x0, 0x656c, 0x0, 0x6578, 0x0, 0x6599, 0x0, 0x65c5, 0x0, 0x65e2, 0x0, 0x65e3, 0x0, 0x6613, 0x0, 0x6649, 0x0, 0x6674, 0x0, 0x6688, 0x0, 0x6691, 0x0, 0x669c, 0x0, 0x66b4, 0x0, 0x66c6, 0x0, 0x66f4, 0x0, 0x66f8, 0x0, 0x6700, 0x0, 0x6717, 0x0, 0x671b, 0x0, 0x6721, 0x0, 0x674e, 0x0, 0x6753, 0x0, 0x6756, 0x0, 0x675e, 0x0, 0x677b, 0x0, 0x6785, 0x0, 0x6797, 0x0, 0x67f3, 0x0, 0x67fa, 0x0, 0x6817, 0x0, 0x681f, 0x0, 0x6852, 0x0, 0x6881, 0x0, 0x6885, 0x0, 0x688e, 0x0, 0x68a8, 0x0, 0x6914, 0x0, 0x6942, 0x0, 0x69a3, 0x0, 0x69ea, 0x0, 0x6a02, 0x0, 0x6a13, 0x0, 0x6aa8, 0x0, 0x6ad3, 0x0, 0x6adb, 0x0, 0x6b04, 0x0, 0x6b21, 0x0, 0x6b54, 0x0, 0x6b72, 0x0, 0x6b77, 0x0, 0x6b79, 0x0, 0x6b9f, 0x0, 0x6bae, 0x0, 0x6bba, 0x0, 0x6bbb, 0x0, 0x6c4e, 0x0, 0x6c67, 0x0, 0x6c88, 0x0, 0x6cbf, 0x0, 0x6ccc, 0x0, 0x6ccd, 0x0, 0x6ce5, 0x0, 0x6d16, 0x0, 0x6d1b, 0x0, 0x6d1e, 0x0, 0x6d34, 0x0, 0x6d3e, 0x0, 0x6d41, 0x0, 0x6d69, 0x0, 0x6d6a, 0x0, 0x6d77, 0x0, 0x6d78, 0x0, 0x6d85, 0x0, 0x6dcb, 0x0, 0x6dda, 0x0, 0x6dea, 0x0, 0x6df9, 0x0, 0x6e1a, 0x0, 0x6e2f, 0x0, 0x6e6e, 0x0, 0x6e9c, 0x0, 0x6eba, 0x0, 0x6ec7, 0x0, 0x6ecb, 0x0, 0x6ed1, 0x0, 0x6edb, 0x0, 0x6f0f, 0x0, 0x6f22, 0x0, 0x6f23, 0x0, 0x6f6e, 0x0, 0x6fc6, 0x0, 0x6feb, 0x0, 0x6ffe, 0x0, 0x701b, 0x0, 0x701e, 0x0, 0x7039, 0x0, 0x704a, 0x0, 0x7070, 0x0, 0x7077, 0x0, 0x707d, 0x0, 0x7099, 0x0, 0x70ad, 0x0, 0x70c8, 0x0, 0x70d9, 0x0, 0x7145, 0x0, 0x7149, 0x0, 0x716e, 0x0, 0x719c, 0x0, 0x71ce, 0x0, 0x71d0, 0x0, 0x7210, 0x0, 0x721b, 0x0, 0x7228, 0x0, 0x722b, 0x0, 0x7235, 0x0, 0x7250, 0x0, 0x7262, 0x0, 0x7280, 0x0, 0x7295, 0x0, 0x72af, 0x0, 0x72c0, 0x0, 0x72fc, 0x0, 0x732a, 0x0, 0x7375, 0x0, 0x737a, 0x0, 0x7387, 0x0, 0x738b, 0x0, 0x73a5, 0x0, 0x73b2, 0x0, 0x73de, 0x0, 0x7406, 0x0, 0x7409, 0x0, 0x7422, 0x0, 0x7447, 0x0, 0x745c, 0x0, 0x7469, 0x0, 0x7471, 0x0, 0x7485, 0x0, 0x7489, 0x0, 0x7498, 0x0, 0x74ca, 0x0, 0x7506, 0x0, 0x7524, 0x0, 0x753b, 0x0, 0x753e, 0x0, 0x7559, 0x0, 0x7565, 0x0, 0x7570, 0x0, 0x75e2, 0x0, 0x7610, 0x0, 0x761d, 0x0, 0x761f, 0x0, 0x7642, 0x0, 0x7669, 0x0, 0x76ca, 0x0, 0x76db, 0x0, 0x76e7, 0x0, 0x76f4, 0x0, 0x7701, 0x0, 0x771e, 0x0, 0x771f, 0x0, 0x7740, 0x0, 0x774a, 0x0, 0x778b, 0x0, 0x77a7, 0x0, 0x784e, 0x0, 0x786b, 0x0, 0x788c, 0x0, 0x7891, 0x0, 0x78ca, 0x0, 0x78cc, 0x0, 0x78fb, 0x0, 0x792a, 0x0, 0x793c, 0x0, 0x793e, 0x0, 0x7948, 0x0, 0x7949, 0x0, 0x7950, 0x0, 0x7956, 0x0, 0x795d, 0x0, 0x795e, 0x0, 0x7965, 0x0, 0x797f, 0x0, 0x798d, 0x0, 0x798e, 0x0, 0x798f, 0x0, 0x79ae, 0x0, 0x79ca, 0x0, 0x79eb, 0x0, 0x7a1c, 0x0, 0x7a40, 0x0, 0x7a4a, 0x0, 0x7a4f, 0x0, 0x7a81, 0x0, 0x7ab1, 0x0, 0x7acb, 0x0, 0x7aee, 0x0, 0x7b20, 0x0, 0x7bc0, 0x0, 0x7bc6, 0x0, 0x7bc9, 0x0, 0x7c3e, 0x0, 0x7c60, 0x0, 0x7c7b, 0x0, 0x7c92, 0x0, 0x7cbe, 0x0, 0x7cd2, 0x0, 0x7cd6, 0x0, 0x7ce3, 0x0, 0x7ce7, 0x0, 0x7ce8, 0x0, 0x7d00, 0x0, 0x7d10, 0x0, 0x7d22, 0x0, 0x7d2f, 0x0, 0x7d5b, 0x0, 0x7d63, 0x0, 0x7da0, 0x0, 0x7dbe, 0x0, 0x7dc7, 0x0, 0x7df4, 0x0, 0x7e02, 0x0, 0x7e09, 0x0, 0x7e37, 0x0, 0x7e41, 0x0, 0x7e45, 0x0, 0x7f3e, 0x0, 0x7f72, 0x0, 0x7f79, 0x0, 0x7f7a, 0x0, 0x7f85, 0x0, 0x7f95, 0x0, 0x7f9a, 0x0, 0x7fbd, 0x0, 0x7ffa, 0x0, 0x8001, 0x0, 0x8005, 0x0, 0x8046, 0x0, 0x8060, 0x0, 0x806f, 0x0, 0x8070, 0x0, 0x807e, 0x0, 0x808b, 0x0, 0x80ad, 0x0, 0x80b2, 0x0, 0x8103, 0x0, 0x813e, 0x0, 0x81d8, 0x0, 0x81e8, 0x0, 0x81ed, 0x0, 0x8201, 0x0, 0x8204, 0x0, 0x8218, 0x0, 0x826f, 0x0, 0x8279, 0x0, 0x828b, 0x0, 0x8291, 0x0, 0x829d, 0x0, 0x82b1, 0x0, 0x82b3, 0x0, 0x82bd, 0x0, 0x82e5, 0x0, 0x82e6, 0x0, 0x831d, 0x0, 0x8323, 0x0, 0x8336, 0x0, 0x8352, 0x0, 0x8353, 0x0, 0x8363, 0x0, 0x83ad, 0x0, 0x83bd, 0x0, 0x83c9, 0x0, 0x83ca, 0x0, 0x83cc, 0x0, 0x83dc, 0x0, 0x83e7, 0x0, 0x83ef, 0x0, 0x83f1, 0x0, 0x843d, 0x0, 0x8449, 0x0, 0x8457, 0x0, 0x84ee, 0x0, 0x84f1, 0x0, 0x84f3, 0x0, 0x84fc, 0x0, 0x8516, 0x0, 0x8564, 0x0, 0x85cd, 0x0, 0x85fa, 0x0, 0x8606, 0x0, 0x8612, 0x0, 0x862d, 0x0, 0x863f, 0x0, 0x8650, 0x0, 0x865c, 0x0, 0x8667, 0x0, 0x8669, 0x0, 0x8688, 0x0, 0x86a9, 0x0, 0x86e2, 0x0, 0x870e, 0x0, 0x8728, 0x0, 0x876b, 0x0, 0x8779, 0x0, 0x8786, 0x0, 0x87ba, 0x0, 0x87e1, 0x0, 0x8801, 0x0, 0x881f, 0x0, 0x884c, 0x0, 0x8860, 0x0, 0x8863, 0x0, 0x88c2, 0x0, 0x88cf, 0x0, 0x88d7, 0x0, 0x88de, 0x0, 0x88e1, 0x0, 0x88f8, 0x0, 0x88fa, 0x0, 0x8910, 0x0, 0x8941, 0x0, 0x8964, 0x0, 0x8986, 0x0, 0x898b, 0x0, 0x8996, 0x0, 0x8aa0, 0x0, 0x8aaa, 0x0, 0x8abf, 0x0, 0x8acb, 0x0, 0x8ad2, 0x0, 0x8ad6, 0x0, 0x8aed, 0x0, 0x8af8, 0x0, 0x8afe, 0x0, 0x8b01, 0x0, 0x8b39, 0x0, 0x8b58, 0x0, 0x8b80, 0x0, 0x8b8a, 0x0, 0x8c48, 0x0, 0x8c55, 0x0, 0x8cab, 0x0, 0x8cc1, 0x0, 0x8cc2, 0x0, 0x8cc8, 0x0, 0x8cd3, 0x0, 0x8d08, 0x0, 0x8d1b, 0x0, 0x8d77, 0x0, 0x8dbc, 0x0, 0x8dcb, 0x0, 0x8def, 0x0, 0x8df0, 0x0, 0x8eca, 0x0, 0x8ed4, 0x0, 0x8f26, 0x0, 0x8f2a, 0x0, 0x8f38, 0x0, 0x8f3b, 0x0, 0x8f62, 0x0, 0x8f9e, 0x0, 0x8fb0, 0x0, 0x8fb6, 0x0, 0x9023, 0x0, 0x9038, 0x0, 0x9072, 0x0, 0x907c, 0x0, 0x908f, 0x0, 0x9094, 0x0, 0x90ce, 0x0, 0x90de, 0x0, 0x90f1, 0x0, 0x90fd, 0x0, 0x9111, 0x0, 0x911b, 0x0, 0x916a, 0x0, 0x9199, 0x0, 0x91b4, 0x0, 0x91cc, 0x0, 0x91cf, 0x0, 0x91d1, 0x0, 0x9234, 0x0, 0x9238, 0x0, 0x9276, 0x0, 0x927c, 0x0, 0x92d7, 0x0, 0x92d8, 0x0, 0x9304, 0x0, 0x934a, 0x0, 0x93f9, 0x0, 0x9415, 0x0, 0x958b, 0x0, 0x95ad, 0x0, 0x95b7, 0x0, 0x962e, 0x0, 0x964b, 0x0, 0x964d, 0x0, 0x9675, 0x0, 0x9678, 0x0, 0x967c, 0x0, 0x9686, 0x0, 0x96a3, 0x0, 0x96b7, 0x0, 0x96b8, 0x0, 0x96c3, 0x0, 0x96e2, 0x0, 0x96e3, 0x0, 0x96f6, 0x0, 0x96f7, 0x0, 0x9723, 0x0, 0x9732, 0x0, 0x9748, 0x0, 0x9756, 0x0, 0x97db, 0x0, 0x97e0, 0x0, 0x97ff, 0x0, 0x980b, 0x0, 0x9818, 0x0, 0x9829, 0x0, 0x983b, 0x0, 0x985e, 0x0, 0x98e2, 0x0, 0x98ef, 0x0, 0x98fc, 0x0, 0x9928, 0x0, 0x9929, 0x0, 0x99a7, 0x0, 0x99c2, 0x0, 0x99f1, 0x0, 0x99fe, 0x0, 0x9a6a, 0x0, 0x9b12, 0x0, 0x9b6f, 0x0, 0x9c40, 0x0, 0x9c57, 0x0, 0x9cfd, 0x0, 0x9d67, 0x0, 0x9db4, 0x0, 0x9dfa, 0x0, 0x9e1e, 0x0, 0x9e7f, 0x0, 0x9e97, 0x0, 0x9e9f, 0x0, 0x9ebb, 0x0, 0x9ece, 0x0, 0x9ef9, 0x0, 0x9efe, 0x0, 0x9f05, 0x0, 0x9f0f, 0x0, 0x9f16, 0x0, 0x9f3b, 0x0, 0x9f43, 0x0, 0x9f8d, 0x0, 0x9f8e, 0x0, 0x9f9c, 0x0, 0x11099, 0x110ba, 0x0, 0x1109b, 0x110ba, 0x0, 0x110a5, 0x110ba, 0x0, 0x11131, 0x11127, 0x0, 0x11132, 0x11127, 0x0, 0x11347, 0x1133e, 0x0, 0x11347, 0x11357, 0x0, 0x114b9, 0x114b0, 0x0, 0x114b9, 0x114ba, 0x0, 0x114b9, 0x114bd, 0x0, 0x115b8, 0x115af, 0x0, 0x115b9, 0x115af, 0x0, 0x11935, 0x11930, 0x0, 0x1d157, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x1d16e, 0x0, 0x1d158, 0x1d165, 0x1d16f, 0x0, 0x1d158, 0x1d165, 0x1d170, 0x0, 0x1d158, 0x1d165, 0x1d171, 0x0, 0x1d158, 0x1d165, 0x1d172, 0x0, 0x1d1b9, 0x1d165, 0x0, 0x1d1b9, 0x1d165, 0x1d16e, 0x0, 0x1d1b9, 0x1d165, 0x1d16f, 0x0, 0x1d1ba, 0x1d165, 0x0, 0x1d1ba, 0x1d165, 0x1d16e, 0x0, 0x1d1ba, 0x1d165, 0x1d16f, 0x0, 0x20122, 0x0, 0x2051c, 0x0, 0x20525, 0x0, 0x2054b, 0x0, 0x2063a, 0x0, 0x20804, 0x0, 0x208de, 0x0, 0x20a2c, 0x0, 0x20b63, 0x0, 0x214e4, 0x0, 0x216a8, 0x0, 0x216ea, 0x0, 0x219c8, 0x0, 0x21b18, 0x0, 0x21d0b, 0x0, 0x21de4, 0x0, 0x21de6, 0x0, 0x22183, 0x0, 0x2219f, 0x0, 0x22331, 0x0, 0x226d4, 0x0, 0x22844, 0x0, 0x2284a, 0x0, 0x22b0c, 0x0, 0x22bf1, 0x0, 0x2300a, 0x0, 0x232b8, 0x0, 0x2335f, 0x0, 0x23393, 0x0, 0x2339c, 0x0, 0x233c3, 0x0, 0x233d5, 0x0, 0x2346d, 0x0, 0x236a3, 0x0, 0x238a7, 0x0, 0x23a8d, 0x0, 0x23afa, 0x0, 0x23cbc, 0x0, 0x23d1e, 0x0, 0x23ed1, 0x0, 0x23f5e, 0x0, 0x23f8e, 0x0, 0x24263, 0x0, 0x242ee, 0x0, 0x243ab, 0x0, 0x24608, 0x0, 0x24735, 0x0, 0x24814, 0x0, 0x24c36, 0x0, 0x24c92, 0x0, 0x24fa1, 0x0, 0x24fb8, 0x0, 0x25044, 0x0, 0x250f2, 0x0, 0x250f3, 0x0, 0x25119, 0x0, 0x25133, 0x0, 0x25249, 0x0, 0x2541d, 0x0, 0x25626, 0x0, 0x2569a, 0x0, 0x256c5, 0x0, 0x2597c, 0x0, 0x25aa7, 0x0, 0x25bab, 0x0, 0x25c80, 0x0, 0x25cd0, 0x0, 0x25f86, 0x0, 0x261da, 0x0, 0x26228, 0x0, 0x26247, 0x0, 0x262d9, 0x0, 0x2633e, 0x0, 0x264da, 0x0, 0x26523, 0x0, 0x265a8, 0x0, 0x267a7, 0x0, 0x267b5, 0x0, 0x26b3c, 0x0, 0x26c36, 0x0, 0x26cd5, 0x0, 0x26d6b, 0x0, 0x26f2c, 0x0, 0x26fb1, 0x0, 0x270d2, 0x0, 0x273ca, 0x0, 0x27667, 0x0, 0x278ae, 0x0, 0x27966, 0x0, 0x27ca8, 0x0, 0x27ed3, 0x0, 0x27f2f, 0x0, 0x285d2, 0x0, 0x285ed, 0x0, 0x2872e, 0x0, 0x28bfa, 0x0, 0x28d77, 0x0, 0x29145, 0x0, 0x291df, 0x0, 0x2921a, 0x0, 0x2940a, 0x0, 0x29496, 0x0, 0x295b6, 0x0, 0x29b30, 0x0, 0x2a0ce, 0x0, 0x2a105, 0x0, 0x2a20e, 0x0, 0x2a291, 0x0, 0x2a392, 0x0, 0x2a600, 0x0]; return t; } -_IDCA decompCompatTable() @safe pure nothrow { static _IDCA t = [ 0x0, 0x20, 0x0, 0x20, 0x301, 0x0, 0x20, 0x303, 0x0, 0x20, 0x304, 0x0, 0x20, 0x305, 0x0, 0x20, 0x306, 0x0, 0x20, 0x307, 0x0, 0x20, 0x308, 0x0, 0x20, 0x308, 0x300, 0x0, 0x20, 0x308, 0x301, 0x0, 0x20, 0x308, 0x342, 0x0, 0x20, 0x30a, 0x0, 0x20, 0x30b, 0x0, 0x20, 0x313, 0x0, 0x20, 0x313, 0x300, 0x0, 0x20, 0x313, 0x301, 0x0, 0x20, 0x313, 0x342, 0x0, 0x20, 0x314, 0x0, 0x20, 0x314, 0x300, 0x0, 0x20, 0x314, 0x301, 0x0, 0x20, 0x314, 0x342, 0x0, 0x20, 0x327, 0x0, 0x20, 0x328, 0x0, 0x20, 0x333, 0x0, 0x20, 0x342, 0x0, 0x20, 0x345, 0x0, 0x20, 0x64b, 0x0, 0x20, 0x64c, 0x0, 0x20, 0x64c, 0x651, 0x0, 0x20, 0x64d, 0x0, 0x20, 0x64d, 0x651, 0x0, 0x20, 0x64e, 0x0, 0x20, 0x64e, 0x651, 0x0, 0x20, 0x64f, 0x0, 0x20, 0x64f, 0x651, 0x0, 0x20, 0x650, 0x0, 0x20, 0x650, 0x651, 0x0, 0x20, 0x651, 0x0, 0x20, 0x651, 0x670, 0x0, 0x20, 0x652, 0x0, 0x20, 0x3099, 0x0, 0x20, 0x309a, 0x0, 0x21, 0x0, 0x21, 0x21, 0x0, 0x21, 0x3f, 0x0, 0x22, 0x0, 0x23, 0x0, 0x24, 0x0, 0x25, 0x0, 0x26, 0x0, 0x27, 0x0, 0x28, 0x0, 0x28, 0x31, 0x29, 0x0, 0x28, 0x31, 0x30, 0x29, 0x0, 0x28, 0x31, 0x31, 0x29, 0x0, 0x28, 0x31, 0x32, 0x29, 0x0, 0x28, 0x31, 0x33, 0x29, 0x0, 0x28, 0x31, 0x34, 0x29, 0x0, 0x28, 0x31, 0x35, 0x29, 0x0, 0x28, 0x31, 0x36, 0x29, 0x0, 0x28, 0x31, 0x37, 0x29, 0x0, 0x28, 0x31, 0x38, 0x29, 0x0, 0x28, 0x31, 0x39, 0x29, 0x0, 0x28, 0x32, 0x29, 0x0, 0x28, 0x32, 0x30, 0x29, 0x0, 0x28, 0x33, 0x29, 0x0, 0x28, 0x34, 0x29, 0x0, 0x28, 0x35, 0x29, 0x0, 0x28, 0x36, 0x29, 0x0, 0x28, 0x37, 0x29, 0x0, 0x28, 0x38, 0x29, 0x0, 0x28, 0x39, 0x29, 0x0, 0x28, 0x41, 0x29, 0x0, 0x28, 0x42, 0x29, 0x0, 0x28, 0x43, 0x29, 0x0, 0x28, 0x44, 0x29, 0x0, 0x28, 0x45, 0x29, 0x0, 0x28, 0x46, 0x29, 0x0, 0x28, 0x47, 0x29, 0x0, 0x28, 0x48, 0x29, 0x0, 0x28, 0x49, 0x29, 0x0, 0x28, 0x4a, 0x29, 0x0, 0x28, 0x4b, 0x29, 0x0, 0x28, 0x4c, 0x29, 0x0, 0x28, 0x4d, 0x29, 0x0, 0x28, 0x4e, 0x29, 0x0, 0x28, 0x4f, 0x29, 0x0, 0x28, 0x50, 0x29, 0x0, 0x28, 0x51, 0x29, 0x0, 0x28, 0x52, 0x29, 0x0, 0x28, 0x53, 0x29, 0x0, 0x28, 0x54, 0x29, 0x0, 0x28, 0x55, 0x29, 0x0, 0x28, 0x56, 0x29, 0x0, 0x28, 0x57, 0x29, 0x0, 0x28, 0x58, 0x29, 0x0, 0x28, 0x59, 0x29, 0x0, 0x28, 0x5a, 0x29, 0x0, 0x28, 0x61, 0x29, 0x0, 0x28, 0x62, 0x29, 0x0, 0x28, 0x63, 0x29, 0x0, 0x28, 0x64, 0x29, 0x0, 0x28, 0x65, 0x29, 0x0, 0x28, 0x66, 0x29, 0x0, 0x28, 0x67, 0x29, 0x0, 0x28, 0x68, 0x29, 0x0, 0x28, 0x69, 0x29, 0x0, 0x28, 0x6a, 0x29, 0x0, 0x28, 0x6b, 0x29, 0x0, 0x28, 0x6c, 0x29, 0x0, 0x28, 0x6d, 0x29, 0x0, 0x28, 0x6e, 0x29, 0x0, 0x28, 0x6f, 0x29, 0x0, 0x28, 0x70, 0x29, 0x0, 0x28, 0x71, 0x29, 0x0, 0x28, 0x72, 0x29, 0x0, 0x28, 0x73, 0x29, 0x0, 0x28, 0x74, 0x29, 0x0, 0x28, 0x75, 0x29, 0x0, 0x28, 0x76, 0x29, 0x0, 0x28, 0x77, 0x29, 0x0, 0x28, 0x78, 0x29, 0x0, 0x28, 0x79, 0x29, 0x0, 0x28, 0x7a, 0x29, 0x0, 0x28, 0x1100, 0x29, 0x0, 0x28, 0x1100, 0x1161, 0x29, 0x0, 0x28, 0x1102, 0x29, 0x0, 0x28, 0x1102, 0x1161, 0x29, 0x0, 0x28, 0x1103, 0x29, 0x0, 0x28, 0x1103, 0x1161, 0x29, 0x0, 0x28, 0x1105, 0x29, 0x0, 0x28, 0x1105, 0x1161, 0x29, 0x0, 0x28, 0x1106, 0x29, 0x0, 0x28, 0x1106, 0x1161, 0x29, 0x0, 0x28, 0x1107, 0x29, 0x0, 0x28, 0x1107, 0x1161, 0x29, 0x0, 0x28, 0x1109, 0x29, 0x0, 0x28, 0x1109, 0x1161, 0x29, 0x0, 0x28, 0x110b, 0x29, 0x0, 0x28, 0x110b, 0x1161, 0x29, 0x0, 0x28, 0x110b, 0x1169, 0x110c, 0x1165, 0x11ab, 0x29, 0x0, 0x28, 0x110b, 0x1169, 0x1112, 0x116e, 0x29, 0x0, 0x28, 0x110c, 0x29, 0x0, 0x28, 0x110c, 0x1161, 0x29, 0x0, 0x28, 0x110c, 0x116e, 0x29, 0x0, 0x28, 0x110e, 0x29, 0x0, 0x28, 0x110e, 0x1161, 0x29, 0x0, 0x28, 0x110f, 0x29, 0x0, 0x28, 0x110f, 0x1161, 0x29, 0x0, 0x28, 0x1110, 0x29, 0x0, 0x28, 0x1110, 0x1161, 0x29, 0x0, 0x28, 0x1111, 0x29, 0x0, 0x28, 0x1111, 0x1161, 0x29, 0x0, 0x28, 0x1112, 0x29, 0x0, 0x28, 0x1112, 0x1161, 0x29, 0x0, 0x28, 0x4e00, 0x29, 0x0, 0x28, 0x4e03, 0x29, 0x0, 0x28, 0x4e09, 0x29, 0x0, 0x28, 0x4e5d, 0x29, 0x0, 0x28, 0x4e8c, 0x29, 0x0, 0x28, 0x4e94, 0x29, 0x0, 0x28, 0x4ee3, 0x29, 0x0, 0x28, 0x4f01, 0x29, 0x0, 0x28, 0x4f11, 0x29, 0x0, 0x28, 0x516b, 0x29, 0x0, 0x28, 0x516d, 0x29, 0x0, 0x28, 0x52b4, 0x29, 0x0, 0x28, 0x5341, 0x29, 0x0, 0x28, 0x5354, 0x29, 0x0, 0x28, 0x540d, 0x29, 0x0, 0x28, 0x547c, 0x29, 0x0, 0x28, 0x56db, 0x29, 0x0, 0x28, 0x571f, 0x29, 0x0, 0x28, 0x5b66, 0x29, 0x0, 0x28, 0x65e5, 0x29, 0x0, 0x28, 0x6708, 0x29, 0x0, 0x28, 0x6709, 0x29, 0x0, 0x28, 0x6728, 0x29, 0x0, 0x28, 0x682a, 0x29, 0x0, 0x28, 0x6c34, 0x29, 0x0, 0x28, 0x706b, 0x29, 0x0, 0x28, 0x7279, 0x29, 0x0, 0x28, 0x76e3, 0x29, 0x0, 0x28, 0x793e, 0x29, 0x0, 0x28, 0x795d, 0x29, 0x0, 0x28, 0x796d, 0x29, 0x0, 0x28, 0x81ea, 0x29, 0x0, 0x28, 0x81f3, 0x29, 0x0, 0x28, 0x8ca1, 0x29, 0x0, 0x28, 0x8cc7, 0x29, 0x0, 0x28, 0x91d1, 0x29, 0x0, 0x29, 0x0, 0x2a, 0x0, 0x2b, 0x0, 0x2c, 0x0, 0x2d, 0x0, 0x2e, 0x0, 0x2e, 0x2e, 0x0, 0x2e, 0x2e, 0x2e, 0x0, 0x2f, 0x0, 0x30, 0x0, 0x30, 0x2c, 0x0, 0x30, 0x2e, 0x0, 0x30, 0x2044, 0x33, 0x0, 0x30, 0x70b9, 0x0, 0x31, 0x0, 0x31, 0x2c, 0x0, 0x31, 0x2e, 0x0, 0x31, 0x30, 0x0, 0x31, 0x30, 0x2e, 0x0, 0x31, 0x30, 0x65e5, 0x0, 0x31, 0x30, 0x6708, 0x0, 0x31, 0x30, 0x70b9, 0x0, 0x31, 0x31, 0x0, 0x31, 0x31, 0x2e, 0x0, 0x31, 0x31, 0x65e5, 0x0, 0x31, 0x31, 0x6708, 0x0, 0x31, 0x31, 0x70b9, 0x0, 0x31, 0x32, 0x0, 0x31, 0x32, 0x2e, 0x0, 0x31, 0x32, 0x65e5, 0x0, 0x31, 0x32, 0x6708, 0x0, 0x31, 0x32, 0x70b9, 0x0, 0x31, 0x33, 0x0, 0x31, 0x33, 0x2e, 0x0, 0x31, 0x33, 0x65e5, 0x0, 0x31, 0x33, 0x70b9, 0x0, 0x31, 0x34, 0x0, 0x31, 0x34, 0x2e, 0x0, 0x31, 0x34, 0x65e5, 0x0, 0x31, 0x34, 0x70b9, 0x0, 0x31, 0x35, 0x0, 0x31, 0x35, 0x2e, 0x0, 0x31, 0x35, 0x65e5, 0x0, 0x31, 0x35, 0x70b9, 0x0, 0x31, 0x36, 0x0, 0x31, 0x36, 0x2e, 0x0, 0x31, 0x36, 0x65e5, 0x0, 0x31, 0x36, 0x70b9, 0x0, 0x31, 0x37, 0x0, 0x31, 0x37, 0x2e, 0x0, 0x31, 0x37, 0x65e5, 0x0, 0x31, 0x37, 0x70b9, 0x0, 0x31, 0x38, 0x0, 0x31, 0x38, 0x2e, 0x0, 0x31, 0x38, 0x65e5, 0x0, 0x31, 0x38, 0x70b9, 0x0, 0x31, 0x39, 0x0, 0x31, 0x39, 0x2e, 0x0, 0x31, 0x39, 0x65e5, 0x0, 0x31, 0x39, 0x70b9, 0x0, 0x31, 0x2044, 0x0, 0x31, 0x2044, 0x31, 0x30, 0x0, 0x31, 0x2044, 0x32, 0x0, 0x31, 0x2044, 0x33, 0x0, 0x31, 0x2044, 0x34, 0x0, 0x31, 0x2044, 0x35, 0x0, 0x31, 0x2044, 0x36, 0x0, 0x31, 0x2044, 0x37, 0x0, 0x31, 0x2044, 0x38, 0x0, 0x31, 0x2044, 0x39, 0x0, 0x31, 0x65e5, 0x0, 0x31, 0x6708, 0x0, 0x31, 0x70b9, 0x0, 0x32, 0x0, 0x32, 0x2c, 0x0, 0x32, 0x2e, 0x0, 0x32, 0x30, 0x0, 0x32, 0x30, 0x2e, 0x0, 0x32, 0x30, 0x65e5, 0x0, 0x32, 0x30, 0x70b9, 0x0, 0x32, 0x31, 0x0, 0x32, 0x31, 0x65e5, 0x0, 0x32, 0x31, 0x70b9, 0x0, 0x32, 0x32, 0x0, 0x32, 0x32, 0x65e5, 0x0, 0x32, 0x32, 0x70b9, 0x0, 0x32, 0x33, 0x0, 0x32, 0x33, 0x65e5, 0x0, 0x32, 0x33, 0x70b9, 0x0, 0x32, 0x34, 0x0, 0x32, 0x34, 0x65e5, 0x0, 0x32, 0x34, 0x70b9, 0x0, 0x32, 0x35, 0x0, 0x32, 0x35, 0x65e5, 0x0, 0x32, 0x36, 0x0, 0x32, 0x36, 0x65e5, 0x0, 0x32, 0x37, 0x0, 0x32, 0x37, 0x65e5, 0x0, 0x32, 0x38, 0x0, 0x32, 0x38, 0x65e5, 0x0, 0x32, 0x39, 0x0, 0x32, 0x39, 0x65e5, 0x0, 0x32, 0x2044, 0x33, 0x0, 0x32, 0x2044, 0x35, 0x0, 0x32, 0x65e5, 0x0, 0x32, 0x6708, 0x0, 0x32, 0x70b9, 0x0, 0x33, 0x0, 0x33, 0x2c, 0x0, 0x33, 0x2e, 0x0, 0x33, 0x30, 0x0, 0x33, 0x30, 0x65e5, 0x0, 0x33, 0x31, 0x0, 0x33, 0x31, 0x65e5, 0x0, 0x33, 0x32, 0x0, 0x33, 0x33, 0x0, 0x33, 0x34, 0x0, 0x33, 0x35, 0x0, 0x33, 0x36, 0x0, 0x33, 0x37, 0x0, 0x33, 0x38, 0x0, 0x33, 0x39, 0x0, 0x33, 0x2044, 0x34, 0x0, 0x33, 0x2044, 0x35, 0x0, 0x33, 0x2044, 0x38, 0x0, 0x33, 0x65e5, 0x0, 0x33, 0x6708, 0x0, 0x33, 0x70b9, 0x0, 0x34, 0x0, 0x34, 0x2c, 0x0, 0x34, 0x2e, 0x0, 0x34, 0x30, 0x0, 0x34, 0x31, 0x0, 0x34, 0x32, 0x0, 0x34, 0x33, 0x0, 0x34, 0x34, 0x0, 0x34, 0x35, 0x0, 0x34, 0x36, 0x0, 0x34, 0x37, 0x0, 0x34, 0x38, 0x0, 0x34, 0x39, 0x0, 0x34, 0x2044, 0x35, 0x0, 0x34, 0x65e5, 0x0, 0x34, 0x6708, 0x0, 0x34, 0x70b9, 0x0, 0x35, 0x0, 0x35, 0x2c, 0x0, 0x35, 0x2e, 0x0, 0x35, 0x30, 0x0, 0x35, 0x2044, 0x36, 0x0, 0x35, 0x2044, 0x38, 0x0, 0x35, 0x65e5, 0x0, 0x35, 0x6708, 0x0, 0x35, 0x70b9, 0x0, 0x36, 0x0, 0x36, 0x2c, 0x0, 0x36, 0x2e, 0x0, 0x36, 0x65e5, 0x0, 0x36, 0x6708, 0x0, 0x36, 0x70b9, 0x0, 0x37, 0x0, 0x37, 0x2c, 0x0, 0x37, 0x2e, 0x0, 0x37, 0x2044, 0x38, 0x0, 0x37, 0x65e5, 0x0, 0x37, 0x6708, 0x0, 0x37, 0x70b9, 0x0, 0x38, 0x0, 0x38, 0x2c, 0x0, 0x38, 0x2e, 0x0, 0x38, 0x65e5, 0x0, 0x38, 0x6708, 0x0, 0x38, 0x70b9, 0x0, 0x39, 0x0, 0x39, 0x2c, 0x0, 0x39, 0x2e, 0x0, 0x39, 0x65e5, 0x0, 0x39, 0x6708, 0x0, 0x39, 0x70b9, 0x0, 0x3a, 0x0, 0x3a, 0x3a, 0x3d, 0x0, 0x3b, 0x0, 0x3c, 0x0, 0x3c, 0x338, 0x0, 0x3d, 0x0, 0x3d, 0x3d, 0x0, 0x3d, 0x3d, 0x3d, 0x0, 0x3d, 0x338, 0x0, 0x3e, 0x0, 0x3e, 0x338, 0x0, 0x3f, 0x0, 0x3f, 0x21, 0x0, 0x3f, 0x3f, 0x0, 0x40, 0x0, 0x41, 0x0, 0x41, 0x55, 0x0, 0x41, 0x300, 0x0, 0x41, 0x301, 0x0, 0x41, 0x302, 0x0, 0x41, 0x302, 0x300, 0x0, 0x41, 0x302, 0x301, 0x0, 0x41, 0x302, 0x303, 0x0, 0x41, 0x302, 0x309, 0x0, 0x41, 0x303, 0x0, 0x41, 0x304, 0x0, 0x41, 0x306, 0x0, 0x41, 0x306, 0x300, 0x0, 0x41, 0x306, 0x301, 0x0, 0x41, 0x306, 0x303, 0x0, 0x41, 0x306, 0x309, 0x0, 0x41, 0x307, 0x0, 0x41, 0x307, 0x304, 0x0, 0x41, 0x308, 0x0, 0x41, 0x308, 0x304, 0x0, 0x41, 0x309, 0x0, 0x41, 0x30a, 0x0, 0x41, 0x30a, 0x301, 0x0, 0x41, 0x30c, 0x0, 0x41, 0x30f, 0x0, 0x41, 0x311, 0x0, 0x41, 0x323, 0x0, 0x41, 0x323, 0x302, 0x0, 0x41, 0x323, 0x306, 0x0, 0x41, 0x325, 0x0, 0x41, 0x328, 0x0, 0x41, 0x2215, 0x6d, 0x0, 0x42, 0x0, 0x42, 0x71, 0x0, 0x42, 0x307, 0x0, 0x42, 0x323, 0x0, 0x42, 0x331, 0x0, 0x43, 0x0, 0x43, 0x44, 0x0, 0x43, 0x6f, 0x2e, 0x0, 0x43, 0x301, 0x0, 0x43, 0x302, 0x0, 0x43, 0x307, 0x0, 0x43, 0x30c, 0x0, 0x43, 0x327, 0x0, 0x43, 0x327, 0x301, 0x0, 0x43, 0x2215, 0x6b, 0x67, 0x0, 0x44, 0x0, 0x44, 0x4a, 0x0, 0x44, 0x5a, 0x0, 0x44, 0x5a, 0x30c, 0x0, 0x44, 0x7a, 0x0, 0x44, 0x7a, 0x30c, 0x0, 0x44, 0x307, 0x0, 0x44, 0x30c, 0x0, 0x44, 0x323, 0x0, 0x44, 0x327, 0x0, 0x44, 0x32d, 0x0, 0x44, 0x331, 0x0, 0x45, 0x0, 0x45, 0x300, 0x0, 0x45, 0x301, 0x0, 0x45, 0x302, 0x0, 0x45, 0x302, 0x300, 0x0, 0x45, 0x302, 0x301, 0x0, 0x45, 0x302, 0x303, 0x0, 0x45, 0x302, 0x309, 0x0, 0x45, 0x303, 0x0, 0x45, 0x304, 0x0, 0x45, 0x304, 0x300, 0x0, 0x45, 0x304, 0x301, 0x0, 0x45, 0x306, 0x0, 0x45, 0x307, 0x0, 0x45, 0x308, 0x0, 0x45, 0x309, 0x0, 0x45, 0x30c, 0x0, 0x45, 0x30f, 0x0, 0x45, 0x311, 0x0, 0x45, 0x323, 0x0, 0x45, 0x323, 0x302, 0x0, 0x45, 0x327, 0x0, 0x45, 0x327, 0x306, 0x0, 0x45, 0x328, 0x0, 0x45, 0x32d, 0x0, 0x45, 0x330, 0x0, 0x46, 0x0, 0x46, 0x41, 0x58, 0x0, 0x46, 0x307, 0x0, 0x47, 0x0, 0x47, 0x42, 0x0, 0x47, 0x48, 0x7a, 0x0, 0x47, 0x50, 0x61, 0x0, 0x47, 0x79, 0x0, 0x47, 0x301, 0x0, 0x47, 0x302, 0x0, 0x47, 0x304, 0x0, 0x47, 0x306, 0x0, 0x47, 0x307, 0x0, 0x47, 0x30c, 0x0, 0x47, 0x327, 0x0, 0x48, 0x0, 0x48, 0x50, 0x0, 0x48, 0x56, 0x0, 0x48, 0x67, 0x0, 0x48, 0x7a, 0x0, 0x48, 0x302, 0x0, 0x48, 0x307, 0x0, 0x48, 0x308, 0x0, 0x48, 0x30c, 0x0, 0x48, 0x323, 0x0, 0x48, 0x327, 0x0, 0x48, 0x32e, 0x0, 0x49, 0x0, 0x49, 0x49, 0x0, 0x49, 0x49, 0x49, 0x0, 0x49, 0x4a, 0x0, 0x49, 0x55, 0x0, 0x49, 0x56, 0x0, 0x49, 0x58, 0x0, 0x49, 0x300, 0x0, 0x49, 0x301, 0x0, 0x49, 0x302, 0x0, 0x49, 0x303, 0x0, 0x49, 0x304, 0x0, 0x49, 0x306, 0x0, 0x49, 0x307, 0x0, 0x49, 0x308, 0x0, 0x49, 0x308, 0x301, 0x0, 0x49, 0x309, 0x0, 0x49, 0x30c, 0x0, 0x49, 0x30f, 0x0, 0x49, 0x311, 0x0, 0x49, 0x323, 0x0, 0x49, 0x328, 0x0, 0x49, 0x330, 0x0, 0x4a, 0x0, 0x4a, 0x302, 0x0, 0x4b, 0x0, 0x4b, 0x42, 0x0, 0x4b, 0x4b, 0x0, 0x4b, 0x4d, 0x0, 0x4b, 0x301, 0x0, 0x4b, 0x30c, 0x0, 0x4b, 0x323, 0x0, 0x4b, 0x327, 0x0, 0x4b, 0x331, 0x0, 0x4c, 0x0, 0x4c, 0x4a, 0x0, 0x4c, 0x54, 0x44, 0x0, 0x4c, 0x6a, 0x0, 0x4c, 0xb7, 0x0, 0x4c, 0x301, 0x0, 0x4c, 0x30c, 0x0, 0x4c, 0x323, 0x0, 0x4c, 0x323, 0x304, 0x0, 0x4c, 0x327, 0x0, 0x4c, 0x32d, 0x0, 0x4c, 0x331, 0x0, 0x4d, 0x0, 0x4d, 0x42, 0x0, 0x4d, 0x43, 0x0, 0x4d, 0x44, 0x0, 0x4d, 0x48, 0x7a, 0x0, 0x4d, 0x50, 0x61, 0x0, 0x4d, 0x52, 0x0, 0x4d, 0x56, 0x0, 0x4d, 0x57, 0x0, 0x4d, 0x301, 0x0, 0x4d, 0x307, 0x0, 0x4d, 0x323, 0x0, 0x4d, 0x3a9, 0x0, 0x4e, 0x0, 0x4e, 0x4a, 0x0, 0x4e, 0x6a, 0x0, 0x4e, 0x6f, 0x0, 0x4e, 0x300, 0x0, 0x4e, 0x301, 0x0, 0x4e, 0x303, 0x0, 0x4e, 0x307, 0x0, 0x4e, 0x30c, 0x0, 0x4e, 0x323, 0x0, 0x4e, 0x327, 0x0, 0x4e, 0x32d, 0x0, 0x4e, 0x331, 0x0, 0x4f, 0x0, 0x4f, 0x300, 0x0, 0x4f, 0x301, 0x0, 0x4f, 0x302, 0x0, 0x4f, 0x302, 0x300, 0x0, 0x4f, 0x302, 0x301, 0x0, 0x4f, 0x302, 0x303, 0x0, 0x4f, 0x302, 0x309, 0x0, 0x4f, 0x303, 0x0, 0x4f, 0x303, 0x301, 0x0, 0x4f, 0x303, 0x304, 0x0, 0x4f, 0x303, 0x308, 0x0, 0x4f, 0x304, 0x0, 0x4f, 0x304, 0x300, 0x0, 0x4f, 0x304, 0x301, 0x0, 0x4f, 0x306, 0x0, 0x4f, 0x307, 0x0, 0x4f, 0x307, 0x304, 0x0, 0x4f, 0x308, 0x0, 0x4f, 0x308, 0x304, 0x0, 0x4f, 0x309, 0x0, 0x4f, 0x30b, 0x0, 0x4f, 0x30c, 0x0, 0x4f, 0x30f, 0x0, 0x4f, 0x311, 0x0, 0x4f, 0x31b, 0x0, 0x4f, 0x31b, 0x300, 0x0, 0x4f, 0x31b, 0x301, 0x0, 0x4f, 0x31b, 0x303, 0x0, 0x4f, 0x31b, 0x309, 0x0, 0x4f, 0x31b, 0x323, 0x0, 0x4f, 0x323, 0x0, 0x4f, 0x323, 0x302, 0x0, 0x4f, 0x328, 0x0, 0x4f, 0x328, 0x304, 0x0, 0x50, 0x0, 0x50, 0x48, 0x0, 0x50, 0x50, 0x4d, 0x0, 0x50, 0x50, 0x56, 0x0, 0x50, 0x52, 0x0, 0x50, 0x54, 0x45, 0x0, 0x50, 0x61, 0x0, 0x50, 0x301, 0x0, 0x50, 0x307, 0x0, 0x51, 0x0, 0x52, 0x0, 0x52, 0x73, 0x0, 0x52, 0x301, 0x0, 0x52, 0x307, 0x0, 0x52, 0x30c, 0x0, 0x52, 0x30f, 0x0, 0x52, 0x311, 0x0, 0x52, 0x323, 0x0, 0x52, 0x323, 0x304, 0x0, 0x52, 0x327, 0x0, 0x52, 0x331, 0x0, 0x53, 0x0, 0x53, 0x44, 0x0, 0x53, 0x4d, 0x0, 0x53, 0x53, 0x0, 0x53, 0x76, 0x0, 0x53, 0x301, 0x0, 0x53, 0x301, 0x307, 0x0, 0x53, 0x302, 0x0, 0x53, 0x307, 0x0, 0x53, 0x30c, 0x0, 0x53, 0x30c, 0x307, 0x0, 0x53, 0x323, 0x0, 0x53, 0x323, 0x307, 0x0, 0x53, 0x326, 0x0, 0x53, 0x327, 0x0, 0x54, 0x0, 0x54, 0x45, 0x4c, 0x0, 0x54, 0x48, 0x7a, 0x0, 0x54, 0x4d, 0x0, 0x54, 0x307, 0x0, 0x54, 0x30c, 0x0, 0x54, 0x323, 0x0, 0x54, 0x326, 0x0, 0x54, 0x327, 0x0, 0x54, 0x32d, 0x0, 0x54, 0x331, 0x0, 0x55, 0x0, 0x55, 0x300, 0x0, 0x55, 0x301, 0x0, 0x55, 0x302, 0x0, 0x55, 0x303, 0x0, 0x55, 0x303, 0x301, 0x0, 0x55, 0x304, 0x0, 0x55, 0x304, 0x308, 0x0, 0x55, 0x306, 0x0, 0x55, 0x308, 0x0, 0x55, 0x308, 0x300, 0x0, 0x55, 0x308, 0x301, 0x0, 0x55, 0x308, 0x304, 0x0, 0x55, 0x308, 0x30c, 0x0, 0x55, 0x309, 0x0, 0x55, 0x30a, 0x0, 0x55, 0x30b, 0x0, 0x55, 0x30c, 0x0, 0x55, 0x30f, 0x0, 0x55, 0x311, 0x0, 0x55, 0x31b, 0x0, 0x55, 0x31b, 0x300, 0x0, 0x55, 0x31b, 0x301, 0x0, 0x55, 0x31b, 0x303, 0x0, 0x55, 0x31b, 0x309, 0x0, 0x55, 0x31b, 0x323, 0x0, 0x55, 0x323, 0x0, 0x55, 0x324, 0x0, 0x55, 0x328, 0x0, 0x55, 0x32d, 0x0, 0x55, 0x330, 0x0, 0x56, 0x0, 0x56, 0x49, 0x0, 0x56, 0x49, 0x49, 0x0, 0x56, 0x49, 0x49, 0x49, 0x0, 0x56, 0x303, 0x0, 0x56, 0x323, 0x0, 0x56, 0x2215, 0x6d, 0x0, 0x57, 0x0, 0x57, 0x43, 0x0, 0x57, 0x5a, 0x0, 0x57, 0x62, 0x0, 0x57, 0x300, 0x0, 0x57, 0x301, 0x0, 0x57, 0x302, 0x0, 0x57, 0x307, 0x0, 0x57, 0x308, 0x0, 0x57, 0x323, 0x0, 0x58, 0x0, 0x58, 0x49, 0x0, 0x58, 0x49, 0x49, 0x0, 0x58, 0x307, 0x0, 0x58, 0x308, 0x0, 0x59, 0x0, 0x59, 0x300, 0x0, 0x59, 0x301, 0x0, 0x59, 0x302, 0x0, 0x59, 0x303, 0x0, 0x59, 0x304, 0x0, 0x59, 0x307, 0x0, 0x59, 0x308, 0x0, 0x59, 0x309, 0x0, 0x59, 0x323, 0x0, 0x5a, 0x0, 0x5a, 0x301, 0x0, 0x5a, 0x302, 0x0, 0x5a, 0x307, 0x0, 0x5a, 0x30c, 0x0, 0x5a, 0x323, 0x0, 0x5a, 0x331, 0x0, 0x5b, 0x0, 0x5c, 0x0, 0x5d, 0x0, 0x5e, 0x0, 0x5f, 0x0, 0x60, 0x0, 0x61, 0x0, 0x61, 0x2e, 0x6d, 0x2e, 0x0, 0x61, 0x2f, 0x63, 0x0, 0x61, 0x2f, 0x73, 0x0, 0x61, 0x2be, 0x0, 0x61, 0x300, 0x0, 0x61, 0x301, 0x0, 0x61, 0x302, 0x0, 0x61, 0x302, 0x300, 0x0, 0x61, 0x302, 0x301, 0x0, 0x61, 0x302, 0x303, 0x0, 0x61, 0x302, 0x309, 0x0, 0x61, 0x303, 0x0, 0x61, 0x304, 0x0, 0x61, 0x306, 0x0, 0x61, 0x306, 0x300, 0x0, 0x61, 0x306, 0x301, 0x0, 0x61, 0x306, 0x303, 0x0, 0x61, 0x306, 0x309, 0x0, 0x61, 0x307, 0x0, 0x61, 0x307, 0x304, 0x0, 0x61, 0x308, 0x0, 0x61, 0x308, 0x304, 0x0, 0x61, 0x309, 0x0, 0x61, 0x30a, 0x0, 0x61, 0x30a, 0x301, 0x0, 0x61, 0x30c, 0x0, 0x61, 0x30f, 0x0, 0x61, 0x311, 0x0, 0x61, 0x323, 0x0, 0x61, 0x323, 0x302, 0x0, 0x61, 0x323, 0x306, 0x0, 0x61, 0x325, 0x0, 0x61, 0x328, 0x0, 0x62, 0x0, 0x62, 0x61, 0x72, 0x0, 0x62, 0x307, 0x0, 0x62, 0x323, 0x0, 0x62, 0x331, 0x0, 0x63, 0x0, 0x63, 0x2f, 0x6f, 0x0, 0x63, 0x2f, 0x75, 0x0, 0x63, 0x61, 0x6c, 0x0, 0x63, 0x63, 0x0, 0x63, 0x64, 0x0, 0x63, 0x6d, 0x0, 0x63, 0x6d, 0x32, 0x0, 0x63, 0x6d, 0x33, 0x0, 0x63, 0x301, 0x0, 0x63, 0x302, 0x0, 0x63, 0x307, 0x0, 0x63, 0x30c, 0x0, 0x63, 0x327, 0x0, 0x63, 0x327, 0x301, 0x0, 0x64, 0x0, 0x64, 0x42, 0x0, 0x64, 0x61, 0x0, 0x64, 0x6c, 0x0, 0x64, 0x6d, 0x0, 0x64, 0x6d, 0x32, 0x0, 0x64, 0x6d, 0x33, 0x0, 0x64, 0x7a, 0x0, 0x64, 0x7a, 0x30c, 0x0, 0x64, 0x307, 0x0, 0x64, 0x30c, 0x0, 0x64, 0x323, 0x0, 0x64, 0x327, 0x0, 0x64, 0x32d, 0x0, 0x64, 0x331, 0x0, 0x65, 0x0, 0x65, 0x56, 0x0, 0x65, 0x72, 0x67, 0x0, 0x65, 0x300, 0x0, 0x65, 0x301, 0x0, 0x65, 0x302, 0x0, 0x65, 0x302, 0x300, 0x0, 0x65, 0x302, 0x301, 0x0, 0x65, 0x302, 0x303, 0x0, 0x65, 0x302, 0x309, 0x0, 0x65, 0x303, 0x0, 0x65, 0x304, 0x0, 0x65, 0x304, 0x300, 0x0, 0x65, 0x304, 0x301, 0x0, 0x65, 0x306, 0x0, 0x65, 0x307, 0x0, 0x65, 0x308, 0x0, 0x65, 0x309, 0x0, 0x65, 0x30c, 0x0, 0x65, 0x30f, 0x0, 0x65, 0x311, 0x0, 0x65, 0x323, 0x0, 0x65, 0x323, 0x302, 0x0, 0x65, 0x327, 0x0, 0x65, 0x327, 0x306, 0x0, 0x65, 0x328, 0x0, 0x65, 0x32d, 0x0, 0x65, 0x330, 0x0, 0x66, 0x0, 0x66, 0x66, 0x0, 0x66, 0x66, 0x69, 0x0, 0x66, 0x66, 0x6c, 0x0, 0x66, 0x69, 0x0, 0x66, 0x6c, 0x0, 0x66, 0x6d, 0x0, 0x66, 0x307, 0x0, 0x67, 0x0, 0x67, 0x61, 0x6c, 0x0, 0x67, 0x301, 0x0, 0x67, 0x302, 0x0, 0x67, 0x304, 0x0, 0x67, 0x306, 0x0, 0x67, 0x307, 0x0, 0x67, 0x30c, 0x0, 0x67, 0x327, 0x0, 0x68, 0x0, 0x68, 0x50, 0x61, 0x0, 0x68, 0x61, 0x0, 0x68, 0x302, 0x0, 0x68, 0x307, 0x0, 0x68, 0x308, 0x0, 0x68, 0x30c, 0x0, 0x68, 0x323, 0x0, 0x68, 0x327, 0x0, 0x68, 0x32e, 0x0, 0x68, 0x331, 0x0, 0x69, 0x0, 0x69, 0x69, 0x0, 0x69, 0x69, 0x69, 0x0, 0x69, 0x6a, 0x0, 0x69, 0x6e, 0x0, 0x69, 0x76, 0x0, 0x69, 0x78, 0x0, 0x69, 0x300, 0x0, 0x69, 0x301, 0x0, 0x69, 0x302, 0x0, 0x69, 0x303, 0x0, 0x69, 0x304, 0x0, 0x69, 0x306, 0x0, 0x69, 0x308, 0x0, 0x69, 0x308, 0x301, 0x0, 0x69, 0x309, 0x0, 0x69, 0x30c, 0x0, 0x69, 0x30f, 0x0, 0x69, 0x311, 0x0, 0x69, 0x323, 0x0, 0x69, 0x328, 0x0, 0x69, 0x330, 0x0, 0x6a, 0x0, 0x6a, 0x302, 0x0, 0x6a, 0x30c, 0x0, 0x6b, 0x0, 0x6b, 0x41, 0x0, 0x6b, 0x48, 0x7a, 0x0, 0x6b, 0x50, 0x61, 0x0, 0x6b, 0x56, 0x0, 0x6b, 0x57, 0x0, 0x6b, 0x63, 0x61, 0x6c, 0x0, 0x6b, 0x67, 0x0, 0x6b, 0x6c, 0x0, 0x6b, 0x6d, 0x0, 0x6b, 0x6d, 0x32, 0x0, 0x6b, 0x6d, 0x33, 0x0, 0x6b, 0x74, 0x0, 0x6b, 0x301, 0x0, 0x6b, 0x30c, 0x0, 0x6b, 0x323, 0x0, 0x6b, 0x327, 0x0, 0x6b, 0x331, 0x0, 0x6b, 0x3a9, 0x0, 0x6c, 0x0, 0x6c, 0x6a, 0x0, 0x6c, 0x6d, 0x0, 0x6c, 0x6e, 0x0, 0x6c, 0x6f, 0x67, 0x0, 0x6c, 0x78, 0x0, 0x6c, 0xb7, 0x0, 0x6c, 0x301, 0x0, 0x6c, 0x30c, 0x0, 0x6c, 0x323, 0x0, 0x6c, 0x323, 0x304, 0x0, 0x6c, 0x327, 0x0, 0x6c, 0x32d, 0x0, 0x6c, 0x331, 0x0, 0x6d, 0x0, 0x6d, 0x32, 0x0, 0x6d, 0x33, 0x0, 0x6d, 0x41, 0x0, 0x6d, 0x56, 0x0, 0x6d, 0x57, 0x0, 0x6d, 0x62, 0x0, 0x6d, 0x67, 0x0, 0x6d, 0x69, 0x6c, 0x0, 0x6d, 0x6c, 0x0, 0x6d, 0x6d, 0x0, 0x6d, 0x6d, 0x32, 0x0, 0x6d, 0x6d, 0x33, 0x0, 0x6d, 0x6f, 0x6c, 0x0, 0x6d, 0x73, 0x0, 0x6d, 0x301, 0x0, 0x6d, 0x307, 0x0, 0x6d, 0x323, 0x0, 0x6d, 0x2215, 0x73, 0x0, 0x6d, 0x2215, 0x73, 0x32, 0x0, 0x6e, 0x0, 0x6e, 0x41, 0x0, 0x6e, 0x46, 0x0, 0x6e, 0x56, 0x0, 0x6e, 0x57, 0x0, 0x6e, 0x6a, 0x0, 0x6e, 0x6d, 0x0, 0x6e, 0x73, 0x0, 0x6e, 0x300, 0x0, 0x6e, 0x301, 0x0, 0x6e, 0x303, 0x0, 0x6e, 0x307, 0x0, 0x6e, 0x30c, 0x0, 0x6e, 0x323, 0x0, 0x6e, 0x327, 0x0, 0x6e, 0x32d, 0x0, 0x6e, 0x331, 0x0, 0x6f, 0x0, 0x6f, 0x56, 0x0, 0x6f, 0x300, 0x0, 0x6f, 0x301, 0x0, 0x6f, 0x302, 0x0, 0x6f, 0x302, 0x300, 0x0, 0x6f, 0x302, 0x301, 0x0, 0x6f, 0x302, 0x303, 0x0, 0x6f, 0x302, 0x309, 0x0, 0x6f, 0x303, 0x0, 0x6f, 0x303, 0x301, 0x0, 0x6f, 0x303, 0x304, 0x0, 0x6f, 0x303, 0x308, 0x0, 0x6f, 0x304, 0x0, 0x6f, 0x304, 0x300, 0x0, 0x6f, 0x304, 0x301, 0x0, 0x6f, 0x306, 0x0, 0x6f, 0x307, 0x0, 0x6f, 0x307, 0x304, 0x0, 0x6f, 0x308, 0x0, 0x6f, 0x308, 0x304, 0x0, 0x6f, 0x309, 0x0, 0x6f, 0x30b, 0x0, 0x6f, 0x30c, 0x0, 0x6f, 0x30f, 0x0, 0x6f, 0x311, 0x0, 0x6f, 0x31b, 0x0, 0x6f, 0x31b, 0x300, 0x0, 0x6f, 0x31b, 0x301, 0x0, 0x6f, 0x31b, 0x303, 0x0, 0x6f, 0x31b, 0x309, 0x0, 0x6f, 0x31b, 0x323, 0x0, 0x6f, 0x323, 0x0, 0x6f, 0x323, 0x302, 0x0, 0x6f, 0x328, 0x0, 0x6f, 0x328, 0x304, 0x0, 0x70, 0x0, 0x70, 0x2e, 0x6d, 0x2e, 0x0, 0x70, 0x41, 0x0, 0x70, 0x46, 0x0, 0x70, 0x56, 0x0, 0x70, 0x57, 0x0, 0x70, 0x63, 0x0, 0x70, 0x73, 0x0, 0x70, 0x301, 0x0, 0x70, 0x307, 0x0, 0x71, 0x0, 0x72, 0x0, 0x72, 0x61, 0x64, 0x0, 0x72, 0x61, 0x64, 0x2215, 0x73, 0x0, 0x72, 0x61, 0x64, 0x2215, 0x73, 0x32, 0x0, 0x72, 0x301, 0x0, 0x72, 0x307, 0x0, 0x72, 0x30c, 0x0, 0x72, 0x30f, 0x0, 0x72, 0x311, 0x0, 0x72, 0x323, 0x0, 0x72, 0x323, 0x304, 0x0, 0x72, 0x327, 0x0, 0x72, 0x331, 0x0, 0x73, 0x0, 0x73, 0x72, 0x0, 0x73, 0x74, 0x0, 0x73, 0x301, 0x0, 0x73, 0x301, 0x307, 0x0, 0x73, 0x302, 0x0, 0x73, 0x307, 0x0, 0x73, 0x30c, 0x0, 0x73, 0x30c, 0x307, 0x0, 0x73, 0x323, 0x0, 0x73, 0x323, 0x307, 0x0, 0x73, 0x326, 0x0, 0x73, 0x327, 0x0, 0x74, 0x0, 0x74, 0x307, 0x0, 0x74, 0x308, 0x0, 0x74, 0x30c, 0x0, 0x74, 0x323, 0x0, 0x74, 0x326, 0x0, 0x74, 0x327, 0x0, 0x74, 0x32d, 0x0, 0x74, 0x331, 0x0, 0x75, 0x0, 0x75, 0x300, 0x0, 0x75, 0x301, 0x0, 0x75, 0x302, 0x0, 0x75, 0x303, 0x0, 0x75, 0x303, 0x301, 0x0, 0x75, 0x304, 0x0, 0x75, 0x304, 0x308, 0x0, 0x75, 0x306, 0x0, 0x75, 0x308, 0x0, 0x75, 0x308, 0x300, 0x0, 0x75, 0x308, 0x301, 0x0, 0x75, 0x308, 0x304, 0x0, 0x75, 0x308, 0x30c, 0x0, 0x75, 0x309, 0x0, 0x75, 0x30a, 0x0, 0x75, 0x30b, 0x0, 0x75, 0x30c, 0x0, 0x75, 0x30f, 0x0, 0x75, 0x311, 0x0, 0x75, 0x31b, 0x0, 0x75, 0x31b, 0x300, 0x0, 0x75, 0x31b, 0x301, 0x0, 0x75, 0x31b, 0x303, 0x0, 0x75, 0x31b, 0x309, 0x0, 0x75, 0x31b, 0x323, 0x0, 0x75, 0x323, 0x0, 0x75, 0x324, 0x0, 0x75, 0x328, 0x0, 0x75, 0x32d, 0x0, 0x75, 0x330, 0x0, 0x76, 0x0, 0x76, 0x69, 0x0, 0x76, 0x69, 0x69, 0x0, 0x76, 0x69, 0x69, 0x69, 0x0, 0x76, 0x303, 0x0, 0x76, 0x323, 0x0, 0x77, 0x0, 0x77, 0x300, 0x0, 0x77, 0x301, 0x0, 0x77, 0x302, 0x0, 0x77, 0x307, 0x0, 0x77, 0x308, 0x0, 0x77, 0x30a, 0x0, 0x77, 0x323, 0x0, 0x78, 0x0, 0x78, 0x69, 0x0, 0x78, 0x69, 0x69, 0x0, 0x78, 0x307, 0x0, 0x78, 0x308, 0x0, 0x79, 0x0, 0x79, 0x300, 0x0, 0x79, 0x301, 0x0, 0x79, 0x302, 0x0, 0x79, 0x303, 0x0, 0x79, 0x304, 0x0, 0x79, 0x307, 0x0, 0x79, 0x308, 0x0, 0x79, 0x309, 0x0, 0x79, 0x30a, 0x0, 0x79, 0x323, 0x0, 0x7a, 0x0, 0x7a, 0x301, 0x0, 0x7a, 0x302, 0x0, 0x7a, 0x307, 0x0, 0x7a, 0x30c, 0x0, 0x7a, 0x323, 0x0, 0x7a, 0x331, 0x0, 0x7b, 0x0, 0x7c, 0x0, 0x7d, 0x0, 0x7e, 0x0, 0xa2, 0x0, 0xa3, 0x0, 0xa5, 0x0, 0xa6, 0x0, 0xac, 0x0, 0xb0, 0x43, 0x0, 0xb0, 0x46, 0x0, 0xb7, 0x0, 0xc6, 0x0, 0xc6, 0x301, 0x0, 0xc6, 0x304, 0x0, 0xd8, 0x301, 0x0, 0xe6, 0x0, 0xe6, 0x301, 0x0, 0xe6, 0x304, 0x0, 0xf0, 0x0, 0xf8, 0x0, 0xf8, 0x301, 0x0, 0x126, 0x0, 0x127, 0x0, 0x131, 0x0, 0x14b, 0x0, 0x153, 0x0, 0x18e, 0x0, 0x190, 0x0, 0x1ab, 0x0, 0x1b7, 0x30c, 0x0, 0x1c0, 0x0, 0x1c1, 0x0, 0x1c2, 0x0, 0x222, 0x0, 0x237, 0x0, 0x250, 0x0, 0x251, 0x0, 0x252, 0x0, 0x253, 0x0, 0x254, 0x0, 0x255, 0x0, 0x256, 0x0, 0x257, 0x0, 0x258, 0x0, 0x259, 0x0, 0x25b, 0x0, 0x25c, 0x0, 0x25e, 0x0, 0x25f, 0x0, 0x260, 0x0, 0x261, 0x0, 0x262, 0x0, 0x263, 0x0, 0x264, 0x0, 0x265, 0x0, 0x266, 0x0, 0x267, 0x0, 0x268, 0x0, 0x269, 0x0, 0x26a, 0x0, 0x26b, 0x0, 0x26c, 0x0, 0x26d, 0x0, 0x26e, 0x0, 0x26f, 0x0, 0x270, 0x0, 0x271, 0x0, 0x272, 0x0, 0x273, 0x0, 0x274, 0x0, 0x275, 0x0, 0x276, 0x0, 0x277, 0x0, 0x278, 0x0, 0x279, 0x0, 0x27a, 0x0, 0x27b, 0x0, 0x27d, 0x0, 0x27e, 0x0, 0x280, 0x0, 0x281, 0x0, 0x282, 0x0, 0x283, 0x0, 0x284, 0x0, 0x288, 0x0, 0x289, 0x0, 0x28a, 0x0, 0x28b, 0x0, 0x28c, 0x0, 0x28d, 0x0, 0x28e, 0x0, 0x28f, 0x0, 0x290, 0x0, 0x291, 0x0, 0x292, 0x0, 0x292, 0x30c, 0x0, 0x295, 0x0, 0x298, 0x0, 0x299, 0x0, 0x29b, 0x0, 0x29c, 0x0, 0x29d, 0x0, 0x29f, 0x0, 0x2a1, 0x0, 0x2a2, 0x0, 0x2a3, 0x0, 0x2a4, 0x0, 0x2a5, 0x0, 0x2a6, 0x0, 0x2a7, 0x0, 0x2a8, 0x0, 0x2a9, 0x0, 0x2aa, 0x0, 0x2ab, 0x0, 0x2b9, 0x0, 0x2bc, 0x6e, 0x0, 0x2d0, 0x0, 0x2d1, 0x0, 0x300, 0x0, 0x301, 0x0, 0x308, 0x301, 0x0, 0x313, 0x0, 0x391, 0x0, 0x391, 0x300, 0x0, 0x391, 0x301, 0x0, 0x391, 0x304, 0x0, 0x391, 0x306, 0x0, 0x391, 0x313, 0x0, 0x391, 0x313, 0x300, 0x0, 0x391, 0x313, 0x300, 0x345, 0x0, 0x391, 0x313, 0x301, 0x0, 0x391, 0x313, 0x301, 0x345, 0x0, 0x391, 0x313, 0x342, 0x0, 0x391, 0x313, 0x342, 0x345, 0x0, 0x391, 0x313, 0x345, 0x0, 0x391, 0x314, 0x0, 0x391, 0x314, 0x300, 0x0, 0x391, 0x314, 0x300, 0x345, 0x0, 0x391, 0x314, 0x301, 0x0, 0x391, 0x314, 0x301, 0x345, 0x0, 0x391, 0x314, 0x342, 0x0, 0x391, 0x314, 0x342, 0x345, 0x0, 0x391, 0x314, 0x345, 0x0, 0x391, 0x345, 0x0, 0x392, 0x0, 0x393, 0x0, 0x394, 0x0, 0x395, 0x0, 0x395, 0x300, 0x0, 0x395, 0x301, 0x0, 0x395, 0x313, 0x0, 0x395, 0x313, 0x300, 0x0, 0x395, 0x313, 0x301, 0x0, 0x395, 0x314, 0x0, 0x395, 0x314, 0x300, 0x0, 0x395, 0x314, 0x301, 0x0, 0x396, 0x0, 0x397, 0x0, 0x397, 0x300, 0x0, 0x397, 0x301, 0x0, 0x397, 0x313, 0x0, 0x397, 0x313, 0x300, 0x0, 0x397, 0x313, 0x300, 0x345, 0x0, 0x397, 0x313, 0x301, 0x0, 0x397, 0x313, 0x301, 0x345, 0x0, 0x397, 0x313, 0x342, 0x0, 0x397, 0x313, 0x342, 0x345, 0x0, 0x397, 0x313, 0x345, 0x0, 0x397, 0x314, 0x0, 0x397, 0x314, 0x300, 0x0, 0x397, 0x314, 0x300, 0x345, 0x0, 0x397, 0x314, 0x301, 0x0, 0x397, 0x314, 0x301, 0x345, 0x0, 0x397, 0x314, 0x342, 0x0, 0x397, 0x314, 0x342, 0x345, 0x0, 0x397, 0x314, 0x345, 0x0, 0x397, 0x345, 0x0, 0x398, 0x0, 0x399, 0x0, 0x399, 0x300, 0x0, 0x399, 0x301, 0x0, 0x399, 0x304, 0x0, 0x399, 0x306, 0x0, 0x399, 0x308, 0x0, 0x399, 0x313, 0x0, 0x399, 0x313, 0x300, 0x0, 0x399, 0x313, 0x301, 0x0, 0x399, 0x313, 0x342, 0x0, 0x399, 0x314, 0x0, 0x399, 0x314, 0x300, 0x0, 0x399, 0x314, 0x301, 0x0, 0x399, 0x314, 0x342, 0x0, 0x39a, 0x0, 0x39b, 0x0, 0x39c, 0x0, 0x39d, 0x0, 0x39e, 0x0, 0x39f, 0x0, 0x39f, 0x300, 0x0, 0x39f, 0x301, 0x0, 0x39f, 0x313, 0x0, 0x39f, 0x313, 0x300, 0x0, 0x39f, 0x313, 0x301, 0x0, 0x39f, 0x314, 0x0, 0x39f, 0x314, 0x300, 0x0, 0x39f, 0x314, 0x301, 0x0, 0x3a0, 0x0, 0x3a1, 0x0, 0x3a1, 0x314, 0x0, 0x3a3, 0x0, 0x3a4, 0x0, 0x3a5, 0x0, 0x3a5, 0x300, 0x0, 0x3a5, 0x301, 0x0, 0x3a5, 0x304, 0x0, 0x3a5, 0x306, 0x0, 0x3a5, 0x308, 0x0, 0x3a5, 0x314, 0x0, 0x3a5, 0x314, 0x300, 0x0, 0x3a5, 0x314, 0x301, 0x0, 0x3a5, 0x314, 0x342, 0x0, 0x3a6, 0x0, 0x3a7, 0x0, 0x3a8, 0x0, 0x3a9, 0x0, 0x3a9, 0x300, 0x0, 0x3a9, 0x301, 0x0, 0x3a9, 0x313, 0x0, 0x3a9, 0x313, 0x300, 0x0, 0x3a9, 0x313, 0x300, 0x345, 0x0, 0x3a9, 0x313, 0x301, 0x0, 0x3a9, 0x313, 0x301, 0x345, 0x0, 0x3a9, 0x313, 0x342, 0x0, 0x3a9, 0x313, 0x342, 0x345, 0x0, 0x3a9, 0x313, 0x345, 0x0, 0x3a9, 0x314, 0x0, 0x3a9, 0x314, 0x300, 0x0, 0x3a9, 0x314, 0x300, 0x345, 0x0, 0x3a9, 0x314, 0x301, 0x0, 0x3a9, 0x314, 0x301, 0x345, 0x0, 0x3a9, 0x314, 0x342, 0x0, 0x3a9, 0x314, 0x342, 0x345, 0x0, 0x3a9, 0x314, 0x345, 0x0, 0x3a9, 0x345, 0x0, 0x3b1, 0x0, 0x3b1, 0x300, 0x0, 0x3b1, 0x300, 0x345, 0x0, 0x3b1, 0x301, 0x0, 0x3b1, 0x301, 0x345, 0x0, 0x3b1, 0x304, 0x0, 0x3b1, 0x306, 0x0, 0x3b1, 0x313, 0x0, 0x3b1, 0x313, 0x300, 0x0, 0x3b1, 0x313, 0x300, 0x345, 0x0, 0x3b1, 0x313, 0x301, 0x0, 0x3b1, 0x313, 0x301, 0x345, 0x0, 0x3b1, 0x313, 0x342, 0x0, 0x3b1, 0x313, 0x342, 0x345, 0x0, 0x3b1, 0x313, 0x345, 0x0, 0x3b1, 0x314, 0x0, 0x3b1, 0x314, 0x300, 0x0, 0x3b1, 0x314, 0x300, 0x345, 0x0, 0x3b1, 0x314, 0x301, 0x0, 0x3b1, 0x314, 0x301, 0x345, 0x0, 0x3b1, 0x314, 0x342, 0x0, 0x3b1, 0x314, 0x342, 0x345, 0x0, 0x3b1, 0x314, 0x345, 0x0, 0x3b1, 0x342, 0x0, 0x3b1, 0x342, 0x345, 0x0, 0x3b1, 0x345, 0x0, 0x3b2, 0x0, 0x3b3, 0x0, 0x3b4, 0x0, 0x3b5, 0x0, 0x3b5, 0x300, 0x0, 0x3b5, 0x301, 0x0, 0x3b5, 0x313, 0x0, 0x3b5, 0x313, 0x300, 0x0, 0x3b5, 0x313, 0x301, 0x0, 0x3b5, 0x314, 0x0, 0x3b5, 0x314, 0x300, 0x0, 0x3b5, 0x314, 0x301, 0x0, 0x3b6, 0x0, 0x3b7, 0x0, 0x3b7, 0x300, 0x0, 0x3b7, 0x300, 0x345, 0x0, 0x3b7, 0x301, 0x0, 0x3b7, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x0, 0x3b7, 0x313, 0x300, 0x0, 0x3b7, 0x313, 0x300, 0x345, 0x0, 0x3b7, 0x313, 0x301, 0x0, 0x3b7, 0x313, 0x301, 0x345, 0x0, 0x3b7, 0x313, 0x342, 0x0, 0x3b7, 0x313, 0x342, 0x345, 0x0, 0x3b7, 0x313, 0x345, 0x0, 0x3b7, 0x314, 0x0, 0x3b7, 0x314, 0x300, 0x0, 0x3b7, 0x314, 0x300, 0x345, 0x0, 0x3b7, 0x314, 0x301, 0x0, 0x3b7, 0x314, 0x301, 0x345, 0x0, 0x3b7, 0x314, 0x342, 0x0, 0x3b7, 0x314, 0x342, 0x345, 0x0, 0x3b7, 0x314, 0x345, 0x0, 0x3b7, 0x342, 0x0, 0x3b7, 0x342, 0x345, 0x0, 0x3b7, 0x345, 0x0, 0x3b8, 0x0, 0x3b9, 0x0, 0x3b9, 0x300, 0x0, 0x3b9, 0x301, 0x0, 0x3b9, 0x304, 0x0, 0x3b9, 0x306, 0x0, 0x3b9, 0x308, 0x0, 0x3b9, 0x308, 0x300, 0x0, 0x3b9, 0x308, 0x301, 0x0, 0x3b9, 0x308, 0x342, 0x0, 0x3b9, 0x313, 0x0, 0x3b9, 0x313, 0x300, 0x0, 0x3b9, 0x313, 0x301, 0x0, 0x3b9, 0x313, 0x342, 0x0, 0x3b9, 0x314, 0x0, 0x3b9, 0x314, 0x300, 0x0, 0x3b9, 0x314, 0x301, 0x0, 0x3b9, 0x314, 0x342, 0x0, 0x3b9, 0x342, 0x0, 0x3ba, 0x0, 0x3bb, 0x0, 0x3bc, 0x0, 0x3bc, 0x41, 0x0, 0x3bc, 0x46, 0x0, 0x3bc, 0x56, 0x0, 0x3bc, 0x57, 0x0, 0x3bc, 0x67, 0x0, 0x3bc, 0x6c, 0x0, 0x3bc, 0x6d, 0x0, 0x3bc, 0x73, 0x0, 0x3bd, 0x0, 0x3be, 0x0, 0x3bf, 0x0, 0x3bf, 0x300, 0x0, 0x3bf, 0x301, 0x0, 0x3bf, 0x313, 0x0, 0x3bf, 0x313, 0x300, 0x0, 0x3bf, 0x313, 0x301, 0x0, 0x3bf, 0x314, 0x0, 0x3bf, 0x314, 0x300, 0x0, 0x3bf, 0x314, 0x301, 0x0, 0x3c0, 0x0, 0x3c1, 0x0, 0x3c1, 0x313, 0x0, 0x3c1, 0x314, 0x0, 0x3c2, 0x0, 0x3c3, 0x0, 0x3c4, 0x0, 0x3c5, 0x0, 0x3c5, 0x300, 0x0, 0x3c5, 0x301, 0x0, 0x3c5, 0x304, 0x0, 0x3c5, 0x306, 0x0, 0x3c5, 0x308, 0x0, 0x3c5, 0x308, 0x300, 0x0, 0x3c5, 0x308, 0x301, 0x0, 0x3c5, 0x308, 0x342, 0x0, 0x3c5, 0x313, 0x0, 0x3c5, 0x313, 0x300, 0x0, 0x3c5, 0x313, 0x301, 0x0, 0x3c5, 0x313, 0x342, 0x0, 0x3c5, 0x314, 0x0, 0x3c5, 0x314, 0x300, 0x0, 0x3c5, 0x314, 0x301, 0x0, 0x3c5, 0x314, 0x342, 0x0, 0x3c5, 0x342, 0x0, 0x3c6, 0x0, 0x3c7, 0x0, 0x3c8, 0x0, 0x3c9, 0x0, 0x3c9, 0x300, 0x0, 0x3c9, 0x300, 0x345, 0x0, 0x3c9, 0x301, 0x0, 0x3c9, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x0, 0x3c9, 0x313, 0x300, 0x0, 0x3c9, 0x313, 0x300, 0x345, 0x0, 0x3c9, 0x313, 0x301, 0x0, 0x3c9, 0x313, 0x301, 0x345, 0x0, 0x3c9, 0x313, 0x342, 0x0, 0x3c9, 0x313, 0x342, 0x345, 0x0, 0x3c9, 0x313, 0x345, 0x0, 0x3c9, 0x314, 0x0, 0x3c9, 0x314, 0x300, 0x0, 0x3c9, 0x314, 0x300, 0x345, 0x0, 0x3c9, 0x314, 0x301, 0x0, 0x3c9, 0x314, 0x301, 0x345, 0x0, 0x3c9, 0x314, 0x342, 0x0, 0x3c9, 0x314, 0x342, 0x345, 0x0, 0x3c9, 0x314, 0x345, 0x0, 0x3c9, 0x342, 0x0, 0x3c9, 0x342, 0x345, 0x0, 0x3c9, 0x345, 0x0, 0x3dc, 0x0, 0x3dd, 0x0, 0x406, 0x308, 0x0, 0x410, 0x306, 0x0, 0x410, 0x308, 0x0, 0x413, 0x301, 0x0, 0x415, 0x300, 0x0, 0x415, 0x306, 0x0, 0x415, 0x308, 0x0, 0x416, 0x306, 0x0, 0x416, 0x308, 0x0, 0x417, 0x308, 0x0, 0x418, 0x300, 0x0, 0x418, 0x304, 0x0, 0x418, 0x306, 0x0, 0x418, 0x308, 0x0, 0x41a, 0x301, 0x0, 0x41e, 0x308, 0x0, 0x423, 0x304, 0x0, 0x423, 0x306, 0x0, 0x423, 0x308, 0x0, 0x423, 0x30b, 0x0, 0x427, 0x308, 0x0, 0x42b, 0x308, 0x0, 0x42d, 0x308, 0x0, 0x430, 0x0, 0x430, 0x306, 0x0, 0x430, 0x308, 0x0, 0x431, 0x0, 0x432, 0x0, 0x433, 0x0, 0x433, 0x301, 0x0, 0x434, 0x0, 0x435, 0x0, 0x435, 0x300, 0x0, 0x435, 0x306, 0x0, 0x435, 0x308, 0x0, 0x436, 0x0, 0x436, 0x306, 0x0, 0x436, 0x308, 0x0, 0x437, 0x0, 0x437, 0x308, 0x0, 0x438, 0x0, 0x438, 0x300, 0x0, 0x438, 0x304, 0x0, 0x438, 0x306, 0x0, 0x438, 0x308, 0x0, 0x43a, 0x0, 0x43a, 0x301, 0x0, 0x43b, 0x0, 0x43c, 0x0, 0x43d, 0x0, 0x43e, 0x0, 0x43e, 0x308, 0x0, 0x43f, 0x0, 0x440, 0x0, 0x441, 0x0, 0x442, 0x0, 0x443, 0x0, 0x443, 0x304, 0x0, 0x443, 0x306, 0x0, 0x443, 0x308, 0x0, 0x443, 0x30b, 0x0, 0x444, 0x0, 0x445, 0x0, 0x446, 0x0, 0x447, 0x0, 0x447, 0x308, 0x0, 0x448, 0x0, 0x44a, 0x0, 0x44b, 0x0, 0x44b, 0x308, 0x0, 0x44c, 0x0, 0x44d, 0x0, 0x44d, 0x308, 0x0, 0x44e, 0x0, 0x455, 0x0, 0x456, 0x0, 0x456, 0x308, 0x0, 0x458, 0x0, 0x45f, 0x0, 0x474, 0x30f, 0x0, 0x475, 0x30f, 0x0, 0x491, 0x0, 0x4ab, 0x0, 0x4af, 0x0, 0x4b1, 0x0, 0x4cf, 0x0, 0x4d8, 0x308, 0x0, 0x4d9, 0x0, 0x4d9, 0x308, 0x0, 0x4e8, 0x308, 0x0, 0x4e9, 0x0, 0x4e9, 0x308, 0x0, 0x565, 0x582, 0x0, 0x574, 0x565, 0x0, 0x574, 0x56b, 0x0, 0x574, 0x56d, 0x0, 0x574, 0x576, 0x0, 0x57e, 0x576, 0x0, 0x5d0, 0x0, 0x5d0, 0x5b7, 0x0, 0x5d0, 0x5b8, 0x0, 0x5d0, 0x5bc, 0x0, 0x5d0, 0x5dc, 0x0, 0x5d1, 0x0, 0x5d1, 0x5bc, 0x0, 0x5d1, 0x5bf, 0x0, 0x5d2, 0x0, 0x5d2, 0x5bc, 0x0, 0x5d3, 0x0, 0x5d3, 0x5bc, 0x0, 0x5d4, 0x0, 0x5d4, 0x5bc, 0x0, 0x5d5, 0x5b9, 0x0, 0x5d5, 0x5bc, 0x0, 0x5d6, 0x5bc, 0x0, 0x5d8, 0x5bc, 0x0, 0x5d9, 0x5b4, 0x0, 0x5d9, 0x5bc, 0x0, 0x5da, 0x5bc, 0x0, 0x5db, 0x0, 0x5db, 0x5bc, 0x0, 0x5db, 0x5bf, 0x0, 0x5dc, 0x0, 0x5dc, 0x5bc, 0x0, 0x5dd, 0x0, 0x5de, 0x5bc, 0x0, 0x5e0, 0x5bc, 0x0, 0x5e1, 0x5bc, 0x0, 0x5e2, 0x0, 0x5e3, 0x5bc, 0x0, 0x5e4, 0x5bc, 0x0, 0x5e4, 0x5bf, 0x0, 0x5e6, 0x5bc, 0x0, 0x5e7, 0x5bc, 0x0, 0x5e8, 0x0, 0x5e8, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x0, 0x5e9, 0x5bc, 0x5c1, 0x0, 0x5e9, 0x5bc, 0x5c2, 0x0, 0x5e9, 0x5c1, 0x0, 0x5e9, 0x5c2, 0x0, 0x5ea, 0x0, 0x5ea, 0x5bc, 0x0, 0x5f2, 0x5b7, 0x0, 0x621, 0x0, 0x627, 0x0, 0x627, 0x643, 0x628, 0x631, 0x0, 0x627, 0x644, 0x644, 0x647, 0x0, 0x627, 0x64b, 0x0, 0x627, 0x653, 0x0, 0x627, 0x654, 0x0, 0x627, 0x655, 0x0, 0x627, 0x674, 0x0, 0x628, 0x0, 0x628, 0x62c, 0x0, 0x628, 0x62d, 0x0, 0x628, 0x62d, 0x64a, 0x0, 0x628, 0x62e, 0x0, 0x628, 0x62e, 0x64a, 0x0, 0x628, 0x631, 0x0, 0x628, 0x632, 0x0, 0x628, 0x645, 0x0, 0x628, 0x646, 0x0, 0x628, 0x647, 0x0, 0x628, 0x649, 0x0, 0x628, 0x64a, 0x0, 0x629, 0x0, 0x62a, 0x0, 0x62a, 0x62c, 0x0, 0x62a, 0x62c, 0x645, 0x0, 0x62a, 0x62c, 0x649, 0x0, 0x62a, 0x62c, 0x64a, 0x0, 0x62a, 0x62d, 0x0, 0x62a, 0x62d, 0x62c, 0x0, 0x62a, 0x62d, 0x645, 0x0, 0x62a, 0x62e, 0x0, 0x62a, 0x62e, 0x645, 0x0, 0x62a, 0x62e, 0x649, 0x0, 0x62a, 0x62e, 0x64a, 0x0, 0x62a, 0x631, 0x0, 0x62a, 0x632, 0x0, 0x62a, 0x645, 0x0, 0x62a, 0x645, 0x62c, 0x0, 0x62a, 0x645, 0x62d, 0x0, 0x62a, 0x645, 0x62e, 0x0, 0x62a, 0x645, 0x649, 0x0, 0x62a, 0x645, 0x64a, 0x0, 0x62a, 0x646, 0x0, 0x62a, 0x647, 0x0, 0x62a, 0x649, 0x0, 0x62a, 0x64a, 0x0, 0x62b, 0x0, 0x62b, 0x62c, 0x0, 0x62b, 0x631, 0x0, 0x62b, 0x632, 0x0, 0x62b, 0x645, 0x0, 0x62b, 0x646, 0x0, 0x62b, 0x647, 0x0, 0x62b, 0x649, 0x0, 0x62b, 0x64a, 0x0, 0x62c, 0x0, 0x62c, 0x62d, 0x0, 0x62c, 0x62d, 0x649, 0x0, 0x62c, 0x62d, 0x64a, 0x0, 0x62c, 0x644, 0x20, 0x62c, 0x644, 0x627, 0x644, 0x647, 0x0, 0x62c, 0x645, 0x0, 0x62c, 0x645, 0x62d, 0x0, 0x62c, 0x645, 0x649, 0x0, 0x62c, 0x645, 0x64a, 0x0, 0x62c, 0x649, 0x0, 0x62c, 0x64a, 0x0, 0x62d, 0x0, 0x62d, 0x62c, 0x0, 0x62d, 0x62c, 0x64a, 0x0, 0x62d, 0x645, 0x0, 0x62d, 0x645, 0x649, 0x0, 0x62d, 0x645, 0x64a, 0x0, 0x62d, 0x649, 0x0, 0x62d, 0x64a, 0x0, 0x62e, 0x0, 0x62e, 0x62c, 0x0, 0x62e, 0x62d, 0x0, 0x62e, 0x645, 0x0, 0x62e, 0x649, 0x0, 0x62e, 0x64a, 0x0, 0x62f, 0x0, 0x630, 0x0, 0x630, 0x670, 0x0, 0x631, 0x0, 0x631, 0x633, 0x648, 0x644, 0x0, 0x631, 0x670, 0x0, 0x631, 0x6cc, 0x627, 0x644, 0x0, 0x632, 0x0, 0x633, 0x0, 0x633, 0x62c, 0x0, 0x633, 0x62c, 0x62d, 0x0, 0x633, 0x62c, 0x649, 0x0, 0x633, 0x62d, 0x0, 0x633, 0x62d, 0x62c, 0x0, 0x633, 0x62e, 0x0, 0x633, 0x62e, 0x649, 0x0, 0x633, 0x62e, 0x64a, 0x0, 0x633, 0x631, 0x0, 0x633, 0x645, 0x0, 0x633, 0x645, 0x62c, 0x0, 0x633, 0x645, 0x62d, 0x0, 0x633, 0x645, 0x645, 0x0, 0x633, 0x647, 0x0, 0x633, 0x649, 0x0, 0x633, 0x64a, 0x0, 0x634, 0x0, 0x634, 0x62c, 0x0, 0x634, 0x62c, 0x64a, 0x0, 0x634, 0x62d, 0x0, 0x634, 0x62d, 0x645, 0x0, 0x634, 0x62d, 0x64a, 0x0, 0x634, 0x62e, 0x0, 0x634, 0x631, 0x0, 0x634, 0x645, 0x0, 0x634, 0x645, 0x62e, 0x0, 0x634, 0x645, 0x645, 0x0, 0x634, 0x647, 0x0, 0x634, 0x649, 0x0, 0x634, 0x64a, 0x0, 0x635, 0x0, 0x635, 0x62d, 0x0, 0x635, 0x62d, 0x62d, 0x0, 0x635, 0x62d, 0x64a, 0x0, 0x635, 0x62e, 0x0, 0x635, 0x631, 0x0, 0x635, 0x644, 0x639, 0x645, 0x0, 0x635, 0x644, 0x649, 0x0, 0x635, 0x644, 0x649, 0x20, 0x627, 0x644, 0x644, 0x647, 0x20, 0x639, 0x644, 0x64a, 0x647, 0x20, 0x648, 0x633, 0x644, 0x645, 0x0, 0x635, 0x644, 0x6d2, 0x0, 0x635, 0x645, 0x0, 0x635, 0x645, 0x645, 0x0, 0x635, 0x649, 0x0, 0x635, 0x64a, 0x0, 0x636, 0x0, 0x636, 0x62c, 0x0, 0x636, 0x62d, 0x0, 0x636, 0x62d, 0x649, 0x0, 0x636, 0x62d, 0x64a, 0x0, 0x636, 0x62e, 0x0, 0x636, 0x62e, 0x645, 0x0, 0x636, 0x631, 0x0, 0x636, 0x645, 0x0, 0x636, 0x649, 0x0, 0x636, 0x64a, 0x0, 0x637, 0x0, 0x637, 0x62d, 0x0, 0x637, 0x645, 0x0, 0x637, 0x645, 0x62d, 0x0, 0x637, 0x645, 0x645, 0x0, 0x637, 0x645, 0x64a, 0x0, 0x637, 0x649, 0x0, 0x637, 0x64a, 0x0, 0x638, 0x0, 0x638, 0x645, 0x0, 0x639, 0x0, 0x639, 0x62c, 0x0, 0x639, 0x62c, 0x645, 0x0, 0x639, 0x644, 0x64a, 0x647, 0x0, 0x639, 0x645, 0x0, 0x639, 0x645, 0x645, 0x0, 0x639, 0x645, 0x649, 0x0, 0x639, 0x645, 0x64a, 0x0, 0x639, 0x649, 0x0, 0x639, 0x64a, 0x0, 0x63a, 0x0, 0x63a, 0x62c, 0x0, 0x63a, 0x645, 0x0, 0x63a, 0x645, 0x645, 0x0, 0x63a, 0x645, 0x649, 0x0, 0x63a, 0x645, 0x64a, 0x0, 0x63a, 0x649, 0x0, 0x63a, 0x64a, 0x0, 0x640, 0x64b, 0x0, 0x640, 0x64e, 0x0, 0x640, 0x64e, 0x651, 0x0, 0x640, 0x64f, 0x0, 0x640, 0x64f, 0x651, 0x0, 0x640, 0x650, 0x0, 0x640, 0x650, 0x651, 0x0, 0x640, 0x651, 0x0, 0x640, 0x652, 0x0, 0x641, 0x0, 0x641, 0x62c, 0x0, 0x641, 0x62d, 0x0, 0x641, 0x62e, 0x0, 0x641, 0x62e, 0x645, 0x0, 0x641, 0x645, 0x0, 0x641, 0x645, 0x64a, 0x0, 0x641, 0x649, 0x0, 0x641, 0x64a, 0x0, 0x642, 0x0, 0x642, 0x62d, 0x0, 0x642, 0x644, 0x6d2, 0x0, 0x642, 0x645, 0x0, 0x642, 0x645, 0x62d, 0x0, 0x642, 0x645, 0x645, 0x0, 0x642, 0x645, 0x64a, 0x0, 0x642, 0x649, 0x0, 0x642, 0x64a, 0x0, 0x643, 0x0, 0x643, 0x627, 0x0, 0x643, 0x62c, 0x0, 0x643, 0x62d, 0x0, 0x643, 0x62e, 0x0, 0x643, 0x644, 0x0, 0x643, 0x645, 0x0, 0x643, 0x645, 0x645, 0x0, 0x643, 0x645, 0x64a, 0x0, 0x643, 0x649, 0x0, 0x643, 0x64a, 0x0, 0x644, 0x0, 0x644, 0x627, 0x0, 0x644, 0x627, 0x653, 0x0, 0x644, 0x627, 0x654, 0x0, 0x644, 0x627, 0x655, 0x0, 0x644, 0x62c, 0x0, 0x644, 0x62c, 0x62c, 0x0, 0x644, 0x62c, 0x645, 0x0, 0x644, 0x62c, 0x64a, 0x0, 0x644, 0x62d, 0x0, 0x644, 0x62d, 0x645, 0x0, 0x644, 0x62d, 0x649, 0x0, 0x644, 0x62d, 0x64a, 0x0, 0x644, 0x62e, 0x0, 0x644, 0x62e, 0x645, 0x0, 0x644, 0x645, 0x0, 0x644, 0x645, 0x62d, 0x0, 0x644, 0x645, 0x64a, 0x0, 0x644, 0x647, 0x0, 0x644, 0x649, 0x0, 0x644, 0x64a, 0x0, 0x645, 0x0, 0x645, 0x627, 0x0, 0x645, 0x62c, 0x0, 0x645, 0x62c, 0x62d, 0x0, 0x645, 0x62c, 0x62e, 0x0, 0x645, 0x62c, 0x645, 0x0, 0x645, 0x62c, 0x64a, 0x0, 0x645, 0x62d, 0x0, 0x645, 0x62d, 0x62c, 0x0, 0x645, 0x62d, 0x645, 0x0, 0x645, 0x62d, 0x645, 0x62f, 0x0, 0x645, 0x62d, 0x64a, 0x0, 0x645, 0x62e, 0x0, 0x645, 0x62e, 0x62c, 0x0, 0x645, 0x62e, 0x645, 0x0, 0x645, 0x62e, 0x64a, 0x0, 0x645, 0x645, 0x0, 0x645, 0x645, 0x64a, 0x0, 0x645, 0x649, 0x0, 0x645, 0x64a, 0x0, 0x646, 0x0, 0x646, 0x62c, 0x0, 0x646, 0x62c, 0x62d, 0x0, 0x646, 0x62c, 0x645, 0x0, 0x646, 0x62c, 0x649, 0x0, 0x646, 0x62c, 0x64a, 0x0, 0x646, 0x62d, 0x0, 0x646, 0x62d, 0x645, 0x0, 0x646, 0x62d, 0x649, 0x0, 0x646, 0x62d, 0x64a, 0x0, 0x646, 0x62e, 0x0, 0x646, 0x631, 0x0, 0x646, 0x632, 0x0, 0x646, 0x645, 0x0, 0x646, 0x645, 0x649, 0x0, 0x646, 0x645, 0x64a, 0x0, 0x646, 0x646, 0x0, 0x646, 0x647, 0x0, 0x646, 0x649, 0x0, 0x646, 0x64a, 0x0, 0x647, 0x0, 0x647, 0x62c, 0x0, 0x647, 0x645, 0x0, 0x647, 0x645, 0x62c, 0x0, 0x647, 0x645, 0x645, 0x0, 0x647, 0x649, 0x0, 0x647, 0x64a, 0x0, 0x647, 0x670, 0x0, 0x648, 0x0, 0x648, 0x633, 0x644, 0x645, 0x0, 0x648, 0x654, 0x0, 0x648, 0x674, 0x0, 0x649, 0x0, 0x649, 0x670, 0x0, 0x64a, 0x0, 0x64a, 0x62c, 0x0, 0x64a, 0x62c, 0x64a, 0x0, 0x64a, 0x62d, 0x0, 0x64a, 0x62d, 0x64a, 0x0, 0x64a, 0x62e, 0x0, 0x64a, 0x631, 0x0, 0x64a, 0x632, 0x0, 0x64a, 0x645, 0x0, 0x64a, 0x645, 0x645, 0x0, 0x64a, 0x645, 0x64a, 0x0, 0x64a, 0x646, 0x0, 0x64a, 0x647, 0x0, 0x64a, 0x649, 0x0, 0x64a, 0x64a, 0x0, 0x64a, 0x654, 0x0, 0x64a, 0x654, 0x627, 0x0, 0x64a, 0x654, 0x62c, 0x0, 0x64a, 0x654, 0x62d, 0x0, 0x64a, 0x654, 0x62e, 0x0, 0x64a, 0x654, 0x631, 0x0, 0x64a, 0x654, 0x632, 0x0, 0x64a, 0x654, 0x645, 0x0, 0x64a, 0x654, 0x646, 0x0, 0x64a, 0x654, 0x647, 0x0, 0x64a, 0x654, 0x648, 0x0, 0x64a, 0x654, 0x649, 0x0, 0x64a, 0x654, 0x64a, 0x0, 0x64a, 0x654, 0x6c6, 0x0, 0x64a, 0x654, 0x6c7, 0x0, 0x64a, 0x654, 0x6c8, 0x0, 0x64a, 0x654, 0x6d0, 0x0, 0x64a, 0x654, 0x6d5, 0x0, 0x64a, 0x674, 0x0, 0x66e, 0x0, 0x66f, 0x0, 0x671, 0x0, 0x679, 0x0, 0x67a, 0x0, 0x67b, 0x0, 0x67e, 0x0, 0x67f, 0x0, 0x680, 0x0, 0x683, 0x0, 0x684, 0x0, 0x686, 0x0, 0x687, 0x0, 0x688, 0x0, 0x68c, 0x0, 0x68d, 0x0, 0x68e, 0x0, 0x691, 0x0, 0x698, 0x0, 0x6a1, 0x0, 0x6a4, 0x0, 0x6a6, 0x0, 0x6a9, 0x0, 0x6ad, 0x0, 0x6af, 0x0, 0x6b1, 0x0, 0x6b3, 0x0, 0x6ba, 0x0, 0x6bb, 0x0, 0x6be, 0x0, 0x6c1, 0x0, 0x6c1, 0x654, 0x0, 0x6c5, 0x0, 0x6c6, 0x0, 0x6c7, 0x0, 0x6c7, 0x674, 0x0, 0x6c8, 0x0, 0x6c9, 0x0, 0x6cb, 0x0, 0x6cc, 0x0, 0x6d0, 0x0, 0x6d2, 0x0, 0x6d2, 0x654, 0x0, 0x6d5, 0x654, 0x0, 0x915, 0x93c, 0x0, 0x916, 0x93c, 0x0, 0x917, 0x93c, 0x0, 0x91c, 0x93c, 0x0, 0x921, 0x93c, 0x0, 0x922, 0x93c, 0x0, 0x928, 0x93c, 0x0, 0x92b, 0x93c, 0x0, 0x92f, 0x93c, 0x0, 0x930, 0x93c, 0x0, 0x933, 0x93c, 0x0, 0x9a1, 0x9bc, 0x0, 0x9a2, 0x9bc, 0x0, 0x9af, 0x9bc, 0x0, 0x9c7, 0x9be, 0x0, 0x9c7, 0x9d7, 0x0, 0xa16, 0xa3c, 0x0, 0xa17, 0xa3c, 0x0, 0xa1c, 0xa3c, 0x0, 0xa2b, 0xa3c, 0x0, 0xa32, 0xa3c, 0x0, 0xa38, 0xa3c, 0x0, 0xb21, 0xb3c, 0x0, 0xb22, 0xb3c, 0x0, 0xb47, 0xb3e, 0x0, 0xb47, 0xb56, 0x0, 0xb47, 0xb57, 0x0, 0xb92, 0xbd7, 0x0, 0xbc6, 0xbbe, 0x0, 0xbc6, 0xbd7, 0x0, 0xbc7, 0xbbe, 0x0, 0xc46, 0xc56, 0x0, 0xcbf, 0xcd5, 0x0, 0xcc6, 0xcc2, 0x0, 0xcc6, 0xcc2, 0xcd5, 0x0, 0xcc6, 0xcd5, 0x0, 0xcc6, 0xcd6, 0x0, 0xd46, 0xd3e, 0x0, 0xd46, 0xd57, 0x0, 0xd47, 0xd3e, 0x0, 0xdd9, 0xdca, 0x0, 0xdd9, 0xdcf, 0x0, 0xdd9, 0xdcf, 0xdca, 0x0, 0xdd9, 0xddf, 0x0, 0xe4d, 0xe32, 0x0, 0xeab, 0xe99, 0x0, 0xeab, 0xea1, 0x0, 0xecd, 0xeb2, 0x0, 0xf0b, 0x0, 0xf40, 0xfb5, 0x0, 0xf42, 0xfb7, 0x0, 0xf4c, 0xfb7, 0x0, 0xf51, 0xfb7, 0x0, 0xf56, 0xfb7, 0x0, 0xf5b, 0xfb7, 0x0, 0xf71, 0xf72, 0x0, 0xf71, 0xf74, 0x0, 0xf71, 0xf80, 0x0, 0xf90, 0xfb5, 0x0, 0xf92, 0xfb7, 0x0, 0xf9c, 0xfb7, 0x0, 0xfa1, 0xfb7, 0x0, 0xfa6, 0xfb7, 0x0, 0xfab, 0xfb7, 0x0, 0xfb2, 0xf71, 0xf80, 0x0, 0xfb2, 0xf80, 0x0, 0xfb3, 0xf71, 0xf80, 0x0, 0xfb3, 0xf80, 0x0, 0x1025, 0x102e, 0x0, 0x10dc, 0x0, 0x1100, 0x0, 0x1100, 0x1161, 0x0, 0x1101, 0x0, 0x1102, 0x0, 0x1102, 0x1161, 0x0, 0x1103, 0x0, 0x1103, 0x1161, 0x0, 0x1104, 0x0, 0x1105, 0x0, 0x1105, 0x1161, 0x0, 0x1106, 0x0, 0x1106, 0x1161, 0x0, 0x1107, 0x0, 0x1107, 0x1161, 0x0, 0x1108, 0x0, 0x1109, 0x0, 0x1109, 0x1161, 0x0, 0x110a, 0x0, 0x110b, 0x0, 0x110b, 0x1161, 0x0, 0x110b, 0x116e, 0x0, 0x110c, 0x0, 0x110c, 0x1161, 0x0, 0x110c, 0x116e, 0x110b, 0x1174, 0x0, 0x110d, 0x0, 0x110e, 0x0, 0x110e, 0x1161, 0x0, 0x110e, 0x1161, 0x11b7, 0x1100, 0x1169, 0x0, 0x110f, 0x0, 0x110f, 0x1161, 0x0, 0x1110, 0x0, 0x1110, 0x1161, 0x0, 0x1111, 0x0, 0x1111, 0x1161, 0x0, 0x1112, 0x0, 0x1112, 0x1161, 0x0, 0x1114, 0x0, 0x1115, 0x0, 0x111a, 0x0, 0x111c, 0x0, 0x111d, 0x0, 0x111e, 0x0, 0x1120, 0x0, 0x1121, 0x0, 0x1122, 0x0, 0x1123, 0x0, 0x1127, 0x0, 0x1129, 0x0, 0x112b, 0x0, 0x112c, 0x0, 0x112d, 0x0, 0x112e, 0x0, 0x112f, 0x0, 0x1132, 0x0, 0x1136, 0x0, 0x1140, 0x0, 0x1147, 0x0, 0x114c, 0x0, 0x1157, 0x0, 0x1158, 0x0, 0x1159, 0x0, 0x1160, 0x0, 0x1161, 0x0, 0x1162, 0x0, 0x1163, 0x0, 0x1164, 0x0, 0x1165, 0x0, 0x1166, 0x0, 0x1167, 0x0, 0x1168, 0x0, 0x1169, 0x0, 0x116a, 0x0, 0x116b, 0x0, 0x116c, 0x0, 0x116d, 0x0, 0x116e, 0x0, 0x116f, 0x0, 0x1170, 0x0, 0x1171, 0x0, 0x1172, 0x0, 0x1173, 0x0, 0x1174, 0x0, 0x1175, 0x0, 0x1184, 0x0, 0x1185, 0x0, 0x1188, 0x0, 0x1191, 0x0, 0x1192, 0x0, 0x1194, 0x0, 0x119e, 0x0, 0x11a1, 0x0, 0x11aa, 0x0, 0x11ac, 0x0, 0x11ad, 0x0, 0x11b0, 0x0, 0x11b1, 0x0, 0x11b2, 0x0, 0x11b3, 0x0, 0x11b4, 0x0, 0x11b5, 0x0, 0x11c7, 0x0, 0x11c8, 0x0, 0x11cc, 0x0, 0x11ce, 0x0, 0x11d3, 0x0, 0x11d7, 0x0, 0x11d9, 0x0, 0x11dd, 0x0, 0x11df, 0x0, 0x11f1, 0x0, 0x11f2, 0x0, 0x1b05, 0x1b35, 0x0, 0x1b07, 0x1b35, 0x0, 0x1b09, 0x1b35, 0x0, 0x1b0b, 0x1b35, 0x0, 0x1b0d, 0x1b35, 0x0, 0x1b11, 0x1b35, 0x0, 0x1b3a, 0x1b35, 0x0, 0x1b3c, 0x1b35, 0x0, 0x1b3e, 0x1b35, 0x0, 0x1b3f, 0x1b35, 0x0, 0x1b42, 0x1b35, 0x0, 0x1d02, 0x0, 0x1d16, 0x0, 0x1d17, 0x0, 0x1d1c, 0x0, 0x1d1d, 0x0, 0x1d25, 0x0, 0x1d7b, 0x0, 0x1d85, 0x0, 0x1d91, 0x0, 0x2010, 0x0, 0x2013, 0x0, 0x2014, 0x0, 0x2032, 0x2032, 0x0, 0x2032, 0x2032, 0x2032, 0x0, 0x2032, 0x2032, 0x2032, 0x2032, 0x0, 0x2035, 0x2035, 0x0, 0x2035, 0x2035, 0x2035, 0x0, 0x20a9, 0x0, 0x2190, 0x0, 0x2190, 0x338, 0x0, 0x2191, 0x0, 0x2192, 0x0, 0x2192, 0x338, 0x0, 0x2193, 0x0, 0x2194, 0x338, 0x0, 0x21d0, 0x338, 0x0, 0x21d2, 0x338, 0x0, 0x21d4, 0x338, 0x0, 0x2202, 0x0, 0x2203, 0x338, 0x0, 0x2207, 0x0, 0x2208, 0x338, 0x0, 0x220b, 0x338, 0x0, 0x2211, 0x0, 0x2212, 0x0, 0x2223, 0x338, 0x0, 0x2225, 0x338, 0x0, 0x222b, 0x222b, 0x0, 0x222b, 0x222b, 0x222b, 0x0, 0x222b, 0x222b, 0x222b, 0x222b, 0x0, 0x222e, 0x222e, 0x0, 0x222e, 0x222e, 0x222e, 0x0, 0x223c, 0x338, 0x0, 0x2243, 0x338, 0x0, 0x2245, 0x338, 0x0, 0x2248, 0x338, 0x0, 0x224d, 0x338, 0x0, 0x2261, 0x338, 0x0, 0x2264, 0x338, 0x0, 0x2265, 0x338, 0x0, 0x2272, 0x338, 0x0, 0x2273, 0x338, 0x0, 0x2276, 0x338, 0x0, 0x2277, 0x338, 0x0, 0x227a, 0x338, 0x0, 0x227b, 0x338, 0x0, 0x227c, 0x338, 0x0, 0x227d, 0x338, 0x0, 0x2282, 0x338, 0x0, 0x2283, 0x338, 0x0, 0x2286, 0x338, 0x0, 0x2287, 0x338, 0x0, 0x2291, 0x338, 0x0, 0x2292, 0x338, 0x0, 0x22a2, 0x338, 0x0, 0x22a8, 0x338, 0x0, 0x22a9, 0x338, 0x0, 0x22ab, 0x338, 0x0, 0x22b2, 0x338, 0x0, 0x22b3, 0x338, 0x0, 0x22b4, 0x338, 0x0, 0x22b5, 0x338, 0x0, 0x2502, 0x0, 0x25a0, 0x0, 0x25cb, 0x0, 0x2985, 0x0, 0x2986, 0x0, 0x2add, 0x338, 0x0, 0x2c71, 0x0, 0x2d61, 0x0, 0x3001, 0x0, 0x3002, 0x0, 0x3008, 0x0, 0x3009, 0x0, 0x300a, 0x0, 0x300b, 0x0, 0x300c, 0x0, 0x300d, 0x0, 0x300e, 0x0, 0x300f, 0x0, 0x3010, 0x0, 0x3011, 0x0, 0x3012, 0x0, 0x3014, 0x0, 0x3014, 0x53, 0x3015, 0x0, 0x3014, 0x4e09, 0x3015, 0x0, 0x3014, 0x4e8c, 0x3015, 0x0, 0x3014, 0x52dd, 0x3015, 0x0, 0x3014, 0x5b89, 0x3015, 0x0, 0x3014, 0x6253, 0x3015, 0x0, 0x3014, 0x6557, 0x3015, 0x0, 0x3014, 0x672c, 0x3015, 0x0, 0x3014, 0x70b9, 0x3015, 0x0, 0x3014, 0x76d7, 0x3015, 0x0, 0x3015, 0x0, 0x3016, 0x0, 0x3017, 0x0, 0x3046, 0x3099, 0x0, 0x304b, 0x3099, 0x0, 0x304d, 0x3099, 0x0, 0x304f, 0x3099, 0x0, 0x3051, 0x3099, 0x0, 0x3053, 0x3099, 0x0, 0x3055, 0x3099, 0x0, 0x3057, 0x3099, 0x0, 0x3059, 0x3099, 0x0, 0x305b, 0x3099, 0x0, 0x305d, 0x3099, 0x0, 0x305f, 0x3099, 0x0, 0x3061, 0x3099, 0x0, 0x3064, 0x3099, 0x0, 0x3066, 0x3099, 0x0, 0x3068, 0x3099, 0x0, 0x306f, 0x3099, 0x0, 0x306f, 0x309a, 0x0, 0x3072, 0x3099, 0x0, 0x3072, 0x309a, 0x0, 0x3075, 0x3099, 0x0, 0x3075, 0x309a, 0x0, 0x3078, 0x3099, 0x0, 0x3078, 0x309a, 0x0, 0x307b, 0x304b, 0x0, 0x307b, 0x3099, 0x0, 0x307b, 0x309a, 0x0, 0x3088, 0x308a, 0x0, 0x3099, 0x0, 0x309a, 0x0, 0x309d, 0x3099, 0x0, 0x30a1, 0x0, 0x30a2, 0x0, 0x30a2, 0x30cf, 0x309a, 0x30fc, 0x30c8, 0x0, 0x30a2, 0x30eb, 0x30d5, 0x30a1, 0x0, 0x30a2, 0x30f3, 0x30d8, 0x309a, 0x30a2, 0x0, 0x30a2, 0x30fc, 0x30eb, 0x0, 0x30a3, 0x0, 0x30a4, 0x0, 0x30a4, 0x30cb, 0x30f3, 0x30af, 0x3099, 0x0, 0x30a4, 0x30f3, 0x30c1, 0x0, 0x30a5, 0x0, 0x30a6, 0x0, 0x30a6, 0x3099, 0x0, 0x30a6, 0x30a9, 0x30f3, 0x0, 0x30a7, 0x0, 0x30a8, 0x0, 0x30a8, 0x30b9, 0x30af, 0x30fc, 0x30c8, 0x3099, 0x0, 0x30a8, 0x30fc, 0x30ab, 0x30fc, 0x0, 0x30a9, 0x0, 0x30aa, 0x0, 0x30aa, 0x30f3, 0x30b9, 0x0, 0x30aa, 0x30fc, 0x30e0, 0x0, 0x30ab, 0x0, 0x30ab, 0x3099, 0x0, 0x30ab, 0x3099, 0x30ed, 0x30f3, 0x0, 0x30ab, 0x3099, 0x30f3, 0x30de, 0x0, 0x30ab, 0x30a4, 0x30ea, 0x0, 0x30ab, 0x30e9, 0x30c3, 0x30c8, 0x0, 0x30ab, 0x30ed, 0x30ea, 0x30fc, 0x0, 0x30ad, 0x0, 0x30ad, 0x3099, 0x0, 0x30ad, 0x3099, 0x30ab, 0x3099, 0x0, 0x30ad, 0x3099, 0x30cb, 0x30fc, 0x0, 0x30ad, 0x3099, 0x30eb, 0x30bf, 0x3099, 0x30fc, 0x0, 0x30ad, 0x30e5, 0x30ea, 0x30fc, 0x0, 0x30ad, 0x30ed, 0x0, 0x30ad, 0x30ed, 0x30af, 0x3099, 0x30e9, 0x30e0, 0x0, 0x30ad, 0x30ed, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x0, 0x30ad, 0x30ed, 0x30ef, 0x30c3, 0x30c8, 0x0, 0x30af, 0x0, 0x30af, 0x3099, 0x0, 0x30af, 0x3099, 0x30e9, 0x30e0, 0x0, 0x30af, 0x3099, 0x30e9, 0x30e0, 0x30c8, 0x30f3, 0x0, 0x30af, 0x30eb, 0x30bb, 0x3099, 0x30a4, 0x30ed, 0x0, 0x30af, 0x30ed, 0x30fc, 0x30cd, 0x0, 0x30b1, 0x0, 0x30b1, 0x3099, 0x0, 0x30b1, 0x30fc, 0x30b9, 0x0, 0x30b3, 0x0, 0x30b3, 0x3099, 0x0, 0x30b3, 0x30b3, 0x0, 0x30b3, 0x30c8, 0x0, 0x30b3, 0x30eb, 0x30ca, 0x0, 0x30b3, 0x30fc, 0x30db, 0x309a, 0x0, 0x30b5, 0x0, 0x30b5, 0x3099, 0x0, 0x30b5, 0x30a4, 0x30af, 0x30eb, 0x0, 0x30b5, 0x30f3, 0x30c1, 0x30fc, 0x30e0, 0x0, 0x30b7, 0x0, 0x30b7, 0x3099, 0x0, 0x30b7, 0x30ea, 0x30f3, 0x30af, 0x3099, 0x0, 0x30b9, 0x0, 0x30b9, 0x3099, 0x0, 0x30bb, 0x0, 0x30bb, 0x3099, 0x0, 0x30bb, 0x30f3, 0x30c1, 0x0, 0x30bb, 0x30f3, 0x30c8, 0x0, 0x30bd, 0x0, 0x30bd, 0x3099, 0x0, 0x30bf, 0x0, 0x30bf, 0x3099, 0x0, 0x30bf, 0x3099, 0x30fc, 0x30b9, 0x0, 0x30c1, 0x0, 0x30c1, 0x3099, 0x0, 0x30c3, 0x0, 0x30c4, 0x0, 0x30c4, 0x3099, 0x0, 0x30c6, 0x0, 0x30c6, 0x3099, 0x0, 0x30c6, 0x3099, 0x30b7, 0x0, 0x30c8, 0x0, 0x30c8, 0x3099, 0x0, 0x30c8, 0x3099, 0x30eb, 0x0, 0x30c8, 0x30f3, 0x0, 0x30ca, 0x0, 0x30ca, 0x30ce, 0x0, 0x30cb, 0x0, 0x30cc, 0x0, 0x30cd, 0x0, 0x30ce, 0x0, 0x30ce, 0x30c3, 0x30c8, 0x0, 0x30cf, 0x0, 0x30cf, 0x3099, 0x0, 0x30cf, 0x3099, 0x30fc, 0x30ec, 0x30eb, 0x0, 0x30cf, 0x309a, 0x0, 0x30cf, 0x309a, 0x30fc, 0x30bb, 0x30f3, 0x30c8, 0x0, 0x30cf, 0x309a, 0x30fc, 0x30c4, 0x0, 0x30cf, 0x30a4, 0x30c4, 0x0, 0x30d2, 0x0, 0x30d2, 0x3099, 0x0, 0x30d2, 0x3099, 0x30eb, 0x0, 0x30d2, 0x309a, 0x0, 0x30d2, 0x309a, 0x30a2, 0x30b9, 0x30c8, 0x30eb, 0x0, 0x30d2, 0x309a, 0x30af, 0x30eb, 0x0, 0x30d2, 0x309a, 0x30b3, 0x0, 0x30d5, 0x0, 0x30d5, 0x3099, 0x0, 0x30d5, 0x3099, 0x30c3, 0x30b7, 0x30a7, 0x30eb, 0x0, 0x30d5, 0x309a, 0x0, 0x30d5, 0x30a1, 0x30e9, 0x30c3, 0x30c8, 0x3099, 0x0, 0x30d5, 0x30a3, 0x30fc, 0x30c8, 0x0, 0x30d5, 0x30e9, 0x30f3, 0x0, 0x30d8, 0x0, 0x30d8, 0x3099, 0x0, 0x30d8, 0x3099, 0x30fc, 0x30bf, 0x0, 0x30d8, 0x309a, 0x0, 0x30d8, 0x309a, 0x30bd, 0x0, 0x30d8, 0x309a, 0x30cb, 0x30d2, 0x0, 0x30d8, 0x309a, 0x30f3, 0x30b9, 0x0, 0x30d8, 0x309a, 0x30fc, 0x30b7, 0x3099, 0x0, 0x30d8, 0x30af, 0x30bf, 0x30fc, 0x30eb, 0x0, 0x30d8, 0x30eb, 0x30c4, 0x0, 0x30db, 0x0, 0x30db, 0x3099, 0x0, 0x30db, 0x3099, 0x30eb, 0x30c8, 0x0, 0x30db, 0x309a, 0x0, 0x30db, 0x309a, 0x30a4, 0x30f3, 0x30c8, 0x0, 0x30db, 0x309a, 0x30f3, 0x30c8, 0x3099, 0x0, 0x30db, 0x30f3, 0x0, 0x30db, 0x30fc, 0x30eb, 0x0, 0x30db, 0x30fc, 0x30f3, 0x0, 0x30de, 0x0, 0x30de, 0x30a4, 0x30af, 0x30ed, 0x0, 0x30de, 0x30a4, 0x30eb, 0x0, 0x30de, 0x30c3, 0x30cf, 0x0, 0x30de, 0x30eb, 0x30af, 0x0, 0x30de, 0x30f3, 0x30b7, 0x30e7, 0x30f3, 0x0, 0x30df, 0x0, 0x30df, 0x30af, 0x30ed, 0x30f3, 0x0, 0x30df, 0x30ea, 0x0, 0x30df, 0x30ea, 0x30cf, 0x3099, 0x30fc, 0x30eb, 0x0, 0x30e0, 0x0, 0x30e1, 0x0, 0x30e1, 0x30ab, 0x3099, 0x0, 0x30e1, 0x30ab, 0x3099, 0x30c8, 0x30f3, 0x0, 0x30e1, 0x30fc, 0x30c8, 0x30eb, 0x0, 0x30e2, 0x0, 0x30e3, 0x0, 0x30e4, 0x0, 0x30e4, 0x30fc, 0x30c8, 0x3099, 0x0, 0x30e4, 0x30fc, 0x30eb, 0x0, 0x30e5, 0x0, 0x30e6, 0x0, 0x30e6, 0x30a2, 0x30f3, 0x0, 0x30e7, 0x0, 0x30e8, 0x0, 0x30e9, 0x0, 0x30ea, 0x0, 0x30ea, 0x30c3, 0x30c8, 0x30eb, 0x0, 0x30ea, 0x30e9, 0x0, 0x30eb, 0x0, 0x30eb, 0x30d2, 0x309a, 0x30fc, 0x0, 0x30eb, 0x30fc, 0x30d5, 0x3099, 0x30eb, 0x0, 0x30ec, 0x0, 0x30ec, 0x30e0, 0x0, 0x30ec, 0x30f3, 0x30c8, 0x30b1, 0x3099, 0x30f3, 0x0, 0x30ed, 0x0, 0x30ef, 0x0, 0x30ef, 0x3099, 0x0, 0x30ef, 0x30c3, 0x30c8, 0x0, 0x30f0, 0x0, 0x30f0, 0x3099, 0x0, 0x30f1, 0x0, 0x30f1, 0x3099, 0x0, 0x30f2, 0x0, 0x30f2, 0x3099, 0x0, 0x30f3, 0x0, 0x30fb, 0x0, 0x30fc, 0x0, 0x30fd, 0x3099, 0x0, 0x349e, 0x0, 0x34b9, 0x0, 0x34bb, 0x0, 0x34df, 0x0, 0x3515, 0x0, 0x36ee, 0x0, 0x36fc, 0x0, 0x3781, 0x0, 0x382f, 0x0, 0x3862, 0x0, 0x387c, 0x0, 0x38c7, 0x0, 0x38e3, 0x0, 0x391c, 0x0, 0x393a, 0x0, 0x3a2e, 0x0, 0x3a6c, 0x0, 0x3ae4, 0x0, 0x3b08, 0x0, 0x3b19, 0x0, 0x3b49, 0x0, 0x3b9d, 0x0, 0x3c18, 0x0, 0x3c4e, 0x0, 0x3d33, 0x0, 0x3d96, 0x0, 0x3eac, 0x0, 0x3eb8, 0x0, 0x3f1b, 0x0, 0x3ffc, 0x0, 0x4008, 0x0, 0x4018, 0x0, 0x4039, 0x0, 0x4046, 0x0, 0x4096, 0x0, 0x40e3, 0x0, 0x412f, 0x0, 0x4202, 0x0, 0x4227, 0x0, 0x42a0, 0x0, 0x4301, 0x0, 0x4334, 0x0, 0x4359, 0x0, 0x43d5, 0x0, 0x43d9, 0x0, 0x440b, 0x0, 0x446b, 0x0, 0x452b, 0x0, 0x455d, 0x0, 0x4561, 0x0, 0x456b, 0x0, 0x45d7, 0x0, 0x45f9, 0x0, 0x4635, 0x0, 0x46be, 0x0, 0x46c7, 0x0, 0x4995, 0x0, 0x49e6, 0x0, 0x4a6e, 0x0, 0x4a76, 0x0, 0x4ab2, 0x0, 0x4b33, 0x0, 0x4bce, 0x0, 0x4cce, 0x0, 0x4ced, 0x0, 0x4cf8, 0x0, 0x4d56, 0x0, 0x4e00, 0x0, 0x4e01, 0x0, 0x4e03, 0x0, 0x4e09, 0x0, 0x4e0a, 0x0, 0x4e0b, 0x0, 0x4e0d, 0x0, 0x4e19, 0x0, 0x4e26, 0x0, 0x4e28, 0x0, 0x4e2d, 0x0, 0x4e32, 0x0, 0x4e36, 0x0, 0x4e38, 0x0, 0x4e39, 0x0, 0x4e3d, 0x0, 0x4e3f, 0x0, 0x4e41, 0x0, 0x4e59, 0x0, 0x4e5d, 0x0, 0x4e82, 0x0, 0x4e85, 0x0, 0x4e86, 0x0, 0x4e8c, 0x0, 0x4e94, 0x0, 0x4ea0, 0x0, 0x4ea4, 0x0, 0x4eae, 0x0, 0x4eba, 0x0, 0x4ec0, 0x0, 0x4ecc, 0x0, 0x4ee4, 0x0, 0x4ee4, 0x548c, 0x0, 0x4f01, 0x0, 0x4f11, 0x0, 0x4f60, 0x0, 0x4f80, 0x0, 0x4f86, 0x0, 0x4f8b, 0x0, 0x4fae, 0x0, 0x4fbb, 0x0, 0x4fbf, 0x0, 0x5002, 0x0, 0x502b, 0x0, 0x507a, 0x0, 0x5099, 0x0, 0x50cf, 0x0, 0x50da, 0x0, 0x50e7, 0x0, 0x512a, 0x0, 0x513f, 0x0, 0x5140, 0x0, 0x5145, 0x0, 0x514d, 0x0, 0x5154, 0x0, 0x5164, 0x0, 0x5165, 0x0, 0x5167, 0x0, 0x5168, 0x0, 0x5169, 0x0, 0x516b, 0x0, 0x516d, 0x0, 0x5177, 0x0, 0x5180, 0x0, 0x5182, 0x0, 0x518d, 0x0, 0x5192, 0x0, 0x5195, 0x0, 0x5196, 0x0, 0x5197, 0x0, 0x5199, 0x0, 0x51a4, 0x0, 0x51ab, 0x0, 0x51ac, 0x0, 0x51b5, 0x0, 0x51b7, 0x0, 0x51c9, 0x0, 0x51cc, 0x0, 0x51dc, 0x0, 0x51de, 0x0, 0x51e0, 0x0, 0x51f5, 0x0, 0x5200, 0x0, 0x5203, 0x0, 0x5207, 0x0, 0x5217, 0x0, 0x521d, 0x0, 0x5229, 0x0, 0x523a, 0x0, 0x523b, 0x0, 0x5246, 0x0, 0x524d, 0x0, 0x5272, 0x0, 0x5277, 0x0, 0x5289, 0x0, 0x529b, 0x0, 0x52a3, 0x0, 0x52b3, 0x0, 0x52b4, 0x0, 0x52c7, 0x0, 0x52c9, 0x0, 0x52d2, 0x0, 0x52de, 0x0, 0x52e4, 0x0, 0x52f5, 0x0, 0x52f9, 0x0, 0x52fa, 0x0, 0x5305, 0x0, 0x5306, 0x0, 0x5315, 0x0, 0x5317, 0x0, 0x531a, 0x0, 0x5338, 0x0, 0x533b, 0x0, 0x533f, 0x0, 0x5341, 0x0, 0x5344, 0x0, 0x5345, 0x0, 0x5349, 0x0, 0x5351, 0x0, 0x5354, 0x0, 0x535a, 0x0, 0x535c, 0x0, 0x5369, 0x0, 0x5370, 0x0, 0x5373, 0x0, 0x5375, 0x0, 0x537d, 0x0, 0x537f, 0x0, 0x5382, 0x0, 0x53b6, 0x0, 0x53c3, 0x0, 0x53c8, 0x0, 0x53ca, 0x0, 0x53cc, 0x0, 0x53df, 0x0, 0x53e3, 0x0, 0x53e5, 0x0, 0x53eb, 0x0, 0x53ef, 0x0, 0x53f1, 0x0, 0x53f3, 0x0, 0x5406, 0x0, 0x5408, 0x0, 0x540d, 0x0, 0x540f, 0x0, 0x541d, 0x0, 0x5438, 0x0, 0x5439, 0x0, 0x5442, 0x0, 0x5448, 0x0, 0x5468, 0x0, 0x549e, 0x0, 0x54a2, 0x0, 0x54bd, 0x0, 0x54f6, 0x0, 0x5510, 0x0, 0x554f, 0x0, 0x5553, 0x0, 0x5555, 0x0, 0x5563, 0x0, 0x5584, 0x0, 0x5587, 0x0, 0x5599, 0x0, 0x559d, 0x0, 0x55ab, 0x0, 0x55b3, 0x0, 0x55b6, 0x0, 0x55c0, 0x0, 0x55c2, 0x0, 0x55e2, 0x0, 0x5606, 0x0, 0x5651, 0x0, 0x5668, 0x0, 0x5674, 0x0, 0x56d7, 0x0, 0x56db, 0x0, 0x56f9, 0x0, 0x5716, 0x0, 0x5717, 0x0, 0x571f, 0x0, 0x5730, 0x0, 0x578b, 0x0, 0x57ce, 0x0, 0x57f4, 0x0, 0x580d, 0x0, 0x5831, 0x0, 0x5832, 0x0, 0x5840, 0x0, 0x585a, 0x0, 0x585e, 0x0, 0x58a8, 0x0, 0x58ac, 0x0, 0x58b3, 0x0, 0x58d8, 0x0, 0x58df, 0x0, 0x58eb, 0x0, 0x58ee, 0x0, 0x58f0, 0x0, 0x58f2, 0x0, 0x58f7, 0x0, 0x5902, 0x0, 0x5906, 0x0, 0x590a, 0x0, 0x5915, 0x0, 0x591a, 0x0, 0x591c, 0x0, 0x5922, 0x0, 0x5927, 0x0, 0x5927, 0x6b63, 0x0, 0x5929, 0x0, 0x5944, 0x0, 0x5948, 0x0, 0x5951, 0x0, 0x5954, 0x0, 0x5962, 0x0, 0x5973, 0x0, 0x59d8, 0x0, 0x59ec, 0x0, 0x5a1b, 0x0, 0x5a27, 0x0, 0x5a62, 0x0, 0x5a66, 0x0, 0x5ab5, 0x0, 0x5b08, 0x0, 0x5b28, 0x0, 0x5b3e, 0x0, 0x5b50, 0x0, 0x5b57, 0x0, 0x5b66, 0x0, 0x5b80, 0x0, 0x5b85, 0x0, 0x5b97, 0x0, 0x5bc3, 0x0, 0x5bd8, 0x0, 0x5be7, 0x0, 0x5bee, 0x0, 0x5bf3, 0x0, 0x5bf8, 0x0, 0x5bff, 0x0, 0x5c06, 0x0, 0x5c0f, 0x0, 0x5c22, 0x0, 0x5c38, 0x0, 0x5c3f, 0x0, 0x5c60, 0x0, 0x5c62, 0x0, 0x5c64, 0x0, 0x5c65, 0x0, 0x5c6e, 0x0, 0x5c71, 0x0, 0x5c8d, 0x0, 0x5cc0, 0x0, 0x5d19, 0x0, 0x5d43, 0x0, 0x5d50, 0x0, 0x5d6b, 0x0, 0x5d6e, 0x0, 0x5d7c, 0x0, 0x5db2, 0x0, 0x5dba, 0x0, 0x5ddb, 0x0, 0x5de1, 0x0, 0x5de2, 0x0, 0x5de5, 0x0, 0x5de6, 0x0, 0x5df1, 0x0, 0x5dfd, 0x0, 0x5dfe, 0x0, 0x5e28, 0x0, 0x5e3d, 0x0, 0x5e69, 0x0, 0x5e72, 0x0, 0x5e73, 0x6210, 0x0, 0x5e74, 0x0, 0x5e7a, 0x0, 0x5e7c, 0x0, 0x5e7f, 0x0, 0x5ea6, 0x0, 0x5eb0, 0x0, 0x5eb3, 0x0, 0x5eb6, 0x0, 0x5ec9, 0x0, 0x5eca, 0x0, 0x5ed2, 0x0, 0x5ed3, 0x0, 0x5ed9, 0x0, 0x5eec, 0x0, 0x5ef4, 0x0, 0x5efe, 0x0, 0x5f04, 0x0, 0x5f0b, 0x0, 0x5f13, 0x0, 0x5f22, 0x0, 0x5f50, 0x0, 0x5f53, 0x0, 0x5f61, 0x0, 0x5f62, 0x0, 0x5f69, 0x0, 0x5f6b, 0x0, 0x5f73, 0x0, 0x5f8b, 0x0, 0x5f8c, 0x0, 0x5f97, 0x0, 0x5f9a, 0x0, 0x5fa9, 0x0, 0x5fad, 0x0, 0x5fc3, 0x0, 0x5fcd, 0x0, 0x5fd7, 0x0, 0x5ff5, 0x0, 0x5ff9, 0x0, 0x6012, 0x0, 0x601c, 0x0, 0x6075, 0x0, 0x6081, 0x0, 0x6094, 0x0, 0x60c7, 0x0, 0x60d8, 0x0, 0x60e1, 0x0, 0x6108, 0x0, 0x6144, 0x0, 0x6148, 0x0, 0x614c, 0x0, 0x614e, 0x0, 0x6160, 0x0, 0x6168, 0x0, 0x617a, 0x0, 0x618e, 0x0, 0x6190, 0x0, 0x61a4, 0x0, 0x61af, 0x0, 0x61b2, 0x0, 0x61de, 0x0, 0x61f2, 0x0, 0x61f6, 0x0, 0x6200, 0x0, 0x6208, 0x0, 0x6210, 0x0, 0x621b, 0x0, 0x622e, 0x0, 0x6234, 0x0, 0x6236, 0x0, 0x624b, 0x0, 0x6253, 0x0, 0x625d, 0x0, 0x6295, 0x0, 0x62b1, 0x0, 0x62c9, 0x0, 0x62cf, 0x0, 0x62d3, 0x0, 0x62d4, 0x0, 0x62fc, 0x0, 0x62fe, 0x0, 0x6307, 0x0, 0x633d, 0x0, 0x6350, 0x0, 0x6355, 0x0, 0x6368, 0x0, 0x637b, 0x0, 0x6383, 0x0, 0x63a0, 0x0, 0x63a9, 0x0, 0x63c4, 0x0, 0x63c5, 0x0, 0x63e4, 0x0, 0x641c, 0x0, 0x6422, 0x0, 0x6452, 0x0, 0x6469, 0x0, 0x6477, 0x0, 0x647e, 0x0, 0x649a, 0x0, 0x649d, 0x0, 0x64c4, 0x0, 0x652f, 0x0, 0x6534, 0x0, 0x654f, 0x0, 0x6556, 0x0, 0x656c, 0x0, 0x6578, 0x0, 0x6587, 0x0, 0x6597, 0x0, 0x6599, 0x0, 0x65a4, 0x0, 0x65b0, 0x0, 0x65b9, 0x0, 0x65c5, 0x0, 0x65e0, 0x0, 0x65e2, 0x0, 0x65e3, 0x0, 0x65e5, 0x0, 0x660e, 0x6cbb, 0x0, 0x6613, 0x0, 0x6620, 0x0, 0x662d, 0x548c, 0x0, 0x6649, 0x0, 0x6674, 0x0, 0x6688, 0x0, 0x6691, 0x0, 0x669c, 0x0, 0x66b4, 0x0, 0x66c6, 0x0, 0x66f0, 0x0, 0x66f4, 0x0, 0x66f8, 0x0, 0x6700, 0x0, 0x6708, 0x0, 0x6709, 0x0, 0x6717, 0x0, 0x671b, 0x0, 0x6721, 0x0, 0x6728, 0x0, 0x674e, 0x0, 0x6753, 0x0, 0x6756, 0x0, 0x675e, 0x0, 0x677b, 0x0, 0x6785, 0x0, 0x6797, 0x0, 0x67f3, 0x0, 0x67fa, 0x0, 0x6817, 0x0, 0x681f, 0x0, 0x682a, 0x0, 0x682a, 0x5f0f, 0x4f1a, 0x793e, 0x0, 0x6852, 0x0, 0x6881, 0x0, 0x6885, 0x0, 0x688e, 0x0, 0x68a8, 0x0, 0x6914, 0x0, 0x6942, 0x0, 0x69a3, 0x0, 0x69ea, 0x0, 0x6a02, 0x0, 0x6a13, 0x0, 0x6aa8, 0x0, 0x6ad3, 0x0, 0x6adb, 0x0, 0x6b04, 0x0, 0x6b20, 0x0, 0x6b21, 0x0, 0x6b54, 0x0, 0x6b62, 0x0, 0x6b63, 0x0, 0x6b72, 0x0, 0x6b77, 0x0, 0x6b79, 0x0, 0x6b9f, 0x0, 0x6bae, 0x0, 0x6bb3, 0x0, 0x6bba, 0x0, 0x6bbb, 0x0, 0x6bcb, 0x0, 0x6bcd, 0x0, 0x6bd4, 0x0, 0x6bdb, 0x0, 0x6c0f, 0x0, 0x6c14, 0x0, 0x6c34, 0x0, 0x6c4e, 0x0, 0x6c67, 0x0, 0x6c88, 0x0, 0x6cbf, 0x0, 0x6ccc, 0x0, 0x6ccd, 0x0, 0x6ce5, 0x0, 0x6ce8, 0x0, 0x6d16, 0x0, 0x6d1b, 0x0, 0x6d1e, 0x0, 0x6d34, 0x0, 0x6d3e, 0x0, 0x6d41, 0x0, 0x6d69, 0x0, 0x6d6a, 0x0, 0x6d77, 0x0, 0x6d78, 0x0, 0x6d85, 0x0, 0x6dcb, 0x0, 0x6dda, 0x0, 0x6dea, 0x0, 0x6df9, 0x0, 0x6e1a, 0x0, 0x6e2f, 0x0, 0x6e6e, 0x0, 0x6e80, 0x0, 0x6e9c, 0x0, 0x6eba, 0x0, 0x6ec7, 0x0, 0x6ecb, 0x0, 0x6ed1, 0x0, 0x6edb, 0x0, 0x6f0f, 0x0, 0x6f14, 0x0, 0x6f22, 0x0, 0x6f23, 0x0, 0x6f6e, 0x0, 0x6fc6, 0x0, 0x6feb, 0x0, 0x6ffe, 0x0, 0x701b, 0x0, 0x701e, 0x0, 0x7039, 0x0, 0x704a, 0x0, 0x706b, 0x0, 0x7070, 0x0, 0x7077, 0x0, 0x707d, 0x0, 0x7099, 0x0, 0x70ad, 0x0, 0x70c8, 0x0, 0x70d9, 0x0, 0x7121, 0x0, 0x7145, 0x0, 0x7149, 0x0, 0x716e, 0x0, 0x719c, 0x0, 0x71ce, 0x0, 0x71d0, 0x0, 0x7210, 0x0, 0x721b, 0x0, 0x7228, 0x0, 0x722a, 0x0, 0x722b, 0x0, 0x7235, 0x0, 0x7236, 0x0, 0x723b, 0x0, 0x723f, 0x0, 0x7247, 0x0, 0x7250, 0x0, 0x7259, 0x0, 0x725b, 0x0, 0x7262, 0x0, 0x7279, 0x0, 0x7280, 0x0, 0x7295, 0x0, 0x72ac, 0x0, 0x72af, 0x0, 0x72c0, 0x0, 0x72fc, 0x0, 0x732a, 0x0, 0x7375, 0x0, 0x737a, 0x0, 0x7384, 0x0, 0x7387, 0x0, 0x7389, 0x0, 0x738b, 0x0, 0x73a5, 0x0, 0x73b2, 0x0, 0x73de, 0x0, 0x7406, 0x0, 0x7409, 0x0, 0x7422, 0x0, 0x7447, 0x0, 0x745c, 0x0, 0x7469, 0x0, 0x7471, 0x0, 0x7485, 0x0, 0x7489, 0x0, 0x7498, 0x0, 0x74ca, 0x0, 0x74dc, 0x0, 0x74e6, 0x0, 0x7506, 0x0, 0x7518, 0x0, 0x751f, 0x0, 0x7524, 0x0, 0x7528, 0x0, 0x7530, 0x0, 0x7532, 0x0, 0x7533, 0x0, 0x7537, 0x0, 0x753b, 0x0, 0x753e, 0x0, 0x7559, 0x0, 0x7565, 0x0, 0x7570, 0x0, 0x758b, 0x0, 0x7592, 0x0, 0x75e2, 0x0, 0x7610, 0x0, 0x761d, 0x0, 0x761f, 0x0, 0x7642, 0x0, 0x7669, 0x0, 0x7676, 0x0, 0x767d, 0x0, 0x76ae, 0x0, 0x76bf, 0x0, 0x76ca, 0x0, 0x76db, 0x0, 0x76e3, 0x0, 0x76e7, 0x0, 0x76ee, 0x0, 0x76f4, 0x0, 0x7701, 0x0, 0x771e, 0x0, 0x771f, 0x0, 0x7740, 0x0, 0x774a, 0x0, 0x778b, 0x0, 0x77a7, 0x0, 0x77db, 0x0, 0x77e2, 0x0, 0x77f3, 0x0, 0x784e, 0x0, 0x786b, 0x0, 0x788c, 0x0, 0x7891, 0x0, 0x78ca, 0x0, 0x78cc, 0x0, 0x78fb, 0x0, 0x792a, 0x0, 0x793a, 0x0, 0x793c, 0x0, 0x793e, 0x0, 0x7948, 0x0, 0x7949, 0x0, 0x7950, 0x0, 0x7956, 0x0, 0x795d, 0x0, 0x795e, 0x0, 0x7965, 0x0, 0x797f, 0x0, 0x7981, 0x0, 0x798d, 0x0, 0x798e, 0x0, 0x798f, 0x0, 0x79ae, 0x0, 0x79b8, 0x0, 0x79be, 0x0, 0x79ca, 0x0, 0x79d8, 0x0, 0x79eb, 0x0, 0x7a1c, 0x0, 0x7a40, 0x0, 0x7a4a, 0x0, 0x7a4f, 0x0, 0x7a74, 0x0, 0x7a7a, 0x0, 0x7a81, 0x0, 0x7ab1, 0x0, 0x7acb, 0x0, 0x7aee, 0x0, 0x7af9, 0x0, 0x7b20, 0x0, 0x7b8f, 0x0, 0x7bc0, 0x0, 0x7bc6, 0x0, 0x7bc9, 0x0, 0x7c3e, 0x0, 0x7c60, 0x0, 0x7c73, 0x0, 0x7c7b, 0x0, 0x7c92, 0x0, 0x7cbe, 0x0, 0x7cd2, 0x0, 0x7cd6, 0x0, 0x7ce3, 0x0, 0x7ce7, 0x0, 0x7ce8, 0x0, 0x7cf8, 0x0, 0x7d00, 0x0, 0x7d10, 0x0, 0x7d22, 0x0, 0x7d2f, 0x0, 0x7d42, 0x0, 0x7d5b, 0x0, 0x7d63, 0x0, 0x7da0, 0x0, 0x7dbe, 0x0, 0x7dc7, 0x0, 0x7df4, 0x0, 0x7e02, 0x0, 0x7e09, 0x0, 0x7e37, 0x0, 0x7e41, 0x0, 0x7e45, 0x0, 0x7f36, 0x0, 0x7f3e, 0x0, 0x7f51, 0x0, 0x7f72, 0x0, 0x7f79, 0x0, 0x7f7a, 0x0, 0x7f85, 0x0, 0x7f8a, 0x0, 0x7f95, 0x0, 0x7f9a, 0x0, 0x7fbd, 0x0, 0x7ffa, 0x0, 0x8001, 0x0, 0x8005, 0x0, 0x800c, 0x0, 0x8012, 0x0, 0x8033, 0x0, 0x8046, 0x0, 0x8060, 0x0, 0x806f, 0x0, 0x8070, 0x0, 0x807e, 0x0, 0x807f, 0x0, 0x8089, 0x0, 0x808b, 0x0, 0x80ad, 0x0, 0x80b2, 0x0, 0x8103, 0x0, 0x813e, 0x0, 0x81d8, 0x0, 0x81e3, 0x0, 0x81e8, 0x0, 0x81ea, 0x0, 0x81ed, 0x0, 0x81f3, 0x0, 0x81fc, 0x0, 0x8201, 0x0, 0x8204, 0x0, 0x820c, 0x0, 0x8218, 0x0, 0x821b, 0x0, 0x821f, 0x0, 0x826e, 0x0, 0x826f, 0x0, 0x8272, 0x0, 0x8278, 0x0, 0x8279, 0x0, 0x828b, 0x0, 0x8291, 0x0, 0x829d, 0x0, 0x82b1, 0x0, 0x82b3, 0x0, 0x82bd, 0x0, 0x82e5, 0x0, 0x82e6, 0x0, 0x831d, 0x0, 0x8323, 0x0, 0x8336, 0x0, 0x8352, 0x0, 0x8353, 0x0, 0x8363, 0x0, 0x83ad, 0x0, 0x83bd, 0x0, 0x83c9, 0x0, 0x83ca, 0x0, 0x83cc, 0x0, 0x83dc, 0x0, 0x83e7, 0x0, 0x83ef, 0x0, 0x83f1, 0x0, 0x843d, 0x0, 0x8449, 0x0, 0x8457, 0x0, 0x84ee, 0x0, 0x84f1, 0x0, 0x84f3, 0x0, 0x84fc, 0x0, 0x8516, 0x0, 0x8564, 0x0, 0x85cd, 0x0, 0x85fa, 0x0, 0x8606, 0x0, 0x8612, 0x0, 0x862d, 0x0, 0x863f, 0x0, 0x864d, 0x0, 0x8650, 0x0, 0x865c, 0x0, 0x8667, 0x0, 0x8669, 0x0, 0x866b, 0x0, 0x8688, 0x0, 0x86a9, 0x0, 0x86e2, 0x0, 0x870e, 0x0, 0x8728, 0x0, 0x876b, 0x0, 0x8779, 0x0, 0x8786, 0x0, 0x87ba, 0x0, 0x87e1, 0x0, 0x8801, 0x0, 0x881f, 0x0, 0x8840, 0x0, 0x884c, 0x0, 0x8860, 0x0, 0x8863, 0x0, 0x88c2, 0x0, 0x88cf, 0x0, 0x88d7, 0x0, 0x88de, 0x0, 0x88e1, 0x0, 0x88f8, 0x0, 0x88fa, 0x0, 0x8910, 0x0, 0x8941, 0x0, 0x8964, 0x0, 0x897e, 0x0, 0x8986, 0x0, 0x898b, 0x0, 0x8996, 0x0, 0x89d2, 0x0, 0x89e3, 0x0, 0x8a00, 0x0, 0x8aa0, 0x0, 0x8aaa, 0x0, 0x8abf, 0x0, 0x8acb, 0x0, 0x8ad2, 0x0, 0x8ad6, 0x0, 0x8aed, 0x0, 0x8af8, 0x0, 0x8afe, 0x0, 0x8b01, 0x0, 0x8b39, 0x0, 0x8b58, 0x0, 0x8b80, 0x0, 0x8b8a, 0x0, 0x8c37, 0x0, 0x8c46, 0x0, 0x8c48, 0x0, 0x8c55, 0x0, 0x8c78, 0x0, 0x8c9d, 0x0, 0x8ca1, 0x0, 0x8ca9, 0x0, 0x8cab, 0x0, 0x8cc1, 0x0, 0x8cc2, 0x0, 0x8cc7, 0x0, 0x8cc8, 0x0, 0x8cd3, 0x0, 0x8d08, 0x0, 0x8d1b, 0x0, 0x8d64, 0x0, 0x8d70, 0x0, 0x8d77, 0x0, 0x8db3, 0x0, 0x8dbc, 0x0, 0x8dcb, 0x0, 0x8def, 0x0, 0x8df0, 0x0, 0x8eab, 0x0, 0x8eca, 0x0, 0x8ed4, 0x0, 0x8f26, 0x0, 0x8f2a, 0x0, 0x8f38, 0x0, 0x8f3b, 0x0, 0x8f62, 0x0, 0x8f9b, 0x0, 0x8f9e, 0x0, 0x8fb0, 0x0, 0x8fb5, 0x0, 0x8fb6, 0x0, 0x9023, 0x0, 0x9038, 0x0, 0x904a, 0x0, 0x9069, 0x0, 0x9072, 0x0, 0x907c, 0x0, 0x908f, 0x0, 0x9091, 0x0, 0x9094, 0x0, 0x90ce, 0x0, 0x90de, 0x0, 0x90f1, 0x0, 0x90fd, 0x0, 0x9111, 0x0, 0x911b, 0x0, 0x9149, 0x0, 0x914d, 0x0, 0x916a, 0x0, 0x9199, 0x0, 0x91b4, 0x0, 0x91c6, 0x0, 0x91cc, 0x0, 0x91cf, 0x0, 0x91d1, 0x0, 0x9234, 0x0, 0x9238, 0x0, 0x9276, 0x0, 0x927c, 0x0, 0x92d7, 0x0, 0x92d8, 0x0, 0x9304, 0x0, 0x934a, 0x0, 0x93f9, 0x0, 0x9415, 0x0, 0x9577, 0x0, 0x9580, 0x0, 0x958b, 0x0, 0x95ad, 0x0, 0x95b7, 0x0, 0x961c, 0x0, 0x962e, 0x0, 0x964b, 0x0, 0x964d, 0x0, 0x9675, 0x0, 0x9678, 0x0, 0x967c, 0x0, 0x9686, 0x0, 0x96a3, 0x0, 0x96b6, 0x0, 0x96b7, 0x0, 0x96b8, 0x0, 0x96b9, 0x0, 0x96c3, 0x0, 0x96e2, 0x0, 0x96e3, 0x0, 0x96e8, 0x0, 0x96f6, 0x0, 0x96f7, 0x0, 0x9723, 0x0, 0x9732, 0x0, 0x9748, 0x0, 0x9751, 0x0, 0x9756, 0x0, 0x975e, 0x0, 0x9762, 0x0, 0x9769, 0x0, 0x97cb, 0x0, 0x97db, 0x0, 0x97e0, 0x0, 0x97ed, 0x0, 0x97f3, 0x0, 0x97ff, 0x0, 0x9801, 0x0, 0x9805, 0x0, 0x980b, 0x0, 0x9818, 0x0, 0x9829, 0x0, 0x983b, 0x0, 0x985e, 0x0, 0x98a8, 0x0, 0x98db, 0x0, 0x98df, 0x0, 0x98e2, 0x0, 0x98ef, 0x0, 0x98fc, 0x0, 0x9928, 0x0, 0x9929, 0x0, 0x9996, 0x0, 0x9999, 0x0, 0x99a7, 0x0, 0x99ac, 0x0, 0x99c2, 0x0, 0x99f1, 0x0, 0x99fe, 0x0, 0x9a6a, 0x0, 0x9aa8, 0x0, 0x9ad8, 0x0, 0x9adf, 0x0, 0x9b12, 0x0, 0x9b25, 0x0, 0x9b2f, 0x0, 0x9b32, 0x0, 0x9b3c, 0x0, 0x9b5a, 0x0, 0x9b6f, 0x0, 0x9c40, 0x0, 0x9c57, 0x0, 0x9ce5, 0x0, 0x9cfd, 0x0, 0x9d67, 0x0, 0x9db4, 0x0, 0x9dfa, 0x0, 0x9e1e, 0x0, 0x9e75, 0x0, 0x9e7f, 0x0, 0x9e97, 0x0, 0x9e9f, 0x0, 0x9ea5, 0x0, 0x9ebb, 0x0, 0x9ec3, 0x0, 0x9ecd, 0x0, 0x9ece, 0x0, 0x9ed1, 0x0, 0x9ef9, 0x0, 0x9efd, 0x0, 0x9efe, 0x0, 0x9f05, 0x0, 0x9f0e, 0x0, 0x9f0f, 0x0, 0x9f13, 0x0, 0x9f16, 0x0, 0x9f20, 0x0, 0x9f3b, 0x0, 0x9f43, 0x0, 0x9f4a, 0x0, 0x9f52, 0x0, 0x9f8d, 0x0, 0x9f8e, 0x0, 0x9f9c, 0x0, 0x9f9f, 0x0, 0x9fa0, 0x0, 0xa651, 0x0, 0xa689, 0x0, 0xa727, 0x0, 0xa76f, 0x0, 0xa78e, 0x0, 0xab37, 0x0, 0xab52, 0x0, 0xab66, 0x0, 0xab67, 0x0, 0x11099, 0x110ba, 0x0, 0x1109b, 0x110ba, 0x0, 0x110a5, 0x110ba, 0x0, 0x11131, 0x11127, 0x0, 0x11132, 0x11127, 0x0, 0x11347, 0x1133e, 0x0, 0x11347, 0x11357, 0x0, 0x114b9, 0x114b0, 0x0, 0x114b9, 0x114ba, 0x0, 0x114b9, 0x114bd, 0x0, 0x115b8, 0x115af, 0x0, 0x115b9, 0x115af, 0x0, 0x11935, 0x11930, 0x0, 0x1d157, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x0, 0x1d158, 0x1d165, 0x1d16e, 0x0, 0x1d158, 0x1d165, 0x1d16f, 0x0, 0x1d158, 0x1d165, 0x1d170, 0x0, 0x1d158, 0x1d165, 0x1d171, 0x0, 0x1d158, 0x1d165, 0x1d172, 0x0, 0x1d1b9, 0x1d165, 0x0, 0x1d1b9, 0x1d165, 0x1d16e, 0x0, 0x1d1b9, 0x1d165, 0x1d16f, 0x0, 0x1d1ba, 0x1d165, 0x0, 0x1d1ba, 0x1d165, 0x1d16e, 0x0, 0x1d1ba, 0x1d165, 0x1d16f, 0x0, 0x1df04, 0x0, 0x1df05, 0x0, 0x1df06, 0x0, 0x1df08, 0x0, 0x1df0a, 0x0, 0x1df1e, 0x0, 0x20122, 0x0, 0x2051c, 0x0, 0x20525, 0x0, 0x2054b, 0x0, 0x2063a, 0x0, 0x20804, 0x0, 0x208de, 0x0, 0x20a2c, 0x0, 0x20b63, 0x0, 0x214e4, 0x0, 0x216a8, 0x0, 0x216ea, 0x0, 0x219c8, 0x0, 0x21b18, 0x0, 0x21d0b, 0x0, 0x21de4, 0x0, 0x21de6, 0x0, 0x22183, 0x0, 0x2219f, 0x0, 0x22331, 0x0, 0x226d4, 0x0, 0x22844, 0x0, 0x2284a, 0x0, 0x22b0c, 0x0, 0x22bf1, 0x0, 0x2300a, 0x0, 0x232b8, 0x0, 0x2335f, 0x0, 0x23393, 0x0, 0x2339c, 0x0, 0x233c3, 0x0, 0x233d5, 0x0, 0x2346d, 0x0, 0x236a3, 0x0, 0x238a7, 0x0, 0x23a8d, 0x0, 0x23afa, 0x0, 0x23cbc, 0x0, 0x23d1e, 0x0, 0x23ed1, 0x0, 0x23f5e, 0x0, 0x23f8e, 0x0, 0x24263, 0x0, 0x242ee, 0x0, 0x243ab, 0x0, 0x24608, 0x0, 0x24735, 0x0, 0x24814, 0x0, 0x24c36, 0x0, 0x24c92, 0x0, 0x24fa1, 0x0, 0x24fb8, 0x0, 0x25044, 0x0, 0x250f2, 0x0, 0x250f3, 0x0, 0x25119, 0x0, 0x25133, 0x0, 0x25249, 0x0, 0x2541d, 0x0, 0x25626, 0x0, 0x2569a, 0x0, 0x256c5, 0x0, 0x2597c, 0x0, 0x25aa7, 0x0, 0x25bab, 0x0, 0x25c80, 0x0, 0x25cd0, 0x0, 0x25f86, 0x0, 0x261da, 0x0, 0x26228, 0x0, 0x26247, 0x0, 0x262d9, 0x0, 0x2633e, 0x0, 0x264da, 0x0, 0x26523, 0x0, 0x265a8, 0x0, 0x267a7, 0x0, 0x267b5, 0x0, 0x26b3c, 0x0, 0x26c36, 0x0, 0x26cd5, 0x0, 0x26d6b, 0x0, 0x26f2c, 0x0, 0x26fb1, 0x0, 0x270d2, 0x0, 0x273ca, 0x0, 0x27667, 0x0, 0x278ae, 0x0, 0x27966, 0x0, 0x27ca8, 0x0, 0x27ed3, 0x0, 0x27f2f, 0x0, 0x285d2, 0x0, 0x285ed, 0x0, 0x2872e, 0x0, 0x28bfa, 0x0, 0x28d77, 0x0, 0x29145, 0x0, 0x291df, 0x0, 0x2921a, 0x0, 0x2940a, 0x0, 0x29496, 0x0, 0x295b6, 0x0, 0x29b30, 0x0, 0x2a0ce, 0x0, 0x2a105, 0x0, 0x2a20e, 0x0, 0x2a291, 0x0, 0x2a392, 0x0, 0x2a600, 0x0]; return t; } +dstring decompCanonTable() nothrow @nogc pure @safe { +static immutable dchar[5212] t = +"\u0000\u003B\u0000\u003C\u0338\u0000\u003D\u0338\u0000\u003E\u0338\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041"d~ +"\u0302\u0000\u0041\u0302\u0300\u0000\u0041\u0302\u0301\u0000\u0041\u0302\u0303\u0000\u0041\u0302\u0309\u0000\u0041"d~ +"\u0303\u0000\u0041\u0304\u0000\u0041\u0306\u0000\u0041\u0306\u0300\u0000\u0041\u0306\u0301\u0000\u0041\u0306\u0303"d~ +"\u0000\u0041\u0306\u0309\u0000\u0041\u0307\u0000\u0041\u0307\u0304\u0000\u0041\u0308\u0000\u0041\u0308\u0304\u0000"d~ +"\u0041\u0309\u0000\u0041\u030A\u0000\u0041\u030A\u0301\u0000\u0041\u030C\u0000\u0041\u030F\u0000\u0041\u0311\u0000"d~ +"\u0041\u0323\u0000\u0041\u0323\u0302\u0000\u0041\u0323\u0306\u0000\u0041\u0325\u0000\u0041\u0328\u0000\u0042\u0307"d~ +"\u0000\u0042\u0323\u0000\u0042\u0331\u0000\u0043\u0301\u0000\u0043\u0302\u0000\u0043\u0307\u0000\u0043\u030C\u0000"d~ +"\u0043\u0327\u0000\u0043\u0327\u0301\u0000\u0044\u0307\u0000\u0044\u030C\u0000\u0044\u0323\u0000\u0044\u0327\u0000"d~ +"\u0044\u032D\u0000\u0044\u0331\u0000\u0045\u0300\u0000\u0045\u0301\u0000\u0045\u0302\u0000\u0045\u0302\u0300\u0000"d~ +"\u0045\u0302\u0301\u0000\u0045\u0302\u0303\u0000\u0045\u0302\u0309\u0000\u0045\u0303\u0000\u0045\u0304\u0000\u0045"d~ +"\u0304\u0300\u0000\u0045\u0304\u0301\u0000\u0045\u0306\u0000\u0045\u0307\u0000\u0045\u0308\u0000\u0045\u0309\u0000"d~ +"\u0045\u030C\u0000\u0045\u030F\u0000\u0045\u0311\u0000\u0045\u0323\u0000\u0045\u0323\u0302\u0000\u0045\u0327\u0000"d~ +"\u0045\u0327\u0306\u0000\u0045\u0328\u0000\u0045\u032D\u0000\u0045\u0330\u0000\u0046\u0307\u0000\u0047\u0301\u0000"d~ +"\u0047\u0302\u0000\u0047\u0304\u0000\u0047\u0306\u0000\u0047\u0307\u0000\u0047\u030C\u0000\u0047\u0327\u0000\u0048"d~ +"\u0302\u0000\u0048\u0307\u0000\u0048\u0308\u0000\u0048\u030C\u0000\u0048\u0323\u0000\u0048\u0327\u0000\u0048\u032E"d~ +"\u0000\u0049\u0300\u0000\u0049\u0301\u0000\u0049\u0302\u0000\u0049\u0303\u0000\u0049\u0304\u0000\u0049\u0306\u0000"d~ +"\u0049\u0307\u0000\u0049\u0308\u0000\u0049\u0308\u0301\u0000\u0049\u0309\u0000\u0049\u030C\u0000\u0049\u030F\u0000"d~ +"\u0049\u0311\u0000\u0049\u0323\u0000\u0049\u0328\u0000\u0049\u0330\u0000\u004A\u0302\u0000\u004B\u0000\u004B\u0301"d~ +"\u0000\u004B\u030C\u0000\u004B\u0323\u0000\u004B\u0327\u0000\u004B\u0331\u0000\u004C\u0301\u0000\u004C\u030C\u0000"d~ +"\u004C\u0323\u0000\u004C\u0323\u0304\u0000\u004C\u0327\u0000\u004C\u032D\u0000\u004C\u0331\u0000\u004D\u0301\u0000"d~ +"\u004D\u0307\u0000\u004D\u0323\u0000\u004E\u0300\u0000\u004E\u0301\u0000\u004E\u0303\u0000\u004E\u0307\u0000\u004E"d~ +"\u030C\u0000\u004E\u0323\u0000\u004E\u0327\u0000\u004E\u032D\u0000\u004E\u0331\u0000\u004F\u0300\u0000\u004F\u0301"d~ +"\u0000\u004F\u0302\u0000\u004F\u0302\u0300\u0000\u004F\u0302\u0301\u0000\u004F\u0302\u0303\u0000\u004F\u0302\u0309"d~ +"\u0000\u004F\u0303\u0000\u004F\u0303\u0301\u0000\u004F\u0303\u0304\u0000\u004F\u0303\u0308\u0000\u004F\u0304\u0000"d~ +"\u004F\u0304\u0300\u0000\u004F\u0304\u0301\u0000\u004F\u0306\u0000\u004F\u0307\u0000\u004F\u0307\u0304\u0000\u004F"d~ +"\u0308\u0000\u004F\u0308\u0304\u0000\u004F\u0309\u0000\u004F\u030B\u0000\u004F\u030C\u0000\u004F\u030F\u0000\u004F"d~ +"\u0311\u0000\u004F\u031B\u0000\u004F\u031B\u0300\u0000\u004F\u031B\u0301\u0000\u004F\u031B\u0303\u0000\u004F\u031B"d~ +"\u0309\u0000\u004F\u031B\u0323\u0000\u004F\u0323\u0000\u004F\u0323\u0302\u0000\u004F\u0328\u0000\u004F\u0328\u0304"d~ +"\u0000\u0050\u0301\u0000\u0050\u0307\u0000\u0052\u0301\u0000\u0052\u0307\u0000\u0052\u030C\u0000\u0052\u030F\u0000"d~ +"\u0052\u0311\u0000\u0052\u0323\u0000\u0052\u0323\u0304\u0000\u0052\u0327\u0000\u0052\u0331\u0000\u0053\u0301\u0000"d~ +"\u0053\u0301\u0307\u0000\u0053\u0302\u0000\u0053\u0307\u0000\u0053\u030C\u0000\u0053\u030C\u0307\u0000\u0053\u0323"d~ +"\u0000\u0053\u0323\u0307\u0000\u0053\u0326\u0000\u0053\u0327\u0000\u0054\u0307\u0000\u0054\u030C\u0000\u0054\u0323"d~ +"\u0000\u0054\u0326\u0000\u0054\u0327\u0000\u0054\u032D\u0000\u0054\u0331\u0000\u0055\u0300\u0000\u0055\u0301\u0000"d~ +"\u0055\u0302\u0000\u0055\u0303\u0000\u0055\u0303\u0301\u0000\u0055\u0304\u0000\u0055\u0304\u0308\u0000\u0055\u0306"d~ +"\u0000\u0055\u0308\u0000\u0055\u0308\u0300\u0000\u0055\u0308\u0301\u0000\u0055\u0308\u0304\u0000\u0055\u0308\u030C"d~ +"\u0000\u0055\u0309\u0000\u0055\u030A\u0000\u0055\u030B\u0000\u0055\u030C\u0000\u0055\u030F\u0000\u0055\u0311\u0000"d~ +"\u0055\u031B\u0000\u0055\u031B\u0300\u0000\u0055\u031B\u0301\u0000\u0055\u031B\u0303\u0000\u0055\u031B\u0309\u0000"d~ +"\u0055\u031B\u0323\u0000\u0055\u0323\u0000\u0055\u0324\u0000\u0055\u0328\u0000\u0055\u032D\u0000\u0055\u0330\u0000"d~ +"\u0056\u0303\u0000\u0056\u0323\u0000\u0057\u0300\u0000\u0057\u0301\u0000\u0057\u0302\u0000\u0057\u0307\u0000\u0057"d~ +"\u0308\u0000\u0057\u0323\u0000\u0058\u0307\u0000\u0058\u0308\u0000\u0059\u0300\u0000\u0059\u0301\u0000\u0059\u0302"d~ +"\u0000\u0059\u0303\u0000\u0059\u0304\u0000\u0059\u0307\u0000\u0059\u0308\u0000\u0059\u0309\u0000\u0059\u0323\u0000"d~ +"\u005A\u0301\u0000\u005A\u0302\u0000\u005A\u0307\u0000\u005A\u030C\u0000\u005A\u0323\u0000\u005A\u0331\u0000\u0060"d~ +"\u0000\u0061\u0300\u0000\u0061\u0301\u0000\u0061\u0302\u0000\u0061\u0302\u0300\u0000\u0061\u0302\u0301\u0000\u0061"d~ +"\u0302\u0303\u0000\u0061\u0302\u0309\u0000\u0061\u0303\u0000\u0061\u0304\u0000\u0061\u0306\u0000\u0061\u0306\u0300"d~ +"\u0000\u0061\u0306\u0301\u0000\u0061\u0306\u0303\u0000\u0061\u0306\u0309\u0000\u0061\u0307\u0000\u0061\u0307\u0304"d~ +"\u0000\u0061\u0308\u0000\u0061\u0308\u0304\u0000\u0061\u0309\u0000\u0061\u030A\u0000\u0061\u030A\u0301\u0000\u0061"d~ +"\u030C\u0000\u0061\u030F\u0000\u0061\u0311\u0000\u0061\u0323\u0000\u0061\u0323\u0302\u0000\u0061\u0323\u0306\u0000"d~ +"\u0061\u0325\u0000\u0061\u0328\u0000\u0062\u0307\u0000\u0062\u0323\u0000\u0062\u0331\u0000\u0063\u0301\u0000\u0063"d~ +"\u0302\u0000\u0063\u0307\u0000\u0063\u030C\u0000\u0063\u0327\u0000\u0063\u0327\u0301\u0000\u0064\u0307\u0000\u0064"d~ +"\u030C\u0000\u0064\u0323\u0000\u0064\u0327\u0000\u0064\u032D\u0000\u0064\u0331\u0000\u0065\u0300\u0000\u0065\u0301"d~ +"\u0000\u0065\u0302\u0000\u0065\u0302\u0300\u0000\u0065\u0302\u0301\u0000\u0065\u0302\u0303\u0000\u0065\u0302\u0309"d~ +"\u0000\u0065\u0303\u0000\u0065\u0304\u0000\u0065\u0304\u0300\u0000\u0065\u0304\u0301\u0000\u0065\u0306\u0000\u0065"d~ +"\u0307\u0000\u0065\u0308\u0000\u0065\u0309\u0000\u0065\u030C\u0000\u0065\u030F\u0000\u0065\u0311\u0000\u0065\u0323"d~ +"\u0000\u0065\u0323\u0302\u0000\u0065\u0327\u0000\u0065\u0327\u0306\u0000\u0065\u0328\u0000\u0065\u032D\u0000\u0065"d~ +"\u0330\u0000\u0066\u0307\u0000\u0067\u0301\u0000\u0067\u0302\u0000\u0067\u0304\u0000\u0067\u0306\u0000\u0067\u0307"d~ +"\u0000\u0067\u030C\u0000\u0067\u0327\u0000\u0068\u0302\u0000\u0068\u0307\u0000\u0068\u0308\u0000\u0068\u030C\u0000"d~ +"\u0068\u0323\u0000\u0068\u0327\u0000\u0068\u032E\u0000\u0068\u0331\u0000\u0069\u0300\u0000\u0069\u0301\u0000\u0069"d~ +"\u0302\u0000\u0069\u0303\u0000\u0069\u0304\u0000\u0069\u0306\u0000\u0069\u0308\u0000\u0069\u0308\u0301\u0000\u0069"d~ +"\u0309\u0000\u0069\u030C\u0000\u0069\u030F\u0000\u0069\u0311\u0000\u0069\u0323\u0000\u0069\u0328\u0000\u0069\u0330"d~ +"\u0000\u006A\u0302\u0000\u006A\u030C\u0000\u006B\u0301\u0000\u006B\u030C\u0000\u006B\u0323\u0000\u006B\u0327\u0000"d~ +"\u006B\u0331\u0000\u006C\u0301\u0000\u006C\u030C\u0000\u006C\u0323\u0000\u006C\u0323\u0304\u0000\u006C\u0327\u0000"d~ +"\u006C\u032D\u0000\u006C\u0331\u0000\u006D\u0301\u0000\u006D\u0307\u0000\u006D\u0323\u0000\u006E\u0300\u0000\u006E"d~ +"\u0301\u0000\u006E\u0303\u0000\u006E\u0307\u0000\u006E\u030C\u0000\u006E\u0323\u0000\u006E\u0327\u0000\u006E\u032D"d~ +"\u0000\u006E\u0331\u0000\u006F\u0300\u0000\u006F\u0301\u0000\u006F\u0302\u0000\u006F\u0302\u0300\u0000\u006F\u0302"d~ +"\u0301\u0000\u006F\u0302\u0303\u0000\u006F\u0302\u0309\u0000\u006F\u0303\u0000\u006F\u0303\u0301\u0000\u006F\u0303"d~ +"\u0304\u0000\u006F\u0303\u0308\u0000\u006F\u0304\u0000\u006F\u0304\u0300\u0000\u006F\u0304\u0301\u0000\u006F\u0306"d~ +"\u0000\u006F\u0307\u0000\u006F\u0307\u0304\u0000\u006F\u0308\u0000\u006F\u0308\u0304\u0000\u006F\u0309\u0000\u006F"d~ +"\u030B\u0000\u006F\u030C\u0000\u006F\u030F\u0000\u006F\u0311\u0000\u006F\u031B\u0000\u006F\u031B\u0300\u0000\u006F"d~ +"\u031B\u0301\u0000\u006F\u031B\u0303\u0000\u006F\u031B\u0309\u0000\u006F\u031B\u0323\u0000\u006F\u0323\u0000\u006F"d~ +"\u0323\u0302\u0000\u006F\u0328\u0000\u006F\u0328\u0304\u0000\u0070\u0301\u0000\u0070\u0307\u0000\u0072\u0301\u0000"d~ +"\u0072\u0307\u0000\u0072\u030C\u0000\u0072\u030F\u0000\u0072\u0311\u0000\u0072\u0323\u0000\u0072\u0323\u0304\u0000"d~ +"\u0072\u0327\u0000\u0072\u0331\u0000\u0073\u0301\u0000\u0073\u0301\u0307\u0000\u0073\u0302\u0000\u0073\u0307\u0000"d~ +"\u0073\u030C\u0000\u0073\u030C\u0307\u0000\u0073\u0323\u0000\u0073\u0323\u0307\u0000\u0073\u0326\u0000\u0073\u0327"d~ +"\u0000\u0074\u0307\u0000\u0074\u0308\u0000\u0074\u030C\u0000\u0074\u0323\u0000\u0074\u0326\u0000\u0074\u0327\u0000"d~ +"\u0074\u032D\u0000\u0074\u0331\u0000\u0075\u0300\u0000\u0075\u0301\u0000\u0075\u0302\u0000\u0075\u0303\u0000\u0075"d~ +"\u0303\u0301\u0000\u0075\u0304\u0000\u0075\u0304\u0308\u0000\u0075\u0306\u0000\u0075\u0308\u0000\u0075\u0308\u0300"d~ +"\u0000\u0075\u0308\u0301\u0000\u0075\u0308\u0304\u0000\u0075\u0308\u030C\u0000\u0075\u0309\u0000\u0075\u030A\u0000"d~ +"\u0075\u030B\u0000\u0075\u030C\u0000\u0075\u030F\u0000\u0075\u0311\u0000\u0075\u031B\u0000\u0075\u031B\u0300\u0000"d~ +"\u0075\u031B\u0301\u0000\u0075\u031B\u0303\u0000\u0075\u031B\u0309\u0000\u0075\u031B\u0323\u0000\u0075\u0323\u0000"d~ +"\u0075\u0324\u0000\u0075\u0328\u0000\u0075\u032D\u0000\u0075\u0330\u0000\u0076\u0303\u0000\u0076\u0323\u0000\u0077"d~ +"\u0300\u0000\u0077\u0301\u0000\u0077\u0302\u0000\u0077\u0307\u0000\u0077\u0308\u0000\u0077\u030A\u0000\u0077\u0323"d~ +"\u0000\u0078\u0307\u0000\u0078\u0308\u0000\u0079\u0300\u0000\u0079\u0301\u0000\u0079\u0302\u0000\u0079\u0303\u0000"d~ +"\u0079\u0304\u0000\u0079\u0307\u0000\u0079\u0308\u0000\u0079\u0309\u0000\u0079\u030A\u0000\u0079\u0323\u0000\u007A"d~ +"\u0301\u0000\u007A\u0302\u0000\u007A\u0307\u0000\u007A\u030C\u0000\u007A\u0323\u0000\u007A\u0331\u0000\u00A8\u0300"d~ +"\u0000\u00A8\u0301\u0000\u00A8\u0342\u0000\u00B4\u0000\u00B7\u0000\u00C6\u0301\u0000\u00C6\u0304\u0000\u00D8\u0301"d~ +"\u0000\u00E6\u0301\u0000\u00E6\u0304\u0000\u00F8\u0301\u0000\u017F\u0307\u0000\u01B7\u030C\u0000\u0292\u030C\u0000"d~ +"\u02B9\u0000\u0300\u0000\u0301\u0000\u0308\u0301\u0000\u0313\u0000\u0391\u0300\u0000\u0391\u0301\u0000\u0391\u0304"d~ +"\u0000\u0391\u0306\u0000\u0391\u0313\u0000\u0391\u0313\u0300\u0000\u0391\u0313\u0300\u0345\u0000\u0391\u0313\u0301"d~ +"\u0000\u0391\u0313\u0301\u0345\u0000\u0391\u0313\u0342\u0000\u0391\u0313\u0342\u0345\u0000\u0391\u0313\u0345\u0000"d~ +"\u0391\u0314\u0000\u0391\u0314\u0300\u0000\u0391\u0314\u0300\u0345\u0000\u0391\u0314\u0301\u0000\u0391\u0314\u0301"d~ +"\u0345\u0000\u0391\u0314\u0342\u0000\u0391\u0314\u0342\u0345\u0000\u0391\u0314\u0345\u0000\u0391\u0345\u0000\u0395"d~ +"\u0300\u0000\u0395\u0301\u0000\u0395\u0313\u0000\u0395\u0313\u0300\u0000\u0395\u0313\u0301\u0000\u0395\u0314\u0000"d~ +"\u0395\u0314\u0300\u0000\u0395\u0314\u0301\u0000\u0397\u0300\u0000\u0397\u0301\u0000\u0397\u0313\u0000\u0397\u0313"d~ +"\u0300\u0000\u0397\u0313\u0300\u0345\u0000\u0397\u0313\u0301\u0000\u0397\u0313\u0301\u0345\u0000\u0397\u0313\u0342"d~ +"\u0000\u0397\u0313\u0342\u0345\u0000\u0397\u0313\u0345\u0000\u0397\u0314\u0000\u0397\u0314\u0300\u0000\u0397\u0314"d~ +"\u0300\u0345\u0000\u0397\u0314\u0301\u0000\u0397\u0314\u0301\u0345\u0000\u0397\u0314\u0342\u0000\u0397\u0314\u0342"d~ +"\u0345\u0000\u0397\u0314\u0345\u0000\u0397\u0345\u0000\u0399\u0300\u0000\u0399\u0301\u0000\u0399\u0304\u0000\u0399"d~ +"\u0306\u0000\u0399\u0308\u0000\u0399\u0313\u0000\u0399\u0313\u0300\u0000\u0399\u0313\u0301\u0000\u0399\u0313\u0342"d~ +"\u0000\u0399\u0314\u0000\u0399\u0314\u0300\u0000\u0399\u0314\u0301\u0000\u0399\u0314\u0342\u0000\u039F\u0300\u0000"d~ +"\u039F\u0301\u0000\u039F\u0313\u0000\u039F\u0313\u0300\u0000\u039F\u0313\u0301\u0000\u039F\u0314\u0000\u039F\u0314"d~ +"\u0300\u0000\u039F\u0314\u0301\u0000\u03A1\u0314\u0000\u03A5\u0300\u0000\u03A5\u0301\u0000\u03A5\u0304\u0000\u03A5"d~ +"\u0306\u0000\u03A5\u0308\u0000\u03A5\u0314\u0000\u03A5\u0314\u0300\u0000\u03A5\u0314\u0301\u0000\u03A5\u0314\u0342"d~ +"\u0000\u03A9\u0000\u03A9\u0300\u0000\u03A9\u0301\u0000\u03A9\u0313\u0000\u03A9\u0313\u0300\u0000\u03A9\u0313\u0300"d~ +"\u0345\u0000\u03A9\u0313\u0301\u0000\u03A9\u0313\u0301\u0345\u0000\u03A9\u0313\u0342\u0000\u03A9\u0313\u0342\u0345"d~ +"\u0000\u03A9\u0313\u0345\u0000\u03A9\u0314\u0000\u03A9\u0314\u0300\u0000\u03A9\u0314\u0300\u0345\u0000\u03A9\u0314"d~ +"\u0301\u0000\u03A9\u0314\u0301\u0345\u0000\u03A9\u0314\u0342\u0000\u03A9\u0314\u0342\u0345\u0000\u03A9\u0314\u0345"d~ +"\u0000\u03A9\u0345\u0000\u03B1\u0300\u0000\u03B1\u0300\u0345\u0000\u03B1\u0301\u0000\u03B1\u0301\u0345\u0000\u03B1"d~ +"\u0304\u0000\u03B1\u0306\u0000\u03B1\u0313\u0000\u03B1\u0313\u0300\u0000\u03B1\u0313\u0300\u0345\u0000\u03B1\u0313"d~ +"\u0301\u0000\u03B1\u0313\u0301\u0345\u0000\u03B1\u0313\u0342\u0000\u03B1\u0313\u0342\u0345\u0000\u03B1\u0313\u0345"d~ +"\u0000\u03B1\u0314\u0000\u03B1\u0314\u0300\u0000\u03B1\u0314\u0300\u0345\u0000\u03B1\u0314\u0301\u0000\u03B1\u0314"d~ +"\u0301\u0345\u0000\u03B1\u0314\u0342\u0000\u03B1\u0314\u0342\u0345\u0000\u03B1\u0314\u0345\u0000\u03B1\u0342\u0000"d~ +"\u03B1\u0342\u0345\u0000\u03B1\u0345\u0000\u03B5\u0300\u0000\u03B5\u0301\u0000\u03B5\u0313\u0000\u03B5\u0313\u0300"d~ +"\u0000\u03B5\u0313\u0301\u0000\u03B5\u0314\u0000\u03B5\u0314\u0300\u0000\u03B5\u0314\u0301\u0000\u03B7\u0300\u0000"d~ +"\u03B7\u0300\u0345\u0000\u03B7\u0301\u0000\u03B7\u0301\u0345\u0000\u03B7\u0313\u0000\u03B7\u0313\u0300\u0000\u03B7"d~ +"\u0313\u0300\u0345\u0000\u03B7\u0313\u0301\u0000\u03B7\u0313\u0301\u0345\u0000\u03B7\u0313\u0342\u0000\u03B7\u0313"d~ +"\u0342\u0345\u0000\u03B7\u0313\u0345\u0000\u03B7\u0314\u0000\u03B7\u0314\u0300\u0000\u03B7\u0314\u0300\u0345\u0000"d~ +"\u03B7\u0314\u0301\u0000\u03B7\u0314\u0301\u0345\u0000\u03B7\u0314\u0342\u0000\u03B7\u0314\u0342\u0345\u0000\u03B7"d~ +"\u0314\u0345\u0000\u03B7\u0342\u0000\u03B7\u0342\u0345\u0000\u03B7\u0345\u0000\u03B9\u0000\u03B9\u0300\u0000\u03B9"d~ +"\u0301\u0000\u03B9\u0304\u0000\u03B9\u0306\u0000\u03B9\u0308\u0000\u03B9\u0308\u0300\u0000\u03B9\u0308\u0301\u0000"d~ +"\u03B9\u0308\u0342\u0000\u03B9\u0313\u0000\u03B9\u0313\u0300\u0000\u03B9\u0313\u0301\u0000\u03B9\u0313\u0342\u0000"d~ +"\u03B9\u0314\u0000\u03B9\u0314\u0300\u0000\u03B9\u0314\u0301\u0000\u03B9\u0314\u0342\u0000\u03B9\u0342\u0000\u03BF"d~ +"\u0300\u0000\u03BF\u0301\u0000\u03BF\u0313\u0000\u03BF\u0313\u0300\u0000\u03BF\u0313\u0301\u0000\u03BF\u0314\u0000"d~ +"\u03BF\u0314\u0300\u0000\u03BF\u0314\u0301\u0000\u03C1\u0313\u0000\u03C1\u0314\u0000\u03C5\u0300\u0000\u03C5\u0301"d~ +"\u0000\u03C5\u0304\u0000\u03C5\u0306\u0000\u03C5\u0308\u0000\u03C5\u0308\u0300\u0000\u03C5\u0308\u0301\u0000\u03C5"d~ +"\u0308\u0342\u0000\u03C5\u0313\u0000\u03C5\u0313\u0300\u0000\u03C5\u0313\u0301\u0000\u03C5\u0313\u0342\u0000\u03C5"d~ +"\u0314\u0000\u03C5\u0314\u0300\u0000\u03C5\u0314\u0301\u0000\u03C5\u0314\u0342\u0000\u03C5\u0342\u0000\u03C9\u0300"d~ +"\u0000\u03C9\u0300\u0345\u0000\u03C9\u0301\u0000\u03C9\u0301\u0345\u0000\u03C9\u0313\u0000\u03C9\u0313\u0300\u0000"d~ +"\u03C9\u0313\u0300\u0345\u0000\u03C9\u0313\u0301\u0000\u03C9\u0313\u0301\u0345\u0000\u03C9\u0313\u0342\u0000\u03C9"d~ +"\u0313\u0342\u0345\u0000\u03C9\u0313\u0345\u0000\u03C9\u0314\u0000\u03C9\u0314\u0300\u0000\u03C9\u0314\u0300\u0345"d~ +"\u0000\u03C9\u0314\u0301\u0000\u03C9\u0314\u0301\u0345\u0000\u03C9\u0314\u0342\u0000\u03C9\u0314\u0342\u0345\u0000"d~ +"\u03C9\u0314\u0345\u0000\u03C9\u0342\u0000\u03C9\u0342\u0345\u0000\u03C9\u0345\u0000\u03D2\u0301\u0000\u03D2\u0308"d~ +"\u0000\u0406\u0308\u0000\u0410\u0306\u0000\u0410\u0308\u0000\u0413\u0301\u0000\u0415\u0300\u0000\u0415\u0306\u0000"d~ +"\u0415\u0308\u0000\u0416\u0306\u0000\u0416\u0308\u0000\u0417\u0308\u0000\u0418\u0300\u0000\u0418\u0304\u0000\u0418"d~ +"\u0306\u0000\u0418\u0308\u0000\u041A\u0301\u0000\u041E\u0308\u0000\u0423\u0304\u0000\u0423\u0306\u0000\u0423\u0308"d~ +"\u0000\u0423\u030B\u0000\u0427\u0308\u0000\u042B\u0308\u0000\u042D\u0308\u0000\u0430\u0306\u0000\u0430\u0308\u0000"d~ +"\u0433\u0301\u0000\u0435\u0300\u0000\u0435\u0306\u0000\u0435\u0308\u0000\u0436\u0306\u0000\u0436\u0308\u0000\u0437"d~ +"\u0308\u0000\u0438\u0300\u0000\u0438\u0304\u0000\u0438\u0306\u0000\u0438\u0308\u0000\u043A\u0301\u0000\u043E\u0308"d~ +"\u0000\u0443\u0304\u0000\u0443\u0306\u0000\u0443\u0308\u0000\u0443\u030B\u0000\u0447\u0308\u0000\u044B\u0308\u0000"d~ +"\u044D\u0308\u0000\u0456\u0308\u0000\u0474\u030F\u0000\u0475\u030F\u0000\u04D8\u0308\u0000\u04D9\u0308\u0000\u04E8"d~ +"\u0308\u0000\u04E9\u0308\u0000\u05D0\u05B7\u0000\u05D0\u05B8\u0000\u05D0\u05BC\u0000\u05D1\u05BC\u0000\u05D1\u05BF"d~ +"\u0000\u05D2\u05BC\u0000\u05D3\u05BC\u0000\u05D4\u05BC\u0000\u05D5\u05B9\u0000\u05D5\u05BC\u0000\u05D6\u05BC\u0000"d~ +"\u05D8\u05BC\u0000\u05D9\u05B4\u0000\u05D9\u05BC\u0000\u05DA\u05BC\u0000\u05DB\u05BC\u0000\u05DB\u05BF\u0000\u05DC"d~ +"\u05BC\u0000\u05DE\u05BC\u0000\u05E0\u05BC\u0000\u05E1\u05BC\u0000\u05E3\u05BC\u0000\u05E4\u05BC\u0000\u05E4\u05BF"d~ +"\u0000\u05E6\u05BC\u0000\u05E7\u05BC\u0000\u05E8\u05BC\u0000\u05E9\u05BC\u0000\u05E9\u05BC\u05C1\u0000\u05E9\u05BC"d~ +"\u05C2\u0000\u05E9\u05C1\u0000\u05E9\u05C2\u0000\u05EA\u05BC\u0000\u05F2\u05B7\u0000\u0627\u0653\u0000\u0627\u0654"d~ +"\u0000\u0627\u0655\u0000\u0648\u0654\u0000\u064A\u0654\u0000\u06C1\u0654\u0000\u06D2\u0654\u0000\u06D5\u0654\u0000"d~ +"\u0915\u093C\u0000\u0916\u093C\u0000\u0917\u093C\u0000\u091C\u093C\u0000\u0921\u093C\u0000\u0922\u093C\u0000\u0928"d~ +"\u093C\u0000\u092B\u093C\u0000\u092F\u093C\u0000\u0930\u093C\u0000\u0933\u093C\u0000\u09A1\u09BC\u0000\u09A2\u09BC"d~ +"\u0000\u09AF\u09BC\u0000\u09C7\u09BE\u0000\u09C7\u09D7\u0000\u0A16\u0A3C\u0000\u0A17\u0A3C\u0000\u0A1C\u0A3C\u0000"d~ +"\u0A2B\u0A3C\u0000\u0A32\u0A3C\u0000\u0A38\u0A3C\u0000\u0B21\u0B3C\u0000\u0B22\u0B3C\u0000\u0B47\u0B3E\u0000\u0B47"d~ +"\u0B56\u0000\u0B47\u0B57\u0000\u0B92\u0BD7\u0000\u0BC6\u0BBE\u0000\u0BC6\u0BD7\u0000\u0BC7\u0BBE\u0000\u0C46\u0C56"d~ +"\u0000\u0CBF\u0CD5\u0000\u0CC6\u0CC2\u0000\u0CC6\u0CC2\u0CD5\u0000\u0CC6\u0CD5\u0000\u0CC6\u0CD6\u0000\u0D46\u0D3E"d~ +"\u0000\u0D46\u0D57\u0000\u0D47\u0D3E\u0000\u0DD9\u0DCA\u0000\u0DD9\u0DCF\u0000\u0DD9\u0DCF\u0DCA\u0000\u0DD9\u0DDF"d~ +"\u0000\u0F40\u0FB5\u0000\u0F42\u0FB7\u0000\u0F4C\u0FB7\u0000\u0F51\u0FB7\u0000\u0F56\u0FB7\u0000\u0F5B\u0FB7\u0000"d~ +"\u0F71\u0F72\u0000\u0F71\u0F74\u0000\u0F71\u0F80\u0000\u0F90\u0FB5\u0000\u0F92\u0FB7\u0000\u0F9C\u0FB7\u0000\u0FA1"d~ +"\u0FB7\u0000\u0FA6\u0FB7\u0000\u0FAB\u0FB7\u0000\u0FB2\u0F80\u0000\u0FB3\u0F80\u0000\u1025\u102E\u0000\u1B05\u1B35"d~ +"\u0000\u1B07\u1B35\u0000\u1B09\u1B35\u0000\u1B0B\u1B35\u0000\u1B0D\u1B35\u0000\u1B11\u1B35\u0000\u1B3A\u1B35\u0000"d~ +"\u1B3C\u1B35\u0000\u1B3E\u1B35\u0000\u1B3F\u1B35\u0000\u1B42\u1B35\u0000\u1FBF\u0300\u0000\u1FBF\u0301\u0000\u1FBF"d~ +"\u0342\u0000\u1FFE\u0300\u0000\u1FFE\u0301\u0000\u1FFE\u0342\u0000\u2002\u0000\u2003\u0000\u2190\u0338\u0000\u2192"d~ +"\u0338\u0000\u2194\u0338\u0000\u21D0\u0338\u0000\u21D2\u0338\u0000\u21D4\u0338\u0000\u2203\u0338\u0000\u2208\u0338"d~ +"\u0000\u220B\u0338\u0000\u2223\u0338\u0000\u2225\u0338\u0000\u223C\u0338\u0000\u2243\u0338\u0000\u2245\u0338\u0000"d~ +"\u2248\u0338\u0000\u224D\u0338\u0000\u2261\u0338\u0000\u2264\u0338\u0000\u2265\u0338\u0000\u2272\u0338\u0000\u2273"d~ +"\u0338\u0000\u2276\u0338\u0000\u2277\u0338\u0000\u227A\u0338\u0000\u227B\u0338\u0000\u227C\u0338\u0000\u227D\u0338"d~ +"\u0000\u2282\u0338\u0000\u2283\u0338\u0000\u2286\u0338\u0000\u2287\u0338\u0000\u2291\u0338\u0000\u2292\u0338\u0000"d~ +"\u22A2\u0338\u0000\u22A8\u0338\u0000\u22A9\u0338\u0000\u22AB\u0338\u0000\u22B2\u0338\u0000\u22B3\u0338\u0000\u22B4"d~ +"\u0338\u0000\u22B5\u0338\u0000\u2ADD\u0338\u0000\u3008\u0000\u3009\u0000\u3046\u3099\u0000\u304B\u3099\u0000\u304D"d~ +"\u3099\u0000\u304F\u3099\u0000\u3051\u3099\u0000\u3053\u3099\u0000\u3055\u3099\u0000\u3057\u3099\u0000\u3059\u3099"d~ +"\u0000\u305B\u3099\u0000\u305D\u3099\u0000\u305F\u3099\u0000\u3061\u3099\u0000\u3064\u3099\u0000\u3066\u3099\u0000"d~ +"\u3068\u3099\u0000\u306F\u3099\u0000\u306F\u309A\u0000\u3072\u3099\u0000\u3072\u309A\u0000\u3075\u3099\u0000\u3075"d~ +"\u309A\u0000\u3078\u3099\u0000\u3078\u309A\u0000\u307B\u3099\u0000\u307B\u309A\u0000\u309D\u3099\u0000\u30A6\u3099"d~ +"\u0000\u30AB\u3099\u0000\u30AD\u3099\u0000\u30AF\u3099\u0000\u30B1\u3099\u0000\u30B3\u3099\u0000\u30B5\u3099\u0000"d~ +"\u30B7\u3099\u0000\u30B9\u3099\u0000\u30BB\u3099\u0000\u30BD\u3099\u0000\u30BF\u3099\u0000\u30C1\u3099\u0000\u30C4"d~ +"\u3099\u0000\u30C6\u3099\u0000\u30C8\u3099\u0000\u30CF\u3099\u0000\u30CF\u309A\u0000\u30D2\u3099\u0000\u30D2\u309A"d~ +"\u0000\u30D5\u3099\u0000\u30D5\u309A\u0000\u30D8\u3099\u0000\u30D8\u309A\u0000\u30DB\u3099\u0000\u30DB\u309A\u0000"d~ +"\u30EF\u3099\u0000\u30F0\u3099\u0000\u30F1\u3099\u0000\u30F2\u3099\u0000\u30FD\u3099\u0000\u349E\u0000\u34B9\u0000"d~ +"\u34BB\u0000\u34DF\u0000\u3515\u0000\u36EE\u0000\u36FC\u0000\u3781\u0000\u382F\u0000\u3862\u0000\u387C\u0000\u38C7"d~ +"\u0000\u38E3\u0000\u391C\u0000\u393A\u0000\u3A2E\u0000\u3A6C\u0000\u3AE4\u0000\u3B08\u0000\u3B19\u0000\u3B49\u0000"d~ +"\u3B9D\u0000\u3C18\u0000\u3C4E\u0000\u3D33\u0000\u3D96\u0000\u3EAC\u0000\u3EB8\u0000\u3F1B\u0000\u3FFC\u0000\u4008"d~ +"\u0000\u4018\u0000\u4039\u0000\u4046\u0000\u4096\u0000\u40E3\u0000\u412F\u0000\u4202\u0000\u4227\u0000\u42A0\u0000"d~ +"\u4301\u0000\u4334\u0000\u4359\u0000\u43D5\u0000\u43D9\u0000\u440B\u0000\u446B\u0000\u452B\u0000\u455D\u0000\u4561"d~ +"\u0000\u456B\u0000\u45D7\u0000\u45F9\u0000\u4635\u0000\u46BE\u0000\u46C7\u0000\u4995\u0000\u49E6\u0000\u4A6E\u0000"d~ +"\u4A76\u0000\u4AB2\u0000\u4B33\u0000\u4BCE\u0000\u4CCE\u0000\u4CED\u0000\u4CF8\u0000\u4D56\u0000\u4E0D\u0000\u4E26"d~ +"\u0000\u4E32\u0000\u4E38\u0000\u4E39\u0000\u4E3D\u0000\u4E41\u0000\u4E82\u0000\u4E86\u0000\u4EAE\u0000\u4EC0\u0000"d~ +"\u4ECC\u0000\u4EE4\u0000\u4F60\u0000\u4F80\u0000\u4F86\u0000\u4F8B\u0000\u4FAE\u0000\u4FBB\u0000\u4FBF\u0000\u5002"d~ +"\u0000\u502B\u0000\u507A\u0000\u5099\u0000\u50CF\u0000\u50DA\u0000\u50E7\u0000\u5140\u0000\u5145\u0000\u514D\u0000"d~ +"\u5154\u0000\u5164\u0000\u5167\u0000\u5168\u0000\u5169\u0000\u516D\u0000\u5177\u0000\u5180\u0000\u518D\u0000\u5192"d~ +"\u0000\u5195\u0000\u5197\u0000\u51A4\u0000\u51AC\u0000\u51B5\u0000\u51B7\u0000\u51C9\u0000\u51CC\u0000\u51DC\u0000"d~ +"\u51DE\u0000\u51F5\u0000\u5203\u0000\u5207\u0000\u5217\u0000\u5229\u0000\u523A\u0000\u523B\u0000\u5246\u0000\u5272"d~ +"\u0000\u5277\u0000\u5289\u0000\u529B\u0000\u52A3\u0000\u52B3\u0000\u52C7\u0000\u52C9\u0000\u52D2\u0000\u52DE\u0000"d~ +"\u52E4\u0000\u52F5\u0000\u52FA\u0000\u5305\u0000\u5306\u0000\u5317\u0000\u533F\u0000\u5349\u0000\u5351\u0000\u535A"d~ +"\u0000\u5373\u0000\u5375\u0000\u537D\u0000\u537F\u0000\u53C3\u0000\u53CA\u0000\u53DF\u0000\u53E5\u0000\u53EB\u0000"d~ +"\u53F1\u0000\u5406\u0000\u540F\u0000\u541D\u0000\u5438\u0000\u5442\u0000\u5448\u0000\u5468\u0000\u549E\u0000\u54A2"d~ +"\u0000\u54BD\u0000\u54F6\u0000\u5510\u0000\u5553\u0000\u5555\u0000\u5563\u0000\u5584\u0000\u5587\u0000\u5599\u0000"d~ +"\u559D\u0000\u55AB\u0000\u55B3\u0000\u55C0\u0000\u55C2\u0000\u55E2\u0000\u5606\u0000\u5651\u0000\u5668\u0000\u5674"d~ +"\u0000\u56F9\u0000\u5716\u0000\u5717\u0000\u578B\u0000\u57CE\u0000\u57F4\u0000\u580D\u0000\u5831\u0000\u5832\u0000"d~ +"\u5840\u0000\u585A\u0000\u585E\u0000\u58A8\u0000\u58AC\u0000\u58B3\u0000\u58D8\u0000\u58DF\u0000\u58EE\u0000\u58F2"d~ +"\u0000\u58F7\u0000\u5906\u0000\u591A\u0000\u5922\u0000\u5944\u0000\u5948\u0000\u5951\u0000\u5954\u0000\u5962\u0000"d~ +"\u5973\u0000\u59D8\u0000\u59EC\u0000\u5A1B\u0000\u5A27\u0000\u5A62\u0000\u5A66\u0000\u5AB5\u0000\u5B08\u0000\u5B28"d~ +"\u0000\u5B3E\u0000\u5B85\u0000\u5BC3\u0000\u5BD8\u0000\u5BE7\u0000\u5BEE\u0000\u5BF3\u0000\u5BFF\u0000\u5C06\u0000"d~ +"\u5C22\u0000\u5C3F\u0000\u5C60\u0000\u5C62\u0000\u5C64\u0000\u5C65\u0000\u5C6E\u0000\u5C8D\u0000\u5CC0\u0000\u5D19"d~ +"\u0000\u5D43\u0000\u5D50\u0000\u5D6B\u0000\u5D6E\u0000\u5D7C\u0000\u5DB2\u0000\u5DBA\u0000\u5DE1\u0000\u5DE2\u0000"d~ +"\u5DFD\u0000\u5E28\u0000\u5E3D\u0000\u5E69\u0000\u5E74\u0000\u5EA6\u0000\u5EB0\u0000\u5EB3\u0000\u5EB6\u0000\u5EC9"d~ +"\u0000\u5ECA\u0000\u5ED2\u0000\u5ED3\u0000\u5ED9\u0000\u5EEC\u0000\u5EFE\u0000\u5F04\u0000\u5F22\u0000\u5F53\u0000"d~ +"\u5F62\u0000\u5F69\u0000\u5F6B\u0000\u5F8B\u0000\u5F9A\u0000\u5FA9\u0000\u5FAD\u0000\u5FCD\u0000\u5FD7\u0000\u5FF5"d~ +"\u0000\u5FF9\u0000\u6012\u0000\u601C\u0000\u6075\u0000\u6081\u0000\u6094\u0000\u60C7\u0000\u60D8\u0000\u60E1\u0000"d~ +"\u6108\u0000\u6144\u0000\u6148\u0000\u614C\u0000\u614E\u0000\u6160\u0000\u6168\u0000\u617A\u0000\u618E\u0000\u6190"d~ +"\u0000\u61A4\u0000\u61AF\u0000\u61B2\u0000\u61DE\u0000\u61F2\u0000\u61F6\u0000\u6200\u0000\u6210\u0000\u621B\u0000"d~ +"\u622E\u0000\u6234\u0000\u625D\u0000\u62B1\u0000\u62C9\u0000\u62CF\u0000\u62D3\u0000\u62D4\u0000\u62FC\u0000\u62FE"d~ +"\u0000\u633D\u0000\u6350\u0000\u6368\u0000\u637B\u0000\u6383\u0000\u63A0\u0000\u63A9\u0000\u63C4\u0000\u63C5\u0000"d~ +"\u63E4\u0000\u641C\u0000\u6422\u0000\u6452\u0000\u6469\u0000\u6477\u0000\u647E\u0000\u649A\u0000\u649D\u0000\u64C4"d~ +"\u0000\u654F\u0000\u6556\u0000\u656C\u0000\u6578\u0000\u6599\u0000\u65C5\u0000\u65E2\u0000\u65E3\u0000\u6613\u0000"d~ +"\u6649\u0000\u6674\u0000\u6688\u0000\u6691\u0000\u669C\u0000\u66B4\u0000\u66C6\u0000\u66F4\u0000\u66F8\u0000\u6700"d~ +"\u0000\u6717\u0000\u671B\u0000\u6721\u0000\u674E\u0000\u6753\u0000\u6756\u0000\u675E\u0000\u677B\u0000\u6785\u0000"d~ +"\u6797\u0000\u67F3\u0000\u67FA\u0000\u6817\u0000\u681F\u0000\u6852\u0000\u6881\u0000\u6885\u0000\u688E\u0000\u68A8"d~ +"\u0000\u6914\u0000\u6942\u0000\u69A3\u0000\u69EA\u0000\u6A02\u0000\u6A13\u0000\u6AA8\u0000\u6AD3\u0000\u6ADB\u0000"d~ +"\u6B04\u0000\u6B21\u0000\u6B54\u0000\u6B72\u0000\u6B77\u0000\u6B79\u0000\u6B9F\u0000\u6BAE\u0000\u6BBA\u0000\u6BBB"d~ +"\u0000\u6C4E\u0000\u6C67\u0000\u6C88\u0000\u6CBF\u0000\u6CCC\u0000\u6CCD\u0000\u6CE5\u0000\u6D16\u0000\u6D1B\u0000"d~ +"\u6D1E\u0000\u6D34\u0000\u6D3E\u0000\u6D41\u0000\u6D69\u0000\u6D6A\u0000\u6D77\u0000\u6D78\u0000\u6D85\u0000\u6DCB"d~ +"\u0000\u6DDA\u0000\u6DEA\u0000\u6DF9\u0000\u6E1A\u0000\u6E2F\u0000\u6E6E\u0000\u6E9C\u0000\u6EBA\u0000\u6EC7\u0000"d~ +"\u6ECB\u0000\u6ED1\u0000\u6EDB\u0000\u6F0F\u0000\u6F22\u0000\u6F23\u0000\u6F6E\u0000\u6FC6\u0000\u6FEB\u0000\u6FFE"d~ +"\u0000\u701B\u0000\u701E\u0000\u7039\u0000\u704A\u0000\u7070\u0000\u7077\u0000\u707D\u0000\u7099\u0000\u70AD\u0000"d~ +"\u70C8\u0000\u70D9\u0000\u7145\u0000\u7149\u0000\u716E\u0000\u719C\u0000\u71CE\u0000\u71D0\u0000\u7210\u0000\u721B"d~ +"\u0000\u7228\u0000\u722B\u0000\u7235\u0000\u7250\u0000\u7262\u0000\u7280\u0000\u7295\u0000\u72AF\u0000\u72C0\u0000"d~ +"\u72FC\u0000\u732A\u0000\u7375\u0000\u737A\u0000\u7387\u0000\u738B\u0000\u73A5\u0000\u73B2\u0000\u73DE\u0000\u7406"d~ +"\u0000\u7409\u0000\u7422\u0000\u7447\u0000\u745C\u0000\u7469\u0000\u7471\u0000\u7485\u0000\u7489\u0000\u7498\u0000"d~ +"\u74CA\u0000\u7506\u0000\u7524\u0000\u753B\u0000\u753E\u0000\u7559\u0000\u7565\u0000\u7570\u0000\u75E2\u0000\u7610"d~ +"\u0000\u761D\u0000\u761F\u0000\u7642\u0000\u7669\u0000\u76CA\u0000\u76DB\u0000\u76E7\u0000\u76F4\u0000\u7701\u0000"d~ +"\u771E\u0000\u771F\u0000\u7740\u0000\u774A\u0000\u778B\u0000\u77A7\u0000\u784E\u0000\u786B\u0000\u788C\u0000\u7891"d~ +"\u0000\u78CA\u0000\u78CC\u0000\u78FB\u0000\u792A\u0000\u793C\u0000\u793E\u0000\u7948\u0000\u7949\u0000\u7950\u0000"d~ +"\u7956\u0000\u795D\u0000\u795E\u0000\u7965\u0000\u797F\u0000\u798D\u0000\u798E\u0000\u798F\u0000\u79AE\u0000\u79CA"d~ +"\u0000\u79EB\u0000\u7A1C\u0000\u7A40\u0000\u7A4A\u0000\u7A4F\u0000\u7A81\u0000\u7AB1\u0000\u7ACB\u0000\u7AEE\u0000"d~ +"\u7B20\u0000\u7BC0\u0000\u7BC6\u0000\u7BC9\u0000\u7C3E\u0000\u7C60\u0000\u7C7B\u0000\u7C92\u0000\u7CBE\u0000\u7CD2"d~ +"\u0000\u7CD6\u0000\u7CE3\u0000\u7CE7\u0000\u7CE8\u0000\u7D00\u0000\u7D10\u0000\u7D22\u0000\u7D2F\u0000\u7D5B\u0000"d~ +"\u7D63\u0000\u7DA0\u0000\u7DBE\u0000\u7DC7\u0000\u7DF4\u0000\u7E02\u0000\u7E09\u0000\u7E37\u0000\u7E41\u0000\u7E45"d~ +"\u0000\u7F3E\u0000\u7F72\u0000\u7F79\u0000\u7F7A\u0000\u7F85\u0000\u7F95\u0000\u7F9A\u0000\u7FBD\u0000\u7FFA\u0000"d~ +"\u8001\u0000\u8005\u0000\u8046\u0000\u8060\u0000\u806F\u0000\u8070\u0000\u807E\u0000\u808B\u0000\u80AD\u0000\u80B2"d~ +"\u0000\u8103\u0000\u813E\u0000\u81D8\u0000\u81E8\u0000\u81ED\u0000\u8201\u0000\u8204\u0000\u8218\u0000\u826F\u0000"d~ +"\u8279\u0000\u828B\u0000\u8291\u0000\u829D\u0000\u82B1\u0000\u82B3\u0000\u82BD\u0000\u82E5\u0000\u82E6\u0000\u831D"d~ +"\u0000\u8323\u0000\u8336\u0000\u8352\u0000\u8353\u0000\u8363\u0000\u83AD\u0000\u83BD\u0000\u83C9\u0000\u83CA\u0000"d~ +"\u83CC\u0000\u83DC\u0000\u83E7\u0000\u83EF\u0000\u83F1\u0000\u843D\u0000\u8449\u0000\u8457\u0000\u84EE\u0000\u84F1"d~ +"\u0000\u84F3\u0000\u84FC\u0000\u8516\u0000\u8564\u0000\u85CD\u0000\u85FA\u0000\u8606\u0000\u8612\u0000\u862D\u0000"d~ +"\u863F\u0000\u8650\u0000\u865C\u0000\u8667\u0000\u8669\u0000\u8688\u0000\u86A9\u0000\u86E2\u0000\u870E\u0000\u8728"d~ +"\u0000\u876B\u0000\u8779\u0000\u8786\u0000\u87BA\u0000\u87E1\u0000\u8801\u0000\u881F\u0000\u884C\u0000\u8860\u0000"d~ +"\u8863\u0000\u88C2\u0000\u88CF\u0000\u88D7\u0000\u88DE\u0000\u88E1\u0000\u88F8\u0000\u88FA\u0000\u8910\u0000\u8941"d~ +"\u0000\u8964\u0000\u8986\u0000\u898B\u0000\u8996\u0000\u8AA0\u0000\u8AAA\u0000\u8ABF\u0000\u8ACB\u0000\u8AD2\u0000"d~ +"\u8AD6\u0000\u8AED\u0000\u8AF8\u0000\u8AFE\u0000\u8B01\u0000\u8B39\u0000\u8B58\u0000\u8B80\u0000\u8B8A\u0000\u8C48"d~ +"\u0000\u8C55\u0000\u8CAB\u0000\u8CC1\u0000\u8CC2\u0000\u8CC8\u0000\u8CD3\u0000\u8D08\u0000\u8D1B\u0000\u8D77\u0000"d~ +"\u8DBC\u0000\u8DCB\u0000\u8DEF\u0000\u8DF0\u0000\u8ECA\u0000\u8ED4\u0000\u8F26\u0000\u8F2A\u0000\u8F38\u0000\u8F3B"d~ +"\u0000\u8F62\u0000\u8F9E\u0000\u8FB0\u0000\u8FB6\u0000\u9023\u0000\u9038\u0000\u9072\u0000\u907C\u0000\u908F\u0000"d~ +"\u9094\u0000\u90CE\u0000\u90DE\u0000\u90F1\u0000\u90FD\u0000\u9111\u0000\u911B\u0000\u916A\u0000\u9199\u0000\u91B4"d~ +"\u0000\u91CC\u0000\u91CF\u0000\u91D1\u0000\u9234\u0000\u9238\u0000\u9276\u0000\u927C\u0000\u92D7\u0000\u92D8\u0000"d~ +"\u9304\u0000\u934A\u0000\u93F9\u0000\u9415\u0000\u958B\u0000\u95AD\u0000\u95B7\u0000\u962E\u0000\u964B\u0000\u964D"d~ +"\u0000\u9675\u0000\u9678\u0000\u967C\u0000\u9686\u0000\u96A3\u0000\u96B7\u0000\u96B8\u0000\u96C3\u0000\u96E2\u0000"d~ +"\u96E3\u0000\u96F6\u0000\u96F7\u0000\u9723\u0000\u9732\u0000\u9748\u0000\u9756\u0000\u97DB\u0000\u97E0\u0000\u97FF"d~ +"\u0000\u980B\u0000\u9818\u0000\u9829\u0000\u983B\u0000\u985E\u0000\u98E2\u0000\u98EF\u0000\u98FC\u0000\u9928\u0000"d~ +"\u9929\u0000\u99A7\u0000\u99C2\u0000\u99F1\u0000\u99FE\u0000\u9A6A\u0000\u9B12\u0000\u9B6F\u0000\u9C40\u0000\u9C57"d~ +"\u0000\u9CFD\u0000\u9D67\u0000\u9DB4\u0000\u9DFA\u0000\u9E1E\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EBB\u0000"d~ +"\u9ECE\u0000\u9EF9\u0000\u9EFE\u0000\u9F05\u0000\u9F0F\u0000\u9F16\u0000\u9F3B\u0000\u9F43\u0000\u9F8D\u0000\u9F8E"d~ +"\u0000\u9F9C\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127"d~ +"\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000"d~ +"\U000114B9\U000114BA\u0000\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935"d~ +"\U00011930\u0000\U0001D157\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158"d~ +"\U0001D165\U0001D16F\u0000\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165"d~ +"\U0001D172\u0000\U0001D1B9\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000"d~ +"\U0001D1BA\U0001D165\u0000\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U00020122\u0000"d~ +"\U0002051C\u0000\U00020525\u0000\U0002054B\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000"d~ +"\U00020B63\u0000\U000214E4\u0000\U000216A8\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000"d~ +"\U00021DE4\u0000\U00021DE6\u0000\U00022183\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000"d~ +"\U0002284A\u0000\U00022B0C\u0000\U00022BF1\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000"d~ +"\U0002339C\u0000\U000233C3\u0000\U000233D5\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000"d~ +"\U00023AFA\u0000\U00023CBC\u0000\U00023D1E\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000"d~ +"\U000242EE\u0000\U000243AB\u0000\U00024608\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000"d~ +"\U00024FA1\u0000\U00024FB8\u0000\U00025044\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000"d~ +"\U00025249\u0000\U0002541D\u0000\U00025626\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000"d~ +"\U00025BAB\u0000\U00025C80\u0000\U00025CD0\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000"d~ +"\U000262D9\u0000\U0002633E\u0000\U000264DA\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000"d~ +"\U00026B3C\u0000\U00026C36\u0000\U00026CD5\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000"d~ +"\U000273CA\u0000\U00027667\u0000\U000278AE\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000"d~ +"\U000285D2\u0000\U000285ED\u0000\U0002872E\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000"d~ +"\U0002921A\u0000\U0002940A\u0000\U00029496\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000"d~ +"\U0002A20E\u0000\U0002A291\u0000\U0002A392\u0000\U0002A600\u0000"d; +return t[]; +} +dstring decompCompatTable() nothrow @nogc pure @safe { +static immutable dchar[10425] t = +"\u0000\u0020\u0000\u0020\u0301\u0000\u0020\u0303\u0000\u0020\u0304\u0000\u0020\u0305\u0000\u0020\u0306\u0000\u0020"d~ +"\u0307\u0000\u0020\u0308\u0000\u0020\u0308\u0300\u0000\u0020\u0308\u0301\u0000\u0020\u0308\u0342\u0000\u0020\u030A"d~ +"\u0000\u0020\u030B\u0000\u0020\u0313\u0000\u0020\u0313\u0300\u0000\u0020\u0313\u0301\u0000\u0020\u0313\u0342\u0000"d~ +"\u0020\u0314\u0000\u0020\u0314\u0300\u0000\u0020\u0314\u0301\u0000\u0020\u0314\u0342\u0000\u0020\u0327\u0000\u0020"d~ +"\u0328\u0000\u0020\u0333\u0000\u0020\u0342\u0000\u0020\u0345\u0000\u0020\u064B\u0000\u0020\u064C\u0000\u0020\u064C"d~ +"\u0651\u0000\u0020\u064D\u0000\u0020\u064D\u0651\u0000\u0020\u064E\u0000\u0020\u064E\u0651\u0000\u0020\u064F\u0000"d~ +"\u0020\u064F\u0651\u0000\u0020\u0650\u0000\u0020\u0650\u0651\u0000\u0020\u0651\u0000\u0020\u0651\u0670\u0000\u0020"d~ +"\u0652\u0000\u0020\u3099\u0000\u0020\u309A\u0000\u0021\u0000\u0021\u0021\u0000\u0021\u003F\u0000\u0022\u0000\u0023"d~ +"\u0000\u0024\u0000\u0025\u0000\u0026\u0000\u0027\u0000\u0028\u0000\u0028\u0031\u0029\u0000\u0028\u0031\u0030\u0029"d~ +"\u0000\u0028\u0031\u0031\u0029\u0000\u0028\u0031\u0032\u0029\u0000\u0028\u0031\u0033\u0029\u0000\u0028\u0031\u0034"d~ +"\u0029\u0000\u0028\u0031\u0035\u0029\u0000\u0028\u0031\u0036\u0029\u0000\u0028\u0031\u0037\u0029\u0000\u0028\u0031"d~ +"\u0038\u0029\u0000\u0028\u0031\u0039\u0029\u0000\u0028\u0032\u0029\u0000\u0028\u0032\u0030\u0029\u0000\u0028\u0033"d~ +"\u0029\u0000\u0028\u0034\u0029\u0000\u0028\u0035\u0029\u0000\u0028\u0036\u0029\u0000\u0028\u0037\u0029\u0000\u0028"d~ +"\u0038\u0029\u0000\u0028\u0039\u0029\u0000\u0028\u0041\u0029\u0000\u0028\u0042\u0029\u0000\u0028\u0043\u0029\u0000"d~ +"\u0028\u0044\u0029\u0000\u0028\u0045\u0029\u0000\u0028\u0046\u0029\u0000\u0028\u0047\u0029\u0000\u0028\u0048\u0029"d~ +"\u0000\u0028\u0049\u0029\u0000\u0028\u004A\u0029\u0000\u0028\u004B\u0029\u0000\u0028\u004C\u0029\u0000\u0028\u004D"d~ +"\u0029\u0000\u0028\u004E\u0029\u0000\u0028\u004F\u0029\u0000\u0028\u0050\u0029\u0000\u0028\u0051\u0029\u0000\u0028"d~ +"\u0052\u0029\u0000\u0028\u0053\u0029\u0000\u0028\u0054\u0029\u0000\u0028\u0055\u0029\u0000\u0028\u0056\u0029\u0000"d~ +"\u0028\u0057\u0029\u0000\u0028\u0058\u0029\u0000\u0028\u0059\u0029\u0000\u0028\u005A\u0029\u0000\u0028\u0061\u0029"d~ +"\u0000\u0028\u0062\u0029\u0000\u0028\u0063\u0029\u0000\u0028\u0064\u0029\u0000\u0028\u0065\u0029\u0000\u0028\u0066"d~ +"\u0029\u0000\u0028\u0067\u0029\u0000\u0028\u0068\u0029\u0000\u0028\u0069\u0029\u0000\u0028\u006A\u0029\u0000\u0028"d~ +"\u006B\u0029\u0000\u0028\u006C\u0029\u0000\u0028\u006D\u0029\u0000\u0028\u006E\u0029\u0000\u0028\u006F\u0029\u0000"d~ +"\u0028\u0070\u0029\u0000\u0028\u0071\u0029\u0000\u0028\u0072\u0029\u0000\u0028\u0073\u0029\u0000\u0028\u0074\u0029"d~ +"\u0000\u0028\u0075\u0029\u0000\u0028\u0076\u0029\u0000\u0028\u0077\u0029\u0000\u0028\u0078\u0029\u0000\u0028\u0079"d~ +"\u0029\u0000\u0028\u007A\u0029\u0000\u0028\u1100\u0029\u0000\u0028\u1100\u1161\u0029\u0000\u0028\u1102\u0029\u0000"d~ +"\u0028\u1102\u1161\u0029\u0000\u0028\u1103\u0029\u0000\u0028\u1103\u1161\u0029\u0000\u0028\u1105\u0029\u0000\u0028"d~ +"\u1105\u1161\u0029\u0000\u0028\u1106\u0029\u0000\u0028\u1106\u1161\u0029\u0000\u0028\u1107\u0029\u0000\u0028\u1107"d~ +"\u1161\u0029\u0000\u0028\u1109\u0029\u0000\u0028\u1109\u1161\u0029\u0000\u0028\u110B\u0029\u0000\u0028\u110B\u1161"d~ +"\u0029\u0000\u0028\u110B\u1169\u110C\u1165\u11AB\u0029\u0000\u0028\u110B\u1169\u1112\u116E\u0029\u0000\u0028\u110C"d~ +"\u0029\u0000\u0028\u110C\u1161\u0029\u0000\u0028\u110C\u116E\u0029\u0000\u0028\u110E\u0029\u0000\u0028\u110E\u1161"d~ +"\u0029\u0000\u0028\u110F\u0029\u0000\u0028\u110F\u1161\u0029\u0000\u0028\u1110\u0029\u0000\u0028\u1110\u1161\u0029"d~ +"\u0000\u0028\u1111\u0029\u0000\u0028\u1111\u1161\u0029\u0000\u0028\u1112\u0029\u0000\u0028\u1112\u1161\u0029\u0000"d~ +"\u0028\u4E00\u0029\u0000\u0028\u4E03\u0029\u0000\u0028\u4E09\u0029\u0000\u0028\u4E5D\u0029\u0000\u0028\u4E8C\u0029"d~ +"\u0000\u0028\u4E94\u0029\u0000\u0028\u4EE3\u0029\u0000\u0028\u4F01\u0029\u0000\u0028\u4F11\u0029\u0000\u0028\u516B"d~ +"\u0029\u0000\u0028\u516D\u0029\u0000\u0028\u52B4\u0029\u0000\u0028\u5341\u0029\u0000\u0028\u5354\u0029\u0000\u0028"d~ +"\u540D\u0029\u0000\u0028\u547C\u0029\u0000\u0028\u56DB\u0029\u0000\u0028\u571F\u0029\u0000\u0028\u5B66\u0029\u0000"d~ +"\u0028\u65E5\u0029\u0000\u0028\u6708\u0029\u0000\u0028\u6709\u0029\u0000\u0028\u6728\u0029\u0000\u0028\u682A\u0029"d~ +"\u0000\u0028\u6C34\u0029\u0000\u0028\u706B\u0029\u0000\u0028\u7279\u0029\u0000\u0028\u76E3\u0029\u0000\u0028\u793E"d~ +"\u0029\u0000\u0028\u795D\u0029\u0000\u0028\u796D\u0029\u0000\u0028\u81EA\u0029\u0000\u0028\u81F3\u0029\u0000\u0028"d~ +"\u8CA1\u0029\u0000\u0028\u8CC7\u0029\u0000\u0028\u91D1\u0029\u0000\u0029\u0000\u002A\u0000\u002B\u0000\u002C\u0000"d~ +"\u002D\u0000\u002E\u0000\u002E\u002E\u0000\u002E\u002E\u002E\u0000\u002F\u0000\u0030\u0000\u0030\u002C\u0000\u0030"d~ +"\u002E\u0000\u0030\u2044\u0033\u0000\u0030\u70B9\u0000\u0031\u0000\u0031\u002C\u0000\u0031\u002E\u0000\u0031\u0030"d~ +"\u0000\u0031\u0030\u002E\u0000\u0031\u0030\u65E5\u0000\u0031\u0030\u6708\u0000\u0031\u0030\u70B9\u0000\u0031\u0031"d~ +"\u0000\u0031\u0031\u002E\u0000\u0031\u0031\u65E5\u0000\u0031\u0031\u6708\u0000\u0031\u0031\u70B9\u0000\u0031\u0032"d~ +"\u0000\u0031\u0032\u002E\u0000\u0031\u0032\u65E5\u0000\u0031\u0032\u6708\u0000\u0031\u0032\u70B9\u0000\u0031\u0033"d~ +"\u0000\u0031\u0033\u002E\u0000\u0031\u0033\u65E5\u0000\u0031\u0033\u70B9\u0000\u0031\u0034\u0000\u0031\u0034\u002E"d~ +"\u0000\u0031\u0034\u65E5\u0000\u0031\u0034\u70B9\u0000\u0031\u0035\u0000\u0031\u0035\u002E\u0000\u0031\u0035\u65E5"d~ +"\u0000\u0031\u0035\u70B9\u0000\u0031\u0036\u0000\u0031\u0036\u002E\u0000\u0031\u0036\u65E5\u0000\u0031\u0036\u70B9"d~ +"\u0000\u0031\u0037\u0000\u0031\u0037\u002E\u0000\u0031\u0037\u65E5\u0000\u0031\u0037\u70B9\u0000\u0031\u0038\u0000"d~ +"\u0031\u0038\u002E\u0000\u0031\u0038\u65E5\u0000\u0031\u0038\u70B9\u0000\u0031\u0039\u0000\u0031\u0039\u002E\u0000"d~ +"\u0031\u0039\u65E5\u0000\u0031\u0039\u70B9\u0000\u0031\u2044\u0000\u0031\u2044\u0031\u0030\u0000\u0031\u2044\u0032"d~ +"\u0000\u0031\u2044\u0033\u0000\u0031\u2044\u0034\u0000\u0031\u2044\u0035\u0000\u0031\u2044\u0036\u0000\u0031\u2044"d~ +"\u0037\u0000\u0031\u2044\u0038\u0000\u0031\u2044\u0039\u0000\u0031\u65E5\u0000\u0031\u6708\u0000\u0031\u70B9\u0000"d~ +"\u0032\u0000\u0032\u002C\u0000\u0032\u002E\u0000\u0032\u0030\u0000\u0032\u0030\u002E\u0000\u0032\u0030\u65E5\u0000"d~ +"\u0032\u0030\u70B9\u0000\u0032\u0031\u0000\u0032\u0031\u65E5\u0000\u0032\u0031\u70B9\u0000\u0032\u0032\u0000\u0032"d~ +"\u0032\u65E5\u0000\u0032\u0032\u70B9\u0000\u0032\u0033\u0000\u0032\u0033\u65E5\u0000\u0032\u0033\u70B9\u0000\u0032"d~ +"\u0034\u0000\u0032\u0034\u65E5\u0000\u0032\u0034\u70B9\u0000\u0032\u0035\u0000\u0032\u0035\u65E5\u0000\u0032\u0036"d~ +"\u0000\u0032\u0036\u65E5\u0000\u0032\u0037\u0000\u0032\u0037\u65E5\u0000\u0032\u0038\u0000\u0032\u0038\u65E5\u0000"d~ +"\u0032\u0039\u0000\u0032\u0039\u65E5\u0000\u0032\u2044\u0033\u0000\u0032\u2044\u0035\u0000\u0032\u65E5\u0000\u0032"d~ +"\u6708\u0000\u0032\u70B9\u0000\u0033\u0000\u0033\u002C\u0000\u0033\u002E\u0000\u0033\u0030\u0000\u0033\u0030\u65E5"d~ +"\u0000\u0033\u0031\u0000\u0033\u0031\u65E5\u0000\u0033\u0032\u0000\u0033\u0033\u0000\u0033\u0034\u0000\u0033\u0035"d~ +"\u0000\u0033\u0036\u0000\u0033\u0037\u0000\u0033\u0038\u0000\u0033\u0039\u0000\u0033\u2044\u0034\u0000\u0033\u2044"d~ +"\u0035\u0000\u0033\u2044\u0038\u0000\u0033\u65E5\u0000\u0033\u6708\u0000\u0033\u70B9\u0000\u0034\u0000\u0034\u002C"d~ +"\u0000\u0034\u002E\u0000\u0034\u0030\u0000\u0034\u0031\u0000\u0034\u0032\u0000\u0034\u0033\u0000\u0034\u0034\u0000"d~ +"\u0034\u0035\u0000\u0034\u0036\u0000\u0034\u0037\u0000\u0034\u0038\u0000\u0034\u0039\u0000\u0034\u2044\u0035\u0000"d~ +"\u0034\u65E5\u0000\u0034\u6708\u0000\u0034\u70B9\u0000\u0035\u0000\u0035\u002C\u0000\u0035\u002E\u0000\u0035\u0030"d~ +"\u0000\u0035\u2044\u0036\u0000\u0035\u2044\u0038\u0000\u0035\u65E5\u0000\u0035\u6708\u0000\u0035\u70B9\u0000\u0036"d~ +"\u0000\u0036\u002C\u0000\u0036\u002E\u0000\u0036\u65E5\u0000\u0036\u6708\u0000\u0036\u70B9\u0000\u0037\u0000\u0037"d~ +"\u002C\u0000\u0037\u002E\u0000\u0037\u2044\u0038\u0000\u0037\u65E5\u0000\u0037\u6708\u0000\u0037\u70B9\u0000\u0038"d~ +"\u0000\u0038\u002C\u0000\u0038\u002E\u0000\u0038\u65E5\u0000\u0038\u6708\u0000\u0038\u70B9\u0000\u0039\u0000\u0039"d~ +"\u002C\u0000\u0039\u002E\u0000\u0039\u65E5\u0000\u0039\u6708\u0000\u0039\u70B9\u0000\u003A\u0000\u003A\u003A\u003D"d~ +"\u0000\u003B\u0000\u003C\u0000\u003C\u0338\u0000\u003D\u0000\u003D\u003D\u0000\u003D\u003D\u003D\u0000\u003D\u0338"d~ +"\u0000\u003E\u0000\u003E\u0338\u0000\u003F\u0000\u003F\u0021\u0000\u003F\u003F\u0000\u0040\u0000\u0041\u0000\u0041"d~ +"\u0055\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041\u0302\u0000\u0041\u0302\u0300\u0000\u0041\u0302\u0301\u0000"d~ +"\u0041\u0302\u0303\u0000\u0041\u0302\u0309\u0000\u0041\u0303\u0000\u0041\u0304\u0000\u0041\u0306\u0000\u0041\u0306"d~ +"\u0300\u0000\u0041\u0306\u0301\u0000\u0041\u0306\u0303\u0000\u0041\u0306\u0309\u0000\u0041\u0307\u0000\u0041\u0307"d~ +"\u0304\u0000\u0041\u0308\u0000\u0041\u0308\u0304\u0000\u0041\u0309\u0000\u0041\u030A\u0000\u0041\u030A\u0301\u0000"d~ +"\u0041\u030C\u0000\u0041\u030F\u0000\u0041\u0311\u0000\u0041\u0323\u0000\u0041\u0323\u0302\u0000\u0041\u0323\u0306"d~ +"\u0000\u0041\u0325\u0000\u0041\u0328\u0000\u0041\u2215\u006D\u0000\u0042\u0000\u0042\u0071\u0000\u0042\u0307\u0000"d~ +"\u0042\u0323\u0000\u0042\u0331\u0000\u0043\u0000\u0043\u0044\u0000\u0043\u006F\u002E\u0000\u0043\u0301\u0000\u0043"d~ +"\u0302\u0000\u0043\u0307\u0000\u0043\u030C\u0000\u0043\u0327\u0000\u0043\u0327\u0301\u0000\u0043\u2215\u006B\u0067"d~ +"\u0000\u0044\u0000\u0044\u004A\u0000\u0044\u005A\u0000\u0044\u005A\u030C\u0000\u0044\u007A\u0000\u0044\u007A\u030C"d~ +"\u0000\u0044\u0307\u0000\u0044\u030C\u0000\u0044\u0323\u0000\u0044\u0327\u0000\u0044\u032D\u0000\u0044\u0331\u0000"d~ +"\u0045\u0000\u0045\u0300\u0000\u0045\u0301\u0000\u0045\u0302\u0000\u0045\u0302\u0300\u0000\u0045\u0302\u0301\u0000"d~ +"\u0045\u0302\u0303\u0000\u0045\u0302\u0309\u0000\u0045\u0303\u0000\u0045\u0304\u0000\u0045\u0304\u0300\u0000\u0045"d~ +"\u0304\u0301\u0000\u0045\u0306\u0000\u0045\u0307\u0000\u0045\u0308\u0000\u0045\u0309\u0000\u0045\u030C\u0000\u0045"d~ +"\u030F\u0000\u0045\u0311\u0000\u0045\u0323\u0000\u0045\u0323\u0302\u0000\u0045\u0327\u0000\u0045\u0327\u0306\u0000"d~ +"\u0045\u0328\u0000\u0045\u032D\u0000\u0045\u0330\u0000\u0046\u0000\u0046\u0041\u0058\u0000\u0046\u0307\u0000\u0047"d~ +"\u0000\u0047\u0042\u0000\u0047\u0048\u007A\u0000\u0047\u0050\u0061\u0000\u0047\u0079\u0000\u0047\u0301\u0000\u0047"d~ +"\u0302\u0000\u0047\u0304\u0000\u0047\u0306\u0000\u0047\u0307\u0000\u0047\u030C\u0000\u0047\u0327\u0000\u0048\u0000"d~ +"\u0048\u0050\u0000\u0048\u0056\u0000\u0048\u0067\u0000\u0048\u007A\u0000\u0048\u0302\u0000\u0048\u0307\u0000\u0048"d~ +"\u0308\u0000\u0048\u030C\u0000\u0048\u0323\u0000\u0048\u0327\u0000\u0048\u032E\u0000\u0049\u0000\u0049\u0049\u0000"d~ +"\u0049\u0049\u0049\u0000\u0049\u004A\u0000\u0049\u0055\u0000\u0049\u0056\u0000\u0049\u0058\u0000\u0049\u0300\u0000"d~ +"\u0049\u0301\u0000\u0049\u0302\u0000\u0049\u0303\u0000\u0049\u0304\u0000\u0049\u0306\u0000\u0049\u0307\u0000\u0049"d~ +"\u0308\u0000\u0049\u0308\u0301\u0000\u0049\u0309\u0000\u0049\u030C\u0000\u0049\u030F\u0000\u0049\u0311\u0000\u0049"d~ +"\u0323\u0000\u0049\u0328\u0000\u0049\u0330\u0000\u004A\u0000\u004A\u0302\u0000\u004B\u0000\u004B\u0042\u0000\u004B"d~ +"\u004B\u0000\u004B\u004D\u0000\u004B\u0301\u0000\u004B\u030C\u0000\u004B\u0323\u0000\u004B\u0327\u0000\u004B\u0331"d~ +"\u0000\u004C\u0000\u004C\u004A\u0000\u004C\u0054\u0044\u0000\u004C\u006A\u0000\u004C\u00B7\u0000\u004C\u0301\u0000"d~ +"\u004C\u030C\u0000\u004C\u0323\u0000\u004C\u0323\u0304\u0000\u004C\u0327\u0000\u004C\u032D\u0000\u004C\u0331\u0000"d~ +"\u004D\u0000\u004D\u0042\u0000\u004D\u0043\u0000\u004D\u0044\u0000\u004D\u0048\u007A\u0000\u004D\u0050\u0061\u0000"d~ +"\u004D\u0052\u0000\u004D\u0056\u0000\u004D\u0057\u0000\u004D\u0301\u0000\u004D\u0307\u0000\u004D\u0323\u0000\u004D"d~ +"\u03A9\u0000\u004E\u0000\u004E\u004A\u0000\u004E\u006A\u0000\u004E\u006F\u0000\u004E\u0300\u0000\u004E\u0301\u0000"d~ +"\u004E\u0303\u0000\u004E\u0307\u0000\u004E\u030C\u0000\u004E\u0323\u0000\u004E\u0327\u0000\u004E\u032D\u0000\u004E"d~ +"\u0331\u0000\u004F\u0000\u004F\u0300\u0000\u004F\u0301\u0000\u004F\u0302\u0000\u004F\u0302\u0300\u0000\u004F\u0302"d~ +"\u0301\u0000\u004F\u0302\u0303\u0000\u004F\u0302\u0309\u0000\u004F\u0303\u0000\u004F\u0303\u0301\u0000\u004F\u0303"d~ +"\u0304\u0000\u004F\u0303\u0308\u0000\u004F\u0304\u0000\u004F\u0304\u0300\u0000\u004F\u0304\u0301\u0000\u004F\u0306"d~ +"\u0000\u004F\u0307\u0000\u004F\u0307\u0304\u0000\u004F\u0308\u0000\u004F\u0308\u0304\u0000\u004F\u0309\u0000\u004F"d~ +"\u030B\u0000\u004F\u030C\u0000\u004F\u030F\u0000\u004F\u0311\u0000\u004F\u031B\u0000\u004F\u031B\u0300\u0000\u004F"d~ +"\u031B\u0301\u0000\u004F\u031B\u0303\u0000\u004F\u031B\u0309\u0000\u004F\u031B\u0323\u0000\u004F\u0323\u0000\u004F"d~ +"\u0323\u0302\u0000\u004F\u0328\u0000\u004F\u0328\u0304\u0000\u0050\u0000\u0050\u0048\u0000\u0050\u0050\u004D\u0000"d~ +"\u0050\u0050\u0056\u0000\u0050\u0052\u0000\u0050\u0054\u0045\u0000\u0050\u0061\u0000\u0050\u0301\u0000\u0050\u0307"d~ +"\u0000\u0051\u0000\u0052\u0000\u0052\u0073\u0000\u0052\u0301\u0000\u0052\u0307\u0000\u0052\u030C\u0000\u0052\u030F"d~ +"\u0000\u0052\u0311\u0000\u0052\u0323\u0000\u0052\u0323\u0304\u0000\u0052\u0327\u0000\u0052\u0331\u0000\u0053\u0000"d~ +"\u0053\u0044\u0000\u0053\u004D\u0000\u0053\u0053\u0000\u0053\u0076\u0000\u0053\u0301\u0000\u0053\u0301\u0307\u0000"d~ +"\u0053\u0302\u0000\u0053\u0307\u0000\u0053\u030C\u0000\u0053\u030C\u0307\u0000\u0053\u0323\u0000\u0053\u0323\u0307"d~ +"\u0000\u0053\u0326\u0000\u0053\u0327\u0000\u0054\u0000\u0054\u0045\u004C\u0000\u0054\u0048\u007A\u0000\u0054\u004D"d~ +"\u0000\u0054\u0307\u0000\u0054\u030C\u0000\u0054\u0323\u0000\u0054\u0326\u0000\u0054\u0327\u0000\u0054\u032D\u0000"d~ +"\u0054\u0331\u0000\u0055\u0000\u0055\u0300\u0000\u0055\u0301\u0000\u0055\u0302\u0000\u0055\u0303\u0000\u0055\u0303"d~ +"\u0301\u0000\u0055\u0304\u0000\u0055\u0304\u0308\u0000\u0055\u0306\u0000\u0055\u0308\u0000\u0055\u0308\u0300\u0000"d~ +"\u0055\u0308\u0301\u0000\u0055\u0308\u0304\u0000\u0055\u0308\u030C\u0000\u0055\u0309\u0000\u0055\u030A\u0000\u0055"d~ +"\u030B\u0000\u0055\u030C\u0000\u0055\u030F\u0000\u0055\u0311\u0000\u0055\u031B\u0000\u0055\u031B\u0300\u0000\u0055"d~ +"\u031B\u0301\u0000\u0055\u031B\u0303\u0000\u0055\u031B\u0309\u0000\u0055\u031B\u0323\u0000\u0055\u0323\u0000\u0055"d~ +"\u0324\u0000\u0055\u0328\u0000\u0055\u032D\u0000\u0055\u0330\u0000\u0056\u0000\u0056\u0049\u0000\u0056\u0049\u0049"d~ +"\u0000\u0056\u0049\u0049\u0049\u0000\u0056\u0303\u0000\u0056\u0323\u0000\u0056\u2215\u006D\u0000\u0057\u0000\u0057"d~ +"\u0043\u0000\u0057\u005A\u0000\u0057\u0062\u0000\u0057\u0300\u0000\u0057\u0301\u0000\u0057\u0302\u0000\u0057\u0307"d~ +"\u0000\u0057\u0308\u0000\u0057\u0323\u0000\u0058\u0000\u0058\u0049\u0000\u0058\u0049\u0049\u0000\u0058\u0307\u0000"d~ +"\u0058\u0308\u0000\u0059\u0000\u0059\u0300\u0000\u0059\u0301\u0000\u0059\u0302\u0000\u0059\u0303\u0000\u0059\u0304"d~ +"\u0000\u0059\u0307\u0000\u0059\u0308\u0000\u0059\u0309\u0000\u0059\u0323\u0000\u005A\u0000\u005A\u0301\u0000\u005A"d~ +"\u0302\u0000\u005A\u0307\u0000\u005A\u030C\u0000\u005A\u0323\u0000\u005A\u0331\u0000\u005B\u0000\u005C\u0000\u005D"d~ +"\u0000\u005E\u0000\u005F\u0000\u0060\u0000\u0061\u0000\u0061\u002E\u006D\u002E\u0000\u0061\u002F\u0063\u0000\u0061"d~ +"\u002F\u0073\u0000\u0061\u02BE\u0000\u0061\u0300\u0000\u0061\u0301\u0000\u0061\u0302\u0000\u0061\u0302\u0300\u0000"d~ +"\u0061\u0302\u0301\u0000\u0061\u0302\u0303\u0000\u0061\u0302\u0309\u0000\u0061\u0303\u0000\u0061\u0304\u0000\u0061"d~ +"\u0306\u0000\u0061\u0306\u0300\u0000\u0061\u0306\u0301\u0000\u0061\u0306\u0303\u0000\u0061\u0306\u0309\u0000\u0061"d~ +"\u0307\u0000\u0061\u0307\u0304\u0000\u0061\u0308\u0000\u0061\u0308\u0304\u0000\u0061\u0309\u0000\u0061\u030A\u0000"d~ +"\u0061\u030A\u0301\u0000\u0061\u030C\u0000\u0061\u030F\u0000\u0061\u0311\u0000\u0061\u0323\u0000\u0061\u0323\u0302"d~ +"\u0000\u0061\u0323\u0306\u0000\u0061\u0325\u0000\u0061\u0328\u0000\u0062\u0000\u0062\u0061\u0072\u0000\u0062\u0307"d~ +"\u0000\u0062\u0323\u0000\u0062\u0331\u0000\u0063\u0000\u0063\u002F\u006F\u0000\u0063\u002F\u0075\u0000\u0063\u0061"d~ +"\u006C\u0000\u0063\u0063\u0000\u0063\u0064\u0000\u0063\u006D\u0000\u0063\u006D\u0032\u0000\u0063\u006D\u0033\u0000"d~ +"\u0063\u0301\u0000\u0063\u0302\u0000\u0063\u0307\u0000\u0063\u030C\u0000\u0063\u0327\u0000\u0063\u0327\u0301\u0000"d~ +"\u0064\u0000\u0064\u0042\u0000\u0064\u0061\u0000\u0064\u006C\u0000\u0064\u006D\u0000\u0064\u006D\u0032\u0000\u0064"d~ +"\u006D\u0033\u0000\u0064\u007A\u0000\u0064\u007A\u030C\u0000\u0064\u0307\u0000\u0064\u030C\u0000\u0064\u0323\u0000"d~ +"\u0064\u0327\u0000\u0064\u032D\u0000\u0064\u0331\u0000\u0065\u0000\u0065\u0056\u0000\u0065\u0072\u0067\u0000\u0065"d~ +"\u0300\u0000\u0065\u0301\u0000\u0065\u0302\u0000\u0065\u0302\u0300\u0000\u0065\u0302\u0301\u0000\u0065\u0302\u0303"d~ +"\u0000\u0065\u0302\u0309\u0000\u0065\u0303\u0000\u0065\u0304\u0000\u0065\u0304\u0300\u0000\u0065\u0304\u0301\u0000"d~ +"\u0065\u0306\u0000\u0065\u0307\u0000\u0065\u0308\u0000\u0065\u0309\u0000\u0065\u030C\u0000\u0065\u030F\u0000\u0065"d~ +"\u0311\u0000\u0065\u0323\u0000\u0065\u0323\u0302\u0000\u0065\u0327\u0000\u0065\u0327\u0306\u0000\u0065\u0328\u0000"d~ +"\u0065\u032D\u0000\u0065\u0330\u0000\u0066\u0000\u0066\u0066\u0000\u0066\u0066\u0069\u0000\u0066\u0066\u006C\u0000"d~ +"\u0066\u0069\u0000\u0066\u006C\u0000\u0066\u006D\u0000\u0066\u0307\u0000\u0067\u0000\u0067\u0061\u006C\u0000\u0067"d~ +"\u0301\u0000\u0067\u0302\u0000\u0067\u0304\u0000\u0067\u0306\u0000\u0067\u0307\u0000\u0067\u030C\u0000\u0067\u0327"d~ +"\u0000\u0068\u0000\u0068\u0050\u0061\u0000\u0068\u0061\u0000\u0068\u0302\u0000\u0068\u0307\u0000\u0068\u0308\u0000"d~ +"\u0068\u030C\u0000\u0068\u0323\u0000\u0068\u0327\u0000\u0068\u032E\u0000\u0068\u0331\u0000\u0069\u0000\u0069\u0069"d~ +"\u0000\u0069\u0069\u0069\u0000\u0069\u006A\u0000\u0069\u006E\u0000\u0069\u0076\u0000\u0069\u0078\u0000\u0069\u0300"d~ +"\u0000\u0069\u0301\u0000\u0069\u0302\u0000\u0069\u0303\u0000\u0069\u0304\u0000\u0069\u0306\u0000\u0069\u0308\u0000"d~ +"\u0069\u0308\u0301\u0000\u0069\u0309\u0000\u0069\u030C\u0000\u0069\u030F\u0000\u0069\u0311\u0000\u0069\u0323\u0000"d~ +"\u0069\u0328\u0000\u0069\u0330\u0000\u006A\u0000\u006A\u0302\u0000\u006A\u030C\u0000\u006B\u0000\u006B\u0041\u0000"d~ +"\u006B\u0048\u007A\u0000\u006B\u0050\u0061\u0000\u006B\u0056\u0000\u006B\u0057\u0000\u006B\u0063\u0061\u006C\u0000"d~ +"\u006B\u0067\u0000\u006B\u006C\u0000\u006B\u006D\u0000\u006B\u006D\u0032\u0000\u006B\u006D\u0033\u0000\u006B\u0074"d~ +"\u0000\u006B\u0301\u0000\u006B\u030C\u0000\u006B\u0323\u0000\u006B\u0327\u0000\u006B\u0331\u0000\u006B\u03A9\u0000"d~ +"\u006C\u0000\u006C\u006A\u0000\u006C\u006D\u0000\u006C\u006E\u0000\u006C\u006F\u0067\u0000\u006C\u0078\u0000\u006C"d~ +"\u00B7\u0000\u006C\u0301\u0000\u006C\u030C\u0000\u006C\u0323\u0000\u006C\u0323\u0304\u0000\u006C\u0327\u0000\u006C"d~ +"\u032D\u0000\u006C\u0331\u0000\u006D\u0000\u006D\u0032\u0000\u006D\u0033\u0000\u006D\u0041\u0000\u006D\u0056\u0000"d~ +"\u006D\u0057\u0000\u006D\u0062\u0000\u006D\u0067\u0000\u006D\u0069\u006C\u0000\u006D\u006C\u0000\u006D\u006D\u0000"d~ +"\u006D\u006D\u0032\u0000\u006D\u006D\u0033\u0000\u006D\u006F\u006C\u0000\u006D\u0073\u0000\u006D\u0301\u0000\u006D"d~ +"\u0307\u0000\u006D\u0323\u0000\u006D\u2215\u0073\u0000\u006D\u2215\u0073\u0032\u0000\u006E\u0000\u006E\u0041\u0000"d~ +"\u006E\u0046\u0000\u006E\u0056\u0000\u006E\u0057\u0000\u006E\u006A\u0000\u006E\u006D\u0000\u006E\u0073\u0000\u006E"d~ +"\u0300\u0000\u006E\u0301\u0000\u006E\u0303\u0000\u006E\u0307\u0000\u006E\u030C\u0000\u006E\u0323\u0000\u006E\u0327"d~ +"\u0000\u006E\u032D\u0000\u006E\u0331\u0000\u006F\u0000\u006F\u0056\u0000\u006F\u0300\u0000\u006F\u0301\u0000\u006F"d~ +"\u0302\u0000\u006F\u0302\u0300\u0000\u006F\u0302\u0301\u0000\u006F\u0302\u0303\u0000\u006F\u0302\u0309\u0000\u006F"d~ +"\u0303\u0000\u006F\u0303\u0301\u0000\u006F\u0303\u0304\u0000\u006F\u0303\u0308\u0000\u006F\u0304\u0000\u006F\u0304"d~ +"\u0300\u0000\u006F\u0304\u0301\u0000\u006F\u0306\u0000\u006F\u0307\u0000\u006F\u0307\u0304\u0000\u006F\u0308\u0000"d~ +"\u006F\u0308\u0304\u0000\u006F\u0309\u0000\u006F\u030B\u0000\u006F\u030C\u0000\u006F\u030F\u0000\u006F\u0311\u0000"d~ +"\u006F\u031B\u0000\u006F\u031B\u0300\u0000\u006F\u031B\u0301\u0000\u006F\u031B\u0303\u0000\u006F\u031B\u0309\u0000"d~ +"\u006F\u031B\u0323\u0000\u006F\u0323\u0000\u006F\u0323\u0302\u0000\u006F\u0328\u0000\u006F\u0328\u0304\u0000\u0070"d~ +"\u0000\u0070\u002E\u006D\u002E\u0000\u0070\u0041\u0000\u0070\u0046\u0000\u0070\u0056\u0000\u0070\u0057\u0000\u0070"d~ +"\u0063\u0000\u0070\u0073\u0000\u0070\u0301\u0000\u0070\u0307\u0000\u0071\u0000\u0072\u0000\u0072\u0061\u0064\u0000"d~ +"\u0072\u0061\u0064\u2215\u0073\u0000\u0072\u0061\u0064\u2215\u0073\u0032\u0000\u0072\u0301\u0000\u0072\u0307\u0000"d~ +"\u0072\u030C\u0000\u0072\u030F\u0000\u0072\u0311\u0000\u0072\u0323\u0000\u0072\u0323\u0304\u0000\u0072\u0327\u0000"d~ +"\u0072\u0331\u0000\u0073\u0000\u0073\u0072\u0000\u0073\u0074\u0000\u0073\u0301\u0000\u0073\u0301\u0307\u0000\u0073"d~ +"\u0302\u0000\u0073\u0307\u0000\u0073\u030C\u0000\u0073\u030C\u0307\u0000\u0073\u0323\u0000\u0073\u0323\u0307\u0000"d~ +"\u0073\u0326\u0000\u0073\u0327\u0000\u0074\u0000\u0074\u0307\u0000\u0074\u0308\u0000\u0074\u030C\u0000\u0074\u0323"d~ +"\u0000\u0074\u0326\u0000\u0074\u0327\u0000\u0074\u032D\u0000\u0074\u0331\u0000\u0075\u0000\u0075\u0300\u0000\u0075"d~ +"\u0301\u0000\u0075\u0302\u0000\u0075\u0303\u0000\u0075\u0303\u0301\u0000\u0075\u0304\u0000\u0075\u0304\u0308\u0000"d~ +"\u0075\u0306\u0000\u0075\u0308\u0000\u0075\u0308\u0300\u0000\u0075\u0308\u0301\u0000\u0075\u0308\u0304\u0000\u0075"d~ +"\u0308\u030C\u0000\u0075\u0309\u0000\u0075\u030A\u0000\u0075\u030B\u0000\u0075\u030C\u0000\u0075\u030F\u0000\u0075"d~ +"\u0311\u0000\u0075\u031B\u0000\u0075\u031B\u0300\u0000\u0075\u031B\u0301\u0000\u0075\u031B\u0303\u0000\u0075\u031B"d~ +"\u0309\u0000\u0075\u031B\u0323\u0000\u0075\u0323\u0000\u0075\u0324\u0000\u0075\u0328\u0000\u0075\u032D\u0000\u0075"d~ +"\u0330\u0000\u0076\u0000\u0076\u0069\u0000\u0076\u0069\u0069\u0000\u0076\u0069\u0069\u0069\u0000\u0076\u0303\u0000"d~ +"\u0076\u0323\u0000\u0077\u0000\u0077\u0300\u0000\u0077\u0301\u0000\u0077\u0302\u0000\u0077\u0307\u0000\u0077\u0308"d~ +"\u0000\u0077\u030A\u0000\u0077\u0323\u0000\u0078\u0000\u0078\u0069\u0000\u0078\u0069\u0069\u0000\u0078\u0307\u0000"d~ +"\u0078\u0308\u0000\u0079\u0000\u0079\u0300\u0000\u0079\u0301\u0000\u0079\u0302\u0000\u0079\u0303\u0000\u0079\u0304"d~ +"\u0000\u0079\u0307\u0000\u0079\u0308\u0000\u0079\u0309\u0000\u0079\u030A\u0000\u0079\u0323\u0000\u007A\u0000\u007A"d~ +"\u0301\u0000\u007A\u0302\u0000\u007A\u0307\u0000\u007A\u030C\u0000\u007A\u0323\u0000\u007A\u0331\u0000\u007B\u0000"d~ +"\u007C\u0000\u007D\u0000\u007E\u0000\u00A2\u0000\u00A3\u0000\u00A5\u0000\u00A6\u0000\u00AC\u0000\u00B0\u0043\u0000"d~ +"\u00B0\u0046\u0000\u00B7\u0000\u00C6\u0000\u00C6\u0301\u0000\u00C6\u0304\u0000\u00D8\u0301\u0000\u00E6\u0000\u00E6"d~ +"\u0301\u0000\u00E6\u0304\u0000\u00F0\u0000\u00F8\u0000\u00F8\u0301\u0000\u0126\u0000\u0127\u0000\u0131\u0000\u014B"d~ +"\u0000\u0153\u0000\u018E\u0000\u0190\u0000\u01AB\u0000\u01B7\u030C\u0000\u01C0\u0000\u01C1\u0000\u01C2\u0000\u0222"d~ +"\u0000\u0237\u0000\u0250\u0000\u0251\u0000\u0252\u0000\u0253\u0000\u0254\u0000\u0255\u0000\u0256\u0000\u0257\u0000"d~ +"\u0258\u0000\u0259\u0000\u025B\u0000\u025C\u0000\u025E\u0000\u025F\u0000\u0260\u0000\u0261\u0000\u0262\u0000\u0263"d~ +"\u0000\u0264\u0000\u0265\u0000\u0266\u0000\u0267\u0000\u0268\u0000\u0269\u0000\u026A\u0000\u026B\u0000\u026C\u0000"d~ +"\u026D\u0000\u026E\u0000\u026F\u0000\u0270\u0000\u0271\u0000\u0272\u0000\u0273\u0000\u0274\u0000\u0275\u0000\u0276"d~ +"\u0000\u0277\u0000\u0278\u0000\u0279\u0000\u027A\u0000\u027B\u0000\u027D\u0000\u027E\u0000\u0280\u0000\u0281\u0000"d~ +"\u0282\u0000\u0283\u0000\u0284\u0000\u0288\u0000\u0289\u0000\u028A\u0000\u028B\u0000\u028C\u0000\u028D\u0000\u028E"d~ +"\u0000\u028F\u0000\u0290\u0000\u0291\u0000\u0292\u0000\u0292\u030C\u0000\u0295\u0000\u0298\u0000\u0299\u0000\u029B"d~ +"\u0000\u029C\u0000\u029D\u0000\u029F\u0000\u02A1\u0000\u02A2\u0000\u02A3\u0000\u02A4\u0000\u02A5\u0000\u02A6\u0000"d~ +"\u02A7\u0000\u02A8\u0000\u02A9\u0000\u02AA\u0000\u02AB\u0000\u02B9\u0000\u02BC\u006E\u0000\u02D0\u0000\u02D1\u0000"d~ +"\u0300\u0000\u0301\u0000\u0308\u0301\u0000\u0313\u0000\u0391\u0000\u0391\u0300\u0000\u0391\u0301\u0000\u0391\u0304"d~ +"\u0000\u0391\u0306\u0000\u0391\u0313\u0000\u0391\u0313\u0300\u0000\u0391\u0313\u0300\u0345\u0000\u0391\u0313\u0301"d~ +"\u0000\u0391\u0313\u0301\u0345\u0000\u0391\u0313\u0342\u0000\u0391\u0313\u0342\u0345\u0000\u0391\u0313\u0345\u0000"d~ +"\u0391\u0314\u0000\u0391\u0314\u0300\u0000\u0391\u0314\u0300\u0345\u0000\u0391\u0314\u0301\u0000\u0391\u0314\u0301"d~ +"\u0345\u0000\u0391\u0314\u0342\u0000\u0391\u0314\u0342\u0345\u0000\u0391\u0314\u0345\u0000\u0391\u0345\u0000\u0392"d~ +"\u0000\u0393\u0000\u0394\u0000\u0395\u0000\u0395\u0300\u0000\u0395\u0301\u0000\u0395\u0313\u0000\u0395\u0313\u0300"d~ +"\u0000\u0395\u0313\u0301\u0000\u0395\u0314\u0000\u0395\u0314\u0300\u0000\u0395\u0314\u0301\u0000\u0396\u0000\u0397"d~ +"\u0000\u0397\u0300\u0000\u0397\u0301\u0000\u0397\u0313\u0000\u0397\u0313\u0300\u0000\u0397\u0313\u0300\u0345\u0000"d~ +"\u0397\u0313\u0301\u0000\u0397\u0313\u0301\u0345\u0000\u0397\u0313\u0342\u0000\u0397\u0313\u0342\u0345\u0000\u0397"d~ +"\u0313\u0345\u0000\u0397\u0314\u0000\u0397\u0314\u0300\u0000\u0397\u0314\u0300\u0345\u0000\u0397\u0314\u0301\u0000"d~ +"\u0397\u0314\u0301\u0345\u0000\u0397\u0314\u0342\u0000\u0397\u0314\u0342\u0345\u0000\u0397\u0314\u0345\u0000\u0397"d~ +"\u0345\u0000\u0398\u0000\u0399\u0000\u0399\u0300\u0000\u0399\u0301\u0000\u0399\u0304\u0000\u0399\u0306\u0000\u0399"d~ +"\u0308\u0000\u0399\u0313\u0000\u0399\u0313\u0300\u0000\u0399\u0313\u0301\u0000\u0399\u0313\u0342\u0000\u0399\u0314"d~ +"\u0000\u0399\u0314\u0300\u0000\u0399\u0314\u0301\u0000\u0399\u0314\u0342\u0000\u039A\u0000\u039B\u0000\u039C\u0000"d~ +"\u039D\u0000\u039E\u0000\u039F\u0000\u039F\u0300\u0000\u039F\u0301\u0000\u039F\u0313\u0000\u039F\u0313\u0300\u0000"d~ +"\u039F\u0313\u0301\u0000\u039F\u0314\u0000\u039F\u0314\u0300\u0000\u039F\u0314\u0301\u0000\u03A0\u0000\u03A1\u0000"d~ +"\u03A1\u0314\u0000\u03A3\u0000\u03A4\u0000\u03A5\u0000\u03A5\u0300\u0000\u03A5\u0301\u0000\u03A5\u0304\u0000\u03A5"d~ +"\u0306\u0000\u03A5\u0308\u0000\u03A5\u0314\u0000\u03A5\u0314\u0300\u0000\u03A5\u0314\u0301\u0000\u03A5\u0314\u0342"d~ +"\u0000\u03A6\u0000\u03A7\u0000\u03A8\u0000\u03A9\u0000\u03A9\u0300\u0000\u03A9\u0301\u0000\u03A9\u0313\u0000\u03A9"d~ +"\u0313\u0300\u0000\u03A9\u0313\u0300\u0345\u0000\u03A9\u0313\u0301\u0000\u03A9\u0313\u0301\u0345\u0000\u03A9\u0313"d~ +"\u0342\u0000\u03A9\u0313\u0342\u0345\u0000\u03A9\u0313\u0345\u0000\u03A9\u0314\u0000\u03A9\u0314\u0300\u0000\u03A9"d~ +"\u0314\u0300\u0345\u0000\u03A9\u0314\u0301\u0000\u03A9\u0314\u0301\u0345\u0000\u03A9\u0314\u0342\u0000\u03A9\u0314"d~ +"\u0342\u0345\u0000\u03A9\u0314\u0345\u0000\u03A9\u0345\u0000\u03B1\u0000\u03B1\u0300\u0000\u03B1\u0300\u0345\u0000"d~ +"\u03B1\u0301\u0000\u03B1\u0301\u0345\u0000\u03B1\u0304\u0000\u03B1\u0306\u0000\u03B1\u0313\u0000\u03B1\u0313\u0300"d~ +"\u0000\u03B1\u0313\u0300\u0345\u0000\u03B1\u0313\u0301\u0000\u03B1\u0313\u0301\u0345\u0000\u03B1\u0313\u0342\u0000"d~ +"\u03B1\u0313\u0342\u0345\u0000\u03B1\u0313\u0345\u0000\u03B1\u0314\u0000\u03B1\u0314\u0300\u0000\u03B1\u0314\u0300"d~ +"\u0345\u0000\u03B1\u0314\u0301\u0000\u03B1\u0314\u0301\u0345\u0000\u03B1\u0314\u0342\u0000\u03B1\u0314\u0342\u0345"d~ +"\u0000\u03B1\u0314\u0345\u0000\u03B1\u0342\u0000\u03B1\u0342\u0345\u0000\u03B1\u0345\u0000\u03B2\u0000\u03B3\u0000"d~ +"\u03B4\u0000\u03B5\u0000\u03B5\u0300\u0000\u03B5\u0301\u0000\u03B5\u0313\u0000\u03B5\u0313\u0300\u0000\u03B5\u0313"d~ +"\u0301\u0000\u03B5\u0314\u0000\u03B5\u0314\u0300\u0000\u03B5\u0314\u0301\u0000\u03B6\u0000\u03B7\u0000\u03B7\u0300"d~ +"\u0000\u03B7\u0300\u0345\u0000\u03B7\u0301\u0000\u03B7\u0301\u0345\u0000\u03B7\u0313\u0000\u03B7\u0313\u0300\u0000"d~ +"\u03B7\u0313\u0300\u0345\u0000\u03B7\u0313\u0301\u0000\u03B7\u0313\u0301\u0345\u0000\u03B7\u0313\u0342\u0000\u03B7"d~ +"\u0313\u0342\u0345\u0000\u03B7\u0313\u0345\u0000\u03B7\u0314\u0000\u03B7\u0314\u0300\u0000\u03B7\u0314\u0300\u0345"d~ +"\u0000\u03B7\u0314\u0301\u0000\u03B7\u0314\u0301\u0345\u0000\u03B7\u0314\u0342\u0000\u03B7\u0314\u0342\u0345\u0000"d~ +"\u03B7\u0314\u0345\u0000\u03B7\u0342\u0000\u03B7\u0342\u0345\u0000\u03B7\u0345\u0000\u03B8\u0000\u03B9\u0000\u03B9"d~ +"\u0300\u0000\u03B9\u0301\u0000\u03B9\u0304\u0000\u03B9\u0306\u0000\u03B9\u0308\u0000\u03B9\u0308\u0300\u0000\u03B9"d~ +"\u0308\u0301\u0000\u03B9\u0308\u0342\u0000\u03B9\u0313\u0000\u03B9\u0313\u0300\u0000\u03B9\u0313\u0301\u0000\u03B9"d~ +"\u0313\u0342\u0000\u03B9\u0314\u0000\u03B9\u0314\u0300\u0000\u03B9\u0314\u0301\u0000\u03B9\u0314\u0342\u0000\u03B9"d~ +"\u0342\u0000\u03BA\u0000\u03BB\u0000\u03BC\u0000\u03BC\u0041\u0000\u03BC\u0046\u0000\u03BC\u0056\u0000\u03BC\u0057"d~ +"\u0000\u03BC\u0067\u0000\u03BC\u006C\u0000\u03BC\u006D\u0000\u03BC\u0073\u0000\u03BD\u0000\u03BE\u0000\u03BF\u0000"d~ +"\u03BF\u0300\u0000\u03BF\u0301\u0000\u03BF\u0313\u0000\u03BF\u0313\u0300\u0000\u03BF\u0313\u0301\u0000\u03BF\u0314"d~ +"\u0000\u03BF\u0314\u0300\u0000\u03BF\u0314\u0301\u0000\u03C0\u0000\u03C1\u0000\u03C1\u0313\u0000\u03C1\u0314\u0000"d~ +"\u03C2\u0000\u03C3\u0000\u03C4\u0000\u03C5\u0000\u03C5\u0300\u0000\u03C5\u0301\u0000\u03C5\u0304\u0000\u03C5\u0306"d~ +"\u0000\u03C5\u0308\u0000\u03C5\u0308\u0300\u0000\u03C5\u0308\u0301\u0000\u03C5\u0308\u0342\u0000\u03C5\u0313\u0000"d~ +"\u03C5\u0313\u0300\u0000\u03C5\u0313\u0301\u0000\u03C5\u0313\u0342\u0000\u03C5\u0314\u0000\u03C5\u0314\u0300\u0000"d~ +"\u03C5\u0314\u0301\u0000\u03C5\u0314\u0342\u0000\u03C5\u0342\u0000\u03C6\u0000\u03C7\u0000\u03C8\u0000\u03C9\u0000"d~ +"\u03C9\u0300\u0000\u03C9\u0300\u0345\u0000\u03C9\u0301\u0000\u03C9\u0301\u0345\u0000\u03C9\u0313\u0000\u03C9\u0313"d~ +"\u0300\u0000\u03C9\u0313\u0300\u0345\u0000\u03C9\u0313\u0301\u0000\u03C9\u0313\u0301\u0345\u0000\u03C9\u0313\u0342"d~ +"\u0000\u03C9\u0313\u0342\u0345\u0000\u03C9\u0313\u0345\u0000\u03C9\u0314\u0000\u03C9\u0314\u0300\u0000\u03C9\u0314"d~ +"\u0300\u0345\u0000\u03C9\u0314\u0301\u0000\u03C9\u0314\u0301\u0345\u0000\u03C9\u0314\u0342\u0000\u03C9\u0314\u0342"d~ +"\u0345\u0000\u03C9\u0314\u0345\u0000\u03C9\u0342\u0000\u03C9\u0342\u0345\u0000\u03C9\u0345\u0000\u03DC\u0000\u03DD"d~ +"\u0000\u0406\u0308\u0000\u0410\u0306\u0000\u0410\u0308\u0000\u0413\u0301\u0000\u0415\u0300\u0000\u0415\u0306\u0000"d~ +"\u0415\u0308\u0000\u0416\u0306\u0000\u0416\u0308\u0000\u0417\u0308\u0000\u0418\u0300\u0000\u0418\u0304\u0000\u0418"d~ +"\u0306\u0000\u0418\u0308\u0000\u041A\u0301\u0000\u041E\u0308\u0000\u0423\u0304\u0000\u0423\u0306\u0000\u0423\u0308"d~ +"\u0000\u0423\u030B\u0000\u0427\u0308\u0000\u042B\u0308\u0000\u042D\u0308\u0000\u0430\u0000\u0430\u0306\u0000\u0430"d~ +"\u0308\u0000\u0431\u0000\u0432\u0000\u0433\u0000\u0433\u0301\u0000\u0434\u0000\u0435\u0000\u0435\u0300\u0000\u0435"d~ +"\u0306\u0000\u0435\u0308\u0000\u0436\u0000\u0436\u0306\u0000\u0436\u0308\u0000\u0437\u0000\u0437\u0308\u0000\u0438"d~ +"\u0000\u0438\u0300\u0000\u0438\u0304\u0000\u0438\u0306\u0000\u0438\u0308\u0000\u043A\u0000\u043A\u0301\u0000\u043B"d~ +"\u0000\u043C\u0000\u043D\u0000\u043E\u0000\u043E\u0308\u0000\u043F\u0000\u0440\u0000\u0441\u0000\u0442\u0000\u0443"d~ +"\u0000\u0443\u0304\u0000\u0443\u0306\u0000\u0443\u0308\u0000\u0443\u030B\u0000\u0444\u0000\u0445\u0000\u0446\u0000"d~ +"\u0447\u0000\u0447\u0308\u0000\u0448\u0000\u044A\u0000\u044B\u0000\u044B\u0308\u0000\u044C\u0000\u044D\u0000\u044D"d~ +"\u0308\u0000\u044E\u0000\u0455\u0000\u0456\u0000\u0456\u0308\u0000\u0458\u0000\u045F\u0000\u0474\u030F\u0000\u0475"d~ +"\u030F\u0000\u0491\u0000\u04AB\u0000\u04AF\u0000\u04B1\u0000\u04CF\u0000\u04D8\u0308\u0000\u04D9\u0000\u04D9\u0308"d~ +"\u0000\u04E8\u0308\u0000\u04E9\u0000\u04E9\u0308\u0000\u0565\u0582\u0000\u0574\u0565\u0000\u0574\u056B\u0000\u0574"d~ +"\u056D\u0000\u0574\u0576\u0000\u057E\u0576\u0000\u05D0\u0000\u05D0\u05B7\u0000\u05D0\u05B8\u0000\u05D0\u05BC\u0000"d~ +"\u05D0\u05DC\u0000\u05D1\u0000\u05D1\u05BC\u0000\u05D1\u05BF\u0000\u05D2\u0000\u05D2\u05BC\u0000\u05D3\u0000\u05D3"d~ +"\u05BC\u0000\u05D4\u0000\u05D4\u05BC\u0000\u05D5\u05B9\u0000\u05D5\u05BC\u0000\u05D6\u05BC\u0000\u05D8\u05BC\u0000"d~ +"\u05D9\u05B4\u0000\u05D9\u05BC\u0000\u05DA\u05BC\u0000\u05DB\u0000\u05DB\u05BC\u0000\u05DB\u05BF\u0000\u05DC\u0000"d~ +"\u05DC\u05BC\u0000\u05DD\u0000\u05DE\u05BC\u0000\u05E0\u05BC\u0000\u05E1\u05BC\u0000\u05E2\u0000\u05E3\u05BC\u0000"d~ +"\u05E4\u05BC\u0000\u05E4\u05BF\u0000\u05E6\u05BC\u0000\u05E7\u05BC\u0000\u05E8\u0000\u05E8\u05BC\u0000\u05E9\u05BC"d~ +"\u0000\u05E9\u05BC\u05C1\u0000\u05E9\u05BC\u05C2\u0000\u05E9\u05C1\u0000\u05E9\u05C2\u0000\u05EA\u0000\u05EA\u05BC"d~ +"\u0000\u05F2\u05B7\u0000\u0621\u0000\u0627\u0000\u0627\u0643\u0628\u0631\u0000\u0627\u0644\u0644\u0647\u0000\u0627"d~ +"\u064B\u0000\u0627\u0653\u0000\u0627\u0654\u0000\u0627\u0655\u0000\u0627\u0674\u0000\u0628\u0000\u0628\u062C\u0000"d~ +"\u0628\u062D\u0000\u0628\u062D\u064A\u0000\u0628\u062E\u0000\u0628\u062E\u064A\u0000\u0628\u0631\u0000\u0628\u0632"d~ +"\u0000\u0628\u0645\u0000\u0628\u0646\u0000\u0628\u0647\u0000\u0628\u0649\u0000\u0628\u064A\u0000\u0629\u0000\u062A"d~ +"\u0000\u062A\u062C\u0000\u062A\u062C\u0645\u0000\u062A\u062C\u0649\u0000\u062A\u062C\u064A\u0000\u062A\u062D\u0000"d~ +"\u062A\u062D\u062C\u0000\u062A\u062D\u0645\u0000\u062A\u062E\u0000\u062A\u062E\u0645\u0000\u062A\u062E\u0649\u0000"d~ +"\u062A\u062E\u064A\u0000\u062A\u0631\u0000\u062A\u0632\u0000\u062A\u0645\u0000\u062A\u0645\u062C\u0000\u062A\u0645"d~ +"\u062D\u0000\u062A\u0645\u062E\u0000\u062A\u0645\u0649\u0000\u062A\u0645\u064A\u0000\u062A\u0646\u0000\u062A\u0647"d~ +"\u0000\u062A\u0649\u0000\u062A\u064A\u0000\u062B\u0000\u062B\u062C\u0000\u062B\u0631\u0000\u062B\u0632\u0000\u062B"d~ +"\u0645\u0000\u062B\u0646\u0000\u062B\u0647\u0000\u062B\u0649\u0000\u062B\u064A\u0000\u062C\u0000\u062C\u062D\u0000"d~ +"\u062C\u062D\u0649\u0000\u062C\u062D\u064A\u0000\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647\u0000\u062C\u0645"d~ +"\u0000\u062C\u0645\u062D\u0000\u062C\u0645\u0649\u0000\u062C\u0645\u064A\u0000\u062C\u0649\u0000\u062C\u064A\u0000"d~ +"\u062D\u0000\u062D\u062C\u0000\u062D\u062C\u064A\u0000\u062D\u0645\u0000\u062D\u0645\u0649\u0000\u062D\u0645\u064A"d~ +"\u0000\u062D\u0649\u0000\u062D\u064A\u0000\u062E\u0000\u062E\u062C\u0000\u062E\u062D\u0000\u062E\u0645\u0000\u062E"d~ +"\u0649\u0000\u062E\u064A\u0000\u062F\u0000\u0630\u0000\u0630\u0670\u0000\u0631\u0000\u0631\u0633\u0648\u0644\u0000"d~ +"\u0631\u0670\u0000\u0631\u06CC\u0627\u0644\u0000\u0632\u0000\u0633\u0000\u0633\u062C\u0000\u0633\u062C\u062D\u0000"d~ +"\u0633\u062C\u0649\u0000\u0633\u062D\u0000\u0633\u062D\u062C\u0000\u0633\u062E\u0000\u0633\u062E\u0649\u0000\u0633"d~ +"\u062E\u064A\u0000\u0633\u0631\u0000\u0633\u0645\u0000\u0633\u0645\u062C\u0000\u0633\u0645\u062D\u0000\u0633\u0645"d~ +"\u0645\u0000\u0633\u0647\u0000\u0633\u0649\u0000\u0633\u064A\u0000\u0634\u0000\u0634\u062C\u0000\u0634\u062C\u064A"d~ +"\u0000\u0634\u062D\u0000\u0634\u062D\u0645\u0000\u0634\u062D\u064A\u0000\u0634\u062E\u0000\u0634\u0631\u0000\u0634"d~ +"\u0645\u0000\u0634\u0645\u062E\u0000\u0634\u0645\u0645\u0000\u0634\u0647\u0000\u0634\u0649\u0000\u0634\u064A\u0000"d~ +"\u0635\u0000\u0635\u062D\u0000\u0635\u062D\u062D\u0000\u0635\u062D\u064A\u0000\u0635\u062E\u0000\u0635\u0631\u0000"d~ +"\u0635\u0644\u0639\u0645\u0000\u0635\u0644\u0649\u0000\u0635\u0644\u0649\u0020\u0627\u0644\u0644\u0647\u0020\u0639"d~ +"\u0644\u064A\u0647\u0020\u0648\u0633\u0644\u0645\u0000\u0635\u0644\u06D2\u0000\u0635\u0645\u0000\u0635\u0645\u0645"d~ +"\u0000\u0635\u0649\u0000\u0635\u064A\u0000\u0636\u0000\u0636\u062C\u0000\u0636\u062D\u0000\u0636\u062D\u0649\u0000"d~ +"\u0636\u062D\u064A\u0000\u0636\u062E\u0000\u0636\u062E\u0645\u0000\u0636\u0631\u0000\u0636\u0645\u0000\u0636\u0649"d~ +"\u0000\u0636\u064A\u0000\u0637\u0000\u0637\u062D\u0000\u0637\u0645\u0000\u0637\u0645\u062D\u0000\u0637\u0645\u0645"d~ +"\u0000\u0637\u0645\u064A\u0000\u0637\u0649\u0000\u0637\u064A\u0000\u0638\u0000\u0638\u0645\u0000\u0639\u0000\u0639"d~ +"\u062C\u0000\u0639\u062C\u0645\u0000\u0639\u0644\u064A\u0647\u0000\u0639\u0645\u0000\u0639\u0645\u0645\u0000\u0639"d~ +"\u0645\u0649\u0000\u0639\u0645\u064A\u0000\u0639\u0649\u0000\u0639\u064A\u0000\u063A\u0000\u063A\u062C\u0000\u063A"d~ +"\u0645\u0000\u063A\u0645\u0645\u0000\u063A\u0645\u0649\u0000\u063A\u0645\u064A\u0000\u063A\u0649\u0000\u063A\u064A"d~ +"\u0000\u0640\u064B\u0000\u0640\u064E\u0000\u0640\u064E\u0651\u0000\u0640\u064F\u0000\u0640\u064F\u0651\u0000\u0640"d~ +"\u0650\u0000\u0640\u0650\u0651\u0000\u0640\u0651\u0000\u0640\u0652\u0000\u0641\u0000\u0641\u062C\u0000\u0641\u062D"d~ +"\u0000\u0641\u062E\u0000\u0641\u062E\u0645\u0000\u0641\u0645\u0000\u0641\u0645\u064A\u0000\u0641\u0649\u0000\u0641"d~ +"\u064A\u0000\u0642\u0000\u0642\u062D\u0000\u0642\u0644\u06D2\u0000\u0642\u0645\u0000\u0642\u0645\u062D\u0000\u0642"d~ +"\u0645\u0645\u0000\u0642\u0645\u064A\u0000\u0642\u0649\u0000\u0642\u064A\u0000\u0643\u0000\u0643\u0627\u0000\u0643"d~ +"\u062C\u0000\u0643\u062D\u0000\u0643\u062E\u0000\u0643\u0644\u0000\u0643\u0645\u0000\u0643\u0645\u0645\u0000\u0643"d~ +"\u0645\u064A\u0000\u0643\u0649\u0000\u0643\u064A\u0000\u0644\u0000\u0644\u0627\u0000\u0644\u0627\u0653\u0000\u0644"d~ +"\u0627\u0654\u0000\u0644\u0627\u0655\u0000\u0644\u062C\u0000\u0644\u062C\u062C\u0000\u0644\u062C\u0645\u0000\u0644"d~ +"\u062C\u064A\u0000\u0644\u062D\u0000\u0644\u062D\u0645\u0000\u0644\u062D\u0649\u0000\u0644\u062D\u064A\u0000\u0644"d~ +"\u062E\u0000\u0644\u062E\u0645\u0000\u0644\u0645\u0000\u0644\u0645\u062D\u0000\u0644\u0645\u064A\u0000\u0644\u0647"d~ +"\u0000\u0644\u0649\u0000\u0644\u064A\u0000\u0645\u0000\u0645\u0627\u0000\u0645\u062C\u0000\u0645\u062C\u062D\u0000"d~ +"\u0645\u062C\u062E\u0000\u0645\u062C\u0645\u0000\u0645\u062C\u064A\u0000\u0645\u062D\u0000\u0645\u062D\u062C\u0000"d~ +"\u0645\u062D\u0645\u0000\u0645\u062D\u0645\u062F\u0000\u0645\u062D\u064A\u0000\u0645\u062E\u0000\u0645\u062E\u062C"d~ +"\u0000\u0645\u062E\u0645\u0000\u0645\u062E\u064A\u0000\u0645\u0645\u0000\u0645\u0645\u064A\u0000\u0645\u0649\u0000"d~ +"\u0645\u064A\u0000\u0646\u0000\u0646\u062C\u0000\u0646\u062C\u062D\u0000\u0646\u062C\u0645\u0000\u0646\u062C\u0649"d~ +"\u0000\u0646\u062C\u064A\u0000\u0646\u062D\u0000\u0646\u062D\u0645\u0000\u0646\u062D\u0649\u0000\u0646\u062D\u064A"d~ +"\u0000\u0646\u062E\u0000\u0646\u0631\u0000\u0646\u0632\u0000\u0646\u0645\u0000\u0646\u0645\u0649\u0000\u0646\u0645"d~ +"\u064A\u0000\u0646\u0646\u0000\u0646\u0647\u0000\u0646\u0649\u0000\u0646\u064A\u0000\u0647\u0000\u0647\u062C\u0000"d~ +"\u0647\u0645\u0000\u0647\u0645\u062C\u0000\u0647\u0645\u0645\u0000\u0647\u0649\u0000\u0647\u064A\u0000\u0647\u0670"d~ +"\u0000\u0648\u0000\u0648\u0633\u0644\u0645\u0000\u0648\u0654\u0000\u0648\u0674\u0000\u0649\u0000\u0649\u0670\u0000"d~ +"\u064A\u0000\u064A\u062C\u0000\u064A\u062C\u064A\u0000\u064A\u062D\u0000\u064A\u062D\u064A\u0000\u064A\u062E\u0000"d~ +"\u064A\u0631\u0000\u064A\u0632\u0000\u064A\u0645\u0000\u064A\u0645\u0645\u0000\u064A\u0645\u064A\u0000\u064A\u0646"d~ +"\u0000\u064A\u0647\u0000\u064A\u0649\u0000\u064A\u064A\u0000\u064A\u0654\u0000\u064A\u0654\u0627\u0000\u064A\u0654"d~ +"\u062C\u0000\u064A\u0654\u062D\u0000\u064A\u0654\u062E\u0000\u064A\u0654\u0631\u0000\u064A\u0654\u0632\u0000\u064A"d~ +"\u0654\u0645\u0000\u064A\u0654\u0646\u0000\u064A\u0654\u0647\u0000\u064A\u0654\u0648\u0000\u064A\u0654\u0649\u0000"d~ +"\u064A\u0654\u064A\u0000\u064A\u0654\u06C6\u0000\u064A\u0654\u06C7\u0000\u064A\u0654\u06C8\u0000\u064A\u0654\u06D0"d~ +"\u0000\u064A\u0654\u06D5\u0000\u064A\u0674\u0000\u066E\u0000\u066F\u0000\u0671\u0000\u0679\u0000\u067A\u0000\u067B"d~ +"\u0000\u067E\u0000\u067F\u0000\u0680\u0000\u0683\u0000\u0684\u0000\u0686\u0000\u0687\u0000\u0688\u0000\u068C\u0000"d~ +"\u068D\u0000\u068E\u0000\u0691\u0000\u0698\u0000\u06A1\u0000\u06A4\u0000\u06A6\u0000\u06A9\u0000\u06AD\u0000\u06AF"d~ +"\u0000\u06B1\u0000\u06B3\u0000\u06BA\u0000\u06BB\u0000\u06BE\u0000\u06C1\u0000\u06C1\u0654\u0000\u06C5\u0000\u06C6"d~ +"\u0000\u06C7\u0000\u06C7\u0674\u0000\u06C8\u0000\u06C9\u0000\u06CB\u0000\u06CC\u0000\u06D0\u0000\u06D2\u0000\u06D2"d~ +"\u0654\u0000\u06D5\u0654\u0000\u0915\u093C\u0000\u0916\u093C\u0000\u0917\u093C\u0000\u091C\u093C\u0000\u0921\u093C"d~ +"\u0000\u0922\u093C\u0000\u0928\u093C\u0000\u092B\u093C\u0000\u092F\u093C\u0000\u0930\u093C\u0000\u0933\u093C\u0000"d~ +"\u09A1\u09BC\u0000\u09A2\u09BC\u0000\u09AF\u09BC\u0000\u09C7\u09BE\u0000\u09C7\u09D7\u0000\u0A16\u0A3C\u0000\u0A17"d~ +"\u0A3C\u0000\u0A1C\u0A3C\u0000\u0A2B\u0A3C\u0000\u0A32\u0A3C\u0000\u0A38\u0A3C\u0000\u0B21\u0B3C\u0000\u0B22\u0B3C"d~ +"\u0000\u0B47\u0B3E\u0000\u0B47\u0B56\u0000\u0B47\u0B57\u0000\u0B92\u0BD7\u0000\u0BC6\u0BBE\u0000\u0BC6\u0BD7\u0000"d~ +"\u0BC7\u0BBE\u0000\u0C46\u0C56\u0000\u0CBF\u0CD5\u0000\u0CC6\u0CC2\u0000\u0CC6\u0CC2\u0CD5\u0000\u0CC6\u0CD5\u0000"d~ +"\u0CC6\u0CD6\u0000\u0D46\u0D3E\u0000\u0D46\u0D57\u0000\u0D47\u0D3E\u0000\u0DD9\u0DCA\u0000\u0DD9\u0DCF\u0000\u0DD9"d~ +"\u0DCF\u0DCA\u0000\u0DD9\u0DDF\u0000\u0E4D\u0E32\u0000\u0EAB\u0E99\u0000\u0EAB\u0EA1\u0000\u0ECD\u0EB2\u0000\u0F0B"d~ +"\u0000\u0F40\u0FB5\u0000\u0F42\u0FB7\u0000\u0F4C\u0FB7\u0000\u0F51\u0FB7\u0000\u0F56\u0FB7\u0000\u0F5B\u0FB7\u0000"d~ +"\u0F71\u0F72\u0000\u0F71\u0F74\u0000\u0F71\u0F80\u0000\u0F90\u0FB5\u0000\u0F92\u0FB7\u0000\u0F9C\u0FB7\u0000\u0FA1"d~ +"\u0FB7\u0000\u0FA6\u0FB7\u0000\u0FAB\u0FB7\u0000\u0FB2\u0F71\u0F80\u0000\u0FB2\u0F80\u0000\u0FB3\u0F71\u0F80\u0000"d~ +"\u0FB3\u0F80\u0000\u1025\u102E\u0000\u10DC\u0000\u1100\u0000\u1100\u1161\u0000\u1101\u0000\u1102\u0000\u1102\u1161"d~ +"\u0000\u1103\u0000\u1103\u1161\u0000\u1104\u0000\u1105\u0000\u1105\u1161\u0000\u1106\u0000\u1106\u1161\u0000\u1107"d~ +"\u0000\u1107\u1161\u0000\u1108\u0000\u1109\u0000\u1109\u1161\u0000\u110A\u0000\u110B\u0000\u110B\u1161\u0000\u110B"d~ +"\u116E\u0000\u110C\u0000\u110C\u1161\u0000\u110C\u116E\u110B\u1174\u0000\u110D\u0000\u110E\u0000\u110E\u1161\u0000"d~ +"\u110E\u1161\u11B7\u1100\u1169\u0000\u110F\u0000\u110F\u1161\u0000\u1110\u0000\u1110\u1161\u0000\u1111\u0000\u1111"d~ +"\u1161\u0000\u1112\u0000\u1112\u1161\u0000\u1114\u0000\u1115\u0000\u111A\u0000\u111C\u0000\u111D\u0000\u111E\u0000"d~ +"\u1120\u0000\u1121\u0000\u1122\u0000\u1123\u0000\u1127\u0000\u1129\u0000\u112B\u0000\u112C\u0000\u112D\u0000\u112E"d~ +"\u0000\u112F\u0000\u1132\u0000\u1136\u0000\u1140\u0000\u1147\u0000\u114C\u0000\u1157\u0000\u1158\u0000\u1159\u0000"d~ +"\u1160\u0000\u1161\u0000\u1162\u0000\u1163\u0000\u1164\u0000\u1165\u0000\u1166\u0000\u1167\u0000\u1168\u0000\u1169"d~ +"\u0000\u116A\u0000\u116B\u0000\u116C\u0000\u116D\u0000\u116E\u0000\u116F\u0000\u1170\u0000\u1171\u0000\u1172\u0000"d~ +"\u1173\u0000\u1174\u0000\u1175\u0000\u1184\u0000\u1185\u0000\u1188\u0000\u1191\u0000\u1192\u0000\u1194\u0000\u119E"d~ +"\u0000\u11A1\u0000\u11AA\u0000\u11AC\u0000\u11AD\u0000\u11B0\u0000\u11B1\u0000\u11B2\u0000\u11B3\u0000\u11B4\u0000"d~ +"\u11B5\u0000\u11C7\u0000\u11C8\u0000\u11CC\u0000\u11CE\u0000\u11D3\u0000\u11D7\u0000\u11D9\u0000\u11DD\u0000\u11DF"d~ +"\u0000\u11F1\u0000\u11F2\u0000\u1B05\u1B35\u0000\u1B07\u1B35\u0000\u1B09\u1B35\u0000\u1B0B\u1B35\u0000\u1B0D\u1B35"d~ +"\u0000\u1B11\u1B35\u0000\u1B3A\u1B35\u0000\u1B3C\u1B35\u0000\u1B3E\u1B35\u0000\u1B3F\u1B35\u0000\u1B42\u1B35\u0000"d~ +"\u1D02\u0000\u1D16\u0000\u1D17\u0000\u1D1C\u0000\u1D1D\u0000\u1D25\u0000\u1D7B\u0000\u1D85\u0000\u1D91\u0000\u2010"d~ +"\u0000\u2013\u0000\u2014\u0000\u2032\u2032\u0000\u2032\u2032\u2032\u0000\u2032\u2032\u2032\u2032\u0000\u2035\u2035"d~ +"\u0000\u2035\u2035\u2035\u0000\u20A9\u0000\u2190\u0000\u2190\u0338\u0000\u2191\u0000\u2192\u0000\u2192\u0338\u0000"d~ +"\u2193\u0000\u2194\u0338\u0000\u21D0\u0338\u0000\u21D2\u0338\u0000\u21D4\u0338\u0000\u2202\u0000\u2203\u0338\u0000"d~ +"\u2207\u0000\u2208\u0338\u0000\u220B\u0338\u0000\u2211\u0000\u2212\u0000\u2223\u0338\u0000\u2225\u0338\u0000\u222B"d~ +"\u222B\u0000\u222B\u222B\u222B\u0000\u222B\u222B\u222B\u222B\u0000\u222E\u222E\u0000\u222E\u222E\u222E\u0000\u223C"d~ +"\u0338\u0000\u2243\u0338\u0000\u2245\u0338\u0000\u2248\u0338\u0000\u224D\u0338\u0000\u2261\u0338\u0000\u2264\u0338"d~ +"\u0000\u2265\u0338\u0000\u2272\u0338\u0000\u2273\u0338\u0000\u2276\u0338\u0000\u2277\u0338\u0000\u227A\u0338\u0000"d~ +"\u227B\u0338\u0000\u227C\u0338\u0000\u227D\u0338\u0000\u2282\u0338\u0000\u2283\u0338\u0000\u2286\u0338\u0000\u2287"d~ +"\u0338\u0000\u2291\u0338\u0000\u2292\u0338\u0000\u22A2\u0338\u0000\u22A8\u0338\u0000\u22A9\u0338\u0000\u22AB\u0338"d~ +"\u0000\u22B2\u0338\u0000\u22B3\u0338\u0000\u22B4\u0338\u0000\u22B5\u0338\u0000\u2502\u0000\u25A0\u0000\u25CB\u0000"d~ +"\u2985\u0000\u2986\u0000\u2ADD\u0338\u0000\u2C71\u0000\u2D61\u0000\u3001\u0000\u3002\u0000\u3008\u0000\u3009\u0000"d~ +"\u300A\u0000\u300B\u0000\u300C\u0000\u300D\u0000\u300E\u0000\u300F\u0000\u3010\u0000\u3011\u0000\u3012\u0000\u3014"d~ +"\u0000\u3014\u0053\u3015\u0000\u3014\u4E09\u3015\u0000\u3014\u4E8C\u3015\u0000\u3014\u52DD\u3015\u0000\u3014\u5B89"d~ +"\u3015\u0000\u3014\u6253\u3015\u0000\u3014\u6557\u3015\u0000\u3014\u672C\u3015\u0000\u3014\u70B9\u3015\u0000\u3014"d~ +"\u76D7\u3015\u0000\u3015\u0000\u3016\u0000\u3017\u0000\u3046\u3099\u0000\u304B\u3099\u0000\u304D\u3099\u0000\u304F"d~ +"\u3099\u0000\u3051\u3099\u0000\u3053\u3099\u0000\u3055\u3099\u0000\u3057\u3099\u0000\u3059\u3099\u0000\u305B\u3099"d~ +"\u0000\u305D\u3099\u0000\u305F\u3099\u0000\u3061\u3099\u0000\u3064\u3099\u0000\u3066\u3099\u0000\u3068\u3099\u0000"d~ +"\u306F\u3099\u0000\u306F\u309A\u0000\u3072\u3099\u0000\u3072\u309A\u0000\u3075\u3099\u0000\u3075\u309A\u0000\u3078"d~ +"\u3099\u0000\u3078\u309A\u0000\u307B\u304B\u0000\u307B\u3099\u0000\u307B\u309A\u0000\u3088\u308A\u0000\u3099\u0000"d~ +"\u309A\u0000\u309D\u3099\u0000\u30A1\u0000\u30A2\u0000\u30A2\u30CF\u309A\u30FC\u30C8\u0000\u30A2\u30EB\u30D5\u30A1"d~ +"\u0000\u30A2\u30F3\u30D8\u309A\u30A2\u0000\u30A2\u30FC\u30EB\u0000\u30A3\u0000\u30A4\u0000\u30A4\u30CB\u30F3\u30AF"d~ +"\u3099\u0000\u30A4\u30F3\u30C1\u0000\u30A5\u0000\u30A6\u0000\u30A6\u3099\u0000\u30A6\u30A9\u30F3\u0000\u30A7\u0000"d~ +"\u30A8\u0000\u30A8\u30B9\u30AF\u30FC\u30C8\u3099\u0000\u30A8\u30FC\u30AB\u30FC\u0000\u30A9\u0000\u30AA\u0000\u30AA"d~ +"\u30F3\u30B9\u0000\u30AA\u30FC\u30E0\u0000\u30AB\u0000\u30AB\u3099\u0000\u30AB\u3099\u30ED\u30F3\u0000\u30AB\u3099"d~ +"\u30F3\u30DE\u0000\u30AB\u30A4\u30EA\u0000\u30AB\u30E9\u30C3\u30C8\u0000\u30AB\u30ED\u30EA\u30FC\u0000\u30AD\u0000"d~ +"\u30AD\u3099\u0000\u30AD\u3099\u30AB\u3099\u0000\u30AD\u3099\u30CB\u30FC\u0000\u30AD\u3099\u30EB\u30BF\u3099\u30FC"d~ +"\u0000\u30AD\u30E5\u30EA\u30FC\u0000\u30AD\u30ED\u0000\u30AD\u30ED\u30AF\u3099\u30E9\u30E0\u0000\u30AD\u30ED\u30E1"d~ +"\u30FC\u30C8\u30EB\u0000\u30AD\u30ED\u30EF\u30C3\u30C8\u0000\u30AF\u0000\u30AF\u3099\u0000\u30AF\u3099\u30E9\u30E0"d~ +"\u0000\u30AF\u3099\u30E9\u30E0\u30C8\u30F3\u0000\u30AF\u30EB\u30BB\u3099\u30A4\u30ED\u0000\u30AF\u30ED\u30FC\u30CD"d~ +"\u0000\u30B1\u0000\u30B1\u3099\u0000\u30B1\u30FC\u30B9\u0000\u30B3\u0000\u30B3\u3099\u0000\u30B3\u30B3\u0000\u30B3"d~ +"\u30C8\u0000\u30B3\u30EB\u30CA\u0000\u30B3\u30FC\u30DB\u309A\u0000\u30B5\u0000\u30B5\u3099\u0000\u30B5\u30A4\u30AF"d~ +"\u30EB\u0000\u30B5\u30F3\u30C1\u30FC\u30E0\u0000\u30B7\u0000\u30B7\u3099\u0000\u30B7\u30EA\u30F3\u30AF\u3099\u0000"d~ +"\u30B9\u0000\u30B9\u3099\u0000\u30BB\u0000\u30BB\u3099\u0000\u30BB\u30F3\u30C1\u0000\u30BB\u30F3\u30C8\u0000\u30BD"d~ +"\u0000\u30BD\u3099\u0000\u30BF\u0000\u30BF\u3099\u0000\u30BF\u3099\u30FC\u30B9\u0000\u30C1\u0000\u30C1\u3099\u0000"d~ +"\u30C3\u0000\u30C4\u0000\u30C4\u3099\u0000\u30C6\u0000\u30C6\u3099\u0000\u30C6\u3099\u30B7\u0000\u30C8\u0000\u30C8"d~ +"\u3099\u0000\u30C8\u3099\u30EB\u0000\u30C8\u30F3\u0000\u30CA\u0000\u30CA\u30CE\u0000\u30CB\u0000\u30CC\u0000\u30CD"d~ +"\u0000\u30CE\u0000\u30CE\u30C3\u30C8\u0000\u30CF\u0000\u30CF\u3099\u0000\u30CF\u3099\u30FC\u30EC\u30EB\u0000\u30CF"d~ +"\u309A\u0000\u30CF\u309A\u30FC\u30BB\u30F3\u30C8\u0000\u30CF\u309A\u30FC\u30C4\u0000\u30CF\u30A4\u30C4\u0000\u30D2"d~ +"\u0000\u30D2\u3099\u0000\u30D2\u3099\u30EB\u0000\u30D2\u309A\u0000\u30D2\u309A\u30A2\u30B9\u30C8\u30EB\u0000\u30D2"d~ +"\u309A\u30AF\u30EB\u0000\u30D2\u309A\u30B3\u0000\u30D5\u0000\u30D5\u3099\u0000\u30D5\u3099\u30C3\u30B7\u30A7\u30EB"d~ +"\u0000\u30D5\u309A\u0000\u30D5\u30A1\u30E9\u30C3\u30C8\u3099\u0000\u30D5\u30A3\u30FC\u30C8\u0000\u30D5\u30E9\u30F3"d~ +"\u0000\u30D8\u0000\u30D8\u3099\u0000\u30D8\u3099\u30FC\u30BF\u0000\u30D8\u309A\u0000\u30D8\u309A\u30BD\u0000\u30D8"d~ +"\u309A\u30CB\u30D2\u0000\u30D8\u309A\u30F3\u30B9\u0000\u30D8\u309A\u30FC\u30B7\u3099\u0000\u30D8\u30AF\u30BF\u30FC"d~ +"\u30EB\u0000\u30D8\u30EB\u30C4\u0000\u30DB\u0000\u30DB\u3099\u0000\u30DB\u3099\u30EB\u30C8\u0000\u30DB\u309A\u0000"d~ +"\u30DB\u309A\u30A4\u30F3\u30C8\u0000\u30DB\u309A\u30F3\u30C8\u3099\u0000\u30DB\u30F3\u0000\u30DB\u30FC\u30EB\u0000"d~ +"\u30DB\u30FC\u30F3\u0000\u30DE\u0000\u30DE\u30A4\u30AF\u30ED\u0000\u30DE\u30A4\u30EB\u0000\u30DE\u30C3\u30CF\u0000"d~ +"\u30DE\u30EB\u30AF\u0000\u30DE\u30F3\u30B7\u30E7\u30F3\u0000\u30DF\u0000\u30DF\u30AF\u30ED\u30F3\u0000\u30DF\u30EA"d~ +"\u0000\u30DF\u30EA\u30CF\u3099\u30FC\u30EB\u0000\u30E0\u0000\u30E1\u0000\u30E1\u30AB\u3099\u0000\u30E1\u30AB\u3099"d~ +"\u30C8\u30F3\u0000\u30E1\u30FC\u30C8\u30EB\u0000\u30E2\u0000\u30E3\u0000\u30E4\u0000\u30E4\u30FC\u30C8\u3099\u0000"d~ +"\u30E4\u30FC\u30EB\u0000\u30E5\u0000\u30E6\u0000\u30E6\u30A2\u30F3\u0000\u30E7\u0000\u30E8\u0000\u30E9\u0000\u30EA"d~ +"\u0000\u30EA\u30C3\u30C8\u30EB\u0000\u30EA\u30E9\u0000\u30EB\u0000\u30EB\u30D2\u309A\u30FC\u0000\u30EB\u30FC\u30D5"d~ +"\u3099\u30EB\u0000\u30EC\u0000\u30EC\u30E0\u0000\u30EC\u30F3\u30C8\u30B1\u3099\u30F3\u0000\u30ED\u0000\u30EF\u0000"d~ +"\u30EF\u3099\u0000\u30EF\u30C3\u30C8\u0000\u30F0\u0000\u30F0\u3099\u0000\u30F1\u0000\u30F1\u3099\u0000\u30F2\u0000"d~ +"\u30F2\u3099\u0000\u30F3\u0000\u30FB\u0000\u30FC\u0000\u30FD\u3099\u0000\u349E\u0000\u34B9\u0000\u34BB\u0000\u34DF"d~ +"\u0000\u3515\u0000\u36EE\u0000\u36FC\u0000\u3781\u0000\u382F\u0000\u3862\u0000\u387C\u0000\u38C7\u0000\u38E3\u0000"d~ +"\u391C\u0000\u393A\u0000\u3A2E\u0000\u3A6C\u0000\u3AE4\u0000\u3B08\u0000\u3B19\u0000\u3B49\u0000\u3B9D\u0000\u3C18"d~ +"\u0000\u3C4E\u0000\u3D33\u0000\u3D96\u0000\u3EAC\u0000\u3EB8\u0000\u3F1B\u0000\u3FFC\u0000\u4008\u0000\u4018\u0000"d~ +"\u4039\u0000\u4046\u0000\u4096\u0000\u40E3\u0000\u412F\u0000\u4202\u0000\u4227\u0000\u42A0\u0000\u4301\u0000\u4334"d~ +"\u0000\u4359\u0000\u43D5\u0000\u43D9\u0000\u440B\u0000\u446B\u0000\u452B\u0000\u455D\u0000\u4561\u0000\u456B\u0000"d~ +"\u45D7\u0000\u45F9\u0000\u4635\u0000\u46BE\u0000\u46C7\u0000\u4995\u0000\u49E6\u0000\u4A6E\u0000\u4A76\u0000\u4AB2"d~ +"\u0000\u4B33\u0000\u4BCE\u0000\u4CCE\u0000\u4CED\u0000\u4CF8\u0000\u4D56\u0000\u4E00\u0000\u4E01\u0000\u4E03\u0000"d~ +"\u4E09\u0000\u4E0A\u0000\u4E0B\u0000\u4E0D\u0000\u4E19\u0000\u4E26\u0000\u4E28\u0000\u4E2D\u0000\u4E32\u0000\u4E36"d~ +"\u0000\u4E38\u0000\u4E39\u0000\u4E3D\u0000\u4E3F\u0000\u4E41\u0000\u4E59\u0000\u4E5D\u0000\u4E82\u0000\u4E85\u0000"d~ +"\u4E86\u0000\u4E8C\u0000\u4E94\u0000\u4EA0\u0000\u4EA4\u0000\u4EAE\u0000\u4EBA\u0000\u4EC0\u0000\u4ECC\u0000\u4EE4"d~ +"\u0000\u4EE4\u548C\u0000\u4F01\u0000\u4F11\u0000\u4F60\u0000\u4F80\u0000\u4F86\u0000\u4F8B\u0000\u4FAE\u0000\u4FBB"d~ +"\u0000\u4FBF\u0000\u5002\u0000\u502B\u0000\u507A\u0000\u5099\u0000\u50CF\u0000\u50DA\u0000\u50E7\u0000\u512A\u0000"d~ +"\u513F\u0000\u5140\u0000\u5145\u0000\u514D\u0000\u5154\u0000\u5164\u0000\u5165\u0000\u5167\u0000\u5168\u0000\u5169"d~ +"\u0000\u516B\u0000\u516D\u0000\u5177\u0000\u5180\u0000\u5182\u0000\u518D\u0000\u5192\u0000\u5195\u0000\u5196\u0000"d~ +"\u5197\u0000\u5199\u0000\u51A4\u0000\u51AB\u0000\u51AC\u0000\u51B5\u0000\u51B7\u0000\u51C9\u0000\u51CC\u0000\u51DC"d~ +"\u0000\u51DE\u0000\u51E0\u0000\u51F5\u0000\u5200\u0000\u5203\u0000\u5207\u0000\u5217\u0000\u521D\u0000\u5229\u0000"d~ +"\u523A\u0000\u523B\u0000\u5246\u0000\u524D\u0000\u5272\u0000\u5277\u0000\u5289\u0000\u529B\u0000\u52A3\u0000\u52B3"d~ +"\u0000\u52B4\u0000\u52C7\u0000\u52C9\u0000\u52D2\u0000\u52DE\u0000\u52E4\u0000\u52F5\u0000\u52F9\u0000\u52FA\u0000"d~ +"\u5305\u0000\u5306\u0000\u5315\u0000\u5317\u0000\u531A\u0000\u5338\u0000\u533B\u0000\u533F\u0000\u5341\u0000\u5344"d~ +"\u0000\u5345\u0000\u5349\u0000\u5351\u0000\u5354\u0000\u535A\u0000\u535C\u0000\u5369\u0000\u5370\u0000\u5373\u0000"d~ +"\u5375\u0000\u537D\u0000\u537F\u0000\u5382\u0000\u53B6\u0000\u53C3\u0000\u53C8\u0000\u53CA\u0000\u53CC\u0000\u53DF"d~ +"\u0000\u53E3\u0000\u53E5\u0000\u53EB\u0000\u53EF\u0000\u53F1\u0000\u53F3\u0000\u5406\u0000\u5408\u0000\u540D\u0000"d~ +"\u540F\u0000\u541D\u0000\u5438\u0000\u5439\u0000\u5442\u0000\u5448\u0000\u5468\u0000\u549E\u0000\u54A2\u0000\u54BD"d~ +"\u0000\u54F6\u0000\u5510\u0000\u554F\u0000\u5553\u0000\u5555\u0000\u5563\u0000\u5584\u0000\u5587\u0000\u5599\u0000"d~ +"\u559D\u0000\u55AB\u0000\u55B3\u0000\u55B6\u0000\u55C0\u0000\u55C2\u0000\u55E2\u0000\u5606\u0000\u5651\u0000\u5668"d~ +"\u0000\u5674\u0000\u56D7\u0000\u56DB\u0000\u56F9\u0000\u5716\u0000\u5717\u0000\u571F\u0000\u5730\u0000\u578B\u0000"d~ +"\u57CE\u0000\u57F4\u0000\u580D\u0000\u5831\u0000\u5832\u0000\u5840\u0000\u585A\u0000\u585E\u0000\u58A8\u0000\u58AC"d~ +"\u0000\u58B3\u0000\u58D8\u0000\u58DF\u0000\u58EB\u0000\u58EE\u0000\u58F0\u0000\u58F2\u0000\u58F7\u0000\u5902\u0000"d~ +"\u5906\u0000\u590A\u0000\u5915\u0000\u591A\u0000\u591C\u0000\u5922\u0000\u5927\u0000\u5927\u6B63\u0000\u5929\u0000"d~ +"\u5944\u0000\u5948\u0000\u5951\u0000\u5954\u0000\u5962\u0000\u5973\u0000\u59D8\u0000\u59EC\u0000\u5A1B\u0000\u5A27"d~ +"\u0000\u5A62\u0000\u5A66\u0000\u5AB5\u0000\u5B08\u0000\u5B28\u0000\u5B3E\u0000\u5B50\u0000\u5B57\u0000\u5B66\u0000"d~ +"\u5B80\u0000\u5B85\u0000\u5B97\u0000\u5BC3\u0000\u5BD8\u0000\u5BE7\u0000\u5BEE\u0000\u5BF3\u0000\u5BF8\u0000\u5BFF"d~ +"\u0000\u5C06\u0000\u5C0F\u0000\u5C22\u0000\u5C38\u0000\u5C3F\u0000\u5C60\u0000\u5C62\u0000\u5C64\u0000\u5C65\u0000"d~ +"\u5C6E\u0000\u5C71\u0000\u5C8D\u0000\u5CC0\u0000\u5D19\u0000\u5D43\u0000\u5D50\u0000\u5D6B\u0000\u5D6E\u0000\u5D7C"d~ +"\u0000\u5DB2\u0000\u5DBA\u0000\u5DDB\u0000\u5DE1\u0000\u5DE2\u0000\u5DE5\u0000\u5DE6\u0000\u5DF1\u0000\u5DFD\u0000"d~ +"\u5DFE\u0000\u5E28\u0000\u5E3D\u0000\u5E69\u0000\u5E72\u0000\u5E73\u6210\u0000\u5E74\u0000\u5E7A\u0000\u5E7C\u0000"d~ +"\u5E7F\u0000\u5EA6\u0000\u5EB0\u0000\u5EB3\u0000\u5EB6\u0000\u5EC9\u0000\u5ECA\u0000\u5ED2\u0000\u5ED3\u0000\u5ED9"d~ +"\u0000\u5EEC\u0000\u5EF4\u0000\u5EFE\u0000\u5F04\u0000\u5F0B\u0000\u5F13\u0000\u5F22\u0000\u5F50\u0000\u5F53\u0000"d~ +"\u5F61\u0000\u5F62\u0000\u5F69\u0000\u5F6B\u0000\u5F73\u0000\u5F8B\u0000\u5F8C\u0000\u5F97\u0000\u5F9A\u0000\u5FA9"d~ +"\u0000\u5FAD\u0000\u5FC3\u0000\u5FCD\u0000\u5FD7\u0000\u5FF5\u0000\u5FF9\u0000\u6012\u0000\u601C\u0000\u6075\u0000"d~ +"\u6081\u0000\u6094\u0000\u60C7\u0000\u60D8\u0000\u60E1\u0000\u6108\u0000\u6144\u0000\u6148\u0000\u614C\u0000\u614E"d~ +"\u0000\u6160\u0000\u6168\u0000\u617A\u0000\u618E\u0000\u6190\u0000\u61A4\u0000\u61AF\u0000\u61B2\u0000\u61DE\u0000"d~ +"\u61F2\u0000\u61F6\u0000\u6200\u0000\u6208\u0000\u6210\u0000\u621B\u0000\u622E\u0000\u6234\u0000\u6236\u0000\u624B"d~ +"\u0000\u6253\u0000\u625D\u0000\u6295\u0000\u62B1\u0000\u62C9\u0000\u62CF\u0000\u62D3\u0000\u62D4\u0000\u62FC\u0000"d~ +"\u62FE\u0000\u6307\u0000\u633D\u0000\u6350\u0000\u6355\u0000\u6368\u0000\u637B\u0000\u6383\u0000\u63A0\u0000\u63A9"d~ +"\u0000\u63C4\u0000\u63C5\u0000\u63E4\u0000\u641C\u0000\u6422\u0000\u6452\u0000\u6469\u0000\u6477\u0000\u647E\u0000"d~ +"\u649A\u0000\u649D\u0000\u64C4\u0000\u652F\u0000\u6534\u0000\u654F\u0000\u6556\u0000\u656C\u0000\u6578\u0000\u6587"d~ +"\u0000\u6597\u0000\u6599\u0000\u65A4\u0000\u65B0\u0000\u65B9\u0000\u65C5\u0000\u65E0\u0000\u65E2\u0000\u65E3\u0000"d~ +"\u65E5\u0000\u660E\u6CBB\u0000\u6613\u0000\u6620\u0000\u662D\u548C\u0000\u6649\u0000\u6674\u0000\u6688\u0000\u6691"d~ +"\u0000\u669C\u0000\u66B4\u0000\u66C6\u0000\u66F0\u0000\u66F4\u0000\u66F8\u0000\u6700\u0000\u6708\u0000\u6709\u0000"d~ +"\u6717\u0000\u671B\u0000\u6721\u0000\u6728\u0000\u674E\u0000\u6753\u0000\u6756\u0000\u675E\u0000\u677B\u0000\u6785"d~ +"\u0000\u6797\u0000\u67F3\u0000\u67FA\u0000\u6817\u0000\u681F\u0000\u682A\u0000\u682A\u5F0F\u4F1A\u793E\u0000\u6852"d~ +"\u0000\u6881\u0000\u6885\u0000\u688E\u0000\u68A8\u0000\u6914\u0000\u6942\u0000\u69A3\u0000\u69EA\u0000\u6A02\u0000"d~ +"\u6A13\u0000\u6AA8\u0000\u6AD3\u0000\u6ADB\u0000\u6B04\u0000\u6B20\u0000\u6B21\u0000\u6B54\u0000\u6B62\u0000\u6B63"d~ +"\u0000\u6B72\u0000\u6B77\u0000\u6B79\u0000\u6B9F\u0000\u6BAE\u0000\u6BB3\u0000\u6BBA\u0000\u6BBB\u0000\u6BCB\u0000"d~ +"\u6BCD\u0000\u6BD4\u0000\u6BDB\u0000\u6C0F\u0000\u6C14\u0000\u6C34\u0000\u6C4E\u0000\u6C67\u0000\u6C88\u0000\u6CBF"d~ +"\u0000\u6CCC\u0000\u6CCD\u0000\u6CE5\u0000\u6CE8\u0000\u6D16\u0000\u6D1B\u0000\u6D1E\u0000\u6D34\u0000\u6D3E\u0000"d~ +"\u6D41\u0000\u6D69\u0000\u6D6A\u0000\u6D77\u0000\u6D78\u0000\u6D85\u0000\u6DCB\u0000\u6DDA\u0000\u6DEA\u0000\u6DF9"d~ +"\u0000\u6E1A\u0000\u6E2F\u0000\u6E6E\u0000\u6E80\u0000\u6E9C\u0000\u6EBA\u0000\u6EC7\u0000\u6ECB\u0000\u6ED1\u0000"d~ +"\u6EDB\u0000\u6F0F\u0000\u6F14\u0000\u6F22\u0000\u6F23\u0000\u6F6E\u0000\u6FC6\u0000\u6FEB\u0000\u6FFE\u0000\u701B"d~ +"\u0000\u701E\u0000\u7039\u0000\u704A\u0000\u706B\u0000\u7070\u0000\u7077\u0000\u707D\u0000\u7099\u0000\u70AD\u0000"d~ +"\u70C8\u0000\u70D9\u0000\u7121\u0000\u7145\u0000\u7149\u0000\u716E\u0000\u719C\u0000\u71CE\u0000\u71D0\u0000\u7210"d~ +"\u0000\u721B\u0000\u7228\u0000\u722A\u0000\u722B\u0000\u7235\u0000\u7236\u0000\u723B\u0000\u723F\u0000\u7247\u0000"d~ +"\u7250\u0000\u7259\u0000\u725B\u0000\u7262\u0000\u7279\u0000\u7280\u0000\u7295\u0000\u72AC\u0000\u72AF\u0000\u72C0"d~ +"\u0000\u72FC\u0000\u732A\u0000\u7375\u0000\u737A\u0000\u7384\u0000\u7387\u0000\u7389\u0000\u738B\u0000\u73A5\u0000"d~ +"\u73B2\u0000\u73DE\u0000\u7406\u0000\u7409\u0000\u7422\u0000\u7447\u0000\u745C\u0000\u7469\u0000\u7471\u0000\u7485"d~ +"\u0000\u7489\u0000\u7498\u0000\u74CA\u0000\u74DC\u0000\u74E6\u0000\u7506\u0000\u7518\u0000\u751F\u0000\u7524\u0000"d~ +"\u7528\u0000\u7530\u0000\u7532\u0000\u7533\u0000\u7537\u0000\u753B\u0000\u753E\u0000\u7559\u0000\u7565\u0000\u7570"d~ +"\u0000\u758B\u0000\u7592\u0000\u75E2\u0000\u7610\u0000\u761D\u0000\u761F\u0000\u7642\u0000\u7669\u0000\u7676\u0000"d~ +"\u767D\u0000\u76AE\u0000\u76BF\u0000\u76CA\u0000\u76DB\u0000\u76E3\u0000\u76E7\u0000\u76EE\u0000\u76F4\u0000\u7701"d~ +"\u0000\u771E\u0000\u771F\u0000\u7740\u0000\u774A\u0000\u778B\u0000\u77A7\u0000\u77DB\u0000\u77E2\u0000\u77F3\u0000"d~ +"\u784E\u0000\u786B\u0000\u788C\u0000\u7891\u0000\u78CA\u0000\u78CC\u0000\u78FB\u0000\u792A\u0000\u793A\u0000\u793C"d~ +"\u0000\u793E\u0000\u7948\u0000\u7949\u0000\u7950\u0000\u7956\u0000\u795D\u0000\u795E\u0000\u7965\u0000\u797F\u0000"d~ +"\u7981\u0000\u798D\u0000\u798E\u0000\u798F\u0000\u79AE\u0000\u79B8\u0000\u79BE\u0000\u79CA\u0000\u79D8\u0000\u79EB"d~ +"\u0000\u7A1C\u0000\u7A40\u0000\u7A4A\u0000\u7A4F\u0000\u7A74\u0000\u7A7A\u0000\u7A81\u0000\u7AB1\u0000\u7ACB\u0000"d~ +"\u7AEE\u0000\u7AF9\u0000\u7B20\u0000\u7B8F\u0000\u7BC0\u0000\u7BC6\u0000\u7BC9\u0000\u7C3E\u0000\u7C60\u0000\u7C73"d~ +"\u0000\u7C7B\u0000\u7C92\u0000\u7CBE\u0000\u7CD2\u0000\u7CD6\u0000\u7CE3\u0000\u7CE7\u0000\u7CE8\u0000\u7CF8\u0000"d~ +"\u7D00\u0000\u7D10\u0000\u7D22\u0000\u7D2F\u0000\u7D42\u0000\u7D5B\u0000\u7D63\u0000\u7DA0\u0000\u7DBE\u0000\u7DC7"d~ +"\u0000\u7DF4\u0000\u7E02\u0000\u7E09\u0000\u7E37\u0000\u7E41\u0000\u7E45\u0000\u7F36\u0000\u7F3E\u0000\u7F51\u0000"d~ +"\u7F72\u0000\u7F79\u0000\u7F7A\u0000\u7F85\u0000\u7F8A\u0000\u7F95\u0000\u7F9A\u0000\u7FBD\u0000\u7FFA\u0000\u8001"d~ +"\u0000\u8005\u0000\u800C\u0000\u8012\u0000\u8033\u0000\u8046\u0000\u8060\u0000\u806F\u0000\u8070\u0000\u807E\u0000"d~ +"\u807F\u0000\u8089\u0000\u808B\u0000\u80AD\u0000\u80B2\u0000\u8103\u0000\u813E\u0000\u81D8\u0000\u81E3\u0000\u81E8"d~ +"\u0000\u81EA\u0000\u81ED\u0000\u81F3\u0000\u81FC\u0000\u8201\u0000\u8204\u0000\u820C\u0000\u8218\u0000\u821B\u0000"d~ +"\u821F\u0000\u826E\u0000\u826F\u0000\u8272\u0000\u8278\u0000\u8279\u0000\u828B\u0000\u8291\u0000\u829D\u0000\u82B1"d~ +"\u0000\u82B3\u0000\u82BD\u0000\u82E5\u0000\u82E6\u0000\u831D\u0000\u8323\u0000\u8336\u0000\u8352\u0000\u8353\u0000"d~ +"\u8363\u0000\u83AD\u0000\u83BD\u0000\u83C9\u0000\u83CA\u0000\u83CC\u0000\u83DC\u0000\u83E7\u0000\u83EF\u0000\u83F1"d~ +"\u0000\u843D\u0000\u8449\u0000\u8457\u0000\u84EE\u0000\u84F1\u0000\u84F3\u0000\u84FC\u0000\u8516\u0000\u8564\u0000"d~ +"\u85CD\u0000\u85FA\u0000\u8606\u0000\u8612\u0000\u862D\u0000\u863F\u0000\u864D\u0000\u8650\u0000\u865C\u0000\u8667"d~ +"\u0000\u8669\u0000\u866B\u0000\u8688\u0000\u86A9\u0000\u86E2\u0000\u870E\u0000\u8728\u0000\u876B\u0000\u8779\u0000"d~ +"\u8786\u0000\u87BA\u0000\u87E1\u0000\u8801\u0000\u881F\u0000\u8840\u0000\u884C\u0000\u8860\u0000\u8863\u0000\u88C2"d~ +"\u0000\u88CF\u0000\u88D7\u0000\u88DE\u0000\u88E1\u0000\u88F8\u0000\u88FA\u0000\u8910\u0000\u8941\u0000\u8964\u0000"d~ +"\u897E\u0000\u8986\u0000\u898B\u0000\u8996\u0000\u89D2\u0000\u89E3\u0000\u8A00\u0000\u8AA0\u0000\u8AAA\u0000\u8ABF"d~ +"\u0000\u8ACB\u0000\u8AD2\u0000\u8AD6\u0000\u8AED\u0000\u8AF8\u0000\u8AFE\u0000\u8B01\u0000\u8B39\u0000\u8B58\u0000"d~ +"\u8B80\u0000\u8B8A\u0000\u8C37\u0000\u8C46\u0000\u8C48\u0000\u8C55\u0000\u8C78\u0000\u8C9D\u0000\u8CA1\u0000\u8CA9"d~ +"\u0000\u8CAB\u0000\u8CC1\u0000\u8CC2\u0000\u8CC7\u0000\u8CC8\u0000\u8CD3\u0000\u8D08\u0000\u8D1B\u0000\u8D64\u0000"d~ +"\u8D70\u0000\u8D77\u0000\u8DB3\u0000\u8DBC\u0000\u8DCB\u0000\u8DEF\u0000\u8DF0\u0000\u8EAB\u0000\u8ECA\u0000\u8ED4"d~ +"\u0000\u8F26\u0000\u8F2A\u0000\u8F38\u0000\u8F3B\u0000\u8F62\u0000\u8F9B\u0000\u8F9E\u0000\u8FB0\u0000\u8FB5\u0000"d~ +"\u8FB6\u0000\u9023\u0000\u9038\u0000\u904A\u0000\u9069\u0000\u9072\u0000\u907C\u0000\u908F\u0000\u9091\u0000\u9094"d~ +"\u0000\u90CE\u0000\u90DE\u0000\u90F1\u0000\u90FD\u0000\u9111\u0000\u911B\u0000\u9149\u0000\u914D\u0000\u916A\u0000"d~ +"\u9199\u0000\u91B4\u0000\u91C6\u0000\u91CC\u0000\u91CF\u0000\u91D1\u0000\u9234\u0000\u9238\u0000\u9276\u0000\u927C"d~ +"\u0000\u92D7\u0000\u92D8\u0000\u9304\u0000\u934A\u0000\u93F9\u0000\u9415\u0000\u9577\u0000\u9580\u0000\u958B\u0000"d~ +"\u95AD\u0000\u95B7\u0000\u961C\u0000\u962E\u0000\u964B\u0000\u964D\u0000\u9675\u0000\u9678\u0000\u967C\u0000\u9686"d~ +"\u0000\u96A3\u0000\u96B6\u0000\u96B7\u0000\u96B8\u0000\u96B9\u0000\u96C3\u0000\u96E2\u0000\u96E3\u0000\u96E8\u0000"d~ +"\u96F6\u0000\u96F7\u0000\u9723\u0000\u9732\u0000\u9748\u0000\u9751\u0000\u9756\u0000\u975E\u0000\u9762\u0000\u9769"d~ +"\u0000\u97CB\u0000\u97DB\u0000\u97E0\u0000\u97ED\u0000\u97F3\u0000\u97FF\u0000\u9801\u0000\u9805\u0000\u980B\u0000"d~ +"\u9818\u0000\u9829\u0000\u983B\u0000\u985E\u0000\u98A8\u0000\u98DB\u0000\u98DF\u0000\u98E2\u0000\u98EF\u0000\u98FC"d~ +"\u0000\u9928\u0000\u9929\u0000\u9996\u0000\u9999\u0000\u99A7\u0000\u99AC\u0000\u99C2\u0000\u99F1\u0000\u99FE\u0000"d~ +"\u9A6A\u0000\u9AA8\u0000\u9AD8\u0000\u9ADF\u0000\u9B12\u0000\u9B25\u0000\u9B2F\u0000\u9B32\u0000\u9B3C\u0000\u9B5A"d~ +"\u0000\u9B6F\u0000\u9C40\u0000\u9C57\u0000\u9CE5\u0000\u9CFD\u0000\u9D67\u0000\u9DB4\u0000\u9DFA\u0000\u9E1E\u0000"d~ +"\u9E75\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EA5\u0000\u9EBB\u0000\u9EC3\u0000\u9ECD\u0000\u9ECE\u0000\u9ED1"d~ +"\u0000\u9EF9\u0000\u9EFD\u0000\u9EFE\u0000\u9F05\u0000\u9F0E\u0000\u9F0F\u0000\u9F13\u0000\u9F16\u0000\u9F20\u0000"d~ +"\u9F3B\u0000\u9F43\u0000\u9F4A\u0000\u9F52\u0000\u9F8D\u0000\u9F8E\u0000\u9F9C\u0000\u9F9F\u0000\u9FA0\u0000\uA651"d~ +"\u0000\uA689\u0000\uA727\u0000\uA76F\u0000\uA78E\u0000\uAB37\u0000\uAB52\u0000\uAB66\u0000\uAB67\u0000\U00011099"d~ +"\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127\u0000\U00011132\U00011127"d~ +"\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000\U000114B9\U000114BA\u0000"d~ +"\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935\U00011930\u0000\U0001D157"d~ +"\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F\u0000"d~ +"\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000\U0001D1B9"d~ +"\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165\u0000"d~ +"\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U0001DF04\u0000\U0001DF05\u0000\U0001DF06"d~ +"\u0000\U0001DF08\u0000\U0001DF0A\u0000\U0001DF1E\u0000\U00020122\u0000\U0002051C\u0000\U00020525\u0000\U0002054B"d~ +"\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000\U000214E4\u0000\U000216A8"d~ +"\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000\U00021DE6\u0000\U00022183"d~ +"\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000\U00022B0C\u0000\U00022BF1"d~ +"\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000\U000233C3\u0000\U000233D5"d~ +"\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000\U00023CBC\u0000\U00023D1E"d~ +"\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000\U000243AB\u0000\U00024608"d~ +"\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000\U00024FB8\u0000\U00025044"d~ +"\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000\U0002541D\u0000\U00025626"d~ +"\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000\U00025C80\u0000\U00025CD0"d~ +"\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000\U0002633E\u0000\U000264DA"d~ +"\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000\U00026C36\u0000\U00026CD5"d~ +"\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000\U00027667\u0000\U000278AE"d~ +"\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000\U000285ED\u0000\U0002872E"d~ +"\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000\U0002940A\u0000\U00029496"d~ +"\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000\U0002A291\u0000\U0002A392"d~ +"\u0000\U0002A600\u0000"d; +return t[]; } } diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index 82ac8468ff9..147fc57e11f 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -2445,12 +2445,325 @@ enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xe40], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x20000, 0x40003, 0x60005, 0x80007, 0x0, 0x90000, 0xb000a, 0xd000c, 0xf000e, 0x110010, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x150014, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x180017, 0x1a0019, 0x1c001b, 0x1e001d, 0x0, 0x0, 0x20001f, 0x21, 0x0, 0x0, 0x0, 0x0, 0x0, 0x230022, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x250024, 0x270026, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x280000, 0x29, 0x2b002a, 0x2d002c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0x310030, 0x320000, 0x33, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x360000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x250024, 0x270026, 0x290028, 0x2b002a, 0x2d002c, 0x2f002e, 0xffff0030, 0x320031, 0x340033, 0x360035, 0xffff0037, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0038, 0xffff0039, 0xffff003a, 0xffff003b, 0xffff003c, 0xffff003d, 0xffff003e, 0xffff003f, 0xffff0040, 0xffff0041, 0xffff0042, 0xffff0043, 0xffff0044, 0xffff0045, 0xffff0046, 0xffff0047, 0xffff0048, 0xffff0049, 0xffff004a, 0xffff004b, 0xffff004c, 0xffff004d, 0xffff004e, 0xffff004f, 0xffff0050, 0xffff0051, 0xffff0052, 0xffff0053, 0x54ffff, 0x55ffff, 0x56ffff, 0x57ffff, 0x58ffff, 0x59ffff, 0x5affff, 0x5bffff, 0xffffffff, 0xffff005c, 0xffff005d, 0xffff005e, 0xffff005f, 0xffff0060, 0xffff0061, 0xffff0062, 0xffff0063, 0xffff0064, 0xffff0065, 0xffff0066, 0xffff0067, 0xffff0068, 0xffff0069, 0xffff006a, 0xffff006b, 0xffff006c, 0xffff006d, 0xffff006e, 0xffff006f, 0xffff0070, 0xffff0071, 0xffff0072, 0x740073, 0x75ffff, 0x76ffff, 0xffffffff, 0x77ffff, 0xffff0078, 0xffff0079, 0x7b007a, 0x7cffff, 0x7e007d, 0xffffffff, 0x80007f, 0x820081, 0x83ffff, 0xffff0084, 0x860085, 0xffff0087, 0xffffffff, 0x890088, 0x8affff, 0xffff008b, 0xffff008c, 0xffff008d, 0x8f008e, 0x90ffff, 0xffffffff, 0xffff0091, 0x930092, 0x94ffff, 0x960095, 0x97ffff, 0x98ffff, 0xffff0099, 0xffffffff, 0xffff009a, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c009b, 0x9dffff, 0xffff009e, 0xa0009f, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xa6ffff, 0xa7ffff, 0xa8ffff, 0xffffffff, 0xffff00a9, 0xffff00aa, 0xffff00ab, 0xffff00ac, 0xffff00ad, 0xffff00ae, 0xffff00af, 0xffff00b0, 0xffff00b1, 0xb2ffff, 0xffff00b3, 0xffff00b4, 0xb600b5, 0xffff00b7, 0xffff00b8, 0xffff00b9, 0xffff00ba, 0xffff00bb, 0xffff00bc, 0xffff00bd, 0xffff00be, 0xffff00bf, 0xffff00c0, 0xffff00c1, 0xffff00c2, 0xffff00c3, 0xffff00c4, 0xffff00c5, 0xffff00c6, 0xffff00c7, 0xffff00c8, 0xffff00c9, 0xffff00ca, 0xffff00cb, 0xffff00cc, 0xffff00cd, 0xffff00ce, 0xffff00cf, 0xffff00d0, 0xffff00d1, 0xffff00d2, 0xffff00d3, 0xffff00d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xd600d5, 0xd7ffff, 0xffff00d8, 0xd9ffff, 0xdaffff, 0xdc00db, 0xffff00dd, 0xffff00de, 0xffff00df, 0xffff00e0, 0xffff00e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00e2, 0xffff00e3, 0xffffffff, 0xffff00e4, 0xffffffff, 0xffffffff, 0xffffffff, 0xe5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00e6, 0xe800e7, 0xffff00e9, 0xffff00ea, 0xec00eb, 0xedffff, 0xef00ee, 0xf100f0, 0xf300f2, 0xf500f4, 0xf700f6, 0xf900f8, 0xfb00fa, 0xfd00fc, 0xfeffff, 0x10000ff, 0x1020101, 0x1040103, 0x1060105, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x107ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0108, 0xffff0109, 0xffff010a, 0xffff010b, 0xffff010c, 0xffff010d, 0xffff010e, 0xffff010f, 0xffff0110, 0xffff0111, 0xffff0112, 0xffff0113, 0xffffffff, 0xffffffff, 0xffff0114, 0x115ffff, 0x116ffff, 0xffff0117, 0x118ffff, 0x11a0119, 0x11c011b, 0x11e011d, 0x120011f, 0x1220121, 0x1240123, 0x1260125, 0x1280127, 0x12a0129, 0x12c012b, 0x12e012d, 0x130012f, 0x1320131, 0x1340133, 0x1360135, 0x1380137, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff014b, 0xffff014c, 0xffff014d, 0xffff014e, 0xffff014f, 0xffff0150, 0xffff0151, 0xffff0152, 0xffff0153, 0xffff0154, 0xffff0155, 0xffff0156, 0xffff0157, 0xffff0158, 0xffff0159, 0xffff015a, 0xffff015b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff015c, 0xffff015d, 0xffff015e, 0xffff015f, 0xffff0160, 0xffff0161, 0xffff0162, 0xffff0163, 0xffff0164, 0xffff0165, 0xffff0166, 0xffff0167, 0xffff0168, 0xffff0169, 0xffff016a, 0xffff016b, 0xffff016c, 0xffff016d, 0xffff016e, 0xffff016f, 0xffff0170, 0xffff0171, 0xffff0172, 0xffff0173, 0xffff0174, 0xffff0175, 0xffff0176, 0x1780177, 0x179ffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0xffffffff, 0xffff017f, 0xffff0180, 0xffff0181, 0xffff0182, 0xffff0183, 0xffff0184, 0xffff0185, 0xffff0186, 0xffff0187, 0xffff0188, 0xffff0189, 0xffff018a, 0xffff018b, 0xffff018c, 0xffff018d, 0xffff018e, 0xffff018f, 0xffff0190, 0xffff0191, 0xffff0192, 0xffff0193, 0xffff0194, 0xffff0195, 0xffff0196, 0xffff0197, 0xffff0198, 0xffff0199, 0xffff019a, 0xffff019b, 0xffff019c, 0xffff019d, 0xffff019e, 0xffff019f, 0xffff01a0, 0xffff01a1, 0xffff01a2, 0xffff01a3, 0xffff01a4, 0xffff01a5, 0xffff01a6, 0xffff01a7, 0xffff01a8, 0xffff01a9, 0xffff01aa, 0xffff01ab, 0xffff01ac, 0xffff01ad, 0xffff01ae, 0x1afffff, 0x1b101b0, 0x1b301b2, 0x1b501b4, 0x1b701b6, 0x1b901b8, 0x1bb01ba, 0x1bd01bc, 0x1bf01be, 0x1c101c0, 0x1c301c2, 0x1c501c4, 0x1c701c6, 0x1c901c8, 0x1cb01ca, 0x1cd01cc, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0xffff01d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1d601d5, 0x1d801d7, 0x1da01d9, 0x1dc01db, 0x1de01dd, 0x1e001df, 0x1e201e1, 0x1e401e3, 0x1e601e5, 0x1e801e7, 0x1ea01e9, 0x1ec01eb, 0x1ee01ed, 0x1f001ef, 0x1f201f1, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fbffff, 0xffffffff, 0xffffffff, 0x1fcffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0x21a0219, 0x21c021b, 0x21e021d, 0x220021f, 0x2220221, 0x2240223, 0x2260225, 0x2280227, 0x22a0229, 0x22c022b, 0x22e022d, 0x230022f, 0x2320231, 0x2340233, 0x2360235, 0x2380237, 0x23a0239, 0x23c023b, 0x23e023d, 0x240023f, 0x2420241, 0x2440243, 0x2460245, 0x2480247, 0x24a0249, 0x24c024b, 0x24e024d, 0x250024f, 0x2520251, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2540253, 0x2560255, 0x2580257, 0x25a0259, 0x25c025b, 0x25e025d, 0x260025f, 0x2620261, 0x2640263, 0x2660265, 0x2680267, 0x26a0269, 0x26c026b, 0x26e026d, 0x270026f, 0x2720271, 0x2740273, 0x2760275, 0x2780277, 0x27a0279, 0x27c027b, 0xffff027d, 0x27effff, 0x280027f, 0xffff0281, 0xffff0282, 0xffff0283, 0xffff0284, 0xffff0285, 0xffff0286, 0xffff0287, 0xffff0288, 0xffff0289, 0xffff028a, 0xffff028b, 0xffff028c, 0xffff028d, 0xffff028e, 0xffff028f, 0xffff0290, 0xffff0291, 0xffff0292, 0xffff0293, 0xffff0294, 0xffff0295, 0xffff0296, 0xffff0297, 0xffff0298, 0xffff0299, 0xffff029a, 0xffff029b, 0xffff029c, 0xffff029d, 0xffff029e, 0xffff029f, 0xffff02a0, 0xffff02a1, 0xffff02a2, 0xffff02a3, 0xffff02a4, 0xffff02a5, 0xffff02a6, 0xffff02a7, 0xffff02a8, 0xffff02a9, 0xffff02aa, 0xffff02ab, 0xffff02ac, 0xffff02ad, 0xffff02ae, 0xffff02af, 0xffff02b0, 0xffff02b1, 0xffff02b2, 0xffff02b3, 0xffff02b4, 0xffff02b5, 0xffff02b6, 0xffff02b7, 0xffff02b8, 0xffff02b9, 0xffff02ba, 0xffff02bb, 0xffff02bc, 0xffff02bd, 0xffff02be, 0xffff02bf, 0xffff02c0, 0xffff02c1, 0xffff02c2, 0xffff02c3, 0xffff02c4, 0xffff02c5, 0xffff02c6, 0xffff02c7, 0xffff02c8, 0xffff02c9, 0xffff02ca, 0xffff02cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff02cc, 0xffff02cd, 0xffff02ce, 0xffff02cf, 0xffff02d0, 0xffff02d1, 0xffff02d2, 0xffff02d3, 0xffff02d4, 0xffff02d5, 0xffff02d6, 0xffff02d7, 0xffff02d8, 0xffff02d9, 0xffff02da, 0xffff02db, 0xffff02dc, 0xffff02dd, 0xffff02de, 0xffff02df, 0xffff02e0, 0xffff02e1, 0xffff02e2, 0xffff02e3, 0xffff02e4, 0xffff02e5, 0xffff02e6, 0xffff02e7, 0xffff02e8, 0xffff02e9, 0xffff02ea, 0xffff02eb, 0xffff02ec, 0xffff02ed, 0xffff02ee, 0xffff02ef, 0xffff02f0, 0xffff02f1, 0xffff02f2, 0xffff02f3, 0xffff02f4, 0xffff02f5, 0xffff02f6, 0xffff02f7, 0xffff02f8, 0xffff02f9, 0xffff02fa, 0xffff02fb, 0xffff02fc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2fe02fd, 0x30002ff, 0x3020301, 0x3040303, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3060305, 0x3080307, 0x30a0309, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30c030b, 0x30e030d, 0x310030f, 0x3120311, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31c031b, 0x31e031d, 0x320031f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x321ffff, 0x322ffff, 0x323ffff, 0x324ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3260325, 0x3280327, 0x32a0329, 0x32c032b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x32e032d, 0x330032f, 0x3320331, 0x3340333, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3360335, 0x3380337, 0x33a0339, 0x33c033b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x33e033d, 0x340033f, 0x3420341, 0x3440343, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3460345, 0x3480347, 0xffff0349, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x34b034a, 0x34d034c, 0xffff034e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x350034f, 0x3520351, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3540353, 0x3560355, 0xffff0357, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3590358, 0x35b035a, 0xffff035c, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff035d, 0xffffffff, 0x35f035e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0360, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3620361, 0x3640363, 0x3660365, 0x3680367, 0x36a0369, 0x36c036b, 0x36e036d, 0x370036f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x371ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3730372, 0x3750374, 0x3770376, 0x3790378, 0x37b037a, 0x37d037c, 0x37f037e, 0x3810380, 0x3830382, 0x3850384, 0x3870386, 0x3890388, 0x38b038a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x38d038c, 0x38f038e, 0x3910390, 0x3930392, 0x3950394, 0x3970396, 0x3990398, 0x39b039a, 0x39d039c, 0x39f039e, 0x3a103a0, 0x3a303a2, 0x3a503a4, 0x3a703a6, 0x3a903a8, 0x3ab03aa, 0x3ad03ac, 0x3af03ae, 0x3b103b0, 0x3b303b2, 0x3b503b4, 0x3b703b6, 0x3b903b8, 0x3bb03ba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03bc, 0x3be03bd, 0xffff03bf, 0x3c0ffff, 0x3c1ffff, 0x3c2ffff, 0x3c3ffff, 0x3c503c4, 0xffff03c6, 0xffff03c7, 0x3c8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ca03c9, 0xffff03cb, 0xffff03cc, 0xffff03cd, 0xffff03ce, 0xffff03cf, 0xffff03d0, 0xffff03d1, 0xffff03d2, 0xffff03d3, 0xffff03d4, 0xffff03d5, 0xffff03d6, 0xffff03d7, 0xffff03d8, 0xffff03d9, 0xffff03da, 0xffff03db, 0xffff03dc, 0xffff03dd, 0xffff03de, 0xffff03df, 0xffff03e0, 0xffff03e1, 0xffff03e2, 0xffff03e3, 0xffff03e4, 0xffff03e5, 0xffff03e6, 0xffff03e7, 0xffff03e8, 0xffff03e9, 0xffff03ea, 0xffff03eb, 0xffff03ec, 0xffff03ed, 0xffff03ee, 0xffff03ef, 0xffff03f0, 0xffff03f1, 0xffff03f2, 0xffff03f3, 0xffff03f4, 0xffff03f5, 0xffff03f6, 0xffff03f7, 0xffff03f8, 0xffff03f9, 0xffff03fa, 0xffff03fb, 0xffff03fc, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fdffff, 0x3feffff, 0xffffffff, 0xffffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0400, 0xffff0401, 0xffff0402, 0xffff0403, 0xffff0404, 0xffff0405, 0xffff0406, 0xffff0407, 0xffff0408, 0xffff0409, 0xffff040a, 0xffff040b, 0xffff040c, 0xffff040d, 0xffff040e, 0xffff040f, 0xffff0410, 0xffff0411, 0xffff0412, 0xffff0413, 0xffff0414, 0xffff0415, 0xffff0416, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0417, 0xffff0418, 0xffff0419, 0xffff041a, 0xffff041b, 0xffff041c, 0xffff041d, 0xffff041e, 0xffff041f, 0xffff0420, 0xffff0421, 0xffff0422, 0xffff0423, 0xffff0424, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0425, 0xffff0426, 0xffff0427, 0xffff0428, 0xffff0429, 0xffff042a, 0xffff042b, 0xffffffff, 0xffff042c, 0xffff042d, 0xffff042e, 0xffff042f, 0xffff0430, 0xffff0431, 0xffff0432, 0xffff0433, 0xffff0434, 0xffff0435, 0xffff0436, 0xffff0437, 0xffff0438, 0xffff0439, 0xffff043a, 0xffff043b, 0xffff043c, 0xffff043d, 0xffff043e, 0xffff043f, 0xffff0440, 0xffff0441, 0xffff0442, 0xffff0443, 0xffff0444, 0xffff0445, 0xffff0446, 0xffff0447, 0xffff0448, 0xffff0449, 0xffff044a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x44bffff, 0x44cffff, 0x44dffff, 0xffff044e, 0xffff044f, 0xffff0450, 0xffff0451, 0xffff0452, 0xffffffff, 0x453ffff, 0x454ffff, 0xffffffff, 0xffff0455, 0xffff0456, 0xffffffff, 0xffff0457, 0xffff0458, 0xffff0459, 0xffff045a, 0xffff045b, 0xffff045c, 0xffff045d, 0xffff045e, 0xffff045f, 0xffff0460, 0x4620461, 0x4640463, 0xffff0465, 0x4670466, 0x4690468, 0xffff046a, 0xffff046b, 0xffff046c, 0xffff046d, 0xffff046e, 0xffff046f, 0xffff0470, 0xffff0471, 0x4730472, 0x4750474, 0x476ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0477, 0xffffffff, 0xffffffff, 0xffff0478, 0xffff0479, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x47affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x47bffff, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x48d048c, 0x48f048e, 0x4910490, 0x4930492, 0xffff0494, 0xffffffff, 0xffffffff, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0x4a604a5, 0x4a804a7, 0x4aa04a9, 0x4ac04ab, 0x4ae04ad, 0x4b004af, 0x4b204b1, 0x4b404b3, 0x4b604b5, 0x4b804b7, 0x4ba04b9, 0x4bc04bb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4be04bd, 0x4c004bf, 0x4c204c1, 0x4c404c3, 0x4c604c5, 0x4c804c7, 0x4ca04c9, 0x4cc04cb, 0x4ce04cd, 0x4d004cf, 0x4d204d1, 0x4d404d3, 0x4d604d5, 0x4d804d7, 0x4da04d9, 0x4dc04db, 0x4de04dd, 0x4e004df, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4e204e1, 0x4e404e3, 0x4e604e5, 0x4e804e7, 0x4ea04e9, 0xffff04eb, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0x4f304f2, 0x4f504f4, 0x4f704f6, 0x4f904f8, 0xffff04fa, 0x4fc04fb, 0x4fe04fd, 0x50004ff, 0xffff0501, 0x5030502, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50d050c, 0x50f050e, 0x5110510, 0x5130512, 0x5150514, 0x5170516, 0x5190518, 0x51b051a, 0x51d051c, 0x51f051e, 0x5210520, 0x5230522, 0x5250524, 0x5270526, 0x5290528, 0x52b052a, 0x52d052c, 0x52f052e, 0x5310530, 0x5330532, 0x5350534, 0xffff0536, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0x5480547, 0x54a0549, 0x54c054b, 0x54e054d, 0x550054f, 0x5520551, 0x5540553, 0x5560555, 0x5580557, 0x55a0559, 0x55c055b, 0x55e055d, 0x560055f, 0x5620561, 0x5640563, 0x5660565, 0x5680567, 0x56a0569, 0x56c056b, 0x56e056d, 0x570056f, 0x5720571, 0x5740573, 0x5760575, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5780577, 0x57a0579, 0x57c057b, 0x57e057d, 0x580057f, 0x5820581, 0x5840583, 0x5860585, 0x5880587, 0x58a0589, 0x58c058b, 0x58e058d, 0x590058f, 0x5920591, 0x5940593, 0x5960595, 0x5980597, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); //10368 bytes enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xf40], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x150000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x180000, 0x19, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x0, 0x0, 0x220000, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x240000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0000, 0x2b, 0x2d002c, 0x2f002e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x300000, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x320000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340033, 0x350000, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x370000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1c001b, 0x1e001d, 0x20001f, 0x220021, 0x240023, 0x260025, 0x280027, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0xffff0031, 0x330032, 0x350034, 0x370036, 0x390038, 0x3affff, 0x3bffff, 0x3cffff, 0x3dffff, 0x3effff, 0x3fffff, 0x40ffff, 0x41ffff, 0x42ffff, 0x43ffff, 0x44ffff, 0x45ffff, 0x46ffff, 0x47ffff, 0x48ffff, 0x49ffff, 0x4affff, 0x4bffff, 0x4cffff, 0x4dffff, 0x4effff, 0x4fffff, 0x50ffff, 0x51ffff, 0x52ffff, 0x53ffff, 0x54ffff, 0x55ffff, 0xffffffff, 0xffff0056, 0xffff0057, 0xffff0058, 0xffff0059, 0xffff005a, 0xffff005b, 0xffff005c, 0xffff005d, 0x5effff, 0x5fffff, 0x60ffff, 0x61ffff, 0x62ffff, 0x63ffff, 0x64ffff, 0x65ffff, 0x66ffff, 0x67ffff, 0x68ffff, 0x69ffff, 0x6affff, 0x6bffff, 0x6cffff, 0x6dffff, 0x6effff, 0x6fffff, 0x70ffff, 0x71ffff, 0x72ffff, 0x73ffff, 0x74ffff, 0xffffffff, 0xffff0075, 0xffff0076, 0x780077, 0xffff0079, 0x7affff, 0x7bffff, 0xffffffff, 0xffff007c, 0xffffffff, 0xffff007d, 0xffffffff, 0xffffffff, 0xffff007e, 0x7fffff, 0xffffffff, 0x80ffff, 0xffff0081, 0xffffffff, 0xffff0082, 0x83ffff, 0x84ffff, 0x85ffff, 0xffffffff, 0xffff0086, 0xffffffff, 0x87ffff, 0xffffffff, 0xffff0088, 0xffffffff, 0xffff0089, 0xffff008a, 0x8bffff, 0xffffffff, 0x8cffff, 0x8dffff, 0xffffffff, 0xffffffff, 0x8f008e, 0x910090, 0x930092, 0x950094, 0xffff0096, 0xffff0097, 0xffff0098, 0xffff0099, 0xffff009a, 0xffff009b, 0xffff009c, 0xffff009d, 0x9f009e, 0xa0ffff, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xa6ffff, 0xa7ffff, 0xa8ffff, 0xa9ffff, 0xab00aa, 0xacffff, 0xffffffff, 0xadffff, 0xaeffff, 0xafffff, 0xb0ffff, 0xb1ffff, 0xb2ffff, 0xb3ffff, 0xb4ffff, 0xb5ffff, 0xb6ffff, 0xb7ffff, 0xb8ffff, 0xb9ffff, 0xbaffff, 0xbbffff, 0xbcffff, 0xbdffff, 0xbeffff, 0xbfffff, 0xc0ffff, 0xffffffff, 0xc1ffff, 0xc2ffff, 0xc3ffff, 0xc4ffff, 0xc5ffff, 0xc6ffff, 0xc7ffff, 0xc8ffff, 0xc9ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00ca, 0xcbffff, 0xffff00cc, 0xffff00cd, 0xffffffff, 0xceffff, 0xcfffff, 0xd0ffff, 0xd1ffff, 0xd2ffff, 0xd400d3, 0xd600d5, 0xffff00d7, 0xd900d8, 0xdaffff, 0xdbffff, 0xffff00dc, 0xffffffff, 0xde00dd, 0xdfffff, 0xe0ffff, 0xffff00e1, 0xe300e2, 0xe500e4, 0xffff00e6, 0xe7ffff, 0xe8ffff, 0xffff00e9, 0xeaffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xebffff, 0xffffffff, 0xffff00ec, 0xee00ed, 0xffffffff, 0xefffff, 0xf100f0, 0xf300f2, 0xffff00f4, 0xffffffff, 0xffffffff, 0xffff00f5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf6ffff, 0xffff00f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf9ffff, 0xfaffff, 0xffffffff, 0xfbffff, 0xffffffff, 0xfcffff, 0xfe00fd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x10000ff, 0x1020101, 0x103ffff, 0x1050104, 0x1070106, 0x1090108, 0x10b010a, 0x10d010c, 0x10f010e, 0x1110110, 0x1130112, 0x1150114, 0x1170116, 0x1190118, 0x11b011a, 0x11d011c, 0x11f011e, 0xffff0120, 0x1220121, 0xffffffff, 0x123ffff, 0x1250124, 0x126ffff, 0x127ffff, 0x128ffff, 0x129ffff, 0x12affff, 0x12bffff, 0x12cffff, 0x12dffff, 0x12effff, 0x12fffff, 0x130ffff, 0x131ffff, 0x1330132, 0x1350134, 0x136ffff, 0xffffffff, 0xffff0137, 0x138ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0x14c014b, 0x14e014d, 0x150014f, 0x1520151, 0x1540153, 0x1560155, 0x1580157, 0x15a0159, 0x15c015b, 0x15e015d, 0x160015f, 0x1620161, 0x1640163, 0x1660165, 0x1680167, 0x169ffff, 0x16affff, 0x16bffff, 0x16cffff, 0x16dffff, 0x16effff, 0x16fffff, 0x170ffff, 0x171ffff, 0x172ffff, 0x173ffff, 0x174ffff, 0x175ffff, 0x176ffff, 0x177ffff, 0x178ffff, 0x179ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0x17fffff, 0x180ffff, 0x181ffff, 0x182ffff, 0x183ffff, 0x184ffff, 0x185ffff, 0x186ffff, 0x187ffff, 0x188ffff, 0x189ffff, 0x18affff, 0x18bffff, 0x18cffff, 0x18dffff, 0x18effff, 0x18fffff, 0x190ffff, 0x191ffff, 0x192ffff, 0x193ffff, 0x194ffff, 0xffffffff, 0xffff0195, 0xffff0196, 0xffff0197, 0xffff0198, 0xffff0199, 0xffff019a, 0x19c019b, 0x19dffff, 0x19effff, 0x19fffff, 0x1a0ffff, 0x1a1ffff, 0x1a2ffff, 0x1a3ffff, 0x1a4ffff, 0x1a5ffff, 0x1a6ffff, 0x1a7ffff, 0x1a8ffff, 0x1a9ffff, 0x1aaffff, 0x1abffff, 0x1acffff, 0x1adffff, 0x1aeffff, 0x1afffff, 0x1b0ffff, 0x1b1ffff, 0x1b2ffff, 0x1b3ffff, 0x1b4ffff, 0x1b5ffff, 0x1b6ffff, 0x1b7ffff, 0x1b8ffff, 0x1b9ffff, 0x1baffff, 0x1bbffff, 0x1bcffff, 0x1bdffff, 0x1beffff, 0x1bfffff, 0x1c0ffff, 0x1c1ffff, 0x1c2ffff, 0x1c3ffff, 0x1c4ffff, 0x1c5ffff, 0x1c6ffff, 0x1c7ffff, 0x1c8ffff, 0x1c9ffff, 0x1caffff, 0x1cbffff, 0x1ccffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1cdffff, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0x1d501d4, 0x1d701d6, 0x1d901d8, 0x1db01da, 0x1dd01dc, 0x1df01de, 0x1e101e0, 0x1e301e2, 0x1e501e4, 0x1e701e6, 0x1e901e8, 0x1eb01ea, 0x1ed01ec, 0x1ef01ee, 0x1f101f0, 0xffff01f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fc01fb, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0x21a0219, 0x21c021b, 0xffff021d, 0x21effff, 0x220021f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2220221, 0x2240223, 0x2260225, 0xffffffff, 0x2280227, 0x22a0229, 0x22c022b, 0x22e022d, 0xffff022f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x230ffff, 0xffffffff, 0x231ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0232, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x233ffff, 0x234ffff, 0x235ffff, 0x236ffff, 0x237ffff, 0x238ffff, 0x239ffff, 0x23affff, 0x23bffff, 0x23cffff, 0x23dffff, 0x23effff, 0x23fffff, 0x240ffff, 0x241ffff, 0x242ffff, 0x243ffff, 0x244ffff, 0x245ffff, 0x246ffff, 0x247ffff, 0x248ffff, 0x249ffff, 0x24affff, 0x24bffff, 0x24cffff, 0x24dffff, 0x24effff, 0x24fffff, 0x250ffff, 0x251ffff, 0x252ffff, 0x253ffff, 0x254ffff, 0x255ffff, 0x256ffff, 0x257ffff, 0x258ffff, 0x259ffff, 0x25affff, 0x25bffff, 0x25cffff, 0x25dffff, 0x25effff, 0x25fffff, 0x260ffff, 0x261ffff, 0x262ffff, 0x263ffff, 0x264ffff, 0x265ffff, 0x266ffff, 0x267ffff, 0x268ffff, 0x269ffff, 0x26affff, 0x26bffff, 0x26cffff, 0x26dffff, 0x26effff, 0x26fffff, 0x270ffff, 0x271ffff, 0x272ffff, 0x273ffff, 0x274ffff, 0x275ffff, 0x276ffff, 0x277ffff, 0x278ffff, 0x279ffff, 0x27affff, 0x27bffff, 0x27cffff, 0x27dffff, 0xffffffff, 0xffffffff, 0x27effff, 0xffffffff, 0xffffffff, 0x27fffff, 0x280ffff, 0x281ffff, 0x282ffff, 0x283ffff, 0x284ffff, 0x285ffff, 0x286ffff, 0x287ffff, 0x288ffff, 0x289ffff, 0x28affff, 0x28bffff, 0x28cffff, 0x28dffff, 0x28effff, 0x28fffff, 0x290ffff, 0x291ffff, 0x292ffff, 0x293ffff, 0x294ffff, 0x295ffff, 0x296ffff, 0x297ffff, 0x298ffff, 0x299ffff, 0x29affff, 0x29bffff, 0x29cffff, 0x29dffff, 0x29effff, 0x29fffff, 0x2a0ffff, 0x2a1ffff, 0x2a2ffff, 0x2a3ffff, 0x2a4ffff, 0x2a5ffff, 0x2a6ffff, 0x2a7ffff, 0x2a8ffff, 0x2a9ffff, 0x2aaffff, 0x2abffff, 0x2acffff, 0x2adffff, 0x2aeffff, 0x2b002af, 0x2b202b1, 0x2b402b3, 0x2b602b5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2b802b7, 0x2ba02b9, 0x2bc02bb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2be02bd, 0x2c002bf, 0x2c202c1, 0x2c402c3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2c602c5, 0x2c802c7, 0x2ca02c9, 0x2cc02cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ce02cd, 0x2d002cf, 0x2d202d1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d3ffff, 0x2d4ffff, 0x2d5ffff, 0x2d6ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d802d7, 0x2da02d9, 0x2dc02db, 0x2de02dd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2e002df, 0x2e202e1, 0x2e402e3, 0x2e602e5, 0x2e802e7, 0x2ea02e9, 0x2ec02eb, 0xffffffff, 0x2ee02ed, 0x2f002ef, 0x2f202f1, 0x2f402f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2f602f5, 0x2f802f7, 0x2fa02f9, 0x2fc02fb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2fe02fd, 0x30002ff, 0x3020301, 0x3040303, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3060305, 0x307ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0308, 0xffffffff, 0x309ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30b030a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30d030c, 0xffffffff, 0x30effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0310, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3120311, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0x31c031b, 0x31e031d, 0x320031f, 0xffffffff, 0xffffffff, 0xffff0321, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3230322, 0x3250324, 0x3270326, 0x3290328, 0x32b032a, 0x32d032c, 0x32f032e, 0x3310330, 0x3330332, 0x3350334, 0x3370336, 0x3390338, 0x33b033a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x33d033c, 0x33f033e, 0x3410340, 0x3430342, 0x3450344, 0x3470346, 0x3490348, 0x34b034a, 0x34d034c, 0x34f034e, 0x3510350, 0x3530352, 0x3550354, 0x3570356, 0x3590358, 0x35b035a, 0x35d035c, 0x35f035e, 0x3610360, 0x3630362, 0x3650364, 0x3670366, 0x3690368, 0x36b036a, 0x36cffff, 0xffffffff, 0x36dffff, 0xffff036e, 0xffff036f, 0xffff0370, 0xffff0371, 0xffffffff, 0xffffffff, 0x372ffff, 0xffffffff, 0xffff0373, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x374ffff, 0x375ffff, 0x376ffff, 0x377ffff, 0x378ffff, 0x379ffff, 0x37affff, 0x37bffff, 0x37cffff, 0x37dffff, 0x37effff, 0x37fffff, 0x380ffff, 0x381ffff, 0x382ffff, 0x383ffff, 0x384ffff, 0x385ffff, 0x386ffff, 0x387ffff, 0x388ffff, 0x389ffff, 0x38affff, 0x38bffff, 0x38cffff, 0x38dffff, 0x38effff, 0x38fffff, 0x390ffff, 0x391ffff, 0x392ffff, 0x393ffff, 0x394ffff, 0x395ffff, 0x396ffff, 0x397ffff, 0x398ffff, 0x399ffff, 0x39affff, 0x39bffff, 0x39cffff, 0x39dffff, 0x39effff, 0x39fffff, 0x3a0ffff, 0x3a1ffff, 0x3a2ffff, 0x3a3ffff, 0x3a4ffff, 0x3a5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03a6, 0xffff03a7, 0xffffffff, 0x3a8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3aa03a9, 0x3ac03ab, 0x3ae03ad, 0x3b003af, 0x3b203b1, 0x3b403b3, 0x3b603b5, 0x3b803b7, 0x3ba03b9, 0x3bc03bb, 0x3be03bd, 0x3c003bf, 0x3c203c1, 0x3c403c3, 0x3c603c5, 0x3c803c7, 0x3ca03c9, 0x3cc03cb, 0x3ce03cd, 0x3cfffff, 0xffffffff, 0xffffffff, 0x3d0ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3d1ffff, 0x3d2ffff, 0x3d3ffff, 0x3d4ffff, 0x3d5ffff, 0x3d6ffff, 0x3d7ffff, 0x3d8ffff, 0x3d9ffff, 0x3daffff, 0x3dbffff, 0x3dcffff, 0x3ddffff, 0x3deffff, 0x3dfffff, 0x3e0ffff, 0x3e1ffff, 0x3e2ffff, 0x3e3ffff, 0x3e4ffff, 0x3e5ffff, 0x3e6ffff, 0x3e7ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3e8ffff, 0x3e9ffff, 0x3eaffff, 0x3ebffff, 0x3ecffff, 0x3edffff, 0x3eeffff, 0x3efffff, 0x3f0ffff, 0x3f1ffff, 0x3f2ffff, 0x3f3ffff, 0x3f4ffff, 0x3f5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3f6ffff, 0x3f7ffff, 0x3f8ffff, 0x3f9ffff, 0x3faffff, 0x3fbffff, 0x3fcffff, 0xffffffff, 0x3fdffff, 0x3feffff, 0x3ffffff, 0x400ffff, 0x401ffff, 0x402ffff, 0x403ffff, 0x404ffff, 0x405ffff, 0x406ffff, 0x407ffff, 0x408ffff, 0x409ffff, 0x40affff, 0x40bffff, 0x40cffff, 0x40dffff, 0x40effff, 0x40fffff, 0x410ffff, 0x411ffff, 0x412ffff, 0x413ffff, 0x414ffff, 0x415ffff, 0x416ffff, 0x417ffff, 0x418ffff, 0x419ffff, 0x41affff, 0x41bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff041c, 0xffff041d, 0x41effff, 0x41fffff, 0x420ffff, 0x421ffff, 0x422ffff, 0xffffffff, 0xffffffff, 0xffff0423, 0xffffffff, 0x424ffff, 0x425ffff, 0xffff0426, 0x427ffff, 0x428ffff, 0x429ffff, 0x42affff, 0x42bffff, 0x42cffff, 0x42dffff, 0x42effff, 0x42fffff, 0x430ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x431ffff, 0x432ffff, 0x433ffff, 0x434ffff, 0x435ffff, 0x436ffff, 0x437ffff, 0x438ffff, 0xffffffff, 0xffffffff, 0xffff0439, 0xffff043a, 0xffffffff, 0xffffffff, 0x43bffff, 0xffffffff, 0xffffffff, 0x43cffff, 0x43dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff043e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4410440, 0x4430442, 0x4450444, 0x4470446, 0x4490448, 0x44b044a, 0x44d044c, 0x44f044e, 0x4510450, 0x4530452, 0x4550454, 0x4570456, 0x4590458, 0x45b045a, 0x45d045c, 0x45f045e, 0x4610460, 0x4630462, 0x4650464, 0x4670466, 0x4690468, 0x46b046a, 0x46d046c, 0x46f046e, 0x4710470, 0x4730472, 0x4750474, 0x4770476, 0x4790478, 0x47b047a, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x48d048c, 0x48f048e, 0x490ffff, 0x4920491, 0x4940493, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0x4a604a5, 0x4a804a7, 0xffff04a9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4ab04aa, 0x4ad04ac, 0x4af04ae, 0x4b104b0, 0x4b304b2, 0x4b504b4, 0x4b704b6, 0x4b904b8, 0x4bb04ba, 0x4bd04bc, 0x4bf04be, 0x4c104c0, 0x4c304c2, 0x4c504c4, 0x4c704c6, 0x4c904c8, 0x4cb04ca, 0x4cd04cc, 0x4cf04ce, 0x4d104d0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4d304d2, 0x4d504d4, 0x4d704d6, 0x4d904d8, 0x4db04da, 0x4dd04dc, 0x4df04de, 0x4e104e0, 0x4e304e2, 0x4e504e4, 0x4e704e6, 0x4e904e8, 0x4eb04ea, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0x4f304f2, 0x4f504f4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4f6ffff, 0x4f804f7, 0x4fa04f9, 0x4fc04fb, 0x4fe04fd, 0x50004ff, 0x501ffff, 0x5030502, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50d050c, 0x50f050e, 0x510ffff, 0x5120511, 0x5140513, 0x5160515, 0x517ffff, 0xffff0518, 0xffffffff, 0x51a0519, 0x51c051b, 0x51e051d, 0x520051f, 0x5220521, 0x5240523, 0x5260525, 0x5280527, 0x52a0529, 0x52c052b, 0x52e052d, 0x530052f, 0x5320531, 0x5340533, 0x5360535, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0x5480547, 0x54a0549, 0xffff054b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x54d054c, 0x54f054e, 0x5510550, 0x5530552, 0x5550554, 0x5570556, 0x5590558, 0x55b055a, 0x55d055c, 0x55f055e, 0x5610560, 0x5630562, 0x5650564, 0x5670566, 0x5690568, 0x56b056a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x56d056c, 0x56f056e, 0x5710570, 0x5730572, 0x5750574, 0x5770576, 0x5790578, 0x57b057a, 0x57d057c, 0x57f057e, 0x5810580, 0x5830582, 0x5850584, 0x5870586, 0x5890588, 0x58b058a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x58d058c, 0x58f058e, 0x5910590, 0x5930592, 0x5950594, 0x5970596, 0x5990598, 0x59b059a, 0x59d059c, 0x59f059e, 0x5a105a0, 0x5a305a2, 0x5a505a4, 0x5a705a6, 0x5a905a8, 0x5ab05aa, 0x5ad05ac, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); -@property -{ -private alias _IUA = immutable(uint[]); -_IUA toUpperTable() nothrow @nogc @safe pure { static _IUA t = [ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x39c, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12c, 0x12e, 0x49, 0x132, 0x134, 0x136, 0x139, 0x13b, 0x13d, 0x13f, 0x141, 0x143, 0x145, 0x147, 0x14a, 0x14c, 0x14e, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15a, 0x15c, 0x15e, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16a, 0x16c, 0x16e, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17b, 0x17d, 0x53, 0x243, 0x182, 0x184, 0x187, 0x18b, 0x191, 0x1f6, 0x198, 0x23d, 0x220, 0x1a0, 0x1a2, 0x1a4, 0x1a7, 0x1ac, 0x1af, 0x1b3, 0x1b5, 0x1b8, 0x1bc, 0x1f7, 0x1c4, 0x1c4, 0x1c7, 0x1c7, 0x1ca, 0x1ca, 0x1cd, 0x1cf, 0x1d1, 0x1d3, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x18e, 0x1de, 0x1e0, 0x1e2, 0x1e4, 0x1e6, 0x1e8, 0x1ea, 0x1ec, 0x1ee, 0x1f1, 0x1f1, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21c, 0x21e, 0x222, 0x224, 0x226, 0x228, 0x22a, 0x22c, 0x22e, 0x230, 0x232, 0x23b, 0x2c7e, 0x2c7f, 0x241, 0x246, 0x248, 0x24a, 0x24c, 0x24e, 0x2c6f, 0x2c6d, 0x2c70, 0x181, 0x186, 0x189, 0x18a, 0x18f, 0x190, 0xa7ab, 0x193, 0xa7ac, 0x194, 0xa78d, 0xa7aa, 0x197, 0x196, 0xa7ae, 0x2c62, 0xa7ad, 0x19c, 0x2c6e, 0x19d, 0x19f, 0x2c64, 0x1a6, 0xa7c5, 0x1a9, 0xa7b1, 0x1ae, 0x244, 0x1b1, 0x1b2, 0x245, 0x1b7, 0xa7b2, 0xa7b0, 0x399, 0x370, 0x372, 0x376, 0x3fd, 0x3fe, 0x3ff, 0x386, 0x388, 0x389, 0x38a, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0x392, 0x398, 0x3a6, 0x3a0, 0x3cf, 0x3d8, 0x3da, 0x3dc, 0x3de, 0x3e0, 0x3e2, 0x3e4, 0x3e6, 0x3e8, 0x3ea, 0x3ec, 0x3ee, 0x39a, 0x3a1, 0x3f9, 0x37f, 0x395, 0x3f7, 0x3fa, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40a, 0x40b, 0x40c, 0x40d, 0x40e, 0x40f, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46a, 0x46c, 0x46e, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47a, 0x47c, 0x47e, 0x480, 0x48a, 0x48c, 0x48e, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49a, 0x49c, 0x49e, 0x4a0, 0x4a2, 0x4a4, 0x4a6, 0x4a8, 0x4aa, 0x4ac, 0x4ae, 0x4b0, 0x4b2, 0x4b4, 0x4b6, 0x4b8, 0x4ba, 0x4bc, 0x4be, 0x4c1, 0x4c3, 0x4c5, 0x4c7, 0x4c9, 0x4cb, 0x4cd, 0x4c0, 0x4d0, 0x4d2, 0x4d4, 0x4d6, 0x4d8, 0x4da, 0x4dc, 0x4de, 0x4e0, 0x4e2, 0x4e4, 0x4e6, 0x4e8, 0x4ea, 0x4ec, 0x4ee, 0x4f0, 0x4f2, 0x4f4, 0x4f6, 0x4f8, 0x4fa, 0x4fc, 0x4fe, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50a, 0x50c, 0x50e, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51a, 0x51c, 0x51e, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52a, 0x52c, 0x52e, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537, 0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f, 0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547, 0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f, 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x1c90, 0x1c91, 0x1c92, 0x1c93, 0x1c94, 0x1c95, 0x1c96, 0x1c97, 0x1c98, 0x1c99, 0x1c9a, 0x1c9b, 0x1c9c, 0x1c9d, 0x1c9e, 0x1c9f, 0x1ca0, 0x1ca1, 0x1ca2, 0x1ca3, 0x1ca4, 0x1ca5, 0x1ca6, 0x1ca7, 0x1ca8, 0x1ca9, 0x1caa, 0x1cab, 0x1cac, 0x1cad, 0x1cae, 0x1caf, 0x1cb0, 0x1cb1, 0x1cb2, 0x1cb3, 0x1cb4, 0x1cb5, 0x1cb6, 0x1cb7, 0x1cb8, 0x1cb9, 0x1cba, 0x1cbd, 0x1cbe, 0x1cbf, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f4, 0x13f5, 0x412, 0x414, 0x41e, 0x421, 0x422, 0x422, 0x42a, 0x462, 0xa64a, 0xa77d, 0x2c63, 0xa7c6, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e60, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f59, 0x1f5b, 0x1f5d, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fb8, 0x1fb9, 0x1fbc, 0x399, 0x1fcc, 0x1fd8, 0x1fd9, 0x1fe8, 0x1fe9, 0x1fec, 0x1ffc, 0x2132, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, 0x2183, 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd, 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd, 0x24ce, 0x24cf, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c60, 0x23a, 0x23e, 0x2c67, 0x2c69, 0x2c6b, 0x2c72, 0x2c75, 0x2c80, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c7, 0x10cd, 0xa640, 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa77e, 0xa780, 0xa782, 0xa784, 0xa786, 0xa78b, 0xa790, 0xa792, 0xa7c4, 0xa796, 0xa798, 0xa79a, 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b4, 0xa7b6, 0xa7b8, 0xa7ba, 0xa7bc, 0xa7be, 0xa7c0, 0xa7c2, 0xa7c7, 0xa7c9, 0xa7d0, 0xa7d6, 0xa7d8, 0xa7f5, 0xa7b3, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 0x13ed, 0x13ee, 0x13ef, 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, 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f, 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x104b0, 0x104b1, 0x104b2, 0x104b3, 0x104b4, 0x104b5, 0x104b6, 0x104b7, 0x104b8, 0x104b9, 0x104ba, 0x104bb, 0x104bc, 0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 0x104c2, 0x104c3, 0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 0x104d2, 0x104d3, 0x10570, 0x10571, 0x10572, 0x10573, 0x10574, 0x10575, 0x10576, 0x10577, 0x10578, 0x10579, 0x1057a, 0x1057c, 0x1057d, 0x1057e, 0x1057f, 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 0x10585, 0x10586, 0x10587, 0x10588, 0x10589, 0x1058a, 0x1058c, 0x1058d, 0x1058e, 0x1058f, 0x10590, 0x10591, 0x10592, 0x10594, 0x10595, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x118a0, 0x118a1, 0x118a2, 0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9, 0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0, 0x118b1, 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7, 0x118b8, 0x118b9, 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be, 0x118bf, 0x16e40, 0x16e41, 0x16e42, 0x16e43, 0x16e44, 0x16e45, 0x16e46, 0x16e47, 0x16e48, 0x16e49, 0x16e4a, 0x16e4b, 0x16e4c, 0x16e4d, 0x16e4e, 0x16e4f, 0x16e50, 0x16e51, 0x16e52, 0x16e53, 0x16e54, 0x16e55, 0x16e56, 0x16e57, 0x16e58, 0x16e59, 0x16e5a, 0x16e5b, 0x16e5c, 0x16e5d, 0x16e5e, 0x16e5f, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905, 0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c, 0x1e90d, 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913, 0x1e914, 0x1e915, 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a, 0x1e91b, 0x1e91c, 0x1e91d, 0x1e91e, 0x1e91f, 0x1e920, 0x1e921, 0x2000053, 0x53, 0x130, 0x2000046, 0x46, 0x2000046, 0x49, 0x2000046, 0x4c, 0x3000046, 0x46, 0x49, 0x3000046, 0x46, 0x4c, 0x2000053, 0x54, 0x2000053, 0x54, 0x2000535, 0x552, 0x2000544, 0x546, 0x2000544, 0x535, 0x2000544, 0x53b, 0x200054e, 0x546, 0x2000544, 0x53d, 0x20002bc, 0x4e, 0x3000399, 0x308, 0x301, 0x30003a5, 0x308, 0x301, 0x200004a, 0x30c, 0x2000048, 0x331, 0x2000054, 0x308, 0x2000057, 0x30a, 0x2000059, 0x30a, 0x2000041, 0x2be, 0x20003a5, 0x313, 0x30003a5, 0x313, 0x300, 0x30003a5, 0x313, 0x301, 0x30003a5, 0x313, 0x342, 0x2000391, 0x342, 0x2000397, 0x342, 0x3000399, 0x308, 0x300, 0x3000399, 0x308, 0x301, 0x2000399, 0x342, 0x3000399, 0x308, 0x342, 0x30003a5, 0x308, 0x300, 0x30003a5, 0x308, 0x301, 0x20003a1, 0x313, 0x20003a5, 0x342, 0x30003a5, 0x308, 0x342, 0x20003a9, 0x342, 0x2001f08, 0x399, 0x2001f09, 0x399, 0x2001f0a, 0x399, 0x2001f0b, 0x399, 0x2001f0c, 0x399, 0x2001f0d, 0x399, 0x2001f0e, 0x399, 0x2001f0f, 0x399, 0x2001f08, 0x399, 0x2001f09, 0x399, 0x2001f0a, 0x399, 0x2001f0b, 0x399, 0x2001f0c, 0x399, 0x2001f0d, 0x399, 0x2001f0e, 0x399, 0x2001f0f, 0x399, 0x2001f28, 0x399, 0x2001f29, 0x399, 0x2001f2a, 0x399, 0x2001f2b, 0x399, 0x2001f2c, 0x399, 0x2001f2d, 0x399, 0x2001f2e, 0x399, 0x2001f2f, 0x399, 0x2001f28, 0x399, 0x2001f29, 0x399, 0x2001f2a, 0x399, 0x2001f2b, 0x399, 0x2001f2c, 0x399, 0x2001f2d, 0x399, 0x2001f2e, 0x399, 0x2001f2f, 0x399, 0x2001f68, 0x399, 0x2001f69, 0x399, 0x2001f6a, 0x399, 0x2001f6b, 0x399, 0x2001f6c, 0x399, 0x2001f6d, 0x399, 0x2001f6e, 0x399, 0x2001f6f, 0x399, 0x2001f68, 0x399, 0x2001f69, 0x399, 0x2001f6a, 0x399, 0x2001f6b, 0x399, 0x2001f6c, 0x399, 0x2001f6d, 0x399, 0x2001f6e, 0x399, 0x2001f6f, 0x399, 0x2000391, 0x399, 0x2000391, 0x399, 0x2000397, 0x399, 0x2000397, 0x399, 0x20003a9, 0x399, 0x20003a9, 0x399, 0x2001fba, 0x399, 0x2000386, 0x399, 0x2001fca, 0x399, 0x2000389, 0x399, 0x2001ffa, 0x399, 0x200038f, 0x399, 0x3000391, 0x342, 0x399, 0x3000397, 0x342, 0x399, 0x30003a9, 0x342, 0x399]; return t; } -_IUA toLowerTable() nothrow @nogc @safe pure { static _IUA t = [ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10b, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11d, 0x11f, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12b, 0x12d, 0x12f, 0x69, 0x133, 0x135, 0x137, 0x13a, 0x13c, 0x13e, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14b, 0x14d, 0x14f, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15b, 0x15d, 0x15f, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16b, 0x16d, 0x16f, 0x171, 0x173, 0x175, 0x177, 0xff, 0x17a, 0x17c, 0x17e, 0x253, 0x183, 0x185, 0x254, 0x188, 0x256, 0x257, 0x18c, 0x1dd, 0x259, 0x25b, 0x192, 0x260, 0x263, 0x269, 0x268, 0x199, 0x26f, 0x272, 0x275, 0x1a1, 0x1a3, 0x1a5, 0x280, 0x1a8, 0x283, 0x1ad, 0x288, 0x1b0, 0x28a, 0x28b, 0x1b4, 0x1b6, 0x292, 0x1b9, 0x1bd, 0x1c6, 0x1c6, 0x1c9, 0x1c9, 0x1cc, 0x1cc, 0x1ce, 0x1d0, 0x1d2, 0x1d4, 0x1d6, 0x1d8, 0x1da, 0x1dc, 0x1df, 0x1e1, 0x1e3, 0x1e5, 0x1e7, 0x1e9, 0x1eb, 0x1ed, 0x1ef, 0x1f3, 0x1f3, 0x1f5, 0x195, 0x1bf, 0x1f9, 0x1fb, 0x1fd, 0x1ff, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20b, 0x20d, 0x20f, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21b, 0x21d, 0x21f, 0x19e, 0x223, 0x225, 0x227, 0x229, 0x22b, 0x22d, 0x22f, 0x231, 0x233, 0x2c65, 0x23c, 0x19a, 0x2c66, 0x242, 0x180, 0x289, 0x28c, 0x247, 0x249, 0x24b, 0x24d, 0x24f, 0x371, 0x373, 0x377, 0x3f3, 0x3ac, 0x3ad, 0x3ae, 0x3af, 0x3cc, 0x3cd, 0x3ce, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7, 0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf, 0x3c0, 0x3c1, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3d7, 0x3d9, 0x3db, 0x3dd, 0x3df, 0x3e1, 0x3e3, 0x3e5, 0x3e7, 0x3e9, 0x3eb, 0x3ed, 0x3ef, 0x3b8, 0x3f8, 0x3f2, 0x3fb, 0x37b, 0x37c, 0x37d, 0x450, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45a, 0x45b, 0x45c, 0x45d, 0x45e, 0x45f, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46b, 0x46d, 0x46f, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47b, 0x47d, 0x47f, 0x481, 0x48b, 0x48d, 0x48f, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49b, 0x49d, 0x49f, 0x4a1, 0x4a3, 0x4a5, 0x4a7, 0x4a9, 0x4ab, 0x4ad, 0x4af, 0x4b1, 0x4b3, 0x4b5, 0x4b7, 0x4b9, 0x4bb, 0x4bd, 0x4bf, 0x4cf, 0x4c2, 0x4c4, 0x4c6, 0x4c8, 0x4ca, 0x4cc, 0x4ce, 0x4d1, 0x4d3, 0x4d5, 0x4d7, 0x4d9, 0x4db, 0x4dd, 0x4df, 0x4e1, 0x4e3, 0x4e5, 0x4e7, 0x4e9, 0x4eb, 0x4ed, 0x4ef, 0x4f1, 0x4f3, 0x4f5, 0x4f7, 0x4f9, 0x4fb, 0x4fd, 0x4ff, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50b, 0x50d, 0x50f, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51b, 0x51d, 0x51f, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52b, 0x52d, 0x52f, 0x561, 0x562, 0x563, 0x564, 0x565, 0x566, 0x567, 0x568, 0x569, 0x56a, 0x56b, 0x56c, 0x56d, 0x56e, 0x56f, 0x570, 0x571, 0x572, 0x573, 0x574, 0x575, 0x576, 0x577, 0x578, 0x579, 0x57a, 0x57b, 0x57c, 0x57d, 0x57e, 0x57f, 0x580, 0x581, 0x582, 0x583, 0x584, 0x585, 0x586, 0x2d00, 0x2d01, 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07, 0x2d08, 0x2d09, 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f, 0x2d10, 0x2d11, 0x2d12, 0x2d13, 0x2d14, 0x2d15, 0x2d16, 0x2d17, 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 0x2d1d, 0x2d1e, 0x2d1f, 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x2d27, 0x2d2d, 0xab70, 0xab71, 0xab72, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95, 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xabbe, 0xabbf, 0x13f8, 0x13f9, 0x13fa, 0x13fb, 0x13fc, 0x13fd, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x10f7, 0x10f8, 0x10f9, 0x10fa, 0x10fd, 0x10fe, 0x10ff, 0x1e01, 0x1e03, 0x1e05, 0x1e07, 0x1e09, 0x1e0b, 0x1e0d, 0x1e0f, 0x1e11, 0x1e13, 0x1e15, 0x1e17, 0x1e19, 0x1e1b, 0x1e1d, 0x1e1f, 0x1e21, 0x1e23, 0x1e25, 0x1e27, 0x1e29, 0x1e2b, 0x1e2d, 0x1e2f, 0x1e31, 0x1e33, 0x1e35, 0x1e37, 0x1e39, 0x1e3b, 0x1e3d, 0x1e3f, 0x1e41, 0x1e43, 0x1e45, 0x1e47, 0x1e49, 0x1e4b, 0x1e4d, 0x1e4f, 0x1e51, 0x1e53, 0x1e55, 0x1e57, 0x1e59, 0x1e5b, 0x1e5d, 0x1e5f, 0x1e61, 0x1e63, 0x1e65, 0x1e67, 0x1e69, 0x1e6b, 0x1e6d, 0x1e6f, 0x1e71, 0x1e73, 0x1e75, 0x1e77, 0x1e79, 0x1e7b, 0x1e7d, 0x1e7f, 0x1e81, 0x1e83, 0x1e85, 0x1e87, 0x1e89, 0x1e8b, 0x1e8d, 0x1e8f, 0x1e91, 0x1e93, 0x1e95, 0xdf, 0x1ea1, 0x1ea3, 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab, 0x1ead, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, 0x1eb9, 0x1ebb, 0x1ebd, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ec9, 0x1ecb, 0x1ecd, 0x1ecf, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9, 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, 0x1ee5, 0x1ee7, 0x1ee9, 0x1eeb, 0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7, 0x1ef9, 0x1efb, 0x1efd, 0x1eff, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37, 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x1f51, 0x1f53, 0x1f55, 0x1f57, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0x3c9, 0x6b, 0xe5, 0x214e, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x217f, 0x2184, 0x24d0, 0x24d1, 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40, 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49, 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, 0x2c50, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c57, 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c61, 0x26b, 0x1d7d, 0x27d, 0x2c68, 0x2c6a, 0x2c6c, 0x251, 0x271, 0x250, 0x252, 0x2c73, 0x2c76, 0x23f, 0x240, 0x2c81, 0x2c83, 0x2c85, 0x2c87, 0x2c89, 0x2c8b, 0x2c8d, 0x2c8f, 0x2c91, 0x2c93, 0x2c95, 0x2c97, 0x2c99, 0x2c9b, 0x2c9d, 0x2c9f, 0x2ca1, 0x2ca3, 0x2ca5, 0x2ca7, 0x2ca9, 0x2cab, 0x2cad, 0x2caf, 0x2cb1, 0x2cb3, 0x2cb5, 0x2cb7, 0x2cb9, 0x2cbb, 0x2cbd, 0x2cbf, 0x2cc1, 0x2cc3, 0x2cc5, 0x2cc7, 0x2cc9, 0x2ccb, 0x2ccd, 0x2ccf, 0x2cd1, 0x2cd3, 0x2cd5, 0x2cd7, 0x2cd9, 0x2cdb, 0x2cdd, 0x2cdf, 0x2ce1, 0x2ce3, 0x2cec, 0x2cee, 0x2cf3, 0xa641, 0xa643, 0xa645, 0xa647, 0xa649, 0xa64b, 0xa64d, 0xa64f, 0xa651, 0xa653, 0xa655, 0xa657, 0xa659, 0xa65b, 0xa65d, 0xa65f, 0xa661, 0xa663, 0xa665, 0xa667, 0xa669, 0xa66b, 0xa66d, 0xa681, 0xa683, 0xa685, 0xa687, 0xa689, 0xa68b, 0xa68d, 0xa68f, 0xa691, 0xa693, 0xa695, 0xa697, 0xa699, 0xa69b, 0xa723, 0xa725, 0xa727, 0xa729, 0xa72b, 0xa72d, 0xa72f, 0xa733, 0xa735, 0xa737, 0xa739, 0xa73b, 0xa73d, 0xa73f, 0xa741, 0xa743, 0xa745, 0xa747, 0xa749, 0xa74b, 0xa74d, 0xa74f, 0xa751, 0xa753, 0xa755, 0xa757, 0xa759, 0xa75b, 0xa75d, 0xa75f, 0xa761, 0xa763, 0xa765, 0xa767, 0xa769, 0xa76b, 0xa76d, 0xa76f, 0xa77a, 0xa77c, 0x1d79, 0xa77f, 0xa781, 0xa783, 0xa785, 0xa787, 0xa78c, 0x265, 0xa791, 0xa793, 0xa797, 0xa799, 0xa79b, 0xa79d, 0xa79f, 0xa7a1, 0xa7a3, 0xa7a5, 0xa7a7, 0xa7a9, 0x266, 0x25c, 0x261, 0x26c, 0x26a, 0x29e, 0x287, 0x29d, 0xab53, 0xa7b5, 0xa7b7, 0xa7b9, 0xa7bb, 0xa7bd, 0xa7bf, 0xa7c1, 0xa7c3, 0xa794, 0x282, 0x1d8e, 0xa7c8, 0xa7ca, 0xa7d1, 0xa7d7, 0xa7d9, 0xa7f6, 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, 0x10428, 0x10429, 0x1042a, 0x1042b, 0x1042c, 0x1042d, 0x1042e, 0x1042f, 0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 0x10438, 0x10439, 0x1043a, 0x1043b, 0x1043c, 0x1043d, 0x1043e, 0x1043f, 0x10440, 0x10441, 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447, 0x10448, 0x10449, 0x1044a, 0x1044b, 0x1044c, 0x1044d, 0x1044e, 0x1044f, 0x104d8, 0x104d9, 0x104da, 0x104db, 0x104dc, 0x104dd, 0x104de, 0x104df, 0x104e0, 0x104e1, 0x104e2, 0x104e3, 0x104e4, 0x104e5, 0x104e6, 0x104e7, 0x104e8, 0x104e9, 0x104ea, 0x104eb, 0x104ec, 0x104ed, 0x104ee, 0x104ef, 0x104f0, 0x104f1, 0x104f2, 0x104f3, 0x104f4, 0x104f5, 0x104f6, 0x104f7, 0x104f8, 0x104f9, 0x104fa, 0x104fb, 0x10597, 0x10598, 0x10599, 0x1059a, 0x1059b, 0x1059c, 0x1059d, 0x1059e, 0x1059f, 0x105a0, 0x105a1, 0x105a3, 0x105a4, 0x105a5, 0x105a6, 0x105a7, 0x105a8, 0x105a9, 0x105aa, 0x105ab, 0x105ac, 0x105ad, 0x105ae, 0x105af, 0x105b0, 0x105b1, 0x105b3, 0x105b4, 0x105b5, 0x105b6, 0x105b7, 0x105b8, 0x105b9, 0x105bb, 0x105bc, 0x10cc0, 0x10cc1, 0x10cc2, 0x10cc3, 0x10cc4, 0x10cc5, 0x10cc6, 0x10cc7, 0x10cc8, 0x10cc9, 0x10cca, 0x10ccb, 0x10ccc, 0x10ccd, 0x10cce, 0x10ccf, 0x10cd0, 0x10cd1, 0x10cd2, 0x10cd3, 0x10cd4, 0x10cd5, 0x10cd6, 0x10cd7, 0x10cd8, 0x10cd9, 0x10cda, 0x10cdb, 0x10cdc, 0x10cdd, 0x10cde, 0x10cdf, 0x10ce0, 0x10ce1, 0x10ce2, 0x10ce3, 0x10ce4, 0x10ce5, 0x10ce6, 0x10ce7, 0x10ce8, 0x10ce9, 0x10cea, 0x10ceb, 0x10cec, 0x10ced, 0x10cee, 0x10cef, 0x10cf0, 0x10cf1, 0x10cf2, 0x118c0, 0x118c1, 0x118c2, 0x118c3, 0x118c4, 0x118c5, 0x118c6, 0x118c7, 0x118c8, 0x118c9, 0x118ca, 0x118cb, 0x118cc, 0x118cd, 0x118ce, 0x118cf, 0x118d0, 0x118d1, 0x118d2, 0x118d3, 0x118d4, 0x118d5, 0x118d6, 0x118d7, 0x118d8, 0x118d9, 0x118da, 0x118db, 0x118dc, 0x118dd, 0x118de, 0x118df, 0x16e60, 0x16e61, 0x16e62, 0x16e63, 0x16e64, 0x16e65, 0x16e66, 0x16e67, 0x16e68, 0x16e69, 0x16e6a, 0x16e6b, 0x16e6c, 0x16e6d, 0x16e6e, 0x16e6f, 0x16e70, 0x16e71, 0x16e72, 0x16e73, 0x16e74, 0x16e75, 0x16e76, 0x16e77, 0x16e78, 0x16e79, 0x16e7a, 0x16e7b, 0x16e7c, 0x16e7d, 0x16e7e, 0x16e7f, 0x1e922, 0x1e923, 0x1e924, 0x1e925, 0x1e926, 0x1e927, 0x1e928, 0x1e929, 0x1e92a, 0x1e92b, 0x1e92c, 0x1e92d, 0x1e92e, 0x1e92f, 0x1e930, 0x1e931, 0x1e932, 0x1e933, 0x1e934, 0x1e935, 0x1e936, 0x1e937, 0x1e938, 0x1e939, 0x1e93a, 0x1e93b, 0x1e93c, 0x1e93d, 0x1e93e, 0x1e93f, 0x1e940, 0x1e941, 0x1e942, 0x1e943, 0xdf, 0x2000069, 0x307, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0xfb05, 0xfb06, 0x587, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17, 0x149, 0x390, 0x3b0, 0x1f0, 0x1e96, 0x1e97, 0x1e98, 0x1e99, 0x1e9a, 0x1f50, 0x1f52, 0x1f54, 0x1f56, 0x1fb6, 0x1fc6, 0x1fd2, 0x1fd3, 0x1fd6, 0x1fd7, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe6, 0x1fe7, 0x1ff6, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fb3, 0x1fb3, 0x1fc3, 0x1fc3, 0x1ff3, 0x1ff3, 0x1fb2, 0x1fb4, 0x1fc2, 0x1fc4, 0x1ff2, 0x1ff4, 0x1fb7, 0x1fc7, 0x1ff7]; return t; } -_IUA toTitleTable() nothrow @nogc @safe pure { static _IUA t = [ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x39c, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12c, 0x12e, 0x49, 0x132, 0x134, 0x136, 0x139, 0x13b, 0x13d, 0x13f, 0x141, 0x143, 0x145, 0x147, 0x14a, 0x14c, 0x14e, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15a, 0x15c, 0x15e, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16a, 0x16c, 0x16e, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17b, 0x17d, 0x53, 0x243, 0x182, 0x184, 0x187, 0x18b, 0x191, 0x1f6, 0x198, 0x23d, 0x220, 0x1a0, 0x1a2, 0x1a4, 0x1a7, 0x1ac, 0x1af, 0x1b3, 0x1b5, 0x1b8, 0x1bc, 0x1f7, 0x1c5, 0x1c5, 0x1c5, 0x1c8, 0x1c8, 0x1c8, 0x1cb, 0x1cb, 0x1cb, 0x1cd, 0x1cf, 0x1d1, 0x1d3, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x18e, 0x1de, 0x1e0, 0x1e2, 0x1e4, 0x1e6, 0x1e8, 0x1ea, 0x1ec, 0x1ee, 0x1f2, 0x1f2, 0x1f2, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21c, 0x21e, 0x222, 0x224, 0x226, 0x228, 0x22a, 0x22c, 0x22e, 0x230, 0x232, 0x23b, 0x2c7e, 0x2c7f, 0x241, 0x246, 0x248, 0x24a, 0x24c, 0x24e, 0x2c6f, 0x2c6d, 0x2c70, 0x181, 0x186, 0x189, 0x18a, 0x18f, 0x190, 0xa7ab, 0x193, 0xa7ac, 0x194, 0xa78d, 0xa7aa, 0x197, 0x196, 0xa7ae, 0x2c62, 0xa7ad, 0x19c, 0x2c6e, 0x19d, 0x19f, 0x2c64, 0x1a6, 0xa7c5, 0x1a9, 0xa7b1, 0x1ae, 0x244, 0x1b1, 0x1b2, 0x245, 0x1b7, 0xa7b2, 0xa7b0, 0x399, 0x370, 0x372, 0x376, 0x3fd, 0x3fe, 0x3ff, 0x386, 0x388, 0x389, 0x38a, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0x392, 0x398, 0x3a6, 0x3a0, 0x3cf, 0x3d8, 0x3da, 0x3dc, 0x3de, 0x3e0, 0x3e2, 0x3e4, 0x3e6, 0x3e8, 0x3ea, 0x3ec, 0x3ee, 0x39a, 0x3a1, 0x3f9, 0x37f, 0x395, 0x3f7, 0x3fa, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40a, 0x40b, 0x40c, 0x40d, 0x40e, 0x40f, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46a, 0x46c, 0x46e, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47a, 0x47c, 0x47e, 0x480, 0x48a, 0x48c, 0x48e, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49a, 0x49c, 0x49e, 0x4a0, 0x4a2, 0x4a4, 0x4a6, 0x4a8, 0x4aa, 0x4ac, 0x4ae, 0x4b0, 0x4b2, 0x4b4, 0x4b6, 0x4b8, 0x4ba, 0x4bc, 0x4be, 0x4c1, 0x4c3, 0x4c5, 0x4c7, 0x4c9, 0x4cb, 0x4cd, 0x4c0, 0x4d0, 0x4d2, 0x4d4, 0x4d6, 0x4d8, 0x4da, 0x4dc, 0x4de, 0x4e0, 0x4e2, 0x4e4, 0x4e6, 0x4e8, 0x4ea, 0x4ec, 0x4ee, 0x4f0, 0x4f2, 0x4f4, 0x4f6, 0x4f8, 0x4fa, 0x4fc, 0x4fe, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50a, 0x50c, 0x50e, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51a, 0x51c, 0x51e, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52a, 0x52c, 0x52e, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537, 0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f, 0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547, 0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f, 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x10f7, 0x10f8, 0x10f9, 0x10fa, 0x10fd, 0x10fe, 0x10ff, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f4, 0x13f5, 0x412, 0x414, 0x41e, 0x421, 0x422, 0x422, 0x42a, 0x462, 0xa64a, 0xa77d, 0x2c63, 0xa7c6, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e60, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f59, 0x1f5b, 0x1f5d, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fb8, 0x1fb9, 0x1fbc, 0x399, 0x1fcc, 0x1fd8, 0x1fd9, 0x1fe8, 0x1fe9, 0x1fec, 0x1ffc, 0x2132, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, 0x2183, 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd, 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd, 0x24ce, 0x24cf, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c60, 0x23a, 0x23e, 0x2c67, 0x2c69, 0x2c6b, 0x2c72, 0x2c75, 0x2c80, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c7, 0x10cd, 0xa640, 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa77e, 0xa780, 0xa782, 0xa784, 0xa786, 0xa78b, 0xa790, 0xa792, 0xa7c4, 0xa796, 0xa798, 0xa79a, 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b4, 0xa7b6, 0xa7b8, 0xa7ba, 0xa7bc, 0xa7be, 0xa7c0, 0xa7c2, 0xa7c7, 0xa7c9, 0xa7d0, 0xa7d6, 0xa7d8, 0xa7f5, 0xa7b3, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 0x13ed, 0x13ee, 0x13ef, 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, 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f, 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x104b0, 0x104b1, 0x104b2, 0x104b3, 0x104b4, 0x104b5, 0x104b6, 0x104b7, 0x104b8, 0x104b9, 0x104ba, 0x104bb, 0x104bc, 0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 0x104c2, 0x104c3, 0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 0x104d2, 0x104d3, 0x10570, 0x10571, 0x10572, 0x10573, 0x10574, 0x10575, 0x10576, 0x10577, 0x10578, 0x10579, 0x1057a, 0x1057c, 0x1057d, 0x1057e, 0x1057f, 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 0x10585, 0x10586, 0x10587, 0x10588, 0x10589, 0x1058a, 0x1058c, 0x1058d, 0x1058e, 0x1058f, 0x10590, 0x10591, 0x10592, 0x10594, 0x10595, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x118a0, 0x118a1, 0x118a2, 0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9, 0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0, 0x118b1, 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7, 0x118b8, 0x118b9, 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be, 0x118bf, 0x16e40, 0x16e41, 0x16e42, 0x16e43, 0x16e44, 0x16e45, 0x16e46, 0x16e47, 0x16e48, 0x16e49, 0x16e4a, 0x16e4b, 0x16e4c, 0x16e4d, 0x16e4e, 0x16e4f, 0x16e50, 0x16e51, 0x16e52, 0x16e53, 0x16e54, 0x16e55, 0x16e56, 0x16e57, 0x16e58, 0x16e59, 0x16e5a, 0x16e5b, 0x16e5c, 0x16e5d, 0x16e5e, 0x16e5f, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905, 0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c, 0x1e90d, 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913, 0x1e914, 0x1e915, 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a, 0x1e91b, 0x1e91c, 0x1e91d, 0x1e91e, 0x1e91f, 0x1e920, 0x1e921, 0x2000053, 0x73, 0x130, 0x2000046, 0x66, 0x2000046, 0x69, 0x2000046, 0x6c, 0x3000046, 0x66, 0x69, 0x3000046, 0x66, 0x6c, 0x2000053, 0x74, 0x2000053, 0x74, 0x2000535, 0x582, 0x2000544, 0x576, 0x2000544, 0x565, 0x2000544, 0x56b, 0x200054e, 0x576, 0x2000544, 0x56d, 0x20002bc, 0x4e, 0x3000399, 0x308, 0x301, 0x30003a5, 0x308, 0x301, 0x200004a, 0x30c, 0x2000048, 0x331, 0x2000054, 0x308, 0x2000057, 0x30a, 0x2000059, 0x30a, 0x2000041, 0x2be, 0x20003a5, 0x313, 0x30003a5, 0x313, 0x300, 0x30003a5, 0x313, 0x301, 0x30003a5, 0x313, 0x342, 0x2000391, 0x342, 0x2000397, 0x342, 0x3000399, 0x308, 0x300, 0x3000399, 0x308, 0x301, 0x2000399, 0x342, 0x3000399, 0x308, 0x342, 0x30003a5, 0x308, 0x300, 0x30003a5, 0x308, 0x301, 0x20003a1, 0x313, 0x20003a5, 0x342, 0x30003a5, 0x308, 0x342, 0x20003a9, 0x342, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fbc, 0x1fbc, 0x1fcc, 0x1fcc, 0x1ffc, 0x1ffc, 0x2001fba, 0x345, 0x2000386, 0x345, 0x2001fca, 0x345, 0x2000389, 0x345, 0x2001ffa, 0x345, 0x200038f, 0x345, 0x3000391, 0x342, 0x345, 0x3000397, 0x342, 0x345, 0x30003a9, 0x342, 0x345]; return t; } +dstring toUpperTable() nothrow @nogc pure @safe { +static immutable dchar[1671] t = +"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ +"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ +"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ +"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ +"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ +"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ +"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ +"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C4\u01C4\u01C7\u01C7\u01CA\u01CA\u01CD\u01CF\u01D1\u01D3"d~ +"\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F1\u01F4\u01F8\u01FA"d~ +"\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222"d~ +"\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A\u024C\u024E\u2C6F\u2C6D"d~ +"\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196\uA7AE\u2C62\uA7AD\u019C"d~ +"\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2\uA7B0\u0399\u0370\u0372"d~ +"\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B"d~ +"\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u038C\u038E\u038F"d~ +"\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u039A\u03A1"d~ +"\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D"d~ +"\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0400"d~ +"\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F\u0460\u0462\u0464\u0466"d~ +"\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494"d~ +"\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA"d~ +"\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0"d~ +"\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506"d~ +"\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C"d~ +"\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E\u053F\u0540\u0541\u0542"d~ +"\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555"d~ +"\u0556\u1C90\u1C91\u1C92\u1C93\u1C94\u1C95\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D\u1C9E\u1C9F\u1CA0\u1CA1"d~ +"\u1CA2\u1CA3\u1CA4\u1CA5\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD\u1CAE\u1CAF\u1CB0\u1CB1\u1CB2\u1CB3\u1CB4"d~ +"\u1CB5\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBD\u1CBE\u1CBF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5\u0412\u0414\u041E\u0421"d~ +"\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14"d~ +"\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A"d~ +"\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60"d~ +"\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86"d~ +"\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4"d~ +"\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA"d~ +"\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08"d~ +"\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D"d~ +"\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D\u1F59\u1F5B\u1F5D"d~ +"\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB\u1FDA\u1FDB\u1FF8\u1FF9"d~ +"\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E"d~ +"\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8\u1FD9\u1FE8\u1FE9\u1FEC"d~ +"\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2183"d~ +"\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8"d~ +"\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B"d~ +"\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E"d~ +"\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F\u2C60\u023A"d~ +"\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98"d~ +"\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE"d~ +"\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB"d~ +"\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD\u10AE\u10AF\u10B0"d~ +"\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3"d~ +"\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C"d~ +"\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694"d~ +"\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742"d~ +"\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768"d~ +"\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796\uA798\uA79A\uA79C\uA79E"d~ +"\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9\uA7D0\uA7D6\uA7D8\uA7F5"d~ +"\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1"d~ +"\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4"d~ +"\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7"d~ +"\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA"d~ +"\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"d~ +"\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401\U00010402\U00010403"d~ +"\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C\U0001040D\U0001040E"d~ +"\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417\U00010418\U00010419"d~ +"\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422\U00010423\U00010424"d~ +"\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5\U000104B6\U000104B7"d~ +"\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0\U000104C1\U000104C2"d~ +"\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB\U000104CC\U000104CD"d~ +"\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572\U00010573\U00010574"d~ +"\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E\U0001057F\U00010580"d~ +"\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589\U0001058A\U0001058C"d~ +"\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80\U00010C81\U00010C82"d~ +"\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B\U00010C8C\U00010C8D"d~ +"\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96\U00010C97\U00010C98"d~ +"\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1\U00010CA2\U00010CA3"d~ +"\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC\U00010CAD\U00010CAE"d~ +"\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4\U000118A5\U000118A6"d~ +"\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF\U000118B0\U000118B1"d~ +"\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA\U000118BB\U000118BC"d~ +"\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45\U00016E46\U00016E47"d~ +"\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50\U00016E51\U00016E52"d~ +"\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B\U00016E5C\U00016E5D"d~ +"\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906\U0001E907\U0001E908"d~ +"\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911\U0001E912\U0001E913"d~ +"\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C\U0001E91D\U0001E91E"d~ +"\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0053\u0130"d~cast(dchar) 0x02000046~"\u0046"d~cast(dchar) 0x02000046~""d~ +"\u0049"d~cast(dchar) 0x02000046~"\u004C"d~cast(dchar) 0x03000046~"\u0046\u0049"d~cast(dchar) 0x03000046~"\u0046\u004C"d~ +""d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000535~"\u0552"d~cast(dchar) 0x02000544~""d~ +"\u0546"d~cast(dchar) 0x02000544~"\u0535"d~cast(dchar) 0x02000544~"\u053B"d~cast(dchar) 0x0200054E~"\u0546"d~cast(dchar) 0x02000544~""d~ +"\u053D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ +""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ +"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ +"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ +"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ +""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ +"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ +""d~cast(dchar) 0x020003A9~"\u0342"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ +"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ +"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ +"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ +"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ +"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ +"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ +"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ +"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ +"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ +"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ +"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ +"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000397~""d~ +"\u0399"d~cast(dchar) 0x02000397~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x02001FBA~""d~ +"\u0399"d~cast(dchar) 0x02000386~"\u0399"d~cast(dchar) 0x02001FCA~"\u0399"d~cast(dchar) 0x02000389~"\u0399"d~cast(dchar) 0x02001FFA~""d~ +"\u0399"d~cast(dchar) 0x0200038F~"\u0399"d~cast(dchar) 0x03000391~"\u0342\u0399"d~cast(dchar) 0x03000397~"\u0342\u0399"d~ +""d~cast(dchar) 0x030003A9~"\u0342\u0399"d; +return t[]; +} +dstring toLowerTable() nothrow @nogc pure @safe { +static immutable dchar[1537] t = +"\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073"d~ +"\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB"d~ +"\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u0101"d~ +"\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127"d~ +"\u0129\u012B\u012D\u012F\u0069\u0133\u0135\u0137\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u014B\u014D\u014F"d~ +"\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175"d~ +"\u0177\u00FF\u017A\u017C\u017E\u0253\u0183\u0185\u0254\u0188\u0256\u0257\u018C\u01DD\u0259\u025B\u0192\u0260\u0263"d~ +"\u0269\u0268\u0199\u026F\u0272\u0275\u01A1\u01A3\u01A5\u0280\u01A8\u0283\u01AD\u0288\u01B0\u028A\u028B\u01B4\u01B6"d~ +"\u0292\u01B9\u01BD\u01C6\u01C6\u01C9\u01C9\u01CC\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DF\u01E1"d~ +"\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F3\u01F3\u01F5\u0195\u01BF\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205"d~ +"\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u019E\u0223\u0225\u0227\u0229\u022B"d~ +"\u022D\u022F\u0231\u0233\u2C65\u023C\u019A\u2C66\u0242\u0180\u0289\u028C\u0247\u0249\u024B\u024D\u024F\u0371\u0373"d~ +"\u0377\u03F3\u03AC\u03AD\u03AE\u03AF\u03CC\u03CD\u03CE\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA"d~ +"\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03D7\u03D9\u03DB"d~ +"\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF\u03B8\u03F8\u03F2\u03FB\u037B\u037C\u037D\u0450\u0451"d~ +"\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u045D\u045E\u045F\u0430\u0431\u0432\u0433\u0434"d~ +"\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447"d~ +"\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475"d~ +"\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3"d~ +"\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04CF\u04C2\u04C4\u04C6\u04C8"d~ +"\u04CA\u04CC\u04CE\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF"d~ +"\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515"d~ +"\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561\u0562\u0563\u0564\u0565\u0566"d~ +"\u0567\u0568\u0569\u056A\u056B\u056C\u056D\u056E\u056F\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579"d~ +"\u057A\u057B\u057C\u057D\u057E\u057F\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u2D00\u2D01\u2D02\u2D03\u2D04\u2D05"d~ +"\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18"d~ +"\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21\u2D22\u2D23\u2D24\u2D25\u2D27\u2D2D\uAB70\uAB71\uAB72\uAB73"d~ +"\uAB74\uAB75\uAB76\uAB77\uAB78\uAB79\uAB7A\uAB7B\uAB7C\uAB7D\uAB7E\uAB7F\uAB80\uAB81\uAB82\uAB83\uAB84\uAB85\uAB86"d~ +"\uAB87\uAB88\uAB89\uAB8A\uAB8B\uAB8C\uAB8D\uAB8E\uAB8F\uAB90\uAB91\uAB92\uAB93\uAB94\uAB95\uAB96\uAB97\uAB98\uAB99"d~ +"\uAB9A\uAB9B\uAB9C\uAB9D\uAB9E\uAB9F\uABA0\uABA1\uABA2\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8\uABA9\uABAA\uABAB\uABAC"d~ +"\uABAD\uABAE\uABAF\uABB0\uABB1\uABB2\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9\uABBA\uABBB\uABBC\uABBD\uABBE\uABBF"d~ +"\u13F8\u13F9\u13FA\u13FB\u13FC\u13FD\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC"d~ +"\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF"d~ +"\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09"d~ +"\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F"d~ +"\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55"d~ +"\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B"d~ +"\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u00DF\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9"d~ +"\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF"d~ +"\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5"d~ +"\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01\u1F02\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15"d~ +"\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42"d~ +"\u1F43\u1F44\u1F45\u1F51\u1F53\u1F55\u1F57\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F80\u1F81\u1F82\u1F83"d~ +"\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6"d~ +"\u1FA7\u1FB0\u1FB1\u1F70\u1F71\u1FB3\u1F72\u1F73\u1F74\u1F75\u1FC3\u1FD0\u1FD1\u1F76\u1F77\u1FE0\u1FE1\u1F7A\u1F7B"d~ +"\u1FE5\u1F78\u1F79\u1F7C\u1F7D\u1FF3\u03C9\u006B\u00E5\u214E\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178"d~ +"\u2179\u217A\u217B\u217C\u217D\u217E\u217F\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA"d~ +"\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31\u2C32\u2C33"d~ +"\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43\u2C44\u2C45\u2C46"d~ +"\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59"d~ +"\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C61\u026B\u1D7D\u027D\u2C68\u2C6A\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76"d~ +"\u023F\u0240\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1"d~ +"\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7"d~ +"\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC\u2CEE\u2CF3\uA641\uA643"d~ +"\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669"d~ +"\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727"d~ +"\uA729\uA72B\uA72D\uA72F\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F"d~ +"\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79"d~ +"\uA77F\uA781\uA783\uA785\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9"d~ +"\u0266\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C1\uA7C3\uA794\u0282"d~ +"\u1D8E\uA7C8\uA7CA\uA7D1\uA7D7\uA7D9\uA7F6\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C"d~ +"\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\U00010428\U00010429\U0001042A"d~ +"\U0001042B\U0001042C\U0001042D\U0001042E\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434\U00010435"d~ +"\U00010436\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C\U0001043D\U0001043E\U0001043F\U00010440"d~ +"\U00010441\U00010442\U00010443\U00010444\U00010445\U00010446\U00010447\U00010448\U00010449\U0001044A\U0001044B"d~ +"\U0001044C\U0001044D\U0001044E\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC\U000104DD\U000104DE"d~ +"\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4\U000104E5\U000104E6\U000104E7\U000104E8\U000104E9"d~ +"\U000104EA\U000104EB\U000104EC\U000104ED\U000104EE\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4"d~ +"\U000104F5\U000104F6\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010597\U00010598\U00010599\U0001059A"d~ +"\U0001059B\U0001059C\U0001059D\U0001059E\U0001059F\U000105A0\U000105A1\U000105A3\U000105A4\U000105A5\U000105A6"d~ +"\U000105A7\U000105A8\U000105A9\U000105AA\U000105AB\U000105AC\U000105AD\U000105AE\U000105AF\U000105B0\U000105B1"d~ +"\U000105B3\U000105B4\U000105B5\U000105B6\U000105B7\U000105B8\U000105B9\U000105BB\U000105BC\U00010CC0\U00010CC1"d~ +"\U00010CC2\U00010CC3\U00010CC4\U00010CC5\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA\U00010CCB\U00010CCC"d~ +"\U00010CCD\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2\U00010CD3\U00010CD4\U00010CD5\U00010CD6\U00010CD7"d~ +"\U00010CD8\U00010CD9\U00010CDA\U00010CDB\U00010CDC\U00010CDD\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2"d~ +"\U00010CE3\U00010CE4\U00010CE5\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA\U00010CEB\U00010CEC\U00010CED"d~ +"\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4\U000118C5"d~ +"\U000118C6\U000118C7\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC\U000118CD\U000118CE\U000118CF\U000118D0"d~ +"\U000118D1\U000118D2\U000118D3\U000118D4\U000118D5\U000118D6\U000118D7\U000118D8\U000118D9\U000118DA\U000118DB"d~ +"\U000118DC\U000118DD\U000118DE\U000118DF\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64\U00016E65\U00016E66"d~ +"\U00016E67\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C\U00016E6D\U00016E6E\U00016E6F\U00016E70\U00016E71"d~ +"\U00016E72\U00016E73\U00016E74\U00016E75\U00016E76\U00016E77\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C"d~ +"\U00016E7D\U00016E7E\U00016E7F\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926\U0001E927\U0001E928\U0001E929"d~ +"\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E\U0001E92F\U0001E930\U0001E931\U0001E932\U0001E933\U0001E934"d~ +"\U0001E935\U0001E936\U0001E937\U0001E938\U0001E939\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E\U0001E93F"d~ +"\U0001E940\U0001E941\U0001E942\U0001E943\u00DF"d~cast(dchar) 0x02000069~"\u0307\uFB00\uFB01\uFB02\uFB03\uFB04\uFB05"d~ +"\uFB06\u0587\uFB13\uFB14\uFB15\uFB16\uFB17\u0149\u0390\u03B0\u01F0\u1E96\u1E97\u1E98\u1E99\u1E9A\u1F50\u1F52\u1F54"d~ +"\u1F56\u1FB6\u1FC6\u1FD2\u1FD3\u1FD6\u1FD7\u1FE2\u1FE3\u1FE4\u1FE6\u1FE7\u1FF6\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85"d~ +"\u1F86\u1F87\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1F90"d~ +"\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7\u1FA0\u1FA1\u1FA2\u1FA3"d~ +"\u1FA4\u1FA5\u1FA6\u1FA7\u1FB3\u1FB3\u1FC3\u1FC3\u1FF3\u1FF3\u1FB2\u1FB4\u1FC2\u1FC4\u1FF2\u1FF4\u1FB7\u1FC7\u1FF7"d; +return t[]; +} +dstring toTitleTable() nothrow @nogc pure @safe { +static immutable dchar[1621] t = +"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ +"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ +"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ +"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ +"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ +"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ +"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ +"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C5\u01C5\u01C5\u01C8\u01C8\u01C8\u01CB\u01CB\u01CB\u01CD"d~ +"\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F2\u01F2"d~ +"\u01F2\u01F4\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218"d~ +"\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A"d~ +"\u024C\u024E\u2C6F\u2C6D\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196"d~ +"\uA7AE\u2C62\uA7AD\u019C\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2"d~ +"\uA7B0\u0399\u0370\u0372\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397"d~ +"\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA"d~ +"\u03AB\u038C\u038E\u038F\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA"d~ +"\u03EC\u03EE\u039A\u03A1\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419"d~ +"\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"d~ +"\u042D\u042E\u042F\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F"d~ +"\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C"d~ +"\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2"d~ +"\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8"d~ +"\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE"d~ +"\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524"d~ +"\u0526\u0528\u052A\u052C\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E"d~ +"\u053F\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551"d~ +"\u0552\u0553\u0554\u0555\u0556\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD"d~ +"\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0"d~ +"\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5"d~ +"\u0412\u0414\u041E\u0421\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C"d~ +"\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32"d~ +"\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58"d~ +"\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E"d~ +"\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC"d~ +"\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2"d~ +"\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8"d~ +"\u1EFA\u1EFC\u1EFE\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29"d~ +"\u1F2A\u1F2B\u1F2C\u1F2D\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C"d~ +"\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB"d~ +"\u1FDA\u1FDB\u1FF8\u1FF9\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A"d~ +"\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8"d~ +"\u1FD9\u1FE8\u1FE9\u1FEC\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C"d~ +"\u216D\u216E\u216F\u2183\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4"d~ +"\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07"d~ +"\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A"d~ +"\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D"d~ +"\u2C2E\u2C2F\u2C60\u023A\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90"d~ +"\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6"d~ +"\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC"d~ +"\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC"d~ +"\u10AD\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF"d~ +"\u10C0\u10C1\u10C2\u10C3\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654"d~ +"\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C"d~ +"\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A"d~ +"\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760"d~ +"\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796"d~ +"\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9"d~ +"\uA7D0\uA7D6\uA7D8\uA7F5\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD"d~ +"\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0"d~ +"\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3"d~ +"\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6"d~ +"\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A"d~ +"\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401"d~ +"\U00010402\U00010403\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C"d~ +"\U0001040D\U0001040E\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417"d~ +"\U00010418\U00010419\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422"d~ +"\U00010423\U00010424\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5"d~ +"\U000104B6\U000104B7\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0"d~ +"\U000104C1\U000104C2\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB"d~ +"\U000104CC\U000104CD\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572"d~ +"\U00010573\U00010574\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E"d~ +"\U0001057F\U00010580\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589"d~ +"\U0001058A\U0001058C\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80"d~ +"\U00010C81\U00010C82\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B"d~ +"\U00010C8C\U00010C8D\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96"d~ +"\U00010C97\U00010C98\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1"d~ +"\U00010CA2\U00010CA3\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC"d~ +"\U00010CAD\U00010CAE\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4"d~ +"\U000118A5\U000118A6\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF"d~ +"\U000118B0\U000118B1\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA"d~ +"\U000118BB\U000118BC\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45"d~ +"\U00016E46\U00016E47\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50"d~ +"\U00016E51\U00016E52\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B"d~ +"\U00016E5C\U00016E5D\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906"d~ +"\U0001E907\U0001E908\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911"d~ +"\U0001E912\U0001E913\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C"d~ +"\U0001E91D\U0001E91E\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0073\u0130"d~cast(dchar) 0x02000046~""d~ +"\u0066"d~cast(dchar) 0x02000046~"\u0069"d~cast(dchar) 0x02000046~"\u006C"d~cast(dchar) 0x03000046~"\u0066\u0069"d~cast(dchar) 0x03000046~""d~ +"\u0066\u006C"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000535~"\u0582"d~cast(dchar) 0x02000544~""d~ +"\u0576"d~cast(dchar) 0x02000544~"\u0565"d~cast(dchar) 0x02000544~"\u056B"d~cast(dchar) 0x0200054E~"\u0576"d~cast(dchar) 0x02000544~""d~ +"\u056D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ +""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ +"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ +"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ +"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ +""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ +"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ +""d~cast(dchar) 0x020003A9~"\u0342\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F88\u1F89\u1F8A\u1F8B\u1F8C"d~ +"\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F"d~ +"\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FBC\u1FBC\u1FCC"d~ +"\u1FCC\u1FFC\u1FFC"d~cast(dchar) 0x02001FBA~"\u0345"d~cast(dchar) 0x02000386~"\u0345"d~cast(dchar) 0x02001FCA~"\u0345"d~ +""d~cast(dchar) 0x02000389~"\u0345"d~cast(dchar) 0x02001FFA~"\u0345"d~cast(dchar) 0x0200038F~"\u0345"d~cast(dchar) 0x03000391~""d~ +"\u0342\u0345"d~cast(dchar) 0x03000397~"\u0342\u0345"d~cast(dchar) 0x030003A9~"\u0342\u0345"d; +return t[]; } } @@ -2495,12 +2808,325 @@ enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xe40], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x2000000010000, 0x6000500040003, 0x80007, 0xb000a00090000, 0xf000e000d000c, 0x110010, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13001200000000, 0x0, 0x0, 0x15001400000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1600000000, 0x0, 0x1a001900180017, 0x1e001d001c001b, 0x0, 0x210020001f, 0x0, 0x0, 0x23002200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27002600250024, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2900280000, 0x2d002c002b002a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x3100300000002f, 0x3300320000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3400000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3500000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x360000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1d001c001b001a, 0x210020001f001e, 0x25002400230022, 0x29002800270026, 0x2d002c002b002a, 0xffff0030002f002e, 0x34003300320031, 0xffff003700360035, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0039ffff0038, 0xffff003bffff003a, 0xffff003dffff003c, 0xffff003fffff003e, 0xffff0041ffff0040, 0xffff0043ffff0042, 0xffff0045ffff0044, 0xffff0047ffff0046, 0xffff0049ffff0048, 0xffff004bffff004a, 0xffff004dffff004c, 0xffff004fffff004e, 0xffff0051ffff0050, 0xffff0053ffff0052, 0x55ffff0054ffff, 0x57ffff0056ffff, 0x59ffff0058ffff, 0x5bffff005affff, 0xffff005cffffffff, 0xffff005effff005d, 0xffff0060ffff005f, 0xffff0062ffff0061, 0xffff0064ffff0063, 0xffff0066ffff0065, 0xffff0068ffff0067, 0xffff006affff0069, 0xffff006cffff006b, 0xffff006effff006d, 0xffff0070ffff006f, 0xffff0072ffff0071, 0x75ffff00740073, 0xffffffff0076ffff, 0xffff00780077ffff, 0x7b007affff0079, 0x7e007d007cffff, 0x80007fffffffff, 0x83ffff00820081, 0x860085ffff0084, 0xffffffffffff0087, 0x8affff00890088, 0xffff008cffff008b, 0x8f008effff008d, 0xffffffff0090ffff, 0x930092ffff0091, 0x9600950094ffff, 0x98ffff0097ffff, 0xffffffffffff0099, 0xffffffffffff009a, 0xffffffffffffffff, 0x9dffff009c009b, 0xa0009fffff009e, 0xa2ffff00a1ffff, 0xa4ffff00a3ffff, 0xa6ffff00a5ffff, 0xa8ffff00a7ffff, 0xffff00a9ffffffff, 0xffff00abffff00aa, 0xffff00adffff00ac, 0xffff00afffff00ae, 0xffff00b1ffff00b0, 0xffff00b300b2ffff, 0xb600b5ffff00b4, 0xffff00b8ffff00b7, 0xffff00baffff00b9, 0xffff00bcffff00bb, 0xffff00beffff00bd, 0xffff00c0ffff00bf, 0xffff00c2ffff00c1, 0xffff00c4ffff00c3, 0xffff00c6ffff00c5, 0xffff00c8ffff00c7, 0xffff00caffff00c9, 0xffff00ccffff00cb, 0xffff00ceffff00cd, 0xffff00d0ffff00cf, 0xffff00d2ffff00d1, 0xffff00d4ffff00d3, 0xffffffffffffffff, 0xd600d5ffffffff, 0xffff00d800d7ffff, 0xdaffff00d9ffff, 0xffff00dd00dc00db, 0xffff00dfffff00de, 0xffff00e1ffff00e0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00e3ffff00e2, 0xffff00e4ffffffff, 0xffffffffffffffff, 0xe5ffffffffffff, 0xffffffffffffffff, 0xffff00e6ffffffff, 0xffff00e900e800e7, 0xec00ebffff00ea, 0xef00ee00edffff, 0xf300f200f100f0, 0xf700f600f500f4, 0xfb00fa00f900f8, 0xfeffff00fd00fc, 0x1020101010000ff, 0x106010501040103, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x107ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0109ffff0108, 0xffff010bffff010a, 0xffff010dffff010c, 0xffff010fffff010e, 0xffff0111ffff0110, 0xffff0113ffff0112, 0xffffffffffffffff, 0x115ffffffff0114, 0xffff01170116ffff, 0x11a01190118ffff, 0x11e011d011c011b, 0x12201210120011f, 0x126012501240123, 0x12a012901280127, 0x12e012d012c012b, 0x13201310130012f, 0x136013501340133, 0x13a013901380137, 0x13e013d013c013b, 0x14201410140013f, 0x146014501440143, 0x14a014901480147, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff014cffff014b, 0xffff014effff014d, 0xffff0150ffff014f, 0xffff0152ffff0151, 0xffff0154ffff0153, 0xffff0156ffff0155, 0xffff0158ffff0157, 0xffff015affff0159, 0xffffffffffff015b, 0xffffffffffffffff, 0xffff015cffffffff, 0xffff015effff015d, 0xffff0160ffff015f, 0xffff0162ffff0161, 0xffff0164ffff0163, 0xffff0166ffff0165, 0xffff0168ffff0167, 0xffff016affff0169, 0xffff016cffff016b, 0xffff016effff016d, 0xffff0170ffff016f, 0xffff0172ffff0171, 0xffff0174ffff0173, 0xffff0176ffff0175, 0x179ffff01780177, 0x17bffff017affff, 0x17dffff017cffff, 0xffffffff017effff, 0xffff0180ffff017f, 0xffff0182ffff0181, 0xffff0184ffff0183, 0xffff0186ffff0185, 0xffff0188ffff0187, 0xffff018affff0189, 0xffff018cffff018b, 0xffff018effff018d, 0xffff0190ffff018f, 0xffff0192ffff0191, 0xffff0194ffff0193, 0xffff0196ffff0195, 0xffff0198ffff0197, 0xffff019affff0199, 0xffff019cffff019b, 0xffff019effff019d, 0xffff01a0ffff019f, 0xffff01a2ffff01a1, 0xffff01a4ffff01a3, 0xffff01a6ffff01a5, 0xffff01a8ffff01a7, 0xffff01aaffff01a9, 0xffff01acffff01ab, 0xffff01aeffff01ad, 0x1b101b001afffff, 0x1b501b401b301b2, 0x1b901b801b701b6, 0x1bd01bc01bb01ba, 0x1c101c001bf01be, 0x1c501c401c301c2, 0x1c901c801c701c6, 0x1cd01cc01cb01ca, 0x1d101d001cf01ce, 0xffff01d401d301d2, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1d801d701d601d5, 0x1dc01db01da01d9, 0x1e001df01de01dd, 0x1e401e301e201e1, 0x1e801e701e601e5, 0x1ec01eb01ea01e9, 0x1f001ef01ee01ed, 0x1f401f301f201f1, 0x1f801f701f601f5, 0x1fbffff01fa01f9, 0xffffffffffffffff, 0xffffffff01fcffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x20001ff01fe01fd, 0x204020302020201, 0x208020702060205, 0x20c020b020a0209, 0x210020f020e020d, 0x214021302120211, 0x218021702160215, 0x21c021b021a0219, 0x220021f021e021d, 0x224022302220221, 0x228022702260225, 0x22c022b022a0229, 0x230022f022e022d, 0x234023302320231, 0x238023702360235, 0x23c023b023a0239, 0x240023f023e023d, 0x244024302420241, 0x248024702460245, 0x24c024b024a0249, 0x250024f024e024d, 0xffffffff02520251, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x256025502540253, 0x25a025902580257, 0x25e025d025c025b, 0x26202610260025f, 0x266026502640263, 0x26a026902680267, 0x26e026d026c026b, 0x27202710270026f, 0x276027502740273, 0x27a027902780277, 0xffff027d027c027b, 0x280027f027effff, 0xffff0282ffff0281, 0xffff0284ffff0283, 0xffff0286ffff0285, 0xffff0288ffff0287, 0xffff028affff0289, 0xffff028cffff028b, 0xffff028effff028d, 0xffff0290ffff028f, 0xffff0292ffff0291, 0xffff0294ffff0293, 0xffff0296ffff0295, 0xffff0298ffff0297, 0xffff029affff0299, 0xffff029cffff029b, 0xffff029effff029d, 0xffff02a0ffff029f, 0xffff02a2ffff02a1, 0xffff02a4ffff02a3, 0xffff02a6ffff02a5, 0xffff02a8ffff02a7, 0xffff02aaffff02a9, 0xffff02acffff02ab, 0xffff02aeffff02ad, 0xffff02b0ffff02af, 0xffff02b2ffff02b1, 0xffff02b4ffff02b3, 0xffff02b6ffff02b5, 0xffff02b8ffff02b7, 0xffff02baffff02b9, 0xffff02bcffff02bb, 0xffff02beffff02bd, 0xffff02c0ffff02bf, 0xffff02c2ffff02c1, 0xffff02c4ffff02c3, 0xffff02c6ffff02c5, 0xffff02c8ffff02c7, 0xffff02caffff02c9, 0xffffffffffff02cb, 0xffffffffffffffff, 0xffff02ccffffffff, 0xffff02ceffff02cd, 0xffff02d0ffff02cf, 0xffff02d2ffff02d1, 0xffff02d4ffff02d3, 0xffff02d6ffff02d5, 0xffff02d8ffff02d7, 0xffff02daffff02d9, 0xffff02dcffff02db, 0xffff02deffff02dd, 0xffff02e0ffff02df, 0xffff02e2ffff02e1, 0xffff02e4ffff02e3, 0xffff02e6ffff02e5, 0xffff02e8ffff02e7, 0xffff02eaffff02e9, 0xffff02ecffff02eb, 0xffff02eeffff02ed, 0xffff02f0ffff02ef, 0xffff02f2ffff02f1, 0xffff02f4ffff02f3, 0xffff02f6ffff02f5, 0xffff02f8ffff02f7, 0xffff02faffff02f9, 0xffff02fcffff02fb, 0xffffffffffffffff, 0xffffffffffffffff, 0x30002ff02fe02fd, 0x304030303020301, 0xffffffffffffffff, 0xffffffffffffffff, 0x308030703060305, 0xffffffff030a0309, 0xffffffffffffffff, 0xffffffffffffffff, 0x30e030d030c030b, 0x31203110310030f, 0xffffffffffffffff, 0xffffffffffffffff, 0x316031503140313, 0x31a031903180317, 0xffffffffffffffff, 0xffffffffffffffff, 0x31e031d031c031b, 0xffffffff0320031f, 0xffffffffffffffff, 0xffffffffffffffff, 0x322ffff0321ffff, 0x324ffff0323ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x328032703260325, 0x32c032b032a0329, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x330032f032e032d, 0x334033303320331, 0xffffffffffffffff, 0xffffffffffffffff, 0x338033703360335, 0x33c033b033a0339, 0xffffffffffffffff, 0xffffffffffffffff, 0x340033f033e033d, 0x344034303420341, 0xffffffffffffffff, 0xffffffffffffffff, 0x348034703460345, 0xffffffffffff0349, 0xffffffffffffffff, 0xffffffffffffffff, 0x34d034c034b034a, 0xffffffffffff034e, 0xffffffffffffffff, 0xffffffffffffffff, 0x35203510350034f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x356035503540353, 0xffffffffffff0357, 0xffffffffffffffff, 0xffffffffffffffff, 0x35b035a03590358, 0xffffffffffff035c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff035dffffffff, 0x35f035effffffff, 0xffffffffffffffff, 0xffff0360ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x364036303620361, 0x368036703660365, 0x36c036b036a0369, 0x370036f036e036d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x371ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3730372ffffffff, 0x377037603750374, 0x37b037a03790378, 0x37f037e037d037c, 0x383038203810380, 0x387038603850384, 0x38b038a03890388, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x38f038e038d038c, 0x393039203910390, 0x397039603950394, 0x39b039a03990398, 0x39f039e039d039c, 0x3a303a203a103a0, 0x3a703a603a503a4, 0x3ab03aa03a903a8, 0x3af03ae03ad03ac, 0x3b303b203b103b0, 0x3b703b603b503b4, 0x3bb03ba03b903b8, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3be03bdffff03bc, 0x3c0ffffffff03bf, 0x3c2ffff03c1ffff, 0x3c503c403c3ffff, 0xffff03c7ffff03c6, 0xffffffff03c8ffff, 0xffffffffffffffff, 0x3ca03c9ffffffff, 0xffff03ccffff03cb, 0xffff03ceffff03cd, 0xffff03d0ffff03cf, 0xffff03d2ffff03d1, 0xffff03d4ffff03d3, 0xffff03d6ffff03d5, 0xffff03d8ffff03d7, 0xffff03daffff03d9, 0xffff03dcffff03db, 0xffff03deffff03dd, 0xffff03e0ffff03df, 0xffff03e2ffff03e1, 0xffff03e4ffff03e3, 0xffff03e6ffff03e5, 0xffff03e8ffff03e7, 0xffff03eaffff03e9, 0xffff03ecffff03eb, 0xffff03eeffff03ed, 0xffff03f0ffff03ef, 0xffff03f2ffff03f1, 0xffff03f4ffff03f3, 0xffff03f6ffff03f5, 0xffff03f8ffff03f7, 0xffff03faffff03f9, 0xffff03fcffff03fb, 0xffffffffffffffff, 0x3fdffffffffffff, 0xffffffff03feffff, 0xffff03ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0401ffff0400, 0xffff0403ffff0402, 0xffff0405ffff0404, 0xffff0407ffff0406, 0xffff0409ffff0408, 0xffff040bffff040a, 0xffff040dffff040c, 0xffff040fffff040e, 0xffff0411ffff0410, 0xffff0413ffff0412, 0xffff0415ffff0414, 0xffffffffffff0416, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0418ffff0417, 0xffff041affff0419, 0xffff041cffff041b, 0xffff041effff041d, 0xffff0420ffff041f, 0xffff0422ffff0421, 0xffff0424ffff0423, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0425ffffffff, 0xffff0427ffff0426, 0xffff0429ffff0428, 0xffff042bffff042a, 0xffff042cffffffff, 0xffff042effff042d, 0xffff0430ffff042f, 0xffff0432ffff0431, 0xffff0434ffff0433, 0xffff0436ffff0435, 0xffff0438ffff0437, 0xffff043affff0439, 0xffff043cffff043b, 0xffff043effff043d, 0xffff0440ffff043f, 0xffff0442ffff0441, 0xffff0444ffff0443, 0xffff0446ffff0445, 0xffff0448ffff0447, 0xffff044affff0449, 0xffffffffffffffff, 0xffffffffffffffff, 0x44cffff044bffff, 0xffff044e044dffff, 0xffff0450ffff044f, 0xffff0452ffff0451, 0x453ffffffffffff, 0xffffffff0454ffff, 0xffff0456ffff0455, 0xffff0457ffffffff, 0xffff0459ffff0458, 0xffff045bffff045a, 0xffff045dffff045c, 0xffff045fffff045e, 0x4620461ffff0460, 0xffff046504640463, 0x469046804670466, 0xffff046bffff046a, 0xffff046dffff046c, 0xffff046fffff046e, 0xffff0471ffff0470, 0x475047404730472, 0xffffffff0476ffff, 0xffffffffffffffff, 0xffffffffffff0477, 0xffff0478ffffffff, 0xffffffffffff0479, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff047affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x47d047c047bffff, 0x4810480047f047e, 0x485048404830482, 0x489048804870486, 0x48d048c048b048a, 0x4910490048f048e, 0xffff049404930492, 0xffffffffffffffff, 0x498049704960495, 0x49c049b049a0499, 0x4a0049f049e049d, 0x4a404a304a204a1, 0x4a804a704a604a5, 0x4ac04ab04aa04a9, 0x4b004af04ae04ad, 0x4b404b304b204b1, 0x4b804b704b604b5, 0x4bc04bb04ba04b9, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4c004bf04be04bd, 0x4c404c304c204c1, 0x4c804c704c604c5, 0x4cc04cb04ca04c9, 0x4d004cf04ce04cd, 0x4d404d304d204d1, 0x4d804d704d604d5, 0x4dc04db04da04d9, 0x4e004df04de04dd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4e404e304e204e1, 0x4e804e704e604e5, 0xffff04eb04ea04e9, 0x4ef04ee04ed04ec, 0x4f304f204f104f0, 0x4f704f604f504f4, 0xffff04fa04f904f8, 0x4fe04fd04fc04fb, 0xffff0501050004ff, 0xffffffff05030502, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x507050605050504, 0x50b050a05090508, 0x50f050e050d050c, 0x513051205110510, 0x517051605150514, 0x51b051a05190518, 0x51f051e051d051c, 0x523052205210520, 0x527052605250524, 0x52b052a05290528, 0x52f052e052d052c, 0x533053205310530, 0xffff053605350534, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x53a053905380537, 0x53e053d053c053b, 0x54205410540053f, 0x546054505440543, 0x54a054905480547, 0x54e054d054c054b, 0x55205510550054f, 0x556055505540553, 0x55a055905580557, 0x55e055d055c055b, 0x56205610560055f, 0x566056505640563, 0x56a056905680567, 0x56e056d056c056b, 0x57205710570056f, 0x576057505740573, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x57a057905780577, 0x57e057d057c057b, 0x58205810580057f, 0x586058505840583, 0x58a058905880587, 0x58e058d058c058b, 0x59205910590058f, 0x596059505940593, 0xffffffff05980597, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); //10368 bytes enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xf40], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15000000000000, 0x0, 0x0, 0x16000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1700000000, 0x1900180000, 0x1d001c001b001a, 0x210020001f001e, 0x0, 0x2300220000, 0x0, 0x0, 0x24000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28002700260025, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b002a0000, 0x2f002e002d002c, 0x0, 0x0, 0x0, 0x3100300000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x320000, 0x0, 0x0, 0x0, 0x0, 0x35000000340033, 0x3600000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff001affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1e001d001c001b, 0x2200210020001f, 0x26002500240023, 0x2a002900280027, 0x2e002d002c002b, 0xffff00310030002f, 0x35003400330032, 0x39003800370036, 0x3bffff003affff, 0x3dffff003cffff, 0x3fffff003effff, 0x41ffff0040ffff, 0x43ffff0042ffff, 0x45ffff0044ffff, 0x47ffff0046ffff, 0x49ffff0048ffff, 0x4bffff004affff, 0x4dffff004cffff, 0x4fffff004effff, 0x51ffff0050ffff, 0x53ffff0052ffff, 0x55ffff0054ffff, 0xffff0056ffffffff, 0xffff0058ffff0057, 0xffff005affff0059, 0xffff005cffff005b, 0x5effffffff005d, 0x60ffff005fffff, 0x62ffff0061ffff, 0x64ffff0063ffff, 0x66ffff0065ffff, 0x68ffff0067ffff, 0x6affff0069ffff, 0x6cffff006bffff, 0x6effff006dffff, 0x70ffff006fffff, 0x72ffff0071ffff, 0x74ffff0073ffff, 0xffff0075ffffffff, 0x780077ffff0076, 0x7affffffff0079, 0xffffffff007bffff, 0xffffffffffff007c, 0xffffffffffff007d, 0xffff007effffffff, 0xffffffff007fffff, 0xffff00810080ffff, 0xffff0082ffffffff, 0x84ffff0083ffff, 0xffffffff0085ffff, 0xffffffffffff0086, 0xffffffff0087ffff, 0xffffffffffff0088, 0xffff008affff0089, 0xffffffff008bffff, 0x8dffff008cffff, 0xffffffffffffffff, 0x910090008f008e, 0x95009400930092, 0xffff0097ffff0096, 0xffff0099ffff0098, 0xffff009bffff009a, 0xffff009dffff009c, 0xa0ffff009f009e, 0xa2ffff00a1ffff, 0xa4ffff00a3ffff, 0xa6ffff00a5ffff, 0xa8ffff00a7ffff, 0xab00aa00a9ffff, 0xffffffff00acffff, 0xaeffff00adffff, 0xb0ffff00afffff, 0xb2ffff00b1ffff, 0xb4ffff00b3ffff, 0xb6ffff00b5ffff, 0xb8ffff00b7ffff, 0xbaffff00b9ffff, 0xbcffff00bbffff, 0xbeffff00bdffff, 0xc0ffff00bfffff, 0xc1ffffffffffff, 0xc3ffff00c2ffff, 0xc5ffff00c4ffff, 0xc7ffff00c6ffff, 0xc9ffff00c8ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xcbffffffff00ca, 0xffff00cdffff00cc, 0xceffffffffffff, 0xd0ffff00cfffff, 0xd2ffff00d1ffff, 0xd600d500d400d3, 0xd900d8ffff00d7, 0xdbffff00daffff, 0xffffffffffff00dc, 0xdfffff00de00dd, 0xffff00e100e0ffff, 0xe500e400e300e2, 0xe7ffffffff00e6, 0xffff00e900e8ffff, 0xffffffff00eaffff, 0xffffffffffffffff, 0xffffffff00ebffff, 0xee00edffff00ec, 0xefffffffffffff, 0xf300f200f100f0, 0xffffffffffff00f4, 0xffff00f5ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00f700f6ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff00f8ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfaffff00f9ffff, 0xfbffffffffffff, 0xfcffffffffffff, 0xffffffff00fe00fd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1020101010000ff, 0x10501040103ffff, 0x109010801070106, 0x10d010c010b010a, 0x1110110010f010e, 0x115011401130112, 0x119011801170116, 0x11d011c011b011a, 0xffff0120011f011e, 0xffffffff01220121, 0x12501240123ffff, 0x127ffff0126ffff, 0x129ffff0128ffff, 0x12bffff012affff, 0x12dffff012cffff, 0x12fffff012effff, 0x131ffff0130ffff, 0x135013401330132, 0xffffffff0136ffff, 0x138ffffffff0137, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x13c013b013a0139, 0x140013f013e013d, 0x144014301420141, 0x148014701460145, 0x14c014b014a0149, 0x150014f014e014d, 0x154015301520151, 0x158015701560155, 0x15c015b015a0159, 0x160015f015e015d, 0x164016301620161, 0x168016701660165, 0x16affff0169ffff, 0x16cffff016bffff, 0x16effff016dffff, 0x170ffff016fffff, 0x172ffff0171ffff, 0x174ffff0173ffff, 0x176ffff0175ffff, 0x178ffff0177ffff, 0xffffffff0179ffff, 0xffffffffffffffff, 0x17affffffffffff, 0x17cffff017bffff, 0x17effff017dffff, 0x180ffff017fffff, 0x182ffff0181ffff, 0x184ffff0183ffff, 0x186ffff0185ffff, 0x188ffff0187ffff, 0x18affff0189ffff, 0x18cffff018bffff, 0x18effff018dffff, 0x190ffff018fffff, 0x192ffff0191ffff, 0x194ffff0193ffff, 0xffff0195ffffffff, 0xffff0197ffff0196, 0xffff0199ffff0198, 0x19c019bffff019a, 0x19effff019dffff, 0x1a0ffff019fffff, 0x1a2ffff01a1ffff, 0x1a4ffff01a3ffff, 0x1a6ffff01a5ffff, 0x1a8ffff01a7ffff, 0x1aaffff01a9ffff, 0x1acffff01abffff, 0x1aeffff01adffff, 0x1b0ffff01afffff, 0x1b2ffff01b1ffff, 0x1b4ffff01b3ffff, 0x1b6ffff01b5ffff, 0x1b8ffff01b7ffff, 0x1baffff01b9ffff, 0x1bcffff01bbffff, 0x1beffff01bdffff, 0x1c0ffff01bfffff, 0x1c2ffff01c1ffff, 0x1c4ffff01c3ffff, 0x1c6ffff01c5ffff, 0x1c8ffff01c7ffff, 0x1caffff01c9ffff, 0x1ccffff01cbffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cf01ce01cdffff, 0x1d301d201d101d0, 0x1d701d601d501d4, 0x1db01da01d901d8, 0x1df01de01dd01dc, 0x1e301e201e101e0, 0x1e701e601e501e4, 0x1eb01ea01e901e8, 0x1ef01ee01ed01ec, 0xffff01f201f101f0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f601f501f401f3, 0x1fa01f901f801f7, 0x1fe01fd01fc01fb, 0x2020201020001ff, 0x206020502040203, 0x20a020902080207, 0x20e020d020c020b, 0x21202110210020f, 0x216021502140213, 0x21a021902180217, 0xffff021d021c021b, 0x220021f021effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x224022302220221, 0xffffffff02260225, 0x22a022902280227, 0x22e022d022c022b, 0xffffffffffff022f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0230ffff, 0xffffffff0231ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0232ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x234ffff0233ffff, 0x236ffff0235ffff, 0x238ffff0237ffff, 0x23affff0239ffff, 0x23cffff023bffff, 0x23effff023dffff, 0x240ffff023fffff, 0x242ffff0241ffff, 0x244ffff0243ffff, 0x246ffff0245ffff, 0x248ffff0247ffff, 0x24affff0249ffff, 0x24cffff024bffff, 0x24effff024dffff, 0x250ffff024fffff, 0x252ffff0251ffff, 0x254ffff0253ffff, 0x256ffff0255ffff, 0x258ffff0257ffff, 0x25affff0259ffff, 0x25cffff025bffff, 0x25effff025dffff, 0x260ffff025fffff, 0x262ffff0261ffff, 0x264ffff0263ffff, 0x266ffff0265ffff, 0x268ffff0267ffff, 0x26affff0269ffff, 0x26cffff026bffff, 0x26effff026dffff, 0x270ffff026fffff, 0x272ffff0271ffff, 0x274ffff0273ffff, 0x276ffff0275ffff, 0x278ffff0277ffff, 0x27affff0279ffff, 0x27cffff027bffff, 0xffffffff027dffff, 0x27effffffffffff, 0xffffffffffffffff, 0x280ffff027fffff, 0x282ffff0281ffff, 0x284ffff0283ffff, 0x286ffff0285ffff, 0x288ffff0287ffff, 0x28affff0289ffff, 0x28cffff028bffff, 0x28effff028dffff, 0x290ffff028fffff, 0x292ffff0291ffff, 0x294ffff0293ffff, 0x296ffff0295ffff, 0x298ffff0297ffff, 0x29affff0299ffff, 0x29cffff029bffff, 0x29effff029dffff, 0x2a0ffff029fffff, 0x2a2ffff02a1ffff, 0x2a4ffff02a3ffff, 0x2a6ffff02a5ffff, 0x2a8ffff02a7ffff, 0x2aaffff02a9ffff, 0x2acffff02abffff, 0x2aeffff02adffff, 0x2b202b102b002af, 0x2b602b502b402b3, 0xffffffffffffffff, 0xffffffffffffffff, 0x2ba02b902b802b7, 0xffffffff02bc02bb, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c002bf02be02bd, 0x2c402c302c202c1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c802c702c602c5, 0x2cc02cb02ca02c9, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d002cf02ce02cd, 0xffffffff02d202d1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d4ffff02d3ffff, 0x2d6ffff02d5ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2da02d902d802d7, 0x2de02dd02dc02db, 0xffffffffffffffff, 0xffffffffffffffff, 0x2e202e102e002df, 0x2e602e502e402e3, 0x2ea02e902e802e7, 0xffffffff02ec02eb, 0x2f002ef02ee02ed, 0x2f402f302f202f1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2f802f702f602f5, 0x2fc02fb02fa02f9, 0xffffffffffffffff, 0xffffffffffffffff, 0x30002ff02fe02fd, 0x304030303020301, 0xffffffffffffffff, 0xffffffffffffffff, 0x307ffff03060305, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0308ffffffff, 0x309ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff030b030a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff030d030c, 0xffffffff030effff, 0xffffffffffffffff, 0xffffffffffffffff, 0x30fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0310ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x314031303120311, 0x318031703160315, 0x31c031b031a0319, 0x320031f031e031d, 0xffffffffffffffff, 0xffffffffffff0321, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x325032403230322, 0x329032803270326, 0x32d032c032b032a, 0x3310330032f032e, 0x335033403330332, 0x339033803370336, 0xffffffff033b033a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x33f033e033d033c, 0x343034203410340, 0x347034603450344, 0x34b034a03490348, 0x34f034e034d034c, 0x353035203510350, 0x357035603550354, 0x35b035a03590358, 0x35f035e035d035c, 0x363036203610360, 0x367036603650364, 0x36b036a03690368, 0xffffffff036cffff, 0xffff036e036dffff, 0xffff0370ffff036f, 0xffffffffffff0371, 0x372ffffffffffff, 0xffff0373ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x375ffff0374ffff, 0x377ffff0376ffff, 0x379ffff0378ffff, 0x37bffff037affff, 0x37dffff037cffff, 0x37fffff037effff, 0x381ffff0380ffff, 0x383ffff0382ffff, 0x385ffff0384ffff, 0x387ffff0386ffff, 0x389ffff0388ffff, 0x38bffff038affff, 0x38dffff038cffff, 0x38fffff038effff, 0x391ffff0390ffff, 0x393ffff0392ffff, 0x395ffff0394ffff, 0x397ffff0396ffff, 0x399ffff0398ffff, 0x39bffff039affff, 0x39dffff039cffff, 0x39fffff039effff, 0x3a1ffff03a0ffff, 0x3a3ffff03a2ffff, 0x3a5ffff03a4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03a7ffff03a6, 0x3a8ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ac03ab03aa03a9, 0x3b003af03ae03ad, 0x3b403b303b203b1, 0x3b803b703b603b5, 0x3bc03bb03ba03b9, 0x3c003bf03be03bd, 0x3c403c303c203c1, 0x3c803c703c603c5, 0x3cc03cb03ca03c9, 0x3cfffff03ce03cd, 0xffffffffffffffff, 0xffffffff03d0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3d2ffff03d1ffff, 0x3d4ffff03d3ffff, 0x3d6ffff03d5ffff, 0x3d8ffff03d7ffff, 0x3daffff03d9ffff, 0x3dcffff03dbffff, 0x3deffff03ddffff, 0x3e0ffff03dfffff, 0x3e2ffff03e1ffff, 0x3e4ffff03e3ffff, 0x3e6ffff03e5ffff, 0xffffffff03e7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3e9ffff03e8ffff, 0x3ebffff03eaffff, 0x3edffff03ecffff, 0x3efffff03eeffff, 0x3f1ffff03f0ffff, 0x3f3ffff03f2ffff, 0x3f5ffff03f4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3f6ffffffffffff, 0x3f8ffff03f7ffff, 0x3faffff03f9ffff, 0x3fcffff03fbffff, 0x3fdffffffffffff, 0x3ffffff03feffff, 0x401ffff0400ffff, 0x403ffff0402ffff, 0x405ffff0404ffff, 0x407ffff0406ffff, 0x409ffff0408ffff, 0x40bffff040affff, 0x40dffff040cffff, 0x40fffff040effff, 0x411ffff0410ffff, 0x413ffff0412ffff, 0x415ffff0414ffff, 0x417ffff0416ffff, 0x419ffff0418ffff, 0x41bffff041affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff041cffffffff, 0x41effffffff041d, 0x420ffff041fffff, 0x422ffff0421ffff, 0xffffffffffffffff, 0xffffffffffff0423, 0x425ffff0424ffff, 0x427ffffffff0426, 0x429ffff0428ffff, 0x42bffff042affff, 0x42dffff042cffff, 0x42fffff042effff, 0xffffffff0430ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x432ffff0431ffff, 0x434ffff0433ffff, 0x436ffff0435ffff, 0x438ffff0437ffff, 0xffffffffffffffff, 0xffff043affff0439, 0xffffffffffffffff, 0xffffffff043bffff, 0x43cffffffffffff, 0xffffffff043dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff043effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x43fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x443044204410440, 0x447044604450444, 0x44b044a04490448, 0x44f044e044d044c, 0x453045204510450, 0x457045604550454, 0x45b045a04590458, 0x45f045e045d045c, 0x463046204610460, 0x467046604650464, 0x46b046a04690468, 0x46f046e046d046c, 0x473047204710470, 0x477047604750474, 0x47b047a04790478, 0x47f047e047d047c, 0x483048204810480, 0x487048604850484, 0x48b048a04890488, 0x48f048e048d048c, 0x49204910490ffff, 0x496049504940493, 0x49a049904980497, 0x49e049d049c049b, 0x4a204a104a0049f, 0x4a604a504a404a3, 0xffff04a904a804a7, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4ad04ac04ab04aa, 0x4b104b004af04ae, 0x4b504b404b304b2, 0x4b904b804b704b6, 0x4bd04bc04bb04ba, 0x4c104c004bf04be, 0x4c504c404c304c2, 0x4c904c804c704c6, 0x4cd04cc04cb04ca, 0x4d104d004cf04ce, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d504d404d304d2, 0x4d904d804d704d6, 0x4dd04dc04db04da, 0x4e104e004df04de, 0x4e504e404e304e2, 0x4e904e804e704e6, 0x4ed04ec04eb04ea, 0x4f104f004ef04ee, 0x4f504f404f304f2, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4f6ffffffffffff, 0x4fa04f904f804f7, 0x4fe04fd04fc04fb, 0x501ffff050004ff, 0x505050405030502, 0x509050805070506, 0x50d050c050b050a, 0x510ffff050f050e, 0x514051305120511, 0x517ffff05160515, 0xffffffffffff0518, 0x51c051b051a0519, 0x520051f051e051d, 0x524052305220521, 0x528052705260525, 0x52c052b052a0529, 0x530052f052e052d, 0x534053305320531, 0x538053705360535, 0x53c053b053a0539, 0x540053f053e053d, 0x544054305420541, 0x548054705460545, 0xffff054b054a0549, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x54f054e054d054c, 0x553055205510550, 0x557055605550554, 0x55b055a05590558, 0x55f055e055d055c, 0x563056205610560, 0x567056605650564, 0x56b056a05690568, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x56f056e056d056c, 0x573057205710570, 0x577057605750574, 0x57b057a05790578, 0x57f057e057d057c, 0x583058205810580, 0x587058605850584, 0x58b058a05890588, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x58d058cffffffff, 0x5910590058f058e, 0x595059405930592, 0x599059805970596, 0x59d059c059b059a, 0x5a105a0059f059e, 0x5a505a405a305a2, 0x5a905a805a705a6, 0x5ad05ac05ab05aa, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); -@property -{ -private alias _IUA = immutable(uint[]); -_IUA toUpperTable() nothrow @nogc @safe pure { static _IUA t = [ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x39c, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12c, 0x12e, 0x49, 0x132, 0x134, 0x136, 0x139, 0x13b, 0x13d, 0x13f, 0x141, 0x143, 0x145, 0x147, 0x14a, 0x14c, 0x14e, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15a, 0x15c, 0x15e, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16a, 0x16c, 0x16e, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17b, 0x17d, 0x53, 0x243, 0x182, 0x184, 0x187, 0x18b, 0x191, 0x1f6, 0x198, 0x23d, 0x220, 0x1a0, 0x1a2, 0x1a4, 0x1a7, 0x1ac, 0x1af, 0x1b3, 0x1b5, 0x1b8, 0x1bc, 0x1f7, 0x1c4, 0x1c4, 0x1c7, 0x1c7, 0x1ca, 0x1ca, 0x1cd, 0x1cf, 0x1d1, 0x1d3, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x18e, 0x1de, 0x1e0, 0x1e2, 0x1e4, 0x1e6, 0x1e8, 0x1ea, 0x1ec, 0x1ee, 0x1f1, 0x1f1, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21c, 0x21e, 0x222, 0x224, 0x226, 0x228, 0x22a, 0x22c, 0x22e, 0x230, 0x232, 0x23b, 0x2c7e, 0x2c7f, 0x241, 0x246, 0x248, 0x24a, 0x24c, 0x24e, 0x2c6f, 0x2c6d, 0x2c70, 0x181, 0x186, 0x189, 0x18a, 0x18f, 0x190, 0xa7ab, 0x193, 0xa7ac, 0x194, 0xa78d, 0xa7aa, 0x197, 0x196, 0xa7ae, 0x2c62, 0xa7ad, 0x19c, 0x2c6e, 0x19d, 0x19f, 0x2c64, 0x1a6, 0xa7c5, 0x1a9, 0xa7b1, 0x1ae, 0x244, 0x1b1, 0x1b2, 0x245, 0x1b7, 0xa7b2, 0xa7b0, 0x399, 0x370, 0x372, 0x376, 0x3fd, 0x3fe, 0x3ff, 0x386, 0x388, 0x389, 0x38a, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0x392, 0x398, 0x3a6, 0x3a0, 0x3cf, 0x3d8, 0x3da, 0x3dc, 0x3de, 0x3e0, 0x3e2, 0x3e4, 0x3e6, 0x3e8, 0x3ea, 0x3ec, 0x3ee, 0x39a, 0x3a1, 0x3f9, 0x37f, 0x395, 0x3f7, 0x3fa, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40a, 0x40b, 0x40c, 0x40d, 0x40e, 0x40f, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46a, 0x46c, 0x46e, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47a, 0x47c, 0x47e, 0x480, 0x48a, 0x48c, 0x48e, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49a, 0x49c, 0x49e, 0x4a0, 0x4a2, 0x4a4, 0x4a6, 0x4a8, 0x4aa, 0x4ac, 0x4ae, 0x4b0, 0x4b2, 0x4b4, 0x4b6, 0x4b8, 0x4ba, 0x4bc, 0x4be, 0x4c1, 0x4c3, 0x4c5, 0x4c7, 0x4c9, 0x4cb, 0x4cd, 0x4c0, 0x4d0, 0x4d2, 0x4d4, 0x4d6, 0x4d8, 0x4da, 0x4dc, 0x4de, 0x4e0, 0x4e2, 0x4e4, 0x4e6, 0x4e8, 0x4ea, 0x4ec, 0x4ee, 0x4f0, 0x4f2, 0x4f4, 0x4f6, 0x4f8, 0x4fa, 0x4fc, 0x4fe, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50a, 0x50c, 0x50e, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51a, 0x51c, 0x51e, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52a, 0x52c, 0x52e, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537, 0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f, 0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547, 0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f, 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x1c90, 0x1c91, 0x1c92, 0x1c93, 0x1c94, 0x1c95, 0x1c96, 0x1c97, 0x1c98, 0x1c99, 0x1c9a, 0x1c9b, 0x1c9c, 0x1c9d, 0x1c9e, 0x1c9f, 0x1ca0, 0x1ca1, 0x1ca2, 0x1ca3, 0x1ca4, 0x1ca5, 0x1ca6, 0x1ca7, 0x1ca8, 0x1ca9, 0x1caa, 0x1cab, 0x1cac, 0x1cad, 0x1cae, 0x1caf, 0x1cb0, 0x1cb1, 0x1cb2, 0x1cb3, 0x1cb4, 0x1cb5, 0x1cb6, 0x1cb7, 0x1cb8, 0x1cb9, 0x1cba, 0x1cbd, 0x1cbe, 0x1cbf, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f4, 0x13f5, 0x412, 0x414, 0x41e, 0x421, 0x422, 0x422, 0x42a, 0x462, 0xa64a, 0xa77d, 0x2c63, 0xa7c6, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e60, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f59, 0x1f5b, 0x1f5d, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fb8, 0x1fb9, 0x1fbc, 0x399, 0x1fcc, 0x1fd8, 0x1fd9, 0x1fe8, 0x1fe9, 0x1fec, 0x1ffc, 0x2132, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, 0x2183, 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd, 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd, 0x24ce, 0x24cf, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c60, 0x23a, 0x23e, 0x2c67, 0x2c69, 0x2c6b, 0x2c72, 0x2c75, 0x2c80, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c7, 0x10cd, 0xa640, 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa77e, 0xa780, 0xa782, 0xa784, 0xa786, 0xa78b, 0xa790, 0xa792, 0xa7c4, 0xa796, 0xa798, 0xa79a, 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b4, 0xa7b6, 0xa7b8, 0xa7ba, 0xa7bc, 0xa7be, 0xa7c0, 0xa7c2, 0xa7c7, 0xa7c9, 0xa7d0, 0xa7d6, 0xa7d8, 0xa7f5, 0xa7b3, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 0x13ed, 0x13ee, 0x13ef, 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, 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f, 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x104b0, 0x104b1, 0x104b2, 0x104b3, 0x104b4, 0x104b5, 0x104b6, 0x104b7, 0x104b8, 0x104b9, 0x104ba, 0x104bb, 0x104bc, 0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 0x104c2, 0x104c3, 0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 0x104d2, 0x104d3, 0x10570, 0x10571, 0x10572, 0x10573, 0x10574, 0x10575, 0x10576, 0x10577, 0x10578, 0x10579, 0x1057a, 0x1057c, 0x1057d, 0x1057e, 0x1057f, 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 0x10585, 0x10586, 0x10587, 0x10588, 0x10589, 0x1058a, 0x1058c, 0x1058d, 0x1058e, 0x1058f, 0x10590, 0x10591, 0x10592, 0x10594, 0x10595, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x118a0, 0x118a1, 0x118a2, 0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9, 0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0, 0x118b1, 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7, 0x118b8, 0x118b9, 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be, 0x118bf, 0x16e40, 0x16e41, 0x16e42, 0x16e43, 0x16e44, 0x16e45, 0x16e46, 0x16e47, 0x16e48, 0x16e49, 0x16e4a, 0x16e4b, 0x16e4c, 0x16e4d, 0x16e4e, 0x16e4f, 0x16e50, 0x16e51, 0x16e52, 0x16e53, 0x16e54, 0x16e55, 0x16e56, 0x16e57, 0x16e58, 0x16e59, 0x16e5a, 0x16e5b, 0x16e5c, 0x16e5d, 0x16e5e, 0x16e5f, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905, 0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c, 0x1e90d, 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913, 0x1e914, 0x1e915, 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a, 0x1e91b, 0x1e91c, 0x1e91d, 0x1e91e, 0x1e91f, 0x1e920, 0x1e921, 0x2000053, 0x53, 0x130, 0x2000046, 0x46, 0x2000046, 0x49, 0x2000046, 0x4c, 0x3000046, 0x46, 0x49, 0x3000046, 0x46, 0x4c, 0x2000053, 0x54, 0x2000053, 0x54, 0x2000535, 0x552, 0x2000544, 0x546, 0x2000544, 0x535, 0x2000544, 0x53b, 0x200054e, 0x546, 0x2000544, 0x53d, 0x20002bc, 0x4e, 0x3000399, 0x308, 0x301, 0x30003a5, 0x308, 0x301, 0x200004a, 0x30c, 0x2000048, 0x331, 0x2000054, 0x308, 0x2000057, 0x30a, 0x2000059, 0x30a, 0x2000041, 0x2be, 0x20003a5, 0x313, 0x30003a5, 0x313, 0x300, 0x30003a5, 0x313, 0x301, 0x30003a5, 0x313, 0x342, 0x2000391, 0x342, 0x2000397, 0x342, 0x3000399, 0x308, 0x300, 0x3000399, 0x308, 0x301, 0x2000399, 0x342, 0x3000399, 0x308, 0x342, 0x30003a5, 0x308, 0x300, 0x30003a5, 0x308, 0x301, 0x20003a1, 0x313, 0x20003a5, 0x342, 0x30003a5, 0x308, 0x342, 0x20003a9, 0x342, 0x2001f08, 0x399, 0x2001f09, 0x399, 0x2001f0a, 0x399, 0x2001f0b, 0x399, 0x2001f0c, 0x399, 0x2001f0d, 0x399, 0x2001f0e, 0x399, 0x2001f0f, 0x399, 0x2001f08, 0x399, 0x2001f09, 0x399, 0x2001f0a, 0x399, 0x2001f0b, 0x399, 0x2001f0c, 0x399, 0x2001f0d, 0x399, 0x2001f0e, 0x399, 0x2001f0f, 0x399, 0x2001f28, 0x399, 0x2001f29, 0x399, 0x2001f2a, 0x399, 0x2001f2b, 0x399, 0x2001f2c, 0x399, 0x2001f2d, 0x399, 0x2001f2e, 0x399, 0x2001f2f, 0x399, 0x2001f28, 0x399, 0x2001f29, 0x399, 0x2001f2a, 0x399, 0x2001f2b, 0x399, 0x2001f2c, 0x399, 0x2001f2d, 0x399, 0x2001f2e, 0x399, 0x2001f2f, 0x399, 0x2001f68, 0x399, 0x2001f69, 0x399, 0x2001f6a, 0x399, 0x2001f6b, 0x399, 0x2001f6c, 0x399, 0x2001f6d, 0x399, 0x2001f6e, 0x399, 0x2001f6f, 0x399, 0x2001f68, 0x399, 0x2001f69, 0x399, 0x2001f6a, 0x399, 0x2001f6b, 0x399, 0x2001f6c, 0x399, 0x2001f6d, 0x399, 0x2001f6e, 0x399, 0x2001f6f, 0x399, 0x2000391, 0x399, 0x2000391, 0x399, 0x2000397, 0x399, 0x2000397, 0x399, 0x20003a9, 0x399, 0x20003a9, 0x399, 0x2001fba, 0x399, 0x2000386, 0x399, 0x2001fca, 0x399, 0x2000389, 0x399, 0x2001ffa, 0x399, 0x200038f, 0x399, 0x3000391, 0x342, 0x399, 0x3000397, 0x342, 0x399, 0x30003a9, 0x342, 0x399]; return t; } -_IUA toLowerTable() nothrow @nogc @safe pure { static _IUA t = [ 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10b, 0x10d, 0x10f, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11b, 0x11d, 0x11f, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12b, 0x12d, 0x12f, 0x69, 0x133, 0x135, 0x137, 0x13a, 0x13c, 0x13e, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14b, 0x14d, 0x14f, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15b, 0x15d, 0x15f, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16b, 0x16d, 0x16f, 0x171, 0x173, 0x175, 0x177, 0xff, 0x17a, 0x17c, 0x17e, 0x253, 0x183, 0x185, 0x254, 0x188, 0x256, 0x257, 0x18c, 0x1dd, 0x259, 0x25b, 0x192, 0x260, 0x263, 0x269, 0x268, 0x199, 0x26f, 0x272, 0x275, 0x1a1, 0x1a3, 0x1a5, 0x280, 0x1a8, 0x283, 0x1ad, 0x288, 0x1b0, 0x28a, 0x28b, 0x1b4, 0x1b6, 0x292, 0x1b9, 0x1bd, 0x1c6, 0x1c6, 0x1c9, 0x1c9, 0x1cc, 0x1cc, 0x1ce, 0x1d0, 0x1d2, 0x1d4, 0x1d6, 0x1d8, 0x1da, 0x1dc, 0x1df, 0x1e1, 0x1e3, 0x1e5, 0x1e7, 0x1e9, 0x1eb, 0x1ed, 0x1ef, 0x1f3, 0x1f3, 0x1f5, 0x195, 0x1bf, 0x1f9, 0x1fb, 0x1fd, 0x1ff, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20b, 0x20d, 0x20f, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21b, 0x21d, 0x21f, 0x19e, 0x223, 0x225, 0x227, 0x229, 0x22b, 0x22d, 0x22f, 0x231, 0x233, 0x2c65, 0x23c, 0x19a, 0x2c66, 0x242, 0x180, 0x289, 0x28c, 0x247, 0x249, 0x24b, 0x24d, 0x24f, 0x371, 0x373, 0x377, 0x3f3, 0x3ac, 0x3ad, 0x3ae, 0x3af, 0x3cc, 0x3cd, 0x3ce, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7, 0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf, 0x3c0, 0x3c1, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7, 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x3d7, 0x3d9, 0x3db, 0x3dd, 0x3df, 0x3e1, 0x3e3, 0x3e5, 0x3e7, 0x3e9, 0x3eb, 0x3ed, 0x3ef, 0x3b8, 0x3f8, 0x3f2, 0x3fb, 0x37b, 0x37c, 0x37d, 0x450, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45a, 0x45b, 0x45c, 0x45d, 0x45e, 0x45f, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46b, 0x46d, 0x46f, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47b, 0x47d, 0x47f, 0x481, 0x48b, 0x48d, 0x48f, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49b, 0x49d, 0x49f, 0x4a1, 0x4a3, 0x4a5, 0x4a7, 0x4a9, 0x4ab, 0x4ad, 0x4af, 0x4b1, 0x4b3, 0x4b5, 0x4b7, 0x4b9, 0x4bb, 0x4bd, 0x4bf, 0x4cf, 0x4c2, 0x4c4, 0x4c6, 0x4c8, 0x4ca, 0x4cc, 0x4ce, 0x4d1, 0x4d3, 0x4d5, 0x4d7, 0x4d9, 0x4db, 0x4dd, 0x4df, 0x4e1, 0x4e3, 0x4e5, 0x4e7, 0x4e9, 0x4eb, 0x4ed, 0x4ef, 0x4f1, 0x4f3, 0x4f5, 0x4f7, 0x4f9, 0x4fb, 0x4fd, 0x4ff, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50b, 0x50d, 0x50f, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51b, 0x51d, 0x51f, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52b, 0x52d, 0x52f, 0x561, 0x562, 0x563, 0x564, 0x565, 0x566, 0x567, 0x568, 0x569, 0x56a, 0x56b, 0x56c, 0x56d, 0x56e, 0x56f, 0x570, 0x571, 0x572, 0x573, 0x574, 0x575, 0x576, 0x577, 0x578, 0x579, 0x57a, 0x57b, 0x57c, 0x57d, 0x57e, 0x57f, 0x580, 0x581, 0x582, 0x583, 0x584, 0x585, 0x586, 0x2d00, 0x2d01, 0x2d02, 0x2d03, 0x2d04, 0x2d05, 0x2d06, 0x2d07, 0x2d08, 0x2d09, 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0d, 0x2d0e, 0x2d0f, 0x2d10, 0x2d11, 0x2d12, 0x2d13, 0x2d14, 0x2d15, 0x2d16, 0x2d17, 0x2d18, 0x2d19, 0x2d1a, 0x2d1b, 0x2d1c, 0x2d1d, 0x2d1e, 0x2d1f, 0x2d20, 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x2d27, 0x2d2d, 0xab70, 0xab71, 0xab72, 0xab73, 0xab74, 0xab75, 0xab76, 0xab77, 0xab78, 0xab79, 0xab7a, 0xab7b, 0xab7c, 0xab7d, 0xab7e, 0xab7f, 0xab80, 0xab81, 0xab82, 0xab83, 0xab84, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89, 0xab8a, 0xab8b, 0xab8c, 0xab8d, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab92, 0xab93, 0xab94, 0xab95, 0xab96, 0xab97, 0xab98, 0xab99, 0xab9a, 0xab9b, 0xab9c, 0xab9d, 0xab9e, 0xab9f, 0xaba0, 0xaba1, 0xaba2, 0xaba3, 0xaba4, 0xaba5, 0xaba6, 0xaba7, 0xaba8, 0xaba9, 0xabaa, 0xabab, 0xabac, 0xabad, 0xabae, 0xabaf, 0xabb0, 0xabb1, 0xabb2, 0xabb3, 0xabb4, 0xabb5, 0xabb6, 0xabb7, 0xabb8, 0xabb9, 0xabba, 0xabbb, 0xabbc, 0xabbd, 0xabbe, 0xabbf, 0x13f8, 0x13f9, 0x13fa, 0x13fb, 0x13fc, 0x13fd, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x10f7, 0x10f8, 0x10f9, 0x10fa, 0x10fd, 0x10fe, 0x10ff, 0x1e01, 0x1e03, 0x1e05, 0x1e07, 0x1e09, 0x1e0b, 0x1e0d, 0x1e0f, 0x1e11, 0x1e13, 0x1e15, 0x1e17, 0x1e19, 0x1e1b, 0x1e1d, 0x1e1f, 0x1e21, 0x1e23, 0x1e25, 0x1e27, 0x1e29, 0x1e2b, 0x1e2d, 0x1e2f, 0x1e31, 0x1e33, 0x1e35, 0x1e37, 0x1e39, 0x1e3b, 0x1e3d, 0x1e3f, 0x1e41, 0x1e43, 0x1e45, 0x1e47, 0x1e49, 0x1e4b, 0x1e4d, 0x1e4f, 0x1e51, 0x1e53, 0x1e55, 0x1e57, 0x1e59, 0x1e5b, 0x1e5d, 0x1e5f, 0x1e61, 0x1e63, 0x1e65, 0x1e67, 0x1e69, 0x1e6b, 0x1e6d, 0x1e6f, 0x1e71, 0x1e73, 0x1e75, 0x1e77, 0x1e79, 0x1e7b, 0x1e7d, 0x1e7f, 0x1e81, 0x1e83, 0x1e85, 0x1e87, 0x1e89, 0x1e8b, 0x1e8d, 0x1e8f, 0x1e91, 0x1e93, 0x1e95, 0xdf, 0x1ea1, 0x1ea3, 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab, 0x1ead, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7, 0x1eb9, 0x1ebb, 0x1ebd, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7, 0x1ec9, 0x1ecb, 0x1ecd, 0x1ecf, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9, 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, 0x1ee5, 0x1ee7, 0x1ee9, 0x1eeb, 0x1eed, 0x1eef, 0x1ef1, 0x1ef3, 0x1ef5, 0x1ef7, 0x1ef9, 0x1efb, 0x1efd, 0x1eff, 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07, 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27, 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37, 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0x1f51, 0x1f53, 0x1f55, 0x1f57, 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0x3c9, 0x6b, 0xe5, 0x214e, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x217f, 0x2184, 0x24d0, 0x24d1, 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9, 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1, 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9, 0x2c30, 0x2c31, 0x2c32, 0x2c33, 0x2c34, 0x2c35, 0x2c36, 0x2c37, 0x2c38, 0x2c39, 0x2c3a, 0x2c3b, 0x2c3c, 0x2c3d, 0x2c3e, 0x2c3f, 0x2c40, 0x2c41, 0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49, 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, 0x2c50, 0x2c51, 0x2c52, 0x2c53, 0x2c54, 0x2c55, 0x2c56, 0x2c57, 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 0x2c5d, 0x2c5e, 0x2c5f, 0x2c61, 0x26b, 0x1d7d, 0x27d, 0x2c68, 0x2c6a, 0x2c6c, 0x251, 0x271, 0x250, 0x252, 0x2c73, 0x2c76, 0x23f, 0x240, 0x2c81, 0x2c83, 0x2c85, 0x2c87, 0x2c89, 0x2c8b, 0x2c8d, 0x2c8f, 0x2c91, 0x2c93, 0x2c95, 0x2c97, 0x2c99, 0x2c9b, 0x2c9d, 0x2c9f, 0x2ca1, 0x2ca3, 0x2ca5, 0x2ca7, 0x2ca9, 0x2cab, 0x2cad, 0x2caf, 0x2cb1, 0x2cb3, 0x2cb5, 0x2cb7, 0x2cb9, 0x2cbb, 0x2cbd, 0x2cbf, 0x2cc1, 0x2cc3, 0x2cc5, 0x2cc7, 0x2cc9, 0x2ccb, 0x2ccd, 0x2ccf, 0x2cd1, 0x2cd3, 0x2cd5, 0x2cd7, 0x2cd9, 0x2cdb, 0x2cdd, 0x2cdf, 0x2ce1, 0x2ce3, 0x2cec, 0x2cee, 0x2cf3, 0xa641, 0xa643, 0xa645, 0xa647, 0xa649, 0xa64b, 0xa64d, 0xa64f, 0xa651, 0xa653, 0xa655, 0xa657, 0xa659, 0xa65b, 0xa65d, 0xa65f, 0xa661, 0xa663, 0xa665, 0xa667, 0xa669, 0xa66b, 0xa66d, 0xa681, 0xa683, 0xa685, 0xa687, 0xa689, 0xa68b, 0xa68d, 0xa68f, 0xa691, 0xa693, 0xa695, 0xa697, 0xa699, 0xa69b, 0xa723, 0xa725, 0xa727, 0xa729, 0xa72b, 0xa72d, 0xa72f, 0xa733, 0xa735, 0xa737, 0xa739, 0xa73b, 0xa73d, 0xa73f, 0xa741, 0xa743, 0xa745, 0xa747, 0xa749, 0xa74b, 0xa74d, 0xa74f, 0xa751, 0xa753, 0xa755, 0xa757, 0xa759, 0xa75b, 0xa75d, 0xa75f, 0xa761, 0xa763, 0xa765, 0xa767, 0xa769, 0xa76b, 0xa76d, 0xa76f, 0xa77a, 0xa77c, 0x1d79, 0xa77f, 0xa781, 0xa783, 0xa785, 0xa787, 0xa78c, 0x265, 0xa791, 0xa793, 0xa797, 0xa799, 0xa79b, 0xa79d, 0xa79f, 0xa7a1, 0xa7a3, 0xa7a5, 0xa7a7, 0xa7a9, 0x266, 0x25c, 0x261, 0x26c, 0x26a, 0x29e, 0x287, 0x29d, 0xab53, 0xa7b5, 0xa7b7, 0xa7b9, 0xa7bb, 0xa7bd, 0xa7bf, 0xa7c1, 0xa7c3, 0xa794, 0x282, 0x1d8e, 0xa7c8, 0xa7ca, 0xa7d1, 0xa7d7, 0xa7d9, 0xa7f6, 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, 0x10428, 0x10429, 0x1042a, 0x1042b, 0x1042c, 0x1042d, 0x1042e, 0x1042f, 0x10430, 0x10431, 0x10432, 0x10433, 0x10434, 0x10435, 0x10436, 0x10437, 0x10438, 0x10439, 0x1043a, 0x1043b, 0x1043c, 0x1043d, 0x1043e, 0x1043f, 0x10440, 0x10441, 0x10442, 0x10443, 0x10444, 0x10445, 0x10446, 0x10447, 0x10448, 0x10449, 0x1044a, 0x1044b, 0x1044c, 0x1044d, 0x1044e, 0x1044f, 0x104d8, 0x104d9, 0x104da, 0x104db, 0x104dc, 0x104dd, 0x104de, 0x104df, 0x104e0, 0x104e1, 0x104e2, 0x104e3, 0x104e4, 0x104e5, 0x104e6, 0x104e7, 0x104e8, 0x104e9, 0x104ea, 0x104eb, 0x104ec, 0x104ed, 0x104ee, 0x104ef, 0x104f0, 0x104f1, 0x104f2, 0x104f3, 0x104f4, 0x104f5, 0x104f6, 0x104f7, 0x104f8, 0x104f9, 0x104fa, 0x104fb, 0x10597, 0x10598, 0x10599, 0x1059a, 0x1059b, 0x1059c, 0x1059d, 0x1059e, 0x1059f, 0x105a0, 0x105a1, 0x105a3, 0x105a4, 0x105a5, 0x105a6, 0x105a7, 0x105a8, 0x105a9, 0x105aa, 0x105ab, 0x105ac, 0x105ad, 0x105ae, 0x105af, 0x105b0, 0x105b1, 0x105b3, 0x105b4, 0x105b5, 0x105b6, 0x105b7, 0x105b8, 0x105b9, 0x105bb, 0x105bc, 0x10cc0, 0x10cc1, 0x10cc2, 0x10cc3, 0x10cc4, 0x10cc5, 0x10cc6, 0x10cc7, 0x10cc8, 0x10cc9, 0x10cca, 0x10ccb, 0x10ccc, 0x10ccd, 0x10cce, 0x10ccf, 0x10cd0, 0x10cd1, 0x10cd2, 0x10cd3, 0x10cd4, 0x10cd5, 0x10cd6, 0x10cd7, 0x10cd8, 0x10cd9, 0x10cda, 0x10cdb, 0x10cdc, 0x10cdd, 0x10cde, 0x10cdf, 0x10ce0, 0x10ce1, 0x10ce2, 0x10ce3, 0x10ce4, 0x10ce5, 0x10ce6, 0x10ce7, 0x10ce8, 0x10ce9, 0x10cea, 0x10ceb, 0x10cec, 0x10ced, 0x10cee, 0x10cef, 0x10cf0, 0x10cf1, 0x10cf2, 0x118c0, 0x118c1, 0x118c2, 0x118c3, 0x118c4, 0x118c5, 0x118c6, 0x118c7, 0x118c8, 0x118c9, 0x118ca, 0x118cb, 0x118cc, 0x118cd, 0x118ce, 0x118cf, 0x118d0, 0x118d1, 0x118d2, 0x118d3, 0x118d4, 0x118d5, 0x118d6, 0x118d7, 0x118d8, 0x118d9, 0x118da, 0x118db, 0x118dc, 0x118dd, 0x118de, 0x118df, 0x16e60, 0x16e61, 0x16e62, 0x16e63, 0x16e64, 0x16e65, 0x16e66, 0x16e67, 0x16e68, 0x16e69, 0x16e6a, 0x16e6b, 0x16e6c, 0x16e6d, 0x16e6e, 0x16e6f, 0x16e70, 0x16e71, 0x16e72, 0x16e73, 0x16e74, 0x16e75, 0x16e76, 0x16e77, 0x16e78, 0x16e79, 0x16e7a, 0x16e7b, 0x16e7c, 0x16e7d, 0x16e7e, 0x16e7f, 0x1e922, 0x1e923, 0x1e924, 0x1e925, 0x1e926, 0x1e927, 0x1e928, 0x1e929, 0x1e92a, 0x1e92b, 0x1e92c, 0x1e92d, 0x1e92e, 0x1e92f, 0x1e930, 0x1e931, 0x1e932, 0x1e933, 0x1e934, 0x1e935, 0x1e936, 0x1e937, 0x1e938, 0x1e939, 0x1e93a, 0x1e93b, 0x1e93c, 0x1e93d, 0x1e93e, 0x1e93f, 0x1e940, 0x1e941, 0x1e942, 0x1e943, 0xdf, 0x2000069, 0x307, 0xfb00, 0xfb01, 0xfb02, 0xfb03, 0xfb04, 0xfb05, 0xfb06, 0x587, 0xfb13, 0xfb14, 0xfb15, 0xfb16, 0xfb17, 0x149, 0x390, 0x3b0, 0x1f0, 0x1e96, 0x1e97, 0x1e98, 0x1e99, 0x1e9a, 0x1f50, 0x1f52, 0x1f54, 0x1f56, 0x1fb6, 0x1fc6, 0x1fd2, 0x1fd3, 0x1fd6, 0x1fd7, 0x1fe2, 0x1fe3, 0x1fe4, 0x1fe6, 0x1fe7, 0x1ff6, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fb3, 0x1fb3, 0x1fc3, 0x1fc3, 0x1ff3, 0x1ff3, 0x1fb2, 0x1fb4, 0x1fc2, 0x1fc4, 0x1ff2, 0x1ff4, 0x1fb7, 0x1fc7, 0x1ff7]; return t; } -_IUA toTitleTable() nothrow @nogc @safe pure { static _IUA t = [ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x39c, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10a, 0x10c, 0x10e, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11a, 0x11c, 0x11e, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12a, 0x12c, 0x12e, 0x49, 0x132, 0x134, 0x136, 0x139, 0x13b, 0x13d, 0x13f, 0x141, 0x143, 0x145, 0x147, 0x14a, 0x14c, 0x14e, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15a, 0x15c, 0x15e, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16a, 0x16c, 0x16e, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17b, 0x17d, 0x53, 0x243, 0x182, 0x184, 0x187, 0x18b, 0x191, 0x1f6, 0x198, 0x23d, 0x220, 0x1a0, 0x1a2, 0x1a4, 0x1a7, 0x1ac, 0x1af, 0x1b3, 0x1b5, 0x1b8, 0x1bc, 0x1f7, 0x1c5, 0x1c5, 0x1c5, 0x1c8, 0x1c8, 0x1c8, 0x1cb, 0x1cb, 0x1cb, 0x1cd, 0x1cf, 0x1d1, 0x1d3, 0x1d5, 0x1d7, 0x1d9, 0x1db, 0x18e, 0x1de, 0x1e0, 0x1e2, 0x1e4, 0x1e6, 0x1e8, 0x1ea, 0x1ec, 0x1ee, 0x1f2, 0x1f2, 0x1f2, 0x1f4, 0x1f8, 0x1fa, 0x1fc, 0x1fe, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20a, 0x20c, 0x20e, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21a, 0x21c, 0x21e, 0x222, 0x224, 0x226, 0x228, 0x22a, 0x22c, 0x22e, 0x230, 0x232, 0x23b, 0x2c7e, 0x2c7f, 0x241, 0x246, 0x248, 0x24a, 0x24c, 0x24e, 0x2c6f, 0x2c6d, 0x2c70, 0x181, 0x186, 0x189, 0x18a, 0x18f, 0x190, 0xa7ab, 0x193, 0xa7ac, 0x194, 0xa78d, 0xa7aa, 0x197, 0x196, 0xa7ae, 0x2c62, 0xa7ad, 0x19c, 0x2c6e, 0x19d, 0x19f, 0x2c64, 0x1a6, 0xa7c5, 0x1a9, 0xa7b1, 0x1ae, 0x244, 0x1b1, 0x1b2, 0x245, 0x1b7, 0xa7b2, 0xa7b0, 0x399, 0x370, 0x372, 0x376, 0x3fd, 0x3fe, 0x3ff, 0x386, 0x388, 0x389, 0x38a, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0x392, 0x398, 0x3a6, 0x3a0, 0x3cf, 0x3d8, 0x3da, 0x3dc, 0x3de, 0x3e0, 0x3e2, 0x3e4, 0x3e6, 0x3e8, 0x3ea, 0x3ec, 0x3ee, 0x39a, 0x3a1, 0x3f9, 0x37f, 0x395, 0x3f7, 0x3fa, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40a, 0x40b, 0x40c, 0x40d, 0x40e, 0x40f, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46a, 0x46c, 0x46e, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47a, 0x47c, 0x47e, 0x480, 0x48a, 0x48c, 0x48e, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49a, 0x49c, 0x49e, 0x4a0, 0x4a2, 0x4a4, 0x4a6, 0x4a8, 0x4aa, 0x4ac, 0x4ae, 0x4b0, 0x4b2, 0x4b4, 0x4b6, 0x4b8, 0x4ba, 0x4bc, 0x4be, 0x4c1, 0x4c3, 0x4c5, 0x4c7, 0x4c9, 0x4cb, 0x4cd, 0x4c0, 0x4d0, 0x4d2, 0x4d4, 0x4d6, 0x4d8, 0x4da, 0x4dc, 0x4de, 0x4e0, 0x4e2, 0x4e4, 0x4e6, 0x4e8, 0x4ea, 0x4ec, 0x4ee, 0x4f0, 0x4f2, 0x4f4, 0x4f6, 0x4f8, 0x4fa, 0x4fc, 0x4fe, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50a, 0x50c, 0x50e, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51a, 0x51c, 0x51e, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52a, 0x52c, 0x52e, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537, 0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f, 0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547, 0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f, 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7, 0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df, 0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0x10f6, 0x10f7, 0x10f8, 0x10f9, 0x10fa, 0x10fd, 0x10fe, 0x10ff, 0x13f0, 0x13f1, 0x13f2, 0x13f3, 0x13f4, 0x13f5, 0x412, 0x414, 0x41e, 0x421, 0x422, 0x422, 0x42a, 0x462, 0xa64a, 0xa77d, 0x2c63, 0xa7c6, 0x1e00, 0x1e02, 0x1e04, 0x1e06, 0x1e08, 0x1e0a, 0x1e0c, 0x1e0e, 0x1e10, 0x1e12, 0x1e14, 0x1e16, 0x1e18, 0x1e1a, 0x1e1c, 0x1e1e, 0x1e20, 0x1e22, 0x1e24, 0x1e26, 0x1e28, 0x1e2a, 0x1e2c, 0x1e2e, 0x1e30, 0x1e32, 0x1e34, 0x1e36, 0x1e38, 0x1e3a, 0x1e3c, 0x1e3e, 0x1e40, 0x1e42, 0x1e44, 0x1e46, 0x1e48, 0x1e4a, 0x1e4c, 0x1e4e, 0x1e50, 0x1e52, 0x1e54, 0x1e56, 0x1e58, 0x1e5a, 0x1e5c, 0x1e5e, 0x1e60, 0x1e62, 0x1e64, 0x1e66, 0x1e68, 0x1e6a, 0x1e6c, 0x1e6e, 0x1e70, 0x1e72, 0x1e74, 0x1e76, 0x1e78, 0x1e7a, 0x1e7c, 0x1e7e, 0x1e80, 0x1e82, 0x1e84, 0x1e86, 0x1e88, 0x1e8a, 0x1e8c, 0x1e8e, 0x1e90, 0x1e92, 0x1e94, 0x1e60, 0x1ea0, 0x1ea2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6, 0x1eb8, 0x1eba, 0x1ebc, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6, 0x1ec8, 0x1eca, 0x1ecc, 0x1ece, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2, 0x1ee4, 0x1ee6, 0x1ee8, 0x1eea, 0x1eec, 0x1eee, 0x1ef0, 0x1ef2, 0x1ef4, 0x1ef6, 0x1ef8, 0x1efa, 0x1efc, 0x1efe, 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f, 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f, 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f, 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0x1f59, 0x1f5b, 0x1f5d, 0x1f5f, 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f, 0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb, 0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fb8, 0x1fb9, 0x1fbc, 0x399, 0x1fcc, 0x1fd8, 0x1fd9, 0x1fe8, 0x1fe9, 0x1fec, 0x1ffc, 0x2132, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f, 0x2183, 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd, 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd, 0x24ce, 0x24cf, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c60, 0x23a, 0x23e, 0x2c67, 0x2c69, 0x2c6b, 0x2c72, 0x2c75, 0x2c80, 0x2c82, 0x2c84, 0x2c86, 0x2c88, 0x2c8a, 0x2c8c, 0x2c8e, 0x2c90, 0x2c92, 0x2c94, 0x2c96, 0x2c98, 0x2c9a, 0x2c9c, 0x2c9e, 0x2ca0, 0x2ca2, 0x2ca4, 0x2ca6, 0x2ca8, 0x2caa, 0x2cac, 0x2cae, 0x2cb0, 0x2cb2, 0x2cb4, 0x2cb6, 0x2cb8, 0x2cba, 0x2cbc, 0x2cbe, 0x2cc0, 0x2cc2, 0x2cc4, 0x2cc6, 0x2cc8, 0x2cca, 0x2ccc, 0x2cce, 0x2cd0, 0x2cd2, 0x2cd4, 0x2cd6, 0x2cd8, 0x2cda, 0x2cdc, 0x2cde, 0x2ce0, 0x2ce2, 0x2ceb, 0x2ced, 0x2cf2, 0x10a0, 0x10a1, 0x10a2, 0x10a3, 0x10a4, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9, 0x10aa, 0x10ab, 0x10ac, 0x10ad, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b2, 0x10b3, 0x10b4, 0x10b5, 0x10b6, 0x10b7, 0x10b8, 0x10b9, 0x10ba, 0x10bb, 0x10bc, 0x10bd, 0x10be, 0x10bf, 0x10c0, 0x10c1, 0x10c2, 0x10c3, 0x10c4, 0x10c5, 0x10c7, 0x10cd, 0xa640, 0xa642, 0xa644, 0xa646, 0xa648, 0xa64a, 0xa64c, 0xa64e, 0xa650, 0xa652, 0xa654, 0xa656, 0xa658, 0xa65a, 0xa65c, 0xa65e, 0xa660, 0xa662, 0xa664, 0xa666, 0xa668, 0xa66a, 0xa66c, 0xa680, 0xa682, 0xa684, 0xa686, 0xa688, 0xa68a, 0xa68c, 0xa68e, 0xa690, 0xa692, 0xa694, 0xa696, 0xa698, 0xa69a, 0xa722, 0xa724, 0xa726, 0xa728, 0xa72a, 0xa72c, 0xa72e, 0xa732, 0xa734, 0xa736, 0xa738, 0xa73a, 0xa73c, 0xa73e, 0xa740, 0xa742, 0xa744, 0xa746, 0xa748, 0xa74a, 0xa74c, 0xa74e, 0xa750, 0xa752, 0xa754, 0xa756, 0xa758, 0xa75a, 0xa75c, 0xa75e, 0xa760, 0xa762, 0xa764, 0xa766, 0xa768, 0xa76a, 0xa76c, 0xa76e, 0xa779, 0xa77b, 0xa77e, 0xa780, 0xa782, 0xa784, 0xa786, 0xa78b, 0xa790, 0xa792, 0xa7c4, 0xa796, 0xa798, 0xa79a, 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b4, 0xa7b6, 0xa7b8, 0xa7ba, 0xa7bc, 0xa7be, 0xa7c0, 0xa7c2, 0xa7c7, 0xa7c9, 0xa7d0, 0xa7d6, 0xa7d8, 0xa7f5, 0xa7b3, 0x13a0, 0x13a1, 0x13a2, 0x13a3, 0x13a4, 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9, 0x13aa, 0x13ab, 0x13ac, 0x13ad, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b2, 0x13b3, 0x13b4, 0x13b5, 0x13b6, 0x13b7, 0x13b8, 0x13b9, 0x13ba, 0x13bb, 0x13bc, 0x13bd, 0x13be, 0x13bf, 0x13c0, 0x13c1, 0x13c2, 0x13c3, 0x13c4, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9, 0x13ca, 0x13cb, 0x13cc, 0x13cd, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d2, 0x13d3, 0x13d4, 0x13d5, 0x13d6, 0x13d7, 0x13d8, 0x13d9, 0x13da, 0x13db, 0x13dc, 0x13dd, 0x13de, 0x13df, 0x13e0, 0x13e1, 0x13e2, 0x13e3, 0x13e4, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9, 0x13ea, 0x13eb, 0x13ec, 0x13ed, 0x13ee, 0x13ef, 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, 0x10400, 0x10401, 0x10402, 0x10403, 0x10404, 0x10405, 0x10406, 0x10407, 0x10408, 0x10409, 0x1040a, 0x1040b, 0x1040c, 0x1040d, 0x1040e, 0x1040f, 0x10410, 0x10411, 0x10412, 0x10413, 0x10414, 0x10415, 0x10416, 0x10417, 0x10418, 0x10419, 0x1041a, 0x1041b, 0x1041c, 0x1041d, 0x1041e, 0x1041f, 0x10420, 0x10421, 0x10422, 0x10423, 0x10424, 0x10425, 0x10426, 0x10427, 0x104b0, 0x104b1, 0x104b2, 0x104b3, 0x104b4, 0x104b5, 0x104b6, 0x104b7, 0x104b8, 0x104b9, 0x104ba, 0x104bb, 0x104bc, 0x104bd, 0x104be, 0x104bf, 0x104c0, 0x104c1, 0x104c2, 0x104c3, 0x104c4, 0x104c5, 0x104c6, 0x104c7, 0x104c8, 0x104c9, 0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 0x104d2, 0x104d3, 0x10570, 0x10571, 0x10572, 0x10573, 0x10574, 0x10575, 0x10576, 0x10577, 0x10578, 0x10579, 0x1057a, 0x1057c, 0x1057d, 0x1057e, 0x1057f, 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 0x10585, 0x10586, 0x10587, 0x10588, 0x10589, 0x1058a, 0x1058c, 0x1058d, 0x1058e, 0x1058f, 0x10590, 0x10591, 0x10592, 0x10594, 0x10595, 0x10c80, 0x10c81, 0x10c82, 0x10c83, 0x10c84, 0x10c85, 0x10c86, 0x10c87, 0x10c88, 0x10c89, 0x10c8a, 0x10c8b, 0x10c8c, 0x10c8d, 0x10c8e, 0x10c8f, 0x10c90, 0x10c91, 0x10c92, 0x10c93, 0x10c94, 0x10c95, 0x10c96, 0x10c97, 0x10c98, 0x10c99, 0x10c9a, 0x10c9b, 0x10c9c, 0x10c9d, 0x10c9e, 0x10c9f, 0x10ca0, 0x10ca1, 0x10ca2, 0x10ca3, 0x10ca4, 0x10ca5, 0x10ca6, 0x10ca7, 0x10ca8, 0x10ca9, 0x10caa, 0x10cab, 0x10cac, 0x10cad, 0x10cae, 0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x118a0, 0x118a1, 0x118a2, 0x118a3, 0x118a4, 0x118a5, 0x118a6, 0x118a7, 0x118a8, 0x118a9, 0x118aa, 0x118ab, 0x118ac, 0x118ad, 0x118ae, 0x118af, 0x118b0, 0x118b1, 0x118b2, 0x118b3, 0x118b4, 0x118b5, 0x118b6, 0x118b7, 0x118b8, 0x118b9, 0x118ba, 0x118bb, 0x118bc, 0x118bd, 0x118be, 0x118bf, 0x16e40, 0x16e41, 0x16e42, 0x16e43, 0x16e44, 0x16e45, 0x16e46, 0x16e47, 0x16e48, 0x16e49, 0x16e4a, 0x16e4b, 0x16e4c, 0x16e4d, 0x16e4e, 0x16e4f, 0x16e50, 0x16e51, 0x16e52, 0x16e53, 0x16e54, 0x16e55, 0x16e56, 0x16e57, 0x16e58, 0x16e59, 0x16e5a, 0x16e5b, 0x16e5c, 0x16e5d, 0x16e5e, 0x16e5f, 0x1e900, 0x1e901, 0x1e902, 0x1e903, 0x1e904, 0x1e905, 0x1e906, 0x1e907, 0x1e908, 0x1e909, 0x1e90a, 0x1e90b, 0x1e90c, 0x1e90d, 0x1e90e, 0x1e90f, 0x1e910, 0x1e911, 0x1e912, 0x1e913, 0x1e914, 0x1e915, 0x1e916, 0x1e917, 0x1e918, 0x1e919, 0x1e91a, 0x1e91b, 0x1e91c, 0x1e91d, 0x1e91e, 0x1e91f, 0x1e920, 0x1e921, 0x2000053, 0x73, 0x130, 0x2000046, 0x66, 0x2000046, 0x69, 0x2000046, 0x6c, 0x3000046, 0x66, 0x69, 0x3000046, 0x66, 0x6c, 0x2000053, 0x74, 0x2000053, 0x74, 0x2000535, 0x582, 0x2000544, 0x576, 0x2000544, 0x565, 0x2000544, 0x56b, 0x200054e, 0x576, 0x2000544, 0x56d, 0x20002bc, 0x4e, 0x3000399, 0x308, 0x301, 0x30003a5, 0x308, 0x301, 0x200004a, 0x30c, 0x2000048, 0x331, 0x2000054, 0x308, 0x2000057, 0x30a, 0x2000059, 0x30a, 0x2000041, 0x2be, 0x20003a5, 0x313, 0x30003a5, 0x313, 0x300, 0x30003a5, 0x313, 0x301, 0x30003a5, 0x313, 0x342, 0x2000391, 0x342, 0x2000397, 0x342, 0x3000399, 0x308, 0x300, 0x3000399, 0x308, 0x301, 0x2000399, 0x342, 0x3000399, 0x308, 0x342, 0x30003a5, 0x308, 0x300, 0x30003a5, 0x308, 0x301, 0x20003a1, 0x313, 0x20003a5, 0x342, 0x30003a5, 0x308, 0x342, 0x20003a9, 0x342, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf, 0x1fbc, 0x1fbc, 0x1fcc, 0x1fcc, 0x1ffc, 0x1ffc, 0x2001fba, 0x345, 0x2000386, 0x345, 0x2001fca, 0x345, 0x2000389, 0x345, 0x2001ffa, 0x345, 0x200038f, 0x345, 0x3000391, 0x342, 0x345, 0x3000397, 0x342, 0x345, 0x30003a9, 0x342, 0x345]; return t; } +dstring toUpperTable() nothrow @nogc pure @safe { +static immutable dchar[1671] t = +"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ +"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ +"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ +"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ +"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ +"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ +"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ +"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C4\u01C4\u01C7\u01C7\u01CA\u01CA\u01CD\u01CF\u01D1\u01D3"d~ +"\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F1\u01F4\u01F8\u01FA"d~ +"\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222"d~ +"\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A\u024C\u024E\u2C6F\u2C6D"d~ +"\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196\uA7AE\u2C62\uA7AD\u019C"d~ +"\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2\uA7B0\u0399\u0370\u0372"d~ +"\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B"d~ +"\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u038C\u038E\u038F"d~ +"\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u039A\u03A1"d~ +"\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D"d~ +"\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0400"d~ +"\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F\u0460\u0462\u0464\u0466"d~ +"\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494"d~ +"\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA"d~ +"\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0"d~ +"\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506"d~ +"\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C"d~ +"\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E\u053F\u0540\u0541\u0542"d~ +"\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555"d~ +"\u0556\u1C90\u1C91\u1C92\u1C93\u1C94\u1C95\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D\u1C9E\u1C9F\u1CA0\u1CA1"d~ +"\u1CA2\u1CA3\u1CA4\u1CA5\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD\u1CAE\u1CAF\u1CB0\u1CB1\u1CB2\u1CB3\u1CB4"d~ +"\u1CB5\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBD\u1CBE\u1CBF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5\u0412\u0414\u041E\u0421"d~ +"\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14"d~ +"\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A"d~ +"\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60"d~ +"\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86"d~ +"\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4"d~ +"\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA"d~ +"\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08"d~ +"\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D"d~ +"\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D\u1F59\u1F5B\u1F5D"d~ +"\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB\u1FDA\u1FDB\u1FF8\u1FF9"d~ +"\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E"d~ +"\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8\u1FD9\u1FE8\u1FE9\u1FEC"d~ +"\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2183"d~ +"\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8"d~ +"\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B"d~ +"\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E"d~ +"\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F\u2C60\u023A"d~ +"\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98"d~ +"\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE"d~ +"\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB"d~ +"\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD\u10AE\u10AF\u10B0"d~ +"\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3"d~ +"\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C"d~ +"\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694"d~ +"\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742"d~ +"\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768"d~ +"\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796\uA798\uA79A\uA79C\uA79E"d~ +"\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9\uA7D0\uA7D6\uA7D8\uA7F5"d~ +"\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1"d~ +"\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4"d~ +"\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7"d~ +"\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA"d~ +"\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"d~ +"\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401\U00010402\U00010403"d~ +"\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C\U0001040D\U0001040E"d~ +"\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417\U00010418\U00010419"d~ +"\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422\U00010423\U00010424"d~ +"\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5\U000104B6\U000104B7"d~ +"\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0\U000104C1\U000104C2"d~ +"\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB\U000104CC\U000104CD"d~ +"\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572\U00010573\U00010574"d~ +"\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E\U0001057F\U00010580"d~ +"\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589\U0001058A\U0001058C"d~ +"\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80\U00010C81\U00010C82"d~ +"\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B\U00010C8C\U00010C8D"d~ +"\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96\U00010C97\U00010C98"d~ +"\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1\U00010CA2\U00010CA3"d~ +"\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC\U00010CAD\U00010CAE"d~ +"\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4\U000118A5\U000118A6"d~ +"\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF\U000118B0\U000118B1"d~ +"\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA\U000118BB\U000118BC"d~ +"\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45\U00016E46\U00016E47"d~ +"\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50\U00016E51\U00016E52"d~ +"\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B\U00016E5C\U00016E5D"d~ +"\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906\U0001E907\U0001E908"d~ +"\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911\U0001E912\U0001E913"d~ +"\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C\U0001E91D\U0001E91E"d~ +"\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0053\u0130"d~cast(dchar) 0x02000046~"\u0046"d~cast(dchar) 0x02000046~""d~ +"\u0049"d~cast(dchar) 0x02000046~"\u004C"d~cast(dchar) 0x03000046~"\u0046\u0049"d~cast(dchar) 0x03000046~"\u0046\u004C"d~ +""d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000535~"\u0552"d~cast(dchar) 0x02000544~""d~ +"\u0546"d~cast(dchar) 0x02000544~"\u0535"d~cast(dchar) 0x02000544~"\u053B"d~cast(dchar) 0x0200054E~"\u0546"d~cast(dchar) 0x02000544~""d~ +"\u053D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ +""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ +"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ +"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ +"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ +""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ +"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ +""d~cast(dchar) 0x020003A9~"\u0342"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ +"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ +"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ +"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ +"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ +"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ +"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ +"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ +"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ +"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ +"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ +"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ +"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000397~""d~ +"\u0399"d~cast(dchar) 0x02000397~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x02001FBA~""d~ +"\u0399"d~cast(dchar) 0x02000386~"\u0399"d~cast(dchar) 0x02001FCA~"\u0399"d~cast(dchar) 0x02000389~"\u0399"d~cast(dchar) 0x02001FFA~""d~ +"\u0399"d~cast(dchar) 0x0200038F~"\u0399"d~cast(dchar) 0x03000391~"\u0342\u0399"d~cast(dchar) 0x03000397~"\u0342\u0399"d~ +""d~cast(dchar) 0x030003A9~"\u0342\u0399"d; +return t[]; +} +dstring toLowerTable() nothrow @nogc pure @safe { +static immutable dchar[1537] t = +"\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073"d~ +"\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB"d~ +"\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u0101"d~ +"\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127"d~ +"\u0129\u012B\u012D\u012F\u0069\u0133\u0135\u0137\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u014B\u014D\u014F"d~ +"\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175"d~ +"\u0177\u00FF\u017A\u017C\u017E\u0253\u0183\u0185\u0254\u0188\u0256\u0257\u018C\u01DD\u0259\u025B\u0192\u0260\u0263"d~ +"\u0269\u0268\u0199\u026F\u0272\u0275\u01A1\u01A3\u01A5\u0280\u01A8\u0283\u01AD\u0288\u01B0\u028A\u028B\u01B4\u01B6"d~ +"\u0292\u01B9\u01BD\u01C6\u01C6\u01C9\u01C9\u01CC\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DF\u01E1"d~ +"\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F3\u01F3\u01F5\u0195\u01BF\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205"d~ +"\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u019E\u0223\u0225\u0227\u0229\u022B"d~ +"\u022D\u022F\u0231\u0233\u2C65\u023C\u019A\u2C66\u0242\u0180\u0289\u028C\u0247\u0249\u024B\u024D\u024F\u0371\u0373"d~ +"\u0377\u03F3\u03AC\u03AD\u03AE\u03AF\u03CC\u03CD\u03CE\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA"d~ +"\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03D7\u03D9\u03DB"d~ +"\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF\u03B8\u03F8\u03F2\u03FB\u037B\u037C\u037D\u0450\u0451"d~ +"\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u045D\u045E\u045F\u0430\u0431\u0432\u0433\u0434"d~ +"\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447"d~ +"\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475"d~ +"\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3"d~ +"\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04CF\u04C2\u04C4\u04C6\u04C8"d~ +"\u04CA\u04CC\u04CE\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF"d~ +"\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515"d~ +"\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561\u0562\u0563\u0564\u0565\u0566"d~ +"\u0567\u0568\u0569\u056A\u056B\u056C\u056D\u056E\u056F\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579"d~ +"\u057A\u057B\u057C\u057D\u057E\u057F\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u2D00\u2D01\u2D02\u2D03\u2D04\u2D05"d~ +"\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18"d~ +"\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21\u2D22\u2D23\u2D24\u2D25\u2D27\u2D2D\uAB70\uAB71\uAB72\uAB73"d~ +"\uAB74\uAB75\uAB76\uAB77\uAB78\uAB79\uAB7A\uAB7B\uAB7C\uAB7D\uAB7E\uAB7F\uAB80\uAB81\uAB82\uAB83\uAB84\uAB85\uAB86"d~ +"\uAB87\uAB88\uAB89\uAB8A\uAB8B\uAB8C\uAB8D\uAB8E\uAB8F\uAB90\uAB91\uAB92\uAB93\uAB94\uAB95\uAB96\uAB97\uAB98\uAB99"d~ +"\uAB9A\uAB9B\uAB9C\uAB9D\uAB9E\uAB9F\uABA0\uABA1\uABA2\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8\uABA9\uABAA\uABAB\uABAC"d~ +"\uABAD\uABAE\uABAF\uABB0\uABB1\uABB2\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9\uABBA\uABBB\uABBC\uABBD\uABBE\uABBF"d~ +"\u13F8\u13F9\u13FA\u13FB\u13FC\u13FD\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC"d~ +"\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF"d~ +"\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09"d~ +"\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F"d~ +"\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55"d~ +"\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B"d~ +"\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u00DF\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9"d~ +"\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF"d~ +"\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5"d~ +"\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01\u1F02\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15"d~ +"\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42"d~ +"\u1F43\u1F44\u1F45\u1F51\u1F53\u1F55\u1F57\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F80\u1F81\u1F82\u1F83"d~ +"\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6"d~ +"\u1FA7\u1FB0\u1FB1\u1F70\u1F71\u1FB3\u1F72\u1F73\u1F74\u1F75\u1FC3\u1FD0\u1FD1\u1F76\u1F77\u1FE0\u1FE1\u1F7A\u1F7B"d~ +"\u1FE5\u1F78\u1F79\u1F7C\u1F7D\u1FF3\u03C9\u006B\u00E5\u214E\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178"d~ +"\u2179\u217A\u217B\u217C\u217D\u217E\u217F\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA"d~ +"\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31\u2C32\u2C33"d~ +"\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43\u2C44\u2C45\u2C46"d~ +"\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59"d~ +"\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C61\u026B\u1D7D\u027D\u2C68\u2C6A\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76"d~ +"\u023F\u0240\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1"d~ +"\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7"d~ +"\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC\u2CEE\u2CF3\uA641\uA643"d~ +"\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669"d~ +"\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727"d~ +"\uA729\uA72B\uA72D\uA72F\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F"d~ +"\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79"d~ +"\uA77F\uA781\uA783\uA785\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9"d~ +"\u0266\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C1\uA7C3\uA794\u0282"d~ +"\u1D8E\uA7C8\uA7CA\uA7D1\uA7D7\uA7D9\uA7F6\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C"d~ +"\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\U00010428\U00010429\U0001042A"d~ +"\U0001042B\U0001042C\U0001042D\U0001042E\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434\U00010435"d~ +"\U00010436\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C\U0001043D\U0001043E\U0001043F\U00010440"d~ +"\U00010441\U00010442\U00010443\U00010444\U00010445\U00010446\U00010447\U00010448\U00010449\U0001044A\U0001044B"d~ +"\U0001044C\U0001044D\U0001044E\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC\U000104DD\U000104DE"d~ +"\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4\U000104E5\U000104E6\U000104E7\U000104E8\U000104E9"d~ +"\U000104EA\U000104EB\U000104EC\U000104ED\U000104EE\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4"d~ +"\U000104F5\U000104F6\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010597\U00010598\U00010599\U0001059A"d~ +"\U0001059B\U0001059C\U0001059D\U0001059E\U0001059F\U000105A0\U000105A1\U000105A3\U000105A4\U000105A5\U000105A6"d~ +"\U000105A7\U000105A8\U000105A9\U000105AA\U000105AB\U000105AC\U000105AD\U000105AE\U000105AF\U000105B0\U000105B1"d~ +"\U000105B3\U000105B4\U000105B5\U000105B6\U000105B7\U000105B8\U000105B9\U000105BB\U000105BC\U00010CC0\U00010CC1"d~ +"\U00010CC2\U00010CC3\U00010CC4\U00010CC5\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA\U00010CCB\U00010CCC"d~ +"\U00010CCD\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2\U00010CD3\U00010CD4\U00010CD5\U00010CD6\U00010CD7"d~ +"\U00010CD8\U00010CD9\U00010CDA\U00010CDB\U00010CDC\U00010CDD\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2"d~ +"\U00010CE3\U00010CE4\U00010CE5\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA\U00010CEB\U00010CEC\U00010CED"d~ +"\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4\U000118C5"d~ +"\U000118C6\U000118C7\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC\U000118CD\U000118CE\U000118CF\U000118D0"d~ +"\U000118D1\U000118D2\U000118D3\U000118D4\U000118D5\U000118D6\U000118D7\U000118D8\U000118D9\U000118DA\U000118DB"d~ +"\U000118DC\U000118DD\U000118DE\U000118DF\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64\U00016E65\U00016E66"d~ +"\U00016E67\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C\U00016E6D\U00016E6E\U00016E6F\U00016E70\U00016E71"d~ +"\U00016E72\U00016E73\U00016E74\U00016E75\U00016E76\U00016E77\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C"d~ +"\U00016E7D\U00016E7E\U00016E7F\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926\U0001E927\U0001E928\U0001E929"d~ +"\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E\U0001E92F\U0001E930\U0001E931\U0001E932\U0001E933\U0001E934"d~ +"\U0001E935\U0001E936\U0001E937\U0001E938\U0001E939\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E\U0001E93F"d~ +"\U0001E940\U0001E941\U0001E942\U0001E943\u00DF"d~cast(dchar) 0x02000069~"\u0307\uFB00\uFB01\uFB02\uFB03\uFB04\uFB05"d~ +"\uFB06\u0587\uFB13\uFB14\uFB15\uFB16\uFB17\u0149\u0390\u03B0\u01F0\u1E96\u1E97\u1E98\u1E99\u1E9A\u1F50\u1F52\u1F54"d~ +"\u1F56\u1FB6\u1FC6\u1FD2\u1FD3\u1FD6\u1FD7\u1FE2\u1FE3\u1FE4\u1FE6\u1FE7\u1FF6\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85"d~ +"\u1F86\u1F87\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1F90"d~ +"\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7\u1FA0\u1FA1\u1FA2\u1FA3"d~ +"\u1FA4\u1FA5\u1FA6\u1FA7\u1FB3\u1FB3\u1FC3\u1FC3\u1FF3\u1FF3\u1FB2\u1FB4\u1FC2\u1FC4\u1FF2\u1FF4\u1FB7\u1FC7\u1FF7"d; +return t[]; +} +dstring toTitleTable() nothrow @nogc pure @safe { +static immutable dchar[1621] t = +"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ +"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ +"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ +"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ +"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ +"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ +"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ +"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C5\u01C5\u01C5\u01C8\u01C8\u01C8\u01CB\u01CB\u01CB\u01CD"d~ +"\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F2\u01F2"d~ +"\u01F2\u01F4\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218"d~ +"\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A"d~ +"\u024C\u024E\u2C6F\u2C6D\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196"d~ +"\uA7AE\u2C62\uA7AD\u019C\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2"d~ +"\uA7B0\u0399\u0370\u0372\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397"d~ +"\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA"d~ +"\u03AB\u038C\u038E\u038F\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA"d~ +"\u03EC\u03EE\u039A\u03A1\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419"d~ +"\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"d~ +"\u042D\u042E\u042F\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F"d~ +"\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C"d~ +"\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2"d~ +"\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8"d~ +"\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE"d~ +"\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524"d~ +"\u0526\u0528\u052A\u052C\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E"d~ +"\u053F\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551"d~ +"\u0552\u0553\u0554\u0555\u0556\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD"d~ +"\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0"d~ +"\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5"d~ +"\u0412\u0414\u041E\u0421\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C"d~ +"\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32"d~ +"\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58"d~ +"\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E"d~ +"\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC"d~ +"\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2"d~ +"\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8"d~ +"\u1EFA\u1EFC\u1EFE\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29"d~ +"\u1F2A\u1F2B\u1F2C\u1F2D\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C"d~ +"\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB"d~ +"\u1FDA\u1FDB\u1FF8\u1FF9\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A"d~ +"\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8"d~ +"\u1FD9\u1FE8\u1FE9\u1FEC\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C"d~ +"\u216D\u216E\u216F\u2183\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4"d~ +"\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07"d~ +"\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A"d~ +"\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D"d~ +"\u2C2E\u2C2F\u2C60\u023A\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90"d~ +"\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6"d~ +"\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC"d~ +"\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC"d~ +"\u10AD\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF"d~ +"\u10C0\u10C1\u10C2\u10C3\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654"d~ +"\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C"d~ +"\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A"d~ +"\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760"d~ +"\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796"d~ +"\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9"d~ +"\uA7D0\uA7D6\uA7D8\uA7F5\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD"d~ +"\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0"d~ +"\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3"d~ +"\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6"d~ +"\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A"d~ +"\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401"d~ +"\U00010402\U00010403\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C"d~ +"\U0001040D\U0001040E\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417"d~ +"\U00010418\U00010419\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422"d~ +"\U00010423\U00010424\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5"d~ +"\U000104B6\U000104B7\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0"d~ +"\U000104C1\U000104C2\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB"d~ +"\U000104CC\U000104CD\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572"d~ +"\U00010573\U00010574\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E"d~ +"\U0001057F\U00010580\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589"d~ +"\U0001058A\U0001058C\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80"d~ +"\U00010C81\U00010C82\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B"d~ +"\U00010C8C\U00010C8D\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96"d~ +"\U00010C97\U00010C98\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1"d~ +"\U00010CA2\U00010CA3\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC"d~ +"\U00010CAD\U00010CAE\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4"d~ +"\U000118A5\U000118A6\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF"d~ +"\U000118B0\U000118B1\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA"d~ +"\U000118BB\U000118BC\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45"d~ +"\U00016E46\U00016E47\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50"d~ +"\U00016E51\U00016E52\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B"d~ +"\U00016E5C\U00016E5D\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906"d~ +"\U0001E907\U0001E908\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911"d~ +"\U0001E912\U0001E913\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C"d~ +"\U0001E91D\U0001E91E\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0073\u0130"d~cast(dchar) 0x02000046~""d~ +"\u0066"d~cast(dchar) 0x02000046~"\u0069"d~cast(dchar) 0x02000046~"\u006C"d~cast(dchar) 0x03000046~"\u0066\u0069"d~cast(dchar) 0x03000046~""d~ +"\u0066\u006C"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000535~"\u0582"d~cast(dchar) 0x02000544~""d~ +"\u0576"d~cast(dchar) 0x02000544~"\u0565"d~cast(dchar) 0x02000544~"\u056B"d~cast(dchar) 0x0200054E~"\u0576"d~cast(dchar) 0x02000544~""d~ +"\u056D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ +""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ +"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ +"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ +"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ +""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ +"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ +""d~cast(dchar) 0x020003A9~"\u0342\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F88\u1F89\u1F8A\u1F8B\u1F8C"d~ +"\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F"d~ +"\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FBC\u1FBC\u1FCC"d~ +"\u1FCC\u1FFC\u1FFC"d~cast(dchar) 0x02001FBA~"\u0345"d~cast(dchar) 0x02000386~"\u0345"d~cast(dchar) 0x02001FCA~"\u0345"d~ +""d~cast(dchar) 0x02000389~"\u0345"d~cast(dchar) 0x02001FFA~"\u0345"d~cast(dchar) 0x0200038F~"\u0345"d~cast(dchar) 0x03000391~""d~ +"\u0342\u0345"d~cast(dchar) 0x03000397~"\u0342\u0345"d~cast(dchar) 0x030003A9~"\u0342\u0345"d; +return t[]; } } diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index df773bcd151..09ebca22d5e 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -1033,6 +1033,14 @@ void writeGraphemeTries(File sink) writeBest3Level(sink, "Extended_Pictographic", emojiData.table["Extended_Pictographic"]); } +/// Write a function that returns a dchar[] with data stored in `table` +void writeDstringTable(T:dchar)(File sink, string name, const T[] table) +{ + sink.writefln("dstring %s() nothrow @nogc pure @safe {\nstatic immutable dchar[%d] t =", name, table.length); + sink.writeDstring(table); + sink.writeln(";\nreturn t[];\n}"); +} + void writeCaseCoversion(File sink) { { @@ -1055,16 +1063,10 @@ void writeCaseCoversion(File sink) writeBest3Level(sink, "toTitleSimpleIndex", toTitleSimpleIndex, ushort.max); } - with(sink) - { - writeln("@property"); - writeln("{"); - writeln("private alias _IUA = immutable(uint[]);"); - writefln("_IUA toUpperTable() nothrow @nogc @safe pure { static _IUA t = [%( 0x%x, %)]; return t; }", toUpperTab); - writefln("_IUA toLowerTable() nothrow @nogc @safe pure { static _IUA t = [%( 0x%x, %)]; return t; }", toLowerTab); - writefln("_IUA toTitleTable() nothrow @nogc @safe pure { static _IUA t = [%( 0x%x, %)]; return t; }", toTitleTab); - writeln("}"); - } + + writeDstringTable(sink, "toUpperTable", toUpperTab); + writeDstringTable(sink, "toLowerTable", toLowerTab); + writeDstringTable(sink, "toTitleTable", toTitleTab); } void writeDecomposition(File sink) @@ -1121,15 +1123,9 @@ void writeDecomposition(File sink) writeBest3Level(sink, "compatMapping", mappingCompat, cast(ushort) 0); writeBest3Level(sink, "canonMapping", mappingCanon, cast(ushort) 0); - with(sink) - { - writeln("@property"); - writeln("{"); - writeln("private alias _IDCA = immutable(dchar[]);"); - writefln("_IDCA decompCanonTable() @safe pure nothrow { static _IDCA t = [%( 0x%x, %)]; return t; }", decompCanonFlat); - writefln("_IDCA decompCompatTable() @safe pure nothrow { static _IDCA t = [%( 0x%x, %)]; return t; }", decompCompatFlat); - writeln("}"); - } + + writeDstringTable(sink, "decompCanonTable", cast(const(uint)[]) decompCanonFlat); + writeDstringTable(sink, "decompCompatTable", cast(const(uint)[]) decompCompatFlat); } void writeFunctions(File sink) @@ -1155,6 +1151,38 @@ void writeFunctions(File sink) } } +/// Write a `dchar[]` as a dstring ""d +void writeDstring(T:dchar)(File sink, const T[] tab) +{ + size_t lineCount = 1; + sink.write("\""); + foreach (elem; tab) + { + if (lineCount >= 110) + { + sink.write("\"d~\n\""); + lineCount = 1; + } + if (elem >= 0x10FFFF) + { + // invalid dchar, but might have extra info bit-packed in upper bits + sink.writef("\"d~cast(dchar) 0x%08X~\"", elem); + lineCount += 25; + } + else if (elem <= 0xFFFF) + { + sink.writef("\\u%04X", elem); + lineCount += 6; + } + else + { + sink.writef("\\U%08X", elem); + lineCount += 10; + } + } + sink.write("\"d"); +} + void writeCompositionTable(File sink) { @@ -1214,34 +1242,7 @@ void writeCompositionTable(File sink) write("enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)("); triT.store(sink.lockingTextWriter()); writeln(");"); - writeln("dstring compositionTable() nothrow pure @nogc @safe"); - writeln("{"); - writef("static immutable dchar[%d] t =\n\"", dupletes.length * 2); - size_t lineCount = 1; - foreach (i, pair; dupletes) - { - static foreach(j; 0 .. 2) - { - if (pair[j] <= 0xFFFF) - { - writef("\\u%04X", pair[j]); - lineCount += 6; - } - else - { - writef("\\U%08X", pair[j]); - lineCount += 10; - } - if (lineCount >= 110) - { - write("\"~\n\""); - lineCount = 1; - } - } - } - writeln("\"d;"); - writeln("return t[];"); - writeln("}"); + writeDstringTable(sink, "compositionTable", dupletes.map!(x => only(x.expand)).joiner.array); } } From fc804bb8dafff5b3c6807d34cf407bd331a8e145 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sat, 13 Jan 2024 10:37:35 +0100 Subject: [PATCH 163/327] Fix 24339 - std.mmfile has poor documentation --- std/mmfile.d | 66 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 16 deletions(-) diff --git a/std/mmfile.d b/std/mmfile.d index f8f8a9088b6..58a416126fe 100644 --- a/std/mmfile.d +++ b/std/mmfile.d @@ -2,10 +2,22 @@ /** * Read and write memory mapped files. + * + * Memory mapped files are a mechanism in operating systems that allows + * file access through virtual memory. After opening a file with `MmFile`, + * the contents can be read from or written to with standard slice / pointer operations. + * Changes to the memory are automatically reflected in the underlying file. + * + * Memory mapping can increase I/O performance of large files, compared to buffered + * read / write operations from `std.file` and `std.stdio`. However, I/O errors are + * not handled as safely: when for example the disk that the file is on gets removed, + * reading from it may result in a segfault. + * * Copyright: Copyright The D Language Foundation 2004 - 2009. * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: $(HTTP digitalmars.com, Walter Bright), * Matthew Wilson + * References: $(LINK https://en.wikipedia.org/wiki/Memory-mapped_file) * Source: $(PHOBOSSRC std/mmfile.d) * * $(SCRIPT inhibitQuickIndex = 1;) @@ -612,23 +624,45 @@ private: { static assert(0); } +} + +/// Read an existing file +@system unittest +{ + import std.file; + std.file.write(deleteme, "hello"); // deleteme is a temporary filename + scope(exit) remove(deleteme); + + // Use a scope class so the file will be closed at the end of this function + scope mmfile = new MmFile(deleteme); + + assert(mmfile.length == "hello".length); + + // Access file contents with the slice operator + // This is typed as `void[]`, so cast to `char[]` or `ubyte[]` to use it + const data = cast(const(char)[]) mmfile[]; + + // At this point, the file content hasn't been read yet. + // The OS will + assert(data[0 .. 5] == "hello"); +} + +/// Write a new file +@system unittest +{ + import std.file; + scope(exit) remove(deleteme); + + scope mmfile = new MmFile(deleteme, MmFile.Mode.readWriteNew, 5, null); + assert(mmfile.length == 5); + + // Assign through operator overload of `MmFile` + auto data = cast(ubyte[]) mmfile[]; + data[] = '\n'; + + mmfile.flush(); - // Report error, where errno gives the error number - // void errNo() - // { - // version (Windows) - // { - // throw new FileException(filename, GetLastError()); - // } - // else version (linux) - // { - // throw new FileException(filename, errno); - // } - // else - // { - // static assert(0); - // } - // } + assert(std.file.read(deleteme) == "\n\n\n\n\n"); } @system unittest From 94890e03dcfca092852bad3413010bd2bbc66ee6 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Tue, 16 Jan 2024 17:18:18 +0100 Subject: [PATCH 164/327] Fix std.mmap documentation --- std/mmfile.d | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/std/mmfile.d b/std/mmfile.d index 58a416126fe..b2cab3157d0 100644 --- a/std/mmfile.d +++ b/std/mmfile.d @@ -642,8 +642,9 @@ private: // This is typed as `void[]`, so cast to `char[]` or `ubyte[]` to use it const data = cast(const(char)[]) mmfile[]; - // At this point, the file content hasn't been read yet. - // The OS will + // At this point, the file content may not have been read yet. + // In that case, the following memory access will intentionally + // trigger a page fault, causing the kernel to load the file contents assert(data[0 .. 5] == "hello"); } @@ -656,8 +657,9 @@ private: scope mmfile = new MmFile(deleteme, MmFile.Mode.readWriteNew, 5, null); assert(mmfile.length == 5); - // Assign through operator overload of `MmFile` auto data = cast(ubyte[]) mmfile[]; + + // This write to memory will be reflected in the file contents data[] = '\n'; mmfile.flush(); From e4d0dd5136be3c539a02cc2f1618cb989a685837 Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Wed, 17 Jan 2024 14:32:41 +0100 Subject: [PATCH 165/327] Fix IRC link. (Freenode is dead, #d has been on libera for years.) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bcfcf463eba..40104226b8d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,5 +12,5 @@ More Links * Use our [Bugzilla bug tracker](https://issues.dlang.org) * Follow the [D style](http://dlang.org/dstyle.html) * Participate in [our forum](http://forum.dlang.org/) -* Ask questions on our `#d` IRC channel on freenode.org ([web interface](https://kiwiirc.com/client/irc.freenode.net/d)) +* Ask questions on our `#d` IRC channel on libera.chat ([web interface](https://kiwiirc.com/client/irc.libera.chat/d)) * Review Phobos additions in the [Review Queue](http://wiki.dlang.org/Review_Queue). From c6e1f98fab2cac046ed631b5c26c850a323aea53 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Thu, 18 Jan 2024 00:04:58 +0100 Subject: [PATCH 166/327] std.math.hardware: Remove mixin around RISCV implementations --- std/math/hardware.d | 8 -------- 1 file changed, 8 deletions(-) diff --git a/std/math/hardware.d b/std/math/hardware.d index 9490fe0b0db..f474ea90373 100644 --- a/std/math/hardware.d +++ b/std/math/hardware.d @@ -153,14 +153,12 @@ private: } else version (RISCV_Any) { - mixin(` uint result = void; asm pure nothrow @nogc { "frflags %0" : "=r" (result); } return result; - `); } else version (LoongArch_Any) { @@ -195,13 +193,11 @@ private: } else version (RISCV_Any) { - mixin(` uint newValues = 0x0; asm pure nothrow @nogc { "fsflags %0" : : "r" (newValues); } - `); } else version (LoongArch_Any) { @@ -875,14 +871,12 @@ private: } else version (RISCV_Any) { - mixin(` ControlState cont; asm pure nothrow @nogc { "frcsr %0" : "=r" (cont); } return cont; - `); } else version (LoongArch_Any) { @@ -930,12 +924,10 @@ private: } else version (RISCV_Any) { - mixin(` asm pure nothrow @nogc { "fscsr %0" : : "r" (newState); } - `); } else version (LoongArch_Any) { From 5976fe8c1ac4aeca87642683494b50eed5f3b2c9 Mon Sep 17 00:00:00 2001 From: Mathis Beer Date: Wed, 17 Jan 2024 14:36:35 +0100 Subject: [PATCH 167/327] Fix Bugzilla issue 24342: Actually check that range and sentinel types match in `until` before using "sentinel as subrange" mode. `until` does special magic when `Sentinel` consists of multiple elements of `Range`. However, because `Range` can be a range of ranges, in which case even a `Sentinel` that is a range may still only be a single element, we must confirm that the element type of `Sentinel` is actually the same as `Range` before enabling this. The `immutable ElementEncodingType` idiom is stolen from `startsWith`, which forms the basis of `until` anyways (see `predSatisfied`). --- std/algorithm/searching.d | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 4526aa22bc0..465723c16ed 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -5053,7 +5053,8 @@ if (isInputRange!Range) _input = input; _sentinel = sentinel; _openRight = openRight; - static if (isInputRange!Sentinel) + static if (isInputRange!Sentinel + && is(immutable ElementEncodingType!Sentinel == immutable ElementEncodingType!Range)) { _matchStarted = predSatisfied(); _done = _input.empty || _sentinel.empty || openRight && _matchStarted; @@ -5120,7 +5121,8 @@ if (isInputRange!Range) assert(!empty, "Can not popFront of an empty Until"); if (!_openRight) { - static if (isInputRange!Sentinel) + static if (isInputRange!Sentinel + && is(immutable ElementEncodingType!Sentinel == immutable ElementEncodingType!Range)) { _input.popFront(); _done = _input.empty || _sentinel.empty; @@ -5237,6 +5239,7 @@ pure @safe unittest assert(equal(r.save, "foo")); } } + // https://issues.dlang.org/show_bug.cgi?id=14543 pure @safe unittest { @@ -5267,3 +5270,10 @@ pure @safe unittest assert("one two three".until!((a,b)=>a.toUpper == b)("TWO", No.openRight).equal("one two")); } +// https://issues.dlang.org/show_bug.cgi?id=24342 +pure @safe unittest +{ + import std.algorithm.comparison : equal; + assert(["A", "BC", "D"].until("BC", No.openRight).equal(["A", "BC"])); + assert([[1], [2, 3], [4]].until([2, 3], No.openRight).equal([[1], [2, 3]])); +} From 68c412316b475aaabf81cbbd27244846f01a687f Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 20 Jan 2024 10:22:42 -0500 Subject: [PATCH 168/327] Document element type parameter for isForwardRange --- std/range/primitives.d | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/std/range/primitives.d b/std/range/primitives.d index fec5c85cbef..85b700e8cab 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -1011,6 +1011,15 @@ have a `save` function. See_Also: The header of $(MREF std,range) for tutorials on ranges. + +Params: + R = type to be tested + E = if present, the elements of the range must be + $(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) + to this type + +Returns: + `true` if R is a forward range (possibly with element type `E`), `false` if not */ enum bool isForwardRange(R) = isInputRange!R && is(typeof((R r) { return r.save; } (R.init)) == R); From 9f8de2b568e54085a52bf8ffb04215ec03fb95aa Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 20 Jan 2024 10:33:44 -0500 Subject: [PATCH 169/327] Add optional element type to isBidirectionalRange --- std/range/primitives.d | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/std/range/primitives.d b/std/range/primitives.d index 85b700e8cab..145e8ea658e 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -1077,12 +1077,25 @@ element in the range. Calling `r.back` is allowed only if calling See_Also: The header of $(MREF std,range) for tutorials on ranges. + +Params: + R = type to be tested + E = if present, the elements of the range must be + $(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) + to this type + +Returns: + `true` if R is a bidirectional range (possibly with element type `E`), `false` if not */ enum bool isBidirectionalRange(R) = isForwardRange!R && is(typeof((R r) => r.popBack)) && (is(typeof((return ref R r) => r.back)) || is(typeof(ref (return ref R r) => r.back))) && is(typeof(R.init.back.init) == ElementType!R); +/// ditto +enum bool isBidirectionalRange(R, E) = + .isBidirectionalRange!R && isQualifierConvertible!(ElementType!R, E); + /// @safe unittest { @@ -1093,6 +1106,18 @@ enum bool isBidirectionalRange(R) = isForwardRange!R auto t = r.back; // can get the back of the range auto w = r.front; static assert(is(typeof(t) == typeof(w))); // same type for front and back + + // Checking the element type + static assert( isBidirectionalRange!(int[], const int)); + static assert(!isBidirectionalRange!(int[], immutable int)); + + static assert(!isBidirectionalRange!(const(int)[], int)); + static assert( isBidirectionalRange!(const(int)[], const int)); + static assert(!isBidirectionalRange!(const(int)[], immutable int)); + + static assert(!isBidirectionalRange!(immutable(int)[], int)); + static assert( isBidirectionalRange!(immutable(int)[], const int)); + static assert( isBidirectionalRange!(immutable(int)[], immutable int)); } @safe unittest From c0557d30dc4f2d5f491f53cfd01703d5c5443938 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 20 Jan 2024 10:42:33 -0500 Subject: [PATCH 170/327] Add optional element type to isRandomAccessRange --- std/range/primitives.d | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/std/range/primitives.d b/std/range/primitives.d index 145e8ea658e..e5807deeb91 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -1167,6 +1167,15 @@ are bidirectional ranges only. See_Also: The header of $(MREF std,range) for tutorials on ranges. + +Params: + R = type to be tested + E = if present, the elements of the range must be + $(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) + to this type + +Returns: + `true` if R is a random-access range (possibly with element type `E`), `false` if not */ enum bool isRandomAccessRange(R) = is(typeof(lvalueOf!R[1]) == ElementType!R) @@ -1177,6 +1186,10 @@ enum bool isRandomAccessRange(R) = && (isInfinite!R || !is(typeof(lvalueOf!R[$ - 1])) || is(typeof(lvalueOf!R[$ - 1]) == ElementType!R)); +/// ditto +enum bool isRandomAccessRange(R, E) = + .isRandomAccessRange!R && isQualifierConvertible!(ElementType!R, E); + /// @safe unittest { @@ -1205,6 +1218,18 @@ enum bool isRandomAccessRange(R) = static if (!isInfinite!R) static assert(is(typeof(f) == typeof(r[$ - 1]))); } + + // Checking the element type + static assert( isRandomAccessRange!(int[], const int)); + static assert(!isRandomAccessRange!(int[], immutable int)); + + static assert(!isRandomAccessRange!(const(int)[], int)); + static assert( isRandomAccessRange!(const(int)[], const int)); + static assert(!isRandomAccessRange!(const(int)[], immutable int)); + + static assert(!isRandomAccessRange!(immutable(int)[], int)); + static assert( isRandomAccessRange!(immutable(int)[], const int)); + static assert( isRandomAccessRange!(immutable(int)[], immutable int)); } @safe unittest From c4391b22377d6536f6328e5dca8e2aca0b1aa885 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 20 Jan 2024 17:28:14 -0500 Subject: [PATCH 171/327] Update docs for hasSlicing with inifnite range The requirement for opSlice on an infinite range to return the result of take or takeExactly was removed in commit c828a08b64, which was included in Phobos 2.067.0, released in March 2015. However, the documentation was never updated to take this change into account. This change updates the documentation and adds a unit test for the "new" behavior. Fixes bugzilla issue 24348. --- std/range/primitives.d | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/std/range/primitives.d b/std/range/primitives.d index fec5c85cbef..b6e5961a59f 100644 --- a/std/range/primitives.d +++ b/std/range/primitives.d @@ -1695,11 +1695,9 @@ For finite ranges, the result of `opSlice` must be of the same type as the original range type. If the range defines `opDollar`, then it must support subtraction. -For infinite ranges, when $(I not) using `opDollar`, the result of -`opSlice` must be the result of $(LREF take) or $(LREF takeExactly) on the -original range (they both return the same type for infinite ranges). However, -when using `opDollar`, the result of `opSlice` must be that of the -original range type. +For infinite ranges, when $(I not) using `opDollar`, the result of `opSlice` +may be a forward range of any type. However, when using `opDollar`, the result +of `opSlice` must be of the same type as the original range type. The following expression must be true for `hasSlicing` to be `true`: @@ -1774,6 +1772,38 @@ enum bool hasSlicing(R) = isForwardRange!R static assert(hasSlicing!InfOnes); } +// https://issues.dlang.org/show_bug.cgi?id=24348 +@safe unittest +{ + static struct Slice + { + size_t length; + bool empty() => length == 0; + int front() => 0; + void popFront() { --length; } + Slice save() => this; + } + + static struct InfZeros + { + enum empty = false; + int front() => 0; + void popFront() {} + InfZeros save() => this; + + Slice opIndex(size_t[2] bounds) + { + size_t i = bounds[0], j = bounds[1]; + size_t length = i <= j ? j - i : 0; + return Slice(length); + } + + size_t[2] opSlice(size_t dim : 0)(size_t i, size_t j) => [i, j]; + } + + static assert(hasSlicing!InfZeros); +} + /** This is a best-effort implementation of `length` for any kind of range. From bf35228426529ab19e5d17a3286d187214bf024a Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sun, 21 Jan 2024 18:59:08 +0100 Subject: [PATCH 172/327] GHA: Use all 4 new CPU cores on non-Mac runners (#8899) --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 637e8baf597..bd902389af5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -34,7 +34,7 @@ jobs: OS_NAME: ${{ startsWith(matrix.os, 'ubuntu') && 'linux' || (startsWith(matrix.os, 'macos') && 'osx' || '') }} MODEL: ${{ matrix.model || '64' }} HOST_DMD: dmd - N: ${{ startsWith(matrix.os, 'macos') && '3' || '2' }} + N: ${{ startsWith(matrix.os, 'macos') && '3' || '4' }} FULL_BUILD: false # work around https://issues.dlang.org/show_bug.cgi?id=23517 MACOSX_DEPLOYMENT_TARGET: '11' From 988aacba6bf0394df9ebbd595ab30206d0230a0e Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sun, 21 Jan 2024 19:12:00 +0100 Subject: [PATCH 173/327] GHA: Add Windows jobs Analogous to https://github.com/dlang/dmd/pull/15941. --- .github/workflows/main.yml | 43 +++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bd902389af5..3ed5f291652 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,7 +10,7 @@ concurrency: cancel-in-progress: true jobs: - posix: + main: strategy: fail-fast: false matrix: @@ -26,18 +26,27 @@ jobs: os: macos-13 - job_name: macOS 12 x64 os: macos-12 + # Windows + - job_name: Windows x64 + os: windows-2022 + - job_name: Windows x86 + os: windows-2022 + model: 32 name: ${{ matrix.job_name }} runs-on: ${{ matrix.os }} timeout-minutes: 40 env: # for ci/run.sh: - OS_NAME: ${{ startsWith(matrix.os, 'ubuntu') && 'linux' || (startsWith(matrix.os, 'macos') && 'osx' || '') }} + OS_NAME: ${{ startsWith(matrix.os, 'ubuntu') && 'linux' || (startsWith(matrix.os, 'macos') && 'osx' || (startsWith(matrix.os, 'windows') && 'windows' || '')) }} MODEL: ${{ matrix.model || '64' }} HOST_DMD: dmd N: ${{ startsWith(matrix.os, 'macos') && '3' || '4' }} FULL_BUILD: false # work around https://issues.dlang.org/show_bug.cgi?id=23517 MACOSX_DEPLOYMENT_TARGET: '11' + defaults: + run: + shell: bash steps: - uses: actions/checkout@v4 with: @@ -61,16 +70,40 @@ jobs: fi git clone --branch "$REPO_BRANCH" --depth 1 https://github.com/dlang/dmd.git ../dmd - - name: Install prerequisites + + - name: 'Posix: Install prerequisites' + if: runner.os != 'Windows' run: cd ../dmd && ${{ runner.os == 'macOS' && 'ci/cirrusci.sh' || 'sudo -E ci/cirrusci.sh' }} - - name: Install host compiler + - name: 'Windows: Set up MSVC environment' + if: runner.os == 'Windows' + uses: seanmiddleditch/gha-setup-vsdevenv@v4 + with: + arch: ${{ env.MODEL == '64' && 'x64' || 'x86' }} + + - name: 'Posix: Install host compiler' + if: runner.os != 'Windows' run: cd ../dmd && ci/run.sh install_host_compiler + - name: 'Windows: Install host compiler' + if: runner.os == 'Windows' + uses: dlang-community/setup-dlang@v1.3.0 + with: + compiler: ldc-latest + - name: Build run: cd ../dmd && ci/run.sh build + env: + # on Windows, `ci/run.sh build` expects the DMD env var to be set to the DMD-CLI-compatible host compiler + DMD: ${{ runner.os == 'Windows' && 'ldmd2' || '' }} + # work around the LDC host compiler on Windows assuming the first link.exe in PATH is the MSVC one + # (VSINSTALLDIR is set, but GHA uses Git's bin\bash.exe for `shell: bash`, which prepends Git's usr\bin to PATH, with GNU link.exe) + LDC_VSDIR_FORCE: ${{ runner.os == 'Windows' && startsWith(matrix.host_dmd, 'ldc') && '1' || '' }} - name: Test dmd run: cd ../dmd && ci/run.sh test_dmd - name: Test druntime run: cd ../dmd && ci/run.sh test_druntime + - name: 'Windows x86: Add 32-bit libcurl.dll to PATH (required for Phobos unittests)' + if: runner.os == 'Windows' && env.MODEL == '32' + run: echo "$(dirname "$(which $DC)")/../lib32" >> $GITHUB_PATH - name: Test phobos run: cd ../dmd && ci/run.sh test_phobos @@ -89,7 +122,7 @@ jobs: with: fetch-depth: 50 - name: Run in VM - uses: cross-platform-actions/action@v0.21.1 + uses: cross-platform-actions/action@v0.22.0 with: operating_system: freebsd hypervisor: qemu From a6763ff705ebde9ea76e2acfd5a63216929dc662 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sun, 21 Jan 2024 20:28:04 -0500 Subject: [PATCH 174/327] Add changelog for new range predicate parameter --- changelog/is_forward_range_element.dd | 7 ------- changelog/range_predicate_element.dd | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) delete mode 100644 changelog/is_forward_range_element.dd create mode 100644 changelog/range_predicate_element.dd diff --git a/changelog/is_forward_range_element.dd b/changelog/is_forward_range_element.dd deleted file mode 100644 index 128acf883c9..00000000000 --- a/changelog/is_forward_range_element.dd +++ /dev/null @@ -1,7 +0,0 @@ -isForwardRange now takes an optional element type. - -isForwardRange now has an optional 2nd template parameter that defaults -to void. If not void, it only evaluates to true if the range's element -type is the same type as this extra argument, modulo const. For -instance, `isForwardRange!(int[], const(int))` is true, but -`isForwardRange!(int[], string)` is false. \ No newline at end of file diff --git a/changelog/range_predicate_element.dd b/changelog/range_predicate_element.dd new file mode 100644 index 00000000000..570c561c206 --- /dev/null +++ b/changelog/range_predicate_element.dd @@ -0,0 +1,24 @@ +`isForwardRange`, `isBidirectionalRange`, and `isRandomAccessRange` now take an optional element type + +In Phobos 2.106, an optional second template parameter was added to +`isInputRange` to enable conveniently checking a range's element type. Now, the +same parameter has been added to `isForwardRange`, `isBidirectionalRange`, and +`isRandomAccessRange`. + +As before, if a second type argument is passed to one of these templates, the +range's element type is checked to see if it is +$(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) +to the given type, and this additional check must pass in order for the +template to evaluate to `true`. + +Examples: +--- +// exact match +static assert( isForwardRange!(int[], int)); + +// match with qualifier conversion +static assert( isBidirectionalRange!(int[], const(int)); + +// not a match +static assert(!isRandomAccessRange!(int[], string)); +--- From e87bab2da297944a8d7d6e570dd7935ea860b366 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Thu, 25 Jan 2024 10:32:13 +0100 Subject: [PATCH 175/327] std.uni: use hex strings for case entries --- std/internal/unicode_tables.d | 1690 ++++++++++++++----------------- tools/unicode_table_generator.d | 14 +- 2 files changed, 790 insertions(+), 914 deletions(-) diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index 147fc57e11f..4f23375925b 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -75,917 +75,793 @@ struct TrieEntry(T...) SCE simpleCaseTable(size_t i) { -static immutable uint[2980] t = [ -0x0201E90B,0x0211E92D,0x0201E911,0x0211E933,0x02000496,0x02100497,0x0200A722,0x0210A723, -0x02001F79,0x02101FF9,0x02001F44,0x02101F4C,0x0200015A,0x0210015B,0x020010FD,0x02101CBD, -0x02016E4C,0x02116E6C,0x02001E38,0x02101E39,0x0201E921,0x0211E943,0x02001F23,0x02101F2B, -0x020001A0,0x021001A1,0x030003A3,0x031003C2,0x032003C3,0x020004DC,0x021004DD,0x02002CA6, -0x02102CA7,0x0200017B,0x0210017C,0x0201E906,0x0211E928,0x020010DC,0x02101C9C,0x020104CD, -0x021104F5,0x02001F65,0x02101F6D,0x0200051E,0x0210051F,0x020010D8,0x02101C98,0x02002C1A, -0x02102C4A,0x0200027D,0x02102C64,0x0200A69A,0x0210A69B,0x02001F02,0x02101F0A,0x02000522, -0x02100523,0x02002C60,0x02102C61,0x02002C1E,0x02102C4E,0x0200A650,0x0210A651,0x0200A65C, -0x0210A65D,0x020013C9,0x0210AB99,0x02010414,0x0211043C,0x020013CD,0x0210AB9D,0x020000CE, -0x021000EE,0x02001E7E,0x02101E7F,0x020013F0,0x021013F8,0x02001EC4,0x02101EC5,0x0200A78B, -0x0210A78C,0x02000114,0x02100115,0x0200042F,0x0210044F,0x0201E902,0x0211E924,0x020004D8, -0x021004D9,0x02002CAA,0x02102CAB,0x02000110,0x02100111,0x02000492,0x02100493,0x02001E34, -0x02101E35,0x020013F4,0x021013FC,0x02000224,0x02100225,0x02002CA2,0x02102CA3,0x0200A72E, -0x0210A72F,0x02016E48,0x02116E68,0x0200004A,0x0210006A,0x020013A6,0x0210AB76,0x0200015E, -0x0210015F,0x030001C4,0x031001C5,0x032001C6,0x02001F40,0x02101F48,0x0200A658,0x0210A659, -0x0200022C,0x0210022D,0x02010C9F,0x02110CDF,0x02001FA7,0x02101FAF,0x020013AE,0x0210AB7E, -0x02000042,0x02100062,0x020013D5,0x0210ABA5,0x02016E40,0x02116E60,0x020000D2,0x021000F2, -0x02001E82,0x02101E83,0x02010C97,0x02110CD7,0x020010E0,0x02101CA0,0x0200013D,0x0210013E, -0x02000406,0x02100456,0x0200029D,0x0210A7B2,0x02000139,0x0210013A,0x02000198,0x02100199, -0x02001EBC,0x02101EBD,0x020003AB,0x021003CB,0x0200040E,0x0210045E,0x0200A7B6,0x0210A7B7, -0x0200040A,0x0210045A,0x02001EC0,0x02101EC1,0x02010572,0x02110599,0x020024B9,0x021024D3, -0x02002C16,0x02102C46,0x0200019C,0x0210026F,0x020003A7,0x021003C7,0x0200A692,0x0210A693, -0x030000C5,0x031000E5,0x0320212B,0x02000526,0x02100527,0x02000266,0x0210A7AA,0x0201057A, -0x021105A1,0x0201057E,0x021105A5,0x02001FD0,0x02101FD8,0x02000046,0x02100066,0x0201E90A, -0x0211E92C,0x02000228,0x02100229,0x020013A2,0x0210AB72,0x0200A726,0x0210A727,0x02010C93, -0x02110CD3,0x0200049A,0x0210049B,0x020000D6,0x021000F6,0x0200010C,0x0210010D,0x020118A8, -0x021118C8,0x02000162,0x02100163,0x0200019E,0x02100220,0x02002C9E,0x02102C9F,0x03000392, -0x031003B2,0x032003D0,0x02001E30,0x02101E31,0x02001FA3,0x02101FAB,0x0200216D,0x0210217D, -0x0200004E,0x0210006E,0x030000B5,0x0310039C,0x032003BC,0x0200048E,0x0210048F,0x0200A72A, -0x0210A72B,0x02010410,0x02110438,0x0200038A,0x021003AF,0x02001EFE,0x02101EFF,0x020118AC, -0x021118CC,0x020001EA,0x021001EB,0x02001F06,0x02101F0E,0x02001FC3,0x02101FCC,0x020010B4, -0x02102D14,0x0200026A,0x0210A7AE,0x03000412,0x03100432,0x03201C80,0x0200A760,0x0210A761, -0x02010C9B,0x02110CDB,0x020024C8,0x021024E2,0x020001A4,0x021001A5,0x0200039F,0x021003BF, -0x020010C4,0x02102D24,0x020004A2,0x021004A3,0x02002C03,0x02102C33,0x02002CE0,0x02102CE1, -0x02010576,0x0211059D,0x020004E0,0x021004E1,0x02002C2A,0x02102C5A,0x02001ED0,0x02101ED1, -0x020000C2,0x021000E2,0x020004E8,0x021004E9,0x0200A7A6,0x0210A7A7,0x020010F9,0x02101CB9, -0x02000145,0x02100146,0x0200037C,0x021003FE,0x02001EC8,0x02101EC9,0x0200041A,0x0210043A, -0x020000CA,0x021000EA,0x02001F86,0x02101F8E,0x03000421,0x03100441,0x03201C83,0x02010404, -0x0211042C,0x02010583,0x021105AA,0x0200053F,0x0210056F,0x02000547,0x02100577,0x020013B6, -0x0210AB86,0x020013EC,0x0210ABBC,0x0200FF2C,0x0210FF4C,0x0200A7BA,0x0210A7BB,0x0200A648, -0x0210A649,0x020013C5,0x0210AB95,0x0200FF24,0x0210FF44,0x0201040F,0x02110437,0x0201041C, -0x02110444,0x02010C83,0x02110CC3,0x02000241,0x02100242,0x02001E76,0x02101E77,0x020010BC, -0x02102D1C,0x02002C22,0x02102C52,0x020010D0,0x02101C90,0x0200A768,0x0210A769,0x0200A732, -0x0210A733,0x0200011C,0x0210011D,0x02000427,0x02100447,0x02001E40,0x02101E41,0x020118B1, -0x021118D1,0x02000152,0x02100153,0x030003A1,0x031003C1,0x032003F1,0x02000397,0x021003B7, -0x020001AC,0x021001AD,0x020001E2,0x021001E3,0x02000218,0x02100219,0x0201E91A,0x0211E93C, -0x02000516,0x02100517,0x02001F27,0x02101F2F,0x0200A7C9,0x0210A7CA,0x02001FE0,0x02101FE8, -0x02002165,0x02102175,0x0200A66C,0x0210A66D,0x02000393,0x021003B3,0x02000532,0x02100562, -0x02000056,0x02100076,0x02001F33,0x02101F3B,0x02000554,0x02100584,0x03001C88,0x0310A64A, -0x0320A64B,0x0200A68E,0x0210A68F,0x020003D8,0x021003D9,0x020024C5,0x021024DF,0x02002CB2, -0x02102CB3,0x02010C82,0x02110CC2,0x02000057,0x02100077,0x02016E53,0x02116E73,0x0200FF37, -0x0210FF57,0x02001EF6,0x02101EF7,0x0201E912,0x0211E934,0x02001F12,0x02101F1A,0x020004A6, -0x021004A7,0x0200016A,0x0210016B,0x02001F34,0x02101F3C,0x02002CDC,0x02102CDD,0x020001B1, -0x0210028A,0x020118A4,0x021118C4,0x02001E28,0x02101E29,0x020001BF,0x021001F7,0x0200018B, -0x0210018C,0x020010A7,0x02102D07,0x02000128,0x02100129,0x02001E6A,0x02101E6B,0x020010AB, -0x02102D0B,0x0200041F,0x0210043F,0x02002C2E,0x02102C5E,0x02010CAF,0x02110CEF,0x020104C5, -0x021104ED,0x020118A5,0x021118C5,0x02001FE1,0x02101FE9,0x030003A6,0x031003C6,0x032003D5, -0x02002C0A,0x02102C3A,0x0200050E,0x0210050F,0x02000104,0x02100105,0x02000372,0x02100373, -0x02001E8E,0x02101E8F,0x02000396,0x021003B6,0x02001EFA,0x02101EFB,0x020003F2,0x021003F9, -0x0200A640,0x0210A641,0x020010EC,0x02101CAC,0x020118A1,0x021118C1,0x02000166,0x02100167, -0x02001F37,0x02101F3F,0x02010C86,0x02110CC6,0x020013DD,0x0210ABAD,0x02001F51,0x02101F59, -0x02002C9A,0x02102C9B,0x020001FA,0x021001FB,0x02002169,0x02102179,0x02016E57,0x02116E77, -0x020010A4,0x02102D04,0x03000053,0x03100073,0x0320017F,0x02000376,0x02100377,0x020013B1, -0x0210AB81,0x02000468,0x02100469,0x020013E4,0x0210ABB4,0x02001F96,0x02101F9E,0x02000108, -0x02100109,0x02010CA0,0x02110CE0,0x02001E66,0x02101E67,0x02001E8A,0x02101E8B,0x02001E4C, -0x02101E4D,0x02001F75,0x02101FCB,0x02002C0E,0x02102C3E,0x02001E50,0x02101E51,0x020024C0, -0x021024DA,0x0200A750,0x0210A751,0x020000DA,0x021000FA,0x020010E9,0x02101CA9,0x02002CD8, -0x02102CD9,0x02001EB8,0x02101EB9,0x0200012C,0x0210012D,0x02000252,0x02102C70,0x020004C3, -0x021004C4,0x020024C4,0x021024DE,0x020104B5,0x021104DD,0x02002C0F,0x02102C3F,0x02000533, -0x02100563,0x02000195,0x021001F6,0x02001F13,0x02101F1B,0x020104B8,0x021104E0,0x02000553, -0x02100583,0x02010425,0x0211044D,0x020013D1,0x0210ABA1,0x020004F4,0x021004F5,0x020004C7, -0x021004C8,0x02010CAC,0x02110CEC,0x020004D0,0x021004D1,0x0200A75C,0x0210A75D,0x02001E2C, -0x02101E2D,0x020010A8,0x02102D08,0x02000464,0x02100465,0x02000426,0x02100446,0x020004E4, -0x021004E5,0x020010ED,0x02101CAD,0x0200A792,0x0210A793,0x02001EDC,0x02101EDD,0x020104BC, -0x021104E4,0x02010577,0x0211059E,0x02001EA8,0x02101EA9,0x020001B8,0x021001B9,0x020000C6, -0x021000E6,0x0200FF30,0x0210FF50,0x02016E44,0x02116E64,0x0201041B,0x02110443,0x02001E0E, -0x02101E0F,0x020004D4,0x021004D5,0x02002CAE,0x02102CAF,0x02002C6B,0x02102C6C,0x0200FF23, -0x0210FF43,0x02000184,0x02100185,0x02010573,0x0211059A,0x04000398,0x041003B8,0x042003D1, -0x043003F4,0x020013D4,0x0210ABA4,0x0201E919,0x0211E93B,0x02000187,0x02100188,0x02002C13, -0x02102C43,0x0200A7A2,0x0210A7A3,0x02000194,0x02100263,0x02000416,0x02100436,0x02002CBE, -0x02102CBF,0x02001FA6,0x02101FAE,0x020104C6,0x021104EE,0x02001F82,0x02101F8A,0x020104C9, -0x021104F1,0x020013E0,0x0210ABB0,0x02000240,0x02102C7F,0x0200A7BE,0x0210A7BF,0x02001F92, -0x02101F9A,0x02000402,0x02100452,0x02000536,0x02100566,0x02000550,0x02100580,0x0200A682, -0x0210A683,0x02000386,0x021003AC,0x02001FE5,0x02101FEC,0x020024C9,0x021024E3,0x020000D3, -0x021000F3,0x020010F0,0x02101CB0,0x02001E3C,0x02101E3D,0x02002C80,0x02102C81,0x0201058A, -0x021105B1,0x02000156,0x02100157,0x02001E7A,0x02101E7B,0x020013ED,0x0210ABBD,0x0200A73E, -0x0210A73F,0x02000118,0x02100119,0x02000214,0x02100215,0x03001E60,0x03101E61,0x03201E9B, -0x02002C8A,0x02102C8B,0x0200A64C,0x0210A64D,0x03000395,0x031003B5,0x032003F5,0x020001E6, -0x021001E7,0x02001F85,0x02101F8D,0x02000512,0x02100513,0x02001F61,0x02101F69,0x0200A668, -0x0210A669,0x02010594,0x021105BB,0x02001E18,0x02101E19,0x020013B2,0x0210AB82,0x02010415, -0x0211043D,0x02010418,0x02110440,0x02000245,0x0210028C,0x02001F72,0x02101FC8,0x020118B5, -0x021118D5,0x020010B8,0x02102D18,0x020004C0,0x021004CF,0x0201040B,0x02110433,0x02000423, -0x02100443,0x020010C5,0x02102D25,0x02002C2D,0x02102C5D,0x02001F30,0x02101F38,0x020013C1, -0x0210AB91,0x0200A76C,0x0210A76D,0x020104CC,0x021104F4,0x02001F71,0x02101FBB,0x0200FF33, -0x0210FF53,0x0200216A,0x0210217A,0x02001ECC,0x02101ECD,0x020003E8,0x021003E9,0x0200A7D0, -0x0210A7D1,0x0200005A,0x0210007A,0x02010CB0,0x02110CF0,0x020001D9,0x021001DA,0x02010587, -0x021105AE,0x020001B5,0x021001B6,0x02000543,0x02100573,0x02001F22,0x02101F2A,0x02001EA0, -0x02101EA1,0x02010C8F,0x02110CCF,0x02016E54,0x02116E74,0x02001D7D,0x02102C63,0x0200A7D6, -0x0210A7D7,0x0200A74C,0x0210A74D,0x020013CE,0x0210AB9E,0x020000CF,0x021000EF,0x020010D9, -0x02101C99,0x02000045,0x02100065,0x02000136,0x02100137,0x0200040D,0x0210045D,0x02016E43, -0x02116E63,0x02001F7C,0x02101FFA,0x0200024A,0x0210024B,0x020004B8,0x021004B9,0x02002CCA, -0x02102CCB,0x02002CED,0x02102CEE,0x0200019F,0x02100275,0x020003A4,0x021003C4,0x0200A74E, -0x0210A74F,0x020104C0,0x021104E8,0x02001E16,0x02101E17,0x020013AF,0x0210AB7F,0x02000500, -0x02100501,0x02002C82,0x02102C83,0x020010BD,0x02102D1D,0x0201E916,0x0211E938,0x02010CA3, -0x02110CE3,0x02010C94,0x02110CD4,0x020104C2,0x021104EA,0x030003A6,0x031003C6,0x032003D5, -0x02016E4D,0x02116E6D,0x020118B4,0x021118D4,0x020013E9,0x0210ABB9,0x02001F41,0x02101F49, -0x02000287,0x0210A7B1,0x02000542,0x02100572,0x02001E58,0x02101E59,0x02001F43,0x02101F4B, -0x02002CEB,0x02102CEC,0x020013EB,0x0210ABBB,0x02001FD1,0x02101FD9,0x02001EE8,0x02101EE9, -0x020013A3,0x0210AB73,0x020003EE,0x021003EF,0x020118B8,0x021118D8,0x02010C9E,0x02110CDE, -0x0201E920,0x0211E942,0x020000FF,0x02100178,0x02010417,0x0211043F,0x020118A9,0x021118C9, -0x02001FB0,0x02101FB8,0x02002C88,0x02102C89,0x020013A9,0x0210AB79,0x0201E909,0x0211E92B, -0x020013C2,0x0210AB92,0x020024B6,0x021024D0,0x02001E5E,0x02101E5F,0x02002C69,0x02102C6A, -0x0201041F,0x02110447,0x0200037F,0x021003F3,0x02000540,0x02100570,0x02000390,0x02101FD3, -0x0300004B,0x0310006B,0x0320212A,0x020004F8,0x021004F9,0x020013F3,0x021013FB,0x020000C9, -0x021000E9,0x0200040F,0x0210045F,0x020010B5,0x02102D15,0x0200A746,0x0210A747,0x020000CD, -0x021000ED,0x02000476,0x02100477,0x0200039E,0x021003BE,0x02001F20,0x02101F28,0x020010FA, -0x02101CBA,0x02002C21,0x02102C51,0x02001EA6,0x02101EA7,0x02001F83,0x02101F8B,0x0200053C, -0x0210056C,0x02001F01,0x02101F09,0x02002CC2,0x02102CC3,0x02000208,0x02100209,0x020013E3, -0x0210ABB3,0x0200A796,0x0210A797,0x02001F64,0x02101F6C,0x02010592,0x021105B9,0x020004BE, -0x021004BF,0x02001F91,0x02101F99,0x020003E6,0x021003E7,0x02001EE0,0x02101EE1,0x02001FF3, -0x02101FFC,0x02000413,0x02100433,0x0200042E,0x0210044E,0x020104CA,0x021104F2,0x02002C00, -0x02102C30,0x020010DB,0x02101C9B,0x020010F6,0x02101CB6,0x020118BE,0x021118DE,0x020001A7, -0x021001A8,0x020010C3,0x02102D23,0x02000415,0x02100435,0x02001E1E,0x02101E1F,0x02000506, -0x02100507,0x02001E64,0x02101E65,0x020000C7,0x021000E7,0x0200047C,0x0210047D,0x02001E52, -0x02101E53,0x020010F4,0x02101CB4,0x02010586,0x021105AD,0x0200046A,0x0210046B,0x02002C27, -0x02102C57,0x02010C89,0x02110CC9,0x020010A2,0x02102D02,0x0200FF32,0x0210FF52,0x04000398, -0x041003B8,0x042003D1,0x043003F4,0x030003A9,0x031003C9,0x03202126,0x02001EDA,0x02101EDB, -0x0201E901,0x0211E923,0x0200A79C,0x0210A79D,0x020010D3,0x02101C93,0x020024BC,0x021024D6, -0x0200FF2F,0x0210FF4F,0x02000250,0x02102C6F,0x02002C29,0x02102C59,0x020004B2,0x021004B3, -0x02010419,0x02110441,0x02000210,0x02100211,0x02002C15,0x02102C45,0x02016E47,0x02116E67, -0x0200A754,0x0210A755,0x02016E45,0x02116E65,0x030001C7,0x031001C8,0x032001C9,0x0200047E, -0x0210047F,0x020001FC,0x021001FD,0x0200020E,0x0210020F,0x02000244,0x02100289,0x02001F77, -0x02101FDB,0x02002CD6,0x02102CD7,0x02010589,0x021105B0,0x04000422,0x04100442,0x04201C84, -0x04301C85,0x020010E7,0x02101CA7,0x020004FA,0x021004FB,0x020010D5,0x02101C95,0x02001EAC, -0x02101EAD,0x020010B7,0x02102D17,0x020013A1,0x0210AB71,0x0200A7C2,0x0210A7C3,0x0201E907, -0x0211E929,0x020013F5,0x021013FD,0x02001EE2,0x02101EE3,0x02001F62,0x02101F6A,0x02001E92, -0x02101E93,0x020001D5,0x021001D6,0x02002C06,0x02102C36,0x02010C8B,0x02110CCB,0x02001F70, -0x02101FBA,0x020003EC,0x021003ED,0x0201E915,0x0211E937,0x0200216E,0x0210217E,0x020013C0, -0x0210AB90,0x02001EF4,0x02101EF5,0x0200FF3A,0x0210FF5A,0x020118BC,0x021118DC,0x020004AA, -0x021004AB,0x02002163,0x02102173,0x02001E1C,0x02101E1D,0x020013C8,0x0210AB98,0x020118AF, -0x021118CF,0x02010C98,0x02110CD8,0x02010571,0x02110598,0x02010CA7,0x02110CE7,0x02000051, -0x02100071,0x020004F2,0x021004F3,0x02010CAA,0x02110CEA,0x020010AF,0x02102D0F,0x02002C8E, -0x02102C8F,0x02002CC4,0x02102CC5,0x02001E0A,0x02101E0B,0x02016E50,0x02116E70,0x0201058E, -0x021105B5,0x02010411,0x02110439,0x02010423,0x0211044B,0x0200053A,0x0210056A,0x02001E6C, -0x02101E6D,0x020104BE,0x021104E6,0x02010424,0x0211044C,0x020010A9,0x02102D09,0x020024C2, -0x021024DC,0x02010C81,0x02110CC1,0x020013BC,0x0210AB8C,0x03000462,0x03100463,0x03201C87, -0x020118A6,0x021118C6,0x02001E4A,0x02101E4B,0x02002162,0x02102172,0x02001ED4,0x02101ED5, -0x020010AA,0x02102D0A,0x020004EC,0x021004ED,0x02002C0C,0x02102C3C,0x0200A79A,0x0210A79B, -0x020004CB,0x021004CC,0x020104BD,0x021104E5,0x02000370,0x02100371,0x0201E914,0x0211E936, -0x020003DA,0x021003DB,0x02001F35,0x02101F3D,0x02016E51,0x02116E71,0x03000392,0x031003B2, -0x032003D0,0x02002C96,0x02102C97,0x02000391,0x021003B1,0x02000534,0x02100564,0x0200041B, -0x0210043B,0x020013DF,0x0210ABAF,0x02002C2C,0x02102C5C,0x02000124,0x02100125,0x02010CA2, -0x02110CE2,0x02001E8C,0x02101E8D,0x02001EB4,0x02101EB5,0x0200016C,0x0210016D,0x02001E02, -0x02101E03,0x0200019A,0x0210023D,0x02000102,0x02100103,0x02001F14,0x02101F1C,0x0200FF28, -0x0210FF48,0x02010C80,0x02110CC0,0x020010EE,0x02101CAE,0x02001F55,0x02101F5D,0x0200A77B, -0x0210A77C,0x02000059,0x02100079,0x0200014A,0x0210014B,0x02001E24,0x02101E25,0x020013BD, -0x0210AB8D,0x02002CBC,0x02102CBD,0x0201040D,0x02110435,0x0201058F,0x021105B6,0x020118A7, -0x021118C7,0x0200A660,0x0210A661,0x02000514,0x02100515,0x0200052E,0x0210052F,0x020004A4, -0x021004A5,0x02000400,0x02100450,0x02016E58,0x02116E78,0x0200A64E,0x0210A64F,0x0200FF2E, -0x0210FF4E,0x0201040C,0x02110434,0x020000DB,0x021000FB,0x020001CD,0x021001CE,0x020010E8, -0x02101CA8,0x0200054F,0x0210057F,0x0200A738,0x0210A739,0x02016E5F,0x02116E7F,0x02001D79, -0x0210A77D,0x0201E90F,0x0211E931,0x02002C07,0x02102C37,0x020010A3,0x02102D03,0x0200A7A0, -0x0210A7A1,0x03000421,0x03100441,0x03201C83,0x0200A680,0x0210A681,0x02000282,0x0210A7C5, -0x020024CB,0x021024E5,0x02000401,0x02100451,0x0200A758,0x0210A759,0x02000058,0x02100078, -0x02000193,0x02100260,0x02010CA1,0x02110CE1,0x0200054E,0x0210057E,0x02000186,0x02100254, -0x020013DC,0x0210ABAC,0x020024BD,0x021024D7,0x020001B3,0x021001B4,0x0200A696,0x0210A697, -0x02000216,0x02100217,0x02001ECE,0x02101ECF,0x02002168,0x02102178,0x0201E90E,0x0211E930, -0x02002C12,0x02102C42,0x02002C2F,0x02102C5F,0x02010CAB,0x02110CEB,0x02001E86,0x02101E87, -0x03000412,0x03100432,0x03201C80,0x020013D6,0x0210ABA6,0x02001EBA,0x02101EBB,0x0201E91B, -0x0211E93D,0x0201041A,0x02110442,0x02001EEE,0x02101EEF,0x0200FF31,0x0210FF51,0x0200A7BC, -0x0210A7BD,0x020001DB,0x021001DC,0x020001A6,0x02100280,0x02001F07,0x02101F0F,0x020118BD, -0x021118DD,0x020000C8,0x021000E8,0x020004D2,0x021004D3,0x020010E1,0x02101CA1,0x020013B7, -0x0210AB87,0x02010585,0x021105AC,0x02016E4B,0x02116E6B,0x02000172,0x02100173,0x0200049E, -0x0210049F,0x020004E6,0x021004E7,0x020010B0,0x02102D10,0x02002C9C,0x02102C9D,0x020001EE, -0x021001EF,0x020104B4,0x021104DC,0x02010C87,0x02110CC7,0x020013BA,0x0210AB8A,0x02001E10, -0x02101E11,0x02000230,0x02100231,0x02000428,0x02100448,0x02002CD0,0x02102CD1,0x020118A0, -0x021118C0,0x020003E0,0x021003E1,0x02010588,0x021105AF,0x0200A780,0x0210A781,0x020010F5, -0x02101CB5,0x0200053B,0x0210056B,0x020000D5,0x021000F5,0x03000414,0x03100434,0x03201C81, -0x02001FA4,0x02101FAC,0x0200012A,0x0210012B,0x02000052,0x02100072,0x020024B7,0x021024D1, -0x0201E908,0x0211E92A,0x04000398,0x041003B8,0x042003D1,0x043003F4,0x02000202,0x02100203, -0x02000271,0x02102C6E,0x02000470,0x02100471,0x02002C1B,0x02102C4B,0x0200048A,0x0210048B, -0x0200A752,0x0210A753,0x0200FF25,0x0210FF45,0x02000407,0x02100457,0x020000C1,0x021000E1, -0x02001E44,0x02101E45,0x02001F97,0x02101F9F,0x02000548,0x02100578,0x0200021C,0x0210021D, -0x020013E5,0x0210ABB5,0x0200051A,0x0210051B,0x02002CB6,0x02102CB7,0x0200A654,0x0210A655, -0x02010403,0x0211042B,0x02001E72,0x02101E73,0x020010D4,0x02101C94,0x020104C1,0x021104E9, -0x02010C8A,0x02110CCA,0x02001E2A,0x02101E2B,0x03000462,0x03100463,0x03201C87,0x02001F76, -0x02101FDA,0x03000053,0x03100073,0x0320017F,0x02002C26,0x02102C56,0x020013A0,0x0210AB70, -0x020004C5,0x021004C6,0x020003FA,0x021003FB,0x02000555,0x02100585,0x020013E8,0x0210ABB8, -0x030001C7,0x031001C8,0x032001C9,0x02001F42,0x02101F4A,0x02001F67,0x02101F6F,0x0201057C, -0x021105A3,0x0200A7B4,0x0210A7B5,0x0200A698,0x0210A699,0x0201E904,0x0211E926,0x0200040C, -0x0210045C,0x020010DA,0x02101C9A,0x020000D0,0x021000F0,0x02016E46,0x02116E66,0x02001EC2, -0x02101EC3,0x020001E4,0x021001E5,0x02000044,0x02100064,0x0200017D,0x0210017E,0x02001F21, -0x02101F29,0x0200FF39,0x0210FF59,0x020013AC,0x0210AB7C,0x02001F00,0x02101F08,0x020003A5, -0x021003C5,0x02000158,0x02100159,0x020104CF,0x021104F7,0x02001E3A,0x02101E3B,0x0200A72C, -0x0210A72D,0x020118B7,0x021118D7,0x02000112,0x02100113,0x02001E36,0x02101E37,0x02016E4E, -0x02116E6E,0x02001F7D,0x02101FFB,0x02000494,0x02100495,0x02001E80,0x02101E81,0x02000116, -0x02100117,0x0200042D,0x0210044D,0x020013F2,0x021013FA,0x02000179,0x0210017A,0x020004DA, -0x021004DB,0x02002CA8,0x02102CA9,0x020000CC,0x021000EC,0x020001A2,0x021001A3,0x030003A1, -0x031003C1,0x032003F1,0x02001E7C,0x02101E7D,0x020013CF,0x0210AB9F,0x02010412,0x0211043A, -0x02000520,0x02100521,0x02002C1C,0x02102C4C,0x0200026B,0x02102C62,0x02010591,0x021105B8, -0x0200015C,0x0210015D,0x0200A652,0x0210A653,0x0200FF26,0x0210FF46,0x020001E8,0x021001E9, -0x020010B6,0x02102D16,0x0200A656,0x0210A657,0x0200051C,0x0210051D,0x020013C3,0x0210AB93, -0x020104CB,0x021104F3,0x02001EC6,0x02101EC7,0x020001E0,0x021001E1,0x02001F63,0x02101F6B, -0x02002C01,0x02102C31,0x0201E900,0x0211E922,0x02001E78,0x02101E79,0x020024CE,0x021024E8, -0x0200A76A,0x0210A76B,0x0200011A,0x0210011B,0x02000429,0x02100449,0x02001F84,0x02101F8C, -0x020010D6,0x02101C96,0x02001FB1,0x02101FB9,0x0200A762,0x0210A763,0x02010CB2,0x02110CF2, -0x02002C20,0x02102C50,0x020010BE,0x02102D1E,0x0201041E,0x02110446,0x020004E2,0x021004E3, -0x020004DE,0x021004DF,0x020013EA,0x0210ABBA,0x02000541,0x02100571,0x02000545,0x02100575, -0x02001F25,0x02101F2D,0x02000154,0x02100155,0x02002C24,0x02102C54,0x020013EE,0x0210ABBE, -0x02000181,0x02100253,0x030003A3,0x031003C2,0x032003C3,0x020118B3,0x021118D3,0x020010BA, -0x02102D1A,0x02000180,0x02100243,0x02001E3E,0x02101E3F,0x020010FF,0x02101CBF,0x02010C88, -0x02110CC8,0x020010D2,0x02101C92,0x0200A76E,0x0210A76F,0x03001C88,0x0310A64A,0x0320A64B, -0x020010B2,0x02102D12,0x020013C7,0x0210AB97,0x02000518,0x02100519,0x0200A766,0x0210A767, -0x020001EC,0x021001ED,0x020104C3,0x021104EB,0x02010574,0x0211059B,0x0201E91C,0x0211E93E, -0x020010E2,0x02101CA2,0x02002C05,0x02102C35,0x020004A0,0x021004A1,0x02001E42,0x02101E43, -0x020013B4,0x0210AB84,0x020118BF,0x021118DF,0x02000150,0x02100151,0x02002CB0,0x02102CB1, -0x020013A4,0x0210AB74,0x020004C1,0x021004C2,0x030001CA,0x031001CB,0x032001CC,0x0200004C, -0x0210006C,0x020104C7,0x021104EF,0x02016E5A,0x02116E7A,0x02000222,0x02100223,0x02000490, -0x02100491,0x02002CF2,0x02102CF3,0x02010595,0x021105BC,0x0200053D,0x0210056D,0x02000388, -0x021003AD,0x02000549,0x02100579,0x020013E2,0x0210ABB2,0x02016E4A,0x02116E6A,0x02001EFC, -0x02101EFD,0x02001F90,0x02101F98,0x020004D6,0x021004D7,0x0200A7B8,0x0210A7B9,0x03000414, -0x03100434,0x03201C81,0x02010CAD,0x02110CED,0x020010F7,0x02101CB7,0x02016E55,0x02116E75, -0x0200A728,0x0210A729,0x02001E00,0x02101E01,0x02000232,0x02100233,0x020010A5,0x02102D05, -0x02001F15,0x02101F1D,0x030003A9,0x031003C9,0x03202126,0x0200013B,0x0210013C,0x02000408, -0x02100458,0x020000DC,0x021000FC,0x02001EBE,0x02101EBF,0x02002C18,0x02102C48,0x0200A7A8, -0x0210A7A9,0x0200216B,0x0210217B,0x02002C10,0x02102C40,0x02002CDE,0x02102CDF,0x0200029E, -0x0210A7B0,0x020000D4,0x021000F4,0x020010EF,0x02101CAF,0x02000551,0x02100581,0x020013DA, -0x0210ABAA,0x02000535,0x02100565,0x02010C9D,0x02110CDD,0x020024C6,0x021024E0,0x02000410, -0x02100430,0x02001EB6,0x02101EB7,0x02010416,0x0211043E,0x02016E42,0x02116E62,0x02000164, -0x02100165,0x02002CA0,0x02102CA1,0x02001E2E,0x02101E2F,0x02010C95,0x02110CD5,0x02000498, -0x02100499,0x0200010A,0x0210010B,0x020118AA,0x021118CA,0x02001E88,0x02101E89,0x02000528, -0x02100529,0x020013D7,0x0210ABA7,0x0200A65A,0x0210A65B,0x0200022A,0x0210022B,0x02001FA5, -0x02101FAD,0x020104B3,0x021104DB,0x0201E90C,0x0211E92E,0x020024BB,0x021024D5,0x020001F4, -0x021001F5,0x0200A690,0x0210A691,0x0200FF29,0x0210FF49,0x02002C75,0x02102C76,0x02002CB8, -0x02102CB9,0x02010401,0x02110429,0x02002C0D,0x02102C3D,0x020104D0,0x021104F8,0x0201E913, -0x0211E935,0x020001AF,0x021001B0,0x0200A7C7,0x0210A7C8,0x020013BF,0x0210AB8F,0x02010402, -0x0211042A,0x020010EA,0x02101CAA,0x020104BF,0x021104E7,0x0201058D,0x021105B4,0x02002164, -0x02102174,0x0200018E,0x021001DD,0x020001D3,0x021001D4,0x02001F10,0x02101F18,0x02001F57, -0x02101F5F,0x02001ED2,0x02101ED3,0x0200FF2A,0x0210FF4A,0x02001E04,0x02101E05,0x020004EE, -0x021004EF,0x02002C94,0x02102C95,0x020000C0,0x021000E0,0x020013DB,0x0210ABAB,0x020001B2, -0x0210028B,0x02010426,0x0211044E,0x0200A662,0x0210A663,0x02000054,0x02100074,0x02000556, -0x02100586,0x0300042A,0x0310044A,0x03201C86,0x02010422,0x0211044A,0x02001F36,0x02101F3E, -0x0200A794,0x0210A7C4,0x020004CD,0x021004CE,0x020104BB,0x021104E3,0x0200023B,0x0210023C, -0x020001CF,0x021001D0,0x0200050C,0x0210050D,0x0200A646,0x0210A647,0x02001E46,0x02101E47, -0x02010CA6,0x02110CE6,0x0200A779,0x0210A77A,0x0200FF36,0x0210FF56,0x020118A2,0x021118C2, -0x020004EA,0x021004EB,0x0200041D,0x0210043D,0x02016E52,0x02116E72,0x0200A688,0x0210A689, -0x02001EB2,0x02101EB3,0x02002160,0x02102170,0x02001ED6,0x02101ED7,0x020024C3,0x021024DD, -0x02016E5E,0x02116E7E,0x020004AC,0x021004AD,0x0201E910,0x0211E932,0x0200023E,0x02102C66, -0x02002CB4,0x02102CB5,0x0200FF2D,0x0210FF4D,0x0200014C,0x0210014D,0x02001E22,0x02101E23, -0x020013BB,0x0210AB8B,0x02000143,0x02100144,0x02010581,0x021105A8,0x02000170,0x02100171, -0x02001E94,0x02101E95,0x02002C28,0x02102C58,0x0201040E,0x02110436,0x020104B2,0x021104DA, -0x0200A798,0x0210A799,0x020013B8,0x0210AB88,0x02001E70,0x02101E71,0x04000422,0x04100442, -0x04201C84,0x04301C85,0x02010C85,0x02110CC5,0x02001EAE,0x02101EAF,0x02000122,0x02100123, -0x02010C8C,0x02110CCC,0x02010405,0x0211042D,0x02000420,0x02100440,0x020001AE,0x02100288, -0x0200021A,0x0210021B,0x0200038C,0x021003CC,0x02001F95,0x02101F9D,0x04000345,0x04100399, -0x042003B9,0x04301FBE,0x0200018A,0x02100257,0x02002C90,0x02102C91,0x020010B1,0x02102D11, -0x0200011E,0x0210011F,0x02001E08,0x02101E09,0x0200A7C0,0x0210A7C1,0x020013E7,0x0210ABB7, -0x02010580,0x021105A7,0x0200041C,0x0210043C,0x0200FB05,0x0210FB06,0x0200A7A4,0x0210A7A5, -0x02001E74,0x02101E75,0x02002C14,0x02102C44,0x0201E90D,0x0211E92F,0x020013A5,0x0210AB75, -0x020010F3,0x02101CB3,0x020024BA,0x021024D4,0x0200013F,0x02100140,0x0200039D,0x021003BD, -0x02002CE2,0x02102CE3,0x020010A1,0x02102D01,0x02000508,0x02100509,0x0200004D,0x0210006D, -0x02000389,0x021003AE,0x0200048C,0x0210048D,0x02002C04,0x02102C34,0x0200216F,0x0210217F, -0x020004B0,0x021004B1,0x02002CD2,0x02102CD3,0x0200A734,0x0210A735,0x02010584,0x021105AB, -0x02000050,0x02100070,0x02000160,0x02100161,0x02010CA9,0x02110CE9,0x02001E32,0x02101E33, -0x02000200,0x02100201,0x020118AB,0x021118CB,0x0200A786,0x0210A787,0x020118BB,0x021118DB, -0x020118AE,0x021118CE,0x0200021E,0x0210021F,0x020003AA,0x021003CA,0x020010C2,0x02102D22, -0x020013C4,0x0210AB94,0x02000539,0x02100569,0x0200A74A,0x0210A74B,0x020000C3,0x021000E3, -0x0200046E,0x0210046F,0x0200054D,0x0210057D,0x020010E3,0x02101CA3,0x020003DE,0x021003DF, -0x020024CA,0x021024E4,0x04000345,0x04100399,0x042003B9,0x04301FBE,0x02010C99,0x02110CD9, -0x0200A75A,0x0210A75B,0x02000419,0x02100439,0x02002C09,0x02102C39,0x0200037D,0x021003FF, -0x02001F26,0x02101F2E,0x020118B2,0x021118D2,0x02002183,0x02102184,0x02002C23,0x02102C53, -0x02000132,0x02100133,0x02001E56,0x02101E57,0x020010AE,0x02102D0E,0x0200A740,0x0210A741, -0x020000DD,0x021000FD,0x020010E6,0x02101CA6,0x03001E60,0x03101E61,0x03201E9B,0x02000478, -0x02100479,0x0200022E,0x0210022F,0x0200A694,0x0210A695,0x0200052C,0x0210052D,0x02010570, -0x02110597,0x0200A666,0x0210A667,0x020013A8,0x0210AB78,0x02010C96,0x02110CD6,0x0200020A, -0x0210020B,0x020024BF,0x021024D9,0x020013CB,0x0210AB9B,0x02010C9C,0x02110CDC,0x0300041E, -0x0310043E,0x03201C82,0x02001E84,0x02101E85,0x02001EF0,0x02101EF1,0x02016E59,0x02116E79, -0x02002CA4,0x02102CA5,0x0200A724,0x0210A725,0x0200049C,0x0210049D,0x0200010E,0x0210010F, -0x020104D3,0x021104FB,0x0201E903,0x0211E925,0x02000191,0x02100192,0x020013DE,0x0210ABAE, -0x030003A0,0x031003C0,0x032003D6,0x020013AD,0x0210AB7D,0x02000206,0x02100207,0x02001F45, -0x02101F4D,0x020003EA,0x021003EB,0x020010BB,0x02102D1B,0x02000474,0x02100475,0x0200FF38, -0x0210FF58,0x020004FE,0x021004FF,0x02002C84,0x02102C85,0x02010413,0x0211043B,0x02002C1F, -0x02102C4F,0x02001E5C,0x02101E5D,0x02001EE4,0x02101EE5,0x02002CC8,0x02102CC9,0x020104CE, -0x021104F6,0x020004BA,0x021004BB,0x0201E905,0x0211E927,0x020000D1,0x021000F1,0x02000472, -0x02100473,0x020118B6,0x021118D6,0x02001F78,0x02101FF8,0x02000043,0x02100063,0x02001EA2, -0x02101EA3,0x02001F24,0x02101F2C,0x0200019D,0x02100272,0x020004B6,0x021004B7,0x020000DF, -0x02101E9E,0x02001F87,0x02101F8F,0x02001E14,0x02101E15,0x02001EE6,0x02101EE7,0x0200040B, -0x0210045B,0x02000409,0x02100459,0x0201057D,0x021105A4,0x020003A8,0x021003C8,0x02001E5A, -0x02101E5B,0x0201057F,0x021105A6,0x02000544,0x02100574,0x020010FE,0x02101CBE,0x02001E12, -0x02101E13,0x020010B9,0x02102D19,0x02000047,0x02100067,0x020004FC,0x021004FD,0x02010C92, -0x02110CD2,0x02002C86,0x02102C87,0x02001E1A,0x02101E1B,0x02010C90,0x02110CD0,0x020010BF, -0x02102D1F,0x020013CA,0x0210AB9A,0x02016E49,0x02116E69,0x02000041,0x02100061,0x020001BC, -0x021001BD,0x02001EEA,0x02101EEB,0x02000502,0x02100503,0x02000248,0x02100249,0x020010DF, -0x02101C9F,0x030001C4,0x031001C5,0x032001C6,0x02000546,0x02100576,0x020013EF,0x0210ABBF, -0x02002CCC,0x02102CCD,0x020010D7,0x02101C97,0x020013A7,0x0210AB77,0x0200047A,0x0210047B, -0x02000134,0x02100135,0x0300042A,0x0310044A,0x03201C86,0x02002C19,0x02102C49,0x02000204, -0x02100205,0x0200025C,0x0210A7AB,0x020024CF,0x021024E9,0x02001E54,0x02101E55,0x02010579, -0x021105A0,0x0200054A,0x0210057A,0x0200A684,0x0210A685,0x0200FF27,0x0210FF47,0x02001F05, -0x02101F0D,0x02002132,0x0210214E,0x0200024C,0x0210024D,0x020013B5,0x0210AB85,0x02002CC6, -0x02102CC7,0x02010408,0x02110430,0x02002C1D,0x02102C4D,0x0200023F,0x02102C7E,0x0200A742, -0x0210A743,0x02001E62,0x02101E63,0x02010CA8,0x02110CE8,0x030000B5,0x0310039C,0x032003BC, -0x02001F81,0x02101F89,0x02010C9A,0x02110CDA,0x0200012E,0x0210012F,0x02000403,0x02100453, -0x020001FE,0x021001FF,0x04000345,0x04100399,0x042003B9,0x04301FBE,0x02000174,0x02100175, -0x020003CF,0x021003D7,0x020024CD,0x021024E7,0x02001FB3,0x02101FBC,0x020118AD,0x021118CD, -0x0200A744,0x0210A745,0x020000D9,0x021000F9,0x02001E0C,0x02101E0D,0x02002C17,0x02102C47, -0x020003E2,0x021003E3,0x0200026C,0x0210A7AD,0x0200A756,0x0210A757,0x02000405,0x02100455, -0x02000197,0x02100268,0x02001F60,0x02101F68,0x02001EEC,0x02101EED,0x02002C8C,0x02102C8D, -0x020010F2,0x02101CB2,0x020104B6,0x021104DE,0x0201E91D,0x0211E93F,0x0201040A,0x02110432, -0x020013C6,0x0210AB96,0x02016E41,0x02116E61,0x02000424,0x02100444,0x020001A9,0x02100283, -0x0300039A,0x031003BA,0x032003F0,0x020010E5,0x02101CA5,0x020104C8,0x021104F0,0x02010407, -0x0211042F,0x020013D0,0x0210ABA0,0x02001FA2,0x02101FAA,0x0200046C,0x0210046D,0x020010A0, -0x02102D00,0x0200A782,0x0210A783,0x030000C5,0x031000E5,0x0320212B,0x020004B4,0x021004B5, -0x02002CCE,0x02102CCF,0x0200A73A,0x0210A73B,0x0200FF21,0x0210FF41,0x020104B9,0x021104E1, -0x02001EA4,0x02101EA5,0x0200038F,0x021003CE,0x020024BE,0x021024D8,0x020003B0,0x02101FE3, -0x02000049,0x02100069,0x0201E91F,0x0211E941,0x02000246,0x02100247,0x02001F73,0x02101FC9, -0x02002C67,0x02102C68,0x02002166,0x02102176,0x02000100,0x02100101,0x020003E4,0x021003E5, -0x020013D2,0x0210ABA2,0x0200A79E,0x0210A79F,0x02001FA0,0x02101FA8,0x02010CB1,0x02110CF1, -0x02016E5D,0x02116E7D,0x020010C1,0x02102D21,0x0200A7F5,0x0210A7F6,0x020013BE,0x0210AB8E, -0x0200042C,0x0210044C,0x020010DD,0x02101C9D,0x02001F93,0x02101F9B,0x0200024E,0x0210024F, -0x020004BC,0x021004BD,0x02000176,0x02100177,0x020013AB,0x0210AB7B,0x020013E1,0x0210ABB1, -0x02000504,0x02100505,0x02001F03,0x02101F0B,0x0200A686,0x0210A687,0x0200054C,0x0210057C, -0x02016E4F,0x02116E6F,0x020010EB,0x02101CAB,0x020013D9,0x0210ABA9,0x0200023A,0x02102C65, -0x020004A8,0x021004A9,0x02002CDA,0x02102CDB,0x0300041E,0x0310043E,0x03201C82,0x02000394, -0x021003B4,0x02002C72,0x02102C73,0x02000510,0x02100511,0x02001E26,0x02101E27,0x0200A642, -0x0210A643,0x020004C9,0x021004CA,0x02000147,0x02100148,0x02001EB0,0x02101EB1,0x0200A75E, -0x0210A75F,0x0201058C,0x021105B3,0x0200A73C,0x0210A73D,0x020104D1,0x021104F9,0x020104D2, -0x021104FA,0x02010590,0x021105B7,0x02000055,0x02100075,0x02001F11,0x02101F19,0x0200037B, -0x021003FD,0x02001F31,0x02101F39,0x02002CBA,0x02102CBB,0x02000552,0x02100582,0x0200A68C, -0x0210A68D,0x02001E6E,0x02101E6F,0x02002167,0x02102177,0x020000DE,0x021000FE,0x02000190, -0x0210025B,0x02001EF8,0x02101EF9,0x020104B0,0x021104D8,0x02010C8E,0x02110CCE,0x02002C08, -0x02102C38,0x0200016E,0x0210016F,0x02016E5C,0x02116E7C,0x020010CD,0x02102D2D,0x02001F7B, -0x02101FEB,0x02001E90,0x02101E91,0x020013B3,0x0210AB83,0x020001D1,0x021001D2,0x02001F53, -0x02101F5B,0x02000126,0x02100127,0x02001E48,0x02101E49,0x02002C98,0x02102C99,0x02010400, -0x02110428,0x02010CA4,0x02110CE4,0x020118B9,0x021118D9,0x020013B0,0x0210AB80,0x02001ED8, -0x02101ED9,0x02001F74,0x02101FCA,0x04000422,0x04100442,0x04201C84,0x04301C85,0x02001EF2, -0x02101EF3,0x02002161,0x02102171,0x02010420,0x02110448,0x030001F1,0x031001F2,0x032001F3, -0x020001D7,0x021001D8,0x0200A68A,0x0210A68B,0x020003F7,0x021003F8,0x0200FF35,0x0210FF55, -0x020003DC,0x021003DD,0x02010C8D,0x02110CCD,0x02000418,0x02100438,0x02000212,0x02100213, -0x020004F0,0x021004F1,0x020024C1,0x021024DB,0x0200050A,0x0210050B,0x0201E917,0x0211E939, -0x0200A644,0x0210A645,0x02000537,0x02100567,0x020010AC,0x02102D0C,0x020010AD,0x02102D0D, -0x020024C7,0x021024E1,0x02000460,0x02100461,0x02002C2B,0x02102C5B,0x02016E56,0x02116E76, -0x020010C7,0x02102D27,0x02010406,0x0211042E,0x02002CD4,0x02102CD5,0x020010F1,0x02101CB1, -0x02001F7A,0x02101FEA,0x02002C0B,0x02102C3B,0x0200FF34,0x0210FF54,0x02000417,0x02100437, -0x020118BA,0x021118DA,0x030001F1,0x031001F2,0x032001F3,0x03000395,0x031003B5,0x032003F5, -0x020001B7,0x02100292,0x0200018F,0x02100259,0x02000538,0x02100568,0x0200A66A,0x0210A66B, -0x02001F32,0x02101F3A,0x02010421,0x02110449,0x0200052A,0x0210052B,0x02000425,0x02100445, -0x0200A784,0x0210A785,0x0200004F,0x0210006F,0x0200A664,0x0210A665,0x020104B1,0x021104D9, -0x020000C4,0x021000E4,0x02010CA5,0x02110CE5,0x02001EAA,0x02101EAB,0x020013D8,0x0210ABA8, -0x020010E4,0x02101CA4,0x020000D8,0x021000F8,0x030001CA,0x031001CB,0x032001CC,0x020010D1, -0x02101C91,0x02010575,0x0211059C,0x0200216C,0x0210217C,0x02002C02,0x02102C32,0x02016E5B, -0x02116E7B,0x0200A7D8,0x0210A7D9,0x0200FF22,0x0210FF42,0x02000404,0x02100454,0x020010B3, -0x02102D13,0x02001ECA,0x02101ECB,0x02010409,0x02110431,0x0201E918,0x0211E93A,0x020004F6, -0x021004F7,0x02002CC0,0x02102CC1,0x02001E20,0x02101E21,0x020104B7,0x021104DF,0x0200039B, -0x021003BB,0x02000196,0x02100269,0x02002C25,0x02102C55,0x0200A790,0x0210A791,0x0200A764, -0x0210A765,0x0200020C,0x0210020D,0x02001F94,0x02101F9C,0x020118B0,0x021118D0,0x02000182, -0x02100183,0x02002CAC,0x02102CAD,0x02001F80,0x02101F88,0x020024CC,0x021024E6,0x02000251, -0x02102C6D,0x02000480,0x02100481,0x020013E6,0x0210ABB6,0x020024B8,0x021024D2,0x0200054B, -0x0210057B,0x020013AA,0x0210AB7A,0x0300004B,0x0310006B,0x0320212A,0x02000261,0x0210A7AC, -0x02000141,0x02100142,0x0300039A,0x031003BA,0x032003F0,0x020010F8,0x02101CB8,0x020104C4, -0x021104EC,0x02000189,0x02100256,0x020010DE,0x02101C9E,0x02001E68,0x02101E69,0x020104BA, -0x021104E2,0x02001F04,0x02101F0C,0x02010578,0x0211059F,0x02000411,0x02100431,0x02010582, -0x021105A9,0x02000466,0x02100467,0x0200A736,0x0210A737,0x020000CB,0x021000EB,0x020010C0, -0x02102D20,0x02010427,0x0211044F,0x020001DE,0x021001DF,0x02002C92,0x02102C93,0x02000106, -0x02100107,0x02001E4E,0x02101E4F,0x0200042B,0x0210044B,0x0200A748,0x0210A749,0x02002C11, -0x02102C41,0x0200A7B3,0x0210AB53,0x0200053E,0x0210056E,0x0200014E,0x0210014F,0x020013D3, -0x0210ABA3,0x02000524,0x02100525,0x0200A65E,0x0210A65F,0x020001F8,0x021001F9,0x020004AE, -0x021004AF,0x0200A77E,0x0210A77F,0x030003A0,0x031003C0,0x032003D6,0x02000265,0x0210A78D, -0x0200FF2B,0x0210FF4B,0x02001FA1,0x02101FA9,0x02001EDE,0x02101EDF,0x020013B9,0x0210AB89, -0x02000168,0x02100169,0x02000226,0x02100227,0x020013F1,0x021013F9,0x02001E06,0x02101E07, -0x02000120,0x02100121,0x0201041D,0x02110445,0x02001F66,0x02101F6E,0x020010A6,0x02102D06, -0x02010C91,0x02110CD1,0x02001D8E,0x0210A7C6,0x02010C84,0x02110CC4,0x02010CAE,0x02110CEE, -0x020118A3,0x021118C3,0x02000048,0x02100068,0x020013CC,0x0210AB9C,0x0201E91E,0x0211E940, -0x0200038E,0x021003CD,0x02000531,0x02100561,]; +static immutable uint[] t = cast(immutable uint[]) x" +0201E90B0211E92D0201E9110211E93302000496021004970200A7220210A72302001F7902101FF902001F4402101F4C +0200015A0210015B020010FD02101CBD02016E4C02116E6C02001E3802101E390201E9210211E94302001F2302101F2B +020001A0021001A1030003A3031003C2032003C3020004DC021004DD02002CA602102CA70200017B0210017C0201E906 +0211E928020010DC02101C9C020104CD021104F502001F6502101F6D0200051E0210051F020010D802101C9802002C1A +02102C4A0200027D02102C640200A69A0210A69B02001F0202101F0A020005220210052302002C6002102C6102002C1E +02102C4E0200A6500210A6510200A65C0210A65D020013C90210AB99020104140211043C020013CD0210AB9D020000CE +021000EE02001E7E02101E7F020013F0021013F802001EC402101EC50200A78B0210A78C02000114021001150200042F +0210044F0201E9020211E924020004D8021004D902002CAA02102CAB0200011002100111020004920210049302001E34 +02101E35020013F4021013FC020002240210022502002CA202102CA30200A72E0210A72F02016E4802116E680200004A +0210006A020013A60210AB760200015E0210015F030001C4031001C5032001C602001F4002101F480200A6580210A659 +0200022C0210022D02010C9F02110CDF02001FA702101FAF020013AE0210AB7E0200004202100062020013D50210ABA5 +02016E4002116E60020000D2021000F202001E8202101E8302010C9702110CD7020010E002101CA00200013D0210013E +02000406021004560200029D0210A7B2020001390210013A020001980210019902001EBC02101EBD020003AB021003CB +0200040E0210045E0200A7B60210A7B70200040A0210045A02001EC002101EC10201057202110599020024B9021024D3 +02002C1602102C460200019C0210026F020003A7021003C70200A6920210A693030000C5031000E50320212B02000526 +02100527020002660210A7AA0201057A021105A10201057E021105A502001FD002101FD802000046021000660201E90A +0211E92C0200022802100229020013A20210AB720200A7260210A72702010C9302110CD30200049A0210049B020000D6 +021000F60200010C0210010D020118A8021118C802000162021001630200019E0210022002002C9E02102C9F03000392 +031003B2032003D002001E3002101E3102001FA302101FAB0200216D0210217D0200004E0210006E030000B50310039C +032003BC0200048E0210048F0200A72A0210A72B02010410021104380200038A021003AF02001EFE02101EFF020118AC +021118CC020001EA021001EB02001F0602101F0E02001FC302101FCC020010B402102D140200026A0210A7AE03000412 +0310043203201C800200A7600210A76102010C9B02110CDB020024C8021024E2020001A4021001A50200039F021003BF +020010C402102D24020004A2021004A302002C0302102C3302002CE002102CE1020105760211059D020004E0021004E1 +02002C2A02102C5A02001ED002101ED1020000C2021000E2020004E8021004E90200A7A60210A7A7020010F902101CB9 +02000145021001460200037C021003FE02001EC802101EC90200041A0210043A020000CA021000EA02001F8602101F8E +030004210310044103201C83020104040211042C02010583021105AA0200053F0210056F0200054702100577020013B6 +0210AB86020013EC0210ABBC0200FF2C0210FF4C0200A7BA0210A7BB0200A6480210A649020013C50210AB950200FF24 +0210FF440201040F021104370201041C0211044402010C8302110CC3020002410210024202001E7602101E77020010BC +02102D1C02002C2202102C52020010D002101C900200A7680210A7690200A7320210A7330200011C0210011D02000427 +0210044702001E4002101E41020118B1021118D10200015202100153030003A1031003C1032003F102000397021003B7 +020001AC021001AD020001E2021001E302000218021002190201E91A0211E93C020005160210051702001F2702101F2F +0200A7C90210A7CA02001FE002101FE802002165021021750200A66C0210A66D02000393021003B30200053202100562 +020000560210007602001F3302101F3B020005540210058403001C880310A64A0320A64B0200A68E0210A68F020003D8 +021003D9020024C5021024DF02002CB202102CB302010C8202110CC2020000570210007702016E5302116E730200FF37 +0210FF5702001EF602101EF70201E9120211E93402001F1202101F1A020004A6021004A70200016A0210016B02001F34 +02101F3C02002CDC02102CDD020001B10210028A020118A4021118C402001E2802101E29020001BF021001F70200018B +0210018C020010A702102D07020001280210012902001E6A02101E6B020010AB02102D0B0200041F0210043F02002C2E +02102C5E02010CAF02110CEF020104C5021104ED020118A5021118C502001FE102101FE9030003A6031003C6032003D5 +02002C0A02102C3A0200050E0210050F0200010402100105020003720210037302001E8E02101E8F02000396021003B6 +02001EFA02101EFB020003F2021003F90200A6400210A641020010EC02101CAC020118A1021118C10200016602100167 +02001F3702101F3F02010C8602110CC6020013DD0210ABAD02001F5102101F5902002C9A02102C9B020001FA021001FB +020021690210217902016E5702116E77020010A402102D0403000053031000730320017F0200037602100377020013B1 +0210AB810200046802100469020013E40210ABB402001F9602101F9E020001080210010902010CA002110CE002001E66 +02101E6702001E8A02101E8B02001E4C02101E4D02001F7502101FCB02002C0E02102C3E02001E5002101E51020024C0 +021024DA0200A7500210A751020000DA021000FA020010E902101CA902002CD802102CD902001EB802101EB90200012C +0210012D0200025202102C70020004C3021004C4020024C4021024DE020104B5021104DD02002C0F02102C3F02000533 +0210056302000195021001F602001F1302101F1B020104B8021104E00200055302100583020104250211044D020013D1 +0210ABA1020004F4021004F5020004C7021004C802010CAC02110CEC020004D0021004D10200A75C0210A75D02001E2C +02101E2D020010A802102D0802000464021004650200042602100446020004E4021004E5020010ED02101CAD0200A792 +0210A79302001EDC02101EDD020104BC021104E4020105770211059E02001EA802101EA9020001B8021001B9020000C6 +021000E60200FF300210FF5002016E4402116E640201041B0211044302001E0E02101E0F020004D4021004D502002CAE +02102CAF02002C6B02102C6C0200FF230210FF430200018402100185020105730211059A04000398041003B8042003D1 +043003F4020013D40210ABA40201E9190211E93B020001870210018802002C1302102C430200A7A20210A7A302000194 +02100263020004160210043602002CBE02102CBF02001FA602101FAE020104C6021104EE02001F8202101F8A020104C9 +021104F1020013E00210ABB00200024002102C7F0200A7BE0210A7BF02001F9202101F9A020004020210045202000536 +0210056602000550021005800200A6820210A68302000386021003AC02001FE502101FEC020024C9021024E3020000D3 +021000F3020010F002101CB002001E3C02101E3D02002C8002102C810201058A021105B1020001560210015702001E7A +02101E7B020013ED0210ABBD0200A73E0210A73F0200011802100119020002140210021503001E6003101E6103201E9B +02002C8A02102C8B0200A64C0210A64D03000395031003B5032003F5020001E6021001E702001F8502101F8D02000512 +0210051302001F6102101F690200A6680210A66902010594021105BB02001E1802101E19020013B20210AB8202010415 +0211043D0201041802110440020002450210028C02001F7202101FC8020118B5021118D5020010B802102D18020004C0 +021004CF0201040B021104330200042302100443020010C502102D2502002C2D02102C5D02001F3002101F38020013C1 +0210AB910200A76C0210A76D020104CC021104F402001F7102101FBB0200FF330210FF530200216A0210217A02001ECC +02101ECD020003E8021003E90200A7D00210A7D10200005A0210007A02010CB002110CF0020001D9021001DA02010587 +021105AE020001B5021001B6020005430210057302001F2202101F2A02001EA002101EA102010C8F02110CCF02016E54 +02116E7402001D7D02102C630200A7D60210A7D70200A74C0210A74D020013CE0210AB9E020000CF021000EF020010D9 +02101C99020000450210006502000136021001370200040D0210045D02016E4302116E6302001F7C02101FFA0200024A +0210024B020004B8021004B902002CCA02102CCB02002CED02102CEE0200019F02100275020003A4021003C40200A74E +0210A74F020104C0021104E802001E1602101E17020013AF0210AB7F020005000210050102002C8202102C83020010BD +02102D1D0201E9160211E93802010CA302110CE302010C9402110CD4020104C2021104EA030003A6031003C6032003D5 +02016E4D02116E6D020118B4021118D4020013E90210ABB902001F4102101F49020002870210A7B10200054202100572 +02001E5802101E5902001F4302101F4B02002CEB02102CEC020013EB0210ABBB02001FD102101FD902001EE802101EE9 +020013A30210AB73020003EE021003EF020118B8021118D802010C9E02110CDE0201E9200211E942020000FF02100178 +020104170211043F020118A9021118C902001FB002101FB802002C8802102C89020013A90210AB790201E9090211E92B +020013C20210AB92020024B6021024D002001E5E02101E5F02002C6902102C6A0201041F021104470200037F021003F3 +02000540021005700200039002101FD30300004B0310006B0320212A020004F8021004F9020013F3021013FB020000C9 +021000E90200040F0210045F020010B502102D150200A7460210A747020000CD021000ED02000476021004770200039E +021003BE02001F2002101F28020010FA02101CBA02002C2102102C5102001EA602101EA702001F8302101F8B0200053C +0210056C02001F0102101F0902002CC202102CC30200020802100209020013E30210ABB30200A7960210A79702001F64 +02101F6C02010592021105B9020004BE021004BF02001F9102101F99020003E6021003E702001EE002101EE102001FF3 +02101FFC02000413021004330200042E0210044E020104CA021104F202002C0002102C30020010DB02101C9B020010F6 +02101CB6020118BE021118DE020001A7021001A8020010C302102D23020004150210043502001E1E02101E1F02000506 +0210050702001E6402101E65020000C7021000E70200047C0210047D02001E5202101E53020010F402101CB402010586 +021105AD0200046A0210046B02002C2702102C5702010C8902110CC9020010A202102D020200FF320210FF5204000398 +041003B8042003D1043003F4030003A9031003C90320212602001EDA02101EDB0201E9010211E9230200A79C0210A79D +020010D302101C93020024BC021024D60200FF2F0210FF4F0200025002102C6F02002C2902102C59020004B2021004B3 +0201041902110441020002100210021102002C1502102C4502016E4702116E670200A7540210A75502016E4502116E65 +030001C7031001C8032001C90200047E0210047F020001FC021001FD0200020E0210020F020002440210028902001F77 +02101FDB02002CD602102CD702010589021105B0040004220410044204201C8404301C85020010E702101CA7020004FA +021004FB020010D502101C9502001EAC02101EAD020010B702102D17020013A10210AB710200A7C20210A7C30201E907 +0211E929020013F5021013FD02001EE202101EE302001F6202101F6A02001E9202101E93020001D5021001D602002C06 +02102C3602010C8B02110CCB02001F7002101FBA020003EC021003ED0201E9150211E9370200216E0210217E020013C0 +0210AB9002001EF402101EF50200FF3A0210FF5A020118BC021118DC020004AA021004AB020021630210217302001E1C +02101E1D020013C80210AB98020118AF021118CF02010C9802110CD8020105710211059802010CA702110CE702000051 +02100071020004F2021004F302010CAA02110CEA020010AF02102D0F02002C8E02102C8F02002CC402102CC502001E0A +02101E0B02016E5002116E700201058E021105B50201041102110439020104230211044B0200053A0210056A02001E6C +02101E6D020104BE021104E6020104240211044C020010A902102D09020024C2021024DC02010C8102110CC1020013BC +0210AB8C030004620310046303201C87020118A6021118C602001E4A02101E4B020021620210217202001ED402101ED5 +020010AA02102D0A020004EC021004ED02002C0C02102C3C0200A79A0210A79B020004CB021004CC020104BD021104E5 +02000370021003710201E9140211E936020003DA021003DB02001F3502101F3D02016E5102116E7103000392031003B2 +032003D002002C9602102C9702000391021003B102000534021005640200041B0210043B020013DF0210ABAF02002C2C +02102C5C020001240210012502010CA202110CE202001E8C02101E8D02001EB402101EB50200016C0210016D02001E02 +02101E030200019A0210023D020001020210010302001F1402101F1C0200FF280210FF4802010C8002110CC0020010EE +02101CAE02001F5502101F5D0200A77B0210A77C02000059021000790200014A0210014B02001E2402101E25020013BD +0210AB8D02002CBC02102CBD0201040D021104350201058F021105B6020118A7021118C70200A6600210A66102000514 +021005150200052E0210052F020004A4021004A5020004000210045002016E5802116E780200A64E0210A64F0200FF2E +0210FF4E0201040C02110434020000DB021000FB020001CD021001CE020010E802101CA80200054F0210057F0200A738 +0210A73902016E5F02116E7F02001D790210A77D0201E90F0211E93102002C0702102C37020010A302102D030200A7A0 +0210A7A1030004210310044103201C830200A6800210A681020002820210A7C5020024CB021024E50200040102100451 +0200A7580210A7590200005802100078020001930210026002010CA102110CE10200054E0210057E0200018602100254 +020013DC0210ABAC020024BD021024D7020001B3021001B40200A6960210A697020002160210021702001ECE02101ECF +02002168021021780201E90E0211E93002002C1202102C4202002C2F02102C5F02010CAB02110CEB02001E8602101E87 +030004120310043203201C80020013D60210ABA602001EBA02101EBB0201E91B0211E93D0201041A0211044202001EEE +02101EEF0200FF310210FF510200A7BC0210A7BD020001DB021001DC020001A60210028002001F0702101F0F020118BD +021118DD020000C8021000E8020004D2021004D3020010E102101CA1020013B70210AB8702010585021105AC02016E4B +02116E6B02000172021001730200049E0210049F020004E6021004E7020010B002102D1002002C9C02102C9D020001EE +021001EF020104B4021104DC02010C8702110CC7020013BA0210AB8A02001E1002101E11020002300210023102000428 +0210044802002CD002102CD1020118A0021118C0020003E0021003E102010588021105AF0200A7800210A781020010F5 +02101CB50200053B0210056B020000D5021000F5030004140310043403201C8102001FA402101FAC0200012A0210012B +0200005202100072020024B7021024D10201E9080211E92A04000398041003B8042003D1043003F40200020202100203 +0200027102102C6E020004700210047102002C1B02102C4B0200048A0210048B0200A7520210A7530200FF250210FF45 +0200040702100457020000C1021000E102001E4402101E4502001F9702101F9F02000548021005780200021C0210021D +020013E50210ABB50200051A0210051B02002CB602102CB70200A6540210A655020104030211042B02001E7202101E73 +020010D402101C94020104C1021104E902010C8A02110CCA02001E2A02101E2B030004620310046303201C8702001F76 +02101FDA03000053031000730320017F02002C2602102C56020013A00210AB70020004C5021004C6020003FA021003FB +0200055502100585020013E80210ABB8030001C7031001C8032001C902001F4202101F4A02001F6702101F6F0201057C +021105A30200A7B40210A7B50200A6980210A6990201E9040211E9260200040C0210045C020010DA02101C9A020000D0 +021000F002016E4602116E6602001EC202101EC3020001E4021001E502000044021000640200017D0210017E02001F21 +02101F290200FF390210FF59020013AC0210AB7C02001F0002101F08020003A5021003C50200015802100159020104CF +021104F702001E3A02101E3B0200A72C0210A72D020118B7021118D7020001120210011302001E3602101E3702016E4E +02116E6E02001F7D02101FFB020004940210049502001E8002101E8102000116021001170200042D0210044D020013F2 +021013FA020001790210017A020004DA021004DB02002CA802102CA9020000CC021000EC020001A2021001A3030003A1 +031003C1032003F102001E7C02101E7D020013CF0210AB9F020104120211043A020005200210052102002C1C02102C4C +0200026B02102C6202010591021105B80200015C0210015D0200A6520210A6530200FF260210FF46020001E8021001E9 +020010B602102D160200A6560210A6570200051C0210051D020013C30210AB93020104CB021104F302001EC602101EC7 +020001E0021001E102001F6302101F6B02002C0102102C310201E9000211E92202001E7802101E79020024CE021024E8 +0200A76A0210A76B0200011A0210011B020004290210044902001F8402101F8C020010D602101C9602001FB102101FB9 +0200A7620210A76302010CB202110CF202002C2002102C50020010BE02102D1E0201041E02110446020004E2021004E3 +020004DE021004DF020013EA0210ABBA0200054102100571020005450210057502001F2502101F2D0200015402100155 +02002C2402102C54020013EE0210ABBE0200018102100253030003A3031003C2032003C3020118B3021118D3020010BA +02102D1A020001800210024302001E3E02101E3F020010FF02101CBF02010C8802110CC8020010D202101C920200A76E +0210A76F03001C880310A64A0320A64B020010B202102D12020013C70210AB9702000518021005190200A7660210A767 +020001EC021001ED020104C3021104EB020105740211059B0201E91C0211E93E020010E202101CA202002C0502102C35 +020004A0021004A102001E4202101E43020013B40210AB84020118BF021118DF020001500210015102002CB002102CB1 +020013A40210AB74020004C1021004C2030001CA031001CB032001CC0200004C0210006C020104C7021104EF02016E5A +02116E7A0200022202100223020004900210049102002CF202102CF302010595021105BC0200053D0210056D02000388 +021003AD0200054902100579020013E20210ABB202016E4A02116E6A02001EFC02101EFD02001F9002101F98020004D6 +021004D70200A7B80210A7B9030004140310043403201C8102010CAD02110CED020010F702101CB702016E5502116E75 +0200A7280210A72902001E0002101E010200023202100233020010A502102D0502001F1502101F1D030003A9031003C9 +032021260200013B0210013C0200040802100458020000DC021000FC02001EBE02101EBF02002C1802102C480200A7A8 +0210A7A90200216B0210217B02002C1002102C4002002CDE02102CDF0200029E0210A7B0020000D4021000F4020010EF +02101CAF0200055102100581020013DA0210ABAA020005350210056502010C9D02110CDD020024C6021024E002000410 +0210043002001EB602101EB7020104160211043E02016E4202116E62020001640210016502002CA002102CA102001E2E +02101E2F02010C9502110CD502000498021004990200010A0210010B020118AA021118CA02001E8802101E8902000528 +02100529020013D70210ABA70200A65A0210A65B0200022A0210022B02001FA502101FAD020104B3021104DB0201E90C +0211E92E020024BB021024D5020001F4021001F50200A6900210A6910200FF290210FF4902002C7502102C7602002CB8 +02102CB9020104010211042902002C0D02102C3D020104D0021104F80201E9130211E935020001AF021001B00200A7C7 +0210A7C8020013BF0210AB8F020104020211042A020010EA02101CAA020104BF021104E70201058D021105B402002164 +021021740200018E021001DD020001D3021001D402001F1002101F1802001F5702101F5F02001ED202101ED30200FF2A +0210FF4A02001E0402101E05020004EE021004EF02002C9402102C95020000C0021000E0020013DB0210ABAB020001B2 +0210028B020104260211044E0200A6620210A663020000540210007402000556021005860300042A0310044A03201C86 +020104220211044A02001F3602101F3E0200A7940210A7C4020004CD021004CE020104BB021104E30200023B0210023C +020001CF021001D00200050C0210050D0200A6460210A64702001E4602101E4702010CA602110CE60200A7790210A77A +0200FF360210FF56020118A2021118C2020004EA021004EB0200041D0210043D02016E5202116E720200A6880210A689 +02001EB202101EB3020021600210217002001ED602101ED7020024C3021024DD02016E5E02116E7E020004AC021004AD +0201E9100211E9320200023E02102C6602002CB402102CB50200FF2D0210FF4D0200014C0210014D02001E2202101E23 +020013BB0210AB8B020001430210014402010581021105A8020001700210017102001E9402101E9502002C2802102C58 +0201040E02110436020104B2021104DA0200A7980210A799020013B80210AB8802001E7002101E710400042204100442 +04201C8404301C8502010C8502110CC502001EAE02101EAF020001220210012302010C8C02110CCC020104050211042D +0200042002100440020001AE021002880200021A0210021B0200038C021003CC02001F9502101F9D0400034504100399 +042003B904301FBE0200018A0210025702002C9002102C91020010B102102D110200011E0210011F02001E0802101E09 +0200A7C00210A7C1020013E70210ABB702010580021105A70200041C0210043C0200FB050210FB060200A7A40210A7A5 +02001E7402101E7502002C1402102C440201E90D0211E92F020013A50210AB75020010F302101CB3020024BA021024D4 +0200013F021001400200039D021003BD02002CE202102CE3020010A102102D0102000508021005090200004D0210006D +02000389021003AE0200048C0210048D02002C0402102C340200216F0210217F020004B0021004B102002CD202102CD3 +0200A7340210A73502010584021105AB0200005002100070020001600210016102010CA902110CE902001E3202101E33 +0200020002100201020118AB021118CB0200A7860210A787020118BB021118DB020118AE021118CE0200021E0210021F +020003AA021003CA020010C202102D22020013C40210AB9402000539021005690200A74A0210A74B020000C3021000E3 +0200046E0210046F0200054D0210057D020010E302101CA3020003DE021003DF020024CA021024E40400034504100399 +042003B904301FBE02010C9902110CD90200A75A0210A75B020004190210043902002C0902102C390200037D021003FF +02001F2602101F2E020118B2021118D2020021830210218402002C2302102C53020001320210013302001E5602101E57 +020010AE02102D0E0200A7400210A741020000DD021000FD020010E602101CA603001E6003101E6103201E9B02000478 +021004790200022E0210022F0200A6940210A6950200052C0210052D02010570021105970200A6660210A667020013A8 +0210AB7802010C9602110CD60200020A0210020B020024BF021024D9020013CB0210AB9B02010C9C02110CDC0300041E +0310043E03201C8202001E8402101E8502001EF002101EF102016E5902116E7902002CA402102CA50200A7240210A725 +0200049C0210049D0200010E0210010F020104D3021104FB0201E9030211E9250200019102100192020013DE0210ABAE +030003A0031003C0032003D6020013AD0210AB7D020002060210020702001F4502101F4D020003EA021003EB020010BB +02102D1B02000474021004750200FF380210FF58020004FE021004FF02002C8402102C85020104130211043B02002C1F +02102C4F02001E5C02101E5D02001EE402101EE502002CC802102CC9020104CE021104F6020004BA021004BB0201E905 +0211E927020000D1021000F10200047202100473020118B6021118D602001F7802101FF8020000430210006302001EA2 +02101EA302001F2402101F2C0200019D02100272020004B6021004B7020000DF02101E9E02001F8702101F8F02001E14 +02101E1502001EE602101EE70200040B0210045B02000409021004590201057D021105A4020003A8021003C802001E5A +02101E5B0201057F021105A60200054402100574020010FE02101CBE02001E1202101E13020010B902102D1902000047 +02100067020004FC021004FD02010C9202110CD202002C8602102C8702001E1A02101E1B02010C9002110CD0020010BF +02102D1F020013CA0210AB9A02016E4902116E690200004102100061020001BC021001BD02001EEA02101EEB02000502 +021005030200024802100249020010DF02101C9F030001C4031001C5032001C60200054602100576020013EF0210ABBF +02002CCC02102CCD020010D702101C97020013A70210AB770200047A0210047B02000134021001350300042A0310044A +03201C8602002C1902102C4902000204021002050200025C0210A7AB020024CF021024E902001E5402101E5502010579 +021105A00200054A0210057A0200A6840210A6850200FF270210FF4702001F0502101F0D020021320210214E0200024C +0210024D020013B50210AB8502002CC602102CC7020104080211043002002C1D02102C4D0200023F02102C7E0200A742 +0210A74302001E6202101E6302010CA802110CE8030000B50310039C032003BC02001F8102101F8902010C9A02110CDA +0200012E0210012F0200040302100453020001FE021001FF0400034504100399042003B904301FBE0200017402100175 +020003CF021003D7020024CD021024E702001FB302101FBC020118AD021118CD0200A7440210A745020000D9021000F9 +02001E0C02101E0D02002C1702102C47020003E2021003E30200026C0210A7AD0200A7560210A7570200040502100455 +020001970210026802001F6002101F6802001EEC02101EED02002C8C02102C8D020010F202101CB2020104B6021104DE +0201E91D0211E93F0201040A02110432020013C60210AB9602016E4102116E610200042402100444020001A902100283 +0300039A031003BA032003F0020010E502101CA5020104C8021104F0020104070211042F020013D00210ABA002001FA2 +02101FAA0200046C0210046D020010A002102D000200A7820210A783030000C5031000E50320212B020004B4021004B5 +02002CCE02102CCF0200A73A0210A73B0200FF210210FF41020104B9021104E102001EA402101EA50200038F021003CE +020024BE021024D8020003B002101FE302000049021000690201E91F0211E941020002460210024702001F7302101FC9 +02002C6702102C6802002166021021760200010002100101020003E4021003E5020013D20210ABA20200A79E0210A79F +02001FA002101FA802010CB102110CF102016E5D02116E7D020010C102102D210200A7F50210A7F6020013BE0210AB8E +0200042C0210044C020010DD02101C9D02001F9302101F9B0200024E0210024F020004BC021004BD0200017602100177 +020013AB0210AB7B020013E10210ABB1020005040210050502001F0302101F0B0200A6860210A6870200054C0210057C +02016E4F02116E6F020010EB02101CAB020013D90210ABA90200023A02102C65020004A8021004A902002CDA02102CDB +0300041E0310043E03201C8202000394021003B402002C7202102C73020005100210051102001E2602101E270200A642 +0210A643020004C9021004CA020001470210014802001EB002101EB10200A75E0210A75F0201058C021105B30200A73C +0210A73D020104D1021104F9020104D2021104FA02010590021105B7020000550210007502001F1102101F190200037B +021003FD02001F3102101F3902002CBA02102CBB02000552021005820200A68C0210A68D02001E6E02101E6F02002167 +02102177020000DE021000FE020001900210025B02001EF802101EF9020104B0021104D802010C8E02110CCE02002C08 +02102C380200016E0210016F02016E5C02116E7C020010CD02102D2D02001F7B02101FEB02001E9002101E91020013B3 +0210AB83020001D1021001D202001F5302101F5B020001260210012702001E4802101E4902002C9802102C9902010400 +0211042802010CA402110CE4020118B9021118D9020013B00210AB8002001ED802101ED902001F7402101FCA04000422 +0410044204201C8404301C8502001EF202101EF302002161021021710201042002110448030001F1031001F2032001F3 +020001D7021001D80200A68A0210A68B020003F7021003F80200FF350210FF55020003DC021003DD02010C8D02110CCD +02000418021004380200021202100213020004F0021004F1020024C1021024DB0200050A0210050B0201E9170211E939 +0200A6440210A6450200053702100567020010AC02102D0C020010AD02102D0D020024C7021024E10200046002100461 +02002C2B02102C5B02016E5602116E76020010C702102D27020104060211042E02002CD402102CD5020010F102101CB1 +02001F7A02101FEA02002C0B02102C3B0200FF340210FF540200041702100437020118BA021118DA030001F1031001F2 +032001F303000395031003B5032003F5020001B7021002920200018F0210025902000538021005680200A66A0210A66B +02001F3202101F3A02010421021104490200052A0210052B02000425021004450200A7840210A7850200004F0210006F +0200A6640210A665020104B1021104D9020000C4021000E402010CA502110CE502001EAA02101EAB020013D80210ABA8 +020010E402101CA4020000D8021000F8030001CA031001CB032001CC020010D102101C91020105750211059C0200216C +0210217C02002C0202102C3202016E5B02116E7B0200A7D80210A7D90200FF220210FF420200040402100454020010B3 +02102D1302001ECA02101ECB02010409021104310201E9180211E93A020004F6021004F702002CC002102CC102001E20 +02101E21020104B7021104DF0200039B021003BB020001960210026902002C2502102C550200A7900210A7910200A764 +0210A7650200020C0210020D02001F9402101F9C020118B0021118D0020001820210018302002CAC02102CAD02001F80 +02101F88020024CC021024E60200025102102C6D0200048002100481020013E60210ABB6020024B8021024D20200054B +0210057B020013AA0210AB7A0300004B0310006B0320212A020002610210A7AC02000141021001420300039A031003BA +032003F0020010F802101CB8020104C4021104EC0200018902100256020010DE02101C9E02001E6802101E69020104BA +021104E202001F0402101F0C020105780211059F020004110210043102010582021105A902000466021004670200A736 +0210A737020000CB021000EB020010C002102D20020104270211044F020001DE021001DF02002C9202102C9302000106 +0210010702001E4E02101E4F0200042B0210044B0200A7480210A74902002C1102102C410200A7B30210AB530200053E +0210056E0200014E0210014F020013D30210ABA302000524021005250200A65E0210A65F020001F8021001F9020004AE +021004AF0200A77E0210A77F030003A0031003C0032003D6020002650210A78D0200FF2B0210FF4B02001FA102101FA9 +02001EDE02101EDF020013B90210AB8902000168021001690200022602100227020013F1021013F902001E0602101E07 +02000120021001210201041D0211044502001F6602101F6E020010A602102D0602010C9102110CD102001D8E0210A7C6 +02010C8402110CC402010CAE02110CEE020118A3021118C30200004802100068020013CC0210AB9C0201E91E0211E940 +0200038E021003CD0200053102100561"; return SCE(t[i]); } @property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure { -static immutable ulong[3188] t = [ -0x1E90B000000021,0x1E92D000000121,0x10CAE000000021,0x10CEE000000121,0x00496000000021,0x00497000000121, -0x1E911000000021,0x1E933000000121,0x0A722000000021,0x0A723000000121,0x01F79000000021,0x01FF9000000121, -0x01F44000000021,0x01F4C000000121,0x0015A000000021,0x0015B000000121,0x010FD000000021,0x01CBD000000121, -0x16E4C000000021,0x16E6C000000121,0x01E38000000021,0x01E39000000121,0x0FB16000000021,0x0057E576000122, -0x1E921000000021,0x1E943000000121,0x01F23000000021,0x01F2B000000121,0x001A0000000021,0x001A1000000121, -0x003A3000000031,0x003C2000000131,0x003C3000000231,0x004DC000000021,0x004DD000000121,0x02CA6000000021, -0x02CA7000000121,0x0017B000000021,0x0017C000000121,0x1E906000000021,0x1E928000000121,0x010DC000000021, -0x01C9C000000121,0x104CD000000021,0x104F5000000121,0x01F65000000021,0x01F6D000000121,0x0051E000000021, -0x0051F000000121,0x010D8000000021,0x01C98000000121,0x02C1A000000021,0x02C4A000000121,0x0027D000000021, -0x02C64000000121,0x0A69A000000021,0x0A69B000000121,0x01F02000000021,0x01F0A000000121,0x00522000000021, -0x00523000000121,0x02C60000000021,0x02C61000000121,0x01FB7000000021,0x003B13423B9123,0x0A650000000021, -0x0A651000000121,0x0A65C000000021,0x0A65D000000121,0x02C1E000000021,0x02C4E000000121,0x01FB3000000031, -0x01FBC000000131,0x003B13B9000232,0x013C9000000021,0x0AB99000000121,0x013CD000000021,0x0AB9D000000121, -0x000CE000000021,0x000EE000000121,0x01E7E000000021,0x01E7F000000121,0x10414000000021,0x1043C000000121, -0x013F0000000021,0x013F8000000121,0x01EC4000000021,0x01EC5000000121,0x0A78B000000021,0x0A78C000000121, -0x00114000000021,0x00115000000121,0x0042F000000021,0x0044F000000121,0x1E902000000021,0x1E924000000121, -0x004D8000000021,0x004D9000000121,0x02CAA000000021,0x02CAB000000121,0x00110000000021,0x00111000000121, -0x00492000000021,0x00493000000121,0x01E34000000021,0x01E35000000121,0x013F4000000021,0x013FC000000121, -0x00224000000021,0x00225000000121,0x02CA2000000021,0x02CA3000000121,0x0A72E000000021,0x0A72F000000121, -0x16E48000000021,0x16E68000000121,0x0004A000000021,0x0006A000000121,0x013A6000000021,0x0AB76000000121, -0x0015E000000021,0x0015F000000121,0x001C4000000031,0x001C5000000131,0x001C6000000231,0x01F40000000021, -0x01F48000000121,0x0A658000000021,0x0A659000000121,0x0022C000000021,0x0022D000000121,0x10C9F000000021, -0x10CDF000000121,0x01F50000000021,0x003C5313000122,0x01FA7000000031,0x01FAF000000131,0x01F673B9000232, -0x00042000000021,0x00062000000121,0x013AE000000021,0x0AB7E000000121,0x16E40000000021,0x16E60000000121, -0x000D2000000021,0x000F2000000121,0x01E82000000021,0x01E83000000121,0x013D5000000021,0x0ABA5000000121, -0x010E0000000021,0x01CA0000000121,0x0013D000000021,0x0013E000000121,0x00406000000021,0x00456000000121, -0x0029D000000021,0x0A7B2000000121,0x00139000000021,0x0013A000000121,0x00198000000021,0x00199000000121, -0x01EBC000000021,0x01EBD000000121,0x003AB000000021,0x003CB000000121,0x0040E000000021,0x0045E000000121, -0x0A7B6000000021,0x0A7B7000000121,0x0040A000000021,0x0045A000000121,0x01EC0000000021,0x01EC1000000121, -0x10572000000021,0x10599000000121,0x024B9000000021,0x024D3000000121,0x02C16000000021,0x02C46000000121, -0x0019C000000021,0x0026F000000121,0x003A7000000021,0x003C7000000121,0x0A692000000021,0x0A693000000121, -0x000C5000000031,0x000E5000000131,0x0212B000000231,0x00526000000021,0x00527000000121,0x00266000000021, -0x0A7AA000000121,0x1057A000000021,0x105A1000000121,0x1057E000000021,0x105A5000000121,0x01FD0000000021, -0x01FD8000000121,0x00046000000021,0x00066000000121,0x1E90A000000021,0x1E92C000000121,0x00228000000021, -0x00229000000121,0x013A2000000021,0x0AB72000000121,0x0A726000000021,0x0A727000000121,0x10C93000000021, -0x10CD3000000121,0x0049A000000021,0x0049B000000121,0x000D6000000021,0x000F6000000121,0x0010C000000021, -0x0010D000000121,0x10C97000000021,0x10CD7000000121,0x00162000000021,0x00163000000121,0x0019E000000021, -0x00220000000121,0x01E97000000021,0x00074308000122,0x00392000000031,0x003B2000000131,0x003D0000000231, -0x01E30000000021,0x01E31000000121,0x01FA3000000031,0x01FAB000000131,0x01F633B9000232,0x118A8000000021, -0x118C8000000121,0x0216D000000021,0x0217D000000121,0x02C9E000000021,0x02C9F000000121,0x0004E000000021, -0x0006E000000121,0x000B5000000031,0x0039C000000131,0x003BC000000231,0x0048E000000021,0x0048F000000121, -0x0A72A000000021,0x0A72B000000121,0x10410000000021,0x10438000000121,0x0038A000000021,0x003AF000000121, -0x01EFE000000021,0x01EFF000000121,0x118AC000000021,0x118CC000000121,0x001EA000000021,0x001EB000000121, -0x01F06000000021,0x01F0E000000121,0x01FC3000000031,0x01FCC000000131,0x003B73B9000232,0x010B4000000021, -0x02D14000000121,0x0026A000000021,0x0A7AE000000121,0x00412000000031,0x00432000000131,0x01C80000000231, -0x01F86000000031,0x01F8E000000131,0x01F063B9000232,0x10C9B000000021,0x10CDB000000121,0x0A760000000021, -0x0A761000000121,0x024C8000000021,0x024E2000000121,0x001A4000000021,0x001A5000000121,0x0039F000000021, -0x003BF000000121,0x010C4000000021,0x02D24000000121,0x004A2000000021,0x004A3000000121,0x02C03000000021, -0x02C33000000121,0x02CE0000000021,0x02CE1000000121,0x10576000000021,0x1059D000000121,0x01F96000000031, -0x01F9E000000131,0x01F263B9000232,0x004E0000000021,0x004E1000000121,0x02C2A000000021,0x02C5A000000121, -0x01ED0000000021,0x01ED1000000121,0x000C2000000021,0x000E2000000121,0x004E8000000021,0x004E9000000121, -0x0A7A6000000021,0x0A7A7000000121,0x010F9000000021,0x01CB9000000121,0x00145000000021,0x00146000000121, -0x0037C000000021,0x003FE000000121,0x01EC8000000021,0x01EC9000000121,0x0041A000000021,0x0043A000000121, -0x000CA000000021,0x000EA000000121,0x01F86000000031,0x01F8E000000131,0x01F063B9000232,0x00421000000031, -0x00441000000131,0x01C83000000231,0x10404000000021,0x1042C000000121,0x0FB02000000021,0x0006606C000122, -0x0053F000000021,0x0056F000000121,0x00547000000021,0x00577000000121,0x013B6000000021,0x0AB86000000121, -0x013EC000000021,0x0ABBC000000121,0x0FF2C000000021,0x0FF4C000000121,0x0A7BA000000021,0x0A7BB000000121, -0x0A648000000021,0x0A649000000121,0x013C5000000021,0x0AB95000000121,0x0FF24000000021,0x0FF44000000121, -0x1040F000000021,0x10437000000121,0x1041C000000021,0x10444000000121,0x10583000000021,0x105AA000000121, -0x10C83000000021,0x10CC3000000121,0x00241000000021,0x00242000000121,0x01E76000000021,0x01E77000000121, -0x010BC000000021,0x02D1C000000121,0x02C22000000021,0x02C52000000121,0x010D0000000021,0x01C90000000121, -0x0A768000000021,0x0A769000000121,0x0A732000000021,0x0A733000000121,0x0011C000000021,0x0011D000000121, -0x00427000000021,0x00447000000121,0x01E40000000021,0x01E41000000121,0x118B1000000021,0x118D1000000121, -0x00152000000021,0x00153000000121,0x003A1000000031,0x003C1000000131,0x003F1000000231,0x00397000000021, -0x003B7000000121,0x001AC000000021,0x001AD000000121,0x001E2000000021,0x001E3000000121,0x00218000000021, -0x00219000000121,0x1E91A000000021,0x1E93C000000121,0x00516000000021,0x00517000000121,0x01F27000000021, -0x01F2F000000121,0x0A7C9000000021,0x0A7CA000000121,0x01FE0000000021,0x01FE8000000121,0x02165000000021, -0x02175000000121,0x0A66C000000021,0x0A66D000000121,0x00393000000021,0x003B3000000121,0x00532000000021, -0x00562000000121,0x00056000000021,0x00076000000121,0x01F33000000021,0x01F3B000000121,0x00554000000021, -0x00584000000121,0x01C88000000031,0x0A64A000000131,0x0A64B000000231,0x0A68E000000021,0x0A68F000000121, -0x003D8000000021,0x003D9000000121,0x024C5000000021,0x024DF000000121,0x02CB2000000021,0x02CB3000000121, -0x10C82000000021,0x10CC2000000121,0x00057000000021,0x00077000000121,0x16E53000000021,0x16E73000000121, -0x0FF37000000021,0x0FF57000000121,0x01EF6000000021,0x01EF7000000121,0x1E912000000021,0x1E934000000121, -0x01F12000000021,0x01F1A000000121,0x004A6000000021,0x004A7000000121,0x0016A000000021,0x0016B000000121, -0x01F34000000021,0x01F3C000000121,0x02CDC000000021,0x02CDD000000121,0x001B1000000021,0x0028A000000121, -0x118A4000000021,0x118C4000000121,0x01E28000000021,0x01E29000000121,0x001BF000000021,0x001F7000000121, -0x0018B000000021,0x0018C000000121,0x010A7000000021,0x02D07000000121,0x00128000000021,0x00129000000121, -0x01E6A000000021,0x01E6B000000121,0x010AB000000021,0x02D0B000000121,0x0041F000000021,0x0043F000000121, -0x02C2E000000021,0x02C5E000000121,0x10CAF000000021,0x10CEF000000121,0x104C5000000021,0x104ED000000121, -0x118A5000000021,0x118C5000000121,0x01FE1000000021,0x01FE9000000121,0x003A6000000031,0x003C6000000131, -0x003D5000000231,0x02C0A000000021,0x02C3A000000121,0x0050E000000021,0x0050F000000121,0x00104000000021, -0x00105000000121,0x00372000000021,0x00373000000121,0x01E8E000000021,0x01E8F000000121,0x00396000000021, -0x003B6000000121,0x01EFA000000021,0x01EFB000000121,0x003F2000000021,0x003F9000000121,0x0A640000000021, -0x0A641000000121,0x010EC000000021,0x01CAC000000121,0x118A1000000021,0x118C1000000121,0x01FA7000000031, -0x01FAF000000131,0x01F673B9000232,0x00166000000021,0x00167000000121,0x01F37000000021,0x01F3F000000121, -0x10C86000000021,0x10CC6000000121,0x013DD000000021,0x0ABAD000000121,0x01F51000000021,0x01F59000000121, -0x02C9A000000021,0x02C9B000000121,0x001FA000000021,0x001FB000000121,0x02169000000021,0x02179000000121, -0x16E57000000021,0x16E77000000121,0x010A4000000021,0x02D04000000121,0x00053000000031,0x00073000000131, -0x0017F000000231,0x00376000000021,0x00377000000121,0x013B1000000021,0x0AB81000000121,0x00468000000021, -0x00469000000121,0x013E4000000021,0x0ABB4000000121,0x01F96000000031,0x01F9E000000131,0x01F263B9000232, -0x00108000000021,0x00109000000121,0x10CA0000000021,0x10CE0000000121,0x01E66000000021,0x01E67000000121, -0x01E8A000000021,0x01E8B000000121,0x01E4C000000021,0x01E4D000000121,0x01F75000000021,0x01FCB000000121, -0x02C0E000000021,0x02C3E000000121,0x01E50000000021,0x01E51000000121,0x024C0000000021,0x024DA000000121, -0x0A750000000021,0x0A751000000121,0x000DA000000021,0x000FA000000121,0x010E9000000021,0x01CA9000000121, -0x02CD8000000021,0x02CD9000000121,0x01EB8000000021,0x01EB9000000121,0x0012C000000021,0x0012D000000121, -0x00252000000021,0x02C70000000121,0x004C3000000021,0x004C4000000121,0x003B0000000031,0x01FE3000000131, -0x003C5308301233,0x024C4000000021,0x024DE000000121,0x02C0F000000021,0x02C3F000000121,0x00533000000021, -0x00563000000121,0x00195000000021,0x001F6000000121,0x01F13000000021,0x01F1B000000121,0x104B8000000021, -0x104E0000000121,0x00553000000021,0x00583000000121,0x10425000000021,0x1044D000000121,0x013D1000000021, -0x0ABA1000000121,0x004F4000000021,0x004F5000000121,0x004C7000000021,0x004C8000000121,0x104B5000000021, -0x104DD000000121,0x004D0000000021,0x004D1000000121,0x0A75C000000021,0x0A75D000000121,0x10CAC000000021, -0x10CEC000000121,0x01E2C000000021,0x01E2D000000121,0x010A8000000021,0x02D08000000121,0x00464000000021, -0x00465000000121,0x00426000000021,0x00446000000121,0x004E4000000021,0x004E5000000121,0x010ED000000021, -0x01CAD000000121,0x0A792000000021,0x0A793000000121,0x01EDC000000021,0x01EDD000000121,0x104BC000000021, -0x104E4000000121,0x10577000000021,0x1059E000000121,0x01EA8000000021,0x01EA9000000121,0x001B8000000021, -0x001B9000000121,0x000C6000000021,0x000E6000000121,0x0FF30000000021,0x0FF50000000121,0x16E44000000021, -0x16E64000000121,0x1041B000000021,0x10443000000121,0x01E0E000000021,0x01E0F000000121,0x004D4000000021, -0x004D5000000121,0x02CAE000000021,0x02CAF000000121,0x02C6B000000021,0x02C6C000000121,0x0FF23000000021, -0x0FF43000000121,0x00184000000021,0x00185000000121,0x10573000000021,0x1059A000000121,0x00398000000041, -0x003B8000000141,0x003D1000000241,0x003F4000000341,0x013D4000000021,0x0ABA4000000121,0x1E919000000021, -0x1E93B000000121,0x00187000000021,0x00188000000121,0x02C13000000021,0x02C43000000121,0x0A7A2000000021, -0x0A7A3000000121,0x00194000000021,0x00263000000121,0x00416000000021,0x00436000000121,0x02CBE000000021, -0x02CBF000000121,0x01FA6000000031,0x01FAE000000131,0x01F663B9000232,0x104C6000000021,0x104EE000000121, -0x01F82000000031,0x01F8A000000131,0x01F023B9000232,0x104C9000000021,0x104F1000000121,0x013E0000000021, -0x0ABB0000000121,0x00240000000021,0x02C7F000000121,0x0A7BE000000021,0x0A7BF000000121,0x01F92000000031, -0x01F9A000000131,0x01F223B9000232,0x00402000000021,0x00452000000121,0x00536000000021,0x00566000000121, -0x00550000000021,0x00580000000121,0x0A682000000021,0x0A683000000121,0x00386000000021,0x003AC000000121, -0x01FE5000000021,0x01FEC000000121,0x024C9000000021,0x024E3000000121,0x000D3000000021,0x000F3000000121, -0x010F0000000021,0x01CB0000000121,0x01E3C000000021,0x01E3D000000121,0x02C80000000021,0x02C81000000121, -0x01F97000000031,0x01F9F000000131,0x01F273B9000232,0x1058A000000021,0x105B1000000121,0x00156000000021, -0x00157000000121,0x01E7A000000021,0x01E7B000000121,0x013ED000000021,0x0ABBD000000121,0x0A73E000000021, -0x0A73F000000121,0x00118000000021,0x00119000000121,0x00214000000021,0x00215000000121,0x01E60000000031, -0x01E61000000131,0x01E9B000000231,0x02C8A000000021,0x02C8B000000121,0x0A64C000000021,0x0A64D000000121, -0x00395000000031,0x003B5000000131,0x003F5000000231,0x001E6000000021,0x001E7000000121,0x01F85000000031, -0x01F8D000000131,0x01F053B9000232,0x00512000000021,0x00513000000121,0x01F61000000021,0x01F69000000121, -0x0A668000000021,0x0A669000000121,0x10594000000021,0x105BB000000121,0x01E18000000021,0x01E19000000121, -0x013B2000000021,0x0AB82000000121,0x10415000000021,0x1043D000000121,0x10418000000021,0x10440000000121, -0x00245000000021,0x0028C000000121,0x01F72000000021,0x01FC8000000121,0x118B5000000021,0x118D5000000121, -0x010B8000000021,0x02D18000000121,0x004C0000000021,0x004CF000000121,0x1040B000000021,0x10433000000121, -0x00423000000021,0x00443000000121,0x010C5000000021,0x02D25000000121,0x02C2D000000021,0x02C5D000000121, -0x01F30000000021,0x01F38000000121,0x013C1000000021,0x0AB91000000121,0x0A76C000000021,0x0A76D000000121, -0x104CC000000021,0x104F4000000121,0x01F71000000021,0x01FBB000000121,0x0FF33000000021,0x0FF53000000121, -0x0216A000000021,0x0217A000000121,0x00149000000021,0x002BC06E000122,0x003E8000000021,0x003E9000000121, -0x0A7D0000000021,0x0A7D1000000121,0x0005A000000021,0x0007A000000121,0x10CB0000000021,0x10CF0000000121, -0x001D9000000021,0x001DA000000121,0x01ECC000000021,0x01ECD000000121,0x001B5000000021,0x001B6000000121, -0x00543000000021,0x00573000000121,0x01F22000000021,0x01F2A000000121,0x10587000000021,0x105AE000000121, -0x01EA0000000021,0x01EA1000000121,0x10C8F000000021,0x10CCF000000121,0x16E54000000021,0x16E74000000121, -0x01FB4000000021,0x003AC3B9000122,0x01D7D000000021,0x02C63000000121,0x0A7D6000000021,0x0A7D7000000121, -0x0A74C000000021,0x0A74D000000121,0x013CE000000021,0x0AB9E000000121,0x000CF000000021,0x000EF000000121, -0x010D9000000021,0x01C99000000121,0x00045000000021,0x00065000000121,0x00136000000021,0x00137000000121, -0x0040D000000021,0x0045D000000121,0x16E43000000021,0x16E63000000121,0x01F7C000000021,0x01FFA000000121, -0x0024A000000021,0x0024B000000121,0x004B8000000021,0x004B9000000121,0x02CCA000000021,0x02CCB000000121, -0x02CED000000021,0x02CEE000000121,0x0019F000000021,0x00275000000121,0x003A4000000021,0x003C4000000121, -0x0FB17000000021,0x0057456D000122,0x0A74E000000021,0x0A74F000000121,0x104C0000000021,0x104E8000000121, -0x01E16000000021,0x01E17000000121,0x013AF000000021,0x0AB7F000000121,0x00500000000021,0x00501000000121, -0x02C82000000021,0x02C83000000121,0x010BD000000021,0x02D1D000000121,0x1E916000000021,0x1E938000000121, -0x10CA3000000021,0x10CE3000000121,0x10C94000000021,0x10CD4000000121,0x104C2000000021,0x104EA000000121, -0x003A6000000031,0x003C6000000131,0x003D5000000231,0x01F93000000031,0x01F9B000000131,0x01F233B9000232, -0x118B4000000021,0x118D4000000121,0x013E9000000021,0x0ABB9000000121,0x16E4D000000021,0x16E6D000000121, -0x01F41000000021,0x01F49000000121,0x00287000000021,0x0A7B1000000121,0x00542000000021,0x00572000000121, -0x01E58000000021,0x01E59000000121,0x01F43000000021,0x01F4B000000121,0x01F91000000031,0x01F99000000131, -0x01F213B9000232,0x02CEB000000021,0x02CEC000000121,0x01FD1000000021,0x01FD9000000121,0x01EE8000000021, -0x01EE9000000121,0x013A3000000021,0x0AB73000000121,0x003EE000000021,0x003EF000000121,0x118B8000000021, -0x118D8000000121,0x10C9E000000021,0x10CDE000000121,0x013EB000000021,0x0ABBB000000121,0x000FF000000021, -0x00178000000121,0x10417000000021,0x1043F000000121,0x118A9000000021,0x118C9000000121,0x01FB0000000021, -0x01FB8000000121,0x02C88000000021,0x02C89000000121,0x013A9000000021,0x0AB79000000121,0x1E909000000021, -0x1E92B000000121,0x013C2000000021,0x0AB92000000121,0x024B6000000021,0x024D0000000121,0x01E5E000000021, -0x01E5F000000121,0x02C69000000021,0x02C6A000000121,0x1041F000000021,0x10447000000121,0x0037F000000021, -0x003F3000000121,0x00540000000021,0x00570000000121,0x00390000000031,0x01FD3000000131,0x003B9308301233, -0x0004B000000031,0x0006B000000131,0x0212A000000231,0x004F8000000021,0x004F9000000121,0x013F3000000021, -0x013FB000000121,0x000C9000000021,0x000E9000000121,0x0040F000000021,0x0045F000000121,0x010B5000000021, -0x02D15000000121,0x0A746000000021,0x0A747000000121,0x000CD000000021,0x000ED000000121,0x00476000000021, -0x00477000000121,0x0039E000000021,0x003BE000000121,0x01F20000000021,0x01F28000000121,0x010FA000000021, -0x01CBA000000121,0x02C21000000021,0x02C51000000121,0x01EA6000000021,0x01EA7000000121,0x01F83000000031, -0x01F8B000000131,0x01F033B9000232,0x0053C000000021,0x0056C000000121,0x01F01000000021,0x01F09000000121, -0x02CC2000000021,0x02CC3000000121,0x00208000000021,0x00209000000121,0x013E3000000021,0x0ABB3000000121, -0x0A796000000021,0x0A797000000121,0x01F64000000021,0x01F6C000000121,0x10592000000021,0x105B9000000121, -0x004BE000000021,0x004BF000000121,0x01F91000000031,0x01F99000000131,0x01F213B9000232,0x003E6000000021, -0x003E7000000121,0x01EE0000000021,0x01EE1000000121,0x01FF3000000031,0x01FFC000000131,0x003C93B9000232, -0x00130000000021,0x00069307000122,0x00413000000021,0x00433000000121,0x01E98000000021,0x0007730A000122, -0x0042E000000021,0x0044E000000121,0x010DB000000021,0x01C9B000000121,0x010F6000000021,0x01CB6000000121, -0x02C00000000021,0x02C30000000121,0x118BE000000021,0x118DE000000121,0x001A7000000021,0x001A8000000121, -0x010C3000000021,0x02D23000000121,0x00415000000021,0x00435000000121,0x01E1E000000021,0x01E1F000000121, -0x00506000000021,0x00507000000121,0x01E64000000021,0x01E65000000121,0x000C7000000021,0x000E7000000121, -0x0047C000000021,0x0047D000000121,0x01E52000000021,0x01E53000000121,0x010F4000000021,0x01CB4000000121, -0x10586000000021,0x105AD000000121,0x0046A000000021,0x0046B000000121,0x02C27000000021,0x02C57000000121, -0x104CA000000021,0x104F2000000121,0x010A2000000021,0x02D02000000121,0x10C89000000021,0x10CC9000000121, -0x0FF32000000021,0x0FF52000000121,0x00398000000041,0x003B8000000141,0x003D1000000241,0x003F4000000341, -0x003A9000000031,0x003C9000000131,0x02126000000231,0x01EDA000000021,0x01EDB000000121,0x1E901000000021, -0x1E923000000121,0x0A79C000000021,0x0A79D000000121,0x010D3000000021,0x01C93000000121,0x024BC000000021, -0x024D6000000121,0x0FF2F000000021,0x0FF4F000000121,0x00250000000021,0x02C6F000000121,0x02C29000000021, -0x02C59000000121,0x1E920000000021,0x1E942000000121,0x004B2000000021,0x004B3000000121,0x10419000000021, -0x10441000000121,0x00210000000021,0x00211000000121,0x02C15000000021,0x02C45000000121,0x16E47000000021, -0x16E67000000121,0x0A754000000021,0x0A755000000121,0x16E45000000021,0x16E65000000121,0x001C7000000031, -0x001C8000000131,0x001C9000000231,0x0047E000000021,0x0047F000000121,0x001FC000000021,0x001FD000000121, -0x0020E000000021,0x0020F000000121,0x00244000000021,0x00289000000121,0x01F77000000021,0x01FDB000000121, -0x02CD6000000021,0x02CD7000000121,0x10589000000021,0x105B0000000121,0x00422000000041,0x00442000000141, -0x01C84000000241,0x01C85000000341,0x010E7000000021,0x01CA7000000121,0x004FA000000021,0x004FB000000121, -0x010D5000000021,0x01C95000000121,0x01EAC000000021,0x01EAD000000121,0x010B7000000021,0x02D17000000121, -0x013A1000000021,0x0AB71000000121,0x0A7C2000000021,0x0A7C3000000121,0x1E907000000021,0x1E929000000121, -0x013F5000000021,0x013FD000000121,0x01EE2000000021,0x01EE3000000121,0x01F62000000021,0x01F6A000000121, -0x01E92000000021,0x01E93000000121,0x001D5000000021,0x001D6000000121,0x02C06000000021,0x02C36000000121, -0x10C8B000000021,0x10CCB000000121,0x01F70000000021,0x01FBA000000121,0x003EC000000021,0x003ED000000121, -0x1E915000000021,0x1E937000000121,0x0216E000000021,0x0217E000000121,0x013C0000000021,0x0AB90000000121, -0x01EF4000000021,0x01EF5000000121,0x01FB2000000021,0x01F703B9000122,0x0FF3A000000021,0x0FF5A000000121, -0x118BC000000021,0x118DC000000121,0x004AA000000021,0x004AB000000121,0x02163000000021,0x02173000000121, -0x01E1C000000021,0x01E1D000000121,0x013C8000000021,0x0AB98000000121,0x118AF000000021,0x118CF000000121, -0x01E9A000000021,0x000612BE000122,0x10571000000021,0x10598000000121,0x10CA7000000021,0x10CE7000000121, -0x10C98000000021,0x10CD8000000121,0x00051000000021,0x00071000000121,0x004F2000000021,0x004F3000000121, -0x10CAA000000021,0x10CEA000000121,0x010AF000000021,0x02D0F000000121,0x02C8E000000021,0x02C8F000000121, -0x02CC4000000021,0x02CC5000000121,0x01E0A000000021,0x01E0B000000121,0x0FB15000000021,0x0057456B000122, -0x16E50000000021,0x16E70000000121,0x1058E000000021,0x105B5000000121,0x10411000000021,0x10439000000121, -0x10423000000021,0x1044B000000121,0x0053A000000021,0x0056A000000121,0x01E6C000000021,0x01E6D000000121, -0x104BE000000021,0x104E6000000121,0x10424000000021,0x1044C000000121,0x010A9000000021,0x02D09000000121, -0x024C2000000021,0x024DC000000121,0x10C81000000021,0x10CC1000000121,0x013BC000000021,0x0AB8C000000121, -0x00462000000031,0x00463000000131,0x01C87000000231,0x118A6000000021,0x118C6000000121,0x01E4A000000021, -0x01E4B000000121,0x02162000000021,0x02172000000121,0x01ED4000000021,0x01ED5000000121,0x010AA000000021, -0x02D0A000000121,0x004EC000000021,0x004ED000000121,0x02C0C000000021,0x02C3C000000121,0x0A79A000000021, -0x0A79B000000121,0x004CB000000021,0x004CC000000121,0x104BD000000021,0x104E5000000121,0x00370000000021, -0x00371000000121,0x01FE7000000021,0x003C5308342123,0x1E914000000021,0x1E936000000121,0x003DA000000021, -0x003DB000000121,0x01F35000000021,0x01F3D000000121,0x16E51000000021,0x16E71000000121,0x00392000000031, -0x003B2000000131,0x003D0000000231,0x02C96000000021,0x02C97000000121,0x01FA5000000031,0x01FAD000000131, -0x01F653B9000232,0x00391000000021,0x003B1000000121,0x00534000000021,0x00564000000121,0x0041B000000021, -0x0043B000000121,0x013DF000000021,0x0ABAF000000121,0x02C2C000000021,0x02C5C000000121,0x00124000000021, -0x00125000000121,0x10CA2000000021,0x10CE2000000121,0x01E8C000000021,0x01E8D000000121,0x01EB4000000021, -0x01EB5000000121,0x0016C000000021,0x0016D000000121,0x01E02000000021,0x01E03000000121,0x0019A000000021, -0x0023D000000121,0x00102000000021,0x00103000000121,0x01F14000000021,0x01F1C000000121,0x0FF28000000021, -0x0FF48000000121,0x10C80000000021,0x10CC0000000121,0x010EE000000021,0x01CAE000000121,0x01F55000000021, -0x01F5D000000121,0x0A77B000000021,0x0A77C000000121,0x01FC7000000021,0x003B73423B9123,0x00059000000021, -0x00079000000121,0x0014A000000021,0x0014B000000121,0x01E24000000021,0x01E25000000121,0x013BD000000021, -0x0AB8D000000121,0x02CBC000000021,0x02CBD000000121,0x1040D000000021,0x10435000000121,0x1058F000000021, -0x105B6000000121,0x118A7000000021,0x118C7000000121,0x0A660000000021,0x0A661000000121,0x00514000000021, -0x00515000000121,0x0052E000000021,0x0052F000000121,0x004A4000000021,0x004A5000000121,0x00400000000021, -0x00450000000121,0x16E58000000021,0x16E78000000121,0x0A64E000000021,0x0A64F000000121,0x0FF2E000000021, -0x0FF4E000000121,0x1040C000000021,0x10434000000121,0x000DB000000021,0x000FB000000121,0x001CD000000021, -0x001CE000000121,0x010E8000000021,0x01CA8000000121,0x0054F000000021,0x0057F000000121,0x0A738000000021, -0x0A739000000121,0x16E5F000000021,0x16E7F000000121,0x01FA6000000031,0x01FAE000000131,0x01F663B9000232, -0x1E90F000000021,0x1E931000000121,0x02C07000000021,0x02C37000000121,0x010A3000000021,0x02D03000000121, -0x0A7A0000000021,0x0A7A1000000121,0x00421000000031,0x00441000000131,0x01C83000000231,0x0A680000000021, -0x0A681000000121,0x00282000000021,0x0A7C5000000121,0x01D79000000021,0x0A77D000000121,0x024CB000000021, -0x024E5000000121,0x00401000000021,0x00451000000121,0x0A758000000021,0x0A759000000121,0x00058000000021, -0x00078000000121,0x00193000000021,0x00260000000121,0x10CA1000000021,0x10CE1000000121,0x0054E000000021, -0x0057E000000121,0x00186000000021,0x00254000000121,0x013DC000000021,0x0ABAC000000121,0x024BD000000021, -0x024D7000000121,0x001B3000000021,0x001B4000000121,0x0A696000000021,0x0A697000000121,0x00216000000021, -0x00217000000121,0x01ECE000000021,0x01ECF000000121,0x02168000000021,0x02178000000121,0x01FC6000000021, -0x003B7342000122,0x02C12000000021,0x02C42000000121,0x02C2F000000021,0x02C5F000000121,0x1E90E000000021, -0x1E930000000121,0x10CAB000000021,0x10CEB000000121,0x01E86000000021,0x01E87000000121,0x00412000000031, -0x00432000000131,0x01C80000000231,0x013D6000000021,0x0ABA6000000121,0x01EBA000000021,0x01EBB000000121, -0x1E91B000000021,0x1E93D000000121,0x1041A000000021,0x10442000000121,0x01EEE000000021,0x01EEF000000121, -0x0FF31000000021,0x0FF51000000121,0x0A7BC000000021,0x0A7BD000000121,0x001DB000000021,0x001DC000000121, -0x001A6000000021,0x00280000000121,0x01F07000000021,0x01F0F000000121,0x118BD000000021,0x118DD000000121, -0x000C8000000021,0x000E8000000121,0x004D2000000021,0x004D3000000121,0x010E1000000021,0x01CA1000000121, -0x013B7000000021,0x0AB87000000121,0x10585000000021,0x105AC000000121,0x16E4B000000021,0x16E6B000000121, -0x00172000000021,0x00173000000121,0x0049E000000021,0x0049F000000121,0x004E6000000021,0x004E7000000121, -0x010B0000000021,0x02D10000000121,0x01E99000000021,0x0007930A000122,0x001EE000000021,0x001EF000000121, -0x02C9C000000021,0x02C9D000000121,0x104B4000000021,0x104DC000000121,0x10C87000000021,0x10CC7000000121, -0x013BA000000021,0x0AB8A000000121,0x01E10000000021,0x01E11000000121,0x00230000000021,0x00231000000121, -0x00428000000021,0x00448000000121,0x02CD0000000021,0x02CD1000000121,0x118A0000000021,0x118C0000000121, -0x003E0000000021,0x003E1000000121,0x01FF4000000021,0x003CE3B9000122,0x0A780000000021,0x0A781000000121, -0x010F5000000021,0x01CB5000000121,0x0053B000000021,0x0056B000000121,0x000D5000000021,0x000F5000000121, -0x10588000000021,0x105AF000000121,0x00414000000031,0x00434000000131,0x01C81000000231,0x01FA4000000031, -0x01FAC000000131,0x01F643B9000232,0x0012A000000021,0x0012B000000121,0x00052000000021,0x00072000000121, -0x024B7000000021,0x024D1000000121,0x1E908000000021,0x1E92A000000121,0x00398000000041,0x003B8000000141, -0x003D1000000241,0x003F4000000341,0x00202000000021,0x00203000000121,0x01F85000000031,0x01F8D000000131, -0x01F053B9000232,0x00470000000021,0x00471000000121,0x00271000000021,0x02C6E000000121,0x02C1B000000021, -0x02C4B000000121,0x0FB03000000021,0x00066066069123,0x0048A000000021,0x0048B000000121,0x0A752000000021, -0x0A753000000121,0x0FF25000000021,0x0FF45000000121,0x00407000000021,0x00457000000121,0x000C1000000021, -0x000E1000000121,0x01E44000000021,0x01E45000000121,0x01F97000000031,0x01F9F000000131,0x01F273B9000232, -0x00548000000021,0x00578000000121,0x0021C000000021,0x0021D000000121,0x013E5000000021,0x0ABB5000000121, -0x0051A000000021,0x0051B000000121,0x02CB6000000021,0x02CB7000000121,0x0A654000000021,0x0A655000000121, -0x10403000000021,0x1042B000000121,0x01E72000000021,0x01E73000000121,0x010D4000000021,0x01C94000000121, -0x104C1000000021,0x104E9000000121,0x10C8A000000021,0x10CCA000000121,0x01E2A000000021,0x01E2B000000121, -0x00462000000031,0x00463000000131,0x01C87000000231,0x01F76000000021,0x01FDA000000121,0x00053000000031, -0x00073000000131,0x0017F000000231,0x02C26000000021,0x02C56000000121,0x013A0000000021,0x0AB70000000121, -0x003FA000000021,0x003FB000000121,0x004C5000000021,0x004C6000000121,0x01F92000000031,0x01F9A000000131, -0x01F223B9000232,0x00555000000021,0x00585000000121,0x013E8000000021,0x0ABB8000000121,0x001C7000000031, -0x001C8000000131,0x001C9000000231,0x01F42000000021,0x01F4A000000121,0x01F67000000021,0x01F6F000000121, -0x1057C000000021,0x105A3000000121,0x0A7B4000000021,0x0A7B5000000121,0x0A698000000021,0x0A699000000121, -0x1E904000000021,0x1E926000000121,0x0040C000000021,0x0045C000000121,0x010DA000000021,0x01C9A000000121, -0x01FD6000000021,0x003B9342000122,0x000D0000000021,0x000F0000000121,0x16E46000000021,0x16E66000000121, -0x01EC2000000021,0x01EC3000000121,0x001E4000000021,0x001E5000000121,0x00044000000021,0x00064000000121, -0x0017D000000021,0x0017E000000121,0x01F21000000021,0x01F29000000121,0x0FF39000000021,0x0FF59000000121, -0x013AC000000021,0x0AB7C000000121,0x00587000000021,0x00565582000122,0x01F00000000021,0x01F08000000121, -0x003A5000000021,0x003C5000000121,0x00158000000021,0x00159000000121,0x104CF000000021,0x104F7000000121, -0x01E3A000000021,0x01E3B000000121,0x0A72C000000021,0x0A72D000000121,0x118B7000000021,0x118D7000000121, -0x00112000000021,0x00113000000121,0x01E36000000021,0x01E37000000121,0x16E4E000000021,0x16E6E000000121, -0x01F7D000000021,0x01FFB000000121,0x00494000000021,0x00495000000121,0x01E80000000021,0x01E81000000121, -0x00116000000021,0x00117000000121,0x0042D000000021,0x0044D000000121,0x013F2000000021,0x013FA000000121, -0x00179000000021,0x0017A000000121,0x004DA000000021,0x004DB000000121,0x02CA8000000021,0x02CA9000000121, -0x000CC000000021,0x000EC000000121,0x001A2000000021,0x001A3000000121,0x003A1000000031,0x003C1000000131, -0x003F1000000231,0x01E7C000000021,0x01E7D000000121,0x013CF000000021,0x0AB9F000000121,0x10412000000021, -0x1043A000000121,0x00520000000021,0x00521000000121,0x02C1C000000021,0x02C4C000000121,0x0026B000000021, -0x02C62000000121,0x0FB14000000021,0x00574565000122,0x0015C000000021,0x0015D000000121,0x0A652000000021, -0x0A653000000121,0x0FF26000000021,0x0FF46000000121,0x001E8000000021,0x001E9000000121,0x010B6000000021, -0x02D16000000121,0x0A656000000021,0x0A657000000121,0x0051C000000021,0x0051D000000121,0x013C3000000021, -0x0AB93000000121,0x10591000000021,0x105B8000000121,0x104CB000000021,0x104F3000000121,0x01EC6000000021, -0x01EC7000000121,0x001E0000000021,0x001E1000000121,0x01F63000000021,0x01F6B000000121,0x02C01000000021, -0x02C31000000121,0x1E900000000021,0x1E922000000121,0x01E78000000021,0x01E79000000121,0x024CE000000021, -0x024E8000000121,0x0A76A000000021,0x0A76B000000121,0x0011A000000021,0x0011B000000121,0x00429000000021, -0x00449000000121,0x01F84000000031,0x01F8C000000131,0x01F043B9000232,0x010D6000000021,0x01C96000000121, -0x01FB1000000021,0x01FB9000000121,0x0A762000000021,0x0A763000000121,0x10CB2000000021,0x10CF2000000121, -0x02C20000000021,0x02C50000000121,0x010BE000000021,0x02D1E000000121,0x1041E000000021,0x10446000000121, -0x01FF7000000021,0x003C93423B9123,0x004E2000000021,0x004E3000000121,0x01F90000000031,0x01F98000000131, -0x01F203B9000232,0x004DE000000021,0x004DF000000121,0x01F94000000031,0x01F9C000000131,0x01F243B9000232, -0x00541000000021,0x00571000000121,0x00545000000021,0x00575000000121,0x01F25000000021,0x01F2D000000121, -0x00154000000021,0x00155000000121,0x02C24000000021,0x02C54000000121,0x013EA000000021,0x0ABBA000000121, -0x00181000000021,0x00253000000121,0x003A3000000031,0x003C2000000131,0x003C3000000231,0x118B3000000021, -0x118D3000000121,0x010BA000000021,0x02D1A000000121,0x00180000000021,0x00243000000121,0x01E3E000000021, -0x01E3F000000121,0x010FF000000021,0x01CBF000000121,0x01FF3000000031,0x01FFC000000131,0x003C93B9000232, -0x010D2000000021,0x01C92000000121,0x0A76E000000021,0x0A76F000000121,0x10C88000000021,0x10CC8000000121, -0x01C88000000031,0x0A64A000000131,0x0A64B000000231,0x010B2000000021,0x02D12000000121,0x013C7000000021, -0x0AB97000000121,0x00518000000021,0x00519000000121,0x0A766000000021,0x0A767000000121,0x001EC000000021, -0x001ED000000121,0x104C3000000021,0x104EB000000121,0x10574000000021,0x1059B000000121,0x013EE000000021, -0x0ABBE000000121,0x1E91C000000021,0x1E93E000000121,0x010E2000000021,0x01CA2000000121,0x02C05000000021, -0x02C35000000121,0x004A0000000021,0x004A1000000121,0x01E42000000021,0x01E43000000121,0x013B4000000021, -0x0AB84000000121,0x118BF000000021,0x118DF000000121,0x00150000000021,0x00151000000121,0x01F56000000021, -0x003C5313342123,0x02CB0000000021,0x02CB1000000121,0x013A4000000021,0x0AB74000000121,0x004C1000000021, -0x004C2000000121,0x001CA000000031,0x001CB000000131,0x001CC000000231,0x0004C000000021,0x0006C000000121, -0x104C7000000021,0x104EF000000121,0x16E5A000000021,0x16E7A000000121,0x00222000000021,0x00223000000121, -0x00490000000021,0x00491000000121,0x02CF2000000021,0x02CF3000000121,0x10595000000021,0x105BC000000121, -0x0053D000000021,0x0056D000000121,0x00388000000021,0x003AD000000121,0x00549000000021,0x00579000000121, -0x013E2000000021,0x0ABB2000000121,0x16E4A000000021,0x16E6A000000121,0x01EFC000000021,0x01EFD000000121, -0x01F90000000031,0x01F98000000131,0x01F203B9000232,0x004D6000000021,0x004D7000000121,0x0A7B8000000021, -0x0A7B9000000121,0x00414000000031,0x00434000000131,0x01C81000000231,0x10CAD000000021,0x10CED000000121, -0x010F7000000021,0x01CB7000000121,0x16E55000000021,0x16E75000000121,0x0A728000000021,0x0A729000000121, -0x01E00000000021,0x01E01000000121,0x00232000000021,0x00233000000121,0x010A5000000021,0x02D05000000121, -0x01F15000000021,0x01F1D000000121,0x003A9000000031,0x003C9000000131,0x02126000000231,0x0013B000000021, -0x0013C000000121,0x00408000000021,0x00458000000121,0x000DC000000021,0x000FC000000121,0x01EBE000000021, -0x01EBF000000121,0x02C18000000021,0x02C48000000121,0x0A7A8000000021,0x0A7A9000000121,0x0216B000000021, -0x0217B000000121,0x02C10000000021,0x02C40000000121,0x02CDE000000021,0x02CDF000000121,0x0029E000000021, -0x0A7B0000000121,0x000D4000000021,0x000F4000000121,0x010EF000000021,0x01CAF000000121,0x00551000000021, -0x00581000000121,0x013DA000000021,0x0ABAA000000121,0x00535000000021,0x00565000000121,0x01FA0000000031, -0x01FA8000000131,0x01F603B9000232,0x024C6000000021,0x024E0000000121,0x00410000000021,0x00430000000121, -0x01EB6000000021,0x01EB7000000121,0x01F84000000031,0x01F8C000000131,0x01F043B9000232,0x10416000000021, -0x1043E000000121,0x16E42000000021,0x16E62000000121,0x00164000000021,0x00165000000121,0x02CA0000000021, -0x02CA1000000121,0x01E2E000000021,0x01E2F000000121,0x10C95000000021,0x10CD5000000121,0x00498000000021, -0x00499000000121,0x0010A000000021,0x0010B000000121,0x10C9D000000021,0x10CDD000000121,0x118AA000000021, -0x118CA000000121,0x01E88000000021,0x01E89000000121,0x00528000000021,0x00529000000121,0x013D7000000021, -0x0ABA7000000121,0x0A65A000000021,0x0A65B000000121,0x0022A000000021,0x0022B000000121,0x01FA5000000031, -0x01FAD000000131,0x01F653B9000232,0x104B3000000021,0x104DB000000121,0x1E90C000000021,0x1E92E000000121, -0x024BB000000021,0x024D5000000121,0x001F4000000021,0x001F5000000121,0x0A690000000021,0x0A691000000121, -0x0FF29000000021,0x0FF49000000121,0x02C75000000021,0x02C76000000121,0x02CB8000000021,0x02CB9000000121, -0x10401000000021,0x10429000000121,0x02C0D000000021,0x02C3D000000121,0x104D0000000021,0x104F8000000121, -0x1E913000000021,0x1E935000000121,0x001AF000000021,0x001B0000000121,0x0A7C7000000021,0x0A7C8000000121, -0x013BF000000021,0x0AB8F000000121,0x10402000000021,0x1042A000000121,0x010EA000000021,0x01CAA000000121, -0x104BF000000021,0x104E7000000121,0x1058D000000021,0x105B4000000121,0x02164000000021,0x02174000000121, -0x0018E000000021,0x001DD000000121,0x001D3000000021,0x001D4000000121,0x01F10000000021,0x01F18000000121, -0x01F57000000021,0x01F5F000000121,0x01ED2000000021,0x01ED3000000121,0x0FF2A000000021,0x0FF4A000000121, -0x01E04000000021,0x01E05000000121,0x004EE000000021,0x004EF000000121,0x02C94000000021,0x02C95000000121, -0x000C0000000021,0x000E0000000121,0x01FE6000000021,0x003C5342000122,0x013DB000000021,0x0ABAB000000121, -0x001B2000000021,0x0028B000000121,0x10426000000021,0x1044E000000121,0x0A662000000021,0x0A663000000121, -0x00054000000021,0x00074000000121,0x00556000000021,0x00586000000121,0x0042A000000031,0x0044A000000131, -0x01C86000000231,0x10422000000021,0x1044A000000121,0x01F36000000021,0x01F3E000000121,0x01FA1000000031, -0x01FA9000000131,0x01F613B9000232,0x004CD000000021,0x004CE000000121,0x104BB000000021,0x104E3000000121, -0x0023B000000021,0x0023C000000121,0x001CF000000021,0x001D0000000121,0x0050C000000021,0x0050D000000121, -0x0A646000000021,0x0A647000000121,0x01E46000000021,0x01E47000000121,0x10CA6000000021,0x10CE6000000121, -0x0A779000000021,0x0A77A000000121,0x0FF36000000021,0x0FF56000000121,0x118A2000000021,0x118C2000000121, -0x004EA000000021,0x004EB000000121,0x0041D000000021,0x0043D000000121,0x0A794000000021,0x0A7C4000000121, -0x0A688000000021,0x0A689000000121,0x01EB2000000021,0x01EB3000000121,0x02160000000021,0x02170000000121, -0x01ED6000000021,0x01ED7000000121,0x024C3000000021,0x024DD000000121,0x16E5E000000021,0x16E7E000000121, -0x004AC000000021,0x004AD000000121,0x16E52000000021,0x16E72000000121,0x0023E000000021,0x02C66000000121, -0x02CB4000000021,0x02CB5000000121,0x0FF2D000000021,0x0FF4D000000121,0x0014C000000021,0x0014D000000121, -0x01E22000000021,0x01E23000000121,0x013BB000000021,0x0AB8B000000121,0x00143000000021,0x00144000000121, -0x0FB04000000021,0x0006606606C123,0x10581000000021,0x105A8000000121,0x00170000000021,0x00171000000121, -0x01E94000000021,0x01E95000000121,0x01FC2000000021,0x01F743B9000122,0x02C28000000021,0x02C58000000121, -0x1E910000000021,0x1E932000000121,0x1040E000000021,0x10436000000121,0x01F83000000031,0x01F8B000000131, -0x01F033B9000232,0x0A798000000021,0x0A799000000121,0x013B8000000021,0x0AB88000000121,0x01E70000000021, -0x01E71000000121,0x00422000000041,0x00442000000141,0x01C84000000241,0x01C85000000341,0x10C85000000021, -0x10CC5000000121,0x01EAE000000021,0x01EAF000000121,0x00122000000021,0x00123000000121,0x104B2000000021, -0x104DA000000121,0x10C8C000000021,0x10CCC000000121,0x10405000000021,0x1042D000000121,0x01F87000000031, -0x01F8F000000131,0x01F073B9000232,0x00420000000021,0x00440000000121,0x001AE000000021,0x00288000000121, -0x0021A000000021,0x0021B000000121,0x0038C000000021,0x003CC000000121,0x01F95000000031,0x01F9D000000131, -0x01F253B9000232,0x00345000000041,0x00399000000141,0x003B9000000241,0x01FBE000000341,0x0018A000000021, -0x00257000000121,0x00390000000031,0x01FD3000000131,0x003B9308301233,0x010B1000000021,0x02D11000000121, -0x0011E000000021,0x0011F000000121,0x01E08000000021,0x01E09000000121,0x02C90000000021,0x02C91000000121, -0x0A7C0000000021,0x0A7C1000000121,0x013E7000000021,0x0ABB7000000121,0x10580000000021,0x105A7000000121, -0x0041C000000021,0x0043C000000121,0x0FB05000000031,0x0FB06000000131,0x00073074000232,0x0A7A4000000021, -0x0A7A5000000121,0x01E74000000021,0x01E75000000121,0x02C14000000021,0x02C44000000121,0x1E90D000000021, -0x1E92F000000121,0x013A5000000021,0x0AB75000000121,0x010F3000000021,0x01CB3000000121,0x024BA000000021, -0x024D4000000121,0x0013F000000021,0x00140000000121,0x0039D000000021,0x003BD000000121,0x02CE2000000021, -0x02CE3000000121,0x010A1000000021,0x02D01000000121,0x00508000000021,0x00509000000121,0x0004D000000021, -0x0006D000000121,0x00389000000021,0x003AE000000121,0x0048C000000021,0x0048D000000121,0x02C04000000021, -0x02C34000000121,0x0216F000000021,0x0217F000000121,0x004B0000000021,0x004B1000000121,0x02CD2000000021, -0x02CD3000000121,0x0A734000000021,0x0A735000000121,0x0FB01000000021,0x00066069000122,0x00050000000021, -0x00070000000121,0x00160000000021,0x00161000000121,0x10584000000021,0x105AB000000121,0x01E32000000021, -0x01E33000000121,0x10CA9000000021,0x10CE9000000121,0x00200000000021,0x00201000000121,0x118AB000000021, -0x118CB000000121,0x0A786000000021,0x0A787000000121,0x118BB000000021,0x118DB000000121,0x118AE000000021, -0x118CE000000121,0x0021E000000021,0x0021F000000121,0x003AA000000021,0x003CA000000121,0x010C2000000021, -0x02D22000000121,0x013C4000000021,0x0AB94000000121,0x00539000000021,0x00569000000121,0x0A74A000000021, -0x0A74B000000121,0x000C3000000021,0x000E3000000121,0x0046E000000021,0x0046F000000121,0x0054D000000021, -0x0057D000000121,0x01FE2000000021,0x003C5308300123,0x010E3000000021,0x01CA3000000121,0x01F52000000021, -0x003C5313300123,0x003DE000000021,0x003DF000000121,0x024CA000000021,0x024E4000000121,0x00345000000041, -0x00399000000141,0x003B9000000241,0x01FBE000000341,0x10C99000000021,0x10CD9000000121,0x0A75A000000021, -0x0A75B000000121,0x00419000000021,0x00439000000121,0x02C09000000021,0x02C39000000121,0x0037D000000021, -0x003FF000000121,0x01F26000000021,0x01F2E000000121,0x118B2000000021,0x118D2000000121,0x02183000000021, -0x02184000000121,0x02C23000000021,0x02C53000000121,0x00132000000021,0x00133000000121,0x01E56000000021, -0x01E57000000121,0x010AE000000021,0x02D0E000000121,0x0A740000000021,0x0A741000000121,0x000DD000000021, -0x000FD000000121,0x010E6000000021,0x01CA6000000121,0x01E60000000031,0x01E61000000131,0x01E9B000000231, -0x00478000000021,0x00479000000121,0x0022E000000021,0x0022F000000121,0x01FF6000000021,0x003C9342000122, -0x01FD2000000021,0x003B9308300123,0x0A694000000021,0x0A695000000121,0x0052C000000021,0x0052D000000121, -0x10570000000021,0x10597000000121,0x0A666000000021,0x0A667000000121,0x001F0000000021,0x0006A30C000122, -0x10C96000000021,0x10CD6000000121,0x0020A000000021,0x0020B000000121,0x024BF000000021,0x024D9000000121, -0x013CB000000021,0x0AB9B000000121,0x10C9C000000021,0x10CDC000000121,0x0041E000000031,0x0043E000000131, -0x01C82000000231,0x01E84000000021,0x01E85000000121,0x01EF0000000021,0x01EF1000000121,0x013A8000000021, -0x0AB78000000121,0x16E59000000021,0x16E79000000121,0x02CA4000000021,0x02CA5000000121,0x0A724000000021, -0x0A725000000121,0x0049C000000021,0x0049D000000121,0x0010E000000021,0x0010F000000121,0x01FA4000000031, -0x01FAC000000131,0x01F643B9000232,0x104D3000000021,0x104FB000000121,0x1E903000000021,0x1E925000000121, -0x00191000000021,0x00192000000121,0x01F80000000031,0x01F88000000131,0x01F003B9000232,0x013DE000000021, -0x0ABAE000000121,0x003A0000000031,0x003C0000000131,0x003D6000000231,0x013AD000000021,0x0AB7D000000121, -0x00206000000021,0x00207000000121,0x01F45000000021,0x01F4D000000121,0x003EA000000021,0x003EB000000121, -0x010BB000000021,0x02D1B000000121,0x00474000000021,0x00475000000121,0x0FF38000000021,0x0FF58000000121, -0x004FE000000021,0x004FF000000121,0x02C84000000021,0x02C85000000121,0x10413000000021,0x1043B000000121, -0x01FD7000000021,0x003B9308342123,0x01E5C000000021,0x01E5D000000121,0x01EE4000000021,0x01EE5000000121, -0x02CC8000000021,0x02CC9000000121,0x02C1F000000021,0x02C4F000000121,0x004BA000000021,0x004BB000000121, -0x104CE000000021,0x104F6000000121,0x1E905000000021,0x1E927000000121,0x000D1000000021,0x000F1000000121, -0x00472000000021,0x00473000000121,0x118B6000000021,0x118D6000000121,0x01F78000000021,0x01FF8000000121, -0x00043000000021,0x00063000000121,0x01EA2000000021,0x01EA3000000121,0x01F24000000021,0x01F2C000000121, -0x0019D000000021,0x00272000000121,0x004B6000000021,0x004B7000000121,0x000DF000000031,0x01E9E000000131, -0x00073073000232,0x01F87000000031,0x01F8F000000131,0x01F073B9000232,0x01E14000000021,0x01E15000000121, -0x01EE6000000021,0x01EE7000000121,0x0040B000000021,0x0045B000000121,0x00409000000021,0x00459000000121, -0x1057D000000021,0x105A4000000121,0x003A8000000021,0x003C8000000121,0x01E5A000000021,0x01E5B000000121, -0x1057F000000021,0x105A6000000121,0x00544000000021,0x00574000000121,0x010FE000000021,0x01CBE000000121, -0x01E12000000021,0x01E13000000121,0x010B9000000021,0x02D19000000121,0x00047000000021,0x00067000000121, -0x004FC000000021,0x004FD000000121,0x10C92000000021,0x10CD2000000121,0x02C86000000021,0x02C87000000121, -0x01E1A000000021,0x01E1B000000121,0x10C90000000021,0x10CD0000000121,0x010BF000000021,0x02D1F000000121, -0x013CA000000021,0x0AB9A000000121,0x16E49000000021,0x16E69000000121,0x00041000000021,0x00061000000121, -0x001BC000000021,0x001BD000000121,0x01EEA000000021,0x01EEB000000121,0x00502000000021,0x00503000000121, -0x00248000000021,0x00249000000121,0x01F95000000031,0x01F9D000000131,0x01F253B9000232,0x010DF000000021, -0x01C9F000000121,0x001C4000000031,0x001C5000000131,0x001C6000000231,0x00546000000021,0x00576000000121, -0x013EF000000021,0x0ABBF000000121,0x02CCC000000021,0x02CCD000000121,0x010D7000000021,0x01C97000000121, -0x013A7000000021,0x0AB77000000121,0x0047A000000021,0x0047B000000121,0x00134000000021,0x00135000000121, -0x0042A000000031,0x0044A000000131,0x01C86000000231,0x02C19000000021,0x02C49000000121,0x00204000000021, -0x00205000000121,0x0025C000000021,0x0A7AB000000121,0x024CF000000021,0x024E9000000121,0x01E54000000021, -0x01E55000000121,0x10579000000021,0x105A0000000121,0x0054A000000021,0x0057A000000121,0x0A684000000021, -0x0A685000000121,0x0FF27000000021,0x0FF47000000121,0x01F05000000021,0x01F0D000000121,0x0FB13000000021, -0x00574576000122,0x02132000000021,0x0214E000000121,0x0024C000000021,0x0024D000000121,0x013B5000000021, -0x0AB85000000121,0x02CC6000000021,0x02CC7000000121,0x10408000000021,0x10430000000121,0x02C1D000000021, -0x02C4D000000121,0x0023F000000021,0x02C7E000000121,0x0A742000000021,0x0A743000000121,0x01E62000000021, -0x01E63000000121,0x10CA8000000021,0x10CE8000000121,0x000B5000000031,0x0039C000000131,0x003BC000000231, -0x01F81000000031,0x01F89000000131,0x01F013B9000232,0x10C9A000000021,0x10CDA000000121,0x0012E000000021, -0x0012F000000121,0x00403000000021,0x00453000000121,0x001FE000000021,0x001FF000000121,0x00345000000041, -0x00399000000141,0x003B9000000241,0x01FBE000000341,0x00174000000021,0x00175000000121,0x003CF000000021, -0x003D7000000121,0x024CD000000021,0x024E7000000121,0x01FB3000000031,0x01FBC000000131,0x003B13B9000232, -0x118AD000000021,0x118CD000000121,0x0A744000000021,0x0A745000000121,0x000D9000000021,0x000F9000000121, -0x01E0C000000021,0x01E0D000000121,0x02C17000000021,0x02C47000000121,0x003E2000000021,0x003E3000000121, -0x0026C000000021,0x0A7AD000000121,0x0A756000000021,0x0A757000000121,0x00405000000021,0x00455000000121, -0x00197000000021,0x00268000000121,0x01F60000000021,0x01F68000000121,0x01EEC000000021,0x01EED000000121, -0x02C8C000000021,0x02C8D000000121,0x010F2000000021,0x01CB2000000121,0x104B6000000021,0x104DE000000121, -0x1E91D000000021,0x1E93F000000121,0x1040A000000021,0x10432000000121,0x013C6000000021,0x0AB96000000121, -0x16E41000000021,0x16E61000000121,0x00424000000021,0x00444000000121,0x001A9000000021,0x00283000000121, -0x0039A000000031,0x003BA000000131,0x003F0000000231,0x010E5000000021,0x01CA5000000121,0x104C8000000021, -0x104F0000000121,0x10407000000021,0x1042F000000121,0x013D0000000021,0x0ABA0000000121,0x01FA2000000031, -0x01FAA000000131,0x01F623B9000232,0x0046C000000021,0x0046D000000121,0x010A0000000021,0x02D00000000121, -0x0A782000000021,0x0A783000000121,0x000C5000000031,0x000E5000000131,0x0212B000000231,0x004B4000000021, -0x004B5000000121,0x02CCE000000021,0x02CCF000000121,0x01FF2000000021,0x01F7C3B9000122,0x0FF21000000021, -0x0FF41000000121,0x0A73A000000021,0x0A73B000000121,0x104B9000000021,0x104E1000000121,0x01EA4000000021, -0x01EA5000000121,0x0038F000000021,0x003CE000000121,0x024BE000000021,0x024D8000000121,0x003B0000000031, -0x01FE3000000131,0x003C5308301233,0x00049000000021,0x00069000000121,0x1E91F000000021,0x1E941000000121, -0x00246000000021,0x00247000000121,0x01F73000000021,0x01FC9000000121,0x02C67000000021,0x02C68000000121, -0x02166000000021,0x02176000000121,0x00100000000021,0x00101000000121,0x003E4000000021,0x003E5000000121, -0x013D2000000021,0x0ABA2000000121,0x0A79E000000021,0x0A79F000000121,0x01FA0000000031,0x01FA8000000131, -0x01F603B9000232,0x10CB1000000021,0x10CF1000000121,0x16E5D000000021,0x16E7D000000121,0x010C1000000021, -0x02D21000000121,0x0A7F5000000021,0x0A7F6000000121,0x013BE000000021,0x0AB8E000000121,0x0042C000000021, -0x0044C000000121,0x01FC4000000021,0x003AE3B9000122,0x010DD000000021,0x01C9D000000121,0x01F93000000031, -0x01F9B000000131,0x01F233B9000232,0x0024E000000021,0x0024F000000121,0x004BC000000021,0x004BD000000121, -0x00176000000021,0x00177000000121,0x013AB000000021,0x0AB7B000000121,0x013E1000000021,0x0ABB1000000121, -0x00504000000021,0x00505000000121,0x01F03000000021,0x01F0B000000121,0x0A686000000021,0x0A687000000121, -0x0054C000000021,0x0057C000000121,0x16E4F000000021,0x16E6F000000121,0x010EB000000021,0x01CAB000000121, -0x013D9000000021,0x0ABA9000000121,0x0023A000000021,0x02C65000000121,0x004A8000000021,0x004A9000000121, -0x02CDA000000021,0x02CDB000000121,0x0041E000000031,0x0043E000000131,0x01C82000000231,0x01F81000000031, -0x01F89000000131,0x01F013B9000232,0x00394000000021,0x003B4000000121,0x02C72000000021,0x02C73000000121, -0x00510000000021,0x00511000000121,0x01E26000000021,0x01E27000000121,0x0A642000000021,0x0A643000000121, -0x004C9000000021,0x004CA000000121,0x00147000000021,0x00148000000121,0x01EB0000000021,0x01EB1000000121, -0x0A75E000000021,0x0A75F000000121,0x1058C000000021,0x105B3000000121,0x0A73C000000021,0x0A73D000000121, -0x104D1000000021,0x104F9000000121,0x104D2000000021,0x104FA000000121,0x10590000000021,0x105B7000000121, -0x00055000000021,0x00075000000121,0x01F11000000021,0x01F19000000121,0x0037B000000021,0x003FD000000121, -0x01F31000000021,0x01F39000000121,0x02CBA000000021,0x02CBB000000121,0x00552000000021,0x00582000000121, -0x01FC3000000031,0x01FCC000000131,0x003B73B9000232,0x01E6E000000021,0x01E6F000000121,0x02167000000021, -0x02177000000121,0x000DE000000021,0x000FE000000121,0x00190000000021,0x0025B000000121,0x0A68C000000021, -0x0A68D000000121,0x01EF8000000021,0x01EF9000000121,0x104B0000000021,0x104D8000000121,0x10C8E000000021, -0x10CCE000000121,0x02C08000000021,0x02C38000000121,0x0016E000000021,0x0016F000000121,0x16E5C000000021, -0x16E7C000000121,0x010CD000000021,0x02D2D000000121,0x01F7B000000021,0x01FEB000000121,0x01E90000000021, -0x01E91000000121,0x013B3000000021,0x0AB83000000121,0x001D1000000021,0x001D2000000121,0x01F53000000021, -0x01F5B000000121,0x00126000000021,0x00127000000121,0x01E48000000021,0x01E49000000121,0x02C98000000021, -0x02C99000000121,0x10400000000021,0x10428000000121,0x01FA3000000031,0x01FAB000000131,0x01F633B9000232, -0x118B9000000021,0x118D9000000121,0x013B0000000021,0x0AB80000000121,0x01ED8000000021,0x01ED9000000121, -0x10CA4000000021,0x10CE4000000121,0x01F74000000021,0x01FCA000000121,0x00422000000041,0x00442000000141, -0x01C84000000241,0x01C85000000341,0x01EF2000000021,0x01EF3000000121,0x02161000000021,0x02171000000121, -0x10420000000021,0x10448000000121,0x001F1000000031,0x001F2000000131,0x001F3000000231,0x001D7000000021, -0x001D8000000121,0x0A68A000000021,0x0A68B000000121,0x003F7000000021,0x003F8000000121,0x0FF35000000021, -0x0FF55000000121,0x003DC000000021,0x003DD000000121,0x10C8D000000021,0x10CCD000000121,0x00418000000021, -0x00438000000121,0x00212000000021,0x00213000000121,0x004F0000000021,0x004F1000000121,0x024C1000000021, -0x024DB000000121,0x0050A000000021,0x0050B000000121,0x1E917000000021,0x1E939000000121,0x0A644000000021, -0x0A645000000121,0x00537000000021,0x00567000000121,0x010AC000000021,0x02D0C000000121,0x010AD000000021, -0x02D0D000000121,0x024C7000000021,0x024E1000000121,0x00460000000021,0x00461000000121,0x02C2B000000021, -0x02C5B000000121,0x16E56000000021,0x16E76000000121,0x010C7000000021,0x02D27000000121,0x0FB05000000031, -0x0FB06000000131,0x00073074000232,0x02CD4000000021,0x02CD5000000121,0x010F1000000021,0x01CB1000000121, -0x01F7A000000021,0x01FEA000000121,0x02C0B000000021,0x02C3B000000121,0x0FF34000000021,0x0FF54000000121, -0x10406000000021,0x1042E000000121,0x00417000000021,0x00437000000121,0x118BA000000021,0x118DA000000121, -0x01F82000000031,0x01F8A000000131,0x01F023B9000232,0x001F1000000031,0x001F2000000131,0x001F3000000231, -0x00395000000031,0x003B5000000131,0x003F5000000231,0x001B7000000021,0x00292000000121,0x0018F000000021, -0x00259000000121,0x00538000000021,0x00568000000121,0x0A66A000000021,0x0A66B000000121,0x01F32000000021, -0x01F3A000000121,0x10421000000021,0x10449000000121,0x0052A000000021,0x0052B000000121,0x00425000000021, -0x00445000000121,0x0A784000000021,0x0A785000000121,0x0004F000000021,0x0006F000000121,0x0A664000000021, -0x0A665000000121,0x01FA2000000031,0x01FAA000000131,0x01F623B9000232,0x104B1000000021,0x104D9000000121, -0x000C4000000021,0x000E4000000121,0x10CA5000000021,0x10CE5000000121,0x01EAA000000021,0x01EAB000000121, -0x013D8000000021,0x0ABA8000000121,0x000DF000000031,0x01E9E000000131,0x00073073000232,0x010E4000000021, -0x01CA4000000121,0x000D8000000021,0x000F8000000121,0x001CA000000031,0x001CB000000131,0x001CC000000231, -0x010D1000000021,0x01C91000000121,0x10575000000021,0x1059C000000121,0x0216C000000021,0x0217C000000121, -0x02C02000000021,0x02C32000000121,0x16E5B000000021,0x16E7B000000121,0x0A7D8000000021,0x0A7D9000000121, -0x0FF22000000021,0x0FF42000000121,0x00404000000021,0x00454000000121,0x010B3000000021,0x02D13000000121, -0x01ECA000000021,0x01ECB000000121,0x10409000000021,0x10431000000121,0x1E918000000021,0x1E93A000000121, -0x004F6000000021,0x004F7000000121,0x02CC0000000021,0x02CC1000000121,0x01E20000000021,0x01E21000000121, -0x0FB00000000021,0x00066066000122,0x104B7000000021,0x104DF000000121,0x0039B000000021,0x003BB000000121, -0x00196000000021,0x00269000000121,0x02C25000000021,0x02C55000000121,0x0A790000000021,0x0A791000000121, -0x0A764000000021,0x0A765000000121,0x0020C000000021,0x0020D000000121,0x01F94000000031,0x01F9C000000131, -0x01F243B9000232,0x118B0000000021,0x118D0000000121,0x00182000000021,0x00183000000121,0x02CAC000000021, -0x02CAD000000121,0x01F80000000031,0x01F88000000131,0x01F003B9000232,0x024CC000000021,0x024E6000000121, -0x00251000000021,0x02C6D000000121,0x00480000000021,0x00481000000121,0x01F54000000021,0x003C5313301123, -0x024B8000000021,0x024D2000000121,0x0054B000000021,0x0057B000000121,0x013AA000000021,0x0AB7A000000121, -0x0004B000000031,0x0006B000000131,0x0212A000000231,0x00261000000021,0x0A7AC000000121,0x00141000000021, -0x00142000000121,0x0039A000000031,0x003BA000000131,0x003F0000000231,0x010F8000000021,0x01CB8000000121, -0x104C4000000021,0x104EC000000121,0x00189000000021,0x00256000000121,0x010DE000000021,0x01C9E000000121, -0x01E68000000021,0x01E69000000121,0x013E6000000021,0x0ABB6000000121,0x01F04000000021,0x01F0C000000121, -0x10578000000021,0x1059F000000121,0x00411000000021,0x00431000000121,0x104BA000000021,0x104E2000000121, -0x00466000000021,0x00467000000121,0x0A736000000021,0x0A737000000121,0x01FE4000000021,0x003C1313000122, -0x000CB000000021,0x000EB000000121,0x010C0000000021,0x02D20000000121,0x10427000000021,0x1044F000000121, -0x001DE000000021,0x001DF000000121,0x02C92000000021,0x02C93000000121,0x00106000000021,0x00107000000121, -0x01E4E000000021,0x01E4F000000121,0x0042B000000021,0x0044B000000121,0x0A748000000021,0x0A749000000121, -0x02C11000000021,0x02C41000000121,0x0A7B3000000021,0x0AB53000000121,0x0053E000000021,0x0056E000000121, -0x0014E000000021,0x0014F000000121,0x013D3000000021,0x0ABA3000000121,0x00524000000021,0x00525000000121, -0x0A65E000000021,0x0A65F000000121,0x001F8000000021,0x001F9000000121,0x004AE000000021,0x004AF000000121, -0x0A77E000000021,0x0A77F000000121,0x003A0000000031,0x003C0000000131,0x003D6000000231,0x00265000000021, -0x0A78D000000121,0x01FB6000000021,0x003B1342000122,0x01FA1000000031,0x01FA9000000131,0x01F613B9000232, -0x01EDE000000021,0x01EDF000000121,0x013B9000000021,0x0AB89000000121,0x00168000000021,0x00169000000121, -0x00226000000021,0x00227000000121,0x013F1000000021,0x013F9000000121,0x01E06000000021,0x01E07000000121, -0x00120000000021,0x00121000000121,0x1041D000000021,0x10445000000121,0x10582000000021,0x105A9000000121, -0x01F66000000021,0x01F6E000000121,0x01E96000000021,0x00068331000122,0x010A6000000021,0x02D06000000121, -0x10C91000000021,0x10CD1000000121,0x01D8E000000021,0x0A7C6000000121,0x10C84000000021,0x10CC4000000121, -0x0FF2B000000021,0x0FF4B000000121,0x118A3000000021,0x118C3000000121,0x00048000000021,0x00068000000121, -0x013CC000000021,0x0AB9C000000121,0x1E91E000000021,0x1E940000000121,0x0038E000000021,0x003CD000000121, -0x00531000000021,0x00561000000121,]; +static immutable ulong[] t = cast(immutable ulong[]) x" +001E90B000000021001E92D0000001210010CAE0000000210010CEE00000012100004960000000210000497000000121 +001E911000000021001E933000000121000A722000000021000A7230000001210001F790000000210001FF9000000121 +0001F440000000210001F4C000000121000015A000000021000015B00000012100010FD0000000210001CBD000000121 +0016E4C0000000210016E6C0000001210001E380000000210001E39000000121000FB16000000021000057E576000122 +001E921000000021001E9430000001210001F230000000210001F2B00000012100001A000000002100001A1000000121 +00003A300000003100003C200000013100003C300000023100004DC00000002100004DD0000001210002CA6000000021 +0002CA7000000121000017B000000021000017C000000121001E906000000021001E92800000012100010DC000000021 +0001C9C00000012100104CD00000002100104F50000001210001F650000000210001F6D000000121000051E000000021 +000051F00000012100010D80000000210001C980000001210002C1A0000000210002C4A000000121000027D000000021 +0002C64000000121000A69A000000021000A69B0000001210001F020000000210001F0A0000001210000522000000021 +00005230000001210002C600000000210002C610000001210001FB700000002100003B13423B9123000A650000000021 +000A651000000121000A65C000000021000A65D0000001210002C1E0000000210002C4E0000001210001FB3000000031 +0001FBC00000013100003B13B900023200013C9000000021000AB9900000012100013CD000000021000AB9D000000121 +00000CE00000002100000EE0000001210001E7E0000000210001E7F0000001210010414000000021001043C000000121 +00013F000000002100013F80000001210001EC40000000210001EC5000000121000A78B000000021000A78C000000121 +00001140000000210000115000000121000042F000000021000044F000000121001E902000000021001E924000000121 +00004D800000002100004D90000001210002CAA0000000210002CAB00000012100001100000000210000111000000121 +000049200000002100004930000001210001E340000000210001E3500000012100013F400000002100013FC000000121 +000022400000002100002250000001210002CA20000000210002CA3000000121000A72E000000021000A72F000000121 +0016E480000000210016E68000000121000004A000000021000006A00000012100013A6000000021000AB76000000121 +000015E000000021000015F00000012100001C400000003100001C500000013100001C60000002310001F40000000021 +0001F48000000121000A658000000021000A659000000121000022C000000021000022D0000001210010C9F000000021 +0010CDF0000001210001F5000000002100003C53130001220001FA70000000310001FAF0000001310001F673B9000232 +0000042000000021000006200000012100013AE000000021000AB7E0000001210016E400000000210016E60000000121 +00000D200000002100000F20000001210001E820000000210001E8300000012100013D5000000021000ABA5000000121 +00010E00000000210001CA0000000121000013D000000021000013E00000012100004060000000210000456000000121 +000029D000000021000A7B20000001210000139000000021000013A00000012100001980000000210000199000000121 +0001EBC0000000210001EBD00000012100003AB00000002100003CB000000121000040E000000021000045E000000121 +000A7B6000000021000A7B7000000121000040A000000021000045A0000001210001EC00000000210001EC1000000121 +0010572000000021001059900000012100024B900000002100024D30000001210002C160000000210002C46000000121 +000019C000000021000026F00000012100003A700000002100003C7000000121000A692000000021000A693000000121 +00000C500000003100000E5000000131000212B000000231000052600000002100005270000001210000266000000021 +000A7AA000000121001057A00000002100105A1000000121001057E00000002100105A50000001210001FD0000000021 +0001FD800000012100000460000000210000066000000121001E90A000000021001E92C0000001210000228000000021 +000022900000012100013A2000000021000AB72000000121000A726000000021000A7270000001210010C93000000021 +0010CD3000000121000049A000000021000049B00000012100000D600000002100000F6000000121000010C000000021 +000010D0000001210010C970000000210010CD700000012100001620000000210000163000000121000019E000000021 +00002200000001210001E970000000210000074308000122000039200000003100003B200000013100003D0000000231 +0001E300000000210001E310000001210001FA30000000310001FAB0000001310001F633B900023200118A8000000021 +00118C8000000121000216D000000021000217D0000001210002C9E0000000210002C9F000000121000004E000000021 +000006E00000012100000B5000000031000039C00000013100003BC000000231000048E000000021000048F000000121 +000A72A000000021000A72B00000012100104100000000210010438000000121000038A00000002100003AF000000121 +0001EFE0000000210001EFF00000012100118AC00000002100118CC00000012100001EA00000002100001EB000000121 +0001F060000000210001F0E0000001210001FC30000000310001FCC00000013100003B73B900023200010B4000000021 +0002D14000000121000026A000000021000A7AE000000121000041200000003100004320000001310001C80000000231 +0001F860000000310001F8E0000001310001F063B90002320010C9B0000000210010CDB000000121000A760000000021 +000A76100000012100024C800000002100024E200000012100001A400000002100001A5000000121000039F000000021 +00003BF00000012100010C40000000210002D2400000012100004A200000002100004A30000001210002C03000000021 +0002C330000001210002CE00000000210002CE10000001210010576000000021001059D0000001210001F96000000031 +0001F9E0000001310001F263B900023200004E000000002100004E10000001210002C2A0000000210002C5A000000121 +0001ED00000000210001ED100000012100000C200000002100000E200000012100004E800000002100004E9000000121 +000A7A6000000021000A7A700000012100010F90000000210001CB900000012100001450000000210000146000000121 +000037C00000002100003FE0000001210001EC80000000210001EC9000000121000041A000000021000043A000000121 +00000CA00000002100000EA0000001210001F860000000310001F8E0000001310001F063B90002320000421000000031 +00004410000001310001C830000002310010404000000021001042C000000121000FB02000000021000006606C000122 +000053F000000021000056F0000001210000547000000021000057700000012100013B6000000021000AB86000000121 +00013EC000000021000ABBC000000121000FF2C000000021000FF4C000000121000A7BA000000021000A7BB000000121 +000A648000000021000A64900000012100013C5000000021000AB95000000121000FF24000000021000FF44000000121 +001040F0000000210010437000000121001041C0000000210010444000000121001058300000002100105AA000000121 +0010C830000000210010CC3000000121000024100000002100002420000001210001E760000000210001E77000000121 +00010BC0000000210002D1C0000001210002C220000000210002C5200000012100010D00000000210001C90000000121 +000A768000000021000A769000000121000A732000000021000A733000000121000011C000000021000011D000000121 +000042700000002100004470000001210001E400000000210001E4100000012100118B100000002100118D1000000121 +0000152000000021000015300000012100003A100000003100003C100000013100003F10000002310000397000000021 +00003B700000012100001AC00000002100001AD00000012100001E200000002100001E30000001210000218000000021 +0000219000000121001E91A000000021001E93C000000121000051600000002100005170000001210001F27000000021 +0001F2F000000121000A7C9000000021000A7CA0000001210001FE00000000210001FE80000001210002165000000021 +0002175000000121000A66C000000021000A66D000000121000039300000002100003B30000001210000532000000021 +0000562000000121000005600000002100000760000001210001F330000000210001F3B0000001210000554000000021 +00005840000001210001C88000000031000A64A000000131000A64B000000231000A68E000000021000A68F000000121 +00003D800000002100003D900000012100024C500000002100024DF0000001210002CB20000000210002CB3000000121 +0010C820000000210010CC2000000121000005700000002100000770000001210016E530000000210016E73000000121 +000FF37000000021000FF570000001210001EF60000000210001EF7000000121001E912000000021001E934000000121 +0001F120000000210001F1A00000012100004A600000002100004A7000000121000016A000000021000016B000000121 +0001F340000000210001F3C0000001210002CDC0000000210002CDD00000012100001B1000000021000028A000000121 +00118A400000002100118C40000001210001E280000000210001E2900000012100001BF00000002100001F7000000121 +000018B000000021000018C00000012100010A70000000210002D0700000012100001280000000210000129000000121 +0001E6A0000000210001E6B00000012100010AB0000000210002D0B000000121000041F000000021000043F000000121 +0002C2E0000000210002C5E0000001210010CAF0000000210010CEF00000012100104C500000002100104ED000000121 +00118A500000002100118C50000001210001FE10000000210001FE900000012100003A600000003100003C6000000131 +00003D50000002310002C0A0000000210002C3A000000121000050E000000021000050F0000001210000104000000021 +0000105000000121000037200000002100003730000001210001E8E0000000210001E8F0000001210000396000000021 +00003B60000001210001EFA0000000210001EFB00000012100003F200000002100003F9000000121000A640000000021 +000A64100000012100010EC0000000210001CAC00000012100118A100000002100118C10000001210001FA7000000031 +0001FAF0000001310001F673B9000232000016600000002100001670000001210001F370000000210001F3F000000121 +0010C860000000210010CC600000012100013DD000000021000ABAD0000001210001F510000000210001F59000000121 +0002C9A0000000210002C9B00000012100001FA00000002100001FB00000012100021690000000210002179000000121 +0016E570000000210016E7700000012100010A40000000210002D0400000012100000530000000310000073000000131 +000017F0000002310000376000000021000037700000012100013B1000000021000AB810000001210000468000000021 +000046900000012100013E4000000021000ABB40000001210001F960000000310001F9E0000001310001F263B9000232 +000010800000002100001090000001210010CA00000000210010CE00000001210001E660000000210001E67000000121 +0001E8A0000000210001E8B0000001210001E4C0000000210001E4D0000001210001F750000000210001FCB000000121 +0002C0E0000000210002C3E0000001210001E500000000210001E5100000012100024C000000002100024DA000000121 +000A750000000021000A75100000012100000DA00000002100000FA00000012100010E90000000210001CA9000000121 +0002CD80000000210002CD90000001210001EB80000000210001EB9000000121000012C000000021000012D000000121 +00002520000000210002C7000000012100004C300000002100004C400000012100003B00000000310001FE3000000131 +00003C530830123300024C400000002100024DE0000001210002C0F0000000210002C3F0000001210000533000000021 +0000563000000121000019500000002100001F60000001210001F130000000210001F1B00000012100104B8000000021 +00104E0000000121000055300000002100005830000001210010425000000021001044D00000012100013D1000000021 +000ABA100000012100004F400000002100004F500000012100004C700000002100004C800000012100104B5000000021 +00104DD00000012100004D000000002100004D1000000121000A75C000000021000A75D0000001210010CAC000000021 +0010CEC0000001210001E2C0000000210001E2D00000012100010A80000000210002D080000001210000464000000021 +00004650000001210000426000000021000044600000012100004E400000002100004E500000012100010ED000000021 +0001CAD000000121000A792000000021000A7930000001210001EDC0000000210001EDD00000012100104BC000000021 +00104E40000001210010577000000021001059E0000001210001EA80000000210001EA900000012100001B8000000021 +00001B900000012100000C600000002100000E6000000121000FF30000000021000FF500000001210016E44000000021 +0016E64000000121001041B00000002100104430000001210001E0E0000000210001E0F00000012100004D4000000021 +00004D50000001210002CAE0000000210002CAF0000001210002C6B0000000210002C6C000000121000FF23000000021 +000FF43000000121000018400000002100001850000001210010573000000021001059A0000001210000398000000041 +00003B800000014100003D100000024100003F400000034100013D4000000021000ABA4000000121001E919000000021 +001E93B000000121000018700000002100001880000001210002C130000000210002C43000000121000A7A2000000021 +000A7A300000012100001940000000210000263000000121000041600000002100004360000001210002CBE000000021 +0002CBF0000001210001FA60000000310001FAE0000001310001F663B900023200104C600000002100104EE000000121 +0001F820000000310001F8A0000001310001F023B900023200104C900000002100104F100000012100013E0000000021 +000ABB000000012100002400000000210002C7F000000121000A7BE000000021000A7BF0000001210001F92000000031 +0001F9A0000001310001F223B90002320000402000000021000045200000012100005360000000210000566000000121 +00005500000000210000580000000121000A682000000021000A683000000121000038600000002100003AC000000121 +0001FE50000000210001FEC00000012100024C900000002100024E300000012100000D300000002100000F3000000121 +00010F00000000210001CB00000001210001E3C0000000210001E3D0000001210002C800000000210002C81000000121 +0001F970000000310001F9F0000001310001F273B9000232001058A00000002100105B10000001210000156000000021 +00001570000001210001E7A0000000210001E7B00000012100013ED000000021000ABBD000000121000A73E000000021 +000A73F00000012100001180000000210000119000000121000021400000002100002150000001210001E60000000031 +0001E610000001310001E9B0000002310002C8A0000000210002C8B000000121000A64C000000021000A64D000000121 +000039500000003100003B500000013100003F500000023100001E600000002100001E70000001210001F85000000031 +0001F8D0000001310001F053B9000232000051200000002100005130000001210001F610000000210001F69000000121 +000A668000000021000A669000000121001059400000002100105BB0000001210001E180000000210001E19000000121 +00013B2000000021000AB820000001210010415000000021001043D00000012100104180000000210010440000000121 +0000245000000021000028C0000001210001F720000000210001FC800000012100118B500000002100118D5000000121 +00010B80000000210002D1800000012100004C000000002100004CF000000121001040B0000000210010433000000121 +0000423000000021000044300000012100010C50000000210002D250000001210002C2D0000000210002C5D000000121 +0001F300000000210001F3800000012100013C1000000021000AB91000000121000A76C000000021000A76D000000121 +00104CC00000002100104F40000001210001F710000000210001FBB000000121000FF33000000021000FF53000000121 +000216A000000021000217A000000121000014900000002100002BC06E00012200003E800000002100003E9000000121 +000A7D0000000021000A7D1000000121000005A000000021000007A0000001210010CB00000000210010CF0000000121 +00001D900000002100001DA0000001210001ECC0000000210001ECD00000012100001B500000002100001B6000000121 +000054300000002100005730000001210001F220000000210001F2A000000121001058700000002100105AE000000121 +0001EA00000000210001EA10000001210010C8F0000000210010CCF0000001210016E540000000210016E74000000121 +0001FB400000002100003AC3B90001220001D7D0000000210002C63000000121000A7D6000000021000A7D7000000121 +000A74C000000021000A74D00000012100013CE000000021000AB9E00000012100000CF00000002100000EF000000121 +00010D90000000210001C990000001210000045000000021000006500000012100001360000000210000137000000121 +000040D000000021000045D0000001210016E430000000210016E630000001210001F7C0000000210001FFA000000121 +000024A000000021000024B00000012100004B800000002100004B90000001210002CCA0000000210002CCB000000121 +0002CED0000000210002CEE000000121000019F000000021000027500000012100003A400000002100003C4000000121 +000FB17000000021000057456D000122000A74E000000021000A74F00000012100104C000000002100104E8000000121 +0001E160000000210001E1700000012100013AF000000021000AB7F00000012100005000000000210000501000000121 +0002C820000000210002C8300000012100010BD0000000210002D1D000000121001E916000000021001E938000000121 +0010CA30000000210010CE30000001210010C940000000210010CD400000012100104C200000002100104EA000000121 +00003A600000003100003C600000013100003D50000002310001F930000000310001F9B0000001310001F233B9000232 +00118B400000002100118D400000012100013E9000000021000ABB90000001210016E4D0000000210016E6D000000121 +0001F410000000210001F490000001210000287000000021000A7B100000012100005420000000210000572000000121 +0001E580000000210001E590000001210001F430000000210001F4B0000001210001F910000000310001F99000000131 +0001F213B90002320002CEB0000000210002CEC0000001210001FD10000000210001FD90000001210001EE8000000021 +0001EE900000012100013A3000000021000AB7300000012100003EE00000002100003EF00000012100118B8000000021 +00118D80000001210010C9E0000000210010CDE00000012100013EB000000021000ABBB00000012100000FF000000021 +00001780000001210010417000000021001043F00000012100118A900000002100118C90000001210001FB0000000021 +0001FB80000001210002C880000000210002C8900000012100013A9000000021000AB79000000121001E909000000021 +001E92B00000012100013C2000000021000AB9200000012100024B600000002100024D00000001210001E5E000000021 +0001E5F0000001210002C690000000210002C6A000000121001041F0000000210010447000000121000037F000000021 +00003F30000001210000540000000021000057000000012100003900000000310001FD300000013100003B9308301233 +000004B000000031000006B000000131000212A00000023100004F800000002100004F900000012100013F3000000021 +00013FB00000012100000C900000002100000E9000000121000040F000000021000045F00000012100010B5000000021 +0002D15000000121000A746000000021000A74700000012100000CD00000002100000ED0000001210000476000000021 +0000477000000121000039E00000002100003BE0000001210001F200000000210001F2800000012100010FA000000021 +0001CBA0000001210002C210000000210002C510000001210001EA60000000210001EA70000001210001F83000000031 +0001F8B0000001310001F033B9000232000053C000000021000056C0000001210001F010000000210001F09000000121 +0002CC20000000210002CC30000001210000208000000021000020900000012100013E3000000021000ABB3000000121 +000A796000000021000A7970000001210001F640000000210001F6C000000121001059200000002100105B9000000121 +00004BE00000002100004BF0000001210001F910000000310001F990000001310001F213B900023200003E6000000021 +00003E70000001210001EE00000000210001EE10000001210001FF30000000310001FFC00000013100003C93B9000232 +00001300000000210000069307000122000041300000002100004330000001210001E98000000021000007730A000122 +000042E000000021000044E00000012100010DB0000000210001C9B00000012100010F60000000210001CB6000000121 +0002C000000000210002C3000000012100118BE00000002100118DE00000012100001A700000002100001A8000000121 +00010C30000000210002D23000000121000041500000002100004350000001210001E1E0000000210001E1F000000121 +000050600000002100005070000001210001E640000000210001E6500000012100000C700000002100000E7000000121 +000047C000000021000047D0000001210001E520000000210001E5300000012100010F40000000210001CB4000000121 +001058600000002100105AD000000121000046A000000021000046B0000001210002C270000000210002C57000000121 +00104CA00000002100104F200000012100010A20000000210002D020000001210010C890000000210010CC9000000121 +000FF32000000021000FF52000000121000039800000004100003B800000014100003D100000024100003F4000000341 +00003A900000003100003C900000013100021260000002310001EDA0000000210001EDB000000121001E901000000021 +001E923000000121000A79C000000021000A79D00000012100010D30000000210001C9300000012100024BC000000021 +00024D6000000121000FF2F000000021000FF4F00000012100002500000000210002C6F0000001210002C29000000021 +0002C59000000121001E920000000021001E94200000012100004B200000002100004B30000001210010419000000021 +0010441000000121000021000000002100002110000001210002C150000000210002C450000001210016E47000000021 +0016E67000000121000A754000000021000A7550000001210016E450000000210016E6500000012100001C7000000031 +00001C800000013100001C9000000231000047E000000021000047F00000012100001FC00000002100001FD000000121 +000020E000000021000020F000000121000024400000002100002890000001210001F770000000210001FDB000000121 +0002CD60000000210002CD7000000121001058900000002100105B000000012100004220000000410000442000000141 +0001C840000002410001C8500000034100010E70000000210001CA700000012100004FA00000002100004FB000000121 +00010D50000000210001C950000001210001EAC0000000210001EAD00000012100010B70000000210002D17000000121 +00013A1000000021000AB71000000121000A7C2000000021000A7C3000000121001E907000000021001E929000000121 +00013F500000002100013FD0000001210001EE20000000210001EE30000001210001F620000000210001F6A000000121 +0001E920000000210001E9300000012100001D500000002100001D60000001210002C060000000210002C36000000121 +0010C8B0000000210010CCB0000001210001F700000000210001FBA00000012100003EC00000002100003ED000000121 +001E915000000021001E937000000121000216E000000021000217E00000012100013C0000000021000AB90000000121 +0001EF40000000210001EF50000001210001FB20000000210001F703B9000122000FF3A000000021000FF5A000000121 +00118BC00000002100118DC00000012100004AA00000002100004AB00000012100021630000000210002173000000121 +0001E1C0000000210001E1D00000012100013C8000000021000AB9800000012100118AF00000002100118CF000000121 +0001E9A00000002100000612BE000122001057100000002100105980000001210010CA70000000210010CE7000000121 +0010C980000000210010CD80000001210000051000000021000007100000012100004F200000002100004F3000000121 +0010CAA0000000210010CEA00000012100010AF0000000210002D0F0000001210002C8E0000000210002C8F000000121 +0002CC40000000210002CC50000001210001E0A0000000210001E0B000000121000FB15000000021000057456B000122 +0016E500000000210016E70000000121001058E00000002100105B500000012100104110000000210010439000000121 +0010423000000021001044B000000121000053A000000021000056A0000001210001E6C0000000210001E6D000000121 +00104BE00000002100104E60000001210010424000000021001044C00000012100010A90000000210002D09000000121 +00024C200000002100024DC0000001210010C810000000210010CC100000012100013BC000000021000AB8C000000121 +000046200000003100004630000001310001C8700000023100118A600000002100118C60000001210001E4A000000021 +0001E4B000000121000216200000002100021720000001210001ED40000000210001ED500000012100010AA000000021 +0002D0A00000012100004EC00000002100004ED0000001210002C0C0000000210002C3C000000121000A79A000000021 +000A79B00000012100004CB00000002100004CC00000012100104BD00000002100104E50000001210000370000000021 +00003710000001210001FE700000002100003C5308342123001E914000000021001E93600000012100003DA000000021 +00003DB0000001210001F350000000210001F3D0000001210016E510000000210016E710000001210000392000000031 +00003B200000013100003D00000002310002C960000000210002C970000001210001FA50000000310001FAD000000131 +0001F653B9000232000039100000002100003B100000012100005340000000210000564000000121000041B000000021 +000043B00000012100013DF000000021000ABAF0000001210002C2C0000000210002C5C0000001210000124000000021 +00001250000001210010CA20000000210010CE20000001210001E8C0000000210001E8D0000001210001EB4000000021 +0001EB5000000121000016C000000021000016D0000001210001E020000000210001E03000000121000019A000000021 +000023D000000121000010200000002100001030000001210001F140000000210001F1C000000121000FF28000000021 +000FF480000001210010C800000000210010CC000000012100010EE0000000210001CAE0000001210001F55000000021 +0001F5D000000121000A77B000000021000A77C0000001210001FC700000002100003B73423B91230000059000000021 +0000079000000121000014A000000021000014B0000001210001E240000000210001E2500000012100013BD000000021 +000AB8D0000001210002CBC0000000210002CBD000000121001040D0000000210010435000000121001058F000000021 +00105B600000012100118A700000002100118C7000000121000A660000000021000A6610000001210000514000000021 +0000515000000121000052E000000021000052F00000012100004A400000002100004A50000001210000400000000021 +00004500000001210016E580000000210016E78000000121000A64E000000021000A64F000000121000FF2E000000021 +000FF4E000000121001040C000000021001043400000012100000DB00000002100000FB00000012100001CD000000021 +00001CE00000012100010E80000000210001CA8000000121000054F000000021000057F000000121000A738000000021 +000A7390000001210016E5F0000000210016E7F0000001210001FA60000000310001FAE0000001310001F663B9000232 +001E90F000000021001E9310000001210002C070000000210002C3700000012100010A30000000210002D03000000121 +000A7A0000000021000A7A1000000121000042100000003100004410000001310001C83000000231000A680000000021 +000A6810000001210000282000000021000A7C50000001210001D79000000021000A77D00000012100024CB000000021 +00024E500000012100004010000000210000451000000121000A758000000021000A7590000001210000058000000021 +0000078000000121000019300000002100002600000001210010CA10000000210010CE1000000121000054E000000021 +000057E0000001210000186000000021000025400000012100013DC000000021000ABAC00000012100024BD000000021 +00024D700000012100001B300000002100001B4000000121000A696000000021000A6970000001210000216000000021 +00002170000001210001ECE0000000210001ECF000000121000216800000002100021780000001210001FC6000000021 +00003B73420001220002C120000000210002C420000001210002C2F0000000210002C5F000000121001E90E000000021 +001E9300000001210010CAB0000000210010CEB0000001210001E860000000210001E870000001210000412000000031 +00004320000001310001C8000000023100013D6000000021000ABA60000001210001EBA0000000210001EBB000000121 +001E91B000000021001E93D000000121001041A00000002100104420000001210001EEE0000000210001EEF000000121 +000FF31000000021000FF51000000121000A7BC000000021000A7BD00000012100001DB00000002100001DC000000121 +00001A600000002100002800000001210001F070000000210001F0F00000012100118BD00000002100118DD000000121 +00000C800000002100000E800000012100004D200000002100004D300000012100010E10000000210001CA1000000121 +00013B7000000021000AB87000000121001058500000002100105AC0000001210016E4B0000000210016E6B000000121 +00001720000000210000173000000121000049E000000021000049F00000012100004E600000002100004E7000000121 +00010B00000000210002D100000001210001E99000000021000007930A00012200001EE00000002100001EF000000121 +0002C9C0000000210002C9D00000012100104B400000002100104DC0000001210010C870000000210010CC7000000121 +00013BA000000021000AB8A0000001210001E100000000210001E1100000012100002300000000210000231000000121 +000042800000002100004480000001210002CD00000000210002CD100000012100118A000000002100118C0000000121 +00003E000000002100003E10000001210001FF400000002100003CE3B9000122000A780000000021000A781000000121 +00010F50000000210001CB5000000121000053B000000021000056B00000012100000D500000002100000F5000000121 +001058800000002100105AF000000121000041400000003100004340000001310001C810000002310001FA4000000031 +0001FAC0000001310001F643B9000232000012A000000021000012B00000012100000520000000210000072000000121 +00024B700000002100024D1000000121001E908000000021001E92A000000121000039800000004100003B8000000141 +00003D100000024100003F4000000341000020200000002100002030000001210001F850000000310001F8D000000131 +0001F053B90002320000470000000021000047100000012100002710000000210002C6E0000001210002C1B000000021 +0002C4B000000121000FB030000000210000066066069123000048A000000021000048B000000121000A752000000021 +000A753000000121000FF25000000021000FF450000001210000407000000021000045700000012100000C1000000021 +00000E10000001210001E440000000210001E450000001210001F970000000310001F9F0000001310001F273B9000232 +00005480000000210000578000000121000021C000000021000021D00000012100013E5000000021000ABB5000000121 +000051A000000021000051B0000001210002CB60000000210002CB7000000121000A654000000021000A655000000121 +0010403000000021001042B0000001210001E720000000210001E7300000012100010D40000000210001C94000000121 +00104C100000002100104E90000001210010C8A0000000210010CCA0000001210001E2A0000000210001E2B000000121 +000046200000003100004630000001310001C870000002310001F760000000210001FDA0000001210000053000000031 +0000073000000131000017F0000002310002C260000000210002C5600000012100013A0000000021000AB70000000121 +00003FA00000002100003FB00000012100004C500000002100004C60000001210001F920000000310001F9A000000131 +0001F223B90002320000555000000021000058500000012100013E8000000021000ABB800000012100001C7000000031 +00001C800000013100001C90000002310001F420000000210001F4A0000001210001F670000000210001F6F000000121 +001057C00000002100105A3000000121000A7B4000000021000A7B5000000121000A698000000021000A699000000121 +001E904000000021001E926000000121000040C000000021000045C00000012100010DA0000000210001C9A000000121 +0001FD600000002100003B934200012200000D000000002100000F00000001210016E460000000210016E66000000121 +0001EC20000000210001EC300000012100001E400000002100001E500000012100000440000000210000064000000121 +000017D000000021000017E0000001210001F210000000210001F29000000121000FF39000000021000FF59000000121 +00013AC000000021000AB7C000000121000058700000002100005655820001220001F000000000210001F08000000121 +00003A500000002100003C50000001210000158000000021000015900000012100104CF00000002100104F7000000121 +0001E3A0000000210001E3B000000121000A72C000000021000A72D00000012100118B700000002100118D7000000121 +000011200000002100001130000001210001E360000000210001E370000001210016E4E0000000210016E6E000000121 +0001F7D0000000210001FFB000000121000049400000002100004950000001210001E800000000210001E81000000121 +00001160000000210000117000000121000042D000000021000044D00000012100013F200000002100013FA000000121 +0000179000000021000017A00000012100004DA00000002100004DB0000001210002CA80000000210002CA9000000121 +00000CC00000002100000EC00000012100001A200000002100001A300000012100003A100000003100003C1000000131 +00003F10000002310001E7C0000000210001E7D00000012100013CF000000021000AB9F0000001210010412000000021 +001043A000000121000052000000002100005210000001210002C1C0000000210002C4C000000121000026B000000021 +0002C62000000121000FB140000000210000574565000122000015C000000021000015D000000121000A652000000021 +000A653000000121000FF26000000021000FF4600000012100001E800000002100001E900000012100010B6000000021 +0002D16000000121000A656000000021000A657000000121000051C000000021000051D00000012100013C3000000021 +000AB93000000121001059100000002100105B800000012100104CB00000002100104F30000001210001EC6000000021 +0001EC700000012100001E000000002100001E10000001210001F630000000210001F6B0000001210002C01000000021 +0002C31000000121001E900000000021001E9220000001210001E780000000210001E7900000012100024CE000000021 +00024E8000000121000A76A000000021000A76B000000121000011A000000021000011B0000001210000429000000021 +00004490000001210001F840000000310001F8C0000001310001F043B900023200010D60000000210001C96000000121 +0001FB10000000210001FB9000000121000A762000000021000A7630000001210010CB20000000210010CF2000000121 +0002C200000000210002C5000000012100010BE0000000210002D1E000000121001041E0000000210010446000000121 +0001FF700000002100003C93423B912300004E200000002100004E30000001210001F900000000310001F98000000131 +0001F203B900023200004DE00000002100004DF0000001210001F940000000310001F9C0000001310001F243B9000232 +00005410000000210000571000000121000054500000002100005750000001210001F250000000210001F2D000000121 +000015400000002100001550000001210002C240000000210002C5400000012100013EA000000021000ABBA000000121 +0000181000000021000025300000012100003A300000003100003C200000013100003C300000023100118B3000000021 +00118D300000012100010BA0000000210002D1A000000121000018000000002100002430000001210001E3E000000021 +0001E3F00000012100010FF0000000210001CBF0000001210001FF30000000310001FFC00000013100003C93B9000232 +00010D20000000210001C92000000121000A76E000000021000A76F0000001210010C880000000210010CC8000000121 +0001C88000000031000A64A000000131000A64B00000023100010B20000000210002D1200000012100013C7000000021 +000AB9700000012100005180000000210000519000000121000A766000000021000A76700000012100001EC000000021 +00001ED00000012100104C300000002100104EB0000001210010574000000021001059B00000012100013EE000000021 +000ABBE000000121001E91C000000021001E93E00000012100010E20000000210001CA20000001210002C05000000021 +0002C3500000012100004A000000002100004A10000001210001E420000000210001E4300000012100013B4000000021 +000AB8400000012100118BF00000002100118DF000000121000015000000002100001510000001210001F56000000021 +00003C53133421230002CB00000000210002CB100000012100013A4000000021000AB7400000012100004C1000000021 +00004C200000012100001CA00000003100001CB00000013100001CC000000231000004C000000021000006C000000121 +00104C700000002100104EF0000001210016E5A0000000210016E7A00000012100002220000000210000223000000121 +000049000000002100004910000001210002CF20000000210002CF3000000121001059500000002100105BC000000121 +000053D000000021000056D000000121000038800000002100003AD00000012100005490000000210000579000000121 +00013E2000000021000ABB20000001210016E4A0000000210016E6A0000001210001EFC0000000210001EFD000000121 +0001F900000000310001F980000001310001F203B900023200004D600000002100004D7000000121000A7B8000000021 +000A7B9000000121000041400000003100004340000001310001C810000002310010CAD0000000210010CED000000121 +00010F70000000210001CB70000001210016E550000000210016E75000000121000A728000000021000A729000000121 +0001E000000000210001E010000001210000232000000021000023300000012100010A50000000210002D05000000121 +0001F150000000210001F1D00000012100003A900000003100003C90000001310002126000000231000013B000000021 +000013C0000001210000408000000021000045800000012100000DC00000002100000FC0000001210001EBE000000021 +0001EBF0000001210002C180000000210002C48000000121000A7A8000000021000A7A9000000121000216B000000021 +000217B0000001210002C100000000210002C400000001210002CDE0000000210002CDF000000121000029E000000021 +000A7B000000012100000D400000002100000F400000012100010EF0000000210001CAF0000001210000551000000021 +000058100000012100013DA000000021000ABAA000000121000053500000002100005650000001210001FA0000000031 +0001FA80000001310001F603B900023200024C600000002100024E000000012100004100000000210000430000000121 +0001EB60000000210001EB70000001210001F840000000310001F8C0000001310001F043B90002320010416000000021 +001043E0000001210016E420000000210016E62000000121000016400000002100001650000001210002CA0000000021 +0002CA10000001210001E2E0000000210001E2F0000001210010C950000000210010CD50000001210000498000000021 +0000499000000121000010A000000021000010B0000001210010C9D0000000210010CDD00000012100118AA000000021 +00118CA0000001210001E880000000210001E890000001210000528000000021000052900000012100013D7000000021 +000ABA7000000121000A65A000000021000A65B000000121000022A000000021000022B0000001210001FA5000000031 +0001FAD0000001310001F653B900023200104B300000002100104DB000000121001E90C000000021001E92E000000121 +00024BB00000002100024D500000012100001F400000002100001F5000000121000A690000000021000A691000000121 +000FF29000000021000FF490000001210002C750000000210002C760000001210002CB80000000210002CB9000000121 +001040100000002100104290000001210002C0D0000000210002C3D00000012100104D000000002100104F8000000121 +001E913000000021001E93500000012100001AF00000002100001B0000000121000A7C7000000021000A7C8000000121 +00013BF000000021000AB8F0000001210010402000000021001042A00000012100010EA0000000210001CAA000000121 +00104BF00000002100104E7000000121001058D00000002100105B400000012100021640000000210002174000000121 +000018E00000002100001DD00000012100001D300000002100001D40000001210001F100000000210001F18000000121 +0001F570000000210001F5F0000001210001ED20000000210001ED3000000121000FF2A000000021000FF4A000000121 +0001E040000000210001E0500000012100004EE00000002100004EF0000001210002C940000000210002C95000000121 +00000C000000002100000E00000001210001FE600000002100003C534200012200013DB000000021000ABAB000000121 +00001B2000000021000028B0000001210010426000000021001044E000000121000A662000000021000A663000000121 +0000054000000021000007400000012100005560000000210000586000000121000042A000000031000044A000000131 +0001C860000002310010422000000021001044A0000001210001F360000000210001F3E0000001210001FA1000000031 +0001FA90000001310001F613B900023200004CD00000002100004CE00000012100104BB00000002100104E3000000121 +000023B000000021000023C00000012100001CF00000002100001D0000000121000050C000000021000050D000000121 +000A646000000021000A6470000001210001E460000000210001E470000001210010CA60000000210010CE6000000121 +000A779000000021000A77A000000121000FF36000000021000FF5600000012100118A200000002100118C2000000121 +00004EA00000002100004EB000000121000041D000000021000043D000000121000A794000000021000A7C4000000121 +000A688000000021000A6890000001210001EB20000000210001EB300000012100021600000000210002170000000121 +0001ED60000000210001ED700000012100024C300000002100024DD0000001210016E5E0000000210016E7E000000121 +00004AC00000002100004AD0000001210016E520000000210016E72000000121000023E0000000210002C66000000121 +0002CB40000000210002CB5000000121000FF2D000000021000FF4D000000121000014C000000021000014D000000121 +0001E220000000210001E2300000012100013BB000000021000AB8B00000012100001430000000210000144000000121 +000FB04000000021000006606606C123001058100000002100105A800000012100001700000000210000171000000121 +0001E940000000210001E950000001210001FC20000000210001F743B90001220002C280000000210002C58000000121 +001E910000000021001E932000000121001040E00000002100104360000001210001F830000000310001F8B000000131 +0001F033B9000232000A798000000021000A79900000012100013B8000000021000AB880000001210001E70000000021 +0001E71000000121000042200000004100004420000001410001C840000002410001C850000003410010C85000000021 +0010CC50000001210001EAE0000000210001EAF0000001210000122000000021000012300000012100104B2000000021 +00104DA0000001210010C8C0000000210010CCC0000001210010405000000021001042D0000001210001F87000000031 +0001F8F0000001310001F073B90002320000420000000021000044000000012100001AE0000000210000288000000121 +000021A000000021000021B000000121000038C00000002100003CC0000001210001F950000000310001F9D000000131 +0001F253B90002320000345000000041000039900000014100003B90000002410001FBE000000341000018A000000021 +000025700000012100003900000000310001FD300000013100003B930830123300010B10000000210002D11000000121 +000011E000000021000011F0000001210001E080000000210001E090000001210002C900000000210002C91000000121 +000A7C0000000021000A7C100000012100013E7000000021000ABB7000000121001058000000002100105A7000000121 +000041C000000021000043C000000121000FB05000000031000FB060000001310000073074000232000A7A4000000021 +000A7A50000001210001E740000000210001E750000001210002C140000000210002C44000000121001E90D000000021 +001E92F00000012100013A5000000021000AB7500000012100010F30000000210001CB300000012100024BA000000021 +00024D4000000121000013F0000000210000140000000121000039D00000002100003BD0000001210002CE2000000021 +0002CE300000012100010A10000000210002D0100000012100005080000000210000509000000121000004D000000021 +000006D000000121000038900000002100003AE000000121000048C000000021000048D0000001210002C04000000021 +0002C34000000121000216F000000021000217F00000012100004B000000002100004B10000001210002CD2000000021 +0002CD3000000121000A734000000021000A735000000121000FB0100000002100000660690001220000050000000021 +000007000000012100001600000000210000161000000121001058400000002100105AB0000001210001E32000000021 +0001E330000001210010CA90000000210010CE90000001210000200000000021000020100000012100118AB000000021 +00118CB000000121000A786000000021000A78700000012100118BB00000002100118DB00000012100118AE000000021 +00118CE000000121000021E000000021000021F00000012100003AA00000002100003CA00000012100010C2000000021 +0002D2200000012100013C4000000021000AB9400000012100005390000000210000569000000121000A74A000000021 +000A74B00000012100000C300000002100000E3000000121000046E000000021000046F000000121000054D000000021 +000057D0000001210001FE200000002100003C530830012300010E30000000210001CA30000001210001F52000000021 +00003C531330012300003DE00000002100003DF00000012100024CA00000002100024E40000001210000345000000041 +000039900000014100003B90000002410001FBE0000003410010C990000000210010CD9000000121000A75A000000021 +000A75B000000121000041900000002100004390000001210002C090000000210002C39000000121000037D000000021 +00003FF0000001210001F260000000210001F2E00000012100118B200000002100118D20000001210002183000000021 +00021840000001210002C230000000210002C53000000121000013200000002100001330000001210001E56000000021 +0001E5700000012100010AE0000000210002D0E000000121000A740000000021000A74100000012100000DD000000021 +00000FD00000012100010E60000000210001CA60000001210001E600000000310001E610000001310001E9B000000231 +00004780000000210000479000000121000022E000000021000022F0000001210001FF600000002100003C9342000122 +0001FD200000002100003B9308300123000A694000000021000A695000000121000052C000000021000052D000000121 +00105700000000210010597000000121000A666000000021000A66700000012100001F0000000021000006A30C000122 +0010C960000000210010CD6000000121000020A000000021000020B00000012100024BF00000002100024D9000000121 +00013CB000000021000AB9B0000001210010C9C0000000210010CDC000000121000041E000000031000043E000000131 +0001C820000002310001E840000000210001E850000001210001EF00000000210001EF100000012100013A8000000021 +000AB780000001210016E590000000210016E790000001210002CA40000000210002CA5000000121000A724000000021 +000A725000000121000049C000000021000049D000000121000010E000000021000010F0000001210001FA4000000031 +0001FAC0000001310001F643B900023200104D300000002100104FB000000121001E903000000021001E925000000121 +000019100000002100001920000001210001F800000000310001F880000001310001F003B900023200013DE000000021 +000ABAE00000012100003A000000003100003C000000013100003D600000023100013AD000000021000AB7D000000121 +000020600000002100002070000001210001F450000000210001F4D00000012100003EA00000002100003EB000000121 +00010BB0000000210002D1B00000012100004740000000210000475000000121000FF38000000021000FF58000000121 +00004FE00000002100004FF0000001210002C840000000210002C850000001210010413000000021001043B000000121 +0001FD700000002100003B93083421230001E5C0000000210001E5D0000001210001EE40000000210001EE5000000121 +0002CC80000000210002CC90000001210002C1F0000000210002C4F00000012100004BA00000002100004BB000000121 +00104CE00000002100104F6000000121001E905000000021001E92700000012100000D100000002100000F1000000121 +0000472000000021000047300000012100118B600000002100118D60000001210001F780000000210001FF8000000121 +000004300000002100000630000001210001EA20000000210001EA30000001210001F240000000210001F2C000000121 +000019D000000021000027200000012100004B600000002100004B700000012100000DF0000000310001E9E000000131 +00000730730002320001F870000000310001F8F0000001310001F073B90002320001E140000000210001E15000000121 +0001EE60000000210001EE7000000121000040B000000021000045B00000012100004090000000210000459000000121 +001057D00000002100105A400000012100003A800000002100003C80000001210001E5A0000000210001E5B000000121 +001057F00000002100105A60000001210000544000000021000057400000012100010FE0000000210001CBE000000121 +0001E120000000210001E1300000012100010B90000000210002D1900000012100000470000000210000067000000121 +00004FC00000002100004FD0000001210010C920000000210010CD20000001210002C860000000210002C87000000121 +0001E1A0000000210001E1B0000001210010C900000000210010CD000000012100010BF0000000210002D1F000000121 +00013CA000000021000AB9A0000001210016E490000000210016E6900000012100000410000000210000061000000121 +00001BC00000002100001BD0000001210001EEA0000000210001EEB00000012100005020000000210000503000000121 +000024800000002100002490000001210001F950000000310001F9D0000001310001F253B900023200010DF000000021 +0001C9F00000012100001C400000003100001C500000013100001C600000023100005460000000210000576000000121 +00013EF000000021000ABBF0000001210002CCC0000000210002CCD00000012100010D70000000210001C97000000121 +00013A7000000021000AB77000000121000047A000000021000047B00000012100001340000000210000135000000121 +000042A000000031000044A0000001310001C860000002310002C190000000210002C490000001210000204000000021 +0000205000000121000025C000000021000A7AB00000012100024CF00000002100024E90000001210001E54000000021 +0001E55000000121001057900000002100105A0000000121000054A000000021000057A000000121000A684000000021 +000A685000000121000FF27000000021000FF470000001210001F050000000210001F0D000000121000FB13000000021 +00005745760001220002132000000021000214E000000121000024C000000021000024D00000012100013B5000000021 +000AB850000001210002CC60000000210002CC7000000121001040800000002100104300000001210002C1D000000021 +0002C4D000000121000023F0000000210002C7E000000121000A742000000021000A7430000001210001E62000000021 +0001E630000001210010CA80000000210010CE800000012100000B5000000031000039C00000013100003BC000000231 +0001F810000000310001F890000001310001F013B90002320010C9A0000000210010CDA000000121000012E000000021 +000012F0000001210000403000000021000045300000012100001FE00000002100001FF0000001210000345000000041 +000039900000014100003B90000002410001FBE0000003410000174000000021000017500000012100003CF000000021 +00003D700000012100024CD00000002100024E70000001210001FB30000000310001FBC00000013100003B13B9000232 +00118AD00000002100118CD000000121000A744000000021000A74500000012100000D900000002100000F9000000121 +0001E0C0000000210001E0D0000001210002C170000000210002C4700000012100003E200000002100003E3000000121 +000026C000000021000A7AD000000121000A756000000021000A75700000012100004050000000210000455000000121 +000019700000002100002680000001210001F600000000210001F680000001210001EEC0000000210001EED000000121 +0002C8C0000000210002C8D00000012100010F20000000210001CB200000012100104B600000002100104DE000000121 +001E91D000000021001E93F000000121001040A000000021001043200000012100013C6000000021000AB96000000121 +0016E410000000210016E610000001210000424000000021000044400000012100001A90000000210000283000000121 +000039A00000003100003BA00000013100003F000000023100010E50000000210001CA500000012100104C8000000021 +00104F00000001210010407000000021001042F00000012100013D0000000021000ABA00000001210001FA2000000031 +0001FAA0000001310001F623B9000232000046C000000021000046D00000012100010A00000000210002D00000000121 +000A782000000021000A78300000012100000C500000003100000E5000000131000212B00000023100004B4000000021 +00004B50000001210002CCE0000000210002CCF0000001210001FF20000000210001F7C3B9000122000FF21000000021 +000FF41000000121000A73A000000021000A73B00000012100104B900000002100104E10000001210001EA4000000021 +0001EA5000000121000038F00000002100003CE00000012100024BE00000002100024D800000012100003B0000000031 +0001FE300000013100003C530830123300000490000000210000069000000121001E91F000000021001E941000000121 +000024600000002100002470000001210001F730000000210001FC90000001210002C670000000210002C68000000121 +000216600000002100021760000001210000100000000021000010100000012100003E400000002100003E5000000121 +00013D2000000021000ABA2000000121000A79E000000021000A79F0000001210001FA00000000310001FA8000000131 +0001F603B90002320010CB10000000210010CF10000001210016E5D0000000210016E7D00000012100010C1000000021 +0002D21000000121000A7F5000000021000A7F600000012100013BE000000021000AB8E000000121000042C000000021 +000044C0000001210001FC400000002100003AE3B900012200010DD0000000210001C9D0000001210001F93000000031 +0001F9B0000001310001F233B9000232000024E000000021000024F00000012100004BC00000002100004BD000000121 +0000176000000021000017700000012100013AB000000021000AB7B00000012100013E1000000021000ABB1000000121 +000050400000002100005050000001210001F030000000210001F0B000000121000A686000000021000A687000000121 +000054C000000021000057C0000001210016E4F0000000210016E6F00000012100010EB0000000210001CAB000000121 +00013D9000000021000ABA9000000121000023A0000000210002C6500000012100004A800000002100004A9000000121 +0002CDA0000000210002CDB000000121000041E000000031000043E0000001310001C820000002310001F81000000031 +0001F890000001310001F013B9000232000039400000002100003B40000001210002C720000000210002C73000000121 +000051000000002100005110000001210001E260000000210001E27000000121000A642000000021000A643000000121 +00004C900000002100004CA000000121000014700000002100001480000001210001EB00000000210001EB1000000121 +000A75E000000021000A75F000000121001058C00000002100105B3000000121000A73C000000021000A73D000000121 +00104D100000002100104F900000012100104D200000002100104FA000000121001059000000002100105B7000000121 +000005500000002100000750000001210001F110000000210001F19000000121000037B00000002100003FD000000121 +0001F310000000210001F390000001210002CBA0000000210002CBB00000012100005520000000210000582000000121 +0001FC30000000310001FCC00000013100003B73B90002320001E6E0000000210001E6F0000001210002167000000021 +000217700000012100000DE00000002100000FE0000001210000190000000021000025B000000121000A68C000000021 +000A68D0000001210001EF80000000210001EF900000012100104B000000002100104D80000001210010C8E000000021 +0010CCE0000001210002C080000000210002C38000000121000016E000000021000016F0000001210016E5C000000021 +0016E7C00000012100010CD0000000210002D2D0000001210001F7B0000000210001FEB0000001210001E90000000021 +0001E9100000012100013B3000000021000AB8300000012100001D100000002100001D20000001210001F53000000021 +0001F5B000000121000012600000002100001270000001210001E480000000210001E490000001210002C98000000021 +0002C99000000121001040000000002100104280000001210001FA30000000310001FAB0000001310001F633B9000232 +00118B900000002100118D900000012100013B0000000021000AB800000001210001ED80000000210001ED9000000121 +0010CA40000000210010CE40000001210001F740000000210001FCA00000012100004220000000410000442000000141 +0001C840000002410001C850000003410001EF20000000210001EF300000012100021610000000210002171000000121 +0010420000000021001044800000012100001F100000003100001F200000013100001F300000023100001D7000000021 +00001D8000000121000A68A000000021000A68B00000012100003F700000002100003F8000000121000FF35000000021 +000FF5500000012100003DC00000002100003DD0000001210010C8D0000000210010CCD0000001210000418000000021 +00004380000001210000212000000021000021300000012100004F000000002100004F100000012100024C1000000021 +00024DB000000121000050A000000021000050B000000121001E917000000021001E939000000121000A644000000021 +000A6450000001210000537000000021000056700000012100010AC0000000210002D0C00000012100010AD000000021 +0002D0D00000012100024C700000002100024E1000000121000046000000002100004610000001210002C2B000000021 +0002C5B0000001210016E560000000210016E7600000012100010C70000000210002D27000000121000FB05000000031 +000FB0600000013100000730740002320002CD40000000210002CD500000012100010F10000000210001CB1000000121 +0001F7A0000000210001FEA0000001210002C0B0000000210002C3B000000121000FF34000000021000FF54000000121 +0010406000000021001042E0000001210000417000000021000043700000012100118BA00000002100118DA000000121 +0001F820000000310001F8A0000001310001F023B900023200001F100000003100001F200000013100001F3000000231 +000039500000003100003B500000013100003F500000023100001B70000000210000292000000121000018F000000021 +000025900000012100005380000000210000568000000121000A66A000000021000A66B0000001210001F32000000021 +0001F3A00000012100104210000000210010449000000121000052A000000021000052B0000001210000425000000021 +0000445000000121000A784000000021000A785000000121000004F000000021000006F000000121000A664000000021 +000A6650000001210001FA20000000310001FAA0000001310001F623B900023200104B100000002100104D9000000121 +00000C400000002100000E40000001210010CA50000000210010CE50000001210001EAA0000000210001EAB000000121 +00013D8000000021000ABA800000012100000DF0000000310001E9E000000131000007307300023200010E4000000021 +0001CA400000012100000D800000002100000F800000012100001CA00000003100001CB00000013100001CC000000231 +00010D10000000210001C910000001210010575000000021001059C000000121000216C000000021000217C000000121 +0002C020000000210002C320000001210016E5B0000000210016E7B000000121000A7D8000000021000A7D9000000121 +000FF22000000021000FF420000001210000404000000021000045400000012100010B30000000210002D13000000121 +0001ECA0000000210001ECB00000012100104090000000210010431000000121001E918000000021001E93A000000121 +00004F600000002100004F70000001210002CC00000000210002CC10000001210001E200000000210001E21000000121 +000FB00000000021000006606600012200104B700000002100104DF000000121000039B00000002100003BB000000121 +000019600000002100002690000001210002C250000000210002C55000000121000A790000000021000A791000000121 +000A764000000021000A765000000121000020C000000021000020D0000001210001F940000000310001F9C000000131 +0001F243B900023200118B000000002100118D0000000121000018200000002100001830000001210002CAC000000021 +0002CAD0000001210001F800000000310001F880000001310001F003B900023200024CC00000002100024E6000000121 +00002510000000210002C6D000000121000048000000002100004810000001210001F5400000002100003C5313301123 +00024B800000002100024D2000000121000054B000000021000057B00000012100013AA000000021000AB7A000000121 +000004B000000031000006B000000131000212A0000002310000261000000021000A7AC0000001210000141000000021 +0000142000000121000039A00000003100003BA00000013100003F000000023100010F80000000210001CB8000000121 +00104C400000002100104EC0000001210000189000000021000025600000012100010DE0000000210001C9E000000121 +0001E680000000210001E6900000012100013E6000000021000ABB60000001210001F040000000210001F0C000000121 +0010578000000021001059F0000001210000411000000021000043100000012100104BA00000002100104E2000000121 +00004660000000210000467000000121000A736000000021000A7370000001210001FE400000002100003C1313000122 +00000CB00000002100000EB00000012100010C00000000210002D200000001210010427000000021001044F000000121 +00001DE00000002100001DF0000001210002C920000000210002C9300000012100001060000000210000107000000121 +0001E4E0000000210001E4F000000121000042B000000021000044B000000121000A748000000021000A749000000121 +0002C110000000210002C41000000121000A7B3000000021000AB53000000121000053E000000021000056E000000121 +000014E000000021000014F00000012100013D3000000021000ABA300000012100005240000000210000525000000121 +000A65E000000021000A65F00000012100001F800000002100001F900000012100004AE00000002100004AF000000121 +000A77E000000021000A77F00000012100003A000000003100003C000000013100003D60000002310000265000000021 +000A78D0000001210001FB600000002100003B13420001220001FA10000000310001FA90000001310001F613B9000232 +0001EDE0000000210001EDF00000012100013B9000000021000AB8900000012100001680000000210000169000000121 +0000226000000021000022700000012100013F100000002100013F90000001210001E060000000210001E07000000121 +00001200000000210000121000000121001041D0000000210010445000000121001058200000002100105A9000000121 +0001F660000000210001F6E0000001210001E96000000021000006833100012200010A60000000210002D06000000121 +0010C910000000210010CD10000001210001D8E000000021000A7C60000001210010C840000000210010CC4000000121 +000FF2B000000021000FF4B00000012100118A300000002100118C300000012100000480000000210000068000000121 +00013CC000000021000AB9C000000121001E91E000000021001E940000000121000038E00000002100003CD000000121 +00005310000000210000561000000121"; return FCE(t[index]); } diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 09ebca22d5e..9e48d842f7b 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -898,11 +898,11 @@ void writeCaseFolding(File sink) writeln("SCE simpleCaseTable(size_t i)"); writeln("{"); - writef("static immutable uint[%d] t = [", simpleTable.length); + writef("static immutable uint[] t = cast(immutable uint[]) x\""); foreach (i, v; simpleTable) { - if (i % 8 == 0) writeln(); - writef("0x%08X,", SCE(v.ch, v.n, v.size).x); + if (i % 12 == 0) writeln(); + writef("%08X", SCE(v.ch, v.n, v.size).x); } // Inspect max integer size, so efficient bit packing can be found: @@ -910,12 +910,12 @@ void writeCaseFolding(File sink) stderr.writefln("max ch: %X", simpleTable.maxElement!(x => x.ch).ch); // ch: 17-bit stderr.writefln("max size: %X", simpleTable.maxElement!(x => x.size).size); // size: 3-bit - writeln("];"); + writeln("\";"); writeln("return SCE(t[i]);"); writeln("}"); writeln("@property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure"); writeln("{"); - writef("static immutable ulong[%d] t = [", fullTable.length); + writef("static immutable ulong[] t = cast(immutable ulong[]) x\""); int[4] maxS = 0; foreach (i, v; fullTable) { @@ -927,9 +927,9 @@ void writeCaseFolding(File sink) assert(v.n >= 1); // meaning that start of bucket is always single char } if (i % 6 == 0) writeln(); - writef("0x%014X,", FCE(v.seq, v.n, v.size, v.entry_len).x); + writef("%016X", FCE(v.seq, v.n, v.size, v.entry_len).x); } - writeln("];"); + writeln("\";"); writeln("return FCE(t[index]);"); writeln("}"); import core.bitop : bsr; From 6d6e0b9b9fb5e882c7296f719baf829feb4939a3 Mon Sep 17 00:00:00 2001 From: Ogi-kun <33967013+Ogi-kun@users.noreply.github.com> Date: Thu, 25 Jan 2024 13:47:13 +0300 Subject: [PATCH 176/327] Fix std.bitmanip.bitfields documentation (#8902) Fix std.bitmanip.bitfields documentation Signed-off-by: Dennis Merged-on-behalf-of: Dennis --- std/bitmanip.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/bitmanip.d b/std/bitmanip.d index e9f61919b0d..c9813e35476 100644 --- a/std/bitmanip.d +++ b/std/bitmanip.d @@ -263,9 +263,9 @@ Implementation_details: `Bitfields` are internally stored in an `ubyte`, `ushort`, `uint` or `ulong` depending on the number of bits used. The bits are filled in the order given by the parameters, starting with the lowest significant bit. The name of the (private) -variable used for saving the `bitfield` is created by a prefix `_bf` -and concatenating all of the variable names, each preceded by an -underscore. +variable used for saving the `bitfield` is created by concatenating +all of the variable names, each preceded by an underscore, and +a suffix `_bf`. Params: T = A list of template parameters divided into chunks of 3 items. Each chunk consists (in this order) of a type, a From a9461c454ed2f5eba103f7a358666c044945a686 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sun, 21 Jan 2024 19:22:47 +0100 Subject: [PATCH 177/327] CI: Remove Azure Pipelines, superseded by GHA --- .github/workflows/main.yml | 2 +- azure-pipelines.yml | 76 -------------------------------------- 2 files changed, 1 insertion(+), 77 deletions(-) delete mode 100644 azure-pipelines.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3ed5f291652..d2f252234ee 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -96,7 +96,7 @@ jobs: DMD: ${{ runner.os == 'Windows' && 'ldmd2' || '' }} # work around the LDC host compiler on Windows assuming the first link.exe in PATH is the MSVC one # (VSINSTALLDIR is set, but GHA uses Git's bin\bash.exe for `shell: bash`, which prepends Git's usr\bin to PATH, with GNU link.exe) - LDC_VSDIR_FORCE: ${{ runner.os == 'Windows' && startsWith(matrix.host_dmd, 'ldc') && '1' || '' }} + LDC_VSDIR_FORCE: ${{ runner.os == 'Windows' && '1' || '' }} - name: Test dmd run: cd ../dmd && ci/run.sh test_dmd - name: Test druntime diff --git a/azure-pipelines.yml b/azure-pipelines.yml deleted file mode 100644 index 1bb435d4931..00000000000 --- a/azure-pipelines.yml +++ /dev/null @@ -1,76 +0,0 @@ -# Learn more: https://aka.ms/yaml - -variables: - DMD_BRANCH: $[ coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranchName'], 'master') ] - VSINSTALLDIR: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\ - -jobs: - - job: Windows - timeoutInMinutes: 60 - pool: - vmImage: 'windows-2019' - variables: - D_COMPILER: dmd - HOST_DMD_VERSION: LATEST - strategy: - matrix: - x64: - MODEL: 64 - ARCH: x64 - x86-OMF: - MODEL: 32omf - ARCH: x86 - steps: - - checkout: self - fetchDepth: 1 - - script: set - displayName: Print environment variables - - script: systeminfo - displayName: Print system info - - task: CopyFiles@2 - inputs: - sourceFolder: '$(Build.SourcesDirectory)' - contents: '**/*' - TargetFolder: '$(Build.SourcesDirectory)/../phobos' - - script: git clone --branch $(DMD_BRANCH) --depth 1 https://github.com/dlang/dmd.git ../dmd - displayName: Clone DMD repo - - script: | - call "%VSINSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" %ARCH% - cd ../dmd && sh --login .azure-pipelines/windows.sh - displayName: Build and test - - - job: Windows_VisualD - timeoutInMinutes: 60 - pool: - vmImage: 'windows-2019' - variables: - D_COMPILER: ldc - VISUALD_VER: v0.49.0 - LDC_VERSION: 1.23.0 - strategy: - matrix: - x86-mscoff: - MODEL: 32 - ARCH: x86 - x86-mscoff_MinGW: - MODEL: 32 - ARCH: x86 - C_RUNTIME: mingw - steps: - - checkout: self - fetchDepth: 1 - - script: set - displayName: Print environment variables - - script: systeminfo - displayName: Print system info - - task: CopyFiles@2 - inputs: - sourceFolder: '$(Build.SourcesDirectory)' - contents: '**/*' - TargetFolder: '$(Build.SourcesDirectory)/../phobos' - - script: git clone --branch $(DMD_BRANCH) --depth 1 https://github.com/dlang/dmd.git ../dmd - displayName: Clone DMD repo - - script: cd ../dmd && sh --login .azure-pipelines/windows-visual-studio.sh - displayName: Download required binaries - - script: cd ../dmd && call .azure-pipelines/windows-msbuild.bat - displayName: Build and test From 0cd85c70939cf2857c3c313fa3e17fccdb85713e Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Wed, 24 Jan 2024 13:46:01 +0100 Subject: [PATCH 178/327] std.uni: use hex strings for TrieEntry --- std/internal/unicode_comp.d | 1604 +++++++++- std/internal/unicode_decomp.d | 1532 ++++++++- std/internal/unicode_grapheme.d | 542 +++- std/internal/unicode_norm.d | 458 ++- std/internal/unicode_tables.d | 5192 ++++++++++++++++++++++++++++++- tools/unicode_table_generator.d | 38 +- 6 files changed, 9294 insertions(+), 72 deletions(-) diff --git a/std/internal/unicode_comp.d b/std/internal/unicode_comp.d index dd0e5ff16f1..646aeeb3af0 100644 --- a/std/internal/unicode_comp.d +++ b/std/internal/unicode_comp.d @@ -7,9 +7,807 @@ import std.internal.unicode_tables; static if (size_t.sizeof == 4) { //10144 bytes -enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)([ 0x0, 0x40, 0x5c0], [ 0x100, 0xb00, 0x10a0], [ 0x2020100, 0x4020302, 0x6020205, 0x9080702, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x40003, 0x0, 0x0, 0x0, 0x0, 0x5, 0x0, 0x0, 0x0, 0x70006, 0x8, 0x9, 0xb000a, 0x0, 0xd000c, 0xf000e, 0x10, 0x0, 0x110000, 0x130012, 0x14, 0x15, 0x170016, 0x180000, 0x19, 0x180000, 0x1b001a, 0x180000, 0x1a, 0x180000, 0x1a, 0x180000, 0x1a, 0x0, 0x1a, 0x180000, 0x1c, 0x180000, 0x1a, 0x1d0000, 0x1a, 0x0, 0x1e, 0x1f0000, 0x20, 0x210000, 0x22, 0x240023, 0x250000, 0x26, 0x27, 0x280000, 0x0, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b, 0x0, 0x0, 0x2d, 0x0, 0x0, 0x2e0000, 0x0, 0x2f0000, 0x0, 0x0, 0x0, 0x30, 0x310000, 0x320000, 0x33, 0x340000, 0x360035, 0x370000, 0x380000, 0x390000, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x3d003c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x410000, 0x0, 0x420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450000, 0x46, 0x470000, 0x0, 0x0, 0x0, 0x0, 0x490048, 0x0, 0x0, 0x4a0035, 0x4b0000, 0x4c, 0x4d0000, 0x4e, 0x0, 0x0, 0x4f0000, 0x510050, 0x0, 0x0, 0x0, 0x1a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x530000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x540000, 0x0, 0x0, 0x0, 0x550000, 0x0, 0x560000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x580057, 0x0, 0x0, 0x590000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5b0000, 0x5c0000, 0x0, 0x5d, 0x5e, 0x0, 0x0, 0x5f0048, 0x600000, 0x0, 0x620061, 0x4d0000, 0x0, 0x63, 0x640000, 0x0, 0x0, 0x650000, 0x660000, 0x67001a, 0x0, 0x0, 0x0, 0x68, 0x0, 0x69, 0x0, 0x0, 0x410000, 0x6a, 0x410000, 0x0, 0x6b0000, 0x0, 0x6c0000, 0x0, 0x0, 0x0, 0x600000, 0x0, 0x0, 0x0, 0x6d0000, 0x6e, 0x0, 0x4e0000, 0x2c0000, 0x6f, 0x70, 0x0, 0x0, 0x0, 0x0, 0x0, 0x410000, 0x0, 0x0, 0x0, 0x0, 0x71, 0x72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x740000, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x760000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x780000, 0x7a0079, 0x0, 0x0, 0x7b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d007c, 0x0, 0x7e, 0x0, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f0000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x810000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x82, 0x0, 0x83, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xdcdce8e6, 0xd8e8dcdc, 0xdcdcdcdc, 0xdccacadc, 0xcadcdcdc, 0xdcdcdcca, 0xdcdcdcdc, 0xdcdcdcdc, 0x1010101, 0xdcdcdc01, 0xe6e6e6dc, 0xe6e6e6e6, 0xdce6f0e6, 0xe6e6dcdc, 0xdcdce6, 0xdce6e6e6, 0xe6dcdcdc, 0xe6dcdce8, 0xe9eaeae9, 0xe6e9eaea, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6dc00, 0xe6dce6e6, 0xdcdee6e6, 0xe6e6e6e6, 0xdcdce6e6, 0xdcdcdcdc, 0xe6dce6e6, 0xe6e4dee6, 0xd0c0b0a, 0x11100f0e, 0x14131312, 0x17001615, 0x191800, 0x1200dce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0x201f1e, 0x0, 0x0, 0x0, 0x1b000000, 0x1f1e1d1c, 0xe6222120, 0xe6dcdce6, 0xe6e6e6e6, 0xdce6e6dc, 0x0, 0x0, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6e6e6, 0xe60000e6, 0xdce6e6e6, 0xe60000e6, 0xe6dc00e6, 0xdce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6dce6, 0xdce6e6dc, 0xdce6dcdc, 0xe6dce6dc, 0xe6dce6e6, 0xe6dce6dc, 0xe6e6dc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6e6, 0xe6dce6e6, 0x0, 0x0, 0xdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe600e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e600, 0xe6e6e600, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdce6, 0xe6e6e6e6, 0x0, 0x0, 0xe6e60000, 0xdce6e6e6, 0xdcdcdcdc, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xdc00e6e6, 0xe6dce6e6, 0xe6e6dce6, 0xdcdcdce6, 0xe61d1c1b, 0xe6dce6e6, 0xe6dcdce6, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x900, 0xe6dce600, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x0, 0x0, 0x0, 0x900, 0x0, 0x5b5400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x9, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96767, 0x0, 0x0, 0x0, 0x6b6b6b6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x97676, 0x0, 0x0, 0x0, 0x7a7a7a7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00dc00, 0xd800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x828100, 0x84, 0x82820000, 0x8282, 0xe6e60082, 0xe6e60009, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x90900, 0x0, 0x0, 0x0, 0x0, 0xdc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x909, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0xe600, 0x0, 0x0, 0xe400, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdce6de00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xdc, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe6e6e600, 0xe6e6e6e6, 0xdc0000e6, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xdcdcdce6, 0xe6dcdcdc, 0xdc00dce6, 0xdce6e6dc, 0xe6e6e6dc, 0xe6dce6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6e6dc, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70000, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6, 0xdcdcdc01, 0xe6e6dcdc, 0xdcdcdcdc, 0x10100e6, 0x1010101, 0x1, 0xdc00, 0x0, 0xe6, 0xe6e6, 0x0, 0xe6dce6e6, 0xe6e6e6e6, 0xe6dce6e6, 0xdcd6eae6, 0xe6e6e6ca, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe4e8e6e6, 0xe6dadce4, 0xdce6dce9, 0x0, 0x0, 0x0, 0x0, 0x101e6e6, 0xe6e6e6e6, 0xe6010101, 0xe6, 0xe600, 0xe6010100, 0x101e6dc, 0xdcdcdcdc, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0x0, 0x0, 0xe4da0000, 0xe0e0dee8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80800, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0x0, 0x0, 0x0, 0x0, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc000000, 0xdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e600e6, 0xe60000dc, 0xe6, 0xe6e60000, 0xe600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1a0000, 0xe6e6e6e6, 0xdce6e6e6, 0xdcdcdcdc, 0xe6e6dcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0xe600dc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc01e6, 0x9000000, 0x0, 0xdce600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0xdcdc0000, 0xdce6e6e6, 0xdcdcdce6, 0xdc, 0x0, 0x0, 0x0, 0xdce60000, 0xdce6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70900, 0x0, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x9, 0x0, 0x0, 0x9, 0x0, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70900, 0x0, 0x0, 0x0, 0x0, 0x90700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7000000, 0x7, 0x0, 0xe6e60000, 0xe6e6e6e6, 0xe6, 0xe6e6e6e6, 0xe6, 0x0, 0x0, 0x90000, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x7090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7090000, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x90900, 0x7000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x0, 0x70000, 0x909, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x90900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1010101, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x1d8d800, 0x101, 0xd8d8e200, 0xd8d8d8, 0x0, 0xdc000000, 0xdcdcdcdc, 0xdcdcdc, 0xe6e6e600, 0xdcdce6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0xe6e60000, 0xe6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0xe6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe6e6e6e6, 0xe60000e6, 0xe6e6e6e6, 0xe600e6e6, 0xe6e600e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6dce8e8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdcdc, 0xdcdcdc, 0x0, 0x0, 0x0, 0xe6e6e6e6, 0x7e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(cast(immutable size_t[]) x" +0000000000000040000005C0", +cast(immutable size_t[]) x" +0000010000000B00000010A0", +cast(immutable size_t[]) x" +020201000402030206020205090807020000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000002000100040003000000000000000000000000000000000000000500000000 +0000000000000000000700060000000800000009000B000A00000000000D000C000F000E000000100000000000110000 +00130012000000140000001500170016001800000000001900180000001B001A001800000000001A001800000000001A +001800000000001A000000000000001A001800000000001C001800000000001A001D00000000001A000000000000001E +001F00000000002000210000000000220024002300250000000000260000002700280000000000000000002900000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000002A0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +002C002B00000000000000000000002D0000000000000000002E000000000000002F0000000000000000000000000000 +0000003000310000003200000000003300340000003600350037000000380000003900000000000000000000003B003A +000000000000000000000000003D003C0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003F003E0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000004000000000000000410000000000000042000000000000000000000000000000000000 +000000000000000000000000000000000043000000000000000000440000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000450000000000460047000000000000000000000000000000000000 +004900480000000000000000004A0035004B00000000004C004D00000000004E0000000000000000004F000000510050 +000000000000000000000000001A00000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000520000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +005300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000005400000000000000000000000000000055000000000000005600000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +005800570000000000000000005900000000000000000000000000000000000000000000000000000000000000000000 +005A00000000000000000000000000000000000000000000005B0000005C0000000000000000005D0000005E00000000 +00000000005F0048006000000000000000620061004D0000000000000000006300640000000000000000000000650000 +006600000067001A0000000000000000000000000000006800000000000000690000000000000000004100000000006A +0041000000000000006B000000000000006C000000000000000000000000000000600000000000000000000000000000 +006D00000000006E00000000004E0000002C00000000006F000000700000000000000000000000000000000000000000 +004100000000000000000000000000000000000000000071000000720000000000000000000000000000000000000000 +000000000000007300000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000740000 +007500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000770000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000780000007A007900000000000000000000007B0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000007D007C000000000000007E0000000000750000000000000000000000000000 +0000000000000000007F0000008000000000000000000000000000000000000000000000000000000000000000810000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000820000000000000083000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6DCDCE8E6D8E8DCDCDCDCDCDC +DCCACADCCADCDCDCDCDCDCCADCDCDCDCDCDCDCDC01010101DCDCDC01E6E6E6DCE6E6E6E6DCE6F0E6E6E6DCDC00DCDCE6 +DCE6E6E6E6DCDCDCE6DCDCE8E9EAEAE9E6E9EAEAE6E6E6E6E6E6E6E6E6E6E6E600000000000000000000000000000000 +E6000000E6E6E6E600000000000000000000000000000000000000000000000000000000000000000000000000000000 +E6E6DC00E6DCE6E6DCDEE6E6E6E6E6E6DCDCE6E6DCDCDCDCE6DCE6E6E6E4DEE60D0C0B0A11100F0E1413131217001615 +001918001200DCE600000000000000000000000000000000000000000000000000000000000000000000000000000000 +E6E6E6E6E6E6E6E600201F1E0000000000000000000000001B0000001F1E1D1CE6222120E6DCDCE6E6E6E6E6DCE6E6DC +000000000000000000000000000000000000002300000000000000000000000000000000000000000000000000000000 +00000000E6E60000E6E6E6E6E60000E6DCE6E6E6E60000E6E6DC00E60000DCE600000000000000000000000000000000 +000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000000000 +E6E6DCE6DCE6E6DCDCE6DCDCE6DCE6DCE6DCE6E6E6DCE6DC00E6E6DC0000000000000000000000000000000000000000 +0000000000000000E6000000E6E6E6E6E6DCE6E600000000000000000000DC0000000000000000000000000000000000 +00000000E6E60000E600E6E6E6E6E6E6E6E6E6E6E6E6E600E6E6E6000000E6E600000000000000000000000000000000 +000000000000000000000000000000000000000000000000DCDCDC000000000000000000000000000000000000000000 +0000000000000000DCDCDCE6E6E6E6E60000000000000000E6E60000DCE6E6E6DCDCDCDCE6E6E6E6E6E6E6E6E6E6E6E6 +DC00E6E6E6DCE6E6E6E6DCE6DCDCDCE6E61D1C1BE6DCE6E6E6DCDCE6E6E6E6E600000000000000000000000000000000 +0000000000000000000000000000000700000000000000000000000000000900E6DCE600000000E60000000000000000 +000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000E600000000000000000000000000000000090000000000005B54000000000000000000 +000000000000000000000000000000000000000000000000090000000000000900000000000000000009000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000009676700000000 +00000000000000006B6B6B6B000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000976760000000000000000000000007A7A7A7A0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000DCDC0000000000000000000000000000000000000000 +00000000DC00DC000000D800000000000000000000000000000000000000000000828100000000848282000000008282 +E6E60082E6E600090000000000000000000000000000000000000000000000000000000000DC00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000070000000009090000000000 +0000000000000000000000000000DC000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000E6E6E6000000000000000000000000000000000000000000000009090000000000000000 +000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000 +0009000000000000000000000000E60000000000000000000000E4000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000DCE6DE000000000000000000000000000000000000000000 +00000000E6000000000000DC000000000000000900000000000000000000000000000000E6E6E600E6E6E6E6DC0000E6 +00000000000000000000000000000000E6E6E6E6DCDCDCE6E6DCDCDCDC00DCE6DCE6E6DCE6E6E6DCE6DCE6E600E6E6E6 +000000000000000000000000000000000000000000000000000000000000000000000000000000070000000000000000 +00000000000000090000000000000000000000000000000000000000000000000000000000000000E6000000E6E6E6DC +E6E6E6E60000000000000000000000000000000000000000090900000000000000000000000000000000000000000000 +000000000007000000000000000000000909000000000000000000000000000000000000000000000000000000000000 +000000000700000000000000000000000000000000000000000000000000000000E6E6E6DCDCDC01E6E6DCDCDCDCDCDC +010100E601010101000000010000DC0000000000000000E60000E6E600000000E6DCE6E6E6E6E6E6E6DCE6E6DCD6EAE6 +E6E6E6CAE6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E4E8E6E6E6DADCE4DCE6DCE9 +000000000000000000000000000000000101E6E6E6E6E6E6E6010101000000E60000E600E60101000101E6DCDCDCDCDC +000000E6000000000000000000000000000000000000000000000000E60000000000E6E6000000000000000000000000 +0000000000000000000000000000000000000000000000000000000009000000E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E60000000000000000E4DA0000E0E0DEE800000000000000000000000000000000 +0000000000000000000000000000000000000000000000000008080000000000000000000000000000000000E6000000 +00000000E6E6E6E6E6E6E6E60000E6E600000000000000000000000000000000000000000000000000000000E6E60000 +000000000000000000000000000000000000E6E600000000000000000000000000000000000900000000000000000000 +000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E60000E6E60000000000000000000000000000000000000000DC0000000000DCDC +000000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000 +000000000000000000000000000000000700000000000000000000000000000000000009000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000E6E600E6E60000DC000000E6E6E60000 +0000E6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000090000000000000000000000000000000000000000000000000000000000000000000000000000001A0000 +E6E6E6E6DCE6E6E6DCDCDCDCE6E6DCDC0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000DC00000000DC00000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000E6E6000000E6E6E600000000000000000000000000000000E600DC00 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000DC01E609000000 +0000000000DCE60000000000000000000000000000000000000000000000000000000000E6E6E6E60000000000000000 +000000000000000000000000000000000000000000000000E6000000000000E600000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000DCDCDC0000000000DCDC0000DCE6E6E6DCDCDCE6 +000000DC000000000000000000000000DCE600000000DCE6000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000900000000000000000900000000000000000000000000000000000000 +0000000000000000000709000000000000E6E6E600000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000900000000000009000000000000000000000009000000000007000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000709000000000000000000 +000000000000000000090700000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000070000000000000700000000E6E60000E6E6E6E6000000E6E6E6E6E6000000E60000000000000000 +0009000000070000000000000000000000000000000000000000000000E6000007090000000000000000000000000000 +000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000007090000000000000000000000000000000000000900000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090900 +070000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000 +000700000000090900000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000900000000000000000000000009090000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000101010100000001000000000000000000000000000000000000000000000000 +E6E6E6E600E6E6E600000000000000000000000000000000000000000000000000000606000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000100000000000001D8D80000000101D8D8E200 +00D8D8D800000000DC000000DCDCDCDC00DCDCDCE6E6E600DCDCE6E60000000000000000000000000000000000000000 +0000000000000000E6E600000000E6E600000000000000000000000000000000E6E60000000000E60000000000000000 +00000000000000000000000000000000E6E6E6E600E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E60000E6E6E6E6E6 +E600E6E6E6E600E600E6E6E60000000000000000000000000000000000000000000000000000000000000000E6000000 +0000000000000000000000000000000000000000000000000000000000E6000000000000000000000000000000000000 +000000000000000000000000E6E6E6E600000000000000000000000000000000000000000000000000000000E6DCE8E8 +0000000000000000000000000000000000000000000000000000000000000000DCDCDCDC00DCDCDC0000000000000000 +00000000E6E6E6E60007E6E6000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; -enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)([ 0x0, 0x800], [ 0x1000, 0x2600], [ 0x10000, 0x30002, 0x50004, 0x70006, 0x70008, 0x70007, 0x90007, 0xa0007, 0xc000b, 0x70007, 0x70007, 0x70007, 0x7000d, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0xf000e, 0x70010, 0x70011, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x8010800, 0xffff0802, 0x8003ffff, 0x28161813, 0x8821301b, 0x38330832, 0x7841383a, 0x28510850, 0x185c3056, 0x8068485f, 0xffff1078, 0x3882407a, 0x98903889, 0x30a510a3, 0x48ad10ab, 0xffff30b6, 0xffffffff, 0xffffffff, 0x80bcffff, 0x28cf18cc, 0x88da30d4, 0x38ec08eb, 0x70fb40f3, 0x290b1109, 0x19163110, 0x81224919, 0xffff1132, 0x393c4134, 0x994b4143, 0x3960115e, 0x51691167, 0xffff3173, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1979, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff217c, 0x9810980, 0x9841182, 0xffffffff, 0xffff2185, 0xffffffff, 0x989ffff, 0xffffffff, 0xffffffff, 0x198e218a, 0xffff0991, 0xffff0992, 0xffffffff, 0xffff2193, 0xffffffff, 0xffffffff, 0xffff2197, 0x99c099b, 0x99f119d, 0xffffffff, 0xffff21a0, 0xffffffff, 0x9a4ffff, 0xffffffff, 0xffffffff, 0x19a921a5, 0xffff09ac, 0xffff09ad, 0xffffffff, 0xffff21ae, 0xffffffff, 0xffffffff, 0x21b621b2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11bc11ba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x11c011be, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c309c2, 0xffffffff, 0xffffffff, 0x9c509c4, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c709c6, 0x9c909c8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9caffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x29d029cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x29d5ffff, 0xffff29da, 0xffffffff, 0xffffffff, 0x9dfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9e109e0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9e309e2, 0x9e509e4, 0xffffffff, 0xffffffff, 0x9e709e6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff09e8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x39e9ffff, 0xffffffff, 0x21f0ffff, 0x29f4ffff, 0x39f9ffff, 0xffffffff, 0xffffffff, 0x2200ffff, 0xa04ffff, 0xffffffff, 0x3205ffff, 0xffffffff, 0x2a0bffff, 0xffffffff, 0xffff0a10, 0xffff0a11, 0x4212ffff, 0xffffffff, 0x221affff, 0x321effff, 0x4224ffff, 0xffffffff, 0xffffffff, 0x222cffff, 0x1230ffff, 0xffffffff, 0x4232ffff, 0xffffffff, 0x323affff, 0x1a431a40, 0xffffffff, 0xffff0a46, 0xffffffff, 0xffff1247, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a49, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff124a, 0xa4cffff, 0x1a4dffff, 0xa521250, 0xffff2253, 0xffff0a57, 0xffffffff, 0xffff0a58, 0xffffffff, 0x2259ffff, 0xffffffff, 0xa5dffff, 0xffffffff, 0xa5effff, 0xa5fffff, 0xffffffff, 0xffff1260, 0xa62ffff, 0x1a63ffff, 0xa681266, 0xffff2269, 0xffff0a6d, 0xffffffff, 0xffff0a6e, 0xffffffff, 0x226fffff, 0xffffffff, 0xa73ffff, 0xffffffff, 0xa74ffff, 0xa75ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a76, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa780a77, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7a0a79, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7c0a7b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a7dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a80, 0xffff0a81, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa82ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a83, 0xa84ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a85, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a86, 0xa87ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1288ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a8affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a8d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa90128e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0a91, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa92ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1a93, 0xffffffff, 0xffff0a96, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa991297, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1a9affff, 0xffffffff, 0xffff0a9d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa9effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa9fffff, 0xaa0ffff, 0xaa1ffff, 0xaa2ffff, 0xaa3ffff, 0xffffffff, 0xaa4ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0aa5, 0xffff0aa6, 0xaa80aa7, 0xffffffff, 0xffff0aa9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xaab0aaa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xaad0aac, 0xffffffff, 0xffffffff, 0xffffffff, 0xaaf0aae, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x12b212b0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xab50ab4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xab70ab6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x22bc22b8, 0xac10ac0, 0xac30ac2, 0xac50ac4, 0x22ca22c6, 0xacf0ace, 0xad10ad0, 0xad30ad2, 0x12d612d4, 0xffffffff, 0xffffffff, 0xffffffff, 0x12da12d8, 0xffffffff, 0xffffffff, 0xffffffff, 0x22e022dc, 0xae50ae4, 0xae70ae6, 0xae90ae8, 0x22ee22ea, 0xaf30af2, 0xaf50af4, 0xaf70af6, 0x1afb1af8, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b011afe, 0xffffffff, 0xffffffff, 0xffffffff, 0x13061304, 0xffffffff, 0xffffffff, 0xffffffff, 0x130a1308, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b0f1b0c, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b12ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x23192315, 0xb1e0b1d, 0xb200b1f, 0xb220b21, 0x23272323, 0xb2c0b2b, 0xb2e0b2d, 0xb300b2f, 0xffff0b31, 0xffffffff, 0xffff0b32, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b33, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b34, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b35ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b38, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b39, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1b3a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b3d, 0xffff0b3e, 0xffff0b3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b40, 0xffff0b41, 0xffff0b42, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb43ffff, 0xffffffff, 0xffffffff, 0xffff0b44, 0xb45ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb46ffff, 0xb47ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b48, 0xffffffff, 0xffffffff, 0xb49ffff, 0xb4affff, 0xffffffff, 0xffff0b4b, 0xffffffff, 0xb4cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb4dffff, 0xffffffff, 0xb4f0b4e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb510b50, 0xffffffff, 0xb530b52, 0xffffffff, 0xb550b54, 0xb570b56, 0xffffffff, 0xffffffff, 0xb590b58, 0xffffffff, 0xb5b0b5a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb5cffff, 0xffff0b5d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b5e, 0xffffffff, 0xffffffff, 0xb600b5f, 0xb61ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb630b62, 0xb650b64, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b66, 0xffffffff, 0xb67ffff, 0xb68ffff, 0xb69ffff, 0xb6affff, 0xb6bffff, 0xb6cffff, 0xb6dffff, 0xb6effff, 0xb6fffff, 0xb70ffff, 0xb71ffff, 0xb72ffff, 0xffffffff, 0xffff0b73, 0xffff0b74, 0xffff0b75, 0xffffffff, 0xffffffff, 0x1376ffff, 0xffffffff, 0xffff1378, 0x137affff, 0xffffffff, 0xffff137c, 0x137effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb80ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b81, 0xffffffff, 0xb82ffff, 0xb83ffff, 0xb84ffff, 0xb85ffff, 0xb86ffff, 0xb87ffff, 0xb88ffff, 0xb89ffff, 0xb8affff, 0xb8bffff, 0xb8cffff, 0xb8dffff, 0xffffffff, 0xffff0b8e, 0xffff0b8f, 0xffff0b90, 0xffffffff, 0xffffffff, 0x1391ffff, 0xffffffff, 0xffff1393, 0x1395ffff, 0xffffffff, 0xffff1397, 0x1399ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb9bffff, 0xb9d0b9c, 0xffff0b9e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb9fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba0ffff, 0xba1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba2ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba3ffff, 0xffff0ba4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13a5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ba7ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xbab0baa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xbacffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(cast(immutable size_t[]) x" +0000000000000800", +cast(immutable size_t[]) x" +0000100000002600", +cast(immutable size_t[]) x" +00010000000300020005000400070006000700080007000700090007000A0007000C000B000700070007000700070007 +0007000D0007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +0007000700070007000700070007000700070007000700070007000700070007000F000E000700100007001100070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +0007000700070007000700070007000700070007000700070007000700070007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF08010800FFFF08028003FFFF281618138821301B383308327841383A28510850185C30568068485F +FFFF10783882407A9890388930A510A348AD10ABFFFF30B6FFFFFFFFFFFFFFFF80BCFFFF28CF18CC88DA30D438EC08EB +70FB40F3290B11091916311081224919FFFF1132393C4134994B41433960115E51691167FFFF3173FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1979FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF217C0981098009841182 +FFFFFFFFFFFF2185FFFFFFFF0989FFFFFFFFFFFFFFFFFFFF198E218AFFFF0991FFFF0992FFFFFFFFFFFF2193FFFFFFFF +FFFFFFFFFFFF2197099C099B099F119DFFFFFFFFFFFF21A0FFFFFFFF09A4FFFFFFFFFFFFFFFFFFFF19A921A5FFFF09AC +FFFF09ADFFFFFFFFFFFF21AEFFFFFFFFFFFFFFFF21B621B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF11BC11BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11C011BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF09C309C2FFFFFFFFFFFFFFFF09C509C4FFFFFFFFFFFFFFFFFFFFFFFF09C709C609C909C8FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +29D029CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29D5FFFFFFFF29DAFFFFFFFFFFFFFFFF09DFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF09E109E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09E309E209E509E4FFFFFFFFFFFFFFFF09E709E6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF09E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39E9FFFFFFFFFFFF21F0FFFF29F4FFFF +39F9FFFFFFFFFFFFFFFFFFFF2200FFFF0A04FFFFFFFFFFFF3205FFFFFFFFFFFF2A0BFFFFFFFFFFFFFFFF0A10FFFF0A11 +4212FFFFFFFFFFFF221AFFFF321EFFFF4224FFFFFFFFFFFFFFFFFFFF222CFFFF1230FFFFFFFFFFFF4232FFFFFFFFFFFF +323AFFFF1A431A40FFFFFFFFFFFF0A46FFFFFFFFFFFF1247FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A49FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF124A0A4CFFFF1A4DFFFF0A521250FFFF2253FFFF0A57FFFFFFFFFFFF0A58FFFFFFFF2259FFFFFFFFFFFF0A5DFFFF +FFFFFFFF0A5EFFFF0A5FFFFFFFFFFFFFFFFF12600A62FFFF1A63FFFF0A681266FFFF2269FFFF0A6DFFFFFFFFFFFF0A6E +FFFFFFFF226FFFFFFFFFFFFF0A73FFFFFFFFFFFF0A74FFFF0A75FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A76 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0A780A77FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A7A0A79FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0A7C0A7BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF1A7DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A80FFFF0A81FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A82FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A830A84FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A85FFFFFFFFFFFFFFFFFFFFFFFFFFFF0A860A87FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1288FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A8AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0A8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0A90128EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A91FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A92FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A93 +FFFFFFFFFFFF0A96FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0A991297FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A9AFFFFFFFFFFFFFFFF0A9DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A9EFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A9FFFFF0AA0FFFF0AA1FFFF0AA2FFFF0AA3FFFFFFFFFFFF +0AA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AA5FFFF0AA60AA80AA7 +FFFFFFFFFFFF0AA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0AAB0AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AAD0AACFFFFFFFFFFFFFFFF +FFFFFFFF0AAF0AAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12B212B0FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AB50AB4FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AB70AB6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22BC22B80AC10AC00AC30AC20AC50AC4 +22CA22C60ACF0ACE0AD10AD00AD30AD212D612D4FFFFFFFFFFFFFFFFFFFFFFFF12DA12D8FFFFFFFFFFFFFFFFFFFFFFFF +22E022DC0AE50AE40AE70AE60AE90AE822EE22EA0AF30AF20AF50AF40AF70AF61AFB1AF8FFFFFFFFFFFFFFFFFFFFFFFF +1B011AFEFFFFFFFFFFFFFFFFFFFFFFFF13061304FFFFFFFFFFFFFFFFFFFFFFFF130A1308FFFFFFFFFFFFFFFFFFFFFFFF +1B0F1B0CFFFFFFFFFFFFFFFFFFFFFFFF1B12FFFFFFFFFFFFFFFFFFFFFFFFFFFF231923150B1E0B1D0B200B1F0B220B21 +232723230B2C0B2B0B2E0B2D0B300B2FFFFF0B31FFFFFFFFFFFF0B32FFFFFFFFFFFFFFFFFFFFFFFFFFFF0B33FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF0B34FFFFFFFFFFFFFFFFFFFFFFFF1B35FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B38 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B39 +FFFFFFFFFFFFFFFFFFFFFFFFFFFF1B3AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0B3DFFFF0B3EFFFF0B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B40FFFF0B41FFFF0B42FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B43FFFFFFFFFFFFFFFFFFFF +FFFF0B440B45FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0B46FFFF0B47FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0B48FFFFFFFFFFFFFFFF0B49FFFF0B4AFFFFFFFFFFFFFFFF0B4BFFFFFFFF0B4CFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B4DFFFFFFFFFFFF0B4F0B4EFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B510B50FFFFFFFF0B530B52FFFFFFFF0B550B540B570B56FFFFFFFF +FFFFFFFF0B590B58FFFFFFFF0B5B0B5AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B5CFFFFFFFF0B5DFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B5EFFFFFFFFFFFFFFFF0B600B5F0B61FFFFFFFFFFFFFFFFFFFF +FFFFFFFF0B630B620B650B64FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B66 +FFFFFFFF0B67FFFF0B68FFFF0B69FFFF0B6AFFFF0B6BFFFF0B6CFFFF0B6DFFFF0B6EFFFF0B6FFFFF0B70FFFF0B71FFFF +0B72FFFFFFFFFFFFFFFF0B73FFFF0B74FFFF0B75FFFFFFFFFFFFFFFF1376FFFFFFFFFFFFFFFF1378137AFFFFFFFFFFFF +FFFF137C137EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B81 +FFFFFFFF0B82FFFF0B83FFFF0B84FFFF0B85FFFF0B86FFFF0B87FFFF0B88FFFF0B89FFFF0B8AFFFF0B8BFFFF0B8CFFFF +0B8DFFFFFFFFFFFFFFFF0B8EFFFF0B8FFFFF0B90FFFFFFFFFFFFFFFF1391FFFFFFFFFFFFFFFF13931395FFFFFFFFFFFF +FFFF13971399FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B9BFFFF +0B9D0B9CFFFF0B9EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA0FFFF0BA1FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0BA2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0BA3FFFFFFFF0BA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF13A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BA7FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BAB0BAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0BACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); dstring compositionTable() nothrow @nogc pure @safe { static immutable dchar[1882] t = "\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"d~ @@ -121,9 +919,807 @@ return t[]; static if (size_t.sizeof == 8) { //10144 bytes -enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)([ 0x0, 0x20, 0x2e0], [ 0x100, 0xb00, 0x10a0], [ 0x402030202020100, 0x908070206020205, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000300020001, 0x0, 0x0, 0x5, 0x0, 0x800070006, 0xb000a00000009, 0xd000c00000000, 0x10000f000e, 0x11000000000000, 0x1400130012, 0x17001600000015, 0x1900180000, 0x1b001a00180000, 0x1a00180000, 0x1a00180000, 0x1a00180000, 0x1a00000000, 0x1c00180000, 0x1a00180000, 0x1a001d0000, 0x1e00000000, 0x20001f0000, 0x2200210000, 0x25000000240023, 0x2700000026, 0x280000, 0x29, 0x0, 0x0, 0x0, 0x0, 0x2a00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b, 0x2d00000000, 0x0, 0x2e0000, 0x2f0000, 0x0, 0x31000000000030, 0x3300320000, 0x36003500340000, 0x38000000370000, 0x390000, 0x3b003a00000000, 0x0, 0x3d003c00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f003e00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000000000, 0x41000000000000, 0x42000000000000, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45000000000000, 0x47000000000046, 0x0, 0x0, 0x490048, 0x4a003500000000, 0x4c004b0000, 0x4e004d0000, 0x0, 0x510050004f0000, 0x0, 0x1a000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x52, 0x0, 0x0, 0x0, 0x0, 0x0, 0x530000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x54000000000000, 0x0, 0x55000000000000, 0x56000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x580057, 0x59000000000000, 0x0, 0x0, 0x0, 0x0, 0x5a0000, 0x0, 0x0, 0x5c0000005b0000, 0x5d00000000, 0x5e, 0x5f004800000000, 0x600000, 0x4d000000620061, 0x6300000000, 0x640000, 0x65000000000000, 0x67001a00660000, 0x0, 0x6800000000, 0x6900000000, 0x0, 0x6a00410000, 0x410000, 0x6b0000, 0x6c0000, 0x0, 0x600000, 0x0, 0x6e006d0000, 0x4e000000000000, 0x6f002c0000, 0x70, 0x0, 0x0, 0x410000, 0x0, 0x7100000000, 0x72, 0x0, 0x0, 0x7300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x74000000000000, 0x750000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x76000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x78000000000000, 0x7a0079, 0x7b00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7d007c, 0x7e, 0x750000, 0x0, 0x0, 0x800000007f0000, 0x0, 0x0, 0x0, 0x81000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8200000000, 0x8300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xdcdce8e6e6e6e6e6, 0xdcdcdcdcd8e8dcdc, 0xcadcdcdcdccacadc, 0xdcdcdcdcdcdcdcca, 0x1010101dcdcdcdc, 0xe6e6e6dcdcdcdc01, 0xdce6f0e6e6e6e6e6, 0xdcdce6e6e6dcdc, 0xe6dcdcdcdce6e6e6, 0xe9eaeae9e6dcdce8, 0xe6e6e6e6e6e9eaea, 0xe6e6e6e6e6e6e6e6, 0x0, 0x0, 0xe6e6e6e6e6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6dce6e6e6e6dc00, 0xe6e6e6e6dcdee6e6, 0xdcdcdcdcdcdce6e6, 0xe6e4dee6e6dce6e6, 0x11100f0e0d0c0b0a, 0x1700161514131312, 0x1200dce600191800, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0x201f1e, 0x0, 0x1f1e1d1c1b000000, 0xe6dcdce6e6222120, 0xdce6e6dce6e6e6e6, 0x0, 0x0, 0x23, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0xe60000e6e6e6e6e6, 0xe60000e6dce6e6e6, 0xdce6e6dc00e6, 0x0, 0x0, 0x0, 0x0, 0x2400, 0x0, 0x0, 0x0, 0xdce6e6dce6e6dce6, 0xe6dce6dcdce6dcdc, 0xe6dce6dce6dce6e6, 0xe6e6dc, 0x0, 0x0, 0x0, 0xe6e6e6e6e6000000, 0xe6dce6e6, 0xdc0000000000, 0x0, 0x0, 0xe6e6000000000000, 0xe6e6e6e6e600e6e6, 0xe6e6e600e6e6e6e6, 0xe6e6e6e6e600, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc00, 0x0, 0x0, 0x0, 0xe6e6e6e6dcdcdce6, 0x0, 0xdce6e6e6e6e60000, 0xe6e6e6e6dcdcdcdc, 0xe6e6e6e6e6e6e6e6, 0xe6dce6e6dc00e6e6, 0xdcdcdce6e6e6dce6, 0xe6dce6e6e61d1c1b, 0xe6e6e6e6e6dcdce6, 0x0, 0x0, 0x0, 0x700000000, 0x0, 0x90000000000, 0xe6e6dce600, 0x0, 0x0, 0x90000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6000000000000, 0x0, 0x90000000000, 0x5b540000000000, 0x0, 0x0, 0x0, 0x0, 0x909000000, 0x0, 0x90000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96767, 0x0, 0x6b6b6b6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x97676, 0x0, 0x7a7a7a7a, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdc, 0x0, 0x0, 0xdc00dc0000000000, 0xd800, 0x0, 0x0, 0x8400828100, 0x828282820000, 0xe6e60009e6e60082, 0x0, 0x0, 0x0, 0xdc000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x700000000000000, 0x90900, 0x0, 0xdc0000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6e60000000000, 0x0, 0x0, 0x90900000000, 0x0, 0x0, 0x0, 0x900000000, 0x0, 0x0, 0x0, 0x90000, 0xe60000000000, 0x0, 0xe400, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdce6de00, 0x0, 0x0, 0xe600000000000000, 0xdc, 0x9, 0x0, 0xe6e6e60000000000, 0xdc0000e6e6e6e6e6, 0x0, 0x0, 0xdcdcdce6e6e6e6e6, 0xdc00dce6e6dcdcdc, 0xe6e6e6dcdce6e6dc, 0xe6e6e6e6dce6e6, 0x0, 0x0, 0x0, 0x0, 0x700000000, 0x0, 0x900000000, 0x0, 0x0, 0x0, 0x0, 0xe6e6e6dce6000000, 0xe6e6e6e6, 0x0, 0x0, 0x9090000, 0x0, 0x0, 0x7000000000000, 0x0, 0x9090000, 0x0, 0x0, 0x0, 0x700000000000000, 0x0, 0x0, 0x0, 0xdcdcdc0100e6e6e6, 0xdcdcdcdce6e6dcdc, 0x1010101010100e6, 0xdc0000000001, 0xe600000000, 0xe6e6, 0xe6e6e6e6e6dce6e6, 0xdcd6eae6e6dce6e6, 0xe6e6e6e6e6e6e6ca, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe4e8e6e6e6e6e6e6, 0xdce6dce9e6dadce4, 0x0, 0x0, 0xe6e6e6e60101e6e6, 0xe6e6010101, 0xe60101000000e600, 0xdcdcdcdc0101e6dc, 0xe6, 0x0, 0x0, 0xe600000000000000, 0xe6e6, 0x0, 0x0, 0x0, 0x0, 0x900000000000000, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0x0, 0xe0e0dee8e4da0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80800, 0x0, 0xe600000000000000, 0xe6e6e6e600000000, 0xe6e6e6e6e6e6, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0x0, 0x0, 0xe6e6, 0x0, 0x9000000000000, 0x0, 0x0, 0x0, 0x0, 0x900000000, 0x0, 0x0, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6, 0x0, 0x0, 0xdcdcdc000000, 0x0, 0x0, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x7000000, 0x0, 0x9, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe60000dce6e600e6, 0xe6e60000000000e6, 0xe600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9000000000000, 0x0, 0x0, 0x0, 0x0, 0x1a000000000000, 0xdce6e6e6e6e6e6e6, 0xe6e6dcdcdcdcdcdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc0000000000, 0xdc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe6e6000000000000, 0xe6e6e6, 0x0, 0xe600dc0000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900000000dc01e6, 0xdce60000000000, 0x0, 0x0, 0x0, 0xe6e6e6e600000000, 0x0, 0x0, 0x0, 0x0, 0xe6e6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdcdcdc0000000000, 0xdcdc000000000000, 0xdcdcdce6dce6e6e6, 0xdc, 0x0, 0xdce6dce60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0x900000000000000, 0x0, 0x0, 0x0, 0x70900, 0xe6e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x909000000, 0x0, 0x9, 0x70000, 0x0, 0x0, 0x0, 0x0, 0x7090000000000, 0x0, 0x0, 0x90700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x707000000, 0xe6e6000000000000, 0xe6e6e6e6e6, 0xe6e6e6e6e6, 0x0, 0x7000000090000, 0x0, 0x0, 0xe6000000000000, 0x7090000, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x709000000000000, 0x0, 0x0, 0x9000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9090000000000, 0x7000000, 0x0, 0x0, 0x0, 0x900000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900, 0x90900070000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x900000000000000, 0x0, 0x90900, 0x0, 0x0, 0x0, 0x0, 0x0, 0x101010101, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x1000000000000, 0x1d8d80000000000, 0xd8d8e20000000101, 0xd8d8d8, 0xdcdcdcdcdc000000, 0xe6e6e60000dcdcdc, 0xdcdce6e6, 0x0, 0x0, 0x0, 0xe6e6e6e60000, 0x0, 0x0, 0xe6e6e60000, 0x0, 0x0, 0x0, 0xe6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e6e6e6e6, 0xe6e6e6e6e60000e6, 0xe6e600e6e600e6e6, 0xe6e6e6, 0x0, 0x0, 0x0, 0xe600000000000000, 0x0, 0x0, 0x0, 0xe6000000000000, 0x0, 0x0, 0x0, 0xe6e6e6e600000000, 0x0, 0x0, 0x0, 0xe6dce8e800000000, 0x0, 0x0, 0x0, 0x0, 0xdcdcdcdcdcdcdc, 0x0, 0xe6e6e6e600000000, 0x7e6e6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(cast(immutable size_t[]) x" +0000000000000000000000000000002000000000000002E0", +cast(immutable size_t[]) x" +00000000000001000000000000000B0000000000000010A0", +cast(immutable size_t[]) x" +040203020202010009080702060202050000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000004000300020001000000000000000000000000000000000000000000000005 +00000000000000000000000800070006000B000A00000009000D000C0000000000000010000F000E0011000000000000 +000000140013001200170016000000150000001900180000001B001A001800000000001A001800000000001A00180000 +0000001A001800000000001A000000000000001C001800000000001A001800000000001A001D00000000001E00000000 +00000020001F000000000022002100000025000000240023000000270000002600000000002800000000000000000029 +00000000000000000000000000000000000000000000000000000000000000000000002A000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000002C002B0000002D00000000000000000000000000000000002E000000000000002F00000000000000000000 +00310000000000300000003300320000003600350034000000380000003700000000000000390000003B003A00000000 +0000000000000000003D003C000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003F003E000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000400000000000000041000000000000004200000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000430000000000000000004400000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000045000000000000004700000000004600000000000000000000000000000000 +0000000000490048004A0035000000000000004C004B00000000004E004D0000000000000000000000510050004F0000 +0000000000000000001A0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000005200000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000053000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000540000000000000000000000000000005500000000000000560000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000058005700590000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000005A000000000000000000000000000000000000005C0000005B00000000005D00000000000000000000005E +005F0048000000000000000000600000004D000000620061000000630000000000000000006400000065000000000000 +0067001A0066000000000000000000000000006800000000000000690000000000000000000000000000006A00410000 +000000000041000000000000006B000000000000006C0000000000000000000000000000006000000000000000000000 +0000006E006D0000004E0000000000000000006F002C0000000000000000007000000000000000000000000000000000 +000000000041000000000000000000000000007100000000000000000000007200000000000000000000000000000000 +000000730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000074000000000000 +000000000075000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000007800000000000000000000007A00790000007B000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000007D007C000000000000007E00000000007500000000000000000000 +000000000000000000800000007F00000000000000000000000000000000000000000000000000000081000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000082000000000000008300000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6DCDCE8E6E6E6E6E6DCDCDCDCD8E8DCDC +CADCDCDCDCCACADCDCDCDCDCDCDCDCCA01010101DCDCDCDCE6E6E6DCDCDCDC01DCE6F0E6E6E6E6E600DCDCE6E6E6DCDC +E6DCDCDCDCE6E6E6E9EAEAE9E6DCDCE8E6E6E6E6E6E9EAEAE6E6E6E6E6E6E6E600000000000000000000000000000000 +E6E6E6E6E600000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +E6DCE6E6E6E6DC00E6E6E6E6DCDEE6E6DCDCDCDCDCDCE6E6E6E4DEE6E6DCE6E611100F0E0D0C0B0A1700161514131312 +1200DCE60019180000000000000000000000000000000000000000000000000000000000000000000000000000000000 +E6E6E6E6E6E6E6E60000000000201F1E00000000000000001F1E1D1C1B000000E6DCDCE6E6222120DCE6E6DCE6E6E6E6 +000000000000000000000000000000000000000000000023000000000000000000000000000000000000000000000000 +E6E6000000000000E60000E6E6E6E6E6E60000E6DCE6E6E60000DCE6E6DC00E600000000000000000000000000000000 +000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000 +DCE6E6DCE6E6DCE6E6DCE6DCDCE6DCDCE6DCE6DCE6DCE6E60000000000E6E6DC00000000000000000000000000000000 +0000000000000000E6E6E6E6E600000000000000E6DCE6E60000DC000000000000000000000000000000000000000000 +E6E6000000000000E6E6E6E6E600E6E6E6E6E600E6E6E6E60000E6E6E6E6E60000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000DCDCDC0000000000000000000000000000000000 +0000000000000000E6E6E6E6DCDCDCE60000000000000000DCE6E6E6E6E60000E6E6E6E6DCDCDCDCE6E6E6E6E6E6E6E6 +E6DCE6E6DC00E6E6DCDCDCE6E6E6DCE6E6DCE6E6E61D1C1BE6E6E6E6E6DCDCE600000000000000000000000000000000 +0000000000000000000000070000000000000000000000000000090000000000000000E6E6DCE6000000000000000000 +000000000000000000000900000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000E600000000000000000000000000000000090000000000005B5400000000000000000000000000 +000000000000000000000000000000000000000000000000000000090900000000000000000000000000000000090000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096767 +0000000000000000000000006B6B6B6B0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000976760000000000000000000000007A7A7A7A00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000DCDC00000000000000000000000000000000 +DC00DC0000000000000000000000D8000000000000000000000000000000000000000084008281000000828282820000 +E6E60009E6E6008200000000000000000000000000000000000000000000000000DC0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000090900 +00000000000000000000DC00000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000E6E6E600000000000000000000000000000000000000000000000909000000000000000000000000 +000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000 +00000000000900000000E600000000000000000000000000000000000000E40000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000DCE6DE0000000000000000000000000000000000 +E60000000000000000000000000000DC00000000000000090000000000000000E6E6E60000000000DC0000E6E6E6E6E6 +00000000000000000000000000000000DCDCDCE6E6E6E6E6DC00DCE6E6DCDCDCE6E6E6DCDCE6E6DC00E6E6E6E6DCE6E6 +000000000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000 +00000009000000000000000000000000000000000000000000000000000000000000000000000000E6E6E6DCE6000000 +00000000E6E6E6E600000000000000000000000000000000000000000909000000000000000000000000000000000000 +000700000000000000000000000000000000000009090000000000000000000000000000000000000000000000000000 +0700000000000000000000000000000000000000000000000000000000000000DCDCDC0100E6E6E6DCDCDCDCE6E6DCDC +01010101010100E60000DC0000000001000000E600000000000000000000E6E6E6E6E6E6E6DCE6E6DCD6EAE6E6DCE6E6 +E6E6E6E6E6E6E6CAE6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E4E8E6E6E6E6E6E6DCE6DCE9E6DADCE4 +00000000000000000000000000000000E6E6E6E60101E6E6000000E6E6010101E60101000000E600DCDCDCDC0101E6DC +00000000000000E600000000000000000000000000000000E600000000000000000000000000E6E60000000000000000 +0000000000000000000000000000000000000000000000000900000000000000E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E60000000000000000E0E0DEE8E4DA000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000808000000000000000000E600000000000000 +E6E6E6E6000000000000E6E6E6E6E6E6000000000000000000000000000000000000000000000000E6E6000000000000 +00000000000000000000000000000000000000000000E6E6000000000000000000090000000000000000000000000000 +000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6000000000000E6E6000000000000000000000000000000000000DCDCDC000000 +000000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000 +000000000000000000000000000000000000000007000000000000000000000000000000000000090000000000000000 +0000000000000000000000000000000000000000000000000000000000000000E60000DCE6E600E6E6E60000000000E6 +000000000000E60000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00090000000000000000000000000000000000000000000000000000000000000000000000000000001A000000000000 +DCE6E6E6E6E6E6E6E6E6DCDCDCDCDCDC0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000DC000000000000000000000000DC000000000000000000000000000000000000000000000000 +00000000000000000000000000000000E6E60000000000000000000000E6E6E60000000000000000E600DC0000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000900000000DC01E6 +00DCE60000000000000000000000000000000000000000000000000000000000E6E6E6E6000000000000000000000000 +000000000000000000000000000000000000000000000000000000E6E600000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000DCDCDC0000000000DCDC000000000000DCDCDCE6DCE6E6E6 +00000000000000DC00000000000000000000DCE6DCE60000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000009090000000000000000000000000000000000000000000000 +000000000000000000000000000709000000000000E6E6E6000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000909000000000000000000000000000000000000090000000000070000 +000000000000000000000000000000000000000000000000000000000000000000070900000000000000000000000000 +000000000000000000000000000907000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000707000000E6E6000000000000000000E6E6E6E6E6000000E6E6E6E6E60000000000000000 +00070000000900000000000000000000000000000000000000E600000000000000000000070900000000000000000000 +000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000 +000000000000000000000000000000000709000000000000000000000000000000000000000000000000000009000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000009090000000000 +000000000700000000000000000000000000000000000000000000000000000009000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900 +000009090007000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +090000000000000000000000000000000000000000090900000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000101010101000000000000000000000000000000000000000000000000 +00E6E6E6E6E6E6E600000000000000000000000000000000000000000000000000000000000006060000000000000000 +000000000000000000000000000000000000000000000000000100000000000001D8D80000000000D8D8E20000000101 +0000000000D8D8D8DCDCDCDCDC000000E6E6E60000DCDCDC00000000DCDCE6E600000000000000000000000000000000 +00000000000000000000E6E6E6E6000000000000000000000000000000000000000000E6E6E600000000000000000000 +0000000000000000000000000000000000E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E60000E6 +E6E600E6E600E6E60000000000E6E6E6000000000000000000000000000000000000000000000000E600000000000000 +00000000000000000000000000000000000000000000000000E600000000000000000000000000000000000000000000 +0000000000000000E6E6E6E600000000000000000000000000000000000000000000000000000000E6DCE8E800000000 +000000000000000000000000000000000000000000000000000000000000000000DCDCDCDCDCDCDC0000000000000000 +E6E6E6E600000000000000000007E6E60000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; -enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)([ 0x0, 0x400], [ 0x1000, 0x2600], [ 0x3000200010000, 0x7000600050004, 0x7000700070008, 0xa000700090007, 0x70007000c000b, 0x7000700070007, 0x700070007000d, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x70010000f000e, 0x7000700070011, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff080208010800, 0x281618138003ffff, 0x383308328821301b, 0x285108507841383a, 0x8068485f185c3056, 0x3882407affff1078, 0x30a510a398903889, 0xffff30b648ad10ab, 0xffffffffffffffff, 0x28cf18cc80bcffff, 0x38ec08eb88da30d4, 0x290b110970fb40f3, 0x8122491919163110, 0x393c4134ffff1132, 0x3960115e994b4143, 0xffff317351691167, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff1979, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff217cffffffff, 0x984118209810980, 0xffff2185ffffffff, 0x989ffffffffffff, 0xffffffffffffffff, 0xffff0991198e218a, 0xffffffffffff0992, 0xffffffffffff2193, 0xffff2197ffffffff, 0x99f119d099c099b, 0xffff21a0ffffffff, 0x9a4ffffffffffff, 0xffffffffffffffff, 0xffff09ac19a921a5, 0xffffffffffff09ad, 0xffffffffffff21ae, 0x21b621b2ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x11bc11baffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff11c011be, 0xffffffffffffffff, 0xffffffffffffffff, 0x9c309c2ffffffff, 0xffffffffffffffff, 0xffffffff09c509c4, 0xffffffffffffffff, 0x9c909c809c709c6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9caffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff29d029cb, 0xffffffffffffffff, 0xffffffffffffffff, 0x29d5ffffffffffff, 0xffffffffffff29da, 0x9dfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9e109e0ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x9e309e2ffffffff, 0xffffffff09e509e4, 0x9e709e6ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09e8ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff39e9ffff, 0x29f4ffff21f0ffff, 0xffffffff39f9ffff, 0x2200ffffffffffff, 0xffffffff0a04ffff, 0xffffffff3205ffff, 0xffffffff2a0bffff, 0xffff0a11ffff0a10, 0xffffffff4212ffff, 0x321effff221affff, 0xffffffff4224ffff, 0x222cffffffffffff, 0xffffffff1230ffff, 0xffffffff4232ffff, 0x1a431a40323affff, 0xffff0a46ffffffff, 0xffff1247ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a49ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa4cffffffff124a, 0xa5212501a4dffff, 0xffff0a57ffff2253, 0xffff0a58ffffffff, 0x2259ffffffffffff, 0xa5dffffffffffff, 0xa5effffffffffff, 0xffffffff0a5fffff, 0xa62ffffffff1260, 0xa6812661a63ffff, 0xffff0a6dffff2269, 0xffff0a6effffffff, 0x226fffffffffffff, 0xa73ffffffffffff, 0xa74ffffffffffff, 0xffffffff0a75ffff, 0xffffffffffffffff, 0xffff0a76ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a780a77, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a7a0a79, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a7c0a7b, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1a7dffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a81ffff0a80, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a82ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a83ffffffff, 0xffffffff0a84ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0a85, 0xffffffffffffffff, 0xa87ffffffff0a86, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1288ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1a8affffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a8dffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa90128effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a91ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa92ffffffffffff, 0xffffffffffffffff, 0xffff1a93ffffffff, 0xffff0a96ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa991297ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1a9affff, 0xffffffffffff0a9d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a9effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaa0ffff0a9fffff, 0xaa2ffff0aa1ffff, 0xffffffff0aa3ffff, 0xffffffff0aa4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0aa5ffffffff, 0xaa80aa7ffff0aa6, 0xffff0aa9ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaab0aaaffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xaad0aacffffffff, 0xffffffffffffffff, 0xaaf0aaeffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff12b212b0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ab50ab4, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ab70ab6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xac10ac022bc22b8, 0xac50ac40ac30ac2, 0xacf0ace22ca22c6, 0xad30ad20ad10ad0, 0xffffffff12d612d4, 0xffffffffffffffff, 0xffffffff12da12d8, 0xffffffffffffffff, 0xae50ae422e022dc, 0xae90ae80ae70ae6, 0xaf30af222ee22ea, 0xaf70af60af50af4, 0xffffffff1afb1af8, 0xffffffffffffffff, 0xffffffff1b011afe, 0xffffffffffffffff, 0xffffffff13061304, 0xffffffffffffffff, 0xffffffff130a1308, 0xffffffffffffffff, 0xffffffff1b0f1b0c, 0xffffffffffffffff, 0xffffffff1b12ffff, 0xffffffffffffffff, 0xb1e0b1d23192315, 0xb220b210b200b1f, 0xb2c0b2b23272323, 0xb300b2f0b2e0b2d, 0xffffffffffff0b31, 0xffffffffffff0b32, 0xffffffffffffffff, 0xffffffffffff0b33, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b34ffffffff, 0xffffffffffffffff, 0x1b35ffffffffffff, 0xffffffffffffffff, 0xffff0b38ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b39ffffffff, 0xffffffffffffffff, 0xffff1b3affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b3effff0b3d, 0xffffffffffff0b3f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b41ffff0b40, 0xffffffffffff0b42, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb43ffffffffffff, 0xffffffffffffffff, 0xb45ffffffff0b44, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb46ffffffffffff, 0xffffffff0b47ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0b48, 0xb49ffffffffffff, 0xffffffff0b4affff, 0xffffffffffff0b4b, 0xffffffff0b4cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b4dffff, 0xffffffff0b4f0b4e, 0xffffffffffffffff, 0xffffffffffffffff, 0xb510b50ffffffff, 0xb530b52ffffffff, 0xb550b54ffffffff, 0xffffffff0b570b56, 0xb590b58ffffffff, 0xb5b0b5affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b5d0b5cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b5effffffff, 0xffffffffffffffff, 0xb61ffff0b600b5f, 0xffffffffffffffff, 0xb630b62ffffffff, 0xffffffff0b650b64, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b66ffffffff, 0xb67ffffffffffff, 0xb69ffff0b68ffff, 0xb6bffff0b6affff, 0xb6dffff0b6cffff, 0xb6fffff0b6effff, 0xb71ffff0b70ffff, 0xffffffff0b72ffff, 0xffff0b74ffff0b73, 0xffffffffffff0b75, 0x1376ffffffffffff, 0xffff1378ffffffff, 0xffffffff137affff, 0x137effffffff137c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b80ffff, 0xffffffffffffffff, 0xffff0b81ffffffff, 0xb82ffffffffffff, 0xb84ffff0b83ffff, 0xb86ffff0b85ffff, 0xb88ffff0b87ffff, 0xb8affff0b89ffff, 0xb8cffff0b8bffff, 0xffffffff0b8dffff, 0xffff0b8fffff0b8e, 0xffffffffffff0b90, 0x1391ffffffffffff, 0xffff1393ffffffff, 0xffffffff1395ffff, 0x1399ffffffff1397, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb9bffffffffffff, 0xffff0b9e0b9d0b9c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0b9fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xba1ffff0ba0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0ba2ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0ba40ba3ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x13a5ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1ba7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0bab0baa, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0bacffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(cast(immutable size_t[]) x" +00000000000000000000000000000400", +cast(immutable size_t[]) x" +00000000000010000000000000002600", +cast(immutable size_t[]) x" +000300020001000000070006000500040007000700070008000A00070009000700070007000C000B0007000700070007 +000700070007000D00070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070010000F000E0007000700070011 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +0007000700070007000700070007000700070007000700070007000700070007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF080208010800281618138003FFFF383308328821301B285108507841383A8068485F185C3056 +3882407AFFFF107830A510A398903889FFFF30B648AD10ABFFFFFFFFFFFFFFFF28CF18CC80BCFFFF38EC08EB88DA30D4 +290B110970FB40F38122491919163110393C4134FFFF11323960115E994B4143FFFF317351691167FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1979FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF217CFFFFFFFF0984118209810980 +FFFF2185FFFFFFFF0989FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0991198E218AFFFFFFFFFFFF0992FFFFFFFFFFFF2193 +FFFF2197FFFFFFFF099F119D099C099BFFFF21A0FFFFFFFF09A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09AC19A921A5 +FFFFFFFFFFFF09ADFFFFFFFFFFFF21AE21B621B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +11BC11BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11C011BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +09C309C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09C509C4FFFFFFFFFFFFFFFF09C909C809C709C6FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF29D029CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29D5FFFFFFFFFFFFFFFFFFFFFFFF29DA09DFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +09E109E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09E309E2FFFFFFFFFFFFFFFF09E509E409E709E6FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF09E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39E9FFFF29F4FFFF21F0FFFF +FFFFFFFF39F9FFFF2200FFFFFFFFFFFFFFFFFFFF0A04FFFFFFFFFFFF3205FFFFFFFFFFFF2A0BFFFFFFFF0A11FFFF0A10 +FFFFFFFF4212FFFF321EFFFF221AFFFFFFFFFFFF4224FFFF222CFFFFFFFFFFFFFFFFFFFF1230FFFFFFFFFFFF4232FFFF +1A431A40323AFFFFFFFF0A46FFFFFFFFFFFF1247FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A49FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0A4CFFFFFFFF124A0A5212501A4DFFFFFFFF0A57FFFF2253FFFF0A58FFFFFFFF2259FFFFFFFFFFFF0A5DFFFFFFFFFFFF +0A5EFFFFFFFFFFFFFFFFFFFF0A5FFFFF0A62FFFFFFFF12600A6812661A63FFFFFFFF0A6DFFFF2269FFFF0A6EFFFFFFFF +226FFFFFFFFFFFFF0A73FFFFFFFFFFFF0A74FFFFFFFFFFFFFFFFFFFF0A75FFFFFFFFFFFFFFFFFFFFFFFF0A76FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0A780A77FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A7A0A79FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0A7C0A7BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF1A7DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A81FFFF0A80FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A82FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A83FFFFFFFFFFFFFFFF0A84FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A85FFFFFFFFFFFFFFFF0A87FFFFFFFF0A86FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1288FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A8AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0A8DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0A90128EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A91FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A92FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A93FFFFFFFF +FFFF0A96FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0A991297FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A9AFFFFFFFFFFFFFFFF0A9DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A9EFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AA0FFFF0A9FFFFF0AA2FFFF0AA1FFFFFFFFFFFF0AA3FFFF +FFFFFFFF0AA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AA5FFFFFFFF0AA80AA7FFFF0AA6 +FFFF0AA9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0AAB0AAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AAD0AACFFFFFFFFFFFFFFFFFFFFFFFF +0AAF0AAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12B212B0FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AB50AB4FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AB70AB6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AC10AC022BC22B80AC50AC40AC30AC2 +0ACF0ACE22CA22C60AD30AD20AD10AD0FFFFFFFF12D612D4FFFFFFFFFFFFFFFFFFFFFFFF12DA12D8FFFFFFFFFFFFFFFF +0AE50AE422E022DC0AE90AE80AE70AE60AF30AF222EE22EA0AF70AF60AF50AF4FFFFFFFF1AFB1AF8FFFFFFFFFFFFFFFF +FFFFFFFF1B011AFEFFFFFFFFFFFFFFFFFFFFFFFF13061304FFFFFFFFFFFFFFFFFFFFFFFF130A1308FFFFFFFFFFFFFFFF +FFFFFFFF1B0F1B0CFFFFFFFFFFFFFFFFFFFFFFFF1B12FFFFFFFFFFFFFFFFFFFF0B1E0B1D231923150B220B210B200B1F +0B2C0B2B232723230B300B2F0B2E0B2DFFFFFFFFFFFF0B31FFFFFFFFFFFF0B32FFFFFFFFFFFFFFFFFFFFFFFFFFFF0B33 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0B34FFFFFFFFFFFFFFFFFFFFFFFF1B35FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B38FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B39FFFFFFFF +FFFFFFFFFFFFFFFFFFFF1B3AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0B3EFFFF0B3DFFFFFFFFFFFF0B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B41FFFF0B40FFFFFFFFFFFF0B42 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B43FFFFFFFFFFFFFFFFFFFFFFFFFFFF +0B45FFFFFFFF0B44FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0B46FFFFFFFFFFFFFFFFFFFF0B47FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF0B480B49FFFFFFFFFFFFFFFFFFFF0B4AFFFFFFFFFFFFFFFF0B4BFFFFFFFF0B4CFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B4DFFFFFFFFFFFF0B4F0B4E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B510B50FFFFFFFF0B530B52FFFFFFFF0B550B54FFFFFFFFFFFFFFFF0B570B56 +0B590B58FFFFFFFF0B5B0B5AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B5D0B5CFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B5EFFFFFFFFFFFFFFFFFFFFFFFF0B61FFFF0B600B5FFFFFFFFFFFFFFFFF +0B630B62FFFFFFFFFFFFFFFF0B650B64FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B66FFFFFFFF +0B67FFFFFFFFFFFF0B69FFFF0B68FFFF0B6BFFFF0B6AFFFF0B6DFFFF0B6CFFFF0B6FFFFF0B6EFFFF0B71FFFF0B70FFFF +FFFFFFFF0B72FFFFFFFF0B74FFFF0B73FFFFFFFFFFFF0B751376FFFFFFFFFFFFFFFF1378FFFFFFFFFFFFFFFF137AFFFF +137EFFFFFFFF137CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B80FFFFFFFFFFFFFFFFFFFFFFFF0B81FFFFFFFF +0B82FFFFFFFFFFFF0B84FFFF0B83FFFF0B86FFFF0B85FFFF0B88FFFF0B87FFFF0B8AFFFF0B89FFFF0B8CFFFF0B8BFFFF +FFFFFFFF0B8DFFFFFFFF0B8FFFFF0B8EFFFFFFFFFFFF0B901391FFFFFFFFFFFFFFFF1393FFFFFFFFFFFFFFFF1395FFFF +1399FFFFFFFF1397FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B9BFFFFFFFFFFFF +FFFF0B9E0B9D0B9CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA1FFFF0BA0FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0BA2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0BA40BA3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF13A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BA7FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BAB0BAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0BACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); dstring compositionTable() nothrow @nogc pure @safe { static immutable dchar[1882] t = "\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"d~ diff --git a/std/internal/unicode_decomp.d b/std/internal/unicode_decomp.d index 3e41811e4a3..6016f3dee23 100644 --- a/std/internal/unicode_decomp.d +++ b/std/internal/unicode_decomp.d @@ -19,9 +19,771 @@ import std.internal.unicode_tables; static if (size_t.sizeof == 4) { //23488 bytes -enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x40, 0x540], [ 0x100, 0xa00, 0x2360], [ 0x2020100, 0x4020302, 0x2020205, 0x7060202, 0x2020202, 0x8020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x80000, 0xa0009, 0xc000b, 0x0, 0xd0000, 0xf000e, 0x0, 0x110010, 0x130012, 0x150014, 0x170016, 0x190018, 0x0, 0x1b001a, 0x0, 0x0, 0x1c, 0x0, 0x1d0000, 0x1e0000, 0x0, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200000, 0x21, 0x0, 0x22, 0x230000, 0x24, 0x0, 0x0, 0x0, 0x25, 0x26, 0x27, 0x0, 0x28, 0x0, 0x29, 0x0, 0x2a, 0x0, 0x2b, 0x2c0000, 0x0, 0x2d0000, 0x2e, 0x2f, 0x310030, 0x330032, 0x0, 0x340000, 0x0, 0x0, 0x350000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x370036, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x3b003a, 0x3d003c, 0x0, 0x3f003e, 0x410040, 0x430042, 0x450044, 0x470046, 0x490048, 0x4b004a, 0x4d004c, 0x4f004e, 0x510050, 0x530052, 0x0, 0x550054, 0x570056, 0x590058, 0x5a, 0x5c005b, 0x5e005d, 0x60005f, 0x610000, 0x620000, 0x0, 0x0, 0x0, 0x0, 0x630000, 0x650064, 0x670066, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x68, 0x690000, 0x0, 0x6a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b0000, 0x0, 0x0, 0x0, 0x6c0000, 0x0, 0x0, 0x0, 0x0, 0x6d, 0x6e0000, 0x70006f, 0x720071, 0x740073, 0x75, 0x770076, 0x790078, 0x7b007a, 0x7d007c, 0x7e0000, 0x80007f, 0x81, 0x0, 0x830082, 0x850084, 0x870086, 0x890088, 0x8b008a, 0x8d008c, 0x8f008e, 0x910090, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x0, 0x0, 0x930000, 0x0, 0x940000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x960095, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x980097, 0x9a0099, 0x9c009b, 0x9e009d, 0xa0009f, 0xa200a1, 0xa400a3, 0xa5, 0xa700a6, 0xa900a8, 0xab00aa, 0xad00ac, 0xaf00ae, 0xb100b0, 0xb300b2, 0xb500b4, 0xb700b6, 0xb900b8, 0xbb00ba, 0xbd00bc, 0xbf00be, 0xc100c0, 0xc300c2, 0xc500c4, 0xc700c6, 0xc900c8, 0xcb00ca, 0xcd00cc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcf00ce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd100d0, 0x0, 0xd20000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd3, 0x0, 0x0, 0x0, 0x0, 0xd40000, 0x0, 0x0, 0x0, 0xd50000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd800d7, 0xd90000, 0xda, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc00db, 0xde00dd, 0xe000df, 0xe200e1, 0xe400e3, 0xe600e5, 0xdb00e7, 0xe800dc, 0xe900de, 0xeb00ea, 0xec00e2, 0xee00ed, 0xf000ef, 0xf200f1, 0xf400f3, 0xf600f5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf70000, 0xf900f8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfb00fa, 0xfd00fc, 0xff00fe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1010100, 0x1030102, 0x104, 0x0, 0x1060105, 0x107, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1080000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10a0109, 0x10c010b, 0x10e010d, 0x110010f, 0x1120111, 0x1140113, 0x1160115, 0x1180117, 0x119, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x15, 0x692, 0x0, 0x90000, 0x0, 0x30f0343, 0x120f0003, 0x0, 0x3140048, 0x78a, 0x3c603ce, 0x494, 0x570056d, 0x5860573, 0x5b005a6, 0x5f80000, 0x62e062b, 0x6580631, 0x6e706e4, 0x6f906ea, 0x7920000, 0x7ac07a9, 0x7c207af, 0x7e6, 0x8b40000, 0x8ba08b7, 0x96208ce, 0x0, 0x9af09ac, 0x9c509b2, 0x9ef09e5, 0xa4a0000, 0xa8c0a89, 0xab60a8f, 0xb490b46, 0xb580b4c, 0xc440000, 0xc610c5e, 0xc770c64, 0xc9b, 0xd6b0000, 0xd710d6e, 0xe0f0d85, 0xe1e0000, 0x9c80589, 0x9cb058c, 0xa0d05ce, 0xa3e05ec, 0xa4105ef, 0xa4405f2, 0xa4705f5, 0xa71061a, 0x0, 0xaa50647, 0xab00652, 0xab30655, 0xad30675, 0xabc065e, 0xafe069a, 0xb0406a0, 0xb0706a3, 0xb0d06a9, 0xb1906ba, 0x0, 0xb4f06ed, 0xb5206f0, 0xb5506f3, 0xb6e070f, 0x6f6, 0xb3a06d8, 0xb760717, 0xbb1072e, 0x7430000, 0x7500bcf, 0x7460bdc, 0x7400bd2, 0xbcc, 0x78f0000, 0x79e0c41, 0x7980c50, 0xf300c4a, 0x0, 0xc8607d1, 0xc9107dc, 0xca507f0, 0x0, 0xd0a0845, 0xd20085b, 0xd10084b, 0xd2e086f, 0xd350876, 0xd4c088d, 0xd3b087c, 0xd6008a9, 0xd5708a0, 0x0, 0xd7408bd, 0xd7b08c4, 0xd8208cb, 0xd9b08e4, 0xd9e08e7, 0xdc70910, 0xdec0942, 0xe120965, 0x97c0971, 0x9820e2c, 0x60d0e32, 0x8430614, 0xcb107fc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f30000, 0xdaa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x613060c, 0x7360a6a, 0xbbc073d, 0x7860783, 0x5b70c35, 0x70309f6, 0x7f30b62, 0x8ea0ca8, 0x8d90da1, 0x8d50d90, 0x8dd0d8c, 0x8d10d94, 0xd88, 0x9e805a9, 0x9e105a2, 0xe680e5d, 0x0, 0xb0a06a6, 0xbab0728, 0xccf081a, 0xcd2081d, 0xf070e82, 0x6090b79, 0xa670610, 0xafb0697, 0x0, 0xc3e078c, 0x9f205b3, 0xe650e5a, 0xe6f0e60, 0x9f905ba, 0x9fc05bd, 0xabf0661, 0xac20664, 0xb650706, 0xb680709, 0xcab07f6, 0xcae07f9, 0xd13084e, 0xd160851, 0xda408ed, 0xda708f0, 0xd49088a, 0xd5d08a6, 0x0, 0xb2206c3, 0x0, 0x0, 0x0, 0x9de059f, 0xacc066e, 0xc9e07e9, 0xc7e07c9, 0xc9407df, 0xc9707e2, 0xe18096b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xeb70b10, 0xa14073e, 0xee10edd, 0xde40ee9, 0x695, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x12000f, 0x4b0024, 0x270006, 0x0, 0xa2b0eb1, 0xb440843, 0xf0a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4001a, 0x2b0000, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf2e, 0x0, 0x0, 0x54, 0x0, 0x546, 0x0, 0x0, 0x1c0003, 0x7410f45, 0xfc00fa0, 0x1011, 0x104a, 0x10991073, 0x11e2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x107c101a, 0x115210ec, 0x11d21176, 0x1270, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x126911db, 0x12601232, 0x12a8, 0x11cb1147, 0x1073106e, 0x1299107c, 0x124b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x124d120b, 0x1255, 0x114d100a, 0x0, 0x106a0000, 0x0, 0x0, 0x0, 0x1313130d, 0x130a0000, 0x0, 0x13010000, 0x0, 0x0, 0x131f132b, 0x1334, 0x0, 0x0, 0x0, 0x0, 0x13250000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13790000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1361135b, 0x13540000, 0x0, 0x13c60000, 0x0, 0x0, 0x13731381, 0x139c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13d013cd, 0x0, 0x0, 0x0, 0x0, 0x13160000, 0x1366, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13481304, 0x134b1307, 0x0, 0x135e1310, 0x0, 0x13e213dd, 0x13691319, 0x136e131c, 0x0, 0x13761322, 0x137c1328, 0x138c132e, 0x0, 0x13ea13e5, 0x13bd1343, 0x13991331, 0x139f1337, 0x13a2133a, 0x13ad133d, 0x0, 0x13b61340, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13ed0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14941491, 0x1497183a, 0x1875, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x149a0000, 0x1906183d, 0x18bc, 0x0, 0x0, 0x0, 0x1918, 0x18fd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19150000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x192d0000, 0x0, 0x0, 0x0, 0x19360000, 0x0, 0x1939, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x191e191b, 0x19241921, 0x192a1927, 0x19331930, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19450000, 0x1948, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x193f193c, 0x19420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19570000, 0x0, 0x195a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x194b0000, 0x1951194e, 0x0, 0x1954, 0x0, 0x0, 0x0, 0x0, 0x1966, 0x19630000, 0x1969, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1960195d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x196c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1975196f, 0x1972, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1978, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x197b, 0x0, 0x0, 0x19850000, 0x1988, 0x1981197e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1991198b, 0x198e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1994, 0x199a1997, 0x199e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19a10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19aa0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19a719a4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ad, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19b20000, 0x0, 0x0, 0x0, 0x0, 0x19b50000, 0x0, 0x0, 0x19b8, 0x0, 0x19bb0000, 0x0, 0x0, 0x19be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19af0000, 0x0, 0x0, 0x0, 0x0, 0x19c10000, 0x19c40000, 0x19dc19e0, 0x19e319e7, 0x0, 0x0, 0x0, 0x19c70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19cd0000, 0x0, 0x0, 0x0, 0x0, 0x19d00000, 0x0, 0x0, 0x19d3, 0x0, 0x19d60000, 0x0, 0x0, 0x19d9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ca0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ea, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ed, 0x0, 0x0, 0x0, 0x0, 0x1ae3, 0x1ae6, 0x1ae9, 0x1aec, 0x1aef, 0x0, 0x1af2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1af50000, 0x1af80000, 0x0, 0x1afe1afb, 0x1b010000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe580568, 0x5d5, 0x62905e6, 0x6870e7c, 0x6cf06ac, 0x71a0607, 0x7230734, 0x781, 0xe8b07a7, 0x76d06af, 0x56b0890, 0x6920773, 0xe910e8f, 0x93a1b04, 0xa800a31, 0xea30ea1, 0x6020ea5, 0xb7c0000, 0xe7805d3, 0xe97078a, 0x1b081b06, 0xba60cd6, 0x1b0c0a27, 0x86d0ec9, 0x11471b0e, 0x114b1149, 0x129b1299, 0xa140ae3, 0x86d0a27, 0x11491147, 0x1299124d, 0x129b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1388, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe930000, 0xe9909a3, 0xea50e6b, 0xea90adc, 0xeb50ead, 0xebd0ebb, 0x1b100ebf, 0xec50f14, 0xf161b12, 0xecb0ecd, 0xed10ecf, 0xed50ed3, 0xeeb0edb, 0xe800eed, 0xef50ef3, 0xef71b0a, 0x6110ef9, 0xf030f01, 0x11cb0f05, 0xa0a05cb, 0xa1605da, 0xa1905dd, 0xa1c05e0, 0xa4d05fb, 0xa6e0617, 0xa74061d, 0xa7d0626, 0xa770620, 0xa7a0623, 0xaa8064a, 0xaac064e, 0xad60678, 0xad9067b, 0xacf0671, 0xaf20684, 0xb01069d, 0xb1c06bd, 0xb2506c6, 0xb1f06c0, 0xb2806c9, 0xb2b06cc, 0xb710712, 0xb5b06fc, 0xba80725, 0xbae072b, 0xbb40731, 0xbd50749, 0xbd8074c, 0xbe20756, 0xbdf0753, 0xc150775, 0xc180778, 0xc1b077b, 0xc470795, 0xc4d079b, 0xc5607a4, 0xc5307a1, 0xc7a07c5, 0xc8207cd, 0xc8907d4, 0xc8d07d8, 0xcef0838, 0xcf2083b, 0xd0d0848, 0xd190854, 0xd1c0857, 0xd23085e, 0xd380879, 0xd420883, 0xd310872, 0xd3e087f, 0xd450886, 0xd51089d, 0xd5a08a3, 0xd6608af, 0xd6308ac, 0xdc4090d, 0xdcd0916, 0xdca0913, 0xd7708c0, 0xd7e08c7, 0xdde0927, 0xde1092a, 0xde6093c, 0xde9093f, 0xdf20948, 0xdef0945, 0xdf8094b, 0xe040957, 0xe07095a, 0xe1b096e, 0xe2f097f, 0xe380988, 0xe3b098b, 0xd540b2e, 0xe240df5, 0xd3809a9, 0x0, 0x0, 0x9ff05c0, 0x9ec05ad, 0x9b9057a, 0x9b50576, 0x9c10582, 0x9bd057e, 0xa0205c3, 0x9d20593, 0x9ce058f, 0x9da059b, 0x9d60597, 0xa0605c7, 0xac50667, 0xab9065b, 0xaa20644, 0xa960638, 0xa920634, 0xa9e0640, 0xa9a063c, 0xac8066a, 0xb5f0700, 0xb6b070c, 0xcc80813, 0xca207ed, 0xc6b07b6, 0xc6707b2, 0xc7307be, 0xc6f07ba, 0xccb0816, 0xcb80803, 0xcb407ff, 0xcc0080b, 0xcbc0807, 0xcc4080f, 0xdc1090a, 0xd9808e1, 0xdb108fa, 0xdad08f6, 0xdb90902, 0xdb508fe, 0xdbd0906, 0xe0c095f, 0xe270977, 0xe210974, 0xe150968, 0x0, 0x0, 0x0, 0x111b10f9, 0x111e10fc, 0x11271105, 0x1130110e, 0xf700f4e, 0xf730f51, 0xf7c0f5a, 0xf850f63, 0x11601155, 0x11631158, 0x1167115c, 0x0, 0xfae0fa3, 0xfb10fa6, 0xfb50faa, 0x0, 0x119f117d, 0x11a21180, 0x11ab1189, 0x11b41192, 0xfe50fc3, 0xfe80fc6, 0xff10fcf, 0xffa0fd8, 0x11f911ea, 0x11fc11ed, 0x120011f1, 0x120411f5, 0x102c101d, 0x102f1020, 0x10331024, 0x10371028, 0x12401235, 0x12431238, 0x1247123c, 0x0, 0x1058104d, 0x105b1050, 0x105f1054, 0x0, 0x12871278, 0x128a127b, 0x128e127f, 0x12921283, 0x107f0000, 0x10820000, 0x10860000, 0x108a0000, 0x12d112af, 0x12d412b2, 0x12dd12bb, 0x12e612c4, 0x10be109c, 0x10c1109f, 0x10ca10a8, 0x10d310b1, 0x10ec10e5, 0x1152114f, 0x1176116f, 0x11d211cf, 0x1232122f, 0x1260125d, 0x12a812a1, 0x0, 0x11391117, 0x11221100, 0x112b1109, 0x11341112, 0xf8e0f6c, 0xf770f55, 0xf800f5e, 0xf890f67, 0x11bd119b, 0x11a61184, 0x11af118d, 0x11b81196, 0x10030fe1, 0xfec0fca, 0xff50fd3, 0xffe0fdc, 0x12ef12cd, 0x12d812b6, 0x12e112bf, 0x12ea12c8, 0x10dc10ba, 0x10c510a3, 0x10ce10ac, 0x10d710b5, 0x10f310f6, 0x114410e8, 0x10ef, 0x1140113d, 0xf480f4b, 0xf450f42, 0x2a0f92, 0x2a11cd, 0x200051, 0x11c81172, 0x1179, 0x11c411c1, 0xfa00f9d, 0xfc00fbd, 0x2d1007, 0x350031, 0x11d511d8, 0x11e211de, 0x0, 0x11e61208, 0x10141017, 0x1011100e, 0x3c0000, 0x440040, 0x12631266, 0x1270126c, 0x1252124f, 0x12741296, 0x10761079, 0x10731070, 0x181067, 0x998001c, 0x0, 0x12fa12a4, 0x12ab, 0x12f612f3, 0x104a1047, 0x10991096, 0x310e0, 0x39, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x1, 0x0, 0x0, 0x1b160000, 0x0, 0x0, 0x4e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2fc02fa, 0x2ff, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x1b1c0000, 0x1b1f, 0x1b2b1b28, 0x0, 0x0, 0x8f, 0xc, 0x0, 0x0, 0x0, 0x5630000, 0x920560, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b230000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xae30305, 0x0, 0x3740365, 0x3920383, 0x3b003a1, 0x1b5a02f4, 0xa10544, 0xb3e00a5, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x1b5a02f4, 0xa10544, 0xa5, 0xa800692, 0xb44078a, 0xb100ea1, 0xa2b0b7c, 0xb3e05d3, 0x8430cd6, 0xba6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x842, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9a509a1, 0xe5005e3, 0xa210000, 0xe7e0a25, 0xe530000, 0x6ac0602, 0x6ac06ac, 0xe740b10, 0x6cf06cf, 0xa2b0734, 0x7810000, 0x789, 0x6af0000, 0x76d083e, 0x76d076d, 0x0, 0x8920866, 0x89a, 0x60a, 0x77f, 0x60a, 0x5b0071a, 0x5e305d5, 0xa800000, 0x67e0629, 0x7230000, 0x13ff078a, 0x1415140d, 0xae3141a, 0x6800000, 0x1149124b, 0x10630f97, 0x1b58, 0x0, 0x5e60000, 0xa800a31, 0x73e0ae3, 0x0, 0x0, 0x0, 0x3e203da, 0x3ca03c1, 0x3d20455, 0x4980459, 0x3d604cf, 0x3de04e7, 0x4eb049c, 0x3be0511, 0x6d106cf, 0x6de06d4, 0x91b06b2, 0x922091e, 0x68206e1, 0x9530950, 0x5e30734, 0x72305e6, 0xb330ae3, 0xb400b36, 0xdd2086d, 0xdd90dd5, 0xb440b43, 0xe000dfd, 0x9a30a2b, 0x5d30a31, 0x0, 0x0, 0x0, 0x0, 0x30d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b3a1b33, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b420000, 0x1b451b48, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b4d, 0x0, 0x1b520000, 0x0, 0x1b55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b5c, 0x1b5f, 0x0, 0x0, 0x1b651b62, 0x1b6e0000, 0x1b71, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b750000, 0x0, 0x1b78, 0x1b7b0000, 0x1b7e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x556, 0x1b84, 0x0, 0x0, 0x0, 0x0, 0x1b810000, 0x55b054a, 0x1b8a1b87, 0x0, 0x1b901b8d, 0x0, 0x1b961b93, 0x0, 0x0, 0x0, 0x1b9c1b99, 0x0, 0x1ba81ba5, 0x0, 0x1bae1bab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bba1bb7, 0x1bc01bbd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ba21b9f, 0x1bb41bb1, 0x0, 0x0, 0x0, 0x1bc61bc3, 0x1bcc1bc9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1be40000, 0x1be6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3430314, 0x365030f, 0x3830374, 0x3a10392, 0x31c03b0, 0x342032f, 0x3640355, 0x3820373, 0x3a00391, 0x3f703af, 0xd900a3, 0xe600e2, 0xee00ea, 0xf600f2, 0xa700fa, 0xb100ac, 0xbb00b6, 0xc500c0, 0xcf00ca, 0xdd00d4, 0x3460319, 0x3680359, 0x3860377, 0x3a40395, 0x31f03b3, 0x3450332, 0x3670358, 0x3850376, 0x3a30394, 0x3fa03b2, 0x16a0166, 0x172016e, 0x17a0176, 0x182017e, 0x18a0186, 0x192018e, 0x19a0196, 0x1a2019e, 0x1aa01a6, 0x1b201ae, 0x1ba01b6, 0x1c201be, 0x1ca01c6, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x305, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b69, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x54f0542, 0x552, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bd9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b2073e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bde0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x232e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27640000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1faa1f98, 0x1fb81fb0, 0x1fc21fbc, 0x1fca1fc6, 0x1ffd1fd0, 0x20112009, 0x20212019, 0x20392029, 0x203d203b, 0x206b2057, 0x20772073, 0x207f2079, 0x208f208d, 0x209d209b, 0x20a920a1, 0x210120f7, 0x212b2121, 0x2131212f, 0x214a2139, 0x21662160, 0x217c2176, 0x2180217e, 0x218e218c, 0x21aa21a4, 0x21b221ae, 0x21c121ba, 0x21db21c5, 0x21e121dd, 0x21e721e3, 0x21f321eb, 0x223d2201, 0x22492247, 0x228b2289, 0x22972295, 0x229f229b, 0x32522a3, 0x32922c3, 0x231222d5, 0x23202318, 0x232c2326, 0x23322330, 0x23362334, 0x23942338, 0x23be23b8, 0x23c223c0, 0x23c823c4, 0x23d423ca, 0x23e623e2, 0x24082406, 0x240e240c, 0x24142412, 0x24282426, 0x24382436, 0x243c243a, 0x24582446, 0x245c245a, 0x248e246e, 0x24a02490, 0x24ac24a8, 0x24ce24bc, 0x24f424f0, 0x250424fe, 0x250c2508, 0x2510250e, 0x251e251c, 0x2530252c, 0x25362534, 0x2540253c, 0x25442542, 0x254a2548, 0x25a4259a, 0x25c025be, 0x25da25c4, 0x25e225de, 0x260425e6, 0x260a2606, 0x260e260c, 0x26262624, 0x2634262a, 0x26442636, 0x264a2648, 0x266c265c, 0x26782676, 0x2692267c, 0x269c2694, 0x26b426ae, 0x26c826bc, 0x26ce26cc, 0x26d226d0, 0x26da26d8, 0x26ec26de, 0x26f026ee, 0x26fe26fc, 0x270c2702, 0x2710270e, 0x27162714, 0x271a2718, 0x2724271c, 0x27322730, 0x273a2738, 0x273e273c, 0x27442742, 0x274c2746, 0x27542750, 0x275a2756, 0x275e275c, 0x27662762, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bf8, 0x2081207f, 0x2083, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c2d, 0x1c30, 0x1c33, 0x1c36, 0x1c39, 0x1c3c, 0x1c3f, 0x1c42, 0x1c45, 0x1c48, 0x1c4b, 0x1c4e, 0x1c510000, 0x1c540000, 0x1c570000, 0x0, 0x0, 0x0, 0x1c5d1c5a, 0x1c600000, 0x1c63, 0x1c691c66, 0x1c6c0000, 0x1c6f, 0x1c781c75, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c2a, 0x0, 0x0, 0x870000, 0x8a, 0x1c7b1c82, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1cd5, 0x1cf2, 0x1ca5, 0x1d41, 0x1d4a, 0x1d5e, 0x1d6e, 0x1d79, 0x1d7e, 0x1d8b, 0x1d90, 0x1d9a, 0x1da10000, 0x1da60000, 0x1cbf0000, 0x0, 0x0, 0x0, 0x1dd51dcc, 0x1dea0000, 0x1df1, 0x1e101e06, 0x1e250000, 0x1e2d, 0x1d591e50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1cb0, 0x1ef30000, 0x1f011efc, 0x1f06, 0x0, 0x1d501f0f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ef0000, 0x1abb19f4, 0x1abd19f6, 0x19fb1abf, 0x1a021a00, 0x1ac31ac1, 0x1ac71ac5, 0x1acb1ac9, 0x1a071a51, 0x1a111a0c, 0x1a131a5b, 0x1a1a1a18, 0x1a2c1a22, 0x1a391a2e, 0x1a431a3e, 0x19f21a48, 0x1a851a83, 0x1a891a87, 0x1a8d1a8b, 0x1a371a8f, 0x1a951a93, 0x1a991a97, 0x1a9d1a20, 0x1aa11a9f, 0x1aa51aa3, 0x1aa91a2a, 0x1a4d1a7f, 0x1acd1a4f, 0x1ad11acf, 0x1ad51ad3, 0x1ad91ad7, 0x1adb1a53, 0x1a551add, 0x1a591a57, 0x1a5f1a5d, 0x1a631a61, 0x1a671a65, 0x1a6b1a69, 0x1a6f1a6d, 0x1a731a71, 0x1a771a75, 0x1ae11adf, 0x1a7b1a79, 0x1aab1a7d, 0x1aaf1aad, 0x1ab31ab1, 0x1ab71ab5, 0x1ab9, 0x0, 0x1fc61f98, 0x20f91f9e, 0x1fac1fa0, 0x24161fa2, 0x1fa61fbc, 0x213e1f9a, 0x1fd02103, 0x1d701ce, 0x1e901e0, 0x1fb01f2, 0x20d0204, 0x2330225, 0x245023c, 0x257024e, 0x1db01d2, 0x1ed01e4, 0x1ff01f6, 0x2110208, 0x2370229, 0x2490240, 0x25b0252, 0x216022e, 0x21e, 0x2700260, 0x2a00268, 0x2880274, 0x2840264, 0x290026c, 0x2c402b0, 0x2b802c0, 0x2a402ec, 0x2bc02ac, 0x2d002b4, 0x2c80298, 0x2d402e4, 0x278028c, 0x2a8029c, 0x27c02cc, 0x29402e8, 0x28002d8, 0x2e002dc, 0x21c320d3, 0x24b02295, 0x0, 0x0, 0x0, 0x0, 0x4060831, 0x41c0411, 0x4320427, 0x4400439, 0x44e0447, 0x475046e, 0x47f047c, 0x4850482, 0x19f619ef, 0x1a0219fb, 0x1a0c1a07, 0x1a1a1a13, 0x1a2e1a22, 0x1a3e1a39, 0x1a481a43, 0x19f819f1, 0x1a0419fd, 0x1a0e1a09, 0x1a1c1a15, 0x1a301a24, 0x1a401a3b, 0x1a4a1a45, 0x1a271a33, 0x1a1f, 0x1fc61f98, 0x20f91f9e, 0x20131fc8, 0x20111f9c, 0x207f1fbe, 0x23940329, 0x22d52338, 0x2101267c, 0x22ed0325, 0x22f222cd, 0x23ce20b9, 0x247c2610, 0x2494205d, 0x214a241a, 0x1ffb2654, 0x23482091, 0x1fdd26e0, 0x213c2025, 0x1fac1fa0, 0x21ac1fa2, 0x207b20b3, 0x2164216a, 0x1fdb2442, 0x2089261a, 0x4882135, 0x48e048b, 0x4b10491, 0x4b704b4, 0x4bd04ba, 0x4c304c0, 0x4c904c6, 0x4e404cc, 0x34e033b, 0x4d604a3, 0x50304f2, 0x5290518, 0x327053a, 0x34d033a, 0xa8506b4, 0x7390a82, 0x1ca01c87, 0x1cb91cae, 0x1cd31cc9, 0x1d221cf0, 0x1d481d3f, 0x1d6c1d5c, 0x1d7c1ccd, 0x1d8e1d89, 0x1d9f1caa, 0x1c8d1da4, 0x1dbe1d55, 0x1d3d1dc0, 0x1dca1dbc, 0x1e041de8, 0x1e4e1e23, 0x1e8b1ce0, 0x1e9e1cd1, 0x1eb31eaf, 0x1ec81ec0, 0x1ce41eca, 0x1ee31c9c, 0x1ef11d0c, 0x1eff1efa, 0x1fd81f04, 0x1c8f1c89, 0x1c9a1c94, 0x1ca81ca2, 0x1cbb1cb3, 0x1ccb1cc2, 0x1ce21ccf, 0x1ceb1ce6, 0x1cdd1cd8, 0x1cfa1cf5, 0x1cff1d06, 0x1d0e1d0b, 0x1d1c1d15, 0x1d2c1d10, 0x1d3a1d33, 0x1d531d44, 0x1d611d57, 0x1d711d66, 0x1d851d81, 0x1da91d93, 0x1d301db2, 0x1dc61dbb, 0x1dd81de4, 0x1dcf1ddf, 0x1dfb1df4, 0x1ded1e00, 0x1e1a1e13, 0x1e1f1e09, 0x1e301e44, 0x1e4a1e34, 0x1e3e1e39, 0x1e5b1e28, 0x1e671e53, 0x1e6a1e61, 0x1e741e6e, 0x1e7d1e79, 0x1e851e81, 0x1e921e8d, 0x1ea01e95, 0x1d171ea4, 0x1eba1eb5, 0x1ece1ec2, 0x1ed81ed3, 0x1ee51edd, 0x1d1e1ee8, 0x33f0311, 0x3610352, 0x37f0370, 0x39d038e, 0x3bb03ac, 0x33e032b, 0x3600351, 0x37e036f, 0x39c038d, 0x3ba03ab, 0x40d0402, 0x4230418, 0xb12042e, 0x56a0a56, 0xc5b0a12, 0xa5c0ce9, 0xa630a5f, 0x21bc06db, 0x213b22b2, 0x22ef22ab, 0xc290cdd, 0xbed1211, 0x71c0b7e, 0x689075b, 0xb8f0a29, 0xc2c0ce0, 0x121d1214, 0x6010bf9, 0xb81068d, 0x68c0764, 0x12200896, 0xa590c00, 0xaef0b97, 0x12230c38, 0xa330c03, 0xc060b9a, 0xa370a36, 0xc0a0b9d, 0xa3b0a3a, 0xc1e0ba1, 0x6910c22, 0x7680b85, 0xcf90690, 0xd030cfd, 0xc3b0cec, 0xc121226, 0xc2f0ce3, 0xbf01217, 0x76f0b89, 0xc320ce6, 0xbf3121a, 0x7720b8c, 0x77e0bb7, 0x5d7099c, 0xa300a2d, 0x5e805ff, 0x6940a53, 0x6ae0b16, 0x71f0b3d, 0xba50722, 0xbc20bbf, 0xbc90bc5, 0xbfc0bf6, 0x8230c0e, 0x8260cd8, 0xd28082e, 0x939086c, 0x5d1092d, 0x34a0337, 0x36c035d, 0x38a037b, 0x3a80399, 0x32303b7, 0x3490336, 0x36b035c, 0x389037a, 0x3a70398, 0x3fe03b6, 0x4140409, 0x42a041f, 0x43c0435, 0x44a0443, 0x4710451, 0xaf70478, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13b913b2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x276e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x67e05e3, 0x83e, 0x0, 0xe7a0e72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2772276c, 0x27740ec1, 0x0, 0x0, 0x0, 0x0, 0xefb0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22c52608, 0x261c2636, 0x1fae2378, 0x276220ab, 0x21442762, 0x20dd267c, 0x22392142, 0x24fc2434, 0x25b62598, 0x265a25d0, 0x234c2306, 0x23ee23a2, 0x2670257c, 0x1fc02706, 0x23102095, 0x259623b4, 0x2198272e, 0x258e2388, 0x225325d8, 0x25bc252a, 0x22cf21d1, 0x23da2358, 0x1fe32660, 0x2065202f, 0x230c2287, 0x244423b2, 0x25922508, 0x2630259e, 0x271e26c4, 0x2462272c, 0x24de2482, 0x268a256e, 0x25f22732, 0x21df211f, 0x251a24ba, 0x246623cc, 0x26c02618, 0x2186211d, 0x23622308, 0x24d6237c, 0x26a024ea, 0x25202063, 0x20332035, 0x24e02498, 0x26a4257a, 0x22552600, 0x25f82306, 0x21701fb4, 0x23e4220b, 0x20752424, 0x1feb246a, 0x1fa421fd, 0x22932342, 0x209f24d4, 0x244a2115, 0x25ea257e, 0x26482328, 0x225d233e, 0x226d255a, 0x1fce2422, 0x2031200f, 0x24ca22f6, 0x25f02546, 0x2069267a, 0x214a20c3, 0x22a121d9, 0x246c238a, 0x270a2698, 0x27402734, 0x22c12057, 0x2642231e, 0x222d21bf, 0x2283223b, 0x23a82382, 0x24922400, 0x251624e4, 0x2582263a, 0x268c264e, 0x20592043, 0x23a020cd, 0x25ea25c6, 0x220721cf, 0x23242269, 0x23de24b8, 0x20fb1fd6, 0x21a22170, 0x23ec220d, 0x250223fa, 0x267e2512, 0x26c626be, 0x1fe526e4, 0x2674248c, 0x221926b2, 0x1ff71fc4, 0x21822172, 0x23062299, 0x243223ae, 0x26582588, 0x22b9275e, 0x2055269e, 0x22e522df, 0x23702354, 0x242023f2, 0x24d22460, 0x201326ea, 0x26a62243, 0x21941fef, 0x263c2364, 0x221d21f5, 0x23e422e9, 0x204726aa, 0x218a20bb, 0x22d722ae, 0x234622fc, 0x242a23f0, 0x25c824f8, 0x267825ce, 0x207d26b8, 0x20bd2372, 0x240223b0, 0x26ac2590, 0x27362722, 0x236022e3, 0x24a8252e, 0x24c024ae, 0x239c23d8, 0x1fd225fe, 0x20492562, 0x21c72041, 0x24c62257, 0x234e2168, 0x264022bf, 0x26a225c0, 0x21d525de, 0x20e91fff, 0x0, 0x2113, 0x22b7, 0x20370000, 0x243e23dc, 0x247e2470, 0x248a2480, 0x24c226ca, 0x2504, 0x2594, 0x25f6, 0x26500000, 0x2666, 0x0, 0x26f626f4, 0x272a26f8, 0x26b02662, 0x1ff91fe7, 0x20612003, 0x20872067, 0x20ef20e1, 0x211120f3, 0x21882117, 0x2213218c, 0x222b2227, 0x228d2237, 0x22bb22a5, 0x235a22f8, 0x23802368, 0x23ba23aa, 0x246423f4, 0x247622f2, 0x24782474, 0x247c247a, 0x24882486, 0x24a4249a, 0x24e424b2, 0x24ec24e8, 0x250a24f6, 0x254c2532, 0x2580254c, 0x25e025d4, 0x25fc25fa, 0x2620261e, 0x2650264c, 0x26dc26ba, 0x220f26e8, 0x253e2833, 0x0, 0x202d1fa8, 0x1fe1200d, 0x20172001, 0x206d205f, 0x20d720e1, 0x20ed20df, 0x211b2113, 0x21462140, 0x215c2154, 0x21d721d3, 0x21ff21ef, 0x22232217, 0x222b221b, 0x22372225, 0x22712245, 0x227b2277, 0x22b7228f, 0x22d122cf, 0x232022db, 0x23542328, 0x2376237a, 0x238e2380, 0x245623aa, 0x23d623bc, 0x23fc23dc, 0x241c240a, 0x2430242e, 0x2440243e, 0x24522448, 0x24682450, 0x24b224a6, 0x24da24be, 0x24f224e4, 0x2564250a, 0x25b22578, 0x25dc25d6, 0x25ec25e0, 0x25ee25f6, 0x25f825fa, 0x25fc25f4, 0x26202602, 0x2656263e, 0x26822672, 0x26ba26a8, 0x26d426ca, 0x26e226dc, 0x271226e8, 0x28092762, 0x281b2807, 0x1f501f3c, 0x284f1f52, 0x28912861, 0x27602758, 0x0, 0x0, 0x0, 0xae20ade, 0xae10ae6, 0xd2b0ae5, 0xd2b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13f90000, 0x13f313f0, 0x13f613fc, 0x0, 0x0, 0x14300000, 0x147d0000, 0x13ff1451, 0x141f141a, 0x140b1439, 0x14621446, 0x2f41478, 0x14751472, 0x146e146a, 0x14041401, 0x140f1407, 0x141c1417, 0x14271421, 0x142a, 0x1433142d, 0x143b1436, 0x1443, 0x1448, 0x144e144b, 0x14530000, 0x1456, 0x145f145c, 0x14671464, 0x1424147a, 0x143e1412, 0x140a1459, 0x18c318c3, 0x18c918c9, 0x18c918c9, 0x18cb18cb, 0x18cb18cb, 0x18cf18cf, 0x18cf18cf, 0x18c718c7, 0x18c718c7, 0x18cd18cd, 0x18cd18cd, 0x18c518c5, 0x18c518c5, 0x18e718e7, 0x18e718e7, 0x18e918e9, 0x18e918e9, 0x18d318d3, 0x18d318d3, 0x18d118d1, 0x18d118d1, 0x18d518d5, 0x18d518d5, 0x18d718d7, 0x18d718d7, 0x18dd18dd, 0x18db18db, 0x18df18df, 0x18d918d9, 0x18e318e3, 0x18e118e1, 0x18eb18eb, 0x18eb18eb, 0x18ef18ef, 0x18ef18ef, 0x18f318f3, 0x18f318f3, 0x18f118f1, 0x18f118f1, 0x18f518f5, 0x18f718f7, 0x18f718f7, 0x19181918, 0x18fb18fb, 0x18fb18fb, 0x18f918f9, 0x18f918f9, 0x163c163c, 0x19151915, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18ed0000, 0x18ed18ed, 0x18ae18ed, 0x18aa18ae, 0x18b218aa, 0x190618b2, 0x190d190d, 0x19001900, 0x190b190b, 0x18b618b6, 0x18b618b6, 0x14c014c0, 0x18781878, 0x18b818b8, 0x189c189c, 0x18ac18ac, 0x18a818a8, 0x18b018b0, 0x18b418b4, 0x18a018b4, 0x18a018a0, 0x190f190f, 0x190f190f, 0x1880187c, 0x18a01890, 0x149f18a4, 0x14a914a2, 0x14bf14b6, 0x14c914c2, 0x14e314d8, 0x151514f8, 0x151d1518, 0x152f1526, 0x15371532, 0x14dc14cd, 0x157c14e0, 0x14e7157f, 0x15b015a5, 0x15c515b7, 0x163e160d, 0x1650164d, 0x1665165b, 0x16731670, 0x168f168a, 0x16b21620, 0x16ea16b5, 0x16f016ed, 0x16fe16f7, 0x17061701, 0x171c170d, 0x1724171f, 0x172a1727, 0x1730172d, 0x173e1733, 0x17551741, 0x17731764, 0x16241637, 0x14fc178b, 0x15041500, 0x150815d1, 0x17d8150c, 0x17fa17eb, 0x18141803, 0x181c1817, 0x182a181f, 0x1847182d, 0x1855184e, 0x186f185e, 0x158f1872, 0x18421599, 0x64005d, 0x72006b, 0x800079, 0x188c1888, 0x18941890, 0x18a418a0, 0x14b31486, 0x14b914b6, 0x14c214bf, 0x14f514f2, 0x150f14f8, 0x15181515, 0x15231520, 0x15291526, 0x1532152f, 0x170116fe, 0x171f171c, 0x17301724, 0x173e1733, 0x16371741, 0x178b1624, 0x15d11790, 0x180017fd, 0x180e1803, 0x18171814, 0x18581842, 0x185e185b, 0x186f1869, 0x187c1872, 0x18841880, 0x18981890, 0x14a2149f, 0x14b614a9, 0x14c914bc, 0x14e314d8, 0x151214f8, 0x15371526, 0x14dc14cd, 0x157c14e0, 0x15a514e7, 0x15b715b0, 0x160d15c5, 0x163e1618, 0x1650164d, 0x1665165b, 0x168a1670, 0x1620168f, 0x16b516b2, 0x16ed16ea, 0x16f716f0, 0x170d1706, 0x172a1727, 0x1730172d, 0x17551733, 0x17731764, 0x148b1637, 0x150014fc, 0x15d11504, 0x17eb17d8, 0x180317fa, 0x181c1811, 0x1830181f, 0x184e1847, 0x185e1855, 0x18901698, 0x14b61898, 0x14f814bc, 0x15261512, 0x15c5152c, 0x15f715d4, 0x17301602, 0x16371733, 0x18111803, 0x1698185e, 0x16d716d0, 0x168216de, 0x16aa1685, 0x16c416ad, 0x15d716c7, 0x160515da, 0x153b1608, 0x14d114a6, 0x14eb14d5, 0x164514ad, 0x16681648, 0x15df166b, 0x15f115e6, 0x15f415f7, 0x161b15c2, 0x16821662, 0x16aa1685, 0x16c416ad, 0x15d716c7, 0x160515da, 0x153b1608, 0x14d114a6, 0x14eb14d5, 0x164514ad, 0x16681648, 0x15df166b, 0x15f115e6, 0x15f415f7, 0x161b15c2, 0x15df1662, 0x15f115e6, 0x15d415f7, 0x16731602, 0x15b015a5, 0x15df15b7, 0x15f115e6, 0x168a1673, 0x148e148e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14db14cc, 0x14df14db, 0x14fb14e6, 0x150314ff, 0x154e154e, 0x156c1570, 0x15a815b3, 0x15cc15ac, 0x15c815cc, 0x15d015d0, 0x16101610, 0x15e91641, 0x15e215e9, 0x15fa15fa, 0x15fe15fe, 0x165e1653, 0x1676165e, 0x167a1676, 0x1692167e, 0x169e169e, 0x16b816a2, 0x16bc16c0, 0x16f316f3, 0x17141710, 0x176f1767, 0x1758176b, 0x17761758, 0x177d1776, 0x17a9177d, 0x17b617ad, 0x179e1796, 0x17c117bd, 0x0, 0x1822179a, 0x17ee1826, 0x17df17f2, 0x17e317df, 0x1806180a, 0x18611861, 0x14d414ac, 0x14ee14d0, 0x150b14ea, 0x15561507, 0x1552153a, 0x161415ba, 0x165715ed, 0x17811760, 0x184a1851, 0x17cc1865, 0x17f61718, 0x17671710, 0x173a16a6, 0x17c517db, 0x1736175c, 0x17db175c, 0x1565153e, 0x16fa17a2, 0x173614a5, 0x16411692, 0x17e715be, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1709163a, 0x14841489, 0x161e17b1, 0x16961594, 0x16231635, 0x15421627, 0x159c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1be002f6, 0x5401be2, 0x8d0546, 0x1c260093, 0x2ff1c28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b1a02fc, 0x9961b18, 0xa10996, 0xe3e00a5, 0x1bfa0e42, 0x1bf41bfe, 0x1be81bf6, 0x1be41bea, 0x1bec1be6, 0x1bf01bee, 0x1bf2, 0x98e0000, 0xc0992, 0xc000c, 0x996000c, 0x9960996, 0x1be002f6, 0x2fa, 0x5400546, 0x8d0093, 0xa11b1a, 0xe3e00a5, 0x1bfa0e42, 0x971bfe, 0x2f2009d, 0x2f802f4, 0x5590548, 0x544, 0x990990, 0x566009b, 0x0, 0x0, 0x16ca0057, 0x5a, 0x61, 0x16cd0068, 0x16d4006f, 0x16db0076, 0x16e2007d, 0x16e50084, 0x14911480, 0x14941491, 0x183a1494, 0x1497183a, 0x18751497, 0x18751875, 0x14821875, 0x149d1482, 0x149d149d, 0x14c5149d, 0x14c714c5, 0x14c714c7, 0x151b14c7, 0x151b151b, 0x14a0151b, 0x14a014a0, 0x14a314a0, 0x14a314a3, 0x14aa14a3, 0x14aa14aa, 0x158b14aa, 0x158d158b, 0x1487158d, 0x14b41487, 0x15a314b4, 0x15a315a3, 0x15dd15a3, 0x15dd15dd, 0x160b15dd, 0x160b160b, 0x164b160b, 0x164b164b, 0x166e164b, 0x166e166e, 0x1688166e, 0x16881688, 0x168d1688, 0x168d168d, 0x16b0168d, 0x16b016b0, 0x16e816b0, 0x16e816e8, 0x170416e8, 0x17041704, 0x17221704, 0x17221722, 0x15971722, 0x15971597, 0x14b71597, 0x14b714b7, 0x14ba14b7, 0x14ba14ba, 0x148c14ba, 0x148c148c, 0x1833148c, 0x14c01833, 0x14a714c0, 0x14a714a7, 0x174914a7, 0x174d1749, 0x1751174d, 0x17461751, 0x1746, 0x0, 0x8d0000, 0x970095, 0x9b0099, 0x9f009d, 0xa500a1, 0x2f402f2, 0x2f802f6, 0x30302fa, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x5460540, 0x5440548, 0x930559, 0x5680566, 0x5e305d5, 0x62905e6, 0x687067e, 0x6cf06ac, 0x71a0607, 0x7230734, 0x7a70781, 0x83e06af, 0x861076d, 0x56b0890, 0x77306b2, 0x95d0682, 0x98e060a, 0x9920990, 0x9960994, 0x6920998, 0x9a3093a, 0xa800a31, 0x6020adc, 0xae30b10, 0xb7c073e, 0x5d30a2b, 0x78a0b3e, 0x5d80cd6, 0x8430a14, 0xa270ba6, 0xde4086d, 0x6950b44, 0xe3e0611, 0xe420e40, 0x1bd50e44, 0x1be21bd7, 0x1bee1bec, 0x1f0b1be0, 0x1c851f04, 0x1cac1c9e, 0x1cc71cb7, 0x1ebe1eb1, 0x1d9d1ec6, 0x1c871cc5, 0x1cae1ca0, 0x1cc91cb9, 0x1cf01cd3, 0x1d3f1d22, 0x1d5c1d48, 0x1ccd1d6c, 0x1d891d7c, 0x1caa1d8e, 0x1da41d9f, 0x1d551c8d, 0x1dc01dbe, 0x1dbc1d3d, 0x1de81dca, 0x1e231e04, 0x1ce01e4e, 0x1cd11e8b, 0x1eaf1e9e, 0x1ec01eb3, 0x1eca1ec8, 0x1c9c1ce4, 0x1d0c1ee3, 0x1cb51ef1, 0x8b0088, 0x19ef1a7f, 0x1abb19f4, 0x1abd19f6, 0x19fb1abf, 0x1a021a00, 0x1ac31ac1, 0x1ac71ac5, 0x1acb1ac9, 0x1a071a51, 0x1a111a0c, 0x1a131a5b, 0x1a1a1a18, 0x1a2c1a22, 0x1a391a2e, 0x1a431a3e, 0x1a48, 0x0, 0x1a8319f2, 0x1a871a85, 0x1a8b1a89, 0x0, 0x1a8f1a8d, 0x1a931a37, 0x1a971a95, 0x0, 0x1a201a99, 0x1a9f1a9d, 0x1aa31aa1, 0x0, 0x1a2a1aa5, 0x1aa9, 0x0, 0xe480e46, 0x90e4e, 0xe4a0e4c, 0x1b2f, 0x1b311bcf, 0x1b381b36, 0x1bd11b3d, 0x1bd3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf330000, 0xe630f35, 0xe950f0e, 0xf1c0000, 0xf202776, 0xe9b0f1e, 0x1b140e9d, 0xea70e9f, 0xeb30f28, 0xeab0eaf, 0xe740f10, 0xeb90f12, 0xf2a0eef, 0xec30f2c, 0x277027d1, 0x27d30ec7, 0x27d50efd, 0xed70e6d, 0x5d80ed9, 0x27d70edf, 0xee50ee3, 0xf260ee7, 0x27780f22, 0xef10f24, 0x1bdc, 0xf180eff, 0xf0c0f1a, 0xe870e85, 0x27d90e89, 0x27db, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x277a, 0x277d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27862783, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27890000, 0x278c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27920000, 0x278f, 0x2795, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279b2798, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27a427a1, 0x27ab27a7, 0x27b327af, 0x27b7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27bb0000, 0x27be27c6, 0x27c227c9, 0x27cd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0x602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x568, 0x5e605e3, 0x0, 0x687, 0x6070000, 0x71a, 0x7810000, 0x6af07a7, 0x83e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0000, 0xb100000, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd60000, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e60000, 0x67e0629, 0x687, 0x6070000, 0x734071a, 0x7810723, 0x6af07a7, 0x83e, 0x8900861, 0x6b2056b, 0x6820773, 0x95d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e60000, 0x67e0629, 0x687, 0x60706cf, 0x734071a, 0x723, 0x7a7, 0x0, 0x8900861, 0x6b2056b, 0x6820773, 0x95d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x93a0692, 0xa3109a3, 0xadc0a80, 0xb100602, 0x73e0ae3, 0xa2b0b7c, 0xb3e05d3, 0xcd6078a, 0xa1405d8, 0xba60843, 0x86d0a27, 0xb440de4, 0x6110695, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0xb440de4, 0x6110695, 0xe8d0e76, 0x0, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0xf950f40, 0xf990f97, 0xfb90f9b, 0x100a0fbb, 0x103b100c, 0x103f103d, 0x10431041, 0x10631045, 0x100a1065, 0x106c106a, 0x108e106e, 0x10921090, 0x1b50077f, 0x114710e3, 0x114b1149, 0x116b114d, 0x11cb116d, 0x120b11cd, 0x120f120d, 0x122b1229, 0x124b122d, 0x1255124d, 0x12591257, 0x1299125b, 0x129d129b, 0x1b4b129f, 0x11cb114d, 0x1299120b, 0x124b124d, 0x12ff12fd, 0x0, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134e1346, 0x13521350, 0x13591357, 0x136c1364, 0x137f1371, 0x13861384, 0x138f138a, 0x13931391, 0x13971395, 0x13a713a5, 0x13ab13a9, 0x13b413b0, 0x13c013bb, 0x13e0276a, 0x13c913c4, 0x13d713e8, 0x134613db, 0x1350134e, 0x13571352, 0x13641359, 0x1371136c, 0x1384137f, 0x138f138a, 0x13971393, 0x13a713a5, 0x13ab13a9, 0x13b213b0, 0x13d313b4, 0x13c213c4, 0x13d513cb, 0x13d92768, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x149d1482, 0x158b14a0, 0x18330000, 0x14a314b4, 0x14a7166e, 0x15971722, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x14871704, 0x14c715dd, 0x14aa151b, 0x164b158d, 0x16b01688, 0x18f518bf, 0x18c118e5, 0x149d0000, 0x14a0, 0x148c, 0x14a30000, 0x14a70000, 0x15971722, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x1704, 0x14c715dd, 0x14aa151b, 0x164b0000, 0x16b00000, 0x0, 0x0, 0x0, 0x14a0, 0x0, 0x14a30000, 0x14a70000, 0x15970000, 0x14ba0000, 0x168d15a3, 0x160b0000, 0x1704, 0x15dd, 0x14aa0000, 0x164b0000, 0x16b00000, 0x18f50000, 0x18c10000, 0x149d0000, 0x14a0, 0x148c, 0x14a30000, 0x14a7166e, 0x1722, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x1704, 0x14c715dd, 0x14aa151b, 0x164b0000, 0x16b01688, 0x18bf, 0x18e5, 0x149d1482, 0x158b14a0, 0x1833148c, 0x14a314b4, 0x14a7166e, 0x15970000, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x14871704, 0x14c715dd, 0x14aa151b, 0x164b158d, 0x16b01688, 0x0, 0x0, 0x149d0000, 0x158b14a0, 0x18330000, 0x14a314b4, 0x14a7166e, 0x15970000, 0x14ba14b7, 0x168d15a3, 0x160b16e8, 0x14871704, 0x14c715dd, 0x14aa151b, 0x164b158d, 0x16b01688, 0x0, 0x0, 0x307030a, 0x3f10316, 0x4ab0468, 0x4fa04de, 0x520050b, 0x531, 0x0, 0x0, 0x10200fe, 0x10a0106, 0x112010e, 0x11a0116, 0x122011e, 0x12a0126, 0x132012e, 0x13a0136, 0x142013e, 0x14a0146, 0x152014e, 0x15a0156, 0x162015e, 0x5e31bfc, 0x5e5076d, 0x936, 0x5d50568, 0x5e605e3, 0x67e0629, 0x6ac0687, 0x60706cf, 0x734071a, 0x7810723, 0x6af07a7, 0x76d083e, 0x8900861, 0x6b2056b, 0x6820773, 0x60a095d, 0x76f06b1, 0x8690863, 0x933082a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x761075e, 0x76c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1d4d1c72, 0x1d5c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21622249, 0x1da620a5, 0x21331fc6, 0x213e25e4, 0x22b01fcc, 0x229923a4, 0x21f7204f, 0x229d201b, 0x24d82045, 0x2612240e, 0x20c12125, 0x224f237e, 0x1f982265, 0x26521f9e, 0x1fac21ac, 0x225f20b3, 0x224b2626, 0x24a22484, 0x236e20b7, 0x32922cd, 0x20512418, 0x266e20e7, 0x0, 0x0, 0x1c001c18, 0x1c0c1c04, 0x1c101c1c, 0x1c081c20, 0x1c14, 0x0, 0x0, 0x0, 0x20af21f9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3140305, 0x30f0343, 0x3740365, 0x3920383, 0x3b003a1, 0x0, 0x0, 0x0, 0x1fb21fb6, 0x27dd1fba, 0x1fe71fdf, 0x1fed1fe9, 0x1ff31ff1, 0x1ff51ff9, 0x27e51f12, 0x20052003, 0x20152007, 0x1f1427df, 0x201b200b, 0x202327e3, 0x1fd42027, 0x202d202b, 0x203b28a1, 0x1f18203f, 0x204d204b, 0x20532051, 0x205f1f1a, 0x20672061, 0x206f206d, 0x20752071, 0x20872085, 0x2093208b, 0x20992097, 0x20992099, 0x239627eb, 0x20a720a3, 0x20ad27ed, 0x20b520b1, 0x20bf20c9, 0x20c720c5, 0x20cf20cb, 0x20d520d1, 0x20db20d9, 0x20df20db, 0x20e520e3, 0x20fd20eb, 0x20ff20ef, 0x20f520f1, 0x21232041, 0x21092107, 0x2105210b, 0x210d210f, 0x27ef2119, 0x21292127, 0x2133212d, 0x21482137, 0x27f327f1, 0x2150214e, 0x214c2152, 0x1f1c2156, 0x215a1f1e, 0x215e215e, 0x216c27f5, 0x2170216e, 0x27f72174, 0x217a2178, 0x217e21e9, 0x21841f20, 0x2192218c, 0x27fb2190, 0x27fd2196, 0x219a219c, 0x21a6219e, 0x1f2221a8, 0x21b421b0, 0x21b821b6, 0x27ff1f24, 0x21c91f26, 0x21cd21cb, 0x28b521d1, 0x280321dd, 0x25382803, 0x21e521e5, 0x28111f28, 0x21ed2865, 0x1f2a21f1, 0x220321fb, 0x22092205, 0x1f2e2211, 0x22131f2c, 0x22152805, 0x2221221f, 0x22212223, 0x222b2229, 0x222f2233, 0x22352231, 0x22392237, 0x224121bd, 0x2251224d, 0x22632259, 0x2261280b, 0x2267225b, 0x2275226b, 0x2279280d, 0x226f2273, 0x227d1f30, 0x22852281, 0x1f32227f, 0x2291228d, 0x22a7280f, 0x22b522c7, 0x22bb1f38, 0x1f341f36, 0x201f201d, 0x22bd22c9, 0x1f6a2522, 0x22d122cf, 0x22dd22d3, 0x281922d9, 0x22e71f3a, 0x22f422e1, 0x281d22f8, 0x22eb22fa, 0x1f3c22fe, 0x23022300, 0x230a2304, 0x230e281f, 0x23141f3e, 0x23162821, 0x231c1f40, 0x23282322, 0x2823232a, 0x282527f9, 0x2827233a, 0x23442340, 0x234a233c, 0x235a2352, 0x23562354, 0x235e235c, 0x23502829, 0x236c236a, 0x23761f42, 0x282b2374, 0x23842366, 0x282f282d, 0x23902386, 0x238c238e, 0x23921f44, 0x2398239a, 0x27e1239e, 0x283123a6, 0x283523ac, 0x23bc23b6, 0x283723c6, 0x23d223d0, 0x283b2839, 0x23e823e0, 0x23ea1f46, 0x1f481f48, 0x23f823f6, 0x23fe23fc, 0x1f4a2404, 0x283d2410, 0x283f241e, 0x28012424, 0x2841242c, 0x28452843, 0x1f4e1f4c, 0x28492448, 0x284b2847, 0x244c284d, 0x244e244e, 0x1f522452, 0x1f542454, 0x28511f56, 0x2462245e, 0x1f582468, 0x247a2853, 0x28572855, 0x2496248a, 0x249a1f5a, 0x249e249c, 0x285b2859, 0x24aa285b, 0x285d1f5c, 0x24b624b4, 0x285f1f5e, 0x1f6024c4, 0x24c824cc, 0x286324d0, 0x1f6224dc, 0x24e624e2, 0x1f6424ee, 0x28692867, 0x286b1f66, 0x286d24fa, 0x25062500, 0x286f250a, 0x25142871, 0x25182873, 0x1f682813, 0x25262524, 0x25281f6c, 0x28752158, 0x28152877, 0x25382817, 0x2646253a, 0x25501f6e, 0x2552254e, 0x2554205b, 0x25582556, 0x2879255c, 0x255e255a, 0x256a2568, 0x256c2560, 0x25802576, 0x25702566, 0x25742572, 0x287f287b, 0x1f70287d, 0x25862584, 0x2887258a, 0x2881258c, 0x1f741f72, 0x28852883, 0x259c1f76, 0x25a0259e, 0x25a825a2, 0x25ac25a6, 0x25b225aa, 0x25b025ae, 0x1f7825b4, 0x25ba25b8, 0x25c21f7a, 0x288925c4, 0x25cc25ca, 0x25d21f7c, 0x288b1f16, 0x1f7e288d, 0x25e81f80, 0x260225f4, 0x288f260a, 0x26162614, 0x26282622, 0x27e72893, 0x262c262e, 0x27e92632, 0x263e2638, 0x28972895, 0x2664265e, 0x28992668, 0x2680266a, 0x26882686, 0x268e2684, 0x289b2690, 0x1f822696, 0x289d269a, 0x26b61f84, 0x26c221a0, 0x28a3289f, 0x1f881f86, 0x28a526d6, 0x28a71f8a, 0x26e226e2, 0x28a926e6, 0x1f8c26f2, 0x270026fa, 0x27082704, 0x28ab1f8e, 0x27202712, 0x1f902726, 0x27281f92, 0x1f9428ad, 0x28b128af, 0x273a28b3, 0x27441f96, 0x274a2748, 0x2752274e, 0x28b72756, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +000000000000004000000540", +cast(immutable size_t[]) x" +0000010000000A0000002360", +cast(immutable size_t[]) x" +020201000402030202020205070602020202020208020202000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000001000000030002000500040007000600080000000A0009 +000C000B00000000000D0000000F000E00000000001100100013001200150014001700160019001800000000001B001A +00000000000000000000001C00000000001D0000001E0000000000000000001F00000000000000000000000000000000 +000000000000000000000000000000000020000000000021000000000000002200230000000000240000000000000000 +0000000000000025000000260000002700000000000000280000000000000029000000000000002A000000000000002B +002C000000000000002D00000000002E0000002F00310030003300320000000000340000000000000000000000350000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000037003600000038000000000000000000000000000000000000000000000000 +00390000003B003A003D003C00000000003F003E0041004000430042004500440047004600490048004B004A004D004C +004F004E0051005000530052000000000055005400570056005900580000005A005C005B005E005D0060005F00610000 +006200000000000000000000000000000000000000630000006500640067006600000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000006800690000000000000000006A00000000000000000000000000000000 +00000000006B0000000000000000000000000000006C0000000000000000000000000000000000000000006D006E0000 +0070006F0072007100740073000000750077007600790078007B007A007D007C007E00000080007F0000008100000000 +00830082008500840087008600890088008B008A008D008C008F008E0091009000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000920000000000000000009300000000000000940000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000096009500000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000980097009A0099009C009B009E009D00A0009F00A200A100A400A3000000A5 +00A700A600A900A800AB00AA00AD00AC00AF00AE00B100B000B300B200B500B400B700B600B900B800BB00BA00BD00BC +00BF00BE00C100C000C300C200C500C400C700C600C900C800CB00CA00CD00CC00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000CF00CE000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000D100D00000000000D2000000000000000000000000000000000000000000000000000000000000 +00000000000000D30000000000000000000000000000000000D4000000000000000000000000000000D5000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00D600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000D800D700D90000000000DA0000000000000000000000000000000000000000000000000000000000000000 +00DC00DB00DE00DD00E000DF00E200E100E400E300E600E500DB00E700E800DC00E900DE00EB00EA00EC00E200EE00ED +00F000EF00F200F100F400F300F600F50000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00F7000000F900F800000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000FB00FA00FD00FC00FF00FE00000000 +000000000000000000000000000000000000000000000000000000000000000001010100010301020000010400000000 +010601050000010700000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000010800000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000010A0109010C010B010E010D0110010F +011201110114011301160115011801170000011900000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000100000000000000000000000000000015000006920000000000090000 +00000000030F0343120F000300000000031400480000078A03C603CE000004940570056D0586057305B005A605F80000 +062E062B0658063106E706E406F906EA0792000007AC07A907C207AF000007E608B4000008BA08B7096208CE00000000 +09AF09AC09C509B209EF09E50A4A00000A8C0A890AB60A8F0B490B460B580B4C0C4400000C610C5E0C770C6400000C9B +0D6B00000D710D6E0E0F0D850E1E000009C8058909CB058C0A0D05CE0A3E05EC0A4105EF0A4405F20A4705F50A71061A +000000000AA506470AB006520AB306550AD306750ABC065E0AFE069A0B0406A00B0706A30B0D06A90B1906BA00000000 +0B4F06ED0B5206F00B5506F30B6E070F000006F60B3A06D80B7607170BB1072E0743000007500BCF07460BDC07400BD2 +00000BCC078F0000079E0C4107980C500F300C4A000000000C8607D10C9107DC0CA507F0000000000D0A08450D20085B +0D10084B0D2E086F0D3508760D4C088D0D3B087C0D6008A90D5708A0000000000D7408BD0D7B08C40D8208CB0D9B08E4 +0D9E08E70DC709100DEC09420E120965097C097109820E2C060D0E32084306140CB107FC000000000000000000000000 +00000000000000000000000008F3000000000DAA00000000000000000000000000000000000000000000000000000000 +00000000000000000613060C07360A6A0BBC073D0786078305B70C35070309F607F30B6208EA0CA808D90DA108D50D90 +08DD0D8C08D10D9400000D8809E805A909E105A20E680E5D000000000B0A06A60BAB07280CCF081A0CD2081D0F070E82 +06090B790A6706100AFB0697000000000C3E078C09F205B30E650E5A0E6F0E6009F905BA09FC05BD0ABF06610AC20664 +0B6507060B6807090CAB07F60CAE07F90D13084E0D1608510DA408ED0DA708F00D49088A0D5D08A6000000000B2206C3 +00000000000000000000000009DE059F0ACC066E0C9E07E90C7E07C90C9407DF0C9707E20E18096B0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0EB70B100A14073E0EE10EDD0DE40EE90000069500000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000012000F004B00240027000600000000 +0A2B0EB10B44084300000F0A000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000004001A002B00000000001D0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000F2E0000000000000000000000540000000000000546 +0000000000000000001C000307410F450FC00FA0000010110000104A10991073000011E2000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000107C101A115210EC11D21176 +000012700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000126911DB12601232000012A811CB11471073106E1299107C0000124B00000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000124D120B00001255114D100A00000000 +106A00000000000000000000000000001313130D130A000000000000130100000000000000000000131F132B00001334 +000000000000000000000000000000001325000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000013790000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000001361135B135400000000000013C60000 +0000000000000000137313810000139C0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000013D013CD0000000000000000000000000000000013160000000013660000000000000000 +0000000000000000000000000000000013481304134B130700000000135E13100000000013E213DD13691319136E131C +0000000013761322137C1328138C132E0000000013EA13E513BD134313991331139F133713A2133A13AD133D00000000 +13B6134000000000000000000000000000000000000000000000000013ED000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000149414911497183A00001875 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000149A00001906183D +000018BC00000000000000000000000000001918000018FD000000000000000000000000000000000000000000000000 +000000001915000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +192D00000000000000000000000000001936000000000000000019390000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +191E191B19241921192A1927193319300000000000000000000000000000000000000000194500000000194800000000 +000000000000000000000000000000000000000000000000193F193C1942000000000000000000000000000000000000 +000000000000000000000000000000000000000019570000000000000000195A00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +194B00001951194E00000000000019540000000000000000000000000000000000001966196300000000196900000000 +0000000000000000000000000000000000000000000000001960195D0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000196C0000000000000000000000000000000000000000 +00000000000000000000000000000000000000001975196F000019720000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000001978000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000197B000000000000000019850000 +000019881981197E00000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000001991198B0000198E0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000001994199A19970000199E00000000000000000000000000000000 +000000000000000000000000000000000000000019A10000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000019AA00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000019A719A40000000000000000000000000000000000000000 +0000000000000000000019AD000000000000000000000000000000000000000000000000000000000000000000000000 +0000000019B200000000000000000000000000000000000019B500000000000000000000000019B80000000019BB0000 +0000000000000000000019BE000000000000000000000000000000000000000019AF0000000000000000000000000000 +0000000019C1000019C4000019DC19E019E319E700000000000000000000000019C70000000000000000000000000000 +000000000000000000000000000000000000000019CD00000000000000000000000000000000000019D0000000000000 +00000000000019D30000000019D600000000000000000000000019D90000000000000000000000000000000000000000 +19CA0000000000000000000000000000000000000000000000000000000019EA00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000019ED00000000 +00000000000000000000000000001AE300001AE600001AE900001AEC00001AEF0000000000001AF20000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000001AF500001AF80000000000001AFE1AFB1B0100000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000E580568000005D5062905E606870E7C06CF06AC071A0607 +07230734000007810E8B07A7076D06AF056B0890069207730E910E8F093A1B040A800A310EA30EA106020EA50B7C0000 +0E7805D30E97078A1B081B060BA60CD61B0C0A27086D0EC911471B0E114B1149129B12990A140AE3086D0A2711491147 +1299124D0000129B00000000000000000000000000000000000000000000000000001388000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000E9300000E9909A30EA50E6B0EA90ADC0EB50EAD0EBD0EBB1B100EBF0EC50F140F161B120ECB0ECD0ED10ECF +0ED50ED30EEB0EDB0E800EED0EF50EF30EF71B0A06110EF90F030F0111CB0F050A0A05CB0A1605DA0A1905DD0A1C05E0 +0A4D05FB0A6E06170A74061D0A7D06260A7706200A7A06230AA8064A0AAC064E0AD606780AD9067B0ACF06710AF20684 +0B01069D0B1C06BD0B2506C60B1F06C00B2806C90B2B06CC0B7107120B5B06FC0BA807250BAE072B0BB407310BD50749 +0BD8074C0BE207560BDF07530C1507750C1807780C1B077B0C4707950C4D079B0C5607A40C5307A10C7A07C50C8207CD +0C8907D40C8D07D80CEF08380CF2083B0D0D08480D1908540D1C08570D23085E0D3808790D4208830D3108720D3E087F +0D4508860D51089D0D5A08A30D6608AF0D6308AC0DC4090D0DCD09160DCA09130D7708C00D7E08C70DDE09270DE1092A +0DE6093C0DE9093F0DF209480DEF09450DF8094B0E0409570E07095A0E1B096E0E2F097F0E3809880E3B098B0D540B2E +0E240DF50D3809A9000000000000000009FF05C009EC05AD09B9057A09B5057609C1058209BD057E0A0205C309D20593 +09CE058F09DA059B09D605970A0605C70AC506670AB9065B0AA206440A9606380A9206340A9E06400A9A063C0AC8066A +0B5F07000B6B070C0CC808130CA207ED0C6B07B60C6707B20C7307BE0C6F07BA0CCB08160CB808030CB407FF0CC0080B +0CBC08070CC4080F0DC1090A0D9808E10DB108FA0DAD08F60DB909020DB508FE0DBD09060E0C095F0E2709770E210974 +0E150968000000000000000000000000111B10F9111E10FC112711051130110E0F700F4E0F730F510F7C0F5A0F850F63 +11601155116311581167115C000000000FAE0FA30FB10FA60FB50FAA00000000119F117D11A2118011AB118911B41192 +0FE50FC30FE80FC60FF10FCF0FFA0FD811F911EA11FC11ED120011F1120411F5102C101D102F10201033102410371028 +12401235124312381247123C000000001058104D105B1050105F10540000000012871278128A127B128E127F12921283 +107F00001082000010860000108A000012D112AF12D412B212DD12BB12E612C410BE109C10C1109F10CA10A810D310B1 +10EC10E51152114F1176116F11D211CF1232122F1260125D12A812A1000000001139111711221100112B110911341112 +0F8E0F6C0F770F550F800F5E0F890F6711BD119B11A6118411AF118D11B8119610030FE10FEC0FCA0FF50FD30FFE0FDC +12EF12CD12D812B612E112BF12EA12C810DC10BA10C510A310CE10AC10D710B510F310F6114410E8000010EF1140113D +0F480F4B0F450F42002A0F92002A11CD0020005111C811720000117911C411C10FA00F9D0FC00FBD002D100700350031 +11D511D811E211DE0000000011E61208101410171011100E003C000000440040126312661270126C1252124F12741296 +1076107910731070001810670998001C0000000012FA12A4000012AB12F612F3104A104710991096000310E000000039 +00010001000100010001000100010001000100010000000100000000000000001B1600000000000000000000004E0000 +00000000000000000000000000000000000000000000000002FC02FA000002FF00000000000000000000000000010000 +000000001B1C000000001B1F1B2B1B2800000000000000000000008F0000000C00000000000000000000000005630000 +009205600000000000000000000000000000000000000000000000001B23000000000000000000000000000000010000 +00000000000000000000000000000000000000000000000000000000000000000AE30305000000000374036503920383 +03B003A11B5A02F400A105440B3E00A503140305030F0343037403650392038303B003A11B5A02F400A10544000000A5 +0A8006920B44078A0B100EA10A2B0B7C0B3E05D308430CD600000BA60000000000000000000000000000000000000000 +000008420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +09A509A10E5005E30A2100000E7E0A250E53000006AC060206AC06AC0E740B1006CF06CF0A2B07340781000000000789 +06AF0000076D083E076D076D00000000089208660000089A0000060A0000077F0000060A05B0071A05E305D50A800000 +067E06290723000013FF078A1415140D0AE3141A068000001149124B10630F9700001B580000000005E600000A800A31 +073E0AE300000000000000000000000003E203DA03CA03C103D204550498045903D604CF03DE04E704EB049C03BE0511 +06D106CF06DE06D4091B06B20922091E068206E10953095005E30734072305E60B330AE30B400B360DD2086D0DD90DD5 +0B440B430E000DFD09A30A2B05D30A3100000000000000000000000000000000030D0000000000000000000000000000 +00000000000000000000000000000000000000001B3A1B33000000000000000000000000000000000000000000000000 +00000000000000000000000000001B3F0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000001B4200001B451B4800000000000000000000000000000000 +00000000000000000000000000000000000000000000000000001B4D000000001B5200000000000000001B5500000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000001B5C00001B5F +00000000000000001B651B621B6E000000001B7100000000000000000000000000000000000000000000000000000000 +1B7500000000000000001B781B7B00001B7E000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000055600001B84000000000000000000000000000000001B810000055B054A +1B8A1B87000000001B901B8D000000001B961B930000000000000000000000001B9C1B99000000001BA81BA500000000 +1BAE1BAB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000001BBA1BB71BC01BBD00000000000000000000000000000000 +000000000000000000000000000000001BA21B9F1BB41BB10000000000000000000000001BC61BC31BCC1BC900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1BE4000000001BE600000000000000000000000000000000000000000000000000000000000000000000000000000000 +034303140365030F0383037403A10392031C03B00342032F036403550382037303A0039103F703AF00D900A300E600E2 +00EE00EA00F600F200A700FA00B100AC00BB00B600C500C000CF00CA00DD00D403460319036803590386037703A40395 +031F03B303450332036703580385037603A3039403FA03B2016A01660172016E017A01760182017E018A01860192018E +019A019601A2019E01AA01A601B201AE01BA01B601C201BE01CA01C605D5056805E605E3067E062906AC0687060706CF +0734071A0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A800B100602 +073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE406110695000003050000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001B69000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000054F054200000552 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000001BD90000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000006B2073E00000000 +000000000000000000000000000000000000000000000000000000001BDE000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000232E000000000000000000000000000000000000 +000000000000000000000000000000000000000027640000000000000000000000000000000000000000000000000000 +1FAA1F981FB81FB01FC21FBC1FCA1FC61FFD1FD0201120092021201920392029203D203B206B205720772073207F2079 +208F208D209D209B20A920A1210120F7212B21212131212F214A213921662160217C21762180217E218E218C21AA21A4 +21B221AE21C121BA21DB21C521E121DD21E721E321F321EB223D220122492247228B228922972295229F229B032522A3 +032922C3231222D523202318232C232623322330233623342394233823BE23B823C223C023C823C423D423CA23E623E2 +24082406240E240C241424122428242624382436243C243A24582446245C245A248E246E24A0249024AC24A824CE24BC +24F424F0250424FE250C25082510250E251E251C2530252C253625342540253C25442542254A254825A4259A25C025BE +25DA25C425E225DE260425E6260A2606260E260C262626242634262A26442636264A2648266C265C267826762692267C +269C269426B426AE26C826BC26CE26CC26D226D026DA26D826EC26DE26F026EE26FE26FC270C27022710270E27162714 +271A27182724271C27322730273A2738273E273C27442742274C274627542750275A2756275E275C2766276200000000 +000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000001BF82081207F000020830000000000000000 +00000000000000000000000000000000000000000000000000001C2D00001C3000001C3300001C3600001C3900001C3C +00001C3F00001C4200001C4500001C4800001C4B00001C4E1C5100001C5400001C570000000000000000000000000000 +1C5D1C5A1C60000000001C631C691C661C6C000000001C6F1C781C750000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000001C2A0000000000000000008700000000008A1C7B1C82 +00000000000000000000000000000000000000000000000000001CD500001CF200001CA500001D4100001D4A00001D5E +00001D6E00001D7900001D7E00001D8B00001D9000001D9A1DA100001DA600001CBF0000000000000000000000000000 +1DD51DCC1DEA000000001DF11E101E061E25000000001E2D1D591E500000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000001CB01EF300001F011EFC00001F06000000001D501F0F +000000000000000000000000000000000000000000000000000000000000000019EF00001ABB19F41ABD19F619FB1ABF +1A021A001AC31AC11AC71AC51ACB1AC91A071A511A111A0C1A131A5B1A1A1A181A2C1A221A391A2E1A431A3E19F21A48 +1A851A831A891A871A8D1A8B1A371A8F1A951A931A991A971A9D1A201AA11A9F1AA51AA31AA91A2A1A4D1A7F1ACD1A4F +1AD11ACF1AD51AD31AD91AD71ADB1A531A551ADD1A591A571A5F1A5D1A631A611A671A651A6B1A691A6F1A6D1A731A71 +1A771A751AE11ADF1A7B1A791AAB1A7D1AAF1AAD1AB31AB11AB71AB500001AB9000000001FC61F9820F91F9E1FAC1FA0 +24161FA21FA61FBC213E1F9A1FD0210301D701CE01E901E001FB01F2020D0204023302250245023C0257024E01DB01D2 +01ED01E401FF01F6021102080237022902490240025B02520216022E0000021E0270026002A002680288027402840264 +0290026C02C402B002B802C002A402EC02BC02AC02D002B402C8029802D402E40278028C02A8029C027C02CC029402E8 +028002D802E002DC21C320D324B022950000000000000000000000000000000004060831041C04110432042704400439 +044E04470475046E047F047C0485048219F619EF1A0219FB1A0C1A071A1A1A131A2E1A221A3E1A391A481A4319F819F1 +1A0419FD1A0E1A091A1C1A151A301A241A401A3B1A4A1A451A271A3300001A1F1FC61F9820F91F9E20131FC820111F9C +207F1FBE2394032922D523382101267C22ED032522F222CD23CE20B9247C26102494205D214A241A1FFB265423482091 +1FDD26E0213C20251FAC1FA021AC1FA2207B20B32164216A1FDB24422089261A04882135048E048B04B1049104B704B4 +04BD04BA04C304C004C904C604E404CC034E033B04D604A3050304F2052905180327053A034D033A0A8506B407390A82 +1CA01C871CB91CAE1CD31CC91D221CF01D481D3F1D6C1D5C1D7C1CCD1D8E1D891D9F1CAA1C8D1DA41DBE1D551D3D1DC0 +1DCA1DBC1E041DE81E4E1E231E8B1CE01E9E1CD11EB31EAF1EC81EC01CE41ECA1EE31C9C1EF11D0C1EFF1EFA1FD81F04 +1C8F1C891C9A1C941CA81CA21CBB1CB31CCB1CC21CE21CCF1CEB1CE61CDD1CD81CFA1CF51CFF1D061D0E1D0B1D1C1D15 +1D2C1D101D3A1D331D531D441D611D571D711D661D851D811DA91D931D301DB21DC61DBB1DD81DE41DCF1DDF1DFB1DF4 +1DED1E001E1A1E131E1F1E091E301E441E4A1E341E3E1E391E5B1E281E671E531E6A1E611E741E6E1E7D1E791E851E81 +1E921E8D1EA01E951D171EA41EBA1EB51ECE1EC21ED81ED31EE51EDD1D1E1EE8033F031103610352037F0370039D038E +03BB03AC033E032B03600351037E036F039C038D03BA03AB040D0402042304180B12042E056A0A560C5B0A120A5C0CE9 +0A630A5F21BC06DB213B22B222EF22AB0C290CDD0BED1211071C0B7E0689075B0B8F0A290C2C0CE0121D121406010BF9 +0B81068D068C0764122008960A590C000AEF0B9712230C380A330C030C060B9A0A370A360C0A0B9D0A3B0A3A0C1E0BA1 +06910C2207680B850CF906900D030CFD0C3B0CEC0C1212260C2F0CE30BF01217076F0B890C320CE60BF3121A07720B8C +077E0BB705D7099C0A300A2D05E805FF06940A5306AE0B16071F0B3D0BA507220BC20BBF0BC90BC50BFC0BF608230C0E +08260CD80D28082E0939086C05D1092D034A0337036C035D038A037B03A80399032303B703490336036B035C0389037A +03A7039803FE03B604140409042A041F043C0435044A0443047104510AF7047800000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000013B913B200000000 +00000000000000000000000000000000000000000000000000000000000000000000276E000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000067E05E30000083E000000000E7A0E7200000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000002772276C27740EC1 +000000000000000000000000000000000EFB000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000022C52608261C26361FAE2378276220AB2144276220DD267C2239214224FC2434 +25B62598265A25D0234C230623EE23A22670257C1FC0270623102095259623B42198272E258E2388225325D825BC252A +22CF21D123DA23581FE326602065202F230C2287244423B2259225082630259E271E26C42462272C24DE2482268A256E +25F2273221DF211F251A24BA246623CC26C026182186211D2362230824D6237C26A024EA252020632033203524E02498 +26A4257A2255260025F8230621701FB423E4220B207524241FEB246A1FA421FD22932342209F24D4244A211525EA257E +26482328225D233E226D255A1FCE24222031200F24CA22F625F025462069267A214A20C322A121D9246C238A270A2698 +2740273422C120572642231E222D21BF2283223B23A8238224922400251624E42582263A268C264E2059204323A020CD +25EA25C6220721CF2324226923DE24B820FB1FD621A2217023EC220D250223FA267E251226C626BE1FE526E42674248C +221926B21FF71FC42182217223062299243223AE2658258822B9275E2055269E22E522DF23702354242023F224D22460 +201326EA26A6224321941FEF263C2364221D21F523E422E9204726AA218A20BB22D722AE234622FC242A23F025C824F8 +267825CE207D26B820BD2372240223B026AC259027362722236022E324A8252E24C024AE239C23D81FD225FE20492562 +21C7204124C62257234E2168264022BF26A225C021D525DE20E91FFF0000000000002113000022B720370000243E23DC +247E2470248A248024C226CA0000250400002594000025F626500000000026660000000026F626F4272A26F826B02662 +1FF91FE7206120032087206720EF20E1211120F3218821172213218C222B2227228D223722BB22A5235A22F823802368 +23BA23AA246423F4247622F224782474247C247A2488248624A4249A24E424B224EC24E8250A24F6254C25322580254C +25E025D425FC25FA2620261E2650264C26DC26BA220F26E8253E283300000000202D1FA81FE1200D20172001206D205F +20D720E120ED20DF211B211321462140215C215421D721D321FF21EF22232217222B221B2237222522712245227B2277 +22B7228F22D122CF232022DB235423282376237A238E2380245623AA23D623BC23FC23DC241C240A2430242E2440243E +245224482468245024B224A624DA24BE24F224E42564250A25B2257825DC25D625EC25E025EE25F625F825FA25FC25F4 +262026022656263E2682267226BA26A826D426CA26E226DC271226E828092762281B28071F501F3C284F1F5228912861 +276027580000000000000000000000000AE20ADE0AE10AE60D2B0AE500000D2B00000000000000000000000000000000 +0000000013F9000013F313F013F613FC000000000000000014300000147D000013FF1451141F141A140B143914621446 +02F4147814751472146E146A14041401140F1407141C1417142714210000142A1433142D143B14360000144300001448 +144E144B1453000000001456145F145C146714641424147A143E1412140A145918C318C318C918C918C918C918CB18CB +18CB18CB18CF18CF18CF18CF18C718C718C718C718CD18CD18CD18CD18C518C518C518C518E718E718E718E718E918E9 +18E918E918D318D318D318D318D118D118D118D118D518D518D518D518D718D718D718D718DD18DD18DB18DB18DF18DF +18D918D918E318E318E118E118EB18EB18EB18EB18EF18EF18EF18EF18F318F318F318F318F118F118F118F118F518F5 +18F718F718F718F71918191818FB18FB18FB18FB18F918F918F918F9163C163C19151915000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000018ED000018ED18ED18AE18ED18AA18AE18B218AA190618B2190D190D19001900190B190B18B618B618B618B6 +14C014C01878187818B818B8189C189C18AC18AC18A818A818B018B018B418B418A018B418A018A0190F190F190F190F +1880187C18A01890149F18A414A914A214BF14B614C914C214E314D8151514F8151D1518152F15261537153214DC14CD +157C14E014E7157F15B015A515C515B7163E160D1650164D1665165B16731670168F168A16B2162016EA16B516F016ED +16FE16F717061701171C170D1724171F172A17271730172D173E173317551741177317641624163714FC178B15041500 +150815D117D8150C17FA17EB18141803181C1817182A181F1847182D1855184E186F185E158F1872184215990064005D +0072006B00800079188C18881894189018A418A014B3148614B914B614C214BF14F514F2150F14F81518151515231520 +152915261532152F170116FE171F171C17301724173E173316371741178B162415D11790180017FD180E180318171814 +18581842185E185B186F1869187C1872188418801898189014A2149F14B614A914C914BC14E314D8151214F815371526 +14DC14CD157C14E015A514E715B715B0160D15C5163E16181650164D1665165B168A16701620168F16B516B216ED16EA +16F716F0170D1706172A17271730172D1755173317731764148B1637150014FC15D1150417EB17D8180317FA181C1811 +1830181F184E1847185E18551890169814B6189814F814BC1526151215C5152C15F715D4173016021637173318111803 +1698185E16D716D0168216DE16AA168516C416AD15D716C7160515DA153B160814D114A614EB14D5164514AD16681648 +15DF166B15F115E615F415F7161B15C21682166216AA168516C416AD15D716C7160515DA153B160814D114A614EB14D5 +164514AD1668164815DF166B15F115E615F415F7161B15C215DF166215F115E615D415F71673160215B015A515DF15B7 +15F115E6168A1673148E148E000000000000000000000000000000000000000000000000000000000000000000000000 +14DB14CC14DF14DB14FB14E6150314FF154E154E156C157015A815B315CC15AC15C815CC15D015D01610161015E91641 +15E215E915FA15FA15FE15FE165E16531676165E167A16761692167E169E169E16B816A216BC16C016F316F317141710 +176F17671758176B17761758177D177617A9177D17B617AD179E179617C117BD000000001822179A17EE182617DF17F2 +17E317DF1806180A1861186114D414AC14EE14D0150B14EA155615071552153A161415BA165715ED17811760184A1851 +17CC186517F6171817671710173A16A617C517DB1736175C17DB175C1565153E16FA17A2173614A51641169217E715BE +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000001709163A14841489161E17B116961594 +16231635154216270000159C000000000000000000000000000000000000000000000000000000000000000000000000 +1BE002F605401BE2008D05461C26009302FF1C2800000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001B1A02FC09961B1800A109960E3E00A51BFA0E421BF41BFE1BE81BF61BE41BEA +1BEC1BE61BF01BEE00001BF2098E0000000C0992000C000C0996000C099609961BE002F6000002FA05400546008D0093 +00A11B1A0E3E00A51BFA0E4200971BFE02F2009D02F802F40559054800000544009909900566009B0000000000000000 +16CA00570000005A0000006116CD006816D4006F16DB007616E2007D16E500841491148014941491183A14941497183A +187514971875187514821875149D1482149D149D14C5149D14C714C514C714C7151B14C7151B151B14A0151B14A014A0 +14A314A014A314A314AA14A314AA14AA158B14AA158D158B1487158D14B4148715A314B415A315A315DD15A315DD15DD +160B15DD160B160B164B160B164B164B166E164B166E166E1688166E16881688168D1688168D168D16B0168D16B016B0 +16E816B016E816E8170416E8170417041722170417221722159717221597159714B7159714B714B714BA14B714BA14BA +148C14BA148C148C1833148C14C0183314A714C014A714A7174914A7174D17491751174D174617510000174600000000 +008D000000970095009B0099009F009D00A500A102F402F202F802F6030302FA03140305030F03430374036503920383 +03B003A10546054005440548009305590568056605E305D5062905E60687067E06CF06AC071A06070723073407A70781 +083E06AF0861076D056B0890077306B2095D0682098E060A09920990099609940692099809A3093A0A800A3106020ADC +0AE30B100B7C073E05D30A2B078A0B3E05D80CD608430A140A270BA60DE4086D06950B440E3E06110E420E401BD50E44 +1BE21BD71BEE1BEC1F0B1BE01C851F041CAC1C9E1CC71CB71EBE1EB11D9D1EC61C871CC51CAE1CA01CC91CB91CF01CD3 +1D3F1D221D5C1D481CCD1D6C1D891D7C1CAA1D8E1DA41D9F1D551C8D1DC01DBE1DBC1D3D1DE81DCA1E231E041CE01E4E +1CD11E8B1EAF1E9E1EC01EB31ECA1EC81C9C1CE41D0C1EE31CB51EF1008B008819EF1A7F1ABB19F41ABD19F619FB1ABF +1A021A001AC31AC11AC71AC51ACB1AC91A071A511A111A0C1A131A5B1A1A1A181A2C1A221A391A2E1A431A3E00001A48 +000000001A8319F21A871A851A8B1A89000000001A8F1A8D1A931A371A971A95000000001A201A991A9F1A9D1AA31AA1 +000000001A2A1AA500001AA9000000000E480E4600090E4E0E4A0E4C00001B2F1B311BCF1B381B361BD11B3D00001BD3 +00000000000000000000000000000000000000000000000000000000000000000F3300000E630F350E950F0E0F1C0000 +0F2027760E9B0F1E1B140E9D0EA70E9F0EB30F280EAB0EAF0E740F100EB90F120F2A0EEF0EC30F2C277027D127D30EC7 +27D50EFD0ED70E6D05D80ED927D70EDF0EE50EE30F260EE727780F220EF10F2400001BDC0F180EFF0F0C0F1A0E870E85 +27D90E89000027DB00000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000277A0000277D0000000000000000000000000000000000000000 +000000002780000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000002786278300000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000278900000000278C00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000279200000000278F00002795 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000279B279800000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000279E00000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027A427A1 +27AB27A727B327AF000027B7000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000027BB000027BE27C627C227C9000027CD000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +05D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773 +060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A27 +0B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E08900861 +06B2056B06820773060A095D093A06920A3109A30ADC0A8000000602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8 +0BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7 +076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D3 +0CD6078A0A1405D80BA60843086D0A270B440DE4061106950000056805E605E30000000000000687060700000000071A +0781000006AF07A70000083E0890086106B2056B06820773060A095D093A06920A3109A30ADC00000B100000073E0AE3 +0A2B0B7C0B3E05D30CD600000A1405D80BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687 +060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A80 +0B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE40611069505D5056805E60000 +067E062900000687060700000734071A0781072306AF07A70000083E0890086106B2056B068207730000095D093A0692 +0A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE406110695 +05D5056805E60000067E062900000687060706CF0734071A00000723000007A7000000000890086106B2056B06820773 +0000095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A27 +0B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E08900861 +06B2056B06820773060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8 +0BA60843086D0A270B440DE4061106950781072306AF07A7076D083E0890086106B2056B06820773060A095D093A0692 +0A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8060A095D093A06920A3109A30ADC0A80 +0B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE40611069505D5056805E605E3 +067E062906AC0687060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A0692 +0A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE406110695 +05D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A70B440DE4061106950E8D0E7600000000 +0F950F400F990F970FB90F9B100A0FBB103B100C103F103D1043104110631045100A1065106C106A108E106E10921090 +1B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D122B1229124B122D1255124D125912571299125B +129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F970FB90F9B100A0FBB103B100C103F103D10431041 +10631045100A1065106C106A108E106E109210901B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D +122B1229124B122D1255124D125912571299125B129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F97 +0FB90F9B100A0FBB103B100C103F103D1043104110631045100A1065106C106A108E106E109210901B50077F114710E3 +114B1149116B114D11CB116D120B11CD120F120D122B1229124B122D1255124D125912571299125B129D129B1B4B129F +11CB114D1299120B124B124D0F950F400F990F970FB90F9B100A0FBB103B100C103F103D1043104110631045100A1065 +106C106A108E106E109210901B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D122B1229124B122D +1255124D125912571299125B129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F970FB90F9B100A0FBB +103B100C103F103D1043104110631045100A1065106C106A108E106E109210901B50077F114710E3114B1149116B114D +11CB116D120B11CD120F120D122B1229124B122D1255124D125912571299125B129D129B1B4B129F11CB114D1299120B +124B124D12FF12FD0000000003140305030F0343037403650392038303B003A103140305030F03430374036503920383 +03B003A103140305030F0343037403650392038303B003A103140305030F0343037403650392038303B003A103140305 +030F0343037403650392038303B003A10000000000000000000000000000000000000000000000000000000000000000 +134E13461352135013591357136C1364137F137113861384138F138A139313911397139513A713A513AB13A913B413B0 +13C013BB13E0276A13C913C413D713E8134613DB1350134E13571352136413591371136C1384137F138F138A13971393 +13A713A513AB13A913B213B013D313B413C213C413D513CB13D927680000000000000000000000000000000000000000 +00000000000000000000000000000000149D1482158B14A01833000014A314B414A7166E1597172214BA14B7168D15A3 +160B16E81487170414C715DD14AA151B164B158D16B0168818F518BF18C118E5149D0000000014A00000148C14A30000 +14A700001597172214BA14B7168D15A3160B16E80000170414C715DD14AA151B164B000016B000000000000000000000 +00000000000014A00000000014A3000014A700001597000014BA0000168D15A3160B000000001704000015DD14AA0000 +164B000016B0000018F5000018C10000149D0000000014A00000148C14A3000014A7166E0000172214BA14B7168D15A3 +160B16E80000170414C715DD14AA151B164B000016B01688000018BF000018E5149D1482158B14A01833148C14A314B4 +14A7166E1597000014BA14B7168D15A3160B16E81487170414C715DD14AA151B164B158D16B016880000000000000000 +149D0000158B14A01833000014A314B414A7166E1597000014BA14B7168D15A3160B16E81487170414C715DD14AA151B +164B158D16B0168800000000000000000307030A03F1031604AB046804FA04DE0520050B000005310000000000000000 +010200FE010A01060112010E011A01160122011E012A01260132012E013A01360142013E014A01460152014E015A0156 +0162015E05E31BFC05E5076D0000093605D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7 +076D083E0890086106B2056B06820773060A095D076F06B1086908630933082A00000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000761075E0000076C00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000060600000000000000000000000000000000000000000000000000000000 +1D4D1C7200001D5C000000000000000000000000000000000000000000000000216222491DA620A521331FC6213E25E4 +22B01FCC229923A421F7204F229D201B24D820452612240E20C12125224F237E1F98226526521F9E1FAC21AC225F20B3 +224B262624A22484236E20B7032922CD20512418266E20E700000000000000001C001C181C0C1C041C101C1C1C081C20 +00001C1400000000000000000000000020AF21F900000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000003140305030F03430374036503920383 +03B003A10000000000000000000000001FB21FB627DD1FBA1FE71FDF1FED1FE91FF31FF11FF51FF927E51F1220052003 +201520071F1427DF201B200B202327E31FD42027202D202B203B28A11F18203F204D204B20532051205F1F1A20672061 +206F206D20752071208720852093208B2099209720992099239627EB20A720A320AD27ED20B520B120BF20C920C720C5 +20CF20CB20D520D120DB20D920DF20DB20E520E320FD20EB20FF20EF20F520F121232041210921072105210B210D210F +27EF2119212921272133212D2148213727F327F12150214E214C21521F1C2156215A1F1E215E215E216C27F52170216E +27F72174217A2178217E21E921841F202192218C27FB219027FD2196219A219C21A6219E1F2221A821B421B021B821B6 +27FF1F2421C91F2621CD21CB28B521D1280321DD2538280321E521E528111F2821ED28651F2A21F1220321FB22092205 +1F2E221122131F2C221528052221221F22212223222B2229222F22332235223122392237224121BD2251224D22632259 +2261280B2267225B2275226B2279280D226F2273227D1F30228522811F32227F2291228D22A7280F22B522C722BB1F38 +1F341F36201F201D22BD22C91F6A252222D122CF22DD22D3281922D922E71F3A22F422E1281D22F822EB22FA1F3C22FE +23022300230A2304230E281F23141F3E23162821231C1F40232823222823232A282527F92827233A23442340234A233C +235A235223562354235E235C23502829236C236A23761F42282B237423842366282F282D23902386238C238E23921F44 +2398239A27E1239E283123A6283523AC23BC23B6283723C623D223D0283B283923E823E023EA1F461F481F4823F823F6 +23FE23FC1F4A2404283D2410283F241E280124242841242C284528431F4E1F4C28492448284B2847244C284D244E244E +1F5224521F54245428511F562462245E1F582468247A2853285728552496248A249A1F5A249E249C285B285924AA285B +285D1F5C24B624B4285F1F5E1F6024C424C824CC286324D01F6224DC24E624E21F6424EE28692867286B1F66286D24FA +25062500286F250A25142871251828731F6828132526252425281F6C2875215828152877253828172646253A25501F6E +2552254E2554205B255825562879255C255E255A256A2568256C2560258025762570256625742572287F287B1F70287D +258625842887258A2881258C1F741F7228852883259C1F7625A0259E25A825A225AC25A625B225AA25B025AE1F7825B4 +25BA25B825C21F7A288925C425CC25CA25D21F7C288B1F161F7E288D25E81F80260225F4288F260A2616261426282622 +27E72893262C262E27E92632263E2638289728952664265E289926682680266A26882686268E2684289B26901F822696 +289D269A26B61F8426C221A028A3289F1F881F8628A526D628A71F8A26E226E228A926E61F8C26F2270026FA27082704 +28AB1F8E272027121F90272627281F921F9428AD28B128AF273A28B327441F96274A27482752274E28B7275600000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //12544 bytes -enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x40, 0x440], [ 0x100, 0x800, 0x1000], [ 0x2020100, 0x3020202, 0x2020204, 0x2050202, 0x2020202, 0x6020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x40003, 0x60005, 0x70000, 0x90008, 0xb000a, 0x0, 0x0, 0x0, 0x0, 0xd000c, 0xf000e, 0x10, 0x120011, 0x140013, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x170000, 0x0, 0x0, 0x18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x190000, 0x1a, 0x0, 0x1b, 0x1c0000, 0x1d, 0x0, 0x0, 0x0, 0x1e, 0x1f, 0x20, 0x0, 0x21, 0x0, 0x22, 0x0, 0x23, 0x0, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x0, 0x290000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b002a, 0x2c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e002d, 0x30002f, 0x320031, 0x340033, 0x360035, 0x380037, 0x3a0039, 0x3c003b, 0x3d, 0x0, 0x0, 0x0, 0x3e0000, 0x0, 0x40003f, 0x41, 0x430042, 0x450044, 0x470046, 0x480000, 0x490000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c004b, 0x4e004d, 0x50004f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x520051, 0x540053, 0x560055, 0x580057, 0x5a0059, 0x5c005b, 0x5e005d, 0x5f, 0x610060, 0x62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x640063, 0x0, 0x650000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x66, 0x0, 0x0, 0x0, 0x0, 0x670000, 0x0, 0x0, 0x0, 0x680000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x690000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b006a, 0x6c0000, 0x6d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f006e, 0x710070, 0x730072, 0x750074, 0x770076, 0x790078, 0x7b007a, 0x7d007c, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf000c, 0x250012, 0x4f0045, 0x850000, 0xa1009e, 0xcb00a4, 0x121011e, 0x1330124, 0x1880000, 0x1a0019d, 0x1b601a3, 0x1da, 0x26d0000, 0x2730270, 0x2f30287, 0x0, 0x322031f, 0x3380325, 0x3620358, 0x3980000, 0x3b403b1, 0x3de03b7, 0x4370434, 0x446043a, 0x49c0000, 0x4b404b1, 0x4ca04b7, 0x4ee, 0x5840000, 0x58a0587, 0x60d059e, 0x61c0000, 0x33b0028, 0x33e002b, 0x380006d, 0x38c0079, 0x38f007c, 0x392007f, 0x3950082, 0x3a2008f, 0x0, 0x3cd00ba, 0x3d800c5, 0x3db00c8, 0x3fb00e8, 0x3e400d1, 0x40a00f7, 0x41000fd, 0x4130100, 0x4190106, 0x41c0109, 0x0, 0x43d0127, 0x440012a, 0x443012d, 0x45c0149, 0x130, 0x0, 0x462014f, 0x471015d, 0x1630000, 0x1700477, 0x1660484, 0x47a, 0x0, 0x1850000, 0x1940499, 0x18e04a8, 0x4a2, 0x0, 0x4d901c5, 0x4e401d0, 0x4f801e4, 0x0, 0x52f021b, 0x5450231, 0x5350221, 0x54b0237, 0x552023e, 0x5690255, 0x5580244, 0x57b0264, 0x572025b, 0x0, 0x58d0276, 0x594027d, 0x59b0284, 0x5b4029d, 0x5b702a0, 0x5e002c9, 0x5f502de, 0x61002f6, 0x30b0302, 0x3110628, 0x314062e, 0x631, 0x50401f0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2ac0000, 0x5c3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x560000, 0x13d0369, 0x1e70450, 0x2a304fb, 0x29205ba, 0x28e05a9, 0x29605a5, 0x28a05ad, 0x5a1, 0x35b0048, 0x3540041, 0x653064a, 0x0, 0x4160103, 0x46b0157, 0x522020e, 0x5250211, 0x65f065c, 0x465, 0x0, 0x40700f4, 0x0, 0x4960182, 0x3650052, 0x6500647, 0x656064d, 0x36c0059, 0x36f005c, 0x3e700d4, 0x3ea00d7, 0x4530140, 0x4560143, 0x4fe01ea, 0x50101ed, 0x5380224, 0x53b0227, 0x5bd02a6, 0x5c002a9, 0x5660252, 0x5780261, 0x0, 0x4250112, 0x0, 0x0, 0x0, 0x351003e, 0x3f400e1, 0x4f101dd, 0x4d101bd, 0x4e701d3, 0x4ea01d6, 0x61602fc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000d, 0x66b0000, 0x137, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x662, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x63d0000, 0x6450670, 0x6df06c3, 0x72c, 0x759, 0x7980778, 0x8d1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7810735, 0x84707e9, 0x8c10867, 0x92f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92808ca, 0x91f08fd, 0x95f, 0x0, 0x9b40000, 0x9b7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9cc09c6, 0x9c30000, 0x0, 0x9ba0000, 0x0, 0x0, 0x9d809e4, 0x9ed, 0x0, 0x0, 0x0, 0x0, 0x9de0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa200000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0e0a08, 0xa050000, 0x0, 0xa410000, 0x0, 0x0, 0xa1a0a26, 0xa2f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa470a44, 0x0, 0x0, 0x0, 0x0, 0x9cf0000, 0xa11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9ff09bd, 0xa0209c0, 0x0, 0xa0b09c9, 0x0, 0xa4d0a4a, 0xa1409d2, 0xa1709d5, 0x0, 0xa1d09db, 0xa2309e1, 0xa2909e7, 0x0, 0xa530a50, 0xa3e09fc, 0xa2c09ea, 0xa3209f0, 0xa3509f3, 0xa3809f6, 0x0, 0xa3b09f9, 0x0, 0x0, 0x0, 0x0, 0xac10abe, 0xac40ac7, 0xaca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xad3, 0xacd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xad00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xae80000, 0x0, 0x0, 0x0, 0xaf10000, 0x0, 0xaf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xad90ad6, 0xadf0adc, 0xae50ae2, 0xaee0aeb, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb000000, 0xb03, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xafa0af7, 0xafd0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb120000, 0x0, 0xb15, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb060000, 0xb0c0b09, 0x0, 0xb0f, 0x0, 0x0, 0x0, 0x0, 0xb21, 0xb1e0000, 0xb24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb1b0b18, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb27, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb300b2a, 0xb2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb33, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb36, 0x0, 0x0, 0xb400000, 0xb43, 0xb3c0b39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4c0b46, 0xb49, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4f, 0xb550b52, 0xb59, 0x0, 0xb5f0000, 0x0, 0x0, 0x0, 0x0, 0xb620000, 0x0, 0x0, 0xb65, 0x0, 0xb680000, 0x0, 0x0, 0xb6b, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb5c0000, 0x0, 0x0, 0x0, 0x0, 0xb6e0000, 0xb710000, 0xb89, 0xb8c, 0x0, 0x0, 0x0, 0xb740000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb7a0000, 0x0, 0x0, 0x0, 0x0, 0xb7d0000, 0x0, 0x0, 0xb80, 0x0, 0xb830000, 0x0, 0x0, 0xb86, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb770000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb8f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb92, 0xb95, 0xb98, 0xb9b, 0xb9e, 0x0, 0xba1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba40000, 0xba70000, 0x0, 0xbad0baa, 0xbb00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37d006a, 0x3830070, 0x3860073, 0x3890076, 0x39b0088, 0x39f008c, 0x3a50092, 0x3ae009b, 0x3a80095, 0x3ab0098, 0x3d000bd, 0x3d400c1, 0x3fe00eb, 0x40100ee, 0x3f700e4, 0x40400f1, 0x40d00fa, 0x41f010c, 0x4280115, 0x422010f, 0x42b0118, 0x42e011b, 0x45f014c, 0x4490136, 0x4680154, 0x46e015a, 0x4740160, 0x47d0169, 0x480016c, 0x48a0176, 0x4870173, 0x48d0179, 0x490017c, 0x493017f, 0x49f018b, 0x4a50191, 0x4ae019a, 0x4ab0197, 0x4cd01b9, 0x4d501c1, 0x4dc01c8, 0x4e001cc, 0x5290215, 0x52c0218, 0x532021e, 0x53e022a, 0x541022d, 0x5480234, 0x5550241, 0x55f024b, 0x54e023a, 0x55b0247, 0x562024e, 0x56c0258, 0x575025e, 0x581026a, 0x57e0267, 0x5dd02c6, 0x5e602cf, 0x5e302cc, 0x5900279, 0x5970280, 0x5e902d2, 0x5ec02d5, 0x5ef02d8, 0x5f202db, 0x5fb02e4, 0x5f802e1, 0x60102e7, 0x60402ea, 0x60702ed, 0x61902ff, 0x62b030e, 0x6340317, 0x637031a, 0x56f0431, 0x62205fe, 0x6590000, 0x0, 0x0, 0x372005f, 0x35f004c, 0x32c0019, 0x3280015, 0x3340021, 0x330001d, 0x3750062, 0x3450032, 0x341002e, 0x34d003a, 0x3490036, 0x3790066, 0x3ed00da, 0x3e100ce, 0x3ca00b7, 0x3be00ab, 0x3ba00a7, 0x3c600b3, 0x3c200af, 0x3f000dd, 0x44d013a, 0x4590146, 0x51b0207, 0x4f501e1, 0x4be01aa, 0x4ba01a6, 0x4c601b2, 0x4c201ae, 0x51e020a, 0x50b01f7, 0x50701f3, 0x51301ff, 0x50f01fb, 0x5170203, 0x5da02c3, 0x5b1029a, 0x5ca02b3, 0x5c602af, 0x5d202bb, 0x5ce02b7, 0x5d602bf, 0x60a02f0, 0x6250308, 0x61f0305, 0x61302f9, 0x0, 0x0, 0x0, 0x81807f6, 0x81b07f9, 0x8240802, 0x82d080b, 0x69b0679, 0x69e067c, 0x6a70685, 0x6b0068e, 0x855084a, 0x858084d, 0x85c0851, 0x0, 0x6d106c6, 0x6d406c9, 0x6d806cd, 0x0, 0x890086e, 0x8930871, 0x89c087a, 0x8a50883, 0x70406e2, 0x70706e5, 0x71006ee, 0x71906f7, 0x8e808d9, 0x8eb08dc, 0x8ef08e0, 0x8f308e4, 0x7470738, 0x74a073b, 0x74e073f, 0x7520743, 0x90b0900, 0x90e0903, 0x9120907, 0x0, 0x767075c, 0x76a075f, 0x76e0763, 0x0, 0x9460937, 0x949093a, 0x94d093e, 0x9510942, 0x7840000, 0x7870000, 0x78b0000, 0x78f0000, 0x9880966, 0x98b0969, 0x9940972, 0x99d097b, 0x7bd079b, 0x7c0079e, 0x7c907a7, 0x7d207b0, 0x7e907e2, 0x8470844, 0x8670860, 0x8c108be, 0x8fd08fa, 0x91f091c, 0x95f0958, 0x0, 0x8360814, 0x81f07fd, 0x8280806, 0x831080f, 0x6b90697, 0x6a20680, 0x6ab0689, 0x6b40692, 0x8ae088c, 0x8970875, 0x8a0087e, 0x8a90887, 0x7220700, 0x70b06e9, 0x71406f2, 0x71d06fb, 0x9a60984, 0x98f096d, 0x9980976, 0x9a1097f, 0x7db07b9, 0x7c407a2, 0x7cd07ab, 0x7d607b4, 0x7f007f3, 0x84107e5, 0x7ec, 0x83d083a, 0x6730676, 0x670066d, 0x6bd, 0x8bc, 0x6400000, 0x8b90863, 0x86a, 0x8b508b2, 0x6c306c0, 0x6df06dc, 0xbb30726, 0xbb90bb6, 0x8c408c7, 0x8d108cd, 0x0, 0x8d508f7, 0x72f0732, 0x72c0729, 0xbbc0000, 0xbc20bbf, 0x9220925, 0x92f092b, 0x9190916, 0x9330955, 0x77b077e, 0x7780775, 0x63a0772, 0x31d063d, 0x0, 0x9b1095b, 0x962, 0x9ad09aa, 0x7590756, 0x7980795, 0x64307df, 0x0, 0xbc70bc5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x793, 0x0, 0x4f0152, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbcc0bc9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbcf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbd20000, 0xbd50bd8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbdb, 0x0, 0xbde0000, 0x0, 0xbe1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe4, 0xbe7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbea0000, 0x0, 0xbed, 0xbf00000, 0xbf30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xbf9, 0x0, 0x0, 0x0, 0x0, 0xbf60000, 0x90003, 0xbff0bfc, 0x0, 0xc050c02, 0x0, 0xc0b0c08, 0x0, 0x0, 0x0, 0xc110c0e, 0x0, 0xc1d0c1a, 0x0, 0xc230c20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc2f0c2c, 0xc350c32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc170c14, 0xc290c26, 0x0, 0x0, 0x0, 0xc3b0c38, 0xc410c3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc470000, 0xc49, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc44, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4e, 0xc51, 0xc54, 0xc57, 0xc5a, 0xc5d, 0xc60, 0xc63, 0xc66, 0xc69, 0xc6c, 0xc6f, 0xc720000, 0xc750000, 0xc780000, 0x0, 0x0, 0x0, 0xc7e0c7b, 0xc810000, 0xc84, 0xc8a0c87, 0xc8d0000, 0xc90, 0xc960c93, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4b, 0x0, 0x0, 0x0, 0x0, 0xc99, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc9f, 0xca2, 0xca5, 0xca8, 0xcab, 0xcae, 0xcb1, 0xcb4, 0xcb7, 0xcba, 0xcbd, 0xcc0, 0xcc30000, 0xcc60000, 0xcc90000, 0x0, 0x0, 0x0, 0xccf0ccc, 0xcd20000, 0xcd5, 0xcdb0cd8, 0xcde0000, 0xce1, 0xce70ce4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc9c, 0xcea0000, 0xcf00ced, 0xcf3, 0x0, 0xcf6, 0xfb71241, 0x124b125d, 0xd831043, 0x13270e29, 0xe991327, 0xe4f1293, 0xf550e97, 0x116710cd, 0x11fd11e3, 0x12791215, 0x10190feb, 0x109d1069, 0x128911c7, 0xd8d12f3, 0xff50e1d, 0x11e11079, 0xedb1309, 0x11d91051, 0xf65121d, 0x12031189, 0xfbd0eff, 0x108d1025, 0xd9d127d, 0xe050dd9, 0xff10f95, 0x10d31077, 0x11dd1171, 0x125911e7, 0x12fb12cf, 0x10e91307, 0x114d1107, 0x12a111b9, 0x122f130b, 0xf0b0e87, 0x117d112f, 0x10ed1083, 0x12cb1249, 0xecb0e85, 0x102f0fed, 0x11471047, 0x12b11159, 0x117f0e03, 0xddd0ddf, 0x114f1115, 0x12b511c5, 0xf67123d, 0x12350feb, 0xebb0d87, 0x10950f27, 0xe1110c1, 0xda510f1, 0xd7f0f1b, 0xf9d1011, 0xe231145, 0x10d70e7d, 0x122711c9, 0x126d1005, 0xf6f100d, 0xf7b11a5, 0xd9110bf, 0xddb0dc3, 0x113d0fdb, 0x122d1195, 0xe091291, 0xe9f0e37, 0xfa10f07, 0x10f31053, 0x12f712ab, 0x1313130d, 0xfb50df9, 0x12690ffd, 0xf490ef3, 0xf910f57, 0x106d104b, 0x111110af, 0x11791153, 0x11cd1261, 0x12a31271, 0xdfb0de9, 0x10670e41, 0x1227120b, 0xf230efd, 0x10030f77, 0x1091112d, 0xe670d97, 0xee50ebb, 0x109b0f29, 0x116b10a9, 0x12951175, 0x12d112c9, 0xd9f12dd, 0x128d110f, 0xf3512c1, 0xdb10d8f, 0xec70ebd, 0xfeb0f9f, 0x10cb1073, 0x127711d3, 0xfad1323, 0xdf712af, 0xfd10fcb, 0x103b1021, 0x10bd10a1, 0x114310e7, 0xdc512e3, 0x12b70f5d, 0xed70da9, 0x12631031, 0xf390f17, 0x10950fd5, 0xdeb12bb, 0xecf0e31, 0xfc30fa7, 0x10150fe1, 0x10c3109f, 0x120d1163, 0x128f1213, 0xe1312c5, 0xe33103d, 0x10b11075, 0x12bd11db, 0x130f12ff, 0x102d0fcf, 0x1121118b, 0x11331125, 0x1063108b, 0xd93123b, 0xded11ad, 0xef50de7, 0x11390f69, 0x101b0eb5, 0x12670fb3, 0x12b31205, 0xf031221, 0xe590db5, 0x0, 0xe7b, 0xfab, 0xde10000, 0x10cf108f, 0x110310f5, 0x110d1105, 0x113512d3, 0x116d, 0x11df, 0x1233, 0x12730000, 0x1283, 0x0, 0x12e912e7, 0x130512eb, 0x12bf127f, 0xdb30da1, 0xe010db9, 0xe170e07, 0xe5f0e53, 0xe790e63, 0xecd0e7f, 0xf2f0ed1, 0xf470f43, 0xf970f53, 0xfaf0fa3, 0x10270fdd, 0x10491035, 0x107d106f, 0x10eb10a3, 0x10fb10f7, 0x10fd10f9, 0x110110ff, 0x110b1109, 0x111d1117, 0x11531127, 0x115b1157, 0x11731161, 0x1197118d, 0x11cb1197, 0x12231219, 0x12391237, 0x124f124d, 0x1273126f, 0x12d912c7, 0xf2b12e1, 0x119313d6, 0x0, 0xdd70d81, 0xd9b0dc1, 0xdc90db7, 0xe0b0dff, 0xe490e53, 0xe5d0e51, 0xe830e7b, 0xe9b0e95, 0xeb10ea9, 0xf050f01, 0xf1d0f13, 0xf3f0f33, 0xf470f37, 0xf530f41, 0xf7f0f5f, 0xf890f85, 0xfab0f99, 0xfbf0fbd, 0xfff0fc7, 0x10211005, 0x10411045, 0x10571049, 0x10e3106f, 0x1089107f, 0x10ab108f, 0x10b910b5, 0x10c910c7, 0x10d110cf, 0x10df10d5, 0x10ef10dd, 0x1127111f, 0x11491131, 0x115f1153, 0x11af1173, 0x11f911c3, 0x121f121b, 0x12291223, 0x122b1233, 0x12351237, 0x12391231, 0x124f123f, 0x12751265, 0x1299128b, 0x12c712b9, 0x12d512d3, 0x12db12d9, 0x12f912e1, 0x13ac1327, 0x13be13aa, 0xd370d23, 0x13f20d39, 0x14341404, 0x13251321, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa7a0000, 0xabb0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xab50ab2, 0xaae0aaa, 0xa590a56, 0xa5f0a5c, 0xa680a65, 0xa710a6b, 0xa74, 0xa7d0a77, 0xa830a80, 0xa89, 0xa8c, 0xa920a8f, 0xa950000, 0xa98, 0xaa10a9e, 0xaa70aa4, 0xa6e0ab8, 0xa860a62, 0xa9b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1329, 0x132c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x132f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13351332, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13380000, 0x133b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13410000, 0x133e, 0x1344, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134a1347, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13531350, 0x135a1356, 0x1362135e, 0x1366, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x136a0000, 0x136d1375, 0x13711378, 0x137c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd850d89, 0x13800d8b, 0xda10d99, 0xda70da3, 0xdad0dab, 0xdaf0db3, 0x13880cf9, 0xdbb0db9, 0xdc70dbd, 0xcfb1382, 0xdcb0dbf, 0xdd11386, 0xd950dd3, 0xdd70dd5, 0xde31444, 0xcff0de5, 0xdf10def, 0xdf50df3, 0xdff0d01, 0xe070e01, 0xe0d0e0b, 0xe110e0f, 0xe170e15, 0xe1b0e19, 0xe210e1f, 0xe210e21, 0x105d138e, 0xe270e25, 0xe2b1390, 0xe2f0e2d, 0xe350e3d, 0xe3b0e39, 0xe430e3f, 0xe470e45, 0xe4d0e4b, 0xe510e4d, 0xe570e55, 0xe690e5b, 0xe6b0e5f, 0xe650e61, 0xe890de7, 0xe710e6f, 0xe6d0e73, 0xe750e77, 0x13920e81, 0xe8d0e8b, 0xe910e8f, 0xe9d0e93, 0x13961394, 0xea50ea3, 0xea10ea7, 0xd030eab, 0xeaf0d05, 0xeb30eb3, 0xeb71398, 0xebb0eb9, 0x139a0ebf, 0xec30ec1, 0xec50f0f, 0xec90d07, 0xed50ed1, 0x139e0ed3, 0x13a00ed9, 0xedd0edf, 0xee70ee1, 0xd090ee9, 0xeed0eeb, 0xef10eef, 0x13a20d0b, 0xef70d0d, 0xefb0ef9, 0x14580eff, 0x13a60f09, 0x118f13a6, 0xf0d0f0d, 0x13b40d0f, 0xf111408, 0xd110f15, 0xf1f0f19, 0xf250f21, 0xd150f2d, 0xf2f0d13, 0xf3113a8, 0xf3d0f3b, 0xf3d0f3f, 0xf470f45, 0xf4b0f4f, 0xf510f4d, 0xf550f53, 0xf5b0f59, 0xf630f61, 0xf730f6b, 0xf7113ae, 0xf750f6d, 0xf830f79, 0xf8713b0, 0xf7d0f81, 0xf8b0d17, 0xf930f8f, 0xd190f8d, 0xf9b0f97, 0xfa513b2, 0xfa90fb9, 0xfaf0d1f, 0xd1b0d1d, 0xdcf0dcd, 0xfb10fbb, 0xd511181, 0xfbf0fbd, 0xfc90fc1, 0x13bc0fc5, 0xfd30d21, 0xfd90fcd, 0x13c00fdd, 0xfd70fdf, 0xd230fe3, 0xfe70fe5, 0xfef0fe9, 0xff313c2, 0xff70d25, 0xff913c4, 0xffb0d27, 0x10051001, 0x13c61007, 0x13c8139c, 0x13ca1009, 0x1013100f, 0x1017100b, 0x1027101f, 0x10231021, 0x102b1029, 0x101d13cc, 0x10391037, 0x10410d29, 0x13ce103f, 0x104d1033, 0x13d213d0, 0x1059104f, 0x10551057, 0x105b0d2b, 0x105f1061, 0x13841065, 0x13d4106b, 0x13d81071, 0x107f107b, 0x13da1081, 0x10871085, 0x13de13dc, 0x10971093, 0x10990d2d, 0xd2f0d2f, 0x10a710a5, 0x10ad10ab, 0xd3110b3, 0x13e010b7, 0x13e210bb, 0x13a410c1, 0x13e410c5, 0x13e813e6, 0xd350d33, 0x13ec10d5, 0x13ee13ea, 0x10d913f0, 0x10db10db, 0xd3910df, 0xd3b10e1, 0x13f40d3d, 0x10e910e5, 0xd3f10ef, 0x10ff13f6, 0x13fa13f8, 0x1113110d, 0x11170d41, 0x111b1119, 0x13fe13fc, 0x112313fe, 0x14000d43, 0x112b1129, 0x14020d45, 0xd471137, 0x113b113f, 0x14061141, 0xd49114b, 0x11551151, 0xd4b115d, 0x140c140a, 0x140e0d4d, 0x14101165, 0x116f1169, 0x14121173, 0x11771414, 0x117b1416, 0xd4f13b6, 0x11851183, 0x11870d53, 0x14180ead, 0x13b8141a, 0x118f13ba, 0x126b1191, 0x119b0d55, 0x119d1199, 0x119f0dfd, 0x11a311a1, 0x141c11a7, 0x11a911a5, 0x11b511b3, 0x11b711ab, 0x11cb11c1, 0x11bb11b1, 0x11bf11bd, 0x1422141e, 0xd571420, 0x11d111cf, 0x142a11d5, 0x142411d7, 0xd5b0d59, 0x14281426, 0x11e50d5d, 0x11e911e7, 0x11ef11eb, 0x11f311ed, 0x11f911f1, 0x11f711f5, 0xd5f11fb, 0x120111ff, 0x12070d61, 0x142c1209, 0x1211120f, 0x12170d63, 0x142e0cfd, 0xd651430, 0x12250d67, 0x123f1231, 0x14321243, 0x12471245, 0x12531251, 0x138a1436, 0x12551257, 0x138c125b, 0x1265125f, 0x143a1438, 0x1281127b, 0x143c1285, 0x12971287, 0x129f129d, 0x12a5129b, 0x143e12a7, 0xd6912a9, 0x144012ad, 0x12c30d6b, 0x12cd0ee3, 0x14461442, 0xd6f0d6d, 0x144812d7, 0x144a0d71, 0x12db12db, 0x144c12df, 0xd7312e5, 0x12ef12ed, 0x12f512f1, 0x144e0d75, 0x12fd12f9, 0xd771301, 0x13030d79, 0xd7b1450, 0x14541452, 0x13111456, 0x13150d7d, 0x13191317, 0x131d131b, 0x145a131f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +000000000000004000000440", +cast(immutable size_t[]) x" +000001000000080000001000", +cast(immutable size_t[]) x" +020201000302020202020204020502020202020206020202000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000002000100040003000600050007000000090008 +000B000A00000000000000000000000000000000000D000C000F000E0000001000120011001400130000000000160015 +000000000000000000000000000000000017000000000000000000000000001800000000000000000000000000000000 +00000000000000000000000000000000001900000000001A000000000000001B001C00000000001D0000000000000000 +000000000000001E0000001F000000200000000000000021000000000000002200000000000000230000000000000024 +000000000000000000000000000000000000000000260025002800270000000000290000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002B002A0000002C000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002E002D0030002F00320031003400330036003500380037003A0039003C003B +0000003D000000000000000000000000003E0000000000000040003F0000004100430042004500440047004600480000 +004900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000004A00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000004C004B004E004D0050004F00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000520051005400530056005500580057 +005A0059005C005B005E005D0000005F0061006000000062000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000006400630000000000650000000000000000000000000000 +000000000000000000000000000000000000000000000066000000000000000000000000000000000067000000000000 +000000000000000000680000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000006B006A006C00000000006D00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000006F006E0071007000730072007500740077007600790078007B007A007D007C +0000007E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000F000C00250012004F00450085000000A1009E00CB00A40121011E013301240188000001A0019D01B601A3000001DA +026D00000273027002F30287000000000322031F03380325036203580398000003B403B103DE03B7043704340446043A +049C000004B404B104CA04B7000004EE05840000058A0587060D059E061C0000033B0028033E002B0380006D038C0079 +038F007C0392007F0395008203A2008F0000000003CD00BA03D800C503DB00C803FB00E803E400D1040A00F7041000FD +0413010004190106041C010900000000043D01270440012A0443012D045C014900000130000000000462014F0471015D +0163000001700477016604840000047A000000000185000001940499018E04A8000004A20000000004D901C504E401D0 +04F801E400000000052F021B0545023105350221054B02370552023E0569025505580244057B02640572025B00000000 +058D02760594027D059B028405B4029D05B702A005E002C905F502DE061002F6030B0302031106280314062E00000631 +050401F000000000000000000000000000000000000000000000000002AC0000000005C3000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000560000013D0369 +01E7045002A304FB029205BA028E05A9029605A5028A05AD000005A1035B0048035400410653064A0000000004160103 +046B01570522020E05250211065F065C0000046500000000040700F4000000000496018203650052065006470656064D +036C0059036F005C03E700D403EA00D7045301400456014304FE01EA050101ED05380224053B022705BD02A605C002A9 +056602520578026100000000042501120000000000000000000000000351003E03F400E104F101DD04D101BD04E701D3 +04EA01D6061602FC0000000000000000000000000000000000000000000000000010000D066B00000000013700000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000066200000000 +000000000000000000000000000000010000000000000000063D00000645067006DF06C30000072C0000075907980778 +000008D10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000007810735084707E908C108670000092F00000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000092808CA091F08FD0000095F0000000009B40000000009B700000000 +0000000000000000000000000000000009CC09C609C300000000000009BA0000000000000000000009D809E4000009ED +0000000000000000000000000000000009DE000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000A200000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000A0E0A080A050000000000000A410000 +00000000000000000A1A0A2600000A2F0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000A470A440000000000000000000000000000000009CF000000000A110000000000000000 +0000000000000000000000000000000009FF09BD0A0209C0000000000A0B09C9000000000A4D0A4A0A1409D20A1709D5 +000000000A1D09DB0A2309E10A2909E7000000000A530A500A3E09FC0A2C09EA0A3209F00A3509F30A3809F600000000 +0A3B09F9000000000000000000000000000000000AC10ABE0AC40AC700000ACA00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000AD300000ACD0000000000000000 +00000000000000000000000000000000000000000AD00000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000AE800000000000000000000000000000AF100000000000000000AF400000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000AD90AD60ADF0ADC0AE50AE20AEE0AEB00000000000000000000000000000000 +000000000B00000000000B03000000000000000000000000000000000000000000000000000000000AFA0AF70AFD0000 +0000000000000000000000000000000000000000000000000000000000000000000000000B1200000000000000000B15 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000B0600000B0C0B090000000000000B0F00000000000000000000000000000000 +00000B210B1E000000000B24000000000000000000000000000000000000000000000000000000000B1B0B1800000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2700000000 +0000000000000000000000000000000000000000000000000000000000000000000000000B300B2A00000B2D00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000B330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000B3600000000000000000B40000000000B430B3C0B39000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000B4C0B4600000B4900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000B4F0B550B5200000B59 +000000000B5F0000000000000000000000000000000000000B620000000000000000000000000B65000000000B680000 +000000000000000000000B6B00000000000000000000000000000000000000000B5C0000000000000000000000000000 +000000000B6E00000B71000000000B8900000B8C0000000000000000000000000B740000000000000000000000000000 +00000000000000000000000000000000000000000B7A0000000000000000000000000000000000000B7D000000000000 +0000000000000B80000000000B830000000000000000000000000B860000000000000000000000000000000000000000 +0B77000000000000000000000000000000000000000000000000000000000B8F00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B92 +00000B9500000B9800000B9B00000B9E0000000000000BA1000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000BA400000BA70000000000000BAD0BAA0BB00000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000037D006A038300700386007303890076 +039B0088039F008C03A5009203AE009B03A8009503AB009803D000BD03D400C103FE00EB040100EE03F700E4040400F1 +040D00FA041F010C042801150422010F042B0118042E011B045F014C0449013604680154046E015A04740160047D0169 +0480016C048A017604870173048D01790490017C0493017F049F018B04A5019104AE019A04AB019704CD01B904D501C1 +04DC01C804E001CC05290215052C02180532021E053E022A0541022D0548023405550241055F024B054E023A055B0247 +0562024E056C02580575025E0581026A057E026705DD02C605E602CF05E302CC059002790597028005E902D205EC02D5 +05EF02D805F202DB05FB02E405F802E1060102E7060402EA060702ED061902FF062B030E063403170637031A056F0431 +062205FE0659000000000000000000000372005F035F004C032C001903280015033400210330001D0375006203450032 +0341002E034D003A034900360379006603ED00DA03E100CE03CA00B703BE00AB03BA00A703C600B303C200AF03F000DD +044D013A04590146051B020704F501E104BE01AA04BA01A604C601B204C201AE051E020A050B01F7050701F3051301FF +050F01FB0517020305DA02C305B1029A05CA02B305C602AF05D202BB05CE02B705D602BF060A02F006250308061F0305 +061302F9000000000000000000000000081807F6081B07F908240802082D080B069B0679069E067C06A7068506B0068E +0855084A0858084D085C08510000000006D106C606D406C906D806CD000000000890086E08930871089C087A08A50883 +070406E2070706E5071006EE071906F708E808D908EB08DC08EF08E008F308E407470738074A073B074E073F07520743 +090B0900090E090309120907000000000767075C076A075F076E076300000000094609370949093A094D093E09510942 +0784000007870000078B0000078F000009880966098B096909940972099D097B07BD079B07C0079E07C907A707D207B0 +07E907E2084708440867086008C108BE08FD08FA091F091C095F09580000000008360814081F07FD082808060831080F +06B9069706A2068006AB068906B4069208AE088C0897087508A0087E08A9088707220700070B06E9071406F2071D06FB +09A60984098F096D0998097609A1097F07DB07B907C407A207CD07AB07D607B407F007F3084107E5000007EC083D083A +067306760670066D000006BD000008BC0640000008B908630000086A08B508B206C306C006DF06DC0BB307260BB90BB6 +08C408C708D108CD0000000008D508F7072F0732072C07290BBC00000BC20BBF09220925092F092B0919091609330955 +077B077E07780775063A0772031D063D0000000009B1095B0000096209AD09AA0759075607980795064307DF00000000 +0BC70BC50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000079300000000004F01520000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000BCC0BC90000000000000000 +0000000000000000000000000000000000000000000000000000000000000BCF00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000BD200000BD50BD8 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000BDB00000000 +0BDE00000000000000000BE1000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000BE400000BE70000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000BEA00000000000000000BED0BF000000BF30000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000600000BF90000000000000000 +00000000000000000BF60000000900030BFF0BFC000000000C050C02000000000C0B0C08000000000000000000000000 +0C110C0E000000000C1D0C1A000000000C230C2000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000C2F0C2C0C350C32 +00000000000000000000000000000000000000000000000000000000000000000C170C140C290C260000000000000000 +000000000C3B0C380C410C3E000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000C47000000000C49000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000C440000000000000000000000000000000000000000 +000000000000000000000C4E00000C5100000C5400000C5700000C5A00000C5D00000C6000000C6300000C6600000C69 +00000C6C00000C6F0C7200000C7500000C7800000000000000000000000000000C7E0C7B0C81000000000C840C8A0C87 +0C8D000000000C900C960C93000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000C4B0000000000000000000000000000000000000C9900000000000000000000000000000000 +000000000000000000000C9F00000CA200000CA500000CA800000CAB00000CAE00000CB100000CB400000CB700000CBA +00000CBD00000CC00CC300000CC600000CC900000000000000000000000000000CCF0CCC0CD2000000000CD50CDB0CD8 +0CDE000000000CE10CE70CE4000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000C9C0CEA00000CF00CED00000CF30000000000000CF60FB71241124B125D0D83104313270E29 +0E9913270E4F12930F550E97116710CD11FD11E31279121510190FEB109D1069128911C70D8D12F30FF50E1D11E11079 +0EDB130911D910510F65121D120311890FBD0EFF108D10250D9D127D0E050DD90FF10F9510D3107711DD1171125911E7 +12FB12CF10E91307114D110712A111B9122F130B0F0B0E87117D112F10ED108312CB12490ECB0E85102F0FED11471047 +12B11159117F0E030DDD0DDF114F111512B511C50F67123D12350FEB0EBB0D8710950F270E1110C10DA510F10D7F0F1B +0F9D10110E23114510D70E7D122711C9126D10050F6F100D0F7B11A50D9110BF0DDB0DC3113D0FDB122D11950E091291 +0E9F0E370FA10F0710F3105312F712AB1313130D0FB50DF912690FFD0F490EF30F910F57106D104B111110AF11791153 +11CD126112A312710DFB0DE910670E411227120B0F230EFD10030F771091112D0E670D970EE50EBB109B0F29116B10A9 +1295117512D112C90D9F12DD128D110F0F3512C10DB10D8F0EC70EBD0FEB0F9F10CB1073127711D30FAD13230DF712AF +0FD10FCB103B102110BD10A1114310E70DC512E312B70F5D0ED70DA9126310310F390F1710950FD50DEB12BB0ECF0E31 +0FC30FA710150FE110C3109F120D1163128F12130E1312C50E33103D10B1107512BD11DB130F12FF102D0FCF1121118B +113311251063108B0D93123B0DED11AD0EF50DE711390F69101B0EB512670FB312B312050F0312210E590DB500000000 +00000E7B00000FAB0DE1000010CF108F110310F5110D1105113512D30000116D000011DF000012331273000000001283 +0000000012E912E7130512EB12BF127F0DB30DA10E010DB90E170E070E5F0E530E790E630ECD0E7F0F2F0ED10F470F43 +0F970F530FAF0FA310270FDD10491035107D106F10EB10A310FB10F710FD10F9110110FF110B1109111D111711531127 +115B1157117311611197118D11CB11971223121912391237124F124D1273126F12D912C70F2B12E1119313D600000000 +0DD70D810D9B0DC10DC90DB70E0B0DFF0E490E530E5D0E510E830E7B0E9B0E950EB10EA90F050F010F1D0F130F3F0F33 +0F470F370F530F410F7F0F5F0F890F850FAB0F990FBF0FBD0FFF0FC710211005104110451057104910E3106F1089107F +10AB108F10B910B510C910C710D110CF10DF10D510EF10DD1127111F11491131115F115311AF117311F911C3121F121B +12291223122B12331235123712391231124F123F127512651299128B12C712B912D512D312DB12D912F912E113AC1327 +13BE13AA0D370D2313F20D39143414041325132100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000A7A00000ABB0000 +00000000000000000000000000000000000000000AB50AB20AAE0AAA0A590A560A5F0A5C0A680A650A710A6B00000A74 +0A7D0A770A830A8000000A8900000A8C0A920A8F0A95000000000A980AA10A9E0AA70AA40A6E0AB80A860A6200000A9B +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000013290000132C00000000 +0000000000000000000000000000000000000000132F0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013351332 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000133800000000133B000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000134100000000133E000013440000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000134A1347000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000134D000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000013531350135A13561362135E000013660000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000136A0000136D137513711378 +0000137C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000D850D8913800D8B0DA10D990DA70DA30DAD0DAB0DAF0DB313880CF90DBB0DB9 +0DC70DBD0CFB13820DCB0DBF0DD113860D950DD30DD70DD50DE314440CFF0DE50DF10DEF0DF50DF30DFF0D010E070E01 +0E0D0E0B0E110E0F0E170E150E1B0E190E210E1F0E210E21105D138E0E270E250E2B13900E2F0E2D0E350E3D0E3B0E39 +0E430E3F0E470E450E4D0E4B0E510E4D0E570E550E690E5B0E6B0E5F0E650E610E890DE70E710E6F0E6D0E730E750E77 +13920E810E8D0E8B0E910E8F0E9D0E93139613940EA50EA30EA10EA70D030EAB0EAF0D050EB30EB30EB713980EBB0EB9 +139A0EBF0EC30EC10EC50F0F0EC90D070ED50ED1139E0ED313A00ED90EDD0EDF0EE70EE10D090EE90EED0EEB0EF10EEF +13A20D0B0EF70D0D0EFB0EF914580EFF13A60F09118F13A60F0D0F0D13B40D0F0F1114080D110F150F1F0F190F250F21 +0D150F2D0F2F0D130F3113A80F3D0F3B0F3D0F3F0F470F450F4B0F4F0F510F4D0F550F530F5B0F590F630F610F730F6B +0F7113AE0F750F6D0F830F790F8713B00F7D0F810F8B0D170F930F8F0D190F8D0F9B0F970FA513B20FA90FB90FAF0D1F +0D1B0D1D0DCF0DCD0FB10FBB0D5111810FBF0FBD0FC90FC113BC0FC50FD30D210FD90FCD13C00FDD0FD70FDF0D230FE3 +0FE70FE50FEF0FE90FF313C20FF70D250FF913C40FFB0D271005100113C6100713C8139C13CA10091013100F1017100B +1027101F10231021102B1029101D13CC1039103710410D2913CE103F104D103313D213D01059104F10551057105B0D2B +105F10611384106513D4106B13D81071107F107B13DA10811087108513DE13DC1097109310990D2D0D2F0D2F10A710A5 +10AD10AB0D3110B313E010B713E210BB13A410C113E410C513E813E60D350D3313EC10D513EE13EA10D913F010DB10DB +0D3910DF0D3B10E113F40D3D10E910E50D3F10EF10FF13F613FA13F81113110D11170D41111B111913FE13FC112313FE +14000D43112B112914020D450D471137113B113F140611410D49114B115511510D4B115D140C140A140E0D4D14101165 +116F11691412117311771414117B14160D4F13B61185118311870D5314180EAD13B8141A118F13BA126B1191119B0D55 +119D1199119F0DFD11A311A1141C11A711A911A511B511B311B711AB11CB11C111BB11B111BF11BD1422141E0D571420 +11D111CF142A11D5142411D70D5B0D591428142611E50D5D11E911E711EF11EB11F311ED11F911F111F711F50D5F11FB +120111FF12070D61142C12091211120F12170D63142E0CFD0D65143012250D67123F1231143212431247124512531251 +138A143612551257138C125B1265125F143A14381281127B143C128512971287129F129D12A5129B143E12A70D6912A9 +144012AD12C30D6B12CD0EE3144614420D6F0D6D144812D7144A0D7112DB12DB144C12DF0D7312E512EF12ED12F512F1 +144E0D7512FD12F90D77130113030D790D7B1450145414521311145613150D7D13191317131D131B145A131F00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); dstring decompCanonTable() nothrow @nogc pure @safe { static immutable dchar[5212] t = "\u0000\u003B\u0000\u003C\u0338\u0000\u003D\u0338\u0000\u003E\u0338\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041"d~ @@ -874,9 +1636,771 @@ return t[]; static if (size_t.sizeof == 8) { //23488 bytes -enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x20, 0x2a0], [ 0x100, 0xa00, 0x2360], [ 0x402030202020100, 0x706020202020205, 0x802020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xa000900080000, 0xc000b, 0xf000e000d0000, 0x11001000000000, 0x15001400130012, 0x19001800170016, 0x1b001a00000000, 0x0, 0x1c, 0x1e0000001d0000, 0x1f00000000, 0x0, 0x0, 0x0, 0x0, 0x2100200000, 0x2200000000, 0x2400230000, 0x0, 0x2500000000, 0x2700000026, 0x2800000000, 0x2900000000, 0x2a00000000, 0x2b00000000, 0x2c0000, 0x2e002d0000, 0x3100300000002f, 0x330032, 0x340000, 0x35000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3800370036, 0x0, 0x0, 0x0, 0x3b003a00390000, 0x3d003c, 0x410040003f003e, 0x45004400430042, 0x49004800470046, 0x4d004c004b004a, 0x510050004f004e, 0x530052, 0x57005600550054, 0x5a00590058, 0x5e005d005c005b, 0x6100000060005f, 0x620000, 0x0, 0x63000000000000, 0x67006600650064, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x69000000000068, 0x6a00000000, 0x0, 0x0, 0x6b000000000000, 0x0, 0x6c000000000000, 0x0, 0x0, 0x6e00000000006d, 0x7200710070006f, 0x7500740073, 0x79007800770076, 0x7d007c007b007a, 0x80007f007e0000, 0x81, 0x85008400830082, 0x89008800870086, 0x8d008c008b008a, 0x910090008f008e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92, 0x93000000000000, 0x94000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x96009500000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9a009900980097, 0x9e009d009c009b, 0xa200a100a0009f, 0xa500a400a3, 0xa900a800a700a6, 0xad00ac00ab00aa, 0xb100b000af00ae, 0xb500b400b300b2, 0xb900b800b700b6, 0xbd00bc00bb00ba, 0xc100c000bf00be, 0xc500c400c300c2, 0xc900c800c700c6, 0xcd00cc00cb00ca, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcf00ce, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd100d0, 0xd20000, 0x0, 0x0, 0x0, 0xd300000000, 0x0, 0x0, 0xd40000, 0x0, 0xd50000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd60000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd800d700000000, 0xda00d90000, 0x0, 0x0, 0x0, 0x0, 0xde00dd00dc00db, 0xe200e100e000df, 0xe600e500e400e3, 0xe800dc00db00e7, 0xeb00ea00e900de, 0xee00ed00ec00e2, 0xf200f100f000ef, 0xf600f500f400f3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf900f800f70000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd00fc00fb00fa, 0xff00fe, 0x0, 0x0, 0x0, 0x0, 0x103010201010100, 0x104, 0x10701060105, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x108000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10c010b010a0109, 0x110010f010e010d, 0x114011301120111, 0x118011701160115, 0x119, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x69200000015, 0x9000000000000, 0x30f034300000000, 0x120f0003, 0x78a03140048, 0x49403c603ce, 0x58605730570056d, 0x5f8000005b005a6, 0x6580631062e062b, 0x6f906ea06e706e4, 0x7ac07a907920000, 0x7e607c207af, 0x8ba08b708b40000, 0x96208ce, 0x9c509b209af09ac, 0xa4a000009ef09e5, 0xab60a8f0a8c0a89, 0xb580b4c0b490b46, 0xc610c5e0c440000, 0xc9b0c770c64, 0xd710d6e0d6b0000, 0xe1e00000e0f0d85, 0x9cb058c09c80589, 0xa3e05ec0a0d05ce, 0xa4405f20a4105ef, 0xa71061a0a4705f5, 0xaa5064700000000, 0xab306550ab00652, 0xabc065e0ad30675, 0xb0406a00afe069a, 0xb0d06a90b0706a3, 0xb1906ba, 0xb5206f00b4f06ed, 0xb6e070f0b5506f3, 0xb3a06d8000006f6, 0xbb1072e0b760717, 0x7500bcf07430000, 0x7400bd207460bdc, 0x78f000000000bcc, 0x7980c50079e0c41, 0xf300c4a, 0xc9107dc0c8607d1, 0xca507f0, 0xd20085b0d0a0845, 0xd2e086f0d10084b, 0xd4c088d0d350876, 0xd6008a90d3b087c, 0xd5708a0, 0xd7b08c40d7408bd, 0xd9b08e40d8208cb, 0xdc709100d9e08e7, 0xe1209650dec0942, 0x9820e2c097c0971, 0x8430614060d0e32, 0xcb107fc, 0x0, 0x0, 0x8f3000000000000, 0xdaa, 0x0, 0x0, 0x0, 0x0, 0x7360a6a0613060c, 0x78607830bbc073d, 0x70309f605b70c35, 0x8ea0ca807f30b62, 0x8d50d9008d90da1, 0x8d10d9408dd0d8c, 0x9e805a900000d88, 0xe680e5d09e105a2, 0xb0a06a600000000, 0xccf081a0bab0728, 0xf070e820cd2081d, 0xa67061006090b79, 0xafb0697, 0x9f205b30c3e078c, 0xe6f0e600e650e5a, 0x9fc05bd09f905ba, 0xac206640abf0661, 0xb6807090b650706, 0xcae07f90cab07f6, 0xd1608510d13084e, 0xda708f00da408ed, 0xd5d08a60d49088a, 0xb2206c300000000, 0x0, 0x9de059f00000000, 0xc9e07e90acc066e, 0xc9407df0c7e07c9, 0xe18096b0c9707e2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa14073e0eb70b10, 0xde40ee90ee10edd, 0x695, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4b00240012000f, 0x270006, 0xb4408430a2b0eb1, 0xf0a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b00000004001a, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf2e, 0x5400000000, 0x54600000000, 0x0, 0x7410f45001c0003, 0x10110fc00fa0, 0x109910730000104a, 0x11e2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x107c101a00000000, 0x11d21176115210ec, 0x1270, 0x0, 0x0, 0x0, 0x0, 0x0, 0x126911db00000000, 0x12a812601232, 0x1073106e11cb1147, 0x124b1299107c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1255124d120b, 0x114d100a, 0x106a0000, 0x0, 0x130a00001313130d, 0x1301000000000000, 0x0, 0x1334131f132b, 0x0, 0x0, 0x13250000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13790000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x135400001361135b, 0x13c6000000000000, 0x0, 0x139c13731381, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13d013cd00000000, 0x0, 0x0, 0x136613160000, 0x0, 0x0, 0x0, 0x134b130713481304, 0x135e131000000000, 0x13e213dd00000000, 0x136e131c13691319, 0x1376132200000000, 0x138c132e137c1328, 0x13ea13e500000000, 0x1399133113bd1343, 0x13a2133a139f1337, 0x13ad133d, 0x13b61340, 0x0, 0x0, 0x13ed000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1494149100000000, 0x18751497183a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1906183d149a0000, 0x18bc, 0x0, 0x18fd00001918, 0x0, 0x0, 0x0, 0x1915000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x192d0000, 0x0, 0x19360000, 0x1939, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19241921191e191b, 0x19331930192a1927, 0x0, 0x0, 0x1945000000000000, 0x1948, 0x0, 0x0, 0x0, 0x19420000193f193c, 0x0, 0x0, 0x0, 0x0, 0x1957000000000000, 0x195a00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1951194e194b0000, 0x195400000000, 0x0, 0x0, 0x1963000000001966, 0x1969, 0x0, 0x0, 0x0, 0x1960195d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x196c, 0x0, 0x0, 0x0, 0x0, 0x1975196f00000000, 0x1972, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1978, 0x0, 0x0, 0x0, 0x0, 0x0, 0x197b, 0x1985000000000000, 0x1981197e00001988, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1991198b00000000, 0x198e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x199400000000, 0x199e199a1997, 0x0, 0x0, 0x0, 0x0, 0x19a1000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19aa000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19a719a4, 0x0, 0x0, 0x0, 0x19ad, 0x0, 0x0, 0x0, 0x0, 0x19b2000000000000, 0x0, 0x0, 0x19b50000, 0x19b800000000, 0x19bb000000000000, 0x0, 0x19be, 0x0, 0x0, 0x19af0000, 0x0, 0x19c1000000000000, 0x19dc19e019c40000, 0x19e319e7, 0x0, 0x19c70000, 0x0, 0x0, 0x0, 0x19cd000000000000, 0x0, 0x0, 0x19d00000, 0x19d300000000, 0x19d6000000000000, 0x0, 0x19d9, 0x0, 0x0, 0x19ca0000, 0x0, 0x0, 0x19ea00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19ed, 0x0, 0x1ae300000000, 0x1ae900001ae6, 0x1aef00001aec, 0x1af200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1af5000000000000, 0x1af80000, 0x1b0100001afe1afb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5d50e580568, 0x6870e7c062905e6, 0x71a060706cf06ac, 0x78107230734, 0x76d06af0e8b07a7, 0x6920773056b0890, 0x93a1b040e910e8f, 0xea30ea10a800a31, 0xb7c000006020ea5, 0xe97078a0e7805d3, 0xba60cd61b081b06, 0x86d0ec91b0c0a27, 0x114b114911471b0e, 0xa140ae3129b1299, 0x11491147086d0a27, 0x129b1299124d, 0x0, 0x0, 0x0, 0x1388, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe93000000000000, 0xea50e6b0e9909a3, 0xeb50ead0ea90adc, 0x1b100ebf0ebd0ebb, 0xf161b120ec50f14, 0xed10ecf0ecb0ecd, 0xeeb0edb0ed50ed3, 0xef50ef30e800eed, 0x6110ef90ef71b0a, 0x11cb0f050f030f01, 0xa1605da0a0a05cb, 0xa1c05e00a1905dd, 0xa6e06170a4d05fb, 0xa7d06260a74061d, 0xa7a06230a770620, 0xaac064e0aa8064a, 0xad9067b0ad60678, 0xaf206840acf0671, 0xb1c06bd0b01069d, 0xb1f06c00b2506c6, 0xb2b06cc0b2806c9, 0xb5b06fc0b710712, 0xbae072b0ba80725, 0xbd507490bb40731, 0xbe207560bd8074c, 0xc1507750bdf0753, 0xc1b077b0c180778, 0xc4d079b0c470795, 0xc5307a10c5607a4, 0xc8207cd0c7a07c5, 0xc8d07d80c8907d4, 0xcf2083b0cef0838, 0xd1908540d0d0848, 0xd23085e0d1c0857, 0xd4208830d380879, 0xd3e087f0d310872, 0xd51089d0d450886, 0xd6608af0d5a08a3, 0xdc4090d0d6308ac, 0xdca09130dcd0916, 0xd7e08c70d7708c0, 0xde1092a0dde0927, 0xde9093f0de6093c, 0xdef09450df20948, 0xe0409570df8094b, 0xe1b096e0e07095a, 0xe3809880e2f097f, 0xd540b2e0e3b098b, 0xd3809a90e240df5, 0x0, 0x9ec05ad09ff05c0, 0x9b5057609b9057a, 0x9bd057e09c10582, 0x9d205930a0205c3, 0x9da059b09ce058f, 0xa0605c709d60597, 0xab9065b0ac50667, 0xa9606380aa20644, 0xa9e06400a920634, 0xac8066a0a9a063c, 0xb6b070c0b5f0700, 0xca207ed0cc80813, 0xc6707b20c6b07b6, 0xc6f07ba0c7307be, 0xcb808030ccb0816, 0xcc0080b0cb407ff, 0xcc4080f0cbc0807, 0xd9808e10dc1090a, 0xdad08f60db108fa, 0xdb508fe0db90902, 0xe0c095f0dbd0906, 0xe2109740e270977, 0xe150968, 0x0, 0x111e10fc111b10f9, 0x1130110e11271105, 0xf730f510f700f4e, 0xf850f630f7c0f5a, 0x1163115811601155, 0x1167115c, 0xfb10fa60fae0fa3, 0xfb50faa, 0x11a21180119f117d, 0x11b4119211ab1189, 0xfe80fc60fe50fc3, 0xffa0fd80ff10fcf, 0x11fc11ed11f911ea, 0x120411f5120011f1, 0x102f1020102c101d, 0x1037102810331024, 0x1243123812401235, 0x1247123c, 0x105b10501058104d, 0x105f1054, 0x128a127b12871278, 0x12921283128e127f, 0x10820000107f0000, 0x108a000010860000, 0x12d412b212d112af, 0x12e612c412dd12bb, 0x10c1109f10be109c, 0x10d310b110ca10a8, 0x1152114f10ec10e5, 0x11d211cf1176116f, 0x1260125d1232122f, 0x12a812a1, 0x1122110011391117, 0x11341112112b1109, 0xf770f550f8e0f6c, 0xf890f670f800f5e, 0x11a6118411bd119b, 0x11b8119611af118d, 0xfec0fca10030fe1, 0xffe0fdc0ff50fd3, 0x12d812b612ef12cd, 0x12ea12c812e112bf, 0x10c510a310dc10ba, 0x10d710b510ce10ac, 0x114410e810f310f6, 0x1140113d000010ef, 0xf450f420f480f4b, 0x2a11cd002a0f92, 0x11c8117200200051, 0x11c411c100001179, 0xfc00fbd0fa00f9d, 0x350031002d1007, 0x11e211de11d511d8, 0x11e6120800000000, 0x1011100e10141017, 0x440040003c0000, 0x1270126c12631266, 0x127412961252124f, 0x1073107010761079, 0x998001c00181067, 0x12fa12a400000000, 0x12f612f3000012ab, 0x10991096104a1047, 0x39000310e0, 0x1000100010001, 0x1000100010001, 0x100010001, 0x0, 0x1b160000, 0x4e000000000000, 0x0, 0x0, 0x0, 0x2ff02fc02fa, 0x0, 0x1000000000000, 0x1b1c000000000000, 0x1b2b1b2800001b1f, 0x0, 0xc0000008f, 0x0, 0x563000000000000, 0x920560, 0x0, 0x0, 0x1b23000000000000, 0x0, 0x1000000000000, 0x0, 0x0, 0x0, 0x0, 0xae30305, 0x392038303740365, 0x1b5a02f403b003a1, 0xb3e00a500a10544, 0x30f034303140305, 0x392038303740365, 0x1b5a02f403b003a1, 0xa500a10544, 0xb44078a0a800692, 0xa2b0b7c0b100ea1, 0x8430cd60b3e05d3, 0xba6, 0x0, 0x0, 0x842, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe5005e309a509a1, 0xe7e0a250a210000, 0x6ac06020e530000, 0xe740b1006ac06ac, 0xa2b073406cf06cf, 0x78907810000, 0x76d083e06af0000, 0x76d076d, 0x89a08920866, 0x77f0000060a, 0x5b0071a0000060a, 0xa80000005e305d5, 0x7230000067e0629, 0x1415140d13ff078a, 0x68000000ae3141a, 0x10630f971149124b, 0x1b58, 0xa800a3105e60000, 0x73e0ae3, 0x0, 0x3ca03c103e203da, 0x498045903d20455, 0x3de04e703d604cf, 0x3be051104eb049c, 0x6de06d406d106cf, 0x922091e091b06b2, 0x9530950068206e1, 0x72305e605e30734, 0xb400b360b330ae3, 0xdd90dd50dd2086d, 0xe000dfd0b440b43, 0x5d30a3109a30a2b, 0x0, 0x0, 0x30d0000, 0x0, 0x0, 0x0, 0x1b3a1b3300000000, 0x0, 0x0, 0x0, 0x0, 0x1b3f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b451b481b420000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b4d, 0x1b520000, 0x1b55, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b5f00001b5c, 0x0, 0x1b6e00001b651b62, 0x1b71, 0x0, 0x0, 0x0, 0x1b750000, 0x1b7b000000001b78, 0x1b7e0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b8400000556, 0x0, 0x0, 0x55b054a1b810000, 0x1b8a1b87, 0x1b901b8d, 0x1b961b93, 0x0, 0x1b9c1b99, 0x1ba81ba5, 0x1bae1bab, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bc01bbd1bba1bb7, 0x0, 0x0, 0x0, 0x0, 0x1bb41bb11ba21b9f, 0x0, 0x1bc61bc300000000, 0x1bcc1bc9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1be61be40000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x365030f03430314, 0x3a1039203830374, 0x342032f031c03b0, 0x382037303640355, 0x3f703af03a00391, 0xe600e200d900a3, 0xf600f200ee00ea, 0xb100ac00a700fa, 0xc500c000bb00b6, 0xdd00d400cf00ca, 0x368035903460319, 0x3a4039503860377, 0x3450332031f03b3, 0x385037603670358, 0x3fa03b203a30394, 0x172016e016a0166, 0x182017e017a0176, 0x192018e018a0186, 0x1a2019e019a0196, 0x1b201ae01aa01a6, 0x1c201be01ba01b6, 0x5d5056801ca01c6, 0x67e062905e605e3, 0x60706cf06ac0687, 0x78107230734071a, 0x76d083e06af07a7, 0x6b2056b08900861, 0x60a095d06820773, 0xa3109a3093a0692, 0xb1006020adc0a80, 0xa2b0b7c073e0ae3, 0xcd6078a0b3e05d3, 0xba608430a1405d8, 0xb440de4086d0a27, 0x30506110695, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b69, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x552054f0542, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bd9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b2073e, 0x0, 0x0, 0x0, 0x1bde000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x232e000000000000, 0x0, 0x0, 0x0, 0x0, 0x2764000000000000, 0x0, 0x0, 0x0, 0x1fb81fb01faa1f98, 0x1fca1fc61fc21fbc, 0x201120091ffd1fd0, 0x2039202920212019, 0x206b2057203d203b, 0x207f207920772073, 0x209d209b208f208d, 0x210120f720a920a1, 0x2131212f212b2121, 0x21662160214a2139, 0x2180217e217c2176, 0x21aa21a4218e218c, 0x21c121ba21b221ae, 0x21e121dd21db21c5, 0x21f321eb21e721e3, 0x22492247223d2201, 0x22972295228b2289, 0x32522a3229f229b, 0x231222d5032922c3, 0x232c232623202318, 0x2336233423322330, 0x23be23b823942338, 0x23c823c423c223c0, 0x23e623e223d423ca, 0x240e240c24082406, 0x2428242624142412, 0x243c243a24382436, 0x245c245a24582446, 0x24a02490248e246e, 0x24ce24bc24ac24a8, 0x250424fe24f424f0, 0x2510250e250c2508, 0x2530252c251e251c, 0x2540253c25362534, 0x254a254825442542, 0x25c025be25a4259a, 0x25e225de25da25c4, 0x260a2606260425e6, 0x26262624260e260c, 0x264426362634262a, 0x266c265c264a2648, 0x2692267c26782676, 0x26b426ae269c2694, 0x26ce26cc26c826bc, 0x26da26d826d226d0, 0x26f026ee26ec26de, 0x270c270226fe26fc, 0x271627142710270e, 0x2724271c271a2718, 0x273a273827322730, 0x27442742273e273c, 0x27542750274c2746, 0x275e275c275a2756, 0x27662762, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1bf800000000, 0x20832081207f, 0x0, 0x0, 0x0, 0x0, 0x1c3000001c2d, 0x1c3600001c33, 0x1c3c00001c39, 0x1c4200001c3f, 0x1c4800001c45, 0x1c4e00001c4b, 0x1c5400001c510000, 0x1c570000, 0x0, 0x1c6000001c5d1c5a, 0x1c691c6600001c63, 0x1c6f1c6c0000, 0x1c781c75, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c2a, 0x87000000000000, 0x1c7b1c820000008a, 0x0, 0x0, 0x0, 0x1cf200001cd5, 0x1d4100001ca5, 0x1d5e00001d4a, 0x1d7900001d6e, 0x1d8b00001d7e, 0x1d9a00001d90, 0x1da600001da10000, 0x1cbf0000, 0x0, 0x1dea00001dd51dcc, 0x1e101e0600001df1, 0x1e2d1e250000, 0x1d591e50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ef3000000001cb0, 0x1f061f011efc, 0x1d501f0f00000000, 0x0, 0x0, 0x0, 0x0, 0x1abb19f419ef0000, 0x19fb1abf1abd19f6, 0x1ac31ac11a021a00, 0x1acb1ac91ac71ac5, 0x1a111a0c1a071a51, 0x1a1a1a181a131a5b, 0x1a391a2e1a2c1a22, 0x19f21a481a431a3e, 0x1a891a871a851a83, 0x1a371a8f1a8d1a8b, 0x1a991a971a951a93, 0x1aa11a9f1a9d1a20, 0x1aa91a2a1aa51aa3, 0x1acd1a4f1a4d1a7f, 0x1ad51ad31ad11acf, 0x1adb1a531ad91ad7, 0x1a591a571a551add, 0x1a631a611a5f1a5d, 0x1a6b1a691a671a65, 0x1a731a711a6f1a6d, 0x1ae11adf1a771a75, 0x1aab1a7d1a7b1a79, 0x1ab31ab11aaf1aad, 0x1ab91ab71ab5, 0x1fc61f9800000000, 0x1fac1fa020f91f9e, 0x1fa61fbc24161fa2, 0x1fd02103213e1f9a, 0x1e901e001d701ce, 0x20d020401fb01f2, 0x245023c02330225, 0x1db01d20257024e, 0x1ff01f601ed01e4, 0x237022902110208, 0x25b025202490240, 0x21e0216022e, 0x2a0026802700260, 0x284026402880274, 0x2c402b00290026c, 0x2a402ec02b802c0, 0x2d002b402bc02ac, 0x2d402e402c80298, 0x2a8029c0278028c, 0x29402e8027c02cc, 0x2e002dc028002d8, 0x24b0229521c320d3, 0x0, 0x0, 0x41c041104060831, 0x440043904320427, 0x475046e044e0447, 0x4850482047f047c, 0x1a0219fb19f619ef, 0x1a1a1a131a0c1a07, 0x1a3e1a391a2e1a22, 0x19f819f11a481a43, 0x1a0e1a091a0419fd, 0x1a301a241a1c1a15, 0x1a4a1a451a401a3b, 0x1a1f1a271a33, 0x20f91f9e1fc61f98, 0x20111f9c20131fc8, 0x23940329207f1fbe, 0x2101267c22d52338, 0x22f222cd22ed0325, 0x247c261023ce20b9, 0x214a241a2494205d, 0x234820911ffb2654, 0x213c20251fdd26e0, 0x21ac1fa21fac1fa0, 0x2164216a207b20b3, 0x2089261a1fdb2442, 0x48e048b04882135, 0x4b704b404b10491, 0x4c304c004bd04ba, 0x4e404cc04c904c6, 0x4d604a3034e033b, 0x5290518050304f2, 0x34d033a0327053a, 0x7390a820a8506b4, 0x1cb91cae1ca01c87, 0x1d221cf01cd31cc9, 0x1d6c1d5c1d481d3f, 0x1d8e1d891d7c1ccd, 0x1c8d1da41d9f1caa, 0x1d3d1dc01dbe1d55, 0x1e041de81dca1dbc, 0x1e8b1ce01e4e1e23, 0x1eb31eaf1e9e1cd1, 0x1ce41eca1ec81ec0, 0x1ef11d0c1ee31c9c, 0x1fd81f041eff1efa, 0x1c9a1c941c8f1c89, 0x1cbb1cb31ca81ca2, 0x1ce21ccf1ccb1cc2, 0x1cdd1cd81ceb1ce6, 0x1cff1d061cfa1cf5, 0x1d1c1d151d0e1d0b, 0x1d3a1d331d2c1d10, 0x1d611d571d531d44, 0x1d851d811d711d66, 0x1d301db21da91d93, 0x1dd81de41dc61dbb, 0x1dfb1df41dcf1ddf, 0x1e1a1e131ded1e00, 0x1e301e441e1f1e09, 0x1e3e1e391e4a1e34, 0x1e671e531e5b1e28, 0x1e741e6e1e6a1e61, 0x1e851e811e7d1e79, 0x1ea01e951e921e8d, 0x1eba1eb51d171ea4, 0x1ed81ed31ece1ec2, 0x1d1e1ee81ee51edd, 0x3610352033f0311, 0x39d038e037f0370, 0x33e032b03bb03ac, 0x37e036f03600351, 0x3ba03ab039c038d, 0x4230418040d0402, 0x56a0a560b12042e, 0xa5c0ce90c5b0a12, 0x21bc06db0a630a5f, 0x22ef22ab213b22b2, 0xbed12110c290cdd, 0x689075b071c0b7e, 0xc2c0ce00b8f0a29, 0x6010bf9121d1214, 0x68c07640b81068d, 0xa590c0012200896, 0x12230c380aef0b97, 0xc060b9a0a330c03, 0xc0a0b9d0a370a36, 0xc1e0ba10a3b0a3a, 0x7680b8506910c22, 0xd030cfd0cf90690, 0xc1212260c3b0cec, 0xbf012170c2f0ce3, 0xc320ce6076f0b89, 0x7720b8c0bf3121a, 0x5d7099c077e0bb7, 0x5e805ff0a300a2d, 0x6ae0b1606940a53, 0xba50722071f0b3d, 0xbc90bc50bc20bbf, 0x8230c0e0bfc0bf6, 0xd28082e08260cd8, 0x5d1092d0939086c, 0x36c035d034a0337, 0x3a80399038a037b, 0x3490336032303b7, 0x389037a036b035c, 0x3fe03b603a70398, 0x42a041f04140409, 0x44a0443043c0435, 0xaf7047804710451, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13b913b2, 0x0, 0x0, 0x0, 0x0, 0x276e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x67e05e300000000, 0x83e, 0xe7a0e72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27740ec12772276c, 0x0, 0x0, 0xefb0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x261c263622c52608, 0x276220ab1fae2378, 0x20dd267c21442762, 0x24fc243422392142, 0x265a25d025b62598, 0x23ee23a2234c2306, 0x1fc027062670257c, 0x259623b423102095, 0x258e23882198272e, 0x25bc252a225325d8, 0x23da235822cf21d1, 0x2065202f1fe32660, 0x244423b2230c2287, 0x2630259e25922508, 0x2462272c271e26c4, 0x268a256e24de2482, 0x21df211f25f22732, 0x246623cc251a24ba, 0x2186211d26c02618, 0x24d6237c23622308, 0x2520206326a024ea, 0x24e0249820332035, 0x2255260026a4257a, 0x21701fb425f82306, 0x2075242423e4220b, 0x1fa421fd1feb246a, 0x209f24d422932342, 0x25ea257e244a2115, 0x225d233e26482328, 0x1fce2422226d255a, 0x24ca22f62031200f, 0x2069267a25f02546, 0x22a121d9214a20c3, 0x270a2698246c238a, 0x22c1205727402734, 0x222d21bf2642231e, 0x23a823822283223b, 0x251624e424922400, 0x268c264e2582263a, 0x23a020cd20592043, 0x220721cf25ea25c6, 0x23de24b823242269, 0x21a2217020fb1fd6, 0x250223fa23ec220d, 0x26c626be267e2512, 0x2674248c1fe526e4, 0x1ff71fc4221926b2, 0x2306229921822172, 0x26582588243223ae, 0x2055269e22b9275e, 0x2370235422e522df, 0x24d22460242023f2, 0x26a62243201326ea, 0x263c236421941fef, 0x23e422e9221d21f5, 0x218a20bb204726aa, 0x234622fc22d722ae, 0x25c824f8242a23f0, 0x207d26b8267825ce, 0x240223b020bd2372, 0x2736272226ac2590, 0x24a8252e236022e3, 0x239c23d824c024ae, 0x204925621fd225fe, 0x24c6225721c72041, 0x264022bf234e2168, 0x21d525de26a225c0, 0x20e91fff, 0x22b700002113, 0x243e23dc20370000, 0x248a2480247e2470, 0x250424c226ca, 0x25f600002594, 0x266626500000, 0x26f626f400000000, 0x26b02662272a26f8, 0x206120031ff91fe7, 0x20ef20e120872067, 0x21882117211120f3, 0x222b22272213218c, 0x22bb22a5228d2237, 0x23802368235a22f8, 0x246423f423ba23aa, 0x24782474247622f2, 0x24882486247c247a, 0x24e424b224a4249a, 0x250a24f624ec24e8, 0x2580254c254c2532, 0x25fc25fa25e025d4, 0x2650264c2620261e, 0x220f26e826dc26ba, 0x253e2833, 0x1fe1200d202d1fa8, 0x206d205f20172001, 0x20ed20df20d720e1, 0x21462140211b2113, 0x21d721d3215c2154, 0x2223221721ff21ef, 0x22372225222b221b, 0x227b227722712245, 0x22d122cf22b7228f, 0x23542328232022db, 0x238e23802376237a, 0x23d623bc245623aa, 0x241c240a23fc23dc, 0x2440243e2430242e, 0x2468245024522448, 0x24da24be24b224a6, 0x2564250a24f224e4, 0x25dc25d625b22578, 0x25ee25f625ec25e0, 0x25fc25f425f825fa, 0x2656263e26202602, 0x26ba26a826822672, 0x26e226dc26d426ca, 0x28092762271226e8, 0x1f501f3c281b2807, 0x28912861284f1f52, 0x27602758, 0x0, 0xae10ae60ae20ade, 0xd2b0d2b0ae5, 0x0, 0x0, 0x13f9000000000000, 0x13f613fc13f313f0, 0x0, 0x147d000014300000, 0x141f141a13ff1451, 0x14621446140b1439, 0x1475147202f41478, 0x14041401146e146a, 0x141c1417140f1407, 0x142a14271421, 0x143b14361433142d, 0x144800001443, 0x14530000144e144b, 0x145f145c00001456, 0x1424147a14671464, 0x140a1459143e1412, 0x18c918c918c318c3, 0x18cb18cb18c918c9, 0x18cf18cf18cb18cb, 0x18c718c718cf18cf, 0x18cd18cd18c718c7, 0x18c518c518cd18cd, 0x18e718e718c518c5, 0x18e918e918e718e7, 0x18d318d318e918e9, 0x18d118d118d318d3, 0x18d518d518d118d1, 0x18d718d718d518d5, 0x18dd18dd18d718d7, 0x18df18df18db18db, 0x18e318e318d918d9, 0x18eb18eb18e118e1, 0x18ef18ef18eb18eb, 0x18f318f318ef18ef, 0x18f118f118f318f3, 0x18f518f518f118f1, 0x18f718f718f718f7, 0x18fb18fb19181918, 0x18f918f918fb18fb, 0x163c163c18f918f9, 0x19151915, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18ed000000000000, 0x18ae18ed18ed18ed, 0x18b218aa18aa18ae, 0x190d190d190618b2, 0x190b190b19001900, 0x18b618b618b618b6, 0x1878187814c014c0, 0x189c189c18b818b8, 0x18a818a818ac18ac, 0x18b418b418b018b0, 0x18a018a018a018b4, 0x190f190f190f190f, 0x18a018901880187c, 0x14a914a2149f18a4, 0x14c914c214bf14b6, 0x151514f814e314d8, 0x152f1526151d1518, 0x14dc14cd15371532, 0x14e7157f157c14e0, 0x15c515b715b015a5, 0x1650164d163e160d, 0x167316701665165b, 0x16b21620168f168a, 0x16f016ed16ea16b5, 0x1706170116fe16f7, 0x1724171f171c170d, 0x1730172d172a1727, 0x17551741173e1733, 0x1624163717731764, 0x1504150014fc178b, 0x17d8150c150815d1, 0x1814180317fa17eb, 0x182a181f181c1817, 0x1855184e1847182d, 0x158f1872186f185e, 0x64005d18421599, 0x8000790072006b, 0x18941890188c1888, 0x14b3148618a418a0, 0x14c214bf14b914b6, 0x150f14f814f514f2, 0x1523152015181515, 0x1532152f15291526, 0x171f171c170116fe, 0x173e173317301724, 0x178b162416371741, 0x180017fd15d11790, 0x18171814180e1803, 0x185e185b18581842, 0x187c1872186f1869, 0x1898189018841880, 0x14b614a914a2149f, 0x14e314d814c914bc, 0x15371526151214f8, 0x157c14e014dc14cd, 0x15b715b015a514e7, 0x163e1618160d15c5, 0x1665165b1650164d, 0x1620168f168a1670, 0x16ed16ea16b516b2, 0x170d170616f716f0, 0x1730172d172a1727, 0x1773176417551733, 0x150014fc148b1637, 0x17eb17d815d11504, 0x181c1811180317fa, 0x184e18471830181f, 0x18901698185e1855, 0x14f814bc14b61898, 0x15c5152c15261512, 0x1730160215f715d4, 0x1811180316371733, 0x16d716d01698185e, 0x16aa1685168216de, 0x15d716c716c416ad, 0x153b1608160515da, 0x14eb14d514d114a6, 0x16681648164514ad, 0x15f115e615df166b, 0x161b15c215f415f7, 0x16aa168516821662, 0x15d716c716c416ad, 0x153b1608160515da, 0x14eb14d514d114a6, 0x16681648164514ad, 0x15f115e615df166b, 0x161b15c215f415f7, 0x15f115e615df1662, 0x1673160215d415f7, 0x15df15b715b015a5, 0x168a167315f115e6, 0x148e148e, 0x0, 0x0, 0x0, 0x0, 0x14df14db14db14cc, 0x150314ff14fb14e6, 0x156c1570154e154e, 0x15cc15ac15a815b3, 0x15d015d015c815cc, 0x15e9164116101610, 0x15fa15fa15e215e9, 0x165e165315fe15fe, 0x167a16761676165e, 0x169e169e1692167e, 0x16bc16c016b816a2, 0x1714171016f316f3, 0x1758176b176f1767, 0x177d177617761758, 0x17b617ad17a9177d, 0x17c117bd179e1796, 0x1822179a00000000, 0x17df17f217ee1826, 0x1806180a17e317df, 0x14d414ac18611861, 0x150b14ea14ee14d0, 0x1552153a15561507, 0x165715ed161415ba, 0x184a185117811760, 0x17f6171817cc1865, 0x173a16a617671710, 0x1736175c17c517db, 0x1565153e17db175c, 0x173614a516fa17a2, 0x17e715be16411692, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x148414891709163a, 0x16961594161e17b1, 0x1542162716231635, 0x159c, 0x0, 0x0, 0x0, 0x0, 0x5401be21be002f6, 0x1c260093008d0546, 0x2ff1c28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9961b181b1a02fc, 0xe3e00a500a10996, 0x1bf41bfe1bfa0e42, 0x1be41bea1be81bf6, 0x1bf01bee1bec1be6, 0x98e000000001bf2, 0xc000c000c0992, 0x99609960996000c, 0x2fa1be002f6, 0x8d009305400546, 0xe3e00a500a11b1a, 0x971bfe1bfa0e42, 0x2f802f402f2009d, 0x54405590548, 0x566009b00990990, 0x0, 0x5a16ca0057, 0x16cd006800000061, 0x16db007616d4006f, 0x16e5008416e2007d, 0x1494149114911480, 0x1497183a183a1494, 0x1875187518751497, 0x149d148214821875, 0x14c5149d149d149d, 0x14c714c714c714c5, 0x151b151b151b14c7, 0x14a014a014a0151b, 0x14a314a314a314a0, 0x14aa14aa14aa14a3, 0x158d158b158b14aa, 0x14b414871487158d, 0x15a315a315a314b4, 0x15dd15dd15dd15a3, 0x160b160b160b15dd, 0x164b164b164b160b, 0x166e166e166e164b, 0x168816881688166e, 0x168d168d168d1688, 0x16b016b016b0168d, 0x16e816e816e816b0, 0x17041704170416e8, 0x1722172217221704, 0x1597159715971722, 0x14b714b714b71597, 0x14ba14ba14ba14b7, 0x148c148c148c14ba, 0x14c018331833148c, 0x14a714a714a714c0, 0x174d1749174914a7, 0x174617511751174d, 0x1746, 0x970095008d0000, 0x9f009d009b0099, 0x2f402f200a500a1, 0x30302fa02f802f6, 0x30f034303140305, 0x392038303740365, 0x546054003b003a1, 0x93055905440548, 0x5e305d505680566, 0x687067e062905e6, 0x71a060706cf06ac, 0x7a7078107230734, 0x861076d083e06af, 0x77306b2056b0890, 0x98e060a095d0682, 0x996099409920990, 0x9a3093a06920998, 0x6020adc0a800a31, 0xb7c073e0ae30b10, 0x78a0b3e05d30a2b, 0x8430a1405d80cd6, 0xde4086d0a270ba6, 0xe3e061106950b44, 0x1bd50e440e420e40, 0x1bee1bec1be21bd7, 0x1c851f041f0b1be0, 0x1cc71cb71cac1c9e, 0x1d9d1ec61ebe1eb1, 0x1cae1ca01c871cc5, 0x1cf01cd31cc91cb9, 0x1d5c1d481d3f1d22, 0x1d891d7c1ccd1d6c, 0x1da41d9f1caa1d8e, 0x1dc01dbe1d551c8d, 0x1de81dca1dbc1d3d, 0x1ce01e4e1e231e04, 0x1eaf1e9e1cd11e8b, 0x1eca1ec81ec01eb3, 0x1d0c1ee31c9c1ce4, 0x8b00881cb51ef1, 0x1abb19f419ef1a7f, 0x19fb1abf1abd19f6, 0x1ac31ac11a021a00, 0x1acb1ac91ac71ac5, 0x1a111a0c1a071a51, 0x1a1a1a181a131a5b, 0x1a391a2e1a2c1a22, 0x1a481a431a3e, 0x1a8319f200000000, 0x1a8b1a891a871a85, 0x1a8f1a8d00000000, 0x1a971a951a931a37, 0x1a201a9900000000, 0x1aa31aa11a9f1a9d, 0x1a2a1aa500000000, 0x1aa9, 0x90e4e0e480e46, 0x1b2f0e4a0e4c, 0x1b381b361b311bcf, 0x1bd31bd11b3d, 0x0, 0x0, 0x0, 0x0, 0xe630f350f330000, 0xf1c00000e950f0e, 0xe9b0f1e0f202776, 0xea70e9f1b140e9d, 0xeab0eaf0eb30f28, 0xeb90f120e740f10, 0xec30f2c0f2a0eef, 0x27d30ec7277027d1, 0xed70e6d27d50efd, 0x27d70edf05d80ed9, 0xf260ee70ee50ee3, 0xef10f2427780f22, 0xf180eff00001bdc, 0xe870e850f0c0f1a, 0x27db27d90e89, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x277a00000000, 0x277d, 0x0, 0x0, 0x2780000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2786278300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2789000000000000, 0x278c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2792000000000000, 0x27950000278f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279b279800000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x279e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27a427a100000000, 0x27b327af27ab27a7, 0x27b7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27bb000000000000, 0x27c227c927be27c6, 0x27cd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae300000602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e300000568, 0x68700000000, 0x71a06070000, 0x6af07a707810000, 0x89008610000083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc00000a3109a3, 0x73e0ae30b100000, 0xb3e05d30a2b0b7c, 0xa1405d80cd60000, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e6000005d50568, 0x687067e0629, 0x734071a06070000, 0x6af07a707810723, 0x89008610000083e, 0x682077306b2056b, 0x93a06920000095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e6000005d50568, 0x687067e0629, 0x734071a060706cf, 0x7a700000723, 0x890086100000000, 0x682077306b2056b, 0x93a06920000095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x93a0692060a095d, 0xadc0a800a3109a3, 0x73e0ae30b100602, 0xb3e05d30a2b0b7c, 0xa1405d80cd6078a, 0x86d0a270ba60843, 0x61106950b440de4, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x61106950b440de4, 0xe8d0e76, 0xf990f970f950f40, 0x100a0fbb0fb90f9b, 0x103f103d103b100c, 0x1063104510431041, 0x106c106a100a1065, 0x10921090108e106e, 0x114710e31b50077f, 0x116b114d114b1149, 0x120b11cd11cb116d, 0x122b1229120f120d, 0x1255124d124b122d, 0x1299125b12591257, 0x1b4b129f129d129b, 0x1299120b11cb114d, 0xf950f40124b124d, 0xfb90f9b0f990f97, 0x103b100c100a0fbb, 0x10431041103f103d, 0x100a106510631045, 0x108e106e106c106a, 0x1b50077f10921090, 0x114b1149114710e3, 0x11cb116d116b114d, 0x120f120d120b11cd, 0x124b122d122b1229, 0x125912571255124d, 0x129d129b1299125b, 0x11cb114d1b4b129f, 0x124b124d1299120b, 0xf990f970f950f40, 0x100a0fbb0fb90f9b, 0x103f103d103b100c, 0x1063104510431041, 0x106c106a100a1065, 0x10921090108e106e, 0x114710e31b50077f, 0x116b114d114b1149, 0x120b11cd11cb116d, 0x122b1229120f120d, 0x1255124d124b122d, 0x1299125b12591257, 0x1b4b129f129d129b, 0x1299120b11cb114d, 0xf950f40124b124d, 0xfb90f9b0f990f97, 0x103b100c100a0fbb, 0x10431041103f103d, 0x100a106510631045, 0x108e106e106c106a, 0x1b50077f10921090, 0x114b1149114710e3, 0x11cb116d116b114d, 0x120f120d120b11cd, 0x124b122d122b1229, 0x125912571255124d, 0x129d129b1299125b, 0x11cb114d1b4b129f, 0x124b124d1299120b, 0xf990f970f950f40, 0x100a0fbb0fb90f9b, 0x103f103d103b100c, 0x1063104510431041, 0x106c106a100a1065, 0x10921090108e106e, 0x114710e31b50077f, 0x116b114d114b1149, 0x120b11cd11cb116d, 0x122b1229120f120d, 0x1255124d124b122d, 0x1299125b12591257, 0x1b4b129f129d129b, 0x1299120b11cb114d, 0x12ff12fd124b124d, 0x314030500000000, 0x3740365030f0343, 0x3b003a103920383, 0x30f034303140305, 0x392038303740365, 0x314030503b003a1, 0x3740365030f0343, 0x3b003a103920383, 0x30f034303140305, 0x392038303740365, 0x314030503b003a1, 0x3740365030f0343, 0x3b003a103920383, 0x0, 0x0, 0x0, 0x0, 0x13521350134e1346, 0x136c136413591357, 0x13861384137f1371, 0x13931391138f138a, 0x13a713a513971395, 0x13b413b013ab13a9, 0x13e0276a13c013bb, 0x13d713e813c913c4, 0x1350134e134613db, 0x1364135913571352, 0x1384137f1371136c, 0x13971393138f138a, 0x13ab13a913a713a5, 0x13d313b413b213b0, 0x13d513cb13c213c4, 0x13d92768, 0x0, 0x0, 0x0, 0x0, 0x158b14a0149d1482, 0x14a314b418330000, 0x1597172214a7166e, 0x168d15a314ba14b7, 0x14871704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b158d, 0x18c118e518f518bf, 0x14a0149d0000, 0x14a300000000148c, 0x1597172214a70000, 0x168d15a314ba14b7, 0x1704160b16e8, 0x14aa151b14c715dd, 0x16b00000164b0000, 0x0, 0x14a000000000, 0x14a3000000000000, 0x1597000014a70000, 0x168d15a314ba0000, 0x1704160b0000, 0x14aa0000000015dd, 0x16b00000164b0000, 0x18c1000018f50000, 0x14a0149d0000, 0x14a300000000148c, 0x172214a7166e, 0x168d15a314ba14b7, 0x1704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b0000, 0x18e5000018bf, 0x158b14a0149d1482, 0x14a314b41833148c, 0x1597000014a7166e, 0x168d15a314ba14b7, 0x14871704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b158d, 0x0, 0x158b14a0149d0000, 0x14a314b418330000, 0x1597000014a7166e, 0x168d15a314ba14b7, 0x14871704160b16e8, 0x14aa151b14c715dd, 0x16b01688164b158d, 0x0, 0x3f103160307030a, 0x4fa04de04ab0468, 0x5310520050b, 0x0, 0x10a0106010200fe, 0x11a01160112010e, 0x12a01260122011e, 0x13a01360132012e, 0x14a01460142013e, 0x15a01560152014e, 0x5e31bfc0162015e, 0x93605e5076d, 0x5e605e305d50568, 0x6ac0687067e0629, 0x734071a060706cf, 0x6af07a707810723, 0x8900861076d083e, 0x682077306b2056b, 0x76f06b1060a095d, 0x933082a08690863, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x761075e00000000, 0x76c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x606, 0x0, 0x0, 0x0, 0x1d5c1d4d1c72, 0x0, 0x0, 0x0, 0x1da620a521622249, 0x213e25e421331fc6, 0x229923a422b01fcc, 0x229d201b21f7204f, 0x2612240e24d82045, 0x224f237e20c12125, 0x26521f9e1f982265, 0x225f20b31fac21ac, 0x24a22484224b2626, 0x32922cd236e20b7, 0x266e20e720512418, 0x0, 0x1c0c1c041c001c18, 0x1c081c201c101c1c, 0x1c14, 0x0, 0x20af21f9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30f034303140305, 0x392038303740365, 0x3b003a1, 0x0, 0x27dd1fba1fb21fb6, 0x1fed1fe91fe71fdf, 0x1ff51ff91ff31ff1, 0x2005200327e51f12, 0x1f1427df20152007, 0x202327e3201b200b, 0x202d202b1fd42027, 0x1f18203f203b28a1, 0x20532051204d204b, 0x20672061205f1f1a, 0x20752071206f206d, 0x2093208b20872085, 0x2099209920992097, 0x20a720a3239627eb, 0x20b520b120ad27ed, 0x20c720c520bf20c9, 0x20d520d120cf20cb, 0x20df20db20db20d9, 0x20fd20eb20e520e3, 0x20f520f120ff20ef, 0x2109210721232041, 0x210d210f2105210b, 0x2129212727ef2119, 0x214821372133212d, 0x2150214e27f327f1, 0x1f1c2156214c2152, 0x215e215e215a1f1e, 0x2170216e216c27f5, 0x217a217827f72174, 0x21841f20217e21e9, 0x27fb21902192218c, 0x219a219c27fd2196, 0x1f2221a821a6219e, 0x21b821b621b421b0, 0x21c91f2627ff1f24, 0x28b521d121cd21cb, 0x25382803280321dd, 0x28111f2821e521e5, 0x1f2a21f121ed2865, 0x22092205220321fb, 0x22131f2c1f2e2211, 0x2221221f22152805, 0x222b222922212223, 0x22352231222f2233, 0x224121bd22392237, 0x226322592251224d, 0x2267225b2261280b, 0x2279280d2275226b, 0x227d1f30226f2273, 0x1f32227f22852281, 0x22a7280f2291228d, 0x22bb1f3822b522c7, 0x201f201d1f341f36, 0x1f6a252222bd22c9, 0x22dd22d322d122cf, 0x22e71f3a281922d9, 0x281d22f822f422e1, 0x1f3c22fe22eb22fa, 0x230a230423022300, 0x23141f3e230e281f, 0x231c1f4023162821, 0x2823232a23282322, 0x2827233a282527f9, 0x234a233c23442340, 0x23562354235a2352, 0x23502829235e235c, 0x23761f42236c236a, 0x23842366282b2374, 0x23902386282f282d, 0x23921f44238c238e, 0x27e1239e2398239a, 0x283523ac283123a6, 0x283723c623bc23b6, 0x283b283923d223d0, 0x23ea1f4623e823e0, 0x23f823f61f481f48, 0x1f4a240423fe23fc, 0x283f241e283d2410, 0x2841242c28012424, 0x1f4e1f4c28452843, 0x284b284728492448, 0x244e244e244c284d, 0x1f5424541f522452, 0x2462245e28511f56, 0x247a28531f582468, 0x2496248a28572855, 0x249e249c249a1f5a, 0x24aa285b285b2859, 0x24b624b4285d1f5c, 0x1f6024c4285f1f5e, 0x286324d024c824cc, 0x24e624e21f6224dc, 0x286928671f6424ee, 0x286d24fa286b1f66, 0x286f250a25062500, 0x2518287325142871, 0x252625241f682813, 0x2875215825281f6c, 0x2538281728152877, 0x25501f6e2646253a, 0x2554205b2552254e, 0x2879255c25582556, 0x256a2568255e255a, 0x25802576256c2560, 0x2574257225702566, 0x1f70287d287f287b, 0x2887258a25862584, 0x1f741f722881258c, 0x259c1f7628852883, 0x25a825a225a0259e, 0x25b225aa25ac25a6, 0x1f7825b425b025ae, 0x25c21f7a25ba25b8, 0x25cc25ca288925c4, 0x288b1f1625d21f7c, 0x25e81f801f7e288d, 0x288f260a260225f4, 0x2628262226162614, 0x262c262e27e72893, 0x263e263827e92632, 0x2664265e28972895, 0x2680266a28992668, 0x268e268426882686, 0x1f822696289b2690, 0x26b61f84289d269a, 0x28a3289f26c221a0, 0x28a526d61f881f86, 0x26e226e228a71f8a, 0x1f8c26f228a926e6, 0x27082704270026fa, 0x2720271228ab1f8e, 0x27281f921f902726, 0x28b128af1f9428ad, 0x27441f96273a28b3, 0x2752274e274a2748, 0x28b72756, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +0000000000000000000000000000002000000000000002A0", +cast(immutable size_t[]) x" +00000000000001000000000000000A000000000000002360", +cast(immutable size_t[]) x" +040203020202010007060202020202050802020202020202000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000030002000100000007000600050004000A000900080000 +00000000000C000B000F000E000D0000001100100000000000150014001300120019001800170016001B001A00000000 +0000000000000000000000000000001C001E0000001D00000000001F0000000000000000000000000000000000000000 +000000000000000000000000000000000000002100200000000000220000000000000024002300000000000000000000 +00000025000000000000002700000026000000280000000000000029000000000000002A000000000000002B00000000 +00000000002C00000000002E002D0000003100300000002F000000000033003200000000003400000035000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000003800370036000000000000000000000000000000000000000000000000 +003B003A0039000000000000003D003C00410040003F003E00450044004300420049004800470046004D004C004B004A +00510050004F004E000000000053005200570056005500540000005A00590058005E005D005C005B006100000060005F +000000000062000000000000000000000063000000000000006700660065006400000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000690000000000680000006A0000000000000000000000000000000000000000 +006B0000000000000000000000000000006C00000000000000000000000000000000000000000000006E00000000006D +007200710070006F00000075007400730079007800770076007D007C007B007A0080007F007E00000000000000000081 +00850084008300820089008800870086008D008C008B008A00910090008F008E00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000009200930000000000000094000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +009600950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000009A009900980097009E009D009C009B00A200A100A0009F000000A500A400A3 +00A900A800A700A600AD00AC00AB00AA00B100B000AF00AE00B500B400B300B200B900B800B700B600BD00BC00BB00BA +00C100C000BF00BE00C500C400C300C200C900C800C700C600CD00CC00CB00CA00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000CF00CE0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000D100D00000000000D20000000000000000000000000000000000000000000000000000 +000000D300000000000000000000000000000000000000000000000000D4000000000000000000000000000000D50000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000D6000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00D800D700000000000000DA00D900000000000000000000000000000000000000000000000000000000000000000000 +00DE00DD00DC00DB00E200E100E000DF00E600E500E400E300E800DC00DB00E700EB00EA00E900DE00EE00ED00EC00E2 +00F200F100F000EF00F600F500F400F30000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00F900F800F7000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000FD00FC00FB00FA0000000000FF00FE +000000000000000000000000000000000000000000000000000000000000000001030102010101000000000000000104 +000001070106010500000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000001080000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000010C010B010A01090110010F010E010D +011401130112011101180117011601150000000000000119000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000001000000000000000000000692000000150009000000000000 +030F03430000000000000000120F00030000078A031400480000049403C603CE058605730570056D05F8000005B005A6 +06580631062E062B06F906EA06E706E407AC07A907920000000007E607C207AF08BA08B708B4000000000000096208CE +09C509B209AF09AC0A4A000009EF09E50AB60A8F0A8C0A890B580B4C0B490B460C610C5E0C44000000000C9B0C770C64 +0D710D6E0D6B00000E1E00000E0F0D8509CB058C09C805890A3E05EC0A0D05CE0A4405F20A4105EF0A71061A0A4705F5 +0AA50647000000000AB306550AB006520ABC065E0AD306750B0406A00AFE069A0B0D06A90B0706A3000000000B1906BA +0B5206F00B4F06ED0B6E070F0B5506F30B3A06D8000006F60BB1072E0B76071707500BCF0743000007400BD207460BDC +078F000000000BCC07980C50079E0C41000000000F300C4A0C9107DC0C8607D1000000000CA507F00D20085B0D0A0845 +0D2E086F0D10084B0D4C088D0D3508760D6008A90D3B087C000000000D5708A00D7B08C40D7408BD0D9B08E40D8208CB +0DC709100D9E08E70E1209650DEC094209820E2C097C097108430614060D0E32000000000CB107FC0000000000000000 +000000000000000008F30000000000000000000000000DAA000000000000000000000000000000000000000000000000 +000000000000000007360A6A0613060C078607830BBC073D070309F605B70C3508EA0CA807F30B6208D50D9008D90DA1 +08D10D9408DD0D8C09E805A900000D880E680E5D09E105A20B0A06A6000000000CCF081A0BAB07280F070E820CD2081D +0A67061006090B79000000000AFB069709F205B30C3E078C0E6F0E600E650E5A09FC05BD09F905BA0AC206640ABF0661 +0B6807090B6507060CAE07F90CAB07F60D1608510D13084E0DA708F00DA408ED0D5D08A60D49088A0B2206C300000000 +000000000000000009DE059F000000000C9E07E90ACC066E0C9407DF0C7E07C90E18096B0C9707E20000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0A14073E0EB70B100DE40EE90EE10EDD0000000000000695000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000004B00240012000F0000000000270006 +0B4408430A2B0EB10000000000000F0A0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002B00000004001A000000000000001D00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000F2E00000054000000000000054600000000 +000000000000000007410F45001C0003000010110FC00FA0109910730000104A00000000000011E20000000000000000 +0000000000000000000000000000000000000000000000000000000000000000107C101A0000000011D21176115210EC +000000000000127000000000000000000000000000000000000000000000000000000000000000000000000000000000 +126911DB00000000000012A8126012321073106E11CB11470000124B1299107C00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000001255124D120B00000000114D100A +00000000106A00000000000000000000130A00001313130D1301000000000000000000000000000000001334131F132B +000000000000000000000000000000000000000013250000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000137900000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000135400001361135B13C6000000000000 +00000000000000000000139C137313810000000000000000000000000000000000000000000000000000000000000000 +000000000000000013D013CD000000000000000000000000000000000000000000001366131600000000000000000000 +00000000000000000000000000000000134B130713481304135E13100000000013E213DD00000000136E131C13691319 +1376132200000000138C132E137C132813EA13E5000000001399133113BD134313A2133A139F13370000000013AD133D +0000000013B613400000000000000000000000000000000013ED00000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000001494149100000000000018751497183A +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000001906183D149A0000 +00000000000018BC0000000000000000000018FD00001918000000000000000000000000000000000000000000000000 +191500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000192D000000000000000000000000000019360000000000000000193900000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +19241921191E191B19331930192A19270000000000000000000000000000000019450000000000000000000000001948 +00000000000000000000000000000000000000000000000019420000193F193C00000000000000000000000000000000 +0000000000000000000000000000000019570000000000000000195A0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1951194E194B000000001954000000000000000000000000000000000000000019630000000019660000000000001969 +000000000000000000000000000000000000000000000000000000001960195D00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000196C00000000000000000000000000000000 +000000000000000000000000000000001975196F00000000000000000000197200000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000019780000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000197B1985000000000000 +1981197E0000198800000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001991198B00000000000000000000198E00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000001994000000000000199E199A199700000000000000000000000000000000 +0000000000000000000000000000000019A1000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000019AA0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000019A719A400000000000000000000000000000000 +000000000000000000000000000019AD0000000000000000000000000000000000000000000000000000000000000000 +19B2000000000000000000000000000000000000000000000000000019B50000000019B80000000019BB000000000000 +000000000000000000000000000019BE000000000000000000000000000000000000000019AF00000000000000000000 +19C100000000000019DC19E019C400000000000019E319E700000000000000000000000019C700000000000000000000 +0000000000000000000000000000000019CD000000000000000000000000000000000000000000000000000019D00000 +000019D30000000019D6000000000000000000000000000000000000000019D900000000000000000000000000000000 +0000000019CA000000000000000000000000000000000000000019EA0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019ED +000000000000000000001AE30000000000001AE900001AE600001AEF00001AEC00001AF2000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001AF5000000000000000000001AF800001B0100001AFE1AFB0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000005D50E58056806870E7C062905E6071A060706CF06AC +0000078107230734076D06AF0E8B07A706920773056B0890093A1B040E910E8F0EA30EA10A800A310B7C000006020EA5 +0E97078A0E7805D30BA60CD61B081B06086D0EC91B0C0A27114B114911471B0E0A140AE3129B129911491147086D0A27 +0000129B1299124D00000000000000000000000000000000000000000000000000000000000013880000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0E930000000000000EA50E6B0E9909A30EB50EAD0EA90ADC1B100EBF0EBD0EBB0F161B120EC50F140ED10ECF0ECB0ECD +0EEB0EDB0ED50ED30EF50EF30E800EED06110EF90EF71B0A11CB0F050F030F010A1605DA0A0A05CB0A1C05E00A1905DD +0A6E06170A4D05FB0A7D06260A74061D0A7A06230A7706200AAC064E0AA8064A0AD9067B0AD606780AF206840ACF0671 +0B1C06BD0B01069D0B1F06C00B2506C60B2B06CC0B2806C90B5B06FC0B7107120BAE072B0BA807250BD507490BB40731 +0BE207560BD8074C0C1507750BDF07530C1B077B0C1807780C4D079B0C4707950C5307A10C5607A40C8207CD0C7A07C5 +0C8D07D80C8907D40CF2083B0CEF08380D1908540D0D08480D23085E0D1C08570D4208830D3808790D3E087F0D310872 +0D51089D0D4508860D6608AF0D5A08A30DC4090D0D6308AC0DCA09130DCD09160D7E08C70D7708C00DE1092A0DDE0927 +0DE9093F0DE6093C0DEF09450DF209480E0409570DF8094B0E1B096E0E07095A0E3809880E2F097F0D540B2E0E3B098B +0D3809A90E240DF5000000000000000009EC05AD09FF05C009B5057609B9057A09BD057E09C1058209D205930A0205C3 +09DA059B09CE058F0A0605C709D605970AB9065B0AC506670A9606380AA206440A9E06400A9206340AC8066A0A9A063C +0B6B070C0B5F07000CA207ED0CC808130C6707B20C6B07B60C6F07BA0C7307BE0CB808030CCB08160CC0080B0CB407FF +0CC4080F0CBC08070D9808E10DC1090A0DAD08F60DB108FA0DB508FE0DB909020E0C095F0DBD09060E2109740E270977 +000000000E1509680000000000000000111E10FC111B10F91130110E112711050F730F510F700F4E0F850F630F7C0F5A +1163115811601155000000001167115C0FB10FA60FAE0FA3000000000FB50FAA11A21180119F117D11B4119211AB1189 +0FE80FC60FE50FC30FFA0FD80FF10FCF11FC11ED11F911EA120411F5120011F1102F1020102C101D1037102810331024 +1243123812401235000000001247123C105B10501058104D00000000105F1054128A127B1287127812921283128E127F +10820000107F0000108A00001086000012D412B212D112AF12E612C412DD12BB10C1109F10BE109C10D310B110CA10A8 +1152114F10EC10E511D211CF1176116F1260125D1232122F0000000012A812A1112211001139111711341112112B1109 +0F770F550F8E0F6C0F890F670F800F5E11A6118411BD119B11B8119611AF118D0FEC0FCA10030FE10FFE0FDC0FF50FD3 +12D812B612EF12CD12EA12C812E112BF10C510A310DC10BA10D710B510CE10AC114410E810F310F61140113D000010EF +0F450F420F480F4B002A11CD002A0F9211C811720020005111C411C1000011790FC00FBD0FA00F9D00350031002D1007 +11E211DE11D511D811E61208000000001011100E1014101700440040003C00001270126C12631266127412961252124F +10731070107610790998001C0018106712FA12A40000000012F612F3000012AB10991096104A104700000039000310E0 +0001000100010001000100010001000100000001000100010000000000000000000000001B160000004E000000000000 +000000000000000000000000000000000000000000000000000002FF02FC02FA00000000000000000001000000000000 +1B1C0000000000001B2B1B2800001B1F00000000000000000000000C0000008F00000000000000000563000000000000 +0000000000920560000000000000000000000000000000001B2300000000000000000000000000000001000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000AE303050392038303740365 +1B5A02F403B003A10B3E00A500A10544030F03430314030503920383037403651B5A02F403B003A1000000A500A10544 +0B44078A0A8006920A2B0B7C0B100EA108430CD60B3E05D30000000000000BA600000000000000000000000000000000 +000000000000084200000000000000000000000000000000000000000000000000000000000000000000000000000000 +0E5005E309A509A10E7E0A250A21000006AC06020E5300000E740B1006AC06AC0A2B073406CF06CF0000078907810000 +076D083E06AF000000000000076D076D0000089A089208660000077F0000060A05B0071A0000060A0A80000005E305D5 +07230000067E06291415140D13FF078A068000000AE3141A10630F971149124B0000000000001B580A800A3105E60000 +00000000073E0AE3000000000000000003CA03C103E203DA0498045903D2045503DE04E703D604CF03BE051104EB049C +06DE06D406D106CF0922091E091B06B209530950068206E1072305E605E307340B400B360B330AE30DD90DD50DD2086D +0E000DFD0B440B4305D30A3109A30A2B0000000000000000000000000000000000000000030D00000000000000000000 +000000000000000000000000000000001B3A1B3300000000000000000000000000000000000000000000000000000000 +000000000000000000001B3F000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000001B451B481B42000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000001B4D000000001B5200000000000000001B55 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000001B5F00001B5C +00000000000000001B6E00001B651B620000000000001B71000000000000000000000000000000000000000000000000 +000000001B7500001B7B000000001B78000000001B7E0000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000001B840000055600000000000000000000000000000000055B054A1B810000 +000000001B8A1B87000000001B901B8D000000001B961B930000000000000000000000001B9C1B99000000001BA81BA5 +000000001BAE1BAB00000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000001BC01BBD1BBA1BB700000000000000000000000000000000 +000000000000000000000000000000001BB41BB11BA21B9F00000000000000001BC61BC300000000000000001BCC1BC9 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00001BE61BE4000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0365030F0343031403A10392038303740342032F031C03B0038203730364035503F703AF03A0039100E600E200D900A3 +00F600F200EE00EA00B100AC00A700FA00C500C000BB00B600DD00D400CF00CA036803590346031903A4039503860377 +03450332031F03B3038503760367035803FA03B203A303940172016E016A01660182017E017A01760192018E018A0186 +01A2019E019A019601B201AE01AA01A601C201BE01BA01B605D5056801CA01C6067E062905E605E3060706CF06AC0687 +078107230734071A076D083E06AF07A706B2056B08900861060A095D068207730A3109A3093A06920B1006020ADC0A80 +0A2B0B7C073E0AE30CD6078A0B3E05D30BA608430A1405D80B440DE4086D0A2700000305061106950000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000001B690000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000552054F0542 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000001BD900000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B2073E +0000000000000000000000000000000000000000000000001BDE00000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000232E00000000000000000000000000000000000000000000 +000000000000000000000000000000002764000000000000000000000000000000000000000000000000000000000000 +1FB81FB01FAA1F981FCA1FC61FC21FBC201120091FFD1FD02039202920212019206B2057203D203B207F207920772073 +209D209B208F208D210120F720A920A12131212F212B212121662160214A21392180217E217C217621AA21A4218E218C +21C121BA21B221AE21E121DD21DB21C521F321EB21E721E322492247223D220122972295228B2289032522A3229F229B +231222D5032922C3232C232623202318233623342332233023BE23B82394233823C823C423C223C023E623E223D423CA +240E240C240824062428242624142412243C243A24382436245C245A2458244624A02490248E246E24CE24BC24AC24A8 +250424FE24F424F02510250E250C25082530252C251E251C2540253C25362534254A25482544254225C025BE25A4259A +25E225DE25DA25C4260A2606260425E626262624260E260C264426362634262A266C265C264A26482692267C26782676 +26B426AE269C269426CE26CC26C826BC26DA26D826D226D026F026EE26EC26DE270C270226FE26FC271627142710270E +2724271C271A2718273A27382732273027442742273E273C27542750274C2746275E275C275A27560000000027662762 +000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000001BF800000000000020832081207F0000000000000000 +00000000000000000000000000000000000000000000000000001C3000001C2D00001C3600001C3300001C3C00001C39 +00001C4200001C3F00001C4800001C4500001C4E00001C4B1C5400001C510000000000001C5700000000000000000000 +1C6000001C5D1C5A1C691C6600001C6300001C6F1C6C0000000000001C781C7500000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000001C2A00870000000000001C7B1C820000008A +00000000000000000000000000000000000000000000000000001CF200001CD500001D4100001CA500001D5E00001D4A +00001D7900001D6E00001D8B00001D7E00001D9A00001D901DA600001DA10000000000001CBF00000000000000000000 +1DEA00001DD51DCC1E101E0600001DF100001E2D1E250000000000001D591E5000000000000000000000000000000000 +0000000000000000000000000000000000000000000000001EF3000000001CB000001F061F011EFC1D501F0F00000000 +00000000000000000000000000000000000000000000000000000000000000001ABB19F419EF000019FB1ABF1ABD19F6 +1AC31AC11A021A001ACB1AC91AC71AC51A111A0C1A071A511A1A1A181A131A5B1A391A2E1A2C1A2219F21A481A431A3E +1A891A871A851A831A371A8F1A8D1A8B1A991A971A951A931AA11A9F1A9D1A201AA91A2A1AA51AA31ACD1A4F1A4D1A7F +1AD51AD31AD11ACF1ADB1A531AD91AD71A591A571A551ADD1A631A611A5F1A5D1A6B1A691A671A651A731A711A6F1A6D +1AE11ADF1A771A751AAB1A7D1A7B1A791AB31AB11AAF1AAD00001AB91AB71AB51FC61F98000000001FAC1FA020F91F9E +1FA61FBC24161FA21FD02103213E1F9A01E901E001D701CE020D020401FB01F20245023C0233022501DB01D20257024E +01FF01F601ED01E40237022902110208025B0252024902400000021E0216022E02A00268027002600284026402880274 +02C402B00290026C02A402EC02B802C002D002B402BC02AC02D402E402C8029802A8029C0278028C029402E8027C02CC +02E002DC028002D824B0229521C320D300000000000000000000000000000000041C0411040608310440043904320427 +0475046E044E044704850482047F047C1A0219FB19F619EF1A1A1A131A0C1A071A3E1A391A2E1A2219F819F11A481A43 +1A0E1A091A0419FD1A301A241A1C1A151A4A1A451A401A3B00001A1F1A271A3320F91F9E1FC61F9820111F9C20131FC8 +23940329207F1FBE2101267C22D5233822F222CD22ED0325247C261023CE20B9214A241A2494205D234820911FFB2654 +213C20251FDD26E021AC1FA21FAC1FA02164216A207B20B32089261A1FDB2442048E048B0488213504B704B404B10491 +04C304C004BD04BA04E404CC04C904C604D604A3034E033B05290518050304F2034D033A0327053A07390A820A8506B4 +1CB91CAE1CA01C871D221CF01CD31CC91D6C1D5C1D481D3F1D8E1D891D7C1CCD1C8D1DA41D9F1CAA1D3D1DC01DBE1D55 +1E041DE81DCA1DBC1E8B1CE01E4E1E231EB31EAF1E9E1CD11CE41ECA1EC81EC01EF11D0C1EE31C9C1FD81F041EFF1EFA +1C9A1C941C8F1C891CBB1CB31CA81CA21CE21CCF1CCB1CC21CDD1CD81CEB1CE61CFF1D061CFA1CF51D1C1D151D0E1D0B +1D3A1D331D2C1D101D611D571D531D441D851D811D711D661D301DB21DA91D931DD81DE41DC61DBB1DFB1DF41DCF1DDF +1E1A1E131DED1E001E301E441E1F1E091E3E1E391E4A1E341E671E531E5B1E281E741E6E1E6A1E611E851E811E7D1E79 +1EA01E951E921E8D1EBA1EB51D171EA41ED81ED31ECE1EC21D1E1EE81EE51EDD03610352033F0311039D038E037F0370 +033E032B03BB03AC037E036F0360035103BA03AB039C038D04230418040D0402056A0A560B12042E0A5C0CE90C5B0A12 +21BC06DB0A630A5F22EF22AB213B22B20BED12110C290CDD0689075B071C0B7E0C2C0CE00B8F0A2906010BF9121D1214 +068C07640B81068D0A590C001220089612230C380AEF0B970C060B9A0A330C030C0A0B9D0A370A360C1E0BA10A3B0A3A +07680B8506910C220D030CFD0CF906900C1212260C3B0CEC0BF012170C2F0CE30C320CE6076F0B8907720B8C0BF3121A +05D7099C077E0BB705E805FF0A300A2D06AE0B1606940A530BA50722071F0B3D0BC90BC50BC20BBF08230C0E0BFC0BF6 +0D28082E08260CD805D1092D0939086C036C035D034A033703A80399038A037B03490336032303B70389037A036B035C +03FE03B603A70398042A041F04140409044A0443043C04350AF704780471045100000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013B913B2 +0000000000000000000000000000000000000000000000000000000000000000000000000000276E0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +067E05E300000000000000000000083E000000000E7A0E72000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000027740EC12772276C +00000000000000000000000000000000000000000EFB0000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000261C263622C52608276220AB1FAE237820DD267C2144276224FC243422392142 +265A25D025B6259823EE23A2234C23061FC027062670257C259623B423102095258E23882198272E25BC252A225325D8 +23DA235822CF21D12065202F1FE32660244423B2230C22872630259E259225082462272C271E26C4268A256E24DE2482 +21DF211F25F22732246623CC251A24BA2186211D26C0261824D6237C236223082520206326A024EA24E0249820332035 +2255260026A4257A21701FB425F823062075242423E4220B1FA421FD1FEB246A209F24D42293234225EA257E244A2115 +225D233E264823281FCE2422226D255A24CA22F62031200F2069267A25F0254622A121D9214A20C3270A2698246C238A +22C1205727402734222D21BF2642231E23A823822283223B251624E424922400268C264E2582263A23A020CD20592043 +220721CF25EA25C623DE24B82324226921A2217020FB1FD6250223FA23EC220D26C626BE267E25122674248C1FE526E4 +1FF71FC4221926B2230622992182217226582588243223AE2055269E22B9275E2370235422E522DF24D22460242023F2 +26A62243201326EA263C236421941FEF23E422E9221D21F5218A20BB204726AA234622FC22D722AE25C824F8242A23F0 +207D26B8267825CE240223B020BD23722736272226AC259024A8252E236022E3239C23D824C024AE204925621FD225FE +24C6225721C72041264022BF234E216821D525DE26A225C00000000020E91FFF000022B700002113243E23DC20370000 +248A2480247E24700000250424C226CA000025F600002594000026662650000026F626F40000000026B02662272A26F8 +206120031FF91FE720EF20E12087206721882117211120F3222B22272213218C22BB22A5228D223723802368235A22F8 +246423F423BA23AA24782474247622F224882486247C247A24E424B224A4249A250A24F624EC24E82580254C254C2532 +25FC25FA25E025D42650264C2620261E220F26E826DC26BA00000000253E28331FE1200D202D1FA8206D205F20172001 +20ED20DF20D720E121462140211B211321D721D3215C21542223221721FF21EF22372225222B221B227B227722712245 +22D122CF22B7228F23542328232022DB238E23802376237A23D623BC245623AA241C240A23FC23DC2440243E2430242E +246824502452244824DA24BE24B224A62564250A24F224E425DC25D625B2257825EE25F625EC25E025FC25F425F825FA +2656263E2620260226BA26A82682267226E226DC26D426CA28092762271226E81F501F3C281B280728912861284F1F52 +000000002760275800000000000000000AE10AE60AE20ADE00000D2B0D2B0AE500000000000000000000000000000000 +13F900000000000013F613FC13F313F00000000000000000147D000014300000141F141A13FF145114621446140B1439 +1475147202F4147814041401146E146A141C1417140F14070000142A14271421143B14361433142D0000144800001443 +14530000144E144B145F145C000014561424147A14671464140A1459143E141218C918C918C318C318CB18CB18C918C9 +18CF18CF18CB18CB18C718C718CF18CF18CD18CD18C718C718C518C518CD18CD18E718E718C518C518E918E918E718E7 +18D318D318E918E918D118D118D318D318D518D518D118D118D718D718D518D518DD18DD18D718D718DF18DF18DB18DB +18E318E318D918D918EB18EB18E118E118EF18EF18EB18EB18F318F318EF18EF18F118F118F318F318F518F518F118F1 +18F718F718F718F718FB18FB1918191818F918F918FB18FB163C163C18F918F900000000191519150000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +18ED00000000000018AE18ED18ED18ED18B218AA18AA18AE190D190D190618B2190B190B1900190018B618B618B618B6 +1878187814C014C0189C189C18B818B818A818A818AC18AC18B418B418B018B018A018A018A018B4190F190F190F190F +18A018901880187C14A914A2149F18A414C914C214BF14B6151514F814E314D8152F1526151D151814DC14CD15371532 +14E7157F157C14E015C515B715B015A51650164D163E160D167316701665165B16B21620168F168A16F016ED16EA16B5 +1706170116FE16F71724171F171C170D1730172D172A172717551741173E173316241637177317641504150014FC178B +17D8150C150815D11814180317FA17EB182A181F181C18171855184E1847182D158F1872186F185E0064005D18421599 +008000790072006B18941890188C188814B3148618A418A014C214BF14B914B6150F14F814F514F21523152015181515 +1532152F15291526171F171C170116FE173E173317301724178B162416371741180017FD15D1179018171814180E1803 +185E185B18581842187C1872186F1869189818901884188014B614A914A2149F14E314D814C914BC15371526151214F8 +157C14E014DC14CD15B715B015A514E7163E1618160D15C51665165B1650164D1620168F168A167016ED16EA16B516B2 +170D170616F716F01730172D172A17271773176417551733150014FC148B163717EB17D815D11504181C1811180317FA +184E18471830181F18901698185E185514F814BC14B6189815C5152C152615121730160215F715D41811180316371733 +16D716D01698185E16AA1685168216DE15D716C716C416AD153B1608160515DA14EB14D514D114A616681648164514AD +15F115E615DF166B161B15C215F415F716AA16851682166215D716C716C416AD153B1608160515DA14EB14D514D114A6 +16681648164514AD15F115E615DF166B161B15C215F415F715F115E615DF16621673160215D415F715DF15B715B015A5 +168A167315F115E600000000148E148E0000000000000000000000000000000000000000000000000000000000000000 +14DF14DB14DB14CC150314FF14FB14E6156C1570154E154E15CC15AC15A815B315D015D015C815CC15E9164116101610 +15FA15FA15E215E9165E165315FE15FE167A16761676165E169E169E1692167E16BC16C016B816A21714171016F316F3 +1758176B176F1767177D17761776175817B617AD17A9177D17C117BD179E17961822179A0000000017DF17F217EE1826 +1806180A17E317DF14D414AC18611861150B14EA14EE14D01552153A15561507165715ED161415BA184A185117811760 +17F6171817CC1865173A16A6176717101736175C17C517DB1565153E17DB175C173614A516FA17A217E715BE16411692 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000148414891709163A16961594161E17B1 +1542162716231635000000000000159C0000000000000000000000000000000000000000000000000000000000000000 +05401BE21BE002F61C260093008D05460000000002FF1C28000000000000000000000000000000000000000000000000 +0000000000000000000000000000000009961B181B1A02FC0E3E00A500A109961BF41BFE1BFA0E421BE41BEA1BE81BF6 +1BF01BEE1BEC1BE6098E000000001BF2000C000C000C0992099609960996000C000002FA1BE002F6008D009305400546 +0E3E00A500A11B1A00971BFE1BFA0E4202F802F402F2009D00000544055905480566009B009909900000000000000000 +0000005A16CA005716CD00680000006116DB007616D4006F16E5008416E2007D14941491149114801497183A183A1494 +1875187518751497149D14821482187514C5149D149D149D14C714C714C714C5151B151B151B14C714A014A014A0151B +14A314A314A314A014AA14AA14AA14A3158D158B158B14AA14B414871487158D15A315A315A314B415DD15DD15DD15A3 +160B160B160B15DD164B164B164B160B166E166E166E164B168816881688166E168D168D168D168816B016B016B0168D +16E816E816E816B017041704170416E81722172217221704159715971597172214B714B714B7159714BA14BA14BA14B7 +148C148C148C14BA14C018331833148C14A714A714A714C0174D1749174914A7174617511751174D0000000000001746 +00970095008D0000009F009D009B009902F402F200A500A1030302FA02F802F6030F0343031403050392038303740365 +0546054003B003A1009305590544054805E305D5056805660687067E062905E6071A060706CF06AC07A7078107230734 +0861076D083E06AF077306B2056B0890098E060A095D0682099609940992099009A3093A0692099806020ADC0A800A31 +0B7C073E0AE30B10078A0B3E05D30A2B08430A1405D80CD60DE4086D0A270BA60E3E061106950B441BD50E440E420E40 +1BEE1BEC1BE21BD71C851F041F0B1BE01CC71CB71CAC1C9E1D9D1EC61EBE1EB11CAE1CA01C871CC51CF01CD31CC91CB9 +1D5C1D481D3F1D221D891D7C1CCD1D6C1DA41D9F1CAA1D8E1DC01DBE1D551C8D1DE81DCA1DBC1D3D1CE01E4E1E231E04 +1EAF1E9E1CD11E8B1ECA1EC81EC01EB31D0C1EE31C9C1CE4008B00881CB51EF11ABB19F419EF1A7F19FB1ABF1ABD19F6 +1AC31AC11A021A001ACB1AC91AC71AC51A111A0C1A071A511A1A1A181A131A5B1A391A2E1A2C1A2200001A481A431A3E +1A8319F2000000001A8B1A891A871A851A8F1A8D000000001A971A951A931A371A201A99000000001AA31AA11A9F1A9D +1A2A1AA5000000000000000000001AA900090E4E0E480E4600001B2F0E4A0E4C1B381B361B311BCF00001BD31BD11B3D +00000000000000000000000000000000000000000000000000000000000000000E630F350F3300000F1C00000E950F0E +0E9B0F1E0F2027760EA70E9F1B140E9D0EAB0EAF0EB30F280EB90F120E740F100EC30F2C0F2A0EEF27D30EC7277027D1 +0ED70E6D27D50EFD27D70EDF05D80ED90F260EE70EE50EE30EF10F2427780F220F180EFF00001BDC0E870E850F0C0F1A +000027DB27D90E8900000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000277A00000000000000000000277D00000000000000000000000000000000 +278000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000278627830000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000002789000000000000000000000000278C +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000002792000000000000000027950000278F +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +279B27980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000279E000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000027A427A100000000 +27B327AF27AB27A700000000000027B70000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000027BB00000000000027C227C927BE27C600000000000027CD0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +05E605E305D5056806AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B +093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843 +061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E +0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE3000006020B3E05D30A2B0B7C0A1405D80CD6078A +086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723 +08900861076D083E0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C +0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E30000056800000687000000000000071A06070000 +06AF07A707810000089008610000083E0682077306B2056B093A0692060A095D0ADC00000A3109A3073E0AE30B100000 +0B3E05D30A2B0B7C0A1405D80CD60000086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E0629 +0734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D0ADC0A800A3109A3 +073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE405E6000005D50568 +00000687067E06290734071A0607000006AF07A707810723089008610000083E0682077306B2056B093A06920000095D +0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE4 +05E6000005D5056800000687067E06290734071A060706CF000007A70000072308900861000000000682077306B2056B +093A06920000095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843 +061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E +0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A +086D0A270BA60843061106950B440DE406AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D +0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A093A0692060A095D0ADC0A800A3109A3 +073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E305D50568 +06AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D +0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE4 +05E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723061106950B440DE4000000000E8D0E76 +0F990F970F950F40100A0FBB0FB90F9B103F103D103B100C1063104510431041106C106A100A106510921090108E106E +114710E31B50077F116B114D114B1149120B11CD11CB116D122B1229120F120D1255124D124B122D1299125B12591257 +1B4B129F129D129B1299120B11CB114D0F950F40124B124D0FB90F9B0F990F97103B100C100A0FBB10431041103F103D +100A106510631045108E106E106C106A1B50077F10921090114B1149114710E311CB116D116B114D120F120D120B11CD +124B122D122B1229125912571255124D129D129B1299125B11CB114D1B4B129F124B124D1299120B0F990F970F950F40 +100A0FBB0FB90F9B103F103D103B100C1063104510431041106C106A100A106510921090108E106E114710E31B50077F +116B114D114B1149120B11CD11CB116D122B1229120F120D1255124D124B122D1299125B125912571B4B129F129D129B +1299120B11CB114D0F950F40124B124D0FB90F9B0F990F97103B100C100A0FBB10431041103F103D100A106510631045 +108E106E106C106A1B50077F10921090114B1149114710E311CB116D116B114D120F120D120B11CD124B122D122B1229 +125912571255124D129D129B1299125B11CB114D1B4B129F124B124D1299120B0F990F970F950F40100A0FBB0FB90F9B +103F103D103B100C1063104510431041106C106A100A106510921090108E106E114710E31B50077F116B114D114B1149 +120B11CD11CB116D122B1229120F120D1255124D124B122D1299125B125912571B4B129F129D129B1299120B11CB114D +12FF12FD124B124D031403050000000003740365030F034303B003A103920383030F0343031403050392038303740365 +0314030503B003A103740365030F034303B003A103920383030F03430314030503920383037403650314030503B003A1 +03740365030F034303B003A1039203830000000000000000000000000000000000000000000000000000000000000000 +13521350134E1346136C13641359135713861384137F137113931391138F138A13A713A51397139513B413B013AB13A9 +13E0276A13C013BB13D713E813C913C41350134E134613DB13641359135713521384137F1371136C13971393138F138A +13AB13A913A713A513D313B413B213B013D513CB13C213C40000000013D9276800000000000000000000000000000000 +00000000000000000000000000000000158B14A0149D148214A314B4183300001597172214A7166E168D15A314BA14B7 +14871704160B16E814AA151B14C715DD16B01688164B158D18C118E518F518BF000014A0149D000014A300000000148C +1597172214A70000168D15A314BA14B700001704160B16E814AA151B14C715DD16B00000164B00000000000000000000 +000014A00000000014A30000000000001597000014A70000168D15A314BA000000001704160B000014AA0000000015DD +16B00000164B000018C1000018F50000000014A0149D000014A300000000148C0000172214A7166E168D15A314BA14B7 +00001704160B16E814AA151B14C715DD16B01688164B0000000018E5000018BF158B14A0149D148214A314B41833148C +1597000014A7166E168D15A314BA14B714871704160B16E814AA151B14C715DD16B01688164B158D0000000000000000 +158B14A0149D000014A314B4183300001597000014A7166E168D15A314BA14B714871704160B16E814AA151B14C715DD +16B01688164B158D000000000000000003F103160307030A04FA04DE04AB0468000005310520050B0000000000000000 +010A0106010200FE011A01160112010E012A01260122011E013A01360132012E014A01460142013E015A01560152014E +05E31BFC0162015E0000093605E5076D05E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723 +08900861076D083E0682077306B2056B076F06B1060A095D0933082A0869086300000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000761075E00000000000000000000076C +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000606000000000000000000000000000000000000000000000000 +00001D5C1D4D1C720000000000000000000000000000000000000000000000001DA620A521622249213E25E421331FC6 +229923A422B01FCC229D201B21F7204F2612240E24D82045224F237E20C1212526521F9E1F982265225F20B31FAC21AC +24A22484224B2626032922CD236E20B7266E20E72051241800000000000000001C0C1C041C001C181C081C201C101C1C +0000000000001C1400000000000000000000000020AF21F9000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000030F0343031403050392038303740365 +0000000003B003A1000000000000000027DD1FBA1FB21FB61FED1FE91FE71FDF1FF51FF91FF31FF12005200327E51F12 +1F1427DF20152007202327E3201B200B202D202B1FD420271F18203F203B28A120532051204D204B20672061205F1F1A +20752071206F206D2093208B20872085209920992099209720A720A3239627EB20B520B120AD27ED20C720C520BF20C9 +20D520D120CF20CB20DF20DB20DB20D920FD20EB20E520E320F520F120FF20EF2109210721232041210D210F2105210B +2129212727EF2119214821372133212D2150214E27F327F11F1C2156214C2152215E215E215A1F1E2170216E216C27F5 +217A217827F7217421841F20217E21E927FB21902192218C219A219C27FD21961F2221A821A6219E21B821B621B421B0 +21C91F2627FF1F2428B521D121CD21CB25382803280321DD28111F2821E521E51F2A21F121ED286522092205220321FB +22131F2C1F2E22112221221F22152805222B22292221222322352231222F2233224121BD22392237226322592251224D +2267225B2261280B2279280D2275226B227D1F30226F22731F32227F2285228122A7280F2291228D22BB1F3822B522C7 +201F201D1F341F361F6A252222BD22C922DD22D322D122CF22E71F3A281922D9281D22F822F422E11F3C22FE22EB22FA +230A23042302230023141F3E230E281F231C1F40231628212823232A232823222827233A282527F9234A233C23442340 +23562354235A235223502829235E235C23761F42236C236A23842366282B237423902386282F282D23921F44238C238E +27E1239E2398239A283523AC283123A6283723C623BC23B6283B283923D223D023EA1F4623E823E023F823F61F481F48 +1F4A240423FE23FC283F241E283D24102841242C280124241F4E1F4C28452843284B284728492448244E244E244C284D +1F5424541F5224522462245E28511F56247A28531F5824682496248A28572855249E249C249A1F5A24AA285B285B2859 +24B624B4285D1F5C1F6024C4285F1F5E286324D024C824CC24E624E21F6224DC286928671F6424EE286D24FA286B1F66 +286F250A250625002518287325142871252625241F6828132875215825281F6C253828172815287725501F6E2646253A +2554205B2552254E2879255C25582556256A2568255E255A25802576256C256025742572257025661F70287D287F287B +2887258A258625841F741F722881258C259C1F762885288325A825A225A0259E25B225AA25AC25A61F7825B425B025AE +25C21F7A25BA25B825CC25CA288925C4288B1F1625D21F7C25E81F801F7E288D288F260A260225F42628262226162614 +262C262E27E72893263E263827E926322664265E289728952680266A28992668268E2684268826861F822696289B2690 +26B61F84289D269A28A3289F26C221A028A526D61F881F8626E226E228A71F8A1F8C26F228A926E627082704270026FA +2720271228AB1F8E27281F921F90272628B128AF1F9428AD27441F96273A28B32752274E274A27480000000028B72756 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //12544 bytes -enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)([ 0x0, 0x20, 0x220], [ 0x100, 0x800, 0x1000], [ 0x302020202020100, 0x205020202020204, 0x602020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100000000, 0x6000500040003, 0x9000800070000, 0xb000a, 0x0, 0xd000c00000000, 0x10000f000e, 0x14001300120011, 0x16001500000000, 0x0, 0x0, 0x170000, 0x1800000000, 0x0, 0x0, 0x0, 0x0, 0x1a00190000, 0x1b00000000, 0x1d001c0000, 0x0, 0x1e00000000, 0x200000001f, 0x2100000000, 0x2200000000, 0x2300000000, 0x2400000000, 0x0, 0x0, 0x26002500000000, 0x280027, 0x290000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b002a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30002f002e002d, 0x34003300320031, 0x38003700360035, 0x3c003b003a0039, 0x3d, 0x0, 0x3e0000, 0x410040003f, 0x45004400430042, 0x48000000470046, 0x490000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4a00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4c004b00000000, 0x50004f004e004d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x54005300520051, 0x58005700560055, 0x5c005b005a0059, 0x5f005e005d, 0x6200610060, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x640063, 0x650000, 0x0, 0x0, 0x0, 0x6600000000, 0x0, 0x0, 0x670000, 0x0, 0x680000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x690000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6b006a00000000, 0x6d006c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x710070006f006e, 0x75007400730072, 0x79007800770076, 0x7d007c007b007a, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x250012000f000c, 0x850000004f0045, 0xcb00a400a1009e, 0x13301240121011e, 0x1a0019d01880000, 0x1da01b601a3, 0x2730270026d0000, 0x2f30287, 0x33803250322031f, 0x398000003620358, 0x3de03b703b403b1, 0x446043a04370434, 0x4b404b1049c0000, 0x4ee04ca04b7, 0x58a058705840000, 0x61c0000060d059e, 0x33e002b033b0028, 0x38c00790380006d, 0x392007f038f007c, 0x3a2008f03950082, 0x3cd00ba00000000, 0x3db00c803d800c5, 0x3e400d103fb00e8, 0x41000fd040a00f7, 0x419010604130100, 0x41c0109, 0x440012a043d0127, 0x45c01490443012d, 0x130, 0x471015d0462014f, 0x170047701630000, 0x47a01660484, 0x185000000000000, 0x18e04a801940499, 0x4a2, 0x4e401d004d901c5, 0x4f801e4, 0x5450231052f021b, 0x54b023705350221, 0x56902550552023e, 0x57b026405580244, 0x572025b, 0x594027d058d0276, 0x5b4029d059b0284, 0x5e002c905b702a0, 0x61002f605f502de, 0x3110628030b0302, 0x6310314062e, 0x50401f0, 0x0, 0x0, 0x2ac000000000000, 0x5c3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13d036900560000, 0x2a304fb01e70450, 0x28e05a9029205ba, 0x28a05ad029605a5, 0x35b0048000005a1, 0x653064a03540041, 0x416010300000000, 0x522020e046b0157, 0x65f065c05250211, 0x465, 0x40700f4, 0x365005204960182, 0x656064d06500647, 0x36f005c036c0059, 0x3ea00d703e700d4, 0x456014304530140, 0x50101ed04fe01ea, 0x53b022705380224, 0x5c002a905bd02a6, 0x578026105660252, 0x425011200000000, 0x0, 0x351003e00000000, 0x4f101dd03f400e1, 0x4e701d304d101bd, 0x61602fc04ea01d6, 0x0, 0x0, 0x0, 0x66b00000010000d, 0x137, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x662, 0x0, 0x100000000, 0x0, 0x6450670063d0000, 0x72c06df06c3, 0x798077800000759, 0x8d1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x781073500000000, 0x8c10867084707e9, 0x92f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x92808ca00000000, 0x95f091f08fd, 0x9b4000000000000, 0x9b7, 0x0, 0x0, 0x9c3000009cc09c6, 0x9ba000000000000, 0x0, 0x9ed09d809e4, 0x0, 0x0, 0x9de0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa200000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0500000a0e0a08, 0xa41000000000000, 0x0, 0xa2f0a1a0a26, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa470a4400000000, 0x0, 0x0, 0xa1109cf0000, 0x0, 0x0, 0x0, 0xa0209c009ff09bd, 0xa0b09c900000000, 0xa4d0a4a00000000, 0xa1709d50a1409d2, 0xa1d09db00000000, 0xa2909e70a2309e1, 0xa530a5000000000, 0xa2c09ea0a3e09fc, 0xa3509f30a3209f0, 0xa3809f6, 0xa3b09f9, 0x0, 0xac10abe00000000, 0xaca0ac40ac7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xacd00000ad3, 0x0, 0x0, 0x0, 0xad0000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xae80000, 0x0, 0xaf10000, 0xaf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xadf0adc0ad90ad6, 0xaee0aeb0ae50ae2, 0x0, 0x0, 0xb00000000000000, 0xb03, 0x0, 0x0, 0x0, 0xafd00000afa0af7, 0x0, 0x0, 0x0, 0x0, 0xb12000000000000, 0xb1500000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0c0b090b060000, 0xb0f00000000, 0x0, 0x0, 0xb1e000000000b21, 0xb24, 0x0, 0x0, 0x0, 0xb1b0b18, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb27, 0x0, 0x0, 0x0, 0x0, 0xb300b2a00000000, 0xb2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb33, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb36, 0xb40000000000000, 0xb3c0b3900000b43, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4c0b4600000000, 0xb49, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb4f00000000, 0xb590b550b52, 0xb5f000000000000, 0x0, 0x0, 0xb620000, 0xb6500000000, 0xb68000000000000, 0x0, 0xb6b, 0x0, 0x0, 0xb5c0000, 0x0, 0xb6e000000000000, 0xb890b710000, 0xb8c, 0x0, 0xb740000, 0x0, 0x0, 0x0, 0xb7a000000000000, 0x0, 0x0, 0xb7d0000, 0xb8000000000, 0xb83000000000000, 0x0, 0xb86, 0x0, 0x0, 0xb770000, 0x0, 0x0, 0xb8f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb9200000000, 0xb9800000b95, 0xb9e00000b9b, 0xba100000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xba4000000000000, 0xba70000, 0xbb000000bad0baa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3830070037d006a, 0x389007603860073, 0x39f008c039b0088, 0x3ae009b03a50092, 0x3ab009803a80095, 0x3d400c103d000bd, 0x40100ee03fe00eb, 0x40400f103f700e4, 0x41f010c040d00fa, 0x422010f04280115, 0x42e011b042b0118, 0x4490136045f014c, 0x46e015a04680154, 0x47d016904740160, 0x48a01760480016c, 0x48d017904870173, 0x493017f0490017c, 0x4a50191049f018b, 0x4ab019704ae019a, 0x4d501c104cd01b9, 0x4e001cc04dc01c8, 0x52c021805290215, 0x53e022a0532021e, 0x54802340541022d, 0x55f024b05550241, 0x55b0247054e023a, 0x56c02580562024e, 0x581026a0575025e, 0x5dd02c6057e0267, 0x5e302cc05e602cf, 0x597028005900279, 0x5ec02d505e902d2, 0x5f202db05ef02d8, 0x5f802e105fb02e4, 0x60402ea060102e7, 0x61902ff060702ed, 0x6340317062b030e, 0x56f04310637031a, 0x6590000062205fe, 0x0, 0x35f004c0372005f, 0x3280015032c0019, 0x330001d03340021, 0x345003203750062, 0x34d003a0341002e, 0x379006603490036, 0x3e100ce03ed00da, 0x3be00ab03ca00b7, 0x3c600b303ba00a7, 0x3f000dd03c200af, 0x4590146044d013a, 0x4f501e1051b0207, 0x4ba01a604be01aa, 0x4c201ae04c601b2, 0x50b01f7051e020a, 0x51301ff050701f3, 0x5170203050f01fb, 0x5b1029a05da02c3, 0x5c602af05ca02b3, 0x5ce02b705d202bb, 0x60a02f005d602bf, 0x61f030506250308, 0x61302f9, 0x0, 0x81b07f9081807f6, 0x82d080b08240802, 0x69e067c069b0679, 0x6b0068e06a70685, 0x858084d0855084a, 0x85c0851, 0x6d406c906d106c6, 0x6d806cd, 0x89308710890086e, 0x8a50883089c087a, 0x70706e5070406e2, 0x71906f7071006ee, 0x8eb08dc08e808d9, 0x8f308e408ef08e0, 0x74a073b07470738, 0x7520743074e073f, 0x90e0903090b0900, 0x9120907, 0x76a075f0767075c, 0x76e0763, 0x949093a09460937, 0x9510942094d093e, 0x787000007840000, 0x78f0000078b0000, 0x98b096909880966, 0x99d097b09940972, 0x7c0079e07bd079b, 0x7d207b007c907a7, 0x847084407e907e2, 0x8c108be08670860, 0x91f091c08fd08fa, 0x95f0958, 0x81f07fd08360814, 0x831080f08280806, 0x6a2068006b90697, 0x6b4069206ab0689, 0x897087508ae088c, 0x8a9088708a0087e, 0x70b06e907220700, 0x71d06fb071406f2, 0x98f096d09a60984, 0x9a1097f09980976, 0x7c407a207db07b9, 0x7d607b407cd07ab, 0x84107e507f007f3, 0x83d083a000007ec, 0x670066d06730676, 0x8bc000006bd, 0x8b9086306400000, 0x8b508b20000086a, 0x6df06dc06c306c0, 0xbb90bb60bb30726, 0x8d108cd08c408c7, 0x8d508f700000000, 0x72c0729072f0732, 0xbc20bbf0bbc0000, 0x92f092b09220925, 0x933095509190916, 0x7780775077b077e, 0x31d063d063a0772, 0x9b1095b00000000, 0x9ad09aa00000962, 0x798079507590756, 0x64307df, 0xbc70bc5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79300000000, 0x4f015200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbcc0bc900000000, 0x0, 0x0, 0x0, 0x0, 0xbcf00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbd50bd80bd20000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbdb, 0xbde0000, 0xbe1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbe700000be4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbea0000, 0xbf0000000000bed, 0xbf30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf900000006, 0x0, 0x0, 0x900030bf60000, 0xbff0bfc, 0xc050c02, 0xc0b0c08, 0x0, 0xc110c0e, 0xc1d0c1a, 0xc230c20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc350c320c2f0c2c, 0x0, 0x0, 0x0, 0x0, 0xc290c260c170c14, 0x0, 0xc3b0c3800000000, 0xc410c3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc490c470000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc44, 0x0, 0x0, 0x0, 0xc5100000c4e, 0xc5700000c54, 0xc5d00000c5a, 0xc6300000c60, 0xc6900000c66, 0xc6f00000c6c, 0xc7500000c720000, 0xc780000, 0x0, 0xc8100000c7e0c7b, 0xc8a0c8700000c84, 0xc900c8d0000, 0xc960c93, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc4b, 0x0, 0xc9900000000, 0x0, 0x0, 0x0, 0xca200000c9f, 0xca800000ca5, 0xcae00000cab, 0xcb400000cb1, 0xcba00000cb7, 0xcc000000cbd, 0xcc600000cc30000, 0xcc90000, 0x0, 0xcd200000ccf0ccc, 0xcdb0cd800000cd5, 0xce10cde0000, 0xce70ce4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcea000000000c9c, 0xcf30cf00ced, 0xcf600000000, 0x124b125d0fb71241, 0x13270e290d831043, 0xe4f12930e991327, 0x116710cd0f550e97, 0x1279121511fd11e3, 0x109d106910190feb, 0xd8d12f3128911c7, 0x11e110790ff50e1d, 0x11d910510edb1309, 0x120311890f65121d, 0x108d10250fbd0eff, 0xe050dd90d9d127d, 0x10d310770ff10f95, 0x125911e711dd1171, 0x10e9130712fb12cf, 0x12a111b9114d1107, 0xf0b0e87122f130b, 0x10ed1083117d112f, 0xecb0e8512cb1249, 0x11471047102f0fed, 0x117f0e0312b11159, 0x114f11150ddd0ddf, 0xf67123d12b511c5, 0xebb0d8712350feb, 0xe1110c110950f27, 0xd7f0f1b0da510f1, 0xe2311450f9d1011, 0x122711c910d70e7d, 0xf6f100d126d1005, 0xd9110bf0f7b11a5, 0x113d0fdb0ddb0dc3, 0xe091291122d1195, 0xfa10f070e9f0e37, 0x12f712ab10f31053, 0xfb50df91313130d, 0xf490ef312690ffd, 0x106d104b0f910f57, 0x11791153111110af, 0x12a3127111cd1261, 0x10670e410dfb0de9, 0xf230efd1227120b, 0x1091112d10030f77, 0xee50ebb0e670d97, 0x116b10a9109b0f29, 0x12d112c912951175, 0x128d110f0d9f12dd, 0xdb10d8f0f3512c1, 0xfeb0f9f0ec70ebd, 0x127711d310cb1073, 0xdf712af0fad1323, 0x103b10210fd10fcb, 0x114310e710bd10a1, 0x12b70f5d0dc512e3, 0x126310310ed70da9, 0x10950fd50f390f17, 0xecf0e310deb12bb, 0x10150fe10fc30fa7, 0x120d116310c3109f, 0xe1312c5128f1213, 0x10b110750e33103d, 0x130f12ff12bd11db, 0x1121118b102d0fcf, 0x1063108b11331125, 0xded11ad0d93123b, 0x11390f690ef50de7, 0x12670fb3101b0eb5, 0xf03122112b31205, 0xe590db5, 0xfab00000e7b, 0x10cf108f0de10000, 0x110d1105110310f5, 0x116d113512d3, 0x1233000011df, 0x128312730000, 0x12e912e700000000, 0x12bf127f130512eb, 0xe010db90db30da1, 0xe5f0e530e170e07, 0xecd0e7f0e790e63, 0xf470f430f2f0ed1, 0xfaf0fa30f970f53, 0x1049103510270fdd, 0x10eb10a3107d106f, 0x10fd10f910fb10f7, 0x110b1109110110ff, 0x11531127111d1117, 0x11731161115b1157, 0x11cb11971197118d, 0x1239123712231219, 0x1273126f124f124d, 0xf2b12e112d912c7, 0x119313d6, 0xd9b0dc10dd70d81, 0xe0b0dff0dc90db7, 0xe5d0e510e490e53, 0xe9b0e950e830e7b, 0xf050f010eb10ea9, 0xf3f0f330f1d0f13, 0xf530f410f470f37, 0xf890f850f7f0f5f, 0xfbf0fbd0fab0f99, 0x102110050fff0fc7, 0x1057104910411045, 0x1089107f10e3106f, 0x10b910b510ab108f, 0x10d110cf10c910c7, 0x10ef10dd10df10d5, 0x114911311127111f, 0x11af1173115f1153, 0x121f121b11f911c3, 0x122b123312291223, 0x1239123112351237, 0x12751265124f123f, 0x12c712b91299128b, 0x12db12d912d512d3, 0x13ac132712f912e1, 0xd370d2313be13aa, 0x1434140413f20d39, 0x13251321, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xabb00000a7a0000, 0x0, 0x0, 0xab50ab200000000, 0xa590a560aae0aaa, 0xa680a650a5f0a5c, 0xa740a710a6b, 0xa830a800a7d0a77, 0xa8c00000a89, 0xa9500000a920a8f, 0xaa10a9e00000a98, 0xa6e0ab80aa70aa4, 0xa9b0a860a62, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x132900000000, 0x132c, 0x0, 0x0, 0x132f000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1335133200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1338000000000000, 0x133b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1341000000000000, 0x13440000133e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134a134700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x134d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1353135000000000, 0x1362135e135a1356, 0x1366, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x136a000000000000, 0x13711378136d1375, 0x137c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13800d8b0d850d89, 0xda70da30da10d99, 0xdaf0db30dad0dab, 0xdbb0db913880cf9, 0xcfb13820dc70dbd, 0xdd113860dcb0dbf, 0xdd70dd50d950dd3, 0xcff0de50de31444, 0xdf50df30df10def, 0xe070e010dff0d01, 0xe110e0f0e0d0e0b, 0xe1b0e190e170e15, 0xe210e210e210e1f, 0xe270e25105d138e, 0xe2f0e2d0e2b1390, 0xe3b0e390e350e3d, 0xe470e450e430e3f, 0xe510e4d0e4d0e4b, 0xe690e5b0e570e55, 0xe650e610e6b0e5f, 0xe710e6f0e890de7, 0xe750e770e6d0e73, 0xe8d0e8b13920e81, 0xe9d0e930e910e8f, 0xea50ea313961394, 0xd030eab0ea10ea7, 0xeb30eb30eaf0d05, 0xebb0eb90eb71398, 0xec30ec1139a0ebf, 0xec90d070ec50f0f, 0x139e0ed30ed50ed1, 0xedd0edf13a00ed9, 0xd090ee90ee70ee1, 0xef10eef0eed0eeb, 0xef70d0d13a20d0b, 0x14580eff0efb0ef9, 0x118f13a613a60f09, 0x13b40d0f0f0d0f0d, 0xd110f150f111408, 0xf250f210f1f0f19, 0xf2f0d130d150f2d, 0xf3d0f3b0f3113a8, 0xf470f450f3d0f3f, 0xf510f4d0f4b0f4f, 0xf5b0f590f550f53, 0xf730f6b0f630f61, 0xf750f6d0f7113ae, 0xf8713b00f830f79, 0xf8b0d170f7d0f81, 0xd190f8d0f930f8f, 0xfa513b20f9b0f97, 0xfaf0d1f0fa90fb9, 0xdcf0dcd0d1b0d1d, 0xd5111810fb10fbb, 0xfc90fc10fbf0fbd, 0xfd30d2113bc0fc5, 0x13c00fdd0fd90fcd, 0xd230fe30fd70fdf, 0xfef0fe90fe70fe5, 0xff70d250ff313c2, 0xffb0d270ff913c4, 0x13c6100710051001, 0x13ca100913c8139c, 0x1017100b1013100f, 0x102310211027101f, 0x101d13cc102b1029, 0x10410d2910391037, 0x104d103313ce103f, 0x1059104f13d213d0, 0x105b0d2b10551057, 0x13841065105f1061, 0x13d8107113d4106b, 0x13da1081107f107b, 0x13de13dc10871085, 0x10990d2d10971093, 0x10a710a50d2f0d2f, 0xd3110b310ad10ab, 0x13e210bb13e010b7, 0x13e410c513a410c1, 0xd350d3313e813e6, 0x13ee13ea13ec10d5, 0x10db10db10d913f0, 0xd3b10e10d3910df, 0x10e910e513f40d3d, 0x10ff13f60d3f10ef, 0x1113110d13fa13f8, 0x111b111911170d41, 0x112313fe13fe13fc, 0x112b112914000d43, 0xd47113714020d45, 0x14061141113b113f, 0x115511510d49114b, 0x140c140a0d4b115d, 0x14101165140e0d4d, 0x14121173116f1169, 0x117b141611771414, 0x118511830d4f13b6, 0x14180ead11870d53, 0x118f13ba13b8141a, 0x119b0d55126b1191, 0x119f0dfd119d1199, 0x141c11a711a311a1, 0x11b511b311a911a5, 0x11cb11c111b711ab, 0x11bf11bd11bb11b1, 0xd5714201422141e, 0x142a11d511d111cf, 0xd5b0d59142411d7, 0x11e50d5d14281426, 0x11ef11eb11e911e7, 0x11f911f111f311ed, 0xd5f11fb11f711f5, 0x12070d61120111ff, 0x1211120f142c1209, 0x142e0cfd12170d63, 0x12250d670d651430, 0x14321243123f1231, 0x1253125112471245, 0x12551257138a1436, 0x1265125f138c125b, 0x1281127b143a1438, 0x12971287143c1285, 0x12a5129b129f129d, 0xd6912a9143e12a7, 0x12c30d6b144012ad, 0x1446144212cd0ee3, 0x144812d70d6f0d6d, 0x12db12db144a0d71, 0xd7312e5144c12df, 0x12f512f112ef12ed, 0x12fd12f9144e0d75, 0x13030d790d771301, 0x145414520d7b1450, 0x13150d7d13111456, 0x131d131b13191317, 0x145a131f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000220", +cast(immutable size_t[]) x" +000000000000010000000000000008000000000000001000", +cast(immutable size_t[]) x" +030202020202010002050202020202040602020202020202000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000200010000000000060005000400030009000800070000 +00000000000B000A0000000000000000000D000C0000000000000010000F000E00140013001200110016001500000000 +000000000000000000000000000000000000000000170000000000180000000000000000000000000000000000000000 +000000000000000000000000000000000000001A001900000000001B000000000000001D001C00000000000000000000 +0000001E00000000000000200000001F0000002100000000000000220000000000000023000000000000002400000000 +000000000000000000000000000000000026002500000000000000000028002700000000002900000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002C002B002A000000000000000000000000000000000000000000000000 +000000000000000000000000000000000030002F002E002D00340033003200310038003700360035003C003B003A0039 +000000000000003D000000000000000000000000003E0000000000410040003F00450044004300420048000000470046 +000000000049000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000004A0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000004C004B000000000050004F004E004D00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000540053005200510058005700560055 +005C005B005A00590000005F005E005D0000006200610060000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000064006300000000006500000000000000000000 +000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000670000 +000000000000000000000000006800000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000006B006A000000000000006D006C000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000710070006F006E00750074007300720079007800770076007D007C007B007A +000000000000007E00000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00250012000F000C00850000004F004500CB00A400A1009E013301240121011E01A0019D01880000000001DA01B601A3 +02730270026D00000000000002F30287033803250322031F039800000362035803DE03B703B403B10446043A04370434 +04B404B1049C0000000004EE04CA04B7058A058705840000061C0000060D059E033E002B033B0028038C00790380006D +0392007F038F007C03A2008F0395008203CD00BA0000000003DB00C803D800C503E400D103FB00E8041000FD040A00F7 +041901060413010000000000041C01090440012A043D0127045C01490443012D00000000000001300471015D0462014F +01700477016300000000047A016604840185000000000000018E04A80194049900000000000004A204E401D004D901C5 +0000000004F801E405450231052F021B054B023705350221056902550552023E057B026405580244000000000572025B +0594027D058D027605B4029D059B028405E002C905B702A0061002F605F502DE03110628030B0302000006310314062E +00000000050401F00000000000000000000000000000000002AC00000000000000000000000005C30000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000013D036900560000 +02A304FB01E70450028E05A9029205BA028A05AD029605A5035B0048000005A10653064A035400410416010300000000 +0522020E046B0157065F065C05250211000000000000046500000000040700F403650052049601820656064D06500647 +036F005C036C005903EA00D703E700D40456014304530140050101ED04FE01EA053B02270538022405C002A905BD02A6 +0578026105660252042501120000000000000000000000000351003E0000000004F101DD03F400E104E701D304D101BD +061602FC04EA01D6000000000000000000000000000000000000000000000000066B00000010000D0000000000000137 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000662 +00000000000000000000000100000000000000000000000006450670063D00000000072C06DF06C30798077800000759 +00000000000008D100000000000000000000000000000000000000000000000000000000000000000000000000000000 +078107350000000008C10867084707E9000000000000092F000000000000000000000000000000000000000000000000 +00000000000000000000000000000000092808CA000000000000095F091F08FD09B400000000000000000000000009B7 +0000000000000000000000000000000009C3000009CC09C609BA0000000000000000000000000000000009ED09D809E4 +000000000000000000000000000000000000000009DE0000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000A2000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000A0500000A0E0A080A41000000000000 +000000000000000000000A2F0A1A0A260000000000000000000000000000000000000000000000000000000000000000 +00000000000000000A470A44000000000000000000000000000000000000000000000A1109CF00000000000000000000 +000000000000000000000000000000000A0209C009FF09BD0A0B09C9000000000A4D0A4A000000000A1709D50A1409D2 +0A1D09DB000000000A2909E70A2309E10A530A50000000000A2C09EA0A3E09FC0A3509F30A3209F0000000000A3809F6 +000000000A3B09F900000000000000000AC10ABE0000000000000ACA0AC40AC700000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000ACD00000AD30000000000000000 +000000000000000000000000000000000AD0000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000AE800000000000000000000000000000AF100000000000000000AF4 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000ADF0ADC0AD90AD60AEE0AEB0AE50AE200000000000000000000000000000000 +0B000000000000000000000000000B030000000000000000000000000000000000000000000000000AFD00000AFA0AF7 +00000000000000000000000000000000000000000000000000000000000000000B1200000000000000000B1500000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000B0C0B090B06000000000B0F0000000000000000000000000000000000000000 +0B1E000000000B210000000000000B24000000000000000000000000000000000000000000000000000000000B1B0B18 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B27 +00000000000000000000000000000000000000000000000000000000000000000B300B2A000000000000000000000B2D +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000B3300000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000B360B400000000000000B3C0B3900000B43000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000B4C0B46000000000000000000000B49 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000B4F0000000000000B590B550B52 +0B5F00000000000000000000000000000000000000000000000000000B62000000000B65000000000B68000000000000 +00000000000000000000000000000B6B00000000000000000000000000000000000000000B5C00000000000000000000 +0B6E00000000000000000B890B7100000000000000000B8C0000000000000000000000000B7400000000000000000000 +000000000000000000000000000000000B7A00000000000000000000000000000000000000000000000000000B7D0000 +00000B80000000000B8300000000000000000000000000000000000000000B8600000000000000000000000000000000 +000000000B7700000000000000000000000000000000000000000B8F0000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9200000000 +00000B9800000B9500000B9E00000B9B00000BA100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0BA4000000000000000000000BA700000BB000000BAD0BAA000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000003830070037D006A0389007603860073 +039F008C039B008803AE009B03A5009203AB009803A8009503D400C103D000BD040100EE03FE00EB040400F103F700E4 +041F010C040D00FA0422010F04280115042E011B042B011804490136045F014C046E015A04680154047D016904740160 +048A01760480016C048D0179048701730493017F0490017C04A50191049F018B04AB019704AE019A04D501C104CD01B9 +04E001CC04DC01C8052C021805290215053E022A0532021E054802340541022D055F024B05550241055B0247054E023A +056C02580562024E0581026A0575025E05DD02C6057E026705E302CC05E602CF059702800590027905EC02D505E902D2 +05F202DB05EF02D805F802E105FB02E4060402EA060102E7061902FF060702ED06340317062B030E056F04310637031A +06590000062205FE0000000000000000035F004C0372005F03280015032C00190330001D033400210345003203750062 +034D003A0341002E037900660349003603E100CE03ED00DA03BE00AB03CA00B703C600B303BA00A703F000DD03C200AF +04590146044D013A04F501E1051B020704BA01A604BE01AA04C201AE04C601B2050B01F7051E020A051301FF050701F3 +05170203050F01FB05B1029A05DA02C305C602AF05CA02B305CE02B705D202BB060A02F005D602BF061F030506250308 +00000000061302F90000000000000000081B07F9081807F6082D080B08240802069E067C069B067906B0068E06A70685 +0858084D0855084A00000000085C085106D406C906D106C60000000006D806CD089308710890086E08A50883089C087A +070706E5070406E2071906F7071006EE08EB08DC08E808D908F308E408EF08E0074A073B0747073807520743074E073F +090E0903090B09000000000009120907076A075F0767075C00000000076E07630949093A0946093709510942094D093E +0787000007840000078F0000078B0000098B096909880966099D097B0994097207C0079E07BD079B07D207B007C907A7 +0847084407E907E208C108BE08670860091F091C08FD08FA00000000095F0958081F07FD083608140831080F08280806 +06A2068006B9069706B4069206AB06890897087508AE088C08A9088708A0087E070B06E907220700071D06FB071406F2 +098F096D09A6098409A1097F0998097607C407A207DB07B907D607B407CD07AB084107E507F007F3083D083A000007EC +0670066D06730676000008BC000006BD08B908630640000008B508B20000086A06DF06DC06C306C00BB90BB60BB30726 +08D108CD08C408C708D508F700000000072C0729072F07320BC20BBF0BBC0000092F092B092209250933095509190916 +07780775077B077E031D063D063A077209B1095B0000000009AD09AA00000962079807950759075600000000064307DF +000000000BC70BC500000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000079300000000004F0152000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000BCC0BC9000000000000000000000000 +00000000000000000000000000000000000000000000000000000BCF0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000BD50BD80BD20000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BDB +000000000BDE00000000000000000BE10000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000BE700000BE40000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000BEA00000BF0000000000BED000000000BF300000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000BF9000000060000000000000000 +0000000000000000000900030BF60000000000000BFF0BFC000000000C050C02000000000C0B0C080000000000000000 +000000000C110C0E000000000C1D0C1A000000000C230C20000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000C350C320C2F0C2C +00000000000000000000000000000000000000000000000000000000000000000C290C260C170C140000000000000000 +0C3B0C3800000000000000000C410C3E0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000C490C470000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000C4400000000000000000000000000000000 +000000000000000000000C5100000C4E00000C5700000C5400000C5D00000C5A00000C6300000C6000000C6900000C66 +00000C6F00000C6C0C7500000C720000000000000C78000000000000000000000C8100000C7E0C7B0C8A0C8700000C84 +00000C900C8D0000000000000C960C930000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000C4B000000000000000000000C990000000000000000000000000000000000000000 +000000000000000000000CA200000C9F00000CA800000CA500000CAE00000CAB00000CB400000CB100000CBA00000CB7 +00000CC000000CBD0CC600000CC30000000000000CC9000000000000000000000CD200000CCF0CCC0CDB0CD800000CD5 +00000CE10CDE0000000000000CE70CE40000000000000000000000000000000000000000000000000000000000000000 +00000000000000000CEA000000000C9C00000CF30CF00CED00000CF600000000124B125D0FB7124113270E290D831043 +0E4F12930E991327116710CD0F550E971279121511FD11E3109D106910190FEB0D8D12F3128911C711E110790FF50E1D +11D910510EDB1309120311890F65121D108D10250FBD0EFF0E050DD90D9D127D10D310770FF10F95125911E711DD1171 +10E9130712FB12CF12A111B9114D11070F0B0E87122F130B10ED1083117D112F0ECB0E8512CB124911471047102F0FED +117F0E0312B11159114F11150DDD0DDF0F67123D12B511C50EBB0D8712350FEB0E1110C110950F270D7F0F1B0DA510F1 +0E2311450F9D1011122711C910D70E7D0F6F100D126D10050D9110BF0F7B11A5113D0FDB0DDB0DC30E091291122D1195 +0FA10F070E9F0E3712F712AB10F310530FB50DF91313130D0F490EF312690FFD106D104B0F910F5711791153111110AF +12A3127111CD126110670E410DFB0DE90F230EFD1227120B1091112D10030F770EE50EBB0E670D97116B10A9109B0F29 +12D112C912951175128D110F0D9F12DD0DB10D8F0F3512C10FEB0F9F0EC70EBD127711D310CB10730DF712AF0FAD1323 +103B10210FD10FCB114310E710BD10A112B70F5D0DC512E3126310310ED70DA910950FD50F390F170ECF0E310DEB12BB +10150FE10FC30FA7120D116310C3109F0E1312C5128F121310B110750E33103D130F12FF12BD11DB1121118B102D0FCF +1063108B113311250DED11AD0D93123B11390F690EF50DE712670FB3101B0EB50F03122112B31205000000000E590DB5 +00000FAB00000E7B10CF108F0DE10000110D1105110310F50000116D113512D300001233000011DF0000128312730000 +12E912E70000000012BF127F130512EB0E010DB90DB30DA10E5F0E530E170E070ECD0E7F0E790E630F470F430F2F0ED1 +0FAF0FA30F970F531049103510270FDD10EB10A3107D106F10FD10F910FB10F7110B1109110110FF11531127111D1117 +11731161115B115711CB11971197118D12391237122312191273126F124F124D0F2B12E112D912C700000000119313D6 +0D9B0DC10DD70D810E0B0DFF0DC90DB70E5D0E510E490E530E9B0E950E830E7B0F050F010EB10EA90F3F0F330F1D0F13 +0F530F410F470F370F890F850F7F0F5F0FBF0FBD0FAB0F99102110050FFF0FC710571049104110451089107F10E3106F +10B910B510AB108F10D110CF10C910C710EF10DD10DF10D5114911311127111F11AF1173115F1153121F121B11F911C3 +122B123312291223123912311235123712751265124F123F12C712B91299128B12DB12D912D512D313AC132712F912E1 +0D370D2313BE13AA1434140413F20D390000000013251321000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000ABB00000A7A0000 +000000000000000000000000000000000AB50AB2000000000A590A560AAE0AAA0A680A650A5F0A5C00000A740A710A6B +0A830A800A7D0A7700000A8C00000A890A9500000A920A8F0AA10A9E00000A980A6E0AB80AA70AA400000A9B0A860A62 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000132900000000000000000000132C +00000000000000000000000000000000132F000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000001335133200000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1338000000000000000000000000133B0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1341000000000000000013440000133E0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000134A134700000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000134D0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000013531350000000001362135E135A1356000000000000136600000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000136A00000000000013711378136D1375 +000000000000137C00000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000013800D8B0D850D890DA70DA30DA10D990DAF0DB30DAD0DAB0DBB0DB913880CF9 +0CFB13820DC70DBD0DD113860DCB0DBF0DD70DD50D950DD30CFF0DE50DE314440DF50DF30DF10DEF0E070E010DFF0D01 +0E110E0F0E0D0E0B0E1B0E190E170E150E210E210E210E1F0E270E25105D138E0E2F0E2D0E2B13900E3B0E390E350E3D +0E470E450E430E3F0E510E4D0E4D0E4B0E690E5B0E570E550E650E610E6B0E5F0E710E6F0E890DE70E750E770E6D0E73 +0E8D0E8B13920E810E9D0E930E910E8F0EA50EA3139613940D030EAB0EA10EA70EB30EB30EAF0D050EBB0EB90EB71398 +0EC30EC1139A0EBF0EC90D070EC50F0F139E0ED30ED50ED10EDD0EDF13A00ED90D090EE90EE70EE10EF10EEF0EED0EEB +0EF70D0D13A20D0B14580EFF0EFB0EF9118F13A613A60F0913B40D0F0F0D0F0D0D110F150F1114080F250F210F1F0F19 +0F2F0D130D150F2D0F3D0F3B0F3113A80F470F450F3D0F3F0F510F4D0F4B0F4F0F5B0F590F550F530F730F6B0F630F61 +0F750F6D0F7113AE0F8713B00F830F790F8B0D170F7D0F810D190F8D0F930F8F0FA513B20F9B0F970FAF0D1F0FA90FB9 +0DCF0DCD0D1B0D1D0D5111810FB10FBB0FC90FC10FBF0FBD0FD30D2113BC0FC513C00FDD0FD90FCD0D230FE30FD70FDF +0FEF0FE90FE70FE50FF70D250FF313C20FFB0D270FF913C413C610071005100113CA100913C8139C1017100B1013100F +102310211027101F101D13CC102B102910410D2910391037104D103313CE103F1059104F13D213D0105B0D2B10551057 +13841065105F106113D8107113D4106B13DA1081107F107B13DE13DC1087108510990D2D1097109310A710A50D2F0D2F +0D3110B310AD10AB13E210BB13E010B713E410C513A410C10D350D3313E813E613EE13EA13EC10D510DB10DB10D913F0 +0D3B10E10D3910DF10E910E513F40D3D10FF13F60D3F10EF1113110D13FA13F8111B111911170D41112313FE13FE13FC +112B112914000D430D47113714020D4514061141113B113F115511510D49114B140C140A0D4B115D14101165140E0D4D +14121173116F1169117B141611771414118511830D4F13B614180EAD11870D53118F13BA13B8141A119B0D55126B1191 +119F0DFD119D1199141C11A711A311A111B511B311A911A511CB11C111B711AB11BF11BD11BB11B10D5714201422141E +142A11D511D111CF0D5B0D59142411D711E50D5D1428142611EF11EB11E911E711F911F111F311ED0D5F11FB11F711F5 +12070D61120111FF1211120F142C1209142E0CFD12170D6312250D670D65143014321243123F12311253125112471245 +12551257138A14361265125F138C125B1281127B143A143812971287143C128512A5129B129F129D0D6912A9143E12A7 +12C30D6B144012AD1446144212CD0EE3144812D70D6F0D6D12DB12DB144A0D710D7312E5144C12DF12F512F112EF12ED +12FD12F9144E0D7513030D790D771301145414520D7B145013150D7D13111456131D131B1319131700000000145A131F +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); dstring decompCanonTable() nothrow @nogc pure @safe { static immutable dchar[5212] t = "\u0000\u003B\u0000\u003C\u0338\u0000\u003D\u0338\u0000\u003E\u0338\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041"d~ diff --git a/std/internal/unicode_grapheme.d b/std/internal/unicode_grapheme.d index 093ebd1c19f..d33e987de2c 100644 --- a/std/internal/unicode_grapheme.d +++ b/std/internal/unicode_grapheme.d @@ -19,19 +19,276 @@ package(std): static if (size_t.sizeof == 4) { //832 bytes -enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x80], [ 0x100, 0x80, 0xa00], [ 0x0, 0x20100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x40003, 0x60005, 0x10007, 0x30002, 0x50004, 0x70006, 0x20001, 0x40003, 0x60005, 0x10007, 0x30002, 0x50004, 0x70006, 0x20001, 0x40003, 0x60005, 0x10007, 0x30002, 0x50004, 0x70006, 0x80001, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x10000001, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x10, 0x1000000, 0x100000, 0x10000, 0x1000, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000080", +cast(immutable size_t[]) x" +000001000000008000000A00", +cast(immutable size_t[]) x" +000000000002010000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000020001000400030006000500010007000300020005000400070006000200010004000300060005 +000100070003000200050004000700060002000100040003000600050001000700030002000500040007000600080001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001000000101000000001000000001000000001000000001000000001010000001 +010000000010000000010000000010000000010000000010100000010100000000100000000100000000100000000100 +000000101000000101000000001000000001000000001000000001000000001010000001010000000010000000010000 +000010000000010000000010100000010100000000100000000100000000100000000100000000101000000101000000 +001000000001000000001000000001000000001010000001010000000010000000010000000010000000010000000010 +010000000010000000010000000010000000010000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //832 bytes -enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x80], [ 0x100, 0x80, 0xa00], [ 0x0, 0x20100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x40003, 0x60005, 0x10007, 0x30002, 0x50004, 0x70006, 0x20001, 0x40003, 0x60005, 0x10007, 0x30002, 0x50004, 0x70006, 0x20001, 0x40003, 0x60005, 0x10007, 0x30002, 0x50004, 0x70006, 0x80001, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xeffffffe, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xffffffef, 0xfeffffff, 0xffefffff, 0xfffeffff, 0xffffefff, 0xfffffeff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000080", +cast(immutable size_t[]) x" +000001000000008000000A00", +cast(immutable size_t[]) x" +000000000002010000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000020001000400030006000500010007000300020005000400070006000200010004000300060005 +000100070003000200050004000700060002000100040003000600050001000700030002000500040007000600080001 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000EFFFFFFEFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFEFFFFFFE +FEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFEFFFFFFEFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFF +FFFFFFEFEFFFFFFEFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFEFFFFFFEFEFFFFFFFFEFFFFFFFFEFFFF +FFFFEFFFFFFFFEFFFFFFFFEFEFFFFFFEFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFEFFFFFFEFEFFFFFF +FFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFEFFFFFFEFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEF +FEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFF0000000F000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //896 bytes -enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x80], [ 0x100, 0x80, 0xc00], [ 0x1010100, 0x1010101, 0x1010102, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20001, 0x3, 0x0, 0x40000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60005, 0x0, 0x0, 0x0, 0x70000, 0x8, 0x90000, 0xa0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30000, 0x0, 0x0, 0x4, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc, 0x0, 0x0, 0x80000000, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000000, 0x0, 0x0, 0x3f0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000080", +cast(immutable size_t[]) x" +000001000000008000000C00", +cast(immutable size_t[]) x" +010101000101010101010102010101010101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000002000100000003000000000004000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000060005000000000000000000000000 +000700000000000800090000000A00000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000003F00000000000000000000000000000000000000002000000000000000 +000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000300000000000000000000000000040000000000000000000040000000000000000000000000000000000000000000 +000000000000000000000000000000000000000020000000000020000000000000000000000000000000000000000000 +00000000000000000000000C000000000000000080000000000000020000000000000000000000000000000000000000 +00000000040000000000000000000000000003F000000000000000000000000000000000000000000000004000000000 +000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //1280 bytes -enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xd0], [ 0x100, 0x120, 0xe00], [ 0x2020100, 0x3020202, 0x2020402, 0x2060502, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020207, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x10001, 0x10001, 0x10002, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10003, 0x10001, 0x10001, 0x10001, 0x10004, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x60005, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10007, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10008, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x90001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0xb000a, 0xc000c, 0xc000c, 0xc000c, 0xc000c, 0xc000c, 0xc000c, 0xc000c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0xffffdbff, 0x0, 0x0, 0x80000000, 0xffffffff, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc800, 0x7f00, 0x0, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfff0000, 0x0, 0xffff0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f80000, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000D0", +cast(immutable size_t[]) x" +000001000000012000000E00", +cast(immutable size_t[]) x" +020201000302020202020402020605020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020702020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000010001000100010001000200010001000100010001000100010001 +000100010001000100010001000100010001000300010001000100010001000100010004000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010006000500010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100070001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010008000100010001000100010001000100010001000100010001000100010001000100010001 +0009000100010001000100010001000100010001000100010001000100010001000B000A000C000C000C000C000C000C +000C000C000C000C000C000C000C000C0001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001FFFFDBFF000000000000000080000000FFFFFFFF000020000000000000000000 +000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000 +000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000 +0000C80000007F00000000000000FFFF0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000080000000000000000000000000000000000000000000000000000000000000000FFF0000 +00000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000F000000000000000000000000000000000000000007F8000000000000000000000000000000000000 +FFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 +000000000000000000000000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //1856 bytes -enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xb0], [ 0x100, 0xe0, 0x2400], [ 0x1010100, 0x1010201, 0x4010103, 0x1050101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x1010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x8, 0x0, 0x0, 0x90000, 0xa0000, 0xc000b, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf000e, 0x110010, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x130012, 0x150014, 0x170016, 0x190018, 0x1b001a, 0x1c, 0x1e001d, 0x20001f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x210000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x220000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xc8000000, 0xde01, 0x0, 0xc, 0x80000000, 0x1981, 0x0, 0x8, 0xc0000000, 0x1, 0x0, 0x8, 0xc0000000, 0x1a01, 0x0, 0xc, 0x0, 0x1981, 0x0, 0x0, 0x80000000, 0x1dc6, 0x0, 0xe, 0x0, 0x1e, 0x0, 0xc, 0x40000000, 0xd9b, 0x80000, 0xc, 0x80000000, 0x1dc1, 0x0, 0xc, 0x0, 0x7f030000, 0xc0000, 0x0, 0x80000, 0x0, 0x0, 0x0, 0x80000, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x18020000, 0xc00000, 0x0, 0x10, 0x0, 0x0, 0x0, 0x200000, 0x100000, 0x0, 0x0, 0x0, 0xc0400000, 0x1bf, 0x0, 0x0, 0x1fb0e78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6000000, 0x0, 0xa00000, 0x7e000, 0x0, 0x0, 0x0, 0x0, 0x10, 0xe8000000, 0x1b, 0x0, 0x4, 0x4c2, 0x0, 0xc5c80, 0x0, 0x300ff0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800002, 0x0, 0x98, 0x0, 0x0, 0x3, 0xfff00000, 0xf, 0x0, 0x0, 0x0, 0xc0000, 0x0, 0x8, 0xcc300000, 0x1, 0x0, 0x0, 0x198000, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x20c800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16d8, 0x5, 0x0, 0x0, 0x0, 0x4, 0x1870000, 0x0, 0x0, 0x0, 0x1000, 0x60, 0x0, 0x4, 0x80380000, 0x4001, 0x0, 0x0, 0x2c7000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xc, 0x80000000, 0x399e, 0xc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe00000, 0x23, 0x0, 0x0, 0x5a060000, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f030000, 0x0, 0x0, 0x0, 0x58070000, 0x0, 0x0, 0x0, 0x40d000, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1007000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21be0000, 0x5, 0x0, 0x0, 0x0, 0xf00e0000, 0x10, 0x0, 0x2000000, 0x1800000, 0x0, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x40008000, 0x0, 0x0, 0x0, 0x120200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x587c00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600000, 0x8, 0xc0300000, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xffffffff, 0xff, 0x0, 0x0, 0x30000, 0x0, 0x0, 0x0, 0x2040, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000B0", +cast(immutable size_t[]) x" +00000100000000E000002400", +cast(immutable size_t[]) x" +010101000101020104010103010501010101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000010000000300020005000400070006 +00000008000000000000000000090000000A0000000C000B0000000D0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000F000E00110010000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00130012001500140017001600190018001B001A0000001C001E001D0020001F00000000000000000000000000000000 +000000000000000000000000002100000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000008C80000000000DE01000000000000000C800000000000198100000000 +00000008C0000000000000010000000000000008C000000000001A01000000000000000C000000000000198100000000 +000000008000000000001DC6000000000000000E000000000000001E000000000000000C4000000000000D9B00080000 +0000000C8000000000001DC1000000000000000C000000007F030000000C000000000000000800000000000000000000 +0000000000080000000000000000000000000000C0000000000000008000000000000000000000000000000000000000 +000000001802000000C00000000000000000001000000000000000000000000000200000001000000000000000000000 +00000000C0400000000001BF000000000000000001FB0E78000000000000000000000000000000000000000000000000 +060000000000000000A000000007E0000000000000000000000000000000000000000010E80000000000001B00000000 +00000004000004C200000000000C5C800000000000300FF0000000000000000000000000000000000000000000800002 +0000000000000098000000000000000000000003FFF000000000000F000000000000000000000000000C000000000000 +00000008CC3000000000000100000000000000000019800000002000000000000000000000000000000000000020C800 +00000000000000000000000000000000000000000000000000000000000016D800000005000000000000000000000000 +000000040187000000000000000000000000000000001000000000600000000000000004803800000000400100000000 +00000000002C70000000000000000000000000000000000000000000000000070000000C800000000000399E0000000C +000000000000000000000000000000000000000000E000000000002300000000000000005A0600000000000200000000 +00000000000000000000000000000000000000004F030000000000000000000000000000580700000000000000000000 +000000000040D00000000000000000000000000000000040000000000000000000000000000000000000000000000000 +00000000010070000000000000000000000000000000000000000000000000000000000021BE00000000000500000000 +0000000000000000F00E0000000000100000000002000000018000000000000000800000000000000000000000000000 +000000004000800000000000000000000000000000120200000000000000000000000000000000000000000000000000 +00587C000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000 +00000008C03000000000000200000000000000000000000000000000000000000000000000000000FFFE0000FFFFFFFF +000000FF0000000000000000000300000000000000000000000000000000204000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //3488 bytes -enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x110], [ 0x100, 0x1a0, 0x4b00], [ 0x2020100, 0x4020302, 0x7020605, 0xa090802, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x202020b, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xe, 0xf0000, 0x0, 0x100000, 0x120011, 0x140013, 0x160015, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x190018, 0x0, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x1d001c, 0x1f001e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200000, 0x0, 0x220021, 0x230000, 0x250024, 0x0, 0x0, 0x0, 0x26, 0x270000, 0x290028, 0x2b002a, 0x2d002c, 0x2f002e, 0x310030, 0x330032, 0x34, 0x360035, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b003a, 0x0, 0x3c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e0000, 0x3f0000, 0x40, 0x0, 0x0, 0x0, 0x41, 0x0, 0x0, 0x3b0042, 0x43, 0x44, 0x0, 0x460045, 0x0, 0x0, 0x0, 0x0, 0x470000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x490048, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xbfffffff, 0xb6, 0x0, 0x7ff0000, 0x0, 0xfffff800, 0x10000, 0x0, 0x0, 0x9fc00000, 0x3d9f, 0x20000, 0xffff0000, 0x7ff, 0x0, 0x0, 0x1ffc0, 0x0, 0x200ff800, 0xfbc00000, 0x3eef, 0xe000000, 0x0, 0xff000000, 0x0, 0xfffffc00, 0xfffffffb, 0x7, 0x14000000, 0xfe21fe, 0xc, 0x2, 0x50000000, 0x80201e, 0x4000000c, 0x6, 0x10000000, 0x23986, 0x230000, 0x6, 0x10000000, 0x21be, 0xfc00000c, 0x2, 0xd0000000, 0xe0201e, 0xc, 0x4, 0x40000000, 0x802001, 0x0, 0x11, 0xd0000000, 0x603dc1, 0xc, 0x2, 0x90000000, 0x603044, 0xc, 0x3, 0x58000000, 0x80201e, 0xc, 0x2, 0x0, 0x805c8400, 0x0, 0x0, 0x7f20000, 0x7f80, 0x0, 0x0, 0x1ff20000, 0x7f00, 0x0, 0x3000000, 0x2a00000, 0x0, 0x7ffe0000, 0xfeffe0df, 0x1fffffff, 0x40, 0x0, 0x0, 0x66fde000, 0xc3000000, 0x1e0001, 0x20002064, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c0000, 0xc0000, 0xc0000, 0xc0000, 0x0, 0x3fb00000, 0x200ffe40, 0x0, 0xb800, 0x0, 0x0, 0x0, 0x60, 0x200, 0x0, 0x0, 0x0, 0xe040187, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9800000, 0x0, 0x7f400000, 0x9ff81fe5, 0x0, 0xffff0000, 0x7fff, 0x0, 0xf, 0x17f00000, 0x4, 0xff800, 0x3, 0x3b3c, 0x0, 0x3a340, 0x0, 0xcff000, 0x0, 0x0, 0x0, 0x0, 0xfff70000, 0x31021fd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x1ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0xfc00, 0x0, 0x0, 0x6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff78000, 0xc0000000, 0x0, 0x0, 0x30000, 0x844, 0x1060, 0x0, 0x0, 0x0, 0x0, 0x30, 0x8003ffff, 0x0, 0x3fc0, 0x3ff80, 0x0, 0x7, 0x33c80000, 0x0, 0x20, 0x0, 0x667e00, 0x1008, 0x10000000, 0x0, 0xc19d0000, 0x2, 0x403000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2120, 0x40000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7c00000, 0x0, 0x0, 0x0, 0x0, 0xf06e, 0x87000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x0, 0xe0000000, 0x0, 0x0, 0x1ffc0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x2, 0xff000000, 0x7f, 0x80190000, 0x3, 0x6780000, 0x4, 0x0, 0x7, 0x1fef80, 0x0, 0x80000, 0x3, 0x7fc00000, 0x9e00, 0x0, 0x0, 0x40d38000, 0x2, 0x0, 0x0, 0x0, 0x80000000, 0x7f8, 0x3, 0x58000000, 0x800001, 0x1f1fc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff000000, 0x4000005c, 0x0, 0x0, 0xa5f90000, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb03c8000, 0x30000001, 0x0, 0x0, 0xa7f80000, 0x1, 0x0, 0x0, 0xbf2800, 0x0, 0x0, 0xe0000000, 0xfbc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6ff8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x58010000, 0x8, 0x0, 0x0, 0x0, 0xcf00000, 0x1, 0x7fe, 0x79f80000, 0xe7e0080, 0x0, 0x37ffc00, 0x0, 0x0, 0x0, 0x0, 0xbf7f0000, 0x0, 0x0, 0xfffc0000, 0x6dfcff, 0x0, 0x0, 0x0, 0xb47e0000, 0xbf, 0x0, 0xa30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180000, 0x3, 0x7c00000, 0x5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fff81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f0000, 0x0, 0x7f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x78000, 0x0, 0x0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x60000000, 0x0, 0x0, 0x0, 0xffffffff, 0xffff3fff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf807c3a0, 0xfe7, 0x3c00, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xf87fffff, 0xffffffff, 0x201fff, 0xf8000010, 0xfffe, 0x0, 0x0, 0xf9ffff7f, 0x7db, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0xf000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0x0, 0x0, 0x7f0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf8000000, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000110", +cast(immutable size_t[]) x" +00000100000001A000004B00", +cast(immutable size_t[]) x" +0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020B02020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000001000000030002000500040007000600090008000B000A000D000C +0000000E000F000000000000001000000012001100140013001600150000000000000017000000000000000000000000 +000000000000000000190018000000000000001A00000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000001B001D001C001F001E0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000220021 +0023000000250024000000000000000000000000000000260027000000290028002B002A002D002C002F002E00310030 +003300320000003400360035003800370000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000039000000000000000000000000000000000000000000000000000000000000000000000000 +00000000003B003A00000000003C00000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000003D0000000000000000000000000000000000000000000000000000000000000000003E0000 +003F000000000040000000000000000000000000000000410000000000000000003B0042000000430000004400000000 +004600450000000000000000000000000000000000470000000000000000000000000000000000000000000000000000 +004900480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00000000000000000000000000000000 +00000000000000000000000000000000000003F800000000000000000000000000000000000000000000000000000000 +FFFE0000BFFFFFFF000000B60000000007FF000000000000FFFFF8000001000000000000000000009FC0000000003D9F +00020000FFFF0000000007FF00000000000000000001FFC000000000200FF800FBC0000000003EEF0E00000000000000 +FF00000000000000FFFFFC00FFFFFFFB000000071400000000FE21FE0000000C00000002500000000080201E4000000C +000000061000000000023986002300000000000610000000000021BEFC00000C00000002D000000000E0201E0000000C +0000000440000000008020010000000000000011D000000000603DC10000000C0000000290000000006030440000000C +00000003580000000080201E0000000C0000000200000000805C8400000000000000000007F2000000007F8000000000 +000000001FF2000000007F00000000000300000002A00000000000007FFE0000FEFFE0DF1FFFFFFF0000004000000000 +0000000066FDE000C3000000001E0001200020640000000000000000000000000000000000000000E000000000000000 +00000000000000000000000000000000001C0000000C0000000C0000000C0000000000003FB00000200FFE4000000000 +0000B80000000000000000000000000000000060000002000000000000000000000000000E0401870000000000000000 +0000000000000000000000000000000009800000000000007F4000009FF81FE500000000FFFF000000007FFF00000000 +0000000F17F0000000000004000FF8000000000300003B3C000000000003A3400000000000CFF0000000000000000000 +0000000000000000FFF70000031021FD000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF +000010000000000000000000000000000000000000000000FFFF00000001FFFF00000000000000000000000000000000 +0000000000000000000000000003800000000000000000000000000080000000000000000000000000000000FFFFFFFF +000000000000FC000000000000000000060000000000000000000000000000000000000000000000000000003FF78000 +C0000000000000000000000000030000000008440000106000000000000000000000000000000000000000308003FFFF +0000000000003FC00003FF80000000000000000733C8000000000000000000200000000000667E000000100810000000 +00000000C19D000000000002004030000000000000000000000000000000000000000000000000000000000000002120 +40000000000000000000000000000000000000000000000000000000000000000000FFFF0000FFFF0000000000000000 +0000000000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000 +0000000000000000000000000000000100000000000000000000000007C0000000000000000000000000000000000000 +0000F06E8700000000000000000000000000000000000000000000000000006000000000000000F00000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000180000000000E0000000 +00000000000000000001FFC0000000000000003C00000000000000000000000000000002FF0000000000007F80190000 +0000000306780000000000040000000000000007001FEF800000000000080000000000037FC0000000009E0000000000 +0000000040D380000000000200000000000000000000000080000000000007F8000000035800000000800001001F1FC0 +0000000000000000000000000000000000000000FF0000004000005C0000000000000000A5F900000000000D00000000 +0000000000000000000000000000000000000000B03C8000300000010000000000000000A7F800000000000100000000 +0000000000BF28000000000000000000E000000000000FBC000000000000000000000000000000000000000000000000 +0000000006FF800000000000000000000000000000000000000000000000000000000000580100000000000800000000 +00000000000000000CF0000000000001000007FE79F800000E7E008000000000037FFC00000000000000000000000000 +00000000BF7F00000000000000000000FFFC0000006DFCFF000000000000000000000000B47E0000000000BF00000000 +00A300000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000 +0000000307C000000000000500000000000000000000000000000000000000000000000000000000003FFF8100000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F0000 +00000000007F000000000000000000000000000000000000000000000000000000000000000000000000800000000000 +000780000000000000000000000000100000000000000000000000000000000060000000000000000000000000000000 +FFFFFFFFFFFF3FFF0000007F0000000000000000000000000000000000000000000000000000000000000000F807C3A0 +00000FE700003C00000000000000000000000000000000000000001C0000000000000000000000000000000000000000 +FFFFFFFFF87FFFFFFFFFFFFF00201FFFF80000100000FFFE0000000000000000F9FFFF7F000007DB0000000000000000 +00008000000000000000000000000000000000000000000000000000000000000000000000004000000000000000F000 +000000000000000000000000000000000000000000000000000000000000F00000000000000000000000000000000000 +0000000000000000007F0000000000000000000000000000000007F00000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000F800000000000000FFFFFFFFFFFFFFFFFFFFFFFF +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //1344 bytes -enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x90], [ 0x100, 0xa0, 0x1800], [ 0x2020100, 0x2020202, 0x2020202, 0x3020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x30002, 0x40001, 0x60005, 0x80007, 0x90001, 0xa0001, 0x10001, 0x10001, 0x1000b, 0x1000c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0xe000d, 0x10000f, 0x11000d, 0x130012, 0x150014, 0x1000d, 0xd000d, 0x16000d, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000004, 0x0, 0x0, 0x3f00000, 0x600, 0x0, 0x0, 0xc000000, 0x100, 0x0, 0x0, 0x100, 0x0, 0x8000, 0x70ffe00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x400c00, 0x1, 0x78000000, 0xfff7ffbf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff003f, 0xffffffff, 0xffffffff, 0xffffffff, 0x2057ff3f, 0x180102, 0xb85090, 0xf8, 0xe00000, 0x80010002, 0x0, 0x0, 0x0, 0x300000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180000e0, 0x0, 0x210000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20010000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2800000, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xe000, 0x8000, 0x0, 0xc003f000, 0x7fe4000, 0xffffe000, 0xffffffff, 0x3f, 0x400fffe, 0xf7fc8000, 0xfffffe00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffff, 0xffffffff, 0x3fffffff, 0xffffffc0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0xfff00000, 0x0, 0x0, 0xffe00000, 0xffffffff, 0xf000, 0x0, 0xfc00ff00, 0x0, 0xff00, 0xffffc000, 0xffffffff, 0xffffffff, 0xfffff000, 0xf7ffffff, 0xffffffbf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000090", +cast(immutable size_t[]) x" +00000100000000A000001800", +cast(immutable size_t[]) x" +020201000202020202020202030202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100030002000400010006000500080007 +00090001000A000100010001000100010001000B0001000C000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000E000D0010000F0011000D00130012001500140001000D000D000D0016000D00010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000000000000000000000000000000000000000000004200000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000010000000000002000000000000000000000000000000000000000000 +0000000002000004000000000000000003F000000000060000000000000000000C000000000001000000000000000000 +000001000000000000008000070FFE000000000000000000000000000000000000000000000000000000000400000000 +000000000000000000000000000000000000000000400C000000000178000000FFF7FFBFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF003FFFFFFFFFFFFFFFFFFFFFFFFF2057FF3F0018010200B85090000000F800E00000800100020000000000000000 +0000000000300000000000000000000000000000000000000000000000000000180000E0000000000021000000000000 +000000000000000000000000000000000000000020010000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000002800000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000E0000000800000000000C003F00007FE4000FFFFE000FFFFFFFF0000003F +0400FFFEF7FC8000FFFFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFF3FFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0000FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFF00000 +0000000000000000FFE00000FFFFFFFF0000F00000000000FC00FF00000000000000FF00FFFFC000FFFFFFFFFFFFFFFF +FFFFF000F7FFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFF0000000000000000000000000000000000000000000000000000000000000000", +); } @@ -39,19 +296,276 @@ enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, static if (size_t.sizeof == 8) { //832 bytes -enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x40], [ 0x100, 0x80, 0xa00], [ 0x2010000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000300020001, 0x1000700060005, 0x5000400030002, 0x2000100070006, 0x6000500040003, 0x3000200010007, 0x7000600050004, 0x4000300020001, 0x1000700060005, 0x5000400030002, 0x8000100070006, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100000010000001, 0x1000000100000, 0x10000001000, 0x1000000100000010, 0x10000001000000, 0x100000010000, 0x1000000100, 0x100000010000001, 0x1000000100000, 0x10000001000, 0x1000000100000010, 0x10000001000000, 0x100000010000, 0x1000000100, 0x100000010000001, 0x1000000100000, 0x10000001000, 0x1000000100000010, 0x10000001000000, 0x100000010000, 0x1000000100, 0x100000010000001, 0x1000000100000, 0x10000001000, 0x1000000100000010, 0x10000001000000, 0x100000010000, 0x1000000100, 0x10000001000000, 0x100000010000, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000040", +cast(immutable size_t[]) x" +000000000000010000000000000000800000000000000A00", +cast(immutable size_t[]) x" +000201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000040003000200010001000700060005000500040003000200020001000700060006000500040003 +000300020001000700070006000500040004000300020001000100070006000500050004000300020008000100070006 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000100000010000001000100000010000000000100000010001000000100000010 +001000000100000000001000000100000000001000000100010000001000000100010000001000000000010000001000 +100000010000001000100000010000000000100000010000000000100000010001000000100000010001000000100000 +000001000000100010000001000000100010000001000000000010000001000000000010000001000100000010000001 +000100000010000000000100000010001000000100000010001000000100000000001000000100000000001000000100 +001000000100000000001000000100000000000000000100000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //832 bytes -enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x40], [ 0x100, 0x80, 0xa00], [ 0x2010000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000300020001, 0x1000700060005, 0x5000400030002, 0x2000100070006, 0x6000500040003, 0x3000200010007, 0x7000600050004, 0x4000300020001, 0x1000700060005, 0x5000400030002, 0x8000100070006, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfeffffffeffffffe, 0xfffeffffffefffff, 0xfffffeffffffefff, 0xeffffffeffffffef, 0xffeffffffeffffff, 0xffffeffffffeffff, 0xffffffeffffffeff, 0xfeffffffeffffffe, 0xfffeffffffefffff, 0xfffffeffffffefff, 0xeffffffeffffffef, 0xffeffffffeffffff, 0xffffeffffffeffff, 0xffffffeffffffeff, 0xfeffffffeffffffe, 0xfffeffffffefffff, 0xfffffeffffffefff, 0xeffffffeffffffef, 0xffeffffffeffffff, 0xffffeffffffeffff, 0xffffffeffffffeff, 0xfeffffffeffffffe, 0xfffeffffffefffff, 0xfffffeffffffefff, 0xeffffffeffffffef, 0xffeffffffeffffff, 0xffffeffffffeffff, 0xffffffeffffffeff, 0xffeffffffeffffff, 0xffffeffffffeffff, 0xffffffeff, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000040", +cast(immutable size_t[]) x" +000000000000010000000000000000800000000000000A00", +cast(immutable size_t[]) x" +000201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000040003000200010001000700060005000500040003000200020001000700060006000500040003 +000300020001000700070006000500040004000300020001000100070006000500050004000300020008000100070006 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FEFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFEF +FFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFF +EFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFEFFFEFFFFFFEFFFFF +FFFFFEFFFFFFEFFFEFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFE +FFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFF +FFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFF0000000FFFFFFEFF000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //896 bytes -enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x40], [ 0x100, 0x80, 0xc00], [ 0x101010101010100, 0x101010101010102, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100000000, 0x3, 0x40000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60005, 0x0, 0x800070000, 0xa000000090000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x20000000, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30000, 0x400000000, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x2000000000000000, 0x2000, 0x0, 0x0, 0x0, 0xc, 0x8000000000000000, 0x2, 0x0, 0x0, 0x400000000000000, 0x0, 0x3f0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000040", +cast(immutable size_t[]) x" +000000000000010000000000000000800000000000000C00", +cast(immutable size_t[]) x" +010101010101010001010101010101020101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000200010000000000000000000000030000000000040000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000600050000000000000000 +0000000800070000000A0000000900000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000003F000000000000000000000000000000000000000020000000 +000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000003000000000004000000000000000000000000000000000000400000000000000000000000000000000000 +000000000000000000000000000000002000000000000000000000000000200000000000000000000000000000000000 +0000000000000000000000000000000C8000000000000000000000000000000200000000000000000000000000000000 +0400000000000000000000000000000000000000000003F0000000000000000000000000000000000000000000000040 +000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //1280 bytes -enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x68], [ 0x100, 0x120, 0xe00], [ 0x302020202020100, 0x206050202020402, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020207, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000100010000, 0x1000200010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010003, 0x1000100010001, 0x1000100010004, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x6000500010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010007, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010008, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100090001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0xc000c000b000a, 0xc000c000c000c, 0xc000c000c000c, 0xc000c000c000c, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0xffffdbff, 0x8000000000000000, 0x2000ffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x7f000000c800, 0xffff00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000, 0x0, 0x0, 0x0, 0xfff000000000000, 0xffff000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf00000000, 0x0, 0x0, 0x7f8000000000000, 0x0, 0x0, 0xffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0xffff000000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0]); +enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000068", +cast(immutable size_t[]) x" +000000000000010000000000000001200000000000000E00", +cast(immutable size_t[]) x" +030202020202010002060502020204020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020207020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000100010000000100020001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010003000100010001000100010001000100040001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000600050001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000700010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100080001000100010001000100010001000100010001000100010001000100010001 +0001000100090001000100010001000100010001000100010001000100010001000C000C000B000A000C000C000C000C +000C000C000C000C000C000C000C000C0001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +0001000100010001000100010001000100000000FFFFDBFF800000000000000000002000FFFFFFFF0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000 +000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000 +00007F000000C8000000FFFF000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000080000000000000000000000000000000000000000000000000000000000000000FFF000000000000 +FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000F000000000000000000000000000000000000000007F800000000000000000000000000000000000000000000 +00000000FFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 +0000000000000000FFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //1856 bytes -enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x58], [ 0x100, 0xe0, 0x2400], [ 0x101020101010100, 0x105010104010103, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x101010101010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0x8, 0x9000000000000, 0xc000b000a0000, 0xd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x110010000f000e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15001400130012, 0x19001800170016, 0x1c001b001a, 0x20001f001e001d, 0x0, 0x0, 0x0, 0x21000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x220000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc800000000000008, 0xde01, 0x800000000000000c, 0x1981, 0xc000000000000008, 0x1, 0xc000000000000008, 0x1a01, 0xc, 0x1981, 0x8000000000000000, 0x1dc6, 0xe, 0x1e, 0x400000000000000c, 0x8000000000d9b, 0x800000000000000c, 0x1dc1, 0xc, 0xc00007f030000, 0x8000000000000, 0x0, 0x8000000000000, 0x0, 0xc000000000000000, 0x8000000000000000, 0x0, 0x0, 0x1802000000000000, 0xc00000, 0x10, 0x0, 0x10000000200000, 0x0, 0xc040000000000000, 0x1bf, 0x1fb0e7800000000, 0x0, 0x0, 0x0, 0x6000000, 0x7e00000a00000, 0x0, 0x0, 0xe800000000000010, 0x1b, 0x4c200000004, 0xc5c8000000000, 0x300ff000000000, 0x0, 0x0, 0x80000200000000, 0x9800000000, 0x0, 0xfff0000000000003, 0xf, 0x0, 0xc0000, 0xcc30000000000008, 0x1, 0x19800000000000, 0x2000, 0x0, 0x20c80000000000, 0x0, 0x0, 0x0, 0x16d800000000, 0x5, 0x0, 0x187000000000004, 0x0, 0x100000000000, 0x60, 0x8038000000000004, 0x4001, 0x2c700000000000, 0x0, 0x0, 0x700000000, 0x800000000000000c, 0xc0000399e, 0x0, 0x0, 0xe0000000000000, 0x23, 0x5a06000000000000, 0x2, 0x0, 0x0, 0x4f03000000000000, 0x0, 0x5807000000000000, 0x0, 0x40d00000000000, 0x0, 0x4000000000, 0x0, 0x0, 0x0, 0x100700000000000, 0x0, 0x0, 0x0, 0x21be000000000000, 0x5, 0x0, 0x10f00e0000, 0x200000000000000, 0x1800000, 0x800000, 0x0, 0x4000800000000000, 0x0, 0x12020000000000, 0x0, 0x0, 0x0, 0x587c00, 0x0, 0x0, 0x0, 0x0, 0x60000000000000, 0xc030000000000008, 0x2, 0x0, 0x0, 0x0, 0xfffffffffffe0000, 0xff, 0x3000000000000, 0x0, 0x204000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000058", +cast(immutable size_t[]) x" +000000000000010000000000000000E00000000000002400", +cast(immutable size_t[]) x" +010102010101010001050101040101030101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 +010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000030002000100000007000600050004 +00000000000000080009000000000000000C000B000A0000000000000000000D00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000110010000F000E000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001500140013001200190018001700160000001C001B001A0020001F001E001D00000000000000000000000000000000 +000000000000000000210000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000C800000000000008000000000000DE01800000000000000C0000000000001981 +C0000000000000080000000000000001C0000000000000080000000000001A01000000000000000C0000000000001981 +80000000000000000000000000001DC6000000000000000E000000000000001E400000000000000C0008000000000D9B +800000000000000C0000000000001DC1000000000000000C000C00007F03000000080000000000000000000000000000 +00080000000000000000000000000000C000000000000000800000000000000000000000000000000000000000000000 +18020000000000000000000000C000000000000000000010000000000000000000100000002000000000000000000000 +C04000000000000000000000000001BF01FB0E7800000000000000000000000000000000000000000000000000000000 +00000000060000000007E00000A0000000000000000000000000000000000000E800000000000010000000000000001B +000004C200000004000C5C800000000000300FF000000000000000000000000000000000000000000080000200000000 +00000098000000000000000000000000FFF0000000000003000000000000000F000000000000000000000000000C0000 +CC3000000000000800000000000000010019800000000000000000000000200000000000000000000020C80000000000 +000000000000000000000000000000000000000000000000000016D80000000000000000000000050000000000000000 +018700000000000400000000000000000000100000000000000000000000006080380000000000040000000000004001 +002C700000000000000000000000000000000000000000000000000700000000800000000000000C0000000C0000399E +0000000000000000000000000000000000E000000000000000000000000000235A060000000000000000000000000002 +000000000000000000000000000000004F03000000000000000000000000000058070000000000000000000000000000 +0040D0000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000 +010070000000000000000000000000000000000000000000000000000000000021BE0000000000000000000000000005 +000000000000000000000010F00E00000200000000000000000000000180000000000000008000000000000000000000 +400080000000000000000000000000000012020000000000000000000000000000000000000000000000000000000000 +0000000000587C0000000000000000000000000000000000000000000000000000000000000000000060000000000000 +C0300000000000080000000000000002000000000000000000000000000000000000000000000000FFFFFFFFFFFE0000 +00000000000000FF00030000000000000000000000000000000020400000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //3488 bytes -enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x88], [ 0x100, 0x1a0, 0x4b00], [ 0x402030202020100, 0xa09080207020605, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x20202020202020b, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000000000000, 0x5000400030002, 0x9000800070006, 0xd000c000b000a, 0xf00000000000e, 0x10000000000000, 0x14001300120011, 0x160015, 0x17, 0x0, 0x0, 0x190018, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b00000000, 0x1f001e001d001c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000000000, 0x22002100000000, 0x25002400230000, 0x0, 0x2600000000, 0x29002800270000, 0x2d002c002b002a, 0x310030002f002e, 0x3400330032, 0x38003700360035, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x3b003a00000000, 0x3c000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3d, 0x0, 0x0, 0x0, 0x3e000000000000, 0x40003f0000, 0x0, 0x4100000000, 0x0, 0x43003b0042, 0x44, 0x460045, 0x0, 0x47000000000000, 0x0, 0x0, 0x0, 0x490048, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x3f8, 0x0, 0x0, 0x0, 0xbffffffffffe0000, 0xb6, 0x7ff0000, 0x10000fffff800, 0x0, 0x3d9f9fc00000, 0xffff000000020000, 0x7ff, 0x1ffc000000000, 0x200ff80000000000, 0x3eeffbc00000, 0xe000000, 0xff000000, 0xfffffffbfffffc00, 0x1400000000000007, 0xc00fe21fe, 0x5000000000000002, 0x4000000c0080201e, 0x1000000000000006, 0x23000000023986, 0x1000000000000006, 0xfc00000c000021be, 0xd000000000000002, 0xc00e0201e, 0x4000000000000004, 0x802001, 0xd000000000000011, 0xc00603dc1, 0x9000000000000002, 0xc00603044, 0x5800000000000003, 0xc0080201e, 0x2, 0x805c8400, 0x7f2000000000000, 0x7f80, 0x1ff2000000000000, 0x7f00, 0x2a0000003000000, 0x7ffe000000000000, 0x1ffffffffeffe0df, 0x40, 0x66fde00000000000, 0x1e0001c3000000, 0x20002064, 0x0, 0x0, 0xe0000000, 0x0, 0x0, 0xc0000001c0000, 0xc0000000c0000, 0x3fb0000000000000, 0x200ffe40, 0xb800, 0x0, 0x20000000060, 0x0, 0xe04018700000000, 0x0, 0x0, 0x0, 0x9800000, 0x9ff81fe57f400000, 0xffff000000000000, 0x7fff, 0x17f000000000000f, 0xff80000000004, 0x3b3c00000003, 0x3a34000000000, 0xcff00000000000, 0x0, 0x0, 0x31021fdfff70000, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0x1000, 0x0, 0x0, 0x1ffffffff0000, 0x0, 0x0, 0x0, 0x3800000000000, 0x0, 0x8000000000000000, 0x0, 0xffffffff00000000, 0xfc0000000000, 0x0, 0x6000000, 0x0, 0x0, 0x3ff7800000000000, 0xc0000000, 0x3000000000000, 0x106000000844, 0x0, 0x0, 0x8003ffff00000030, 0x3fc000000000, 0x3ff80, 0x33c8000000000007, 0x2000000000, 0x667e0000000000, 0x1000000000001008, 0xc19d000000000000, 0x40300000000002, 0x0, 0x0, 0x0, 0x212000000000, 0x40000000, 0x0, 0x0, 0x0, 0xffff0000ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x2000000000000000, 0x0, 0x0, 0x0, 0x100000000, 0x0, 0x7c0000000000000, 0x0, 0x0, 0x870000000000f06e, 0x0, 0x0, 0x6000000000, 0xf000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180000000000, 0xe000000000000000, 0x0, 0x1ffc0, 0x3c, 0x0, 0xff00000000000002, 0x801900000000007f, 0x678000000000003, 0x4, 0x1fef8000000007, 0x8000000000000, 0x7fc0000000000003, 0x9e00, 0x40d3800000000000, 0x2, 0x0, 0x7f880000000, 0x5800000000000003, 0x1f1fc000800001, 0x0, 0x0, 0xff00000000000000, 0x4000005c, 0xa5f9000000000000, 0xd, 0x0, 0x0, 0xb03c800000000000, 0x30000001, 0xa7f8000000000000, 0x1, 0xbf280000000000, 0x0, 0xfbce0000000, 0x0, 0x0, 0x0, 0x6ff800000000000, 0x0, 0x0, 0x0, 0x5801000000000000, 0x8, 0x0, 0x10cf00000, 0x79f80000000007fe, 0xe7e0080, 0x37ffc00, 0x0, 0xbf7f000000000000, 0x0, 0x6dfcfffffc0000, 0x0, 0xb47e000000000000, 0xbf, 0xa30000, 0x0, 0x0, 0x0, 0x0, 0x18000000000000, 0x7c0000000000003, 0x5, 0x0, 0x0, 0x0, 0x3fff81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f000000000000, 0x7f000000000000, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x78000, 0x1000000000, 0x0, 0x0, 0x60000000, 0x0, 0xffff3fffffffffff, 0x7f, 0x0, 0x0, 0x0, 0xf807c3a000000000, 0x3c0000000fe7, 0x0, 0x0, 0x1c, 0x0, 0x0, 0xf87fffffffffffff, 0x201fffffffffff, 0xfffef8000010, 0x0, 0x7dbf9ffff7f, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x400000000000, 0xf00000000000, 0x0, 0x0, 0x0, 0xf00000000000, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0x7f0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf800000000000000, 0xffffffff00000000, 0xffffffffffffffff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0]); +enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000088", +cast(immutable size_t[]) x" +000000000000010000000000000001A00000000000004B00", +cast(immutable size_t[]) x" +04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202020202020202020B020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000100000000000000050004000300020009000800070006000D000C000B000A +000F00000000000E00100000000000000014001300120011000000000016001500000000000000170000000000000000 +00000000000000000000000000190018000000000000001A000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000001B00000000001F001E001D001C0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000200000000000000022002100000000 +0025002400230000000000000000000000000026000000000029002800270000002D002C002B002A00310030002F002E +000000340033003200380037003600350000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000 +003B003A00000000003C0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000003D000000000000000000000000000000000000000000000000003E000000000000 +00000040003F000000000000000000000000004100000000000000000000000000000043003B00420000000000000044 +000000000046004500000000000000000047000000000000000000000000000000000000000000000000000000000000 +000000000049004800000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF00000000000000000000000000000000 +0000000000000000000000000000000000000000000003F8000000000000000000000000000000000000000000000000 +BFFFFFFFFFFE000000000000000000B60000000007FF000000010000FFFFF800000000000000000000003D9F9FC00000 +FFFF00000002000000000000000007FF0001FFC000000000200FF8000000000000003EEFFBC00000000000000E000000 +00000000FF000000FFFFFFFBFFFFFC0014000000000000070000000C00FE21FE50000000000000024000000C0080201E +100000000000000600230000000239861000000000000006FC00000C000021BED0000000000000020000000C00E0201E +40000000000000040000000000802001D0000000000000110000000C00603DC190000000000000020000000C00603044 +58000000000000030000000C0080201E000000000000000200000000805C840007F20000000000000000000000007F80 +1FF20000000000000000000000007F0002A00000030000007FFE0000000000001FFFFFFFFEFFE0DF0000000000000040 +66FDE00000000000001E0001C300000000000000200020640000000000000000000000000000000000000000E0000000 +00000000000000000000000000000000000C0000001C0000000C0000000C00003FB000000000000000000000200FFE40 +000000000000B8000000000000000000000002000000006000000000000000000E040187000000000000000000000000 +0000000000000000000000000000000000000000098000009FF81FE57F400000FFFF0000000000000000000000007FFF +17F000000000000F000FF8000000000400003B3C000000030003A3400000000000CFF000000000000000000000000000 +0000000000000000031021FDFFF70000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF +0000000000001000000000000000000000000000000000000001FFFFFFFF000000000000000000000000000000000000 +00000000000000000003800000000000000000000000000080000000000000000000000000000000FFFFFFFF00000000 +0000FC000000000000000000000000000000000006000000000000000000000000000000000000003FF7800000000000 +00000000C000000000030000000000000000106000000844000000000000000000000000000000008003FFFF00000030 +00003FC000000000000000000003FF8033C8000000000007000000200000000000667E00000000001000000000001008 +C19D00000000000000403000000000020000000000000000000000000000000000000000000000000000212000000000 +00000000400000000000000000000000000000000000000000000000000000000000FFFF0000FFFF0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000C00000000000000000000000 +000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000 +00000000000000000000000100000000000000000000000007C000000000000000000000000000000000000000000000 +870000000000F06E000000000000000000000000000000000000006000000000000000F0000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000180000000000E000000000000000 +0000000000000000000000000001FFC0000000000000003C0000000000000000FF00000000000002801900000000007F +06780000000000030000000000000004001FEF800000000700080000000000007FC00000000000030000000000009E00 +40D380000000000000000000000000020000000000000000000007F8800000005800000000000003001F1FC000800001 +00000000000000000000000000000000FF00000000000000000000004000005CA5F9000000000000000000000000000D +00000000000000000000000000000000B03C8000000000000000000030000001A7F80000000000000000000000000001 +00BF280000000000000000000000000000000FBCE0000000000000000000000000000000000000000000000000000000 +06FF80000000000000000000000000000000000000000000000000000000000058010000000000000000000000000008 +0000000000000000000000010CF0000079F80000000007FE000000000E7E008000000000037FFC000000000000000000 +BF7F0000000000000000000000000000006DFCFFFFFC00000000000000000000B47E00000000000000000000000000BF +0000000000A3000000000000000000000000000000000000000000000000000000000000000000000018000000000000 +07C0000000000003000000000000000500000000000000000000000000000000000000000000000000000000003FFF81 +00000000000000000000000000000000000000000000000000000000000000000000000000000000001F000000000000 +007F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000 +000000000007800000000010000000000000000000000000000000000000000000000000600000000000000000000000 +FFFF3FFFFFFFFFFF000000000000007F000000000000000000000000000000000000000000000000F807C3A000000000 +00003C0000000FE700000000000000000000000000000000000000000000001C00000000000000000000000000000000 +F87FFFFFFFFFFFFF00201FFFFFFFFFFF0000FFFEF80000100000000000000000000007DBF9FFFF7F0000000000000000 +000000000000800000000000000000000000000000000000000000000000000000004000000000000000F00000000000 +0000000000000000000000000000000000000000000000000000F0000000000000000000000000000000000000000000 +000000000000000000000000007F0000000000000000000000000000000007F000000000000000000000000000000000 +000000000000000000000000000000000000000000000000F800000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFF +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //1344 bytes -enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x48], [ 0x100, 0xa0, 0x1800], [ 0x202020202020100, 0x302020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000100010000, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x4000100030002, 0x8000700060005, 0xa000100090001, 0x1000100010001, 0x1000c0001000b, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x10000f000e000d, 0x1300120011000d, 0x1000d00150014, 0x16000d000d000d, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x0, 0x0, 0x420000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000000000000000, 0x200, 0x0, 0x0, 0x200000400000000, 0x0, 0x60003f00000, 0x0, 0x1000c000000, 0x0, 0x100, 0x70ffe0000008000, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x400c0000000000, 0x7800000000000001, 0xfffffffffff7ffbf, 0xffffffffffffffff, 0xffffffffffff003f, 0xffffffffffffffff, 0x1801022057ff3f, 0xf800b85090, 0x8001000200e00000, 0x0, 0x30000000000000, 0x0, 0x0, 0x0, 0x180000e0, 0x210000, 0x0, 0x0, 0x2001000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2800000, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x80000000e000, 0xc003f00000000000, 0xffffe00007fe4000, 0x3fffffffff, 0xf7fc80000400fffe, 0xfffffffffffffe00, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7ffffffffffffff, 0x3fffffffffffffff, 0xffffffffffffffc0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xfff0000000000000, 0x0, 0xffffffffffe00000, 0xf000, 0xfc00ff00, 0xffffc0000000ff00, 0xffffffffffffffff, 0xf7fffffffffff000, 0xffffffffffffffbf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffffffff, 0x0, 0x0, 0x0, 0x0]); +enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000048", +cast(immutable size_t[]) x" +000000000000010000000000000000A00000000000001800", +cast(immutable size_t[]) x" +020202020202010003020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000100010000000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100040001000300020008000700060005 +000A00010009000100010001000100010001000C0001000B000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +0010000F000E000D001300120011000D0001000D001500140016000D000D000D00010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001000000000000000000000000000020000000000000000000000000000000000 +020000040000000000000000000000000000060003F000000000000000000000000001000C0000000000000000000000 +0000000000000100070FFE00000080000000000000000000000000000000000000000000000000000000000000000004 +0000000000000000000000000000000000400C00000000007800000000000001FFFFFFFFFFF7FFBFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF003FFFFFFFFFFFFFFFFF001801022057FF3F000000F800B850908001000200E000000000000000000000 +003000000000000000000000000000000000000000000000000000000000000000000000180000E00000000000210000 +000000000000000000000000000000002001000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000028000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000080000000E000C003F00000000000FFFFE00007FE40000000003FFFFFFFFF +F7FC80000400FFFEFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF07FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFF0000000000000 +0000000000000000FFFFFFFFFFE00000000000000000F00000000000FC00FF00FFFFC0000000FF00FFFFFFFFFFFFFFFF +F7FFFFFFFFFFF000FFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000", +); } diff --git a/std/internal/unicode_norm.d b/std/internal/unicode_norm.d index d459357896f..c103c254d7e 100644 --- a/std/internal/unicode_norm.d +++ b/std/internal/unicode_norm.d @@ -19,13 +19,234 @@ package(std): static if (size_t.sizeof == 4) { //1728 bytes -enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xc0], [ 0x100, 0x100, 0x1e00], [ 0x2020100, 0x3020202, 0x2020204, 0x2050202, 0x2020202, 0x6020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x2, 0x30000, 0x50004, 0x70006, 0x80000, 0xa0009, 0x0, 0x0, 0x0, 0x0, 0xb0000, 0x0, 0xc0000, 0xe000d, 0xf0000, 0x0, 0x0, 0x0, 0x10, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x120000, 0x140013, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160015, 0x170000, 0x190018, 0x0, 0x1a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x120012, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x81a9fdf, 0x10361f8, 0x3f, 0x40100000, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0xff000000, 0x0, 0x0, 0x40000000, 0xb0800000, 0x0, 0x0, 0x480000, 0x4e000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x30c00000, 0x0, 0x0, 0x40000000, 0x800000, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x600004, 0x0, 0x0, 0x40000000, 0x800000, 0x0, 0x0, 0x0, 0x80008400, 0x0, 0x0, 0x0, 0x10842008, 0x1680200, 0x20080002, 0x2001084, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ffffe, 0x0, 0xffffff00, 0x7, 0x0, 0x0, 0x200000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2aaa0000, 0x0, 0x48000000, 0x8080a00, 0x2a00c808, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6000000, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fe53fff, 0xfffffc65, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xa0000000, 0x5f7ffc00, 0x7fdb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000000, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24010000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x1f, 0x0, 0xf8000000, 0x1, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000C0", +cast(immutable size_t[]) x" +000001000000010000001E00", +cast(immutable size_t[]) x" +020201000302020202020204020502020202020206020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000010000000000000000000200030000000500040007000600080000 +000A000900000000000000000000000000000000000B000000000000000C0000000E000D000F00000000000000000000 +000000000000001000000000000000000000001100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000012000000140013000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000160015001700000019001800000000001A0000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000001B0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000001200120000001C000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000081A9FDF010361F80000003F40100000 +000000800000000000000000000000000000000000000000003800000000000000000000000000000000000000000000 +0000000010000000FF000000000000000000000040000000B08000000000000000000000004800004E00000000000000 +00000000000000000000000000000000000000004000000030C000000000000000000000400000000080000000000000 +000000000000000000400000000000000000000000000000006000040000000000000000400000000080000000000000 +000000000000000080008400000000000000000000000000108420080168020020080002020010840000000000000000 +0000000000004000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFE +00000000FFFFFF0000000007000000000000000000200000000000000000000000000000000000000000000000000000 +0000000000000000000000002AAA0000000000004800000008080A002A00C80800000003000000000000000000000000 +000000000000000000000000000000000000000000000C40000000000000000000000000000000000000000000000000 +000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000010000000000000000000000000000000000000000000000006000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FE53FFFFFFFFC65FFFFFFFFFFFF3FFF +FFFFFFFFFFFFFFFF03FFFFFF00000000A00000005F7FFC0000007FDB0000000000000000000000000000000000000000 +000000000000000000000000000000000000000004000000000000000000000000000000000000800000000000000000 +000000000000000000000000000000000000000040000000008000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000024010000000000000000000000000000000000000000000000000000 +000000000000800000000000000000000000000000010000000000000000000000000000000000000000000000000000 +0000000000000000C00000000000001F00000000F800000000000001000000003FFFFFFF000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +); //2048 bytes -enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xe0], [ 0x100, 0x140, 0x2400], [ 0x2020100, 0x5040302, 0x2020206, 0x2070202, 0x2020202, 0x8020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x50006, 0x70005, 0x90008, 0xb000a, 0xc0005, 0x5000d, 0x50005, 0x50005, 0x50005, 0x50005, 0xe0005, 0x50005, 0x10000f, 0x120011, 0x140013, 0x50005, 0x50005, 0x50005, 0x50015, 0x50005, 0x50005, 0x50016, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x170017, 0x180017, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x170005, 0x1a0019, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x1c001b, 0x1d0005, 0x1f001e, 0x50005, 0x200005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x210005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x170017, 0x50022, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x50005, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e7effbf, 0xbe7effbf, 0xfffcffff, 0x7ef1ff3f, 0xfff3f1f8, 0x7fffff3f, 0x0, 0x18003, 0xdfffe000, 0xff31ffcf, 0xcfffffff, 0xfffc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x40100000, 0x1d7e0, 0x1fc00, 0x187c00, 0x0, 0x200708b, 0x2000000, 0x708b0000, 0xc00000, 0x0, 0x0, 0xfccf0006, 0x33ffcfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7c, 0x0, 0x0, 0x0, 0x0, 0x80005, 0x0, 0x0, 0x120200, 0xff000000, 0x0, 0x0, 0x0, 0xb0001800, 0x0, 0x0, 0x480000, 0x4e000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30001900, 0x0, 0x100000, 0x0, 0x1c00, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0xd81, 0x0, 0x0, 0x0, 0x1c00, 0x0, 0x0, 0x0, 0x74000000, 0x0, 0x0, 0x0, 0x10842008, 0x1680200, 0x20080002, 0x2001084, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x45540, 0x28000000, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xbffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0x5fdfffff, 0xefcfffde, 0x3fdcffff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc40, 0x0, 0x0, 0xc000000, 0x4000, 0xe000, 0x0, 0x1210, 0x50, 0x292, 0x333e005, 0x333, 0xf000, 0x0, 0x3c0f, 0x0, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x55555000, 0x36db02a5, 0x40100000, 0x55555000, 0x36db02a5, 0x47900000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x7fe53fff, 0xfffffc65, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xa0000000, 0x5f7ffc00, 0x7fdb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14000000, 0x800, 0x0, 0x0, 0x0, 0xc000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x58000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc000000, 0x0, 0x0, 0x0, 0x1000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x1f, 0x0, 0xf8000000, 0x1, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000E0", +cast(immutable size_t[]) x" +000001000000014000002400", +cast(immutable size_t[]) x" +020201000504030202020206020702020202020208020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000100000003000200050004000500060007000500090008000B000A000C0005 +0005000D00050005000500050005000500050005000E0005000500050010000F00120011001400130005000500050005 +000500050005001500050005000500050005001600050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050017001700170017 +001700170017001700170017001700170017001700170017001700170017001700170017001700170017001700170017 +001700170017001700170017001700170017001700170017001700170018001700050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +00170005001A001900050005000500050005000500050005000500050005000500050005000500050005000500050005 +001C001B001D0005001F001E000500050020000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050021000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +001700170005002200050005000500050005000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500000000000000000000000000000000 +00000000000000003E7EFFBFBE7EFFBFFFFCFFFF7EF1FF3FFFF3F1F87FFFFF3F0000000000018003DFFFE000FF31FFCF +CFFFFFFF000FFFC000000000000000000000000000000000000000000000000000000000000000000000001B40100000 +0001D7E00001FC0000187C00000000000200708B02000000708B000000C000000000000000000000FCCF0006033FFCFC +0000000000000000000000000000000000000000000000000000000000000000000000000000007C0000000000000000 +000000000000000000080005000000000000000000120200FF000000000000000000000000000000B000180000000000 +00000000004800004E000000000000000000000000000000000000000000000000000000000000003000190000000000 +001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D8100000000 +000000000000000000001C00000000000000000000000000740000000000000000000000000000001084200801680200 +200800020200108400000000000000000000000000000040000000000000000000000000000000000000000000000000 +00045540280000000000000B0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0BFFFFFFFFFFFFFFFFFFFFFF03FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFFFFFFFFFF5FDFFFFFEFCFFFDE3FDCFFFF +00000003000000000000000000000000000000000000000000000000000000000000000000000C400000000000000000 +0C000000000040000000E000000000000000121000000050000002920333E005000003330000F0000000000000003C0F +000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000100000000000000000000000000000005555500036DB02A5401000005555500036DB02A547900000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0000000F00000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000 +A00000005F7FFC0000007FDB000000000000000000000000000000000000000000000000000000000000000000000000 +14000000000008000000000000000000000000000000C000000000000000000000000000000000000000000000000000 +000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000 +0000000058000000000000000000000000000000000000000000000000000000000000000C0000000000000000000000 +00000000010000000000000000000000000000000000000000000000000000000000000000000000C00000000000001F +00000000F800000000000001000000003FFFFFFF00000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //2848 bytes -enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xe0], [ 0x100, 0x140, 0x3d00], [ 0x2020100, 0x4020302, 0x2020205, 0x7060202, 0x2020202, 0x8020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x40006, 0x70004, 0x90008, 0xb000a, 0xd000c, 0xf000e, 0x40004, 0x40004, 0x40004, 0x40004, 0x100004, 0x110004, 0x130012, 0x150014, 0x170016, 0x40018, 0x40004, 0x40004, 0x40019, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x230022, 0x40004, 0x240004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x210004, 0x260025, 0x270021, 0x290028, 0x40004, 0x40004, 0x40004, 0x2a0004, 0x40004, 0x40004, 0x40004, 0x40004, 0x2c002b, 0x2d0004, 0x2f002e, 0x40004, 0x300004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x310004, 0x40004, 0x330032, 0x350034, 0x40004, 0x40004, 0x40004, 0x40004, 0x40036, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40037, 0x380004, 0x40039, 0x40004, 0x40004, 0x40004, 0x3a0004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x210021, 0x4003b, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x40004, 0x0, 0x0, 0x0, 0x0, 0x0, 0x773c8501, 0x0, 0x0, 0x0, 0x800c0000, 0x201, 0x80000000, 0x0, 0x0, 0x1ff0, 0xe0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ff0000, 0x3f000000, 0x1f, 0x81a9fdf, 0x10361f8, 0x3f, 0x44100000, 0xb0, 0x0, 0x7f0000, 0x2370000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x1e00000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0xff000000, 0x0, 0x0, 0x40000000, 0xb0800000, 0x0, 0x0, 0x480000, 0x4e000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x30c00000, 0x0, 0x0, 0x40000000, 0x800000, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x600004, 0x0, 0x0, 0x40000000, 0x800000, 0x0, 0x0, 0x0, 0x80008400, 0x0, 0x0, 0x80000, 0x0, 0x0, 0x0, 0x80000, 0x30000000, 0x0, 0x1000, 0x0, 0x10842008, 0x3e80200, 0x20080002, 0x2001084, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x3ffffe, 0x0, 0xffffff00, 0x7, 0x0, 0x0, 0x200000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf7ff7000, 0xffffbfff, 0x10007ff, 0xf8000000, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2aaa0000, 0x0, 0xe8000000, 0xe808ea03, 0x6a00e808, 0x8207ff, 0x50d88070, 0x80800380, 0xfff30000, 0x1fff7fff, 0x100, 0x0, 0x0, 0x3e6ffeef, 0xfbfbbd57, 0xffff03e1, 0xffffffff, 0x200, 0x0, 0x0, 0x0, 0x0, 0x1b000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0x1000, 0x0, 0x0, 0x700000, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x30000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x80000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1, 0x7400000, 0x0, 0x0, 0x9e000000, 0x0, 0x0, 0x80000000, 0x0, 0xfffe0000, 0xffffffff, 0xffffffff, 0xfffc7fff, 0x0, 0x0, 0x0, 0x7fffffff, 0xffffffff, 0xffff00ff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x30000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x31c0000, 0x0, 0x0, 0xf0000000, 0x200, 0x0, 0x0, 0x0, 0x0, 0x7fe53fff, 0xfffffc65, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xa0f8007f, 0x5f7fffff, 0xffffffdb, 0xffffffff, 0xffffffff, 0x3ffff, 0xfff80000, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xffffffff, 0xfffcffff, 0xffffffff, 0xff, 0x1fff0000, 0x3ff0000, 0xffff0000, 0xfff7ff9f, 0xffd70f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x7f7f, 0x0, 0x0, 0x0, 0x0, 0xffffffbe, 0x7fdffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000000, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x24010000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x1f, 0x0, 0xf8000000, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffcfff, 0xffffffff, 0x0, 0xffff0000, 0xffffffff, 0x3fff, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x0, 0xffff07ff, 0xffff7fff, 0xffff, 0x1c00, 0x10000, 0x0, 0x0, 0x0, 0xffff0007, 0xfffffff, 0x301ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000E0", +cast(immutable size_t[]) x" +000001000000014000003D00", +cast(immutable size_t[]) x" +020201000402030202020205070602020202020208020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000100000003000200050004000400060007000400090008000B000A000D000C +000F000E0004000400040004000400040004000400100004001100040013001200150014001700160004001800040004 +0004000400040019001B001A001D001C001F001E00210020000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040023002200040004002400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400210004002600250027002100290028 +000400040004000400040004002A000400040004000400040004000400040004002C002B002D0004002F002E00040004 +003000040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +003100040004000400330032003500340004000400040004000400040004000400040036000400040004000400040004 +000400040004000400040004000400370038000400040039000400040004000400040004003A00040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +002100210004003B00040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400000000000000000000000000000000 +00000000773C8501000000000000000000000000800C00000000020180000000000000000000000000001FF0000E0000 +000000000000000000000000000000000000000001FF00003F0000000000001F081A9FDF010361F80000003F44100000 +000000B000000000007F0000023700000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000008000000000000000000000000000000000000000000038000001E00000 +000000000000000000000000000000000000000010000000FF000000000000000000000040000000B080000000000000 +00000000004800004E0000000000000000000000000000000000000000000000000000004000000030C0000000000000 +000000004000000000800000000000000000000000000000004000000000000000000000000000000060000400000000 +000000004000000000800000000000000000000000000000800084000000000000000000000800000000000000000000 +0000000000080000300000000000000000001000000000001084200803E8020020080002020010840000000000000000 +0000000000004000000000000000000000000000000000000000000010000000000000000000000000000000003FFFFE +00000000FFFFFF0000000007000000000000000000200000000000000000000000000000000000000000000000000000 +00000000F7FF7000FFFFBFFF010007FFF8000000FFFFFFFF000000000000000000000000000000000000000000000000 +0C0000000000000000000000000000000000000000000000000000002AAA000000000000E8000000E808EA036A00E808 +008207FF50D8807080800380FFF300001FFF7FFF0000010000000000000000003E6FFEEFFBFBBD57FFFF03E1FFFFFFFF +00000200000000000000000000000000000000000001B000000000000000000000000000000000000000000000000000 +0000000000000600000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000007FF0000100000000000000000000070000000000000000000001000000000000000 +000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000008000 +000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000080000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF0000000000000001074000000000000000000000 +9E00000000000000000000008000000000000000FFFE0000FFFFFFFFFFFFFFFFFFFC7FFF000000000000000000000000 +7FFFFFFFFFFFFFFFFFFF00FF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000030000000000000000000000000000000 +00000000000000000000000000010000000000000000000000000000031C00000000000000000000F000000000000200 +000000000000000000000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000 +A0F8007F5F7FFFFFFFFFFFDBFFFFFFFFFFFFFFFF0003FFFFFFF80000FFFFFFFFFFFFFFFF3FFFFFFFFFFF0000FFFFFFFF +FFFCFFFFFFFFFFFF000000FF1FFF000003FF0000FFFF0000FFF7FF9FFFD70F7FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFF +FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF1CFCFCFC00007F7F00000000000000000000000000000000 +FFFFFFBE07FDFFFF00000000000000000000000000000000000000000000000000000000040000000000000000000000 +000000000000008000000000000000000000000000000000000000000000000000000000400000000080000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000240100000000000000000000 +000000000000000000000000000000000000000000008000000000000000000000000000000100000000000000000000 +000000000000000000000000000000000000000000000000C00000000000001F00000000F80000000000000100000000 +FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFFDFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFF00000000FFFF0000FFFFFFFF00003FFF +00000000000000000000000000000000FFFFFFEF0AF7FE96AA96EA845EF7F7960FFFFBFF0FFFFBEE0000000000000000 +FFFF07FFFFFF7FFF0000FFFF00001C0000010000000000000000000000000000FFFF00070FFFFFFF000301FF00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FF0000 +3FFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //2944 bytes -enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xf0], [ 0x100, 0x160, 0x3e00], [ 0x2020100, 0x5040302, 0x2020206, 0x8070202, 0x2020202, 0x9020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x7000f, 0x70007, 0x70007, 0x70007, 0x70007, 0x100007, 0x110007, 0x130012, 0x150014, 0x170016, 0x70018, 0x70007, 0x70007, 0x70019, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x230022, 0x70007, 0x240007, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x210021, 0x250021, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x210007, 0x270026, 0x280021, 0x2a0029, 0x70007, 0x70007, 0x70007, 0x2b0007, 0x70007, 0x70007, 0x70007, 0x70007, 0x2d002c, 0x2e0007, 0x30002f, 0x70007, 0x310007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x320007, 0x70007, 0x340033, 0x360035, 0x70007, 0x70007, 0x70007, 0x70007, 0x70037, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70038, 0x390007, 0x7003a, 0x70007, 0x70007, 0x70007, 0x3b0007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x210021, 0x7003c, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x70007, 0x0, 0x0, 0x0, 0x0, 0x0, 0x773c8501, 0x3e7effbf, 0xbe7effbf, 0xfffcffff, 0xfefdff3f, 0xfff3f3f9, 0xffffff3f, 0x0, 0x18003, 0xdffffff0, 0xff3fffcf, 0xcfffffff, 0xfffc0, 0x0, 0x0, 0x0, 0x1ff0000, 0x3f000000, 0x1f, 0x0, 0x0, 0x1b, 0x44100000, 0x1d7f0, 0x1fc00, 0x7f7c00, 0x2370000, 0x200708b, 0x2000000, 0x708b0000, 0xc00000, 0x0, 0x0, 0xfccf0006, 0x33ffcfc, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x0, 0x0, 0x7c, 0x0, 0x1e00000, 0x0, 0x0, 0x80005, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x120200, 0xff000000, 0x0, 0x0, 0x0, 0xb0001800, 0x0, 0x0, 0x480000, 0x4e000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30001900, 0x0, 0x100000, 0x0, 0x1c00, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0xd81, 0x0, 0x0, 0x0, 0x1c00, 0x0, 0x0, 0x0, 0x74000000, 0x0, 0x0, 0x80000, 0x0, 0x0, 0x0, 0x80000, 0x30000000, 0x0, 0x1000, 0x0, 0x10842008, 0x3e80200, 0x20080002, 0x2001084, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x45540, 0x28000000, 0xb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf7ff7000, 0xffffbfff, 0x10007ff, 0xf8000000, 0xffffffff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0xffdfffff, 0xefcfffdf, 0x7fdcffff, 0x8207ff, 0x50d88070, 0x80800380, 0xfff30000, 0x1fff7fff, 0x100, 0x0, 0x0, 0x3e6ffeef, 0xfbfbbd57, 0xffff03e1, 0xffffffff, 0xc000200, 0x4000, 0xe000, 0x0, 0x1210, 0x1b050, 0x292, 0x333e005, 0x333, 0xf000, 0x0, 0x3c0f, 0x0, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0x1000, 0x0, 0x0, 0x700000, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x30000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x80000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1, 0x7400000, 0x55555000, 0x36db02a5, 0xd8100000, 0x55555000, 0x36db02a5, 0xc7900000, 0x0, 0xfffe0000, 0xffffffff, 0xffffffff, 0xfffc7fff, 0x0, 0x0, 0x0, 0x7fffffff, 0xffffffff, 0xffff00ff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x30000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x31c0000, 0x0, 0x0, 0xf0000000, 0x200, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x7fe53fff, 0xfffffc65, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xa0f8007f, 0x5f7fffff, 0xffffffdb, 0xffffffff, 0xffffffff, 0x3ffff, 0xfff80000, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xffffffff, 0xfffcffff, 0xffffffff, 0xff, 0x1fff0000, 0x3ff0000, 0xffff0000, 0xfff7ff9f, 0xffd70f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x7f7f, 0x0, 0x0, 0x0, 0x0, 0xffffffbe, 0x7fdffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14000000, 0x800, 0x0, 0x0, 0x0, 0xc000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x58000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc000000, 0x0, 0x0, 0x0, 0x1000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x1f, 0x0, 0xf8000000, 0x1, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffcfff, 0xffffffff, 0x0, 0xffff0000, 0xffffffff, 0x3fff, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x0, 0xffff07ff, 0xffff7fff, 0xffff, 0x1c00, 0x10000, 0x0, 0x0, 0x0, 0xffff0007, 0xfffffff, 0x301ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000F0", +cast(immutable size_t[]) x" +000001000000016000003E00", +cast(immutable size_t[]) x" +020201000504030202020206080702020202020209020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000030002000500040007000600080007000A0009000C000B000E000D +0007000F0007000700070007000700070007000700100007001100070013001200150014001700160007001800070007 +0007000700070019001B001A001D001C001F001E00210020000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070023002200070007002400070021002100210021 +002100210021002100210021002100210021002100210021002100210021002100210021002100210021002100210021 +002100210021002100210021002100210021002100210021002100210025002100070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +002100070027002600280021002A0029000700070007000700070007002B000700070007000700070007000700070007 +002D002C002E00070030002F000700070031000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070032000700070007003400330036003500070007000700070007000700070007 +0007003700070007000700070007000700070007000700070007000700070038003900070007003A0007000700070007 +00070007003B000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +00070007000700070007000700070007002100210007003C000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +0000000000000000000000000000000000000000773C85013E7EFFBFBE7EFFBFFFFCFFFFFEFDFF3FFFF3F3F9FFFFFF3F +0000000000018003DFFFFFF0FF3FFFCFCFFFFFFF000FFFC000000000000000000000000001FF00003F0000000000001F +00000000000000000000001B441000000001D7F00001FC00007F7C00023700000200708B02000000708B000000C00000 +0000000000000000FCCF0006033FFCFC0000000000000000000000000000000000000080000000000000000000000000 +000000000000007C0000000001E000000000000000000000000800050000000000000000000000000000000000000000 +000000000000000000000000000000000000000000120200FF000000000000000000000000000000B000180000000000 +00000000004800004E000000000000000000000000000000000000000000000000000000000000003000190000000000 +001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D8100000000 +000000000000000000001C00000000000000000000000000740000000000000000000000000800000000000000000000 +0000000000080000300000000000000000001000000000001084200803E8020020080002020010840000000000000000 +000000000000004000000000000000000000000000000000000000001000000000045540280000000000000B00000000 +0000000000000000000000000000000000000000F7FF7000FFFFBFFF010007FFF8000000FFFFFFFF0000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF03FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFF +FFFFFFFFFFDFFFFFEFCFFFDF7FDCFFFF008207FF50D8807080800380FFF300001FFF7FFF000001000000000000000000 +3E6FFEEFFBFBBD57FFFF03E1FFFFFFFF0C000200000040000000E00000000000000012100001B050000002920333E005 +000003330000F0000000000000003C0F0000000000000600000000000000000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FF00001000000000000000000000700000 +000000000000000010000000000000000000000000000000000000003000000000000000000000000000000000000000 +000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000 +80000000000000000000000000080000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF00000000 +00000001074000005555500036DB02A5D81000005555500036DB02A5C790000000000000FFFE0000FFFFFFFFFFFFFFFF +FFFC7FFF0000000000000000000000007FFFFFFFFFFFFFFFFFFF00FF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 +3000000000000000000000000000000000000000000000000000000000010000000000000000000000000000031C0000 +0000000000000000F00000000000020000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0000000F00000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000 +A0F8007F5F7FFFFFFFFFFFDBFFFFFFFFFFFFFFFF0003FFFFFFF80000FFFFFFFFFFFFFFFF3FFFFFFFFFFF0000FFFFFFFF +FFFCFFFFFFFFFFFF000000FF1FFF000003FF0000FFFF0000FFF7FF9FFFD70F7FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFF +FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF1CFCFCFC00007F7F00000000000000000000000000000000 +FFFFFFBE07FDFFFF00000000000000000000000000000000000000000000000014000000000008000000000000000000 +000000000000C00000000000000000000000000000000000000000000000000000000000000000000000180000000000 +000000000000000000000000000000000000000000000000000000000000000000000000580000000000000000000000 +00000000000000000000000000000000000000000C000000000000000000000000000000010000000000000000000000 +000000000000000000000000000000000000000000000000C00000000000001F00000000F80000000000000100000000 +FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFFDFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFF00000000FFFF0000FFFFFFFF00003FFF +00000000000000000000000000000000FFFFFFEF0AF7FE96AA96EA845EF7F7960FFFFBFF0FFFFBEE0000000000000000 +FFFF07FFFFFF7FFF0000FFFF00001C0000010000000000000000000000000000FFFF00070FFFFFFF000301FF00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FF0000 +3FFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); } @@ -33,13 +254,234 @@ enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xf0], [ 0x100 static if (size_t.sizeof == 8) { //1728 bytes -enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x60], [ 0x100, 0x100, 0x1e00], [ 0x302020202020100, 0x205020202020204, 0x602020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000000000000, 0x200000000, 0x5000400030000, 0x8000000070006, 0xa0009, 0x0, 0xb000000000000, 0xc000000000000, 0xf0000000e000d, 0x0, 0x1000000000, 0x0, 0x11, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14001300120000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17000000160015, 0x190018, 0x1a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c00120012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10361f8081a9fdf, 0x401000000000003f, 0x80, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x1000000000000000, 0xff000000, 0x4000000000000000, 0xb0800000, 0x48000000000000, 0x4e000000, 0x0, 0x0, 0x4000000000000000, 0x30c00000, 0x4000000000000000, 0x800000, 0x0, 0x400000, 0x0, 0x600004, 0x4000000000000000, 0x800000, 0x0, 0x80008400, 0x0, 0x168020010842008, 0x200108420080002, 0x0, 0x400000000000, 0x0, 0x0, 0x0, 0x0, 0x3ffffe00000000, 0xffffff0000000000, 0x7, 0x20000000000000, 0x0, 0x0, 0x0, 0x0, 0x2aaa000000000000, 0x4800000000000000, 0x2a00c80808080a00, 0x3, 0x0, 0x0, 0x0, 0xc4000000000, 0x0, 0x0, 0x0, 0x60000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x6000000, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffc657fe53fff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7ffc00a0000000, 0x7fdb, 0x0, 0x0, 0x0, 0x0, 0x400000000000000, 0x0, 0x8000000000, 0x0, 0x0, 0x0, 0x4000000000000000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x2401000000000000, 0x0, 0x0, 0x0, 0x800000000000, 0x0, 0x1000000000000, 0x0, 0x0, 0x0, 0x0, 0x1fc0000000, 0xf800000000000000, 0x1, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000060", +cast(immutable size_t[]) x" +000000000000010000000000000001000000000000001E00", +cast(immutable size_t[]) x" +030202020202010002050202020202040602020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000000000000000020000000000050004000300000008000000070006 +00000000000A00090000000000000000000B000000000000000C000000000000000F0000000E000D0000000000000000 +000000100000000000000000000000000000000000000011000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000014001300120000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000017000000160015000000000019001800000000001A00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000001B00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000001C00120012000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000010361F8081A9FDF401000000000003F +000000000000008000000000000000000000000000000000000000000038000000000000000000000000000000000000 +100000000000000000000000FF000000400000000000000000000000B08000000048000000000000000000004E000000 +0000000000000000000000000000000040000000000000000000000030C0000040000000000000000000000000800000 +000000000000000000000000004000000000000000000000000000000060000440000000000000000000000000800000 +000000000000000000000000800084000000000000000000016802001084200802001084200800020000000000000000 +00004000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFE00000000 +FFFFFF000000000000000000000000070020000000000000000000000000000000000000000000000000000000000000 +00000000000000002AAA00000000000048000000000000002A00C80808080A0000000000000000030000000000000000 +0000000000000000000000000000000000000C4000000000000000000000000000000000000000000000000000000000 +000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000100000000000000000000000000000000000000000000000060000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC657FE53FFFFFFF3FFFFFFFFFFF +FFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFC00A00000000000000000007FDB00000000000000000000000000000000 +000000000000000000000000000000000400000000000000000000000000000000000080000000000000000000000000 +000000000000000000000000000000004000000000000000000000000080000000000000000000000000000000000000 +000000000000000000000000000000002401000000000000000000000000000000000000000000000000000000000000 +000080000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000 +00000000000000000000001FC0000000F8000000000000000000000000000001000000003FFFFFFF0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +); //2048 bytes -enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x70], [ 0x100, 0x140, 0x2400], [ 0x504030202020100, 0x207020202020206, 0x802020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x5000600050004, 0x9000800070005, 0xc0005000b000a, 0x500050005000d, 0x5000500050005, 0xe000500050005, 0x10000f00050005, 0x14001300120011, 0x5000500050005, 0x5001500050005, 0x5000500050005, 0x5000500050016, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x17001700170017, 0x18001700170017, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x1a001900170005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x1d0005001c001b, 0x50005001f001e, 0x5000500200005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500210005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5002200170017, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x5000500050005, 0x0, 0x0, 0x0, 0xbe7effbf3e7effbf, 0x7ef1ff3ffffcffff, 0x7fffff3ffff3f1f8, 0x1800300000000, 0xff31ffcfdfffe000, 0xfffc0cfffffff, 0x0, 0x0, 0x0, 0x0, 0x401000000000001b, 0x1fc000001d7e0, 0x187c00, 0x20000000200708b, 0xc00000708b0000, 0x0, 0x33ffcfcfccf0006, 0x0, 0x0, 0x0, 0x0, 0x7c00000000, 0x0, 0x0, 0x80005, 0x12020000000000, 0xff000000, 0x0, 0xb0001800, 0x48000000000000, 0x4e000000, 0x0, 0x0, 0x0, 0x30001900, 0x100000, 0x1c00, 0x0, 0x100, 0x0, 0xd81, 0x0, 0x1c00, 0x0, 0x74000000, 0x0, 0x168020010842008, 0x200108420080002, 0x0, 0x4000000000, 0x0, 0x0, 0x0, 0x2800000000045540, 0xb, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0bffffff, 0x3ffffffffffffff, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0x5fdfffffffffffff, 0x3fdcffffefcfffde, 0x3, 0x0, 0x0, 0x0, 0xc4000000000, 0x0, 0x40000c000000, 0xe000, 0x5000001210, 0x333e00500000292, 0xf00000000333, 0x3c0f00000000, 0x60000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x36db02a555555000, 0x5555500040100000, 0x4790000036db02a5, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffff, 0x0, 0xfffffc657fe53fff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7ffc00a0000000, 0x7fdb, 0x0, 0x0, 0x0, 0x0, 0x80014000000, 0x0, 0xc00000000000, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x0, 0x0, 0x0, 0x0, 0x5800000000000000, 0x0, 0x0, 0x0, 0xc00000000000000, 0x0, 0x100000000000000, 0x0, 0x0, 0x0, 0x0, 0x1fc0000000, 0xf800000000000000, 0x1, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000070", +cast(immutable size_t[]) x" +000000000000010000000000000001400000000000002400", +cast(immutable size_t[]) x" +050403020202010002070202020202060802020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000300020001000000050006000500040009000800070005000C0005000B000A +000500050005000D0005000500050005000E0005000500050010000F0005000500140013001200110005000500050005 +000500150005000500050005000500050005000500050016000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050017001700170017 +001700170017001700170017001700170017001700170017001700170017001700170017001700170017001700170017 +001700170017001700170017001700170017001700170017001800170017001700050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +001A00190017000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +001D0005001C001B00050005001F001E0005000500200005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500210005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +000500220017001700050005000500050005000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500000000000000000000000000000000 +0000000000000000BE7EFFBF3E7EFFBF7EF1FF3FFFFCFFFF7FFFFF3FFFF3F1F80001800300000000FF31FFCFDFFFE000 +000FFFC0CFFFFFFF0000000000000000000000000000000000000000000000000000000000000000401000000000001B +0001FC000001D7E00000000000187C00020000000200708B00C00000708B00000000000000000000033FFCFCFCCF0006 +00000000000000000000000000000000000000000000000000000000000000000000007C000000000000000000000000 +00000000000000000000000000080005001202000000000000000000FF000000000000000000000000000000B0001800 +0048000000000000000000004E0000000000000000000000000000000000000000000000000000000000000030001900 +00000000001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D81 +00000000000000000000000000001C000000000000000000000000007400000000000000000000000168020010842008 +020010842008000200000000000000000000004000000000000000000000000000000000000000000000000000000000 +2800000000045540000000000000000B00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0BFFFFFF03FFFFFFFFFFFFFFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F5FDFFFFFFFFFFFFF3FDCFFFFEFCFFFDE +000000000000000300000000000000000000000000000000000000000000000000000C40000000000000000000000000 +000040000C000000000000000000E00000000050000012100333E005000002920000F0000000033300003C0F00000000 +000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000010000000000000000000000036DB02A55555500055555000401000004790000036DB02A5 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000000FFFFFFFFF0000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF +5F7FFC00A00000000000000000007FDB0000000000000000000000000000000000000000000000000000000000000000 +000008001400000000000000000000000000C00000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000 +58000000000000000000000000000000000000000000000000000000000000000C000000000000000000000000000000 +010000000000000000000000000000000000000000000000000000000000000000000000000000000000001FC0000000 +F8000000000000000000000000000001000000003FFFFFFF000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //2848 bytes -enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x70], [ 0x100, 0x140, 0x3d00], [ 0x402030202020100, 0x706020202020205, 0x802020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x4000600050004, 0x9000800070004, 0xd000c000b000a, 0x40004000f000e, 0x4000400040004, 0x10000400040004, 0x13001200110004, 0x17001600150014, 0x4000400040018, 0x4001900040004, 0x1d001c001b001a, 0x210020001f001e, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x23002200040004, 0x24000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x26002500210004, 0x29002800270021, 0x4000400040004, 0x2a000400040004, 0x4000400040004, 0x4000400040004, 0x2d0004002c002b, 0x40004002f002e, 0x4000400300004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400310004, 0x35003400330032, 0x4000400040004, 0x4000400040004, 0x4000400040036, 0x4000400040004, 0x4000400040004, 0x4003700040004, 0x4003900380004, 0x4000400040004, 0x3a000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4003b00210021, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x4000400040004, 0x0, 0x0, 0x773c850100000000, 0x0, 0x800c000000000000, 0x8000000000000201, 0x0, 0xe000000001ff0, 0x0, 0x0, 0x1ff000000000000, 0x1f3f000000, 0x10361f8081a9fdf, 0x441000000000003f, 0xb0, 0x2370000007f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0x0, 0x0, 0x1e0000000380000, 0x0, 0x0, 0x1000000000000000, 0xff000000, 0x4000000000000000, 0xb0800000, 0x48000000000000, 0x4e000000, 0x0, 0x0, 0x4000000000000000, 0x30c00000, 0x4000000000000000, 0x800000, 0x0, 0x400000, 0x0, 0x600004, 0x4000000000000000, 0x800000, 0x0, 0x80008400, 0x8000000000000, 0x0, 0x8000000000000, 0x30000000, 0x1000, 0x3e8020010842008, 0x200108420080002, 0x0, 0x400000000000, 0x0, 0x0, 0x1000000000000000, 0x0, 0x3ffffe00000000, 0xffffff0000000000, 0x7, 0x20000000000000, 0x0, 0x0, 0x0, 0xf7ff700000000000, 0x10007ffffffbfff, 0xfffffffff8000000, 0x0, 0x0, 0x0, 0xc000000, 0x0, 0x0, 0x2aaa000000000000, 0xe800000000000000, 0x6a00e808e808ea03, 0x50d88070008207ff, 0xfff3000080800380, 0x1001fff7fff, 0x0, 0xfbfbbd573e6ffeef, 0xffffffffffff03e1, 0x200, 0x0, 0x1b00000000000, 0x0, 0x0, 0x0, 0x60000000000, 0x0, 0x0, 0x0, 0x0, 0xffffffff00000000, 0xffffffffffffffff, 0x7ffffffffff, 0x1000, 0x70000000000000, 0x0, 0x10000000, 0x0, 0x3000000000000000, 0x0, 0x0, 0x0, 0x800000000000, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x8000000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x740000000000001, 0x0, 0x9e000000, 0x8000000000000000, 0xfffe000000000000, 0xffffffffffffffff, 0xfffc7fff, 0x0, 0xffffffff7fffffff, 0x7fffffffffff00ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0x0, 0x30000000, 0x0, 0x0, 0x1000000000000, 0x0, 0x31c000000000000, 0x0, 0x200f0000000, 0x0, 0x0, 0xfffffc657fe53fff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7fffffa0f8007f, 0xffffffffffffffdb, 0x3ffffffffffff, 0xfffffffffff80000, 0x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff, 0x1fff0000000000ff, 0xffff000003ff0000, 0xffd70f7ffff7ff9f, 0xffffffffffffffff, 0x1fffffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0x7fffffffffffffff, 0x7f7f1cfcfcfc, 0x0, 0x0, 0x7fdffffffffffbe, 0x0, 0x0, 0x0, 0x400000000000000, 0x0, 0x8000000000, 0x0, 0x0, 0x0, 0x4000000000000000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x2401000000000000, 0x0, 0x0, 0x0, 0x800000000000, 0x0, 0x1000000000000, 0x0, 0x0, 0x0, 0x0, 0x1fc0000000, 0xf800000000000000, 0x1, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffcfff, 0xffff000000000000, 0x3fffffffffff, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x0, 0xffff7fffffff07ff, 0x1c000000ffff, 0x10000, 0x0, 0xfffffffffff0007, 0x301ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff000000000000, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000070", +cast(immutable size_t[]) x" +000000000000010000000000000001400000000000003D00", +cast(immutable size_t[]) x" +040203020202010007060202020202050802020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000300020001000000040006000500040009000800070004000D000C000B000A +00040004000F000E00040004000400040010000400040004001300120011000400170016001500140004000400040018 +0004001900040004001D001C001B001A00210020001F001E000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004002300220004000400240004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400260025002100040029002800270021 +0004000400040004002A00040004000400040004000400040004000400040004002D0004002C002B00040004002F002E +000400040030000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040031000400350034003300320004000400040004000400040004000400040004000400360004000400040004 +0004000400040004000400370004000400040039003800040004000400040004003A0004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +0004003B0021002100040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400000000000000000000000000000000 +773C8501000000000000000000000000800C00000000000080000000000002010000000000000000000E000000001FF0 +0000000000000000000000000000000001FF0000000000000000001F3F000000010361F8081A9FDF441000000000003F +00000000000000B002370000007F00000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000800000000000000000000000000000000001E0000000380000 +00000000000000000000000000000000100000000000000000000000FF000000400000000000000000000000B0800000 +0048000000000000000000004E0000000000000000000000000000000000000040000000000000000000000030C00000 +400000000000000000000000008000000000000000000000000000000040000000000000000000000000000000600004 +400000000000000000000000008000000000000000000000000000008000840000080000000000000000000000000000 +00080000000000000000000030000000000000000000100003E802001084200802001084200800020000000000000000 +00004000000000000000000000000000000000000000000010000000000000000000000000000000003FFFFE00000000 +FFFFFF000000000000000000000000070020000000000000000000000000000000000000000000000000000000000000 +F7FF700000000000010007FFFFFFBFFFFFFFFFFFF8000000000000000000000000000000000000000000000000000000 +000000000C000000000000000000000000000000000000002AAA000000000000E8000000000000006A00E808E808EA03 +50D88070008207FFFFF3000080800380000001001FFF7FFF0000000000000000FBFBBD573E6FFEEFFFFFFFFFFFFF03E1 +000000000000020000000000000000000001B00000000000000000000000000000000000000000000000000000000000 +00000600000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000 +FFFFFFFFFFFFFFFF000007FFFFFFFFFF0000000000001000007000000000000000000000000000000000000010000000 +000000000000000030000000000000000000000000000000000000000000000000000000000000000000800000000000 +000000000000000000000000000000000000000000000000000000000000000000000000800000000008000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000003FFFFF07400000000000010000000000000000 +000000009E0000008000000000000000FFFE000000000000FFFFFFFFFFFFFFFF00000000FFFC7FFF0000000000000000 +FFFFFFFF7FFFFFFF7FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000300000000000000000000000 +000000000000000000010000000000000000000000000000031C000000000000000000000000000000000200F0000000 +00000000000000000000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF +5F7FFFFFA0F8007FFFFFFFFFFFFFFFDB0003FFFFFFFFFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFFFFFFFFFFFFF0000 +FFFFFFFFFFFCFFFF1FFF0000000000FFFFFF000003FF0000FFD70F7FFFF7FF9FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF00007F7F1CFCFCFC00000000000000000000000000000000 +07FDFFFFFFFFFFBE00000000000000000000000000000000000000000000000004000000000000000000000000000000 +000000800000000000000000000000000000000000000000000000000000000040000000000000000000000000800000 +000000000000000000000000000000000000000000000000000000000000000024010000000000000000000000000000 +000000000000000000000000000000000000800000000000000000000000000000010000000000000000000000000000 +0000000000000000000000000000000000000000000000000000001FC0000000F8000000000000000000000000000001 +FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFF00000000000000003FFFFFFFFFFF +000000000000000000000000000000000AF7FE96FFFFFFEF5EF7F796AA96EA840FFFFBEE0FFFFBFF0000000000000000 +FFFF7FFFFFFF07FF00001C000000FFFF000000000001000000000000000000000FFFFFFFFFFF000700000000000301FF +0000000000000000000000000000000000000000000000000000000000000000000000000000000003FF000000000000 +000000003FFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //2944 bytes -enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x78], [ 0x100, 0x160, 0x3e00], [ 0x504030202020100, 0x807020202020206, 0x902020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xa000900080007, 0xe000d000c000b, 0x700070007000f, 0x7000700070007, 0x10000700070007, 0x13001200110007, 0x17001600150014, 0x7000700070018, 0x7001900070007, 0x1d001c001b001a, 0x210020001f001e, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x23002200070007, 0x24000700070007, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x21002100210021, 0x25002100210021, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x27002600210007, 0x2a002900280021, 0x7000700070007, 0x2b000700070007, 0x7000700070007, 0x7000700070007, 0x2e0007002d002c, 0x700070030002f, 0x7000700310007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700320007, 0x36003500340033, 0x7000700070007, 0x7000700070007, 0x7000700070037, 0x7000700070007, 0x7000700070007, 0x7003800070007, 0x7003a00390007, 0x7000700070007, 0x3b000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7003c00210021, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x7000700070007, 0x0, 0x0, 0x773c850100000000, 0xbe7effbf3e7effbf, 0xfefdff3ffffcffff, 0xffffff3ffff3f3f9, 0x1800300000000, 0xff3fffcfdffffff0, 0xfffc0cfffffff, 0x0, 0x1ff000000000000, 0x1f3f000000, 0x0, 0x441000000000001b, 0x1fc000001d7f0, 0x2370000007f7c00, 0x20000000200708b, 0xc00000708b0000, 0x0, 0x33ffcfcfccf0006, 0x0, 0x0, 0x80, 0x0, 0x7c00000000, 0x1e0000000000000, 0x0, 0x80005, 0x0, 0x0, 0x0, 0x0, 0x12020000000000, 0xff000000, 0x0, 0xb0001800, 0x48000000000000, 0x4e000000, 0x0, 0x0, 0x0, 0x30001900, 0x100000, 0x1c00, 0x0, 0x100, 0x0, 0xd81, 0x0, 0x1c00, 0x0, 0x74000000, 0x8000000000000, 0x0, 0x8000000000000, 0x30000000, 0x1000, 0x3e8020010842008, 0x200108420080002, 0x0, 0x4000000000, 0x0, 0x0, 0x1000000000000000, 0x2800000000045540, 0xb, 0x0, 0x0, 0xf7ff700000000000, 0x10007ffffffbfff, 0xfffffffff8000000, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0fffffff, 0x3ffffffffffffff, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0xffdfffffffffffff, 0x7fdcffffefcfffdf, 0x50d88070008207ff, 0xfff3000080800380, 0x1001fff7fff, 0x0, 0xfbfbbd573e6ffeef, 0xffffffffffff03e1, 0x40000c000200, 0xe000, 0x1b05000001210, 0x333e00500000292, 0xf00000000333, 0x3c0f00000000, 0x60000000000, 0x0, 0x0, 0x0, 0x0, 0xffffffff00000000, 0xffffffffffffffff, 0x7ffffffffff, 0x1000, 0x70000000000000, 0x0, 0x10000000, 0x0, 0x3000000000000000, 0x0, 0x0, 0x0, 0x800000000000, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x8000000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x740000000000001, 0x36db02a555555000, 0x55555000d8100000, 0xc790000036db02a5, 0xfffe000000000000, 0xffffffffffffffff, 0xfffc7fff, 0x0, 0xffffffff7fffffff, 0x7fffffffffff00ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0x0, 0x30000000, 0x0, 0x0, 0x1000000000000, 0x0, 0x31c000000000000, 0x0, 0x200f0000000, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffff, 0x0, 0xfffffc657fe53fff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7fffffa0f8007f, 0xffffffffffffffdb, 0x3ffffffffffff, 0xfffffffffff80000, 0x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff, 0x1fff0000000000ff, 0xffff000003ff0000, 0xffd70f7ffff7ff9f, 0xffffffffffffffff, 0x1fffffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0x7fffffffffffffff, 0x7f7f1cfcfcfc, 0x0, 0x0, 0x7fdffffffffffbe, 0x0, 0x0, 0x0, 0x80014000000, 0x0, 0xc00000000000, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x0, 0x0, 0x0, 0x0, 0x5800000000000000, 0x0, 0x0, 0x0, 0xc00000000000000, 0x0, 0x100000000000000, 0x0, 0x0, 0x0, 0x0, 0x1fc0000000, 0xf800000000000000, 0x1, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffcfff, 0xffff000000000000, 0x3fffffffffff, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x0, 0xffff7fffffff07ff, 0x1c000000ffff, 0x10000, 0x0, 0xfffffffffff0007, 0x301ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff000000000000, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000078", +cast(immutable size_t[]) x" +000000000000010000000000000001600000000000003E00", +cast(immutable size_t[]) x" +050403020202010008070202020202060902020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000030002000100000007000600050004000A000900080007000E000D000C000B +000700070007000F00070007000700070010000700070007001300120011000700170016001500140007000700070018 +0007001900070007001D001C001B001A00210020001F001E000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007002300220007000700240007000700070021002100210021 +002100210021002100210021002100210021002100210021002100210021002100210021002100210021002100210021 +002100210021002100210021002100210021002100210021002500210021002100070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +0027002600210007002A0029002800210007000700070007002B00070007000700070007000700070007000700070007 +002E0007002D002C000700070030002F0007000700310007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700320007003600350034003300070007000700070007000700070007 +00070007000700370007000700070007000700070007000700070038000700070007003A003900070007000700070007 +003B00070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007003C00210021000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +00000000000000000000000000000000773C850100000000BE7EFFBF3E7EFFBFFEFDFF3FFFFCFFFFFFFFFF3FFFF3F3F9 +0001800300000000FF3FFFCFDFFFFFF0000FFFC0CFFFFFFF000000000000000001FF0000000000000000001F3F000000 +0000000000000000441000000000001B0001FC000001D7F002370000007F7C00020000000200708B00C00000708B0000 +0000000000000000033FFCFCFCCF00060000000000000000000000000000000000000000000000800000000000000000 +0000007C0000000001E00000000000000000000000000000000000000008000500000000000000000000000000000000 +00000000000000000000000000000000001202000000000000000000FF000000000000000000000000000000B0001800 +0048000000000000000000004E0000000000000000000000000000000000000000000000000000000000000030001900 +00000000001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D81 +00000000000000000000000000001C000000000000000000000000007400000000080000000000000000000000000000 +00080000000000000000000030000000000000000000100003E802001084200802001084200800020000000000000000 +00000040000000000000000000000000000000000000000010000000000000002800000000045540000000000000000B +00000000000000000000000000000000F7FF700000000000010007FFFFFFBFFFFFFFFFFFF80000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF03FFFFFFFFFFFFFFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F +FFDFFFFFFFFFFFFF7FDCFFFFEFCFFFDF50D88070008207FFFFF3000080800380000001001FFF7FFF0000000000000000 +FBFBBD573E6FFEEFFFFFFFFFFFFF03E1000040000C000200000000000000E0000001B050000012100333E00500000292 +0000F0000000033300003C0F000000000000060000000000000000000000000000000000000000000000000000000000 +0000000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFF000007FFFFFFFFFF00000000000010000070000000000000 +000000000000000000000000100000000000000000000000300000000000000000000000000000000000000000000000 +000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000800000000008000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000003FFFFF +074000000000000136DB02A55555500055555000D8100000C790000036DB02A5FFFE000000000000FFFFFFFFFFFFFFFF +00000000FFFC7FFF0000000000000000FFFFFFFF7FFFFFFF7FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 +00000000300000000000000000000000000000000000000000010000000000000000000000000000031C000000000000 +000000000000000000000200F000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000000FFFFFFFFF0000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF +5F7FFFFFA0F8007FFFFFFFFFFFFFFFDB0003FFFFFFFFFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFFFFFFFFFFFFF0000 +FFFFFFFFFFFCFFFF1FFF0000000000FFFFFF000003FF0000FFD70F7FFFF7FF9FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF00007F7F1CFCFCFC00000000000000000000000000000000 +07FDFFFFFFFFFFBE00000000000000000000000000000000000000000000000000000800140000000000000000000000 +0000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800 +000000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000 +000000000000000000000000000000000C00000000000000000000000000000001000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000001FC0000000F8000000000000000000000000000001 +FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFF00000000000000003FFFFFFFFFFF +000000000000000000000000000000000AF7FE96FFFFFFEF5EF7F796AA96EA840FFFFBEE0FFFFBFF0000000000000000 +FFFF7FFFFFFF07FF00001C000000FFFF000000000001000000000000000000000FFFFFFFFFFF000700000000000301FF +0000000000000000000000000000000000000000000000000000000000000000000000000000000003FF000000000000 +000000003FFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); } diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index 4f23375925b..6f83d433c58 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -68,9 +68,9 @@ struct UnicodeProperty struct TrieEntry(T...) { - size_t[] offsets; - size_t[] sizes; - size_t[] data; + immutable(size_t)[] offsets; + immutable(size_t)[] sizes; + immutable(size_t)[] data; } SCE simpleCaseTable(size_t i) @@ -2285,42 +2285,2601 @@ bool isHangT(dchar ch) @safe pure nothrow @nogc static if (size_t.sizeof == 4) { //2080 bytes -enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xe0], [ 0x100, 0x140, 0x2500], [ 0x2020100, 0x4020302, 0x6020205, 0x8070202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60007, 0x80006, 0x60006, 0x60006, 0x60006, 0x60006, 0xa0009, 0xc000b, 0xe000d, 0x60006, 0x6000f, 0x60006, 0x60006, 0x60006, 0x110010, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x130012, 0x60006, 0x140006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x150006, 0x60006, 0x160006, 0x60006, 0x60006, 0x180017, 0x190006, 0x60006, 0x60006, 0x6001a, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x6001b, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x6001c, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x1e001d, 0x20001f, 0x60006, 0x60006, 0x60006, 0x210006, 0x60022, 0x60006, 0x60006, 0x60006, 0x230006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x0, 0x0, 0x0, 0x7fffffe, 0x0, 0x4200400, 0x80000000, 0xff7fffff, 0xaaaaaaaa, 0x55aaaaaa, 0xaaaaab55, 0xd4aaaaaa, 0x4e243129, 0xe6512d2a, 0xb5555240, 0xaa29aaaa, 0xaaaaaaaa, 0x93faaaaa, 0xffffaa85, 0xffffffff, 0xffefffff, 0x1ffffff, 0x3, 0x1f, 0x0, 0x0, 0x20, 0x3c8a0000, 0x10000, 0xfffff000, 0xaae37fff, 0x192faaaa, 0x0, 0xffff0000, 0xffffffff, 0xaaaaaaaa, 0xaaaaa802, 0xaaaaaaaa, 0xaaaad554, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaa, 0x0, 0xffffffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xf7ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f000000, 0x0, 0x0, 0x0, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xbfeaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x3f00ff, 0xff00ff, 0xff003f, 0x3fff00ff, 0xff00ff, 0x40df00ff, 0xcf00dc, 0xdc00ff, 0x0, 0x0, 0x0, 0x80020000, 0x1fff0000, 0x0, 0x0, 0x0, 0x8c400, 0x32108000, 0x43c0, 0xffff0000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3ff, 0x0, 0xffff0000, 0xffffffff, 0x3fda1562, 0xaaaaaaaa, 0xaaaaaaaa, 0xaaaaaaaa, 0x8501a, 0xffffffff, 0x20bf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaaaaaaaa, 0x2aaa, 0x3aaaaaaa, 0x0, 0x0, 0x0, 0x0, 0xaaabaaa8, 0xaaaaaaaa, 0x95ffaaaa, 0xaaba50aa, 0xaaa082aa, 0x2aa050a, 0x75c0000, 0x0, 0xffff0000, 0xf7ffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0xf8007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffff00, 0xffff, 0x0, 0x0, 0x0, 0xff000000, 0xfffffff, 0x0, 0x0, 0x0, 0x0, 0xff800000, 0x1bfbfffb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffb9, 0x7fdffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xfc000000, 0xfffff, 0xffdfc000, 0xff, 0xffffffc, 0xebc00000, 0xffef, 0xfffffc00, 0xc000000f, 0xffffff, 0xfffc0000, 0xfff, 0xffffffc0, 0xfc000000, 0xfffff, 0xffffc000, 0xff, 0xffffffc, 0xffc00000, 0xffff, 0xfffffc00, 0x3f, 0xf7fffffc, 0xf0000003, 0xfdfffff, 0xffc00000, 0x3f7fff, 0xffff0000, 0xfdff, 0xfffffc00, 0xbf7, 0x0, 0x7ffffbff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0x3fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffffffc, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000E0", +cast(immutable size_t[]) x" +000001000000014000002500", +cast(immutable size_t[]) x" +020201000402030206020205080702020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000030002000500040006000600060006000600060006000600060006 +000600070008000600060006000600060006000600060006000A0009000C000B000E000D000600060006000F00060006 +000600060006000600110010000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060013001200060006001400060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006001500060006000600160006 +0006000600060006001800170019000600060006000600060006001A0006000600060006000600060006000600060006 +0006001B000600060006000600060006000600060006000600060006000600060006000600060006000600060006001C +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006001E001D0020001F00060006000600060006000600210006 +000600220006000600060006000600060023000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600000000000000000000000007FFFFFE +000000000420040080000000FF7FFFFFAAAAAAAA55AAAAAAAAAAAB55D4AAAAAA4E243129E6512D2AB5555240AA29AAAA +AAAAAAAA93FAAAAAFFFFAA85FFFFFFFFFFEFFFFF01FFFFFF000000030000001F0000000000000000000000203C8A0000 +00010000FFFFF000AAE37FFF192FAAAA00000000FFFF0000FFFFFFFFAAAAAAAAAAAAA802AAAAAAAAAAAAD554AAAAAAAA +AAAAAAAA0000AAAA00000000FFFFFFFF000001FF00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000F7FFFFFF +000000000000000000000000000000000000000000000000000000003F00000000000000000000000000000000000000 +000001FF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA003F00FF00FF00FF00FF003F3FFF00FF +00FF00FF40DF00FF00CF00DC00DC00FF000000000000000000000000800200001FFF0000000000000000000000000000 +0008C40032108000000043C0FFFF00000000001000000000000000000000000000000000000000000000000000000000 +0000000000000000FFFF0000000003FF00000000FFFF0000FFFFFFFF3FDA1562AAAAAAAAAAAAAAAAAAAAAAAA0008501A +FFFFFFFF000020BF0000000000000000000000000000000000000000000000000000000000000000AAAAAAAA00002AAA +3AAAAAAA00000000000000000000000000000000AAABAAA8AAAAAAAA95FFAAAAAABA50AAAAA082AA02AA050A075C0000 +00000000FFFF0000F7FFFFFFFFFF03FFFFFFFFFFFFFFFFFF000000000000000000F8007F000000000000000000000000 +00000000000000000000000000000000000000000000000007FFFFFE0000000000000000000000000000000000000000 +00000000FFFFFF000000FFFF000000000000000000000000FF0000000FFFFFFF00000000000000000000000000000000 +FF8000001BFBFFFB000000000000000000000000000000000000000000000000FFFFFFB907FDFFFF0000000000000000 +000000000000000000000000000000000000000000000000FFFFFFFF0007FFFF00000000000000000000000000000000 +0000000000000000FFFFFFFF00000000000000000000000000000000FFFFFFFF00000000000000000000000000000000 +FC000000000FFFFFFFDFC000000000FF0FFFFFFCEBC000000000FFEFFFFFFC00C000000F00FFFFFFFFFC000000000FFF +FFFFFFC0FC000000000FFFFFFFFFC000000000FF0FFFFFFCFFC000000000FFFFFFFFFC000000003FF7FFFFFCF0000003 +0FDFFFFFFFC00000003F7FFFFFFF00000000FDFFFFFFFC0000000BF7000000007FFFFBFF000007E00000000000000000 +0000000000000000000000000000000000000000FFFF0000FFFFFFFF00003FFF00000000000000000000000000000000 +00000000FFFFFFFC0000000F000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //1856 bytes -enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0xe0], [ 0x100, 0x140, 0x1e00], [ 0x2020100, 0x4020302, 0x6020205, 0x8070202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60007, 0x80006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60009, 0xb000a, 0xc0006, 0x60006, 0x6000d, 0x60006, 0x60006, 0x60006, 0x6000e, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x10000f, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x110006, 0x60006, 0x60006, 0x130012, 0x60006, 0x60006, 0x60006, 0x60014, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60015, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60016, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x180017, 0x1a0019, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x1b0006, 0x60006, 0x60006, 0x60006, 0x1c0006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x60006, 0x0, 0x0, 0x7fffffe, 0x0, 0x0, 0x0, 0x7f7fffff, 0x0, 0x55555555, 0xaa555555, 0x555554aa, 0x2b555555, 0xb1dbced6, 0x11aed2d5, 0x4aaaa490, 0x55d25555, 0x55555555, 0x6c055555, 0x557a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80450000, 0xfffed740, 0xffb, 0x551c8000, 0xe6905555, 0xffffffff, 0xffff, 0x0, 0x55555555, 0x55555401, 0x55555555, 0x55552aab, 0x55555555, 0x55555555, 0xfffe5555, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x20bf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xe7ffffff, 0x0, 0x0, 0x55555555, 0x55555555, 0x55555555, 0x55555555, 0x40155555, 0x55555555, 0x55555555, 0x55555555, 0x3f00ff00, 0xff00ff00, 0xaa003f00, 0xff00, 0x0, 0xf000000, 0xf000f00, 0xf001f00, 0x3e273884, 0xc00f3d50, 0x20, 0xffff, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000, 0xffff, 0x0, 0xffffffff, 0xffff, 0x0, 0xc025ea9d, 0x55555555, 0x55555555, 0x55555555, 0x42805, 0x0, 0x0, 0x55555555, 0x1555, 0x5555555, 0x0, 0x0, 0x0, 0x0, 0x55545554, 0x55555555, 0x6a005555, 0x55452855, 0x555f7d55, 0x14102f5, 0x200000, 0x0, 0x7fffffe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xff, 0x0, 0x0, 0x0, 0xffff0000, 0xfffff, 0x0, 0x0, 0x0, 0x0, 0xf7ff0000, 0x37f7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ffffff, 0xfff00000, 0x3fff, 0xffffff00, 0xd0000003, 0x3fde64, 0xffff0000, 0x3ff, 0x1fdfe7b0, 0x7b000000, 0x1fc5f, 0xfffff000, 0x3f, 0x3ffffff, 0xfff00000, 0x3fff, 0xffffff00, 0xf0000003, 0x3fffff, 0xffff0000, 0x3ff, 0xffffff00, 0x1, 0x7fffffc, 0xf0000000, 0x1fffff, 0xffc00000, 0x7fff, 0xffff0000, 0x1ff, 0x400, 0x0, 0xffffffff, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffff03ff, 0xffff03ff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000000E0", +cast(immutable size_t[]) x" +000001000000014000001E00", +cast(immutable size_t[]) x" +020201000402030206020205080702020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000030002000500040006000600060006000600060006000600060006 +00060007000800060006000600060006000600060006000600060009000B000A000C0006000600060006000D00060006 +00060006000600060006000E000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060010000F00060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600110006 +000600060006000600130012000600060006000600060006000600140006000600060006000600060006000600060006 +000600150006000600060006000600060006000600060006000600060006000600060006000600060006000600060016 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +00060006000600060006000600060006000600060006000600180017001A001900060006000600060006000600060006 +00060006000600060006000600060006001B0006000600060006000600060006001C0006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +0006000600060006000600060006000600060006000600060006000600060006000000000000000007FFFFFE00000000 +00000000000000007F7FFFFF0000000055555555AA555555555554AA2B555555B1DBCED611AED2D54AAAA49055D25555 +555555556C0555550000557A000000000000000000000000000000000000000000000000000000000000000080450000 +FFFED74000000FFB551C8000E6905555FFFFFFFF0000FFFF0000000055555555555554015555555555552AAB55555555 +55555555FFFE5555007FFFFF000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000020BF00000000 +0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF003FFFFF00000000000000000000000000000000 +FFFF0000E7FFFFFF00000000000000005555555555555555555555555555555540155555555555555555555555555555 +3F00FF00FF00FF00AA003F000000FF00000000000F0000000F000F000F001F003E273884C00F3D50000000200000FFFF +000000080000000000000000000000000000000000000000000000000000000000000000FFC000000000FFFF00000000 +FFFFFFFF0000FFFF00000000C025EA9D5555555555555555555555550004280500000000000000005555555500001555 +055555550000000000000000000000000000000055545554555555556A00555555452855555F7D55014102F500200000 +0000000007FFFFFE000000000000000000000000000000000000000000000000FFFFFFFF000000FF0000000000000000 +00000000FFFF0000000FFFFF00000000000000000000000000000000F7FF00000037F7FF000000000000000000000000 +00000000000000000000000000000000FFFFFFFF0007FFFF000000000000000000000000000000000000000000000000 +00000000FFFFFFFF00000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000 +03FFFFFFFFF0000000003FFFFFFFFF00D0000003003FDE64FFFF0000000003FF1FDFE7B07B0000000001FC5FFFFFF000 +0000003F03FFFFFFFFF0000000003FFFFFFFFF00F0000003003FFFFFFFFF0000000003FFFFFFFF000000000107FFFFFC +F0000000001FFFFFFFC0000000007FFFFFFF0000000001FF0000040000000000FFFFFFFF000000030000000000000000 +0000000000000000000000000000000000000000FFFF0000FFFF03FFFFFF03FF000003FF000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //11648 bytes -enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0x11c0], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180017, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0x1a0000, 0x1b, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x0, 0x0, 0x250024, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x280027, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0029, 0x2c002b, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e0000, 0x2f, 0x310030, 0x330032, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340000, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0039, 0x3c003b, 0x3d0000, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x420041, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x91dffff, 0x8e50080, 0x31905fb, 0x90b00bd, 0x9d00b9a, 0xb2b006b, 0x82606c7, 0xad200e0, 0x4670838, 0x5d10594, 0xa330785, 0x1930180, 0x4d9051e, 0xffff02f9, 0xffffffff, 0xffffffff, 0x91effff, 0x8e60081, 0x31a05fc, 0x90c00be, 0x9d10b9b, 0xb2c006c, 0x82706c8, 0xad300e1, 0x4680839, 0x5d20595, 0xa340786, 0x1940181, 0x4da051f, 0xffff02fa, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x965ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5ae077b, 0x8560118, 0x9bb0ad8, 0x3db0257, 0x38f0559, 0xb4d0128, 0x397062b, 0x3150047, 0x8dd05f3, 0x29f0086, 0x58b0711, 0xffff00cb, 0x9820ae2, 0x4fb0213, 0x8800701, 0x8ef0a45, 0x5af077c, 0x8570119, 0x9bc0ad9, 0x3dc0258, 0x390055a, 0xb4e0129, 0x398062c, 0x3160048, 0x8de05f4, 0x2a00087, 0x58c0712, 0xffff00cc, 0x9830ae3, 0x4fc0214, 0x8810702, 0x36a0a46, 0x9dd09dc, 0x4cc04cb, 0x1cd01cc, 0xb580b57, 0x20001ff, 0x7320731, 0xce00cd, 0x8af08ae, 0x5c005b, 0x6140613, 0x520051, 0x620061f, 0x2b202b1, 0x6630662, 0x15a0159, 0x8010800, 0xb890b88, 0x7e707e6, 0x4be04bd, 0xa620a61, 0x1b401b3, 0x5930592, 0x21c021b, 0x96d096c, 0xffffffff, 0x8790878, 0x9390938, 0x31c031b, 0x94ffff, 0x6fd0095, 0x8e06fe, 0x81c008f, 0xb30081d, 0x7ca0b31, 0x12007cb, 0xa230121, 0xffff0a24, 0x4dc04db, 0x7c507c4, 0xb660b65, 0x6bd06bc, 0x1620161, 0x6830682, 0x2aa02a9, 0x60a0609, 0xd000c, 0x6410640, 0x70006f, 0x83b083a, 0xd200d1, 0x7280727, 0x1df01de, 0xb810b80, 0x1a201a1, 0x4c604c5, 0xa520a51, 0x7cf07ce, 0x5660565, 0x9770976, 0x9fb09fa, 0x625036b, 0x210626, 0x5fd0022, 0x5d305fe, 0x6880691, 0xb180b17, 0x26a0269, 0x2750526, 0xb390276, 0x1af07fa, 0xffff01b0, 0xac20769, 0x8b40a47, 0x52008b5, 0x229027b, 0x9900b09, 0x970096, 0xffff04c9, 0x8eb00aa, 0x32b00d3, 0x190018, 0x62e062d, 0x1050104, 0x3cf0553, 0x9a603d0, 0xffffffff, 0x1690168, 0x75907ee, 0x1a7075a, 0x52c077f, 0x301052d, 0xac00302, 0x2560255, 0xffffffff, 0x920091f, 0x1adffff, 0xffffffff, 0xffffffff, 0x92a0929, 0x5e0092b, 0x5e205e1, 0xae50ae4, 0x4fd0ae6, 0x79804fe, 0xa5d0799, 0x76b0a5e, 0x441076c, 0xa800442, 0x2fd0a81, 0x55102fe, 0x76a0552, 0xb540b53, 0x6550654, 0x16b016a, 0x5fa05f9, 0x2c002bf, 0x6470646, 0xf200f1, 0x6a906a8, 0x570056f, 0xabaffff, 0xabc0abb, 0x7480747, 0x1ae022a, 0xb6e0b6d, 0x1eb01ea, 0x41a0419, 0x9710970, 0x8410840, 0x59f059e, 0x940093f, 0x8be08bd, 0x3ae03ad, 0x8980897, 0xb120b11, 0x41c041b, 0x40b040a, 0xa8f0a8e, 0x2b402b3, 0x5310530, 0x16d016c, 0x7f107f0, 0x5b705b6, 0x84b084a, 0xffff00d4, 0x6ce06cd, 0x640063, 0xb830b82, 0xc200c1, 0x73e073d, 0x790078, 0x88a0889, 0x57a0579, 0x6f506f4, 0xffffffff, 0xffffffff, 0xffffffff, 0x7960a0e, 0x4ca0797, 0x95d07be, 0x14b028b, 0x692014c, 0x2d3041d, 0x9d509d4, 0x9260925, 0x3240323, 0x9540953, 0x9f709f6, 0xb1f0402, 0x689021d, 0xffff0527, 0x7fb0b3a, 0xac3ffff, 0xa48ffff, 0xffff0941, 0xffffffff, 0xb2e0521, 0x27cffff, 0xb76ffff, 0xffff00b5, 0xb0a0991, 0x63c00f9, 0xffff098a, 0xabffff, 0x5a0ffff, 0xffff08ec, 0x32cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31ffff, 0xffffffff, 0xffff0554, 0x9a70516, 0xffffffff, 0x350ffff, 0x41e07ef, 0x78001a8, 0xffff02d4, 0xffffffff, 0xffffffff, 0xffff0ac1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x92ffff, 0xffff070f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x972ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4a504a4, 0x1cf01ce, 0xffffffff, 0x1f601f5, 0xffffffff, 0xa37ffff, 0x86e0122, 0x382ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0299, 0x82806d7, 0xffff00eb, 0xffff07f2, 0x9ca0ba0, 0x4b30386, 0x17c04ae, 0xabd0a17, 0x16601d2, 0x973059a, 0xb070b32, 0x81e0966, 0x106039b, 0x62f0b73, 0x68affff, 0x607032d, 0xac0345, 0x6fa08fd, 0x9a084c, 0x6d8029a, 0xec0829, 0x4b409ce, 0x17d04af, 0xabe0a18, 0x16701d3, 0x974059b, 0xb080b33, 0x81f0967, 0x107039c, 0x6300b74, 0x68c068b, 0x608032e, 0xad0346, 0x6fb08fe, 0x9b084d, 0xba107f3, 0x97809cb, 0x59c04b0, 0xffffffff, 0x347ffff, 0x9790b75, 0x18c018b, 0x4a904a8, 0xa890a88, 0x85f085e, 0x5820581, 0x9890988, 0x9df09de, 0x3bc03bb, 0x2f602f5, 0x8c208c1, 0x44a0449, 0x3630362, 0x6310b34, 0x38301d6, 0xabf059d, 0xa84ffff, 0x1d70a85, 0x5db05da, 0xa38ffff, 0x86f0123, 0x51a04f1, 0x96e0291, 0x98e0af5, 0x5ac0090, 0x8f906ff, 0x8f700a0, 0x31d05ef, 0x391009c, 0xb45071f, 0x3c10540, 0x3d306e7, 0xab6027d, 0x86a0a8c, 0x4b70126, 0x7aa080a, 0x1b90a14, 0x51107ec, 0x2df0a73, 0xace09a4, 0x15b0245, 0x664057b, 0xb5b093a, 0x62109f0, 0x5303c3, 0xb460720, 0x3c20541, 0x3d406e8, 0xab7027e, 0x86b0a8d, 0x4b80127, 0x7ab080b, 0x1ba0a15, 0x51207ed, 0x2e00a74, 0xacf09a5, 0x15c0246, 0x665057c, 0xb5c093b, 0x62209f1, 0x5403c4, 0x51b04f2, 0x96f0292, 0x98f0af6, 0x5ad0091, 0x8fa0700, 0x8f800a1, 0x31e05f0, 0x392009d, 0xaa30aa2, 0x5cd05cc, 0x2440243, 0xb4a0b49, 0x1fa01f9, 0x3e603e5, 0x9b609b5, 0x8590858, 0x5a305a2, 0x8e008df, 0x8c608c5, 0x39a0399, 0x8880887, 0x9370936, 0x3de03dd, 0x4180417, 0xb220b21, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5a705a6, 0x82b082a, 0xe600e5, 0x6d006cf, 0x5e005d, 0x61c061b, 0x50004, 0x730072f, 0xca00c9, 0x8ad08ac, 0x5680567, 0x6b506b4, 0x10b010a, 0x4f004ef, 0x1a0019f, 0xa110a10, 0x4580457, 0x7bb07ba, 0xb700b6f, 0x8310830, 0x4070406, 0x9bf09be, 0x8ee08ed, 0x3260325, 0x8da08d9, 0x9f909f8, 0x3b803b7, 0x6c202db, 0x21f06c3, 0x5d80220, 0x23705d9, 0xa210238, 0x4a00a22, 0x79204a1, 0x2dc0793, 0x23c023b, 0x55c055b, 0x2620261, 0x6e406e3, 0x580057, 0x6280627, 0x1e001d, 0x6790678, 0x1130112, 0x6770676, 0x2480247, 0x56a0569, 0x11b011a, 0x7a907a8, 0x49b049a, 0x7780777, 0xa910a90, 0x46a0469, 0x2360235, 0xb000aff, 0x38c038b, 0x42c042b, 0x90e090d, 0x8ca08c9, 0x3380337, 0x9240923, 0xa010a00, 0x3d803d7, 0x8250824, 0xa950a94, 0x79b079a, 0x1cb01ca, 0xa1c0a1b, 0x2c402c3, 0x4ec04eb, 0x1710170, 0x6a506a4, 0x5bb05ba, 0x64d064c, 0x2c002b, 0x6390638, 0x380037, 0xb6a0b69, 0xb400b3, 0x7380737, 0xacd0acc, 0x88e088d, 0x4ee04ed, 0xba2ffff, 0x227017e, 0x71904b5, 0xa9a0293, 0x8520ac4, 0x589047d, 0x6d503a7, 0x1330b63, 0x67c0384, 0x3030352, 0x67e0903, 0x135092c, 0x6d905b4, 0xb270949, 0x85a0a06, 0x5010524, 0x7150295, 0x22f0a3d, 0x5dc0184, 0xffff0787, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xba3ffff, 0x228017f, 0x71a04b6, 0xa9b0294, 0x8530ac5, 0x58a047e, 0x6d603a8, 0x1340b64, 0x67d0385, 0x3040353, 0x67f0904, 0x136092d, 0x6da05b5, 0xb28094a, 0x85b0a07, 0x5020525, 0x7160296, 0x2300a3e, 0x5dd0185, 0xffff0788, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x82209b7, 0x50d03eb, 0x6f601f0, 0x1b10b8e, 0x4850241, 0x1b70498, 0xa9e0a9c, 0x46d087c, 0x7fe056b, 0xaf706a0, 0x39300f7, 0x4310648, 0x90902d9, 0x8c3068f, 0x33b014f, 0x9170672, 0x9ea0b4f, 0x3d1084e, 0x2e10108, 0xaa8ffff, 0xffffffff, 0xffffffff, 0xa55ffff, 0xffffffff, 0xae70153, 0x3fc0699, 0x42d05c4, 0x9320668, 0x317002d, 0x3c905f1, 0x9f20025, 0x9270b3b, 0x55d008c, 0x85c06b0, 0x9ab0ae0, 0x4290882, 0x21504ff, 0xa0a0761, 0x24901da, 0x71304d3, 0xaae02a1, 0x8180998, 0x58703e1, 0x6ec03cb, 0x11e0b35, 0xffff039f, 0xeffff, 0x6950905, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43305d6, 0x36000c3, 0x81606c0, 0x934006d, 0x3740893, 0x9fc0b29, 0x8bb0603, 0x335007e, 0x1f70a6d, 0xa5b02cd, 0x95506b8, 0x55f0137, 0xb7e07da, 0x7c80575, 0x4df048b, 0x75d09ee, 0x2e7044f, 0x64e0378, 0x1410850, 0x6a209a0, 0x41045d, 0x89b0919, 0x450b9c, 0x6340313, 0x23309b1, 0xb6709e0, 0x820271, 0x7390543, 0xa0c0ade, 0x77d0717, 0x1e40528, 0x4b908b6, 0x9fe0289, 0x3af06db, 0x5b801fb, 0x8060b23, 0x34c05de, 0x35a067a, 0x2ad0139, 0x92e0686, 0xb84004b, 0x38d0623, 0x4390061, 0xffffffff, 0xb85004c, 0x38e0624, 0x43a0062, 0xffffffff, 0x6e90542, 0x5130a16, 0xa760a75, 0x5ce093c, 0xffff069d, 0xffffffff, 0xffffffff, 0xffffffff, 0xae80154, 0x3fd069a, 0x42e05c5, 0x9330669, 0x318002e, 0x3ca05f2, 0x9f30026, 0x9280b3c, 0x55e008d, 0x85d06b1, 0x9ac0ae1, 0x42a0883, 0x2160500, 0xa0b0762, 0x24a01db, 0x71404d4, 0xaaf02a2, 0x8190999, 0x58803e2, 0x6ed03cc, 0x11f0b36, 0xffff03a0, 0xfffff, 0x6960906, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x507ffff, 0xffffffff, 0x30dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0b92, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x6f306f2, 0x4c804c7, 0x7760775, 0xb870b86, 0x8030802, 0x4740473, 0x9850984, 0x260025f, 0x5780577, 0x9080907, 0x8f408f3, 0x3340333, 0x2cc02cb, 0x9140913, 0x45c045b, 0x3d603d5, 0xb040b03, 0x7c707c6, 0x4de04dd, 0xa1e0a1d, 0x1ac01ab, 0x5cb05ca, 0x240023f, 0x72c072b, 0xdb00da, 0x83f083e, 0x60005f, 0x6160615, 0x130012, 0x60e060d, 0x2a402a3, 0x6940693, 0x15e015d, 0x6b706b6, 0x5b105b0, 0x79f079e, 0xa640a63, 0x4930492, 0x2080207, 0xb5a0b59, 0x20e020d, 0x3e003df, 0x9460945, 0x87b087a, 0x3550354, 0x90008ff, 0x8d208d1, 0x37d037c, 0x8850884, 0x9620961, 0x3da03d9, 0x2040203, 0xb3e0b3d, 0x1b601b5, 0x480047f, 0xa420a41, 0x7dd07dc, 0x5c305c2, 0x8110810, 0x14e014d, 0x65d065c, 0x2ac02ab, 0x6330632, 0x4a0049, 0x61e061d, 0x890088, 0x8a308a2, 0x53f053e, 0x7360735, 0x2060205, 0x4c204c1, 0x1d101d0, 0xa5a0a59, 0x440043f, 0x7d107d0, 0xffffffff, 0xffffffff, 0x886ffff, 0xffffffff, 0xffff08f0, 0x3080307, 0x8e808e7, 0x9c909c8, 0x3a403a3, 0x2540253, 0xadd0adc, 0x430042f, 0x7e507e4, 0xa260a25, 0x7b107b0, 0x4c404c3, 0x7220721, 0x21a0219, 0x5460545, 0x990098, 0x7040703, 0xa300a2, 0x5f805f7, 0x4e004d, 0x6530652, 0x1250124, 0xafa0af9, 0x2f402f3, 0x5330532, 0x1170116, 0x7720771, 0x4970496, 0x7b507b4, 0xa700a6f, 0x3f703f6, 0x24e024d, 0xb7d0b7c, 0x3be03bd, 0x43c043b, 0x8d408d3, 0x8f608f5, 0x35f035e, 0x9220921, 0x9950994, 0x54c054b, 0x8a508a4, 0xa780a77, 0x4520451, 0x19a0199, 0xa4a0a49, 0x1d501d4, 0x6e006df, 0xee00ed, 0x3a90605, 0xa020035, 0x94f0b41, 0x55500f3, 0x3aa0606, 0xa030036, 0x9500b42, 0x55600f4, 0xa35076d, 0x22b019d, 0x6f804cd, 0xffffffff, 0xa36076e, 0x22c019e, 0x6f904ce, 0xffffffff, 0x5ff039d, 0x160305, 0x68008e9, 0x1720870, 0x600039e, 0x170306, 0x68108ea, 0x1730871, 0xa3902e5, 0x1820ac8, 0x4aa01a3, 0x1e0078e, 0xa3a02e6, 0x1830ac9, 0x4ab01a4, 0x1e1078f, 0x34e0074, 0x35605e3, 0x8bf000a, 0xffffffff, 0x34f0075, 0x35705e4, 0x8c0000b, 0xffffffff, 0x1e6ffff, 0xa5fffff, 0x4d5ffff, 0x76fffff, 0x1e7ffff, 0xa60ffff, 0x4d6ffff, 0x770ffff, 0x2c50992, 0x656043d, 0x2903b3, 0x5e50b8c, 0x2c60993, 0x657043e, 0x2a03b4, 0x5e60b8d, 0x2ed0447, 0x9d602d5, 0x2090a71, 0x41f05cf, 0x808e3, 0xa570ab0, 0x6190321, 0xffffffff, 0x9680b1b, 0x3a50285, 0x2c10666, 0x8f1012a, 0x9690b1c, 0x3a60286, 0x2c20667, 0x8f2012b, 0x3b906e1, 0x9f4028f, 0x7f40b13, 0x5b201fd, 0x3ba06e2, 0x9f50290, 0x7f50b14, 0x5b301fe, 0xb7a09e4, 0xdc09b3, 0x73f0590, 0x7c0281, 0xb7b09e5, 0xdd09b4, 0x7400591, 0x7d0282, 0x66a0370, 0x97cffff, 0xffffffff, 0xffffffff, 0x66b0371, 0x2ee0448, 0xffff097d, 0xffff0975, 0xffffffff, 0xf5ffff, 0xffffffff, 0xffffffff, 0x9d702d6, 0x20a0a72, 0xffff00f6, 0xffffffff, 0x35c00bb, 0x387ffff, 0xffffffff, 0xffffffff, 0x35d00bc, 0x42005d0, 0xffffffff, 0xffffffff, 0x1c30176, 0x9cfffff, 0x29bffff, 0xffffffff, 0x1c40177, 0xa580ab1, 0xffff029c, 0xffffffff, 0xffffffff, 0x3bfffff, 0xffffffff, 0xffffffff, 0x908e4, 0x61a0322, 0xffff03c0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff06fc, 0xffffffff, 0x9bd0b2d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0951, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0952, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa7907b2, 0x4590494, 0x1780767, 0xa4309da, 0x1ec0534, 0x70902f1, 0xde0aeb, 0x82e044d, 0xa7a07b3, 0x45a0495, 0x1790768, 0xa4409db, 0x1ed0535, 0x70a02f2, 0xdf0aec, 0x82f044e, 0xffffffff, 0x874ffff, 0xffff0875, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x596037a, 0xa60b25, 0x745081a, 0x52a03fe, 0x89909cc, 0xa92020f, 0x7b60487, 0x18d0221, 0xaa0071d, 0x29d0102, 0x5180860, 0x97a0b1d, 0x943065e, 0x597037b, 0xa70b26, 0x746081b, 0x52b03ff, 0x89a09cd, 0xa930210, 0x7b70488, 0x18e0222, 0xaa1071e, 0x29e0103, 0x5190861, 0x97b0b1e, 0x944065f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x65803c7, 0x10c0aed, 0x6b2082c, 0x50b0443, 0x86c0a4f, 0xab201c8, 0x753049c, 0x225020b, 0xb5f070b, 0x2770538, 0x40c0812, 0x98600a8, 0x93d0705, 0x5a4002f, 0x95b063a, 0x8cf003b, 0x3a10670, 0x8760151, 0xb0b0684, 0x3e705d4, 0x40407d2, 0xaa40114, 0x2e304bb, 0x53a01bb, 0x65903c8, 0x10d0aee, 0x6b3082d, 0x50c0444, 0x86d0a50, 0xab301c9, 0x754049d, 0x226020c, 0xb60070c, 0x2780539, 0x40d0813, 0x98700a9, 0x93e0706, 0x5a50030, 0x95c063b, 0x8d0003c, 0x3a20671, 0x8770152, 0xb0c0685, 0x3e805d5, 0x40507d3, 0xaa50115, 0x2e404bc, 0x53b01bc, 0x3a0039, 0x30e063d, 0xa0f0032, 0x9d807bf, 0x37e09d9, 0x265037f, 0xb200266, 0x40305a1, 0xffff021e, 0xa1a0a19, 0x74dffff, 0xffff074e, 0xffffffff, 0xffffffff, 0xffffffff, 0x28c095e, 0x2a602a5, 0x33a0339, 0x8cc08cb, 0x9120911, 0x3730372, 0x2b902b8, 0x9970996, 0x470046f, 0x7fd07fc, 0xb560b55, 0x77a0779, 0x4b204b1, 0xa660a65, 0x1e901e8, 0x56e056d, 0xd600d5, 0x72a0729, 0x660065, 0x8a908a8, 0x20001f, 0x62a0629, 0x5a0059, 0xb1a0b19, 0x2640263, 0x6bf06be, 0x190018f, 0x7c107c0, 0x5bd05bc, 0x750074f, 0xa3c0a3b, 0x4e204e1, 0x280027f, 0xb020b01, 0x3ac03ab, 0x4720471, 0x9580957, 0x8d608d5, 0x3280327, 0x9310930, 0x9c109c0, 0x57e057d, 0x8330832, 0xaad0aac, 0x4220421, 0x2180217, 0xa130a12, 0x1a601a5, 0x70e070d, 0x10f010e, 0x8210820, 0xffffffff, 0xffffffff, 0xffffffff, 0x358ffff, 0x3290359, 0xffff032a, 0xffffffff, 0x6d206d1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x82309b8, 0x50e03ec, 0x6f701f1, 0x1b20b8f, 0x4860242, 0x1b80499, 0xa9f0a9d, 0x46e087d, 0x7ff056c, 0xaf806a1, 0x39400f8, 0x4320649, 0x90a02da, 0x8c40690, 0x33c0150, 0x9180673, 0x9eb0b50, 0x3d2084f, 0x2e20109, 0xaa9ffff, 0xffffffff, 0xffffffff, 0xa56ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1d901d8, 0xa200a1f, 0xa990a98, 0x79d079c, 0x140013f, 0x69f069e, 0x2bb02ba, 0x4f604f5, 0x3e003d, 0x6430642, 0x5bf05be, 0x64b064a, 0x770076, 0x73c073b, 0x40003f, 0xb6c0b6b, 0x4ea04e9, 0x7840783, 0xad50ad4, 0x8920891, 0x2c802c7, 0xac70ac6, 0x17b017a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5150514, 0x2980297, 0x94c094b, 0xa050a04, 0x7af07ae, 0xa830a82, 0xa400a3f, 0x18a0189, 0x74a0749, 0xaf00ae, 0x88c088b, 0x52f052e, 0x5ec05eb, 0x340033, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x70006, 0x8ab08aa, 0xc600c5, 0x6f106f0, 0xe800e7, 0x610060f, 0x680067, 0xffffffff, 0x1580157, 0x8350834, 0xb4c0b4b, 0x5040503, 0x9c309c2, 0xa2c0a2b, 0x2b002af, 0x87f087e, 0x960095f, 0x9810980, 0x3960395, 0xb5e0b5d, 0x8550854, 0x3120311, 0x330032f, 0x2120211, 0x5a905a8, 0x4110410, 0x98d098c, 0x51d051c, 0x8690868, 0x23e023d, 0xa280a27, 0xff00fe, 0x66d066c, 0xb100b0f, 0x6a706a6, 0x1560155, 0x6610660, 0x2ea02e9, 0x69c069b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7a2ffff, 0x4d707a3, 0x50804d8, 0xb720b71, 0x5860585, 0x9ba09b9, 0xad10ad0, 0x8450844, 0xffffffff, 0x4fffff, 0xb770050, 0xffffffff, 0xb0e0b0d, 0x24c024b, 0xffff0790, 0x3b203b1, 0x7d907d8, 0x49f049e, 0x3fb03fa, 0x9e309e2, 0x510050f, 0x27a0279, 0x80f080e, 0x11d011c, 0x7080707, 0x94200b6, 0x98b0b2f, 0xffff00fa, 0x3510710, 0xb610093, 0x5ea05e9, 0x9f009e, 0x6e606e5, 0x13e013d, 0x550054f, 0x28e028d, 0x8050804, 0x4360435, 0x5170791, 0x75b0b93, 0x174075c, 0xffff0175, 0xffffffff, 0xffffffff, 0x2f802f7, 0xffffffff, 0xffffffff, 0x310030f, 0xaf20af1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9ecffff, 0xffff09ed, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb62ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43405d7, 0x36100c4, 0x81706c1, 0x935006e, 0x3750894, 0x9fd0b2a, 0x8bc0604, 0x336007f, 0x1f80a6e, 0xa5c02ce, 0x95606b9, 0x5600138, 0xb7f07db, 0x7c90576, 0x4e0048c, 0x75e09ef, 0x2e80450, 0x64f0379, 0x1420851, 0x6a309a1, 0x42045e, 0x89c091a, 0x460b9d, 0x6350314, 0x23409b2, 0xb6809e1, 0x830272, 0x73a0544, 0xa0d0adf, 0x77e0718, 0x1e50529, 0x4ba08b7, 0x9ff028a, 0x3b006dc, 0x5b901fc, 0x8070b24, 0x34d05df, 0x35b067b, 0x2ae013a, 0x92f0687, 0xffffffff, 0xffffffff, 0x80cffff, 0xffff080d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c4ffff, 0x2670af3, 0x5aa0143, 0x94d0644, 0x74b04cf, 0xb780773, 0x7c2013b, 0x40004f7, 0x54d0259, 0x2ef03ed, 0xa860ab4, 0x19707a4, 0x60108c7, 0xffff0453, 0xffffffff, 0xffffffff, 0x9c5ffff, 0x2680af4, 0x5ab0144, 0x94e0645, 0x74c04d0, 0xb790774, 0x7c3013c, 0x40104f8, 0x54e025a, 0x2f003ee, 0xa870ab5, 0x19807a5, 0x60208c8, 0xffff0454, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7510a67, 0x5c0075f, 0x7ea012f, 0x9af0aaa, 0xafb0959, 0x2dd099e, 0x4e304f9, 0x14507d4, 0x47900e9, 0x8cd0636, 0x2cf0043, 0x36c0723, 0x40802d1, 0x25d0549, 0xb8a0147, 0x3800674, 0xaca0a7b, 0x47b078c, 0x2310483, 0xb510781, 0x7520a68, 0x5c10760, 0x7eb0130, 0x9b00aab, 0xafc095a, 0x2de099f, 0x4e404fa, 0x14607d5, 0x47a00ea, 0x8ce0637, 0x2d00044, 0x36d0724, 0x40902d2, 0x25e054a, 0xb8b0148, 0x3810675, 0xacb0a7c, 0x47c078d, 0x2320484, 0xb520782, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xad60a4b, 0x74107d6, 0x2230571, 0xb05099a, 0x9c6022d, 0x7940b3f, 0x4a2024f, 0x7630481, 0x5c60331, 0x6aa0343, 0x1bf0b37, 0x6c90283, 0x28709ad, 0x65003c5, 0x2702eb, 0x60b08d7, 0xa2d0755, 0x8b00a2f, 0xffffffff, 0xffffffff, 0xad70a4c, 0x74207d7, 0x2240572, 0xb06099b, 0x9c7022e, 0x7950b40, 0x4a30250, 0x7640482, 0x5c70332, 0x6ab0344, 0x1c00b38, 0x6ca0284, 0x28809ae, 0x65103c6, 0x2802ec, 0x60c08d8, 0xa2e0756, 0x8b10a30, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x463088f, 0x26b00a4, 0xae906ac, 0x2510110, 0x9470b43, 0xffff00b7, 0x8fb05e7, 0x90100b9, 0x7cc0808, 0x1310b47, 0x5610836, 0x2ff03e3, 0x4230583, 0xffff02a7, 0x7650a29, 0x4e50477, 0x63e0a31, 0xffff03b5, 0x6d302c9, 0x890ffff, 0xa50464, 0x6ad026c, 0x1110aea, 0xb440252, 0xb80948, 0x5e8ffff, 0xba08fc, 0x8090902, 0xb4807cd, 0x8370132, 0x3e40562, 0x5840300, 0x2a80424, 0xa2affff, 0x4780766, 0xa3204e6, 0x3b6063f, 0x2caffff, 0xffff06d4, 0xffffffff, 0x48904d1, 0x1490191, 0x7e20b94, 0x57301e2, 0x3e90697, 0x44505c8, 0xa8a07e8, 0x3090a4d, 0xb900915, 0xc7090f, 0x72d0341, 0x8a0895, 0x8660461, 0x100096a, 0x71b089d, 0x7a0366, 0x5220201, 0x33f04bf, 0xada0a69, 0x46507a0, 0x83c0963, 0x53c046b, 0x6ea0239, 0x1bd0b96, 0x9e602fb, 0xffff066e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x48a04d2, 0x14a0192, 0x7e30b95, 0x57401e3, 0x3ea0698, 0x44605c9, 0xa8b07e9, 0x30a0a4e, 0xb910916, 0xc80910, 0x72e0342, 0x8b0896, 0x8670462, 0x101096b, 0x71c089e, 0x7b0367, 0x5230202, 0x34004c0, 0xadb0a6a, 0x46607a1, 0x83d0964, 0x53d046c, 0x6eb023a, 0x1be0b97, 0x9e702fc, 0xffff066f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1dc057f, 0xb9807a6, 0x1c101a9, 0x4e70490, 0x36e00cf, 0x8420733, 0x97e00ef, 0x45f0848, 0x15f0b15, 0x68d0872, 0x2d7034a, 0x61108e1, 0xa6b0364, 0x8460ab8, 0x5570455, 0x6ba03cd, 0x1dd0580, 0xb9907a7, 0x1c201aa, 0x4e80491, 0x36f00d0, 0x8430734, 0x97f00f0, 0x4600849, 0x1600b16, 0x68e0873, 0x2d8034b, 0x61208e2, 0xa6c0365, 0x8470ab9, 0x5580456, 0x6bb03ce, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9a20084, 0x31f0725, 0x412025b, 0x40e05f5, 0x91b0069, 0x56306dd, 0x3480010, 0xa080617, 0x4ac0475, 0x19507ac, 0x6ee030b, 0x1ee0aa6, 0x8a604f3, 0xaef06cb, 0x9e80a53, 0x50507b8, 0x9a30085, 0x3200726, 0x413025c, 0x40f05f6, 0x91c006a, 0x56406de, 0x3490011, 0xa090618, 0x4ad0476, 0x19607ad, 0x6ef030c, 0x1ef0aa7, 0x8a704f4, 0xaf006cc, 0x9e90a54, 0x50607b9, 0x3f8065a, 0x8b20055, 0x8db05ed, 0x4370023, 0x3760598, 0xbf, 0x8140743, 0x5090536, 0x207bc, 0x757019b, 0x44b04a6, 0xa96033d, 0x2730afd, 0x547016e, 0x99c06ae, 0x9d20b9e, 0x140368, 0x3f9065b, 0x8b30056, 0x8dc05ee, 0x4380024, 0x3770599, 0x100c0, 0x8150744, 0x50a0537, 0x307bd, 0x758019c, 0x44c04a7, 0xa97033e, 0x2740afe, 0x548016f, 0x99d06af, 0x9d30b9f, 0x150369, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +0000010000000480000011C0", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000300020005000400070006000900080000000A000B0000000D000C +000F000E0011001000130012000000140000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000016001500000000000000000000000000000000000000000018001700000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000019001A00000000001B001D001C001F001E002100200023002200000000000000000025002400000026 +000000000000000000000000000000000000000000280027000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000002A0029002C002B0000002D00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002E00000000002F003100300033003200000000000000000000000000000000 +000000000000000000340000000000350000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000036000000000000000000000000000000000000000000000000000000000038003700000000 +0000000000000000000000000000000000000000000000000000000000000000003A0039003C003B003D00000000003E +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000040003F00000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000042004100000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000450044000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +091DFFFF08E50080031905FB090B00BD09D00B9A0B2B006B082606C70AD200E00467083805D105940A33078501930180 +04D9051EFFFF02F9FFFFFFFFFFFFFFFF091EFFFF08E60081031A05FC090C00BE09D10B9B0B2C006C082706C80AD300E1 +0468083905D205950A3407860194018104DA051FFFFF02FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0965FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AE077B0856011809BB0AD803DB0257038F05590B4D01280397062B03150047 +08DD05F3029F0086058B0711FFFF00CB09820AE204FB02130880070108EF0A4505AF077C0857011909BC0AD903DC0258 +0390055A0B4E01290398062C0316004808DE05F402A00087058C0712FFFF00CC09830AE304FC021408810702036A0A46 +09DD09DC04CC04CB01CD01CC0B580B57020001FF0732073100CE00CD08AF08AE005C005B06140613005200510620061F +02B202B106630662015A0159080108000B890B8807E707E604BE04BD0A620A6101B401B305930592021C021B096D096C +FFFFFFFF0879087809390938031C031B0094FFFF06FD0095008E06FE081C008F0B30081D07CA0B31012007CB0A230121 +FFFF0A2404DC04DB07C507C40B660B6506BD06BC016201610683068202AA02A9060A0609000D000C064106400070006F +083B083A00D200D10728072701DF01DE0B810B8001A201A104C604C50A520A5107CF07CE056605650977097609FB09FA +0625036B0021062605FD002205D305FE068806910B180B17026A0269027505260B39027601AF07FAFFFF01B00AC20769 +08B40A47052008B50229027B09900B0900970096FFFF04C908EB00AA032B00D300190018062E062D0105010403CF0553 +09A603D0FFFFFFFF01690168075907EE01A7075A052C077F0301052D0AC0030202560255FFFFFFFF0920091F01ADFFFF +FFFFFFFFFFFFFFFF092A092905E0092B05E205E10AE50AE404FD0AE6079804FE0A5D0799076B0A5E0441076C0A800442 +02FD0A81055102FE076A05520B540B5306550654016B016A05FA05F902C002BF0647064600F200F106A906A80570056F +0ABAFFFF0ABC0ABB0748074701AE022A0B6E0B6D01EB01EA041A04190971097008410840059F059E0940093F08BE08BD +03AE03AD089808970B120B11041C041B040B040A0A8F0A8E02B402B305310530016D016C07F107F005B705B6084B084A +FFFF00D406CE06CD006400630B830B8200C200C1073E073D00790078088A0889057A057906F506F4FFFFFFFFFFFFFFFF +FFFFFFFF07960A0E04CA0797095D07BE014B028B0692014C02D3041D09D509D409260925032403230954095309F709F6 +0B1F04020689021DFFFF052707FB0B3A0AC3FFFF0A48FFFFFFFF0941FFFFFFFF0B2E0521027CFFFF0B76FFFFFFFF00B5 +0B0A0991063C00F9FFFF098A00ABFFFF05A0FFFFFFFF08EC032CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0031FFFFFFFFFFFF +FFFF055409A70516FFFFFFFF0350FFFF041E07EF078001A8FFFF02D4FFFFFFFFFFFFFFFFFFFF0AC1FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0092FFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0972FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04A504A401CF01CEFFFFFFFF01F601F5 +FFFFFFFF0A37FFFF086E01220382FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0299082806D7FFFF00EBFFFF07F209CA0BA0 +04B30386017C04AE0ABD0A17016601D20973059A0B070B32081E09660106039B062F0B73068AFFFF0607032D00AC0345 +06FA08FD009A084C06D8029A00EC082904B409CE017D04AF0ABE0A18016701D30974059B0B080B33081F09670107039C +06300B74068C068B0608032E00AD034606FB08FE009B084D0BA107F3097809CB059C04B0FFFFFFFF0347FFFF09790B75 +018C018B04A904A80A890A88085F085E058205810989098809DF09DE03BC03BB02F602F508C208C1044A044903630362 +06310B34038301D60ABF059D0A84FFFF01D70A8505DB05DA0A38FFFF086F0123051A04F1096E0291098E0AF505AC0090 +08F906FF08F700A0031D05EF0391009C0B45071F03C1054003D306E70AB6027D086A0A8C04B7012607AA080A01B90A14 +051107EC02DF0A730ACE09A4015B02450664057B0B5B093A062109F0005303C30B46072003C2054103D406E80AB7027E +086B0A8D04B8012707AB080B01BA0A15051207ED02E00A740ACF09A5015C02460665057C0B5C093B062209F1005403C4 +051B04F2096F0292098F0AF605AD009108FA070008F800A1031E05F00392009D0AA30AA205CD05CC024402430B4A0B49 +01FA01F903E603E509B609B50859085805A305A208E008DF08C608C5039A0399088808870937093603DE03DD04180417 +0B220B21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A705A6082B082A00E600E506D006CF005E005D061C061B00050004 +0730072F00CA00C908AD08AC0568056706B506B4010B010A04F004EF01A0019F0A110A100458045707BB07BA0B700B6F +083108300407040609BF09BE08EE08ED0326032508DA08D909F909F803B803B706C202DB021F06C305D80220023705D9 +0A21023804A00A22079204A102DC0793023C023B055C055B0262026106E406E30058005706280627001E001D06790678 +011301120677067602480247056A0569011B011A07A907A8049B049A077807770A910A90046A0469023602350B000AFF +038C038B042C042B090E090D08CA08C903380337092409230A010A0003D803D7082508240A950A94079B079A01CB01CA +0A1C0A1B02C402C304EC04EB0171017006A506A405BB05BA064D064C002C002B06390638003800370B6A0B6900B400B3 +073807370ACD0ACC088E088D04EE04ED0BA2FFFF0227017E071904B50A9A029308520AC40589047D06D503A701330B63 +067C038403030352067E09030135092C06D905B40B270949085A0A060501052407150295022F0A3D05DC0184FFFF0787 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA3FFFF0228017F071A04B60A9B029408530AC5058A047E06D603A801340B64 +067D038503040353067F09040136092D06DA05B50B28094A085B0A07050205250716029602300A3E05DD0185FFFF0788 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF082209B7050D03EB06F601F001B10B8E +0485024101B704980A9E0A9C046D087C07FE056B0AF706A0039300F704310648090902D908C3068F033B014F09170672 +09EA0B4F03D1084E02E101080AA8FFFFFFFFFFFFFFFFFFFF0A55FFFFFFFFFFFF0AE7015303FC0699042D05C409320668 +0317002D03C905F109F2002509270B3B055D008C085C06B009AB0AE004290882021504FF0A0A0761024901DA071304D3 +0AAE02A108180998058703E106EC03CB011E0B35FFFF039F000EFFFF06950905FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +043305D6036000C3081606C00934006D0374089309FC0B2908BB06030335007E01F70A6D0A5B02CD095506B8055F0137 +0B7E07DA07C8057504DF048B075D09EE02E7044F064E03780141085006A209A00041045D089B091900450B9C06340313 +023309B10B6709E000820271073905430A0C0ADE077D071701E4052804B908B609FE028903AF06DB05B801FB08060B23 +034C05DE035A067A02AD0139092E06860B84004B038D062304390061FFFFFFFF0B85004C038E0624043A0062FFFFFFFF +06E9054205130A160A760A7505CE093CFFFF069DFFFFFFFFFFFFFFFFFFFFFFFF0AE8015403FD069A042E05C509330669 +0318002E03CA05F209F3002609280B3C055E008D085D06B109AC0AE1042A0883021605000A0B0762024A01DB071404D4 +0AAF02A208190999058803E206ED03CC011F0B36FFFF03A0000FFFFF06960906FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0507FFFFFFFFFFFF030DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B92 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +06F306F204C804C7077607750B870B860803080204740473098509840260025F057805770908090708F408F303340333 +02CC02CB09140913045C045B03D603D50B040B0307C707C604DE04DD0A1E0A1D01AC01AB05CB05CA0240023F072C072B +00DB00DA083F083E0060005F0616061500130012060E060D02A402A306940693015E015D06B706B605B105B0079F079E +0A640A6304930492020802070B5A0B59020E020D03E003DF09460945087B087A03550354090008FF08D208D1037D037C +088508840962096103DA03D9020402030B3E0B3D01B601B50480047F0A420A4107DD07DC05C305C208110810014E014D +065D065C02AC02AB06330632004A0049061E061D0089008808A308A2053F053E073607350206020504C204C101D101D0 +0A5A0A590440043F07D107D0FFFFFFFFFFFFFFFF0886FFFFFFFFFFFFFFFF08F00308030708E808E709C909C803A403A3 +025402530ADD0ADC0430042F07E507E40A260A2507B107B004C404C307220721021A0219054605450099009807040703 +00A300A205F805F7004E004D06530652012501240AFA0AF902F402F30533053201170116077207710497049607B507B4 +0A700A6F03F703F6024E024D0B7D0B7C03BE03BD043C043B08D408D308F608F5035F035E0922092109950994054C054B +08A508A40A780A7704520451019A01990A4A0A4901D501D406E006DF00EE00ED03A906050A020035094F0B41055500F3 +03AA06060A03003609500B42055600F40A35076D022B019D06F804CDFFFFFFFF0A36076E022C019E06F904CEFFFFFFFF +05FF039D00160305068008E9017208700600039E00170306068108EA017308710A3902E501820AC804AA01A301E0078E +0A3A02E601830AC904AB01A401E1078F034E0074035605E308BF000AFFFFFFFF034F0075035705E408C0000BFFFFFFFF +01E6FFFF0A5FFFFF04D5FFFF076FFFFF01E7FFFF0A60FFFF04D6FFFF0770FFFF02C509920656043D002903B305E50B8C +02C609930657043E002A03B405E60B8D02ED044709D602D502090A71041F05CF000808E30A570AB006190321FFFFFFFF +09680B1B03A5028502C1066608F1012A09690B1C03A6028602C2066708F2012B03B906E109F4028F07F40B1305B201FD +03BA06E209F5029007F50B1405B301FE0B7A09E400DC09B3073F0590007C02810B7B09E500DD09B407400591007D0282 +066A0370097CFFFFFFFFFFFFFFFFFFFF066B037102EE0448FFFF097DFFFF0975FFFFFFFF00F5FFFFFFFFFFFFFFFFFFFF +09D702D6020A0A72FFFF00F6FFFFFFFF035C00BB0387FFFFFFFFFFFFFFFFFFFF035D00BC042005D0FFFFFFFFFFFFFFFF +01C3017609CFFFFF029BFFFFFFFFFFFF01C401770A580AB1FFFF029CFFFFFFFFFFFFFFFF03BFFFFFFFFFFFFFFFFFFFFF +000908E4061A0322FFFF03C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06FC +FFFFFFFF09BD0B2DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0951FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0952FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A7907B204590494017807670A4309DA01EC0534070902F100DE0AEB082E044D +0A7A07B3045A0495017907680A4409DB01ED0535070A02F200DF0AEC082F044EFFFFFFFF0874FFFFFFFF0875FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0596037A00A60B250745081A052A03FE089909CC +0A92020F07B60487018D02210AA0071D029D010205180860097A0B1D0943065E0597037B00A70B260746081B052B03FF +089A09CD0A93021007B70488018E02220AA1071E029E010305190861097B0B1E0944065FFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF065803C7010C0AED06B2082C050B0443 +086C0A4F0AB201C80753049C0225020B0B5F070B02770538040C0812098600A8093D070505A4002F095B063A08CF003B +03A10670087601510B0B068403E705D4040407D20AA4011402E304BB053A01BB065903C8010D0AEE06B3082D050C0444 +086D0A500AB301C90754049D0226020C0B60070C02780539040D0813098700A9093E070605A50030095C063B08D0003C +03A20671087701520B0C068503E805D5040507D30AA5011502E404BC053B01BC003A0039030E063D0A0F003209D807BF +037E09D90265037F0B200266040305A1FFFF021E0A1A0A19074DFFFFFFFF074EFFFFFFFFFFFFFFFFFFFFFFFF028C095E +02A602A5033A033908CC08CB091209110373037202B902B8099709960470046F07FD07FC0B560B55077A077904B204B1 +0A660A6501E901E8056E056D00D600D5072A07290066006508A908A80020001F062A0629005A00590B1A0B1902640263 +06BF06BE0190018F07C107C005BD05BC0750074F0A3C0A3B04E204E10280027F0B020B0103AC03AB0472047109580957 +08D608D5032803270931093009C109C0057E057D083308320AAD0AAC04220421021802170A130A1201A601A5070E070D +010F010E08210820FFFFFFFFFFFFFFFFFFFFFFFF0358FFFF03290359FFFF032AFFFFFFFF06D206D1FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF082309B8050E03EC06F701F101B20B8F0486024201B804990A9F0A9D046E087D +07FF056C0AF806A1039400F804320649090A02DA08C40690033C01500918067309EB0B5003D2084F02E201090AA9FFFF +FFFFFFFFFFFFFFFF0A56FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01D901D80A200A1F0A990A98079D079C0140013F069F069E02BB02BA04F604F5003E003D0643064205BF05BE064B064A +00770076073C073B0040003F0B6C0B6B04EA04E9078407830AD50AD40892089102C802C70AC70AC6017B017AFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0515051402980297094C094B0A050A04 +07AF07AE0A830A820A400A3F018A0189074A074900AF00AE088C088B052F052E05EC05EB00340033FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0007000608AB08AA00C600C5 +06F106F000E800E70610060F00680067FFFFFFFF01580157083508340B4C0B4B0504050309C309C20A2C0A2B02B002AF +087F087E0960095F09810980039603950B5E0B5D08550854031203110330032F0212021105A905A804110410098D098C +051D051C08690868023E023D0A280A2700FF00FE066D066C0B100B0F06A706A6015601550661066002EA02E9069C069B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07A2FFFF04D707A3050804D80B720B710586058509BA09B90AD10AD008450844 +FFFFFFFF004FFFFF0B770050FFFFFFFF0B0E0B0D024C024BFFFF079003B203B107D907D8049F049E03FB03FA09E309E2 +0510050F027A0279080F080E011D011C07080707094200B6098B0B2FFFFF00FA035107100B61009305EA05E9009F009E +06E606E5013E013D0550054F028E028D080508040436043505170791075B0B930174075CFFFF0175FFFFFFFFFFFFFFFF +02F802F7FFFFFFFFFFFFFFFF0310030F0AF20AF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09ECFFFFFFFF09EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B62FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +043405D7036100C4081706C10935006E0375089409FD0B2A08BC06040336007F01F80A6E0A5C02CE095606B905600138 +0B7F07DB07C9057604E0048C075E09EF02E80450064F03790142085106A309A10042045E089C091A00460B9D06350314 +023409B20B6809E100830272073A05440A0D0ADF077E071801E5052904BA08B709FF028A03B006DC05B901FC08070B24 +034D05DF035B067B02AE013A092F0687FFFFFFFFFFFFFFFF080CFFFFFFFF080DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09C4FFFF02670AF305AA0143094D0644074B04CF0B78077307C2013B040004F7 +054D025902EF03ED0A860AB4019707A4060108C7FFFF0453FFFFFFFFFFFFFFFF09C5FFFF02680AF405AB0144094E0645 +074C04D00B79077407C3013C040104F8054E025A02F003EE0A870AB5019807A5060208C8FFFF0454FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07510A6705C0075F07EA012F09AF0AAA0AFB095902DD099E04E304F9014507D4 +047900E908CD063602CF0043036C0723040802D1025D05490B8A0147038006740ACA0A7B047B078C023104830B510781 +07520A6805C1076007EB013009B00AAB0AFC095A02DE099F04E404FA014607D5047A00EA08CE063702D00044036D0724 +040902D2025E054A0B8B0148038106750ACB0A7C047C078D023204840B520782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AD60A4B074107D6022305710B05099A +09C6022D07940B3F04A2024F0763048105C6033106AA034301BF0B3706C90283028709AD065003C5002702EB060B08D7 +0A2D075508B00A2FFFFFFFFFFFFFFFFF0AD70A4C074207D7022405720B06099B09C7022E07950B4004A3025007640482 +05C7033206AB034401C00B3806CA0284028809AE065103C6002802EC060C08D80A2E075608B10A30FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0463088F026B00A40AE906AC0251011009470B43FFFF00B708FB05E7090100B907CC080801310B470561083602FF03E3 +04230583FFFF02A707650A2904E50477063E0A31FFFF03B506D302C90890FFFF00A5046406AD026C01110AEA0B440252 +00B8094805E8FFFF00BA08FC080909020B4807CD0837013203E405620584030002A804240A2AFFFF047807660A3204E6 +03B6063F02CAFFFFFFFF06D4FFFFFFFF048904D10149019107E20B94057301E203E90697044505C80A8A07E803090A4D +0B90091500C7090F072D0341008A0895086604610100096A071B089D007A036605220201033F04BF0ADA0A69046507A0 +083C0963053C046B06EA023901BD0B9609E602FBFFFF066EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +048A04D2014A019207E30B95057401E303EA0698044605C90A8B07E9030A0A4E0B91091600C80910072E0342008B0896 +086704620101096B071C089E007B036705230202034004C00ADB0A6A046607A1083D0964053D046C06EB023A01BE0B97 +09E702FCFFFF066FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01DC057F0B9807A601C101A904E70490036E00CF08420733097E00EF045F0848015F0B15068D087202D7034A061108E1 +0A6B036408460AB80557045506BA03CD01DD05800B9907A701C201AA04E80491036F00D008430734097F00F004600849 +01600B16068E087302D8034B061208E20A6C036508470AB90558045606BB03CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +09A20084031F07250412025B040E05F5091B0069056306DD034800100A08061704AC0475019507AC06EE030B01EE0AA6 +08A604F30AEF06CB09E80A53050507B809A30085032007260413025C040F05F6091C006A056406DE034900110A090618 +04AD0476019607AD06EF030C01EF0AA708A704F40AF006CC09E90A54050607B903F8065A08B2005508DB05ED04370023 +03760598000000BF0814074305090536000207BC0757019B044B04A60A96033D02730AFD0547016E099C06AE09D20B9E +0014036803F9065B08B3005608DC05EE0438002403770599000100C008150744050A0537000307BD0758019C044C04A7 +0A97033E02740AFE0548016F099D06AF09D30B9F00150369FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //11648 bytes -enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0x11c0], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180017, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19, 0x1a0000, 0x1b, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x0, 0x0, 0x250024, 0x26, 0x0, 0x0, 0x0, 0x0, 0x0, 0x280027, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0029, 0x2c002b, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e0000, 0x2f, 0x310030, 0x330032, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340000, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0039, 0x3c003b, 0x3d0000, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x420041, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9beffff, 0x984008a, 0x3440658, 0x9ac00c7, 0xa7c0c6a, 0xbf40074, 0x8b10736, 0xb9100ef, 0x4a608c3, 0x62905e6, 0xae607fe, 0x1ac0199, 0x5210569, 0xffff0320, 0xffffffff, 0xffffffff, 0x9bfffff, 0x985008b, 0x3450659, 0x9ad00c8, 0xa7d0c6b, 0xbf50075, 0x8b20737, 0xb9200f0, 0x4a708c4, 0x62a05e7, 0xae707ff, 0x1ad019a, 0x522056a, 0xffff0321, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa0bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x60507f2, 0x8e3012e, 0xa640b9a, 0x4120277, 0x3c105a6, 0xc18013e, 0x3c9068a, 0x340004e, 0x97c0650, 0x2c20090, 0x5da0781, 0xffff00d5, 0xa2a0ba7, 0x5430230, 0x9110771, 0xba20af9, 0x60607f3, 0x8e4012f, 0xa650b9b, 0x4130278, 0x3c205a7, 0xc19013f, 0x3ca068b, 0x341004f, 0x97d0651, 0x2c30091, 0x5db0782, 0xffff00d6, 0xa2b0ba8, 0x5440231, 0x9120772, 0x39b0afa, 0xa890a88, 0x5120511, 0x1e601e5, 0xc230c22, 0x21d021c, 0x7a607a5, 0xd800d7, 0x9460945, 0x650064, 0x6730672, 0x5b005a, 0x67f067e, 0x2d802d7, 0x6c406c3, 0x1730172, 0x8890888, 0xc550c54, 0x8680867, 0x5040503, 0xb180b17, 0x1cd01cc, 0x5e505e4, 0x2390238, 0xa140a13, 0xffff03f6, 0x90a0909, 0x9dd09dc, 0x3470346, 0x9effff, 0x76d009f, 0x98076e, 0x8a70099, 0xbf908a8, 0x8440bfa, 0x1360845, 0xad60137, 0x31a0ad7, 0x5240523, 0x83f083e, 0xc310c30, 0x72a0729, 0x17b017a, 0x6eb06ea, 0x2d002cf, 0x6690668, 0xf000e, 0x6a0069f, 0x790078, 0x8c608c5, 0xdc00db, 0x79c079b, 0x1fb01fa, 0xc4d0c4c, 0x1bb01ba, 0x50c050b, 0xb080b07, 0x84b084a, 0x5b305b2, 0xa1e0a1d, 0xaab0aaa, 0x684039c, 0x250685, 0x65a0026, 0x62b065b, 0x6f006f9, 0xbe00bdf, 0x28a0289, 0x2950571, 0xc020296, 0x1c80881, 0xffff01c9, 0xb8107e0, 0x94e0afb, 0x56b094f, 0x247029b, 0xa380bd0, 0xa100a0, 0xffff050f, 0x98a00b4, 0x35600dd, 0x1d001c, 0x68d068c, 0x1180117, 0x40605a0, 0xa4e0407, 0xffffffff, 0x1820181, 0x7d00874, 0x1c007d1, 0x57707f8, 0x3280578, 0xb7f0329, 0x2760275, 0xffffffff, 0x9c109c0, 0x1c6ffff, 0xffffffff, 0xffffffff, 0x9ce09cd, 0x63b09cf, 0x63d063c, 0xbaa0ba9, 0x5450bab, 0x8120546, 0xb130813, 0x7e20b14, 0x47c07e3, 0xb39047d, 0x3240b3a, 0x59e0325, 0x7e1059f, 0xc1f0c1e, 0x6b606b5, 0x1840183, 0x6570656, 0x2e602e5, 0x6a606a5, 0x1010100, 0x7140713, 0x5bd05bc, 0xb790928, 0xb7b0b7a, 0x7bf07be, 0x1c70248, 0xc390c38, 0x2070206, 0x4550454, 0xa180a17, 0x8ce08cd, 0x5f105f0, 0x9e409e3, 0x95b095a, 0x3e103e0, 0x92d092c, 0xbd90bd8, 0x4570456, 0x4460445, 0xb480b47, 0x2da02d9, 0x57c057b, 0x1860185, 0x8770876, 0x60f060e, 0x8d808d7, 0xffff00de, 0x73d073c, 0x6d006c, 0xc4f0c4e, 0xcc00cb, 0x7b407b3, 0x820081, 0x91b091a, 0x5c905c8, 0x7650764, 0xffffffff, 0xffffffff, 0xffffffff, 0x8100abe, 0x5100811, 0xa030838, 0x16402ad, 0x6fa0165, 0x2fa0458, 0xa810a80, 0x9c709c6, 0x34f034e, 0x9fa09f9, 0xaa70aa6, 0xbe8043b, 0x6f1023a, 0xffff0572, 0x8820c03, 0xb82ffff, 0xafcffff, 0xffff09e5, 0xffffffff, 0xbf7056c, 0x29cffff, 0xc41ffff, 0xffff00bf, 0xbd10a39, 0x69b0109, 0xffff0a32, 0xb5ffff, 0x5f7ffff, 0xffff098b, 0x357ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x35ffff, 0xffffffff, 0xffff05a1, 0xa4f055f, 0xffffffff, 0x380ffff, 0x4590875, 0x7f901c1, 0xffff02fb, 0xffffffff, 0xffffffff, 0xffff0b80, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9cffff, 0xffff077f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa19ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4e604e5, 0x1e801e7, 0xffffffff, 0x2120211, 0xffffffff, 0xaeaffff, 0x8ff0138, 0x3b3ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff02bc, 0x8b30746, 0xffff00fa, 0xffff0878, 0xa750c70, 0x4f90883, 0x19504f1, 0xb7c0aca, 0x17f01eb, 0xa1a05ec, 0xbce0bfb, 0x8a90a0c, 0x11903cd, 0x68e0c3e, 0x6f2ffff, 0x6660358, 0xb60372, 0x76a099e, 0xa408d9, 0x74702bd, 0xfb08b4, 0x4fa0a79, 0x19604f2, 0xb7d0acb, 0x18001ec, 0xa1b05ed, 0xbcf0bfc, 0x8aa0a0d, 0x11a03ce, 0x68f0c3f, 0x6f406f3, 0x6670359, 0xb70373, 0x76b099f, 0xa508da, 0xc710879, 0xa1f0a76, 0x5ee04f3, 0xffffffff, 0x374ffff, 0xa200c40, 0x1a501a4, 0x4ec04eb, 0xb420b41, 0x8f008ef, 0x5d105d0, 0xa310a30, 0xa8b0a8a, 0x3f003ef, 0x31d031c, 0x95f095e, 0x4850484, 0x3940393, 0x6900bfd, 0x3b401ef, 0xb7e05ef, 0xb3dffff, 0x1f00b3e, 0x6310630, 0xaebffff, 0x9000139, 0x5650539, 0xa1502b4, 0xa360bba, 0x603009a, 0x99a076f, 0x99800aa, 0x348064a, 0x3c300a6, 0xc0e0790, 0x3f8058d, 0x40a0757, 0xb72029d, 0x8fb0b45, 0x4fd013c, 0x8240894, 0x1d20ac4, 0x55a0872, 0x3060b2c, 0xb8d0a4c, 0x1740265, 0x6c505ca, 0xc2609de, 0x6800a9d, 0x5c03fc, 0xc0f0791, 0x3f9058e, 0x40b0758, 0xb73029e, 0x8fc0b46, 0x4fe013d, 0x8250895, 0x1d30ac5, 0x55b0873, 0x3070b2d, 0xb8e0a4d, 0x1750266, 0x6c605cb, 0xc2709df, 0x6810a9e, 0x5d03fd, 0x566053a, 0xa1602b5, 0xa370bbb, 0x604009b, 0x99b0770, 0x99900ab, 0x349064b, 0x3c400a7, 0xb5c0b5b, 0x6250624, 0x2640263, 0xc130c12, 0x2160215, 0x41d041c, 0xa5f0a5e, 0x8e608e5, 0x5f605f5, 0x97f097e, 0x9630962, 0x3cc03cb, 0x9190918, 0x9db09da, 0x4150414, 0x4530452, 0xbeb0bea, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5fe05fd, 0x8b608b5, 0xf500f4, 0x73f073e, 0x670066, 0x67b067a, 0x50004, 0x7a407a3, 0xd400d3, 0x9440943, 0x5b505b4, 0x7220721, 0x11e011d, 0x5380537, 0x1b901b8, 0xac10ac0, 0x4950494, 0x8350834, 0xc3b0c3a, 0x8bc08bb, 0x4420441, 0xa680a67, 0x98d098c, 0x3510350, 0x9770976, 0xaa90aa8, 0x3eb03ea, 0x7310302, 0x23c0732, 0x632023d, 0x2550633, 0xad40256, 0x4e10ad5, 0x80c04e2, 0x303080d, 0x25a0259, 0x5a905a8, 0x2820281, 0x7540753, 0x610060, 0x6870686, 0x220021, 0x6e006df, 0x1290128, 0x6db06da, 0x2680267, 0x5b705b6, 0x1310130, 0x8230822, 0x4dc04db, 0x7ef07ee, 0xb4a0b49, 0x4a904a8, 0x2540253, 0xbc50bc4, 0x3be03bd, 0x4670466, 0x9af09ae, 0x9670966, 0x3650364, 0x9c509c4, 0xab10ab0, 0x40f040e, 0x8b008af, 0xb4e0b4d, 0x8150814, 0x1e401e3, 0xacf0ace, 0x2eb02ea, 0x5340533, 0x18a0189, 0x710070f, 0x6130612, 0x6ac06ab, 0x30002f, 0x6980697, 0x3c003b, 0xc350c34, 0xbe00bd, 0x7ae07ad, 0xb8c0b8b, 0x9230922, 0x5360535, 0xc72ffff, 0x2450197, 0x78904fb, 0xb5302b6, 0x8df0b83, 0x5d804be, 0x74403da, 0x14a0c2e, 0x6e403b5, 0x32a0382, 0x6e609a4, 0x14c09d0, 0x748060c, 0xbf009ed, 0x8e70ab6, 0x549056f, 0x78502b8, 0x24d0af0, 0x637019d, 0xffff0800, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xc73ffff, 0x2460198, 0x78a04fc, 0xb5402b7, 0x8e00b84, 0x5d904bf, 0x74503db, 0x14b0c2f, 0x6e503b6, 0x32b0383, 0x6e709a5, 0x14d09d1, 0x749060d, 0xbf109ee, 0x8e80ab7, 0x54a0570, 0x78602b9, 0x24e0af1, 0x638019e, 0x6620801, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x8ad0a60, 0x5560422, 0x766020c, 0x1ca0c5e, 0x4c60261, 0x1d004d9, 0xb570b55, 0x4ac090d, 0x88605b8, 0xbbc070b, 0x3c50107, 0x46c06a7, 0x9aa0300, 0x96006f7, 0x3680168, 0x9b806d4, 0xa970c1a, 0x40808db, 0x308011b, 0xb61ffff, 0xffffffff, 0xffffffff, 0xb0bffff, 0xffffffff, 0xbac016c, 0x4350702, 0x468061c, 0x9d606ca, 0x3420031, 0x3fe064c, 0xaa10029, 0x9cb0c04, 0x5aa0096, 0x8eb071d, 0xa530ba5, 0x4640913, 0x2320547, 0xaba07d8, 0x26901f3, 0x7830519, 0xb6802c4, 0x8a30a40, 0x5d60418, 0x75c0400, 0x1340bfe, 0xffff03d1, 0x10ffff, 0x6fd09a6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x46e062e, 0x39100cd, 0x8a1072f, 0x9d80076, 0x3a5093b, 0xaac0bf2, 0x9580660, 0x362008c, 0x2130b24, 0xb1102f4, 0x9fb0725, 0x5ac014e, 0xc4a085b, 0x84205c4, 0x52704cc, 0x7d40a9b, 0x30e048a, 0x6ad03a9, 0x15808dd, 0x70d0a48, 0x4a049a, 0x93009ba, 0x4c0c6c, 0x693033e, 0x2510a59, 0xc320a8c, 0x940291, 0x7af0590, 0xabc0ba0, 0x7f60787, 0x2000573, 0x4ff0953, 0xaae02ab, 0x3e2074a, 0x6100217, 0x8900c08, 0x37a0639, 0x39906ee, 0x2d30150, 0x9d20719, 0xc500054, 0x3bf0682, 0x474006a, 0xffffffff, 0xc510055, 0x3c00683, 0x475006b, 0xffffffff, 0x759058f, 0x55c0ac6, 0xb2f0b2e, 0x62609e0, 0xffff0708, 0xffffffff, 0xffffffff, 0xffffffff, 0xbad016d, 0x4360703, 0x469061d, 0x9d706cb, 0x3430032, 0x3ff064d, 0xaa2002a, 0x9cc0c05, 0x5ab0097, 0x8ec071e, 0xa540ba6, 0x4650914, 0x2330548, 0xabb07d9, 0x26a01f4, 0x784051a, 0xb6902c5, 0x8a40a41, 0x5d70419, 0x75d0401, 0x1350bff, 0xffff03d2, 0x11ffff, 0x6fe09a7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x561ffff, 0xffffffff, 0x338ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0c62, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7630762, 0x50e050d, 0x7ed07ec, 0xc530c52, 0x88b088a, 0x4b304b2, 0xa2d0a2c, 0x280027f, 0x5c705c6, 0x9a909a8, 0x9950994, 0x3610360, 0x2f302f2, 0x9b509b4, 0x4990498, 0x40d040c, 0xbc90bc8, 0x8410840, 0x5260525, 0xad10ad0, 0x1c501c4, 0x6230622, 0x260025f, 0x7a0079f, 0xe500e4, 0x8ca08c9, 0x690068, 0x6750674, 0x150014, 0x66d066c, 0x2c702c6, 0x6fc06fb, 0x1770176, 0x7240723, 0x6080607, 0x8190818, 0xb1a0b19, 0x4d404d3, 0x2250224, 0xc250c24, 0x22b022a, 0x4170416, 0x9ea09e9, 0x90c090b, 0x3850384, 0x9a109a0, 0x96f096e, 0x3ae03ad, 0x9160915, 0xa080a07, 0x4110410, 0x2210220, 0xc070c06, 0x1cf01ce, 0x4c104c0, 0xaf60af5, 0x85e085d, 0x61b061a, 0x89c089b, 0x1670166, 0x6be06bd, 0x2d202d1, 0x6920691, 0x510050, 0x67d067c, 0x930092, 0x9380937, 0x58c058b, 0x7ac07ab, 0x2230222, 0x5080507, 0x1ea01e9, 0xb100b0f, 0x47b047a, 0x84d084c, 0xdf0c5c, 0x5ba03fa, 0x917049e, 0xffffffff, 0xffff0ba3, 0x3310330, 0x9870986, 0xa740a73, 0x3d603d5, 0x2740273, 0xb9f0b9e, 0x46b046a, 0x8660865, 0xad90ad8, 0x82b082a, 0x50a0509, 0x7930792, 0x2370236, 0x5930592, 0xa300a2, 0x7740773, 0xad00ac, 0x6550654, 0x570056, 0x6b406b3, 0x13b013a, 0xbbf0bbe, 0x3270326, 0x57e057d, 0x12d012c, 0x7e907e8, 0x4d804d7, 0x82f082e, 0xb270b26, 0x430042f, 0x26e026d, 0xc490c48, 0x3f203f1, 0x4770476, 0x9710970, 0x9970996, 0x390038f, 0x9c309c2, 0xa3d0a3c, 0x5990598, 0x93a0939, 0xb310b30, 0x48d048c, 0x1b301b2, 0xb000aff, 0x1ee01ed, 0x74f074e, 0xfd00fc, 0x3dc0664, 0xab20039, 0x9f30c0a, 0x5a20102, 0x3dd0665, 0xab3003a, 0x9f40c0b, 0x5a30103, 0xae807e4, 0x24901b6, 0x7680513, 0xffffffff, 0xae907e5, 0x24a01b7, 0x7690514, 0xffffffff, 0x65c03cf, 0x1a032c, 0x6e80988, 0x18b0901, 0x65d03d0, 0x1b032d, 0x6e90989, 0x18c0902, 0xaec030c, 0x19b0b87, 0x4ed01bc, 0x1fc0807, 0xaed030d, 0x19c0b88, 0x4ee01bd, 0x1fd0808, 0x37e007d, 0x386063e, 0x95c000c, 0xffffffff, 0x37f007e, 0x387063f, 0x95d000d, 0xffffffff, 0x2020085, 0xb1508ed, 0x51b0bec, 0x7e6072b, 0x203ffff, 0xb16ffff, 0x51cffff, 0x7e7ffff, 0x2ec0a3a, 0x6b70478, 0x2d03e6, 0x6400c5a, 0x2ed0a3b, 0x6b80479, 0x2e03e7, 0x6410c5b, 0x3140482, 0xa8202fc, 0x2260b2a, 0x45a0627, 0xa0982, 0xb0d0b6a, 0x678034c, 0xffffffff, 0xac70be3, 0x8560b76, 0x5f20794, 0x9910140, 0xac80be4, 0x8570b77, 0x5f30795, 0x9920141, 0x3ec0750, 0xaa30634, 0x9c80bda, 0x6090219, 0x3ed0751, 0xaa40635, 0x9c90bdb, 0x60a021a, 0xc450a90, 0xb1f0b95, 0x7b50947, 0x1f7054f, 0xc460a91, 0xb200b96, 0x7b60948, 0x1f80550, 0x6cc03a1, 0xa23048e, 0xffff0336, 0x3f0c43, 0x6cd03a2, 0x3150483, 0xffff0a24, 0xffff0a1c, 0xffffffff, 0xaf2084e, 0xffff0a9f, 0x51f0581, 0xa8302fd, 0x2270b2b, 0xffff0af3, 0xffffffff, 0x38d00c5, 0x884091e, 0xffffffff, 0x96c064e, 0x38e00c6, 0x45b0628, 0xffffffff, 0xffffffff, 0x1dc018f, 0xa7a08e9, 0x2be0c16, 0x4e707f4, 0x1dd0190, 0xb0e0b6b, 0xffff02bf, 0xffffffff, 0xffffffff, 0x6ff0a6b, 0xffff05d2, 0x6d8091c, 0xb0983, 0x679034d, 0xffff0700, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff076c, 0xffffffff, 0xa660bf6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff09f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff09f8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb32082c, 0x49604d5, 0x19107de, 0xaf70a86, 0x208057f, 0x7790318, 0xeb0bb0, 0x8b90488, 0xb33082d, 0x49704d6, 0x19207df, 0xaf80a87, 0x2090580, 0x77a0319, 0xec0bb1, 0x8ba0489, 0xffffffff, 0x905ffff, 0xffff0906, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5e803ab, 0xb00bee, 0x7bc08a5, 0x5750437, 0x92e0a77, 0xb4b022c, 0x83004c8, 0x1a60241, 0xb59078e, 0x2c00115, 0x56308f1, 0xa210be6, 0x9e706bf, 0x5e903ac, 0xb10bef, 0x7bd08a6, 0x5760438, 0x92f0a78, 0xb4c022d, 0x83104c9, 0x1a70242, 0xb5a078f, 0x2c10116, 0x56408f2, 0xa220be7, 0x9e806c0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x6b90402, 0x11f0bb2, 0x71f08b7, 0x554047e, 0x8fd0b05, 0xb6c01e1, 0x7ca04dd, 0x2430228, 0xc2a077b, 0x2970583, 0x447089d, 0xa2e00b2, 0x9e10775, 0x5f90033, 0xa010699, 0x9740045, 0x3d306d2, 0x907016a, 0xbd206ec, 0x41e062c, 0x43d0850, 0xb5d012a, 0x30a0501, 0x58501d4, 0x6ba0403, 0x1200bb3, 0x72008b8, 0x555047f, 0x8fe0b06, 0xb6d01e2, 0x7cb04de, 0x2440229, 0xc2b077c, 0x2980584, 0x448089e, 0xa2f00b3, 0x9e20776, 0x5fa0034, 0xa02069a, 0x9750046, 0x3d406d3, 0x908016b, 0xbd306ed, 0x41f062d, 0x43e0851, 0xb5e012b, 0x30b0502, 0x58601d5, 0x3e003d, 0x339069c, 0xabf0036, 0xa840839, 0x3af0a85, 0x28503b0, 0xbe90286, 0x43c05f8, 0xffff023b, 0xacd0acc, 0x7c4ffff, 0xffff07c5, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ae0a04, 0x2c902c8, 0x3670366, 0x9690968, 0x9b309b2, 0x3a403a3, 0x2df02de, 0xa3f0a3e, 0x4af04ae, 0x88d088c, 0xc210c20, 0x7f107f0, 0x4f504f4, 0xb1c0b1b, 0x2050204, 0x5bf05be, 0xee00ed, 0x79e079d, 0x6f006e, 0x940093f, 0x240023, 0x6890688, 0x630062, 0xbe20be1, 0x2840283, 0x72e072d, 0x1a901a8, 0x83b083a, 0x6150614, 0x7c707c6, 0xaef0aee, 0x52a0529, 0x2a0029f, 0xbc70bc6, 0x3df03de, 0x4b104b0, 0x9fe09fd, 0x9730972, 0x3530352, 0x9d509d4, 0xa6a0a69, 0x5cd05cc, 0x8be08bd, 0xb670b66, 0x45d045c, 0x2350234, 0xac30ac2, 0x1bf01be, 0x77e077d, 0x1220121, 0x8ac08ab, 0xffffffff, 0xffffffff, 0xffffffff, 0x38bffff, 0x354038c, 0xffff0355, 0xffffffff, 0x7410740, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x8ae0a61, 0x5570423, 0x767020d, 0x1cb0c5f, 0x4c70262, 0x1d104da, 0xb580b56, 0x4ad090e, 0x88705b9, 0xbbd070c, 0x3c60108, 0x46d06a8, 0x9ab0301, 0x96106f8, 0x3690169, 0x9b906d5, 0xa980c1b, 0x40908dc, 0x309011c, 0xb62ffff, 0xffffffff, 0xffffffff, 0xb0cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f201f1, 0xad30ad2, 0xb520b51, 0x8170816, 0x1570156, 0x70a0709, 0x2e102e0, 0x53e053d, 0x420041, 0x6a206a1, 0x6170616, 0x6aa06a9, 0x80007f, 0x7b207b1, 0x440043, 0xc370c36, 0x5320531, 0x7fd07fc, 0xb940b93, 0x9270926, 0x2ef02ee, 0xb860b85, 0x1940193, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x55e055d, 0x2bb02ba, 0x9f009ef, 0xab50ab4, 0x8290828, 0xb3c0b3b, 0xafe0afd, 0x1a301a2, 0x7c107c0, 0xb900b8, 0x9210920, 0x57a0579, 0x6470646, 0x380037, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x90008, 0x9420941, 0xd000cf, 0x7610760, 0xf700f6, 0x66f066e, 0x710070, 0xffffffff, 0x1710170, 0x8c008bf, 0xc150c14, 0x54c054b, 0xa700a6f, 0xadf0ade, 0x2d602d5, 0x910090f, 0xa060a05, 0xa290a28, 0x3c803c7, 0xc290c28, 0x8e208e1, 0x33d033c, 0x35d035c, 0x22f022e, 0x60005ff, 0x44c044b, 0xa350a34, 0x5680567, 0x8fa08f9, 0x25c025b, 0xadb0ada, 0x1140113, 0x6cf06ce, 0xbd70bd6, 0x7120711, 0x16f016e, 0x6c206c1, 0x3110310, 0x7050704, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x81cffff, 0x51d081d, 0x562051e, 0xc3d0c3c, 0x5d505d4, 0xa630a62, 0xb900b8f, 0x8d208d1, 0xffffffff, 0x58ffff, 0xc420059, 0xffffffff, 0xbd50bd4, 0x26c026b, 0xffff0826, 0x3e503e4, 0x85a0859, 0x4e004df, 0x4340433, 0xa8f0a8e, 0x5590558, 0x29a0299, 0x89a0899, 0x1330132, 0x7780777, 0x9e600c0, 0xa330bf8, 0xffff010a, 0x3810780, 0xc2c009d, 0x6450644, 0xa900a8, 0x7560755, 0x1550154, 0x59d059c, 0x2b002af, 0x88f088e, 0x4710470, 0x5600827, 0x7d20c63, 0x18d07d3, 0xffff018e, 0xffffffff, 0xffffffff, 0x31f031e, 0xffffffff, 0xffffffff, 0x33b033a, 0xbb70bb6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa99ffff, 0xffff0a9a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xc2dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x46f062f, 0x39200ce, 0x8a20730, 0x9d90077, 0x3a6093c, 0xaad0bf3, 0x9590661, 0x363008d, 0x2140b25, 0xb1202f5, 0x9fc0726, 0x5ad014f, 0xc4b085c, 0x84305c5, 0x52804cd, 0x7d50a9c, 0x30f048b, 0x6ae03aa, 0x15908de, 0x70e0a49, 0x4b049b, 0x93109bb, 0x4d0c6d, 0x694033f, 0x2520a5a, 0xc330a8d, 0x950292, 0x7b00591, 0xabd0ba1, 0x7f70788, 0x2010574, 0x5000954, 0xaaf02ac, 0x3e3074b, 0x6110218, 0x8910c09, 0x37b063a, 0x39a06ef, 0x2d40151, 0x9d3071a, 0x8c10bca, 0x5fb0148, 0xb630846, 0xffff0b64, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x9f5ffff, 0x4b4069d, 0x35a0016, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa6dffff, 0x2870bb8, 0x601015a, 0x9f106a3, 0x7c20515, 0xc6607ea, 0x83c0152, 0x439053f, 0x59a0279, 0x3160426, 0xb3f0b6e, 0x1b0081e, 0x65e0964, 0xffff0490, 0xffffffff, 0xffffffff, 0xa6effff, 0x2880bb9, 0x602015b, 0x9f206a4, 0x7c30516, 0xc6707eb, 0x83d0153, 0x43a0540, 0x59b027a, 0x3170427, 0xb400b6f, 0x1b1081f, 0x65f0965, 0xffff0491, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7c80b1d, 0x61807d6, 0x86d0146, 0xa570b70, 0xbc009ff, 0x3040a46, 0x52b0541, 0x15c0854, 0x4ba00f8, 0x96a0695, 0x2f60052, 0x39d0797, 0x44302f8, 0x27d0596, 0xc56015e, 0x3b106d6, 0xb890b34, 0x4bc0805, 0x24f04c4, 0xc1c07fa, 0x7c90b1e, 0x61907d7, 0x86e0147, 0xa580b71, 0xbc10a00, 0x3050a47, 0x52c0542, 0x15d0855, 0x4bb00f9, 0x96b0696, 0x2f70053, 0x39e0798, 0x44402f9, 0x27e0597, 0xc57015f, 0x3b206d7, 0xb8a0b35, 0x4bd0806, 0x25004c5, 0xc1d07fb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xb980b01, 0x7b80869, 0x25705c0, 0xbcc0a42, 0xa71024b, 0x80e0c10, 0x4e3026f, 0x7da04c2, 0x61e035e, 0x7150370, 0x1d80c00, 0x73802a4, 0x2a90a55, 0x6b10420, 0x2b0312, 0x66a0978, 0xae007cc, 0x94a0ae2, 0xffffffff, 0xffffffff, 0xb990b02, 0x7b9086a, 0x25805c1, 0xbcd0a43, 0xa72024c, 0x80f0c11, 0x4e40270, 0x7db04c3, 0x61f035f, 0x7160371, 0x1d90c01, 0x73902a5, 0x2aa0a56, 0x6b20421, 0x2c0313, 0x66b0979, 0xae107cd, 0x94b0ae3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4a00924, 0x28b00ae, 0xbae0717, 0x2710123, 0x9eb0c0c, 0xffff00c1, 0x99c0642, 0x9a200c3, 0x8480892, 0x1600c58, 0x5ae08c7, 0x32e041a, 0x45e05dc, 0xffff02cd, 0x7dc0adc, 0x52d04b8, 0x6af0ae4, 0xffff03e8, 0x74202f0, 0x925ffff, 0xaf04a1, 0x718028c, 0x1240baf, 0xc0d0272, 0xc209ec, 0x643ffff, 0xc4099d, 0x89309a3, 0xc590849, 0x8c80161, 0x41b05af, 0x5dd032f, 0x2ce045f, 0xaddffff, 0x4b907dd, 0xae5052e, 0x3e906b0, 0x2f1ffff, 0xffff0743, 0xffffffff, 0x4ca0517, 0x16201aa, 0x8630c64, 0x5c201fe, 0x4240706, 0x4800620, 0xb43086b, 0x3320b03, 0xc6009b6, 0xd109b0, 0x7a1036e, 0xd9092a, 0x8f704a4, 0x1110a11, 0x7a70932, 0x830397, 0x56d021e, 0x36c0505, 0xb9c0b28, 0x4a2081a, 0x8cb0a09, 0x58904aa, 0x75a025d, 0x1d60002, 0xa930322, 0xffff06d0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4cb0518, 0x16301ab, 0x8640c65, 0x5c301ff, 0x4250707, 0x4810621, 0xb44086c, 0x3330b04, 0xc6109b7, 0xd209b1, 0x7a2036f, 0xda092b, 0x8f804a5, 0x1120a12, 0x7a80933, 0x840398, 0x56e021f, 0x36d0506, 0xb9d0b29, 0x4a3081b, 0x8cc0a0a, 0x58a04ab, 0x75b025e, 0x1d70003, 0xa940323, 0xffff06d1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f505ce, 0xc680820, 0x1da01c2, 0x52f04d1, 0x39f00e9, 0x8cf07a9, 0xa2600fe, 0x49c08d5, 0x1780bdd, 0x6f50903, 0x2fe0378, 0x6700980, 0xb220395, 0x8d30b74, 0x5a40492, 0x7270404, 0x1f605cf, 0xc690821, 0x1db01c3, 0x53004d2, 0x3a000ea, 0x8d007aa, 0xa2700ff, 0x49d08d6, 0x1790bde, 0x6f60904, 0x2ff0379, 0x6710981, 0xb230396, 0x8d40b75, 0x5a50493, 0x7280405, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xa4a008e, 0x34a0799, 0x44d027b, 0x4490652, 0x9bc0072, 0x5b0074c, 0x37c0012, 0xab80676, 0x4ef04b6, 0x1ae0836, 0x75e0334, 0x20a0b5f, 0x93d053b, 0xbb4073a, 0xa950b09, 0x54d0832, 0xa4b008f, 0x34b079a, 0x44e027c, 0x44a0653, 0x9bd0073, 0x5b1074d, 0x37d0013, 0xab90677, 0x4f004b7, 0x1af0837, 0x75f0335, 0x20b0b60, 0x93e053c, 0xbb5073b, 0xa960b0a, 0x54e0833, 0x43106bb, 0x94c005e, 0x97a0648, 0x4720027, 0x3a705ea, 0xc9, 0x89f07ba, 0x5520587, 0x60852, 0x7ce01b4, 0x48604e9, 0xb4f036a, 0x2930bc2, 0x5940187, 0xa44071b, 0xa7e0c6e, 0x18043f, 0x43206bc, 0x94d005f, 0x97b0649, 0x4730028, 0x3a805eb, 0x100ca, 0x8a007bb, 0x5530588, 0x70853, 0x7cf01b5, 0x48704ea, 0xb50036b, 0x2940bc3, 0x5950188, 0xa45071c, 0xa7f0c6f, 0x190440, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +0000010000000480000011C0", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000300020005000400070006000900080000000A000B0000000D000C +000F000E0011001000130012000000140000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000016001500000000000000000000000000000000000000000018001700000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000019001A00000000001B001D001C001F001E002100200023002200000000000000000025002400000026 +000000000000000000000000000000000000000000280027000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000002A0029002C002B0000002D00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002E00000000002F003100300033003200000000000000000000000000000000 +000000000000000000340000000000350000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000036000000000000000000000000000000000000000000000000000000000038003700000000 +0000000000000000000000000000000000000000000000000000000000000000003A0039003C003B003D00000000003E +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000040003F00000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000042004100000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000450044000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +09BEFFFF0984008A0344065809AC00C70A7C0C6A0BF4007408B107360B9100EF04A608C3062905E60AE607FE01AC0199 +05210569FFFF0320FFFFFFFFFFFFFFFF09BFFFFF0985008B0345065909AD00C80A7D0C6B0BF5007508B207370B9200F0 +04A708C4062A05E70AE707FF01AD019A0522056AFFFF0321FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0BFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF060507F208E3012E0A640B9A0412027703C105A60C18013E03C9068A0340004E +097C065002C2009005DA0781FFFF00D50A2A0BA705430230091107710BA20AF9060607F308E4012F0A650B9B04130278 +03C205A70C19013F03CA068B0341004F097D065102C3009105DB0782FFFF00D60A2B0BA80544023109120772039B0AFA +0A890A880512051101E601E50C230C22021D021C07A607A500D800D7094609450065006406730672005B005A067F067E +02D802D706C406C301730172088908880C550C5408680867050405030B180B1701CD01CC05E505E4023902380A140A13 +FFFF03F6090A090909DD09DC03470346009EFFFF076D009F0098076E08A700990BF908A808440BFA013608450AD60137 +031A0AD705240523083F083E0C310C30072A0729017B017A06EB06EA02D002CF06690668000F000E06A0069F00790078 +08C608C500DC00DB079C079B01FB01FA0C4D0C4C01BB01BA050C050B0B080B07084B084A05B305B20A1E0A1D0AAB0AAA +0684039C00250685065A0026062B065B06F006F90BE00BDF028A0289029505710C02029601C80881FFFF01C90B8107E0 +094E0AFB056B094F0247029B0A380BD000A100A0FFFF050F098A00B4035600DD001D001C068D068C01180117040605A0 +0A4E0407FFFFFFFF0182018107D0087401C007D1057707F8032805780B7F032902760275FFFFFFFF09C109C001C6FFFF +FFFFFFFFFFFFFFFF09CE09CD063B09CF063D063C0BAA0BA905450BAB081205460B13081307E20B14047C07E30B39047D +03240B3A059E032507E1059F0C1F0C1E06B606B5018401830657065602E602E506A606A5010101000714071305BD05BC +0B7909280B7B0B7A07BF07BE01C702480C390C3802070206045504540A180A1708CE08CD05F105F009E409E3095B095A +03E103E0092D092C0BD90BD804570456044604450B480B4702DA02D9057C057B0186018508770876060F060E08D808D7 +FFFF00DE073D073C006D006C0C4F0C4E00CC00CB07B407B300820081091B091A05C905C807650764FFFFFFFFFFFFFFFF +FFFFFFFF08100ABE051008110A030838016402AD06FA016502FA04580A810A8009C709C6034F034E09FA09F90AA70AA6 +0BE8043B06F1023AFFFF057208820C030B82FFFF0AFCFFFFFFFF09E5FFFFFFFF0BF7056C029CFFFF0C41FFFFFFFF00BF +0BD10A39069B0109FFFF0A3200B5FFFF05F7FFFFFFFF098B0357FFFFFFFFFFFFFFFFFFFFFFFFFFFF0035FFFFFFFFFFFF +FFFF05A10A4F055FFFFFFFFF0380FFFF0459087507F901C1FFFF02FBFFFFFFFFFFFFFFFFFFFF0B80FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF009CFFFFFFFF077FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A19FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E604E501E801E7FFFFFFFF02120211 +FFFFFFFF0AEAFFFF08FF013803B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BC08B30746FFFF00FAFFFF08780A750C70 +04F90883019504F10B7C0ACA017F01EB0A1A05EC0BCE0BFB08A90A0C011903CD068E0C3E06F2FFFF0666035800B60372 +076A099E00A408D9074702BD00FB08B404FA0A79019604F20B7D0ACB018001EC0A1B05ED0BCF0BFC08AA0A0D011A03CE +068F0C3F06F406F30667035900B70373076B099F00A508DA0C7108790A1F0A7605EE04F3FFFFFFFF0374FFFF0A200C40 +01A501A404EC04EB0B420B4108F008EF05D105D00A310A300A8B0A8A03F003EF031D031C095F095E0485048403940393 +06900BFD03B401EF0B7E05EF0B3DFFFF01F00B3E063106300AEBFFFF09000139056505390A1502B40A360BBA0603009A +099A076F099800AA0348064A03C300A60C0E079003F8058D040A07570B72029D08FB0B4504FD013C0824089401D20AC4 +055A087203060B2C0B8D0A4C0174026506C505CA0C2609DE06800A9D005C03FC0C0F079103F9058E040B07580B73029E +08FC0B4604FE013D0825089501D30AC5055B087303070B2D0B8E0A4D0175026606C605CB0C2709DF06810A9E005D03FD +0566053A0A1602B50A370BBB0604009B099B0770099900AB0349064B03C400A70B5C0B5B06250624026402630C130C12 +02160215041D041C0A5F0A5E08E608E505F605F5097F097E0963096203CC03CB0919091809DB09DA0415041404530452 +0BEB0BEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FE05FD08B608B500F500F4073F073E00670066067B067A00050004 +07A407A300D400D30944094305B505B407220721011E011D0538053701B901B80AC10AC004950494083508340C3B0C3A +08BC08BB044204410A680A67098D098C03510350097709760AA90AA803EB03EA07310302023C07320632023D02550633 +0AD4025604E10AD5080C04E20303080D025A025905A905A8028202810754075300610060068706860022002106E006DF +0129012806DB06DA0268026705B705B6013101300823082204DC04DB07EF07EE0B4A0B4904A904A8025402530BC50BC4 +03BE03BD0467046609AF09AE096709660365036409C509C40AB10AB0040F040E08B008AF0B4E0B4D0815081401E401E3 +0ACF0ACE02EB02EA05340533018A01890710070F0613061206AC06AB0030002F06980697003C003B0C350C3400BE00BD +07AE07AD0B8C0B8B09230922053605350C72FFFF02450197078904FB0B5302B608DF0B8305D804BE074403DA014A0C2E +06E403B5032A038206E609A4014C09D00748060C0BF009ED08E70AB60549056F078502B8024D0AF00637019DFFFF0800 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C73FFFF02460198078A04FC0B5402B708E00B8405D904BF074503DB014B0C2F +06E503B6032B038306E709A5014D09D10749060D0BF109EE08E80AB7054A0570078602B9024E0AF10638019E06620801 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08AD0A60055604220766020C01CA0C5E +04C6026101D004D90B570B5504AC090D088605B80BBC070B03C50107046C06A709AA0300096006F70368016809B806D4 +0A970C1A040808DB0308011B0B61FFFFFFFFFFFFFFFFFFFF0B0BFFFFFFFFFFFF0BAC016C043507020468061C09D606CA +0342003103FE064C0AA1002909CB0C0405AA009608EB071D0A530BA504640913023205470ABA07D8026901F307830519 +0B6802C408A30A4005D60418075C040001340BFEFFFF03D10010FFFF06FD09A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +046E062E039100CD08A1072F09D8007603A5093B0AAC0BF2095806600362008C02130B240B1102F409FB072505AC014E +0C4A085B084205C4052704CC07D40A9B030E048A06AD03A9015808DD070D0A48004A049A093009BA004C0C6C0693033E +02510A590C320A8C0094029107AF05900ABC0BA007F607870200057304FF09530AAE02AB03E2074A0610021708900C08 +037A0639039906EE02D3015009D207190C50005403BF06820474006AFFFFFFFF0C51005503C006830475006BFFFFFFFF +0759058F055C0AC60B2F0B2E062609E0FFFF0708FFFFFFFFFFFFFFFFFFFFFFFF0BAD016D043607030469061D09D706CB +0343003203FF064D0AA2002A09CC0C0505AB009708EC071E0A540BA604650914023305480ABB07D9026A01F40784051A +0B6902C508A40A4105D70419075D040101350BFFFFFF03D20011FFFF06FE09A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0561FFFFFFFFFFFF0338FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C62 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +07630762050E050D07ED07EC0C530C52088B088A04B304B20A2D0A2C0280027F05C705C609A909A80995099403610360 +02F302F209B509B404990498040D040C0BC90BC808410840052605250AD10AD001C501C4062306220260025F07A0079F +00E500E408CA08C9006900680675067400150014066D066C02C702C606FC06FB01770176072407230608060708190818 +0B1A0B1904D404D3022502240C250C24022B022A0417041609EA09E9090C090B0385038409A109A0096F096E03AE03AD +091609150A080A0704110410022102200C070C0601CF01CE04C104C00AF60AF5085E085D061B061A089C089B01670166 +06BE06BD02D202D10692069100510050067D067C0093009209380937058C058B07AC07AB022302220508050701EA01E9 +0B100B0F047B047A084D084C00DF0C5C05BA03FA0917049EFFFFFFFFFFFF0BA303310330098709860A740A7303D603D5 +027402730B9F0B9E046B046A086608650AD90AD8082B082A050A050907930792023702360593059200A300A207740773 +00AD00AC065506540057005606B406B3013B013A0BBF0BBE03270326057E057D012D012C07E907E804D804D7082F082E +0B270B260430042F026E026D0C490C4803F203F10477047609710970099709960390038F09C309C20A3D0A3C05990598 +093A09390B310B30048D048C01B301B20B000AFF01EE01ED074F074E00FD00FC03DC06640AB2003909F30C0A05A20102 +03DD06650AB3003A09F40C0B05A301030AE807E4024901B607680513FFFFFFFF0AE907E5024A01B707690514FFFFFFFF +065C03CF001A032C06E80988018B0901065D03D0001B032D06E90989018C09020AEC030C019B0B8704ED01BC01FC0807 +0AED030D019C0B8804EE01BD01FD0808037E007D0386063E095C000CFFFFFFFF037F007E0387063F095D000DFFFFFFFF +020200850B1508ED051B0BEC07E6072B0203FFFF0B16FFFF051CFFFF07E7FFFF02EC0A3A06B70478002D03E606400C5A +02ED0A3B06B80479002E03E706410C5B031404820A8202FC02260B2A045A0627000A09820B0D0B6A0678034CFFFFFFFF +0AC70BE308560B7605F20794099101400AC80BE408570B7705F307950992014103EC07500AA3063409C80BDA06090219 +03ED07510AA4063509C90BDB060A021A0C450A900B1F0B9507B5094701F7054F0C460A910B200B9607B6094801F80550 +06CC03A10A23048EFFFF0336003F0C4306CD03A203150483FFFF0A24FFFF0A1CFFFFFFFF0AF2084EFFFF0A9F051F0581 +0A8302FD02270B2BFFFF0AF3FFFFFFFF038D00C50884091EFFFFFFFF096C064E038E00C6045B0628FFFFFFFFFFFFFFFF +01DC018F0A7A08E902BE0C1604E707F401DD01900B0E0B6BFFFF02BFFFFFFFFFFFFFFFFF06FF0A6BFFFF05D206D8091C +000B09830679034DFFFF0700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF076C +FFFFFFFF0A660BF6FFFFFFFFFFFFFFFFFFFFFFFFFFFF09F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B32082C049604D5019107DE0AF70A860208057F0779031800EB0BB008B90488 +0B33082D049704D6019207DF0AF80A8702090580077A031900EC0BB108BA0489FFFFFFFF0905FFFFFFFF0906FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05E803AB00B00BEE07BC08A505750437092E0A77 +0B4B022C083004C801A602410B59078E02C00115056308F10A210BE609E706BF05E903AC00B10BEF07BD08A605760438 +092F0A780B4C022D083104C901A702420B5A078F02C10116056408F20A220BE709E806C0FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06B90402011F0BB2071F08B70554047E +08FD0B050B6C01E107CA04DD024302280C2A077B029705830447089D0A2E00B209E1077505F900330A01069909740045 +03D306D20907016A0BD206EC041E062C043D08500B5D012A030A0501058501D406BA040301200BB3072008B80555047F +08FE0B060B6D01E207CB04DE024402290C2B077C029805840448089E0A2F00B309E2077605FA00340A02069A09750046 +03D406D30908016B0BD306ED041F062D043E08510B5E012B030B0502058601D5003E003D0339069C0ABF00360A840839 +03AF0A85028503B00BE90286043C05F8FFFF023B0ACD0ACC07C4FFFFFFFF07C5FFFFFFFFFFFFFFFFFFFFFFFF02AE0A04 +02C902C8036703660969096809B309B203A403A302DF02DE0A3F0A3E04AF04AE088D088C0C210C2007F107F004F504F4 +0B1C0B1B0205020405BF05BE00EE00ED079E079D006F006E0940093F0024002306890688006300620BE20BE102840283 +072E072D01A901A8083B083A0615061407C707C60AEF0AEE052A052902A0029F0BC70BC603DF03DE04B104B009FE09FD +097309720353035209D509D40A6A0A6905CD05CC08BE08BD0B670B66045D045C023502340AC30AC201BF01BE077E077D +0122012108AC08ABFFFFFFFFFFFFFFFFFFFFFFFF038BFFFF0354038CFFFF0355FFFFFFFF07410740FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08AE0A61055704230767020D01CB0C5F04C7026201D104DA0B580B5604AD090E +088705B90BBD070C03C60108046D06A809AB0301096106F80369016909B906D50A980C1B040908DC0309011C0B62FFFF +FFFFFFFFFFFFFFFF0B0CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F201F10AD30AD20B520B510817081601570156070A070902E102E0053E053D0042004106A206A10617061606AA06A9 +0080007F07B207B1004400430C370C360532053107FD07FC0B940B930927092602EF02EE0B860B8501940193FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF055E055D02BB02BA09F009EF0AB50AB4 +082908280B3C0B3B0AFE0AFD01A301A207C107C000B900B809210920057A05790647064600380037FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000900080942094100D000CF +0761076000F700F6066F066E00710070FFFFFFFF0171017008C008BF0C150C14054C054B0A700A6F0ADF0ADE02D602D5 +0910090F0A060A050A290A2803C803C70C290C2808E208E1033D033C035D035C022F022E060005FF044C044B0A350A34 +0568056708FA08F9025C025B0ADB0ADA0114011306CF06CE0BD70BD607120711016F016E06C206C10311031007050704 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF081CFFFF051D081D0562051E0C3D0C3C05D505D40A630A620B900B8F08D208D1 +FFFFFFFF0058FFFF0C420059FFFFFFFF0BD50BD4026C026BFFFF082603E503E4085A085904E004DF043404330A8F0A8E +05590558029A0299089A0899013301320778077709E600C00A330BF8FFFF010A038107800C2C009D0645064400A900A8 +0756075501550154059D059C02B002AF088F088E047104700560082707D20C63018D07D3FFFF018EFFFFFFFFFFFFFFFF +031F031EFFFFFFFFFFFFFFFF033B033A0BB70BB6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A99FFFFFFFF0A9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C2DFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +046F062F039200CE08A2073009D9007703A6093C0AAD0BF3095906610363008D02140B250B1202F509FC072605AD014F +0C4B085C084305C5052804CD07D50A9C030F048B06AE03AA015908DE070E0A49004B049B093109BB004D0C6D0694033F +02520A5A0C330A8D0095029207B005910ABD0BA107F7078802010574050009540AAF02AC03E3074B0611021808910C09 +037B063A039A06EF02D4015109D3071A08C10BCA05FB01480B630846FFFF0B64FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF09F5FFFF04B4069D035A0016FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A6DFFFF02870BB80601015A09F106A307C205150C6607EA083C01520439053F +059A0279031604260B3F0B6E01B0081E065E0964FFFF0490FFFFFFFFFFFFFFFF0A6EFFFF02880BB90602015B09F206A4 +07C305160C6707EB083D0153043A0540059B027A031704270B400B6F01B1081F065F0965FFFF0491FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07C80B1D061807D6086D01460A570B700BC009FF03040A46052B0541015C0854 +04BA00F8096A069502F60052039D0797044302F8027D05960C56015E03B106D60B890B3404BC0805024F04C40C1C07FA +07C90B1E061907D7086E01470A580B710BC10A0003050A47052C0542015D085504BB00F9096B069602F70053039E0798 +044402F9027E05970C57015F03B206D70B8A0B3504BD0806025004C50C1D07FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B980B0107B80869025705C00BCC0A42 +0A71024B080E0C1004E3026F07DA04C2061E035E0715037001D80C00073802A402A90A5506B10420002B0312066A0978 +0AE007CC094A0AE2FFFFFFFFFFFFFFFF0B990B0207B9086A025805C10BCD0A430A72024C080F0C1104E4027007DB04C3 +061F035F0716037101D90C01073902A502AA0A5606B20421002C0313066B09790AE107CD094B0AE3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04A00924028B00AE0BAE07170271012309EB0C0CFFFF00C1099C064209A200C30848089201600C5805AE08C7032E041A +045E05DCFFFF02CD07DC0ADC052D04B806AF0AE4FFFF03E8074202F00925FFFF00AF04A10718028C01240BAF0C0D0272 +00C209EC0643FFFF00C4099D089309A30C59084908C80161041B05AF05DD032F02CE045F0ADDFFFF04B907DD0AE5052E +03E906B002F1FFFFFFFF0743FFFFFFFF04CA0517016201AA08630C6405C201FE04240706048006200B43086B03320B03 +0C6009B600D109B007A1036E00D9092A08F704A401110A1107A7093200830397056D021E036C05050B9C0B2804A2081A +08CB0A09058904AA075A025D01D600020A930322FFFF06D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04CB0518016301AB08640C6505C301FF04250707048106210B44086C03330B040C6109B700D209B107A2036F00DA092B +08F804A501120A1207A8093300840398056E021F036D05060B9D0B2904A3081B08CC0A0A058A04AB075B025E01D70003 +0A940323FFFF06D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F505CE0C68082001DA01C2052F04D1039F00E908CF07A90A2600FE049C08D501780BDD06F5090302FE037806700980 +0B22039508D30B7405A404920727040401F605CF0C69082101DB01C3053004D203A000EA08D007AA0A2700FF049D08D6 +01790BDE06F6090402FF0379067109810B23039608D40B7505A5049307280405FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0A4A008E034A0799044D027B0449065209BC007205B0074C037C00120AB8067604EF04B601AE0836075E0334020A0B5F +093D053B0BB4073A0A950B09054D08320A4B008F034B079A044E027C044A065309BD007305B1074D037D00130AB90677 +04F004B701AF0837075F0335020B0B60093E053C0BB5073B0A960B0A054E0833043106BB094C005E097A064804720027 +03A705EA000000C9089F07BA055205870006085207CE01B4048604E90B4F036A02930BC2059401870A44071B0A7E0C6E +0018043F043206BC094D005F097B06490473002803A805EB000100CA08A007BB055305880007085307CF01B5048704EA +0B50036B02940BC3059501880A45071C0A7F0C6F00190440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //5600 bytes -enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x1a0], [ 0x100, 0x2c0, 0x7b00], [ 0x3020100, 0x6050403, 0xa090807, 0xe0d0c0b, 0x3030303, 0x11100f03, 0x14141312, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x14141414, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xf000e, 0x10010, 0x120011, 0x10013, 0x150014, 0x170016, 0x190018, 0x1b001a, 0x1c0001, 0x1e001d, 0x1f001f, 0x1f0020, 0x1f001f, 0x1f001f, 0x1f001f, 0x220021, 0x1f0023, 0x250024, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x260001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10027, 0x290028, 0x2b002a, 0x2d002c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2e0001, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1001f, 0x30002f, 0x310001, 0x330032, 0x350034, 0x370036, 0x390038, 0x3a0001, 0x3c003b, 0x3e003d, 0x40003f, 0x420041, 0x440043, 0x460045, 0x480047, 0x4a0049, 0x4c004b, 0x1f004d, 0x4f004e, 0x510050, 0x10001, 0x520001, 0x540053, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x55001f, 0x10001, 0x10001, 0x1f0056, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x1f0057, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x590058, 0x1f001f, 0x5b005a, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x5c0001, 0x10001, 0x10001, 0x5e005d, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x5f001f, 0x600001, 0x1f0061, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f0062, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x640063, 0x660065, 0x1f001f, 0x1f001f, 0x1f001f, 0x67001f, 0x690068, 0x1f006a, 0x1f006b, 0x6c001f, 0x6e006d, 0x1f001f, 0x1f001f, 0x1f006f, 0x70001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10071, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x720001, 0x10073, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10074, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x750001, 0x10001, 0x1f0076, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x10001, 0x1f0077, 0x1f001f, 0x1f001f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x780001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x790001, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x1f001f, 0x0, 0x0, 0x7fffffe, 0x7fffffe, 0x0, 0x4200400, 0xff7fffff, 0xff7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffc3, 0x501f, 0x0, 0x0, 0x20, 0xbcdf0000, 0xffffd740, 0xfffffffb, 0xffffffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffc03, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff, 0x27fffff, 0xffffffff, 0x1ff, 0xbfff0000, 0xffff00b6, 0x787ff, 0x7ff0000, 0xffffffff, 0xfeffffff, 0xffffc000, 0xffffffff, 0xffffffff, 0x1fefffff, 0x9c00e1fe, 0xffff0000, 0xffffffff, 0xffffe000, 0xffffffff, 0xffffffff, 0x3ffff, 0xfffffc00, 0x43007ff, 0xfcffffff, 0x1fff, 0x1ffffff, 0xffff07ff, 0x7eff, 0xffffffff, 0xfff003ff, 0xffff03f8, 0xffffffff, 0xefffffff, 0xffe1dfff, 0xfffe000f, 0xfff99fef, 0xe3c5fdff, 0xb080599f, 0x1003000f, 0xfff987ee, 0xc36dfdff, 0x5e021987, 0x3f0000, 0xfffbbfee, 0xe3edfdff, 0x11bbf, 0x1e00000f, 0xfff99fee, 0xe3edfdff, 0xb0c0199f, 0x2000f, 0xd63dc7ec, 0xc3ffc718, 0x811dc7, 0x0, 0xfffddfff, 0xe3fffdff, 0x27601ddf, 0xf, 0xfffddfef, 0xe3effdff, 0x60601ddf, 0xe000f, 0xfffddfff, 0xe7ffffff, 0x80f05ddf, 0xfc00000f, 0xfc7fffee, 0x2ffbffff, 0xff5f807f, 0xc0000, 0xfffffffe, 0x7ffffff, 0x207f, 0x0, 0xfffff7d6, 0x3bffffaf, 0xf000205f, 0x0, 0x1, 0x0, 0xfffffeff, 0xfffe1fff, 0xfeffff0f, 0x1fffffff, 0x0, 0x0, 0xffffffff, 0xf97fffff, 0xffff0000, 0xffffffff, 0x3c00ffff, 0xffffffff, 0xffff20bf, 0xf7ffffff, 0xffffffff, 0xffffffff, 0x3d7f3dff, 0xffffffff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xffffffff, 0xff3dffff, 0xffffffff, 0x7ffffff, 0x0, 0xffff, 0xffffffff, 0xffffffff, 0x3f3fffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff9fff, 0x7fffffe, 0xffffffff, 0xffffffff, 0x1ffc7ff, 0x800fffff, 0xfffff, 0xfffff, 0xddfff, 0xffffffff, 0xffcfffff, 0x108001ff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0x3fffff, 0x7fffffff, 0x1ff0fff, 0xffff0000, 0x1f3fff, 0xffffffff, 0xffff0fff, 0x3ff, 0x0, 0xfffffff, 0xffffffff, 0x7fffffff, 0x1ffffe, 0x0, 0x80000080, 0x7001, 0x0, 0xffffffff, 0xffefffff, 0x1fef, 0x0, 0xffffffff, 0xfc00f3ff, 0xffffffff, 0x3ffbf, 0xffffffff, 0x7fffff, 0xfc00e000, 0x3fffffff, 0xffff01ff, 0xe7ffffff, 0x0, 0x46fde00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x1fff80, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0x5fdfffff, 0xfcf1fdc, 0x1fdc1fff, 0x0, 0x0, 0x0, 0x80020000, 0x1fff0000, 0x0, 0x0, 0x0, 0x3e2ffc84, 0xf3ffbd50, 0x43e0, 0xffffffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc00000, 0xffffffff, 0x3ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xc781f, 0xffffffff, 0xffff20bf, 0xffffffff, 0x80ff, 0x7fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0xffffffff, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0, 0x1f3e03fe, 0xfffffffe, 0xffffffff, 0xe07fffff, 0xfffffffe, 0xffffffff, 0xf7ffffff, 0xffffffe0, 0xfffeffff, 0xffffffff, 0xffffffff, 0x7fff, 0xffffffff, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff, 0x0, 0xffff0000, 0x3fffffff, 0xffff1fff, 0xc00, 0xffffffff, 0x8ff07fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0xff800000, 0xfffffffc, 0xffffffff, 0xffffffff, 0xfffff9ff, 0xffffffff, 0x3eb07ff, 0xfffc0000, 0xffffffbf, 0xff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0x2f, 0xe8fc0000, 0xfffffc00, 0xffff07ff, 0x7ffff, 0x1fffffff, 0xffffffff, 0xfff7ffff, 0x8000, 0x7c00ffff, 0xffffffff, 0x7fffff, 0x3fff, 0xfc7fffff, 0xffffffff, 0x7fffffff, 0x38000005, 0x3cffff, 0x7e7e7e, 0xffff7f7f, 0xf7ffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff000f, 0xfffff87f, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xe0f8007f, 0x5f7ffdff, 0xffffffdb, 0xffffffff, 0xffffffff, 0x3ffff, 0xfff80000, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xffffffff, 0xfffcffff, 0xffffffff, 0xff, 0xfff0000, 0x0, 0x0, 0x0, 0xffdf0000, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0x0, 0x7fffffe, 0x7fffffe, 0xffffffc0, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x0, 0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffff, 0x0, 0x0, 0xffffffff, 0x1fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1fffffff, 0xffffffff, 0x1ffff, 0x0, 0xffffffff, 0xffffe000, 0xffff07ff, 0x7ffffff, 0x3fffffff, 0xffffffff, 0x3eff0f, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff0000, 0xff0fffff, 0xfffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xf7ff000f, 0xffb7f7ff, 0x1bfbfffb, 0x0, 0x0, 0xffffffff, 0x7fffff, 0x3fffff, 0xff, 0xffffffbf, 0x7fdffff, 0x0, 0x0, 0xfffffd3f, 0x91bfffff, 0x3fffff, 0x7fffff, 0x7fffffff, 0x0, 0x0, 0x37ffff, 0x3fffff, 0x3ffffff, 0x0, 0x0, 0xffffffff, 0xc0ffffff, 0x0, 0x0, 0xfeeff06f, 0x3fffff, 0x0, 0x1fffffff, 0x1fffffff, 0x0, 0xfffffeff, 0x1f, 0xffffffff, 0x3fffff, 0x3fffff, 0x7ffff, 0x3ffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ff, 0x0, 0xffffffff, 0x7ffff, 0xffffffff, 0x7ffff, 0xffffffff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x31bff, 0x0, 0x0, 0x1fffffff, 0xffff0080, 0x3f, 0xffff0000, 0x3, 0xffff0000, 0x1f, 0x7fffff, 0xffffffff, 0xffffffff, 0x3f, 0x3e0000, 0xffffffff, 0x1ffffff, 0xffff0004, 0x1ff, 0xffffffff, 0x7ffff, 0xffff00f0, 0x47ffff, 0xffffffff, 0xffffffff, 0x1400c01e, 0x0, 0xfffbffff, 0xc09fffff, 0x3, 0x0, 0xbfffbd7f, 0xffff01ff, 0xffffffff, 0x1ff, 0xfff99fef, 0xe3edfdff, 0xe081199f, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x800007bb, 0x3, 0xffffffff, 0xffffffff, 0xb3, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x7f3fffff, 0x3f000000, 0x0, 0xffffffff, 0x7fffffff, 0x11, 0x0, 0xffffffff, 0x13fffff, 0x0, 0x0, 0xe7ffffff, 0x7ff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x80000000, 0xff6ff27f, 0x99bfffff, 0x7, 0x0, 0x0, 0xfffffcff, 0xfcffffff, 0x1a, 0xffffffff, 0x7fe7ffff, 0xffff0000, 0xffffffff, 0x20ffffff, 0xffff0000, 0xffffffff, 0x1ffffff, 0xfffffdff, 0x7f7fffff, 0x1, 0xfffc0000, 0xfffcffff, 0x7ffeff, 0x0, 0x0, 0xfffffb7f, 0xb47fffff, 0xcb, 0xfffffdbf, 0x17b7fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffff, 0xfffdffff, 0xc7ffffff, 0x1, 0x0, 0x0, 0x10000, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0x1ffff, 0xffffffff, 0xffff, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x7fffffff, 0xffff0000, 0xffffffff, 0x7fffffff, 0xffff0000, 0x3fff, 0xffffffff, 0xffff, 0xf, 0xe0fffff8, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff87ff, 0xffffffff, 0xffff80ff, 0x0, 0x0, 0x3000b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef0000, 0xffffffff, 0x40007, 0x270000, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff07ff, 0x43ff01ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xf7fffffd, 0xf7ffffff, 0xffdfffff, 0xffdfffff, 0xffff7fff, 0xffff7fff, 0xfffffdff, 0xfffffdff, 0xff7, 0x0, 0x7fffffff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf9ffff7f, 0xffff07db, 0xffffffff, 0x3fff, 0x8000, 0x0, 0x0, 0x0, 0xffffffff, 0x3f801fff, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3fff, 0xffffffff, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff6f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f, 0x0, 0xffffffff, 0xffffffff, 0x88f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x0, 0x0, 0xffff0000, 0xffff03ff, 0xffff03ff, 0x3ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0003, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0001, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000001A0", +cast(immutable size_t[]) x" +00000100000002C000007B00", +cast(immutable size_t[]) x" +03020100060504030A0908070E0D0C0B0303030311100F03141413121414141414141414141414141414141414141414 +141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414 +141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000030002000500040007000600090008000B000A000D000C000F000E +000100100012001100010013001500140017001600190018001B001A001C0001001E001D001F001F001F0020001F001F +001F001F001F001F00220021001F002300250024001F001F000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001002600010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001002700290028 +002B002A002D002C00010001000100010001000100010001000100010001000100010001000100010001000100010001 +0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001002E0001 +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F0001001F0030002F0031000100330032003500340037003600390038003A0001 +003C003B003E003D0040003F00420041004400430046004500480047004A0049004C004B001F004D004F004E00510050 +000100010052000100540053001F001F001F001F001F001F001F001F0055001F0001000100010001001F0056001F001F +001F001F001F001F001F001F001F001F001F001F001F001F00010001001F0057001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +0001000100590058001F001F005B005A0001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001005C00010001000100010001005E005D001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F005F001F +00600001001F0061001F001F001F001F001F001F001F001F001F0062001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F0064006300660065001F001F001F001F001F001F0067001F +00690068001F006A001F006B006C001F006E006D001F001F001F001F001F006F0070001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F0001000100010001000100010001007100010001000100010001000100010001 +000100010001000100010001007200010001007300010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100740001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001000100010075000100010001001F0076001F001F001F001F001F001F001F001F +00010001001F0077001F001F001F001F0001000100010001000100010001000100010001000100010001000100010001 +00010001007800010001000100010001000100010001000100010001000100010001000100790001001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F000000000000000007FFFFFE07FFFFFE +0000000004200400FF7FFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFC30000501F000000000000000000000020BCDF0000 +FFFFD740FFFFFFFBFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC03FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFEFFFF027FFFFFFFFFFFFF000001FFBFFF0000FFFF00B6000787FF07FF0000FFFFFFFFFEFFFFFFFFFFC000 +FFFFFFFFFFFFFFFF1FEFFFFF9C00E1FEFFFF0000FFFFFFFFFFFFE000FFFFFFFFFFFFFFFF0003FFFFFFFFFC00043007FF +FCFFFFFF00001FFF01FFFFFFFFFF07FF00007EFFFFFFFFFFFFF003FFFFFF03F8FFFFFFFFEFFFFFFFFFE1DFFFFFFE000F +FFF99FEFE3C5FDFFB080599F1003000FFFF987EEC36DFDFF5E021987003F0000FFFBBFEEE3EDFDFF00011BBF1E00000F +FFF99FEEE3EDFDFFB0C0199F0002000FD63DC7ECC3FFC71800811DC700000000FFFDDFFFE3FFFDFF27601DDF0000000F +FFFDDFEFE3EFFDFF60601DDF000E000FFFFDDFFFE7FFFFFF80F05DDFFC00000FFC7FFFEE2FFBFFFFFF5F807F000C0000 +FFFFFFFE07FFFFFF0000207F00000000FFFFF7D63BFFFFAFF000205F000000000000000100000000FFFFFEFFFFFE1FFF +FEFFFF0F1FFFFFFF0000000000000000FFFFFFFFF97FFFFFFFFF0000FFFFFFFF3C00FFFFFFFFFFFFFFFF20BFF7FFFFFF +FFFFFFFFFFFFFFFF3D7F3DFFFFFFFFFFFFFF3DFF7F3DFFFFFF7FFF3DFFFFFFFFFF3DFFFFFFFFFFFF07FFFFFF00000000 +0000FFFFFFFFFFFFFFFFFFFF3F3FFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFF07FFFFFEFFFFFFFFFFFFFFFF01FFC7FF800FFFFF000FFFFF000FFFFF000DDFFF +FFFFFFFFFFCFFFFF108001FF0000000000000000FFFFFFFFFFFFFFFF01FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFF +7FFFFFFF01FF0FFFFFFF0000001F3FFFFFFFFFFFFFFF0FFF000003FF000000000FFFFFFFFFFFFFFF7FFFFFFF001FFFFE +00000000800000800000700100000000FFFFFFFFFFEFFFFF00001FEF00000000FFFFFFFFFC00F3FFFFFFFFFF0003FFBF +FFFFFFFF007FFFFFFC00E0003FFFFFFFFFFF01FFE7FFFFFF00000000046FDE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00000000001FFF803F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFFFFFFFFFF5FDFFFFF0FCF1FDC1FDC1FFF +000000000000000000000000800200001FFF00000000000000000000000000003E2FFC84F3FFBD50000043E0FFFFFFFF +000001FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000FFC00000FFFFFFFF000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF000C781FFFFFFFFFFFFF20BFFFFFFFFF000080FF007FFFFF7F7F7F7F7F7F7F7FFFFFFFFF +0000000000008000000000000000000000000000000000000000000000000000000000E01F3E03FEFFFFFFFEFFFFFFFF +E07FFFFFFFFFFFFEFFFFFFFFF7FFFFFFFFFFFFE0FFFEFFFFFFFFFFFFFFFFFFFF00007FFFFFFFFFFF00000000FFFF0000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +00001FFF00000000FFFF00003FFFFFFFFFFF1FFF00000C00FFFFFFFF8FF07FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF +FF800000FFFFFFFCFFFFFFFFFFFFFFFFFFFFF9FFFFFFFFFF03EB07FFFFFC0000FFFFFFBF000000FFFFFFFFFF000FFFFF +FFFFFFFFFFFFFFFF0000002FE8FC0000FFFFFC00FFFF07FF0007FFFF1FFFFFFFFFFFFFFFFFF7FFFF000080007C00FFFF +FFFFFFFF007FFFFF00003FFFFC7FFFFFFFFFFFFF7FFFFFFF38000005003CFFFF007E7E7EFFFF7F7FF7FFFFFFFFFF03FF +FFFFFFFFFFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFF87F0FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000E0F8007F5F7FFDFFFFFFFFDBFFFFFFFF +FFFFFFFF0003FFFFFFF80000FFFFFFFFFFFFFFFF3FFFFFFFFFFF0000FFFFFFFFFFFCFFFFFFFFFFFF000000FF0FFF0000 +000000000000000000000000FFDF0000FFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFF0000000007FFFFFE07FFFFFEFFFFFFC0 +FFFFFFFF7FFFFFFF1CFCFCFC00000000FFFFEFFFB7FFFF7F3FFF3FFF00000000FFFFFFFFFFFFFFFFFFFFFFFF07FFFFFF +0000000000000000FFFFFFFF001FFFFF0000000000000000000000000000000000000000000000000000000000000000 +1FFFFFFFFFFFFFFF0001FFFF00000000FFFFFFFFFFFFE000FFFF07FF07FFFFFF3FFFFFFFFFFFFFFF003EFF0F00000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFF0000FF0FFFFF0FFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF7FF000F +FFB7F7FF1BFBFFFB0000000000000000FFFFFFFF007FFFFF003FFFFF000000FFFFFFFFBF07FDFFFF0000000000000000 +FFFFFD3F91BFFFFF003FFFFF007FFFFF7FFFFFFF00000000000000000037FFFF003FFFFF03FFFFFF0000000000000000 +FFFFFFFFC0FFFFFF0000000000000000FEEFF06F003FFFFF000000001FFFFFFF1FFFFFFF00000000FFFFFEFF0000001F +FFFFFFFF003FFFFF003FFFFF0007FFFF0003FFFF000000000000000000000000FFFFFFFFFFFFFFFF000001FF00000000 +FFFFFFFF0007FFFFFFFFFFFF0007FFFFFFFFFFFF000000FF000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFF00031BFF00000000000000001FFFFFFFFFFF00800000003FFFFF0000 +00000003FFFF00000000001F007FFFFFFFFFFFFFFFFFFFFF0000003F003E0000FFFFFFFF01FFFFFFFFFF0004000001FF +FFFFFFFF0007FFFFFFFF00F00047FFFFFFFFFFFFFFFFFFFF1400C01E00000000FFFBFFFFC09FFFFF0000000300000000 +BFFFBD7FFFFF01FFFFFFFFFF000001FFFFF99FEFE3EDFDFFE081199F0000000F00000000000000000000000000000000 +FFFFFFFFFFFFFFFF800007BB00000003FFFFFFFFFFFFFFFF000000B30000000000000000000000000000000000000000 +FFFFFFFF7F3FFFFF3F00000000000000FFFFFFFF7FFFFFFF0000001100000000FFFFFFFF013FFFFF0000000000000000 +E7FFFFFF000007FF0000007F0000000000000000000000000000000000000000FFFFFFFF01FFFFFF0000000000000000 +00000000FFFFFFFFFFFFFFFF80000000FF6FF27F99BFFFFF000000070000000000000000FFFFFCFFFCFFFFFF0000001A +FFFFFFFF7FE7FFFFFFFF0000FFFFFFFF20FFFFFFFFFF0000FFFFFFFF01FFFFFFFFFFFDFF7F7FFFFF00000001FFFC0000 +FFFCFFFF007FFEFF0000000000000000FFFFFB7FB47FFFFF000000CBFFFFFDBF017B7FFF000000000000000000000000 +00000000000000000000000000000000000000000000000000000000007FFFFFFFFDFFFFC7FFFFFF0000000100000000 +00000000000100000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFF000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFF00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000 +0000000000000000000000000000000000000000000000000000000000000000FFFF0000FFFFFFFFFFFFFFFF0001FFFF +FFFFFFFF0000FFFF0000007E0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000007F00000000 +00000000000000000000000000000000FFFFFFFF01FFFFFF7FFFFFFFFFFF0000FFFFFFFF7FFFFFFFFFFF000000003FFF +FFFFFFFF0000FFFF0000000FE0FFFFF80000FFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFF80FF00000000000000000003000B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF003FFFFF00000000000001FF00000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000006FEF0000FFFFFFFF0004000700270000FFFF00F0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF1FFF07FF43FF01FF000000000000000000000000FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFF +DFFFFFFFEBFFDE64FFFFFFEFFFFFFFFFDFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FF7FFFFFDF7FFFFFFFFDFFFFFFFDFFFFFFFFF7FFFFFFF7FFF +FFFFFDFFFFFFFDFF00000FF7000000007FFFFFFF000007E0000000000000000000000000000000000000000000000000 +F9FFFF7FFFFF07DBFFFFFFFF00003FFF00008000000000000000000000000000FFFFFFFF3F801FFF0000400000000000 +0000000000000000000000000000000000000000000000000000000000000000FFFF000000003FFFFFFFFFFF00000FFF +000000000000000000000000000000000000000000000000FFFF000000000FFF00000000000000000000000000000000 +0000000000000000000000007FFF6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000001F00000000 +FFFFFFFFFFFFFFFF0000088F0000000000000000000000000000000000000000FFFFFFEF0AF7FE96AA96EA845EF7F796 +0FFFFBFF0FFFFBEE000000000000000000000000FFFF0000FFFF03FFFFFF03FF000003FF000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF03FFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFF3FFFFFFF0000000000000000000000000000000000000000 +3FFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF07FFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //3392 bytes -enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x110], [ 0x100, 0x1a0, 0x4800], [ 0x2020100, 0x4020302, 0x7020605, 0xa090802, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x202020b, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xe, 0xf0000, 0x0, 0x100000, 0x120011, 0x140013, 0x160015, 0x0, 0x17, 0x0, 0x0, 0x0, 0x0, 0x0, 0x190018, 0x0, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0x1d001c, 0x1f001e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200000, 0x0, 0x21, 0x220000, 0x240023, 0x0, 0x0, 0x0, 0x25, 0x260000, 0x280027, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0x320031, 0x33, 0x350034, 0x370036, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0039, 0x0, 0x3b0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3d0000, 0x3e0000, 0x3f, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x3a0041, 0x42, 0x43, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x460000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xbfffffff, 0xb6, 0x0, 0x7ff0000, 0x0, 0xfffff800, 0x10000, 0x0, 0x0, 0x9fc00000, 0x3d9f, 0x20000, 0xffff0000, 0x7ff, 0x0, 0x0, 0x1ffc0, 0x0, 0x200ff800, 0xfbc00000, 0x3eef, 0xe000000, 0x0, 0xff000000, 0x0, 0xfffffc00, 0xfffffffb, 0xf, 0xdc000000, 0xfeffff, 0xc, 0xe, 0xd0000000, 0x80399f, 0x4000000c, 0xe, 0xd0000000, 0x23987, 0x230000, 0xe, 0xd0000000, 0x3bbf, 0xfc00000c, 0xe, 0xd0000000, 0xe0399f, 0xc, 0x4, 0xc0000000, 0x803dc7, 0x0, 0x1f, 0xd0000000, 0x603ddf, 0xc, 0xe, 0xd0000000, 0x603ddf, 0x8000c, 0xf, 0xd8000000, 0x803ddf, 0xc, 0xe, 0x0, 0xff5f8400, 0xc0000, 0x0, 0x7f20000, 0x7f80, 0x0, 0x0, 0x1ff20000, 0x7f00, 0x0, 0x3000000, 0xc2a00000, 0x0, 0xfffe0000, 0xfeffe0df, 0x1fffffff, 0x40, 0x0, 0x0, 0x7ffff800, 0xc3c00000, 0x1e3f9d, 0x3c00bffc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c0000, 0x1c0000, 0xc0000, 0xc0000, 0x0, 0xfff00000, 0x200fffff, 0x0, 0xb800, 0x0, 0x0, 0x0, 0x60, 0x200, 0x0, 0x0, 0x0, 0xfff0fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf800000, 0x0, 0x7fe00000, 0x9fffffff, 0x0, 0xffff0000, 0x7fff, 0x0, 0x1f, 0xfff00000, 0x1f, 0xff800, 0x7, 0x3ffe, 0x0, 0xfffc0, 0x0, 0xfffff0, 0x0, 0x0, 0x0, 0x0, 0xfff70000, 0x39021ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x1ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0xfc00, 0x0, 0x0, 0x6000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff78000, 0xc0000000, 0x0, 0x0, 0x30000, 0x844, 0x10f8, 0x0, 0x0, 0x3, 0xfff00000, 0x3f, 0x8003ffff, 0x0, 0x3fc0, 0xfff80, 0x0, 0xf, 0xfff80000, 0x1, 0x20, 0x0, 0x7ffe00, 0x3008, 0x38000000, 0x0, 0xc19d0000, 0x2, 0x60f800, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37f8, 0x40000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x7c00000, 0x0, 0x0, 0x0, 0x0, 0xf06e, 0x87000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60, 0x0, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1800, 0x0, 0xe0000000, 0x0, 0x0, 0x1ffc0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x7, 0xff000000, 0x7f, 0x80190000, 0x7, 0x7ff0000, 0x4, 0x0, 0x7, 0x1fff80, 0x60, 0x80000, 0x7, 0xfff80000, 0xde01, 0x0, 0x0, 0x40fff000, 0x2, 0x0, 0x0, 0x0, 0x80000000, 0x7ff, 0xf, 0xd8000000, 0x80399f, 0x1f1fcc, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffe00000, 0x4000007f, 0x0, 0x0, 0xffff0000, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff3f8000, 0x30000001, 0x0, 0x0, 0xffff0000, 0x1, 0x0, 0x0, 0xfff800, 0x0, 0x0, 0xe0000000, 0xfff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79bf0000, 0xd, 0x0, 0x0, 0x0, 0xfcfe0000, 0x11, 0x7fe, 0x7bf80000, 0xffe0080, 0x0, 0x3fffc00, 0x0, 0x0, 0x0, 0x0, 0xff7f8000, 0x0, 0x0, 0xfffc0000, 0x7ffeff, 0x0, 0x0, 0x0, 0xb47e0000, 0xbf, 0x0, 0xfb7c00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x780000, 0xb, 0xc7f00000, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fff81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f0000, 0x0, 0x7f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe8000, 0xffffffff, 0x780ff, 0x0, 0x0, 0x30010, 0x0, 0x0, 0x0, 0x0, 0x60000000, 0x0, 0x0, 0x0, 0xffffffff, 0xffff3fff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf807e3e0, 0xfe7, 0x3c00, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xf87fffff, 0xffffffff, 0x201fff, 0xf8000010, 0xfffe, 0x0, 0x0, 0xf9ffff7f, 0x7db, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x0, 0xf000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0x0, 0x0, 0x7f0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000110", +cast(immutable size_t[]) x" +00000100000001A000004800", +cast(immutable size_t[]) x" +0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020B02020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000001000000030002000500040007000600090008000B000A000D000C +0000000E000F000000000000001000000012001100140013001600150000000000000017000000000000000000000000 +000000000000000000190018000000000000001A00000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000001B001D001C001F001E0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000021 +0022000000240023000000000000000000000000000000250026000000280027002A0029002C002B002E002D0030002F +003200310000003300350034003700360000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000038000000000000000000000000000000000000000000000000000000000000000000000000 +00000000003A003900000000003B00000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000003C0000000000000000000000000000000000000000000000000000000000000000003D0000 +003E00000000003F000000000000000000000000000000400000000000000000003A0041000000420000004300000000 +004500440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +004600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00000000000000000000000000000000 +00000000000000000000000000000000000003F800000000000000000000000000000000000000000000000000000000 +FFFE0000BFFFFFFF000000B60000000007FF000000000000FFFFF8000001000000000000000000009FC0000000003D9F +00020000FFFF0000000007FF00000000000000000001FFC000000000200FF800FBC0000000003EEF0E00000000000000 +FF00000000000000FFFFFC00FFFFFFFB0000000FDC00000000FEFFFF0000000C0000000ED00000000080399F4000000C +0000000ED000000000023987002300000000000ED000000000003BBFFC00000C0000000ED000000000E0399F0000000C +00000004C000000000803DC7000000000000001FD000000000603DDF0000000C0000000ED000000000603DDF0008000C +0000000FD800000000803DDF0000000C0000000E00000000FF5F8400000C00000000000007F2000000007F8000000000 +000000001FF2000000007F000000000003000000C2A0000000000000FFFE0000FEFFE0DF1FFFFFFF0000004000000000 +000000007FFFF800C3C00000001E3F9D3C00BFFC0000000000000000000000000000000000000000E000000000000000 +00000000000000000000000000000000003C0000001C0000000C0000000C000000000000FFF00000200FFFFF00000000 +0000B80000000000000000000000000000000060000002000000000000000000000000000FFF0FFF0000000000000000 +000000000000000000000000000000000F800000000000007FE000009FFFFFFF00000000FFFF000000007FFF00000000 +0000001FFFF000000000001F000FF8000000000700003FFE00000000000FFFC00000000000FFFFF00000000000000000 +0000000000000000FFF70000039021FF000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000FFFF00000001FFFF00000000000000000000000000000000 +0000000000000000000000000003800000000000000000000000000080000000000000000000000000000000FFFFFFFF +000000000000FC000000000000000000060000000000000000000000000000000000000000000000000000003FF78000 +C000000000000000000000000003000000000844000010F8000000000000000000000003FFF000000000003F8003FFFF +0000000000003FC0000FFF80000000000000000FFFF80000000000010000002000000000007FFE000000300838000000 +00000000C19D0000000000020060F80000000000000000000000000000000000000000000000000000000000000037F8 +40000000000000000000000000000000000000000000000000000000000000000000FFFF0000FFFF0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000 +000000000000000000000000000000000000000000000000000000000000000100000000000000000000000007C00000 +000000000000000000000000000000000000F06E87000000000000000000000000000000000000000000000000000060 +00000000000000F000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000180000000000E000000000000000000000000001FFC0000000000000003C000000000000000000000000 +00000007FF0000000000007F801900000000000707FF0000000000040000000000000007001FFF800000006000080000 +00000007FFF800000000DE01000000000000000040FFF0000000000200000000000000000000000080000000000007FF +0000000FD80000000080399F001F1FCC0000000000000000000000000000000000000000FFE000004000007F00000000 +00000000FFFF00000000000F000000000000000000000000000000000000000000000000FF3F80003000000100000000 +00000000FFFF000000000001000000000000000000FFF8000000000000000000E000000000000FFF0000000000000000 +000000000000000000000000000000000000000007FFF000000000000000000000000000000000000000000000000000 +0000000079BF00000000000D000000000000000000000000FCFE000000000011000007FE7BF800000FFE008000000000 +03FFFC0000000000000000000000000000000000FF7F80000000000000000000FFFC0000007FFEFF0000000000000000 +00000000B47E0000000000BF0000000000FB7C0000000000000000000000000000000000000000000000000000000000 +000000000000000000000000007800000000000BC7F00000000000070000000000000000000000000000000000000000 +0000000000000000003FFF81000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000001F000000000000007F0000000000000000000000000000000000000000000000000000 +0000000000000000FFFE8000FFFFFFFF000780FF00000000000000000003001000000000000000000000000000000000 +60000000000000000000000000000000FFFFFFFFFFFF3FFF0000007F0000000000000000000000000000000000000000 +000000000000000000000000F807E3E000000FE700003C00000000000000000000000000000000000000001C00000000 +00000000000000000000000000000000FFFFFFFFF87FFFFFFFFFFFFF00201FFFF80000100000FFFE0000000000000000 +F9FFFF7F000007DB00000000000000000000800000000000000000000000000000000000000000000000000000000000 +0000000000004000000000000000F000000000000000000000000000000000000000000000000000000000000000F000 +000000000000000000000000000000000000000000000000007F0000000000000000000000000000000007F000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //2848 bytes -enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)([ 0x0, 0x40, 0x1a0], [ 0x100, 0x2c0, 0x2500], [ 0x2020100, 0x4020302, 0x7020605, 0x9080202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x40003, 0x50002, 0x20002, 0x70006, 0x60006, 0x90008, 0x6000a, 0x6000b, 0xc000c, 0x2000d, 0xe0005, 0x20002, 0x20002, 0x2000f, 0x20002, 0x20002, 0x100002, 0x110002, 0x2000e, 0x130012, 0x140002, 0xc, 0x20015, 0x20002, 0x20002, 0x20002, 0x170016, 0x190018, 0x20002, 0x20002, 0x1b001a, 0x20002, 0x20002, 0x1d001c, 0x20002, 0x20002, 0x20002, 0x20002, 0x1e0002, 0x20002, 0x20002, 0x20002, 0x2001f, 0x200002, 0x220021, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x60023, 0x20002, 0xc0024, 0x250017, 0x2000c, 0x40002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x2000e, 0x20002, 0x270026, 0x280002, 0x2a0029, 0x230002, 0x20002, 0x20002, 0x20002, 0x2c002b, 0x2e002d, 0x30002f, 0x320031, 0x330002, 0x20000, 0x20034, 0x360035, 0x40037, 0x390038, 0x40002, 0x20002, 0xc000c, 0x20002, 0x5000c, 0x2003a, 0x3b0002, 0x2000c, 0x20002, 0x20002, 0x2003c, 0x23000c, 0x20002, 0x3d000c, 0x20002, 0x20002, 0x20002, 0x20002, 0x2003e, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x50003, 0x2003f, 0x20002, 0x20002, 0x400002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x410002, 0x20042, 0x20002, 0x20002, 0x20002, 0x430002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20005, 0x40002, 0x20002, 0x40002, 0x20002, 0x20002, 0x20002, 0x440002, 0x2000c, 0x20002, 0x20002, 0x460045, 0x20047, 0x20002, 0x20002, 0x20002, 0x20048, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x40002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x20002, 0x0, 0x3ff0000, 0x0, 0x0, 0x0, 0x720c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff, 0x0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0xffc0, 0x0, 0x0, 0x0, 0x3f0ffc0, 0x0, 0x0, 0x0, 0xfcffc0, 0x0, 0x0, 0x0, 0x7ffc0, 0x0, 0x0, 0x0, 0x7f00ffc0, 0x0, 0x0, 0x7f000000, 0x1ffffc0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0xfffff, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ffffe00, 0x0, 0x0, 0x0, 0x1c000, 0x0, 0x0, 0x0, 0x3ff03ff, 0x0, 0x0, 0xffc0, 0x0, 0x0, 0x0, 0x7ff0000, 0x0, 0x3ff03ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff03ff, 0x0, 0x0, 0x0, 0x0, 0x3f10000, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0x3e7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xfffffff, 0x0, 0x0, 0xfffffc00, 0x0, 0x0, 0x0, 0xffc00000, 0xfffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000, 0x80, 0x70003fe, 0x0, 0x0, 0x3c0000, 0x0, 0x0, 0x0, 0x0, 0x3ff, 0xfffeff00, 0x0, 0x3ff, 0xfffe0000, 0x0, 0x0, 0x0, 0x3ff, 0x0, 0x0, 0x0, 0x3f0000, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0x3ff0000, 0xffffff80, 0xfffff, 0xffffffff, 0x1ffffff, 0xc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffe, 0x0, 0xf, 0x402, 0x0, 0x0, 0x0, 0x3e0000, 0x0, 0x0, 0x0, 0xff000000, 0xfe000000, 0x0, 0xff80, 0x0, 0xf8000000, 0xfc00000, 0x0, 0x0, 0x0, 0x0, 0x30000000, 0xfffcffff, 0xffffffff, 0x0, 0x0, 0x1ff, 0x60000000, 0xe0000000, 0x0, 0x0, 0xf800, 0x0, 0x0, 0xff000000, 0xff000000, 0x0, 0xfe00, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc000000, 0x0, 0x0, 0x0, 0x7fffffff, 0xe0000000, 0x7f, 0x1e0000, 0x0, 0x0, 0x0, 0xfe0, 0x0, 0x0, 0x0, 0xfffc0000, 0xffff, 0x0, 0xffc00000, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0x1ffffe, 0x0, 0xfff0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7ffff, 0x0, 0x0, 0xffff0000, 0x1fff, 0x0, 0x0, 0x1fffff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fff, 0x0, 0x0, 0xfbff0000, 0x3, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffff, 0xfffff, 0x0, 0x0, 0x0, 0x1ffffff, 0x0, 0x0, 0xffffc000, 0xffffffff, 0x0, 0x0, 0xff80, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xffffffff, 0x1eefff, 0x0, 0x0, 0xfffffffe, 0x3fffbfff, 0x0, 0x0, 0x1fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000]); +enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(cast(immutable size_t[]) x" +0000000000000040000001A0", +cast(immutable size_t[]) x" +00000100000002C000002500", +cast(immutable size_t[]) x" +020201000402030207020605090802020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000020002000200020002000200020002000200020004000300050002 +000200020007000600060006000900080006000A0006000B000C000C0002000D000E000500020002000200020002000F +000200020002000200100002001100020002000E00130012001400020000000C00020015000200020002000200020002 +00170016001900180002000200020002001B001A0002000200020002001D001C00020002000200020002000200020002 +001E00020002000200020002000200020002001F00200002002200210002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020006002300020002 +000C0024002500170002000C000400020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000E000200020027002600280002002A0029 +00230002000200020002000200020002002C002B002E002D0030002F0032003100330002000200000002003400360035 +00040037003900380004000200020002000C000C000200020005000C0002003A003B00020002000C0002000200020002 +0002003C0023000C00020002003D000C000200020002000200020002000200020002003E000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +00020002000200020002000200020002000200020002000200020002000200020002000200020002000500030002003F +000200020002000200400002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200410002000200420002000200020002000200020043000200020002000200020002000200020002 +000200020002000200020002000200020002000200020005000400020002000200040002000200020002000200020002 +004400020002000C00020002000200020046004500020047000200020002000200020002000200480002000200020002 +000200020002000200020002000200020002000200020002000200020004000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +00020002000200020002000200020002000200020002000200020002000200020000000003FF00000000000000000000 +00000000720C0000000000000000000000000000000000000000000000000000000000000000000000000000000003FF +00000000000000000000000003FF00000000000000000000000003FF000000000000000000000000000000000000FFC0 +00000000000000000000000003F0FFC000000000000000000000000000FCFFC00000000000000000000000000007FFC0 +0000000000000000000000007F00FFC000000000000000007F00000001FFFFC0000000000000000003FF000000000000 +00000000000FFFFF000000000000000003FF00000000000000000000000000000000000000000000000000001FFFFE00 +0000000000000000000000000001C00000000000000000000000000003FF03FF00000000000000000000FFC000000000 +000000000000000007FF00000000000003FF03FF000000000000000000000000000000000000000003FF03FF00000000 +00000000000000000000000003F10000000003FF0000000000000000000000000000000000000000FFFF0000FFFFFFFF +000003E7000000000000000000000000000000000000000000000000FFFFFFFF0FFFFFFF0000000000000000FFFFFC00 +000000000000000000000000FFC00000000FFFFF00000000000000000000000000000000000000000000000020000000 +00000080070003FE0000000000000000003C000000000000000000000000000000000000000003FFFFFEFF0000000000 +000003FFFFFE0000000000000000000000000000000003FF000000000000000000000000003F00000000000000000000 +000000000000000003FF000003FF0000FFFFFF80000FFFFFFFFFFFFF01FFFFFF00000C00000000000000000000000000 +0000000000000000000000000FFFFFFE000000000000000F00000402000000000000000000000000003E000000000000 +0000000000000000FF000000FE000000000000000000FF8000000000F80000000FC00000000000000000000000000000 +0000000030000000FFFCFFFFFFFFFFFF0000000000000000000001FF60000000E000000000000000000000000000F800 +0000000000000000FF000000FF000000000000000000FE000000000000000000000000000000000000000000FC000000 +0000000000000000000000007FFFFFFFE00000000000007F001E000000000000000000000000000000000FE000000000 +0000000000000000FFFC00000000FFFF00000000FFC000000000000000000000000000000000000003FF0000001FFFFE +000000000FFF000000000000000000000000000000000000000000000007FFFF0000000000000000FFFF000000001FFF +0000000000000000001FFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF00007FFF0000000000000000FBFF000000000003 +007FFFFF0000000000000000000000000000000000000000000FFFFF000FFFFF00000000000000000000000001FFFFFF +0000000000000000FFFFC000FFFFFFFF00000000000000000000FF8000000000000000000000000000000000FFFE0000 +FFFFFFFF001EEFFF0000000000000000FFFFFFFE3FFFBFFF000000000000000000001FFF000000000000000000000000 +00000000000000000000000003FF0000", +); //3360 bytes -enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x100], [ 0x100, 0x180, 0x4900], [ 0x2020100, 0x4020302, 0x7020605, 0xa090802, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x20001, 0x30001, 0x50004, 0x70006, 0x10008, 0xa0009, 0xc000b, 0x1000d, 0xe0001, 0x1000f, 0x110010, 0x130012, 0x150014, 0x10016, 0x10001, 0x10017, 0x180001, 0x10001, 0x190001, 0x1a0001, 0x10001, 0x1c001b, 0x1001d, 0x1001e, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x1001f, 0x10020, 0x220021, 0x240023, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x250001, 0x270026, 0x280001, 0x290001, 0x2a0001, 0x10001, 0x2c002b, 0x2e002d, 0x10001, 0x30002f, 0x320031, 0x10033, 0x350034, 0x370036, 0x390038, 0x3b003a, 0x1003c, 0x3e003d, 0x10001, 0x10001, 0x1003f, 0x10001, 0x10001, 0x10001, 0x10001, 0x400001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x420041, 0x10001, 0x440043, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10045, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10046, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x470001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x0, 0x8c00f7ee, 0xb8000001, 0x28000000, 0x0, 0x88c00882, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfc000000, 0x0, 0x600, 0x40000000, 0x49, 0x180000, 0xe8003600, 0x0, 0x0, 0x3c00, 0x0, 0x0, 0x100000, 0x0, 0x3fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3800000, 0x0, 0x7fff0000, 0x40000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10030, 0x0, 0x0, 0x0, 0x20000000, 0x0, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x800000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100000, 0x0, 0x0, 0xc008000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17fff0, 0x3c000000, 0x0, 0x0, 0x20, 0x0, 0x61f0000, 0x0, 0x0, 0x0, 0xfc00, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000, 0x18000000, 0x0, 0x0, 0x3800, 0x0, 0x600000, 0x0, 0x0, 0x0, 0x0, 0x7700000, 0x0, 0x7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x3f7f, 0x0, 0x0, 0x0, 0x0, 0xfc000000, 0x60000001, 0x0, 0x0, 0x0, 0xf0000000, 0x0, 0xf8000000, 0x0, 0xc0000000, 0x0, 0x0, 0x800ff, 0x0, 0xffff0000, 0xffff00ff, 0x7ffbffef, 0x60000000, 0x6000, 0x0, 0x0, 0x0, 0xf00, 0x600, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fff00, 0x0, 0x0, 0x60, 0xffc0, 0x0, 0x0, 0x0, 0x0, 0x1fffff8, 0x0, 0xf000000, 0x30000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xde000000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffff7fff, 0x3ffcffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfff3ff0e, 0x20010000, 0x0, 0x0, 0x0, 0x1, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0xe000, 0x0, 0x0, 0x40080000, 0x0, 0x0, 0x0, 0xfc0000, 0x0, 0x0, 0x0, 0xf00000, 0x0, 0x0, 0xc000, 0x17000000, 0x0, 0xc000, 0x80000000, 0x0, 0x0, 0x0, 0xc0003ffe, 0x0, 0x0, 0x0, 0xf0000000, 0x0, 0x0, 0x0, 0xc0000000, 0x30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0xffff0000, 0xfff7ffff, 0xd0b, 0x0, 0x0, 0x0, 0x0, 0x8c00f7ee, 0xb8000001, 0xa8000000, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ff0000, 0x80000000, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0xfe000000, 0x0, 0x0, 0x1e000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x3e00000, 0x0, 0x3c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f80, 0x0, 0x0, 0xd8000000, 0x3, 0x0, 0x0, 0x0, 0xf, 0x300000, 0x0, 0x0, 0xe80021e0, 0x0, 0x0, 0x3f000000, 0x0, 0x0, 0x0, 0x200, 0x0, 0x0, 0x0, 0x0, 0x2c00f800, 0x0, 0x0, 0x0, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffffe, 0x0, 0x0, 0x0, 0xe, 0x1fff, 0x0, 0x2000000, 0x0, 0x0, 0x0, 0x70000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x80000000, 0x7f, 0x0, 0xdc000000, 0x7, 0x0, 0x0, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3e, 0x30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1800000, 0x0, 0x0, 0xfff8, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x1f0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x60000, 0x0, 0x0, 0x0, 0xc000, 0x0, 0x0, 0x0, 0x200000, 0x0, 0xf800000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf80, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000100", +cast(immutable size_t[]) x" +000001000000018000004900", +cast(immutable size_t[]) x" +0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000100000002000100030001000500040007000600010008000A0009000C000B +0001000D000E00010001000F001100100013001200150014000100160001000100010017001800010001000100190001 +001A000100010001001C001B0001001D0001001E00010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +0001000100010001000100010001000100010001000100010001001F0001002000220021002400230001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010025000100270026 +0028000100290001002A000100010001002C002B002E002D000100010030002F00320031000100330035003400370036 +00390038003B003A0001003C003E003D00010001000100010001003F0001000100010001000100010001000100400001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010042004100010001004400430001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010045000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010046000100010001000100010001000100010001000100010001 +004700010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001000000008C00F7EEB8000001280000000000000088C008820000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000 +000000800000000000000000000000000000000000000000FC0000000000000000000600400000000000004900180000 +E8003600000000000000000000003C000000000000000000001000000000000000003FFF000000000000000000000000 +00000000000000000000000003800000000000007FFF0000400000000000000000000000000000000000000000000000 +000000000000000000000000000100300000000000000000000000002000000000000000000000000000000000400000 +000000000000000000000000000100000000000000000000000000000080000000000010000000000000000000000000 +000000000000000000000000000000000000000000000000000000000010000000000000000000000C00800000000000 +000000000000000000000000000000000017FFF03C00000000000000000000000000002000000000061F000000000000 +00000000000000000000FC000000000000000000000000000000000008000000000000000000000000000000000001FF +000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000040001800000000000000000000000000380000000000006000000000000000000000 +00000000000000000770000000000000000007FF00000000000000000000000000000000000000000000000000000000 +0000000000000000000000300000000000000000000000000000000000000000C0000000000000000000000000000000 +0000000000003F7F00000000000000000000000000000000FC00000060000001000000000000000000000000F0000000 +00000000F800000000000000C00000000000000000000000000800FF00000000FFFF0000FFFF00FF7FFBFFEF60000000 +0000600000000000000000000000000000000F0000000600000000000000000000000000000000000000000000000000 +000000000000000000000000003FFF000000000000000000000000600000FFC000000000000000000000000000000000 +01FFFFF8000000000F0000003000000000000000000000000000000000000000000000000000000000000000DE000000 +0000000000000000000000000001000000000000000000000000000000000000FFFFFFFFFFFF7FFF3FFCFFFF00000000 +00000000000000000000000000000000FFF3FF0E20010000000000000000000000000000000000010000000008000000 +00000000000000000000000000000000000000000000000000000000C00000000000E000000000000000000040080000 +00000000000000000000000000FC000000000000000000000000000000F0000000000000000000000000C00017000000 +000000000000C00080000000000000000000000000000000C0003FFE000000000000000000000000F000000000000000 +0000000000000000C0000000000300000000000000000000000000000000000000000000000000000000000000000800 +00000000C000000000000000000000000000000000000000000000000000000003FF0000FFFF0000FFF7FFFF00000D0B +000000000000000000000000000000008C00F7EEB8000001A80000000000003F00000000000000000000000000000000 +000000070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +800000000000000000010000000000000000000000000000000000000000800000000000000000000000000000000000 +000000000000000000800000000000000000000000000000000000000000000080000000800000000000000000000000 +00000000000000000000000000000000000000000000000001FF000080000000000000000000000000000000007F0000 +00000000FE00000000000000000000001E00000000000000000000000000000000000000000000000000000000000000 +00000000000020000000000000000000000000000000000003E0000000000000000003C0000000000000000000000000 +000000000000000000003F800000000000000000D8000000000000030000000000000000000000000000000F00300000 +0000000000000000E80021E000000000000000003F000000000000000000000000000000000002000000000000000000 +00000000000000002C00F800000000000000000000000000000000400000000000000000000000000000000000000000 +000000000000000000FFFFFE0000000000000000000000000000000E00001FFF00000000020000000000000000000000 +000000007000000000000000000000000000000000000000000000000000000000000000080000000000000000000000 +000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000004 +00000000800000000000007F00000000DC000000000000070000000000000000000003FF000000000000000000000000 +0000000000000000000000000000000000000000000000000000003E0003000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000180000000000000000000000000FFF800000000 +00000000000000000000000080000000000000000000000000000000001F000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000C000 +00000000000000000000000000200000000000000F800000000000100000000000000000000000000000000000000000 +000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000040000000000000000000000000000000080000000000000000000000000000000 +0000000000000000000000000000000000000F800000000000000000000000000000000000000000C000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +); //3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x100], [ 0x100, 0x180, 0x4b00], [ 0x3020100, 0x5030403, 0x7030306, 0xa090803, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x3030303, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xf000e, 0x10010, 0x110001, 0x10001, 0x130012, 0x140001, 0x150001, 0x10001, 0x160001, 0x180017, 0x1a0019, 0x19001b, 0x1c0019, 0x1d0019, 0x1e0019, 0x1001f, 0x210020, 0x230022, 0x190024, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x250001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10026, 0x270001, 0x10028, 0x2a0029, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2b0001, 0x2c0001, 0x2e002d, 0x2f0001, 0x10001, 0x10001, 0x10001, 0x10030, 0x10031, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0xe0001, 0x10001, 0x10001, 0x10001, 0x320001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x330001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10034, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x350001, 0x370036, 0x390038, 0x10001, 0x3b003a, 0x190019, 0x1003c, 0x10001, 0x10001, 0x3d0001, 0x1003e, 0x10001, 0x10001, 0x10001, 0x10001, 0x40003f, 0x10041, 0x430042, 0x190044, 0x190019, 0x460045, 0x190047, 0x490048, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x0, 0x70000810, 0x40000000, 0x50000001, 0x0, 0x113d37c, 0x800000, 0x800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffc003c, 0xffffafe0, 0x0, 0x0, 0x0, 0x200000, 0x30, 0x0, 0x0, 0x400000, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe000, 0x0, 0x0, 0x0, 0xc9c0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40000000, 0x60000200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0400000, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0c0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000, 0x0, 0x0, 0x0, 0x10000, 0x0, 0x0, 0x0, 0x7f80000, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x2000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfce8000e, 0x1500000, 0x0, 0x0, 0x0, 0xc0000000, 0x1e0dfbf, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0xc0000000, 0xffffffff, 0x0, 0x0, 0x0, 0x1ff007fe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa0000000, 0xe000e003, 0x6000e000, 0x0, 0x0, 0x40010, 0x1c000000, 0x1c00, 0xffffffff, 0x1, 0x0, 0xc1d0037b, 0xc0042af, 0xbc1f, 0x0, 0xffff0c00, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffff0ff, 0xfffff9ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7f, 0x7ff, 0x0, 0xf0000000, 0xffffffff, 0xffffffff, 0x3ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xff, 0xfff00000, 0xffffffff, 0xffffff9f, 0xffff003f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfe000007, 0xffffffff, 0xf0ffffff, 0xcfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7e0, 0x0, 0x0, 0x30000, 0x0, 0xfbffffff, 0xffffffff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffff0000, 0xc0010, 0xc0c00001, 0x0, 0x0, 0x18000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc30000, 0x0, 0xffffffff, 0x800f, 0x7fffffff, 0xfffffc00, 0x100ff, 0xffffffff, 0xfffffc00, 0x1ffff, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0x7f, 0x0, 0x7fffff, 0x3, 0x0, 0x0, 0x600, 0x0, 0x0, 0x0, 0x0, 0x3c00f00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0xc00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x200, 0x0, 0x0, 0x0, 0xfffc0000, 0x7, 0x0, 0x0, 0x0, 0xffff, 0x0, 0x0, 0x0, 0x8000, 0xf0000000, 0x0, 0x0, 0x0, 0x274, 0x0, 0x0, 0x0, 0x0, 0x70000810, 0x40000000, 0x50000001, 0x0, 0x0, 0x0, 0x0, 0x30007f7f, 0x0, 0xff800000, 0x0, 0xfe000000, 0x1fff73ff, 0x1, 0xffff0000, 0x1fffffff, 0x0, 0x0, 0x0, 0x1800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffe00000, 0x3ffff, 0x0, 0xf0000000, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffffffff, 0xfffffe7f, 0xffffffff, 0x1c1f, 0xfffff018, 0xffffc3ff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000002, 0x8000000, 0x200000, 0x200000, 0x8000, 0x8000, 0x200, 0x200, 0x8, 0x0, 0x0, 0x7800000, 0x0, 0xffdfe000, 0x6f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x11000, 0x0, 0x0, 0x0, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30000, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xfffff, 0xfffe7fff, 0xfffefffe, 0x3fffff, 0xffffe000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fff, 0x0, 0xffffffc0, 0xffff0007, 0xfffffff, 0x301ff, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf0ffffff, 0x1fff1fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf87fffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x10fff, 0xffff0fff, 0xffffffff, 0x3ff00ff, 0xffffffff, 0xffff00ff, 0x33fff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xfffff, 0x1fff3fff, 0xffff01ff, 0xbfffffff, 0xfffc03f, 0x1ff01ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7ffff, 0xffffffff, 0x7ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000004000000100", +cast(immutable size_t[]) x" +000001000000018000004B00", +cast(immutable size_t[]) x" +0302010005030403070303060A0908030303030303030303030303030303030303030303030303030303030303030303 +030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 +030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000001000000030002000500040007000600090008000B000A000D000C000F000E +000100100011000100010001001300120014000100150001000100010016000100180017001A00190019001B001C0019 +001D0019001E00190001001F002100200023002200190024000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001002500010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001002600270001 +00010028002A002900010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +00010001002B0001002C0001002E002D002F000100010001000100010001000100010030000100310001000100010001 +000100010001000100010001000E00010001000100010001000100010032000100010001000100010001000100010001 +000100010033000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010034000100010001000100010001000100010001000100010001000100010001000100350001 +003700360039003800010001003B003A001900190001003C0001000100010001003D00010001003E0001000100010001 +00010001000100010040003F000100410043004200190044001900190046004500190047004900480001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +0001000100010001000100010001000100000000700008104000000050000001000000000113D37C0080000000800000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000FFFC003CFFFFAFE00000000000000000000000000020000000000030000000000000000000400000 +000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000 +0000E0000000000000000000000000000000C9C000000000000000000000000000000000000000004000000060000200 +00000000000000000000000000000000000000000000000000000000C040000000000000000000000000000000000000 +00000100000000000000000000000000000000000000000000000000000000000000000000000000000000000C0C0000 +000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000010000 +00000000000000000000000007F800000000000000000000000000008000000000000000000000000000000000000000 +000000000000000000008000020000000000000000000000000000000000000000000000800000000000000000000000 +00000000000000000000000000000000FCE8000E01500000000000000000000000000000C000000001E0DFBF00000000 +00000000000000000000000000000000C000000000000000000000000000000000000000000000000000000000000000 +03FF00000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000 +000000000000000000000000000000000000000000000000080000000000000000000000000000000000000100000000 +0000000000000000C0000000FFFFFFFF0000000000000000000000001FF007FE00000000000000000000000000000000 +0000000000000000000000000000000000000000A0000000E000E0036000E0000000000000000000000400101C000000 +00001C00FFFFFFFF0000000100000000C1D0037B0C0042AF0000BC1F00000000FFFF0C00FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF9FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000007F000007FF00000000F0000000FFFFFFFFFFFFFFFF000003FF +FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFF00000FFFFFFFFFFFFFF9FFFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FE000007FFFFFFFFF0FFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +00000000000000000000000000000000000000000000000000000000000007E000000000000000000003000000000000 +FBFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFF0000 +000C0010C0C0000100000000000000001800000000000000000000000000000000000000000000000000000000000000 +FFC3000000000000FFFFFFFF0000800F7FFFFFFFFFFFFC00000100FFFFFFFFFFFFFFFC000001FFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000 +FFFF0000FFFFFFFF0000007F00000000007FFFFF00000003000000000000000000000600000000000000000000000000 +0000000003C00F0000000000000000000000000000000000000000000000000000000000000000000000000003800000 +0000000000000000000000000000000000000000000000000800000000000C0000000000000000000000000000000000 +0000000000000200000000000000000000000000FFFC0000000000070000000000000000000000000000FFFF00000000 +000000000000000000008000F00000000000000000000000000000000000027400000000000000000000000000000000 +7000081040000000500000010000000000000000000000000000000030007F7F00000000FF80000000000000FE000000 +1FFF73FF00000001FFFF00001FFFFFFF0000000000000000000000000180000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000 +0000000000000000FFE000000003FFFF00000000F0000000000000200000000000000000000000000000000000000000 +00000000000000000000000000000000100000000000000000000000000000000000000000000000FFFF0000FFFFFFFF +FFFFFFFFFFFFFFFF0000000F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF +FFFFFFFFFFFFFE7FFFFFFFFF00001C1FFFFFF018FFFFC3FFFFFFFFFF000007FFFFFFFFFFFFFFFFFF0000002300000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFF007FFFFF0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000080000020800000000200000002000000000800000008000 +00000200000002000000000800000000000000000780000000000000FFDFE0000000006F000000000000000000000000 +000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000800000000000000000000000000000000000000000000000000110000000000000000000 +000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000030000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF000FFFFFFFFE7FFFFFFEFFFE003FFFFF +FFFFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00003FFF00000000FFFFFFC0FFFF00070FFFFFFF000301FF0000003F +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF1FFF1FFF +FFFFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFF03FFFFFF00010FFFFFFF0FFFFFFFFFFF03FF00FFFFFFFFFF +FFFF00FF00033FFF0000000000000000FFFFFFFFFFFFFFFF000FFFFF1FFF3FFFFFFF01FFBFFFFFFF0FFFC03F01FF01FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFF000007FF0000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //6080 bytes -enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x40, 0x1a0], [ 0x100, 0x2c0, 0x8a00], [ 0x2020100, 0x5040302, 0x9080706, 0xd0c0b0a, 0x2020202, 0x100f0e02, 0x13131211, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131314, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x13131313, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x20001, 0x30001, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0x1000e, 0x10000f, 0x10001, 0x120011, 0x140013, 0x160015, 0x10017, 0x180001, 0x1a0019, 0x10001, 0x1001b, 0x10001, 0x10001, 0x1c0001, 0x1e001d, 0x20001f, 0x220021, 0x10023, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10024, 0x260025, 0x280027, 0x2a0029, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x2b0001, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x1002c, 0x2e002d, 0x2f0001, 0x310030, 0x330032, 0x350034, 0x370036, 0x380001, 0x3a0039, 0x3c003b, 0x3e003d, 0x40003f, 0x420041, 0x440043, 0x460045, 0x480047, 0x4a0049, 0x4c004b, 0x4e004d, 0x50004f, 0x10001, 0x510001, 0x530052, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x54002c, 0x10001, 0x10001, 0x2c0055, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x2c0056, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x580057, 0x2c002c, 0x5a0059, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x5b0001, 0x10001, 0x10001, 0x5d005c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x5e002c, 0x5f0001, 0x2c0060, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c0061, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x62002c, 0x640063, 0x660065, 0x680067, 0x6a0069, 0x10001, 0x2c006b, 0x2c002c, 0x6c002c, 0x6e006d, 0x2c006f, 0x2c0070, 0x71002c, 0x730072, 0x2c002c, 0x750074, 0x2c0076, 0x780077, 0x10079, 0x10001, 0x7b007a, 0x1007c, 0x7e007d, 0x2c002c, 0x2c002c, 0x10001, 0x10001, 0x10001, 0x1007f, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x800001, 0x10081, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10082, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x830001, 0x10001, 0x2c0084, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x10001, 0x2c0085, 0x2c002c, 0x2c002c, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x860001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x10001, 0x870001, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x88002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x2c002c, 0x0, 0xffffffff, 0xffffffff, 0x7fffffff, 0x0, 0xffffdfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfcffffff, 0xffffd7f0, 0xfffffffb, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffeffff, 0xfe7fffff, 0xffffffff, 0xfffee7ff, 0xffffffff, 0xffff00ff, 0x1f87ff, 0xefffffc0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xdfffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffe7ff, 0xffffffff, 0xffffffff, 0x3ffff, 0xffffffff, 0xe7ffffff, 0xffffffff, 0x7fff3fff, 0x4fffffff, 0xffff07ff, 0xff007fff, 0xffffffff, 0xffffffff, 0xfffffffb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff99fef, 0xf3c5fdff, 0xb080799f, 0x7fffffcf, 0xfff987ee, 0xd36dfdff, 0x5e023987, 0x7fffc0, 0xfffbbfee, 0xf3edfdff, 0x13bbf, 0xfe03ffcf, 0xfff99fee, 0xf3edfdff, 0xb0e0399f, 0xffffcf, 0xd63dc7ec, 0xc3ffc718, 0x813dc7, 0x7ffffc0, 0xfffddfff, 0xf3fffdff, 0x27603ddf, 0xff80ffcf, 0xfffddfff, 0xf3effdff, 0x60603ddf, 0xeffcf, 0xfffddfff, 0xffffffff, 0xfff0fddf, 0xffffffcf, 0xfc7fffee, 0x2ffbffff, 0xff5f847f, 0x1cffc0, 0xfffffffe, 0x87ffffff, 0xfffffff, 0x0, 0xfffff7d6, 0x3fffffaf, 0xf3ff7f5f, 0x0, 0xffffffff, 0xffffffff, 0xfffffeff, 0xfffe1fff, 0xfeffffff, 0xdfffffff, 0x7ffdfff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff20bf, 0xffffffff, 0xffffffff, 0xffffffff, 0x3d7f3dff, 0xffffffff, 0xffff3dff, 0x7f3dffff, 0xff7fff3d, 0xffffffff, 0xff3dffff, 0xffffffff, 0xe7ffffff, 0x1fffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0x3f3fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0x1ffffff, 0x803fffff, 0x7fffff, 0xfffff, 0xddfff, 0xffffffff, 0xffffffff, 0x3fffffff, 0x3ff03ff, 0x3ffbfff, 0xffffffff, 0xffffffff, 0x1ffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0x3fffff, 0x7fffffff, 0xfff0fff, 0xfffffff1, 0x1f3fff, 0xffffffff, 0xffff0fff, 0xc7ff03ff, 0xffffffff, 0xcfffffff, 0xffffffff, 0x7fffffff, 0x9fffffff, 0x3ff03ff, 0xffff3fff, 0x7fff, 0x0, 0xffffffff, 0xffffffff, 0xffff1fff, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf00fffff, 0xffffffff, 0xf8ffffff, 0xffffe3ff, 0xffffffff, 0xffff01ff, 0xe7ffffff, 0xffff00ff, 0x7ffffff, 0x3f3fffff, 0xffffffff, 0xaaff3f3f, 0x3fffffff, 0xffffffff, 0xffdfffff, 0xefcfffdf, 0x7fdcffff, 0xffff07ff, 0xffff80ff, 0xffffffff, 0xfff30000, 0x1fff7fff, 0xffffffff, 0xffff0001, 0x1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7f, 0x7ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffcfffff, 0xffbfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfe0fffff, 0xffffffff, 0xffff20bf, 0xffffffff, 0x800180ff, 0x7fffff, 0x7f7f7f7f, 0x7f7f7f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0xfbffffff, 0xffffffff, 0xffffffff, 0xfffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffff0000, 0xffffffff, 0xffffffff, 0xfffffffe, 0xffffffff, 0xfe7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffe0, 0xfffeffff, 0xffffffff, 0xffffffff, 0xffff7fff, 0xffffffff, 0xffffffff, 0xffff800f, 0x7fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff1fff, 0xffffffff, 0xffff007f, 0xffffffff, 0xffffffff, 0xfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3eb07ff, 0xfffc0000, 0xffffffff, 0x3ff1fff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0x3ffc03f, 0xffffffff, 0xffffffff, 0xffffffff, 0x800fffff, 0x1fffffff, 0xffffffff, 0xffffffff, 0xc3ffbfff, 0x7fffffff, 0xffffffff, 0x7fffff, 0xf3ff3fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8000007, 0x7fffff, 0x7e7e7e, 0xffff7f7f, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ff3fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff000f, 0xfffff87f, 0xfffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff3fff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0xe0f8007f, 0x5f7fffff, 0xffffffdb, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff80007, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffcffff, 0xffffffff, 0x80ff, 0xffff0000, 0x3ffffff, 0xffffffff, 0xfff7ffff, 0xffdf0f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fffffff, 0xfffffffe, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fffffff, 0x1cfcfcfc, 0x30007f7f, 0xffffefff, 0xb7ffff7f, 0x3fff3fff, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ffffff, 0xffffff87, 0xff8fffff, 0xffffffff, 0xffffffff, 0x1fff7fff, 0x1, 0xffff0000, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x1fffffff, 0xffffffff, 0x1ffff, 0xfffffff, 0xffffffff, 0xffffe00f, 0xffff07ff, 0x7ffffff, 0xbfffffff, 0xffffffff, 0x3fff0f, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffff03ff, 0xff0fffff, 0xfffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xf7ff800f, 0xffb7f7ff, 0x1bfbfffb, 0x0, 0x0, 0xffffffff, 0x7fffff, 0x3fffff, 0xff, 0xffffffbf, 0x7fdffff, 0x0, 0x0, 0xfffffd3f, 0x91bfffff, 0xffbfffff, 0xffffffff, 0x7fffffff, 0xff80, 0x0, 0xf837ffff, 0x8fffffff, 0x83ffffff, 0x0, 0x0, 0xffffffff, 0xf0ffffff, 0xfffcffff, 0xffffffff, 0xfeeff06f, 0x873fffff, 0x1ff01ff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x7ff87f, 0xffffffff, 0xfe3fffff, 0xff3fffff, 0xff07ffff, 0x1e03ffff, 0xfe00, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x1ff, 0x0, 0xffffffff, 0x7ffff, 0xffffffff, 0xfc07ffff, 0xffffffff, 0x3ff00ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fffffff, 0xffffffff, 0x33bff, 0x0, 0xe0000000, 0xffffffff, 0xffff00ff, 0x3ffffff, 0xffff0000, 0x3ff, 0xffff0000, 0xfff, 0x7fffff, 0xffffffff, 0xffffffff, 0xfffc3fff, 0x803fffff, 0xffffffff, 0xdfffffff, 0xffff0007, 0x3ff01ff, 0xffffffff, 0xffdfffff, 0xffff00ff, 0x7fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1ffffe, 0xfffbffff, 0xffffffff, 0x3, 0x0, 0xbfffbd7f, 0xffff03ff, 0xffffffff, 0x3ff07ff, 0xfff99fef, 0xfbedfdff, 0xe081399f, 0x1f1fcf, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xefffffff, 0x3, 0xffffffff, 0xffffffff, 0x3ff00ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xff3fffff, 0x3fffffff, 0x0, 0xffffffff, 0xffffffff, 0x3ff001f, 0x1fff, 0xffffffff, 0x3ffffff, 0x3ff, 0x0, 0xe7ffffff, 0xffff0fff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xfffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x8007ffff, 0xff6ff27f, 0xf9bfffff, 0x3ff007f, 0x0, 0x0, 0xfffffcff, 0xfcffffff, 0x1f, 0xffffffff, 0xffffffff, 0xffff00ff, 0xffffffff, 0xffffffff, 0xffff0007, 0xffffffff, 0x1ffffff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffffdff, 0xff7fffff, 0xffff003f, 0xffff1fff, 0xfffcffff, 0x7ffeff, 0x0, 0x0, 0xfffffb7f, 0xb47fffff, 0x3ff00ff, 0xfffffdbf, 0x1fb7fff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1ffffff, 0xfffdffff, 0xc7ffffff, 0x3ffffff, 0x0, 0x0, 0x10000, 0xffffffff, 0x8003ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f7fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0xffffffff, 0xffffffff, 0x7ffff, 0xffffffff, 0xffff, 0x3fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7f, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0x1ffffff, 0x7fffffff, 0xffffc3ff, 0xffffffff, 0x7fffffff, 0xffff03ff, 0x3f3fff, 0xffffffff, 0xffffffff, 0xfbff003f, 0xe0fffffb, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0x7ffffff, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff87ff, 0xffffffff, 0xffff80ff, 0x0, 0x0, 0x3001f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0x0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef0000, 0xffffffff, 0x40007, 0x270000, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fff07ff, 0xf3ff01ff, 0x0, 0x0, 0x0, 0xffffffff, 0xffff3fff, 0xffff007f, 0xffffffff, 0xffffffff, 0xffffffff, 0xf, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffff, 0xffffffff, 0xfffffe7f, 0xffffffff, 0xf807ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7ff, 0xffffffff, 0xffffffff, 0x3f, 0x0, 0x0, 0x0, 0xfffff, 0xfffff, 0xffffffff, 0xffffffff, 0x7fffff, 0x1ffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffdfffff, 0xffffffff, 0xdfffffff, 0xebffde64, 0xffffffef, 0xffffffff, 0xdfdfe7bf, 0x7bffffff, 0xfffdfc5f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff3f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffcfff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8000fff, 0xfffe, 0x0, 0x0, 0x7fffffff, 0x7e0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf9ffff7f, 0xffff07db, 0xffffffff, 0x3fff, 0x8000, 0x0, 0x0, 0x0, 0xffffffff, 0x3fff1fff, 0xc3ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x7fff, 0xffffffff, 0x83ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffff0000, 0x3ffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7fff6f7f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x7fff9f, 0x0, 0xffffffff, 0xffffffff, 0xc3ff0fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfffe0000, 0xffffffff, 0x1fffff, 0x0, 0x0, 0xfffffffe, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffef, 0xaf7fe96, 0xaa96ea84, 0x5ef7f796, 0xffffbff, 0xffffbee, 0x0, 0x30000, 0xffffffff, 0xffff0fff, 0xffffffff, 0xffffffff, 0xfffff, 0xfffe7fff, 0xfffefffe, 0x3fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fff, 0x0, 0xffffffc0, 0xffff0007, 0xfffffff, 0x301ff, 0x3f, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf0ffffff, 0x1fff1fff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf87fffff, 0xffffffff, 0xffffffff, 0x3ffffff, 0x10fff, 0xffff0fff, 0xffffffff, 0x3ff00ff, 0xffffffff, 0xffff00ff, 0x33fff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xfffff, 0x1fff3fff, 0xffff01ff, 0xbfffffff, 0xfffc03f, 0x1ff01ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfff7ffff, 0xffffffff, 0x7ff, 0x3ff0000, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x0, 0xffffffff, 0x3ffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0003, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0001, 0xffffffff, 0xffffffff, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffff07ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000040000001A0", +cast(immutable size_t[]) x" +00000100000002C000008A00", +cast(immutable size_t[]) x" +0202010005040302090807060D0C0B0A02020202100F0E02131312111313131313131313131313131313131313131313 +131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313 +131313131313131313131313131313131313131413131313131313131313131313131313131313130000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000100000002000100030001000500040007000600090008000B000A000D000C +0001000E0010000F000100010012001100140013001600150001001700180001001A0019000100010001001B00010001 +00010001001C0001001E001D0020001F0022002100010023000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100240026002500280027002A00290001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001000100010001000100010001002B0001002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +0001002C002E002D002F00010031003000330032003500340037003600380001003A0039003C003B003E003D0040003F +00420041004400430046004500480047004A0049004C004B004E004D0050004F000100010051000100530052002C002C +002C002C002C002C002C002C0054002C0001000100010001002C0055002C002C002C002C002C002C002C002C002C002C +002C002C002C002C00010001002C0056002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C0001000100580057002C002C005A0059 +0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001005B0001 +0001000100010001005D005C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C005E002C005F0001002C0060002C002C002C002C +002C002C002C002C002C0061002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C0062002C +006400630066006500680067006A006900010001002C006B002C002C006C002C006E006D002C006F002C00700071002C +00730072002C002C00750074002C0076007800770001007900010001007B007A0001007C007E007D002C002C002C002C +0001000100010001000100010001007F0001000100010001000100010001000100010001000100010001000100800001 +000100810001000100010001000100010001000100010001000100010001000100010001000100010001000100010082 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010083000100010001002C0084002C002C002C002C002C002C002C002C00010001002C0085002C002C002C002C +000100010001000100010001000100010001000100010001000100010001000100010001008600010001000100010001 +000100010001000100010001000100010001000100870001002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +0088002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C00000000FFFFFFFFFFFFFFFF7FFFFFFF +00000000FFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFD7F0FFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFE7FFFFFFFFFFFFF +FFFEE7FFFFFFFFFFFFFF00FF001F87FFEFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFF +FFFF3FFFFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFE7FFFFFFFFFFFFFF7FFF3FFF4FFFFFFFFFFF07FF +FF007FFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FEFF3C5FDFFB080799F7FFFFFCF +FFF987EED36DFDFF5E023987007FFFC0FFFBBFEEF3EDFDFF00013BBFFE03FFCFFFF99FEEF3EDFDFFB0E0399F00FFFFCF +D63DC7ECC3FFC71800813DC707FFFFC0FFFDDFFFF3FFFDFF27603DDFFF80FFCFFFFDDFFFF3EFFDFF60603DDF000EFFCF +FFFDDFFFFFFFFFFFFFF0FDDFFFFFFFCFFC7FFFEE2FFBFFFFFF5F847F001CFFC0FFFFFFFE87FFFFFF0FFFFFFF00000000 +FFFFF7D63FFFFFAFF3FF7F5F00000000FFFFFFFFFFFFFFFFFFFFFEFFFFFE1FFFFEFFFFFFDFFFFFFF07FFDFFF00000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20BFFFFFFFFFFFFFFFFFFFFFFFFF3D7F3DFFFFFFFFFF +FFFF3DFF7F3DFFFFFF7FFF3DFFFFFFFFFF3DFFFFFFFFFFFFE7FFFFFF1FFFFFFF03FFFFFFFFFFFFFFFFFFFFFF3F3FFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF01FFFFFF803FFFFF007FFFFF000FFFFF000DDFFF +FFFFFFFFFFFFFFFF3FFFFFFF03FF03FF03FFBFFFFFFFFFFFFFFFFFFF01FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFF +7FFFFFFF0FFF0FFFFFFFFFF1001F3FFFFFFFFFFFFFFF0FFFC7FF03FFFFFFFFFFCFFFFFFFFFFFFFFF7FFFFFFF9FFFFFFF +03FF03FFFFFF3FFF00007FFF00000000FFFFFFFFFFFFFFFFFFFF1FFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF +FFFFFFFFF8FFFFFFFFFFE3FFFFFFFFFFFFFF01FFE7FFFFFFFFFF00FF07FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFF +FFFFFFFFFFDFFFFFEFCFFFDF7FDCFFFFFFFF07FFFFFF80FFFFFFFFFFFFF300001FFF7FFFFFFFFFFFFFFF00010001FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000007F000007FFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFF20BFFFFFFFFF800180FF +007FFFFF7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFF00000000FBFFFFFFFFFFFFFFFFFFFFFF000FFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF +FE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFEFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFF800F +7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF1FFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03EB07FFFFFC0000FFFFFFFF03FF1FFFFFFFFFFF00FFFFFF +FFFFFFFFFFFFFFFF03FFC03FFFFFFFFFFFFFFFFFFFFFFFFF800FFFFF1FFFFFFFFFFFFFFFFFFFFFFFC3FFBFFF7FFFFFFF +FFFFFFFF007FFFFFF3FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFF8000007007FFFFF007E7E7EFFFF7F7FFFFFFFFFFFFF0FFF +FFFFFFFFFFFFFFFFFFFFFFFF03FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFF87F0FFFFFFF +0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFF +FFFFFFFFFFFFFFFF03FFFFFF00000000E0F8007F5F7FFFFFFFFFFFDBFFFFFFFFFFFFFFFFFFFFFFFFFFF80007FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFF000080FFFFFF000003FFFFFFFFFFFFFFFFF7FFFFFFDF0F7F +FFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF1CFCFCFC30007F7F +FFFFEFFFB7FFFF7F3FFF3FFF00000000FFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFF87FF8FFFFFFFFFFFFFFFFFFFFF +1FFF7FFF00000001FFFF00003FFFFFFF000000000000000000000000000000001FFFFFFFFFFFFFFF0001FFFF0FFFFFFF +FFFFFFFFFFFFE00FFFFF07FF07FFFFFFBFFFFFFFFFFFFFFF003FFF0F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +3FFFFFFFFFFF03FFFF0FFFFF0FFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF7FF800FFFB7F7FF1BFBFFFB0000000000000000 +FFFFFFFF007FFFFF003FFFFF000000FFFFFFFFBF07FDFFFF0000000000000000FFFFFD3F91BFFFFFFFBFFFFFFFFFFFFF +7FFFFFFF0000FF8000000000F837FFFF8FFFFFFF83FFFFFF0000000000000000FFFFFFFFF0FFFFFFFFFCFFFFFFFFFFFF +FEEFF06F873FFFFF01FF01FFFFFFFFFFFFFFFFFF00000000FFFFFFFF007FF87FFFFFFFFFFE3FFFFFFF3FFFFFFF07FFFF +1E03FFFF0000FE000000000000000000FFFFFFFFFFFFFFFF000001FF00000000FFFFFFFF0007FFFFFFFFFFFFFC07FFFF +FFFFFFFF03FF00FF0000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFF +FFFFFFFF00033BFF00000000E0000000FFFFFFFFFFFF00FF03FFFFFFFFFF0000000003FFFFFF000000000FFF007FFFFF +FFFFFFFFFFFFFFFFFFFC3FFF803FFFFFFFFFFFFFDFFFFFFFFFFF000703FF01FFFFFFFFFFFFDFFFFFFFFF00FF007FFFFF +FFFFFFFFFFFFFFFFFFFFFFFF001FFFFEFFFBFFFFFFFFFFFF0000000300000000BFFFBD7FFFFF03FFFFFFFFFF03FF07FF +FFF99FEFFBEDFDFFE081399F001F1FCF00000000000000000000000000000000FFFFFFFFFFFFFFFFEFFFFFFF00000003 +FFFFFFFFFFFFFFFF03FF00FF0000000000000000000000000000000000000000FFFFFFFFFF3FFFFF3FFFFFFF00000000 +FFFFFFFFFFFFFFFF03FF001F00001FFFFFFFFFFF03FFFFFF000003FF00000000E7FFFFFFFFFF0FFF0000007F00000000 +00000000000000000000000000000000FFFFFFFF0FFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF8007FFFF +FF6FF27FF9BFFFFF03FF007F0000000000000000FFFFFCFFFCFFFFFF0000001FFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF +FFFFFFFFFFFF0007FFFFFFFF01FFFFFF000003FF00000000000000000000000000000000000000000000000000000000 +FFFFFDFFFF7FFFFFFFFF003FFFFF1FFFFFFCFFFF007FFEFF0000000000000000FFFFFB7FB47FFFFF03FF00FFFFFFFDBF +01FB7FFF000003FF00000000000000000000000000000000000000000000000000000000000000000000000001FFFFFF +FFFDFFFFC7FFFFFF03FFFFFF000000000000000000010000FFFFFFFF8003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03FFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF001F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0000000F000000000000000000000000000000000000000000000000000000000000000000000000 +FFFF0000FFFFFFFFFFFFFFFF0007FFFFFFFFFFFF0000FFFF003FFFFF0000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFF0000007F0000000000000000000000000000000000000000FFFFFFFF01FFFFFF7FFFFFFFFFFFC3FF +FFFFFFFF7FFFFFFFFFFF03FF003F3FFFFFFFFFFFFFFFFFFFFBFF003FE0FFFFFB0000FFFF000000000000000000000000 +0000000000000000FFFFFFFFFFFFFFFF07FFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFF87FFFFFFFFFF +FFFF80FF00000000000000000003001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF00000000000001FF000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FEF0000 +FFFFFFFF0004000700270000FFFF00F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF07FFF3FF01FF000000000000000000000000 +FFFFFFFFFFFF3FFFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FF +FFFFFFFFFFFFFFFF0000003F000000000000000000000000000FFFFF000FFFFFFFFFFFFFFFFFFFFF007FFFFF01FFFFFF +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFF +DFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000FFF0000FFFE00000000000000007FFFFFFF000007E00000000000000000 +00000000000000000000000000000000F9FFFF7FFFFF07DBFFFFFFFF00003FFF00008000000000000000000000000000 +FFFFFFFF3FFF1FFF0000C3FF000000000000000000000000000000000000000000000000000000000000000000000000 +FFFF000000007FFFFFFFFFFF83FFFFFF000000000000000000000000000000000000000000000000FFFF000003FFFFFF +000000000000000000000000000000000000000000000000000000007FFF6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF007FFF9F00000000FFFFFFFFFFFFFFFFC3FF0FFF0000000000000000000000000000000000000000 +000000000000000000000000FFFE0000FFFFFFFF001FFFFF0000000000000000FFFFFFFE3FFFFFFF0000000000000000 +00000000000000000000000000000000FFFFFFEF0AF7FE96AA96EA845EF7F7960FFFFBFF0FFFFBEE0000000000030000 +FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF000FFFFFFFFE7FFFFFFEFFFE003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF00003FFF00000000FFFFFFC0FFFF00070FFFFFFF000301FF0000003F00000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF1FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFFF +FFFFFFFFFFFFFFFF03FFFFFF00010FFFFFFF0FFFFFFFFFFF03FF00FFFFFFFFFFFFFF00FF00033FFF0000000000000000 +FFFFFFFFFFFFFFFF000FFFFF1FFF3FFFFFFF01FFBFFFFFFF0FFFC03F01FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFF7FFFFFFFFFFFF000007FF03FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 +FFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFF3FFFFFFF00000000 +000000000000000000000000000000003FFFFFFF00000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0000FFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //4824 bytes -enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)([ 0x0, 0x20, 0x98, 0x298], [ 0x80, 0xf0, 0x400, 0x43c0], [ 0x3020100, 0x7060504, 0x9080101, 0xb0b0b0a, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0b, 0xb0b0b0c, 0xd010101, 0xd010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xb000a, 0xd000c, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xe000d, 0xd000f, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x10000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x120011, 0x140013, 0x160015, 0x180017, 0x1a0019, 0x1c001b, 0x1e001d, 0x1f000d, 0x1d001d, 0x20001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x220021, 0xd000d, 0xd000d, 0x23000d, 0x24000d, 0x1d001d, 0x1d001d, 0x1d001d, 0x25001d, 0x1d0026, 0x27001d, 0x1d001d, 0x28001d, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0x320031, 0x1d0033, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x34000d, 0xd000d, 0x35000d, 0xd0036, 0xd000d, 0x37000d, 0xd000d, 0xd000d, 0xd000d, 0x390038, 0x1d001d, 0x1d003a, 0xd000d, 0xd000d, 0xd003b, 0xd000d, 0x1d003c, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d003d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0x1d001d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x3e000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0xd000d, 0x3e000d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10000, 0x2, 0x0, 0x0, 0x40003, 0x60005, 0x0, 0x0, 0x80007, 0xa0009, 0xc000b, 0xd, 0x0, 0xf000e, 0x110010, 0x130012, 0x150014, 0x170016, 0x190018, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x240000, 0x260025, 0x0, 0x270000, 0x0, 0x0, 0x280000, 0x2a0029, 0x2c002b, 0x2e002d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30002f, 0x320031, 0x330000, 0x30002d, 0x350034, 0x370036, 0x390038, 0x3b003a, 0x3d003c, 0x3e0000, 0x3f0000, 0x410040, 0x430042, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x470046, 0x480000, 0x4a0049, 0x0, 0x4b, 0x0, 0x0, 0x0, 0x0, 0x4d004c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4e0000, 0x4f, 0x0, 0x500000, 0x520051, 0x540053, 0x550000, 0x570056, 0x0, 0x580000, 0x590000, 0x4, 0x5a, 0x5c005b, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f005e, 0x0, 0x0, 0x60, 0x610000, 0x0, 0x620000, 0x610063, 0x640000, 0x650000, 0x660000, 0x680067, 0x690000, 0x38006a, 0x6b0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6d006c, 0x0, 0x0, 0x0, 0x0, 0x6e0000, 0x6f0000, 0x710070, 0x720000, 0x0, 0x0, 0x0, 0x740073, 0x75002d, 0x760000, 0x59, 0x780077, 0x7a0079, 0x7b0000, 0x7c, 0x7e007d, 0x7f007f, 0x80002f, 0x820081, 0x840083, 0x0, 0x860085, 0x880087, 0x7f0089, 0x0, 0x0, 0x8a0067, 0x7f008b, 0x4f008c, 0x8e008d, 0x7f008f, 0x730090, 0x920091, 0x940093, 0x960095, 0x7f0097, 0x980000, 0x9a0099, 0x7f009b, 0x7f007f, 0x9c007f, 0x9e009d, 0x9f0087, 0xa100a0, 0xa20000, 0xa30000, 0xa40046, 0xa50000, 0xa700a6, 0xa900a8, 0xab00aa, 0x7f007f, 0xac0000, 0xad0000, 0x7f007f, 0x5500ae, 0xaf0000, 0xb100b0, 0xb300b2, 0x7f007f, 0x7f00b4, 0xb600b5, 0xb800b7, 0xba00b9, 0xbb0000, 0x3000bc, 0x7f00b1, 0x7f007f, 0xbe00bd, 0x7f00bf, 0xc100c0, 0x7f00c2, 0x7f007f, 0xc3007f, 0x6f00c4, 0xc600c5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f006f, 0xc70000, 0x0, 0xc80000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x9900c9, 0xca0000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0xb30000, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0xcb0030, 0xcc0077, 0xcd0000, 0x7f00ce, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f, 0x7f00cf, 0xd00000, 0xd200d1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x610000, 0x0, 0xca0000, 0x7f0098, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0xd3007f, 0x0, 0x0, 0xd500d4, 0x0, 0x0, 0xb40000, 0x7f007f, 0x7f007f, 0xd60000, 0x7f00d7, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x5f006e, 0xc80000, 0x0, 0x350000, 0xd8, 0xd90000, 0xda0000, 0xdb007f, 0xdc0000, 0x7f007f, 0xdd0000, 0xdf00de, 0xe100e0, 0x0, 0x0, 0xe2, 0x0, 0xe30000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f00e4, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f00e5, 0x7f007f, 0xe700e6, 0x7f00e8, 0xea00e9, 0x7f007f, 0x7f007f, 0xec00eb, 0x7f007f, 0x7f007f, 0x7f007f, 0xed007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0xee007f, 0x0, 0xef0000, 0xf00000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0xf1007f, 0x7f00f2, 0x7f00f3, 0x7f007f, 0xf500f4, 0xf700f6, 0x7f007f, 0x7f007f, 0x38, 0xf900f8, 0x0, 0xfa00e7, 0xfc00fb, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfd0000, 0xfe0000, 0xff0000, 0x100004b, 0x7f0101, 0x0, 0x0, 0x1020000, 0x1040103, 0x0, 0x1060105, 0x0, 0x0, 0x0, 0x0, 0x0, 0x930000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x0, 0x107, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x108, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1090000, 0x0, 0x0, 0x0, 0x0, 0x550000, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x7f0055, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f010b, 0x10c, 0x7f007f, 0x0, 0x10b0000, 0x7f007f, 0x7f007f, 0x7f007f, 0x7f007f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10d0000, 0x0, 0x0, 0x0, 0x3000000, 0x280f, 0x4, 0x0, 0x10000, 0x1800000, 0x0, 0x11800, 0x0, 0xff00, 0xffe07800, 0x4000, 0x0, 0x1800, 0x0, 0x0, 0xfffc0000, 0x0, 0x18000000, 0x0, 0x8000c000, 0xb0000000, 0xf800, 0xfc8000, 0x0, 0x66010, 0xc3a0200, 0x4f7f8660, 0x80000030, 0x67811, 0x2c920200, 0xa1fdc678, 0xff80003f, 0x44011, 0xc120200, 0xfffec440, 0x1fc0030, 0x66011, 0xc120200, 0x4f1fc660, 0xff000030, 0x29c23813, 0x3c0038e7, 0xff7ec238, 0xf800003f, 0x22000, 0xc000200, 0xd89fc220, 0x7f0030, 0x22000, 0xc100200, 0x9f9fc220, 0xfff10030, 0x22000, 0x0, 0xf0220, 0x30, 0x3800011, 0xd0040000, 0xa07b80, 0xffe3003f, 0x1, 0x78000000, 0xf0000000, 0xffffffff, 0x829, 0xc0000050, 0xc0080a0, 0xffffffff, 0x100, 0x1e000, 0x1000000, 0x20000000, 0xf8002000, 0xffffffff, 0xdf40, 0x0, 0xc280c200, 0x0, 0xc200, 0x80c20000, 0x8000c2, 0x0, 0xc20000, 0x0, 0x18000000, 0xe0000000, 0xfc000000, 0x0, 0x0, 0xc0c00000, 0xe0000000, 0x0, 0x0, 0xfe000000, 0x7fc00000, 0xff800000, 0xfff00000, 0xfff22000, 0xc0000000, 0xfc00fc00, 0x0, 0xf800, 0x0, 0xffc00000, 0x80000000, 0xf000f000, 0xe, 0xffe0c000, 0x0, 0xf000, 0x3800fc00, 0x0, 0x30000000, 0x0, 0x80000000, 0x60000000, 0xfc00fc00, 0xc000, 0xffff8000, 0xffffffff, 0xe000, 0x80000000, 0x0, 0xff00000, 0x0, 0x7000000, 0x1c00, 0x0, 0xfe00, 0x18000000, 0xff00, 0xf8000000, 0xc0c00000, 0x0, 0x5500c0c0, 0xc0000000, 0x0, 0x200000, 0x10300020, 0x80230000, 0x0, 0xc0020, 0xe0008000, 0x0, 0xfffe, 0xfffe0000, 0xf000, 0x0, 0x0, 0xffffff80, 0xfffff800, 0x0, 0x0, 0x300000, 0x400000, 0x0, 0x0, 0x1f00000, 0x0, 0xdf40, 0x0, 0x7ffe7f00, 0xff800000, 0x80808080, 0x80808080, 0x0, 0xc0000000, 0xffffffff, 0x4000000, 0x0, 0x0, 0xfff00000, 0xffc00000, 0xffff, 0x1, 0x0, 0x1f, 0x10000, 0x8000, 0x0, 0x0, 0x7ff0, 0x80000000, 0x0, 0xe000, 0x0, 0xff80, 0x0, 0x0, 0xfffff000, 0x0, 0xff000000, 0xfc14f800, 0x3ffff, 0x0, 0xfc00e000, 0xfc003fc0, 0x0, 0x7ff00000, 0xe0000000, 0x3c004000, 0x80000000, 0x0, 0xff800000, 0xc00c000, 0x0, 0x7fffff8, 0xff800000, 0xff818181, 0x8080, 0x0, 0xfc00c000, 0x0, 0xfff0, 0x780, 0xf0000000, 0x0, 0xc000, 0xfc000000, 0xffffffff, 0x1f07ff80, 0xa0800000, 0x24, 0x0, 0x7fff8, 0x0, 0x30000, 0x0, 0xffff7f00, 0xffff, 0x80000, 0x20f080, 0x0, 0x60000000, 0x0, 0x80000000, 0xe3030303, 0xc1ff8080, 0x1000, 0x48000080, 0xc000c000, 0xffffffff, 0x0, 0xf8000000, 0x78, 0x700000, 0xe0008000, 0xfffffffe, 0xffff, 0xc0000000, 0xffffffff, 0xffffffff, 0xfffe0000, 0xf0000000, 0x0, 0x1ff0, 0xf800, 0xf8000000, 0x40000000, 0x0, 0xffc000f0, 0xffffffff, 0xc0000000, 0xfc00, 0xf00000, 0xf0000000, 0x0, 0xff00, 0x0, 0x8007ff0, 0x480800, 0xe4040004, 0xffc00000, 0xffffff00, 0x40, 0xf8020000, 0x2c0, 0x6e400000, 0x80000000, 0xffff007f, 0xffffffff, 0x7c80000, 0x70000000, 0x7c000000, 0x0, 0xf000000, 0x1100f90, 0x78c00000, 0xfe00fe00, 0x0, 0x0, 0xffffffff, 0x0, 0xff800780, 0x0, 0x1c00000, 0xc00000, 0xf80000, 0xe1fc0000, 0xffff01ff, 0xfffffe00, 0xffffffff, 0x0, 0xfff80000, 0x0, 0x3f80000, 0x0, 0xfc00ff00, 0xffffffff, 0x80000000, 0x0, 0xfffcc400, 0xffffffff, 0x1fffffff, 0xfc000000, 0xffff, 0xfffffc00, 0xffff, 0xfffff000, 0xff800000, 0x3c000, 0x7fc00000, 0xdff8, 0xfc00fe00, 0xff00, 0xff800000, 0x0, 0xffe00001, 0x40000, 0x0, 0xfffffffc, 0xffffffff, 0x40004280, 0xfc00, 0x0, 0xfc00f800, 0x66010, 0x4120200, 0x1f7ec660, 0xffe0e030, 0x10000000, 0xfffffffc, 0xfc00ff00, 0xffffffff, 0x0, 0xc00000, 0xfc00ffe0, 0xffffe000, 0x0, 0xfc000000, 0xfffffc00, 0xffffffff, 0x18000000, 0xf000, 0xffffff80, 0xffffffff, 0x0, 0xf0000000, 0xffffffff, 0x0, 0x0, 0x7ff80000, 0x900d80, 0x6400000, 0xfc00ff80, 0xffffffff, 0xffffffff, 0x300, 0x3000000, 0xffffffe0, 0xff00, 0x0, 0x0, 0xfff8, 0x200, 0x800000, 0xffc0, 0xe000, 0x30000, 0xff800100, 0x480, 0x4b800000, 0xfc00ff00, 0x240, 0xfe048000, 0xfffffc00, 0xffffffff, 0xfe000000, 0x20000, 0x38000000, 0xffffffff, 0xfffeffff, 0x0, 0x7ffc0000, 0x0, 0xffe08000, 0xfffffff0, 0xffffffff, 0xffff, 0x0, 0xffc00000, 0xffffffff, 0x80000000, 0x3c00, 0xfc00, 0xffc0c000, 0x400ffc0, 0x1f000004, 0xffff0000, 0xffffffff, 0xf8000000, 0xffffffff, 0x7800, 0x0, 0x7f00, 0xffffffff, 0xffffffff, 0xfffcffe0, 0xffffffff, 0x9010ffff, 0x0, 0xfffbfff8, 0xffd8ffff, 0xff0f, 0x0, 0xe000f800, 0xc00fe00, 0xfffffff0, 0x0, 0x180, 0x0, 0xfffff800, 0xffffffc0, 0xffffffff, 0xfff00000, 0xfff00000, 0xff800000, 0xfe000000, 0x200000, 0x0, 0x20000000, 0x1400219b, 0x10, 0x0, 0x20201840, 0x84000000, 0x203a0, 0x0, 0x0, 0xc0, 0x3000, 0x0, 0x7fff000, 0xffff0001, 0x80000000, 0xfffff81f, 0x6000080, 0xf824, 0x0, 0xffffc000, 0xffff7fff, 0xffffffff, 0x0, 0xc000e000, 0xffff3c00, 0xffffffff, 0xffff, 0xffff8000, 0x0, 0x7c000000, 0xffff, 0xfc000000, 0xffffffff, 0x80009080, 0xff800060, 0xffffffff, 0x3c00f000, 0xffffffff, 0xffffffff, 0x1ffff, 0x0, 0xffe00000, 0x1, 0xc0000000, 0x10, 0xf5080169, 0x5569157b, 0xa1080869, 0xf0000400, 0xf0000411, 0xffffffff, 0xfffcffff, 0xfff00000, 0x18000, 0x10001, 0xffc00000, 0xffffffff, 0x3f, 0xfff8, 0xf0000000, 0xfffcfe00, 0xffffffc0, 0xf000000, 0xe000e000, 0x0, 0x7800000, 0xfc000000, 0xfffef000, 0xfc00ff00, 0x0, 0xff00, 0xfffcc000, 0xfff00000, 0xe000c000, 0xfe00, 0x40000000, 0xf0003fc0, 0xfe00fe00, 0x80000, 0x0, 0xfffff800, 0xfc00ffff, 0xc0000000, 0x0, 0x0, 0xfffc, 0x0, 0xfffe, 0xf800, 0x0, 0x0, 0xffff0000, 0xfffffffd, 0x0, 0x0, 0xc0000000, 0x0, 0xc0000000]); +enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(cast(immutable size_t[]) x" +00000000000000200000009800000298", +cast(immutable size_t[]) x" +00000080000000F000000400000043C0", +cast(immutable size_t[]) x" +0302010007060504090801010B0B0B0A0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B +0B0B0B0B0B0B0B0B0B0B0B0C0D0101010D01010100000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000010000000300020005000400070006 +00090008000B000A000D000C000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D +000D000D000D000D000D000D000D000D000E000D000D000F000D000D000D000D000D000D000D000D0010000D000D000D +000D000D000D000D000D000D00120011001400130016001500180017001A0019001C001B001E001D001F000D001D001D +0020001D001D001D001D001D001D001D001D001D00220021000D000D000D000D0023000D0024000D001D001D001D001D +001D001D0025001D001D00260027001D001D001D0028001D002A0029002C002B002E002D0030002F00320031001D0033 +000D000D000D000D000D000D000D000D0034000D000D000D0035000D000D0036000D000D0037000D000D000D000D000D +000D000D00390038001D001D001D003A000D000D000D000D000D003B000D000D001D003C001D001D001D001D001D001D +001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D003D001D001D001D001D001D001D +001D001D001D001D001D001D001D001D000D000D000D000D000D000D000D000D000D000D000D000D000D000D003E000D +000D000D000D000D000D000D000D000D000D000D000D000D000D000D003E000D00000000000000000000000000000000 +0000000000000000000100000000000200000000000000000004000300060005000000000000000000080007000A0009 +000C000B0000000D00000000000F000E0011001000130012001500140017001600190018001B001A001D001C001F001E +002100200023002200240000002600250000000000270000000000000000000000280000002A0029002C002B002E002D +00000000000000000000000000000000000000000030002F00320031003300000030002D003500340037003600390038 +003B003A003D003C003E0000003F00000041004000430042000000000000000000000000000000000045004400470046 +00480000004A0049000000000000004B00000000000000000000000000000000004D004C000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000004E00000000004F +000000000050000000520051005400530055000000570056000000000058000000590000000000040000005A005C005B +0000005D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000005F005E00000000000000000000006000610000000000000062000000610063006400000065000000660000 +00680067006900000038006A006B000000000000000000000000000000000000000000000000000000000000006D006C +00000000000000000000000000000000006E0000006F0000007100700072000000000000000000000000000000740073 +0075002D007600000000005900780077007A0079007B00000000007C007E007D007F007F0080002F0082008100840083 +000000000086008500880087007F00890000000000000000008A0067007F008B004F008C008E008D007F008F00730090 +009200910094009300960095007F009700980000009A0099007F009B007F007F009C007F009E009D009F008700A100A0 +00A2000000A3000000A4004600A5000000A700A600A900A800AB00AA007F007F00AC000000AD0000007F007F005500AE +00AF000000B100B000B300B2007F007F007F00B400B600B500B800B700BA00B900BB0000003000BC007F00B1007F007F +00BE00BD007F00BF00C100C0007F00C2007F007F00C3007F006F00C400C600C500000000000000000000000000000000 +000000000000000000000000007F006F00C700000000000000C80000007F007F007F007F007F007F007F007F007F007F +007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F +007F007F007F007F007F007F009900C900CA0000007F007F007F007F007F007F007F007F007F007F007F007F007F007F +0000000000000000000000000000000000B30000007F007F007F007F007F007F00000000000000000000000000000000 +00CB003000CC007700CD0000007F00CE007F007F007F007F007F007F007F007F0000007F007F00CF00D0000000D200D1 +00000000000000000000000000000000000000000000000000000000006100000000000000CA0000007F0098007F007F +007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00D3007F +000000000000000000D500D4000000000000000000B40000007F007F007F007F00D60000007F00D7007F007F007F007F +007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F005F006E00C80000 +0000000000350000000000D800D9000000DA000000DB007F00DC0000007F007F00DD000000DF00DE00E100E000000000 +00000000000000E20000000000E300000000000000000000000000000000000000000000007F00E4007F007F007F007F +007F007F007F007F007F007F007F007F007F007F007F007F007F00E5007F007F00E700E6007F00E800EA00E9007F007F +007F007F00EC00EB007F007F007F007F007F007F00ED007F007F007F007F007F007F007F007F007F007F007F00EE007F +0000000000EF000000F00000007F007F007F007F007F007F007F007F007F007F00F1007F007F00F2007F00F3007F007F +00F500F400F700F6007F007F007F007F0000003800F900F80000000000FA00E700FC00FB007F007F0000000000000000 +000000000000000000000000000000000000000000FD000000FE000000FF00000100004B007F01010000000000000000 +010200000104010300000000010601050000000000000000000000000000000000000000009300000000000000000000 +000000000000000000000000000000000000000000000000000000B00000000000000107000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000001080000000000000000 +000000000000000000000000000000000000000000000000000000000109000000000000000000000000000000000000 +00550000007F007F007F007F007F007F00000000000000000000000000000000007F0055007F007F007F007F007F007F +000000000000000000000000000000000000000000000000010A00000000000000000000000000000000000000000000 +000000000000000000000000007F010B0000010C007F007F00000000010B0000007F007F007F007F007F007F007F007F +00000000000000000000000000000000000000000000000000000000010D000000000000000000000000000000000000 +000000000000000000000000010D0000000000000000000000000000030000000000280F000000040000000000010000 +018000000000000000011800000000000000FF00FFE078000000400000000000000018000000000000000000FFFC0000 +0000000018000000000000008000C000B00000000000F80000FC800000000000000660100C3A02004F7F866080000030 +000678112C920200A1FDC678FF80003F000440110C120200FFFEC44001FC0030000660110C1202004F1FC660FF000030 +29C238133C0038E7FF7EC238F800003F000220000C000200D89FC220007F0030000220000C1002009F9FC220FFF10030 +0002200000000000000F02200000003003800011D004000000A07B80FFE3003F0000000178000000F0000000FFFFFFFF +00000829C00000500C0080A0FFFFFFFF000001000001E0000100000020000000F8002000FFFFFFFF0000DF4000000000 +C280C200000000000000C20080C20000008000C20000000000C200000000000018000000E0000000FC00000000000000 +00000000C0C00000E00000000000000000000000FE0000007FC00000FF800000FFF00000FFF22000C0000000FC00FC00 +000000000000F80000000000FFC0000080000000F000F0000000000EFFE0C000000000000000F0003800FC0000000000 +30000000000000008000000060000000FC00FC000000C000FFFF8000FFFFFFFF0000E00080000000000000000FF00000 +000000000700000000001C00000000000000FE00180000000000FF00F8000000C0C00000000000005500C0C0C0000000 +0000000000200000103000208023000000000000000C0020E0008000000000000000FFFEFFFE00000000F00000000000 +00000000FFFFFF80FFFFF80000000000000000000030000000400000000000000000000001F00000000000000000DF40 +000000007FFE7F00FF800000808080808080808000000000C0000000FFFFFFFF040000000000000000000000FFF00000 +FFC000000000FFFF00000001000000000000001F0001000000008000000000000000000000007FF08000000000000000 +0000E000000000000000FF800000000000000000FFFFF00000000000FF000000FC14F8000003FFFF00000000FC00E000 +FC003FC0000000007FF00000E00000003C0040008000000000000000FF8000000C00C0000000000007FFFFF8FF800000 +FF8181810000808000000000FC00C000000000000000FFF000000780F0000000000000000000C000FC000000FFFFFFFF +1F07FF80A080000000000024000000000007FFF8000000000003000000000000FFFF7F000000FFFF000800000020F080 +00000000600000000000000080000000E3030303C1FF80800000100048000080C000C000FFFFFFFF00000000F8000000 +0000007800700000E0008000FFFFFFFE0000FFFFC0000000FFFFFFFFFFFFFFFFFFFE0000F00000000000000000001FF0 +0000F800F80000004000000000000000FFC000F0FFFFFFFFC00000000000FC0000F00000F0000000000000000000FF00 +0000000008007FF000480800E4040004FFC00000FFFFFF0000000040F8020000000002C06E40000080000000FFFF007F +FFFFFFFF07C80000700000007C000000000000000F00000001100F9078C00000FE00FE000000000000000000FFFFFFFF +00000000FF8007800000000001C0000000C0000000F80000E1FC0000FFFF01FFFFFFFE00FFFFFFFF00000000FFF80000 +0000000003F8000000000000FC00FF00FFFFFFFF8000000000000000FFFCC400FFFFFFFF1FFFFFFFFC0000000000FFFF +FFFFFC000000FFFFFFFFF000FF8000000003C0007FC000000000DFF8FC00FE000000FF00FF80000000000000FFE00001 +0004000000000000FFFFFFFCFFFFFFFF400042800000FC0000000000FC00F80000066010041202001F7EC660FFE0E030 +10000000FFFFFFFCFC00FF00FFFFFFFF0000000000C00000FC00FFE0FFFFE00000000000FC000000FFFFFC00FFFFFFFF +180000000000F000FFFFFF80FFFFFFFF00000000F0000000FFFFFFFF00000000000000007FF8000000900D8006400000 +FC00FF80FFFFFFFFFFFFFFFF0000030003000000FFFFFFE00000FF0000000000000000000000FFF80000020000800000 +0000FFC00000E00000030000FF800100000004804B800000FC00FF0000000240FE048000FFFFFC00FFFFFFFFFE000000 +0002000038000000FFFFFFFFFFFEFFFF000000007FFC000000000000FFE08000FFFFFFF0FFFFFFFF0000FFFF00000000 +FFC00000FFFFFFFF8000000000003C000000FC00FFC0C0000400FFC01F000004FFFF0000FFFFFFFFF8000000FFFFFFFF +000078000000000000007F00FFFFFFFFFFFFFFFFFFFCFFE0FFFFFFFF9010FFFF00000000FFFBFFF8FFD8FFFF0000FF0F +00000000E000F8000C00FE00FFFFFFF0000000000000018000000000FFFFF800FFFFFFC0FFFFFFFFFFF00000FFF00000 +FF800000FE0000000020000000000000200000001400219B00000010000000002020184084000000000203A000000000 +00000000000000C0000030000000000007FFF000FFFF000180000000FFFFF81F060000800000F82400000000FFFFC000 +FFFF7FFFFFFFFFFF00000000C000E000FFFF3C00FFFFFFFF0000FFFFFFFF8000000000007C0000000000FFFFFC000000 +FFFFFFFF80009080FF800060FFFFFFFF3C00F000FFFFFFFFFFFFFFFF0001FFFF00000000FFE0000000000001C0000000 +00000010F50801695569157BA1080869F0000400F0000411FFFFFFFFFFFCFFFFFFF000000001800000010001FFC00000 +FFFFFFFF0000003F0000FFF8F0000000FFFCFE00FFFFFFC00F000000E000E0000000000007800000FC000000FFFEF000 +FC00FF00000000000000FF00FFFCC000FFF00000E000C0000000FE0040000000F0003FC0FE00FE000008000000000000 +FFFFF800FC00FFFFC000000000000000000000000000FFFC000000000000FFFE0000F8000000000000000000FFFF0000 +FFFFFFFD0000000000000000C000000000000000C0000000", +); enum MAX_SIMPLE_LOWER = 1433; enum MAX_SIMPLE_UPPER = 1450; enum MAX_SIMPLE_TITLE = 1454; //10496 bytes -enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xf80], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x150000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x180000, 0x19, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x0, 0x0, 0x220000, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x240000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0000, 0x2b, 0x2d002c, 0x2f002e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x300000, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x330000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x350034, 0x360000, 0x0, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c003b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5aaffff, 0x1c001b, 0x1e001d, 0x20001f, 0x220021, 0x240023, 0x260025, 0x280027, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0xffff0031, 0x330032, 0x350034, 0x370036, 0x390038, 0x3affff, 0x3bffff, 0x3cffff, 0x3dffff, 0x3effff, 0x3fffff, 0x40ffff, 0x41ffff, 0x42ffff, 0x43ffff, 0x44ffff, 0x45ffff, 0x46ffff, 0x47ffff, 0x48ffff, 0x49ffff, 0x4affff, 0x4bffff, 0x4cffff, 0x4dffff, 0x4effff, 0x4fffff, 0x50ffff, 0x51ffff, 0x5205ac, 0x53ffff, 0x54ffff, 0x55ffff, 0xffffffff, 0xffff0056, 0xffff0057, 0xffff0058, 0xffff0059, 0xffff005a, 0xffff005b, 0xffff005c, 0x5c9005d, 0x5effff, 0x5fffff, 0x60ffff, 0x61ffff, 0x62ffff, 0x63ffff, 0x64ffff, 0x65ffff, 0x66ffff, 0x67ffff, 0x68ffff, 0x69ffff, 0x6affff, 0x6bffff, 0x6cffff, 0x6dffff, 0x6effff, 0x6fffff, 0x70ffff, 0x71ffff, 0x72ffff, 0x73ffff, 0x74ffff, 0xffffffff, 0xffff0075, 0xffff0076, 0x780077, 0xffff0079, 0x7affff, 0x7bffff, 0xffffffff, 0xffff007c, 0xffffffff, 0xffff007d, 0xffffffff, 0xffffffff, 0xffff007e, 0x7fffff, 0xffffffff, 0x80ffff, 0xffff0081, 0xffffffff, 0xffff0082, 0x83ffff, 0x84ffff, 0x85ffff, 0xffffffff, 0xffff0086, 0xffffffff, 0x87ffff, 0xffffffff, 0xffff0088, 0xffffffff, 0xffff0089, 0xffff008a, 0x8bffff, 0xffffffff, 0x8cffff, 0x8dffff, 0xffffffff, 0xffffffff, 0x8effff, 0xffff008f, 0x910090, 0x92ffff, 0xffff0093, 0xffff0094, 0xffff0095, 0xffff0096, 0xffff0097, 0xffff0098, 0xffff0099, 0xffff009a, 0x9c009b, 0x9dffff, 0x9effff, 0x9fffff, 0xa0ffff, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xffff05d1, 0xa700a6, 0xa8ffff, 0xffffffff, 0xa9ffff, 0xaaffff, 0xabffff, 0xacffff, 0xadffff, 0xaeffff, 0xafffff, 0xb0ffff, 0xb1ffff, 0xb2ffff, 0xb3ffff, 0xb4ffff, 0xb5ffff, 0xb6ffff, 0xb7ffff, 0xb8ffff, 0xb9ffff, 0xbaffff, 0xbbffff, 0xbcffff, 0xffffffff, 0xbdffff, 0xbeffff, 0xbfffff, 0xc0ffff, 0xc1ffff, 0xc2ffff, 0xc3ffff, 0xc4ffff, 0xc5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00c6, 0xc7ffff, 0xffff00c8, 0xffff00c9, 0xffffffff, 0xcaffff, 0xcbffff, 0xccffff, 0xcdffff, 0xceffff, 0xd000cf, 0xd200d1, 0xffff00d3, 0xd500d4, 0xd6ffff, 0xd7ffff, 0xffff00d8, 0xffffffff, 0xda00d9, 0xdbffff, 0xdcffff, 0xffff00dd, 0xdf00de, 0xe100e0, 0xffff00e2, 0xe3ffff, 0xe4ffff, 0xffff00e5, 0xe6ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xe7ffff, 0xffffffff, 0xffff00e8, 0xea00e9, 0xffffffff, 0xebffff, 0xed00ec, 0xef00ee, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffff00f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf2ffff, 0xffff00f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf4ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf5ffff, 0xf6ffff, 0xffffffff, 0xf7ffff, 0xffffffff, 0xf8ffff, 0xfa00f9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff05cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfc00fb, 0xfe00fd, 0xff05ce, 0x1010100, 0x1030102, 0x1050104, 0x1070106, 0x1090108, 0x10b010a, 0x10d010c, 0x10f010e, 0x1110110, 0x1130112, 0x1150114, 0x1170116, 0x1190118, 0x11b011a, 0xffff011c, 0x11e011d, 0xffffffff, 0x11fffff, 0x1210120, 0x122ffff, 0x123ffff, 0x124ffff, 0x125ffff, 0x126ffff, 0x127ffff, 0x128ffff, 0x129ffff, 0x12affff, 0x12bffff, 0x12cffff, 0x12dffff, 0x12f012e, 0x1310130, 0x132ffff, 0xffffffff, 0xffff0133, 0x134ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1360135, 0x1380137, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0x14c014b, 0x14e014d, 0x150014f, 0x1520151, 0x1540153, 0x1560155, 0x1580157, 0x15a0159, 0x15c015b, 0x15e015d, 0x160015f, 0x1620161, 0x1640163, 0x165ffff, 0x166ffff, 0x167ffff, 0x168ffff, 0x169ffff, 0x16affff, 0x16bffff, 0x16cffff, 0x16dffff, 0x16effff, 0x16fffff, 0x170ffff, 0x171ffff, 0x172ffff, 0x173ffff, 0x174ffff, 0x175ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x176ffff, 0x177ffff, 0x178ffff, 0x179ffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0x17fffff, 0x180ffff, 0x181ffff, 0x182ffff, 0x183ffff, 0x184ffff, 0x185ffff, 0x186ffff, 0x187ffff, 0x188ffff, 0x189ffff, 0x18affff, 0x18bffff, 0x18cffff, 0x18dffff, 0x18effff, 0x18fffff, 0x190ffff, 0xffffffff, 0xffff0191, 0xffff0192, 0xffff0193, 0xffff0194, 0xffff0195, 0xffff0196, 0x1980197, 0x199ffff, 0x19affff, 0x19bffff, 0x19cffff, 0x19dffff, 0x19effff, 0x19fffff, 0x1a0ffff, 0x1a1ffff, 0x1a2ffff, 0x1a3ffff, 0x1a4ffff, 0x1a5ffff, 0x1a6ffff, 0x1a7ffff, 0x1a8ffff, 0x1a9ffff, 0x1aaffff, 0x1abffff, 0x1acffff, 0x1adffff, 0x1aeffff, 0x1afffff, 0x1b0ffff, 0x1b1ffff, 0x1b2ffff, 0x1b3ffff, 0x1b4ffff, 0x1b5ffff, 0x1b6ffff, 0x1b7ffff, 0x1b8ffff, 0x1b9ffff, 0x1baffff, 0x1bbffff, 0x1bcffff, 0x1bdffff, 0x1beffff, 0x1bfffff, 0x1c0ffff, 0x1c1ffff, 0x1c2ffff, 0x1c3ffff, 0x1c4ffff, 0x1c5ffff, 0x1c6ffff, 0x1c7ffff, 0x1c8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1c9ffff, 0x1cb01ca, 0x1cd01cc, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0x1d501d4, 0x1d701d6, 0x1d901d8, 0x1db01da, 0x1dd01dc, 0x1df01de, 0x1e101e0, 0x1e301e2, 0x1e501e4, 0x1e701e6, 0x1e901e8, 0x1eb01ea, 0x1ed01ec, 0x5bd01ee, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f001ef, 0x1f201f1, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fc01fb, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0xffff0219, 0x21affff, 0x21c021b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x21e021d, 0x220021f, 0x2220221, 0xffffffff, 0x2240223, 0x2260225, 0x2280227, 0x22a0229, 0xffff022b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x22cffff, 0xffffffff, 0x22dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff022e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x22fffff, 0x230ffff, 0x231ffff, 0x232ffff, 0x233ffff, 0x234ffff, 0x235ffff, 0x236ffff, 0x237ffff, 0x238ffff, 0x239ffff, 0x23affff, 0x23bffff, 0x23cffff, 0x23dffff, 0x23effff, 0x23fffff, 0x240ffff, 0x241ffff, 0x242ffff, 0x243ffff, 0x244ffff, 0x245ffff, 0x246ffff, 0x247ffff, 0x248ffff, 0x249ffff, 0x24affff, 0x24bffff, 0x24cffff, 0x24dffff, 0x24effff, 0x24fffff, 0x250ffff, 0x251ffff, 0x252ffff, 0x253ffff, 0x254ffff, 0x255ffff, 0x256ffff, 0x257ffff, 0x258ffff, 0x259ffff, 0x25affff, 0x25bffff, 0x25cffff, 0x25dffff, 0x25effff, 0x25fffff, 0x260ffff, 0x261ffff, 0x262ffff, 0x263ffff, 0x264ffff, 0x265ffff, 0x266ffff, 0x267ffff, 0x268ffff, 0x269ffff, 0x26affff, 0x26bffff, 0x26cffff, 0x26dffff, 0x26effff, 0x26fffff, 0x270ffff, 0x271ffff, 0x272ffff, 0x273ffff, 0x274ffff, 0x275ffff, 0x276ffff, 0x277ffff, 0x278ffff, 0x279ffff, 0x5d505d3, 0x5d905d7, 0x27a05db, 0xffffffff, 0xffffffff, 0x27bffff, 0x27cffff, 0x27dffff, 0x27effff, 0x27fffff, 0x280ffff, 0x281ffff, 0x282ffff, 0x283ffff, 0x284ffff, 0x285ffff, 0x286ffff, 0x287ffff, 0x288ffff, 0x289ffff, 0x28affff, 0x28bffff, 0x28cffff, 0x28dffff, 0x28effff, 0x28fffff, 0x290ffff, 0x291ffff, 0x292ffff, 0x293ffff, 0x294ffff, 0x295ffff, 0x296ffff, 0x297ffff, 0x298ffff, 0x299ffff, 0x29affff, 0x29bffff, 0x29cffff, 0x29dffff, 0x29effff, 0x29fffff, 0x2a0ffff, 0x2a1ffff, 0x2a2ffff, 0x2a3ffff, 0x2a4ffff, 0x2a5ffff, 0x2a6ffff, 0x2a7ffff, 0x2a8ffff, 0x2a9ffff, 0x2aaffff, 0x2ac02ab, 0x2ae02ad, 0x2b002af, 0x2b202b1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2b402b3, 0x2b602b5, 0x2b802b7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ba02b9, 0x2bc02bb, 0x2be02bd, 0x2c002bf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2c202c1, 0x2c402c3, 0x2c602c5, 0x2c802c7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ca02c9, 0x2cc02cb, 0x2ce02cd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2cf05dd, 0x2d005df, 0x2d105e2, 0x2d205e5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d402d3, 0x2d602d5, 0x2d802d7, 0x2da02d9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2dc02db, 0x2de02dd, 0x2e002df, 0x2e202e1, 0x2e402e3, 0x2e602e5, 0x2e802e7, 0xffffffff, 0x6080606, 0x60c060a, 0x610060e, 0x6140612, 0x6180616, 0x61c061a, 0x620061e, 0x6240622, 0x6280626, 0x62c062a, 0x630062e, 0x6340632, 0x6380636, 0x63c063a, 0x640063e, 0x6440642, 0x6480646, 0x64c064a, 0x650064e, 0x6540652, 0x6580656, 0x65c065a, 0x660065e, 0x6640662, 0x3020301, 0x6660672, 0xffff0674, 0x67e05e8, 0xffffffff, 0xffffffff, 0xffff0668, 0xffff0304, 0xffffffff, 0x66a0676, 0xffff0678, 0x68105ea, 0xffffffff, 0xffffffff, 0xffff066c, 0xffffffff, 0x3070306, 0x5ef05ec, 0xffffffff, 0x5f405f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3090308, 0x5fa05f7, 0x30a05fd, 0x60105ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x66e067a, 0xffff067c, 0x6840604, 0xffffffff, 0xffffffff, 0xffff0670, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff030c, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30e030d, 0x310030f, 0x3120311, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0x31c031b, 0xffffffff, 0xffffffff, 0xffff031d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31f031e, 0x3210320, 0x3230322, 0x3250324, 0x3270326, 0x3290328, 0x32b032a, 0x32d032c, 0x32f032e, 0x3310330, 0x3330332, 0x3350334, 0x3370336, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3390338, 0x33b033a, 0x33d033c, 0x33f033e, 0x3410340, 0x3430342, 0x3450344, 0x3470346, 0x3490348, 0x34b034a, 0x34d034c, 0x34f034e, 0x3510350, 0x3530352, 0x3550354, 0x3570356, 0x3590358, 0x35b035a, 0x35d035c, 0x35f035e, 0x3610360, 0x3630362, 0x3650364, 0x3670366, 0x368ffff, 0xffffffff, 0x369ffff, 0xffff036a, 0xffff036b, 0xffff036c, 0xffff036d, 0xffffffff, 0xffffffff, 0x36effff, 0xffffffff, 0xffff036f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x370ffff, 0x371ffff, 0x372ffff, 0x373ffff, 0x374ffff, 0x375ffff, 0x376ffff, 0x377ffff, 0x378ffff, 0x379ffff, 0x37affff, 0x37bffff, 0x37cffff, 0x37dffff, 0x37effff, 0x37fffff, 0x380ffff, 0x381ffff, 0x382ffff, 0x383ffff, 0x384ffff, 0x385ffff, 0x386ffff, 0x387ffff, 0x388ffff, 0x389ffff, 0x38affff, 0x38bffff, 0x38cffff, 0x38dffff, 0x38effff, 0x38fffff, 0x390ffff, 0x391ffff, 0x392ffff, 0x393ffff, 0x394ffff, 0x395ffff, 0x396ffff, 0x397ffff, 0x398ffff, 0x399ffff, 0x39affff, 0x39bffff, 0x39cffff, 0x39dffff, 0x39effff, 0x39fffff, 0x3a0ffff, 0x3a1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03a2, 0xffff03a3, 0xffffffff, 0x3a4ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3a603a5, 0x3a803a7, 0x3aa03a9, 0x3ac03ab, 0x3ae03ad, 0x3b003af, 0x3b203b1, 0x3b403b3, 0x3b603b5, 0x3b803b7, 0x3ba03b9, 0x3bc03bb, 0x3be03bd, 0x3c003bf, 0x3c203c1, 0x3c403c3, 0x3c603c5, 0x3c803c7, 0x3ca03c9, 0x3cbffff, 0xffffffff, 0xffffffff, 0x3ccffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3cdffff, 0x3ceffff, 0x3cfffff, 0x3d0ffff, 0x3d1ffff, 0x3d2ffff, 0x3d3ffff, 0x3d4ffff, 0x3d5ffff, 0x3d6ffff, 0x3d7ffff, 0x3d8ffff, 0x3d9ffff, 0x3daffff, 0x3dbffff, 0x3dcffff, 0x3ddffff, 0x3deffff, 0x3dfffff, 0x3e0ffff, 0x3e1ffff, 0x3e2ffff, 0x3e3ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3e4ffff, 0x3e5ffff, 0x3e6ffff, 0x3e7ffff, 0x3e8ffff, 0x3e9ffff, 0x3eaffff, 0x3ebffff, 0x3ecffff, 0x3edffff, 0x3eeffff, 0x3efffff, 0x3f0ffff, 0x3f1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3f2ffff, 0x3f3ffff, 0x3f4ffff, 0x3f5ffff, 0x3f6ffff, 0x3f7ffff, 0x3f8ffff, 0xffffffff, 0x3f9ffff, 0x3faffff, 0x3fbffff, 0x3fcffff, 0x3fdffff, 0x3feffff, 0x3ffffff, 0x400ffff, 0x401ffff, 0x402ffff, 0x403ffff, 0x404ffff, 0x405ffff, 0x406ffff, 0x407ffff, 0x408ffff, 0x409ffff, 0x40affff, 0x40bffff, 0x40cffff, 0x40dffff, 0x40effff, 0x40fffff, 0x410ffff, 0x411ffff, 0x412ffff, 0x413ffff, 0x414ffff, 0x415ffff, 0x416ffff, 0x417ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0418, 0xffff0419, 0x41affff, 0x41bffff, 0x41cffff, 0x41dffff, 0x41effff, 0xffffffff, 0xffffffff, 0xffff041f, 0xffffffff, 0x420ffff, 0x421ffff, 0xffff0422, 0x423ffff, 0x424ffff, 0x425ffff, 0x426ffff, 0x427ffff, 0x428ffff, 0x429ffff, 0x42affff, 0x42bffff, 0x42cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x42dffff, 0x42effff, 0x42fffff, 0x430ffff, 0x431ffff, 0x432ffff, 0x433ffff, 0x434ffff, 0xffffffff, 0xffffffff, 0xffff0435, 0xffff0436, 0xffffffff, 0xffffffff, 0x437ffff, 0xffffffff, 0xffffffff, 0x438ffff, 0x439ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff043a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43d043c, 0x43f043e, 0x4410440, 0x4430442, 0x4450444, 0x4470446, 0x4490448, 0x44b044a, 0x44d044c, 0x44f044e, 0x4510450, 0x4530452, 0x4550454, 0x4570456, 0x4590458, 0x45b045a, 0x45d045c, 0x45f045e, 0x4610460, 0x4630462, 0x4650464, 0x4670466, 0x4690468, 0x46b046a, 0x46d046c, 0x46f046e, 0x4710470, 0x4730472, 0x4750474, 0x4770476, 0x4790478, 0x47b047a, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x5af05ad, 0x5b305b1, 0x5b905b6, 0xffff05bb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5bfffff, 0x5c305c1, 0x5c705c5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x48cffff, 0x48e048d, 0x490048f, 0x4920491, 0x4940493, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0xffff04a5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4a704a6, 0x4a904a8, 0x4ab04aa, 0x4ad04ac, 0x4af04ae, 0x4b104b0, 0x4b304b2, 0x4b504b4, 0x4b704b6, 0x4b904b8, 0x4bb04ba, 0x4bd04bc, 0x4bf04be, 0x4c104c0, 0x4c304c2, 0x4c504c4, 0x4c704c6, 0x4c904c8, 0x4cb04ca, 0x4cd04cc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4cf04ce, 0x4d104d0, 0x4d304d2, 0x4d504d4, 0x4d704d6, 0x4d904d8, 0x4db04da, 0x4dd04dc, 0x4df04de, 0x4e104e0, 0x4e304e2, 0x4e504e4, 0x4e704e6, 0x4e904e8, 0x4eb04ea, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4f2ffff, 0x4f404f3, 0x4f604f5, 0x4f804f7, 0x4fa04f9, 0x4fc04fb, 0x4fdffff, 0x4ff04fe, 0x5010500, 0x5030502, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50cffff, 0x50e050d, 0x510050f, 0x5120511, 0x513ffff, 0xffff0514, 0xffffffff, 0x5160515, 0x5180517, 0x51a0519, 0x51c051b, 0x51e051d, 0x520051f, 0x5220521, 0x5240523, 0x5260525, 0x5280527, 0x52a0529, 0x52c052b, 0x52e052d, 0x530052f, 0x5320531, 0x5340533, 0x5360535, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0xffff0547, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5490548, 0x54b054a, 0x54d054c, 0x54f054e, 0x5510550, 0x5530552, 0x5550554, 0x5570556, 0x5590558, 0x55b055a, 0x55d055c, 0x55f055e, 0x5610560, 0x5630562, 0x5650564, 0x5670566, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5690568, 0x56b056a, 0x56d056c, 0x56f056e, 0x5710570, 0x5730572, 0x5750574, 0x5770576, 0x5790578, 0x57b057a, 0x57d057c, 0x57f057e, 0x5810580, 0x5830582, 0x5850584, 0x5870586, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5890588, 0x58b058a, 0x58d058c, 0x58f058e, 0x5910590, 0x5930592, 0x5950594, 0x5970596, 0x5990598, 0x59b059a, 0x59d059c, 0x59f059e, 0x5a105a0, 0x5a305a2, 0x5a505a4, 0x5a705a6, 0x5a905a8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +000001000000048000000F80", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000300020005000400070006000900080000000A000B0000000D000C +000F000E0011001000130012000000140000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000015000000000000000000000000000000000000000000000016000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000170018000000000019001B001A001D001C001F001E0021002000000000000000000022000000000023 +000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000260025002800270000002900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002A00000000002B002D002C002F002E00000000000000000000000000000000 +000000000000000000300000000000310000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000032000000000000000000000000000000000000000000000000000000000033000000000000 +000000000000000000000000000000000000000000000000000000000000000000350034003600000000000000000037 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000039000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000003A0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003C003B000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00020001000400030006000500080007000A0009000C000B000E000D +0010000F00120011001400130016001500180017FFFF0019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AAFFFF001C001B001E001D0020001F00220021 +002400230026002500280027002A0029002C002B002E002D0030002FFFFF003100330032003500340037003600390038 +003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003FFFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF +0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004BFFFF004CFFFF004DFFFF004EFFFF004FFFFF0050FFFF0051FFFF +005205AC0053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C +05C9005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF +0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF +FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF +FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF +FFFFFFFFFFFFFFFF008EFFFFFFFF008F009100900092FFFFFFFF0093FFFF0094FFFF0095FFFF0096FFFF0097FFFF0098 +FFFF0099FFFF009A009C009B009DFFFF009EFFFF009FFFFF00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF +FFFF05D100A700A600A8FFFFFFFFFFFF00A9FFFF00AAFFFF00ABFFFF00ACFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF +00B1FFFF00B2FFFF00B3FFFF00B4FFFF00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF +FFFFFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00C600C7FFFFFFFF00C8FFFF00C9FFFFFFFF00CAFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF +00D000CF00D200D1FFFF00D300D500D400D6FFFF00D7FFFFFFFF00D8FFFFFFFF00DA00D900DBFFFF00DCFFFFFFFF00DD +00DF00DE00E100E0FFFF00E200E3FFFF00E4FFFFFFFF00E500E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFFFFFFFFFF +FFFF00E800EA00E9FFFFFFFF00EBFFFF00ED00EC00EF00EEFFFF00F0FFFFFFFFFFFFFFFFFFFF00F1FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F2FFFFFFFF00F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F5FFFF00F6FFFFFFFFFFFF00F7FFFF +FFFFFFFF00F8FFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF05CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00FC00FB00FE00FD00FF05CE0101010001030102010501040107010601090108010B010A010D010C +010F010E0111011001130112011501140117011601190118011B011AFFFF011C011E011DFFFFFFFF011FFFFF01210120 +0122FFFF0123FFFF0124FFFF0125FFFF0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF +012F012E013101300132FFFFFFFFFFFFFFFF01330134FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0136013501380137013A0139013C013B +013E013D0140013F01420141014401430146014501480147014A0149014C014B014E014D0150014F0152015101540153 +0156015501580157015A0159015C015B015E015D0160015F01620161016401630165FFFF0166FFFF0167FFFF0168FFFF +0169FFFF016AFFFF016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF +0175FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0176FFFF0177FFFF0178FFFF0179FFFF017AFFFF017BFFFF017CFFFF +017DFFFF017EFFFF017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF +0189FFFF018AFFFF018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFFFFFFFFFFFFFF0191FFFF0192FFFF0193 +FFFF0194FFFF0195FFFF0196019801970199FFFF019AFFFF019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF +01A1FFFF01A2FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF +01ADFFFF01AEFFFF01AFFFFF01B0FFFF01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF +01B9FFFF01BAFFFF01BBFFFF01BCFFFF01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF +01C5FFFF01C6FFFF01C7FFFF01C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01C9FFFF01CB01CA01CD01CC01CF01CE01D101D001D301D201D501D401D701D6 +01D901D801DB01DA01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC05BD01EE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F001EF01F201F101F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF020202010204020302060205 +02080207020A0209020C020B020E020D0210020F02120211021402130216021502180217FFFF0219021AFFFF021C021B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF021E021D0220021F02220221FFFFFFFF022402230226022502280227022A0229 +FFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFF0230FFFF0231FFFF0232FFFF +0233FFFF0234FFFF0235FFFF0236FFFF0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF +023FFFFF0240FFFF0241FFFF0242FFFF0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF +024BFFFF024CFFFF024DFFFF024EFFFF024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF +0257FFFF0258FFFF0259FFFF025AFFFF025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF +0263FFFF0264FFFF0265FFFF0266FFFF0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF +026FFFFF0270FFFF0271FFFF0272FFFF0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF05D505D3 +05D905D7027A05DBFFFFFFFFFFFFFFFF027BFFFF027CFFFF027DFFFF027EFFFF027FFFFF0280FFFF0281FFFF0282FFFF +0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF +028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF +029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF +02A7FFFF02A8FFFF02A9FFFF02AAFFFF02AC02AB02AE02AD02B002AF02B202B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B402B302B602B502B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BA02B902BC02BB02BE02BD02C002BF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C202C102C402C302C602C502C802C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CA02C902CC02CB02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02CF05DD02D005DF02D105E202D205E5 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D402D302D602D502D802D702DA02D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02DC02DB02DE02DD02E002DF02E202E102E402E302E602E502E802E7FFFFFFFF06080606060C060A0610060E06140612 +06180616061C061A0620061E0624062206280626062C062A0630062E0634063206380636063C063A0640063E06440642 +06480646064C064A0650064E0654065206580656065C065A0660065E066406620302030106660672FFFF0674067E05E8 +FFFFFFFFFFFFFFFFFFFF0668FFFF0304FFFFFFFF066A0676FFFF0678068105EAFFFFFFFFFFFFFFFFFFFF066CFFFFFFFF +0307030605EF05ECFFFFFFFF05F405F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0309030805FA05F7030A05FD060105FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF066E067AFFFF067C06840604FFFFFFFFFFFFFFFFFFFF0670FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030E030D0310030F03120311031403130316031503180317031A0319031C031BFFFFFFFFFFFFFFFFFFFF031DFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031F031E0321032003230322032503240327032603290328032B032A032D032C032F032E033103300333033203350334 +03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03390338033B033A033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E +0351035003530352035503540357035603590358035B035A035D035C035F035E03610360036303620365036403670366 +0368FFFFFFFFFFFF0369FFFFFFFF036AFFFF036BFFFF036CFFFF036DFFFFFFFFFFFFFFFF036EFFFFFFFFFFFFFFFF036F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0370FFFF0371FFFF0372FFFF0373FFFF0374FFFF0375FFFF0376FFFF0377FFFF +0378FFFF0379FFFF037AFFFF037BFFFF037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF +0384FFFF0385FFFF0386FFFF0387FFFF0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF +0390FFFF0391FFFF0392FFFF0393FFFF0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF +039CFFFF039DFFFF039EFFFF039FFFFF03A0FFFF03A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A2FFFF03A3 +FFFFFFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A603A503A803A703AA03A903AC03AB +03AE03AD03B003AF03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C3 +03C603C503C803C703CA03C903CBFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CDFFFF03CEFFFF03CFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF +03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF +03E1FFFF03E2FFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E4FFFF03E5FFFF03E6FFFF03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF +03F0FFFF03F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFFFFFFFFFF03F9FFFF03FAFFFF03FBFFFF +03FCFFFF03FDFFFF03FEFFFF03FFFFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF +0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF +0414FFFF0415FFFF0416FFFF0417FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0419041AFFFF +041BFFFF041CFFFF041DFFFF041EFFFFFFFFFFFFFFFFFFFFFFFF041FFFFFFFFF0420FFFF0421FFFFFFFF04220423FFFF +0424FFFF0425FFFF0426FFFF0427FFFF0428FFFF0429FFFF042AFFFF042BFFFF042CFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFFFFFFFFFFFFFFFFFF +FFFF0435FFFF0436FFFFFFFFFFFFFFFF0437FFFFFFFFFFFFFFFFFFFF0438FFFF0439FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043D043C043F043E0441044004430442044504440447044604490448044B044A +044D044C044F044E0451045004530452045504540457045604590458045B045A045D045C045F045E0461046004630462 +046504640467046604690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A +047D047C047F047E0481048004830482048504840487048604890488048B048A05AF05AD05B305B105B905B6FFFF05BB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BFFFFF05C305C105C705C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF048CFFFF048E048D0490048F04920491049404930496049504980497049A0499 +049C049B049E049D04A0049F04A204A104A404A3FFFF04A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04A704A604A904A804AB04AA04AD04AC +04AF04AE04B104B004B304B204B504B404B704B604B904B804BB04BA04BD04BC04BF04BE04C104C004C304C204C504C4 +04C704C604C904C804CB04CA04CD04CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04CF04CE04D104D004D304D204D504D404D704D604D904D804DB04DA04DD04DC +04DF04DE04E104E004E304E204E504E404E704E604E904E804EB04EA04ED04EC04EF04EE04F104F0FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F2FFFF +04F404F304F604F504F804F704FA04F904FC04FB04FDFFFF04FF04FE0501050005030502050505040507050605090508 +050B050A050CFFFF050E050D0510050F051205110513FFFFFFFF0514FFFFFFFF0516051505180517051A0519051C051B +051E051D0520051F05220521052405230526052505280527052A0529052C052B052E052D0530052F0532053105340533 +0536053505380537053A0539053C053B053E053D0540053F054205410544054305460545FFFF0547FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05490548054B054A054D054C054F054E05510550055305520555055405570556 +05590558055B055A055D055C055F055E05610560056305620565056405670566FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05690568056B056A056D056C056F056E05710570057305720575057405770576 +05790578057B057A057D057C057F057E05810580058305820585058405870586FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF05890588058B058A058D058C058F058E0591059005930592059505940597059605990598059B059A059D059C +059F059E05A105A005A305A205A505A405A705A605A905A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10112 bytes -enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xec0], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x20000, 0x40003, 0x60005, 0x80007, 0x0, 0x90000, 0xb000a, 0xd000c, 0xf000e, 0x110010, 0x12, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x140013, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160015, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x0, 0x0, 0x190018, 0x1b001a, 0x1d001c, 0x1f001e, 0x0, 0x0, 0x210020, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x240023, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x290000, 0x2a, 0x2c002b, 0x2e002d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x31, 0x330032, 0x340000, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x250024, 0x270026, 0x290028, 0x2b002a, 0x2d002c, 0x2f002e, 0xffff0030, 0x320031, 0x340033, 0x360035, 0x5990037, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0038, 0xffff0039, 0xffff003a, 0xffff003b, 0xffff003c, 0xffff003d, 0xffff003e, 0xffff003f, 0xffff0040, 0xffff0041, 0xffff0042, 0xffff0043, 0xffff0044, 0xffff0045, 0xffff0046, 0xffff0047, 0xffff0048, 0xffff0049, 0xffff004a, 0xffff004b, 0xffff004c, 0xffff004d, 0xffff004e, 0xffff004f, 0xffff059a, 0xffff0051, 0xffff0052, 0xffff0053, 0x54ffff, 0x55ffff, 0x56ffff, 0x57ffff, 0x58ffff, 0x59ffff, 0x5affff, 0x5bffff, 0x5a9ffff, 0xffff005c, 0xffff005d, 0xffff005e, 0xffff005f, 0xffff0060, 0xffff0061, 0xffff0062, 0xffff0063, 0xffff0064, 0xffff0065, 0xffff0066, 0xffff0067, 0xffff0068, 0xffff0069, 0xffff006a, 0xffff006b, 0xffff006c, 0xffff006d, 0xffff006e, 0xffff006f, 0xffff0070, 0xffff0071, 0xffff0072, 0x740073, 0x75ffff, 0x76ffff, 0xffffffff, 0x77ffff, 0xffff0078, 0xffff0079, 0x7b007a, 0x7cffff, 0x7e007d, 0xffffffff, 0x80007f, 0x820081, 0x83ffff, 0xffff0084, 0x860085, 0xffff0087, 0xffffffff, 0x890088, 0x8affff, 0xffff008b, 0xffff008c, 0xffff008d, 0x8f008e, 0x90ffff, 0xffffffff, 0xffff0091, 0x930092, 0x94ffff, 0x960095, 0x97ffff, 0x98ffff, 0xffff0099, 0xffffffff, 0xffff009a, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c009b, 0x9dffff, 0xffff009e, 0xa0009f, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xa6ffff, 0xa7ffff, 0xa8ffff, 0xffffffff, 0xffff00a9, 0xffff00aa, 0xffff00ab, 0xffff00ac, 0xffff00ad, 0xffff00ae, 0xffff00af, 0xffff00b0, 0xffff00b1, 0xb205ac, 0xffff00b3, 0xffff00b4, 0xb600b5, 0xffff00b7, 0xffff00b8, 0xffff00b9, 0xffff00ba, 0xffff00bb, 0xffff00bc, 0xffff00bd, 0xffff00be, 0xffff00bf, 0xffff00c0, 0xffff00c1, 0xffff00c2, 0xffff00c3, 0xffff00c4, 0xffff00c5, 0xffff00c6, 0xffff00c7, 0xffff00c8, 0xffff00c9, 0xffff00ca, 0xffff00cb, 0xffff00cc, 0xffff00cd, 0xffff00ce, 0xffff00cf, 0xffff00d0, 0xffff00d1, 0xffff00d2, 0xffff00d3, 0xffff00d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xd600d5, 0xd7ffff, 0xffff00d8, 0xd9ffff, 0xdaffff, 0xdc00db, 0xffff00dd, 0xffff00de, 0xffff00df, 0xffff00e0, 0xffff00e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00e2, 0xffff00e3, 0xffffffff, 0xffff00e4, 0xffffffff, 0xffffffff, 0xffffffff, 0xe5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00e6, 0xe800e7, 0xffff00e9, 0xffff00ea, 0xec00eb, 0xed05aa, 0xef00ee, 0xf100f0, 0xf300f2, 0xf500f4, 0xf700f6, 0xf900f8, 0xfb00fa, 0xfd00fc, 0xfeffff, 0x10000ff, 0x1020101, 0x1040103, 0x1060105, 0xffffffff, 0xffffffff, 0xffff05ab, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x107ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0108, 0xffff0109, 0xffff010a, 0xffff010b, 0xffff010c, 0xffff010d, 0xffff010e, 0xffff010f, 0xffff0110, 0xffff0111, 0xffff0112, 0xffff0113, 0xffffffff, 0xffffffff, 0xffff0114, 0x115ffff, 0x116ffff, 0xffff0117, 0x118ffff, 0x11a0119, 0x11c011b, 0x11e011d, 0x120011f, 0x1220121, 0x1240123, 0x1260125, 0x1280127, 0x12a0129, 0x12c012b, 0x12e012d, 0x130012f, 0x1320131, 0x1340133, 0x1360135, 0x1380137, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff014b, 0xffff014c, 0xffff014d, 0xffff014e, 0xffff014f, 0xffff0150, 0xffff0151, 0xffff0152, 0xffff0153, 0xffff0154, 0xffff0155, 0xffff0156, 0xffff0157, 0xffff0158, 0xffff0159, 0xffff015a, 0xffff015b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff015c, 0xffff015d, 0xffff015e, 0xffff015f, 0xffff0160, 0xffff0161, 0xffff0162, 0xffff0163, 0xffff0164, 0xffff0165, 0xffff0166, 0xffff0167, 0xffff0168, 0xffff0169, 0xffff016a, 0xffff016b, 0xffff016c, 0xffff016d, 0xffff016e, 0xffff016f, 0xffff0170, 0xffff0171, 0xffff0172, 0xffff0173, 0xffff0174, 0xffff0175, 0xffff0176, 0x1780177, 0x179ffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0xffffffff, 0xffff017f, 0xffff0180, 0xffff0181, 0xffff0182, 0xffff0183, 0xffff0184, 0xffff0185, 0xffff0186, 0xffff0187, 0xffff0188, 0xffff0189, 0xffff018a, 0xffff018b, 0xffff018c, 0xffff018d, 0xffff018e, 0xffff018f, 0xffff0190, 0xffff0191, 0xffff0192, 0xffff0193, 0xffff0194, 0xffff0195, 0xffff0196, 0xffff0197, 0xffff0198, 0xffff0199, 0xffff019a, 0xffff019b, 0xffff019c, 0xffff019d, 0xffff019e, 0xffff019f, 0xffff01a0, 0xffff01a1, 0xffff01a2, 0xffff01a3, 0xffff01a4, 0xffff01a5, 0xffff01a6, 0xffff01a7, 0xffff01a8, 0xffff01a9, 0xffff01aa, 0xffff01ab, 0xffff01ac, 0xffff01ad, 0xffff01ae, 0x1afffff, 0x1b101b0, 0x1b301b2, 0x1b501b4, 0x1b701b6, 0x1b901b8, 0x1bb01ba, 0x1bd01bc, 0x1bf01be, 0x1c101c0, 0x1c301c2, 0x1c501c4, 0x1c701c6, 0x1c901c8, 0x1cb01ca, 0x1cd01cc, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0xffff01d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5a3ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1d601d5, 0x1d801d7, 0x1da01d9, 0x1dc01db, 0x1de01dd, 0x1e001df, 0x1e201e1, 0x1e401e3, 0x1e601e5, 0x1e801e7, 0x1ea01e9, 0x1ec01eb, 0x1ee01ed, 0x1f001ef, 0x1f201f1, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fbffff, 0xffffffff, 0xffffffff, 0x1fcffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0x21a0219, 0x21c021b, 0x21e021d, 0x220021f, 0x2220221, 0x2240223, 0x2260225, 0x2280227, 0x22a0229, 0x22c022b, 0x22e022d, 0x230022f, 0x2320231, 0x2340233, 0x2360235, 0x2380237, 0x23a0239, 0x23c023b, 0x23e023d, 0x240023f, 0x2420241, 0x2440243, 0x2460245, 0x2480247, 0x24a0249, 0x24c024b, 0x24e024d, 0x250024f, 0x2520251, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2540253, 0x2560255, 0x2580257, 0x25a0259, 0x25c025b, 0x25e025d, 0x260025f, 0x2620261, 0x2640263, 0x2660265, 0x2680267, 0x26a0269, 0x26c026b, 0x26e026d, 0x270026f, 0x2720271, 0x2740273, 0x2760275, 0x2780277, 0x27a0279, 0x27c027b, 0xffff027d, 0x27effff, 0x280027f, 0xffff0281, 0xffff0282, 0xffff0283, 0xffff0284, 0xffff0285, 0xffff0286, 0xffff0287, 0xffff0288, 0xffff0289, 0xffff028a, 0xffff028b, 0xffff028c, 0xffff028d, 0xffff028e, 0xffff028f, 0xffff0290, 0xffff0291, 0xffff0292, 0xffff0293, 0xffff0294, 0xffff0295, 0xffff0296, 0xffff0297, 0xffff0298, 0xffff0299, 0xffff029a, 0xffff029b, 0xffff029c, 0xffff029d, 0xffff029e, 0xffff029f, 0xffff02a0, 0xffff02a1, 0xffff02a2, 0xffff02a3, 0xffff02a4, 0xffff02a5, 0xffff02a6, 0xffff02a7, 0xffff02a8, 0xffff02a9, 0xffff02aa, 0xffff02ab, 0xffff02ac, 0xffff02ad, 0xffff02ae, 0xffff02af, 0xffff02b0, 0xffff02b1, 0xffff02b2, 0xffff02b3, 0xffff02b4, 0xffff02b5, 0xffff02b6, 0xffff02b7, 0xffff02b8, 0xffff02b9, 0xffff02ba, 0xffff02bb, 0xffff02bc, 0xffff02bd, 0xffff02be, 0xffff02bf, 0xffff02c0, 0xffff02c1, 0xffff02c2, 0xffff02c3, 0xffff02c4, 0xffff02c5, 0xffff02c6, 0xffff02c7, 0xffff02c8, 0xffff02c9, 0xffff02ca, 0xffff02cb, 0x5ae05ad, 0x5b005af, 0xffff05b1, 0xffffffff, 0xffff02cc, 0xffff02cd, 0xffff02ce, 0xffff02cf, 0xffff02d0, 0xffff02d1, 0xffff02d2, 0xffff02d3, 0xffff02d4, 0xffff02d5, 0xffff02d6, 0xffff02d7, 0xffff02d8, 0xffff02d9, 0xffff02da, 0xffff02db, 0xffff02dc, 0xffff02dd, 0xffff02de, 0xffff02df, 0xffff02e0, 0xffff02e1, 0xffff02e2, 0xffff02e3, 0xffff02e4, 0xffff02e5, 0xffff02e6, 0xffff02e7, 0xffff02e8, 0xffff02e9, 0xffff02ea, 0xffff02eb, 0xffff02ec, 0xffff02ed, 0xffff02ee, 0xffff02ef, 0xffff02f0, 0xffff02f1, 0xffff02f2, 0xffff02f3, 0xffff02f4, 0xffff02f5, 0xffff02f6, 0xffff02f7, 0xffff02f8, 0xffff02f9, 0xffff02fa, 0xffff02fb, 0xffff02fc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2fe02fd, 0x30002ff, 0x3020301, 0x3040303, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3060305, 0x3080307, 0x30a0309, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30c030b, 0x30e030d, 0x310030f, 0x3120311, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31c031b, 0x31e031d, 0x320031f, 0xffffffff, 0xffff05b2, 0xffff05b3, 0xffff05b4, 0xffff05b5, 0x321ffff, 0x322ffff, 0x323ffff, 0x324ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3260325, 0x3280327, 0x32a0329, 0x32c032b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5c305c2, 0x5c505c4, 0x5c705c6, 0x5c905c8, 0x5cb05ca, 0x5cd05cc, 0x5cf05ce, 0x5d105d0, 0x5d305d2, 0x5d505d4, 0x5d705d6, 0x5d905d8, 0x5db05da, 0x5dd05dc, 0x5df05de, 0x5e105e0, 0x5e305e2, 0x5e505e4, 0x5e705e6, 0x5e905e8, 0x5eb05ea, 0x5ed05ec, 0x5ef05ee, 0x5f105f0, 0xffffffff, 0x5f205f8, 0xffff05f9, 0x5fe05b6, 0x3460345, 0x3480347, 0xffff05f3, 0xffffffff, 0xffffffff, 0x5f405fa, 0xffff05fb, 0x5ff05b7, 0x34b034a, 0x34d034c, 0xffff05f5, 0xffffffff, 0xffffffff, 0x5b905b8, 0xffffffff, 0x5bb05ba, 0x350034f, 0x3520351, 0xffffffff, 0xffffffff, 0xffffffff, 0x5bd05bc, 0xffff05be, 0x5c005bf, 0x3540353, 0x3560355, 0xffff0357, 0xffffffff, 0xffffffff, 0x5f605fc, 0xffff05fd, 0x60005c1, 0x3590358, 0x35b035a, 0xffff05f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff035d, 0xffffffff, 0x35f035e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0360, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3620361, 0x3640363, 0x3660365, 0x3680367, 0x36a0369, 0x36c036b, 0x36e036d, 0x370036f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x371ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3730372, 0x3750374, 0x3770376, 0x3790378, 0x37b037a, 0x37d037c, 0x37f037e, 0x3810380, 0x3830382, 0x3850384, 0x3870386, 0x3890388, 0x38b038a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x38d038c, 0x38f038e, 0x3910390, 0x3930392, 0x3950394, 0x3970396, 0x3990398, 0x39b039a, 0x39d039c, 0x39f039e, 0x3a103a0, 0x3a303a2, 0x3a503a4, 0x3a703a6, 0x3a903a8, 0x3ab03aa, 0x3ad03ac, 0x3af03ae, 0x3b103b0, 0x3b303b2, 0x3b503b4, 0x3b703b6, 0x3b903b8, 0x3bb03ba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03bc, 0x3be03bd, 0xffff03bf, 0x3c0ffff, 0x3c1ffff, 0x3c2ffff, 0x3c3ffff, 0x3c503c4, 0xffff03c6, 0xffff03c7, 0x3c8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ca03c9, 0xffff03cb, 0xffff03cc, 0xffff03cd, 0xffff03ce, 0xffff03cf, 0xffff03d0, 0xffff03d1, 0xffff03d2, 0xffff03d3, 0xffff03d4, 0xffff03d5, 0xffff03d6, 0xffff03d7, 0xffff03d8, 0xffff03d9, 0xffff03da, 0xffff03db, 0xffff03dc, 0xffff03dd, 0xffff03de, 0xffff03df, 0xffff03e0, 0xffff03e1, 0xffff03e2, 0xffff03e3, 0xffff03e4, 0xffff03e5, 0xffff03e6, 0xffff03e7, 0xffff03e8, 0xffff03e9, 0xffff03ea, 0xffff03eb, 0xffff03ec, 0xffff03ed, 0xffff03ee, 0xffff03ef, 0xffff03f0, 0xffff03f1, 0xffff03f2, 0xffff03f3, 0xffff03f4, 0xffff03f5, 0xffff03f6, 0xffff03f7, 0xffff03f8, 0xffff03f9, 0xffff03fa, 0xffff03fb, 0xffff03fc, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fdffff, 0x3feffff, 0xffffffff, 0xffffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0400, 0xffff0401, 0xffff0402, 0xffff0403, 0xffff0404, 0xffff0405, 0xffff0406, 0xffff0407, 0xffff0408, 0xffff0409, 0xffff040a, 0xffff040b, 0xffff040c, 0xffff040d, 0xffff040e, 0xffff040f, 0xffff0410, 0xffff0411, 0xffff0412, 0xffff0413, 0xffff0414, 0xffff0415, 0xffff0416, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0417, 0xffff0418, 0xffff0419, 0xffff041a, 0xffff041b, 0xffff041c, 0xffff041d, 0xffff041e, 0xffff041f, 0xffff0420, 0xffff0421, 0xffff0422, 0xffff0423, 0xffff0424, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0425, 0xffff0426, 0xffff0427, 0xffff0428, 0xffff0429, 0xffff042a, 0xffff042b, 0xffffffff, 0xffff042c, 0xffff042d, 0xffff042e, 0xffff042f, 0xffff0430, 0xffff0431, 0xffff0432, 0xffff0433, 0xffff0434, 0xffff0435, 0xffff0436, 0xffff0437, 0xffff0438, 0xffff0439, 0xffff043a, 0xffff043b, 0xffff043c, 0xffff043d, 0xffff043e, 0xffff043f, 0xffff0440, 0xffff0441, 0xffff0442, 0xffff0443, 0xffff0444, 0xffff0445, 0xffff0446, 0xffff0447, 0xffff0448, 0xffff0449, 0xffff044a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x44bffff, 0x44cffff, 0x44dffff, 0xffff044e, 0xffff044f, 0xffff0450, 0xffff0451, 0xffff0452, 0xffffffff, 0x453ffff, 0x454ffff, 0xffffffff, 0xffff0455, 0xffff0456, 0xffffffff, 0xffff0457, 0xffff0458, 0xffff0459, 0xffff045a, 0xffff045b, 0xffff045c, 0xffff045d, 0xffff045e, 0xffff045f, 0xffff0460, 0x4620461, 0x4640463, 0xffff0465, 0x4670466, 0x4690468, 0xffff046a, 0xffff046b, 0xffff046c, 0xffff046d, 0xffff046e, 0xffff046f, 0xffff0470, 0xffff0471, 0x4730472, 0x4750474, 0x476ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0477, 0xffffffff, 0xffffffff, 0xffff0478, 0xffff0479, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x47affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x59d059c, 0x59f059e, 0x5a105a0, 0xffff05a2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5a4ffff, 0x5a605a5, 0x5a805a7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x47bffff, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x48d048c, 0x48f048e, 0x4910490, 0x4930492, 0xffff0494, 0xffffffff, 0xffffffff, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0x4a604a5, 0x4a804a7, 0x4aa04a9, 0x4ac04ab, 0x4ae04ad, 0x4b004af, 0x4b204b1, 0x4b404b3, 0x4b604b5, 0x4b804b7, 0x4ba04b9, 0x4bc04bb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4be04bd, 0x4c004bf, 0x4c204c1, 0x4c404c3, 0x4c604c5, 0x4c804c7, 0x4ca04c9, 0x4cc04cb, 0x4ce04cd, 0x4d004cf, 0x4d204d1, 0x4d404d3, 0x4d604d5, 0x4d804d7, 0x4da04d9, 0x4dc04db, 0x4de04dd, 0x4e004df, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4e204e1, 0x4e404e3, 0x4e604e5, 0x4e804e7, 0x4ea04e9, 0xffff04eb, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0x4f304f2, 0x4f504f4, 0x4f704f6, 0x4f904f8, 0xffff04fa, 0x4fc04fb, 0x4fe04fd, 0x50004ff, 0xffff0501, 0x5030502, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50d050c, 0x50f050e, 0x5110510, 0x5130512, 0x5150514, 0x5170516, 0x5190518, 0x51b051a, 0x51d051c, 0x51f051e, 0x5210520, 0x5230522, 0x5250524, 0x5270526, 0x5290528, 0x52b052a, 0x52d052c, 0x52f052e, 0x5310530, 0x5330532, 0x5350534, 0xffff0536, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0x5480547, 0x54a0549, 0x54c054b, 0x54e054d, 0x550054f, 0x5520551, 0x5540553, 0x5560555, 0x5580557, 0x55a0559, 0x55c055b, 0x55e055d, 0x560055f, 0x5620561, 0x5640563, 0x5660565, 0x5680567, 0x56a0569, 0x56c056b, 0x56e056d, 0x570056f, 0x5720571, 0x5740573, 0x5760575, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5780577, 0x57a0579, 0x57c057b, 0x57e057d, 0x580057f, 0x5820581, 0x5840583, 0x5860585, 0x5880587, 0x58a0589, 0x58c058b, 0x58e058d, 0x590058f, 0x5920591, 0x5940593, 0x5960595, 0x5980597, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +000001000000048000000EC0", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000200000004000300060005000800070000000000090000000B000A +000D000C000F000E00110010000000120000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000014001300000000000000000000000000000000000000000016001500000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000017000000000000000000190018001B001A001D001C001F001E00000000000000000021002000000022 +000000000000000000000000000000000000000000240023000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000260025002800270000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002900000000002A002C002B002E002D00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000002F000000000000000000000000000000000000000000000000000000000000003000000000 +000000000000000000000000000000000000000000000000000000000000000000000031003300320034000000000035 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003600000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003700000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000039000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000FFFF00020001000400030006000500080007000A0009000C000B000E000D0010000F001200110014001300160015 +00180017FFFF0019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001B001A001D001C001F001E00210020 +00230022002500240027002600290028002B002A002D002C002F002EFFFF003000320031003400330036003505990037 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0038FFFF0039FFFF003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003F +FFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004B +FFFF004CFFFF004DFFFF004EFFFF004FFFFF059AFFFF0051FFFF0052FFFF00530054FFFF0055FFFF0056FFFF0057FFFF +0058FFFF0059FFFF005AFFFF005BFFFF05A9FFFFFFFF005CFFFF005DFFFF005EFFFF005FFFFF0060FFFF0061FFFF0062 +FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006E +FFFF006FFFFF0070FFFF0071FFFF0072007400730075FFFF0076FFFFFFFFFFFF0077FFFFFFFF0078FFFF0079007B007A +007CFFFF007E007DFFFFFFFF0080007F008200810083FFFFFFFF008400860085FFFF0087FFFFFFFF00890088008AFFFF +FFFF008BFFFF008CFFFF008D008F008E0090FFFFFFFFFFFFFFFF0091009300920094FFFF009600950097FFFF0098FFFF +FFFF0099FFFFFFFFFFFF009AFFFFFFFFFFFFFFFFFFFFFFFF009C009B009DFFFFFFFF009E00A0009F00A1FFFF00A2FFFF +00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFFFFFFFFFFFFFF00A9FFFF00AAFFFF00ABFFFF00ACFFFF00AD +FFFF00AEFFFF00AFFFFF00B0FFFF00B100B205ACFFFF00B3FFFF00B400B600B5FFFF00B7FFFF00B8FFFF00B9FFFF00BA +FFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6 +FFFF00C7FFFF00C8FFFF00C9FFFF00CAFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF00CFFFFF00D0FFFF00D1FFFF00D2 +FFFF00D3FFFF00D4FFFFFFFFFFFFFFFFFFFFFFFF00D600D500D7FFFFFFFF00D800D9FFFF00DAFFFF00DC00DBFFFF00DD +FFFF00DEFFFF00DFFFFF00E0FFFF00E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00E2FFFF00E3FFFFFFFFFFFF00E4FFFFFFFFFFFFFFFFFFFFFFFF00E5FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E600E800E7FFFF00E9FFFF00EA00EC00EB00ED05AA00EF00EE00F100F000F300F2 +00F500F400F700F600F900F800FB00FA00FD00FC00FEFFFF010000FF010201010104010301060105FFFFFFFFFFFFFFFF +FFFF05ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0107FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0108FFFF0109FFFF010AFFFF010B +FFFF010CFFFF010DFFFF010EFFFF010FFFFF0110FFFF0111FFFF0112FFFF0113FFFFFFFFFFFFFFFFFFFF01140115FFFF +0116FFFFFFFF01170118FFFF011A0119011C011B011E011D0120011F01220121012401230126012501280127012A0129 +012C012B012E012D0130012F01320131013401330136013501380137013A0139013C013B013E013D0140013F01420141 +014401430146014501480147014A0149FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF014BFFFF014CFFFF014DFFFF014EFFFF014FFFFF0150FFFF0151FFFF0152 +FFFF0153FFFF0154FFFF0155FFFF0156FFFF0157FFFF0158FFFF0159FFFF015AFFFF015BFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF015CFFFF015DFFFF015EFFFF015FFFFF0160FFFF0161FFFF0162FFFF0163FFFF0164FFFF0165FFFF0166 +FFFF0167FFFF0168FFFF0169FFFF016AFFFF016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172 +FFFF0173FFFF0174FFFF0175FFFF0176017801770179FFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFFFFFFFFFF +FFFF017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018A +FFFF018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFF0195FFFF0196 +FFFF0197FFFF0198FFFF0199FFFF019AFFFF019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2 +FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AE +01AFFFFF01B101B001B301B201B501B401B701B601B901B801BB01BA01BD01BC01BF01BE01C101C001C301C201C501C4 +01C701C601C901C801CB01CA01CD01CC01CF01CE01D101D001D301D2FFFF01D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01D601D501D801D701DA01D901DC01DB01DE01DD01E001DF01E201E101E401E3 +01E601E501E801E701EA01E901EC01EB01EE01ED01F001EF01F201F101F401F301F601F501F801F701FA01F901FBFFFF +FFFFFFFFFFFFFFFF01FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01FE01FD020001FF0202020102040203 +0206020502080207020A0209020C020B020E020D0210020F02120211021402130216021502180217021A0219021C021B +021E021D0220021F02220221022402230226022502280227022A0229022C022B022E022D0230022F0232023102340233 +0236023502380237023A0239023C023B023E023D0240023F02420241024402430246024502480247024A0249024C024B +024E024D0250024F02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF025402530256025502580257025A0259025C025B025E025D0260025F02620261 +026402630266026502680267026A0269026C026B026E026D0270026F02720271027402730276027502780277027A0279 +027C027BFFFF027D027EFFFF0280027FFFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288 +FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294 +FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0 +FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF02ABFFFF02AC +FFFF02ADFFFF02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B2FFFF02B3FFFF02B4FFFF02B5FFFF02B6FFFF02B7FFFF02B8 +FFFF02B9FFFF02BAFFFF02BBFFFF02BCFFFF02BDFFFF02BEFFFF02BFFFFF02C0FFFF02C1FFFF02C2FFFF02C3FFFF02C4 +FFFF02C5FFFF02C6FFFF02C7FFFF02C8FFFF02C9FFFF02CAFFFF02CB05AE05AD05B005AFFFFF05B1FFFFFFFFFFFF02CC +FFFF02CDFFFF02CEFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF02D3FFFF02D4FFFF02D5FFFF02D6FFFF02D7FFFF02D8 +FFFF02D9FFFF02DAFFFF02DBFFFF02DCFFFF02DDFFFF02DEFFFF02DFFFFF02E0FFFF02E1FFFF02E2FFFF02E3FFFF02E4 +FFFF02E5FFFF02E6FFFF02E7FFFF02E8FFFF02E9FFFF02EAFFFF02EBFFFF02ECFFFF02EDFFFF02EEFFFF02EFFFFF02F0 +FFFF02F1FFFF02F2FFFF02F3FFFF02F4FFFF02F5FFFF02F6FFFF02F7FFFF02F8FFFF02F9FFFF02FAFFFF02FBFFFF02FC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02FE02FD030002FF0302030103040303FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0306030503080307030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030C030B030E030D0310030F03120311 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031403130316031503180317031A0319FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031C031B031E031D0320031FFFFFFFFFFFFF05B2FFFF05B3FFFF05B4FFFF05B50321FFFF0322FFFF0323FFFF0324FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0326032503280327032A0329032C032BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C305C205C505C405C705C605C905C805CB05CA05CD05CC05CF05CE05D105D0 +05D305D205D505D405D705D605D905D805DB05DA05DD05DC05DF05DE05E105E005E305E205E505E405E705E605E905E8 +05EB05EA05ED05EC05EF05EE05F105F0FFFFFFFF05F205F8FFFF05F905FE05B60346034503480347FFFF05F3FFFFFFFF +FFFFFFFF05F405FAFFFF05FB05FF05B7034B034A034D034CFFFF05F5FFFFFFFFFFFFFFFF05B905B8FFFFFFFF05BB05BA +0350034F03520351FFFFFFFFFFFFFFFFFFFFFFFF05BD05BCFFFF05BE05C005BF0354035303560355FFFF0357FFFFFFFF +FFFFFFFF05F605FCFFFF05FD060005C103590358035B035AFFFF05F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFFFFFFFFFFFFFF0360FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03620361036403630366036503680367 +036A0369036C036B036E036D0370036FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03730372 +037503740377037603790378037B037A037D037C037F037E0381038003830382038503840387038603890388038B038A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +038D038C038F038E0391039003930392039503940397039603990398039B039A039D039C039F039E03A103A003A303A2 +03A503A403A703A603A903A803AB03AA03AD03AC03AF03AE03B103B003B303B203B503B403B703B603B903B803BB03BA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF03BC03BE03BDFFFF03BF03C0FFFF03C1FFFF03C2FFFF03C3FFFF03C503C4FFFF03C6FFFF03C703C8FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF03CA03C9FFFF03CBFFFF03CCFFFF03CDFFFF03CEFFFF03CFFFFF03D0FFFF03D1FFFF03D2 +FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DE +FFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6FFFF03E7FFFF03E8FFFF03E9FFFF03EA +FFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6 +FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFFFFFFFFFFFFFF03FDFFFF03FEFFFFFFFFFFFF +FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0400FFFF0401FFFF0402FFFF0403 +FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF040F +FFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0417FFFF0418FFFF0419FFFF041AFFFF041BFFFF041CFFFF041DFFFF041E +FFFF041FFFFF0420FFFF0421FFFF0422FFFF0423FFFF0424FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFF0426FFFF0427FFFF0428FFFF0429FFFF042AFFFF042B +FFFFFFFFFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436 +FFFF0437FFFF0438FFFF0439FFFF043AFFFF043BFFFF043CFFFF043DFFFF043EFFFF043FFFFF0440FFFF0441FFFF0442 +FFFF0443FFFF0444FFFF0445FFFF0446FFFF0447FFFF0448FFFF0449FFFF044AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +044BFFFF044CFFFF044DFFFFFFFF044EFFFF044FFFFF0450FFFF0451FFFF0452FFFFFFFF0453FFFF0454FFFFFFFFFFFF +FFFF0455FFFF0456FFFFFFFFFFFF0457FFFF0458FFFF0459FFFF045AFFFF045BFFFF045CFFFF045DFFFF045EFFFF045F +FFFF04600462046104640463FFFF04650467046604690468FFFF046AFFFF046BFFFF046CFFFF046DFFFF046EFFFF046F +FFFF0470FFFF047104730472047504740476FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0477FFFFFFFFFFFFFFFFFFFF0478 +FFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF059D059C059F059E05A105A0FFFF05A2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A4FFFF05A605A505A805A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047BFFFF047D047C047F047E04810480 +04830482048504840487048604890488048B048A048D048C048F048E0491049004930492FFFF0494FFFFFFFFFFFFFFFF +0496049504980497049A0499049C049B049E049D04A0049F04A204A104A404A304A604A504A804A704AA04A904AC04AB +04AE04AD04B004AF04B204B104B404B304B604B504B804B704BA04B904BC04BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04BE04BD04C004BF04C204C104C404C3 +04C604C504C804C704CA04C904CC04CB04CE04CD04D004CF04D204D104D404D304D604D504D804D704DA04D904DC04DB +04DE04DD04E004DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04E204E104E404E304E604E504E804E704EA04E9FFFF04EB04ED04EC04EF04EE04F104F004F304F204F504F404F704F6 +04F904F8FFFF04FA04FC04FB04FE04FD050004FFFFFF050105030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050505040507050605090508050B050A050D050C050F050E0511051005130512 +051505140517051605190518051B051A051D051C051F051E0521052005230522052505240527052605290528052B052A +052D052C052F052E053105300533053205350534FFFF0536FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05380537053A0539053C053B053E053D0540053F054205410544054305460545 +05480547054A0549054C054B054E054D0550054F05520551055405530556055505580557055A0559055C055B055E055D +0560055F05620561056405630566056505680567056A0569056C056B056E056D0570056F057205710574057305760575 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05780577057A0579057C057B057E057D0580057F058205810584058305860585 +05880587058A0589058C058B058E058D0590058F05920591059405930596059505980597FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10496 bytes -enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xf80], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x150000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x180000, 0x19, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x0, 0x0, 0x220000, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x240000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0000, 0x2b, 0x2d002c, 0x2f002e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x300000, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x330000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x350034, 0x360000, 0x0, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c003b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5aeffff, 0x1c001b, 0x1e001d, 0x20001f, 0x220021, 0x240023, 0x260025, 0x280027, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0xffff0031, 0x330032, 0x350034, 0x370036, 0x390038, 0x3affff, 0x3bffff, 0x3cffff, 0x3dffff, 0x3effff, 0x3fffff, 0x40ffff, 0x41ffff, 0x42ffff, 0x43ffff, 0x44ffff, 0x45ffff, 0x46ffff, 0x47ffff, 0x48ffff, 0x49ffff, 0x4affff, 0x4bffff, 0x4cffff, 0x4dffff, 0x4effff, 0x4fffff, 0x50ffff, 0x51ffff, 0x5205b0, 0x53ffff, 0x54ffff, 0x55ffff, 0xffffffff, 0xffff0056, 0xffff0057, 0xffff0058, 0xffff0059, 0xffff005a, 0xffff005b, 0xffff005c, 0x5cd005d, 0x5effff, 0x5fffff, 0x60ffff, 0x61ffff, 0x62ffff, 0x63ffff, 0x64ffff, 0x65ffff, 0x66ffff, 0x67ffff, 0x68ffff, 0x69ffff, 0x6affff, 0x6bffff, 0x6cffff, 0x6dffff, 0x6effff, 0x6fffff, 0x70ffff, 0x71ffff, 0x72ffff, 0x73ffff, 0x74ffff, 0xffffffff, 0xffff0075, 0xffff0076, 0x780077, 0xffff0079, 0x7affff, 0x7bffff, 0xffffffff, 0xffff007c, 0xffffffff, 0xffff007d, 0xffffffff, 0xffffffff, 0xffff007e, 0x7fffff, 0xffffffff, 0x80ffff, 0xffff0081, 0xffffffff, 0xffff0082, 0x83ffff, 0x84ffff, 0x85ffff, 0xffffffff, 0xffff0086, 0xffffffff, 0x87ffff, 0xffffffff, 0xffff0088, 0xffffffff, 0xffff0089, 0xffff008a, 0x8bffff, 0xffffffff, 0x8cffff, 0x8dffff, 0xffffffff, 0xffffffff, 0x8f008e, 0x910090, 0x930092, 0x950094, 0xffff0096, 0xffff0097, 0xffff0098, 0xffff0099, 0xffff009a, 0xffff009b, 0xffff009c, 0xffff009d, 0x9f009e, 0xa0ffff, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xa6ffff, 0xa7ffff, 0xa8ffff, 0xa905d5, 0xab00aa, 0xacffff, 0xffffffff, 0xadffff, 0xaeffff, 0xafffff, 0xb0ffff, 0xb1ffff, 0xb2ffff, 0xb3ffff, 0xb4ffff, 0xb5ffff, 0xb6ffff, 0xb7ffff, 0xb8ffff, 0xb9ffff, 0xbaffff, 0xbbffff, 0xbcffff, 0xbdffff, 0xbeffff, 0xbfffff, 0xc0ffff, 0xffffffff, 0xc1ffff, 0xc2ffff, 0xc3ffff, 0xc4ffff, 0xc5ffff, 0xc6ffff, 0xc7ffff, 0xc8ffff, 0xc9ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00ca, 0xcbffff, 0xffff00cc, 0xffff00cd, 0xffffffff, 0xceffff, 0xcfffff, 0xd0ffff, 0xd1ffff, 0xd2ffff, 0xd400d3, 0xd600d5, 0xffff00d7, 0xd900d8, 0xdaffff, 0xdbffff, 0xffff00dc, 0xffffffff, 0xde00dd, 0xdfffff, 0xe0ffff, 0xffff00e1, 0xe300e2, 0xe500e4, 0xffff00e6, 0xe7ffff, 0xe8ffff, 0xffff00e9, 0xeaffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xebffff, 0xffffffff, 0xffff00ec, 0xee00ed, 0xffffffff, 0xefffff, 0xf100f0, 0xf300f2, 0xffff00f4, 0xffffffff, 0xffffffff, 0xffff00f5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf6ffff, 0xffff00f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf9ffff, 0xfaffff, 0xffffffff, 0xfbffff, 0xffffffff, 0xfcffff, 0xfe00fd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff05cf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x10000ff, 0x1020101, 0x10305d2, 0x1050104, 0x1070106, 0x1090108, 0x10b010a, 0x10d010c, 0x10f010e, 0x1110110, 0x1130112, 0x1150114, 0x1170116, 0x1190118, 0x11b011a, 0x11d011c, 0x11f011e, 0xffff0120, 0x1220121, 0xffffffff, 0x123ffff, 0x1250124, 0x126ffff, 0x127ffff, 0x128ffff, 0x129ffff, 0x12affff, 0x12bffff, 0x12cffff, 0x12dffff, 0x12effff, 0x12fffff, 0x130ffff, 0x131ffff, 0x1330132, 0x1350134, 0x136ffff, 0xffffffff, 0xffff0137, 0x138ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0x14c014b, 0x14e014d, 0x150014f, 0x1520151, 0x1540153, 0x1560155, 0x1580157, 0x15a0159, 0x15c015b, 0x15e015d, 0x160015f, 0x1620161, 0x1640163, 0x1660165, 0x1680167, 0x169ffff, 0x16affff, 0x16bffff, 0x16cffff, 0x16dffff, 0x16effff, 0x16fffff, 0x170ffff, 0x171ffff, 0x172ffff, 0x173ffff, 0x174ffff, 0x175ffff, 0x176ffff, 0x177ffff, 0x178ffff, 0x179ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0x17fffff, 0x180ffff, 0x181ffff, 0x182ffff, 0x183ffff, 0x184ffff, 0x185ffff, 0x186ffff, 0x187ffff, 0x188ffff, 0x189ffff, 0x18affff, 0x18bffff, 0x18cffff, 0x18dffff, 0x18effff, 0x18fffff, 0x190ffff, 0x191ffff, 0x192ffff, 0x193ffff, 0x194ffff, 0xffffffff, 0xffff0195, 0xffff0196, 0xffff0197, 0xffff0198, 0xffff0199, 0xffff019a, 0x19c019b, 0x19dffff, 0x19effff, 0x19fffff, 0x1a0ffff, 0x1a1ffff, 0x1a2ffff, 0x1a3ffff, 0x1a4ffff, 0x1a5ffff, 0x1a6ffff, 0x1a7ffff, 0x1a8ffff, 0x1a9ffff, 0x1aaffff, 0x1abffff, 0x1acffff, 0x1adffff, 0x1aeffff, 0x1afffff, 0x1b0ffff, 0x1b1ffff, 0x1b2ffff, 0x1b3ffff, 0x1b4ffff, 0x1b5ffff, 0x1b6ffff, 0x1b7ffff, 0x1b8ffff, 0x1b9ffff, 0x1baffff, 0x1bbffff, 0x1bcffff, 0x1bdffff, 0x1beffff, 0x1bfffff, 0x1c0ffff, 0x1c1ffff, 0x1c2ffff, 0x1c3ffff, 0x1c4ffff, 0x1c5ffff, 0x1c6ffff, 0x1c7ffff, 0x1c8ffff, 0x1c9ffff, 0x1caffff, 0x1cbffff, 0x1ccffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1cdffff, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0x1d501d4, 0x1d701d6, 0x1d901d8, 0x1db01da, 0x1dd01dc, 0x1df01de, 0x1e101e0, 0x1e301e2, 0x1e501e4, 0x1e701e6, 0x1e901e8, 0x1eb01ea, 0x1ed01ec, 0x1ef01ee, 0x1f101f0, 0x5c101f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fc01fb, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0x21a0219, 0x21c021b, 0xffff021d, 0x21effff, 0x220021f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2220221, 0x2240223, 0x2260225, 0xffffffff, 0x2280227, 0x22a0229, 0x22c022b, 0x22e022d, 0xffff022f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x230ffff, 0xffffffff, 0x231ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0232, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x233ffff, 0x234ffff, 0x235ffff, 0x236ffff, 0x237ffff, 0x238ffff, 0x239ffff, 0x23affff, 0x23bffff, 0x23cffff, 0x23dffff, 0x23effff, 0x23fffff, 0x240ffff, 0x241ffff, 0x242ffff, 0x243ffff, 0x244ffff, 0x245ffff, 0x246ffff, 0x247ffff, 0x248ffff, 0x249ffff, 0x24affff, 0x24bffff, 0x24cffff, 0x24dffff, 0x24effff, 0x24fffff, 0x250ffff, 0x251ffff, 0x252ffff, 0x253ffff, 0x254ffff, 0x255ffff, 0x256ffff, 0x257ffff, 0x258ffff, 0x259ffff, 0x25affff, 0x25bffff, 0x25cffff, 0x25dffff, 0x25effff, 0x25fffff, 0x260ffff, 0x261ffff, 0x262ffff, 0x263ffff, 0x264ffff, 0x265ffff, 0x266ffff, 0x267ffff, 0x268ffff, 0x269ffff, 0x26affff, 0x26bffff, 0x26cffff, 0x26dffff, 0x26effff, 0x26fffff, 0x270ffff, 0x271ffff, 0x272ffff, 0x273ffff, 0x274ffff, 0x275ffff, 0x276ffff, 0x277ffff, 0x278ffff, 0x279ffff, 0x27affff, 0x27bffff, 0x27cffff, 0x27dffff, 0x5d905d7, 0x5dd05db, 0x27e05df, 0xffffffff, 0xffffffff, 0x27fffff, 0x280ffff, 0x281ffff, 0x282ffff, 0x283ffff, 0x284ffff, 0x285ffff, 0x286ffff, 0x287ffff, 0x288ffff, 0x289ffff, 0x28affff, 0x28bffff, 0x28cffff, 0x28dffff, 0x28effff, 0x28fffff, 0x290ffff, 0x291ffff, 0x292ffff, 0x293ffff, 0x294ffff, 0x295ffff, 0x296ffff, 0x297ffff, 0x298ffff, 0x299ffff, 0x29affff, 0x29bffff, 0x29cffff, 0x29dffff, 0x29effff, 0x29fffff, 0x2a0ffff, 0x2a1ffff, 0x2a2ffff, 0x2a3ffff, 0x2a4ffff, 0x2a5ffff, 0x2a6ffff, 0x2a7ffff, 0x2a8ffff, 0x2a9ffff, 0x2aaffff, 0x2abffff, 0x2acffff, 0x2adffff, 0x2aeffff, 0x2b002af, 0x2b202b1, 0x2b402b3, 0x2b602b5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2b802b7, 0x2ba02b9, 0x2bc02bb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2be02bd, 0x2c002bf, 0x2c202c1, 0x2c402c3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2c602c5, 0x2c802c7, 0x2ca02c9, 0x2cc02cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ce02cd, 0x2d002cf, 0x2d202d1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d305e1, 0x2d405e3, 0x2d505e6, 0x2d605e9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d802d7, 0x2da02d9, 0x2dc02db, 0x2de02dd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2e002df, 0x2e202e1, 0x2e402e3, 0x2e602e5, 0x2e802e7, 0x2ea02e9, 0x2ec02eb, 0xffffffff, 0x60b060a, 0x60d060c, 0x60f060e, 0x6110610, 0x6130612, 0x6150614, 0x6170616, 0x6190618, 0x61b061a, 0x61d061c, 0x61f061e, 0x6210620, 0x6230622, 0x6250624, 0x6270626, 0x6290628, 0x62b062a, 0x62d062c, 0x62f062e, 0x6310630, 0x6330632, 0x6350634, 0x6370636, 0x6390638, 0x3060305, 0x63a0640, 0xffff0642, 0x64c05ec, 0xffffffff, 0xffffffff, 0xffff063b, 0xffff0308, 0xffffffff, 0x63c0644, 0xffff0646, 0x64f05ee, 0xffffffff, 0xffffffff, 0xffff063d, 0xffffffff, 0x30b030a, 0x5f305f0, 0xffffffff, 0x5f805f6, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30d030c, 0x5fe05fb, 0x30e0601, 0x6050603, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x63e0648, 0xffff064a, 0x6520608, 0xffffffff, 0xffffffff, 0xffff063f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0310, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3120311, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0x31c031b, 0x31e031d, 0x320031f, 0xffffffff, 0xffffffff, 0xffff0321, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3230322, 0x3250324, 0x3270326, 0x3290328, 0x32b032a, 0x32d032c, 0x32f032e, 0x3310330, 0x3330332, 0x3350334, 0x3370336, 0x3390338, 0x33b033a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x33d033c, 0x33f033e, 0x3410340, 0x3430342, 0x3450344, 0x3470346, 0x3490348, 0x34b034a, 0x34d034c, 0x34f034e, 0x3510350, 0x3530352, 0x3550354, 0x3570356, 0x3590358, 0x35b035a, 0x35d035c, 0x35f035e, 0x3610360, 0x3630362, 0x3650364, 0x3670366, 0x3690368, 0x36b036a, 0x36cffff, 0xffffffff, 0x36dffff, 0xffff036e, 0xffff036f, 0xffff0370, 0xffff0371, 0xffffffff, 0xffffffff, 0x372ffff, 0xffffffff, 0xffff0373, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x374ffff, 0x375ffff, 0x376ffff, 0x377ffff, 0x378ffff, 0x379ffff, 0x37affff, 0x37bffff, 0x37cffff, 0x37dffff, 0x37effff, 0x37fffff, 0x380ffff, 0x381ffff, 0x382ffff, 0x383ffff, 0x384ffff, 0x385ffff, 0x386ffff, 0x387ffff, 0x388ffff, 0x389ffff, 0x38affff, 0x38bffff, 0x38cffff, 0x38dffff, 0x38effff, 0x38fffff, 0x390ffff, 0x391ffff, 0x392ffff, 0x393ffff, 0x394ffff, 0x395ffff, 0x396ffff, 0x397ffff, 0x398ffff, 0x399ffff, 0x39affff, 0x39bffff, 0x39cffff, 0x39dffff, 0x39effff, 0x39fffff, 0x3a0ffff, 0x3a1ffff, 0x3a2ffff, 0x3a3ffff, 0x3a4ffff, 0x3a5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03a6, 0xffff03a7, 0xffffffff, 0x3a8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3aa03a9, 0x3ac03ab, 0x3ae03ad, 0x3b003af, 0x3b203b1, 0x3b403b3, 0x3b603b5, 0x3b803b7, 0x3ba03b9, 0x3bc03bb, 0x3be03bd, 0x3c003bf, 0x3c203c1, 0x3c403c3, 0x3c603c5, 0x3c803c7, 0x3ca03c9, 0x3cc03cb, 0x3ce03cd, 0x3cfffff, 0xffffffff, 0xffffffff, 0x3d0ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3d1ffff, 0x3d2ffff, 0x3d3ffff, 0x3d4ffff, 0x3d5ffff, 0x3d6ffff, 0x3d7ffff, 0x3d8ffff, 0x3d9ffff, 0x3daffff, 0x3dbffff, 0x3dcffff, 0x3ddffff, 0x3deffff, 0x3dfffff, 0x3e0ffff, 0x3e1ffff, 0x3e2ffff, 0x3e3ffff, 0x3e4ffff, 0x3e5ffff, 0x3e6ffff, 0x3e7ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3e8ffff, 0x3e9ffff, 0x3eaffff, 0x3ebffff, 0x3ecffff, 0x3edffff, 0x3eeffff, 0x3efffff, 0x3f0ffff, 0x3f1ffff, 0x3f2ffff, 0x3f3ffff, 0x3f4ffff, 0x3f5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3f6ffff, 0x3f7ffff, 0x3f8ffff, 0x3f9ffff, 0x3faffff, 0x3fbffff, 0x3fcffff, 0xffffffff, 0x3fdffff, 0x3feffff, 0x3ffffff, 0x400ffff, 0x401ffff, 0x402ffff, 0x403ffff, 0x404ffff, 0x405ffff, 0x406ffff, 0x407ffff, 0x408ffff, 0x409ffff, 0x40affff, 0x40bffff, 0x40cffff, 0x40dffff, 0x40effff, 0x40fffff, 0x410ffff, 0x411ffff, 0x412ffff, 0x413ffff, 0x414ffff, 0x415ffff, 0x416ffff, 0x417ffff, 0x418ffff, 0x419ffff, 0x41affff, 0x41bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff041c, 0xffff041d, 0x41effff, 0x41fffff, 0x420ffff, 0x421ffff, 0x422ffff, 0xffffffff, 0xffffffff, 0xffff0423, 0xffffffff, 0x424ffff, 0x425ffff, 0xffff0426, 0x427ffff, 0x428ffff, 0x429ffff, 0x42affff, 0x42bffff, 0x42cffff, 0x42dffff, 0x42effff, 0x42fffff, 0x430ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x431ffff, 0x432ffff, 0x433ffff, 0x434ffff, 0x435ffff, 0x436ffff, 0x437ffff, 0x438ffff, 0xffffffff, 0xffffffff, 0xffff0439, 0xffff043a, 0xffffffff, 0xffffffff, 0x43bffff, 0xffffffff, 0xffffffff, 0x43cffff, 0x43dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff043e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4410440, 0x4430442, 0x4450444, 0x4470446, 0x4490448, 0x44b044a, 0x44d044c, 0x44f044e, 0x4510450, 0x4530452, 0x4550454, 0x4570456, 0x4590458, 0x45b045a, 0x45d045c, 0x45f045e, 0x4610460, 0x4630462, 0x4650464, 0x4670466, 0x4690468, 0x46b046a, 0x46d046c, 0x46f046e, 0x4710470, 0x4730472, 0x4750474, 0x4770476, 0x4790478, 0x47b047a, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x48d048c, 0x48f048e, 0x5b305b1, 0x5b705b5, 0x5bd05ba, 0xffff05bf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5c3ffff, 0x5c705c5, 0x5cb05c9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x490ffff, 0x4920491, 0x4940493, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0x4a604a5, 0x4a804a7, 0xffff04a9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4ab04aa, 0x4ad04ac, 0x4af04ae, 0x4b104b0, 0x4b304b2, 0x4b504b4, 0x4b704b6, 0x4b904b8, 0x4bb04ba, 0x4bd04bc, 0x4bf04be, 0x4c104c0, 0x4c304c2, 0x4c504c4, 0x4c704c6, 0x4c904c8, 0x4cb04ca, 0x4cd04cc, 0x4cf04ce, 0x4d104d0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4d304d2, 0x4d504d4, 0x4d704d6, 0x4d904d8, 0x4db04da, 0x4dd04dc, 0x4df04de, 0x4e104e0, 0x4e304e2, 0x4e504e4, 0x4e704e6, 0x4e904e8, 0x4eb04ea, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0x4f304f2, 0x4f504f4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4f6ffff, 0x4f804f7, 0x4fa04f9, 0x4fc04fb, 0x4fe04fd, 0x50004ff, 0x501ffff, 0x5030502, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50d050c, 0x50f050e, 0x510ffff, 0x5120511, 0x5140513, 0x5160515, 0x517ffff, 0xffff0518, 0xffffffff, 0x51a0519, 0x51c051b, 0x51e051d, 0x520051f, 0x5220521, 0x5240523, 0x5260525, 0x5280527, 0x52a0529, 0x52c052b, 0x52e052d, 0x530052f, 0x5320531, 0x5340533, 0x5360535, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0x5480547, 0x54a0549, 0xffff054b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x54d054c, 0x54f054e, 0x5510550, 0x5530552, 0x5550554, 0x5570556, 0x5590558, 0x55b055a, 0x55d055c, 0x55f055e, 0x5610560, 0x5630562, 0x5650564, 0x5670566, 0x5690568, 0x56b056a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x56d056c, 0x56f056e, 0x5710570, 0x5730572, 0x5750574, 0x5770576, 0x5790578, 0x57b057a, 0x57d057c, 0x57f057e, 0x5810580, 0x5830582, 0x5850584, 0x5870586, 0x5890588, 0x58b058a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x58d058c, 0x58f058e, 0x5910590, 0x5930592, 0x5950594, 0x5970596, 0x5990598, 0x59b059a, 0x59d059c, 0x59f059e, 0x5a105a0, 0x5a305a2, 0x5a505a4, 0x5a705a6, 0x5a905a8, 0x5ab05aa, 0x5ad05ac, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +000001000000048000000F80", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000300020005000400070006000900080000000A000B0000000D000C +000F000E0011001000130012000000140000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000015000000000000000000000000000000000000000000000016000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000170018000000000019001B001A001D001C001F001E0021002000000000000000000022000000000023 +000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000260025002800270000002900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002A00000000002B002D002C002F002E00000000000000000000000000000000 +000000000000000000300000000000310000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000032000000000000000000000000000000000000000000000000000000000033000000000000 +000000000000000000000000000000000000000000000000000000000000000000350034003600000000000000000037 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000039000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000003A0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003C003B000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00020001000400030006000500080007000A0009000C000B000E000D +0010000F00120011001400130016001500180017FFFF0019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AEFFFF001C001B001E001D0020001F00220021 +002400230026002500280027002A0029002C002B002E002D0030002FFFFF003100330032003500340037003600390038 +003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003FFFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF +0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004BFFFF004CFFFF004DFFFF004EFFFF004FFFFF0050FFFF0051FFFF +005205B00053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C +05CD005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF +0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF +FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF +FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF +FFFFFFFFFFFFFFFF008F008E009100900093009200950094FFFF0096FFFF0097FFFF0098FFFF0099FFFF009AFFFF009B +FFFF009CFFFF009D009F009E00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFF +00A905D500AB00AA00ACFFFFFFFFFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF00B2FFFF00B3FFFF00B4FFFF +00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF +FFFFFFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFF00C7FFFF00C8FFFF00C9FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00CA00CBFFFFFFFF00CCFFFF00CDFFFFFFFF00CEFFFF00CFFFFF00D0FFFF00D1FFFF00D2FFFF +00D400D300D600D5FFFF00D700D900D800DAFFFF00DBFFFFFFFF00DCFFFFFFFF00DE00DD00DFFFFF00E0FFFFFFFF00E1 +00E300E200E500E4FFFF00E600E7FFFF00E8FFFFFFFF00E900EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFFFFFFFFFF +FFFF00EC00EE00EDFFFFFFFF00EFFFFF00F100F000F300F2FFFF00F4FFFFFFFFFFFFFFFFFFFF00F5FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F6FFFFFFFF00F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F9FFFF00FAFFFFFFFFFFFF00FBFFFF +FFFFFFFF00FCFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF05CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF010000FF01020101010305D2010501040107010601090108010B010A010D010C010F010E01110110 +01130112011501140117011601190118011B011A011D011C011F011EFFFF012001220121FFFFFFFF0123FFFF01250124 +0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF0130FFFF0131FFFF +01330132013501340136FFFFFFFFFFFFFFFF01370138FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013A0139013C013B013E013D0140013F +01420141014401430146014501480147014A0149014C014B014E014D0150014F01520151015401530156015501580157 +015A0159015C015B015E015D0160015F016201610164016301660165016801670169FFFF016AFFFF016BFFFF016CFFFF +016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF0177FFFF0178FFFF +0179FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFF017FFFFF0180FFFF +0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF018BFFFF018CFFFF +018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFFFFFFFFFFFFFF0195FFFF0196FFFF0197 +FFFF0198FFFF0199FFFF019A019C019B019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2FFFF01A3FFFF01A4FFFF +01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF01AFFFFF01B0FFFF +01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF01BBFFFF01BCFFFF +01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF01C7FFFF01C8FFFF +01C9FFFF01CAFFFF01CBFFFF01CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CDFFFF01CF01CE01D101D001D301D201D501D401D701D601D901D801DB01DA +01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EE01F101F005C101F2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207020A0209 +020C020B020E020D0210020F02120211021402130216021502180217021A0219021C021BFFFF021D021EFFFF0220021F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022202210224022302260225FFFFFFFF02280227022A0229022C022B022E022D +FFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFF0234FFFF0235FFFF0236FFFF +0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF0242FFFF +0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF024EFFFF +024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF025AFFFF +025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF0266FFFF +0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF0272FFFF +0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFF027DFFFF05D905D7 +05DD05DB027E05DFFFFFFFFFFFFFFFFF027FFFFF0280FFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF +0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF +0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF +029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF +02ABFFFF02ACFFFF02ADFFFF02AEFFFF02B002AF02B202B102B402B302B602B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B802B702BA02B902BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BE02BD02C002BF02C202C102C402C3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C602C502C802C702CA02C902CC02CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CE02CD02D002CF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D305E102D405E302D505E602D605E9 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D802D702DA02D902DC02DB02DE02DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E002DF02E202E102E402E302E602E502E802E702EA02E902EC02EBFFFFFFFF060B060A060D060C060F060E06110610 +06130612061506140617061606190618061B061A061D061C061F061E0621062006230622062506240627062606290628 +062B062A062D062C062F062E063106300633063206350634063706360639063803060305063A0640FFFF0642064C05EC +FFFFFFFFFFFFFFFFFFFF063BFFFF0308FFFFFFFF063C0644FFFF0646064F05EEFFFFFFFFFFFFFFFFFFFF063DFFFFFFFF +030B030A05F305F0FFFFFFFF05F805F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030D030C05FE05FB030E060106050603 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF063E0648FFFF064A06520608FFFFFFFFFFFFFFFFFFFF063FFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03120311031403130316031503180317031A0319031C031B031E031D0320031FFFFFFFFFFFFFFFFFFFFF0321FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03230322032503240327032603290328032B032A032D032C032F032E0331033003330332033503340337033603390338 +033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E0351035003530352 +035503540357035603590358035B035A035D035C035F035E0361036003630362036503640367036603690368036B036A +036CFFFFFFFFFFFF036DFFFFFFFF036EFFFF036FFFFF0370FFFF0371FFFFFFFFFFFFFFFF0372FFFFFFFFFFFFFFFF0373 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0374FFFF0375FFFF0376FFFF0377FFFF0378FFFF0379FFFF037AFFFF037BFFFF +037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF0387FFFF +0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF0393FFFF +0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF039FFFFF +03A0FFFF03A1FFFF03A2FFFF03A3FFFF03A4FFFF03A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A6FFFF03A7 +FFFFFFFF03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AA03A903AC03AB03AE03AD03B003AF +03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C303C603C503C803C7 +03CA03C903CC03CB03CE03CD03CFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF +03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF +03E5FFFF03E6FFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF +03F4FFFF03F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFF03FDFFFF03FEFFFF03FFFFFF +0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF +040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFF +0418FFFF0419FFFF041AFFFF041BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFF041D041EFFFF +041FFFFF0420FFFF0421FFFF0422FFFFFFFFFFFFFFFFFFFFFFFF0423FFFFFFFF0424FFFF0425FFFFFFFF04260427FFFF +0428FFFF0429FFFF042AFFFF042BFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF +FFFF0439FFFF043AFFFFFFFFFFFFFFFF043BFFFFFFFFFFFFFFFFFFFF043CFFFF043DFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0441044004430442044504440447044604490448044B044A044D044C044F044E +0451045004530452045504540457045604590458045B045A045D045C045F045E04610460046304620465046404670466 +04690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A047D047C047F047E +0481048004830482048504840487048604890488048B048A048D048C048F048E05B305B105B705B505BD05BAFFFF05BF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C3FFFF05C705C505CB05C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0490FFFF04920491049404930496049504980497049A0499049C049B049E049D +04A0049F04A204A104A404A304A604A504A804A7FFFF04A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04AB04AA04AD04AC04AF04AE04B104B0 +04B304B204B504B404B704B604B904B804BB04BA04BD04BC04BF04BE04C104C004C304C204C504C404C704C604C904C8 +04CB04CA04CD04CC04CF04CE04D104D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D304D204D504D404D704D604D904D804DB04DA04DD04DC04DF04DE04E104E0 +04E304E204E504E404E704E604E904E804EB04EA04ED04EC04EF04EE04F104F004F304F204F504F4FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F6FFFF +04F804F704FA04F904FC04FB04FE04FD050004FF0501FFFF05030502050505040507050605090508050B050A050D050C +050F050E0510FFFF0512051105140513051605150517FFFFFFFF0518FFFFFFFF051A0519051C051B051E051D0520051F +05220521052405230526052505280527052A0529052C052B052E052D0530052F05320531053405330536053505380537 +053A0539053C053B053E053D0540053F05420541054405430546054505480547054A0549FFFF054BFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054D054C054F054E0551055005530552055505540557055605590558055B055A +055D055C055F055E0561056005630562056505640567056605690568056B056AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056D056C056F056E0571057005730572057505740577057605790578057B057A +057D057C057F057E0581058005830582058505840587058605890588058B058AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF058D058C058F058E0591059005930592059505940597059605990598059B059A059D059C059F059E05A105A0 +05A305A205A505A405A705A605A905A805AB05AA05AD05ACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10368 bytes -enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xf40], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x150000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x180000, 0x19, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x0, 0x0, 0x220000, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x240000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0000, 0x2b, 0x2d002c, 0x2f002e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x300000, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x320000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340033, 0x350000, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x370000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1c001b, 0x1e001d, 0x20001f, 0x220021, 0x240023, 0x260025, 0x280027, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0xffff0031, 0x330032, 0x350034, 0x370036, 0x390038, 0x3affff, 0x3bffff, 0x3cffff, 0x3dffff, 0x3effff, 0x3fffff, 0x40ffff, 0x41ffff, 0x42ffff, 0x43ffff, 0x44ffff, 0x45ffff, 0x46ffff, 0x47ffff, 0x48ffff, 0x49ffff, 0x4affff, 0x4bffff, 0x4cffff, 0x4dffff, 0x4effff, 0x4fffff, 0x50ffff, 0x51ffff, 0x52ffff, 0x53ffff, 0x54ffff, 0x55ffff, 0xffffffff, 0xffff0056, 0xffff0057, 0xffff0058, 0xffff0059, 0xffff005a, 0xffff005b, 0xffff005c, 0xffff005d, 0x5effff, 0x5fffff, 0x60ffff, 0x61ffff, 0x62ffff, 0x63ffff, 0x64ffff, 0x65ffff, 0x66ffff, 0x67ffff, 0x68ffff, 0x69ffff, 0x6affff, 0x6bffff, 0x6cffff, 0x6dffff, 0x6effff, 0x6fffff, 0x70ffff, 0x71ffff, 0x72ffff, 0x73ffff, 0x74ffff, 0xffffffff, 0xffff0075, 0xffff0076, 0x780077, 0xffff0079, 0x7affff, 0x7bffff, 0xffffffff, 0xffff007c, 0xffffffff, 0xffff007d, 0xffffffff, 0xffffffff, 0xffff007e, 0x7fffff, 0xffffffff, 0x80ffff, 0xffff0081, 0xffffffff, 0xffff0082, 0x83ffff, 0x84ffff, 0x85ffff, 0xffffffff, 0xffff0086, 0xffffffff, 0x87ffff, 0xffffffff, 0xffff0088, 0xffffffff, 0xffff0089, 0xffff008a, 0x8bffff, 0xffffffff, 0x8cffff, 0x8dffff, 0xffffffff, 0xffffffff, 0x8effff, 0xffff008f, 0x910090, 0x92ffff, 0xffff0093, 0xffff0094, 0xffff0095, 0xffff0096, 0xffff0097, 0xffff0098, 0xffff0099, 0xffff009a, 0x9c009b, 0x9dffff, 0x9effff, 0x9fffff, 0xa0ffff, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xffffffff, 0xa700a6, 0xa8ffff, 0xffffffff, 0xa9ffff, 0xaaffff, 0xabffff, 0xacffff, 0xadffff, 0xaeffff, 0xafffff, 0xb0ffff, 0xb1ffff, 0xb2ffff, 0xb3ffff, 0xb4ffff, 0xb5ffff, 0xb6ffff, 0xb7ffff, 0xb8ffff, 0xb9ffff, 0xbaffff, 0xbbffff, 0xbcffff, 0xffffffff, 0xbdffff, 0xbeffff, 0xbfffff, 0xc0ffff, 0xc1ffff, 0xc2ffff, 0xc3ffff, 0xc4ffff, 0xc5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00c6, 0xc7ffff, 0xffff00c8, 0xffff00c9, 0xffffffff, 0xcaffff, 0xcbffff, 0xccffff, 0xcdffff, 0xceffff, 0xd000cf, 0xd200d1, 0xffff00d3, 0xd500d4, 0xd6ffff, 0xd7ffff, 0xffff00d8, 0xffffffff, 0xda00d9, 0xdbffff, 0xdcffff, 0xffff00dd, 0xdf00de, 0xe100e0, 0xffff00e2, 0xe3ffff, 0xe4ffff, 0xffff00e5, 0xe6ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xe7ffff, 0xffffffff, 0xffff00e8, 0xea00e9, 0xffffffff, 0xebffff, 0xed00ec, 0xef00ee, 0xffff00f0, 0xffffffff, 0xffffffff, 0xffff00f1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf2ffff, 0xffff00f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf4ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf5ffff, 0xf6ffff, 0xffffffff, 0xf7ffff, 0xffffffff, 0xf8ffff, 0xfa00f9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xfc00fb, 0xfe00fd, 0xffffff, 0x1010100, 0x1030102, 0x1050104, 0x1070106, 0x1090108, 0x10b010a, 0x10d010c, 0x10f010e, 0x1110110, 0x1130112, 0x1150114, 0x1170116, 0x1190118, 0x11b011a, 0xffff011c, 0x11e011d, 0xffffffff, 0x11fffff, 0x1210120, 0x122ffff, 0x123ffff, 0x124ffff, 0x125ffff, 0x126ffff, 0x127ffff, 0x128ffff, 0x129ffff, 0x12affff, 0x12bffff, 0x12cffff, 0x12dffff, 0x12f012e, 0x1310130, 0x132ffff, 0xffffffff, 0xffff0133, 0x134ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1360135, 0x1380137, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0x14c014b, 0x14e014d, 0x150014f, 0x1520151, 0x1540153, 0x1560155, 0x1580157, 0x15a0159, 0x15c015b, 0x15e015d, 0x160015f, 0x1620161, 0x1640163, 0x165ffff, 0x166ffff, 0x167ffff, 0x168ffff, 0x169ffff, 0x16affff, 0x16bffff, 0x16cffff, 0x16dffff, 0x16effff, 0x16fffff, 0x170ffff, 0x171ffff, 0x172ffff, 0x173ffff, 0x174ffff, 0x175ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x176ffff, 0x177ffff, 0x178ffff, 0x179ffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0x17fffff, 0x180ffff, 0x181ffff, 0x182ffff, 0x183ffff, 0x184ffff, 0x185ffff, 0x186ffff, 0x187ffff, 0x188ffff, 0x189ffff, 0x18affff, 0x18bffff, 0x18cffff, 0x18dffff, 0x18effff, 0x18fffff, 0x190ffff, 0xffffffff, 0xffff0191, 0xffff0192, 0xffff0193, 0xffff0194, 0xffff0195, 0xffff0196, 0x1980197, 0x199ffff, 0x19affff, 0x19bffff, 0x19cffff, 0x19dffff, 0x19effff, 0x19fffff, 0x1a0ffff, 0x1a1ffff, 0x1a2ffff, 0x1a3ffff, 0x1a4ffff, 0x1a5ffff, 0x1a6ffff, 0x1a7ffff, 0x1a8ffff, 0x1a9ffff, 0x1aaffff, 0x1abffff, 0x1acffff, 0x1adffff, 0x1aeffff, 0x1afffff, 0x1b0ffff, 0x1b1ffff, 0x1b2ffff, 0x1b3ffff, 0x1b4ffff, 0x1b5ffff, 0x1b6ffff, 0x1b7ffff, 0x1b8ffff, 0x1b9ffff, 0x1baffff, 0x1bbffff, 0x1bcffff, 0x1bdffff, 0x1beffff, 0x1bfffff, 0x1c0ffff, 0x1c1ffff, 0x1c2ffff, 0x1c3ffff, 0x1c4ffff, 0x1c5ffff, 0x1c6ffff, 0x1c7ffff, 0x1c8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1c9ffff, 0x1cb01ca, 0x1cd01cc, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0x1d501d4, 0x1d701d6, 0x1d901d8, 0x1db01da, 0x1dd01dc, 0x1df01de, 0x1e101e0, 0x1e301e2, 0x1e501e4, 0x1e701e6, 0x1e901e8, 0x1eb01ea, 0x1ed01ec, 0xffff01ee, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f001ef, 0x1f201f1, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fc01fb, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0xffff0219, 0x21affff, 0x21c021b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x21e021d, 0x220021f, 0x2220221, 0xffffffff, 0x2240223, 0x2260225, 0x2280227, 0x22a0229, 0xffff022b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x22cffff, 0xffffffff, 0x22dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff022e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x22fffff, 0x230ffff, 0x231ffff, 0x232ffff, 0x233ffff, 0x234ffff, 0x235ffff, 0x236ffff, 0x237ffff, 0x238ffff, 0x239ffff, 0x23affff, 0x23bffff, 0x23cffff, 0x23dffff, 0x23effff, 0x23fffff, 0x240ffff, 0x241ffff, 0x242ffff, 0x243ffff, 0x244ffff, 0x245ffff, 0x246ffff, 0x247ffff, 0x248ffff, 0x249ffff, 0x24affff, 0x24bffff, 0x24cffff, 0x24dffff, 0x24effff, 0x24fffff, 0x250ffff, 0x251ffff, 0x252ffff, 0x253ffff, 0x254ffff, 0x255ffff, 0x256ffff, 0x257ffff, 0x258ffff, 0x259ffff, 0x25affff, 0x25bffff, 0x25cffff, 0x25dffff, 0x25effff, 0x25fffff, 0x260ffff, 0x261ffff, 0x262ffff, 0x263ffff, 0x264ffff, 0x265ffff, 0x266ffff, 0x267ffff, 0x268ffff, 0x269ffff, 0x26affff, 0x26bffff, 0x26cffff, 0x26dffff, 0x26effff, 0x26fffff, 0x270ffff, 0x271ffff, 0x272ffff, 0x273ffff, 0x274ffff, 0x275ffff, 0x276ffff, 0x277ffff, 0x278ffff, 0x279ffff, 0xffffffff, 0xffffffff, 0x27affff, 0xffffffff, 0xffffffff, 0x27bffff, 0x27cffff, 0x27dffff, 0x27effff, 0x27fffff, 0x280ffff, 0x281ffff, 0x282ffff, 0x283ffff, 0x284ffff, 0x285ffff, 0x286ffff, 0x287ffff, 0x288ffff, 0x289ffff, 0x28affff, 0x28bffff, 0x28cffff, 0x28dffff, 0x28effff, 0x28fffff, 0x290ffff, 0x291ffff, 0x292ffff, 0x293ffff, 0x294ffff, 0x295ffff, 0x296ffff, 0x297ffff, 0x298ffff, 0x299ffff, 0x29affff, 0x29bffff, 0x29cffff, 0x29dffff, 0x29effff, 0x29fffff, 0x2a0ffff, 0x2a1ffff, 0x2a2ffff, 0x2a3ffff, 0x2a4ffff, 0x2a5ffff, 0x2a6ffff, 0x2a7ffff, 0x2a8ffff, 0x2a9ffff, 0x2aaffff, 0x2ac02ab, 0x2ae02ad, 0x2b002af, 0x2b202b1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2b402b3, 0x2b602b5, 0x2b802b7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ba02b9, 0x2bc02bb, 0x2be02bd, 0x2c002bf, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2c202c1, 0x2c402c3, 0x2c602c5, 0x2c802c7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ca02c9, 0x2cc02cb, 0x2ce02cd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2cfffff, 0x2d0ffff, 0x2d1ffff, 0x2d2ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d402d3, 0x2d602d5, 0x2d802d7, 0x2da02d9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2dc02db, 0x2de02dd, 0x2e002df, 0x2e202e1, 0x2e402e3, 0x2e602e5, 0x2e802e7, 0xffffffff, 0x2ea02e9, 0x2ec02eb, 0x2ee02ed, 0x2f002ef, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2f202f1, 0x2f402f3, 0x2f602f5, 0x2f802f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2fa02f9, 0x2fc02fb, 0x2fe02fd, 0x30002ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3020301, 0x303ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0304, 0xffffffff, 0x305ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3070306, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3090308, 0xffffffff, 0x30affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff030c, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30e030d, 0x310030f, 0x3120311, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0x31c031b, 0xffffffff, 0xffffffff, 0xffff031d, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31f031e, 0x3210320, 0x3230322, 0x3250324, 0x3270326, 0x3290328, 0x32b032a, 0x32d032c, 0x32f032e, 0x3310330, 0x3330332, 0x3350334, 0x3370336, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3390338, 0x33b033a, 0x33d033c, 0x33f033e, 0x3410340, 0x3430342, 0x3450344, 0x3470346, 0x3490348, 0x34b034a, 0x34d034c, 0x34f034e, 0x3510350, 0x3530352, 0x3550354, 0x3570356, 0x3590358, 0x35b035a, 0x35d035c, 0x35f035e, 0x3610360, 0x3630362, 0x3650364, 0x3670366, 0x368ffff, 0xffffffff, 0x369ffff, 0xffff036a, 0xffff036b, 0xffff036c, 0xffff036d, 0xffffffff, 0xffffffff, 0x36effff, 0xffffffff, 0xffff036f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x370ffff, 0x371ffff, 0x372ffff, 0x373ffff, 0x374ffff, 0x375ffff, 0x376ffff, 0x377ffff, 0x378ffff, 0x379ffff, 0x37affff, 0x37bffff, 0x37cffff, 0x37dffff, 0x37effff, 0x37fffff, 0x380ffff, 0x381ffff, 0x382ffff, 0x383ffff, 0x384ffff, 0x385ffff, 0x386ffff, 0x387ffff, 0x388ffff, 0x389ffff, 0x38affff, 0x38bffff, 0x38cffff, 0x38dffff, 0x38effff, 0x38fffff, 0x390ffff, 0x391ffff, 0x392ffff, 0x393ffff, 0x394ffff, 0x395ffff, 0x396ffff, 0x397ffff, 0x398ffff, 0x399ffff, 0x39affff, 0x39bffff, 0x39cffff, 0x39dffff, 0x39effff, 0x39fffff, 0x3a0ffff, 0x3a1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03a2, 0xffff03a3, 0xffffffff, 0x3a4ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3a603a5, 0x3a803a7, 0x3aa03a9, 0x3ac03ab, 0x3ae03ad, 0x3b003af, 0x3b203b1, 0x3b403b3, 0x3b603b5, 0x3b803b7, 0x3ba03b9, 0x3bc03bb, 0x3be03bd, 0x3c003bf, 0x3c203c1, 0x3c403c3, 0x3c603c5, 0x3c803c7, 0x3ca03c9, 0x3cbffff, 0xffffffff, 0xffffffff, 0x3ccffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3cdffff, 0x3ceffff, 0x3cfffff, 0x3d0ffff, 0x3d1ffff, 0x3d2ffff, 0x3d3ffff, 0x3d4ffff, 0x3d5ffff, 0x3d6ffff, 0x3d7ffff, 0x3d8ffff, 0x3d9ffff, 0x3daffff, 0x3dbffff, 0x3dcffff, 0x3ddffff, 0x3deffff, 0x3dfffff, 0x3e0ffff, 0x3e1ffff, 0x3e2ffff, 0x3e3ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3e4ffff, 0x3e5ffff, 0x3e6ffff, 0x3e7ffff, 0x3e8ffff, 0x3e9ffff, 0x3eaffff, 0x3ebffff, 0x3ecffff, 0x3edffff, 0x3eeffff, 0x3efffff, 0x3f0ffff, 0x3f1ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3f2ffff, 0x3f3ffff, 0x3f4ffff, 0x3f5ffff, 0x3f6ffff, 0x3f7ffff, 0x3f8ffff, 0xffffffff, 0x3f9ffff, 0x3faffff, 0x3fbffff, 0x3fcffff, 0x3fdffff, 0x3feffff, 0x3ffffff, 0x400ffff, 0x401ffff, 0x402ffff, 0x403ffff, 0x404ffff, 0x405ffff, 0x406ffff, 0x407ffff, 0x408ffff, 0x409ffff, 0x40affff, 0x40bffff, 0x40cffff, 0x40dffff, 0x40effff, 0x40fffff, 0x410ffff, 0x411ffff, 0x412ffff, 0x413ffff, 0x414ffff, 0x415ffff, 0x416ffff, 0x417ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0418, 0xffff0419, 0x41affff, 0x41bffff, 0x41cffff, 0x41dffff, 0x41effff, 0xffffffff, 0xffffffff, 0xffff041f, 0xffffffff, 0x420ffff, 0x421ffff, 0xffff0422, 0x423ffff, 0x424ffff, 0x425ffff, 0x426ffff, 0x427ffff, 0x428ffff, 0x429ffff, 0x42affff, 0x42bffff, 0x42cffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x42dffff, 0x42effff, 0x42fffff, 0x430ffff, 0x431ffff, 0x432ffff, 0x433ffff, 0x434ffff, 0xffffffff, 0xffffffff, 0xffff0435, 0xffff0436, 0xffffffff, 0xffffffff, 0x437ffff, 0xffffffff, 0xffffffff, 0x438ffff, 0x439ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff043a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43d043c, 0x43f043e, 0x4410440, 0x4430442, 0x4450444, 0x4470446, 0x4490448, 0x44b044a, 0x44d044c, 0x44f044e, 0x4510450, 0x4530452, 0x4550454, 0x4570456, 0x4590458, 0x45b045a, 0x45d045c, 0x45f045e, 0x4610460, 0x4630462, 0x4650464, 0x4670466, 0x4690468, 0x46b046a, 0x46d046c, 0x46f046e, 0x4710470, 0x4730472, 0x4750474, 0x4770476, 0x4790478, 0x47b047a, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x48cffff, 0x48e048d, 0x490048f, 0x4920491, 0x4940493, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0xffff04a5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4a704a6, 0x4a904a8, 0x4ab04aa, 0x4ad04ac, 0x4af04ae, 0x4b104b0, 0x4b304b2, 0x4b504b4, 0x4b704b6, 0x4b904b8, 0x4bb04ba, 0x4bd04bc, 0x4bf04be, 0x4c104c0, 0x4c304c2, 0x4c504c4, 0x4c704c6, 0x4c904c8, 0x4cb04ca, 0x4cd04cc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4cf04ce, 0x4d104d0, 0x4d304d2, 0x4d504d4, 0x4d704d6, 0x4d904d8, 0x4db04da, 0x4dd04dc, 0x4df04de, 0x4e104e0, 0x4e304e2, 0x4e504e4, 0x4e704e6, 0x4e904e8, 0x4eb04ea, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4f2ffff, 0x4f404f3, 0x4f604f5, 0x4f804f7, 0x4fa04f9, 0x4fc04fb, 0x4fdffff, 0x4ff04fe, 0x5010500, 0x5030502, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50cffff, 0x50e050d, 0x510050f, 0x5120511, 0x513ffff, 0xffff0514, 0xffffffff, 0x5160515, 0x5180517, 0x51a0519, 0x51c051b, 0x51e051d, 0x520051f, 0x5220521, 0x5240523, 0x5260525, 0x5280527, 0x52a0529, 0x52c052b, 0x52e052d, 0x530052f, 0x5320531, 0x5340533, 0x5360535, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0xffff0547, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5490548, 0x54b054a, 0x54d054c, 0x54f054e, 0x5510550, 0x5530552, 0x5550554, 0x5570556, 0x5590558, 0x55b055a, 0x55d055c, 0x55f055e, 0x5610560, 0x5630562, 0x5650564, 0x5670566, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5690568, 0x56b056a, 0x56d056c, 0x56f056e, 0x5710570, 0x5730572, 0x5750574, 0x5770576, 0x5790578, 0x57b057a, 0x57d057c, 0x57f057e, 0x5810580, 0x5830582, 0x5850584, 0x5870586, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5890588, 0x58b058a, 0x58d058c, 0x58f058e, 0x5910590, 0x5930592, 0x5950594, 0x5970596, 0x5990598, 0x59b059a, 0x59d059c, 0x59f059e, 0x5a105a0, 0x5a305a2, 0x5a505a4, 0x5a705a6, 0x5a905a8, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +000001000000048000000F40", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000300020005000400070006000900080000000A000B0000000D000C +000F000E0011001000130012000000140000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000015000000000000000000000000000000000000000000000016000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000170018000000000019001B001A001D001C001F001E0021002000000000000000000022000000000023 +000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000260025002800270000002900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002A00000000002B002D002C002F002E00000000000000000000000000000000 +000000000000000000300000000000310000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000032000000000000 +000000000000000000000000000000000000000000000000000000000000000000340033003500000000000000000036 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000037000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003B003A000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00020001000400030006000500080007000A0009000C000B000E000D +0010000F00120011001400130016001500180017FFFF0019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001C001B001E001D0020001F00220021 +002400230026002500280027002A0029002C002B002E002D0030002FFFFF003100330032003500340037003600390038 +003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003FFFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF +0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004BFFFF004CFFFF004DFFFF004EFFFF004FFFFF0050FFFF0051FFFF +0052FFFF0053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C +FFFF005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF +0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF +FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF +FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF +FFFFFFFFFFFFFFFF008EFFFFFFFF008F009100900092FFFFFFFF0093FFFF0094FFFF0095FFFF0096FFFF0097FFFF0098 +FFFF0099FFFF009A009C009B009DFFFF009EFFFF009FFFFF00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF +FFFFFFFF00A700A600A8FFFFFFFFFFFF00A9FFFF00AAFFFF00ABFFFF00ACFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF +00B1FFFF00B2FFFF00B3FFFF00B4FFFF00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF +FFFFFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00C600C7FFFFFFFF00C8FFFF00C9FFFFFFFF00CAFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF +00D000CF00D200D1FFFF00D300D500D400D6FFFF00D7FFFFFFFF00D8FFFFFFFF00DA00D900DBFFFF00DCFFFFFFFF00DD +00DF00DE00E100E0FFFF00E200E3FFFF00E4FFFFFFFF00E500E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFFFFFFFFFF +FFFF00E800EA00E9FFFFFFFF00EBFFFF00ED00EC00EF00EEFFFF00F0FFFFFFFFFFFFFFFFFFFF00F1FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F2FFFFFFFF00F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F5FFFF00F6FFFFFFFFFFFF00F7FFFF +FFFFFFFF00F8FFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00FC00FB00FE00FD00FFFFFF0101010001030102010501040107010601090108010B010A010D010C +010F010E0111011001130112011501140117011601190118011B011AFFFF011C011E011DFFFFFFFF011FFFFF01210120 +0122FFFF0123FFFF0124FFFF0125FFFF0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF +012F012E013101300132FFFFFFFFFFFFFFFF01330134FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0136013501380137013A0139013C013B +013E013D0140013F01420141014401430146014501480147014A0149014C014B014E014D0150014F0152015101540153 +0156015501580157015A0159015C015B015E015D0160015F01620161016401630165FFFF0166FFFF0167FFFF0168FFFF +0169FFFF016AFFFF016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF +0175FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0176FFFF0177FFFF0178FFFF0179FFFF017AFFFF017BFFFF017CFFFF +017DFFFF017EFFFF017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF +0189FFFF018AFFFF018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFFFFFFFFFFFFFF0191FFFF0192FFFF0193 +FFFF0194FFFF0195FFFF0196019801970199FFFF019AFFFF019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF +01A1FFFF01A2FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF +01ADFFFF01AEFFFF01AFFFFF01B0FFFF01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF +01B9FFFF01BAFFFF01BBFFFF01BCFFFF01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF +01C5FFFF01C6FFFF01C7FFFF01C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01C9FFFF01CB01CA01CD01CC01CF01CE01D101D001D301D201D501D401D701D6 +01D901D801DB01DA01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01ECFFFF01EE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F001EF01F201F101F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF020202010204020302060205 +02080207020A0209020C020B020E020D0210020F02120211021402130216021502180217FFFF0219021AFFFF021C021B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF021E021D0220021F02220221FFFFFFFF022402230226022502280227022A0229 +FFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFF0230FFFF0231FFFF0232FFFF +0233FFFF0234FFFF0235FFFF0236FFFF0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF +023FFFFF0240FFFF0241FFFF0242FFFF0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF +024BFFFF024CFFFF024DFFFF024EFFFF024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF +0257FFFF0258FFFF0259FFFF025AFFFF025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF +0263FFFF0264FFFF0265FFFF0266FFFF0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF +026FFFFF0270FFFF0271FFFF0272FFFF0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFFFFFFFFFF +FFFFFFFF027AFFFFFFFFFFFFFFFFFFFF027BFFFF027CFFFF027DFFFF027EFFFF027FFFFF0280FFFF0281FFFF0282FFFF +0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF +028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF +029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF +02A7FFFF02A8FFFF02A9FFFF02AAFFFF02AC02AB02AE02AD02B002AF02B202B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B402B302B602B502B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BA02B902BC02BB02BE02BD02C002BF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C202C102C402C302C602C502C802C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CA02C902CC02CB02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D402D302D602D502D802D702DA02D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02DC02DB02DE02DD02E002DF02E202E102E402E302E602E502E802E7FFFFFFFF02EA02E902EC02EB02EE02ED02F002EF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F202F102F402F302F602F502F802F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02FA02F902FC02FB02FE02FD030002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030203010303FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF0304FFFFFFFF0305FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03070306FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03090308FFFFFFFF030AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030E030D0310030F03120311031403130316031503180317031A0319031C031BFFFFFFFFFFFFFFFFFFFF031DFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031F031E0321032003230322032503240327032603290328032B032A032D032C032F032E033103300333033203350334 +03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03390338033B033A033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E +0351035003530352035503540357035603590358035B035A035D035C035F035E03610360036303620365036403670366 +0368FFFFFFFFFFFF0369FFFFFFFF036AFFFF036BFFFF036CFFFF036DFFFFFFFFFFFFFFFF036EFFFFFFFFFFFFFFFF036F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0370FFFF0371FFFF0372FFFF0373FFFF0374FFFF0375FFFF0376FFFF0377FFFF +0378FFFF0379FFFF037AFFFF037BFFFF037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF +0384FFFF0385FFFF0386FFFF0387FFFF0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF +0390FFFF0391FFFF0392FFFF0393FFFF0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF +039CFFFF039DFFFF039EFFFF039FFFFF03A0FFFF03A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A2FFFF03A3 +FFFFFFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A603A503A803A703AA03A903AC03AB +03AE03AD03B003AF03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C3 +03C603C503C803C703CA03C903CBFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CDFFFF03CEFFFF03CFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF +03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF +03E1FFFF03E2FFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E4FFFF03E5FFFF03E6FFFF03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF +03F0FFFF03F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFFFFFFFFFF03F9FFFF03FAFFFF03FBFFFF +03FCFFFF03FDFFFF03FEFFFF03FFFFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF +0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF +0414FFFF0415FFFF0416FFFF0417FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0419041AFFFF +041BFFFF041CFFFF041DFFFF041EFFFFFFFFFFFFFFFFFFFFFFFF041FFFFFFFFF0420FFFF0421FFFFFFFF04220423FFFF +0424FFFF0425FFFF0426FFFF0427FFFF0428FFFF0429FFFF042AFFFF042BFFFF042CFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFFFFFFFFFFFFFFFFFF +FFFF0435FFFF0436FFFFFFFFFFFFFFFF0437FFFFFFFFFFFFFFFFFFFF0438FFFF0439FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043D043C043F043E0441044004430442044504440447044604490448044B044A +044D044C044F044E0451045004530452045504540457045604590458045B045A045D045C045F045E0461046004630462 +046504640467046604690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A +047D047C047F047E0481048004830482048504840487048604890488048B048A048CFFFF048E048D0490048F04920491 +049404930496049504980497049A0499049C049B049E049D04A0049F04A204A104A404A3FFFF04A5FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04A704A604A904A804AB04AA04AD04AC04AF04AE04B104B004B304B204B504B404B704B604B904B804BB04BA04BD04BC +04BF04BE04C104C004C304C204C504C404C704C604C904C804CB04CA04CD04CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04CF04CE04D104D004D304D204D504D4 +04D704D604D904D804DB04DA04DD04DC04DF04DE04E104E004E304E204E504E404E704E604E904E804EB04EA04ED04EC +04EF04EE04F104F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF04F2FFFF04F404F304F604F504F804F704FA04F904FC04FB04FDFFFF04FF04FE05010500 +05030502050505040507050605090508050B050A050CFFFF050E050D0510050F051205110513FFFFFFFF0514FFFFFFFF +0516051505180517051A0519051C051B051E051D0520051F05220521052405230526052505280527052A0529052C052B +052E052D0530052F05320531053405330536053505380537053A0539053C053B053E053D0540053F0542054105440543 +05460545FFFF0547FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05490548054B054A054D054C054F054E +0551055005530552055505540557055605590558055B055A055D055C055F055E05610560056305620565056405670566 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05690568056B056A056D056C056F056E +0571057005730572057505740577057605790578057B057A057D057C057F057E05810580058305820585058405870586 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05890588058B058A058D058C058F058E059105900593059205950594 +0597059605990598059B059A059D059C059F059E05A105A005A305A205A505A405A705A605A905A8FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //9856 bytes -enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xe40], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x20000, 0x40003, 0x60005, 0x80007, 0x0, 0x90000, 0xb000a, 0xd000c, 0xf000e, 0x110010, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x150014, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x180017, 0x1a0019, 0x1c001b, 0x1e001d, 0x0, 0x0, 0x20001f, 0x21, 0x0, 0x0, 0x0, 0x0, 0x0, 0x230022, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x250024, 0x270026, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x280000, 0x29, 0x2b002a, 0x2d002c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0x310030, 0x320000, 0x33, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x34, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x35, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x360000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x230022, 0x250024, 0x270026, 0x290028, 0x2b002a, 0x2d002c, 0x2f002e, 0xffff0030, 0x320031, 0x340033, 0x360035, 0xffff0037, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0038, 0xffff0039, 0xffff003a, 0xffff003b, 0xffff003c, 0xffff003d, 0xffff003e, 0xffff003f, 0xffff0040, 0xffff0041, 0xffff0042, 0xffff0043, 0xffff0044, 0xffff0045, 0xffff0046, 0xffff0047, 0xffff0048, 0xffff0049, 0xffff004a, 0xffff004b, 0xffff004c, 0xffff004d, 0xffff004e, 0xffff004f, 0xffff0050, 0xffff0051, 0xffff0052, 0xffff0053, 0x54ffff, 0x55ffff, 0x56ffff, 0x57ffff, 0x58ffff, 0x59ffff, 0x5affff, 0x5bffff, 0xffffffff, 0xffff005c, 0xffff005d, 0xffff005e, 0xffff005f, 0xffff0060, 0xffff0061, 0xffff0062, 0xffff0063, 0xffff0064, 0xffff0065, 0xffff0066, 0xffff0067, 0xffff0068, 0xffff0069, 0xffff006a, 0xffff006b, 0xffff006c, 0xffff006d, 0xffff006e, 0xffff006f, 0xffff0070, 0xffff0071, 0xffff0072, 0x740073, 0x75ffff, 0x76ffff, 0xffffffff, 0x77ffff, 0xffff0078, 0xffff0079, 0x7b007a, 0x7cffff, 0x7e007d, 0xffffffff, 0x80007f, 0x820081, 0x83ffff, 0xffff0084, 0x860085, 0xffff0087, 0xffffffff, 0x890088, 0x8affff, 0xffff008b, 0xffff008c, 0xffff008d, 0x8f008e, 0x90ffff, 0xffffffff, 0xffff0091, 0x930092, 0x94ffff, 0x960095, 0x97ffff, 0x98ffff, 0xffff0099, 0xffffffff, 0xffff009a, 0xffffffff, 0xffffffff, 0xffffffff, 0x9c009b, 0x9dffff, 0xffff009e, 0xa0009f, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xa6ffff, 0xa7ffff, 0xa8ffff, 0xffffffff, 0xffff00a9, 0xffff00aa, 0xffff00ab, 0xffff00ac, 0xffff00ad, 0xffff00ae, 0xffff00af, 0xffff00b0, 0xffff00b1, 0xb2ffff, 0xffff00b3, 0xffff00b4, 0xb600b5, 0xffff00b7, 0xffff00b8, 0xffff00b9, 0xffff00ba, 0xffff00bb, 0xffff00bc, 0xffff00bd, 0xffff00be, 0xffff00bf, 0xffff00c0, 0xffff00c1, 0xffff00c2, 0xffff00c3, 0xffff00c4, 0xffff00c5, 0xffff00c6, 0xffff00c7, 0xffff00c8, 0xffff00c9, 0xffff00ca, 0xffff00cb, 0xffff00cc, 0xffff00cd, 0xffff00ce, 0xffff00cf, 0xffff00d0, 0xffff00d1, 0xffff00d2, 0xffff00d3, 0xffff00d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xd600d5, 0xd7ffff, 0xffff00d8, 0xd9ffff, 0xdaffff, 0xdc00db, 0xffff00dd, 0xffff00de, 0xffff00df, 0xffff00e0, 0xffff00e1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00e2, 0xffff00e3, 0xffffffff, 0xffff00e4, 0xffffffff, 0xffffffff, 0xffffffff, 0xe5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00e6, 0xe800e7, 0xffff00e9, 0xffff00ea, 0xec00eb, 0xedffff, 0xef00ee, 0xf100f0, 0xf300f2, 0xf500f4, 0xf700f6, 0xf900f8, 0xfb00fa, 0xfd00fc, 0xfeffff, 0x10000ff, 0x1020101, 0x1040103, 0x1060105, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x107ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0108, 0xffff0109, 0xffff010a, 0xffff010b, 0xffff010c, 0xffff010d, 0xffff010e, 0xffff010f, 0xffff0110, 0xffff0111, 0xffff0112, 0xffff0113, 0xffffffff, 0xffffffff, 0xffff0114, 0x115ffff, 0x116ffff, 0xffff0117, 0x118ffff, 0x11a0119, 0x11c011b, 0x11e011d, 0x120011f, 0x1220121, 0x1240123, 0x1260125, 0x1280127, 0x12a0129, 0x12c012b, 0x12e012d, 0x130012f, 0x1320131, 0x1340133, 0x1360135, 0x1380137, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff014b, 0xffff014c, 0xffff014d, 0xffff014e, 0xffff014f, 0xffff0150, 0xffff0151, 0xffff0152, 0xffff0153, 0xffff0154, 0xffff0155, 0xffff0156, 0xffff0157, 0xffff0158, 0xffff0159, 0xffff015a, 0xffff015b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff015c, 0xffff015d, 0xffff015e, 0xffff015f, 0xffff0160, 0xffff0161, 0xffff0162, 0xffff0163, 0xffff0164, 0xffff0165, 0xffff0166, 0xffff0167, 0xffff0168, 0xffff0169, 0xffff016a, 0xffff016b, 0xffff016c, 0xffff016d, 0xffff016e, 0xffff016f, 0xffff0170, 0xffff0171, 0xffff0172, 0xffff0173, 0xffff0174, 0xffff0175, 0xffff0176, 0x1780177, 0x179ffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0xffffffff, 0xffff017f, 0xffff0180, 0xffff0181, 0xffff0182, 0xffff0183, 0xffff0184, 0xffff0185, 0xffff0186, 0xffff0187, 0xffff0188, 0xffff0189, 0xffff018a, 0xffff018b, 0xffff018c, 0xffff018d, 0xffff018e, 0xffff018f, 0xffff0190, 0xffff0191, 0xffff0192, 0xffff0193, 0xffff0194, 0xffff0195, 0xffff0196, 0xffff0197, 0xffff0198, 0xffff0199, 0xffff019a, 0xffff019b, 0xffff019c, 0xffff019d, 0xffff019e, 0xffff019f, 0xffff01a0, 0xffff01a1, 0xffff01a2, 0xffff01a3, 0xffff01a4, 0xffff01a5, 0xffff01a6, 0xffff01a7, 0xffff01a8, 0xffff01a9, 0xffff01aa, 0xffff01ab, 0xffff01ac, 0xffff01ad, 0xffff01ae, 0x1afffff, 0x1b101b0, 0x1b301b2, 0x1b501b4, 0x1b701b6, 0x1b901b8, 0x1bb01ba, 0x1bd01bc, 0x1bf01be, 0x1c101c0, 0x1c301c2, 0x1c501c4, 0x1c701c6, 0x1c901c8, 0x1cb01ca, 0x1cd01cc, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0xffff01d4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1d601d5, 0x1d801d7, 0x1da01d9, 0x1dc01db, 0x1de01dd, 0x1e001df, 0x1e201e1, 0x1e401e3, 0x1e601e5, 0x1e801e7, 0x1ea01e9, 0x1ec01eb, 0x1ee01ed, 0x1f001ef, 0x1f201f1, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fbffff, 0xffffffff, 0xffffffff, 0x1fcffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0x21a0219, 0x21c021b, 0x21e021d, 0x220021f, 0x2220221, 0x2240223, 0x2260225, 0x2280227, 0x22a0229, 0x22c022b, 0x22e022d, 0x230022f, 0x2320231, 0x2340233, 0x2360235, 0x2380237, 0x23a0239, 0x23c023b, 0x23e023d, 0x240023f, 0x2420241, 0x2440243, 0x2460245, 0x2480247, 0x24a0249, 0x24c024b, 0x24e024d, 0x250024f, 0x2520251, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2540253, 0x2560255, 0x2580257, 0x25a0259, 0x25c025b, 0x25e025d, 0x260025f, 0x2620261, 0x2640263, 0x2660265, 0x2680267, 0x26a0269, 0x26c026b, 0x26e026d, 0x270026f, 0x2720271, 0x2740273, 0x2760275, 0x2780277, 0x27a0279, 0x27c027b, 0xffff027d, 0x27effff, 0x280027f, 0xffff0281, 0xffff0282, 0xffff0283, 0xffff0284, 0xffff0285, 0xffff0286, 0xffff0287, 0xffff0288, 0xffff0289, 0xffff028a, 0xffff028b, 0xffff028c, 0xffff028d, 0xffff028e, 0xffff028f, 0xffff0290, 0xffff0291, 0xffff0292, 0xffff0293, 0xffff0294, 0xffff0295, 0xffff0296, 0xffff0297, 0xffff0298, 0xffff0299, 0xffff029a, 0xffff029b, 0xffff029c, 0xffff029d, 0xffff029e, 0xffff029f, 0xffff02a0, 0xffff02a1, 0xffff02a2, 0xffff02a3, 0xffff02a4, 0xffff02a5, 0xffff02a6, 0xffff02a7, 0xffff02a8, 0xffff02a9, 0xffff02aa, 0xffff02ab, 0xffff02ac, 0xffff02ad, 0xffff02ae, 0xffff02af, 0xffff02b0, 0xffff02b1, 0xffff02b2, 0xffff02b3, 0xffff02b4, 0xffff02b5, 0xffff02b6, 0xffff02b7, 0xffff02b8, 0xffff02b9, 0xffff02ba, 0xffff02bb, 0xffff02bc, 0xffff02bd, 0xffff02be, 0xffff02bf, 0xffff02c0, 0xffff02c1, 0xffff02c2, 0xffff02c3, 0xffff02c4, 0xffff02c5, 0xffff02c6, 0xffff02c7, 0xffff02c8, 0xffff02c9, 0xffff02ca, 0xffff02cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff02cc, 0xffff02cd, 0xffff02ce, 0xffff02cf, 0xffff02d0, 0xffff02d1, 0xffff02d2, 0xffff02d3, 0xffff02d4, 0xffff02d5, 0xffff02d6, 0xffff02d7, 0xffff02d8, 0xffff02d9, 0xffff02da, 0xffff02db, 0xffff02dc, 0xffff02dd, 0xffff02de, 0xffff02df, 0xffff02e0, 0xffff02e1, 0xffff02e2, 0xffff02e3, 0xffff02e4, 0xffff02e5, 0xffff02e6, 0xffff02e7, 0xffff02e8, 0xffff02e9, 0xffff02ea, 0xffff02eb, 0xffff02ec, 0xffff02ed, 0xffff02ee, 0xffff02ef, 0xffff02f0, 0xffff02f1, 0xffff02f2, 0xffff02f3, 0xffff02f4, 0xffff02f5, 0xffff02f6, 0xffff02f7, 0xffff02f8, 0xffff02f9, 0xffff02fa, 0xffff02fb, 0xffff02fc, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2fe02fd, 0x30002ff, 0x3020301, 0x3040303, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3060305, 0x3080307, 0x30a0309, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30c030b, 0x30e030d, 0x310030f, 0x3120311, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x31c031b, 0x31e031d, 0x320031f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x321ffff, 0x322ffff, 0x323ffff, 0x324ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3260325, 0x3280327, 0x32a0329, 0x32c032b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x32e032d, 0x330032f, 0x3320331, 0x3340333, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3360335, 0x3380337, 0x33a0339, 0x33c033b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x33e033d, 0x340033f, 0x3420341, 0x3440343, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3460345, 0x3480347, 0xffff0349, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x34b034a, 0x34d034c, 0xffff034e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x350034f, 0x3520351, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3540353, 0x3560355, 0xffff0357, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3590358, 0x35b035a, 0xffff035c, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff035d, 0xffffffff, 0x35f035e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0360, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3620361, 0x3640363, 0x3660365, 0x3680367, 0x36a0369, 0x36c036b, 0x36e036d, 0x370036f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x371ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3730372, 0x3750374, 0x3770376, 0x3790378, 0x37b037a, 0x37d037c, 0x37f037e, 0x3810380, 0x3830382, 0x3850384, 0x3870386, 0x3890388, 0x38b038a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x38d038c, 0x38f038e, 0x3910390, 0x3930392, 0x3950394, 0x3970396, 0x3990398, 0x39b039a, 0x39d039c, 0x39f039e, 0x3a103a0, 0x3a303a2, 0x3a503a4, 0x3a703a6, 0x3a903a8, 0x3ab03aa, 0x3ad03ac, 0x3af03ae, 0x3b103b0, 0x3b303b2, 0x3b503b4, 0x3b703b6, 0x3b903b8, 0x3bb03ba, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03bc, 0x3be03bd, 0xffff03bf, 0x3c0ffff, 0x3c1ffff, 0x3c2ffff, 0x3c3ffff, 0x3c503c4, 0xffff03c6, 0xffff03c7, 0x3c8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3ca03c9, 0xffff03cb, 0xffff03cc, 0xffff03cd, 0xffff03ce, 0xffff03cf, 0xffff03d0, 0xffff03d1, 0xffff03d2, 0xffff03d3, 0xffff03d4, 0xffff03d5, 0xffff03d6, 0xffff03d7, 0xffff03d8, 0xffff03d9, 0xffff03da, 0xffff03db, 0xffff03dc, 0xffff03dd, 0xffff03de, 0xffff03df, 0xffff03e0, 0xffff03e1, 0xffff03e2, 0xffff03e3, 0xffff03e4, 0xffff03e5, 0xffff03e6, 0xffff03e7, 0xffff03e8, 0xffff03e9, 0xffff03ea, 0xffff03eb, 0xffff03ec, 0xffff03ed, 0xffff03ee, 0xffff03ef, 0xffff03f0, 0xffff03f1, 0xffff03f2, 0xffff03f3, 0xffff03f4, 0xffff03f5, 0xffff03f6, 0xffff03f7, 0xffff03f8, 0xffff03f9, 0xffff03fa, 0xffff03fb, 0xffff03fc, 0xffffffff, 0xffffffff, 0xffffffff, 0x3fdffff, 0x3feffff, 0xffffffff, 0xffffffff, 0xffff03ff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0400, 0xffff0401, 0xffff0402, 0xffff0403, 0xffff0404, 0xffff0405, 0xffff0406, 0xffff0407, 0xffff0408, 0xffff0409, 0xffff040a, 0xffff040b, 0xffff040c, 0xffff040d, 0xffff040e, 0xffff040f, 0xffff0410, 0xffff0411, 0xffff0412, 0xffff0413, 0xffff0414, 0xffff0415, 0xffff0416, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0417, 0xffff0418, 0xffff0419, 0xffff041a, 0xffff041b, 0xffff041c, 0xffff041d, 0xffff041e, 0xffff041f, 0xffff0420, 0xffff0421, 0xffff0422, 0xffff0423, 0xffff0424, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0425, 0xffff0426, 0xffff0427, 0xffff0428, 0xffff0429, 0xffff042a, 0xffff042b, 0xffffffff, 0xffff042c, 0xffff042d, 0xffff042e, 0xffff042f, 0xffff0430, 0xffff0431, 0xffff0432, 0xffff0433, 0xffff0434, 0xffff0435, 0xffff0436, 0xffff0437, 0xffff0438, 0xffff0439, 0xffff043a, 0xffff043b, 0xffff043c, 0xffff043d, 0xffff043e, 0xffff043f, 0xffff0440, 0xffff0441, 0xffff0442, 0xffff0443, 0xffff0444, 0xffff0445, 0xffff0446, 0xffff0447, 0xffff0448, 0xffff0449, 0xffff044a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x44bffff, 0x44cffff, 0x44dffff, 0xffff044e, 0xffff044f, 0xffff0450, 0xffff0451, 0xffff0452, 0xffffffff, 0x453ffff, 0x454ffff, 0xffffffff, 0xffff0455, 0xffff0456, 0xffffffff, 0xffff0457, 0xffff0458, 0xffff0459, 0xffff045a, 0xffff045b, 0xffff045c, 0xffff045d, 0xffff045e, 0xffff045f, 0xffff0460, 0x4620461, 0x4640463, 0xffff0465, 0x4670466, 0x4690468, 0xffff046a, 0xffff046b, 0xffff046c, 0xffff046d, 0xffff046e, 0xffff046f, 0xffff0470, 0xffff0471, 0x4730472, 0x4750474, 0x476ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0477, 0xffffffff, 0xffffffff, 0xffff0478, 0xffff0479, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x47affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x47bffff, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x48d048c, 0x48f048e, 0x4910490, 0x4930492, 0xffff0494, 0xffffffff, 0xffffffff, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0x4a604a5, 0x4a804a7, 0x4aa04a9, 0x4ac04ab, 0x4ae04ad, 0x4b004af, 0x4b204b1, 0x4b404b3, 0x4b604b5, 0x4b804b7, 0x4ba04b9, 0x4bc04bb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4be04bd, 0x4c004bf, 0x4c204c1, 0x4c404c3, 0x4c604c5, 0x4c804c7, 0x4ca04c9, 0x4cc04cb, 0x4ce04cd, 0x4d004cf, 0x4d204d1, 0x4d404d3, 0x4d604d5, 0x4d804d7, 0x4da04d9, 0x4dc04db, 0x4de04dd, 0x4e004df, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4e204e1, 0x4e404e3, 0x4e604e5, 0x4e804e7, 0x4ea04e9, 0xffff04eb, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0x4f304f2, 0x4f504f4, 0x4f704f6, 0x4f904f8, 0xffff04fa, 0x4fc04fb, 0x4fe04fd, 0x50004ff, 0xffff0501, 0x5030502, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50d050c, 0x50f050e, 0x5110510, 0x5130512, 0x5150514, 0x5170516, 0x5190518, 0x51b051a, 0x51d051c, 0x51f051e, 0x5210520, 0x5230522, 0x5250524, 0x5270526, 0x5290528, 0x52b052a, 0x52d052c, 0x52f052e, 0x5310530, 0x5330532, 0x5350534, 0xffff0536, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0x5480547, 0x54a0549, 0x54c054b, 0x54e054d, 0x550054f, 0x5520551, 0x5540553, 0x5560555, 0x5580557, 0x55a0559, 0x55c055b, 0x55e055d, 0x560055f, 0x5620561, 0x5640563, 0x5660565, 0x5680567, 0x56a0569, 0x56c056b, 0x56e056d, 0x570056f, 0x5720571, 0x5740573, 0x5760575, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x5780577, 0x57a0579, 0x57c057b, 0x57e057d, 0x580057f, 0x5820581, 0x5840583, 0x5860585, 0x5880587, 0x58a0589, 0x58c058b, 0x58e058d, 0x590058f, 0x5920591, 0x5940593, 0x5960595, 0x5980597, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +000001000000048000000E40", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000200000004000300060005000800070000000000090000000B000A +000D000C000F000E00110010000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000013001200000000000000000000000000000000000000000015001400000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000016000000000000000000180017001A0019001C001B001E001D00000000000000000020001F00000021 +000000000000000000000000000000000000000000230022000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000250024002700260000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000028000000000029002B002A002D002C00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E00000000 +00000000000000000000000000000000000000000000000000000000000000000000002F003100300032000000000033 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003400000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003500000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000037000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000FFFF00020001000400030006000500080007000A0009000C000B000E000D0010000F001200110014001300160015 +00180017FFFF0019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001B001A001D001C001F001E00210020 +00230022002500240027002600290028002B002A002D002C002F002EFFFF0030003200310034003300360035FFFF0037 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0038FFFF0039FFFF003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003F +FFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004B +FFFF004CFFFF004DFFFF004EFFFF004FFFFF0050FFFF0051FFFF0052FFFF00530054FFFF0055FFFF0056FFFF0057FFFF +0058FFFF0059FFFF005AFFFF005BFFFFFFFFFFFFFFFF005CFFFF005DFFFF005EFFFF005FFFFF0060FFFF0061FFFF0062 +FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006E +FFFF006FFFFF0070FFFF0071FFFF0072007400730075FFFF0076FFFFFFFFFFFF0077FFFFFFFF0078FFFF0079007B007A +007CFFFF007E007DFFFFFFFF0080007F008200810083FFFFFFFF008400860085FFFF0087FFFFFFFF00890088008AFFFF +FFFF008BFFFF008CFFFF008D008F008E0090FFFFFFFFFFFFFFFF0091009300920094FFFF009600950097FFFF0098FFFF +FFFF0099FFFFFFFFFFFF009AFFFFFFFFFFFFFFFFFFFFFFFF009C009B009DFFFFFFFF009E00A0009F00A1FFFF00A2FFFF +00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFFFFFFFFFFFFFF00A9FFFF00AAFFFF00ABFFFF00ACFFFF00AD +FFFF00AEFFFF00AFFFFF00B0FFFF00B100B2FFFFFFFF00B3FFFF00B400B600B5FFFF00B7FFFF00B8FFFF00B9FFFF00BA +FFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6 +FFFF00C7FFFF00C8FFFF00C9FFFF00CAFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF00CFFFFF00D0FFFF00D1FFFF00D2 +FFFF00D3FFFF00D4FFFFFFFFFFFFFFFFFFFFFFFF00D600D500D7FFFFFFFF00D800D9FFFF00DAFFFF00DC00DBFFFF00DD +FFFF00DEFFFF00DFFFFF00E0FFFF00E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00E2FFFF00E3FFFFFFFFFFFF00E4FFFFFFFFFFFFFFFFFFFFFFFF00E5FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E600E800E7FFFF00E9FFFF00EA00EC00EB00EDFFFF00EF00EE00F100F000F300F2 +00F500F400F700F600F900F800FB00FA00FD00FC00FEFFFF010000FF010201010104010301060105FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0107FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0108FFFF0109FFFF010AFFFF010B +FFFF010CFFFF010DFFFF010EFFFF010FFFFF0110FFFF0111FFFF0112FFFF0113FFFFFFFFFFFFFFFFFFFF01140115FFFF +0116FFFFFFFF01170118FFFF011A0119011C011B011E011D0120011F01220121012401230126012501280127012A0129 +012C012B012E012D0130012F01320131013401330136013501380137013A0139013C013B013E013D0140013F01420141 +014401430146014501480147014A0149FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF014BFFFF014CFFFF014DFFFF014EFFFF014FFFFF0150FFFF0151FFFF0152 +FFFF0153FFFF0154FFFF0155FFFF0156FFFF0157FFFF0158FFFF0159FFFF015AFFFF015BFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF015CFFFF015DFFFF015EFFFF015FFFFF0160FFFF0161FFFF0162FFFF0163FFFF0164FFFF0165FFFF0166 +FFFF0167FFFF0168FFFF0169FFFF016AFFFF016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172 +FFFF0173FFFF0174FFFF0175FFFF0176017801770179FFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFFFFFFFFFF +FFFF017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018A +FFFF018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFF0195FFFF0196 +FFFF0197FFFF0198FFFF0199FFFF019AFFFF019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2 +FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AE +01AFFFFF01B101B001B301B201B501B401B701B601B901B801BB01BA01BD01BC01BF01BE01C101C001C301C201C501C4 +01C701C601C901C801CB01CA01CD01CC01CF01CE01D101D001D301D2FFFF01D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01D601D501D801D701DA01D901DC01DB +01DE01DD01E001DF01E201E101E401E301E601E501E801E701EA01E901EC01EB01EE01ED01F001EF01F201F101F401F3 +01F601F501F801F701FA01F901FBFFFFFFFFFFFFFFFFFFFF01FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01FE01FD020001FF02020201020402030206020502080207020A0209020C020B020E020D0210020F0212021102140213 +0216021502180217021A0219021C021B021E021D0220021F02220221022402230226022502280227022A0229022C022B +022E022D0230022F02320231023402330236023502380237023A0239023C023B023E023D0240023F0242024102440243 +0246024502480247024A0249024C024B024E024D0250024F02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF025402530256025502580257025A0259 +025C025B025E025D0260025F02620261026402630266026502680267026A0269026C026B026E026D0270026F02720271 +027402730276027502780277027A0279027C027BFFFF027D027EFFFF0280027FFFFF0281FFFF0282FFFF0283FFFF0284 +FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290 +FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029C +FFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8 +FFFF02A9FFFF02AAFFFF02ABFFFF02ACFFFF02ADFFFF02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B2FFFF02B3FFFF02B4 +FFFF02B5FFFF02B6FFFF02B7FFFF02B8FFFF02B9FFFF02BAFFFF02BBFFFF02BCFFFF02BDFFFF02BEFFFF02BFFFFF02C0 +FFFF02C1FFFF02C2FFFF02C3FFFF02C4FFFF02C5FFFF02C6FFFF02C7FFFF02C8FFFF02C9FFFF02CAFFFF02CBFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF02CCFFFF02CDFFFF02CEFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF02D3FFFF02D4 +FFFF02D5FFFF02D6FFFF02D7FFFF02D8FFFF02D9FFFF02DAFFFF02DBFFFF02DCFFFF02DDFFFF02DEFFFF02DFFFFF02E0 +FFFF02E1FFFF02E2FFFF02E3FFFF02E4FFFF02E5FFFF02E6FFFF02E7FFFF02E8FFFF02E9FFFF02EAFFFF02EBFFFF02EC +FFFF02EDFFFF02EEFFFF02EFFFFF02F0FFFF02F1FFFF02F2FFFF02F3FFFF02F4FFFF02F5FFFF02F6FFFF02F7FFFF02F8 +FFFF02F9FFFF02FAFFFF02FBFFFF02FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02FE02FD030002FF0302030103040303 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0306030503080307030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030C030B030E030D0310030F03120311FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031403130316031503180317031A0319 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031C031B031E031D0320031FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0321FFFF0322FFFF0323FFFF0324FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0326032503280327032A0329032C032B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +032E032D0330032F0332033103340333FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0336033503380337033A0339033C033B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF033E033D0340033F0342034103440343FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0346034503480347FFFF0349FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF034B034A034D034CFFFF034EFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0350034F03520351FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0354035303560355FFFF0357FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03590358035B035AFFFF035CFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03620361036403630366036503680367036A0369036C036B036E036D0370036FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF03730372037503740377037603790378037B037A037D037C037F037E0381038003830382 +038503840387038603890388038B038AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF038D038C038F038E0391039003930392039503940397039603990398039B039A +039D039C039F039E03A103A003A303A203A503A403A703A603A903A803AB03AA03AD03AC03AF03AE03B103B003B303B2 +03B503B403B703B603B903B803BB03BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03BC03BE03BDFFFF03BF03C0FFFF03C1FFFF03C2FFFF03C3FFFF03C503C4 +FFFF03C6FFFF03C703C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CA03C9FFFF03CBFFFF03CCFFFF03CDFFFF03CE +FFFF03CFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DA +FFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6 +FFFF03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2 +FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFFFFFF +FFFFFFFF03FDFFFF03FEFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040B +FFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0417FFFF0418FFFF0419FFFF041A +FFFF041BFFFF041CFFFF041DFFFF041EFFFF041FFFFF0420FFFF0421FFFF0422FFFF0423FFFF0424FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFF0426FFFF0427 +FFFF0428FFFF0429FFFF042AFFFF042BFFFFFFFFFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432 +FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFF0439FFFF043AFFFF043BFFFF043CFFFF043DFFFF043E +FFFF043FFFFF0440FFFF0441FFFF0442FFFF0443FFFF0444FFFF0445FFFF0446FFFF0447FFFF0448FFFF0449FFFF044A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF044BFFFF044CFFFF044DFFFFFFFF044EFFFF044FFFFF0450FFFF0451FFFF0452 +FFFFFFFF0453FFFF0454FFFFFFFFFFFFFFFF0455FFFF0456FFFFFFFFFFFF0457FFFF0458FFFF0459FFFF045AFFFF045B +FFFF045CFFFF045DFFFF045EFFFF045FFFFF04600462046104640463FFFF04650467046604690468FFFF046AFFFF046B +FFFF046CFFFF046DFFFF046EFFFF046FFFFF0470FFFF047104730472047504740476FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0477FFFFFFFFFFFFFFFFFFFF0478FFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047BFFFF047D047C047F047E0481048004830482048504840487048604890488 +048B048A048D048C048F048E0491049004930492FFFF0494FFFFFFFFFFFFFFFF0496049504980497049A0499049C049B +049E049D04A0049F04A204A104A404A304A604A504A804A704AA04A904AC04AB04AE04AD04B004AF04B204B104B404B3 +04B604B504B804B704BA04B904BC04BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04BE04BD04C004BF04C204C104C404C304C604C504C804C704CA04C904CC04CB +04CE04CD04D004CF04D204D104D404D304D604D504D804D704DA04D904DC04DB04DE04DD04E004DFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E204E104E404E304E604E504E804E7 +04EA04E9FFFF04EB04ED04EC04EF04EE04F104F004F304F204F504F404F704F604F904F8FFFF04FA04FC04FB04FE04FD +050004FFFFFF050105030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +050505040507050605090508050B050A050D050C050F050E0511051005130512051505140517051605190518051B051A +051D051C051F051E0521052005230522052505240527052605290528052B052A052D052C052F052E0531053005330532 +05350534FFFF0536FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +05380537053A0539053C053B053E053D0540053F05420541054405430546054505480547054A0549054C054B054E054D +0550054F05520551055405530556055505580557055A0559055C055B055E055D0560055F056205610564056305660565 +05680567056A0569056C056B056E056D0570056F057205710574057305760575FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +05780577057A0579057C057B057E057D0580057F05820581058405830586058505880587058A0589058C058B058E058D +0590058F05920591059405930596059505980597FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10368 bytes -enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x40, 0x280], [ 0x100, 0x480, 0xf40], [ 0x2020100, 0x4020302, 0x6020205, 0x7020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x2020202, 0x10000, 0x30002, 0x50004, 0x70006, 0x90008, 0xa, 0xb0000, 0xd000c, 0xf000e, 0x110010, 0x130012, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x150000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x160000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17, 0x180000, 0x19, 0x1b001a, 0x1d001c, 0x1f001e, 0x210020, 0x0, 0x0, 0x220000, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x240000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x260025, 0x280027, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a0000, 0x2b, 0x2d002c, 0x2f002e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x300000, 0x31, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x320000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x340033, 0x350000, 0x0, 0x36, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x370000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff, 0x20001, 0x40003, 0x60005, 0x80007, 0xa0009, 0xc000b, 0xe000d, 0x10000f, 0x120011, 0x140013, 0x160015, 0x180017, 0xffff0019, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1affff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1c001b, 0x1e001d, 0x20001f, 0x220021, 0x240023, 0x260025, 0x280027, 0x2a0029, 0x2c002b, 0x2e002d, 0x30002f, 0xffff0031, 0x330032, 0x350034, 0x370036, 0x390038, 0x3affff, 0x3bffff, 0x3cffff, 0x3dffff, 0x3effff, 0x3fffff, 0x40ffff, 0x41ffff, 0x42ffff, 0x43ffff, 0x44ffff, 0x45ffff, 0x46ffff, 0x47ffff, 0x48ffff, 0x49ffff, 0x4affff, 0x4bffff, 0x4cffff, 0x4dffff, 0x4effff, 0x4fffff, 0x50ffff, 0x51ffff, 0x52ffff, 0x53ffff, 0x54ffff, 0x55ffff, 0xffffffff, 0xffff0056, 0xffff0057, 0xffff0058, 0xffff0059, 0xffff005a, 0xffff005b, 0xffff005c, 0xffff005d, 0x5effff, 0x5fffff, 0x60ffff, 0x61ffff, 0x62ffff, 0x63ffff, 0x64ffff, 0x65ffff, 0x66ffff, 0x67ffff, 0x68ffff, 0x69ffff, 0x6affff, 0x6bffff, 0x6cffff, 0x6dffff, 0x6effff, 0x6fffff, 0x70ffff, 0x71ffff, 0x72ffff, 0x73ffff, 0x74ffff, 0xffffffff, 0xffff0075, 0xffff0076, 0x780077, 0xffff0079, 0x7affff, 0x7bffff, 0xffffffff, 0xffff007c, 0xffffffff, 0xffff007d, 0xffffffff, 0xffffffff, 0xffff007e, 0x7fffff, 0xffffffff, 0x80ffff, 0xffff0081, 0xffffffff, 0xffff0082, 0x83ffff, 0x84ffff, 0x85ffff, 0xffffffff, 0xffff0086, 0xffffffff, 0x87ffff, 0xffffffff, 0xffff0088, 0xffffffff, 0xffff0089, 0xffff008a, 0x8bffff, 0xffffffff, 0x8cffff, 0x8dffff, 0xffffffff, 0xffffffff, 0x8f008e, 0x910090, 0x930092, 0x950094, 0xffff0096, 0xffff0097, 0xffff0098, 0xffff0099, 0xffff009a, 0xffff009b, 0xffff009c, 0xffff009d, 0x9f009e, 0xa0ffff, 0xa1ffff, 0xa2ffff, 0xa3ffff, 0xa4ffff, 0xa5ffff, 0xa6ffff, 0xa7ffff, 0xa8ffff, 0xa9ffff, 0xab00aa, 0xacffff, 0xffffffff, 0xadffff, 0xaeffff, 0xafffff, 0xb0ffff, 0xb1ffff, 0xb2ffff, 0xb3ffff, 0xb4ffff, 0xb5ffff, 0xb6ffff, 0xb7ffff, 0xb8ffff, 0xb9ffff, 0xbaffff, 0xbbffff, 0xbcffff, 0xbdffff, 0xbeffff, 0xbfffff, 0xc0ffff, 0xffffffff, 0xc1ffff, 0xc2ffff, 0xc3ffff, 0xc4ffff, 0xc5ffff, 0xc6ffff, 0xc7ffff, 0xc8ffff, 0xc9ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff00ca, 0xcbffff, 0xffff00cc, 0xffff00cd, 0xffffffff, 0xceffff, 0xcfffff, 0xd0ffff, 0xd1ffff, 0xd2ffff, 0xd400d3, 0xd600d5, 0xffff00d7, 0xd900d8, 0xdaffff, 0xdbffff, 0xffff00dc, 0xffffffff, 0xde00dd, 0xdfffff, 0xe0ffff, 0xffff00e1, 0xe300e2, 0xe500e4, 0xffff00e6, 0xe7ffff, 0xe8ffff, 0xffff00e9, 0xeaffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xebffff, 0xffffffff, 0xffff00ec, 0xee00ed, 0xffffffff, 0xefffff, 0xf100f0, 0xf300f2, 0xffff00f4, 0xffffffff, 0xffffffff, 0xffff00f5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf6ffff, 0xffff00f7, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xf9ffff, 0xfaffff, 0xffffffff, 0xfbffff, 0xffffffff, 0xfcffff, 0xfe00fd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x10000ff, 0x1020101, 0x103ffff, 0x1050104, 0x1070106, 0x1090108, 0x10b010a, 0x10d010c, 0x10f010e, 0x1110110, 0x1130112, 0x1150114, 0x1170116, 0x1190118, 0x11b011a, 0x11d011c, 0x11f011e, 0xffff0120, 0x1220121, 0xffffffff, 0x123ffff, 0x1250124, 0x126ffff, 0x127ffff, 0x128ffff, 0x129ffff, 0x12affff, 0x12bffff, 0x12cffff, 0x12dffff, 0x12effff, 0x12fffff, 0x130ffff, 0x131ffff, 0x1330132, 0x1350134, 0x136ffff, 0xffffffff, 0xffff0137, 0x138ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x13a0139, 0x13c013b, 0x13e013d, 0x140013f, 0x1420141, 0x1440143, 0x1460145, 0x1480147, 0x14a0149, 0x14c014b, 0x14e014d, 0x150014f, 0x1520151, 0x1540153, 0x1560155, 0x1580157, 0x15a0159, 0x15c015b, 0x15e015d, 0x160015f, 0x1620161, 0x1640163, 0x1660165, 0x1680167, 0x169ffff, 0x16affff, 0x16bffff, 0x16cffff, 0x16dffff, 0x16effff, 0x16fffff, 0x170ffff, 0x171ffff, 0x172ffff, 0x173ffff, 0x174ffff, 0x175ffff, 0x176ffff, 0x177ffff, 0x178ffff, 0x179ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x17affff, 0x17bffff, 0x17cffff, 0x17dffff, 0x17effff, 0x17fffff, 0x180ffff, 0x181ffff, 0x182ffff, 0x183ffff, 0x184ffff, 0x185ffff, 0x186ffff, 0x187ffff, 0x188ffff, 0x189ffff, 0x18affff, 0x18bffff, 0x18cffff, 0x18dffff, 0x18effff, 0x18fffff, 0x190ffff, 0x191ffff, 0x192ffff, 0x193ffff, 0x194ffff, 0xffffffff, 0xffff0195, 0xffff0196, 0xffff0197, 0xffff0198, 0xffff0199, 0xffff019a, 0x19c019b, 0x19dffff, 0x19effff, 0x19fffff, 0x1a0ffff, 0x1a1ffff, 0x1a2ffff, 0x1a3ffff, 0x1a4ffff, 0x1a5ffff, 0x1a6ffff, 0x1a7ffff, 0x1a8ffff, 0x1a9ffff, 0x1aaffff, 0x1abffff, 0x1acffff, 0x1adffff, 0x1aeffff, 0x1afffff, 0x1b0ffff, 0x1b1ffff, 0x1b2ffff, 0x1b3ffff, 0x1b4ffff, 0x1b5ffff, 0x1b6ffff, 0x1b7ffff, 0x1b8ffff, 0x1b9ffff, 0x1baffff, 0x1bbffff, 0x1bcffff, 0x1bdffff, 0x1beffff, 0x1bfffff, 0x1c0ffff, 0x1c1ffff, 0x1c2ffff, 0x1c3ffff, 0x1c4ffff, 0x1c5ffff, 0x1c6ffff, 0x1c7ffff, 0x1c8ffff, 0x1c9ffff, 0x1caffff, 0x1cbffff, 0x1ccffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1cdffff, 0x1cf01ce, 0x1d101d0, 0x1d301d2, 0x1d501d4, 0x1d701d6, 0x1d901d8, 0x1db01da, 0x1dd01dc, 0x1df01de, 0x1e101e0, 0x1e301e2, 0x1e501e4, 0x1e701e6, 0x1e901e8, 0x1eb01ea, 0x1ed01ec, 0x1ef01ee, 0x1f101f0, 0xffff01f2, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1f401f3, 0x1f601f5, 0x1f801f7, 0x1fa01f9, 0x1fc01fb, 0x1fe01fd, 0x20001ff, 0x2020201, 0x2040203, 0x2060205, 0x2080207, 0x20a0209, 0x20c020b, 0x20e020d, 0x210020f, 0x2120211, 0x2140213, 0x2160215, 0x2180217, 0x21a0219, 0x21c021b, 0xffff021d, 0x21effff, 0x220021f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2220221, 0x2240223, 0x2260225, 0xffffffff, 0x2280227, 0x22a0229, 0x22c022b, 0x22e022d, 0xffff022f, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x230ffff, 0xffffffff, 0x231ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0232, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x233ffff, 0x234ffff, 0x235ffff, 0x236ffff, 0x237ffff, 0x238ffff, 0x239ffff, 0x23affff, 0x23bffff, 0x23cffff, 0x23dffff, 0x23effff, 0x23fffff, 0x240ffff, 0x241ffff, 0x242ffff, 0x243ffff, 0x244ffff, 0x245ffff, 0x246ffff, 0x247ffff, 0x248ffff, 0x249ffff, 0x24affff, 0x24bffff, 0x24cffff, 0x24dffff, 0x24effff, 0x24fffff, 0x250ffff, 0x251ffff, 0x252ffff, 0x253ffff, 0x254ffff, 0x255ffff, 0x256ffff, 0x257ffff, 0x258ffff, 0x259ffff, 0x25affff, 0x25bffff, 0x25cffff, 0x25dffff, 0x25effff, 0x25fffff, 0x260ffff, 0x261ffff, 0x262ffff, 0x263ffff, 0x264ffff, 0x265ffff, 0x266ffff, 0x267ffff, 0x268ffff, 0x269ffff, 0x26affff, 0x26bffff, 0x26cffff, 0x26dffff, 0x26effff, 0x26fffff, 0x270ffff, 0x271ffff, 0x272ffff, 0x273ffff, 0x274ffff, 0x275ffff, 0x276ffff, 0x277ffff, 0x278ffff, 0x279ffff, 0x27affff, 0x27bffff, 0x27cffff, 0x27dffff, 0xffffffff, 0xffffffff, 0x27effff, 0xffffffff, 0xffffffff, 0x27fffff, 0x280ffff, 0x281ffff, 0x282ffff, 0x283ffff, 0x284ffff, 0x285ffff, 0x286ffff, 0x287ffff, 0x288ffff, 0x289ffff, 0x28affff, 0x28bffff, 0x28cffff, 0x28dffff, 0x28effff, 0x28fffff, 0x290ffff, 0x291ffff, 0x292ffff, 0x293ffff, 0x294ffff, 0x295ffff, 0x296ffff, 0x297ffff, 0x298ffff, 0x299ffff, 0x29affff, 0x29bffff, 0x29cffff, 0x29dffff, 0x29effff, 0x29fffff, 0x2a0ffff, 0x2a1ffff, 0x2a2ffff, 0x2a3ffff, 0x2a4ffff, 0x2a5ffff, 0x2a6ffff, 0x2a7ffff, 0x2a8ffff, 0x2a9ffff, 0x2aaffff, 0x2abffff, 0x2acffff, 0x2adffff, 0x2aeffff, 0x2b002af, 0x2b202b1, 0x2b402b3, 0x2b602b5, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2b802b7, 0x2ba02b9, 0x2bc02bb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2be02bd, 0x2c002bf, 0x2c202c1, 0x2c402c3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2c602c5, 0x2c802c7, 0x2ca02c9, 0x2cc02cb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2ce02cd, 0x2d002cf, 0x2d202d1, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d3ffff, 0x2d4ffff, 0x2d5ffff, 0x2d6ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2d802d7, 0x2da02d9, 0x2dc02db, 0x2de02dd, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2e002df, 0x2e202e1, 0x2e402e3, 0x2e602e5, 0x2e802e7, 0x2ea02e9, 0x2ec02eb, 0xffffffff, 0x2ee02ed, 0x2f002ef, 0x2f202f1, 0x2f402f3, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2f602f5, 0x2f802f7, 0x2fa02f9, 0x2fc02fb, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x2fe02fd, 0x30002ff, 0x3020301, 0x3040303, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3060305, 0x307ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0308, 0xffffffff, 0x309ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30b030a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30d030c, 0xffffffff, 0x30effff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x30fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff0310, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3120311, 0x3140313, 0x3160315, 0x3180317, 0x31a0319, 0x31c031b, 0x31e031d, 0x320031f, 0xffffffff, 0xffffffff, 0xffff0321, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3230322, 0x3250324, 0x3270326, 0x3290328, 0x32b032a, 0x32d032c, 0x32f032e, 0x3310330, 0x3330332, 0x3350334, 0x3370336, 0x3390338, 0x33b033a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x33d033c, 0x33f033e, 0x3410340, 0x3430342, 0x3450344, 0x3470346, 0x3490348, 0x34b034a, 0x34d034c, 0x34f034e, 0x3510350, 0x3530352, 0x3550354, 0x3570356, 0x3590358, 0x35b035a, 0x35d035c, 0x35f035e, 0x3610360, 0x3630362, 0x3650364, 0x3670366, 0x3690368, 0x36b036a, 0x36cffff, 0xffffffff, 0x36dffff, 0xffff036e, 0xffff036f, 0xffff0370, 0xffff0371, 0xffffffff, 0xffffffff, 0x372ffff, 0xffffffff, 0xffff0373, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x374ffff, 0x375ffff, 0x376ffff, 0x377ffff, 0x378ffff, 0x379ffff, 0x37affff, 0x37bffff, 0x37cffff, 0x37dffff, 0x37effff, 0x37fffff, 0x380ffff, 0x381ffff, 0x382ffff, 0x383ffff, 0x384ffff, 0x385ffff, 0x386ffff, 0x387ffff, 0x388ffff, 0x389ffff, 0x38affff, 0x38bffff, 0x38cffff, 0x38dffff, 0x38effff, 0x38fffff, 0x390ffff, 0x391ffff, 0x392ffff, 0x393ffff, 0x394ffff, 0x395ffff, 0x396ffff, 0x397ffff, 0x398ffff, 0x399ffff, 0x39affff, 0x39bffff, 0x39cffff, 0x39dffff, 0x39effff, 0x39fffff, 0x3a0ffff, 0x3a1ffff, 0x3a2ffff, 0x3a3ffff, 0x3a4ffff, 0x3a5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff03a6, 0xffff03a7, 0xffffffff, 0x3a8ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3aa03a9, 0x3ac03ab, 0x3ae03ad, 0x3b003af, 0x3b203b1, 0x3b403b3, 0x3b603b5, 0x3b803b7, 0x3ba03b9, 0x3bc03bb, 0x3be03bd, 0x3c003bf, 0x3c203c1, 0x3c403c3, 0x3c603c5, 0x3c803c7, 0x3ca03c9, 0x3cc03cb, 0x3ce03cd, 0x3cfffff, 0xffffffff, 0xffffffff, 0x3d0ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3d1ffff, 0x3d2ffff, 0x3d3ffff, 0x3d4ffff, 0x3d5ffff, 0x3d6ffff, 0x3d7ffff, 0x3d8ffff, 0x3d9ffff, 0x3daffff, 0x3dbffff, 0x3dcffff, 0x3ddffff, 0x3deffff, 0x3dfffff, 0x3e0ffff, 0x3e1ffff, 0x3e2ffff, 0x3e3ffff, 0x3e4ffff, 0x3e5ffff, 0x3e6ffff, 0x3e7ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3e8ffff, 0x3e9ffff, 0x3eaffff, 0x3ebffff, 0x3ecffff, 0x3edffff, 0x3eeffff, 0x3efffff, 0x3f0ffff, 0x3f1ffff, 0x3f2ffff, 0x3f3ffff, 0x3f4ffff, 0x3f5ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x3f6ffff, 0x3f7ffff, 0x3f8ffff, 0x3f9ffff, 0x3faffff, 0x3fbffff, 0x3fcffff, 0xffffffff, 0x3fdffff, 0x3feffff, 0x3ffffff, 0x400ffff, 0x401ffff, 0x402ffff, 0x403ffff, 0x404ffff, 0x405ffff, 0x406ffff, 0x407ffff, 0x408ffff, 0x409ffff, 0x40affff, 0x40bffff, 0x40cffff, 0x40dffff, 0x40effff, 0x40fffff, 0x410ffff, 0x411ffff, 0x412ffff, 0x413ffff, 0x414ffff, 0x415ffff, 0x416ffff, 0x417ffff, 0x418ffff, 0x419ffff, 0x41affff, 0x41bffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff041c, 0xffff041d, 0x41effff, 0x41fffff, 0x420ffff, 0x421ffff, 0x422ffff, 0xffffffff, 0xffffffff, 0xffff0423, 0xffffffff, 0x424ffff, 0x425ffff, 0xffff0426, 0x427ffff, 0x428ffff, 0x429ffff, 0x42affff, 0x42bffff, 0x42cffff, 0x42dffff, 0x42effff, 0x42fffff, 0x430ffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x431ffff, 0x432ffff, 0x433ffff, 0x434ffff, 0x435ffff, 0x436ffff, 0x437ffff, 0x438ffff, 0xffffffff, 0xffffffff, 0xffff0439, 0xffff043a, 0xffffffff, 0xffffffff, 0x43bffff, 0xffffffff, 0xffffffff, 0x43cffff, 0x43dffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffff043e, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x43fffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4410440, 0x4430442, 0x4450444, 0x4470446, 0x4490448, 0x44b044a, 0x44d044c, 0x44f044e, 0x4510450, 0x4530452, 0x4550454, 0x4570456, 0x4590458, 0x45b045a, 0x45d045c, 0x45f045e, 0x4610460, 0x4630462, 0x4650464, 0x4670466, 0x4690468, 0x46b046a, 0x46d046c, 0x46f046e, 0x4710470, 0x4730472, 0x4750474, 0x4770476, 0x4790478, 0x47b047a, 0x47d047c, 0x47f047e, 0x4810480, 0x4830482, 0x4850484, 0x4870486, 0x4890488, 0x48b048a, 0x48d048c, 0x48f048e, 0x490ffff, 0x4920491, 0x4940493, 0x4960495, 0x4980497, 0x49a0499, 0x49c049b, 0x49e049d, 0x4a0049f, 0x4a204a1, 0x4a404a3, 0x4a604a5, 0x4a804a7, 0xffff04a9, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4ab04aa, 0x4ad04ac, 0x4af04ae, 0x4b104b0, 0x4b304b2, 0x4b504b4, 0x4b704b6, 0x4b904b8, 0x4bb04ba, 0x4bd04bc, 0x4bf04be, 0x4c104c0, 0x4c304c2, 0x4c504c4, 0x4c704c6, 0x4c904c8, 0x4cb04ca, 0x4cd04cc, 0x4cf04ce, 0x4d104d0, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4d304d2, 0x4d504d4, 0x4d704d6, 0x4d904d8, 0x4db04da, 0x4dd04dc, 0x4df04de, 0x4e104e0, 0x4e304e2, 0x4e504e4, 0x4e704e6, 0x4e904e8, 0x4eb04ea, 0x4ed04ec, 0x4ef04ee, 0x4f104f0, 0x4f304f2, 0x4f504f4, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x4f6ffff, 0x4f804f7, 0x4fa04f9, 0x4fc04fb, 0x4fe04fd, 0x50004ff, 0x501ffff, 0x5030502, 0x5050504, 0x5070506, 0x5090508, 0x50b050a, 0x50d050c, 0x50f050e, 0x510ffff, 0x5120511, 0x5140513, 0x5160515, 0x517ffff, 0xffff0518, 0xffffffff, 0x51a0519, 0x51c051b, 0x51e051d, 0x520051f, 0x5220521, 0x5240523, 0x5260525, 0x5280527, 0x52a0529, 0x52c052b, 0x52e052d, 0x530052f, 0x5320531, 0x5340533, 0x5360535, 0x5380537, 0x53a0539, 0x53c053b, 0x53e053d, 0x540053f, 0x5420541, 0x5440543, 0x5460545, 0x5480547, 0x54a0549, 0xffff054b, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x54d054c, 0x54f054e, 0x5510550, 0x5530552, 0x5550554, 0x5570556, 0x5590558, 0x55b055a, 0x55d055c, 0x55f055e, 0x5610560, 0x5630562, 0x5650564, 0x5670566, 0x5690568, 0x56b056a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x56d056c, 0x56f056e, 0x5710570, 0x5730572, 0x5750574, 0x5770576, 0x5790578, 0x57b057a, 0x57d057c, 0x57f057e, 0x5810580, 0x5830582, 0x5850584, 0x5870586, 0x5890588, 0x58b058a, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x58d058c, 0x58f058e, 0x5910590, 0x5930592, 0x5950594, 0x5970596, 0x5990598, 0x59b059a, 0x59d059c, 0x59f059e, 0x5a105a0, 0x5a305a2, 0x5a505a4, 0x5a705a6, 0x5a905a8, 0x5ab05aa, 0x5ad05ac, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]); +enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000004000000280", +cast(immutable size_t[]) x" +000001000000048000000F40", +cast(immutable size_t[]) x" +020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +0202020202020202020202020202020200010000000300020005000400070006000900080000000A000B0000000D000C +000F000E0011001000130012000000140000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000015000000000000000000000000000000000000000000000016000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000170018000000000019001B001A001D001C001F001E0021002000000000000000000022000000000023 +000000000000000000000000000000000000000000240000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000260025002800270000002900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000002A00000000002B002D002C002F002E00000000000000000000000000000000 +000000000000000000300000000000310000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000032000000000000 +000000000000000000000000000000000000000000000000000000000000000000340033003500000000000000000036 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000037000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003B003A000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00020001000400030006000500080007000A0009000C000B000E000D +0010000F00120011001400130016001500180017FFFF0019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001C001B001E001D0020001F00220021 +002400230026002500280027002A0029002C002B002E002D0030002FFFFF003100330032003500340037003600390038 +003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003FFFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF +0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004BFFFF004CFFFF004DFFFF004EFFFF004FFFFF0050FFFF0051FFFF +0052FFFF0053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C +FFFF005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF +0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF +FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF +FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF +FFFFFFFFFFFFFFFF008F008E009100900093009200950094FFFF0096FFFF0097FFFF0098FFFF0099FFFF009AFFFF009B +FFFF009CFFFF009D009F009E00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFF +00A9FFFF00AB00AA00ACFFFFFFFFFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF00B2FFFF00B3FFFF00B4FFFF +00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF +FFFFFFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFF00C7FFFF00C8FFFF00C9FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00CA00CBFFFFFFFF00CCFFFF00CDFFFFFFFF00CEFFFF00CFFFFF00D0FFFF00D1FFFF00D2FFFF +00D400D300D600D5FFFF00D700D900D800DAFFFF00DBFFFFFFFF00DCFFFFFFFF00DE00DD00DFFFFF00E0FFFFFFFF00E1 +00E300E200E500E4FFFF00E600E7FFFF00E8FFFFFFFF00E900EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFFFFFFFFFF +FFFF00EC00EE00EDFFFFFFFF00EFFFFF00F100F000F300F2FFFF00F4FFFFFFFFFFFFFFFFFFFF00F5FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F6FFFFFFFF00F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F9FFFF00FAFFFFFFFFFFFF00FBFFFF +FFFFFFFF00FCFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF010000FF010201010103FFFF010501040107010601090108010B010A010D010C010F010E01110110 +01130112011501140117011601190118011B011A011D011C011F011EFFFF012001220121FFFFFFFF0123FFFF01250124 +0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF0130FFFF0131FFFF +01330132013501340136FFFFFFFFFFFFFFFF01370138FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013A0139013C013B013E013D0140013F +01420141014401430146014501480147014A0149014C014B014E014D0150014F01520151015401530156015501580157 +015A0159015C015B015E015D0160015F016201610164016301660165016801670169FFFF016AFFFF016BFFFF016CFFFF +016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF0177FFFF0178FFFF +0179FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFF017FFFFF0180FFFF +0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF018BFFFF018CFFFF +018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFFFFFFFFFFFFFF0195FFFF0196FFFF0197 +FFFF0198FFFF0199FFFF019A019C019B019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2FFFF01A3FFFF01A4FFFF +01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF01AFFFFF01B0FFFF +01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF01BBFFFF01BCFFFF +01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF01C7FFFF01C8FFFF +01C9FFFF01CAFFFF01CBFFFF01CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CDFFFF01CF01CE01D101D001D301D201D501D401D701D601D901D801DB01DA +01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EE01F101F0FFFF01F2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207020A0209 +020C020B020E020D0210020F02120211021402130216021502180217021A0219021C021BFFFF021D021EFFFF0220021F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022202210224022302260225FFFFFFFF02280227022A0229022C022B022E022D +FFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFF0234FFFF0235FFFF0236FFFF +0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF0242FFFF +0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF024EFFFF +024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF025AFFFF +025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF0266FFFF +0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF0272FFFF +0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFF027DFFFFFFFFFFFF +FFFFFFFF027EFFFFFFFFFFFFFFFFFFFF027FFFFF0280FFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF +0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF +0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF +029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF +02ABFFFF02ACFFFF02ADFFFF02AEFFFF02B002AF02B202B102B402B302B602B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B802B702BA02B902BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BE02BD02C002BF02C202C102C402C3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C602C502C802C702CA02C902CC02CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CE02CD02D002CF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D3FFFF02D4FFFF02D5FFFF02D6FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D802D702DA02D902DC02DB02DE02DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E002DF02E202E102E402E302E602E502E802E702EA02E902EC02EBFFFFFFFF02EE02ED02F002EF02F202F102F402F3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F602F502F802F702FA02F902FC02FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02FE02FD030002FF0302030103040303FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030603050307FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF0308FFFFFFFF0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030D030CFFFFFFFF030EFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03120311031403130316031503180317031A0319031C031B031E031D0320031FFFFFFFFFFFFFFFFFFFFF0321FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03230322032503240327032603290328032B032A032D032C032F032E0331033003330332033503340337033603390338 +033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E0351035003530352 +035503540357035603590358035B035A035D035C035F035E0361036003630362036503640367036603690368036B036A +036CFFFFFFFFFFFF036DFFFFFFFF036EFFFF036FFFFF0370FFFF0371FFFFFFFFFFFFFFFF0372FFFFFFFFFFFFFFFF0373 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0374FFFF0375FFFF0376FFFF0377FFFF0378FFFF0379FFFF037AFFFF037BFFFF +037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF0387FFFF +0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF0393FFFF +0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF039FFFFF +03A0FFFF03A1FFFF03A2FFFF03A3FFFF03A4FFFF03A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A6FFFF03A7 +FFFFFFFF03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AA03A903AC03AB03AE03AD03B003AF +03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C303C603C503C803C7 +03CA03C903CC03CB03CE03CD03CFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF +03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF +03E5FFFF03E6FFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF +03F4FFFF03F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFF03FDFFFF03FEFFFF03FFFFFF +0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF +040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFF +0418FFFF0419FFFF041AFFFF041BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFF041D041EFFFF +041FFFFF0420FFFF0421FFFF0422FFFFFFFFFFFFFFFFFFFFFFFF0423FFFFFFFF0424FFFF0425FFFFFFFF04260427FFFF +0428FFFF0429FFFF042AFFFF042BFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF +FFFF0439FFFF043AFFFFFFFFFFFFFFFF043BFFFFFFFFFFFFFFFFFFFF043CFFFF043DFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0441044004430442044504440447044604490448044B044A044D044C044F044E +0451045004530452045504540457045604590458045B045A045D045C045F045E04610460046304620465046404670466 +04690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A047D047C047F047E +0481048004830482048504840487048604890488048B048A048D048C048F048E0490FFFF049204910494049304960495 +04980497049A0499049C049B049E049D04A0049F04A204A104A404A304A604A504A804A7FFFF04A9FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04AB04AA04AD04AC04AF04AE04B104B004B304B204B504B404B704B604B904B804BB04BA04BD04BC04BF04BE04C104C0 +04C304C204C504C404C704C604C904C804CB04CA04CD04CC04CF04CE04D104D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D304D204D504D404D704D604D904D8 +04DB04DA04DD04DC04DF04DE04E104E004E304E204E504E404E704E604E904E804EB04EA04ED04EC04EF04EE04F104F0 +04F304F204F504F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF04F6FFFF04F804F704FA04F904FC04FB04FE04FD050004FF0501FFFF0503050205050504 +0507050605090508050B050A050D050C050F050E0510FFFF0512051105140513051605150517FFFFFFFF0518FFFFFFFF +051A0519051C051B051E051D0520051F05220521052405230526052505280527052A0529052C052B052E052D0530052F +05320531053405330536053505380537053A0539053C053B053E053D0540053F05420541054405430546054505480547 +054A0549FFFF054BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054D054C054F054E0551055005530552 +055505540557055605590558055B055A055D055C055F055E0561056005630562056505640567056605690568056B056A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056D056C056F056E0571057005730572 +057505740577057605790578057B057A057D057C057F057E0581058005830582058505840587058605890588058B058A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF058D058C058F058E0591059005930592059505940597059605990598 +059B059A059D059C059F059E05A105A005A305A205A505A405A705A605A905A805AB05AA05AD05ACFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); dstring toUpperTable() nothrow @nogc pure @safe { static immutable dchar[1671] t = "\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ @@ -2648,42 +5207,2601 @@ return t[]; static if (size_t.sizeof == 8) { //2080 bytes -enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x70], [ 0x100, 0x140, 0x2500], [ 0x402030202020100, 0x807020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x6000600050004, 0x6000600060006, 0x6000600060006, 0x8000600060007, 0x6000600060006, 0x6000600060006, 0xc000b000a0009, 0x60006000e000d, 0x600060006000f, 0x6000600060006, 0x6000600110010, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x13001200060006, 0x14000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x15000600060006, 0x16000600060006, 0x6000600060006, 0x19000600180017, 0x6000600060006, 0x600060006001a, 0x6000600060006, 0x6000600060006, 0x600060006001b, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6001c00060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x20001f001e001d, 0x6000600060006, 0x21000600060006, 0x6000600060022, 0x6000600060006, 0x6000600230006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x0, 0x7fffffe00000000, 0x420040000000000, 0xff7fffff80000000, 0x55aaaaaaaaaaaaaa, 0xd4aaaaaaaaaaab55, 0xe6512d2a4e243129, 0xaa29aaaab5555240, 0x93faaaaaaaaaaaaa, 0xffffffffffffaa85, 0x1ffffffffefffff, 0x1f00000003, 0x0, 0x3c8a000000000020, 0xfffff00000010000, 0x192faaaaaae37fff, 0xffff000000000000, 0xaaaaaaaaffffffff, 0xaaaaaaaaaaaaa802, 0xaaaaaaaaaaaad554, 0xaaaaaaaaaaaa, 0xffffffff00000000, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf7ffffffffff0000, 0x0, 0x0, 0x0, 0x3f00000000000000, 0x0, 0x0, 0x1ff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaaaaaaaaaa, 0xaaaaaaaabfeaaaaa, 0xaaaaaaaaaaaaaaaa, 0xff00ff003f00ff, 0x3fff00ff00ff003f, 0x40df00ff00ff00ff, 0xdc00ff00cf00dc, 0x0, 0x8002000000000000, 0x1fff0000, 0x0, 0x321080000008c400, 0xffff0000000043c0, 0x10, 0x0, 0x0, 0x0, 0x0, 0x3ffffff0000, 0xffff000000000000, 0x3fda1562ffffffff, 0xaaaaaaaaaaaaaaaa, 0x8501aaaaaaaaa, 0x20bfffffffff, 0x0, 0x0, 0x0, 0x0, 0x2aaaaaaaaaaa, 0x3aaaaaaa, 0x0, 0xaaabaaa800000000, 0x95ffaaaaaaaaaaaa, 0xaaa082aaaaba50aa, 0x75c000002aa050a, 0xffff000000000000, 0xffff03fff7ffffff, 0xffffffffffffffff, 0x0, 0xf8007f, 0x0, 0x0, 0x0, 0x0, 0x7fffffe, 0x0, 0x0, 0xffffff0000000000, 0xffff, 0x0, 0xfffffffff000000, 0x0, 0x0, 0x1bfbfffbff800000, 0x0, 0x0, 0x0, 0x7fdffffffffffb9, 0x0, 0x0, 0x0, 0x0, 0x7ffffffffffff, 0x0, 0x0, 0x0, 0xffffffff, 0x0, 0xffffffff00000000, 0x0, 0x0, 0xffffffc000000, 0xffffdfc000, 0xebc000000ffffffc, 0xfffffc000000ffef, 0xffffffc000000f, 0xffffffc0000, 0xfc000000ffffffc0, 0xffffc000000fffff, 0xffffffc000000ff, 0xffffffc00000, 0x3ffffffc00, 0xf0000003f7fffffc, 0xffc000000fdfffff, 0xffff0000003f7fff, 0xfffffc000000fdff, 0xbf7, 0x7e07ffffbff, 0x0, 0x0, 0x0, 0xffff000000000000, 0x3fffffffffff, 0x0, 0x0, 0xfffffffc00000000, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000070", +cast(immutable size_t[]) x" +000000000000010000000000000001400000000000002500", +cast(immutable size_t[]) x" +040203020202010008070202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000003000200010000000600060005000400060006000600060006000600060006 +000800060006000700060006000600060006000600060006000C000B000A000900060006000E000D000600060006000F +000600060006000600060006001100100006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006001300120006000600140006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600150006000600060016000600060006 +000600060006000600190006001800170006000600060006000600060006001A00060006000600060006000600060006 +000600060006001B00060006000600060006000600060006000600060006000600060006000600060006001C00060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +0006000600060006000600060006000600060006000600060020001F001E001D00060006000600060021000600060006 +000600060006002200060006000600060006000600230006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +0006000600060006000600060006000600060006000600060006000600060006000000000000000007FFFFFE00000000 +0420040000000000FF7FFFFF8000000055AAAAAAAAAAAAAAD4AAAAAAAAAAAB55E6512D2A4E243129AA29AAAAB5555240 +93FAAAAAAAAAAAAAFFFFFFFFFFFFAA8501FFFFFFFFEFFFFF0000001F0000000300000000000000003C8A000000000020 +FFFFF00000010000192FAAAAAAE37FFFFFFF000000000000AAAAAAAAFFFFFFFFAAAAAAAAAAAAA802AAAAAAAAAAAAD554 +0000AAAAAAAAAAAAFFFFFFFF0000000000000000000001FF000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000F7FFFFFFFFFF0000 +0000000000000000000000000000000000000000000000003F0000000000000000000000000000000000000000000000 +00000000000001FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFEAAAAAAAAAAAAAAAAAAAAA00FF00FF003F00FF3FFF00FF00FF003F +40DF00FF00FF00FF00DC00FF00CF00DC00000000000000008002000000000000000000001FFF00000000000000000000 +321080000008C400FFFF0000000043C00000000000000010000000000000000000000000000000000000000000000000 +0000000000000000000003FFFFFF0000FFFF0000000000003FDA1562FFFFFFFFAAAAAAAAAAAAAAAA0008501AAAAAAAAA +000020BFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000002AAAAAAAAAAA +000000003AAAAAAA0000000000000000AAABAAA80000000095FFAAAAAAAAAAAAAAA082AAAABA50AA075C000002AA050A +FFFF000000000000FFFF03FFF7FFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000F8007F0000000000000000 +0000000000000000000000000000000000000000000000000000000007FFFFFE00000000000000000000000000000000 +FFFFFF0000000000000000000000FFFF00000000000000000FFFFFFFFF00000000000000000000000000000000000000 +1BFBFFFBFF80000000000000000000000000000000000000000000000000000007FDFFFFFFFFFFB90000000000000000 +0000000000000000000000000000000000000000000000000007FFFFFFFFFFFF00000000000000000000000000000000 +000000000000000000000000FFFFFFFF0000000000000000FFFFFFFF0000000000000000000000000000000000000000 +000FFFFFFC000000000000FFFFDFC000EBC000000FFFFFFCFFFFFC000000FFEF00FFFFFFC000000F00000FFFFFFC0000 +FC000000FFFFFFC0FFFFC000000FFFFF0FFFFFFC000000FF0000FFFFFFC000000000003FFFFFFC00F0000003F7FFFFFC +FFC000000FDFFFFFFFFF0000003F7FFFFFFFFC000000FDFF0000000000000BF7000007E07FFFFBFF0000000000000000 +00000000000000000000000000000000FFFF00000000000000003FFFFFFFFFFF00000000000000000000000000000000 +FFFFFFFC00000000000000000000000F0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", +); //1856 bytes -enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x70], [ 0x100, 0x140, 0x1e00], [ 0x402030202020100, 0x807020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x6000600050004, 0x6000600060006, 0x6000600060006, 0x8000600060007, 0x6000600060006, 0x6000600060006, 0xb000a00060009, 0x60006000c0006, 0x600060006000d, 0x6000600060006, 0x600060006000e, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x10000f00060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x11000600060006, 0x6000600060006, 0x6000600130012, 0x6000600060006, 0x6000600060014, 0x6000600060006, 0x6000600060006, 0x6000600060015, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6001600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x1a001900180017, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x60006001b0006, 0x6000600060006, 0x60006001c0006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x6000600060006, 0x0, 0x7fffffe, 0x0, 0x7f7fffff, 0xaa55555555555555, 0x2b555555555554aa, 0x11aed2d5b1dbced6, 0x55d255554aaaa490, 0x6c05555555555555, 0x557a, 0x0, 0x0, 0x0, 0x8045000000000000, 0xffbfffed740, 0xe6905555551c8000, 0xffffffffffff, 0x5555555500000000, 0x5555555555555401, 0x5555555555552aab, 0xfffe555555555555, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffff00000000, 0x20bf, 0x0, 0x0, 0xffffffff00000000, 0x3fffffffffffff, 0x0, 0x0, 0xe7ffffffffff0000, 0x0, 0x5555555555555555, 0x5555555555555555, 0x5555555540155555, 0x5555555555555555, 0xff00ff003f00ff00, 0xff00aa003f00, 0xf00000000000000, 0xf001f000f000f00, 0xc00f3d503e273884, 0xffff00000020, 0x8, 0x0, 0x0, 0x0, 0xffc0000000000000, 0xffff, 0xffffffffffff, 0xc025ea9d00000000, 0x5555555555555555, 0x4280555555555, 0x0, 0x155555555555, 0x5555555, 0x0, 0x5554555400000000, 0x6a00555555555555, 0x555f7d5555452855, 0x200000014102f5, 0x7fffffe00000000, 0x0, 0x0, 0x0, 0xffffffffff, 0x0, 0xffff000000000000, 0xfffff, 0x0, 0xf7ff000000000000, 0x37f7ff, 0x0, 0x0, 0x0, 0x7ffffffffffff, 0x0, 0x0, 0x0, 0xffffffff00000000, 0x0, 0x0, 0xffffffff, 0x0, 0x0, 0xfff0000003ffffff, 0xffffff0000003fff, 0x3fde64d0000003, 0x3ffffff0000, 0x7b0000001fdfe7b0, 0xfffff0000001fc5f, 0x3ffffff0000003f, 0x3ffffff00000, 0xf0000003ffffff00, 0xffff0000003fffff, 0xffffff00000003ff, 0x7fffffc00000001, 0x1ffffff0000000, 0x7fffffc00000, 0x1ffffff0000, 0x400, 0x3ffffffff, 0x0, 0x0, 0x0, 0xffff000000000000, 0xffff03ffffff03ff, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000070", +cast(immutable size_t[]) x" +000000000000010000000000000001400000000000001E00", +cast(immutable size_t[]) x" +040203020202010008070202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000003000200010000000600060005000400060006000600060006000600060006 +000800060006000700060006000600060006000600060006000B000A0006000900060006000C0006000600060006000D +0006000600060006000600060006000E0006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +0006000600060006000600060006000600060006000600060010000F0006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060011000600060006 +000600060006000600060006001300120006000600060006000600060006001400060006000600060006000600060006 +000600060006001500060006000600060006000600060006000600060006000600060006000600060006001600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006001A00190018001700060006000600060006000600060006 +0006000600060006000600060006000600060006001B0006000600060006000600060006001C00060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006000600060006000600000000000000000000000007FFFFFE +0000000000000000000000007F7FFFFFAA555555555555552B555555555554AA11AED2D5B1DBCED655D255554AAAA490 +6C05555555555555000000000000557A0000000000000000000000000000000000000000000000008045000000000000 +00000FFBFFFED740E6905555551C80000000FFFFFFFFFFFF555555550000000055555555555554015555555555552AAB +FFFE55555555555500000000007FFFFF0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000020BF +00000000000000000000000000000000FFFFFFFF00000000003FFFFFFFFFFFFF00000000000000000000000000000000 +E7FFFFFFFFFF000000000000000000005555555555555555555555555555555555555555401555555555555555555555 +FF00FF003F00FF000000FF00AA003F000F000000000000000F001F000F000F00C00F3D503E2738840000FFFF00000020 +0000000000000008000000000000000000000000000000000000000000000000FFC0000000000000000000000000FFFF +0000FFFFFFFFFFFFC025EA9D000000005555555555555555000428055555555500000000000000000000155555555555 +0000000005555555000000000000000055545554000000006A00555555555555555F7D555545285500200000014102F5 +07FFFFFE00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000 +FFFF00000000000000000000000FFFFF0000000000000000F7FF000000000000000000000037F7FF0000000000000000 +000000000000000000000000000000000007FFFFFFFFFFFF000000000000000000000000000000000000000000000000 +FFFFFFFF000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000 +FFF0000003FFFFFFFFFFFF0000003FFF003FDE64D0000003000003FFFFFF00007B0000001FDFE7B0FFFFF0000001FC5F +03FFFFFF0000003F00003FFFFFF00000F0000003FFFFFF00FFFF0000003FFFFFFFFFFF00000003FF07FFFFFC00000001 +001FFFFFF000000000007FFFFFC00000000001FFFFFF0000000000000000040000000003FFFFFFFF0000000000000000 +00000000000000000000000000000000FFFF000000000000FFFF03FFFFFF03FF00000000000003FF0000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //11648 bytes -enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0x11c0], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16001500000000, 0x0, 0x0, 0x18001700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1900000000, 0x1b001a0000, 0x1f001e001d001c, 0x23002200210020, 0x0, 0x2600250024, 0x0, 0x0, 0x28002700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b002a0029, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f002e0000, 0x33003200310030, 0x0, 0x0, 0x0, 0x3500340000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x3c003b003a0039, 0x3e003d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42004100000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x8e50080091dffff, 0x90b00bd031905fb, 0xb2b006b09d00b9a, 0xad200e0082606c7, 0x5d1059404670838, 0x19301800a330785, 0xffff02f904d9051e, 0xffffffffffffffff, 0x8e60081091effff, 0x90c00be031a05fc, 0xb2c006c09d10b9b, 0xad300e1082706c8, 0x5d2059504680839, 0x19401810a340786, 0xffff02fa04da051f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0965ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x856011805ae077b, 0x3db025709bb0ad8, 0xb4d0128038f0559, 0x31500470397062b, 0x29f008608dd05f3, 0xffff00cb058b0711, 0x4fb021309820ae2, 0x8ef0a4508800701, 0x857011905af077c, 0x3dc025809bc0ad9, 0xb4e01290390055a, 0x31600480398062c, 0x2a0008708de05f4, 0xffff00cc058c0712, 0x4fc021409830ae3, 0x36a0a4608810702, 0x4cc04cb09dd09dc, 0xb580b5701cd01cc, 0x7320731020001ff, 0x8af08ae00ce00cd, 0x6140613005c005b, 0x620061f00520051, 0x663066202b202b1, 0x8010800015a0159, 0x7e707e60b890b88, 0xa620a6104be04bd, 0x593059201b401b3, 0x96d096c021c021b, 0x8790878ffffffff, 0x31c031b09390938, 0x6fd00950094ffff, 0x81c008f008e06fe, 0x7ca0b310b30081d, 0xa230121012007cb, 0x4dc04dbffff0a24, 0xb660b6507c507c4, 0x162016106bd06bc, 0x2aa02a906830682, 0xd000c060a0609, 0x70006f06410640, 0xd200d1083b083a, 0x1df01de07280727, 0x1a201a10b810b80, 0xa520a5104c604c5, 0x566056507cf07ce, 0x9fb09fa09770976, 0x2106260625036b, 0x5d305fe05fd0022, 0xb180b1706880691, 0x2750526026a0269, 0x1af07fa0b390276, 0xac20769ffff01b0, 0x52008b508b40a47, 0x9900b090229027b, 0xffff04c900970096, 0x32b00d308eb00aa, 0x62e062d00190018, 0x3cf055301050104, 0xffffffff09a603d0, 0x75907ee01690168, 0x52c077f01a7075a, 0xac003020301052d, 0xffffffff02560255, 0x1adffff0920091f, 0xffffffffffffffff, 0x5e0092b092a0929, 0xae50ae405e205e1, 0x79804fe04fd0ae6, 0x76b0a5e0a5d0799, 0xa8004420441076c, 0x55102fe02fd0a81, 0xb540b53076a0552, 0x16b016a06550654, 0x2c002bf05fa05f9, 0xf200f106470646, 0x570056f06a906a8, 0xabc0abb0abaffff, 0x1ae022a07480747, 0x1eb01ea0b6e0b6d, 0x9710970041a0419, 0x59f059e08410840, 0x8be08bd0940093f, 0x898089703ae03ad, 0x41c041b0b120b11, 0xa8f0a8e040b040a, 0x531053002b402b3, 0x7f107f0016d016c, 0x84b084a05b705b6, 0x6ce06cdffff00d4, 0xb830b8200640063, 0x73e073d00c200c1, 0x88a088900790078, 0x6f506f4057a0579, 0xffffffffffffffff, 0x7960a0effffffff, 0x95d07be04ca0797, 0x692014c014b028b, 0x9d509d402d3041d, 0x324032309260925, 0x9f709f609540953, 0x689021d0b1f0402, 0x7fb0b3affff0527, 0xa48ffff0ac3ffff, 0xffffffffffff0941, 0x27cffff0b2e0521, 0xffff00b50b76ffff, 0x63c00f90b0a0991, 0xabffffffff098a, 0xffff08ec05a0ffff, 0xffffffff032cffff, 0xffffffffffffffff, 0xffffffff0031ffff, 0x9a70516ffff0554, 0x350ffffffffffff, 0x78001a8041e07ef, 0xffffffffffff02d4, 0xffff0ac1ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff070f0092ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0972ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cf01ce04a504a4, 0x1f601f5ffffffff, 0xa37ffffffffffff, 0x382ffff086e0122, 0xffffffffffffffff, 0xffff0299ffffffff, 0xffff00eb082806d7, 0x9ca0ba0ffff07f2, 0x17c04ae04b30386, 0x16601d20abd0a17, 0xb070b320973059a, 0x106039b081e0966, 0x68affff062f0b73, 0xac03450607032d, 0x9a084c06fa08fd, 0xec082906d8029a, 0x17d04af04b409ce, 0x16701d30abe0a18, 0xb080b330974059b, 0x107039c081f0967, 0x68c068b06300b74, 0xad03460608032e, 0x9b084d06fb08fe, 0x97809cb0ba107f3, 0xffffffff059c04b0, 0x9790b750347ffff, 0x4a904a8018c018b, 0x85f085e0a890a88, 0x989098805820581, 0x3bc03bb09df09de, 0x8c208c102f602f5, 0x3630362044a0449, 0x38301d606310b34, 0xa84ffff0abf059d, 0x5db05da01d70a85, 0x86f01230a38ffff, 0x96e0291051a04f1, 0x5ac0090098e0af5, 0x8f700a008f906ff, 0x391009c031d05ef, 0x3c105400b45071f, 0xab6027d03d306e7, 0x4b70126086a0a8c, 0x1b90a1407aa080a, 0x2df0a73051107ec, 0x15b02450ace09a4, 0xb5b093a0664057b, 0x5303c3062109f0, 0x3c205410b460720, 0xab7027e03d406e8, 0x4b80127086b0a8d, 0x1ba0a1507ab080b, 0x2e00a74051207ed, 0x15c02460acf09a5, 0xb5c093b0665057c, 0x5403c4062209f1, 0x96f0292051b04f2, 0x5ad0091098f0af6, 0x8f800a108fa0700, 0x392009d031e05f0, 0x5cd05cc0aa30aa2, 0xb4a0b4902440243, 0x3e603e501fa01f9, 0x859085809b609b5, 0x8e008df05a305a2, 0x39a039908c608c5, 0x937093608880887, 0x418041703de03dd, 0xffffffff0b220b21, 0xffffffffffffffff, 0x5a705a6ffffffff, 0xe600e5082b082a, 0x5e005d06d006cf, 0x50004061c061b, 0xca00c90730072f, 0x568056708ad08ac, 0x10b010a06b506b4, 0x1a0019f04f004ef, 0x45804570a110a10, 0xb700b6f07bb07ba, 0x407040608310830, 0x8ee08ed09bf09be, 0x8da08d903260325, 0x3b803b709f909f8, 0x21f06c306c202db, 0x23705d905d80220, 0x4a00a220a210238, 0x2dc0793079204a1, 0x55c055b023c023b, 0x6e406e302620261, 0x628062700580057, 0x6790678001e001d, 0x677067601130112, 0x56a056902480247, 0x7a907a8011b011a, 0x7780777049b049a, 0x46a04690a910a90, 0xb000aff02360235, 0x42c042b038c038b, 0x8ca08c9090e090d, 0x924092303380337, 0x3d803d70a010a00, 0xa950a9408250824, 0x1cb01ca079b079a, 0x2c402c30a1c0a1b, 0x171017004ec04eb, 0x5bb05ba06a506a4, 0x2c002b064d064c, 0x38003706390638, 0xb400b30b6a0b69, 0xacd0acc07380737, 0x4ee04ed088e088d, 0x227017e0ba2ffff, 0xa9a0293071904b5, 0x589047d08520ac4, 0x1330b6306d503a7, 0x3030352067c0384, 0x135092c067e0903, 0xb27094906d905b4, 0x5010524085a0a06, 0x22f0a3d07150295, 0xffff078705dc0184, 0xffffffffffffffff, 0xffffffffffffffff, 0x228017f0ba3ffff, 0xa9b0294071a04b6, 0x58a047e08530ac5, 0x1340b6406d603a8, 0x3040353067d0385, 0x136092d067f0904, 0xb28094a06da05b5, 0x5020525085b0a07, 0x2300a3e07160296, 0xffff078805dd0185, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50d03eb082209b7, 0x1b10b8e06f601f0, 0x1b7049804850241, 0x46d087c0a9e0a9c, 0xaf706a007fe056b, 0x4310648039300f7, 0x8c3068f090902d9, 0x9170672033b014f, 0x3d1084e09ea0b4f, 0xaa8ffff02e10108, 0xffffffffffffffff, 0xffffffff0a55ffff, 0x3fc06990ae70153, 0x9320668042d05c4, 0x3c905f10317002d, 0x9270b3b09f20025, 0x85c06b0055d008c, 0x429088209ab0ae0, 0xa0a0761021504ff, 0x71304d3024901da, 0x81809980aae02a1, 0x6ec03cb058703e1, 0xffff039f011e0b35, 0x6950905000effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x36000c3043305d6, 0x934006d081606c0, 0x9fc0b2903740893, 0x335007e08bb0603, 0xa5b02cd01f70a6d, 0x55f0137095506b8, 0x7c805750b7e07da, 0x75d09ee04df048b, 0x64e037802e7044f, 0x6a209a001410850, 0x89b09190041045d, 0x634031300450b9c, 0xb6709e0023309b1, 0x739054300820271, 0x77d07170a0c0ade, 0x4b908b601e40528, 0x3af06db09fe0289, 0x8060b2305b801fb, 0x35a067a034c05de, 0x92e068602ad0139, 0x38d06230b84004b, 0xffffffff04390061, 0x38e06240b85004c, 0xffffffff043a0062, 0x5130a1606e90542, 0x5ce093c0a760a75, 0xffffffffffff069d, 0xffffffffffffffff, 0x3fd069a0ae80154, 0x9330669042e05c5, 0x3ca05f20318002e, 0x9280b3c09f30026, 0x85d06b1055e008d, 0x42a088309ac0ae1, 0xa0b076202160500, 0x71404d4024a01db, 0x81909990aaf02a2, 0x6ed03cc058803e2, 0xffff03a0011f0b36, 0x6960906000fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0507ffff, 0xffffffff030dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0b92ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4c804c706f306f2, 0xb870b8607760775, 0x474047308030802, 0x260025f09850984, 0x908090705780577, 0x334033308f408f3, 0x914091302cc02cb, 0x3d603d5045c045b, 0x7c707c60b040b03, 0xa1e0a1d04de04dd, 0x5cb05ca01ac01ab, 0x72c072b0240023f, 0x83f083e00db00da, 0x61606150060005f, 0x60e060d00130012, 0x694069302a402a3, 0x6b706b6015e015d, 0x79f079e05b105b0, 0x49304920a640a63, 0xb5a0b5902080207, 0x3e003df020e020d, 0x87b087a09460945, 0x90008ff03550354, 0x37d037c08d208d1, 0x962096108850884, 0x204020303da03d9, 0x1b601b50b3e0b3d, 0xa420a410480047f, 0x5c305c207dd07dc, 0x14e014d08110810, 0x2ac02ab065d065c, 0x4a004906330632, 0x890088061e061d, 0x53f053e08a308a2, 0x206020507360735, 0x1d101d004c204c1, 0x440043f0a5a0a59, 0xffffffff07d107d0, 0x886ffffffffffff, 0xffff08f0ffffffff, 0x8e808e703080307, 0x3a403a309c909c8, 0xadd0adc02540253, 0x7e507e40430042f, 0x7b107b00a260a25, 0x722072104c404c3, 0x5460545021a0219, 0x704070300990098, 0x5f805f700a300a2, 0x6530652004e004d, 0xafa0af901250124, 0x533053202f402f3, 0x772077101170116, 0x7b507b404970496, 0x3f703f60a700a6f, 0xb7d0b7c024e024d, 0x43c043b03be03bd, 0x8f608f508d408d3, 0x9220921035f035e, 0x54c054b09950994, 0xa780a7708a508a4, 0x19a019904520451, 0x1d501d40a4a0a49, 0xee00ed06e006df, 0xa02003503a90605, 0x55500f3094f0b41, 0xa03003603aa0606, 0x55600f409500b42, 0x22b019d0a35076d, 0xffffffff06f804cd, 0x22c019e0a36076e, 0xffffffff06f904ce, 0x16030505ff039d, 0x1720870068008e9, 0x1703060600039e, 0x1730871068108ea, 0x1820ac80a3902e5, 0x1e0078e04aa01a3, 0x1830ac90a3a02e6, 0x1e1078f04ab01a4, 0x35605e3034e0074, 0xffffffff08bf000a, 0x35705e4034f0075, 0xffffffff08c0000b, 0xa5fffff01e6ffff, 0x76fffff04d5ffff, 0xa60ffff01e7ffff, 0x770ffff04d6ffff, 0x656043d02c50992, 0x5e50b8c002903b3, 0x657043e02c60993, 0x5e60b8d002a03b4, 0x9d602d502ed0447, 0x41f05cf02090a71, 0xa570ab0000808e3, 0xffffffff06190321, 0x3a5028509680b1b, 0x8f1012a02c10666, 0x3a6028609690b1c, 0x8f2012b02c20667, 0x9f4028f03b906e1, 0x5b201fd07f40b13, 0x9f5029003ba06e2, 0x5b301fe07f50b14, 0xdc09b30b7a09e4, 0x7c0281073f0590, 0xdd09b40b7b09e5, 0x7d028207400591, 0x97cffff066a0370, 0xffffffffffffffff, 0x2ee0448066b0371, 0xffff0975ffff097d, 0xf5ffffffffffff, 0xffffffffffffffff, 0x20a0a7209d702d6, 0xffffffffffff00f6, 0x387ffff035c00bb, 0xffffffffffffffff, 0x42005d0035d00bc, 0xffffffffffffffff, 0x9cfffff01c30176, 0xffffffff029bffff, 0xa580ab101c40177, 0xffffffffffff029c, 0x3bfffffffffffff, 0xffffffffffffffff, 0x61a0322000908e4, 0xffffffffffff03c0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff06fcffffffff, 0x9bd0b2dffffffff, 0xffffffffffffffff, 0xffff0951ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0952ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x45904940a7907b2, 0xa4309da01780767, 0x70902f101ec0534, 0x82e044d00de0aeb, 0x45a04950a7a07b3, 0xa4409db01790768, 0x70a02f201ed0535, 0x82f044e00df0aec, 0x874ffffffffffff, 0xffffffffffff0875, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x596037affffffff, 0x745081a00a60b25, 0x89909cc052a03fe, 0x7b604870a92020f, 0xaa0071d018d0221, 0x5180860029d0102, 0x943065e097a0b1d, 0xa70b260597037b, 0x52b03ff0746081b, 0xa930210089a09cd, 0x18e022207b70488, 0x29e01030aa1071e, 0x97b0b1e05190861, 0xffffffff0944065f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x10c0aed065803c7, 0x50b044306b2082c, 0xab201c8086c0a4f, 0x225020b0753049c, 0x27705380b5f070b, 0x98600a8040c0812, 0x5a4002f093d0705, 0x8cf003b095b063a, 0x876015103a10670, 0x3e705d40b0b0684, 0xaa40114040407d2, 0x53a01bb02e304bb, 0x10d0aee065903c8, 0x50c044406b3082d, 0xab301c9086d0a50, 0x226020c0754049d, 0x27805390b60070c, 0x98700a9040d0813, 0x5a50030093e0706, 0x8d0003c095c063b, 0x877015203a20671, 0x3e805d50b0c0685, 0xaa50115040507d3, 0x53b01bc02e404bc, 0x30e063d003a0039, 0x9d807bf0a0f0032, 0x265037f037e09d9, 0x40305a10b200266, 0xa1a0a19ffff021e, 0xffff074e074dffff, 0xffffffffffffffff, 0x28c095effffffff, 0x33a033902a602a5, 0x912091108cc08cb, 0x2b902b803730372, 0x470046f09970996, 0xb560b5507fd07fc, 0x4b204b1077a0779, 0x1e901e80a660a65, 0xd600d5056e056d, 0x660065072a0729, 0x20001f08a908a8, 0x5a0059062a0629, 0x26402630b1a0b19, 0x190018f06bf06be, 0x5bd05bc07c107c0, 0xa3c0a3b0750074f, 0x280027f04e204e1, 0x3ac03ab0b020b01, 0x958095704720471, 0x328032708d608d5, 0x9c109c009310930, 0x8330832057e057d, 0x42204210aad0aac, 0xa130a1202180217, 0x70e070d01a601a5, 0x8210820010f010e, 0xffffffffffffffff, 0x358ffffffffffff, 0xffff032a03290359, 0x6d206d1ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50e03ec082309b8, 0x1b20b8f06f701f1, 0x1b8049904860242, 0x46e087d0a9f0a9d, 0xaf806a107ff056c, 0x4320649039400f8, 0x8c40690090a02da, 0x9180673033c0150, 0x3d2084f09eb0b50, 0xaa9ffff02e20109, 0xffffffffffffffff, 0xffffffff0a56ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xa200a1f01d901d8, 0x79d079c0a990a98, 0x69f069e0140013f, 0x4f604f502bb02ba, 0x6430642003e003d, 0x64b064a05bf05be, 0x73c073b00770076, 0xb6c0b6b0040003f, 0x784078304ea04e9, 0x89208910ad50ad4, 0xac70ac602c802c7, 0xffffffff017b017a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x298029705150514, 0xa050a04094c094b, 0xa830a8207af07ae, 0x18a01890a400a3f, 0xaf00ae074a0749, 0x52f052e088c088b, 0x34003305ec05eb, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x70006ffffffff, 0xc600c508ab08aa, 0xe800e706f106f0, 0x6800670610060f, 0x1580157ffffffff, 0xb4c0b4b08350834, 0x9c309c205040503, 0x2b002af0a2c0a2b, 0x960095f087f087e, 0x396039509810980, 0x85508540b5e0b5d, 0x330032f03120311, 0x5a905a802120211, 0x98d098c04110410, 0x8690868051d051c, 0xa280a27023e023d, 0x66d066c00ff00fe, 0x6a706a60b100b0f, 0x661066001560155, 0x69c069b02ea02e9, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d707a307a2ffff, 0xb720b71050804d8, 0x9ba09b905860585, 0x84508440ad10ad0, 0x4fffffffffffff, 0xffffffff0b770050, 0x24c024b0b0e0b0d, 0x3b203b1ffff0790, 0x49f049e07d907d8, 0x9e309e203fb03fa, 0x27a02790510050f, 0x11d011c080f080e, 0x94200b607080707, 0xffff00fa098b0b2f, 0xb61009303510710, 0x9f009e05ea05e9, 0x13e013d06e606e5, 0x28e028d0550054f, 0x436043508050804, 0x75b0b9305170791, 0xffff01750174075c, 0xffffffffffffffff, 0xffffffff02f802f7, 0x310030fffffffff, 0xffffffff0af20af1, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09ed09ecffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb62ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x36100c4043405d7, 0x935006e081706c1, 0x9fd0b2a03750894, 0x336007f08bc0604, 0xa5c02ce01f80a6e, 0x5600138095606b9, 0x7c905760b7f07db, 0x75e09ef04e0048c, 0x64f037902e80450, 0x6a309a101420851, 0x89c091a0042045e, 0x635031400460b9d, 0xb6809e1023409b2, 0x73a054400830272, 0x77e07180a0d0adf, 0x4ba08b701e50529, 0x3b006dc09ff028a, 0x8070b2405b901fc, 0x35b067b034d05df, 0x92f068702ae013a, 0xffffffffffffffff, 0xffff080d080cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2670af309c4ffff, 0x94d064405aa0143, 0xb780773074b04cf, 0x40004f707c2013b, 0x2ef03ed054d0259, 0x19707a40a860ab4, 0xffff0453060108c7, 0xffffffffffffffff, 0x2680af409c5ffff, 0x94e064505ab0144, 0xb790774074c04d0, 0x40104f807c3013c, 0x2f003ee054e025a, 0x19807a50a870ab5, 0xffff0454060208c8, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5c0075f07510a67, 0x9af0aaa07ea012f, 0x2dd099e0afb0959, 0x14507d404e304f9, 0x8cd0636047900e9, 0x36c072302cf0043, 0x25d0549040802d1, 0x38006740b8a0147, 0x47b078c0aca0a7b, 0xb51078102310483, 0x5c1076007520a68, 0x9b00aab07eb0130, 0x2de099f0afc095a, 0x14607d504e404fa, 0x8ce0637047a00ea, 0x36d072402d00044, 0x25e054a040902d2, 0x38106750b8b0148, 0x47c078d0acb0a7c, 0xb52078202320484, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x74107d60ad60a4b, 0xb05099a02230571, 0x7940b3f09c6022d, 0x763048104a2024f, 0x6aa034305c60331, 0x6c9028301bf0b37, 0x65003c5028709ad, 0x60b08d7002702eb, 0x8b00a2f0a2d0755, 0xffffffffffffffff, 0x74207d70ad70a4c, 0xb06099b02240572, 0x7950b4009c7022e, 0x764048204a30250, 0x6ab034405c70332, 0x6ca028401c00b38, 0x65103c6028809ae, 0x60c08d8002802ec, 0x8b10a300a2e0756, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x26b00a40463088f, 0x25101100ae906ac, 0xffff00b709470b43, 0x90100b908fb05e7, 0x1310b4707cc0808, 0x2ff03e305610836, 0xffff02a704230583, 0x4e5047707650a29, 0xffff03b5063e0a31, 0x890ffff06d302c9, 0x6ad026c00a50464, 0xb44025201110aea, 0x5e8ffff00b80948, 0x809090200ba08fc, 0x83701320b4807cd, 0x584030003e40562, 0xa2affff02a80424, 0xa3204e604780766, 0x2caffff03b6063f, 0xffffffffffff06d4, 0x1490191048904d1, 0x57301e207e20b94, 0x44505c803e90697, 0x3090a4d0a8a07e8, 0xc7090f0b900915, 0x8a0895072d0341, 0x100096a08660461, 0x7a0366071b089d, 0x33f04bf05220201, 0x46507a00ada0a69, 0x53c046b083c0963, 0x1bd0b9606ea0239, 0xffff066e09e602fb, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x14a0192048a04d2, 0x57401e307e30b95, 0x44605c903ea0698, 0x30a0a4e0a8b07e9, 0xc809100b910916, 0x8b0896072e0342, 0x101096b08670462, 0x7b0367071c089e, 0x34004c005230202, 0x46607a10adb0a6a, 0x53d046c083d0964, 0x1be0b9706eb023a, 0xffff066f09e702fc, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xb9807a601dc057f, 0x4e7049001c101a9, 0x8420733036e00cf, 0x45f0848097e00ef, 0x68d0872015f0b15, 0x61108e102d7034a, 0x8460ab80a6b0364, 0x6ba03cd05570455, 0xb9907a701dd0580, 0x4e8049101c201aa, 0x8430734036f00d0, 0x4600849097f00f0, 0x68e087301600b16, 0x61208e202d8034b, 0x8470ab90a6c0365, 0x6bb03ce05580456, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x31f072509a20084, 0x40e05f50412025b, 0x56306dd091b0069, 0xa08061703480010, 0x19507ac04ac0475, 0x1ee0aa606ee030b, 0xaef06cb08a604f3, 0x50507b809e80a53, 0x320072609a30085, 0x40f05f60413025c, 0x56406de091c006a, 0xa09061803490011, 0x19607ad04ad0476, 0x1ef0aa706ef030c, 0xaf006cc08a704f4, 0x50607b909e90a54, 0x8b2005503f8065a, 0x437002308db05ed, 0xbf03760598, 0x509053608140743, 0x757019b000207bc, 0xa96033d044b04a6, 0x547016e02730afd, 0x9d20b9e099c06ae, 0x3f9065b00140368, 0x8dc05ee08b30056, 0x377059904380024, 0x8150744000100c0, 0x307bd050a0537, 0x44c04a70758019c, 0x2740afe0a97033e, 0x99d06af0548016f, 0x15036909d30b9f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +0000000000000100000000000000048000000000000011C0", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000300020001000000070006000500040000000A00090008000D000C000B0000 +00110010000F000E00000014001300120000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001600150000000000000000000000000000000000000000001800170000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000019000000000000001B001A0000001F001E001D001C002300220021002000000000000000000000002600250024 +000000000000000000000000000000000028002700000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000002C002B002A0029000000000000002D +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002F002E0000003300320031003000000000000000000000000000000000 +000000000000000000000035003400000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000380037 +0000000000000000000000000000000000000000000000000000000000000000003C003B003A00390000003E003D0000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0040003F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +004200410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000004300000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000004500440000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +08E50080091DFFFF090B00BD031905FB0B2B006B09D00B9A0AD200E0082606C705D1059404670838019301800A330785 +FFFF02F904D9051EFFFFFFFFFFFFFFFF08E60081091EFFFF090C00BE031A05FC0B2C006C09D10B9B0AD300E1082706C8 +05D2059504680839019401810A340786FFFF02FA04DA051FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0965FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0856011805AE077B03DB025709BB0AD80B4D0128038F0559031500470397062B +029F008608DD05F3FFFF00CB058B071104FB021309820AE208EF0A45088007010857011905AF077C03DC025809BC0AD9 +0B4E01290390055A031600480398062C02A0008708DE05F4FFFF00CC058C071204FC021409830AE3036A0A4608810702 +04CC04CB09DD09DC0B580B5701CD01CC07320731020001FF08AF08AE00CE00CD06140613005C005B0620061F00520051 +0663066202B202B108010800015A015907E707E60B890B880A620A6104BE04BD0593059201B401B3096D096C021C021B +08790878FFFFFFFF031C031B0939093806FD00950094FFFF081C008F008E06FE07CA0B310B30081D0A230121012007CB +04DC04DBFFFF0A240B660B6507C507C40162016106BD06BC02AA02A906830682000D000C060A06090070006F06410640 +00D200D1083B083A01DF01DE0728072701A201A10B810B800A520A5104C604C50566056507CF07CE09FB09FA09770976 +002106260625036B05D305FE05FD00220B180B170688069102750526026A026901AF07FA0B3902760AC20769FFFF01B0 +052008B508B40A4709900B090229027BFFFF04C900970096032B00D308EB00AA062E062D0019001803CF055301050104 +FFFFFFFF09A603D0075907EE01690168052C077F01A7075A0AC003020301052DFFFFFFFF0256025501ADFFFF0920091F +FFFFFFFFFFFFFFFF05E0092B092A09290AE50AE405E205E1079804FE04FD0AE6076B0A5E0A5D07990A8004420441076C +055102FE02FD0A810B540B53076A0552016B016A0655065402C002BF05FA05F900F200F1064706460570056F06A906A8 +0ABC0ABB0ABAFFFF01AE022A0748074701EB01EA0B6E0B6D09710970041A0419059F059E0841084008BE08BD0940093F +0898089703AE03AD041C041B0B120B110A8F0A8E040B040A0531053002B402B307F107F0016D016C084B084A05B705B6 +06CE06CDFFFF00D40B830B8200640063073E073D00C200C1088A08890079007806F506F4057A0579FFFFFFFFFFFFFFFF +07960A0EFFFFFFFF095D07BE04CA07970692014C014B028B09D509D402D3041D032403230926092509F709F609540953 +0689021D0B1F040207FB0B3AFFFF05270A48FFFF0AC3FFFFFFFFFFFFFFFF0941027CFFFF0B2E0521FFFF00B50B76FFFF +063C00F90B0A099100ABFFFFFFFF098AFFFF08EC05A0FFFFFFFFFFFF032CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0031FFFF +09A70516FFFF05540350FFFFFFFFFFFF078001A8041E07EFFFFFFFFFFFFF02D4FFFF0AC1FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF070F0092FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0972FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CF01CE04A504A401F601F5FFFFFFFF +0A37FFFFFFFFFFFF0382FFFF086E0122FFFFFFFFFFFFFFFFFFFF0299FFFFFFFFFFFF00EB082806D709CA0BA0FFFF07F2 +017C04AE04B30386016601D20ABD0A170B070B320973059A0106039B081E0966068AFFFF062F0B7300AC03450607032D +009A084C06FA08FD00EC082906D8029A017D04AF04B409CE016701D30ABE0A180B080B330974059B0107039C081F0967 +068C068B06300B7400AD03460608032E009B084D06FB08FE097809CB0BA107F3FFFFFFFF059C04B009790B750347FFFF +04A904A8018C018B085F085E0A890A88098909880582058103BC03BB09DF09DE08C208C102F602F503630362044A0449 +038301D606310B340A84FFFF0ABF059D05DB05DA01D70A85086F01230A38FFFF096E0291051A04F105AC0090098E0AF5 +08F700A008F906FF0391009C031D05EF03C105400B45071F0AB6027D03D306E704B70126086A0A8C01B90A1407AA080A +02DF0A73051107EC015B02450ACE09A40B5B093A0664057B005303C3062109F003C205410B4607200AB7027E03D406E8 +04B80127086B0A8D01BA0A1507AB080B02E00A74051207ED015C02460ACF09A50B5C093B0665057C005403C4062209F1 +096F0292051B04F205AD0091098F0AF608F800A108FA07000392009D031E05F005CD05CC0AA30AA20B4A0B4902440243 +03E603E501FA01F90859085809B609B508E008DF05A305A2039A039908C608C509370936088808870418041703DE03DD +FFFFFFFF0B220B21FFFFFFFFFFFFFFFF05A705A6FFFFFFFF00E600E5082B082A005E005D06D006CF00050004061C061B +00CA00C90730072F0568056708AD08AC010B010A06B506B401A0019F04F004EF045804570A110A100B700B6F07BB07BA +040704060831083008EE08ED09BF09BE08DA08D90326032503B803B709F909F8021F06C306C202DB023705D905D80220 +04A00A220A21023802DC0793079204A1055C055B023C023B06E406E302620261062806270058005706790678001E001D +0677067601130112056A05690248024707A907A8011B011A07780777049B049A046A04690A910A900B000AFF02360235 +042C042B038C038B08CA08C9090E090D092409230338033703D803D70A010A000A950A940825082401CB01CA079B079A +02C402C30A1C0A1B0171017004EC04EB05BB05BA06A506A4002C002B064D064C003800370639063800B400B30B6A0B69 +0ACD0ACC0738073704EE04ED088E088D0227017E0BA2FFFF0A9A0293071904B50589047D08520AC401330B6306D503A7 +03030352067C03840135092C067E09030B27094906D905B405010524085A0A06022F0A3D07150295FFFF078705DC0184 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0228017F0BA3FFFF0A9B0294071A04B6058A047E08530AC501340B6406D603A8 +03040353067D03850136092D067F09040B28094A06DA05B505020525085B0A0702300A3E07160296FFFF078805DD0185 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050D03EB082209B701B10B8E06F601F0 +01B7049804850241046D087C0A9E0A9C0AF706A007FE056B04310648039300F708C3068F090902D909170672033B014F +03D1084E09EA0B4F0AA8FFFF02E10108FFFFFFFFFFFFFFFFFFFFFFFF0A55FFFF03FC06990AE7015309320668042D05C4 +03C905F10317002D09270B3B09F20025085C06B0055D008C0429088209AB0AE00A0A0761021504FF071304D3024901DA +081809980AAE02A106EC03CB058703E1FFFF039F011E0B3506950905000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +036000C3043305D60934006D081606C009FC0B29037408930335007E08BB06030A5B02CD01F70A6D055F0137095506B8 +07C805750B7E07DA075D09EE04DF048B064E037802E7044F06A209A001410850089B09190041045D0634031300450B9C +0B6709E0023309B10739054300820271077D07170A0C0ADE04B908B601E4052803AF06DB09FE028908060B2305B801FB +035A067A034C05DE092E068602AD0139038D06230B84004BFFFFFFFF04390061038E06240B85004CFFFFFFFF043A0062 +05130A1606E9054205CE093C0A760A75FFFFFFFFFFFF069DFFFFFFFFFFFFFFFF03FD069A0AE8015409330669042E05C5 +03CA05F20318002E09280B3C09F30026085D06B1055E008D042A088309AC0AE10A0B076202160500071404D4024A01DB +081909990AAF02A206ED03CC058803E2FFFF03A0011F0B3606960906000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0507FFFFFFFFFFFF030DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B92FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04C804C706F306F20B870B860776077504740473080308020260025F0985098409080907057805770334033308F408F3 +0914091302CC02CB03D603D5045C045B07C707C60B040B030A1E0A1D04DE04DD05CB05CA01AC01AB072C072B0240023F +083F083E00DB00DA061606150060005F060E060D001300120694069302A402A306B706B6015E015D079F079E05B105B0 +049304920A640A630B5A0B590208020703E003DF020E020D087B087A09460945090008FF03550354037D037C08D208D1 +09620961088508840204020303DA03D901B601B50B3E0B3D0A420A410480047F05C305C207DD07DC014E014D08110810 +02AC02AB065D065C004A00490633063200890088061E061D053F053E08A308A2020602050736073501D101D004C204C1 +0440043F0A5A0A59FFFFFFFF07D107D00886FFFFFFFFFFFFFFFF08F0FFFFFFFF08E808E70308030703A403A309C909C8 +0ADD0ADC0254025307E507E40430042F07B107B00A260A250722072104C404C305460545021A02190704070300990098 +05F805F700A300A206530652004E004D0AFA0AF9012501240533053202F402F3077207710117011607B507B404970496 +03F703F60A700A6F0B7D0B7C024E024D043C043B03BE03BD08F608F508D408D309220921035F035E054C054B09950994 +0A780A7708A508A4019A01990452045101D501D40A4A0A4900EE00ED06E006DF0A02003503A90605055500F3094F0B41 +0A03003603AA0606055600F409500B42022B019D0A35076DFFFFFFFF06F804CD022C019E0A36076EFFFFFFFF06F904CE +0016030505FF039D01720870068008E9001703060600039E01730871068108EA01820AC80A3902E501E0078E04AA01A3 +01830AC90A3A02E601E1078F04AB01A4035605E3034E0074FFFFFFFF08BF000A035705E4034F0075FFFFFFFF08C0000B +0A5FFFFF01E6FFFF076FFFFF04D5FFFF0A60FFFF01E7FFFF0770FFFF04D6FFFF0656043D02C5099205E50B8C002903B3 +0657043E02C6099305E60B8D002A03B409D602D502ED0447041F05CF02090A710A570AB0000808E3FFFFFFFF06190321 +03A5028509680B1B08F1012A02C1066603A6028609690B1C08F2012B02C2066709F4028F03B906E105B201FD07F40B13 +09F5029003BA06E205B301FE07F50B1400DC09B30B7A09E4007C0281073F059000DD09B40B7B09E5007D028207400591 +097CFFFF066A0370FFFFFFFFFFFFFFFF02EE0448066B0371FFFF0975FFFF097D00F5FFFFFFFFFFFFFFFFFFFFFFFFFFFF +020A0A7209D702D6FFFFFFFFFFFF00F60387FFFF035C00BBFFFFFFFFFFFFFFFF042005D0035D00BCFFFFFFFFFFFFFFFF +09CFFFFF01C30176FFFFFFFF029BFFFF0A580AB101C40177FFFFFFFFFFFF029C03BFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +061A0322000908E4FFFFFFFFFFFF03C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06FCFFFFFFFF +09BD0B2DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0951FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0952FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF045904940A7907B20A4309DA01780767070902F101EC0534082E044D00DE0AEB +045A04950A7A07B30A4409DB01790768070A02F201ED0535082F044E00DF0AEC0874FFFFFFFFFFFFFFFFFFFFFFFF0875 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0596037AFFFFFFFF0745081A00A60B25089909CC052A03FE +07B604870A92020F0AA0071D018D022105180860029D01020943065E097A0B1D00A70B260597037B052B03FF0746081B +0A930210089A09CD018E022207B70488029E01030AA1071E097B0B1E05190861FFFFFFFF0944065FFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF010C0AED065803C7050B044306B2082C +0AB201C8086C0A4F0225020B0753049C027705380B5F070B098600A8040C081205A4002F093D070508CF003B095B063A +0876015103A1067003E705D40B0B06840AA40114040407D2053A01BB02E304BB010D0AEE065903C8050C044406B3082D +0AB301C9086D0A500226020C0754049D027805390B60070C098700A9040D081305A50030093E070608D0003C095C063B +0877015203A2067103E805D50B0C06850AA50115040507D3053B01BC02E404BC030E063D003A003909D807BF0A0F0032 +0265037F037E09D9040305A10B2002660A1A0A19FFFF021EFFFF074E074DFFFFFFFFFFFFFFFFFFFF028C095EFFFFFFFF +033A033902A602A50912091108CC08CB02B902B8037303720470046F099709960B560B5507FD07FC04B204B1077A0779 +01E901E80A660A6500D600D5056E056D00660065072A07290020001F08A908A8005A0059062A0629026402630B1A0B19 +0190018F06BF06BE05BD05BC07C107C00A3C0A3B0750074F0280027F04E204E103AC03AB0B020B010958095704720471 +0328032708D608D509C109C00931093008330832057E057D042204210AAD0AAC0A130A1202180217070E070D01A601A5 +08210820010F010EFFFFFFFFFFFFFFFF0358FFFFFFFFFFFFFFFF032A0329035906D206D1FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050E03EC082309B801B20B8F06F701F101B8049904860242046E087D0A9F0A9D +0AF806A107FF056C04320649039400F808C40690090A02DA09180673033C015003D2084F09EB0B500AA9FFFF02E20109 +FFFFFFFFFFFFFFFFFFFFFFFF0A56FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0A200A1F01D901D8079D079C0A990A98069F069E0140013F04F604F502BB02BA06430642003E003D064B064A05BF05BE +073C073B007700760B6C0B6B0040003F0784078304EA04E9089208910AD50AD40AC70AC602C802C7FFFFFFFF017B017A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02980297051505140A050A04094C094B +0A830A8207AF07AE018A01890A400A3F00AF00AE074A0749052F052E088C088B0034003305EC05EBFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00070006FFFFFFFF00C600C508AB08AA +00E800E706F106F0006800670610060F01580157FFFFFFFF0B4C0B4B0835083409C309C20504050302B002AF0A2C0A2B +0960095F087F087E0396039509810980085508540B5E0B5D0330032F0312031105A905A802120211098D098C04110410 +08690868051D051C0A280A27023E023D066D066C00FF00FE06A706A60B100B0F0661066001560155069C069B02EA02E9 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D707A307A2FFFF0B720B71050804D809BA09B905860585084508440AD10AD0 +004FFFFFFFFFFFFFFFFFFFFF0B770050024C024B0B0E0B0D03B203B1FFFF0790049F049E07D907D809E309E203FB03FA +027A02790510050F011D011C080F080E094200B607080707FFFF00FA098B0B2F0B61009303510710009F009E05EA05E9 +013E013D06E606E5028E028D0550054F0436043508050804075B0B9305170791FFFF01750174075CFFFFFFFFFFFFFFFF +FFFFFFFF02F802F70310030FFFFFFFFFFFFFFFFF0AF20AF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09ED09ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B62FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +036100C4043405D70935006E081706C109FD0B2A037508940336007F08BC06040A5C02CE01F80A6E05600138095606B9 +07C905760B7F07DB075E09EF04E0048C064F037902E8045006A309A101420851089C091A0042045E0635031400460B9D +0B6809E1023409B2073A054400830272077E07180A0D0ADF04BA08B701E5052903B006DC09FF028A08070B2405B901FC +035B067B034D05DF092F068702AE013AFFFFFFFFFFFFFFFFFFFF080D080CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02670AF309C4FFFF094D064405AA01430B780773074B04CF040004F707C2013B +02EF03ED054D0259019707A40A860AB4FFFF0453060108C7FFFFFFFFFFFFFFFF02680AF409C5FFFF094E064505AB0144 +0B790774074C04D0040104F807C3013C02F003EE054E025A019807A50A870AB5FFFF0454060208C8FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C0075F07510A6709AF0AAA07EA012F02DD099E0AFB0959014507D404E304F9 +08CD0636047900E9036C072302CF0043025D0549040802D1038006740B8A0147047B078C0ACA0A7B0B51078102310483 +05C1076007520A6809B00AAB07EB013002DE099F0AFC095A014607D504E404FA08CE0637047A00EA036D072402D00044 +025E054A040902D2038106750B8B0148047C078D0ACB0A7C0B52078202320484FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF074107D60AD60A4B0B05099A02230571 +07940B3F09C6022D0763048104A2024F06AA034305C6033106C9028301BF0B37065003C5028709AD060B08D7002702EB +08B00A2F0A2D0755FFFFFFFFFFFFFFFF074207D70AD70A4C0B06099B0224057207950B4009C7022E0764048204A30250 +06AB034405C7033206CA028401C00B38065103C6028809AE060C08D8002802EC08B10A300A2E0756FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +026B00A40463088F025101100AE906ACFFFF00B709470B43090100B908FB05E701310B4707CC080802FF03E305610836 +FFFF02A70423058304E5047707650A29FFFF03B5063E0A310890FFFF06D302C906AD026C00A504640B44025201110AEA +05E8FFFF00B809480809090200BA08FC083701320B4807CD0584030003E405620A2AFFFF02A804240A3204E604780766 +02CAFFFF03B6063FFFFFFFFFFFFF06D401490191048904D1057301E207E20B94044505C803E9069703090A4D0A8A07E8 +00C7090F0B900915008A0895072D03410100096A08660461007A0366071B089D033F04BF05220201046507A00ADA0A69 +053C046B083C096301BD0B9606EA0239FFFF066E09E602FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +014A0192048A04D2057401E307E30B95044605C903EA0698030A0A4E0A8B07E900C809100B910916008B0896072E0342 +0101096B08670462007B0367071C089E034004C005230202046607A10ADB0A6A053D046C083D096401BE0B9706EB023A +FFFF066F09E702FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0B9807A601DC057F04E7049001C101A908420733036E00CF045F0848097E00EF068D0872015F0B15061108E102D7034A +08460AB80A6B036406BA03CD055704550B9907A701DD058004E8049101C201AA08430734036F00D004600849097F00F0 +068E087301600B16061208E202D8034B08470AB90A6C036506BB03CE05580456FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031F072509A20084040E05F50412025B056306DD091B00690A08061703480010019507AC04AC047501EE0AA606EE030B +0AEF06CB08A604F3050507B809E80A530320072609A30085040F05F60413025C056406DE091C006A0A09061803490011 +019607AD04AD047601EF0AA706EF030C0AF006CC08A704F4050607B909E90A5408B2005503F8065A0437002308DB05ED +000000BF0376059805090536081407430757019B000207BC0A96033D044B04A60547016E02730AFD09D20B9E099C06AE +03F9065B0014036808DC05EE08B30056037705990438002408150744000100C0000307BD050A0537044C04A70758019C +02740AFE0A97033E099D06AF0548016F0015036909D30B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //11648 bytes -enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0x11c0], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x16001500000000, 0x0, 0x0, 0x18001700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1900000000, 0x1b001a0000, 0x1f001e001d001c, 0x23002200210020, 0x0, 0x2600250024, 0x0, 0x0, 0x28002700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2c002b002a0029, 0x2d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f002e0000, 0x33003200310030, 0x0, 0x0, 0x0, 0x3500340000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x36, 0x0, 0x0, 0x0, 0x380037, 0x0, 0x0, 0x0, 0x0, 0x3c003b003a0039, 0x3e003d0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x40003f00000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x42004100000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x430000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x984008a09beffff, 0x9ac00c703440658, 0xbf400740a7c0c6a, 0xb9100ef08b10736, 0x62905e604a608c3, 0x1ac01990ae607fe, 0xffff032005210569, 0xffffffffffffffff, 0x985008b09bfffff, 0x9ad00c803450659, 0xbf500750a7d0c6b, 0xb9200f008b20737, 0x62a05e704a708c4, 0x1ad019a0ae707ff, 0xffff03210522056a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a0bffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x8e3012e060507f2, 0x41202770a640b9a, 0xc18013e03c105a6, 0x340004e03c9068a, 0x2c20090097c0650, 0xffff00d505da0781, 0x54302300a2a0ba7, 0xba20af909110771, 0x8e4012f060607f3, 0x41302780a650b9b, 0xc19013f03c205a7, 0x341004f03ca068b, 0x2c30091097d0651, 0xffff00d605db0782, 0x54402310a2b0ba8, 0x39b0afa09120772, 0x51205110a890a88, 0xc230c2201e601e5, 0x7a607a5021d021c, 0x946094500d800d7, 0x673067200650064, 0x67f067e005b005a, 0x6c406c302d802d7, 0x889088801730172, 0x86808670c550c54, 0xb180b1705040503, 0x5e505e401cd01cc, 0xa140a1302390238, 0x90a0909ffff03f6, 0x347034609dd09dc, 0x76d009f009effff, 0x8a700990098076e, 0x8440bfa0bf908a8, 0xad6013701360845, 0x5240523031a0ad7, 0xc310c30083f083e, 0x17b017a072a0729, 0x2d002cf06eb06ea, 0xf000e06690668, 0x79007806a0069f, 0xdc00db08c608c5, 0x1fb01fa079c079b, 0x1bb01ba0c4d0c4c, 0xb080b07050c050b, 0x5b305b2084b084a, 0xaab0aaa0a1e0a1d, 0x2506850684039c, 0x62b065b065a0026, 0xbe00bdf06f006f9, 0x2950571028a0289, 0x1c808810c020296, 0xb8107e0ffff01c9, 0x56b094f094e0afb, 0xa380bd00247029b, 0xffff050f00a100a0, 0x35600dd098a00b4, 0x68d068c001d001c, 0x40605a001180117, 0xffffffff0a4e0407, 0x7d0087401820181, 0x57707f801c007d1, 0xb7f032903280578, 0xffffffff02760275, 0x1c6ffff09c109c0, 0xffffffffffffffff, 0x63b09cf09ce09cd, 0xbaa0ba9063d063c, 0x812054605450bab, 0x7e20b140b130813, 0xb39047d047c07e3, 0x59e032503240b3a, 0xc1f0c1e07e1059f, 0x184018306b606b5, 0x2e602e506570656, 0x101010006a606a5, 0x5bd05bc07140713, 0xb7b0b7a0b790928, 0x1c7024807bf07be, 0x20702060c390c38, 0xa180a1704550454, 0x5f105f008ce08cd, 0x95b095a09e409e3, 0x92d092c03e103e0, 0x45704560bd90bd8, 0xb480b4704460445, 0x57c057b02da02d9, 0x877087601860185, 0x8d808d7060f060e, 0x73d073cffff00de, 0xc4f0c4e006d006c, 0x7b407b300cc00cb, 0x91b091a00820081, 0x765076405c905c8, 0xffffffffffffffff, 0x8100abeffffffff, 0xa03083805100811, 0x6fa0165016402ad, 0xa810a8002fa0458, 0x34f034e09c709c6, 0xaa70aa609fa09f9, 0x6f1023a0be8043b, 0x8820c03ffff0572, 0xafcffff0b82ffff, 0xffffffffffff09e5, 0x29cffff0bf7056c, 0xffff00bf0c41ffff, 0x69b01090bd10a39, 0xb5ffffffff0a32, 0xffff098b05f7ffff, 0xffffffff0357ffff, 0xffffffffffffffff, 0xffffffff0035ffff, 0xa4f055fffff05a1, 0x380ffffffffffff, 0x7f901c104590875, 0xffffffffffff02fb, 0xffff0b80ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff077f009cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0a19ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1e801e704e604e5, 0x2120211ffffffff, 0xaeaffffffffffff, 0x3b3ffff08ff0138, 0xffffffffffffffff, 0xffff02bcffffffff, 0xffff00fa08b30746, 0xa750c70ffff0878, 0x19504f104f90883, 0x17f01eb0b7c0aca, 0xbce0bfb0a1a05ec, 0x11903cd08a90a0c, 0x6f2ffff068e0c3e, 0xb6037206660358, 0xa408d9076a099e, 0xfb08b4074702bd, 0x19604f204fa0a79, 0x18001ec0b7d0acb, 0xbcf0bfc0a1b05ed, 0x11a03ce08aa0a0d, 0x6f406f3068f0c3f, 0xb7037306670359, 0xa508da076b099f, 0xa1f0a760c710879, 0xffffffff05ee04f3, 0xa200c400374ffff, 0x4ec04eb01a501a4, 0x8f008ef0b420b41, 0xa310a3005d105d0, 0x3f003ef0a8b0a8a, 0x95f095e031d031c, 0x394039304850484, 0x3b401ef06900bfd, 0xb3dffff0b7e05ef, 0x631063001f00b3e, 0x90001390aebffff, 0xa1502b405650539, 0x603009a0a360bba, 0x99800aa099a076f, 0x3c300a60348064a, 0x3f8058d0c0e0790, 0xb72029d040a0757, 0x4fd013c08fb0b45, 0x1d20ac408240894, 0x3060b2c055a0872, 0x17402650b8d0a4c, 0xc2609de06c505ca, 0x5c03fc06800a9d, 0x3f9058e0c0f0791, 0xb73029e040b0758, 0x4fe013d08fc0b46, 0x1d30ac508250895, 0x3070b2d055b0873, 0x17502660b8e0a4d, 0xc2709df06c605cb, 0x5d03fd06810a9e, 0xa1602b50566053a, 0x604009b0a370bbb, 0x99900ab099b0770, 0x3c400a70349064b, 0x62506240b5c0b5b, 0xc130c1202640263, 0x41d041c02160215, 0x8e608e50a5f0a5e, 0x97f097e05f605f5, 0x3cc03cb09630962, 0x9db09da09190918, 0x453045204150414, 0xffffffff0beb0bea, 0xffffffffffffffff, 0x5fe05fdffffffff, 0xf500f408b608b5, 0x670066073f073e, 0x50004067b067a, 0xd400d307a407a3, 0x5b505b409440943, 0x11e011d07220721, 0x1b901b805380537, 0x49504940ac10ac0, 0xc3b0c3a08350834, 0x442044108bc08bb, 0x98d098c0a680a67, 0x977097603510350, 0x3eb03ea0aa90aa8, 0x23c073207310302, 0x25506330632023d, 0x4e10ad50ad40256, 0x303080d080c04e2, 0x5a905a8025a0259, 0x754075302820281, 0x687068600610060, 0x6e006df00220021, 0x6db06da01290128, 0x5b705b602680267, 0x823082201310130, 0x7ef07ee04dc04db, 0x4a904a80b4a0b49, 0xbc50bc402540253, 0x467046603be03bd, 0x967096609af09ae, 0x9c509c403650364, 0x40f040e0ab10ab0, 0xb4e0b4d08b008af, 0x1e401e308150814, 0x2eb02ea0acf0ace, 0x18a018905340533, 0x61306120710070f, 0x30002f06ac06ab, 0x3c003b06980697, 0xbe00bd0c350c34, 0xb8c0b8b07ae07ad, 0x536053509230922, 0x24501970c72ffff, 0xb5302b6078904fb, 0x5d804be08df0b83, 0x14a0c2e074403da, 0x32a038206e403b5, 0x14c09d006e609a4, 0xbf009ed0748060c, 0x549056f08e70ab6, 0x24d0af0078502b8, 0xffff08000637019d, 0xffffffffffffffff, 0xffffffffffffffff, 0x24601980c73ffff, 0xb5402b7078a04fc, 0x5d904bf08e00b84, 0x14b0c2f074503db, 0x32b038306e503b6, 0x14d09d106e709a5, 0xbf109ee0749060d, 0x54a057008e80ab7, 0x24e0af1078602b9, 0x66208010638019e, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x556042208ad0a60, 0x1ca0c5e0766020c, 0x1d004d904c60261, 0x4ac090d0b570b55, 0xbbc070b088605b8, 0x46c06a703c50107, 0x96006f709aa0300, 0x9b806d403680168, 0x40808db0a970c1a, 0xb61ffff0308011b, 0xffffffffffffffff, 0xffffffff0b0bffff, 0x43507020bac016c, 0x9d606ca0468061c, 0x3fe064c03420031, 0x9cb0c040aa10029, 0x8eb071d05aa0096, 0x46409130a530ba5, 0xaba07d802320547, 0x7830519026901f3, 0x8a30a400b6802c4, 0x75c040005d60418, 0xffff03d101340bfe, 0x6fd09a60010ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x39100cd046e062e, 0x9d8007608a1072f, 0xaac0bf203a5093b, 0x362008c09580660, 0xb1102f402130b24, 0x5ac014e09fb0725, 0x84205c40c4a085b, 0x7d40a9b052704cc, 0x6ad03a9030e048a, 0x70d0a48015808dd, 0x93009ba004a049a, 0x693033e004c0c6c, 0xc320a8c02510a59, 0x7af059000940291, 0x7f607870abc0ba0, 0x4ff095302000573, 0x3e2074a0aae02ab, 0x8900c0806100217, 0x39906ee037a0639, 0x9d2071902d30150, 0x3bf06820c500054, 0xffffffff0474006a, 0x3c006830c510055, 0xffffffff0475006b, 0x55c0ac60759058f, 0x62609e00b2f0b2e, 0xffffffffffff0708, 0xffffffffffffffff, 0x43607030bad016d, 0x9d706cb0469061d, 0x3ff064d03430032, 0x9cc0c050aa2002a, 0x8ec071e05ab0097, 0x46509140a540ba6, 0xabb07d902330548, 0x784051a026a01f4, 0x8a40a410b6902c5, 0x75d040105d70419, 0xffff03d201350bff, 0x6fe09a70011ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0561ffff, 0xffffffff0338ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0c62ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x50e050d07630762, 0xc530c5207ed07ec, 0x4b304b2088b088a, 0x280027f0a2d0a2c, 0x9a909a805c705c6, 0x361036009950994, 0x9b509b402f302f2, 0x40d040c04990498, 0x84108400bc90bc8, 0xad10ad005260525, 0x623062201c501c4, 0x7a0079f0260025f, 0x8ca08c900e500e4, 0x675067400690068, 0x66d066c00150014, 0x6fc06fb02c702c6, 0x724072301770176, 0x819081806080607, 0x4d404d30b1a0b19, 0xc250c2402250224, 0x4170416022b022a, 0x90c090b09ea09e9, 0x9a109a003850384, 0x3ae03ad096f096e, 0xa080a0709160915, 0x221022004110410, 0x1cf01ce0c070c06, 0xaf60af504c104c0, 0x61b061a085e085d, 0x1670166089c089b, 0x2d202d106be06bd, 0x51005006920691, 0x930092067d067c, 0x58c058b09380937, 0x223022207ac07ab, 0x1ea01e905080507, 0x47b047a0b100b0f, 0xdf0c5c084d084c, 0x917049e05ba03fa, 0xffff0ba3ffffffff, 0x987098603310330, 0x3d603d50a740a73, 0xb9f0b9e02740273, 0x8660865046b046a, 0x82b082a0ad90ad8, 0x7930792050a0509, 0x593059202370236, 0x774077300a300a2, 0x655065400ad00ac, 0x6b406b300570056, 0xbbf0bbe013b013a, 0x57e057d03270326, 0x7e907e8012d012c, 0x82f082e04d804d7, 0x430042f0b270b26, 0xc490c48026e026d, 0x477047603f203f1, 0x997099609710970, 0x9c309c20390038f, 0x59905980a3d0a3c, 0xb310b30093a0939, 0x1b301b2048d048c, 0x1ee01ed0b000aff, 0xfd00fc074f074e, 0xab2003903dc0664, 0x5a2010209f30c0a, 0xab3003a03dd0665, 0x5a3010309f40c0b, 0x24901b60ae807e4, 0xffffffff07680513, 0x24a01b70ae907e5, 0xffffffff07690514, 0x1a032c065c03cf, 0x18b090106e80988, 0x1b032d065d03d0, 0x18c090206e90989, 0x19b0b870aec030c, 0x1fc080704ed01bc, 0x19c0b880aed030d, 0x1fd080804ee01bd, 0x386063e037e007d, 0xffffffff095c000c, 0x387063f037f007e, 0xffffffff095d000d, 0xb1508ed02020085, 0x7e6072b051b0bec, 0xb16ffff0203ffff, 0x7e7ffff051cffff, 0x6b7047802ec0a3a, 0x6400c5a002d03e6, 0x6b8047902ed0a3b, 0x6410c5b002e03e7, 0xa8202fc03140482, 0x45a062702260b2a, 0xb0d0b6a000a0982, 0xffffffff0678034c, 0x8560b760ac70be3, 0x991014005f20794, 0x8570b770ac80be4, 0x992014105f30795, 0xaa3063403ec0750, 0x609021909c80bda, 0xaa4063503ed0751, 0x60a021a09c90bdb, 0xb1f0b950c450a90, 0x1f7054f07b50947, 0xb200b960c460a91, 0x1f8055007b60948, 0xa23048e06cc03a1, 0x3f0c43ffff0336, 0x315048306cd03a2, 0xffff0a1cffff0a24, 0xaf2084effffffff, 0x51f0581ffff0a9f, 0x2270b2b0a8302fd, 0xffffffffffff0af3, 0x884091e038d00c5, 0x96c064effffffff, 0x45b0628038e00c6, 0xffffffffffffffff, 0xa7a08e901dc018f, 0x4e707f402be0c16, 0xb0e0b6b01dd0190, 0xffffffffffff02bf, 0x6ff0a6bffffffff, 0x6d8091cffff05d2, 0x679034d000b0983, 0xffffffffffff0700, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff076cffffffff, 0xa660bf6ffffffff, 0xffffffffffffffff, 0xffff09f7ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff09f8ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x49604d50b32082c, 0xaf70a86019107de, 0x77903180208057f, 0x8b9048800eb0bb0, 0x49704d60b33082d, 0xaf80a87019207df, 0x77a031902090580, 0x8ba048900ec0bb1, 0x905ffffffffffff, 0xffffffffffff0906, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5e803abffffffff, 0x7bc08a500b00bee, 0x92e0a7705750437, 0x83004c80b4b022c, 0xb59078e01a60241, 0x56308f102c00115, 0x9e706bf0a210be6, 0xb10bef05e903ac, 0x576043807bd08a6, 0xb4c022d092f0a78, 0x1a70242083104c9, 0x2c101160b5a078f, 0xa220be7056408f2, 0xffffffff09e806c0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x11f0bb206b90402, 0x554047e071f08b7, 0xb6c01e108fd0b05, 0x243022807ca04dd, 0x29705830c2a077b, 0xa2e00b20447089d, 0x5f9003309e10775, 0x97400450a010699, 0x907016a03d306d2, 0x41e062c0bd206ec, 0xb5d012a043d0850, 0x58501d4030a0501, 0x1200bb306ba0403, 0x555047f072008b8, 0xb6d01e208fe0b06, 0x244022907cb04de, 0x29805840c2b077c, 0xa2f00b30448089e, 0x5fa003409e20776, 0x97500460a02069a, 0x908016b03d406d3, 0x41f062d0bd306ed, 0xb5e012b043e0851, 0x58601d5030b0502, 0x339069c003e003d, 0xa8408390abf0036, 0x28503b003af0a85, 0x43c05f80be90286, 0xacd0accffff023b, 0xffff07c507c4ffff, 0xffffffffffffffff, 0x2ae0a04ffffffff, 0x367036602c902c8, 0x9b309b209690968, 0x2df02de03a403a3, 0x4af04ae0a3f0a3e, 0xc210c20088d088c, 0x4f504f407f107f0, 0x20502040b1c0b1b, 0xee00ed05bf05be, 0x6f006e079e079d, 0x2400230940093f, 0x63006206890688, 0x28402830be20be1, 0x1a901a8072e072d, 0x6150614083b083a, 0xaef0aee07c707c6, 0x2a0029f052a0529, 0x3df03de0bc70bc6, 0x9fe09fd04b104b0, 0x353035209730972, 0xa6a0a6909d509d4, 0x8be08bd05cd05cc, 0x45d045c0b670b66, 0xac30ac202350234, 0x77e077d01bf01be, 0x8ac08ab01220121, 0xffffffffffffffff, 0x38bffffffffffff, 0xffff03550354038c, 0x7410740ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x557042308ae0a61, 0x1cb0c5f0767020d, 0x1d104da04c70262, 0x4ad090e0b580b56, 0xbbd070c088705b9, 0x46d06a803c60108, 0x96106f809ab0301, 0x9b906d503690169, 0x40908dc0a980c1b, 0xb62ffff0309011c, 0xffffffffffffffff, 0xffffffff0b0cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xad30ad201f201f1, 0x81708160b520b51, 0x70a070901570156, 0x53e053d02e102e0, 0x6a206a100420041, 0x6aa06a906170616, 0x7b207b10080007f, 0xc370c3600440043, 0x7fd07fc05320531, 0x92709260b940b93, 0xb860b8502ef02ee, 0xffffffff01940193, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2bb02ba055e055d, 0xab50ab409f009ef, 0xb3c0b3b08290828, 0x1a301a20afe0afd, 0xb900b807c107c0, 0x57a057909210920, 0x38003706470646, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x90008ffffffff, 0xd000cf09420941, 0xf700f607610760, 0x710070066f066e, 0x1710170ffffffff, 0xc150c1408c008bf, 0xa700a6f054c054b, 0x2d602d50adf0ade, 0xa060a050910090f, 0x3c803c70a290a28, 0x8e208e10c290c28, 0x35d035c033d033c, 0x60005ff022f022e, 0xa350a34044c044b, 0x8fa08f905680567, 0xadb0ada025c025b, 0x6cf06ce01140113, 0x71207110bd70bd6, 0x6c206c1016f016e, 0x705070403110310, 0xffffffffffffffff, 0xffffffffffffffff, 0x51d081d081cffff, 0xc3d0c3c0562051e, 0xa630a6205d505d4, 0x8d208d10b900b8f, 0x58ffffffffffff, 0xffffffff0c420059, 0x26c026b0bd50bd4, 0x3e503e4ffff0826, 0x4e004df085a0859, 0xa8f0a8e04340433, 0x29a029905590558, 0x1330132089a0899, 0x9e600c007780777, 0xffff010a0a330bf8, 0xc2c009d03810780, 0xa900a806450644, 0x155015407560755, 0x2b002af059d059c, 0x4710470088f088e, 0x7d20c6305600827, 0xffff018e018d07d3, 0xffffffffffffffff, 0xffffffff031f031e, 0x33b033affffffff, 0xffffffff0bb70bb6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0a9a0a99ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc2dffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x39200ce046f062f, 0x9d9007708a20730, 0xaad0bf303a6093c, 0x363008d09590661, 0xb1202f502140b25, 0x5ad014f09fc0726, 0x84305c50c4b085c, 0x7d50a9c052804cd, 0x6ae03aa030f048b, 0x70e0a49015908de, 0x93109bb004b049b, 0x694033f004d0c6d, 0xc330a8d02520a5a, 0x7b0059100950292, 0x7f707880abd0ba1, 0x500095402010574, 0x3e3074b0aaf02ac, 0x8910c0906110218, 0x39a06ef037b063a, 0x9d3071a02d40151, 0x5fb014808c10bca, 0xffff0b640b630846, 0xffffffffffffffff, 0xffffffffffffffff, 0x9f5ffffffffffff, 0x35a001604b4069d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2870bb80a6dffff, 0x9f106a30601015a, 0xc6607ea07c20515, 0x439053f083c0152, 0x3160426059a0279, 0x1b0081e0b3f0b6e, 0xffff0490065e0964, 0xffffffffffffffff, 0x2880bb90a6effff, 0x9f206a40602015b, 0xc6707eb07c30516, 0x43a0540083d0153, 0x3170427059b027a, 0x1b1081f0b400b6f, 0xffff0491065f0965, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x61807d607c80b1d, 0xa570b70086d0146, 0x3040a460bc009ff, 0x15c0854052b0541, 0x96a069504ba00f8, 0x39d079702f60052, 0x27d0596044302f8, 0x3b106d60c56015e, 0x4bc08050b890b34, 0xc1c07fa024f04c4, 0x61907d707c90b1e, 0xa580b71086e0147, 0x3050a470bc10a00, 0x15d0855052c0542, 0x96b069604bb00f9, 0x39e079802f70053, 0x27e0597044402f9, 0x3b206d70c57015f, 0x4bd08060b8a0b35, 0xc1d07fb025004c5, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7b808690b980b01, 0xbcc0a42025705c0, 0x80e0c100a71024b, 0x7da04c204e3026f, 0x7150370061e035e, 0x73802a401d80c00, 0x6b1042002a90a55, 0x66a0978002b0312, 0x94a0ae20ae007cc, 0xffffffffffffffff, 0x7b9086a0b990b02, 0xbcd0a43025805c1, 0x80f0c110a72024c, 0x7db04c304e40270, 0x7160371061f035f, 0x73902a501d90c01, 0x6b2042102aa0a56, 0x66b0979002c0313, 0x94b0ae30ae107cd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x28b00ae04a00924, 0x27101230bae0717, 0xffff00c109eb0c0c, 0x9a200c3099c0642, 0x1600c5808480892, 0x32e041a05ae08c7, 0xffff02cd045e05dc, 0x52d04b807dc0adc, 0xffff03e806af0ae4, 0x925ffff074202f0, 0x718028c00af04a1, 0xc0d027201240baf, 0x643ffff00c209ec, 0x89309a300c4099d, 0x8c801610c590849, 0x5dd032f041b05af, 0xaddffff02ce045f, 0xae5052e04b907dd, 0x2f1ffff03e906b0, 0xffffffffffff0743, 0x16201aa04ca0517, 0x5c201fe08630c64, 0x480062004240706, 0x3320b030b43086b, 0xd109b00c6009b6, 0xd9092a07a1036e, 0x1110a1108f704a4, 0x83039707a70932, 0x36c0505056d021e, 0x4a2081a0b9c0b28, 0x58904aa08cb0a09, 0x1d60002075a025d, 0xffff06d00a930322, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x16301ab04cb0518, 0x5c301ff08640c65, 0x481062104250707, 0x3330b040b44086c, 0xd209b10c6109b7, 0xda092b07a2036f, 0x1120a1208f804a5, 0x84039807a80933, 0x36d0506056e021f, 0x4a3081b0b9d0b29, 0x58a04ab08cc0a0a, 0x1d70003075b025e, 0xffff06d10a940323, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc68082001f505ce, 0x52f04d101da01c2, 0x8cf07a9039f00e9, 0x49c08d50a2600fe, 0x6f5090301780bdd, 0x670098002fe0378, 0x8d30b740b220395, 0x727040405a40492, 0xc69082101f605cf, 0x53004d201db01c3, 0x8d007aa03a000ea, 0x49d08d60a2700ff, 0x6f6090401790bde, 0x671098102ff0379, 0x8d40b750b230396, 0x728040505a50493, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x34a07990a4a008e, 0x4490652044d027b, 0x5b0074c09bc0072, 0xab80676037c0012, 0x1ae083604ef04b6, 0x20a0b5f075e0334, 0xbb4073a093d053b, 0x54d08320a950b09, 0x34b079a0a4b008f, 0x44a0653044e027c, 0x5b1074d09bd0073, 0xab90677037d0013, 0x1af083704f004b7, 0x20b0b60075f0335, 0xbb5073b093e053c, 0x54e08330a960b0a, 0x94c005e043106bb, 0x4720027097a0648, 0xc903a705ea, 0x5520587089f07ba, 0x7ce01b400060852, 0xb4f036a048604e9, 0x594018702930bc2, 0xa7e0c6e0a44071b, 0x43206bc0018043f, 0x97b0649094d005f, 0x3a805eb04730028, 0x8a007bb000100ca, 0x7085305530588, 0x48704ea07cf01b5, 0x2940bc30b50036b, 0xa45071c05950188, 0x1904400a7f0c6f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +0000000000000100000000000000048000000000000011C0", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000300020001000000070006000500040000000A00090008000D000C000B0000 +00110010000F000E00000014001300120000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001600150000000000000000000000000000000000000000001800170000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000019000000000000001B001A0000001F001E001D001C002300220021002000000000000000000000002600250024 +000000000000000000000000000000000028002700000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000002C002B002A0029000000000000002D +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002F002E0000003300320031003000000000000000000000000000000000 +000000000000000000000035003400000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000380037 +0000000000000000000000000000000000000000000000000000000000000000003C003B003A00390000003E003D0000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0040003F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +004200410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000004300000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000004500440000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0984008A09BEFFFF09AC00C7034406580BF400740A7C0C6A0B9100EF08B10736062905E604A608C301AC01990AE607FE +FFFF032005210569FFFFFFFFFFFFFFFF0985008B09BFFFFF09AD00C8034506590BF500750A7D0C6B0B9200F008B20737 +062A05E704A708C401AD019A0AE707FFFFFF03210522056AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0BFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08E3012E060507F2041202770A640B9A0C18013E03C105A60340004E03C9068A +02C20090097C0650FFFF00D505DA0781054302300A2A0BA70BA20AF90911077108E4012F060607F3041302780A650B9B +0C19013F03C205A70341004F03CA068B02C30091097D0651FFFF00D605DB0782054402310A2B0BA8039B0AFA09120772 +051205110A890A880C230C2201E601E507A607A5021D021C0946094500D800D70673067200650064067F067E005B005A +06C406C302D802D70889088801730172086808670C550C540B180B170504050305E505E401CD01CC0A140A1302390238 +090A0909FFFF03F60347034609DD09DC076D009F009EFFFF08A700990098076E08440BFA0BF908A80AD6013701360845 +05240523031A0AD70C310C30083F083E017B017A072A072902D002CF06EB06EA000F000E066906680079007806A0069F +00DC00DB08C608C501FB01FA079C079B01BB01BA0C4D0C4C0B080B07050C050B05B305B2084B084A0AAB0AAA0A1E0A1D +002506850684039C062B065B065A00260BE00BDF06F006F902950571028A028901C808810C0202960B8107E0FFFF01C9 +056B094F094E0AFB0A380BD00247029BFFFF050F00A100A0035600DD098A00B4068D068C001D001C040605A001180117 +FFFFFFFF0A4E040707D0087401820181057707F801C007D10B7F032903280578FFFFFFFF0276027501C6FFFF09C109C0 +FFFFFFFFFFFFFFFF063B09CF09CE09CD0BAA0BA9063D063C0812054605450BAB07E20B140B1308130B39047D047C07E3 +059E032503240B3A0C1F0C1E07E1059F0184018306B606B502E602E5065706560101010006A606A505BD05BC07140713 +0B7B0B7A0B79092801C7024807BF07BE020702060C390C380A180A170455045405F105F008CE08CD095B095A09E409E3 +092D092C03E103E0045704560BD90BD80B480B4704460445057C057B02DA02D9087708760186018508D808D7060F060E +073D073CFFFF00DE0C4F0C4E006D006C07B407B300CC00CB091B091A008200810765076405C905C8FFFFFFFFFFFFFFFF +08100ABEFFFFFFFF0A0308380510081106FA0165016402AD0A810A8002FA0458034F034E09C709C60AA70AA609FA09F9 +06F1023A0BE8043B08820C03FFFF05720AFCFFFF0B82FFFFFFFFFFFFFFFF09E5029CFFFF0BF7056CFFFF00BF0C41FFFF +069B01090BD10A3900B5FFFFFFFF0A32FFFF098B05F7FFFFFFFFFFFF0357FFFFFFFFFFFFFFFFFFFFFFFFFFFF0035FFFF +0A4F055FFFFF05A10380FFFFFFFFFFFF07F901C104590875FFFFFFFFFFFF02FBFFFF0B80FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF077F009CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A19FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01E801E704E604E502120211FFFFFFFF +0AEAFFFFFFFFFFFF03B3FFFF08FF0138FFFFFFFFFFFFFFFFFFFF02BCFFFFFFFFFFFF00FA08B307460A750C70FFFF0878 +019504F104F90883017F01EB0B7C0ACA0BCE0BFB0A1A05EC011903CD08A90A0C06F2FFFF068E0C3E00B6037206660358 +00A408D9076A099E00FB08B4074702BD019604F204FA0A79018001EC0B7D0ACB0BCF0BFC0A1B05ED011A03CE08AA0A0D +06F406F3068F0C3F00B703730667035900A508DA076B099F0A1F0A760C710879FFFFFFFF05EE04F30A200C400374FFFF +04EC04EB01A501A408F008EF0B420B410A310A3005D105D003F003EF0A8B0A8A095F095E031D031C0394039304850484 +03B401EF06900BFD0B3DFFFF0B7E05EF0631063001F00B3E090001390AEBFFFF0A1502B4056505390603009A0A360BBA +099800AA099A076F03C300A60348064A03F8058D0C0E07900B72029D040A075704FD013C08FB0B4501D20AC408240894 +03060B2C055A0872017402650B8D0A4C0C2609DE06C505CA005C03FC06800A9D03F9058E0C0F07910B73029E040B0758 +04FE013D08FC0B4601D30AC50825089503070B2D055B0873017502660B8E0A4D0C2709DF06C605CB005D03FD06810A9E +0A1602B50566053A0604009B0A370BBB099900AB099B077003C400A70349064B062506240B5C0B5B0C130C1202640263 +041D041C0216021508E608E50A5F0A5E097F097E05F605F503CC03CB0963096209DB09DA091909180453045204150414 +FFFFFFFF0BEB0BEAFFFFFFFFFFFFFFFF05FE05FDFFFFFFFF00F500F408B608B500670066073F073E00050004067B067A +00D400D307A407A305B505B409440943011E011D0722072101B901B805380537049504940AC10AC00C3B0C3A08350834 +0442044108BC08BB098D098C0A680A67097709760351035003EB03EA0AA90AA8023C073207310302025506330632023D +04E10AD50AD402560303080D080C04E205A905A8025A02590754075302820281068706860061006006E006DF00220021 +06DB06DA0129012805B705B602680267082308220131013007EF07EE04DC04DB04A904A80B4A0B490BC50BC402540253 +0467046603BE03BD0967096609AF09AE09C509C403650364040F040E0AB10AB00B4E0B4D08B008AF01E401E308150814 +02EB02EA0ACF0ACE018A018905340533061306120710070F0030002F06AC06AB003C003B0698069700BE00BD0C350C34 +0B8C0B8B07AE07AD0536053509230922024501970C72FFFF0B5302B6078904FB05D804BE08DF0B83014A0C2E074403DA +032A038206E403B5014C09D006E609A40BF009ED0748060C0549056F08E70AB6024D0AF0078502B8FFFF08000637019D +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF024601980C73FFFF0B5402B7078A04FC05D904BF08E00B84014B0C2F074503DB +032B038306E503B6014D09D106E709A50BF109EE0749060D054A057008E80AB7024E0AF1078602B9066208010638019E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0556042208AD0A6001CA0C5E0766020C +01D004D904C6026104AC090D0B570B550BBC070B088605B8046C06A703C50107096006F709AA030009B806D403680168 +040808DB0A970C1A0B61FFFF0308011BFFFFFFFFFFFFFFFFFFFFFFFF0B0BFFFF043507020BAC016C09D606CA0468061C +03FE064C0342003109CB0C040AA1002908EB071D05AA0096046409130A530BA50ABA07D80232054707830519026901F3 +08A30A400B6802C4075C040005D60418FFFF03D101340BFE06FD09A60010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +039100CD046E062E09D8007608A1072F0AAC0BF203A5093B0362008C095806600B1102F402130B2405AC014E09FB0725 +084205C40C4A085B07D40A9B052704CC06AD03A9030E048A070D0A48015808DD093009BA004A049A0693033E004C0C6C +0C320A8C02510A5907AF05900094029107F607870ABC0BA004FF09530200057303E2074A0AAE02AB08900C0806100217 +039906EE037A063909D2071902D3015003BF06820C500054FFFFFFFF0474006A03C006830C510055FFFFFFFF0475006B +055C0AC60759058F062609E00B2F0B2EFFFFFFFFFFFF0708FFFFFFFFFFFFFFFF043607030BAD016D09D706CB0469061D +03FF064D0343003209CC0C050AA2002A08EC071E05AB0097046509140A540BA60ABB07D9023305480784051A026A01F4 +08A40A410B6902C5075D040105D70419FFFF03D201350BFF06FE09A70011FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0561FFFFFFFFFFFF0338FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C62FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +050E050D076307620C530C5207ED07EC04B304B2088B088A0280027F0A2D0A2C09A909A805C705C60361036009950994 +09B509B402F302F2040D040C04990498084108400BC90BC80AD10AD0052605250623062201C501C407A0079F0260025F +08CA08C900E500E40675067400690068066D066C0015001406FC06FB02C702C607240723017701760819081806080607 +04D404D30B1A0B190C250C240225022404170416022B022A090C090B09EA09E909A109A00385038403AE03AD096F096E +0A080A0709160915022102200411041001CF01CE0C070C060AF60AF504C104C0061B061A085E085D01670166089C089B +02D202D106BE06BD005100500692069100930092067D067C058C058B093809370223022207AC07AB01EA01E905080507 +047B047A0B100B0F00DF0C5C084D084C0917049E05BA03FAFFFF0BA3FFFFFFFF098709860331033003D603D50A740A73 +0B9F0B9E0274027308660865046B046A082B082A0AD90AD807930792050A050905930592023702360774077300A300A2 +0655065400AD00AC06B406B3005700560BBF0BBE013B013A057E057D0327032607E907E8012D012C082F082E04D804D7 +0430042F0B270B260C490C48026E026D0477047603F203F1099709960971097009C309C20390038F059905980A3D0A3C +0B310B30093A093901B301B2048D048C01EE01ED0B000AFF00FD00FC074F074E0AB2003903DC066405A2010209F30C0A +0AB3003A03DD066505A3010309F40C0B024901B60AE807E4FFFFFFFF07680513024A01B70AE907E5FFFFFFFF07690514 +001A032C065C03CF018B090106E80988001B032D065D03D0018C090206E90989019B0B870AEC030C01FC080704ED01BC +019C0B880AED030D01FD080804EE01BD0386063E037E007DFFFFFFFF095C000C0387063F037F007EFFFFFFFF095D000D +0B1508ED0202008507E6072B051B0BEC0B16FFFF0203FFFF07E7FFFF051CFFFF06B7047802EC0A3A06400C5A002D03E6 +06B8047902ED0A3B06410C5B002E03E70A8202FC03140482045A062702260B2A0B0D0B6A000A0982FFFFFFFF0678034C +08560B760AC70BE30991014005F2079408570B770AC80BE40992014105F307950AA3063403EC07500609021909C80BDA +0AA4063503ED0751060A021A09C90BDB0B1F0B950C450A9001F7054F07B509470B200B960C460A9101F8055007B60948 +0A23048E06CC03A1003F0C43FFFF03360315048306CD03A2FFFF0A1CFFFF0A240AF2084EFFFFFFFF051F0581FFFF0A9F +02270B2B0A8302FDFFFFFFFFFFFF0AF30884091E038D00C5096C064EFFFFFFFF045B0628038E00C6FFFFFFFFFFFFFFFF +0A7A08E901DC018F04E707F402BE0C160B0E0B6B01DD0190FFFFFFFFFFFF02BF06FF0A6BFFFFFFFF06D8091CFFFF05D2 +0679034D000B0983FFFFFFFFFFFF0700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF076CFFFFFFFF +0A660BF6FFFFFFFFFFFFFFFFFFFFFFFFFFFF09F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF049604D50B32082C0AF70A86019107DE077903180208057F08B9048800EB0BB0 +049704D60B33082D0AF80A87019207DF077A03190209058008BA048900EC0BB10905FFFFFFFFFFFFFFFFFFFFFFFF0906 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05E803ABFFFFFFFF07BC08A500B00BEE092E0A7705750437 +083004C80B4B022C0B59078E01A60241056308F102C0011509E706BF0A210BE600B10BEF05E903AC0576043807BD08A6 +0B4C022D092F0A7801A70242083104C902C101160B5A078F0A220BE7056408F2FFFFFFFF09E806C0FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF011F0BB206B904020554047E071F08B7 +0B6C01E108FD0B050243022807CA04DD029705830C2A077B0A2E00B20447089D05F9003309E10775097400450A010699 +0907016A03D306D2041E062C0BD206EC0B5D012A043D0850058501D4030A050101200BB306BA04030555047F072008B8 +0B6D01E208FE0B060244022907CB04DE029805840C2B077C0A2F00B30448089E05FA003409E20776097500460A02069A +0908016B03D406D3041F062D0BD306ED0B5E012B043E0851058601D5030B05020339069C003E003D0A8408390ABF0036 +028503B003AF0A85043C05F80BE902860ACD0ACCFFFF023BFFFF07C507C4FFFFFFFFFFFFFFFFFFFF02AE0A04FFFFFFFF +0367036602C902C809B309B20969096802DF02DE03A403A304AF04AE0A3F0A3E0C210C20088D088C04F504F407F107F0 +020502040B1C0B1B00EE00ED05BF05BE006F006E079E079D002400230940093F0063006206890688028402830BE20BE1 +01A901A8072E072D06150614083B083A0AEF0AEE07C707C602A0029F052A052903DF03DE0BC70BC609FE09FD04B104B0 +03530352097309720A6A0A6909D509D408BE08BD05CD05CC045D045C0B670B660AC30AC202350234077E077D01BF01BE +08AC08AB01220121FFFFFFFFFFFFFFFF038BFFFFFFFFFFFFFFFF03550354038C07410740FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0557042308AE0A6101CB0C5F0767020D01D104DA04C7026204AD090E0B580B56 +0BBD070C088705B9046D06A803C60108096106F809AB030109B906D503690169040908DC0A980C1B0B62FFFF0309011C +FFFFFFFFFFFFFFFFFFFFFFFF0B0CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0AD30AD201F201F1081708160B520B51070A070901570156053E053D02E102E006A206A10042004106AA06A906170616 +07B207B10080007F0C370C360044004307FD07FC05320531092709260B940B930B860B8502EF02EEFFFFFFFF01940193 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BB02BA055E055D0AB50AB409F009EF +0B3C0B3B0829082801A301A20AFE0AFD00B900B807C107C0057A0579092109200038003706470646FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00090008FFFFFFFF00D000CF09420941 +00F700F60761076000710070066F066E01710170FFFFFFFF0C150C1408C008BF0A700A6F054C054B02D602D50ADF0ADE +0A060A050910090F03C803C70A290A2808E208E10C290C28035D035C033D033C060005FF022F022E0A350A34044C044B +08FA08F9056805670ADB0ADA025C025B06CF06CE01140113071207110BD70BD606C206C1016F016E0705070403110310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF051D081D081CFFFF0C3D0C3C0562051E0A630A6205D505D408D208D10B900B8F +0058FFFFFFFFFFFFFFFFFFFF0C420059026C026B0BD50BD403E503E4FFFF082604E004DF085A08590A8F0A8E04340433 +029A02990559055801330132089A089909E600C007780777FFFF010A0A330BF80C2C009D0381078000A900A806450644 +015501540756075502B002AF059D059C04710470088F088E07D20C6305600827FFFF018E018D07D3FFFFFFFFFFFFFFFF +FFFFFFFF031F031E033B033AFFFFFFFFFFFFFFFF0BB70BB6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A9A0A99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C2DFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +039200CE046F062F09D9007708A207300AAD0BF303A6093C0363008D095906610B1202F502140B2505AD014F09FC0726 +084305C50C4B085C07D50A9C052804CD06AE03AA030F048B070E0A49015908DE093109BB004B049B0694033F004D0C6D +0C330A8D02520A5A07B005910095029207F707880ABD0BA1050009540201057403E3074B0AAF02AC08910C0906110218 +039A06EF037B063A09D3071A02D4015105FB014808C10BCAFFFF0B640B630846FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +09F5FFFFFFFFFFFF035A001604B4069DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02870BB80A6DFFFF09F106A30601015A0C6607EA07C205150439053F083C0152 +03160426059A027901B0081E0B3F0B6EFFFF0490065E0964FFFFFFFFFFFFFFFF02880BB90A6EFFFF09F206A40602015B +0C6707EB07C30516043A0540083D015303170427059B027A01B1081F0B400B6FFFFF0491065F0965FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF061807D607C80B1D0A570B70086D014603040A460BC009FF015C0854052B0541 +096A069504BA00F8039D079702F60052027D0596044302F803B106D60C56015E04BC08050B890B340C1C07FA024F04C4 +061907D707C90B1E0A580B71086E014703050A470BC10A00015D0855052C0542096B069604BB00F9039E079802F70053 +027E0597044402F903B206D70C57015F04BD08060B8A0B350C1D07FB025004C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07B808690B980B010BCC0A42025705C0 +080E0C100A71024B07DA04C204E3026F07150370061E035E073802A401D80C0006B1042002A90A55066A0978002B0312 +094A0AE20AE007CCFFFFFFFFFFFFFFFF07B9086A0B990B020BCD0A43025805C1080F0C110A72024C07DB04C304E40270 +07160371061F035F073902A501D90C0106B2042102AA0A56066B0979002C0313094B0AE30AE107CDFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +028B00AE04A00924027101230BAE0717FFFF00C109EB0C0C09A200C3099C064201600C5808480892032E041A05AE08C7 +FFFF02CD045E05DC052D04B807DC0ADCFFFF03E806AF0AE40925FFFF074202F00718028C00AF04A10C0D027201240BAF +0643FFFF00C209EC089309A300C4099D08C801610C59084905DD032F041B05AF0ADDFFFF02CE045F0AE5052E04B907DD +02F1FFFF03E906B0FFFFFFFFFFFF0743016201AA04CA051705C201FE08630C64048006200424070603320B030B43086B +00D109B00C6009B600D9092A07A1036E01110A1108F704A40083039707A70932036C0505056D021E04A2081A0B9C0B28 +058904AA08CB0A0901D60002075A025DFFFF06D00A930322FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +016301AB04CB051805C301FF08640C65048106210425070703330B040B44086C00D209B10C6109B700DA092B07A2036F +01120A1208F804A50084039807A80933036D0506056E021F04A3081B0B9D0B29058A04AB08CC0A0A01D70003075B025E +FFFF06D10A940323FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0C68082001F505CE052F04D101DA01C208CF07A9039F00E9049C08D50A2600FE06F5090301780BDD0670098002FE0378 +08D30B740B2203950727040405A404920C69082101F605CF053004D201DB01C308D007AA03A000EA049D08D60A2700FF +06F6090401790BDE0671098102FF037908D40B750B2303960728040505A50493FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +034A07990A4A008E04490652044D027B05B0074C09BC00720AB80676037C001201AE083604EF04B6020A0B5F075E0334 +0BB4073A093D053B054D08320A950B09034B079A0A4B008F044A0653044E027C05B1074D09BD00730AB90677037D0013 +01AF083704F004B7020B0B60075F03350BB5073B093E053C054E08330A960B0A094C005E043106BB04720027097A0648 +000000C903A705EA05520587089F07BA07CE01B4000608520B4F036A048604E90594018702930BC20A7E0C6E0A44071B +043206BC0018043F097B0649094D005F03A805EB0473002808A007BB000100CA0007085305530588048704EA07CF01B5 +02940BC30B50036B0A45071C05950188001904400A7F0C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //5600 bytes -enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0xd0], [ 0x100, 0x2c0, 0x7b00], [ 0x605040303020100, 0xe0d0c0b0a090807, 0x11100f0303030303, 0x1414141414141312, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x1414141414141414, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xf000e000d000c, 0x12001100010010, 0x15001400010013, 0x19001800170016, 0x1c0001001b001a, 0x1f001f001e001d, 0x1f001f001f0020, 0x1f001f001f001f, 0x1f002300220021, 0x1f001f00250024, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100260001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x29002800010027, 0x2d002c002b002a, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2e000100010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x30002f0001001f, 0x33003200310001, 0x37003600350034, 0x3a000100390038, 0x3e003d003c003b, 0x4200410040003f, 0x46004500440043, 0x4a004900480047, 0x1f004d004c004b, 0x510050004f004e, 0x52000100010001, 0x1f001f00540053, 0x1f001f001f001f, 0x55001f001f001f, 0x1000100010001, 0x1f001f001f0056, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f005700010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x59005800010001, 0x5b005a001f001f, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x5c000100010001, 0x1000100010001, 0x1f001f005e005d, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x5f001f001f001f, 0x1f006100600001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f0062, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x66006500640063, 0x1f001f001f001f, 0x67001f001f001f, 0x1f006a00690068, 0x6c001f001f006b, 0x1f001f006e006d, 0x1f006f001f001f, 0x1f001f0070001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1000100010001, 0x1007100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x72000100010001, 0x1000100010073, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1007400010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x75000100010001, 0x1f007600010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f007700010001, 0x1f001f001f001f, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x78000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x79000100010001, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x1f001f001f001f, 0x0, 0x7fffffe07fffffe, 0x420040000000000, 0xff7fffffff7fffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x501f0003ffc3, 0x0, 0xbcdf000000000020, 0xfffffffbffffd740, 0xffbfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffc03, 0xffffffffffffffff, 0xfffeffffffffffff, 0xffffffff027fffff, 0xbfff0000000001ff, 0x787ffffff00b6, 0xffffffff07ff0000, 0xffffc000feffffff, 0xffffffffffffffff, 0x9c00e1fe1fefffff, 0xffffffffffff0000, 0xffffffffffffe000, 0x3ffffffffffff, 0x43007fffffffc00, 0x1ffffcffffff, 0xffff07ff01ffffff, 0xffffffff00007eff, 0xffff03f8fff003ff, 0xefffffffffffffff, 0xfffe000fffe1dfff, 0xe3c5fdfffff99fef, 0x1003000fb080599f, 0xc36dfdfffff987ee, 0x3f00005e021987, 0xe3edfdfffffbbfee, 0x1e00000f00011bbf, 0xe3edfdfffff99fee, 0x2000fb0c0199f, 0xc3ffc718d63dc7ec, 0x811dc7, 0xe3fffdfffffddfff, 0xf27601ddf, 0xe3effdfffffddfef, 0xe000f60601ddf, 0xe7fffffffffddfff, 0xfc00000f80f05ddf, 0x2ffbfffffc7fffee, 0xc0000ff5f807f, 0x7fffffffffffffe, 0x207f, 0x3bffffaffffff7d6, 0xf000205f, 0x1, 0xfffe1ffffffffeff, 0x1ffffffffeffff0f, 0x0, 0xf97fffffffffffff, 0xffffffffffff0000, 0xffffffff3c00ffff, 0xf7ffffffffff20bf, 0xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff, 0x7ffffff, 0xffffffff0000ffff, 0x3f3fffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff9fffffffffff, 0xffffffff07fffffe, 0x1ffc7ffffffffff, 0xfffff800fffff, 0xddfff000fffff, 0xffcfffffffffffff, 0x108001ff, 0xffffffff00000000, 0x1ffffffffffffff, 0xffff07ffffffffff, 0x3fffffffffffff, 0x1ff0fff7fffffff, 0x1f3fffffff0000, 0xffff0fffffffffff, 0x3ff, 0xffffffff0fffffff, 0x1ffffe7fffffff, 0x8000008000000000, 0x7001, 0xffefffffffffffff, 0x1fef, 0xfc00f3ffffffffff, 0x3ffbfffffffff, 0x7fffffffffffff, 0x3ffffffffc00e000, 0xe7ffffffffff01ff, 0x46fde0000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff8000000000, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0x5fdfffffffffffff, 0x1fdc1fff0fcf1fdc, 0x0, 0x8002000000000000, 0x1fff0000, 0x0, 0xf3ffbd503e2ffc84, 0xffffffff000043e0, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffc0000000000000, 0x3ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc781fffffffff, 0xffff20bfffffffff, 0x80ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f, 0x800000000000, 0x0, 0x0, 0x0, 0x1f3e03fe000000e0, 0xfffffffffffffffe, 0xfffffffee07fffff, 0xf7ffffffffffffff, 0xfffeffffffffffe0, 0xffffffffffffffff, 0xffffffff00007fff, 0xffff000000000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff, 0x3fffffffffff0000, 0xc00ffff1fff, 0x8ff07fffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0xfffffffcff800000, 0xffffffffffffffff, 0xfffffffffffff9ff, 0xfffc000003eb07ff, 0xffffffffbf, 0xfffffffffffff, 0xffffffffffffffff, 0xe8fc00000000002f, 0xffff07fffffffc00, 0x1fffffff0007ffff, 0xfff7ffffffffffff, 0x7c00ffff00008000, 0x7fffffffffffff, 0xfc7fffff00003fff, 0x7fffffffffffffff, 0x3cffff38000005, 0xffff7f7f007e7e7e, 0xffff03fff7ffffff, 0xffffffffffffffff, 0x7ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff000fffffffff, 0xffffffffffff87f, 0xffffffffffffffff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7ffdffe0f8007f, 0xffffffffffffffdb, 0x3ffffffffffff, 0xfffffffffff80000, 0x3fffffffffffffff, 0xffffffffffff0000, 0xfffffffffffcffff, 0xfff0000000000ff, 0x0, 0xffdf000000000000, 0xffffffffffffffff, 0x1fffffffffffffff, 0x7fffffe00000000, 0xffffffc007fffffe, 0x7fffffffffffffff, 0x1cfcfcfc, 0xb7ffff7fffffefff, 0x3fff3fff, 0xffffffffffffffff, 0x7ffffffffffffff, 0x0, 0x1fffffffffffff, 0x0, 0x0, 0x0, 0x0, 0xffffffff1fffffff, 0x1ffff, 0xffffe000ffffffff, 0x7ffffffffff07ff, 0xffffffff3fffffff, 0x3eff0f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00003fffffff, 0xfffffffff0fffff, 0xffff00ffffffffff, 0xf7ff000fffffffff, 0x1bfbfffbffb7f7ff, 0x0, 0x7fffffffffffff, 0xff003fffff, 0x7fdffffffffffbf, 0x0, 0x91bffffffffffd3f, 0x7fffff003fffff, 0x7fffffff, 0x37ffff00000000, 0x3ffffff003fffff, 0x0, 0xc0ffffffffffffff, 0x0, 0x3ffffffeeff06f, 0x1fffffff00000000, 0x1fffffff, 0x1ffffffeff, 0x3fffffffffffff, 0x7ffff003fffff, 0x3ffff, 0x0, 0xffffffffffffffff, 0x1ff, 0x7ffffffffffff, 0x7ffffffffffff, 0xffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x31bffffffffff, 0x0, 0xffff00801fffffff, 0xffff00000000003f, 0xffff000000000003, 0x7fffff0000001f, 0xffffffffffffffff, 0x3e00000000003f, 0x1ffffffffffffff, 0x1ffffff0004, 0x7ffffffffffff, 0x47ffffffff00f0, 0xffffffffffffffff, 0x1400c01e, 0xc09ffffffffbffff, 0x3, 0xffff01ffbfffbd7f, 0x1ffffffffff, 0xe3edfdfffff99fef, 0xfe081199f, 0x0, 0x0, 0xffffffffffffffff, 0x3800007bb, 0xffffffffffffffff, 0xb3, 0x0, 0x0, 0x7f3fffffffffffff, 0x3f000000, 0x7fffffffffffffff, 0x11, 0x13fffffffffffff, 0x0, 0x7ffe7ffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0x0, 0xffffffff00000000, 0x80000000ffffffff, 0x99bfffffff6ff27f, 0x7, 0xfffffcff00000000, 0x1afcffffff, 0x7fe7ffffffffffff, 0xffffffffffff0000, 0xffff000020ffffff, 0x1ffffffffffffff, 0x7f7ffffffffffdff, 0xfffc000000000001, 0x7ffefffffcffff, 0x0, 0xb47ffffffffffb7f, 0xfffffdbf000000cb, 0x17b7fff, 0x0, 0x0, 0x0, 0x0, 0x7fffff00000000, 0xc7fffffffffdffff, 0x1, 0x1000000000000, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x0, 0xffffffffffffffff, 0x7fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffffffff0000, 0x1ffffffffffff, 0xffffffffffff, 0x7e, 0x0, 0x0, 0xffffffffffffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0xffff00007fffffff, 0x7fffffffffffffff, 0x3fffffff0000, 0xffffffffffff, 0xe0fffff80000000f, 0xffff, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff87ff, 0xffff80ff, 0x3000b00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef000000000000, 0x40007ffffffff, 0xffff00f000270000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffff, 0xffffffffffffffff, 0x1fff07ffffffffff, 0x43ff01ff, 0x0, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xf7fffffff7fffffd, 0xffdfffffffdfffff, 0xffff7fffffff7fff, 0xfffffdfffffffdff, 0xff7, 0x7e07fffffff, 0x0, 0x0, 0x0, 0xffff07dbf9ffff7f, 0x3fffffffffff, 0x8000, 0x0, 0x3f801fffffffffff, 0x4000, 0x0, 0x0, 0x0, 0x0, 0x3fffffff0000, 0xfffffffffff, 0x0, 0x0, 0x0, 0xfffffff0000, 0x0, 0x0, 0x0, 0x7fff6f7f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f, 0xffffffffffffffff, 0x88f, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x0, 0xffff000000000000, 0xffff03ffffff03ff, 0x3ff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff, 0x3ffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff3fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0003ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0001ffffffff, 0xffffffffffffffff, 0x3fffffff, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff07ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000000000000000000002000000000000000D0", +cast(immutable size_t[]) x" +000000000000010000000000000002C00000000000007B00", +cast(immutable size_t[]) x" +06050403030201000E0D0C0B0A09080711100F0303030303141414141414131214141414141414141414141414141414 +141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414 +141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000030002000100000007000600050004000B000A00090008000F000E000D000C +001200110001001000150014000100130019001800170016001C0001001B001A001F001F001E001D001F001F001F0020 +001F001F001F001F001F002300220021001F001F00250024000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010026000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010029002800010027 +002D002C002B002A00010001000100010001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001000100010001000100010001000100010001000100010001002E000100010001 +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F0030002F0001001F00330032003100010037003600350034003A000100390038 +003E003D003C003B004200410040003F0046004500440043004A004900480047001F004D004C004B00510050004F004E +0052000100010001001F001F00540053001F001F001F001F0055001F001F001F0001000100010001001F001F001F0056 +001F001F001F001F001F001F001F001F001F001F001F001F001F005700010001001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +0059005800010001005B005A001F001F0001000100010001000100010001000100010001000100010001000100010001 +0001000100010001005C0001000100010001000100010001001F001F005E005D001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F005F001F001F001F +001F006100600001001F001F001F001F001F001F001F001F001F001F001F0062001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F0066006500640063001F001F001F001F0067001F001F001F +001F006A00690068006C001F001F006B001F001F006E006D001F006F001F001F001F001F0070001F001F001F001F001F +001F001F001F001F001F001F001F001F0001000100010001000100710001000100010001000100010001000100010001 +000100010001000100720001000100010001000100010073000100010001000100010001000100010001000100010001 +000100010001000100010074000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010075000100010001001F007600010001001F001F001F001F001F001F001F001F +001F007700010001001F001F001F001F0001000100010001000100010001000100010001000100010001000100010001 +00780001000100010001000100010001000100010001000100010001000100010079000100010001001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F000000000000000007FFFFFE07FFFFFE +0420040000000000FF7FFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000501F0003FFC30000000000000000BCDF000000000020 +FFFFFFFBFFFFD740FFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC03FFFFFFFFFFFFFFFF +FFFEFFFFFFFFFFFFFFFFFFFF027FFFFFBFFF0000000001FF000787FFFFFF00B6FFFFFFFF07FF0000FFFFC000FEFFFFFF +FFFFFFFFFFFFFFFF9C00E1FE1FEFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFE0000003FFFFFFFFFFFF043007FFFFFFFC00 +00001FFFFCFFFFFFFFFF07FF01FFFFFFFFFFFFFF00007EFFFFFF03F8FFF003FFEFFFFFFFFFFFFFFFFFFE000FFFE1DFFF +E3C5FDFFFFF99FEF1003000FB080599FC36DFDFFFFF987EE003F00005E021987E3EDFDFFFFFBBFEE1E00000F00011BBF +E3EDFDFFFFF99FEE0002000FB0C0199FC3FFC718D63DC7EC0000000000811DC7E3FFFDFFFFFDDFFF0000000F27601DDF +E3EFFDFFFFFDDFEF000E000F60601DDFE7FFFFFFFFFDDFFFFC00000F80F05DDF2FFBFFFFFC7FFFEE000C0000FF5F807F +07FFFFFFFFFFFFFE000000000000207F3BFFFFAFFFFFF7D600000000F000205F0000000000000001FFFE1FFFFFFFFEFF +1FFFFFFFFEFFFF0F0000000000000000F97FFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF3C00FFFFF7FFFFFFFFFF20BF +FFFFFFFFFFFFFFFFFFFFFFFF3D7F3DFF7F3DFFFFFFFF3DFFFFFFFFFFFF7FFF3DFFFFFFFFFF3DFFFF0000000007FFFFFF +FFFFFFFF0000FFFF3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF9FFFFFFFFFFFFFFFFFFF07FFFFFE01FFC7FFFFFFFFFF000FFFFF800FFFFF000DDFFF000FFFFF +FFCFFFFFFFFFFFFF00000000108001FFFFFFFFFF0000000001FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFFFFFFFFFF +01FF0FFF7FFFFFFF001F3FFFFFFF0000FFFF0FFFFFFFFFFF00000000000003FFFFFFFFFF0FFFFFFF001FFFFE7FFFFFFF +80000080000000000000000000007001FFEFFFFFFFFFFFFF0000000000001FEFFC00F3FFFFFFFFFF0003FFBFFFFFFFFF +007FFFFFFFFFFFFF3FFFFFFFFC00E000E7FFFFFFFFFF01FF046FDE0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF001FFF8000000000FFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F5FDFFFFFFFFFFFFF1FDC1FFF0FCF1FDC +00000000000000008002000000000000000000001FFF00000000000000000000F3FFBD503E2FFC84FFFFFFFF000043E0 +00000000000001FF00000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFC0000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF000C781FFFFFFFFFFFFF20BFFFFFFFFF000080FFFFFFFFFF7F7F7F7F007FFFFFFFFFFFFF7F7F7F7F +00008000000000000000000000000000000000000000000000000000000000001F3E03FE000000E0FFFFFFFFFFFFFFFE +FFFFFFFEE07FFFFFF7FFFFFFFFFFFFFFFFFEFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFF00007FFFFFFF000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000000000001FFF3FFFFFFFFFFF000000000C00FFFF1FFF8FF07FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF +FFFFFFFCFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFC000003EB07FF000000FFFFFFFFBF000FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFE8FC00000000002FFFFF07FFFFFFFC001FFFFFFF0007FFFFFFF7FFFFFFFFFFFF7C00FFFF00008000 +007FFFFFFFFFFFFFFC7FFFFF00003FFF7FFFFFFFFFFFFFFF003CFFFF38000005FFFF7F7F007E7E7EFFFF03FFF7FFFFFF +FFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF0FFFFFFFFFFFF87F +FFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFDFFE0F8007FFFFFFFFFFFFFFFDB +0003FFFFFFFFFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFCFFFF0FFF0000000000FF +0000000000000000FFDF000000000000FFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF07FFFFFE00000000FFFFFFC007FFFFFE +7FFFFFFFFFFFFFFF000000001CFCFCFCB7FFFF7FFFFFEFFF000000003FFF3FFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFF +0000000000000000001FFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 +FFFFFFFF1FFFFFFF000000000001FFFFFFFFE000FFFFFFFF07FFFFFFFFFF07FFFFFFFFFF3FFFFFFF00000000003EFF0F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00003FFFFFFF0FFFFFFFFF0FFFFFFFFF00FFFFFFFFFFF7FF000FFFFFFFFF +1BFBFFFBFFB7F7FF0000000000000000007FFFFFFFFFFFFF000000FF003FFFFF07FDFFFFFFFFFFBF0000000000000000 +91BFFFFFFFFFFD3F007FFFFF003FFFFF000000007FFFFFFF0037FFFF0000000003FFFFFF003FFFFF0000000000000000 +C0FFFFFFFFFFFFFF0000000000000000003FFFFFFEEFF06F1FFFFFFF00000000000000001FFFFFFF0000001FFFFFFEFF +003FFFFFFFFFFFFF0007FFFF003FFFFF000000000003FFFF0000000000000000FFFFFFFFFFFFFFFF00000000000001FF +0007FFFFFFFFFFFF0007FFFFFFFFFFFF000000FFFFFFFFFF000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000031BFFFFFFFFFF0000000000000000FFFF00801FFFFFFFFFFF00000000003F +FFFF000000000003007FFFFF0000001FFFFFFFFFFFFFFFFF003E00000000003F01FFFFFFFFFFFFFF000001FFFFFF0004 +0007FFFFFFFFFFFF0047FFFFFFFF00F0FFFFFFFFFFFFFFFF000000001400C01EC09FFFFFFFFBFFFF0000000000000003 +FFFF01FFBFFFBD7F000001FFFFFFFFFFE3EDFDFFFFF99FEF0000000FE081199F00000000000000000000000000000000 +FFFFFFFFFFFFFFFF00000003800007BBFFFFFFFFFFFFFFFF00000000000000B300000000000000000000000000000000 +7F3FFFFFFFFFFFFF000000003F0000007FFFFFFFFFFFFFFF0000000000000011013FFFFFFFFFFFFF0000000000000000 +000007FFE7FFFFFF000000000000007F0000000000000000000000000000000001FFFFFFFFFFFFFF0000000000000000 +FFFFFFFF0000000080000000FFFFFFFF99BFFFFFFF6FF27F0000000000000007FFFFFCFF000000000000001AFCFFFFFF +7FE7FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF000020FFFFFF01FFFFFFFFFFFFFF7F7FFFFFFFFFFDFFFFFC000000000001 +007FFEFFFFFCFFFF0000000000000000B47FFFFFFFFFFB7FFFFFFDBF000000CB00000000017B7FFF0000000000000000 +000000000000000000000000000000000000000000000000007FFFFF00000000C7FFFFFFFFFDFFFF0000000000000001 +00010000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF0000000000000000 +FFFFFFFFFFFFFFFF00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000F +0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000001FFFFFFFFFFFF +0000FFFFFFFFFFFF000000000000007E00000000000000000000000000000000FFFFFFFFFFFFFFFF000000000000007F +0000000000000000000000000000000001FFFFFFFFFFFFFFFFFF00007FFFFFFF7FFFFFFFFFFFFFFF00003FFFFFFF0000 +0000FFFFFFFFFFFFE0FFFFF80000000F000000000000FFFF00000000000000000000000000000000FFFFFFFFFFFFFFFF +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FF00000000FFFF80FF0003000B00000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00000000003FFFFF00000000000001FF000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000006FEF00000000000000040007FFFFFFFFFFFF00F000270000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF1FFF07FFFFFFFFFF0000000043FF01FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFF +EBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFF7FFFFFFF7FFFFFDFFDFFFFFFFDFFFFFFFFF7FFFFFFF7FFF +FFFFFDFFFFFFFDFF0000000000000FF7000007E07FFFFFFF000000000000000000000000000000000000000000000000 +FFFF07DBF9FFFF7F00003FFFFFFFFFFF000000000000800000000000000000003F801FFFFFFFFFFF0000000000004000 +000000000000000000000000000000000000000000000000000000000000000000003FFFFFFF000000000FFFFFFFFFFF +00000000000000000000000000000000000000000000000000000FFFFFFF000000000000000000000000000000000000 +00000000000000007FFF6F7F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000001F +FFFFFFFFFFFFFFFF000000000000088F000000000000000000000000000000000AF7FE96FFFFFFEF5EF7F796AA96EA84 +0FFFFBEE0FFFFBFF0000000000000000FFFF000000000000FFFF03FFFFFF03FF00000000000003FF0000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFF000000003FFFFFFF00000000000000000000000000000000 +000000003FFFFFFF000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF07FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", +); //3392 bytes -enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x88], [ 0x100, 0x1a0, 0x4800], [ 0x402030202020100, 0xa09080207020605, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x20202020202020b, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1000000000000, 0x5000400030002, 0x9000800070006, 0xd000c000b000a, 0xf00000000000e, 0x10000000000000, 0x14001300120011, 0x160015, 0x17, 0x0, 0x0, 0x190018, 0x1a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b00000000, 0x1f001e001d001c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20000000000000, 0x2100000000, 0x24002300220000, 0x0, 0x2500000000, 0x28002700260000, 0x2c002b002a0029, 0x30002f002e002d, 0x3300320031, 0x37003600350034, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38, 0x0, 0x0, 0x0, 0x0, 0x3a003900000000, 0x3b000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x3d000000000000, 0x3f003e0000, 0x0, 0x4000000000, 0x0, 0x42003a0041, 0x43, 0x450044, 0x0, 0x0, 0x0, 0x0, 0x0, 0x460000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x3f8, 0x0, 0x0, 0x0, 0xbffffffffffe0000, 0xb6, 0x7ff0000, 0x10000fffff800, 0x0, 0x3d9f9fc00000, 0xffff000000020000, 0x7ff, 0x1ffc000000000, 0x200ff80000000000, 0x3eeffbc00000, 0xe000000, 0xff000000, 0xfffffffbfffffc00, 0xdc0000000000000f, 0xc00feffff, 0xd00000000000000e, 0x4000000c0080399f, 0xd00000000000000e, 0x23000000023987, 0xd00000000000000e, 0xfc00000c00003bbf, 0xd00000000000000e, 0xc00e0399f, 0xc000000000000004, 0x803dc7, 0xd00000000000001f, 0xc00603ddf, 0xd00000000000000e, 0x8000c00603ddf, 0xd80000000000000f, 0xc00803ddf, 0xe, 0xc0000ff5f8400, 0x7f2000000000000, 0x7f80, 0x1ff2000000000000, 0x7f00, 0xc2a0000003000000, 0xfffe000000000000, 0x1ffffffffeffe0df, 0x40, 0x7ffff80000000000, 0x1e3f9dc3c00000, 0x3c00bffc, 0x0, 0x0, 0xe0000000, 0x0, 0x0, 0x1c0000003c0000, 0xc0000000c0000, 0xfff0000000000000, 0x200fffff, 0xb800, 0x0, 0x20000000060, 0x0, 0xfff0fff00000000, 0x0, 0x0, 0x0, 0xf800000, 0x9fffffff7fe00000, 0xffff000000000000, 0x7fff, 0xfff000000000001f, 0xff8000000001f, 0x3ffe00000007, 0xfffc000000000, 0xfffff000000000, 0x0, 0x0, 0x39021fffff70000, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x1ffffffff0000, 0x0, 0x0, 0x0, 0x3800000000000, 0x0, 0x8000000000000000, 0x0, 0xffffffff00000000, 0xfc0000000000, 0x0, 0x6000000, 0x0, 0x0, 0x3ff7800000000000, 0xc0000000, 0x3000000000000, 0x10f800000844, 0x0, 0xfff0000000000003, 0x8003ffff0000003f, 0x3fc000000000, 0xfff80, 0xfff800000000000f, 0x2000000001, 0x7ffe0000000000, 0x3800000000003008, 0xc19d000000000000, 0x60f80000000002, 0x0, 0x0, 0x0, 0x37f800000000, 0x40000000, 0x0, 0x0, 0x0, 0xffff0000ffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000000000000000, 0x0, 0x0, 0x0, 0x100000000, 0x0, 0x7c0000000000000, 0x0, 0x0, 0x870000000000f06e, 0x0, 0x0, 0x6000000000, 0xf000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180000000000, 0xe000000000000000, 0x0, 0x1ffc0, 0x3c, 0x0, 0xff00000000000007, 0x801900000000007f, 0x7ff000000000007, 0x4, 0x1fff8000000007, 0x8000000000060, 0xfff8000000000007, 0xde01, 0x40fff00000000000, 0x2, 0x0, 0x7ff80000000, 0xd80000000000000f, 0x1f1fcc0080399f, 0x0, 0x0, 0xffe0000000000000, 0x4000007f, 0xffff000000000000, 0xf, 0x0, 0x0, 0xff3f800000000000, 0x30000001, 0xffff000000000000, 0x1, 0xfff80000000000, 0x0, 0xfffe0000000, 0x0, 0x0, 0x0, 0x7fff00000000000, 0x0, 0x0, 0x0, 0x79bf000000000000, 0xd, 0x0, 0x11fcfe0000, 0x7bf80000000007fe, 0xffe0080, 0x3fffc00, 0x0, 0xff7f800000000000, 0x0, 0x7ffefffffc0000, 0x0, 0xb47e000000000000, 0xbf, 0xfb7c00, 0x0, 0x0, 0x0, 0x0, 0x78000000000000, 0xc7f000000000000b, 0x7, 0x0, 0x0, 0x0, 0x3fff81, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f000000000000, 0x7f000000000000, 0x0, 0x0, 0x0, 0x0, 0xfffffffffffe8000, 0x780ff, 0x3001000000000, 0x0, 0x0, 0x60000000, 0x0, 0xffff3fffffffffff, 0x7f, 0x0, 0x0, 0x0, 0xf807e3e000000000, 0x3c0000000fe7, 0x0, 0x0, 0x1c, 0x0, 0x0, 0xf87fffffffffffff, 0x201fffffffffff, 0xfffef8000010, 0x0, 0x7dbf9ffff7f, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x400000000000, 0xf00000000000, 0x0, 0x0, 0x0, 0xf00000000000, 0x0, 0x0, 0x0, 0x7f0000, 0x0, 0x7f0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0]); +enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000088", +cast(immutable size_t[]) x" +000000000000010000000000000001A00000000000004800", +cast(immutable size_t[]) x" +04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202020202020202020B020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000100000000000000050004000300020009000800070006000D000C000B000A +000F00000000000E00100000000000000014001300120011000000000016001500000000000000170000000000000000 +00000000000000000000000000190018000000000000001A000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000001B00000000001F001E001D001C0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000200000000000000000002100000000 +0024002300220000000000000000000000000025000000000028002700260000002C002B002A00290030002F002E002D +000000330032003100370036003500340000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000 +003A003900000000003B0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000003C000000000000000000000000000000000000000000000000003D000000000000 +0000003F003E000000000000000000000000004000000000000000000000000000000042003A00410000000000000043 +000000000045004400000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000046000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF00000000000000000000000000000000 +0000000000000000000000000000000000000000000003F8000000000000000000000000000000000000000000000000 +BFFFFFFFFFFE000000000000000000B60000000007FF000000010000FFFFF800000000000000000000003D9F9FC00000 +FFFF00000002000000000000000007FF0001FFC000000000200FF8000000000000003EEFFBC00000000000000E000000 +00000000FF000000FFFFFFFBFFFFFC00DC0000000000000F0000000C00FEFFFFD00000000000000E4000000C0080399F +D00000000000000E0023000000023987D00000000000000EFC00000C00003BBFD00000000000000E0000000C00E0399F +C0000000000000040000000000803DC7D00000000000001F0000000C00603DDFD00000000000000E0008000C00603DDF +D80000000000000F0000000C00803DDF000000000000000E000C0000FF5F840007F20000000000000000000000007F80 +1FF20000000000000000000000007F00C2A0000003000000FFFE0000000000001FFFFFFFFEFFE0DF0000000000000040 +7FFFF80000000000001E3F9DC3C00000000000003C00BFFC0000000000000000000000000000000000000000E0000000 +00000000000000000000000000000000001C0000003C0000000C0000000C0000FFF000000000000000000000200FFFFF +000000000000B8000000000000000000000002000000006000000000000000000FFF0FFF000000000000000000000000 +00000000000000000000000000000000000000000F8000009FFFFFFF7FE00000FFFF0000000000000000000000007FFF +FFF000000000001F000FF8000000001F00003FFE00000007000FFFC00000000000FFFFF0000000000000000000000000 +0000000000000000039021FFFFF70000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF +0000000000000000000000000000000000000000000000000001FFFFFFFF000000000000000000000000000000000000 +00000000000000000003800000000000000000000000000080000000000000000000000000000000FFFFFFFF00000000 +0000FC000000000000000000000000000000000006000000000000000000000000000000000000003FF7800000000000 +00000000C00000000003000000000000000010F8000008440000000000000000FFF00000000000038003FFFF0000003F +00003FC00000000000000000000FFF80FFF800000000000F0000002000000001007FFE00000000003800000000003008 +C19D0000000000000060F80000000002000000000000000000000000000000000000000000000000000037F800000000 +00000000400000000000000000000000000000000000000000000000000000000000FFFF0000FFFF0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000 +0000000000000000000000000000000000000000000000000000000100000000000000000000000007C0000000000000 +00000000000000000000000000000000870000000000F06E000000000000000000000000000000000000006000000000 +000000F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000180000000000E0000000000000000000000000000000000000000001FFC0000000000000003C0000000000000000 +FF00000000000007801900000000007F07FF0000000000070000000000000004001FFF80000000070008000000000060 +FFF8000000000007000000000000DE0140FFF0000000000000000000000000020000000000000000000007FF80000000 +D80000000000000F001F1FCC0080399F00000000000000000000000000000000FFE0000000000000000000004000007F +FFFF000000000000000000000000000F00000000000000000000000000000000FF3F8000000000000000000030000001 +FFFF000000000000000000000000000100FFF80000000000000000000000000000000FFFE00000000000000000000000 +0000000000000000000000000000000007FFF00000000000000000000000000000000000000000000000000000000000 +79BF000000000000000000000000000D000000000000000000000011FCFE00007BF80000000007FE000000000FFE0080 +0000000003FFFC000000000000000000FF7F8000000000000000000000000000007FFEFFFFFC00000000000000000000 +B47E00000000000000000000000000BF0000000000FB7C00000000000000000000000000000000000000000000000000 +00000000000000000078000000000000C7F000000000000B000000000000000700000000000000000000000000000000 +000000000000000000000000003FFF810000000000000000000000000000000000000000000000000000000000000000 +0000000000000000001F000000000000007F000000000000000000000000000000000000000000000000000000000000 +0000000000000000FFFFFFFFFFFE800000000000000780FF000300100000000000000000000000000000000000000000 +00000000600000000000000000000000FFFF3FFFFFFFFFFF000000000000007F00000000000000000000000000000000 +0000000000000000F807E3E00000000000003C0000000FE700000000000000000000000000000000000000000000001C +00000000000000000000000000000000F87FFFFFFFFFFFFF00201FFFFFFFFFFF0000FFFEF80000100000000000000000 +000007DBF9FFFF7F00000000000000000000000000008000000000000000000000000000000000000000000000000000 +00004000000000000000F000000000000000000000000000000000000000000000000000000000000000F00000000000 +00000000000000000000000000000000000000000000000000000000007F0000000000000000000000000000000007F0 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //2848 bytes -enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)([ 0x0, 0x20, 0xd0], [ 0x100, 0x2c0, 0x2500], [ 0x402030202020100, 0x908020207020605, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000200010000, 0x2000200020002, 0x2000200020002, 0x5000200040003, 0x7000600020002, 0x9000800060006, 0x6000b0006000a, 0x2000d000c000c, 0x20002000e0005, 0x2000f00020002, 0x2000200020002, 0x11000200100002, 0x1300120002000e, 0xc00140002, 0x2000200020015, 0x2000200020002, 0x19001800170016, 0x2000200020002, 0x20002001b001a, 0x1d001c00020002, 0x2000200020002, 0x2000200020002, 0x20002001e0002, 0x2000200020002, 0x2000020002001f, 0x2000200220021, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200060023, 0x250017000c0024, 0x400020002000c, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000e00020002, 0x27002600020002, 0x2a002900280002, 0x2000200230002, 0x2000200020002, 0x2e002d002c002b, 0x3200310030002f, 0x2000000330002, 0x36003500020034, 0x39003800040037, 0x2000200040002, 0x20002000c000c, 0x2003a0005000c, 0x2000c003b0002, 0x2000200020002, 0x23000c0002003c, 0x3d000c00020002, 0x2000200020002, 0x2000200020002, 0x200020002003e, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2003f00050003, 0x2000200020002, 0x2000200400002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2004200410002, 0x2000200020002, 0x43000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000500020002, 0x2000200040002, 0x2000200040002, 0x2000200020002, 0x2000c00440002, 0x2000200020002, 0x2004700460045, 0x2000200020002, 0x2004800020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x4000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x2000200020002, 0x3ff000000000000, 0x0, 0x720c000000000000, 0x0, 0x0, 0x0, 0x0, 0x3ff00000000, 0x0, 0x3ff000000000000, 0x0, 0x3ff, 0x0, 0xffc000000000, 0x0, 0x3f0ffc000000000, 0x0, 0xfcffc000000000, 0x0, 0x7ffc000000000, 0x0, 0x7f00ffc000000000, 0x0, 0x1ffffc07f000000, 0x0, 0x3ff0000, 0xfffff00000000, 0x0, 0x3ff0000, 0x0, 0x0, 0x1ffffe0000000000, 0x0, 0x1c00000000000, 0x0, 0x3ff03ff00000000, 0x0, 0xffc0, 0x0, 0x7ff0000, 0x3ff03ff, 0x0, 0x0, 0x3ff03ff, 0x0, 0x3f1000000000000, 0x3ff, 0x0, 0x0, 0xffffffffffff0000, 0x3e7, 0x0, 0x0, 0xffffffff00000000, 0xfffffff, 0xfffffc0000000000, 0x0, 0xffc0000000000000, 0xfffff, 0x0, 0x0, 0x2000000000000000, 0x70003fe00000080, 0x0, 0x3c0000, 0x0, 0x3ff00000000, 0xfffeff00, 0xfffe0000000003ff, 0x0, 0x3ff00000000, 0x0, 0x3f000000000000, 0x0, 0x0, 0x3ff000003ff0000, 0xfffffffffff80, 0x1ffffffffffffff, 0xc00, 0x0, 0x0, 0xffffffe00000000, 0xf00000000, 0x402, 0x0, 0x3e0000, 0x0, 0xfe000000ff000000, 0xff8000000000, 0xf800000000000000, 0xfc00000, 0x0, 0x3000000000000000, 0xfffffffffffcffff, 0x0, 0x60000000000001ff, 0xe0000000, 0xf80000000000, 0x0, 0xff000000ff000000, 0xfe0000000000, 0x0, 0x0, 0xfc00000000000000, 0x0, 0x7fffffff00000000, 0x7fe0000000, 0x1e0000, 0x0, 0xfe0, 0x0, 0xfffffffc0000, 0xffc0000000000000, 0x0, 0x0, 0x1ffffe03ff0000, 0xfff000000000000, 0x0, 0x0, 0x7ffff00000000, 0x0, 0x1fffffff0000, 0x0, 0x1fffff, 0xffffffffffffffff, 0x7fffffffffff, 0x0, 0x3fbff0000, 0x7fffff, 0x0, 0x0, 0xfffff000fffff, 0x0, 0x1ffffff00000000, 0x0, 0xffffffffffffc000, 0x0, 0xff80, 0x0, 0xfffe000000000000, 0x1eefffffffffff, 0x0, 0x3fffbffffffffffe, 0x0, 0x1fff, 0x0, 0x0, 0x3ff000000000000]); +enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(cast(immutable size_t[]) x" +0000000000000000000000000000002000000000000000D0", +cast(immutable size_t[]) x" +000000000000010000000000000002C00000000000002500", +cast(immutable size_t[]) x" +040203020202010009080202070206050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000002000200010000000200020002000200020002000200020005000200040003 +000700060002000200090008000600060006000B0006000A0002000D000C000C00020002000E00050002000F00020002 +00020002000200020011000200100002001300120002000E0000000C0014000200020002000200150002000200020002 +0019001800170016000200020002000200020002001B001A001D001C0002000200020002000200020002000200020002 +00020002001E00020002000200020002002000020002001F000200020022002100020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200060023 +00250017000C0024000400020002000C0002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +0002000200020002000200020002000200020002000200020002000E000200020027002600020002002A002900280002 +00020002002300020002000200020002002E002D002C002B003200310030002F00020000003300020036003500020034 +0039003800040037000200020004000200020002000C000C0002003A0005000C0002000C003B00020002000200020002 +0023000C0002003C003D000C0002000200020002000200020002000200020002000200020002003E0002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002003F00050003 +000200020002000200020002004000020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020042004100020002000200020002004300020002000200020002000200020002000200020002 +000200020002000200020002000200020002000500020002000200020004000200020002000400020002000200020002 +0002000C0044000200020002000200020002004700460045000200020002000200020048000200020002000200020002 +000200020002000200020002000200020002000200020002000400020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000203FF0000000000000000000000000000 +720C0000000000000000000000000000000000000000000000000000000000000000000000000000000003FF00000000 +000000000000000003FF000000000000000000000000000000000000000003FF00000000000000000000FFC000000000 +000000000000000003F0FFC000000000000000000000000000FCFFC00000000000000000000000000007FFC000000000 +00000000000000007F00FFC000000000000000000000000001FFFFC07F00000000000000000000000000000003FF0000 +000FFFFF0000000000000000000000000000000003FF0000000000000000000000000000000000001FFFFE0000000000 +00000000000000000001C00000000000000000000000000003FF03FF000000000000000000000000000000000000FFC0 +00000000000000000000000007FF00000000000003FF03FF000000000000000000000000000000000000000003FF03FF +000000000000000003F100000000000000000000000003FF00000000000000000000000000000000FFFFFFFFFFFF0000 +00000000000003E700000000000000000000000000000000FFFFFFFF00000000000000000FFFFFFFFFFFFC0000000000 +0000000000000000FFC000000000000000000000000FFFFF000000000000000000000000000000002000000000000000 +070003FE00000080000000000000000000000000003C00000000000000000000000003FF0000000000000000FFFEFF00 +FFFE0000000003FF0000000000000000000003FF000000000000000000000000003F0000000000000000000000000000 +000000000000000003FF000003FF0000000FFFFFFFFFFF8001FFFFFFFFFFFFFF0000000000000C000000000000000000 +00000000000000000FFFFFFE000000000000000F000000000000000000000402000000000000000000000000003E0000 +0000000000000000FE000000FF0000000000FF8000000000F800000000000000000000000FC000000000000000000000 +3000000000000000FFFFFFFFFFFCFFFF000000000000000060000000000001FF00000000E00000000000F80000000000 +0000000000000000FF000000FF0000000000FE000000000000000000000000000000000000000000FC00000000000000 +00000000000000007FFFFFFF000000000000007FE000000000000000001E000000000000000000000000000000000FE0 +00000000000000000000FFFFFFFC0000FFC000000000000000000000000000000000000000000000001FFFFE03FF0000 +0FFF000000000000000000000000000000000000000000000007FFFF00000000000000000000000000001FFFFFFF0000 +000000000000000000000000001FFFFFFFFFFFFFFFFFFFFF00007FFFFFFFFFFF000000000000000000000003FBFF0000 +00000000007FFFFF00000000000000000000000000000000000FFFFF000FFFFF000000000000000001FFFFFF00000000 +0000000000000000FFFFFFFFFFFFC0000000000000000000000000000000FF800000000000000000FFFE000000000000 +001EEFFFFFFFFFFF00000000000000003FFFBFFFFFFFFFFE00000000000000000000000000001FFF0000000000000000 +000000000000000003FF000000000000", +); //3360 bytes -enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x80], [ 0x100, 0x180, 0x4900], [ 0x402030202020100, 0xa09080207020605, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100010000, 0x5000400030001, 0x1000800070006, 0xc000b000a0009, 0xe00010001000d, 0x1100100001000f, 0x15001400130012, 0x1000100010016, 0x18000100010017, 0x19000100010001, 0x10001001a0001, 0x1001d001c001b, 0x100010001001e, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x100200001001f, 0x24002300220021, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x27002600250001, 0x29000100280001, 0x10001002a0001, 0x2e002d002c002b, 0x30002f00010001, 0x1003300320031, 0x37003600350034, 0x3b003a00390038, 0x3e003d0001003c, 0x1000100010001, 0x100010001003f, 0x1000100010001, 0x40000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x42004100010001, 0x44004300010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010045, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1004600010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100470001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x8c00f7ee00000000, 0x28000000b8000001, 0x88c0088200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4000000000000000, 0x80, 0x0, 0x0, 0xfc000000, 0x4000000000000600, 0x18000000000049, 0xe8003600, 0x3c0000000000, 0x0, 0x100000, 0x3fff, 0x0, 0x0, 0x380000000000000, 0x7fff000000000000, 0x40000000, 0x0, 0x0, 0x0, 0x1003000000000, 0x0, 0x2000000000000000, 0x0, 0x40000000000000, 0x0, 0x1000000000000, 0x0, 0x80000000000000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x10000000000000, 0x0, 0xc008000, 0x0, 0x0, 0x3c0000000017fff0, 0x0, 0x20, 0x61f0000, 0x0, 0xfc00, 0x0, 0x800000000000000, 0x0, 0x1ff00000000, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x400000000000, 0x18000000, 0x380000000000, 0x60000000000000, 0x0, 0x0, 0x7700000, 0x7ff, 0x0, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0xc0000000, 0x0, 0x3f7f00000000, 0x0, 0x0, 0x60000001fc000000, 0x0, 0xf000000000000000, 0xf800000000000000, 0xc000000000000000, 0x0, 0x800ff, 0xffff00ffffff0000, 0x600000007ffbffef, 0x6000, 0x0, 0x60000000f00, 0x0, 0x0, 0x0, 0x0, 0x3fff0000000000, 0x0, 0xffc000000060, 0x0, 0x0, 0x1fffff8, 0x300000000f000000, 0x0, 0x0, 0x0, 0xde00000000000000, 0x0, 0x1000000000000, 0x0, 0x0, 0xffff7fffffffffff, 0x3ffcffff, 0x0, 0x0, 0x20010000fff3ff0e, 0x0, 0x100000000, 0x800000000000000, 0x0, 0x0, 0x0, 0xc000000000000000, 0xe000, 0x4008000000000000, 0x0, 0xfc000000000000, 0x0, 0xf0000000000000, 0x0, 0x170000000000c000, 0xc00000000000, 0x80000000, 0x0, 0xc0003ffe, 0x0, 0xf0000000, 0x0, 0x30000c0000000, 0x0, 0x0, 0x0, 0x80000000000, 0xc000000000000000, 0x0, 0x0, 0x0, 0xffff000003ff0000, 0xd0bfff7ffff, 0x0, 0x0, 0xb80000018c00f7ee, 0x3fa8000000, 0x0, 0x0, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80000000, 0x10000, 0x0, 0x800000000000, 0x0, 0x0, 0x0, 0x800000, 0x0, 0x0, 0x8000000080000000, 0x0, 0x0, 0x0, 0x0, 0x8000000001ff0000, 0x0, 0x7f000000000000, 0xfe00000000000000, 0x0, 0x1e000000, 0x0, 0x0, 0x0, 0x200000000000, 0x0, 0x0, 0x3e00000, 0x3c0, 0x0, 0x0, 0x3f80, 0xd800000000000000, 0x3, 0x0, 0x3000000000000f, 0x0, 0xe80021e0, 0x3f00000000000000, 0x0, 0x20000000000, 0x0, 0x0, 0x2c00f800, 0x0, 0x40, 0x0, 0x0, 0x0, 0xfffffe, 0x0, 0x1fff0000000e, 0x200000000000000, 0x0, 0x7000000000000000, 0x0, 0x0, 0x0, 0x800000000000000, 0x0, 0x0, 0x0, 0x0, 0x70, 0x0, 0x400000000, 0x8000000000000000, 0x7f, 0x7dc000000, 0x0, 0x3ff, 0x0, 0x0, 0x0, 0x0, 0x300000000003e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x180000000000000, 0x0, 0xfff8, 0x0, 0x8000000000000000, 0x0, 0x1f000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6000000000000, 0x0, 0xc00000000000, 0x0, 0x20000000000000, 0xf80000000000000, 0x10, 0x0, 0x0, 0x0, 0x0, 0x7800000, 0x0, 0x0, 0x0, 0x0, 0x400000000, 0x0, 0x0, 0x80000000, 0x0, 0x0, 0x0, 0xf80, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0]); +enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000080", +cast(immutable size_t[]) x" +000000000000010000000000000001800000000000004900", +cast(immutable size_t[]) x" +04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000200010001000000050004000300010001000800070006000C000B000A0009 +000E00010001000D001100100001000F0015001400130012000100010001001600180001000100170019000100010001 +00010001001A00010001001D001C001B000100010001001E000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100200001001F00240023002200210001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010027002600250001 +002900010028000100010001002A0001002E002D002C002B0030002F0001000100010033003200310037003600350034 +003B003A00390038003E003D0001003C0001000100010001000100010001003F00010001000100010040000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +004200410001000100440043000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100450001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001004600010001000100010001000100010001000100010001000100010001 +000100010047000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100018C00F7EE0000000028000000B800000188C00882000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000 +00000000000000800000000000000000000000000000000000000000FC00000040000000000006000018000000000049 +00000000E800360000003C0000000000000000000000000000000000001000000000000000003FFF0000000000000000 +000000000000000003800000000000007FFF000000000000000000004000000000000000000000000000000000000000 +000000000000000000010030000000000000000000000000200000000000000000000000000000000040000000000000 +000000000000000000010000000000000000000000000000008000000000000000000000000000100000000000000000 +00000000000000000000000000000000000000000000000000100000000000000000000000000000000000000C008000 +000000000000000000000000000000003C0000000017FFF00000000000000000000000000000002000000000061F0000 +0000000000000000000000000000FC00000000000000000008000000000000000000000000000000000001FF00000000 +000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000 +000000000000000000004000000000000000000018000000000038000000000000600000000000000000000000000000 +0000000000000000000000000770000000000000000007FF000000000000000000000000000000000000000000000000 +000000000000000000000000000000300000000000000000000000000000000000000000C00000000000000000000000 +00003F7F000000000000000000000000000000000000000060000001FC0000000000000000000000F000000000000000 +F800000000000000C000000000000000000000000000000000000000000800FFFFFF00FFFFFF0000600000007FFBFFEF +000000000000600000000000000000000000060000000F00000000000000000000000000000000000000000000000000 +0000000000000000003FFF000000000000000000000000000000FFC00000006000000000000000000000000000000000 +0000000001FFFFF8300000000F000000000000000000000000000000000000000000000000000000DE00000000000000 +0000000000000000000100000000000000000000000000000000000000000000FFFF7FFFFFFFFFFF000000003FFCFFFF +0000000000000000000000000000000020010000FFF3FF0E000000000000000000000001000000000800000000000000 +000000000000000000000000000000000000000000000000C000000000000000000000000000E0004008000000000000 +000000000000000000FC000000000000000000000000000000F00000000000000000000000000000170000000000C000 +0000C000000000000000000080000000000000000000000000000000C0003FFE000000000000000000000000F0000000 +000000000000000000030000C00000000000000000000000000000000000000000000000000000000000080000000000 +C000000000000000000000000000000000000000000000000000000000000000FFFF000003FF000000000D0BFFF7FFFF +00000000000000000000000000000000B80000018C00F7EE0000003FA800000000000000000000000000000000000000 +000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000008000000000000000000100000000000000000000000080000000000000000000000000000000000000000000 +000000000000000000000000008000000000000000000000000000000000000080000000800000000000000000000000 +0000000000000000000000000000000000000000000000008000000001FF00000000000000000000007F000000000000 +FE000000000000000000000000000000000000001E000000000000000000000000000000000000000000000000000000 +0000200000000000000000000000000000000000000000000000000003E0000000000000000003C00000000000000000 +00000000000000000000000000003F80D80000000000000000000000000000030000000000000000003000000000000F +000000000000000000000000E80021E03F00000000000000000000000000000000000200000000000000000000000000 +0000000000000000000000002C00F8000000000000000000000000000000004000000000000000000000000000000000 +00000000000000000000000000FFFFFE000000000000000000001FFF0000000E02000000000000000000000000000000 +700000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000007000000000000000000000000400000000 +8000000000000000000000000000007F00000007DC000000000000000000000000000000000003FF0000000000000000 +000000000000000000000000000000000000000000000000000300000000003E00000000000000000000000000000000 +00000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000FFF8 +000000000000000080000000000000000000000000000000001F00000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000600000000000000000000000000000000C00000000000 +000000000000000000200000000000000F80000000000000000000000000001000000000000000000000000000000000 +000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000 +000000000000000000000004000000000000000000000000000000000000000000000000800000000000000000000000 +000000000000000000000000000000000000000000000F800000000000000000000000000000000000000000C0000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +); //3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0x80], [ 0x100, 0x180, 0x4b00], [ 0x503040303020100, 0xa09080307030306, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x303030303030303, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xf000e000d000c, 0x11000100010010, 0x13001200010001, 0x15000100140001, 0x16000100010001, 0x1a001900180017, 0x1c00190019001b, 0x1e0019001d0019, 0x2100200001001f, 0x19002400230022, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100250001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x27000100010026, 0x2a002900010028, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2b000100010001, 0x2e002d002c0001, 0x10001002f0001, 0x1000100010001, 0x1003100010030, 0x1000100010001, 0x1000100010001, 0xe000100010001, 0x1000100010001, 0x32000100010001, 0x1000100010001, 0x1000100010001, 0x33000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010034, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x35000100010001, 0x39003800370036, 0x3b003a00010001, 0x1003c00190019, 0x1000100010001, 0x1003e003d0001, 0x1000100010001, 0x1000100010001, 0x100410040003f, 0x19004400430042, 0x46004500190019, 0x49004800190047, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x7000081000000000, 0x5000000140000000, 0x113d37c00000000, 0x80000000800000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffafe0fffc003c, 0x0, 0x20000000000000, 0x30, 0x40000000000000, 0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0xe000, 0x0, 0xc9c0, 0x0, 0x0, 0x6000020040000000, 0x0, 0x0, 0x0, 0xc040000000000000, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x0, 0xc0c000000000000, 0x0, 0x0, 0x0, 0x2000000000000, 0x0, 0x1000000000000, 0x0, 0x7f8000000000000, 0x0, 0x8000000000000000, 0x0, 0x0, 0x0, 0x200000000008000, 0x0, 0x0, 0x8000000000000000, 0x0, 0x0, 0x0, 0x1500000fce8000e, 0x0, 0xc000000000000000, 0x1e0dfbf, 0x0, 0x0, 0xc0000000, 0x0, 0x0, 0x0, 0x3ff0000, 0x0, 0x0, 0x200000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000, 0x0, 0x1, 0x0, 0xffffffffc0000000, 0x0, 0x1ff007fe00000000, 0x0, 0x0, 0x0, 0x0, 0xa000000000000000, 0x6000e000e000e003, 0x0, 0x1c00000000040010, 0xffffffff00001c00, 0x1, 0xc0042afc1d0037b, 0xbc1f, 0xffffffffffff0c00, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffff9fffffff0ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fffffffff, 0x7ff, 0xfffffffff0000000, 0x3ffffffffff, 0xffffffffffffffff, 0xffffffffff, 0xfffffffffff00000, 0xffff003fffffff9f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffe000007, 0xcffffffff0ffffff, 0xffffffffffffffff, 0xffcfffffffffffff, 0xffffffffffbfffff, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x7e000000000, 0x0, 0x30000, 0xfffffffffbffffff, 0xfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0000003fffff, 0xc0c00001000c0010, 0x0, 0x18000000, 0x0, 0x0, 0x0, 0xffc30000, 0x800fffffffff, 0xfffffc007fffffff, 0xffffffff000100ff, 0x1fffffffffc00, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0xffffffffffff0000, 0x7f, 0x3007fffff, 0x0, 0x600, 0x0, 0x3c00f0000000000, 0x0, 0x0, 0x0, 0x0, 0x380000000000000, 0x0, 0x0, 0x0, 0xc0008000000, 0x0, 0x0, 0x20000000000, 0x0, 0xfffc000000000000, 0x7, 0x0, 0xffff, 0x0, 0xf000000000008000, 0x0, 0x27400000000, 0x0, 0x0, 0x4000000070000810, 0x50000001, 0x0, 0x30007f7f00000000, 0xff80000000000000, 0xfe00000000000000, 0x11fff73ff, 0x1fffffffffff0000, 0x0, 0x180000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x100, 0x0, 0x0, 0x0, 0x3ffffffe00000, 0xf000000000000000, 0x20, 0x0, 0x0, 0x0, 0x0, 0x10000000, 0x0, 0x0, 0xffffffffffff0000, 0xffffffffffffffff, 0xf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffffff, 0xfffffe7fffffffff, 0x1c1fffffffff, 0xffffc3fffffff018, 0x7ffffffffff, 0xffffffffffffffff, 0x23, 0x0, 0x0, 0xffffffffffffffff, 0x7fffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x800000008000002, 0x20000000200000, 0x800000008000, 0x20000000200, 0x8, 0x780000000000000, 0xffdfe00000000000, 0x6f, 0x0, 0x0, 0x8000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8000000000000000, 0x0, 0x0, 0x1100000000000, 0x0, 0x400000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000000000000, 0xffff0fffffffffff, 0xffffffffffffffff, 0xfffe7fff000fffff, 0x3ffffffffefffe, 0xffffffffffffe000, 0xffffffffffffffff, 0x3fffffffffff, 0xffffffc000000000, 0xfffffffffff0007, 0x3f000301ff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff1ffff0ffffff, 0xffffffffffffffff, 0xf87fffffffffffff, 0xffffffffffffffff, 0x10fff03ffffff, 0xffffffffffff0fff, 0xffffffff03ff00ff, 0x33fffffff00ff, 0x0, 0xffffffffffffffff, 0x1fff3fff000fffff, 0xbfffffffffff01ff, 0x1ff01ff0fffc03f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffff7ffff, 0x7ff, 0x0, 0x0, 0x0, 0x0]); +enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000080", +cast(immutable size_t[]) x" +000000000000010000000000000001800000000000004B00", +cast(immutable size_t[]) x" +05030403030201000A090803070303060303030303030303030303030303030303030303030303030303030303030303 +030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 +030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000030002000100000007000600050004000B000A00090008000F000E000D000C +0011000100010010001300120001000100150001001400010016000100010001001A001900180017001C00190019001B +001E0019001D0019002100200001001F0019002400230022000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010025000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010027000100010026 +002A00290001002800010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +002B000100010001002E002D002C000100010001002F0001000100010001000100010031000100300001000100010001 +0001000100010001000E0001000100010001000100010001003200010001000100010001000100010001000100010001 +003300010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100340001000100010001000100010001000100010001000100010035000100010001 +0039003800370036003B003A000100010001003C0019001900010001000100010001003E003D00010001000100010001 +0001000100010001000100410040003F0019004400430042004600450019001900490048001900470001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001700008100000000050000001400000000113D37C000000000080000000800000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000FFFFAFE0FFFC003C0000000000000000002000000000000000000000000000300040000000000000 +000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000 +000000000000E0000000000000000000000000000000C9C0000000000000000000000000000000006000020040000000 +000000000000000000000000000000000000000000000000C04000000000000000000000000000000000000000000000 +000000000000010000000000000000000000000000000000000000000000000000000000000000000C0C000000000000 +000000000000000000000000000000000000000000000000000200000000000000000000000000000001000000000000 +000000000000000007F80000000000000000000000000000800000000000000000000000000000000000000000000000 +000000000000000002000000000080000000000000000000000000000000000080000000000000000000000000000000 +0000000000000000000000000000000001500000FCE8000E0000000000000000C0000000000000000000000001E0DFBF +0000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000 +0000000003FF000000000000000000000000000000000000000020000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000001 +0000000000000000FFFFFFFFC000000000000000000000001FF007FE0000000000000000000000000000000000000000 +00000000000000000000000000000000A0000000000000006000E000E000E00300000000000000001C00000000040010 +FFFFFFFF00001C0000000000000000010C0042AFC1D0037B000000000000BC1FFFFFFFFFFFFF0C00FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFF0FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000007FFFFFFFFF00000000000007FFFFFFFFFFF0000000000003FFFFFFFFFF +FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFF00000FFFF003FFFFFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFE000007CFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000000007E00000000000000000000000000000000000030000 +FFFFFFFFFBFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000003FFFFF +C0C00001000C001000000000000000000000000018000000000000000000000000000000000000000000000000000000 +00000000FFC300000000800FFFFFFFFFFFFFFC007FFFFFFFFFFFFFFF000100FF0001FFFFFFFFFC00FFFFFFFFFFFFFFFF +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000 +FFFFFFFFFFFF0000000000000000007F00000003007FFFFF000000000000000000000000000006000000000000000000 +03C00F000000000000000000000000000000000000000000000000000000000000000000000000000380000000000000 +00000000000000000000000000000000000000000000000000000C000800000000000000000000000000000000000000 +00000200000000000000000000000000FFFC00000000000000000000000000070000000000000000000000000000FFFF +0000000000000000F0000000000080000000000000000000000002740000000000000000000000000000000000000000 +40000000700008100000000050000001000000000000000030007F7F00000000FF80000000000000FE00000000000000 +000000011FFF73FF1FFFFFFFFFFF00000000000000000000018000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000 +00000000000000000003FFFFFFE00000F000000000000000000000000000002000000000000000000000000000000000 +00000000000000000000000000000000000000001000000000000000000000000000000000000000FFFFFFFFFFFF0000 +FFFFFFFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFF +FFFFFE7FFFFFFFFF00001C1FFFFFFFFFFFFFC3FFFFFFF018000007FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000023 +00000000000000000000000000000000FFFFFFFFFFFFFFFF00000000007FFFFF00000000000000000000000000000000 +000000000000000000000000000000000000000000000000080000000800000200200000002000000000800000008000 +000002000000020000000000000000080780000000000000FFDFE00000000000000000000000006F0000000000000000 +000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000 +000000000000000080000000000000000000000000000000000000000000000000011000000000000000000000000000 +000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000003000000000000FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFF000FFFFF003FFFFFFFFEFFFE +FFFFFFFFFFFFE000FFFFFFFFFFFFFFFF00003FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFF00070000003F000301FF +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF1FFFF0FFFFFF +FFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00010FFF03FFFFFFFFFFFFFFFFFF0FFFFFFFFFFF03FF00FF +00033FFFFFFF00FF0000000000000000FFFFFFFFFFFFFFFF1FFF3FFF000FFFFFBFFFFFFFFFFF01FF01FF01FF0FFFC03F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFF00000000000007FF00000000000000000000000000000000 +00000000000000000000000000000000", +); //6080 bytes -enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)([ 0x0, 0x20, 0xd0], [ 0x100, 0x2c0, 0x8a00], [ 0x504030202020100, 0xd0c0b0a09080706, 0x100f0e0202020202, 0x1313131313131211, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131313, 0x1313131313131314, 0x1313131313131313, 0x1313131313131313, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2000100010000, 0x5000400030001, 0x9000800070006, 0xd000c000b000a, 0x10000f0001000e, 0x12001100010001, 0x16001500140013, 0x18000100010017, 0x10001001a0019, 0x100010001001b, 0x1c000100010001, 0x20001f001e001d, 0x1002300220021, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x26002500010024, 0x2a002900280027, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x2b000100010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2e002d0001002c, 0x310030002f0001, 0x35003400330032, 0x38000100370036, 0x3c003b003a0039, 0x40003f003e003d, 0x44004300420041, 0x48004700460045, 0x4c004b004a0049, 0x50004f004e004d, 0x51000100010001, 0x2c002c00530052, 0x2c002c002c002c, 0x54002c002c002c, 0x1000100010001, 0x2c002c002c0055, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c005600010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x58005700010001, 0x5a0059002c002c, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x5b000100010001, 0x1000100010001, 0x2c002c005d005c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x5e002c002c002c, 0x2c0060005f0001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c0061, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x62002c002c002c, 0x66006500640063, 0x6a006900680067, 0x2c006b00010001, 0x6c002c002c002c, 0x2c006f006e006d, 0x71002c002c0070, 0x2c002c00730072, 0x2c007600750074, 0x1007900780077, 0x7b007a00010001, 0x7e007d0001007c, 0x2c002c002c002c, 0x1000100010001, 0x1007f00010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x80000100010001, 0x1000100010081, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1008200010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x83000100010001, 0x2c008400010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c008500010001, 0x2c002c002c002c, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x86000100010001, 0x1000100010001, 0x1000100010001, 0x1000100010001, 0x87000100010001, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c0088002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0x2c002c002c002c, 0xffffffff00000000, 0x7fffffffffffffff, 0xffffdfff00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfcffffffffffffff, 0xfffffffbffffd7f0, 0xffffffffffffffff, 0xfffeffffffffffff, 0xfffffffffe7fffff, 0xfffffffffffee7ff, 0x1f87ffffff00ff, 0xffffffffefffffc0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffdfffffff, 0xffffffffffff3fff, 0xffffffffffffe7ff, 0x3ffffffffffff, 0xe7ffffffffffffff, 0x7fff3fffffffffff, 0xffff07ff4fffffff, 0xffffffffff007fff, 0xfffffffbffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf3c5fdfffff99fef, 0x7fffffcfb080799f, 0xd36dfdfffff987ee, 0x7fffc05e023987, 0xf3edfdfffffbbfee, 0xfe03ffcf00013bbf, 0xf3edfdfffff99fee, 0xffffcfb0e0399f, 0xc3ffc718d63dc7ec, 0x7ffffc000813dc7, 0xf3fffdfffffddfff, 0xff80ffcf27603ddf, 0xf3effdfffffddfff, 0xeffcf60603ddf, 0xfffffffffffddfff, 0xffffffcffff0fddf, 0x2ffbfffffc7fffee, 0x1cffc0ff5f847f, 0x87fffffffffffffe, 0xfffffff, 0x3fffffaffffff7d6, 0xf3ff7f5f, 0xffffffffffffffff, 0xfffe1ffffffffeff, 0xdffffffffeffffff, 0x7ffdfff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff20bf, 0xffffffffffffffff, 0xffffffff3d7f3dff, 0x7f3dffffffff3dff, 0xffffffffff7fff3d, 0xffffffffff3dffff, 0x1fffffffe7ffffff, 0xffffffff03ffffff, 0x3f3fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff1fffffff, 0x1ffffffffffffff, 0x7fffff803fffff, 0xddfff000fffff, 0xffffffffffffffff, 0x3ff03ff3fffffff, 0xffffffff03ffbfff, 0x1ffffffffffffff, 0xffff07ffffffffff, 0x3fffffffffffff, 0xfff0fff7fffffff, 0x1f3ffffffffff1, 0xffff0fffffffffff, 0xffffffffc7ff03ff, 0xffffffffcfffffff, 0x9fffffff7fffffff, 0xffff3fff03ff03ff, 0x7fff, 0xffffffffffffffff, 0x7fffffffffff1fff, 0xffffffffffffffff, 0xf00fffffffffffff, 0xf8ffffffffffffff, 0xffffffffffffe3ff, 0xe7ffffffffff01ff, 0x7ffffffffff00ff, 0xffffffff3f3fffff, 0x3fffffffaaff3f3f, 0xffdfffffffffffff, 0x7fdcffffefcfffdf, 0xffff80ffffff07ff, 0xfff30000ffffffff, 0xffffffff1fff7fff, 0x1ffffffff0001, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff0fff, 0xffffffffffffffff, 0x7fffffffff, 0xffffffff000007ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffcfffffffffffff, 0xffffffffffbfffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfe0fffffffffffff, 0xffff20bfffffffff, 0x800180ffffffffff, 0x7f7f7f7f007fffff, 0xffffffff7f7f7f7f, 0xffffffffffffffff, 0x3fffffff, 0xfffffffffbffffff, 0xfffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0000003fffff, 0xffffffffffffffff, 0xfffffffffffffffe, 0xfffffffffe7fffff, 0xffffffffffffffff, 0xfffeffffffffffe0, 0xffffffffffffffff, 0xffffffffffff7fff, 0xffff800fffffffff, 0xffffffff7fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff1fff, 0xffffffffffff007f, 0xfffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffc000003eb07ff, 0x3ff1fffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffff03ffc03f, 0xffffffffffffffff, 0x1fffffff800fffff, 0xffffffffffffffff, 0x7fffffffc3ffbfff, 0x7fffffffffffff, 0xfffffffff3ff3fff, 0xffffffffffffffff, 0x7ffffff8000007, 0xffff7f7f007e7e7e, 0xffff0fffffffffff, 0xffffffffffffffff, 0x3ff3fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff000fffffffff, 0xffffffffffff87f, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffff3fffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x5f7fffffe0f8007f, 0xffffffffffffffdb, 0xffffffffffffffff, 0xfffffffffff80007, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffcffff, 0xffff0000000080ff, 0xffffffff03ffffff, 0xffdf0f7ffff7ffff, 0xffffffffffffffff, 0x1fffffffffffffff, 0xfffffffffffffffe, 0xffffffffffffffff, 0x7fffffffffffffff, 0x30007f7f1cfcfcfc, 0xb7ffff7fffffefff, 0x3fff3fff, 0xffffffffffffffff, 0x7ffffffffffffff, 0xff8fffffffffff87, 0xffffffffffffffff, 0x11fff7fff, 0x3fffffffffff0000, 0x0, 0x0, 0xffffffff1fffffff, 0xfffffff0001ffff, 0xffffe00fffffffff, 0x7ffffffffff07ff, 0xffffffffbfffffff, 0x3fff0f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03ff3fffffff, 0xfffffffff0fffff, 0xffff00ffffffffff, 0xf7ff800fffffffff, 0x1bfbfffbffb7f7ff, 0x0, 0x7fffffffffffff, 0xff003fffff, 0x7fdffffffffffbf, 0x0, 0x91bffffffffffd3f, 0xffffffffffbfffff, 0xff807fffffff, 0xf837ffff00000000, 0x83ffffff8fffffff, 0x0, 0xf0ffffffffffffff, 0xfffffffffffcffff, 0x873ffffffeeff06f, 0xffffffff01ff01ff, 0xffffffff, 0x7ff87fffffffff, 0xfe3fffffffffffff, 0xff07ffffff3fffff, 0xfe001e03ffff, 0x0, 0xffffffffffffffff, 0x1ff, 0x7ffffffffffff, 0xfc07ffffffffffff, 0x3ff00ffffffffff, 0x0, 0x0, 0x0, 0x0, 0x7fffffff00000000, 0x33bffffffffff, 0xe000000000000000, 0xffff00ffffffffff, 0xffff000003ffffff, 0xffff0000000003ff, 0x7fffff00000fff, 0xffffffffffffffff, 0x803ffffffffc3fff, 0xdfffffffffffffff, 0x3ff01ffffff0007, 0xffdfffffffffffff, 0x7fffffffff00ff, 0xffffffffffffffff, 0x1ffffeffffffff, 0xfffffffffffbffff, 0x3, 0xffff03ffbfffbd7f, 0x3ff07ffffffffff, 0xfbedfdfffff99fef, 0x1f1fcfe081399f, 0x0, 0x0, 0xffffffffffffffff, 0x3efffffff, 0xffffffffffffffff, 0x3ff00ff, 0x0, 0x0, 0xff3fffffffffffff, 0x3fffffff, 0xffffffffffffffff, 0x1fff03ff001f, 0x3ffffffffffffff, 0x3ff, 0xffff0fffe7ffffff, 0x7f, 0x0, 0x0, 0xfffffffffffffff, 0x0, 0xffffffff00000000, 0x8007ffffffffffff, 0xf9bfffffff6ff27f, 0x3ff007f, 0xfffffcff00000000, 0x1ffcffffff, 0xffffffffffffffff, 0xffffffffffff00ff, 0xffff0007ffffffff, 0x1ffffffffffffff, 0x3ff, 0x0, 0x0, 0x0, 0xff7ffffffffffdff, 0xffff1fffffff003f, 0x7ffefffffcffff, 0x0, 0xb47ffffffffffb7f, 0xfffffdbf03ff00ff, 0x3ff01fb7fff, 0x0, 0x0, 0x0, 0x0, 0x1ffffff00000000, 0xc7fffffffffdffff, 0x3ffffff, 0x1000000000000, 0x8003ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ffffff, 0x0, 0xffffffffffffffff, 0x1f7fffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf, 0x0, 0x0, 0x0, 0x0, 0xffffffffffff0000, 0x7ffffffffffff, 0xffffffffffff, 0x3fffff, 0x0, 0x0, 0xffffffffffffffff, 0x7f, 0x0, 0x0, 0x1ffffffffffffff, 0xffffc3ff7fffffff, 0x7fffffffffffffff, 0x3f3fffffff03ff, 0xffffffffffffffff, 0xe0fffffbfbff003f, 0xffff, 0x0, 0x0, 0xffffffffffffffff, 0x7ffffff, 0x0, 0xffffffffffffffff, 0xffffffffffff87ff, 0xffff80ff, 0x3001f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffff, 0x1ff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6fef000000000000, 0x40007ffffffff, 0xffff00f000270000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffffffff, 0xffffffffffffffff, 0x1fff07ffffffffff, 0xf3ff01ff, 0x0, 0xffff3fffffffffff, 0xffffffffffff007f, 0xffffffffffffffff, 0xf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffffff, 0xfffffe7fffffffff, 0xf807ffffffffffff, 0xffffffffffffffff, 0x7ffffffffff, 0xffffffffffffffff, 0x3f, 0x0, 0xfffff000fffff, 0xffffffffffffffff, 0x1ffffff007fffff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffdfffff, 0xebffde64dfffffff, 0xffffffffffffffef, 0x7bffffffdfdfe7bf, 0xfffffffffffdfc5f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffff3fffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffcfff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffef8000fff, 0x0, 0x7e07fffffff, 0x0, 0x0, 0x0, 0xffff07dbf9ffff7f, 0x3fffffffffff, 0x8000, 0x0, 0x3fff1fffffffffff, 0xc3ff, 0x0, 0x0, 0x0, 0x0, 0x7fffffff0000, 0x83ffffffffffffff, 0x0, 0x0, 0x0, 0x3ffffffffff0000, 0x0, 0x0, 0x0, 0x7fff6f7f00000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fff9f, 0xffffffffffffffff, 0xc3ff0fff, 0x0, 0x0, 0x0, 0xfffe000000000000, 0x1fffffffffffff, 0x0, 0x3ffffffffffffffe, 0x0, 0x0, 0x0, 0xaf7fe96ffffffef, 0x5ef7f796aa96ea84, 0xffffbee0ffffbff, 0x3000000000000, 0xffff0fffffffffff, 0xffffffffffffffff, 0xfffe7fff000fffff, 0x3ffffffffefffe, 0xffffffffffffffff, 0xffffffffffffffff, 0x3fffffffffff, 0xffffffc000000000, 0xfffffffffff0007, 0x3f000301ff, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1fff1ffff0ffffff, 0xffffffffffffffff, 0xf87fffffffffffff, 0xffffffffffffffff, 0x10fff03ffffff, 0xffffffffffff0fff, 0xffffffff03ff00ff, 0x33fffffff00ff, 0x0, 0xffffffffffffffff, 0x1fff3fff000fffff, 0xbfffffffffff01ff, 0x1ff01ff0fffc03f, 0xffffffffffffffff, 0xffffffffffffffff, 0xfffffffffff7ffff, 0x3ff0000000007ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff, 0x3ffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff3fffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0003ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0001ffffffff, 0xffffffffffffffff, 0x3fffffff, 0x0, 0x0, 0x3fffffff, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffff07ff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff, 0x0, 0x0, 0x0, 0x0]); +enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +0000000000000000000000000000002000000000000000D0", +cast(immutable size_t[]) x" +000000000000010000000000000002C00000000000008A00", +cast(immutable size_t[]) x" +05040302020201000D0C0B0A09080706100F0E0202020202131313131313121113131313131313131313131313131313 +131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313 +131313131313131313131313131313131313131313131314131313131313131313131313131313130000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000200010001000000050004000300010009000800070006000D000C000B000A +0010000F0001000E00120011000100010016001500140013001800010001001700010001001A0019000100010001001B +001C0001000100010020001F001E001D0001002300220021000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +0001000100010001000100010001000100010001000100010026002500010024002A0029002800270001000100010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100010001000100010001002B000100010001002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002E002D0001002C00310030002F000100350034003300320038000100370036003C003B003A00390040003F003E003D +00440043004200410048004700460045004C004B004A00490050004F004E004D0051000100010001002C002C00530052 +002C002C002C002C0054002C002C002C0001000100010001002C002C002C0055002C002C002C002C002C002C002C002C +002C002C002C002C002C005600010001002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C0058005700010001005A0059002C002C +00010001000100010001000100010001000100010001000100010001000100010001000100010001005B000100010001 +0001000100010001002C002C005D005C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C005E002C002C002C002C0060005F0001002C002C002C002C +002C002C002C002C002C002C002C0061002C002C002C002C002C002C002C002C002C002C002C002C0062002C002C002C +0066006500640063006A006900680067002C006B00010001006C002C002C002C002C006F006E006D0071002C002C0070 +002C002C00730072002C0076007500740001007900780077007B007A00010001007E007D0001007C002C002C002C002C +00010001000100010001007F000100010001000100010001000100010001000100010001000100010080000100010001 +000100010001008100010001000100010001000100010001000100010001000100010001000100010001008200010001 +000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +0083000100010001002C008400010001002C002C002C002C002C002C002C002C002C008500010001002C002C002C002C +000100010001000100010001000100010001000100010001000100010001000100860001000100010001000100010001 +000100010001000100010001000100010087000100010001002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C0088002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002CFFFFFFFF000000007FFFFFFFFFFFFFFF +FFFFDFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFBFFFFD7F0FFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFE7FFFFF +FFFFFFFFFFFEE7FF001F87FFFFFF00FFFFFFFFFFEFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFF +FFFFFFFFFFFF3FFFFFFFFFFFFFFFE7FF0003FFFFFFFFFFFFE7FFFFFFFFFFFFFF7FFF3FFFFFFFFFFFFFFF07FF4FFFFFFF +FFFFFFFFFF007FFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C5FDFFFFF99FEF7FFFFFCFB080799F +D36DFDFFFFF987EE007FFFC05E023987F3EDFDFFFFFBBFEEFE03FFCF00013BBFF3EDFDFFFFF99FEE00FFFFCFB0E0399F +C3FFC718D63DC7EC07FFFFC000813DC7F3FFFDFFFFFDDFFFFF80FFCF27603DDFF3EFFDFFFFFDDFFF000EFFCF60603DDF +FFFFFFFFFFFDDFFFFFFFFFCFFFF0FDDF2FFBFFFFFC7FFFEE001CFFC0FF5F847F87FFFFFFFFFFFFFE000000000FFFFFFF +3FFFFFAFFFFFF7D600000000F3FF7F5FFFFFFFFFFFFFFFFFFFFE1FFFFFFFFEFFDFFFFFFFFEFFFFFF0000000007FFDFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20BFFFFFFFFFFFFFFFFFFFFFFFFF3D7F3DFF +7F3DFFFFFFFF3DFFFFFFFFFFFF7FFF3DFFFFFFFFFF3DFFFF1FFFFFFFE7FFFFFFFFFFFFFF03FFFFFF3F3FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFF01FFFFFFFFFFFFFF007FFFFF803FFFFF000DDFFF000FFFFF +FFFFFFFFFFFFFFFF03FF03FF3FFFFFFFFFFFFFFF03FFBFFF01FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFFFFFFFFFF +0FFF0FFF7FFFFFFF001F3FFFFFFFFFF1FFFF0FFFFFFFFFFFFFFFFFFFC7FF03FFFFFFFFFFCFFFFFFF9FFFFFFF7FFFFFFF +FFFF3FFF03FF03FF0000000000007FFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFF +F8FFFFFFFFFFFFFFFFFFFFFFFFFFE3FFE7FFFFFFFFFF01FF07FFFFFFFFFF00FFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F +FFDFFFFFFFFFFFFF7FDCFFFFEFCFFFDFFFFF80FFFFFF07FFFFF30000FFFFFFFFFFFFFFFF1FFF7FFF0001FFFFFFFF0001 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF0000007FFFFFFFFFFFFFFFFF000007FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFF20BFFFFFFFFF800180FFFFFFFFFF +7F7F7F7F007FFFFFFFFFFFFF7F7F7F7FFFFFFFFFFFFFFFFF000000003FFFFFFFFFFFFFFFFBFFFFFF000FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +FFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF800FFFFFFFFF +FFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF1FFFFFFFFFFFFFFF007F00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003EB07FF03FF1FFFFFFFFFFF00FFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF03FFC03FFFFFFFFFFFFFFFFF1FFFFFFF800FFFFFFFFFFFFFFFFFFFFF7FFFFFFFC3FFBFFF +007FFFFFFFFFFFFFFFFFFFFFF3FF3FFFFFFFFFFFFFFFFFFF007FFFFFF8000007FFFF7F7F007E7E7EFFFF0FFFFFFFFFFF +FFFFFFFFFFFFFFFF03FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF0FFFFFFFFFFFF87F +0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFF +FFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFFFFE0F8007FFFFFFFFFFFFFFFDBFFFFFFFFFFFFFFFFFFFFFFFFFFF80007 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFF0000000080FFFFFFFFFF03FFFFFFFFDF0F7FFFF7FFFF +FFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF30007F7F1CFCFCFC +B7FFFF7FFFFFEFFF000000003FFF3FFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFF8FFFFFFFFFFF87FFFFFFFFFFFFFFFF +000000011FFF7FFF3FFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF1FFFFFFF0FFFFFFF0001FFFF +FFFFE00FFFFFFFFF07FFFFFFFFFF07FFFFFFFFFFBFFFFFFF00000000003FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF03FF3FFFFFFF0FFFFFFFFF0FFFFFFFFF00FFFFFFFFFFF7FF800FFFFFFFFF1BFBFFFBFFB7F7FF0000000000000000 +007FFFFFFFFFFFFF000000FF003FFFFF07FDFFFFFFFFFFBF000000000000000091BFFFFFFFFFFD3FFFFFFFFFFFBFFFFF +0000FF807FFFFFFFF837FFFF0000000083FFFFFF8FFFFFFF0000000000000000F0FFFFFFFFFFFFFFFFFFFFFFFFFCFFFF +873FFFFFFEEFF06FFFFFFFFF01FF01FF00000000FFFFFFFF007FF87FFFFFFFFFFE3FFFFFFFFFFFFFFF07FFFFFF3FFFFF +0000FE001E03FFFF0000000000000000FFFFFFFFFFFFFFFF00000000000001FF0007FFFFFFFFFFFFFC07FFFFFFFFFFFF +03FF00FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000007FFFFFFF00000000 +00033BFFFFFFFFFFE000000000000000FFFF00FFFFFFFFFFFFFF000003FFFFFFFFFF0000000003FF007FFFFF00000FFF +FFFFFFFFFFFFFFFF803FFFFFFFFC3FFFDFFFFFFFFFFFFFFF03FF01FFFFFF0007FFDFFFFFFFFFFFFF007FFFFFFFFF00FF +FFFFFFFFFFFFFFFF001FFFFEFFFFFFFFFFFFFFFFFFFBFFFF0000000000000003FFFF03FFBFFFBD7F03FF07FFFFFFFFFF +FBEDFDFFFFF99FEF001F1FCFE081399F00000000000000000000000000000000FFFFFFFFFFFFFFFF00000003EFFFFFFF +FFFFFFFFFFFFFFFF0000000003FF00FF00000000000000000000000000000000FF3FFFFFFFFFFFFF000000003FFFFFFF +FFFFFFFFFFFFFFFF00001FFF03FF001F03FFFFFFFFFFFFFF00000000000003FFFFFF0FFFE7FFFFFF000000000000007F +000000000000000000000000000000000FFFFFFFFFFFFFFF0000000000000000FFFFFFFF000000008007FFFFFFFFFFFF +F9BFFFFFFF6FF27F0000000003FF007FFFFFFCFF000000000000001FFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF +FFFF0007FFFFFFFF01FFFFFFFFFFFFFF00000000000003FF000000000000000000000000000000000000000000000000 +FF7FFFFFFFFFFDFFFFFF1FFFFFFF003F007FFEFFFFFCFFFF0000000000000000B47FFFFFFFFFFB7FFFFFFDBF03FF00FF +000003FF01FB7FFF000000000000000000000000000000000000000000000000000000000000000001FFFFFF00000000 +C7FFFFFFFFFDFFFF0000000003FFFFFF00010000000000008003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000000003FFFFFF0000000000000000FFFFFFFFFFFFFFFF001F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF000000000000000F0000000000000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFF00000007FFFFFFFFFFFF0000FFFFFFFFFFFF00000000003FFFFF00000000000000000000000000000000 +FFFFFFFFFFFFFFFF000000000000007F0000000000000000000000000000000001FFFFFFFFFFFFFFFFFFC3FF7FFFFFFF +7FFFFFFFFFFFFFFF003F3FFFFFFF03FFFFFFFFFFFFFFFFFFE0FFFFFBFBFF003F000000000000FFFF0000000000000000 +0000000000000000FFFFFFFFFFFFFFFF0000000007FFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FF +00000000FFFF80FF0003001F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000003FFFFF00000000000001FF0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000006FEF000000000000 +00040007FFFFFFFFFFFF00F000270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF07FFFFFFFFFF00000000F3FF01FF0000000000000000 +FFFF3FFFFFFFFFFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FFFFFFFFFF +FFFFFFFFFFFFFFFF000000000000003F0000000000000000000FFFFF000FFFFFFFFFFFFFFFFFFFFF01FFFFFF007FFFFF +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF +7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFEF8000FFF0000000000000000000007E07FFFFFFF0000000000000000 +00000000000000000000000000000000FFFF07DBF9FFFF7F00003FFFFFFFFFFF00000000000080000000000000000000 +3FFF1FFFFFFFFFFF000000000000C3FF0000000000000000000000000000000000000000000000000000000000000000 +00007FFFFFFF000083FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000003FFFFFFFFFF0000 +0000000000000000000000000000000000000000000000007FFF6F7F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00000000007FFF9FFFFFFFFFFFFFFFFF00000000C3FF0FFF00000000000000000000000000000000 +0000000000000000FFFE000000000000001FFFFFFFFFFFFF00000000000000003FFFFFFFFFFFFFFE0000000000000000 +000000000000000000000000000000000AF7FE96FFFFFFEF5EF7F796AA96EA840FFFFBEE0FFFFBFF0003000000000000 +FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFF000FFFFF003FFFFFFFFEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +00003FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFF00070000003F000301FF00000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF1FFFF0FFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00010FFF03FFFFFFFFFFFFFFFFFF0FFFFFFFFFFF03FF00FF00033FFFFFFF00FF0000000000000000 +FFFFFFFFFFFFFFFF1FFF3FFF000FFFFFBFFFFFFFFFFF01FF01FF01FF0FFFC03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFF7FFFF03FF0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF +03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFF000000003FFFFFFF +00000000000000000000000000000000000000003FFFFFFF000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000FFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF +0000000000000000000000000000000000000000000000000000000000000000", +); //4824 bytes -enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)([ 0x0, 0x10, 0x4c, 0x14c], [ 0x80, 0xf0, 0x400, 0x43c0], [ 0x706050403020100, 0xb0b0b0a09080101, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xb0b0b0b0b0b0b0b, 0xd0101010b0b0b0c, 0xd010101, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3000200010000, 0x7000600050004, 0xb000a00090008, 0xd000d000d000c, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000f000e000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d0010000d, 0xd000d000d000d, 0x120011000d000d, 0x16001500140013, 0x1a001900180017, 0x1e001d001c001b, 0x1d001d001f000d, 0x1d001d0020001d, 0x1d001d001d001d, 0x220021001d001d, 0xd000d000d000d, 0x24000d0023000d, 0x1d001d001d001d, 0x25001d001d001d, 0x27001d001d0026, 0x28001d001d001d, 0x2c002b002a0029, 0x30002f002e002d, 0x1d003300320031, 0xd000d000d000d, 0xd000d000d000d, 0xd000d0034000d, 0xd00360035000d, 0x37000d000d000d, 0xd000d000d000d, 0x390038000d000d, 0x1d003a001d001d, 0xd000d000d000d, 0xd000d000d003b, 0x1d001d001d003c, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d003d, 0x1d001d001d001d, 0x1d001d001d001d, 0x1d001d001d001d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0x3e000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0xd000d000d000d, 0x3e000d000d000d, 0x0, 0x0, 0x0, 0x200010000, 0x0, 0x6000500040003, 0x0, 0xa000900080007, 0xd000c000b, 0xf000e00000000, 0x13001200110010, 0x17001600150014, 0x1b001a00190018, 0x1f001e001d001c, 0x23002200210020, 0x26002500240000, 0x27000000000000, 0x0, 0x2a002900280000, 0x2e002d002c002b, 0x0, 0x0, 0x30002f00000000, 0x33000000320031, 0x3500340030002d, 0x39003800370036, 0x3d003c003b003a, 0x3f0000003e0000, 0x43004200410040, 0x0, 0x0, 0x47004600450044, 0x4a004900480000, 0x4b00000000, 0x0, 0x0, 0x4d004c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f004e0000, 0x50000000000000, 0x54005300520051, 0x57005600550000, 0x58000000000000, 0x400590000, 0x5c005b0000005a, 0x5d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5f005e00000000, 0x0, 0x61000000000060, 0x62000000000000, 0x64000000610063, 0x66000000650000, 0x69000000680067, 0x6b00000038006a, 0x0, 0x0, 0x0, 0x6d006c00000000, 0x0, 0x0, 0x6f0000006e0000, 0x72000000710070, 0x0, 0x74007300000000, 0x7600000075002d, 0x78007700000059, 0x7b0000007a0079, 0x7e007d0000007c, 0x80002f007f007f, 0x84008300820081, 0x86008500000000, 0x7f008900880087, 0x0, 0x7f008b008a0067, 0x8e008d004f008c, 0x730090007f008f, 0x94009300920091, 0x7f009700960095, 0x9a009900980000, 0x7f007f007f009b, 0x9e009d009c007f, 0xa100a0009f0087, 0xa3000000a20000, 0xa5000000a40046, 0xa900a800a700a6, 0x7f007f00ab00aa, 0xad000000ac0000, 0x5500ae007f007f, 0xb100b000af0000, 0x7f007f00b300b2, 0xb600b5007f00b4, 0xba00b900b800b7, 0x3000bc00bb0000, 0x7f007f007f00b1, 0x7f00bf00be00bd, 0x7f00c200c100c0, 0xc3007f007f007f, 0xc600c5006f00c4, 0x0, 0x0, 0x0, 0x7f006f00000000, 0xc70000, 0x7f007f00c80000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x9900c9007f007f, 0x7f007f00ca0000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x0, 0x0, 0x7f007f00b30000, 0x7f007f007f007f, 0x0, 0x0, 0xcc007700cb0030, 0x7f00ce00cd0000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f00cf0000007f, 0xd200d100d00000, 0x0, 0x0, 0x0, 0x61000000000000, 0xca000000000000, 0x7f007f007f0098, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0xd3007f007f007f, 0x0, 0xd500d4, 0xb4000000000000, 0x7f007f007f007f, 0x7f00d700d60000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0xc80000005f006e, 0x35000000000000, 0xd90000000000d8, 0xdb007f00da0000, 0x7f007f00dc0000, 0xdf00de00dd0000, 0xe100e0, 0xe200000000, 0xe3000000000000, 0x0, 0x0, 0x7f00e400000000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f007f007f00e5, 0x7f00e800e700e6, 0x7f007f00ea00e9, 0xec00eb007f007f, 0x7f007f007f007f, 0xed007f007f007f, 0x7f007f007f007f, 0x7f007f007f007f, 0xee007f007f007f, 0xef000000000000, 0x7f007f00f00000, 0x7f007f007f007f, 0x7f007f007f007f, 0x7f00f200f1007f, 0x7f007f007f00f3, 0xf700f600f500f4, 0x7f007f007f007f, 0xf900f800000038, 0xfa00e700000000, 0x7f007f00fc00fb, 0x0, 0x0, 0x0, 0xfd000000000000, 0xff000000fe0000, 0x7f01010100004b, 0x0, 0x104010301020000, 0x106010500000000, 0x0, 0x0, 0x93000000000000, 0x0, 0x0, 0x0, 0x0, 0xb0, 0x107, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10800000000, 0x0, 0x0, 0x0, 0x0, 0x109000000000000, 0x0, 0x0, 0x7f007f00550000, 0x7f007f007f007f, 0x0, 0x0, 0x7f007f007f0055, 0x7f007f007f007f, 0x0, 0x0, 0x0, 0x10a0000, 0x0, 0x0, 0x0, 0x7f010b00000000, 0x7f007f0000010c, 0x10b000000000000, 0x7f007f007f007f, 0x7f007f007f007f, 0x0, 0x0, 0x0, 0x10d000000000000, 0x0, 0x0, 0x0, 0x10d000000000000, 0x0, 0x300000000000000, 0x40000280f, 0x1000000000000, 0x1800000, 0x11800, 0xffe078000000ff00, 0x4000, 0x1800, 0xfffc000000000000, 0x1800000000000000, 0x8000c00000000000, 0xf800b0000000, 0xfc8000, 0xc3a020000066010, 0x800000304f7f8660, 0x2c92020000067811, 0xff80003fa1fdc678, 0xc12020000044011, 0x1fc0030fffec440, 0xc12020000066011, 0xff0000304f1fc660, 0x3c0038e729c23813, 0xf800003fff7ec238, 0xc00020000022000, 0x7f0030d89fc220, 0xc10020000022000, 0xfff100309f9fc220, 0x22000, 0x30000f0220, 0xd004000003800011, 0xffe3003f00a07b80, 0x7800000000000001, 0xfffffffff0000000, 0xc000005000000829, 0xffffffff0c0080a0, 0x1e00000000100, 0x2000000001000000, 0xfffffffff8002000, 0xdf40, 0xc280c200, 0x80c200000000c200, 0x8000c2, 0xc20000, 0xe000000018000000, 0xfc000000, 0xc0c0000000000000, 0xe0000000, 0xfe00000000000000, 0xff8000007fc00000, 0xfff22000fff00000, 0xfc00fc00c0000000, 0xf80000000000, 0xffc0000000000000, 0xf000f00080000000, 0xffe0c0000000000e, 0xf00000000000, 0x3800fc00, 0x30000000, 0x6000000080000000, 0xc000fc00fc00, 0xffffffffffff8000, 0x800000000000e000, 0xff0000000000000, 0x700000000000000, 0x1c00, 0x180000000000fe00, 0xf80000000000ff00, 0xc0c00000, 0xc00000005500c0c0, 0x20000000000000, 0x8023000010300020, 0xc002000000000, 0xe0008000, 0xfffe00000000fffe, 0xf000, 0xffffff8000000000, 0xfffff800, 0x30000000000000, 0x400000, 0x1f0000000000000, 0xdf4000000000, 0x7ffe7f0000000000, 0x80808080ff800000, 0x80808080, 0xffffffffc0000000, 0x4000000, 0xfff0000000000000, 0xffffffc00000, 0x1, 0x100000000001f, 0x8000, 0x7ff000000000, 0x80000000, 0xe000, 0xff80, 0xfffff00000000000, 0xff00000000000000, 0x3fffffc14f800, 0xfc00e00000000000, 0xfc003fc0, 0xe00000007ff00000, 0x800000003c004000, 0xff80000000000000, 0xc00c000, 0xff80000007fffff8, 0x8080ff818181, 0xfc00c00000000000, 0xfff000000000, 0xf000000000000780, 0xc00000000000, 0xfffffffffc000000, 0xa08000001f07ff80, 0x24, 0x7fff8, 0x30000, 0xffffffff7f00, 0x20f08000080000, 0x6000000000000000, 0x8000000000000000, 0xc1ff8080e3030303, 0x4800008000001000, 0xffffffffc000c000, 0xf800000000000000, 0x70000000000078, 0xfffffffee0008000, 0xc00000000000ffff, 0xffffffffffffffff, 0xf0000000fffe0000, 0x1ff000000000, 0xf80000000000f800, 0x40000000, 0xffffffffffc000f0, 0xfc00c0000000, 0xf000000000f00000, 0xff0000000000, 0x8007ff000000000, 0xe404000400480800, 0xffffff00ffc00000, 0xf802000000000040, 0x6e400000000002c0, 0xffff007f80000000, 0x7c80000ffffffff, 0x7c00000070000000, 0xf00000000000000, 0x78c0000001100f90, 0xfe00fe00, 0xffffffff00000000, 0xff80078000000000, 0x1c0000000000000, 0xf8000000c00000, 0xffff01ffe1fc0000, 0xfffffffffffffe00, 0xfff8000000000000, 0x3f8000000000000, 0xfc00ff0000000000, 0x80000000ffffffff, 0xfffcc40000000000, 0x1fffffffffffffff, 0xfffffc000000, 0xfffffffffc00, 0xff800000fffff000, 0x7fc000000003c000, 0xfc00fe000000dff8, 0xff8000000000ff00, 0xffe0000100000000, 0x40000, 0xfffffffffffffffc, 0xfc0040004280, 0xfc00f80000000000, 0x412020000066010, 0xffe0e0301f7ec660, 0xfffffffc10000000, 0xfffffffffc00ff00, 0xc0000000000000, 0xffffe000fc00ffe0, 0xfc00000000000000, 0xfffffffffffffc00, 0xf00018000000, 0xffffffffffffff80, 0xf000000000000000, 0xffffffff, 0x7ff8000000000000, 0x640000000900d80, 0xfffffffffc00ff80, 0x300ffffffff, 0xffffffe003000000, 0xff00, 0xfff800000000, 0x80000000000200, 0xe0000000ffc0, 0xff80010000030000, 0x4b80000000000480, 0x240fc00ff00, 0xfffffc00fe048000, 0xfe000000ffffffff, 0x3800000000020000, 0xfffeffffffffffff, 0x7ffc000000000000, 0xffe0800000000000, 0xfffffffffffffff0, 0xffff, 0xffffffffffc00000, 0x3c0080000000, 0xffc0c0000000fc00, 0x1f0000040400ffc0, 0xffffffffffff0000, 0xfffffffff8000000, 0x7800, 0xffffffff00007f00, 0xfffcffe0ffffffff, 0x9010ffffffffffff, 0xfffbfff800000000, 0xff0fffd8ffff, 0xe000f80000000000, 0xfffffff00c00fe00, 0x18000000000, 0xfffff80000000000, 0xffffffffffffffc0, 0xfff00000fff00000, 0xfe000000ff800000, 0x200000, 0x1400219b20000000, 0x10, 0x8400000020201840, 0x203a0, 0xc000000000, 0x3000, 0xffff000107fff000, 0xfffff81f80000000, 0xf82406000080, 0xffffc00000000000, 0xffffffffffff7fff, 0xc000e00000000000, 0xffffffffffff3c00, 0xffff80000000ffff, 0x7c00000000000000, 0xfc0000000000ffff, 0x80009080ffffffff, 0xffffffffff800060, 0xffffffff3c00f000, 0x1ffffffffffff, 0xffe0000000000000, 0xc000000000000001, 0xf508016900000010, 0xa10808695569157b, 0xf0000411f0000400, 0xfffcffffffffffff, 0x18000fff00000, 0xffc0000000010001, 0x3fffffffff, 0xf00000000000fff8, 0xffffffc0fffcfe00, 0xe000e0000f000000, 0x780000000000000, 0xfffef000fc000000, 0xfc00ff00, 0xfffcc0000000ff00, 0xe000c000fff00000, 0x400000000000fe00, 0xfe00fe00f0003fc0, 0x80000, 0xfc00fffffffff800, 0xc0000000, 0xfffc00000000, 0xfffe00000000, 0xf800, 0xffff000000000000, 0xfffffffd, 0xc000000000000000, 0xc000000000000000]); +enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(cast(immutable size_t[]) x" +00000000000000000000000000000010000000000000004C000000000000014C", +cast(immutable size_t[]) x" +000000000000008000000000000000F0000000000000040000000000000043C0", +cast(immutable size_t[]) x" +07060504030201000B0B0B0A090801010B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B +0B0B0B0B0B0B0B0B0D0101010B0B0B0C000000000D010101000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000030002000100000007000600050004 +000B000A00090008000D000D000D000C000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D +000D000D000D000D000D000D000D000D000D000F000E000D000D000D000D000D000D000D000D000D000D000D0010000D +000D000D000D000D00120011000D000D0016001500140013001A001900180017001E001D001C001B001D001D001F000D +001D001D0020001D001D001D001D001D00220021001D001D000D000D000D000D0024000D0023000D001D001D001D001D +0025001D001D001D0027001D001D00260028001D001D001D002C002B002A00290030002F002E002D001D003300320031 +000D000D000D000D000D000D000D000D000D000D0034000D000D00360035000D0037000D000D000D000D000D000D000D +00390038000D000D001D003A001D001D000D000D000D000D000D000D000D003B001D001D001D003C001D001D001D001D +001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D003D001D001D001D001D +001D001D001D001D001D001D001D001D000D000D000D000D000D000D000D000D000D000D000D000D003E000D000D000D +000D000D000D000D000D000D000D000D000D000D000D000D003E000D000D000D00000000000000000000000000000000 +00000000000000000000000200010000000000000000000000060005000400030000000000000000000A000900080007 +0000000D000C000B000F000E0000000000130012001100100017001600150014001B001A00190018001F001E001D001C +0023002200210020002600250024000000270000000000000000000000000000002A002900280000002E002D002C002B +000000000000000000000000000000000030002F000000000033000000320031003500340030002D0039003800370036 +003D003C003B003A003F0000003E00000043004200410040000000000000000000000000000000000047004600450044 +004A0049004800000000004B000000000000000000000000000000000000000000000000004D004C0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000004F004E0000 +00500000000000000054005300520051005700560055000000580000000000000000000400590000005C005B0000005A +000000000000005D00000000000000000000000000000000000000000000000000000000000000000000000000000000 +005F005E0000000000000000000000000061000000000060006200000000000000640000006100630066000000650000 +0069000000680067006B00000038006A000000000000000000000000000000000000000000000000006D006C00000000 +00000000000000000000000000000000006F0000006E0000007200000071007000000000000000000074007300000000 +007600000075002D0078007700000059007B0000007A0079007E007D0000007C0080002F007F007F0084008300820081 +0086008500000000007F0089008800870000000000000000007F008B008A0067008E008D004F008C00730090007F008F +0094009300920091007F009700960095009A009900980000007F007F007F009B009E009D009C007F00A100A0009F0087 +00A3000000A2000000A5000000A4004600A900A800A700A6007F007F00AB00AA00AD000000AC0000005500AE007F007F +00B100B000AF0000007F007F00B300B200B600B5007F00B400BA00B900B800B7003000BC00BB0000007F007F007F00B1 +007F00BF00BE00BD007F00C200C100C000C3007F007F007F00C600C5006F00C400000000000000000000000000000000 +0000000000000000007F006F000000000000000000C70000007F007F00C80000007F007F007F007F007F007F007F007F +007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F +007F007F007F007F009900C9007F007F007F007F00CA0000007F007F007F007F007F007F007F007F007F007F007F007F +00000000000000000000000000000000007F007F00B30000007F007F007F007F00000000000000000000000000000000 +00CC007700CB0030007F00CE00CD0000007F007F007F007F007F007F007F007F007F00CF0000007F00D200D100D00000 +000000000000000000000000000000000000000000000000006100000000000000CA000000000000007F007F007F0098 +007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00D3007F007F007F +00000000000000000000000000D500D400B4000000000000007F007F007F007F007F00D700D60000007F007F007F007F +007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00C80000005F006E +003500000000000000D90000000000D800DB007F00DA0000007F007F00DC000000DF00DE00DD00000000000000E100E0 +000000E20000000000E300000000000000000000000000000000000000000000007F00E400000000007F007F007F007F +007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00E5007F00E800E700E6007F007F00EA00E9 +00EC00EB007F007F007F007F007F007F00ED007F007F007F007F007F007F007F007F007F007F007F00EE007F007F007F +00EF000000000000007F007F00F00000007F007F007F007F007F007F007F007F007F00F200F1007F007F007F007F00F3 +00F700F600F500F4007F007F007F007F00F900F80000003800FA00E700000000007F007F00FC00FB0000000000000000 +0000000000000000000000000000000000FD00000000000000FF000000FE0000007F01010100004B0000000000000000 +010401030102000001060105000000000000000000000000000000000000000000930000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000B000000000000001070000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000108000000000000000000000000 +000000000000000000000000000000000000000000000000010900000000000000000000000000000000000000000000 +007F007F00550000007F007F007F007F00000000000000000000000000000000007F007F007F0055007F007F007F007F +00000000000000000000000000000000000000000000000000000000010A000000000000000000000000000000000000 +0000000000000000007F010B00000000007F007F0000010C010B000000000000007F007F007F007F007F007F007F007F +000000000000000000000000000000000000000000000000010D00000000000000000000000000000000000000000000 +0000000000000000010D00000000000000000000000000000300000000000000000000040000280F0001000000000000 +00000000018000000000000000011800FFE078000000FF0000000000000040000000000000001800FFFC000000000000 +18000000000000008000C000000000000000F800B00000000000000000FC80000C3A020000066010800000304F7F8660 +2C92020000067811FF80003FA1FDC6780C1202000004401101FC0030FFFEC4400C12020000066011FF0000304F1FC660 +3C0038E729C23813F800003FFF7EC2380C00020000022000007F0030D89FC2200C10020000022000FFF100309F9FC220 +000000000002200000000030000F0220D004000003800011FFE3003F00A07B807800000000000001FFFFFFFFF0000000 +C000005000000829FFFFFFFF0C0080A00001E000000001002000000001000000FFFFFFFFF8002000000000000000DF40 +00000000C280C20080C200000000C20000000000008000C20000000000C20000E00000001800000000000000FC000000 +C0C000000000000000000000E0000000FE00000000000000FF8000007FC00000FFF22000FFF00000FC00FC00C0000000 +0000F80000000000FFC0000000000000F000F00080000000FFE0C0000000000E0000F00000000000000000003800FC00 +000000003000000060000000800000000000C000FC00FC00FFFFFFFFFFFF8000800000000000E0000FF0000000000000 +07000000000000000000000000001C00180000000000FE00F80000000000FF0000000000C0C00000C00000005500C0C0 +00200000000000008023000010300020000C00200000000000000000E0008000FFFE00000000FFFE000000000000F000 +FFFFFF800000000000000000FFFFF8000030000000000000000000000040000001F00000000000000000DF4000000000 +7FFE7F000000000080808080FF8000000000000080808080FFFFFFFFC00000000000000004000000FFF0000000000000 +0000FFFFFFC000000000000000000001000100000000001F000000000000800000007FF0000000000000000080000000 +000000000000E000000000000000FF80FFFFF00000000000FF000000000000000003FFFFFC14F800FC00E00000000000 +00000000FC003FC0E00000007FF00000800000003C004000FF80000000000000000000000C00C000FF80000007FFFFF8 +00008080FF818181FC00C000000000000000FFF000000000F0000000000007800000C00000000000FFFFFFFFFC000000 +A08000001F07FF800000000000000024000000000007FFF800000000000300000000FFFFFFFF7F000020F08000080000 +60000000000000008000000000000000C1FF8080E30303034800008000001000FFFFFFFFC000C000F800000000000000 +0070000000000078FFFFFFFEE0008000C00000000000FFFFFFFFFFFFFFFFFFFFF0000000FFFE000000001FF000000000 +F80000000000F8000000000040000000FFFFFFFFFFC000F00000FC00C0000000F000000000F000000000FF0000000000 +08007FF000000000E404000400480800FFFFFF00FFC00000F8020000000000406E400000000002C0FFFF007F80000000 +07C80000FFFFFFFF7C000000700000000F0000000000000078C0000001100F9000000000FE00FE00FFFFFFFF00000000 +FF8007800000000001C000000000000000F8000000C00000FFFF01FFE1FC0000FFFFFFFFFFFFFE00FFF8000000000000 +03F8000000000000FC00FF000000000080000000FFFFFFFFFFFCC400000000001FFFFFFFFFFFFFFF0000FFFFFC000000 +0000FFFFFFFFFC00FF800000FFFFF0007FC000000003C000FC00FE000000DFF8FF8000000000FF00FFE0000100000000 +0000000000040000FFFFFFFFFFFFFFFC0000FC0040004280FC00F800000000000412020000066010FFE0E0301F7EC660 +FFFFFFFC10000000FFFFFFFFFC00FF0000C0000000000000FFFFE000FC00FFE0FC00000000000000FFFFFFFFFFFFFC00 +0000F00018000000FFFFFFFFFFFFFF80F00000000000000000000000FFFFFFFF7FF80000000000000640000000900D80 +FFFFFFFFFC00FF8000000300FFFFFFFFFFFFFFE003000000000000000000FF000000FFF8000000000080000000000200 +0000E0000000FFC0FF800100000300004B8000000000048000000240FC00FF00FFFFFC00FE048000FE000000FFFFFFFF +3800000000020000FFFEFFFFFFFFFFFF7FFC000000000000FFE0800000000000FFFFFFFFFFFFFFF0000000000000FFFF +FFFFFFFFFFC0000000003C0080000000FFC0C0000000FC001F0000040400FFC0FFFFFFFFFFFF0000FFFFFFFFF8000000 +0000000000007800FFFFFFFF00007F00FFFCFFE0FFFFFFFF9010FFFFFFFFFFFFFFFBFFF8000000000000FF0FFFD8FFFF +E000F80000000000FFFFFFF00C00FE000000018000000000FFFFF80000000000FFFFFFFFFFFFFFC0FFF00000FFF00000 +FE000000FF80000000000000002000001400219B200000000000000000000010840000002020184000000000000203A0 +000000C0000000000000000000003000FFFF000107FFF000FFFFF81F800000000000F82406000080FFFFC00000000000 +FFFFFFFFFFFF7FFFC000E00000000000FFFFFFFFFFFF3C00FFFF80000000FFFF7C00000000000000FC0000000000FFFF +80009080FFFFFFFFFFFFFFFFFF800060FFFFFFFF3C00F0000001FFFFFFFFFFFFFFE0000000000000C000000000000001 +F508016900000010A10808695569157BF0000411F0000400FFFCFFFFFFFFFFFF00018000FFF00000FFC0000000010001 +0000003FFFFFFFFFF00000000000FFF8FFFFFFC0FFFCFE00E000E0000F0000000780000000000000FFFEF000FC000000 +00000000FC00FF00FFFCC0000000FF00E000C000FFF00000400000000000FE00FE00FE00F0003FC00000000000080000 +FC00FFFFFFFFF80000000000C00000000000FFFC000000000000FFFE00000000000000000000F800FFFF000000000000 +00000000FFFFFFFDC000000000000000C000000000000000", +); enum MAX_SIMPLE_LOWER = 1433; enum MAX_SIMPLE_UPPER = 1450; enum MAX_SIMPLE_TITLE = 1454; //10496 bytes -enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xf80], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15000000000000, 0x0, 0x0, 0x16000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1700000000, 0x1900180000, 0x1d001c001b001a, 0x210020001f001e, 0x0, 0x2300220000, 0x0, 0x0, 0x24000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28002700260025, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b002a0000, 0x2f002e002d002c, 0x0, 0x0, 0x0, 0x3100300000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x0, 0x0, 0x0, 0x330000, 0x0, 0x0, 0x0, 0x0, 0x36000000350034, 0x3700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c003b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff001affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5aaffffffffffff, 0x1e001d001c001b, 0x2200210020001f, 0x26002500240023, 0x2a002900280027, 0x2e002d002c002b, 0xffff00310030002f, 0x35003400330032, 0x39003800370036, 0x3bffff003affff, 0x3dffff003cffff, 0x3fffff003effff, 0x41ffff0040ffff, 0x43ffff0042ffff, 0x45ffff0044ffff, 0x47ffff0046ffff, 0x49ffff0048ffff, 0x4bffff004affff, 0x4dffff004cffff, 0x4fffff004effff, 0x51ffff0050ffff, 0x53ffff005205ac, 0x55ffff0054ffff, 0xffff0056ffffffff, 0xffff0058ffff0057, 0xffff005affff0059, 0xffff005cffff005b, 0x5effff05c9005d, 0x60ffff005fffff, 0x62ffff0061ffff, 0x64ffff0063ffff, 0x66ffff0065ffff, 0x68ffff0067ffff, 0x6affff0069ffff, 0x6cffff006bffff, 0x6effff006dffff, 0x70ffff006fffff, 0x72ffff0071ffff, 0x74ffff0073ffff, 0xffff0075ffffffff, 0x780077ffff0076, 0x7affffffff0079, 0xffffffff007bffff, 0xffffffffffff007c, 0xffffffffffff007d, 0xffff007effffffff, 0xffffffff007fffff, 0xffff00810080ffff, 0xffff0082ffffffff, 0x84ffff0083ffff, 0xffffffff0085ffff, 0xffffffffffff0086, 0xffffffff0087ffff, 0xffffffffffff0088, 0xffff008affff0089, 0xffffffff008bffff, 0x8dffff008cffff, 0xffffffffffffffff, 0xffff008f008effff, 0x92ffff00910090, 0xffff0094ffff0093, 0xffff0096ffff0095, 0xffff0098ffff0097, 0xffff009affff0099, 0x9dffff009c009b, 0x9fffff009effff, 0xa1ffff00a0ffff, 0xa3ffff00a2ffff, 0xa5ffff00a4ffff, 0xa700a6ffff05d1, 0xffffffff00a8ffff, 0xaaffff00a9ffff, 0xacffff00abffff, 0xaeffff00adffff, 0xb0ffff00afffff, 0xb2ffff00b1ffff, 0xb4ffff00b3ffff, 0xb6ffff00b5ffff, 0xb8ffff00b7ffff, 0xbaffff00b9ffff, 0xbcffff00bbffff, 0xbdffffffffffff, 0xbfffff00beffff, 0xc1ffff00c0ffff, 0xc3ffff00c2ffff, 0xc5ffff00c4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc7ffffffff00c6, 0xffff00c9ffff00c8, 0xcaffffffffffff, 0xccffff00cbffff, 0xceffff00cdffff, 0xd200d100d000cf, 0xd500d4ffff00d3, 0xd7ffff00d6ffff, 0xffffffffffff00d8, 0xdbffff00da00d9, 0xffff00dd00dcffff, 0xe100e000df00de, 0xe3ffffffff00e2, 0xffff00e500e4ffff, 0xffffffff00e6ffff, 0xffffffffffffffff, 0xffffffff00e7ffff, 0xea00e9ffff00e8, 0xebffffffffffff, 0xef00ee00ed00ec, 0xffffffffffff00f0, 0xffff00f1ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00f300f2ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff00f4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf6ffff00f5ffff, 0xf7ffffffffffff, 0xf8ffffffffffff, 0xffffffff00fa00f9, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff05cb, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfe00fd00fc00fb, 0x101010000ff05ce, 0x105010401030102, 0x109010801070106, 0x10d010c010b010a, 0x1110110010f010e, 0x115011401130112, 0x119011801170116, 0xffff011c011b011a, 0xffffffff011e011d, 0x1210120011fffff, 0x123ffff0122ffff, 0x125ffff0124ffff, 0x127ffff0126ffff, 0x129ffff0128ffff, 0x12bffff012affff, 0x12dffff012cffff, 0x1310130012f012e, 0xffffffff0132ffff, 0x134ffffffff0133, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x138013701360135, 0x13c013b013a0139, 0x140013f013e013d, 0x144014301420141, 0x148014701460145, 0x14c014b014a0149, 0x150014f014e014d, 0x154015301520151, 0x158015701560155, 0x15c015b015a0159, 0x160015f015e015d, 0x164016301620161, 0x166ffff0165ffff, 0x168ffff0167ffff, 0x16affff0169ffff, 0x16cffff016bffff, 0x16effff016dffff, 0x170ffff016fffff, 0x172ffff0171ffff, 0x174ffff0173ffff, 0xffffffff0175ffff, 0xffffffffffffffff, 0x176ffffffffffff, 0x178ffff0177ffff, 0x17affff0179ffff, 0x17cffff017bffff, 0x17effff017dffff, 0x180ffff017fffff, 0x182ffff0181ffff, 0x184ffff0183ffff, 0x186ffff0185ffff, 0x188ffff0187ffff, 0x18affff0189ffff, 0x18cffff018bffff, 0x18effff018dffff, 0x190ffff018fffff, 0xffff0191ffffffff, 0xffff0193ffff0192, 0xffff0195ffff0194, 0x1980197ffff0196, 0x19affff0199ffff, 0x19cffff019bffff, 0x19effff019dffff, 0x1a0ffff019fffff, 0x1a2ffff01a1ffff, 0x1a4ffff01a3ffff, 0x1a6ffff01a5ffff, 0x1a8ffff01a7ffff, 0x1aaffff01a9ffff, 0x1acffff01abffff, 0x1aeffff01adffff, 0x1b0ffff01afffff, 0x1b2ffff01b1ffff, 0x1b4ffff01b3ffff, 0x1b6ffff01b5ffff, 0x1b8ffff01b7ffff, 0x1baffff01b9ffff, 0x1bcffff01bbffff, 0x1beffff01bdffff, 0x1c0ffff01bfffff, 0x1c2ffff01c1ffff, 0x1c4ffff01c3ffff, 0x1c6ffff01c5ffff, 0x1c8ffff01c7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cb01ca01c9ffff, 0x1cf01ce01cd01cc, 0x1d301d201d101d0, 0x1d701d601d501d4, 0x1db01da01d901d8, 0x1df01de01dd01dc, 0x1e301e201e101e0, 0x1e701e601e501e4, 0x1eb01ea01e901e8, 0x5bd01ee01ed01ec, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f201f101f001ef, 0x1f601f501f401f3, 0x1fa01f901f801f7, 0x1fe01fd01fc01fb, 0x2020201020001ff, 0x206020502040203, 0x20a020902080207, 0x20e020d020c020b, 0x21202110210020f, 0x216021502140213, 0xffff021902180217, 0x21c021b021affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x220021f021e021d, 0xffffffff02220221, 0x226022502240223, 0x22a022902280227, 0xffffffffffff022b, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff022cffff, 0xffffffff022dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff022effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x230ffff022fffff, 0x232ffff0231ffff, 0x234ffff0233ffff, 0x236ffff0235ffff, 0x238ffff0237ffff, 0x23affff0239ffff, 0x23cffff023bffff, 0x23effff023dffff, 0x240ffff023fffff, 0x242ffff0241ffff, 0x244ffff0243ffff, 0x246ffff0245ffff, 0x248ffff0247ffff, 0x24affff0249ffff, 0x24cffff024bffff, 0x24effff024dffff, 0x250ffff024fffff, 0x252ffff0251ffff, 0x254ffff0253ffff, 0x256ffff0255ffff, 0x258ffff0257ffff, 0x25affff0259ffff, 0x25cffff025bffff, 0x25effff025dffff, 0x260ffff025fffff, 0x262ffff0261ffff, 0x264ffff0263ffff, 0x266ffff0265ffff, 0x268ffff0267ffff, 0x26affff0269ffff, 0x26cffff026bffff, 0x26effff026dffff, 0x270ffff026fffff, 0x272ffff0271ffff, 0x274ffff0273ffff, 0x276ffff0275ffff, 0x278ffff0277ffff, 0x5d505d30279ffff, 0x27a05db05d905d7, 0xffffffffffffffff, 0x27cffff027bffff, 0x27effff027dffff, 0x280ffff027fffff, 0x282ffff0281ffff, 0x284ffff0283ffff, 0x286ffff0285ffff, 0x288ffff0287ffff, 0x28affff0289ffff, 0x28cffff028bffff, 0x28effff028dffff, 0x290ffff028fffff, 0x292ffff0291ffff, 0x294ffff0293ffff, 0x296ffff0295ffff, 0x298ffff0297ffff, 0x29affff0299ffff, 0x29cffff029bffff, 0x29effff029dffff, 0x2a0ffff029fffff, 0x2a2ffff02a1ffff, 0x2a4ffff02a3ffff, 0x2a6ffff02a5ffff, 0x2a8ffff02a7ffff, 0x2aaffff02a9ffff, 0x2ae02ad02ac02ab, 0x2b202b102b002af, 0xffffffffffffffff, 0xffffffffffffffff, 0x2b602b502b402b3, 0xffffffff02b802b7, 0xffffffffffffffff, 0xffffffffffffffff, 0x2bc02bb02ba02b9, 0x2c002bf02be02bd, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c402c302c202c1, 0x2c802c702c602c5, 0xffffffffffffffff, 0xffffffffffffffff, 0x2cc02cb02ca02c9, 0xffffffff02ce02cd, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d005df02cf05dd, 0x2d205e502d105e2, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d602d502d402d3, 0x2da02d902d802d7, 0xffffffffffffffff, 0xffffffffffffffff, 0x2de02dd02dc02db, 0x2e202e102e002df, 0x2e602e502e402e3, 0xffffffff02e802e7, 0x60c060a06080606, 0x61406120610060e, 0x61c061a06180616, 0x62406220620061e, 0x62c062a06280626, 0x63406320630062e, 0x63c063a06380636, 0x64406420640063e, 0x64c064a06480646, 0x65406520650064e, 0x65c065a06580656, 0x66406620660065e, 0x666067203020301, 0x67e05e8ffff0674, 0xffffffffffffffff, 0xffff0304ffff0668, 0x66a0676ffffffff, 0x68105eaffff0678, 0xffffffffffffffff, 0xffffffffffff066c, 0x5ef05ec03070306, 0x5f405f2ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5fa05f703090308, 0x60105ff030a05fd, 0xffffffffffffffff, 0xffffffffffffffff, 0x66e067affffffff, 0x6840604ffff067c, 0xffffffffffffffff, 0xffffffffffff0670, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff030cffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x310030f030e030d, 0x314031303120311, 0x318031703160315, 0x31c031b031a0319, 0xffffffffffffffff, 0xffffffffffff031d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3210320031f031e, 0x325032403230322, 0x329032803270326, 0x32d032c032b032a, 0x3310330032f032e, 0x335033403330332, 0xffffffff03370336, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x33b033a03390338, 0x33f033e033d033c, 0x343034203410340, 0x347034603450344, 0x34b034a03490348, 0x34f034e034d034c, 0x353035203510350, 0x357035603550354, 0x35b035a03590358, 0x35f035e035d035c, 0x363036203610360, 0x367036603650364, 0xffffffff0368ffff, 0xffff036a0369ffff, 0xffff036cffff036b, 0xffffffffffff036d, 0x36effffffffffff, 0xffff036fffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x371ffff0370ffff, 0x373ffff0372ffff, 0x375ffff0374ffff, 0x377ffff0376ffff, 0x379ffff0378ffff, 0x37bffff037affff, 0x37dffff037cffff, 0x37fffff037effff, 0x381ffff0380ffff, 0x383ffff0382ffff, 0x385ffff0384ffff, 0x387ffff0386ffff, 0x389ffff0388ffff, 0x38bffff038affff, 0x38dffff038cffff, 0x38fffff038effff, 0x391ffff0390ffff, 0x393ffff0392ffff, 0x395ffff0394ffff, 0x397ffff0396ffff, 0x399ffff0398ffff, 0x39bffff039affff, 0x39dffff039cffff, 0x39fffff039effff, 0x3a1ffff03a0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03a3ffff03a2, 0x3a4ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3a803a703a603a5, 0x3ac03ab03aa03a9, 0x3b003af03ae03ad, 0x3b403b303b203b1, 0x3b803b703b603b5, 0x3bc03bb03ba03b9, 0x3c003bf03be03bd, 0x3c403c303c203c1, 0x3c803c703c603c5, 0x3cbffff03ca03c9, 0xffffffffffffffff, 0xffffffff03ccffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ceffff03cdffff, 0x3d0ffff03cfffff, 0x3d2ffff03d1ffff, 0x3d4ffff03d3ffff, 0x3d6ffff03d5ffff, 0x3d8ffff03d7ffff, 0x3daffff03d9ffff, 0x3dcffff03dbffff, 0x3deffff03ddffff, 0x3e0ffff03dfffff, 0x3e2ffff03e1ffff, 0xffffffff03e3ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3e5ffff03e4ffff, 0x3e7ffff03e6ffff, 0x3e9ffff03e8ffff, 0x3ebffff03eaffff, 0x3edffff03ecffff, 0x3efffff03eeffff, 0x3f1ffff03f0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3f2ffffffffffff, 0x3f4ffff03f3ffff, 0x3f6ffff03f5ffff, 0x3f8ffff03f7ffff, 0x3f9ffffffffffff, 0x3fbffff03faffff, 0x3fdffff03fcffff, 0x3ffffff03feffff, 0x401ffff0400ffff, 0x403ffff0402ffff, 0x405ffff0404ffff, 0x407ffff0406ffff, 0x409ffff0408ffff, 0x40bffff040affff, 0x40dffff040cffff, 0x40fffff040effff, 0x411ffff0410ffff, 0x413ffff0412ffff, 0x415ffff0414ffff, 0x417ffff0416ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0418ffffffff, 0x41affffffff0419, 0x41cffff041bffff, 0x41effff041dffff, 0xffffffffffffffff, 0xffffffffffff041f, 0x421ffff0420ffff, 0x423ffffffff0422, 0x425ffff0424ffff, 0x427ffff0426ffff, 0x429ffff0428ffff, 0x42bffff042affff, 0xffffffff042cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x42effff042dffff, 0x430ffff042fffff, 0x432ffff0431ffff, 0x434ffff0433ffff, 0xffffffffffffffff, 0xffff0436ffff0435, 0xffffffffffffffff, 0xffffffff0437ffff, 0x438ffffffffffff, 0xffffffff0439ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff043affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x43bffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x43f043e043d043c, 0x443044204410440, 0x447044604450444, 0x44b044a04490448, 0x44f044e044d044c, 0x453045204510450, 0x457045604550454, 0x45b045a04590458, 0x45f045e045d045c, 0x463046204610460, 0x467046604650464, 0x46b046a04690468, 0x46f046e046d046c, 0x473047204710470, 0x477047604750474, 0x47b047a04790478, 0x47f047e047d047c, 0x483048204810480, 0x487048604850484, 0x48b048a04890488, 0x5b305b105af05ad, 0xffff05bb05b905b6, 0xffffffffffffffff, 0xffffffffffffffff, 0x5bfffffffffffff, 0x5c705c505c305c1, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x48e048d048cffff, 0x49204910490048f, 0x496049504940493, 0x49a049904980497, 0x49e049d049c049b, 0x4a204a104a0049f, 0xffff04a504a404a3, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4a904a804a704a6, 0x4ad04ac04ab04aa, 0x4b104b004af04ae, 0x4b504b404b304b2, 0x4b904b804b704b6, 0x4bd04bc04bb04ba, 0x4c104c004bf04be, 0x4c504c404c304c2, 0x4c904c804c704c6, 0x4cd04cc04cb04ca, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d104d004cf04ce, 0x4d504d404d304d2, 0x4d904d804d704d6, 0x4dd04dc04db04da, 0x4e104e004df04de, 0x4e504e404e304e2, 0x4e904e804e704e6, 0x4ed04ec04eb04ea, 0x4f104f004ef04ee, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4f2ffffffffffff, 0x4f604f504f404f3, 0x4fa04f904f804f7, 0x4fdffff04fc04fb, 0x501050004ff04fe, 0x505050405030502, 0x509050805070506, 0x50cffff050b050a, 0x510050f050e050d, 0x513ffff05120511, 0xffffffffffff0514, 0x518051705160515, 0x51c051b051a0519, 0x520051f051e051d, 0x524052305220521, 0x528052705260525, 0x52c052b052a0529, 0x530052f052e052d, 0x534053305320531, 0x538053705360535, 0x53c053b053a0539, 0x540053f053e053d, 0x544054305420541, 0xffff054705460545, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x54b054a05490548, 0x54f054e054d054c, 0x553055205510550, 0x557055605550554, 0x55b055a05590558, 0x55f055e055d055c, 0x563056205610560, 0x567056605650564, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x56b056a05690568, 0x56f056e056d056c, 0x573057205710570, 0x577057605750574, 0x57b057a05790578, 0x57f057e057d057c, 0x583058205810580, 0x587058605850584, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5890588ffffffff, 0x58d058c058b058a, 0x5910590058f058e, 0x595059405930592, 0x599059805970596, 0x59d059c059b059a, 0x5a105a0059f059e, 0x5a505a405a305a2, 0x5a905a805a705a6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +000000000000010000000000000004800000000000000F80", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000300020001000000070006000500040000000A00090008000D000C000B0000 +00110010000F000E00000014001300120000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001500000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000017000000000000001900180000001D001C001B001A00210020001F001E00000000000000000000002300220000 +000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000280027002600250000000000000029 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002B002A0000002F002E002D002C00000000000000000000000000000000 +000000000000000000000031003000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000330000 +000000000000000000000000000000000000000000000000000000000000000000360000003500340000003700000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003A00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003C003B0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000200010000FFFF0006000500040003000A000900080007000E000D000C000B +001200110010000F0016001500140013FFFF001900180017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AAFFFFFFFFFFFF001E001D001C001B002200210020001F +0026002500240023002A002900280027002E002D002C002BFFFF00310030002F00350034003300320039003800370036 +003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003EFFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF +0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004AFFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF0050FFFF +0053FFFF005205AC0055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B +005EFFFF05C9005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF +006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF +FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D +FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF +FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF +FFFFFFFFFFFFFFFFFFFF008F008EFFFF0092FFFF00910090FFFF0094FFFF0093FFFF0096FFFF0095FFFF0098FFFF0097 +FFFF009AFFFF0099009DFFFF009C009B009FFFFF009EFFFF00A1FFFF00A0FFFF00A3FFFF00A2FFFF00A5FFFF00A4FFFF +00A700A6FFFF05D1FFFFFFFF00A8FFFF00AAFFFF00A9FFFF00ACFFFF00ABFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF +00B2FFFF00B1FFFF00B4FFFF00B3FFFF00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF +00BDFFFFFFFFFFFF00BFFFFF00BEFFFF00C1FFFF00C0FFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00C7FFFFFFFF00C6FFFF00C9FFFF00C800CAFFFFFFFFFFFF00CCFFFF00CBFFFF00CEFFFF00CDFFFF +00D200D100D000CF00D500D4FFFF00D300D7FFFF00D6FFFFFFFFFFFFFFFF00D800DBFFFF00DA00D9FFFF00DD00DCFFFF +00E100E000DF00DE00E3FFFFFFFF00E2FFFF00E500E4FFFFFFFFFFFF00E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFF +00EA00E9FFFF00E800EBFFFFFFFFFFFF00EF00EE00ED00ECFFFFFFFFFFFF00F0FFFF00F1FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F300F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFF00F5FFFF00F7FFFFFFFFFFFF +00F8FFFFFFFFFFFFFFFFFFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF05CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00FE00FD00FC00FB0101010000FF05CE01050104010301020109010801070106010D010C010B010A +01110110010F010E01150114011301120119011801170116FFFF011C011B011AFFFFFFFF011E011D01210120011FFFFF +0123FFFF0122FFFF0125FFFF0124FFFF0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF +01310130012F012EFFFFFFFF0132FFFF0134FFFFFFFF0133FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0138013701360135013C013B013A0139 +0140013F013E013D01440143014201410148014701460145014C014B014A01490150014F014E014D0154015301520151 +0158015701560155015C015B015A01590160015F015E015D01640163016201610166FFFF0165FFFF0168FFFF0167FFFF +016AFFFF0169FFFF016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF +FFFFFFFF0175FFFFFFFFFFFFFFFFFFFF0176FFFFFFFFFFFF0178FFFF0177FFFF017AFFFF0179FFFF017CFFFF017BFFFF +017EFFFF017DFFFF0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF +018AFFFF0189FFFF018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFFFFFF0191FFFFFFFFFFFF0193FFFF0192 +FFFF0195FFFF019401980197FFFF0196019AFFFF0199FFFF019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF +01A2FFFF01A1FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF +01AEFFFF01ADFFFF01B0FFFF01AFFFFF01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF +01BAFFFF01B9FFFF01BCFFFF01BBFFFF01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF +01C6FFFF01C5FFFF01C8FFFF01C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CB01CA01C9FFFF01CF01CE01CD01CC01D301D201D101D001D701D601D501D4 +01DB01DA01D901D801DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E805BD01EE01ED01EC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F201F101F001EF01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203 +020A020902080207020E020D020C020B021202110210020F0216021502140213FFFF021902180217021C021B021AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0220021F021E021DFFFFFFFF022202210226022502240223022A022902280227 +FFFFFFFFFFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFF022FFFFF0232FFFF0231FFFF +0234FFFF0233FFFF0236FFFF0235FFFF0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF +0240FFFF023FFFFF0242FFFF0241FFFF0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF +024CFFFF024BFFFF024EFFFF024DFFFF0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF +0258FFFF0257FFFF025AFFFF0259FFFF025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF +0264FFFF0263FFFF0266FFFF0265FFFF0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF +0270FFFF026FFFFF0272FFFF0271FFFF0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFF05D505D30279FFFF +027A05DB05D905D7FFFFFFFFFFFFFFFF027CFFFF027BFFFF027EFFFF027DFFFF0280FFFF027FFFFF0282FFFF0281FFFF +0284FFFF0283FFFF0286FFFF0285FFFF0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF +0290FFFF028FFFFF0292FFFF0291FFFF0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF +029CFFFF029BFFFF029EFFFF029DFFFF02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF +02A8FFFF02A7FFFF02AAFFFF02A9FFFF02AE02AD02AC02AB02B202B102B002AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B602B502B402B3FFFFFFFF02B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BC02BB02BA02B902C002BF02BE02BD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C402C302C202C102C802C702C602C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CC02CB02CA02C9FFFFFFFF02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D005DF02CF05DD02D205E502D105E2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D602D502D402D302DA02D902D802D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02DE02DD02DC02DB02E202E102E002DF02E602E502E402E3FFFFFFFF02E802E7060C060A06080606061406120610060E +061C061A06180616062406220620061E062C062A06280626063406320630062E063C063A06380636064406420640063E +064C064A06480646065406520650064E065C065A06580656066406620660065E0666067203020301067E05E8FFFF0674 +FFFFFFFFFFFFFFFFFFFF0304FFFF0668066A0676FFFFFFFF068105EAFFFF0678FFFFFFFFFFFFFFFFFFFFFFFFFFFF066C +05EF05EC0307030605F405F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FA05F703090308060105FF030A05FD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF066E067AFFFFFFFF06840604FFFF067CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0670 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0310030F030E030D03140313031203110318031703160315031C031B031A0319FFFFFFFFFFFFFFFFFFFFFFFFFFFF031D +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03210320031F031E03250324032303220329032803270326032D032C032B032A03310330032F032E0335033403330332 +FFFFFFFF03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033B033A03390338033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C +03530352035103500357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364 +FFFFFFFF0368FFFFFFFF036A0369FFFFFFFF036CFFFF036BFFFFFFFFFFFF036D036EFFFFFFFFFFFFFFFF036FFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFF0370FFFF0373FFFF0372FFFF0375FFFF0374FFFF0377FFFF0376FFFF +0379FFFF0378FFFF037BFFFF037AFFFF037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF +0385FFFF0384FFFF0387FFFF0386FFFF0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF +0391FFFF0390FFFF0393FFFF0392FFFF0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF +039DFFFF039CFFFF039FFFFF039EFFFF03A1FFFF03A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A3FFFF03A2 +03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A803A703A603A503AC03AB03AA03A9 +03B003AF03AE03AD03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C1 +03C803C703C603C503CBFFFF03CA03C9FFFFFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CEFFFF03CDFFFF03D0FFFF03CFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF +03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF +03E2FFFF03E1FFFFFFFFFFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E5FFFF03E4FFFF03E7FFFF03E6FFFF03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF +03F1FFFF03F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F2FFFFFFFFFFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF03F8FFFF03F7FFFF03F9FFFFFFFFFFFF03FBFFFF03FAFFFF +03FDFFFF03FCFFFF03FFFFFF03FEFFFF0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF +0409FFFF0408FFFF040BFFFF040AFFFF040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF +0415FFFF0414FFFF0417FFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFFFFFF041AFFFFFFFF0419 +041CFFFF041BFFFF041EFFFF041DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041F0421FFFF0420FFFF0423FFFFFFFF0422 +0425FFFF0424FFFF0427FFFF0426FFFF0429FFFF0428FFFF042BFFFF042AFFFFFFFFFFFF042CFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFF0434FFFF0433FFFFFFFFFFFFFFFFFFFF +FFFF0436FFFF0435FFFFFFFFFFFFFFFFFFFFFFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF0439FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043AFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043F043E043D043C04430442044104400447044604450444044B044A04490448 +044F044E044D044C04530452045104500457045604550454045B045A04590458045F045E045D045C0463046204610460 +0467046604650464046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478 +047F047E047D047C04830482048104800487048604850484048B048A0489048805B305B105AF05ADFFFF05BB05B905B6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BFFFFFFFFFFFFF05C705C505C305C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF048E048D048CFFFF049204910490048F0496049504940493049A049904980497 +049E049D049C049B04A204A104A0049FFFFF04A504A404A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04A904A804A704A604AD04AC04AB04AA +04B104B004AF04AE04B504B404B304B204B904B804B704B604BD04BC04BB04BA04C104C004BF04BE04C504C404C304C2 +04C904C804C704C604CD04CC04CB04CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D104D004CF04CE04D504D404D304D204D904D804D704D604DD04DC04DB04DA +04E104E004DF04DE04E504E404E304E204E904E804E704E604ED04EC04EB04EA04F104F004EF04EEFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F2FFFFFFFFFFFF +04F604F504F404F304FA04F904F804F704FDFFFF04FC04FB0501050004FF04FE05050504050305020509050805070506 +050CFFFF050B050A0510050F050E050D0513FFFF05120511FFFFFFFFFFFF05140518051705160515051C051B051A0519 +0520051F051E051D05240523052205210528052705260525052C052B052A05290530052F052E052D0534053305320531 +0538053705360535053C053B053A05390540053F053E053D0544054305420541FFFF054705460545FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054B054A05490548054F054E054D054C05530552055105500557055605550554 +055B055A05590558055F055E055D055C05630562056105600567056605650564FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056B056A05690568056F056E056D056C05730572057105700577057605750574 +057B057A05790578057F057E057D057C05830582058105800587058605850584FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +05890588FFFFFFFF058D058C058B058A05910590058F058E05950594059305920599059805970596059D059C059B059A +05A105A0059F059E05A505A405A305A205A905A805A705A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10112 bytes -enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xec0], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x2000000010000, 0x6000500040003, 0x80007, 0xb000a00090000, 0xf000e000d000c, 0x1200110010, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14001300000000, 0x0, 0x0, 0x16001500000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1700000000, 0x0, 0x1b001a00190018, 0x1f001e001d001c, 0x0, 0x2200210020, 0x0, 0x0, 0x24002300000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28002700260025, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2a00290000, 0x2e002d002c002b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0x0, 0x0, 0x0, 0x30, 0x0, 0x0, 0x0, 0x0, 0x33003200000031, 0x3500340000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3600000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x380000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1d001c001b001a, 0x210020001f001e, 0x25002400230022, 0x29002800270026, 0x2d002c002b002a, 0xffff0030002f002e, 0x34003300320031, 0x599003700360035, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0039ffff0038, 0xffff003bffff003a, 0xffff003dffff003c, 0xffff003fffff003e, 0xffff0041ffff0040, 0xffff0043ffff0042, 0xffff0045ffff0044, 0xffff0047ffff0046, 0xffff0049ffff0048, 0xffff004bffff004a, 0xffff004dffff004c, 0xffff004fffff004e, 0xffff0051ffff059a, 0xffff0053ffff0052, 0x55ffff0054ffff, 0x57ffff0056ffff, 0x59ffff0058ffff, 0x5bffff005affff, 0xffff005c05a9ffff, 0xffff005effff005d, 0xffff0060ffff005f, 0xffff0062ffff0061, 0xffff0064ffff0063, 0xffff0066ffff0065, 0xffff0068ffff0067, 0xffff006affff0069, 0xffff006cffff006b, 0xffff006effff006d, 0xffff0070ffff006f, 0xffff0072ffff0071, 0x75ffff00740073, 0xffffffff0076ffff, 0xffff00780077ffff, 0x7b007affff0079, 0x7e007d007cffff, 0x80007fffffffff, 0x83ffff00820081, 0x860085ffff0084, 0xffffffffffff0087, 0x8affff00890088, 0xffff008cffff008b, 0x8f008effff008d, 0xffffffff0090ffff, 0x930092ffff0091, 0x9600950094ffff, 0x98ffff0097ffff, 0xffffffffffff0099, 0xffffffffffff009a, 0xffffffffffffffff, 0x9dffff009c009b, 0xa0009fffff009e, 0xa2ffff00a1ffff, 0xa4ffff00a3ffff, 0xa6ffff00a5ffff, 0xa8ffff00a7ffff, 0xffff00a9ffffffff, 0xffff00abffff00aa, 0xffff00adffff00ac, 0xffff00afffff00ae, 0xffff00b1ffff00b0, 0xffff00b300b205ac, 0xb600b5ffff00b4, 0xffff00b8ffff00b7, 0xffff00baffff00b9, 0xffff00bcffff00bb, 0xffff00beffff00bd, 0xffff00c0ffff00bf, 0xffff00c2ffff00c1, 0xffff00c4ffff00c3, 0xffff00c6ffff00c5, 0xffff00c8ffff00c7, 0xffff00caffff00c9, 0xffff00ccffff00cb, 0xffff00ceffff00cd, 0xffff00d0ffff00cf, 0xffff00d2ffff00d1, 0xffff00d4ffff00d3, 0xffffffffffffffff, 0xd600d5ffffffff, 0xffff00d800d7ffff, 0xdaffff00d9ffff, 0xffff00dd00dc00db, 0xffff00dfffff00de, 0xffff00e1ffff00e0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00e3ffff00e2, 0xffff00e4ffffffff, 0xffffffffffffffff, 0xe5ffffffffffff, 0xffffffffffffffff, 0xffff00e6ffffffff, 0xffff00e900e800e7, 0xec00ebffff00ea, 0xef00ee00ed05aa, 0xf300f200f100f0, 0xf700f600f500f4, 0xfb00fa00f900f8, 0xfeffff00fd00fc, 0x1020101010000ff, 0x106010501040103, 0xffffffffffffffff, 0xffffffffffff05ab, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x107ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0109ffff0108, 0xffff010bffff010a, 0xffff010dffff010c, 0xffff010fffff010e, 0xffff0111ffff0110, 0xffff0113ffff0112, 0xffffffffffffffff, 0x115ffffffff0114, 0xffff01170116ffff, 0x11a01190118ffff, 0x11e011d011c011b, 0x12201210120011f, 0x126012501240123, 0x12a012901280127, 0x12e012d012c012b, 0x13201310130012f, 0x136013501340133, 0x13a013901380137, 0x13e013d013c013b, 0x14201410140013f, 0x146014501440143, 0x14a014901480147, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff014cffff014b, 0xffff014effff014d, 0xffff0150ffff014f, 0xffff0152ffff0151, 0xffff0154ffff0153, 0xffff0156ffff0155, 0xffff0158ffff0157, 0xffff015affff0159, 0xffffffffffff015b, 0xffffffffffffffff, 0xffff015cffffffff, 0xffff015effff015d, 0xffff0160ffff015f, 0xffff0162ffff0161, 0xffff0164ffff0163, 0xffff0166ffff0165, 0xffff0168ffff0167, 0xffff016affff0169, 0xffff016cffff016b, 0xffff016effff016d, 0xffff0170ffff016f, 0xffff0172ffff0171, 0xffff0174ffff0173, 0xffff0176ffff0175, 0x179ffff01780177, 0x17bffff017affff, 0x17dffff017cffff, 0xffffffff017effff, 0xffff0180ffff017f, 0xffff0182ffff0181, 0xffff0184ffff0183, 0xffff0186ffff0185, 0xffff0188ffff0187, 0xffff018affff0189, 0xffff018cffff018b, 0xffff018effff018d, 0xffff0190ffff018f, 0xffff0192ffff0191, 0xffff0194ffff0193, 0xffff0196ffff0195, 0xffff0198ffff0197, 0xffff019affff0199, 0xffff019cffff019b, 0xffff019effff019d, 0xffff01a0ffff019f, 0xffff01a2ffff01a1, 0xffff01a4ffff01a3, 0xffff01a6ffff01a5, 0xffff01a8ffff01a7, 0xffff01aaffff01a9, 0xffff01acffff01ab, 0xffff01aeffff01ad, 0x1b101b001afffff, 0x1b501b401b301b2, 0x1b901b801b701b6, 0x1bd01bc01bb01ba, 0x1c101c001bf01be, 0x1c501c401c301c2, 0x1c901c801c701c6, 0x1cd01cc01cb01ca, 0x1d101d001cf01ce, 0xffff01d401d301d2, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5a3ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1d801d701d601d5, 0x1dc01db01da01d9, 0x1e001df01de01dd, 0x1e401e301e201e1, 0x1e801e701e601e5, 0x1ec01eb01ea01e9, 0x1f001ef01ee01ed, 0x1f401f301f201f1, 0x1f801f701f601f5, 0x1fbffff01fa01f9, 0xffffffffffffffff, 0xffffffff01fcffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x20001ff01fe01fd, 0x204020302020201, 0x208020702060205, 0x20c020b020a0209, 0x210020f020e020d, 0x214021302120211, 0x218021702160215, 0x21c021b021a0219, 0x220021f021e021d, 0x224022302220221, 0x228022702260225, 0x22c022b022a0229, 0x230022f022e022d, 0x234023302320231, 0x238023702360235, 0x23c023b023a0239, 0x240023f023e023d, 0x244024302420241, 0x248024702460245, 0x24c024b024a0249, 0x250024f024e024d, 0xffffffff02520251, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x256025502540253, 0x25a025902580257, 0x25e025d025c025b, 0x26202610260025f, 0x266026502640263, 0x26a026902680267, 0x26e026d026c026b, 0x27202710270026f, 0x276027502740273, 0x27a027902780277, 0xffff027d027c027b, 0x280027f027effff, 0xffff0282ffff0281, 0xffff0284ffff0283, 0xffff0286ffff0285, 0xffff0288ffff0287, 0xffff028affff0289, 0xffff028cffff028b, 0xffff028effff028d, 0xffff0290ffff028f, 0xffff0292ffff0291, 0xffff0294ffff0293, 0xffff0296ffff0295, 0xffff0298ffff0297, 0xffff029affff0299, 0xffff029cffff029b, 0xffff029effff029d, 0xffff02a0ffff029f, 0xffff02a2ffff02a1, 0xffff02a4ffff02a3, 0xffff02a6ffff02a5, 0xffff02a8ffff02a7, 0xffff02aaffff02a9, 0xffff02acffff02ab, 0xffff02aeffff02ad, 0xffff02b0ffff02af, 0xffff02b2ffff02b1, 0xffff02b4ffff02b3, 0xffff02b6ffff02b5, 0xffff02b8ffff02b7, 0xffff02baffff02b9, 0xffff02bcffff02bb, 0xffff02beffff02bd, 0xffff02c0ffff02bf, 0xffff02c2ffff02c1, 0xffff02c4ffff02c3, 0xffff02c6ffff02c5, 0xffff02c8ffff02c7, 0xffff02caffff02c9, 0x5ae05adffff02cb, 0xffff05b105b005af, 0xffff02ccffffffff, 0xffff02ceffff02cd, 0xffff02d0ffff02cf, 0xffff02d2ffff02d1, 0xffff02d4ffff02d3, 0xffff02d6ffff02d5, 0xffff02d8ffff02d7, 0xffff02daffff02d9, 0xffff02dcffff02db, 0xffff02deffff02dd, 0xffff02e0ffff02df, 0xffff02e2ffff02e1, 0xffff02e4ffff02e3, 0xffff02e6ffff02e5, 0xffff02e8ffff02e7, 0xffff02eaffff02e9, 0xffff02ecffff02eb, 0xffff02eeffff02ed, 0xffff02f0ffff02ef, 0xffff02f2ffff02f1, 0xffff02f4ffff02f3, 0xffff02f6ffff02f5, 0xffff02f8ffff02f7, 0xffff02faffff02f9, 0xffff02fcffff02fb, 0xffffffffffffffff, 0xffffffffffffffff, 0x30002ff02fe02fd, 0x304030303020301, 0xffffffffffffffff, 0xffffffffffffffff, 0x308030703060305, 0xffffffff030a0309, 0xffffffffffffffff, 0xffffffffffffffff, 0x30e030d030c030b, 0x31203110310030f, 0xffffffffffffffff, 0xffffffffffffffff, 0x316031503140313, 0x31a031903180317, 0xffffffffffffffff, 0xffffffffffffffff, 0x31e031d031c031b, 0xffffffff0320031f, 0xffff05b3ffff05b2, 0xffff05b5ffff05b4, 0x322ffff0321ffff, 0x324ffff0323ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x328032703260325, 0x32c032b032a0329, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5c505c405c305c2, 0x5c905c805c705c6, 0x5cd05cc05cb05ca, 0x5d105d005cf05ce, 0x5d505d405d305d2, 0x5d905d805d705d6, 0x5dd05dc05db05da, 0x5e105e005df05de, 0x5e505e405e305e2, 0x5e905e805e705e6, 0x5ed05ec05eb05ea, 0x5f105f005ef05ee, 0x5f205f8ffffffff, 0x5fe05b6ffff05f9, 0x348034703460345, 0xffffffffffff05f3, 0x5f405faffffffff, 0x5ff05b7ffff05fb, 0x34d034c034b034a, 0xffffffffffff05f5, 0x5b905b8ffffffff, 0x5bb05baffffffff, 0x35203510350034f, 0xffffffffffffffff, 0x5bd05bcffffffff, 0x5c005bfffff05be, 0x356035503540353, 0xffffffffffff0357, 0x5f605fcffffffff, 0x60005c1ffff05fd, 0x35b035a03590358, 0xffffffffffff05f7, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff035dffffffff, 0x35f035effffffff, 0xffffffffffffffff, 0xffff0360ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x364036303620361, 0x368036703660365, 0x36c036b036a0369, 0x370036f036e036d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x371ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3730372ffffffff, 0x377037603750374, 0x37b037a03790378, 0x37f037e037d037c, 0x383038203810380, 0x387038603850384, 0x38b038a03890388, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x38f038e038d038c, 0x393039203910390, 0x397039603950394, 0x39b039a03990398, 0x39f039e039d039c, 0x3a303a203a103a0, 0x3a703a603a503a4, 0x3ab03aa03a903a8, 0x3af03ae03ad03ac, 0x3b303b203b103b0, 0x3b703b603b503b4, 0x3bb03ba03b903b8, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3be03bdffff03bc, 0x3c0ffffffff03bf, 0x3c2ffff03c1ffff, 0x3c503c403c3ffff, 0xffff03c7ffff03c6, 0xffffffff03c8ffff, 0xffffffffffffffff, 0x3ca03c9ffffffff, 0xffff03ccffff03cb, 0xffff03ceffff03cd, 0xffff03d0ffff03cf, 0xffff03d2ffff03d1, 0xffff03d4ffff03d3, 0xffff03d6ffff03d5, 0xffff03d8ffff03d7, 0xffff03daffff03d9, 0xffff03dcffff03db, 0xffff03deffff03dd, 0xffff03e0ffff03df, 0xffff03e2ffff03e1, 0xffff03e4ffff03e3, 0xffff03e6ffff03e5, 0xffff03e8ffff03e7, 0xffff03eaffff03e9, 0xffff03ecffff03eb, 0xffff03eeffff03ed, 0xffff03f0ffff03ef, 0xffff03f2ffff03f1, 0xffff03f4ffff03f3, 0xffff03f6ffff03f5, 0xffff03f8ffff03f7, 0xffff03faffff03f9, 0xffff03fcffff03fb, 0xffffffffffffffff, 0x3fdffffffffffff, 0xffffffff03feffff, 0xffff03ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0401ffff0400, 0xffff0403ffff0402, 0xffff0405ffff0404, 0xffff0407ffff0406, 0xffff0409ffff0408, 0xffff040bffff040a, 0xffff040dffff040c, 0xffff040fffff040e, 0xffff0411ffff0410, 0xffff0413ffff0412, 0xffff0415ffff0414, 0xffffffffffff0416, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0418ffff0417, 0xffff041affff0419, 0xffff041cffff041b, 0xffff041effff041d, 0xffff0420ffff041f, 0xffff0422ffff0421, 0xffff0424ffff0423, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0425ffffffff, 0xffff0427ffff0426, 0xffff0429ffff0428, 0xffff042bffff042a, 0xffff042cffffffff, 0xffff042effff042d, 0xffff0430ffff042f, 0xffff0432ffff0431, 0xffff0434ffff0433, 0xffff0436ffff0435, 0xffff0438ffff0437, 0xffff043affff0439, 0xffff043cffff043b, 0xffff043effff043d, 0xffff0440ffff043f, 0xffff0442ffff0441, 0xffff0444ffff0443, 0xffff0446ffff0445, 0xffff0448ffff0447, 0xffff044affff0449, 0xffffffffffffffff, 0xffffffffffffffff, 0x44cffff044bffff, 0xffff044e044dffff, 0xffff0450ffff044f, 0xffff0452ffff0451, 0x453ffffffffffff, 0xffffffff0454ffff, 0xffff0456ffff0455, 0xffff0457ffffffff, 0xffff0459ffff0458, 0xffff045bffff045a, 0xffff045dffff045c, 0xffff045fffff045e, 0x4620461ffff0460, 0xffff046504640463, 0x469046804670466, 0xffff046bffff046a, 0xffff046dffff046c, 0xffff046fffff046e, 0xffff0471ffff0470, 0x475047404730472, 0xffffffff0476ffff, 0xffffffffffffffff, 0xffffffffffff0477, 0xffff0478ffffffff, 0xffffffffffff0479, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff047affff, 0xffffffffffffffff, 0xffffffffffffffff, 0x59f059e059d059c, 0xffff05a205a105a0, 0xffffffffffffffff, 0xffffffffffffffff, 0x5a4ffffffffffff, 0x5a805a705a605a5, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x47d047c047bffff, 0x4810480047f047e, 0x485048404830482, 0x489048804870486, 0x48d048c048b048a, 0x4910490048f048e, 0xffff049404930492, 0xffffffffffffffff, 0x498049704960495, 0x49c049b049a0499, 0x4a0049f049e049d, 0x4a404a304a204a1, 0x4a804a704a604a5, 0x4ac04ab04aa04a9, 0x4b004af04ae04ad, 0x4b404b304b204b1, 0x4b804b704b604b5, 0x4bc04bb04ba04b9, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4c004bf04be04bd, 0x4c404c304c204c1, 0x4c804c704c604c5, 0x4cc04cb04ca04c9, 0x4d004cf04ce04cd, 0x4d404d304d204d1, 0x4d804d704d604d5, 0x4dc04db04da04d9, 0x4e004df04de04dd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4e404e304e204e1, 0x4e804e704e604e5, 0xffff04eb04ea04e9, 0x4ef04ee04ed04ec, 0x4f304f204f104f0, 0x4f704f604f504f4, 0xffff04fa04f904f8, 0x4fe04fd04fc04fb, 0xffff0501050004ff, 0xffffffff05030502, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x507050605050504, 0x50b050a05090508, 0x50f050e050d050c, 0x513051205110510, 0x517051605150514, 0x51b051a05190518, 0x51f051e051d051c, 0x523052205210520, 0x527052605250524, 0x52b052a05290528, 0x52f052e052d052c, 0x533053205310530, 0xffff053605350534, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x53a053905380537, 0x53e053d053c053b, 0x54205410540053f, 0x546054505440543, 0x54a054905480547, 0x54e054d054c054b, 0x55205510550054f, 0x556055505540553, 0x55a055905580557, 0x55e055d055c055b, 0x56205610560055f, 0x566056505640563, 0x56a056905680567, 0x56e056d056c056b, 0x57205710570056f, 0x576057505740573, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x57a057905780577, 0x57e057d057c057b, 0x58205810580057f, 0x586058505840583, 0x58a058905880587, 0x58e058d058c058b, 0x59205910590058f, 0x596059505940593, 0xffffffff05980597, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +000000000000010000000000000004800000000000000EC0", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000200000001000000060005000400030000000000080007000B000A00090000 +000F000E000D000C00000012001100100000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001400130000000000000000000000000000000000000000001600150000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000017000000000000000000000000001B001A00190018001F001E001D001C00000000000000000000002200210020 +000000000000000000000000000000000024002300000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000280027002600250000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002A00290000002E002D002C002B00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000002F0000000000000000000000000000000000000000000000000000000000000030 +000000000000000000000000000000000000000000000000000000000000000000330032000000310000003500340000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003800000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000200010000FFFF0006000500040003000A000900080007000E000D000C000B001200110010000F0016001500140013 +FFFF001900180017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001D001C001B001A00210020001F001E +00250024002300220029002800270026002D002C002B002AFFFF0030002F002E00340033003200310599003700360035 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0039FFFF0038FFFF003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003E +FFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004A +FFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF059AFFFF0053FFFF00520055FFFF0054FFFF0057FFFF0056FFFF +0059FFFF0058FFFF005BFFFF005AFFFFFFFF005C05A9FFFFFFFF005EFFFF005DFFFF0060FFFF005FFFFF0062FFFF0061 +FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006D +FFFF0070FFFF006FFFFF0072FFFF00710075FFFF00740073FFFFFFFF0076FFFFFFFF00780077FFFF007B007AFFFF0079 +007E007D007CFFFF0080007FFFFFFFFF0083FFFF0082008100860085FFFF0084FFFFFFFFFFFF0087008AFFFF00890088 +FFFF008CFFFF008B008F008EFFFF008DFFFFFFFF0090FFFF00930092FFFF0091009600950094FFFF0098FFFF0097FFFF +FFFFFFFFFFFF0099FFFFFFFFFFFF009AFFFFFFFFFFFFFFFF009DFFFF009C009B00A0009FFFFF009E00A2FFFF00A1FFFF +00A4FFFF00A3FFFF00A6FFFF00A5FFFF00A8FFFF00A7FFFFFFFF00A9FFFFFFFFFFFF00ABFFFF00AAFFFF00ADFFFF00AC +FFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF00B300B205AC00B600B5FFFF00B4FFFF00B8FFFF00B7FFFF00BAFFFF00B9 +FFFF00BCFFFF00BBFFFF00BEFFFF00BDFFFF00C0FFFF00BFFFFF00C2FFFF00C1FFFF00C4FFFF00C3FFFF00C6FFFF00C5 +FFFF00C8FFFF00C7FFFF00CAFFFF00C9FFFF00CCFFFF00CBFFFF00CEFFFF00CDFFFF00D0FFFF00CFFFFF00D2FFFF00D1 +FFFF00D4FFFF00D3FFFFFFFFFFFFFFFF00D600D5FFFFFFFFFFFF00D800D7FFFF00DAFFFF00D9FFFFFFFF00DD00DC00DB +FFFF00DFFFFF00DEFFFF00E1FFFF00E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00E3FFFF00E2FFFF00E4FFFFFFFFFFFFFFFFFFFFFFFF00E5FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00E6FFFFFFFFFFFF00E900E800E700EC00EBFFFF00EA00EF00EE00ED05AA00F300F200F100F0 +00F700F600F500F400FB00FA00F900F800FEFFFF00FD00FC01020101010000FF0106010501040103FFFFFFFFFFFFFFFF +FFFFFFFFFFFF05ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0107FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0109FFFF0108FFFF010BFFFF010A +FFFF010DFFFF010CFFFF010FFFFF010EFFFF0111FFFF0110FFFF0113FFFF0112FFFFFFFFFFFFFFFF0115FFFFFFFF0114 +FFFF01170116FFFF011A01190118FFFF011E011D011C011B012201210120011F0126012501240123012A012901280127 +012E012D012C012B013201310130012F0136013501340133013A013901380137013E013D013C013B014201410140013F +0146014501440143014A014901480147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF014CFFFF014BFFFF014EFFFF014DFFFF0150FFFF014FFFFF0152FFFF0151 +FFFF0154FFFF0153FFFF0156FFFF0155FFFF0158FFFF0157FFFF015AFFFF0159FFFFFFFFFFFF015BFFFFFFFFFFFFFFFF +FFFF015CFFFFFFFFFFFF015EFFFF015DFFFF0160FFFF015FFFFF0162FFFF0161FFFF0164FFFF0163FFFF0166FFFF0165 +FFFF0168FFFF0167FFFF016AFFFF0169FFFF016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171 +FFFF0174FFFF0173FFFF0176FFFF01750179FFFF01780177017BFFFF017AFFFF017DFFFF017CFFFFFFFFFFFF017EFFFF +FFFF0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189 +FFFF018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFF0196FFFF0195 +FFFF0198FFFF0197FFFF019AFFFF0199FFFF019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1 +FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01AD +01B101B001AFFFFF01B501B401B301B201B901B801B701B601BD01BC01BB01BA01C101C001BF01BE01C501C401C301C2 +01C901C801C701C601CD01CC01CB01CA01D101D001CF01CEFFFF01D401D301D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01D801D701D601D501DC01DB01DA01D901E001DF01DE01DD01E401E301E201E1 +01E801E701E601E501EC01EB01EA01E901F001EF01EE01ED01F401F301F201F101F801F701F601F501FBFFFF01FA01F9 +FFFFFFFFFFFFFFFFFFFFFFFF01FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF020001FF01FE01FD0204020302020201 +0208020702060205020C020B020A02090210020F020E020D02140213021202110218021702160215021C021B021A0219 +0220021F021E021D02240223022202210228022702260225022C022B022A02290230022F022E022D0234023302320231 +0238023702360235023C023B023A02390240023F023E023D02440243024202410248024702460245024C024B024A0249 +0250024F024E024DFFFFFFFF02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0256025502540253025A025902580257025E025D025C025B026202610260025F +0266026502640263026A026902680267026E026D026C026B027202710270026F0276027502740273027A027902780277 +FFFF027D027C027B0280027F027EFFFFFFFF0282FFFF0281FFFF0284FFFF0283FFFF0286FFFF0285FFFF0288FFFF0287 +FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028FFFFF0292FFFF0291FFFF0294FFFF0293 +FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029BFFFF029EFFFF029DFFFF02A0FFFF029F +FFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7FFFF02AAFFFF02A9FFFF02ACFFFF02AB +FFFF02AEFFFF02ADFFFF02B0FFFF02AFFFFF02B2FFFF02B1FFFF02B4FFFF02B3FFFF02B6FFFF02B5FFFF02B8FFFF02B7 +FFFF02BAFFFF02B9FFFF02BCFFFF02BBFFFF02BEFFFF02BDFFFF02C0FFFF02BFFFFF02C2FFFF02C1FFFF02C4FFFF02C3 +FFFF02C6FFFF02C5FFFF02C8FFFF02C7FFFF02CAFFFF02C905AE05ADFFFF02CBFFFF05B105B005AFFFFF02CCFFFFFFFF +FFFF02CEFFFF02CDFFFF02D0FFFF02CFFFFF02D2FFFF02D1FFFF02D4FFFF02D3FFFF02D6FFFF02D5FFFF02D8FFFF02D7 +FFFF02DAFFFF02D9FFFF02DCFFFF02DBFFFF02DEFFFF02DDFFFF02E0FFFF02DFFFFF02E2FFFF02E1FFFF02E4FFFF02E3 +FFFF02E6FFFF02E5FFFF02E8FFFF02E7FFFF02EAFFFF02E9FFFF02ECFFFF02EBFFFF02EEFFFF02EDFFFF02F0FFFF02EF +FFFF02F2FFFF02F1FFFF02F4FFFF02F3FFFF02F6FFFF02F5FFFF02F8FFFF02F7FFFF02FAFFFF02F9FFFF02FCFFFF02FB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030002FF02FE02FD0304030303020301FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0308030703060305FFFFFFFF030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030E030D030C030B031203110310030F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0316031503140313031A031903180317FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031E031D031C031BFFFFFFFF0320031FFFFF05B3FFFF05B2FFFF05B5FFFF05B40322FFFF0321FFFF0324FFFF0323FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0328032703260325032C032B032A0329FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C505C405C305C205C905C805C705C605CD05CC05CB05CA05D105D005CF05CE +05D505D405D305D205D905D805D705D605DD05DC05DB05DA05E105E005DF05DE05E505E405E305E205E905E805E705E6 +05ED05EC05EB05EA05F105F005EF05EE05F205F8FFFFFFFF05FE05B6FFFF05F90348034703460345FFFFFFFFFFFF05F3 +05F405FAFFFFFFFF05FF05B7FFFF05FB034D034C034B034AFFFFFFFFFFFF05F505B905B8FFFFFFFF05BB05BAFFFFFFFF +035203510350034FFFFFFFFFFFFFFFFF05BD05BCFFFFFFFF05C005BFFFFF05BE0356035503540353FFFFFFFFFFFF0357 +05F605FCFFFFFFFF060005C1FFFF05FD035B035A03590358FFFFFFFFFFFF05F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFFFFFFFFFFFFFF0360FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03640363036203610368036703660365 +036C036B036A03690370036F036E036DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03730372FFFFFFFF +0377037603750374037B037A03790378037F037E037D037C03830382038103800387038603850384038B038A03890388 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +038F038E038D038C03930392039103900397039603950394039B039A03990398039F039E039D039C03A303A203A103A0 +03A703A603A503A403AB03AA03A903A803AF03AE03AD03AC03B303B203B103B003B703B603B503B403BB03BA03B903B8 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03BE03BDFFFF03BC03C0FFFFFFFF03BF03C2FFFF03C1FFFF03C503C403C3FFFFFFFF03C7FFFF03C6FFFFFFFF03C8FFFF +FFFFFFFFFFFFFFFF03CA03C9FFFFFFFFFFFF03CCFFFF03CBFFFF03CEFFFF03CDFFFF03D0FFFF03CFFFFF03D2FFFF03D1 +FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DD +FFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF03E6FFFF03E5FFFF03E8FFFF03E7FFFF03EAFFFF03E9 +FFFF03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1FFFF03F4FFFF03F3FFFF03F6FFFF03F5 +FFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFFFFFFFFFFFFFF03FDFFFFFFFFFFFFFFFFFFFF03FEFFFF +FFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0401FFFF0400FFFF0403FFFF0402 +FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040AFFFF040DFFFF040CFFFF040FFFFF040E +FFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFFFFFFFFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0417FFFF041AFFFF0419FFFF041CFFFF041BFFFF041EFFFF041D +FFFF0420FFFF041FFFFF0422FFFF0421FFFF0424FFFF0423FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFFFFFFFFFF0427FFFF0426FFFF0429FFFF0428FFFF042BFFFF042A +FFFF042CFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFF0434FFFF0433FFFF0436FFFF0435 +FFFF0438FFFF0437FFFF043AFFFF0439FFFF043CFFFF043BFFFF043EFFFF043DFFFF0440FFFF043FFFFF0442FFFF0441 +FFFF0444FFFF0443FFFF0446FFFF0445FFFF0448FFFF0447FFFF044AFFFF0449FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +044CFFFF044BFFFFFFFF044E044DFFFFFFFF0450FFFF044FFFFF0452FFFF04510453FFFFFFFFFFFFFFFFFFFF0454FFFF +FFFF0456FFFF0455FFFF0457FFFFFFFFFFFF0459FFFF0458FFFF045BFFFF045AFFFF045DFFFF045CFFFF045FFFFF045E +04620461FFFF0460FFFF0465046404630469046804670466FFFF046BFFFF046AFFFF046DFFFF046CFFFF046FFFFF046E +FFFF0471FFFF04700475047404730472FFFFFFFF0476FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0477FFFF0478FFFFFFFF +FFFFFFFFFFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF059F059E059D059CFFFF05A205A105A0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A4FFFFFFFFFFFF05A805A705A605A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047D047C047BFFFF04810480047F047E +04850484048304820489048804870486048D048C048B048A04910490048F048EFFFF049404930492FFFFFFFFFFFFFFFF +0498049704960495049C049B049A049904A0049F049E049D04A404A304A204A104A804A704A604A504AC04AB04AA04A9 +04B004AF04AE04AD04B404B304B204B104B804B704B604B504BC04BB04BA04B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C004BF04BE04BD04C404C304C204C1 +04C804C704C604C504CC04CB04CA04C904D004CF04CE04CD04D404D304D204D104D804D704D604D504DC04DB04DA04D9 +04E004DF04DE04DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04E404E304E204E104E804E704E604E5FFFF04EB04EA04E904EF04EE04ED04EC04F304F204F104F004F704F604F504F4 +FFFF04FA04F904F804FE04FD04FC04FBFFFF0501050004FFFFFFFFFF05030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0507050605050504050B050A05090508050F050E050D050C0513051205110510 +0517051605150514051B051A05190518051F051E051D051C05230522052105200527052605250524052B052A05290528 +052F052E052D052C0533053205310530FFFF053605350534FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF053A053905380537053E053D053C053B054205410540053F0546054505440543 +054A054905480547054E054D054C054B055205510550054F0556055505540553055A055905580557055E055D055C055B +056205610560055F0566056505640563056A056905680567056E056D056C056B057205710570056F0576057505740573 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF057A057905780577057E057D057C057B058205810580057F0586058505840583 +058A058905880587058E058D058C058B059205910590058F0596059505940593FFFFFFFF05980597FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10496 bytes -enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xf80], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15000000000000, 0x0, 0x0, 0x16000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1700000000, 0x1900180000, 0x1d001c001b001a, 0x210020001f001e, 0x0, 0x2300220000, 0x0, 0x0, 0x24000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28002700260025, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b002a0000, 0x2f002e002d002c, 0x0, 0x0, 0x0, 0x3100300000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x0, 0x0, 0x0, 0x330000, 0x0, 0x0, 0x0, 0x0, 0x36000000350034, 0x3700000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x39000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3a0000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3c003b, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff001affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5aeffffffffffff, 0x1e001d001c001b, 0x2200210020001f, 0x26002500240023, 0x2a002900280027, 0x2e002d002c002b, 0xffff00310030002f, 0x35003400330032, 0x39003800370036, 0x3bffff003affff, 0x3dffff003cffff, 0x3fffff003effff, 0x41ffff0040ffff, 0x43ffff0042ffff, 0x45ffff0044ffff, 0x47ffff0046ffff, 0x49ffff0048ffff, 0x4bffff004affff, 0x4dffff004cffff, 0x4fffff004effff, 0x51ffff0050ffff, 0x53ffff005205b0, 0x55ffff0054ffff, 0xffff0056ffffffff, 0xffff0058ffff0057, 0xffff005affff0059, 0xffff005cffff005b, 0x5effff05cd005d, 0x60ffff005fffff, 0x62ffff0061ffff, 0x64ffff0063ffff, 0x66ffff0065ffff, 0x68ffff0067ffff, 0x6affff0069ffff, 0x6cffff006bffff, 0x6effff006dffff, 0x70ffff006fffff, 0x72ffff0071ffff, 0x74ffff0073ffff, 0xffff0075ffffffff, 0x780077ffff0076, 0x7affffffff0079, 0xffffffff007bffff, 0xffffffffffff007c, 0xffffffffffff007d, 0xffff007effffffff, 0xffffffff007fffff, 0xffff00810080ffff, 0xffff0082ffffffff, 0x84ffff0083ffff, 0xffffffff0085ffff, 0xffffffffffff0086, 0xffffffff0087ffff, 0xffffffffffff0088, 0xffff008affff0089, 0xffffffff008bffff, 0x8dffff008cffff, 0xffffffffffffffff, 0x910090008f008e, 0x95009400930092, 0xffff0097ffff0096, 0xffff0099ffff0098, 0xffff009bffff009a, 0xffff009dffff009c, 0xa0ffff009f009e, 0xa2ffff00a1ffff, 0xa4ffff00a3ffff, 0xa6ffff00a5ffff, 0xa8ffff00a7ffff, 0xab00aa00a905d5, 0xffffffff00acffff, 0xaeffff00adffff, 0xb0ffff00afffff, 0xb2ffff00b1ffff, 0xb4ffff00b3ffff, 0xb6ffff00b5ffff, 0xb8ffff00b7ffff, 0xbaffff00b9ffff, 0xbcffff00bbffff, 0xbeffff00bdffff, 0xc0ffff00bfffff, 0xc1ffffffffffff, 0xc3ffff00c2ffff, 0xc5ffff00c4ffff, 0xc7ffff00c6ffff, 0xc9ffff00c8ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xcbffffffff00ca, 0xffff00cdffff00cc, 0xceffffffffffff, 0xd0ffff00cfffff, 0xd2ffff00d1ffff, 0xd600d500d400d3, 0xd900d8ffff00d7, 0xdbffff00daffff, 0xffffffffffff00dc, 0xdfffff00de00dd, 0xffff00e100e0ffff, 0xe500e400e300e2, 0xe7ffffffff00e6, 0xffff00e900e8ffff, 0xffffffff00eaffff, 0xffffffffffffffff, 0xffffffff00ebffff, 0xee00edffff00ec, 0xefffffffffffff, 0xf300f200f100f0, 0xffffffffffff00f4, 0xffff00f5ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00f700f6ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff00f8ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfaffff00f9ffff, 0xfbffffffffffff, 0xfcffffffffffff, 0xffffffff00fe00fd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffff05cf, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1020101010000ff, 0x1050104010305d2, 0x109010801070106, 0x10d010c010b010a, 0x1110110010f010e, 0x115011401130112, 0x119011801170116, 0x11d011c011b011a, 0xffff0120011f011e, 0xffffffff01220121, 0x12501240123ffff, 0x127ffff0126ffff, 0x129ffff0128ffff, 0x12bffff012affff, 0x12dffff012cffff, 0x12fffff012effff, 0x131ffff0130ffff, 0x135013401330132, 0xffffffff0136ffff, 0x138ffffffff0137, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x13c013b013a0139, 0x140013f013e013d, 0x144014301420141, 0x148014701460145, 0x14c014b014a0149, 0x150014f014e014d, 0x154015301520151, 0x158015701560155, 0x15c015b015a0159, 0x160015f015e015d, 0x164016301620161, 0x168016701660165, 0x16affff0169ffff, 0x16cffff016bffff, 0x16effff016dffff, 0x170ffff016fffff, 0x172ffff0171ffff, 0x174ffff0173ffff, 0x176ffff0175ffff, 0x178ffff0177ffff, 0xffffffff0179ffff, 0xffffffffffffffff, 0x17affffffffffff, 0x17cffff017bffff, 0x17effff017dffff, 0x180ffff017fffff, 0x182ffff0181ffff, 0x184ffff0183ffff, 0x186ffff0185ffff, 0x188ffff0187ffff, 0x18affff0189ffff, 0x18cffff018bffff, 0x18effff018dffff, 0x190ffff018fffff, 0x192ffff0191ffff, 0x194ffff0193ffff, 0xffff0195ffffffff, 0xffff0197ffff0196, 0xffff0199ffff0198, 0x19c019bffff019a, 0x19effff019dffff, 0x1a0ffff019fffff, 0x1a2ffff01a1ffff, 0x1a4ffff01a3ffff, 0x1a6ffff01a5ffff, 0x1a8ffff01a7ffff, 0x1aaffff01a9ffff, 0x1acffff01abffff, 0x1aeffff01adffff, 0x1b0ffff01afffff, 0x1b2ffff01b1ffff, 0x1b4ffff01b3ffff, 0x1b6ffff01b5ffff, 0x1b8ffff01b7ffff, 0x1baffff01b9ffff, 0x1bcffff01bbffff, 0x1beffff01bdffff, 0x1c0ffff01bfffff, 0x1c2ffff01c1ffff, 0x1c4ffff01c3ffff, 0x1c6ffff01c5ffff, 0x1c8ffff01c7ffff, 0x1caffff01c9ffff, 0x1ccffff01cbffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cf01ce01cdffff, 0x1d301d201d101d0, 0x1d701d601d501d4, 0x1db01da01d901d8, 0x1df01de01dd01dc, 0x1e301e201e101e0, 0x1e701e601e501e4, 0x1eb01ea01e901e8, 0x1ef01ee01ed01ec, 0x5c101f201f101f0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f601f501f401f3, 0x1fa01f901f801f7, 0x1fe01fd01fc01fb, 0x2020201020001ff, 0x206020502040203, 0x20a020902080207, 0x20e020d020c020b, 0x21202110210020f, 0x216021502140213, 0x21a021902180217, 0xffff021d021c021b, 0x220021f021effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x224022302220221, 0xffffffff02260225, 0x22a022902280227, 0x22e022d022c022b, 0xffffffffffff022f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0230ffff, 0xffffffff0231ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0232ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x234ffff0233ffff, 0x236ffff0235ffff, 0x238ffff0237ffff, 0x23affff0239ffff, 0x23cffff023bffff, 0x23effff023dffff, 0x240ffff023fffff, 0x242ffff0241ffff, 0x244ffff0243ffff, 0x246ffff0245ffff, 0x248ffff0247ffff, 0x24affff0249ffff, 0x24cffff024bffff, 0x24effff024dffff, 0x250ffff024fffff, 0x252ffff0251ffff, 0x254ffff0253ffff, 0x256ffff0255ffff, 0x258ffff0257ffff, 0x25affff0259ffff, 0x25cffff025bffff, 0x25effff025dffff, 0x260ffff025fffff, 0x262ffff0261ffff, 0x264ffff0263ffff, 0x266ffff0265ffff, 0x268ffff0267ffff, 0x26affff0269ffff, 0x26cffff026bffff, 0x26effff026dffff, 0x270ffff026fffff, 0x272ffff0271ffff, 0x274ffff0273ffff, 0x276ffff0275ffff, 0x278ffff0277ffff, 0x27affff0279ffff, 0x27cffff027bffff, 0x5d905d7027dffff, 0x27e05df05dd05db, 0xffffffffffffffff, 0x280ffff027fffff, 0x282ffff0281ffff, 0x284ffff0283ffff, 0x286ffff0285ffff, 0x288ffff0287ffff, 0x28affff0289ffff, 0x28cffff028bffff, 0x28effff028dffff, 0x290ffff028fffff, 0x292ffff0291ffff, 0x294ffff0293ffff, 0x296ffff0295ffff, 0x298ffff0297ffff, 0x29affff0299ffff, 0x29cffff029bffff, 0x29effff029dffff, 0x2a0ffff029fffff, 0x2a2ffff02a1ffff, 0x2a4ffff02a3ffff, 0x2a6ffff02a5ffff, 0x2a8ffff02a7ffff, 0x2aaffff02a9ffff, 0x2acffff02abffff, 0x2aeffff02adffff, 0x2b202b102b002af, 0x2b602b502b402b3, 0xffffffffffffffff, 0xffffffffffffffff, 0x2ba02b902b802b7, 0xffffffff02bc02bb, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c002bf02be02bd, 0x2c402c302c202c1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c802c702c602c5, 0x2cc02cb02ca02c9, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d002cf02ce02cd, 0xffffffff02d202d1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d405e302d305e1, 0x2d605e902d505e6, 0xffffffffffffffff, 0xffffffffffffffff, 0x2da02d902d802d7, 0x2de02dd02dc02db, 0xffffffffffffffff, 0xffffffffffffffff, 0x2e202e102e002df, 0x2e602e502e402e3, 0x2ea02e902e802e7, 0xffffffff02ec02eb, 0x60d060c060b060a, 0x6110610060f060e, 0x615061406130612, 0x619061806170616, 0x61d061c061b061a, 0x6210620061f061e, 0x625062406230622, 0x629062806270626, 0x62d062c062b062a, 0x6310630062f062e, 0x635063406330632, 0x639063806370636, 0x63a064003060305, 0x64c05ecffff0642, 0xffffffffffffffff, 0xffff0308ffff063b, 0x63c0644ffffffff, 0x64f05eeffff0646, 0xffffffffffffffff, 0xffffffffffff063d, 0x5f305f0030b030a, 0x5f805f6ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5fe05fb030d030c, 0x6050603030e0601, 0xffffffffffffffff, 0xffffffffffffffff, 0x63e0648ffffffff, 0x6520608ffff064a, 0xffffffffffffffff, 0xffffffffffff063f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0310ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x314031303120311, 0x318031703160315, 0x31c031b031a0319, 0x320031f031e031d, 0xffffffffffffffff, 0xffffffffffff0321, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x325032403230322, 0x329032803270326, 0x32d032c032b032a, 0x3310330032f032e, 0x335033403330332, 0x339033803370336, 0xffffffff033b033a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x33f033e033d033c, 0x343034203410340, 0x347034603450344, 0x34b034a03490348, 0x34f034e034d034c, 0x353035203510350, 0x357035603550354, 0x35b035a03590358, 0x35f035e035d035c, 0x363036203610360, 0x367036603650364, 0x36b036a03690368, 0xffffffff036cffff, 0xffff036e036dffff, 0xffff0370ffff036f, 0xffffffffffff0371, 0x372ffffffffffff, 0xffff0373ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x375ffff0374ffff, 0x377ffff0376ffff, 0x379ffff0378ffff, 0x37bffff037affff, 0x37dffff037cffff, 0x37fffff037effff, 0x381ffff0380ffff, 0x383ffff0382ffff, 0x385ffff0384ffff, 0x387ffff0386ffff, 0x389ffff0388ffff, 0x38bffff038affff, 0x38dffff038cffff, 0x38fffff038effff, 0x391ffff0390ffff, 0x393ffff0392ffff, 0x395ffff0394ffff, 0x397ffff0396ffff, 0x399ffff0398ffff, 0x39bffff039affff, 0x39dffff039cffff, 0x39fffff039effff, 0x3a1ffff03a0ffff, 0x3a3ffff03a2ffff, 0x3a5ffff03a4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03a7ffff03a6, 0x3a8ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ac03ab03aa03a9, 0x3b003af03ae03ad, 0x3b403b303b203b1, 0x3b803b703b603b5, 0x3bc03bb03ba03b9, 0x3c003bf03be03bd, 0x3c403c303c203c1, 0x3c803c703c603c5, 0x3cc03cb03ca03c9, 0x3cfffff03ce03cd, 0xffffffffffffffff, 0xffffffff03d0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3d2ffff03d1ffff, 0x3d4ffff03d3ffff, 0x3d6ffff03d5ffff, 0x3d8ffff03d7ffff, 0x3daffff03d9ffff, 0x3dcffff03dbffff, 0x3deffff03ddffff, 0x3e0ffff03dfffff, 0x3e2ffff03e1ffff, 0x3e4ffff03e3ffff, 0x3e6ffff03e5ffff, 0xffffffff03e7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3e9ffff03e8ffff, 0x3ebffff03eaffff, 0x3edffff03ecffff, 0x3efffff03eeffff, 0x3f1ffff03f0ffff, 0x3f3ffff03f2ffff, 0x3f5ffff03f4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3f6ffffffffffff, 0x3f8ffff03f7ffff, 0x3faffff03f9ffff, 0x3fcffff03fbffff, 0x3fdffffffffffff, 0x3ffffff03feffff, 0x401ffff0400ffff, 0x403ffff0402ffff, 0x405ffff0404ffff, 0x407ffff0406ffff, 0x409ffff0408ffff, 0x40bffff040affff, 0x40dffff040cffff, 0x40fffff040effff, 0x411ffff0410ffff, 0x413ffff0412ffff, 0x415ffff0414ffff, 0x417ffff0416ffff, 0x419ffff0418ffff, 0x41bffff041affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff041cffffffff, 0x41effffffff041d, 0x420ffff041fffff, 0x422ffff0421ffff, 0xffffffffffffffff, 0xffffffffffff0423, 0x425ffff0424ffff, 0x427ffffffff0426, 0x429ffff0428ffff, 0x42bffff042affff, 0x42dffff042cffff, 0x42fffff042effff, 0xffffffff0430ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x432ffff0431ffff, 0x434ffff0433ffff, 0x436ffff0435ffff, 0x438ffff0437ffff, 0xffffffffffffffff, 0xffff043affff0439, 0xffffffffffffffff, 0xffffffff043bffff, 0x43cffffffffffff, 0xffffffff043dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff043effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x43fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x443044204410440, 0x447044604450444, 0x44b044a04490448, 0x44f044e044d044c, 0x453045204510450, 0x457045604550454, 0x45b045a04590458, 0x45f045e045d045c, 0x463046204610460, 0x467046604650464, 0x46b046a04690468, 0x46f046e046d046c, 0x473047204710470, 0x477047604750474, 0x47b047a04790478, 0x47f047e047d047c, 0x483048204810480, 0x487048604850484, 0x48b048a04890488, 0x48f048e048d048c, 0x5b705b505b305b1, 0xffff05bf05bd05ba, 0xffffffffffffffff, 0xffffffffffffffff, 0x5c3ffffffffffff, 0x5cb05c905c705c5, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x49204910490ffff, 0x496049504940493, 0x49a049904980497, 0x49e049d049c049b, 0x4a204a104a0049f, 0x4a604a504a404a3, 0xffff04a904a804a7, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4ad04ac04ab04aa, 0x4b104b004af04ae, 0x4b504b404b304b2, 0x4b904b804b704b6, 0x4bd04bc04bb04ba, 0x4c104c004bf04be, 0x4c504c404c304c2, 0x4c904c804c704c6, 0x4cd04cc04cb04ca, 0x4d104d004cf04ce, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d504d404d304d2, 0x4d904d804d704d6, 0x4dd04dc04db04da, 0x4e104e004df04de, 0x4e504e404e304e2, 0x4e904e804e704e6, 0x4ed04ec04eb04ea, 0x4f104f004ef04ee, 0x4f504f404f304f2, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4f6ffffffffffff, 0x4fa04f904f804f7, 0x4fe04fd04fc04fb, 0x501ffff050004ff, 0x505050405030502, 0x509050805070506, 0x50d050c050b050a, 0x510ffff050f050e, 0x514051305120511, 0x517ffff05160515, 0xffffffffffff0518, 0x51c051b051a0519, 0x520051f051e051d, 0x524052305220521, 0x528052705260525, 0x52c052b052a0529, 0x530052f052e052d, 0x534053305320531, 0x538053705360535, 0x53c053b053a0539, 0x540053f053e053d, 0x544054305420541, 0x548054705460545, 0xffff054b054a0549, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x54f054e054d054c, 0x553055205510550, 0x557055605550554, 0x55b055a05590558, 0x55f055e055d055c, 0x563056205610560, 0x567056605650564, 0x56b056a05690568, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x56f056e056d056c, 0x573057205710570, 0x577057605750574, 0x57b057a05790578, 0x57f057e057d057c, 0x583058205810580, 0x587058605850584, 0x58b058a05890588, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x58d058cffffffff, 0x5910590058f058e, 0x595059405930592, 0x599059805970596, 0x59d059c059b059a, 0x5a105a0059f059e, 0x5a505a405a305a2, 0x5a905a805a705a6, 0x5ad05ac05ab05aa, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +000000000000010000000000000004800000000000000F80", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000300020001000000070006000500040000000A00090008000D000C000B0000 +00110010000F000E00000014001300120000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001500000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000017000000000000001900180000001D001C001B001A00210020001F001E00000000000000000000002300220000 +000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000280027002600250000000000000029 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002B002A0000002F002E002D002C00000000000000000000000000000000 +000000000000000000000031003000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000330000 +000000000000000000000000000000000000000000000000000000000000000000360000003500340000003700000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003A00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003C003B0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000200010000FFFF0006000500040003000A000900080007000E000D000C000B +001200110010000F0016001500140013FFFF001900180017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AEFFFFFFFFFFFF001E001D001C001B002200210020001F +0026002500240023002A002900280027002E002D002C002BFFFF00310030002F00350034003300320039003800370036 +003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003EFFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF +0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004AFFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF0050FFFF +0053FFFF005205B00055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B +005EFFFF05CD005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF +006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF +FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D +FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF +FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF +FFFFFFFFFFFFFFFF00910090008F008E0095009400930092FFFF0097FFFF0096FFFF0099FFFF0098FFFF009BFFFF009A +FFFF009DFFFF009C00A0FFFF009F009E00A2FFFF00A1FFFF00A4FFFF00A3FFFF00A6FFFF00A5FFFF00A8FFFF00A7FFFF +00AB00AA00A905D5FFFFFFFF00ACFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF00B2FFFF00B1FFFF00B4FFFF00B3FFFF +00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF00BEFFFF00BDFFFF00C0FFFF00BFFFFF +00C1FFFFFFFFFFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFF00C7FFFF00C6FFFF00C9FFFF00C8FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00CBFFFFFFFF00CAFFFF00CDFFFF00CC00CEFFFFFFFFFFFF00D0FFFF00CFFFFF00D2FFFF00D1FFFF +00D600D500D400D300D900D8FFFF00D700DBFFFF00DAFFFFFFFFFFFFFFFF00DC00DFFFFF00DE00DDFFFF00E100E0FFFF +00E500E400E300E200E7FFFFFFFF00E6FFFF00E900E8FFFFFFFFFFFF00EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFF +00EE00EDFFFF00EC00EFFFFFFFFFFFFF00F300F200F100F0FFFFFFFFFFFF00F4FFFF00F5FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F700F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFF00F9FFFF00FBFFFFFFFFFFFF +00FCFFFFFFFFFFFFFFFFFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF05CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF01020101010000FF01050104010305D20109010801070106010D010C010B010A01110110010F010E +01150114011301120119011801170116011D011C011B011AFFFF0120011F011EFFFFFFFF01220121012501240123FFFF +0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF0131FFFF0130FFFF +0135013401330132FFFFFFFF0136FFFF0138FFFFFFFF0137FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013C013B013A01390140013F013E013D +01440143014201410148014701460145014C014B014A01490150014F014E014D01540153015201510158015701560155 +015C015B015A01590160015F015E015D01640163016201610168016701660165016AFFFF0169FFFF016CFFFF016BFFFF +016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF0178FFFF0177FFFF +FFFFFFFF0179FFFFFFFFFFFFFFFFFFFF017AFFFFFFFFFFFF017CFFFF017BFFFF017EFFFF017DFFFF0180FFFF017FFFFF +0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF018CFFFF018BFFFF +018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFFFFFF0195FFFFFFFFFFFF0197FFFF0196 +FFFF0199FFFF0198019C019BFFFF019A019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1FFFF01A4FFFF01A3FFFF +01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF01B0FFFF01AFFFFF +01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF01BCFFFF01BBFFFF +01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF01C8FFFF01C7FFFF +01CAFFFF01C9FFFF01CCFFFF01CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CF01CE01CDFFFF01D301D201D101D001D701D601D501D401DB01DA01D901D8 +01DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E801EF01EE01ED01EC05C101F201F101F0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203020A020902080207 +020E020D020C020B021202110210020F0216021502140213021A021902180217FFFF021D021C021B0220021F021EFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0224022302220221FFFFFFFF02260225022A022902280227022E022D022C022B +FFFFFFFFFFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0234FFFF0233FFFF0236FFFF0235FFFF +0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF0240FFFF023FFFFF0242FFFF0241FFFF +0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF024CFFFF024BFFFF024EFFFF024DFFFF +0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF0258FFFF0257FFFF025AFFFF0259FFFF +025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF0264FFFF0263FFFF0266FFFF0265FFFF +0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF0270FFFF026FFFFF0272FFFF0271FFFF +0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFF027AFFFF0279FFFF027CFFFF027BFFFF05D905D7027DFFFF +027E05DF05DD05DBFFFFFFFFFFFFFFFF0280FFFF027FFFFF0282FFFF0281FFFF0284FFFF0283FFFF0286FFFF0285FFFF +0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028FFFFF0292FFFF0291FFFF +0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029BFFFF029EFFFF029DFFFF +02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7FFFF02AAFFFF02A9FFFF +02ACFFFF02ABFFFF02AEFFFF02ADFFFF02B202B102B002AF02B602B502B402B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02BA02B902B802B7FFFFFFFF02BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C002BF02BE02BD02C402C302C202C1 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C802C702C602C502CC02CB02CA02C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02D002CF02CE02CDFFFFFFFF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D405E302D305E102D605E902D505E6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DA02D902D802D702DE02DD02DC02DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E202E102E002DF02E602E502E402E302EA02E902E802E7FFFFFFFF02EC02EB060D060C060B060A06110610060F060E +06150614061306120619061806170616061D061C061B061A06210620061F061E06250624062306220629062806270626 +062D062C062B062A06310630062F062E06350634063306320639063806370636063A064003060305064C05ECFFFF0642 +FFFFFFFFFFFFFFFFFFFF0308FFFF063B063C0644FFFFFFFF064F05EEFFFF0646FFFFFFFFFFFFFFFFFFFFFFFFFFFF063D +05F305F0030B030A05F805F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FE05FB030D030C06050603030E0601 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF063E0648FFFFFFFF06520608FFFF064AFFFFFFFFFFFFFFFFFFFFFFFFFFFF063F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03140313031203110318031703160315031C031B031A03190320031F031E031DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0321 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03250324032303220329032803270326032D032C032B032A03310330032F032E03350334033303320339033803370336 +FFFFFFFF033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C0353035203510350 +0357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364036B036A03690368 +FFFFFFFF036CFFFFFFFF036E036DFFFFFFFF0370FFFF036FFFFFFFFFFFFF03710372FFFFFFFFFFFFFFFF0373FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0375FFFF0374FFFF0377FFFF0376FFFF0379FFFF0378FFFF037BFFFF037AFFFF +037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF0385FFFF0384FFFF0387FFFF0386FFFF +0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF0391FFFF0390FFFF0393FFFF0392FFFF +0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF039DFFFF039CFFFF039FFFFF039EFFFF +03A1FFFF03A0FFFF03A3FFFF03A2FFFF03A5FFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A7FFFF03A6 +03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AC03AB03AA03A903B003AF03AE03AD +03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C103C803C703C603C5 +03CC03CB03CA03C903CFFFFF03CE03CDFFFFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF +03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF +03E6FFFF03E5FFFFFFFFFFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF03F1FFFF03F0FFFF03F3FFFF03F2FFFF +03F5FFFF03F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F6FFFFFFFFFFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFF03FDFFFFFFFFFFFF03FFFFFF03FEFFFF +0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040AFFFF +040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFF0417FFFF0416FFFF +0419FFFF0418FFFF041BFFFF041AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFFFFFF041EFFFFFFFF041D +0420FFFF041FFFFF0422FFFF0421FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04230425FFFF0424FFFF0427FFFFFFFF0426 +0429FFFF0428FFFF042BFFFF042AFFFF042DFFFF042CFFFF042FFFFF042EFFFFFFFFFFFF0430FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0432FFFF0431FFFF0434FFFF0433FFFF0436FFFF0435FFFF0438FFFF0437FFFFFFFFFFFFFFFFFFFF +FFFF043AFFFF0439FFFFFFFFFFFFFFFFFFFFFFFF043BFFFF043CFFFFFFFFFFFFFFFFFFFF043DFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043EFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04430442044104400447044604450444044B044A04490448044F044E044D044C +04530452045104500457045604550454045B045A04590458045F045E045D045C04630462046104600467046604650464 +046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478047F047E047D047C +04830482048104800487048604850484048B048A04890488048F048E048D048C05B705B505B305B1FFFF05BF05BD05BA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C3FFFFFFFFFFFF05CB05C905C705C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF049204910490FFFF0496049504940493049A049904980497049E049D049C049B +04A204A104A0049F04A604A504A404A3FFFF04A904A804A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04AD04AC04AB04AA04B104B004AF04AE +04B504B404B304B204B904B804B704B604BD04BC04BB04BA04C104C004BF04BE04C504C404C304C204C904C804C704C6 +04CD04CC04CB04CA04D104D004CF04CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D504D404D304D204D904D804D704D604DD04DC04DB04DA04E104E004DF04DE +04E504E404E304E204E904E804E704E604ED04EC04EB04EA04F104F004EF04EE04F504F404F304F2FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F6FFFFFFFFFFFF +04FA04F904F804F704FE04FD04FC04FB0501FFFF050004FF05050504050305020509050805070506050D050C050B050A +0510FFFF050F050E05140513051205110517FFFF05160515FFFFFFFFFFFF0518051C051B051A05190520051F051E051D +05240523052205210528052705260525052C052B052A05290530052F052E052D05340533053205310538053705360535 +053C053B053A05390540053F053E053D05440543054205410548054705460545FFFF054B054A0549FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054F054E054D054C05530552055105500557055605550554055B055A05590558 +055F055E055D055C05630562056105600567056605650564056B056A05690568FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056F056E056D056C05730572057105700577057605750574057B057A05790578 +057F057E057D057C05830582058105800587058605850584058B058A05890588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +058D058CFFFFFFFF05910590058F058E05950594059305920599059805970596059D059C059B059A05A105A0059F059E +05A505A405A305A205A905A805A705A605AD05AC05AB05AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10368 bytes -enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xf40], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15000000000000, 0x0, 0x0, 0x16000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1700000000, 0x1900180000, 0x1d001c001b001a, 0x210020001f001e, 0x0, 0x2300220000, 0x0, 0x0, 0x24000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28002700260025, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b002a0000, 0x2f002e002d002c, 0x0, 0x0, 0x0, 0x3100300000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x320000, 0x0, 0x0, 0x0, 0x0, 0x35000000340033, 0x3600000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff001affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1e001d001c001b, 0x2200210020001f, 0x26002500240023, 0x2a002900280027, 0x2e002d002c002b, 0xffff00310030002f, 0x35003400330032, 0x39003800370036, 0x3bffff003affff, 0x3dffff003cffff, 0x3fffff003effff, 0x41ffff0040ffff, 0x43ffff0042ffff, 0x45ffff0044ffff, 0x47ffff0046ffff, 0x49ffff0048ffff, 0x4bffff004affff, 0x4dffff004cffff, 0x4fffff004effff, 0x51ffff0050ffff, 0x53ffff0052ffff, 0x55ffff0054ffff, 0xffff0056ffffffff, 0xffff0058ffff0057, 0xffff005affff0059, 0xffff005cffff005b, 0x5effffffff005d, 0x60ffff005fffff, 0x62ffff0061ffff, 0x64ffff0063ffff, 0x66ffff0065ffff, 0x68ffff0067ffff, 0x6affff0069ffff, 0x6cffff006bffff, 0x6effff006dffff, 0x70ffff006fffff, 0x72ffff0071ffff, 0x74ffff0073ffff, 0xffff0075ffffffff, 0x780077ffff0076, 0x7affffffff0079, 0xffffffff007bffff, 0xffffffffffff007c, 0xffffffffffff007d, 0xffff007effffffff, 0xffffffff007fffff, 0xffff00810080ffff, 0xffff0082ffffffff, 0x84ffff0083ffff, 0xffffffff0085ffff, 0xffffffffffff0086, 0xffffffff0087ffff, 0xffffffffffff0088, 0xffff008affff0089, 0xffffffff008bffff, 0x8dffff008cffff, 0xffffffffffffffff, 0xffff008f008effff, 0x92ffff00910090, 0xffff0094ffff0093, 0xffff0096ffff0095, 0xffff0098ffff0097, 0xffff009affff0099, 0x9dffff009c009b, 0x9fffff009effff, 0xa1ffff00a0ffff, 0xa3ffff00a2ffff, 0xa5ffff00a4ffff, 0xa700a6ffffffff, 0xffffffff00a8ffff, 0xaaffff00a9ffff, 0xacffff00abffff, 0xaeffff00adffff, 0xb0ffff00afffff, 0xb2ffff00b1ffff, 0xb4ffff00b3ffff, 0xb6ffff00b5ffff, 0xb8ffff00b7ffff, 0xbaffff00b9ffff, 0xbcffff00bbffff, 0xbdffffffffffff, 0xbfffff00beffff, 0xc1ffff00c0ffff, 0xc3ffff00c2ffff, 0xc5ffff00c4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xc7ffffffff00c6, 0xffff00c9ffff00c8, 0xcaffffffffffff, 0xccffff00cbffff, 0xceffff00cdffff, 0xd200d100d000cf, 0xd500d4ffff00d3, 0xd7ffff00d6ffff, 0xffffffffffff00d8, 0xdbffff00da00d9, 0xffff00dd00dcffff, 0xe100e000df00de, 0xe3ffffffff00e2, 0xffff00e500e4ffff, 0xffffffff00e6ffff, 0xffffffffffffffff, 0xffffffff00e7ffff, 0xea00e9ffff00e8, 0xebffffffffffff, 0xef00ee00ed00ec, 0xffffffffffff00f0, 0xffff00f1ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00f300f2ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff00f4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xf6ffff00f5ffff, 0xf7ffffffffffff, 0xf8ffffffffffff, 0xffffffff00fa00f9, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfe00fd00fc00fb, 0x101010000ffffff, 0x105010401030102, 0x109010801070106, 0x10d010c010b010a, 0x1110110010f010e, 0x115011401130112, 0x119011801170116, 0xffff011c011b011a, 0xffffffff011e011d, 0x1210120011fffff, 0x123ffff0122ffff, 0x125ffff0124ffff, 0x127ffff0126ffff, 0x129ffff0128ffff, 0x12bffff012affff, 0x12dffff012cffff, 0x1310130012f012e, 0xffffffff0132ffff, 0x134ffffffff0133, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x138013701360135, 0x13c013b013a0139, 0x140013f013e013d, 0x144014301420141, 0x148014701460145, 0x14c014b014a0149, 0x150014f014e014d, 0x154015301520151, 0x158015701560155, 0x15c015b015a0159, 0x160015f015e015d, 0x164016301620161, 0x166ffff0165ffff, 0x168ffff0167ffff, 0x16affff0169ffff, 0x16cffff016bffff, 0x16effff016dffff, 0x170ffff016fffff, 0x172ffff0171ffff, 0x174ffff0173ffff, 0xffffffff0175ffff, 0xffffffffffffffff, 0x176ffffffffffff, 0x178ffff0177ffff, 0x17affff0179ffff, 0x17cffff017bffff, 0x17effff017dffff, 0x180ffff017fffff, 0x182ffff0181ffff, 0x184ffff0183ffff, 0x186ffff0185ffff, 0x188ffff0187ffff, 0x18affff0189ffff, 0x18cffff018bffff, 0x18effff018dffff, 0x190ffff018fffff, 0xffff0191ffffffff, 0xffff0193ffff0192, 0xffff0195ffff0194, 0x1980197ffff0196, 0x19affff0199ffff, 0x19cffff019bffff, 0x19effff019dffff, 0x1a0ffff019fffff, 0x1a2ffff01a1ffff, 0x1a4ffff01a3ffff, 0x1a6ffff01a5ffff, 0x1a8ffff01a7ffff, 0x1aaffff01a9ffff, 0x1acffff01abffff, 0x1aeffff01adffff, 0x1b0ffff01afffff, 0x1b2ffff01b1ffff, 0x1b4ffff01b3ffff, 0x1b6ffff01b5ffff, 0x1b8ffff01b7ffff, 0x1baffff01b9ffff, 0x1bcffff01bbffff, 0x1beffff01bdffff, 0x1c0ffff01bfffff, 0x1c2ffff01c1ffff, 0x1c4ffff01c3ffff, 0x1c6ffff01c5ffff, 0x1c8ffff01c7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cb01ca01c9ffff, 0x1cf01ce01cd01cc, 0x1d301d201d101d0, 0x1d701d601d501d4, 0x1db01da01d901d8, 0x1df01de01dd01dc, 0x1e301e201e101e0, 0x1e701e601e501e4, 0x1eb01ea01e901e8, 0xffff01ee01ed01ec, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f201f101f001ef, 0x1f601f501f401f3, 0x1fa01f901f801f7, 0x1fe01fd01fc01fb, 0x2020201020001ff, 0x206020502040203, 0x20a020902080207, 0x20e020d020c020b, 0x21202110210020f, 0x216021502140213, 0xffff021902180217, 0x21c021b021affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x220021f021e021d, 0xffffffff02220221, 0x226022502240223, 0x22a022902280227, 0xffffffffffff022b, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff022cffff, 0xffffffff022dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff022effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x230ffff022fffff, 0x232ffff0231ffff, 0x234ffff0233ffff, 0x236ffff0235ffff, 0x238ffff0237ffff, 0x23affff0239ffff, 0x23cffff023bffff, 0x23effff023dffff, 0x240ffff023fffff, 0x242ffff0241ffff, 0x244ffff0243ffff, 0x246ffff0245ffff, 0x248ffff0247ffff, 0x24affff0249ffff, 0x24cffff024bffff, 0x24effff024dffff, 0x250ffff024fffff, 0x252ffff0251ffff, 0x254ffff0253ffff, 0x256ffff0255ffff, 0x258ffff0257ffff, 0x25affff0259ffff, 0x25cffff025bffff, 0x25effff025dffff, 0x260ffff025fffff, 0x262ffff0261ffff, 0x264ffff0263ffff, 0x266ffff0265ffff, 0x268ffff0267ffff, 0x26affff0269ffff, 0x26cffff026bffff, 0x26effff026dffff, 0x270ffff026fffff, 0x272ffff0271ffff, 0x274ffff0273ffff, 0x276ffff0275ffff, 0x278ffff0277ffff, 0xffffffff0279ffff, 0x27affffffffffff, 0xffffffffffffffff, 0x27cffff027bffff, 0x27effff027dffff, 0x280ffff027fffff, 0x282ffff0281ffff, 0x284ffff0283ffff, 0x286ffff0285ffff, 0x288ffff0287ffff, 0x28affff0289ffff, 0x28cffff028bffff, 0x28effff028dffff, 0x290ffff028fffff, 0x292ffff0291ffff, 0x294ffff0293ffff, 0x296ffff0295ffff, 0x298ffff0297ffff, 0x29affff0299ffff, 0x29cffff029bffff, 0x29effff029dffff, 0x2a0ffff029fffff, 0x2a2ffff02a1ffff, 0x2a4ffff02a3ffff, 0x2a6ffff02a5ffff, 0x2a8ffff02a7ffff, 0x2aaffff02a9ffff, 0x2ae02ad02ac02ab, 0x2b202b102b002af, 0xffffffffffffffff, 0xffffffffffffffff, 0x2b602b502b402b3, 0xffffffff02b802b7, 0xffffffffffffffff, 0xffffffffffffffff, 0x2bc02bb02ba02b9, 0x2c002bf02be02bd, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c402c302c202c1, 0x2c802c702c602c5, 0xffffffffffffffff, 0xffffffffffffffff, 0x2cc02cb02ca02c9, 0xffffffff02ce02cd, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d0ffff02cfffff, 0x2d2ffff02d1ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d602d502d402d3, 0x2da02d902d802d7, 0xffffffffffffffff, 0xffffffffffffffff, 0x2de02dd02dc02db, 0x2e202e102e002df, 0x2e602e502e402e3, 0xffffffff02e802e7, 0x2ec02eb02ea02e9, 0x2f002ef02ee02ed, 0xffffffffffffffff, 0xffffffffffffffff, 0x2f402f302f202f1, 0x2f802f702f602f5, 0xffffffffffffffff, 0xffffffffffffffff, 0x2fc02fb02fa02f9, 0x30002ff02fe02fd, 0xffffffffffffffff, 0xffffffffffffffff, 0x303ffff03020301, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0304ffffffff, 0x305ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff03070306, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff03090308, 0xffffffff030affff, 0xffffffffffffffff, 0xffffffffffffffff, 0x30bffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff030cffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x310030f030e030d, 0x314031303120311, 0x318031703160315, 0x31c031b031a0319, 0xffffffffffffffff, 0xffffffffffff031d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3210320031f031e, 0x325032403230322, 0x329032803270326, 0x32d032c032b032a, 0x3310330032f032e, 0x335033403330332, 0xffffffff03370336, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x33b033a03390338, 0x33f033e033d033c, 0x343034203410340, 0x347034603450344, 0x34b034a03490348, 0x34f034e034d034c, 0x353035203510350, 0x357035603550354, 0x35b035a03590358, 0x35f035e035d035c, 0x363036203610360, 0x367036603650364, 0xffffffff0368ffff, 0xffff036a0369ffff, 0xffff036cffff036b, 0xffffffffffff036d, 0x36effffffffffff, 0xffff036fffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x371ffff0370ffff, 0x373ffff0372ffff, 0x375ffff0374ffff, 0x377ffff0376ffff, 0x379ffff0378ffff, 0x37bffff037affff, 0x37dffff037cffff, 0x37fffff037effff, 0x381ffff0380ffff, 0x383ffff0382ffff, 0x385ffff0384ffff, 0x387ffff0386ffff, 0x389ffff0388ffff, 0x38bffff038affff, 0x38dffff038cffff, 0x38fffff038effff, 0x391ffff0390ffff, 0x393ffff0392ffff, 0x395ffff0394ffff, 0x397ffff0396ffff, 0x399ffff0398ffff, 0x39bffff039affff, 0x39dffff039cffff, 0x39fffff039effff, 0x3a1ffff03a0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03a3ffff03a2, 0x3a4ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3a803a703a603a5, 0x3ac03ab03aa03a9, 0x3b003af03ae03ad, 0x3b403b303b203b1, 0x3b803b703b603b5, 0x3bc03bb03ba03b9, 0x3c003bf03be03bd, 0x3c403c303c203c1, 0x3c803c703c603c5, 0x3cbffff03ca03c9, 0xffffffffffffffff, 0xffffffff03ccffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ceffff03cdffff, 0x3d0ffff03cfffff, 0x3d2ffff03d1ffff, 0x3d4ffff03d3ffff, 0x3d6ffff03d5ffff, 0x3d8ffff03d7ffff, 0x3daffff03d9ffff, 0x3dcffff03dbffff, 0x3deffff03ddffff, 0x3e0ffff03dfffff, 0x3e2ffff03e1ffff, 0xffffffff03e3ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3e5ffff03e4ffff, 0x3e7ffff03e6ffff, 0x3e9ffff03e8ffff, 0x3ebffff03eaffff, 0x3edffff03ecffff, 0x3efffff03eeffff, 0x3f1ffff03f0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3f2ffffffffffff, 0x3f4ffff03f3ffff, 0x3f6ffff03f5ffff, 0x3f8ffff03f7ffff, 0x3f9ffffffffffff, 0x3fbffff03faffff, 0x3fdffff03fcffff, 0x3ffffff03feffff, 0x401ffff0400ffff, 0x403ffff0402ffff, 0x405ffff0404ffff, 0x407ffff0406ffff, 0x409ffff0408ffff, 0x40bffff040affff, 0x40dffff040cffff, 0x40fffff040effff, 0x411ffff0410ffff, 0x413ffff0412ffff, 0x415ffff0414ffff, 0x417ffff0416ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0418ffffffff, 0x41affffffff0419, 0x41cffff041bffff, 0x41effff041dffff, 0xffffffffffffffff, 0xffffffffffff041f, 0x421ffff0420ffff, 0x423ffffffff0422, 0x425ffff0424ffff, 0x427ffff0426ffff, 0x429ffff0428ffff, 0x42bffff042affff, 0xffffffff042cffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x42effff042dffff, 0x430ffff042fffff, 0x432ffff0431ffff, 0x434ffff0433ffff, 0xffffffffffffffff, 0xffff0436ffff0435, 0xffffffffffffffff, 0xffffffff0437ffff, 0x438ffffffffffff, 0xffffffff0439ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff043affffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x43bffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x43f043e043d043c, 0x443044204410440, 0x447044604450444, 0x44b044a04490448, 0x44f044e044d044c, 0x453045204510450, 0x457045604550454, 0x45b045a04590458, 0x45f045e045d045c, 0x463046204610460, 0x467046604650464, 0x46b046a04690468, 0x46f046e046d046c, 0x473047204710470, 0x477047604750474, 0x47b047a04790478, 0x47f047e047d047c, 0x483048204810480, 0x487048604850484, 0x48b048a04890488, 0x48e048d048cffff, 0x49204910490048f, 0x496049504940493, 0x49a049904980497, 0x49e049d049c049b, 0x4a204a104a0049f, 0xffff04a504a404a3, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4a904a804a704a6, 0x4ad04ac04ab04aa, 0x4b104b004af04ae, 0x4b504b404b304b2, 0x4b904b804b704b6, 0x4bd04bc04bb04ba, 0x4c104c004bf04be, 0x4c504c404c304c2, 0x4c904c804c704c6, 0x4cd04cc04cb04ca, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d104d004cf04ce, 0x4d504d404d304d2, 0x4d904d804d704d6, 0x4dd04dc04db04da, 0x4e104e004df04de, 0x4e504e404e304e2, 0x4e904e804e704e6, 0x4ed04ec04eb04ea, 0x4f104f004ef04ee, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4f2ffffffffffff, 0x4f604f504f404f3, 0x4fa04f904f804f7, 0x4fdffff04fc04fb, 0x501050004ff04fe, 0x505050405030502, 0x509050805070506, 0x50cffff050b050a, 0x510050f050e050d, 0x513ffff05120511, 0xffffffffffff0514, 0x518051705160515, 0x51c051b051a0519, 0x520051f051e051d, 0x524052305220521, 0x528052705260525, 0x52c052b052a0529, 0x530052f052e052d, 0x534053305320531, 0x538053705360535, 0x53c053b053a0539, 0x540053f053e053d, 0x544054305420541, 0xffff054705460545, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x54b054a05490548, 0x54f054e054d054c, 0x553055205510550, 0x557055605550554, 0x55b055a05590558, 0x55f055e055d055c, 0x563056205610560, 0x567056605650564, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x56b056a05690568, 0x56f056e056d056c, 0x573057205710570, 0x577057605750574, 0x57b057a05790578, 0x57f057e057d057c, 0x583058205810580, 0x587058605850584, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x5890588ffffffff, 0x58d058c058b058a, 0x5910590058f058e, 0x595059405930592, 0x599059805970596, 0x59d059c059b059a, 0x5a105a0059f059e, 0x5a505a405a305a2, 0x5a905a805a705a6, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +000000000000010000000000000004800000000000000F40", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000300020001000000070006000500040000000A00090008000D000C000B0000 +00110010000F000E00000014001300120000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001500000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000017000000000000001900180000001D001C001B001A00210020001F001E00000000000000000000002300220000 +000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000280027002600250000000000000029 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002B002A0000002F002E002D002C00000000000000000000000000000000 +000000000000000000000031003000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000320000 +000000000000000000000000000000000000000000000000000000000000000000350000003400330000003600000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003900000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003B003A0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000200010000FFFF0006000500040003000A000900080007000E000D000C000B +001200110010000F0016001500140013FFFF001900180017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001E001D001C001B002200210020001F +0026002500240023002A002900280027002E002D002C002BFFFF00310030002F00350034003300320039003800370036 +003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003EFFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF +0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004AFFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF0050FFFF +0053FFFF0052FFFF0055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B +005EFFFFFFFF005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF +006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF +FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D +FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF +FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF +FFFFFFFFFFFFFFFFFFFF008F008EFFFF0092FFFF00910090FFFF0094FFFF0093FFFF0096FFFF0095FFFF0098FFFF0097 +FFFF009AFFFF0099009DFFFF009C009B009FFFFF009EFFFF00A1FFFF00A0FFFF00A3FFFF00A2FFFF00A5FFFF00A4FFFF +00A700A6FFFFFFFFFFFFFFFF00A8FFFF00AAFFFF00A9FFFF00ACFFFF00ABFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF +00B2FFFF00B1FFFF00B4FFFF00B3FFFF00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF +00BDFFFFFFFFFFFF00BFFFFF00BEFFFF00C1FFFF00C0FFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00C7FFFFFFFF00C6FFFF00C9FFFF00C800CAFFFFFFFFFFFF00CCFFFF00CBFFFF00CEFFFF00CDFFFF +00D200D100D000CF00D500D4FFFF00D300D7FFFF00D6FFFFFFFFFFFFFFFF00D800DBFFFF00DA00D9FFFF00DD00DCFFFF +00E100E000DF00DE00E3FFFFFFFF00E2FFFF00E500E4FFFFFFFFFFFF00E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFF +00EA00E9FFFF00E800EBFFFFFFFFFFFF00EF00EE00ED00ECFFFFFFFFFFFF00F0FFFF00F1FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F300F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFF00F5FFFF00F7FFFFFFFFFFFF +00F8FFFFFFFFFFFFFFFFFFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00FE00FD00FC00FB0101010000FFFFFF01050104010301020109010801070106010D010C010B010A +01110110010F010E01150114011301120119011801170116FFFF011C011B011AFFFFFFFF011E011D01210120011FFFFF +0123FFFF0122FFFF0125FFFF0124FFFF0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF +01310130012F012EFFFFFFFF0132FFFF0134FFFFFFFF0133FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0138013701360135013C013B013A0139 +0140013F013E013D01440143014201410148014701460145014C014B014A01490150014F014E014D0154015301520151 +0158015701560155015C015B015A01590160015F015E015D01640163016201610166FFFF0165FFFF0168FFFF0167FFFF +016AFFFF0169FFFF016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF +FFFFFFFF0175FFFFFFFFFFFFFFFFFFFF0176FFFFFFFFFFFF0178FFFF0177FFFF017AFFFF0179FFFF017CFFFF017BFFFF +017EFFFF017DFFFF0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF +018AFFFF0189FFFF018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFFFFFF0191FFFFFFFFFFFF0193FFFF0192 +FFFF0195FFFF019401980197FFFF0196019AFFFF0199FFFF019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF +01A2FFFF01A1FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF +01AEFFFF01ADFFFF01B0FFFF01AFFFFF01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF +01BAFFFF01B9FFFF01BCFFFF01BBFFFF01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF +01C6FFFF01C5FFFF01C8FFFF01C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CB01CA01C9FFFF01CF01CE01CD01CC01D301D201D101D001D701D601D501D4 +01DB01DA01D901D801DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E8FFFF01EE01ED01EC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F201F101F001EF01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203 +020A020902080207020E020D020C020B021202110210020F0216021502140213FFFF021902180217021C021B021AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0220021F021E021DFFFFFFFF022202210226022502240223022A022902280227 +FFFFFFFFFFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFF022FFFFF0232FFFF0231FFFF +0234FFFF0233FFFF0236FFFF0235FFFF0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF +0240FFFF023FFFFF0242FFFF0241FFFF0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF +024CFFFF024BFFFF024EFFFF024DFFFF0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF +0258FFFF0257FFFF025AFFFF0259FFFF025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF +0264FFFF0263FFFF0266FFFF0265FFFF0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF +0270FFFF026FFFFF0272FFFF0271FFFF0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFFFFFFFFFF0279FFFF +027AFFFFFFFFFFFFFFFFFFFFFFFFFFFF027CFFFF027BFFFF027EFFFF027DFFFF0280FFFF027FFFFF0282FFFF0281FFFF +0284FFFF0283FFFF0286FFFF0285FFFF0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF +0290FFFF028FFFFF0292FFFF0291FFFF0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF +029CFFFF029BFFFF029EFFFF029DFFFF02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF +02A8FFFF02A7FFFF02AAFFFF02A9FFFF02AE02AD02AC02AB02B202B102B002AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B602B502B402B3FFFFFFFF02B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BC02BB02BA02B902C002BF02BE02BD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C402C302C202C102C802C702C602C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CC02CB02CA02C9FFFFFFFF02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D0FFFF02CFFFFF02D2FFFF02D1FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D602D502D402D302DA02D902D802D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02DE02DD02DC02DB02E202E102E002DF02E602E502E402E3FFFFFFFF02E802E702EC02EB02EA02E902F002EF02EE02ED +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F402F302F202F102F802F702F602F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02FC02FB02FA02F9030002FF02FE02FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0303FFFF03020301FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0304FFFFFFFF0305FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03070306FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03090308FFFFFFFF030AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0310030F030E030D03140313031203110318031703160315031C031B031A0319FFFFFFFFFFFFFFFFFFFFFFFFFFFF031D +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03210320031F031E03250324032303220329032803270326032D032C032B032A03310330032F032E0335033403330332 +FFFFFFFF03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033B033A03390338033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C +03530352035103500357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364 +FFFFFFFF0368FFFFFFFF036A0369FFFFFFFF036CFFFF036BFFFFFFFFFFFF036D036EFFFFFFFFFFFFFFFF036FFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFF0370FFFF0373FFFF0372FFFF0375FFFF0374FFFF0377FFFF0376FFFF +0379FFFF0378FFFF037BFFFF037AFFFF037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF +0385FFFF0384FFFF0387FFFF0386FFFF0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF +0391FFFF0390FFFF0393FFFF0392FFFF0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF +039DFFFF039CFFFF039FFFFF039EFFFF03A1FFFF03A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A3FFFF03A2 +03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A803A703A603A503AC03AB03AA03A9 +03B003AF03AE03AD03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C1 +03C803C703C603C503CBFFFF03CA03C9FFFFFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CEFFFF03CDFFFF03D0FFFF03CFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF +03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF +03E2FFFF03E1FFFFFFFFFFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E5FFFF03E4FFFF03E7FFFF03E6FFFF03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF +03F1FFFF03F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F2FFFFFFFFFFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF03F8FFFF03F7FFFF03F9FFFFFFFFFFFF03FBFFFF03FAFFFF +03FDFFFF03FCFFFF03FFFFFF03FEFFFF0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF +0409FFFF0408FFFF040BFFFF040AFFFF040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF +0415FFFF0414FFFF0417FFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFFFFFF041AFFFFFFFF0419 +041CFFFF041BFFFF041EFFFF041DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041F0421FFFF0420FFFF0423FFFFFFFF0422 +0425FFFF0424FFFF0427FFFF0426FFFF0429FFFF0428FFFF042BFFFF042AFFFFFFFFFFFF042CFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFF0434FFFF0433FFFFFFFFFFFFFFFFFFFF +FFFF0436FFFF0435FFFFFFFFFFFFFFFFFFFFFFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF0439FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043AFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043F043E043D043C04430442044104400447044604450444044B044A04490448 +044F044E044D044C04530452045104500457045604550454045B045A04590458045F045E045D045C0463046204610460 +0467046604650464046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478 +047F047E047D047C04830482048104800487048604850484048B048A04890488048E048D048CFFFF049204910490048F +0496049504940493049A049904980497049E049D049C049B04A204A104A0049FFFFF04A504A404A3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04A904A804A704A604AD04AC04AB04AA04B104B004AF04AE04B504B404B304B204B904B804B704B604BD04BC04BB04BA +04C104C004BF04BE04C504C404C304C204C904C804C704C604CD04CC04CB04CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D104D004CF04CE04D504D404D304D2 +04D904D804D704D604DD04DC04DB04DA04E104E004DF04DE04E504E404E304E204E904E804E704E604ED04EC04EB04EA +04F104F004EF04EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF04F2FFFFFFFFFFFF04F604F504F404F304FA04F904F804F704FDFFFF04FC04FB0501050004FF04FE +05050504050305020509050805070506050CFFFF050B050A0510050F050E050D0513FFFF05120511FFFFFFFFFFFF0514 +0518051705160515051C051B051A05190520051F051E051D05240523052205210528052705260525052C052B052A0529 +0530052F052E052D05340533053205310538053705360535053C053B053A05390540053F053E053D0544054305420541 +FFFF054705460545FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054B054A05490548054F054E054D054C +05530552055105500557055605550554055B055A05590558055F055E055D055C05630562056105600567056605650564 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056B056A05690568056F056E056D056C +05730572057105700577057605750574057B057A05790578057F057E057D057C05830582058105800587058605850584 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05890588FFFFFFFF058D058C058B058A05910590058F058E0595059405930592 +0599059805970596059D059C059B059A05A105A0059F059E05A505A405A305A205A905A805A705A6FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //9856 bytes -enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xe40], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x2000000010000, 0x6000500040003, 0x80007, 0xb000a00090000, 0xf000e000d000c, 0x110010, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x13001200000000, 0x0, 0x0, 0x15001400000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1600000000, 0x0, 0x1a001900180017, 0x1e001d001c001b, 0x0, 0x210020001f, 0x0, 0x0, 0x23002200000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x27002600250024, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2900280000, 0x2d002c002b002a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0x0, 0x0, 0x0, 0x0, 0x3100300000002f, 0x3300320000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3400000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3500000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x360000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1d001c001b001a, 0x210020001f001e, 0x25002400230022, 0x29002800270026, 0x2d002c002b002a, 0xffff0030002f002e, 0x34003300320031, 0xffff003700360035, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0039ffff0038, 0xffff003bffff003a, 0xffff003dffff003c, 0xffff003fffff003e, 0xffff0041ffff0040, 0xffff0043ffff0042, 0xffff0045ffff0044, 0xffff0047ffff0046, 0xffff0049ffff0048, 0xffff004bffff004a, 0xffff004dffff004c, 0xffff004fffff004e, 0xffff0051ffff0050, 0xffff0053ffff0052, 0x55ffff0054ffff, 0x57ffff0056ffff, 0x59ffff0058ffff, 0x5bffff005affff, 0xffff005cffffffff, 0xffff005effff005d, 0xffff0060ffff005f, 0xffff0062ffff0061, 0xffff0064ffff0063, 0xffff0066ffff0065, 0xffff0068ffff0067, 0xffff006affff0069, 0xffff006cffff006b, 0xffff006effff006d, 0xffff0070ffff006f, 0xffff0072ffff0071, 0x75ffff00740073, 0xffffffff0076ffff, 0xffff00780077ffff, 0x7b007affff0079, 0x7e007d007cffff, 0x80007fffffffff, 0x83ffff00820081, 0x860085ffff0084, 0xffffffffffff0087, 0x8affff00890088, 0xffff008cffff008b, 0x8f008effff008d, 0xffffffff0090ffff, 0x930092ffff0091, 0x9600950094ffff, 0x98ffff0097ffff, 0xffffffffffff0099, 0xffffffffffff009a, 0xffffffffffffffff, 0x9dffff009c009b, 0xa0009fffff009e, 0xa2ffff00a1ffff, 0xa4ffff00a3ffff, 0xa6ffff00a5ffff, 0xa8ffff00a7ffff, 0xffff00a9ffffffff, 0xffff00abffff00aa, 0xffff00adffff00ac, 0xffff00afffff00ae, 0xffff00b1ffff00b0, 0xffff00b300b2ffff, 0xb600b5ffff00b4, 0xffff00b8ffff00b7, 0xffff00baffff00b9, 0xffff00bcffff00bb, 0xffff00beffff00bd, 0xffff00c0ffff00bf, 0xffff00c2ffff00c1, 0xffff00c4ffff00c3, 0xffff00c6ffff00c5, 0xffff00c8ffff00c7, 0xffff00caffff00c9, 0xffff00ccffff00cb, 0xffff00ceffff00cd, 0xffff00d0ffff00cf, 0xffff00d2ffff00d1, 0xffff00d4ffff00d3, 0xffffffffffffffff, 0xd600d5ffffffff, 0xffff00d800d7ffff, 0xdaffff00d9ffff, 0xffff00dd00dc00db, 0xffff00dfffff00de, 0xffff00e1ffff00e0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00e3ffff00e2, 0xffff00e4ffffffff, 0xffffffffffffffff, 0xe5ffffffffffff, 0xffffffffffffffff, 0xffff00e6ffffffff, 0xffff00e900e800e7, 0xec00ebffff00ea, 0xef00ee00edffff, 0xf300f200f100f0, 0xf700f600f500f4, 0xfb00fa00f900f8, 0xfeffff00fd00fc, 0x1020101010000ff, 0x106010501040103, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x107ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0109ffff0108, 0xffff010bffff010a, 0xffff010dffff010c, 0xffff010fffff010e, 0xffff0111ffff0110, 0xffff0113ffff0112, 0xffffffffffffffff, 0x115ffffffff0114, 0xffff01170116ffff, 0x11a01190118ffff, 0x11e011d011c011b, 0x12201210120011f, 0x126012501240123, 0x12a012901280127, 0x12e012d012c012b, 0x13201310130012f, 0x136013501340133, 0x13a013901380137, 0x13e013d013c013b, 0x14201410140013f, 0x146014501440143, 0x14a014901480147, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff014cffff014b, 0xffff014effff014d, 0xffff0150ffff014f, 0xffff0152ffff0151, 0xffff0154ffff0153, 0xffff0156ffff0155, 0xffff0158ffff0157, 0xffff015affff0159, 0xffffffffffff015b, 0xffffffffffffffff, 0xffff015cffffffff, 0xffff015effff015d, 0xffff0160ffff015f, 0xffff0162ffff0161, 0xffff0164ffff0163, 0xffff0166ffff0165, 0xffff0168ffff0167, 0xffff016affff0169, 0xffff016cffff016b, 0xffff016effff016d, 0xffff0170ffff016f, 0xffff0172ffff0171, 0xffff0174ffff0173, 0xffff0176ffff0175, 0x179ffff01780177, 0x17bffff017affff, 0x17dffff017cffff, 0xffffffff017effff, 0xffff0180ffff017f, 0xffff0182ffff0181, 0xffff0184ffff0183, 0xffff0186ffff0185, 0xffff0188ffff0187, 0xffff018affff0189, 0xffff018cffff018b, 0xffff018effff018d, 0xffff0190ffff018f, 0xffff0192ffff0191, 0xffff0194ffff0193, 0xffff0196ffff0195, 0xffff0198ffff0197, 0xffff019affff0199, 0xffff019cffff019b, 0xffff019effff019d, 0xffff01a0ffff019f, 0xffff01a2ffff01a1, 0xffff01a4ffff01a3, 0xffff01a6ffff01a5, 0xffff01a8ffff01a7, 0xffff01aaffff01a9, 0xffff01acffff01ab, 0xffff01aeffff01ad, 0x1b101b001afffff, 0x1b501b401b301b2, 0x1b901b801b701b6, 0x1bd01bc01bb01ba, 0x1c101c001bf01be, 0x1c501c401c301c2, 0x1c901c801c701c6, 0x1cd01cc01cb01ca, 0x1d101d001cf01ce, 0xffff01d401d301d2, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1d801d701d601d5, 0x1dc01db01da01d9, 0x1e001df01de01dd, 0x1e401e301e201e1, 0x1e801e701e601e5, 0x1ec01eb01ea01e9, 0x1f001ef01ee01ed, 0x1f401f301f201f1, 0x1f801f701f601f5, 0x1fbffff01fa01f9, 0xffffffffffffffff, 0xffffffff01fcffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x20001ff01fe01fd, 0x204020302020201, 0x208020702060205, 0x20c020b020a0209, 0x210020f020e020d, 0x214021302120211, 0x218021702160215, 0x21c021b021a0219, 0x220021f021e021d, 0x224022302220221, 0x228022702260225, 0x22c022b022a0229, 0x230022f022e022d, 0x234023302320231, 0x238023702360235, 0x23c023b023a0239, 0x240023f023e023d, 0x244024302420241, 0x248024702460245, 0x24c024b024a0249, 0x250024f024e024d, 0xffffffff02520251, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x256025502540253, 0x25a025902580257, 0x25e025d025c025b, 0x26202610260025f, 0x266026502640263, 0x26a026902680267, 0x26e026d026c026b, 0x27202710270026f, 0x276027502740273, 0x27a027902780277, 0xffff027d027c027b, 0x280027f027effff, 0xffff0282ffff0281, 0xffff0284ffff0283, 0xffff0286ffff0285, 0xffff0288ffff0287, 0xffff028affff0289, 0xffff028cffff028b, 0xffff028effff028d, 0xffff0290ffff028f, 0xffff0292ffff0291, 0xffff0294ffff0293, 0xffff0296ffff0295, 0xffff0298ffff0297, 0xffff029affff0299, 0xffff029cffff029b, 0xffff029effff029d, 0xffff02a0ffff029f, 0xffff02a2ffff02a1, 0xffff02a4ffff02a3, 0xffff02a6ffff02a5, 0xffff02a8ffff02a7, 0xffff02aaffff02a9, 0xffff02acffff02ab, 0xffff02aeffff02ad, 0xffff02b0ffff02af, 0xffff02b2ffff02b1, 0xffff02b4ffff02b3, 0xffff02b6ffff02b5, 0xffff02b8ffff02b7, 0xffff02baffff02b9, 0xffff02bcffff02bb, 0xffff02beffff02bd, 0xffff02c0ffff02bf, 0xffff02c2ffff02c1, 0xffff02c4ffff02c3, 0xffff02c6ffff02c5, 0xffff02c8ffff02c7, 0xffff02caffff02c9, 0xffffffffffff02cb, 0xffffffffffffffff, 0xffff02ccffffffff, 0xffff02ceffff02cd, 0xffff02d0ffff02cf, 0xffff02d2ffff02d1, 0xffff02d4ffff02d3, 0xffff02d6ffff02d5, 0xffff02d8ffff02d7, 0xffff02daffff02d9, 0xffff02dcffff02db, 0xffff02deffff02dd, 0xffff02e0ffff02df, 0xffff02e2ffff02e1, 0xffff02e4ffff02e3, 0xffff02e6ffff02e5, 0xffff02e8ffff02e7, 0xffff02eaffff02e9, 0xffff02ecffff02eb, 0xffff02eeffff02ed, 0xffff02f0ffff02ef, 0xffff02f2ffff02f1, 0xffff02f4ffff02f3, 0xffff02f6ffff02f5, 0xffff02f8ffff02f7, 0xffff02faffff02f9, 0xffff02fcffff02fb, 0xffffffffffffffff, 0xffffffffffffffff, 0x30002ff02fe02fd, 0x304030303020301, 0xffffffffffffffff, 0xffffffffffffffff, 0x308030703060305, 0xffffffff030a0309, 0xffffffffffffffff, 0xffffffffffffffff, 0x30e030d030c030b, 0x31203110310030f, 0xffffffffffffffff, 0xffffffffffffffff, 0x316031503140313, 0x31a031903180317, 0xffffffffffffffff, 0xffffffffffffffff, 0x31e031d031c031b, 0xffffffff0320031f, 0xffffffffffffffff, 0xffffffffffffffff, 0x322ffff0321ffff, 0x324ffff0323ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x328032703260325, 0x32c032b032a0329, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x330032f032e032d, 0x334033303320331, 0xffffffffffffffff, 0xffffffffffffffff, 0x338033703360335, 0x33c033b033a0339, 0xffffffffffffffff, 0xffffffffffffffff, 0x340033f033e033d, 0x344034303420341, 0xffffffffffffffff, 0xffffffffffffffff, 0x348034703460345, 0xffffffffffff0349, 0xffffffffffffffff, 0xffffffffffffffff, 0x34d034c034b034a, 0xffffffffffff034e, 0xffffffffffffffff, 0xffffffffffffffff, 0x35203510350034f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x356035503540353, 0xffffffffffff0357, 0xffffffffffffffff, 0xffffffffffffffff, 0x35b035a03590358, 0xffffffffffff035c, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff035dffffffff, 0x35f035effffffff, 0xffffffffffffffff, 0xffff0360ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x364036303620361, 0x368036703660365, 0x36c036b036a0369, 0x370036f036e036d, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x371ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3730372ffffffff, 0x377037603750374, 0x37b037a03790378, 0x37f037e037d037c, 0x383038203810380, 0x387038603850384, 0x38b038a03890388, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x38f038e038d038c, 0x393039203910390, 0x397039603950394, 0x39b039a03990398, 0x39f039e039d039c, 0x3a303a203a103a0, 0x3a703a603a503a4, 0x3ab03aa03a903a8, 0x3af03ae03ad03ac, 0x3b303b203b103b0, 0x3b703b603b503b4, 0x3bb03ba03b903b8, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3be03bdffff03bc, 0x3c0ffffffff03bf, 0x3c2ffff03c1ffff, 0x3c503c403c3ffff, 0xffff03c7ffff03c6, 0xffffffff03c8ffff, 0xffffffffffffffff, 0x3ca03c9ffffffff, 0xffff03ccffff03cb, 0xffff03ceffff03cd, 0xffff03d0ffff03cf, 0xffff03d2ffff03d1, 0xffff03d4ffff03d3, 0xffff03d6ffff03d5, 0xffff03d8ffff03d7, 0xffff03daffff03d9, 0xffff03dcffff03db, 0xffff03deffff03dd, 0xffff03e0ffff03df, 0xffff03e2ffff03e1, 0xffff03e4ffff03e3, 0xffff03e6ffff03e5, 0xffff03e8ffff03e7, 0xffff03eaffff03e9, 0xffff03ecffff03eb, 0xffff03eeffff03ed, 0xffff03f0ffff03ef, 0xffff03f2ffff03f1, 0xffff03f4ffff03f3, 0xffff03f6ffff03f5, 0xffff03f8ffff03f7, 0xffff03faffff03f9, 0xffff03fcffff03fb, 0xffffffffffffffff, 0x3fdffffffffffff, 0xffffffff03feffff, 0xffff03ffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0401ffff0400, 0xffff0403ffff0402, 0xffff0405ffff0404, 0xffff0407ffff0406, 0xffff0409ffff0408, 0xffff040bffff040a, 0xffff040dffff040c, 0xffff040fffff040e, 0xffff0411ffff0410, 0xffff0413ffff0412, 0xffff0415ffff0414, 0xffffffffffff0416, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0418ffff0417, 0xffff041affff0419, 0xffff041cffff041b, 0xffff041effff041d, 0xffff0420ffff041f, 0xffff0422ffff0421, 0xffff0424ffff0423, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0425ffffffff, 0xffff0427ffff0426, 0xffff0429ffff0428, 0xffff042bffff042a, 0xffff042cffffffff, 0xffff042effff042d, 0xffff0430ffff042f, 0xffff0432ffff0431, 0xffff0434ffff0433, 0xffff0436ffff0435, 0xffff0438ffff0437, 0xffff043affff0439, 0xffff043cffff043b, 0xffff043effff043d, 0xffff0440ffff043f, 0xffff0442ffff0441, 0xffff0444ffff0443, 0xffff0446ffff0445, 0xffff0448ffff0447, 0xffff044affff0449, 0xffffffffffffffff, 0xffffffffffffffff, 0x44cffff044bffff, 0xffff044e044dffff, 0xffff0450ffff044f, 0xffff0452ffff0451, 0x453ffffffffffff, 0xffffffff0454ffff, 0xffff0456ffff0455, 0xffff0457ffffffff, 0xffff0459ffff0458, 0xffff045bffff045a, 0xffff045dffff045c, 0xffff045fffff045e, 0x4620461ffff0460, 0xffff046504640463, 0x469046804670466, 0xffff046bffff046a, 0xffff046dffff046c, 0xffff046fffff046e, 0xffff0471ffff0470, 0x475047404730472, 0xffffffff0476ffff, 0xffffffffffffffff, 0xffffffffffff0477, 0xffff0478ffffffff, 0xffffffffffff0479, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff047affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x47d047c047bffff, 0x4810480047f047e, 0x485048404830482, 0x489048804870486, 0x48d048c048b048a, 0x4910490048f048e, 0xffff049404930492, 0xffffffffffffffff, 0x498049704960495, 0x49c049b049a0499, 0x4a0049f049e049d, 0x4a404a304a204a1, 0x4a804a704a604a5, 0x4ac04ab04aa04a9, 0x4b004af04ae04ad, 0x4b404b304b204b1, 0x4b804b704b604b5, 0x4bc04bb04ba04b9, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4c004bf04be04bd, 0x4c404c304c204c1, 0x4c804c704c604c5, 0x4cc04cb04ca04c9, 0x4d004cf04ce04cd, 0x4d404d304d204d1, 0x4d804d704d604d5, 0x4dc04db04da04d9, 0x4e004df04de04dd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4e404e304e204e1, 0x4e804e704e604e5, 0xffff04eb04ea04e9, 0x4ef04ee04ed04ec, 0x4f304f204f104f0, 0x4f704f604f504f4, 0xffff04fa04f904f8, 0x4fe04fd04fc04fb, 0xffff0501050004ff, 0xffffffff05030502, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x507050605050504, 0x50b050a05090508, 0x50f050e050d050c, 0x513051205110510, 0x517051605150514, 0x51b051a05190518, 0x51f051e051d051c, 0x523052205210520, 0x527052605250524, 0x52b052a05290528, 0x52f052e052d052c, 0x533053205310530, 0xffff053605350534, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x53a053905380537, 0x53e053d053c053b, 0x54205410540053f, 0x546054505440543, 0x54a054905480547, 0x54e054d054c054b, 0x55205510550054f, 0x556055505540553, 0x55a055905580557, 0x55e055d055c055b, 0x56205610560055f, 0x566056505640563, 0x56a056905680567, 0x56e056d056c056b, 0x57205710570056f, 0x576057505740573, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x57a057905780577, 0x57e057d057c057b, 0x58205810580057f, 0x586058505840583, 0x58a058905880587, 0x58e058d058c058b, 0x59205910590058f, 0x596059505940593, 0xffffffff05980597, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +000000000000010000000000000004800000000000000E40", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000200000001000000060005000400030000000000080007000B000A00090000 +000F000E000D000C00000000001100100000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001300120000000000000000000000000000000000000000001500140000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000016000000000000000000000000001A001900180017001E001D001C001B0000000000000000000000210020001F +000000000000000000000000000000000023002200000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000270026002500240000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002900280000002D002C002B002A00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E +0000000000000000000000000000000000000000000000000000000000000000003100300000002F0000003300320000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003600000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000200010000FFFF0006000500040003000A000900080007000E000D000C000B001200110010000F0016001500140013 +FFFF001900180017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001D001C001B001A00210020001F001E +00250024002300220029002800270026002D002C002B002AFFFF0030002F002E0034003300320031FFFF003700360035 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0039FFFF0038FFFF003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003E +FFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004A +FFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF0050FFFF0053FFFF00520055FFFF0054FFFF0057FFFF0056FFFF +0059FFFF0058FFFF005BFFFF005AFFFFFFFF005CFFFFFFFFFFFF005EFFFF005DFFFF0060FFFF005FFFFF0062FFFF0061 +FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006D +FFFF0070FFFF006FFFFF0072FFFF00710075FFFF00740073FFFFFFFF0076FFFFFFFF00780077FFFF007B007AFFFF0079 +007E007D007CFFFF0080007FFFFFFFFF0083FFFF0082008100860085FFFF0084FFFFFFFFFFFF0087008AFFFF00890088 +FFFF008CFFFF008B008F008EFFFF008DFFFFFFFF0090FFFF00930092FFFF0091009600950094FFFF0098FFFF0097FFFF +FFFFFFFFFFFF0099FFFFFFFFFFFF009AFFFFFFFFFFFFFFFF009DFFFF009C009B00A0009FFFFF009E00A2FFFF00A1FFFF +00A4FFFF00A3FFFF00A6FFFF00A5FFFF00A8FFFF00A7FFFFFFFF00A9FFFFFFFFFFFF00ABFFFF00AAFFFF00ADFFFF00AC +FFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF00B300B2FFFF00B600B5FFFF00B4FFFF00B8FFFF00B7FFFF00BAFFFF00B9 +FFFF00BCFFFF00BBFFFF00BEFFFF00BDFFFF00C0FFFF00BFFFFF00C2FFFF00C1FFFF00C4FFFF00C3FFFF00C6FFFF00C5 +FFFF00C8FFFF00C7FFFF00CAFFFF00C9FFFF00CCFFFF00CBFFFF00CEFFFF00CDFFFF00D0FFFF00CFFFFF00D2FFFF00D1 +FFFF00D4FFFF00D3FFFFFFFFFFFFFFFF00D600D5FFFFFFFFFFFF00D800D7FFFF00DAFFFF00D9FFFFFFFF00DD00DC00DB +FFFF00DFFFFF00DEFFFF00E1FFFF00E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00E3FFFF00E2FFFF00E4FFFFFFFFFFFFFFFFFFFFFFFF00E5FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00E6FFFFFFFFFFFF00E900E800E700EC00EBFFFF00EA00EF00EE00EDFFFF00F300F200F100F0 +00F700F600F500F400FB00FA00F900F800FEFFFF00FD00FC01020101010000FF0106010501040103FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0107FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0109FFFF0108FFFF010BFFFF010A +FFFF010DFFFF010CFFFF010FFFFF010EFFFF0111FFFF0110FFFF0113FFFF0112FFFFFFFFFFFFFFFF0115FFFFFFFF0114 +FFFF01170116FFFF011A01190118FFFF011E011D011C011B012201210120011F0126012501240123012A012901280127 +012E012D012C012B013201310130012F0136013501340133013A013901380137013E013D013C013B014201410140013F +0146014501440143014A014901480147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF014CFFFF014BFFFF014EFFFF014DFFFF0150FFFF014FFFFF0152FFFF0151 +FFFF0154FFFF0153FFFF0156FFFF0155FFFF0158FFFF0157FFFF015AFFFF0159FFFFFFFFFFFF015BFFFFFFFFFFFFFFFF +FFFF015CFFFFFFFFFFFF015EFFFF015DFFFF0160FFFF015FFFFF0162FFFF0161FFFF0164FFFF0163FFFF0166FFFF0165 +FFFF0168FFFF0167FFFF016AFFFF0169FFFF016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171 +FFFF0174FFFF0173FFFF0176FFFF01750179FFFF01780177017BFFFF017AFFFF017DFFFF017CFFFFFFFFFFFF017EFFFF +FFFF0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189 +FFFF018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFF0196FFFF0195 +FFFF0198FFFF0197FFFF019AFFFF0199FFFF019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1 +FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01AD +01B101B001AFFFFF01B501B401B301B201B901B801B701B601BD01BC01BB01BA01C101C001BF01BE01C501C401C301C2 +01C901C801C701C601CD01CC01CB01CA01D101D001CF01CEFFFF01D401D301D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01D801D701D601D501DC01DB01DA01D9 +01E001DF01DE01DD01E401E301E201E101E801E701E601E501EC01EB01EA01E901F001EF01EE01ED01F401F301F201F1 +01F801F701F601F501FBFFFF01FA01F9FFFFFFFFFFFFFFFFFFFFFFFF01FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +020001FF01FE01FD02040203020202010208020702060205020C020B020A02090210020F020E020D0214021302120211 +0218021702160215021C021B021A02190220021F021E021D02240223022202210228022702260225022C022B022A0229 +0230022F022E022D02340233023202310238023702360235023C023B023A02390240023F023E023D0244024302420241 +0248024702460245024C024B024A02490250024F024E024DFFFFFFFF02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0256025502540253025A025902580257 +025E025D025C025B026202610260025F0266026502640263026A026902680267026E026D026C026B027202710270026F +0276027502740273027A027902780277FFFF027D027C027B0280027F027EFFFFFFFF0282FFFF0281FFFF0284FFFF0283 +FFFF0286FFFF0285FFFF0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028F +FFFF0292FFFF0291FFFF0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029B +FFFF029EFFFF029DFFFF02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7 +FFFF02AAFFFF02A9FFFF02ACFFFF02ABFFFF02AEFFFF02ADFFFF02B0FFFF02AFFFFF02B2FFFF02B1FFFF02B4FFFF02B3 +FFFF02B6FFFF02B5FFFF02B8FFFF02B7FFFF02BAFFFF02B9FFFF02BCFFFF02BBFFFF02BEFFFF02BDFFFF02C0FFFF02BF +FFFF02C2FFFF02C1FFFF02C4FFFF02C3FFFF02C6FFFF02C5FFFF02C8FFFF02C7FFFF02CAFFFF02C9FFFFFFFFFFFF02CB +FFFFFFFFFFFFFFFFFFFF02CCFFFFFFFFFFFF02CEFFFF02CDFFFF02D0FFFF02CFFFFF02D2FFFF02D1FFFF02D4FFFF02D3 +FFFF02D6FFFF02D5FFFF02D8FFFF02D7FFFF02DAFFFF02D9FFFF02DCFFFF02DBFFFF02DEFFFF02DDFFFF02E0FFFF02DF +FFFF02E2FFFF02E1FFFF02E4FFFF02E3FFFF02E6FFFF02E5FFFF02E8FFFF02E7FFFF02EAFFFF02E9FFFF02ECFFFF02EB +FFFF02EEFFFF02EDFFFF02F0FFFF02EFFFFF02F2FFFF02F1FFFF02F4FFFF02F3FFFF02F6FFFF02F5FFFF02F8FFFF02F7 +FFFF02FAFFFF02F9FFFF02FCFFFF02FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030002FF02FE02FD0304030303020301 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0308030703060305FFFFFFFF030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030E030D030C030B031203110310030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0316031503140313031A031903180317 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031E031D031C031BFFFFFFFF0320031FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0322FFFF0321FFFF0324FFFF0323FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0328032703260325032C032B032A0329 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0330032F032E032D0334033303320331FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0338033703360335033C033B033A0339 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0340033F033E033D0344034303420341FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0348034703460345FFFFFFFFFFFF0349FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF034D034C034B034AFFFFFFFFFFFF034E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035203510350034FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0356035503540353FFFFFFFFFFFF0357FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035B035A03590358FFFFFFFFFFFF035C +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03640363036203610368036703660365036C036B036A03690370036F036E036DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF03730372FFFFFFFF0377037603750374037B037A03790378037F037E037D037C0383038203810380 +0387038603850384038B038A03890388FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF038F038E038D038C03930392039103900397039603950394039B039A03990398 +039F039E039D039C03A303A203A103A003A703A603A503A403AB03AA03A903A803AF03AE03AD03AC03B303B203B103B0 +03B703B603B503B403BB03BA03B903B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03BE03BDFFFF03BC03C0FFFFFFFF03BF03C2FFFF03C1FFFF03C503C403C3FFFF +FFFF03C7FFFF03C6FFFFFFFF03C8FFFFFFFFFFFFFFFFFFFF03CA03C9FFFFFFFFFFFF03CCFFFF03CBFFFF03CEFFFF03CD +FFFF03D0FFFF03CFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9 +FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF03E6FFFF03E5 +FFFF03E8FFFF03E7FFFF03EAFFFF03E9FFFF03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1 +FFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFFFFFFFFFFFFFF +03FDFFFFFFFFFFFFFFFFFFFF03FEFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040A +FFFF040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFFFFFFFFFF0416 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0417FFFF041AFFFF0419 +FFFF041CFFFF041BFFFF041EFFFF041DFFFF0420FFFF041FFFFF0422FFFF0421FFFF0424FFFF0423FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFFFFFFFFFF0427FFFF0426 +FFFF0429FFFF0428FFFF042BFFFF042AFFFF042CFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431 +FFFF0434FFFF0433FFFF0436FFFF0435FFFF0438FFFF0437FFFF043AFFFF0439FFFF043CFFFF043BFFFF043EFFFF043D +FFFF0440FFFF043FFFFF0442FFFF0441FFFF0444FFFF0443FFFF0446FFFF0445FFFF0448FFFF0447FFFF044AFFFF0449 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF044CFFFF044BFFFFFFFF044E044DFFFFFFFF0450FFFF044FFFFF0452FFFF0451 +0453FFFFFFFFFFFFFFFFFFFF0454FFFFFFFF0456FFFF0455FFFF0457FFFFFFFFFFFF0459FFFF0458FFFF045BFFFF045A +FFFF045DFFFF045CFFFF045FFFFF045E04620461FFFF0460FFFF0465046404630469046804670466FFFF046BFFFF046A +FFFF046DFFFF046CFFFF046FFFFF046EFFFF0471FFFF04700475047404730472FFFFFFFF0476FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0477FFFF0478FFFFFFFFFFFFFFFFFFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047D047C047BFFFF04810480047F047E04850484048304820489048804870486 +048D048C048B048A04910490048F048EFFFF049404930492FFFFFFFFFFFFFFFF0498049704960495049C049B049A0499 +04A0049F049E049D04A404A304A204A104A804A704A604A504AC04AB04AA04A904B004AF04AE04AD04B404B304B204B1 +04B804B704B604B504BC04BB04BA04B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C004BF04BE04BD04C404C304C204C104C804C704C604C504CC04CB04CA04C9 +04D004CF04CE04CD04D404D304D204D104D804D704D604D504DC04DB04DA04D904E004DF04DE04DDFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E404E304E204E104E804E704E604E5 +FFFF04EB04EA04E904EF04EE04ED04EC04F304F204F104F004F704F604F504F4FFFF04FA04F904F804FE04FD04FC04FB +FFFF0501050004FFFFFFFFFF05030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0507050605050504050B050A05090508050F050E050D050C05130512051105100517051605150514051B051A05190518 +051F051E051D051C05230522052105200527052605250524052B052A05290528052F052E052D052C0533053205310530 +FFFF053605350534FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +053A053905380537053E053D053C053B054205410540053F0546054505440543054A054905480547054E054D054C054B +055205510550054F0556055505540553055A055905580557055E055D055C055B056205610560055F0566056505640563 +056A056905680567056E056D056C056B057205710570056F0576057505740573FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +057A057905780577057E057D057C057B058205810580057F0586058505840583058A058905880587058E058D058C058B +059205910590058F0596059505940593FFFFFFFF05980597FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); //10368 bytes -enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)([ 0x0, 0x20, 0x140], [ 0x100, 0x480, 0xf40], [ 0x402030202020100, 0x702020206020205, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x202020202020202, 0x3000200010000, 0x7000600050004, 0xa00090008, 0xd000c000b0000, 0x110010000f000e, 0x1400130012, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x15000000000000, 0x0, 0x0, 0x16000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1700000000, 0x1900180000, 0x1d001c001b001a, 0x210020001f001e, 0x0, 0x2300220000, 0x0, 0x0, 0x24000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x28002700260025, 0x29, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2b002a0000, 0x2f002e002d002c, 0x0, 0x0, 0x0, 0x3100300000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x320000, 0x0, 0x0, 0x0, 0x0, 0x35000000340033, 0x3600000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x37000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x38000000000000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x390000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3b003a, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x200010000ffff, 0x6000500040003, 0xa000900080007, 0xe000d000c000b, 0x1200110010000f, 0x16001500140013, 0xffff001900180017, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff001affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1e001d001c001b, 0x2200210020001f, 0x26002500240023, 0x2a002900280027, 0x2e002d002c002b, 0xffff00310030002f, 0x35003400330032, 0x39003800370036, 0x3bffff003affff, 0x3dffff003cffff, 0x3fffff003effff, 0x41ffff0040ffff, 0x43ffff0042ffff, 0x45ffff0044ffff, 0x47ffff0046ffff, 0x49ffff0048ffff, 0x4bffff004affff, 0x4dffff004cffff, 0x4fffff004effff, 0x51ffff0050ffff, 0x53ffff0052ffff, 0x55ffff0054ffff, 0xffff0056ffffffff, 0xffff0058ffff0057, 0xffff005affff0059, 0xffff005cffff005b, 0x5effffffff005d, 0x60ffff005fffff, 0x62ffff0061ffff, 0x64ffff0063ffff, 0x66ffff0065ffff, 0x68ffff0067ffff, 0x6affff0069ffff, 0x6cffff006bffff, 0x6effff006dffff, 0x70ffff006fffff, 0x72ffff0071ffff, 0x74ffff0073ffff, 0xffff0075ffffffff, 0x780077ffff0076, 0x7affffffff0079, 0xffffffff007bffff, 0xffffffffffff007c, 0xffffffffffff007d, 0xffff007effffffff, 0xffffffff007fffff, 0xffff00810080ffff, 0xffff0082ffffffff, 0x84ffff0083ffff, 0xffffffff0085ffff, 0xffffffffffff0086, 0xffffffff0087ffff, 0xffffffffffff0088, 0xffff008affff0089, 0xffffffff008bffff, 0x8dffff008cffff, 0xffffffffffffffff, 0x910090008f008e, 0x95009400930092, 0xffff0097ffff0096, 0xffff0099ffff0098, 0xffff009bffff009a, 0xffff009dffff009c, 0xa0ffff009f009e, 0xa2ffff00a1ffff, 0xa4ffff00a3ffff, 0xa6ffff00a5ffff, 0xa8ffff00a7ffff, 0xab00aa00a9ffff, 0xffffffff00acffff, 0xaeffff00adffff, 0xb0ffff00afffff, 0xb2ffff00b1ffff, 0xb4ffff00b3ffff, 0xb6ffff00b5ffff, 0xb8ffff00b7ffff, 0xbaffff00b9ffff, 0xbcffff00bbffff, 0xbeffff00bdffff, 0xc0ffff00bfffff, 0xc1ffffffffffff, 0xc3ffff00c2ffff, 0xc5ffff00c4ffff, 0xc7ffff00c6ffff, 0xc9ffff00c8ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xcbffffffff00ca, 0xffff00cdffff00cc, 0xceffffffffffff, 0xd0ffff00cfffff, 0xd2ffff00d1ffff, 0xd600d500d400d3, 0xd900d8ffff00d7, 0xdbffff00daffff, 0xffffffffffff00dc, 0xdfffff00de00dd, 0xffff00e100e0ffff, 0xe500e400e300e2, 0xe7ffffffff00e6, 0xffff00e900e8ffff, 0xffffffff00eaffff, 0xffffffffffffffff, 0xffffffff00ebffff, 0xee00edffff00ec, 0xefffffffffffff, 0xf300f200f100f0, 0xffffffffffff00f4, 0xffff00f5ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff00f700f6ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff00f8ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xfaffff00f9ffff, 0xfbffffffffffff, 0xfcffffffffffff, 0xffffffff00fe00fd, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1020101010000ff, 0x10501040103ffff, 0x109010801070106, 0x10d010c010b010a, 0x1110110010f010e, 0x115011401130112, 0x119011801170116, 0x11d011c011b011a, 0xffff0120011f011e, 0xffffffff01220121, 0x12501240123ffff, 0x127ffff0126ffff, 0x129ffff0128ffff, 0x12bffff012affff, 0x12dffff012cffff, 0x12fffff012effff, 0x131ffff0130ffff, 0x135013401330132, 0xffffffff0136ffff, 0x138ffffffff0137, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x13c013b013a0139, 0x140013f013e013d, 0x144014301420141, 0x148014701460145, 0x14c014b014a0149, 0x150014f014e014d, 0x154015301520151, 0x158015701560155, 0x15c015b015a0159, 0x160015f015e015d, 0x164016301620161, 0x168016701660165, 0x16affff0169ffff, 0x16cffff016bffff, 0x16effff016dffff, 0x170ffff016fffff, 0x172ffff0171ffff, 0x174ffff0173ffff, 0x176ffff0175ffff, 0x178ffff0177ffff, 0xffffffff0179ffff, 0xffffffffffffffff, 0x17affffffffffff, 0x17cffff017bffff, 0x17effff017dffff, 0x180ffff017fffff, 0x182ffff0181ffff, 0x184ffff0183ffff, 0x186ffff0185ffff, 0x188ffff0187ffff, 0x18affff0189ffff, 0x18cffff018bffff, 0x18effff018dffff, 0x190ffff018fffff, 0x192ffff0191ffff, 0x194ffff0193ffff, 0xffff0195ffffffff, 0xffff0197ffff0196, 0xffff0199ffff0198, 0x19c019bffff019a, 0x19effff019dffff, 0x1a0ffff019fffff, 0x1a2ffff01a1ffff, 0x1a4ffff01a3ffff, 0x1a6ffff01a5ffff, 0x1a8ffff01a7ffff, 0x1aaffff01a9ffff, 0x1acffff01abffff, 0x1aeffff01adffff, 0x1b0ffff01afffff, 0x1b2ffff01b1ffff, 0x1b4ffff01b3ffff, 0x1b6ffff01b5ffff, 0x1b8ffff01b7ffff, 0x1baffff01b9ffff, 0x1bcffff01bbffff, 0x1beffff01bdffff, 0x1c0ffff01bfffff, 0x1c2ffff01c1ffff, 0x1c4ffff01c3ffff, 0x1c6ffff01c5ffff, 0x1c8ffff01c7ffff, 0x1caffff01c9ffff, 0x1ccffff01cbffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1cf01ce01cdffff, 0x1d301d201d101d0, 0x1d701d601d501d4, 0x1db01da01d901d8, 0x1df01de01dd01dc, 0x1e301e201e101e0, 0x1e701e601e501e4, 0x1eb01ea01e901e8, 0x1ef01ee01ed01ec, 0xffff01f201f101f0, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x1f601f501f401f3, 0x1fa01f901f801f7, 0x1fe01fd01fc01fb, 0x2020201020001ff, 0x206020502040203, 0x20a020902080207, 0x20e020d020c020b, 0x21202110210020f, 0x216021502140213, 0x21a021902180217, 0xffff021d021c021b, 0x220021f021effff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x224022302220221, 0xffffffff02260225, 0x22a022902280227, 0x22e022d022c022b, 0xffffffffffff022f, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff0230ffff, 0xffffffff0231ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0232ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x234ffff0233ffff, 0x236ffff0235ffff, 0x238ffff0237ffff, 0x23affff0239ffff, 0x23cffff023bffff, 0x23effff023dffff, 0x240ffff023fffff, 0x242ffff0241ffff, 0x244ffff0243ffff, 0x246ffff0245ffff, 0x248ffff0247ffff, 0x24affff0249ffff, 0x24cffff024bffff, 0x24effff024dffff, 0x250ffff024fffff, 0x252ffff0251ffff, 0x254ffff0253ffff, 0x256ffff0255ffff, 0x258ffff0257ffff, 0x25affff0259ffff, 0x25cffff025bffff, 0x25effff025dffff, 0x260ffff025fffff, 0x262ffff0261ffff, 0x264ffff0263ffff, 0x266ffff0265ffff, 0x268ffff0267ffff, 0x26affff0269ffff, 0x26cffff026bffff, 0x26effff026dffff, 0x270ffff026fffff, 0x272ffff0271ffff, 0x274ffff0273ffff, 0x276ffff0275ffff, 0x278ffff0277ffff, 0x27affff0279ffff, 0x27cffff027bffff, 0xffffffff027dffff, 0x27effffffffffff, 0xffffffffffffffff, 0x280ffff027fffff, 0x282ffff0281ffff, 0x284ffff0283ffff, 0x286ffff0285ffff, 0x288ffff0287ffff, 0x28affff0289ffff, 0x28cffff028bffff, 0x28effff028dffff, 0x290ffff028fffff, 0x292ffff0291ffff, 0x294ffff0293ffff, 0x296ffff0295ffff, 0x298ffff0297ffff, 0x29affff0299ffff, 0x29cffff029bffff, 0x29effff029dffff, 0x2a0ffff029fffff, 0x2a2ffff02a1ffff, 0x2a4ffff02a3ffff, 0x2a6ffff02a5ffff, 0x2a8ffff02a7ffff, 0x2aaffff02a9ffff, 0x2acffff02abffff, 0x2aeffff02adffff, 0x2b202b102b002af, 0x2b602b502b402b3, 0xffffffffffffffff, 0xffffffffffffffff, 0x2ba02b902b802b7, 0xffffffff02bc02bb, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c002bf02be02bd, 0x2c402c302c202c1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2c802c702c602c5, 0x2cc02cb02ca02c9, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d002cf02ce02cd, 0xffffffff02d202d1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2d4ffff02d3ffff, 0x2d6ffff02d5ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x2da02d902d802d7, 0x2de02dd02dc02db, 0xffffffffffffffff, 0xffffffffffffffff, 0x2e202e102e002df, 0x2e602e502e402e3, 0x2ea02e902e802e7, 0xffffffff02ec02eb, 0x2f002ef02ee02ed, 0x2f402f302f202f1, 0xffffffffffffffff, 0xffffffffffffffff, 0x2f802f702f602f5, 0x2fc02fb02fa02f9, 0xffffffffffffffff, 0xffffffffffffffff, 0x30002ff02fe02fd, 0x304030303020301, 0xffffffffffffffff, 0xffffffffffffffff, 0x307ffff03060305, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0308ffffffff, 0x309ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff030b030a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffff030d030c, 0xffffffff030effff, 0xffffffffffffffff, 0xffffffffffffffff, 0x30fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff0310ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x314031303120311, 0x318031703160315, 0x31c031b031a0319, 0x320031f031e031d, 0xffffffffffffffff, 0xffffffffffff0321, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x325032403230322, 0x329032803270326, 0x32d032c032b032a, 0x3310330032f032e, 0x335033403330332, 0x339033803370336, 0xffffffff033b033a, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x33f033e033d033c, 0x343034203410340, 0x347034603450344, 0x34b034a03490348, 0x34f034e034d034c, 0x353035203510350, 0x357035603550354, 0x35b035a03590358, 0x35f035e035d035c, 0x363036203610360, 0x367036603650364, 0x36b036a03690368, 0xffffffff036cffff, 0xffff036e036dffff, 0xffff0370ffff036f, 0xffffffffffff0371, 0x372ffffffffffff, 0xffff0373ffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x375ffff0374ffff, 0x377ffff0376ffff, 0x379ffff0378ffff, 0x37bffff037affff, 0x37dffff037cffff, 0x37fffff037effff, 0x381ffff0380ffff, 0x383ffff0382ffff, 0x385ffff0384ffff, 0x387ffff0386ffff, 0x389ffff0388ffff, 0x38bffff038affff, 0x38dffff038cffff, 0x38fffff038effff, 0x391ffff0390ffff, 0x393ffff0392ffff, 0x395ffff0394ffff, 0x397ffff0396ffff, 0x399ffff0398ffff, 0x39bffff039affff, 0x39dffff039cffff, 0x39fffff039effff, 0x3a1ffff03a0ffff, 0x3a3ffff03a2ffff, 0x3a5ffff03a4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff03a7ffff03a6, 0x3a8ffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3ac03ab03aa03a9, 0x3b003af03ae03ad, 0x3b403b303b203b1, 0x3b803b703b603b5, 0x3bc03bb03ba03b9, 0x3c003bf03be03bd, 0x3c403c303c203c1, 0x3c803c703c603c5, 0x3cc03cb03ca03c9, 0x3cfffff03ce03cd, 0xffffffffffffffff, 0xffffffff03d0ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3d2ffff03d1ffff, 0x3d4ffff03d3ffff, 0x3d6ffff03d5ffff, 0x3d8ffff03d7ffff, 0x3daffff03d9ffff, 0x3dcffff03dbffff, 0x3deffff03ddffff, 0x3e0ffff03dfffff, 0x3e2ffff03e1ffff, 0x3e4ffff03e3ffff, 0x3e6ffff03e5ffff, 0xffffffff03e7ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3e9ffff03e8ffff, 0x3ebffff03eaffff, 0x3edffff03ecffff, 0x3efffff03eeffff, 0x3f1ffff03f0ffff, 0x3f3ffff03f2ffff, 0x3f5ffff03f4ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x3f6ffffffffffff, 0x3f8ffff03f7ffff, 0x3faffff03f9ffff, 0x3fcffff03fbffff, 0x3fdffffffffffff, 0x3ffffff03feffff, 0x401ffff0400ffff, 0x403ffff0402ffff, 0x405ffff0404ffff, 0x407ffff0406ffff, 0x409ffff0408ffff, 0x40bffff040affff, 0x40dffff040cffff, 0x40fffff040effff, 0x411ffff0410ffff, 0x413ffff0412ffff, 0x415ffff0414ffff, 0x417ffff0416ffff, 0x419ffff0418ffff, 0x41bffff041affff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff041cffffffff, 0x41effffffff041d, 0x420ffff041fffff, 0x422ffff0421ffff, 0xffffffffffffffff, 0xffffffffffff0423, 0x425ffff0424ffff, 0x427ffffffff0426, 0x429ffff0428ffff, 0x42bffff042affff, 0x42dffff042cffff, 0x42fffff042effff, 0xffffffff0430ffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x432ffff0431ffff, 0x434ffff0433ffff, 0x436ffff0435ffff, 0x438ffff0437ffff, 0xffffffffffffffff, 0xffff043affff0439, 0xffffffffffffffff, 0xffffffff043bffff, 0x43cffffffffffff, 0xffffffff043dffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffff043effffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x43fffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x443044204410440, 0x447044604450444, 0x44b044a04490448, 0x44f044e044d044c, 0x453045204510450, 0x457045604550454, 0x45b045a04590458, 0x45f045e045d045c, 0x463046204610460, 0x467046604650464, 0x46b046a04690468, 0x46f046e046d046c, 0x473047204710470, 0x477047604750474, 0x47b047a04790478, 0x47f047e047d047c, 0x483048204810480, 0x487048604850484, 0x48b048a04890488, 0x48f048e048d048c, 0x49204910490ffff, 0x496049504940493, 0x49a049904980497, 0x49e049d049c049b, 0x4a204a104a0049f, 0x4a604a504a404a3, 0xffff04a904a804a7, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4ad04ac04ab04aa, 0x4b104b004af04ae, 0x4b504b404b304b2, 0x4b904b804b704b6, 0x4bd04bc04bb04ba, 0x4c104c004bf04be, 0x4c504c404c304c2, 0x4c904c804c704c6, 0x4cd04cc04cb04ca, 0x4d104d004cf04ce, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4d504d404d304d2, 0x4d904d804d704d6, 0x4dd04dc04db04da, 0x4e104e004df04de, 0x4e504e404e304e2, 0x4e904e804e704e6, 0x4ed04ec04eb04ea, 0x4f104f004ef04ee, 0x4f504f404f304f2, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x4f6ffffffffffff, 0x4fa04f904f804f7, 0x4fe04fd04fc04fb, 0x501ffff050004ff, 0x505050405030502, 0x509050805070506, 0x50d050c050b050a, 0x510ffff050f050e, 0x514051305120511, 0x517ffff05160515, 0xffffffffffff0518, 0x51c051b051a0519, 0x520051f051e051d, 0x524052305220521, 0x528052705260525, 0x52c052b052a0529, 0x530052f052e052d, 0x534053305320531, 0x538053705360535, 0x53c053b053a0539, 0x540053f053e053d, 0x544054305420541, 0x548054705460545, 0xffff054b054a0549, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x54f054e054d054c, 0x553055205510550, 0x557055605550554, 0x55b055a05590558, 0x55f055e055d055c, 0x563056205610560, 0x567056605650564, 0x56b056a05690568, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x56f056e056d056c, 0x573057205710570, 0x577057605750574, 0x57b057a05790578, 0x57f057e057d057c, 0x583058205810580, 0x587058605850584, 0x58b058a05890588, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x58d058cffffffff, 0x5910590058f058e, 0x595059405930592, 0x599059805970596, 0x59d059c059b059a, 0x5a105a0059f059e, 0x5a505a405a305a2, 0x5a905a805a705a6, 0x5ad05ac05ab05aa, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff]); +enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +000000000000000000000000000000200000000000000140", +cast(immutable size_t[]) x" +000000000000010000000000000004800000000000000F40", +cast(immutable size_t[]) x" +040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 +02020202020202020202020202020202000300020001000000070006000500040000000A00090008000D000C000B0000 +00110010000F000E00000014001300120000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +001500000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000017000000000000001900180000001D001C001B001A00210020001F001E00000000000000000000002300220000 +000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000280027002600250000000000000029 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000002B002A0000002F002E002D002C00000000000000000000000000000000 +000000000000000000000031003000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000320000 +000000000000000000000000000000000000000000000000000000000000000000350000003400330000003600000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003900000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003B003A0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000200010000FFFF0006000500040003000A000900080007000E000D000C000B +001200110010000F0016001500140013FFFF001900180017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001E001D001C001B002200210020001F +0026002500240023002A002900280027002E002D002C002BFFFF00310030002F00350034003300320039003800370036 +003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003EFFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF +0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004AFFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF0050FFFF +0053FFFF0052FFFF0055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B +005EFFFFFFFF005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF +006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF +FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D +FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF +FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF +FFFFFFFFFFFFFFFF00910090008F008E0095009400930092FFFF0097FFFF0096FFFF0099FFFF0098FFFF009BFFFF009A +FFFF009DFFFF009C00A0FFFF009F009E00A2FFFF00A1FFFF00A4FFFF00A3FFFF00A6FFFF00A5FFFF00A8FFFF00A7FFFF +00AB00AA00A9FFFFFFFFFFFF00ACFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF00B2FFFF00B1FFFF00B4FFFF00B3FFFF +00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF00BEFFFF00BDFFFF00C0FFFF00BFFFFF +00C1FFFFFFFFFFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFF00C7FFFF00C6FFFF00C9FFFF00C8FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00CBFFFFFFFF00CAFFFF00CDFFFF00CC00CEFFFFFFFFFFFF00D0FFFF00CFFFFF00D2FFFF00D1FFFF +00D600D500D400D300D900D8FFFF00D700DBFFFF00DAFFFFFFFFFFFFFFFF00DC00DFFFFF00DE00DDFFFF00E100E0FFFF +00E500E400E300E200E7FFFFFFFF00E6FFFF00E900E8FFFFFFFFFFFF00EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFF +00EE00EDFFFF00EC00EFFFFFFFFFFFFF00F300F200F100F0FFFFFFFFFFFF00F4FFFF00F5FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F700F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFF00F9FFFF00FBFFFFFFFFFFFF +00FCFFFFFFFFFFFFFFFFFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF01020101010000FF010501040103FFFF0109010801070106010D010C010B010A01110110010F010E +01150114011301120119011801170116011D011C011B011AFFFF0120011F011EFFFFFFFF01220121012501240123FFFF +0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF0131FFFF0130FFFF +0135013401330132FFFFFFFF0136FFFF0138FFFFFFFF0137FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013C013B013A01390140013F013E013D +01440143014201410148014701460145014C014B014A01490150014F014E014D01540153015201510158015701560155 +015C015B015A01590160015F015E015D01640163016201610168016701660165016AFFFF0169FFFF016CFFFF016BFFFF +016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF0178FFFF0177FFFF +FFFFFFFF0179FFFFFFFFFFFFFFFFFFFF017AFFFFFFFFFFFF017CFFFF017BFFFF017EFFFF017DFFFF0180FFFF017FFFFF +0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF018CFFFF018BFFFF +018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFFFFFF0195FFFFFFFFFFFF0197FFFF0196 +FFFF0199FFFF0198019C019BFFFF019A019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1FFFF01A4FFFF01A3FFFF +01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF01B0FFFF01AFFFFF +01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF01BCFFFF01BBFFFF +01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF01C8FFFF01C7FFFF +01CAFFFF01C9FFFF01CCFFFF01CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CF01CE01CDFFFF01D301D201D101D001D701D601D501D401DB01DA01D901D8 +01DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E801EF01EE01ED01ECFFFF01F201F101F0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203020A020902080207 +020E020D020C020B021202110210020F0216021502140213021A021902180217FFFF021D021C021B0220021F021EFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0224022302220221FFFFFFFF02260225022A022902280227022E022D022C022B +FFFFFFFFFFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0234FFFF0233FFFF0236FFFF0235FFFF +0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF0240FFFF023FFFFF0242FFFF0241FFFF +0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF024CFFFF024BFFFF024EFFFF024DFFFF +0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF0258FFFF0257FFFF025AFFFF0259FFFF +025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF0264FFFF0263FFFF0266FFFF0265FFFF +0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF0270FFFF026FFFFF0272FFFF0271FFFF +0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFF027AFFFF0279FFFF027CFFFF027BFFFFFFFFFFFF027DFFFF +027EFFFFFFFFFFFFFFFFFFFFFFFFFFFF0280FFFF027FFFFF0282FFFF0281FFFF0284FFFF0283FFFF0286FFFF0285FFFF +0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028FFFFF0292FFFF0291FFFF +0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029BFFFF029EFFFF029DFFFF +02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7FFFF02AAFFFF02A9FFFF +02ACFFFF02ABFFFF02AEFFFF02ADFFFF02B202B102B002AF02B602B502B402B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02BA02B902B802B7FFFFFFFF02BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C002BF02BE02BD02C402C302C202C1 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C802C702C602C502CC02CB02CA02C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02D002CF02CE02CDFFFFFFFF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D4FFFF02D3FFFF02D6FFFF02D5FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DA02D902D802D702DE02DD02DC02DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E202E102E002DF02E602E502E402E302EA02E902E802E7FFFFFFFF02EC02EB02F002EF02EE02ED02F402F302F202F1 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F802F702F602F502FC02FB02FA02F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030002FF02FE02FD0304030303020301FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0307FFFF03060305FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0308FFFFFFFF0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030D030CFFFFFFFF030EFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03140313031203110318031703160315031C031B031A03190320031F031E031DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0321 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03250324032303220329032803270326032D032C032B032A03310330032F032E03350334033303320339033803370336 +FFFFFFFF033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C0353035203510350 +0357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364036B036A03690368 +FFFFFFFF036CFFFFFFFF036E036DFFFFFFFF0370FFFF036FFFFFFFFFFFFF03710372FFFFFFFFFFFFFFFF0373FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0375FFFF0374FFFF0377FFFF0376FFFF0379FFFF0378FFFF037BFFFF037AFFFF +037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF0385FFFF0384FFFF0387FFFF0386FFFF +0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF0391FFFF0390FFFF0393FFFF0392FFFF +0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF039DFFFF039CFFFF039FFFFF039EFFFF +03A1FFFF03A0FFFF03A3FFFF03A2FFFF03A5FFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A7FFFF03A6 +03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AC03AB03AA03A903B003AF03AE03AD +03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C103C803C703C603C5 +03CC03CB03CA03C903CFFFFF03CE03CDFFFFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF +03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF +03E6FFFF03E5FFFFFFFFFFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF03F1FFFF03F0FFFF03F3FFFF03F2FFFF +03F5FFFF03F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F6FFFFFFFFFFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFF03FDFFFFFFFFFFFF03FFFFFF03FEFFFF +0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040AFFFF +040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFF0417FFFF0416FFFF +0419FFFF0418FFFF041BFFFF041AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFFFFFF041EFFFFFFFF041D +0420FFFF041FFFFF0422FFFF0421FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04230425FFFF0424FFFF0427FFFFFFFF0426 +0429FFFF0428FFFF042BFFFF042AFFFF042DFFFF042CFFFF042FFFFF042EFFFFFFFFFFFF0430FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0432FFFF0431FFFF0434FFFF0433FFFF0436FFFF0435FFFF0438FFFF0437FFFFFFFFFFFFFFFFFFFF +FFFF043AFFFF0439FFFFFFFFFFFFFFFFFFFFFFFF043BFFFF043CFFFFFFFFFFFFFFFFFFFF043DFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043EFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04430442044104400447044604450444044B044A04490448044F044E044D044C +04530452045104500457045604550454045B045A04590458045F045E045D045C04630462046104600467046604650464 +046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478047F047E047D047C +04830482048104800487048604850484048B048A04890488048F048E048D048C049204910490FFFF0496049504940493 +049A049904980497049E049D049C049B04A204A104A0049F04A604A504A404A3FFFF04A904A804A7FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04AD04AC04AB04AA04B104B004AF04AE04B504B404B304B204B904B804B704B604BD04BC04BB04BA04C104C004BF04BE +04C504C404C304C204C904C804C704C604CD04CC04CB04CA04D104D004CF04CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D504D404D304D204D904D804D704D6 +04DD04DC04DB04DA04E104E004DF04DE04E504E404E304E204E904E804E704E604ED04EC04EB04EA04F104F004EF04EE +04F504F404F304F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF04F6FFFFFFFFFFFF04FA04F904F804F704FE04FD04FC04FB0501FFFF050004FF0505050405030502 +0509050805070506050D050C050B050A0510FFFF050F050E05140513051205110517FFFF05160515FFFFFFFFFFFF0518 +051C051B051A05190520051F051E051D05240523052205210528052705260525052C052B052A05290530052F052E052D +05340533053205310538053705360535053C053B053A05390540053F053E053D05440543054205410548054705460545 +FFFF054B054A0549FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054F054E054D054C0553055205510550 +0557055605550554055B055A05590558055F055E055D055C05630562056105600567056605650564056B056A05690568 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056F056E056D056C0573057205710570 +0577057605750574057B057A05790578057F057E057D057C05830582058105800587058605850584058B058A05890588 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF058D058CFFFFFFFF05910590058F058E05950594059305920599059805970596 +059D059C059B059A05A105A0059F059E05A505A405A305A205A905A805A705A605AD05AC05AB05AAFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +); dstring toUpperTable() nothrow @nogc pure @safe { static immutable dchar[1671] t = "\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 9e48d842f7b..30db2fee3d4 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -181,9 +181,9 @@ struct UnicodeProperty struct TrieEntry(T...) { - size_t[] offsets; - size_t[] sizes; - size_t[] data; + immutable(size_t)[] offsets; + immutable(size_t)[] sizes; + immutable(size_t)[] data; } `; @@ -1240,7 +1240,7 @@ void writeCompositionTable(File sink) { writeln("enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11;"); write("enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)("); - triT.store(sink.lockingTextWriter()); + triT.storeTrie(sink.lockingTextWriter()); writeln(");"); writeDstringTable(sink, "compositionTable", dupletes.map!(x => only(x.expand)).joiner.array); } @@ -1428,8 +1428,36 @@ template createPrinter(Params...) foreach (lvl; Params[0..$]) sink.writef(", %d", lvl); sink.write(")("); - trie.store(sink.lockingTextWriter()); + trie.storeTrie(sink.lockingTextWriter()); sink.writeln(");"); }; } } + +void storeTrie(T, O)(T trie, O sink) +{ + import std.format.write : formattedWrite; + void store(size_t[] arr) + { + formattedWrite(sink, "cast(immutable size_t[]) x\""); + foreach (i; 0 .. arr.length) + { + static if (size_t.sizeof == 8) + { + formattedWrite(sink, (i % 6) == 0 ? "\n" : ""); + formattedWrite(sink, "%016X", arr[i]); + } + else + { + formattedWrite(sink, (i % 12) == 0 ? "\n" : ""); + formattedWrite(sink, "%08X", arr[i]); + } + } + formattedWrite(sink, "\",\n"); + } + // Access private members + auto table = __traits(getMember, trie, "_table"); + store(__traits(getMember, table, "offsets")); + store(__traits(getMember, table, "sz")); + store(__traits(getMember, table, "storage")); +} From f3ec8b767db415251fe7536e173547b6477c8490 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 31 Jan 2024 11:27:28 +0100 Subject: [PATCH 179/327] std.uni: replace dstring case table with uint[] hexstring (#8904) --- std/internal/unicode_tables.d | 1468 ++++++++++++++++++------------- tools/unicode_table_generator.d | 36 +- 2 files changed, 863 insertions(+), 641 deletions(-) diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index 6f83d433c58..cc0225b1a51 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -4880,325 +4880,425 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -dstring toUpperTable() nothrow @nogc pure @safe { -static immutable dchar[1671] t = -"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ -"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ -"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ -"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ -"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ -"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ -"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ -"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C4\u01C4\u01C7\u01C7\u01CA\u01CA\u01CD\u01CF\u01D1\u01D3"d~ -"\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F1\u01F4\u01F8\u01FA"d~ -"\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222"d~ -"\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A\u024C\u024E\u2C6F\u2C6D"d~ -"\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196\uA7AE\u2C62\uA7AD\u019C"d~ -"\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2\uA7B0\u0399\u0370\u0372"d~ -"\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B"d~ -"\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u038C\u038E\u038F"d~ -"\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u039A\u03A1"d~ -"\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D"d~ -"\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0400"d~ -"\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F\u0460\u0462\u0464\u0466"d~ -"\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494"d~ -"\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA"d~ -"\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0"d~ -"\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506"d~ -"\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C"d~ -"\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E\u053F\u0540\u0541\u0542"d~ -"\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555"d~ -"\u0556\u1C90\u1C91\u1C92\u1C93\u1C94\u1C95\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D\u1C9E\u1C9F\u1CA0\u1CA1"d~ -"\u1CA2\u1CA3\u1CA4\u1CA5\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD\u1CAE\u1CAF\u1CB0\u1CB1\u1CB2\u1CB3\u1CB4"d~ -"\u1CB5\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBD\u1CBE\u1CBF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5\u0412\u0414\u041E\u0421"d~ -"\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14"d~ -"\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A"d~ -"\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60"d~ -"\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86"d~ -"\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4"d~ -"\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA"d~ -"\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08"d~ -"\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D"d~ -"\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D\u1F59\u1F5B\u1F5D"d~ -"\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB\u1FDA\u1FDB\u1FF8\u1FF9"d~ -"\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E"d~ -"\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8\u1FD9\u1FE8\u1FE9\u1FEC"d~ -"\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2183"d~ -"\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8"d~ -"\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B"d~ -"\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E"d~ -"\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F\u2C60\u023A"d~ -"\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98"d~ -"\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE"d~ -"\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB"d~ -"\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD\u10AE\u10AF\u10B0"d~ -"\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3"d~ -"\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C"d~ -"\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694"d~ -"\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742"d~ -"\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768"d~ -"\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796\uA798\uA79A\uA79C\uA79E"d~ -"\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9\uA7D0\uA7D6\uA7D8\uA7F5"d~ -"\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1"d~ -"\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4"d~ -"\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7"d~ -"\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA"d~ -"\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"d~ -"\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401\U00010402\U00010403"d~ -"\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C\U0001040D\U0001040E"d~ -"\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417\U00010418\U00010419"d~ -"\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422\U00010423\U00010424"d~ -"\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5\U000104B6\U000104B7"d~ -"\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0\U000104C1\U000104C2"d~ -"\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB\U000104CC\U000104CD"d~ -"\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572\U00010573\U00010574"d~ -"\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E\U0001057F\U00010580"d~ -"\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589\U0001058A\U0001058C"d~ -"\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80\U00010C81\U00010C82"d~ -"\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B\U00010C8C\U00010C8D"d~ -"\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96\U00010C97\U00010C98"d~ -"\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1\U00010CA2\U00010CA3"d~ -"\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC\U00010CAD\U00010CAE"d~ -"\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4\U000118A5\U000118A6"d~ -"\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF\U000118B0\U000118B1"d~ -"\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA\U000118BB\U000118BC"d~ -"\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45\U00016E46\U00016E47"d~ -"\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50\U00016E51\U00016E52"d~ -"\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B\U00016E5C\U00016E5D"d~ -"\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906\U0001E907\U0001E908"d~ -"\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911\U0001E912\U0001E913"d~ -"\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C\U0001E91D\U0001E91E"d~ -"\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0053\u0130"d~cast(dchar) 0x02000046~"\u0046"d~cast(dchar) 0x02000046~""d~ -"\u0049"d~cast(dchar) 0x02000046~"\u004C"d~cast(dchar) 0x03000046~"\u0046\u0049"d~cast(dchar) 0x03000046~"\u0046\u004C"d~ -""d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000535~"\u0552"d~cast(dchar) 0x02000544~""d~ -"\u0546"d~cast(dchar) 0x02000544~"\u0535"d~cast(dchar) 0x02000544~"\u053B"d~cast(dchar) 0x0200054E~"\u0546"d~cast(dchar) 0x02000544~""d~ -"\u053D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ -""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ -"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ -"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ -"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ -""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ -"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ -""d~cast(dchar) 0x020003A9~"\u0342"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ -"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ -"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ -"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ -"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ -"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ -"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ -"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ -"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ -"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ -"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ -"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ -"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000397~""d~ -"\u0399"d~cast(dchar) 0x02000397~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x02001FBA~""d~ -"\u0399"d~cast(dchar) 0x02000386~"\u0399"d~cast(dchar) 0x02001FCA~"\u0399"d~cast(dchar) 0x02000389~"\u0399"d~cast(dchar) 0x02001FFA~""d~ -"\u0399"d~cast(dchar) 0x0200038F~"\u0399"d~cast(dchar) 0x03000391~"\u0342\u0399"d~cast(dchar) 0x03000397~"\u0342\u0399"d~ -""d~cast(dchar) 0x030003A9~"\u0342\u0399"d; -return t[]; +immutable(uint)[] toUpperTable() nothrow @nogc pure @safe { +static immutable uint[] t = +cast(immutable uint[]) x" +0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C +0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 +000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 +000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4 +000000D5000000D6000000D8000000D9000000DA000000DB000000DC000000DD000000DE000001780000010000000102 +0000010400000106000001080000010A0000010C0000010E00000110000001120000011400000116000001180000011A +0000011C0000011E00000120000001220000012400000126000001280000012A0000012C0000012E0000004900000132 +0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C +0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 +00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 +000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C4000001C4 +000001C7000001C7000001CA000001CA000001CD000001CF000001D1000001D3000001D5000001D7000001D9000001DB +0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC000001EE000001F1000001F1 +000001F4000001F8000001FA000001FC000001FE00000200000002020000020400000206000002080000020A0000020C +0000020E00000210000002120000021400000216000002180000021A0000021C0000021E000002220000022400000226 +000002280000022A0000022C0000022E00000230000002320000023B00002C7E00002C7F000002410000024600000248 +0000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186000001890000018A0000018F00000190 +0000A7AB000001930000A7AC000001940000A78D0000A7AA00000197000001960000A7AE00002C620000A7AD0000019C +00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1000001AE00000244000001B1000001B2 +00000245000001B70000A7B20000A7B000000399000003700000037200000376000003FD000003FE000003FF00000386 +00000388000003890000038A000003910000039200000393000003940000039500000396000003970000039800000399 +0000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1000003A3000003A3000003A4000003A5 +000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E0000038F0000039200000398000003A6 +000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2000003E4000003E6000003E8000003EA +000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7000003FA000004100000041100000412 +000004130000041400000415000004160000041700000418000004190000041A0000041B0000041C0000041D0000041E +0000041F000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A +0000042B0000042C0000042D0000042E0000042F00000400000004010000040200000403000004040000040500000406 +0000040700000408000004090000040A0000040B0000040C0000040D0000040E0000040F000004600000046200000464 +00000466000004680000046A0000046C0000046E00000470000004720000047400000476000004780000047A0000047C +0000047E000004800000048A0000048C0000048E00000490000004920000049400000496000004980000049A0000049C +0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC000004AE000004B0000004B2000004B4 +000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5000004C7000004C9000004CB000004CD +000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC000004DE000004E0000004E2000004E4 +000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4000004F6000004F8000004FA000004FC +000004FE00000500000005020000050400000506000005080000050A0000050C0000050E000005100000051200000514 +00000516000005180000051A0000051C0000051E00000520000005220000052400000526000005280000052A0000052C +0000052E0000053100000532000005330000053400000535000005360000053700000538000005390000053A0000053B +0000053C0000053D0000053E0000053F0000054000000541000005420000054300000544000005450000054600000547 +00000548000005490000054A0000054B0000054C0000054D0000054E0000054F00000550000005510000055200000553 +00000554000005550000055600001C9000001C9100001C9200001C9300001C9400001C9500001C9600001C9700001C98 +00001C9900001C9A00001C9B00001C9C00001C9D00001C9E00001C9F00001CA000001CA100001CA200001CA300001CA4 +00001CA500001CA600001CA700001CA800001CA900001CAA00001CAB00001CAC00001CAD00001CAE00001CAF00001CB0 +00001CB100001CB200001CB300001CB400001CB500001CB600001CB700001CB800001CB900001CBA00001CBD00001CBE +00001CBF000013F0000013F1000013F2000013F3000013F4000013F500000412000004140000041E0000042100000422 +000004220000042A000004620000A64A0000A77D00002C630000A7C600001E0000001E0200001E0400001E0600001E08 +00001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E1800001E1A00001E1C00001E1E00001E20 +00001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E3000001E3200001E3400001E3600001E38 +00001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E4800001E4A00001E4C00001E4E00001E50 +00001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E6000001E6200001E6400001E6600001E68 +00001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E7800001E7A00001E7C00001E7E00001E80 +00001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E9000001E9200001E9400001E6000001EA0 +00001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB000001EB200001EB400001EB600001EB8 +00001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC800001ECA00001ECC00001ECE00001ED0 +00001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE000001EE200001EE400001EE600001EE8 +00001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF800001EFA00001EFC00001EFE00001F08 +00001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F1800001F1900001F1A00001F1B00001F1C +00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E00001F2F00001F3800001F3900001F3A +00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A00001F4B00001F4C00001F4D00001F59 +00001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C00001F6D00001F6E00001F6F00001FBA +00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF800001FF900001FEA00001FEB00001FFA +00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A +00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE +00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD900001FE800001FE900001FEC00001FFC +00002132000021600000216100002162000021630000216400002165000021660000216700002168000021690000216A +0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7000024B8000024B9000024BA000024BB +000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3000024C4000024C5000024C6000024C7 +000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF00002C0000002C0100002C0200002C03 +00002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B00002C0C00002C0D00002C0E00002C0F +00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C1700002C1800002C1900002C1A00002C1B +00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C2300002C2400002C2500002C2600002C27 +00002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F00002C600000023A0000023E00002C67 +00002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C8600002C8800002C8A00002C8C00002C8E +00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E00002CA000002CA200002CA400002CA6 +00002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB600002CB800002CBA00002CBC00002CBE +00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE00002CD000002CD200002CD400002CD6 +00002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED00002CF2000010A0000010A1000010A2 +000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA000010AB000010AC000010AD000010AE +000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6000010B7000010B8000010B9000010BA +000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2000010C3000010C4000010C5000010C7 +000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C0000A64E0000A6500000A6520000A654 +0000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A6640000A6660000A6680000A66A0000A66C +0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E0000A6900000A6920000A6940000A696 +0000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C0000A72E0000A7320000A7340000A736 +0000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A7460000A7480000A74A0000A74C0000A74E +0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E0000A7600000A7620000A7640000A766 +0000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A7800000A7820000A7840000A7860000A78B +0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E0000A7A00000A7A20000A7A40000A7A6 +0000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C00000A7C20000A7C70000A7C90000A7D0 +0000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3000013A4000013A5000013A6000013A7 +000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF000013B0000013B1000013B2000013B3 +000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB000013BC000013BD000013BE000013BF +000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7000013C8000013C9000013CA000013CB +000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3000013D4000013D5000013D6000013D7 +000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF000013E0000013E1000013E2000013E3 +000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB000013EC000013ED000013EE000013EF +0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF280000FF290000FF2A0000FF2B0000FF2C +0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF340000FF350000FF360000FF370000FF38 +0000FF390000FF3A00010400000104010001040200010403000104040001040500010406000104070001040800010409 +0001040A0001040B0001040C0001040D0001040E0001040F000104100001041100010412000104130001041400010415 +000104160001041700010418000104190001041A0001041B0001041C0001041D0001041E0001041F0001042000010421 +000104220001042300010424000104250001042600010427000104B0000104B1000104B2000104B3000104B4000104B5 +000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD000104BE000104BF000104C0000104C1 +000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9000104CA000104CB000104CC000104CD +000104CE000104CF000104D0000104D1000104D2000104D3000105700001057100010572000105730001057400010575 +000105760001057700010578000105790001057A0001057C0001057D0001057E0001057F000105800001058100010582 +000105830001058400010585000105860001058700010588000105890001058A0001058C0001058D0001058E0001058F +000105900001059100010592000105940001059500010C8000010C8100010C8200010C8300010C8400010C8500010C86 +00010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E00010C8F00010C9000010C9100010C92 +00010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A00010C9B00010C9C00010C9D00010C9E +00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA600010CA700010CA800010CA900010CAA +00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2000118A0000118A1000118A2000118A3 +000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB000118AC000118AD000118AE000118AF +000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7000118B8000118B9000118BA000118BB +000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E4300016E4400016E4500016E4600016E47 +00016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F00016E5000016E5100016E5200016E53 +00016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B00016E5C00016E5D00016E5E00016E5F +0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E9070001E9080001E9090001E90A0001E90B +0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E9130001E9140001E9150001E9160001E917 +0001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F0001E9200001E9210200005300000053 +0000013002000046000000460200004600000049020000460000004C0300004600000046000000490300004600000046 +0000004C0200005300000054020000530000005402000535000005520200054400000546020005440000053502000544 +0000053B0200054E00000546020005440000053D020002BC0000004E030003990000030800000301030003A500000308 +000003010200004A0000030C02000048000003310200005400000308020000570000030A020000590000030A02000041 +000002BE020003A500000313030003A50000031300000300030003A50000031300000301030003A50000031300000342 +020003910000034202000397000003420300039900000308000003000300039900000308000003010200039900000342 +030003990000030800000342030003A50000030800000300030003A50000030800000301020003A100000313020003A5 +00000342030003A50000030800000342020003A90000034202001F080000039902001F090000039902001F0A00000399 +02001F0B0000039902001F0C0000039902001F0D0000039902001F0E0000039902001F0F0000039902001F0800000399 +02001F090000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D0000039902001F0E00000399 +02001F0F0000039902001F280000039902001F290000039902001F2A0000039902001F2B0000039902001F2C00000399 +02001F2D0000039902001F2E0000039902001F2F0000039902001F280000039902001F290000039902001F2A00000399 +02001F2B0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F0000039902001F6800000399 +02001F690000039902001F6A0000039902001F6B0000039902001F6C0000039902001F6D0000039902001F6E00000399 +02001F6F0000039902001F680000039902001F690000039902001F6A0000039902001F6B0000039902001F6C00000399 +02001F6D0000039902001F6E0000039902001F6F00000399020003910000039902000391000003990200039700000399 +0200039700000399020003A900000399020003A90000039902001FBA00000399020003860000039902001FCA00000399 +020003890000039902001FFA000003990200038F00000399030003910000034200000399030003970000034200000399 +030003A90000034200000399"; +return t; } -dstring toLowerTable() nothrow @nogc pure @safe { -static immutable dchar[1537] t = -"\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073"d~ -"\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB"d~ -"\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u0101"d~ -"\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127"d~ -"\u0129\u012B\u012D\u012F\u0069\u0133\u0135\u0137\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u014B\u014D\u014F"d~ -"\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175"d~ -"\u0177\u00FF\u017A\u017C\u017E\u0253\u0183\u0185\u0254\u0188\u0256\u0257\u018C\u01DD\u0259\u025B\u0192\u0260\u0263"d~ -"\u0269\u0268\u0199\u026F\u0272\u0275\u01A1\u01A3\u01A5\u0280\u01A8\u0283\u01AD\u0288\u01B0\u028A\u028B\u01B4\u01B6"d~ -"\u0292\u01B9\u01BD\u01C6\u01C6\u01C9\u01C9\u01CC\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DF\u01E1"d~ -"\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F3\u01F3\u01F5\u0195\u01BF\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205"d~ -"\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u019E\u0223\u0225\u0227\u0229\u022B"d~ -"\u022D\u022F\u0231\u0233\u2C65\u023C\u019A\u2C66\u0242\u0180\u0289\u028C\u0247\u0249\u024B\u024D\u024F\u0371\u0373"d~ -"\u0377\u03F3\u03AC\u03AD\u03AE\u03AF\u03CC\u03CD\u03CE\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA"d~ -"\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03D7\u03D9\u03DB"d~ -"\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF\u03B8\u03F8\u03F2\u03FB\u037B\u037C\u037D\u0450\u0451"d~ -"\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u045D\u045E\u045F\u0430\u0431\u0432\u0433\u0434"d~ -"\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447"d~ -"\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475"d~ -"\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3"d~ -"\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04CF\u04C2\u04C4\u04C6\u04C8"d~ -"\u04CA\u04CC\u04CE\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF"d~ -"\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515"d~ -"\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561\u0562\u0563\u0564\u0565\u0566"d~ -"\u0567\u0568\u0569\u056A\u056B\u056C\u056D\u056E\u056F\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579"d~ -"\u057A\u057B\u057C\u057D\u057E\u057F\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u2D00\u2D01\u2D02\u2D03\u2D04\u2D05"d~ -"\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18"d~ -"\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21\u2D22\u2D23\u2D24\u2D25\u2D27\u2D2D\uAB70\uAB71\uAB72\uAB73"d~ -"\uAB74\uAB75\uAB76\uAB77\uAB78\uAB79\uAB7A\uAB7B\uAB7C\uAB7D\uAB7E\uAB7F\uAB80\uAB81\uAB82\uAB83\uAB84\uAB85\uAB86"d~ -"\uAB87\uAB88\uAB89\uAB8A\uAB8B\uAB8C\uAB8D\uAB8E\uAB8F\uAB90\uAB91\uAB92\uAB93\uAB94\uAB95\uAB96\uAB97\uAB98\uAB99"d~ -"\uAB9A\uAB9B\uAB9C\uAB9D\uAB9E\uAB9F\uABA0\uABA1\uABA2\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8\uABA9\uABAA\uABAB\uABAC"d~ -"\uABAD\uABAE\uABAF\uABB0\uABB1\uABB2\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9\uABBA\uABBB\uABBC\uABBD\uABBE\uABBF"d~ -"\u13F8\u13F9\u13FA\u13FB\u13FC\u13FD\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC"d~ -"\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF"d~ -"\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09"d~ -"\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F"d~ -"\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55"d~ -"\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B"d~ -"\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u00DF\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9"d~ -"\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF"d~ -"\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5"d~ -"\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01\u1F02\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15"d~ -"\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42"d~ -"\u1F43\u1F44\u1F45\u1F51\u1F53\u1F55\u1F57\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F80\u1F81\u1F82\u1F83"d~ -"\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6"d~ -"\u1FA7\u1FB0\u1FB1\u1F70\u1F71\u1FB3\u1F72\u1F73\u1F74\u1F75\u1FC3\u1FD0\u1FD1\u1F76\u1F77\u1FE0\u1FE1\u1F7A\u1F7B"d~ -"\u1FE5\u1F78\u1F79\u1F7C\u1F7D\u1FF3\u03C9\u006B\u00E5\u214E\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178"d~ -"\u2179\u217A\u217B\u217C\u217D\u217E\u217F\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA"d~ -"\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31\u2C32\u2C33"d~ -"\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43\u2C44\u2C45\u2C46"d~ -"\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59"d~ -"\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C61\u026B\u1D7D\u027D\u2C68\u2C6A\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76"d~ -"\u023F\u0240\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1"d~ -"\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7"d~ -"\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC\u2CEE\u2CF3\uA641\uA643"d~ -"\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669"d~ -"\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727"d~ -"\uA729\uA72B\uA72D\uA72F\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F"d~ -"\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79"d~ -"\uA77F\uA781\uA783\uA785\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9"d~ -"\u0266\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C1\uA7C3\uA794\u0282"d~ -"\u1D8E\uA7C8\uA7CA\uA7D1\uA7D7\uA7D9\uA7F6\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C"d~ -"\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\U00010428\U00010429\U0001042A"d~ -"\U0001042B\U0001042C\U0001042D\U0001042E\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434\U00010435"d~ -"\U00010436\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C\U0001043D\U0001043E\U0001043F\U00010440"d~ -"\U00010441\U00010442\U00010443\U00010444\U00010445\U00010446\U00010447\U00010448\U00010449\U0001044A\U0001044B"d~ -"\U0001044C\U0001044D\U0001044E\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC\U000104DD\U000104DE"d~ -"\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4\U000104E5\U000104E6\U000104E7\U000104E8\U000104E9"d~ -"\U000104EA\U000104EB\U000104EC\U000104ED\U000104EE\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4"d~ -"\U000104F5\U000104F6\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010597\U00010598\U00010599\U0001059A"d~ -"\U0001059B\U0001059C\U0001059D\U0001059E\U0001059F\U000105A0\U000105A1\U000105A3\U000105A4\U000105A5\U000105A6"d~ -"\U000105A7\U000105A8\U000105A9\U000105AA\U000105AB\U000105AC\U000105AD\U000105AE\U000105AF\U000105B0\U000105B1"d~ -"\U000105B3\U000105B4\U000105B5\U000105B6\U000105B7\U000105B8\U000105B9\U000105BB\U000105BC\U00010CC0\U00010CC1"d~ -"\U00010CC2\U00010CC3\U00010CC4\U00010CC5\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA\U00010CCB\U00010CCC"d~ -"\U00010CCD\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2\U00010CD3\U00010CD4\U00010CD5\U00010CD6\U00010CD7"d~ -"\U00010CD8\U00010CD9\U00010CDA\U00010CDB\U00010CDC\U00010CDD\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2"d~ -"\U00010CE3\U00010CE4\U00010CE5\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA\U00010CEB\U00010CEC\U00010CED"d~ -"\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4\U000118C5"d~ -"\U000118C6\U000118C7\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC\U000118CD\U000118CE\U000118CF\U000118D0"d~ -"\U000118D1\U000118D2\U000118D3\U000118D4\U000118D5\U000118D6\U000118D7\U000118D8\U000118D9\U000118DA\U000118DB"d~ -"\U000118DC\U000118DD\U000118DE\U000118DF\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64\U00016E65\U00016E66"d~ -"\U00016E67\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C\U00016E6D\U00016E6E\U00016E6F\U00016E70\U00016E71"d~ -"\U00016E72\U00016E73\U00016E74\U00016E75\U00016E76\U00016E77\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C"d~ -"\U00016E7D\U00016E7E\U00016E7F\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926\U0001E927\U0001E928\U0001E929"d~ -"\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E\U0001E92F\U0001E930\U0001E931\U0001E932\U0001E933\U0001E934"d~ -"\U0001E935\U0001E936\U0001E937\U0001E938\U0001E939\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E\U0001E93F"d~ -"\U0001E940\U0001E941\U0001E942\U0001E943\u00DF"d~cast(dchar) 0x02000069~"\u0307\uFB00\uFB01\uFB02\uFB03\uFB04\uFB05"d~ -"\uFB06\u0587\uFB13\uFB14\uFB15\uFB16\uFB17\u0149\u0390\u03B0\u01F0\u1E96\u1E97\u1E98\u1E99\u1E9A\u1F50\u1F52\u1F54"d~ -"\u1F56\u1FB6\u1FC6\u1FD2\u1FD3\u1FD6\u1FD7\u1FE2\u1FE3\u1FE4\u1FE6\u1FE7\u1FF6\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85"d~ -"\u1F86\u1F87\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1F90"d~ -"\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7\u1FA0\u1FA1\u1FA2\u1FA3"d~ -"\u1FA4\u1FA5\u1FA6\u1FA7\u1FB3\u1FB3\u1FC3\u1FC3\u1FF3\u1FF3\u1FB2\u1FB4\u1FC2\u1FC4\u1FF2\u1FF4\u1FB7\u1FC7\u1FF7"d; -return t[]; +immutable(uint)[] toLowerTable() nothrow @nogc pure @safe { +static immutable uint[] t = +cast(immutable uint[]) x" +0000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C +0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078 +000000790000007A000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9 +000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5 +000000F6000000F8000000F9000000FA000000FB000000FC000000FD000000FE00000101000001030000010500000107 +000001090000010B0000010D0000010F00000111000001130000011500000117000001190000011B0000011D0000011F +00000121000001230000012500000127000001290000012B0000012D0000012F00000069000001330000013500000137 +0000013A0000013C0000013E00000140000001420000014400000146000001480000014B0000014D0000014F00000151 +000001530000015500000157000001590000015B0000015D0000015F0000016100000163000001650000016700000169 +0000016B0000016D0000016F00000171000001730000017500000177000000FF0000017A0000017C0000017E00000253 +0000018300000185000002540000018800000256000002570000018C000001DD000002590000025B0000019200000260 +000002630000026900000268000001990000026F0000027200000275000001A1000001A3000001A500000280000001A8 +00000283000001AD00000288000001B00000028A0000028B000001B4000001B600000292000001B9000001BD000001C6 +000001C6000001C9000001C9000001CC000001CC000001CE000001D0000001D2000001D4000001D6000001D8000001DA +000001DC000001DF000001E1000001E3000001E5000001E7000001E9000001EB000001ED000001EF000001F3000001F3 +000001F500000195000001BF000001F9000001FB000001FD000001FF0000020100000203000002050000020700000209 +0000020B0000020D0000020F00000211000002130000021500000217000002190000021B0000021D0000021F0000019E +000002230000022500000227000002290000022B0000022D0000022F000002310000023300002C650000023C0000019A +00002C660000024200000180000002890000028C00000247000002490000024B0000024D0000024F0000037100000373 +00000377000003F3000003AC000003AD000003AE000003AF000003CC000003CD000003CE000003B1000003B2000003B3 +000003B4000003B5000003B6000003B7000003B8000003B9000003BA000003BB000003BC000003BD000003BE000003BF +000003C0000003C1000003C3000003C4000003C5000003C6000003C7000003C8000003C9000003CA000003CB000003D7 +000003D9000003DB000003DD000003DF000003E1000003E3000003E5000003E7000003E9000003EB000003ED000003EF +000003B8000003F8000003F2000003FB0000037B0000037C0000037D0000045000000451000004520000045300000454 +00000455000004560000045700000458000004590000045A0000045B0000045C0000045D0000045E0000045F00000430 +0000043100000432000004330000043400000435000004360000043700000438000004390000043A0000043B0000043C +0000043D0000043E0000043F000004400000044100000442000004430000044400000445000004460000044700000448 +000004490000044A0000044B0000044C0000044D0000044E0000044F0000046100000463000004650000046700000469 +0000046B0000046D0000046F00000471000004730000047500000477000004790000047B0000047D0000047F00000481 +0000048B0000048D0000048F00000491000004930000049500000497000004990000049B0000049D0000049F000004A1 +000004A3000004A5000004A7000004A9000004AB000004AD000004AF000004B1000004B3000004B5000004B7000004B9 +000004BB000004BD000004BF000004CF000004C2000004C4000004C6000004C8000004CA000004CC000004CE000004D1 +000004D3000004D5000004D7000004D9000004DB000004DD000004DF000004E1000004E3000004E5000004E7000004E9 +000004EB000004ED000004EF000004F1000004F3000004F5000004F7000004F9000004FB000004FD000004FF00000501 +000005030000050500000507000005090000050B0000050D0000050F0000051100000513000005150000051700000519 +0000051B0000051D0000051F00000521000005230000052500000527000005290000052B0000052D0000052F00000561 +00000562000005630000056400000565000005660000056700000568000005690000056A0000056B0000056C0000056D +0000056E0000056F00000570000005710000057200000573000005740000057500000576000005770000057800000579 +0000057A0000057B0000057C0000057D0000057E0000057F000005800000058100000582000005830000058400000585 +0000058600002D0000002D0100002D0200002D0300002D0400002D0500002D0600002D0700002D0800002D0900002D0A +00002D0B00002D0C00002D0D00002D0E00002D0F00002D1000002D1100002D1200002D1300002D1400002D1500002D16 +00002D1700002D1800002D1900002D1A00002D1B00002D1C00002D1D00002D1E00002D1F00002D2000002D2100002D22 +00002D2300002D2400002D2500002D2700002D2D0000AB700000AB710000AB720000AB730000AB740000AB750000AB76 +0000AB770000AB780000AB790000AB7A0000AB7B0000AB7C0000AB7D0000AB7E0000AB7F0000AB800000AB810000AB82 +0000AB830000AB840000AB850000AB860000AB870000AB880000AB890000AB8A0000AB8B0000AB8C0000AB8D0000AB8E +0000AB8F0000AB900000AB910000AB920000AB930000AB940000AB950000AB960000AB970000AB980000AB990000AB9A +0000AB9B0000AB9C0000AB9D0000AB9E0000AB9F0000ABA00000ABA10000ABA20000ABA30000ABA40000ABA50000ABA6 +0000ABA70000ABA80000ABA90000ABAA0000ABAB0000ABAC0000ABAD0000ABAE0000ABAF0000ABB00000ABB10000ABB2 +0000ABB30000ABB40000ABB50000ABB60000ABB70000ABB80000ABB90000ABBA0000ABBB0000ABBC0000ABBD0000ABBE +0000ABBF000013F8000013F9000013FA000013FB000013FC000013FD000010D0000010D1000010D2000010D3000010D4 +000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 +000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC +000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 +000010F9000010FA000010FD000010FE000010FF00001E0100001E0300001E0500001E0700001E0900001E0B00001E0D +00001E0F00001E1100001E1300001E1500001E1700001E1900001E1B00001E1D00001E1F00001E2100001E2300001E25 +00001E2700001E2900001E2B00001E2D00001E2F00001E3100001E3300001E3500001E3700001E3900001E3B00001E3D +00001E3F00001E4100001E4300001E4500001E4700001E4900001E4B00001E4D00001E4F00001E5100001E5300001E55 +00001E5700001E5900001E5B00001E5D00001E5F00001E6100001E6300001E6500001E6700001E6900001E6B00001E6D +00001E6F00001E7100001E7300001E7500001E7700001E7900001E7B00001E7D00001E7F00001E8100001E8300001E85 +00001E8700001E8900001E8B00001E8D00001E8F00001E9100001E9300001E95000000DF00001EA100001EA300001EA5 +00001EA700001EA900001EAB00001EAD00001EAF00001EB100001EB300001EB500001EB700001EB900001EBB00001EBD +00001EBF00001EC100001EC300001EC500001EC700001EC900001ECB00001ECD00001ECF00001ED100001ED300001ED5 +00001ED700001ED900001EDB00001EDD00001EDF00001EE100001EE300001EE500001EE700001EE900001EEB00001EED +00001EEF00001EF100001EF300001EF500001EF700001EF900001EFB00001EFD00001EFF00001F0000001F0100001F02 +00001F0300001F0400001F0500001F0600001F0700001F1000001F1100001F1200001F1300001F1400001F1500001F20 +00001F2100001F2200001F2300001F2400001F2500001F2600001F2700001F3000001F3100001F3200001F3300001F34 +00001F3500001F3600001F3700001F4000001F4100001F4200001F4300001F4400001F4500001F5100001F5300001F55 +00001F5700001F6000001F6100001F6200001F6300001F6400001F6500001F6600001F6700001F8000001F8100001F82 +00001F8300001F8400001F8500001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F96 +00001F9700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB000001FB100001F70 +00001F7100001FB300001F7200001F7300001F7400001F7500001FC300001FD000001FD100001F7600001F7700001FE0 +00001FE100001F7A00001F7B00001FE500001F7800001F7900001F7C00001F7D00001FF3000003C90000006B000000E5 +0000214E000021700000217100002172000021730000217400002175000021760000217700002178000021790000217A +0000217B0000217C0000217D0000217E0000217F00002184000024D0000024D1000024D2000024D3000024D4000024D5 +000024D6000024D7000024D8000024D9000024DA000024DB000024DC000024DD000024DE000024DF000024E0000024E1 +000024E2000024E3000024E4000024E5000024E6000024E7000024E8000024E900002C3000002C3100002C3200002C33 +00002C3400002C3500002C3600002C3700002C3800002C3900002C3A00002C3B00002C3C00002C3D00002C3E00002C3F +00002C4000002C4100002C4200002C4300002C4400002C4500002C4600002C4700002C4800002C4900002C4A00002C4B +00002C4C00002C4D00002C4E00002C4F00002C5000002C5100002C5200002C5300002C5400002C5500002C5600002C57 +00002C5800002C5900002C5A00002C5B00002C5C00002C5D00002C5E00002C5F00002C610000026B00001D7D0000027D +00002C6800002C6A00002C6C0000025100000271000002500000025200002C7300002C760000023F0000024000002C81 +00002C8300002C8500002C8700002C8900002C8B00002C8D00002C8F00002C9100002C9300002C9500002C9700002C99 +00002C9B00002C9D00002C9F00002CA100002CA300002CA500002CA700002CA900002CAB00002CAD00002CAF00002CB1 +00002CB300002CB500002CB700002CB900002CBB00002CBD00002CBF00002CC100002CC300002CC500002CC700002CC9 +00002CCB00002CCD00002CCF00002CD100002CD300002CD500002CD700002CD900002CDB00002CDD00002CDF00002CE1 +00002CE300002CEC00002CEE00002CF30000A6410000A6430000A6450000A6470000A6490000A64B0000A64D0000A64F +0000A6510000A6530000A6550000A6570000A6590000A65B0000A65D0000A65F0000A6610000A6630000A6650000A667 +0000A6690000A66B0000A66D0000A6810000A6830000A6850000A6870000A6890000A68B0000A68D0000A68F0000A691 +0000A6930000A6950000A6970000A6990000A69B0000A7230000A7250000A7270000A7290000A72B0000A72D0000A72F +0000A7330000A7350000A7370000A7390000A73B0000A73D0000A73F0000A7410000A7430000A7450000A7470000A749 +0000A74B0000A74D0000A74F0000A7510000A7530000A7550000A7570000A7590000A75B0000A75D0000A75F0000A761 +0000A7630000A7650000A7670000A7690000A76B0000A76D0000A76F0000A77A0000A77C00001D790000A77F0000A781 +0000A7830000A7850000A7870000A78C000002650000A7910000A7930000A7970000A7990000A79B0000A79D0000A79F +0000A7A10000A7A30000A7A50000A7A70000A7A9000002660000025C000002610000026C0000026A0000029E00000287 +0000029D0000AB530000A7B50000A7B70000A7B90000A7BB0000A7BD0000A7BF0000A7C10000A7C30000A79400000282 +00001D8E0000A7C80000A7CA0000A7D10000A7D70000A7D90000A7F60000FF410000FF420000FF430000FF440000FF45 +0000FF460000FF470000FF480000FF490000FF4A0000FF4B0000FF4C0000FF4D0000FF4E0000FF4F0000FF500000FF51 +0000FF520000FF530000FF540000FF550000FF560000FF570000FF580000FF590000FF5A00010428000104290001042A +0001042B0001042C0001042D0001042E0001042F00010430000104310001043200010433000104340001043500010436 +0001043700010438000104390001043A0001043B0001043C0001043D0001043E0001043F000104400001044100010442 +000104430001044400010445000104460001044700010448000104490001044A0001044B0001044C0001044D0001044E +0001044F000104D8000104D9000104DA000104DB000104DC000104DD000104DE000104DF000104E0000104E1000104E2 +000104E3000104E4000104E5000104E6000104E7000104E8000104E9000104EA000104EB000104EC000104ED000104EE +000104EF000104F0000104F1000104F2000104F3000104F4000104F5000104F6000104F7000104F8000104F9000104FA +000104FB0001059700010598000105990001059A0001059B0001059C0001059D0001059E0001059F000105A0000105A1 +000105A3000105A4000105A5000105A6000105A7000105A8000105A9000105AA000105AB000105AC000105AD000105AE +000105AF000105B0000105B1000105B3000105B4000105B5000105B6000105B7000105B8000105B9000105BB000105BC +00010CC000010CC100010CC200010CC300010CC400010CC500010CC600010CC700010CC800010CC900010CCA00010CCB +00010CCC00010CCD00010CCE00010CCF00010CD000010CD100010CD200010CD300010CD400010CD500010CD600010CD7 +00010CD800010CD900010CDA00010CDB00010CDC00010CDD00010CDE00010CDF00010CE000010CE100010CE200010CE3 +00010CE400010CE500010CE600010CE700010CE800010CE900010CEA00010CEB00010CEC00010CED00010CEE00010CEF +00010CF000010CF100010CF2000118C0000118C1000118C2000118C3000118C4000118C5000118C6000118C7000118C8 +000118C9000118CA000118CB000118CC000118CD000118CE000118CF000118D0000118D1000118D2000118D3000118D4 +000118D5000118D6000118D7000118D8000118D9000118DA000118DB000118DC000118DD000118DE000118DF00016E60 +00016E6100016E6200016E6300016E6400016E6500016E6600016E6700016E6800016E6900016E6A00016E6B00016E6C +00016E6D00016E6E00016E6F00016E7000016E7100016E7200016E7300016E7400016E7500016E7600016E7700016E78 +00016E7900016E7A00016E7B00016E7C00016E7D00016E7E00016E7F0001E9220001E9230001E9240001E9250001E926 +0001E9270001E9280001E9290001E92A0001E92B0001E92C0001E92D0001E92E0001E92F0001E9300001E9310001E932 +0001E9330001E9340001E9350001E9360001E9370001E9380001E9390001E93A0001E93B0001E93C0001E93D0001E93E +0001E93F0001E9400001E9410001E9420001E943000000DF02000069000003070000FB000000FB010000FB020000FB03 +0000FB040000FB050000FB06000005870000FB130000FB140000FB150000FB160000FB170000014900000390000003B0 +000001F000001E9600001E9700001E9800001E9900001E9A00001F5000001F5200001F5400001F5600001FB600001FC6 +00001FD200001FD300001FD600001FD700001FE200001FE300001FE400001FE600001FE700001FF600001F8000001F81 +00001F8200001F8300001F8400001F8500001F8600001F8700001F8000001F8100001F8200001F8300001F8400001F85 +00001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F9600001F9700001F9000001F91 +00001F9200001F9300001F9400001F9500001F9600001F9700001FA000001FA100001FA200001FA300001FA400001FA5 +00001FA600001FA700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB300001FB3 +00001FC300001FC300001FF300001FF300001FB200001FB400001FC200001FC400001FF200001FF400001FB700001FC7 +00001FF7"; +return t; } -dstring toTitleTable() nothrow @nogc pure @safe { -static immutable dchar[1621] t = -"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ -"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ -"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ -"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ -"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ -"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ -"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ -"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C5\u01C5\u01C5\u01C8\u01C8\u01C8\u01CB\u01CB\u01CB\u01CD"d~ -"\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F2\u01F2"d~ -"\u01F2\u01F4\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218"d~ -"\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A"d~ -"\u024C\u024E\u2C6F\u2C6D\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196"d~ -"\uA7AE\u2C62\uA7AD\u019C\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2"d~ -"\uA7B0\u0399\u0370\u0372\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397"d~ -"\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA"d~ -"\u03AB\u038C\u038E\u038F\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA"d~ -"\u03EC\u03EE\u039A\u03A1\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419"d~ -"\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"d~ -"\u042D\u042E\u042F\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F"d~ -"\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C"d~ -"\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2"d~ -"\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8"d~ -"\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE"d~ -"\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524"d~ -"\u0526\u0528\u052A\u052C\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E"d~ -"\u053F\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551"d~ -"\u0552\u0553\u0554\u0555\u0556\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD"d~ -"\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0"d~ -"\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5"d~ -"\u0412\u0414\u041E\u0421\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C"d~ -"\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32"d~ -"\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58"d~ -"\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E"d~ -"\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC"d~ -"\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2"d~ -"\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8"d~ -"\u1EFA\u1EFC\u1EFE\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29"d~ -"\u1F2A\u1F2B\u1F2C\u1F2D\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C"d~ -"\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB"d~ -"\u1FDA\u1FDB\u1FF8\u1FF9\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A"d~ -"\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8"d~ -"\u1FD9\u1FE8\u1FE9\u1FEC\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C"d~ -"\u216D\u216E\u216F\u2183\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4"d~ -"\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07"d~ -"\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A"d~ -"\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D"d~ -"\u2C2E\u2C2F\u2C60\u023A\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90"d~ -"\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6"d~ -"\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC"d~ -"\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC"d~ -"\u10AD\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF"d~ -"\u10C0\u10C1\u10C2\u10C3\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654"d~ -"\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C"d~ -"\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A"d~ -"\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760"d~ -"\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796"d~ -"\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9"d~ -"\uA7D0\uA7D6\uA7D8\uA7F5\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD"d~ -"\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0"d~ -"\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3"d~ -"\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6"d~ -"\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A"d~ -"\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401"d~ -"\U00010402\U00010403\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C"d~ -"\U0001040D\U0001040E\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417"d~ -"\U00010418\U00010419\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422"d~ -"\U00010423\U00010424\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5"d~ -"\U000104B6\U000104B7\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0"d~ -"\U000104C1\U000104C2\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB"d~ -"\U000104CC\U000104CD\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572"d~ -"\U00010573\U00010574\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E"d~ -"\U0001057F\U00010580\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589"d~ -"\U0001058A\U0001058C\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80"d~ -"\U00010C81\U00010C82\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B"d~ -"\U00010C8C\U00010C8D\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96"d~ -"\U00010C97\U00010C98\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1"d~ -"\U00010CA2\U00010CA3\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC"d~ -"\U00010CAD\U00010CAE\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4"d~ -"\U000118A5\U000118A6\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF"d~ -"\U000118B0\U000118B1\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA"d~ -"\U000118BB\U000118BC\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45"d~ -"\U00016E46\U00016E47\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50"d~ -"\U00016E51\U00016E52\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B"d~ -"\U00016E5C\U00016E5D\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906"d~ -"\U0001E907\U0001E908\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911"d~ -"\U0001E912\U0001E913\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C"d~ -"\U0001E91D\U0001E91E\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0073\u0130"d~cast(dchar) 0x02000046~""d~ -"\u0066"d~cast(dchar) 0x02000046~"\u0069"d~cast(dchar) 0x02000046~"\u006C"d~cast(dchar) 0x03000046~"\u0066\u0069"d~cast(dchar) 0x03000046~""d~ -"\u0066\u006C"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000535~"\u0582"d~cast(dchar) 0x02000544~""d~ -"\u0576"d~cast(dchar) 0x02000544~"\u0565"d~cast(dchar) 0x02000544~"\u056B"d~cast(dchar) 0x0200054E~"\u0576"d~cast(dchar) 0x02000544~""d~ -"\u056D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ -""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ -"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ -"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ -"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ -""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ -"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ -""d~cast(dchar) 0x020003A9~"\u0342\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F88\u1F89\u1F8A\u1F8B\u1F8C"d~ -"\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F"d~ -"\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FBC\u1FBC\u1FCC"d~ -"\u1FCC\u1FFC\u1FFC"d~cast(dchar) 0x02001FBA~"\u0345"d~cast(dchar) 0x02000386~"\u0345"d~cast(dchar) 0x02001FCA~"\u0345"d~ -""d~cast(dchar) 0x02000389~"\u0345"d~cast(dchar) 0x02001FFA~"\u0345"d~cast(dchar) 0x0200038F~"\u0345"d~cast(dchar) 0x03000391~""d~ -"\u0342\u0345"d~cast(dchar) 0x03000397~"\u0342\u0345"d~cast(dchar) 0x030003A9~"\u0342\u0345"d; -return t[]; +immutable(uint)[] toTitleTable() nothrow @nogc pure @safe { +static immutable uint[] t = +cast(immutable uint[]) x" +0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C +0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 +000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 +000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4 +000000D5000000D6000000D8000000D9000000DA000000DB000000DC000000DD000000DE000001780000010000000102 +0000010400000106000001080000010A0000010C0000010E00000110000001120000011400000116000001180000011A +0000011C0000011E00000120000001220000012400000126000001280000012A0000012C0000012E0000004900000132 +0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C +0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 +00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 +000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C5000001C5 +000001C5000001C8000001C8000001C8000001CB000001CB000001CB000001CD000001CF000001D1000001D3000001D5 +000001D7000001D9000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC +000001EE000001F2000001F2000001F2000001F4000001F8000001FA000001FC000001FE000002000000020200000204 +00000206000002080000020A0000020C0000020E00000210000002120000021400000216000002180000021A0000021C +0000021E000002220000022400000226000002280000022A0000022C0000022E00000230000002320000023B00002C7E +00002C7F0000024100000246000002480000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186 +000001890000018A0000018F000001900000A7AB000001930000A7AC000001940000A78D0000A7AA0000019700000196 +0000A7AE00002C620000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1 +000001AE00000244000001B1000001B200000245000001B70000A7B20000A7B000000399000003700000037200000376 +000003FD000003FE000003FF0000038600000388000003890000038A0000039100000392000003930000039400000395 +000003960000039700000398000003990000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1 +000003A3000003A3000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E +0000038F0000039200000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2 +000003E4000003E6000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7 +000003FA000004100000041100000412000004130000041400000415000004160000041700000418000004190000041A +0000041B0000041C0000041D0000041E0000041F00000420000004210000042200000423000004240000042500000426 +0000042700000428000004290000042A0000042B0000042C0000042D0000042E0000042F000004000000040100000402 +000004030000040400000405000004060000040700000408000004090000040A0000040B0000040C0000040D0000040E +0000040F00000460000004620000046400000466000004680000046A0000046C0000046E000004700000047200000474 +00000476000004780000047A0000047C0000047E000004800000048A0000048C0000048E000004900000049200000494 +00000496000004980000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC +000004AE000004B0000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5 +000004C7000004C9000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC +000004DE000004E0000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4 +000004F6000004F8000004FA000004FC000004FE00000500000005020000050400000506000005080000050A0000050C +0000050E00000510000005120000051400000516000005180000051A0000051C0000051E000005200000052200000524 +00000526000005280000052A0000052C0000052E00000531000005320000053300000534000005350000053600000537 +00000538000005390000053A0000053B0000053C0000053D0000053E0000053F00000540000005410000054200000543 +0000054400000545000005460000054700000548000005490000054A0000054B0000054C0000054D0000054E0000054F +00000550000005510000055200000553000005540000055500000556000010D0000010D1000010D2000010D3000010D4 +000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 +000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC +000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 +000010F9000010FA000010FD000010FE000010FF000013F0000013F1000013F2000013F3000013F4000013F500000412 +000004140000041E0000042100000422000004220000042A000004620000A64A0000A77D00002C630000A7C600001E00 +00001E0200001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E18 +00001E1A00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E30 +00001E3200001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E48 +00001E4A00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E60 +00001E6200001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E78 +00001E7A00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E90 +00001E9200001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB0 +00001EB200001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC8 +00001ECA00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE0 +00001EE200001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF8 +00001EFA00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F18 +00001F1900001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E +00001F2F00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A +00001F4B00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C +00001F6D00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF8 +00001FF900001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E +00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA +00001FAB00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD9 +00001FE800001FE900001FEC00001FFC0000213200002160000021610000216200002163000021640000216500002166 +0000216700002168000021690000216A0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7 +000024B8000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3 +000024C4000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF +00002C0000002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B +00002C0C00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C17 +00002C1800002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C23 +00002C2400002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F +00002C600000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C86 +00002C8800002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E +00002CA000002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB6 +00002CB800002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE +00002CD000002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED +00002CF2000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA +000010AB000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6 +000010B7000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2 +000010C3000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C +0000A64E0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A664 +0000A6660000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E +0000A6900000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C +0000A72E0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A746 +0000A7480000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E +0000A7600000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A780 +0000A7820000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E +0000A7A00000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C0 +0000A7C20000A7C70000A7C90000A7D00000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3 +000013A4000013A5000013A6000013A7000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF +000013B0000013B1000013B2000013B3000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB +000013BC000013BD000013BE000013BF000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7 +000013C8000013C9000013CA000013CB000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3 +000013D4000013D5000013D6000013D7000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF +000013E0000013E1000013E2000013E3000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB +000013EC000013ED000013EE000013EF0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF28 +0000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF34 +0000FF350000FF360000FF370000FF380000FF390000FF3A000104000001040100010402000104030001040400010405 +000104060001040700010408000104090001040A0001040B0001040C0001040D0001040E0001040F0001041000010411 +00010412000104130001041400010415000104160001041700010418000104190001041A0001041B0001041C0001041D +0001041E0001041F0001042000010421000104220001042300010424000104250001042600010427000104B0000104B1 +000104B2000104B3000104B4000104B5000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD +000104BE000104BF000104C0000104C1000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9 +000104CA000104CB000104CC000104CD000104CE000104CF000104D0000104D1000104D2000104D30001057000010571 +00010572000105730001057400010575000105760001057700010578000105790001057A0001057C0001057D0001057E +0001057F000105800001058100010582000105830001058400010585000105860001058700010588000105890001058A +0001058C0001058D0001058E0001058F000105900001059100010592000105940001059500010C8000010C8100010C82 +00010C8300010C8400010C8500010C8600010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E +00010C8F00010C9000010C9100010C9200010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A +00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA6 +00010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2 +000118A0000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB +000118AC000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7 +000118B8000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E43 +00016E4400016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F +00016E5000016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B +00016E5C00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E907 +0001E9080001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E913 +0001E9140001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F +0001E9200001E92102000053000000730000013002000046000000660200004600000069020000460000006C03000046 +000000660000006903000046000000660000006C02000053000000740200005300000074020005350000058202000544 +000005760200054400000565020005440000056B0200054E00000576020005440000056D020002BC0000004E03000399 +0000030800000301030003A500000308000003010200004A0000030C0200004800000331020000540000030802000057 +0000030A020000590000030A02000041000002BE020003A500000313030003A50000031300000300030003A500000313 +00000301030003A500000313000003420200039100000342020003970000034203000399000003080000030003000399 +00000308000003010200039900000342030003990000030800000342030003A50000030800000300030003A500000308 +00000301020003A100000313020003A500000342030003A50000030800000342020003A90000034200001F8800001F89 +00001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F8800001F8900001F8A00001F8B00001F8C00001F8D +00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001F9800001F99 +00001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD +00001FAE00001FAF00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE00001FAF00001FBC00001FBC +00001FCC00001FCC00001FFC00001FFC02001FBA00000345020003860000034502001FCA000003450200038900000345 +02001FFA000003450200038F00000345030003910000034200000345030003970000034200000345030003A900000342 +00000345"; +return t; } } @@ -7802,325 +7902,425 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -dstring toUpperTable() nothrow @nogc pure @safe { -static immutable dchar[1671] t = -"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ -"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ -"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ -"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ -"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ -"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ -"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ -"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C4\u01C4\u01C7\u01C7\u01CA\u01CA\u01CD\u01CF\u01D1\u01D3"d~ -"\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F1\u01F4\u01F8\u01FA"d~ -"\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0222"d~ -"\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A\u024C\u024E\u2C6F\u2C6D"d~ -"\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196\uA7AE\u2C62\uA7AD\u019C"d~ -"\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2\uA7B0\u0399\u0370\u0372"d~ -"\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B"d~ -"\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u038C\u038E\u038F"d~ -"\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u039A\u03A1"d~ -"\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D"d~ -"\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0400"d~ -"\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F\u0460\u0462\u0464\u0466"d~ -"\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494"d~ -"\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA"d~ -"\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0"d~ -"\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506"d~ -"\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C"d~ -"\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E\u053F\u0540\u0541\u0542"d~ -"\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551\u0552\u0553\u0554\u0555"d~ -"\u0556\u1C90\u1C91\u1C92\u1C93\u1C94\u1C95\u1C96\u1C97\u1C98\u1C99\u1C9A\u1C9B\u1C9C\u1C9D\u1C9E\u1C9F\u1CA0\u1CA1"d~ -"\u1CA2\u1CA3\u1CA4\u1CA5\u1CA6\u1CA7\u1CA8\u1CA9\u1CAA\u1CAB\u1CAC\u1CAD\u1CAE\u1CAF\u1CB0\u1CB1\u1CB2\u1CB3\u1CB4"d~ -"\u1CB5\u1CB6\u1CB7\u1CB8\u1CB9\u1CBA\u1CBD\u1CBE\u1CBF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5\u0412\u0414\u041E\u0421"d~ -"\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14"d~ -"\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A"d~ -"\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60"d~ -"\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86"d~ -"\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4"d~ -"\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA"d~ -"\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08"d~ -"\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29\u1F2A\u1F2B\u1F2C\u1F2D"d~ -"\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C\u1F4D\u1F59\u1F5B\u1F5D"d~ -"\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB\u1FDA\u1FDB\u1FF8\u1FF9"d~ -"\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E"d~ -"\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8\u1FD9\u1FE8\u1FE9\u1FEC"d~ -"\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C\u216D\u216E\u216F\u2183"d~ -"\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4\u24C5\u24C6\u24C7\u24C8"d~ -"\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07\u2C08\u2C09\u2C0A\u2C0B"d~ -"\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A\u2C1B\u2C1C\u2C1D\u2C1E"d~ -"\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D\u2C2E\u2C2F\u2C60\u023A"d~ -"\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98"d~ -"\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE"d~ -"\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB"d~ -"\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC\u10AD\u10AE\u10AF\u10B0"d~ -"\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF\u10C0\u10C1\u10C2\u10C3"d~ -"\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C"d~ -"\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694"d~ -"\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742"d~ -"\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768"d~ -"\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796\uA798\uA79A\uA79C\uA79E"d~ -"\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9\uA7D0\uA7D6\uA7D8\uA7F5"d~ -"\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD\u13AE\u13AF\u13B0\u13B1"d~ -"\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0\u13C1\u13C2\u13C3\u13C4"d~ -"\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3\u13D4\u13D5\u13D6\u13D7"d~ -"\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6\u13E7\u13E8\u13E9\u13EA"d~ -"\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A\uFF2B\uFF2C\uFF2D\uFF2E"d~ -"\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401\U00010402\U00010403"d~ -"\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C\U0001040D\U0001040E"d~ -"\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417\U00010418\U00010419"d~ -"\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422\U00010423\U00010424"d~ -"\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5\U000104B6\U000104B7"d~ -"\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0\U000104C1\U000104C2"d~ -"\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB\U000104CC\U000104CD"d~ -"\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572\U00010573\U00010574"d~ -"\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E\U0001057F\U00010580"d~ -"\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589\U0001058A\U0001058C"d~ -"\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80\U00010C81\U00010C82"d~ -"\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B\U00010C8C\U00010C8D"d~ -"\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96\U00010C97\U00010C98"d~ -"\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1\U00010CA2\U00010CA3"d~ -"\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC\U00010CAD\U00010CAE"d~ -"\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4\U000118A5\U000118A6"d~ -"\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF\U000118B0\U000118B1"d~ -"\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA\U000118BB\U000118BC"d~ -"\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45\U00016E46\U00016E47"d~ -"\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50\U00016E51\U00016E52"d~ -"\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B\U00016E5C\U00016E5D"d~ -"\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906\U0001E907\U0001E908"d~ -"\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911\U0001E912\U0001E913"d~ -"\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C\U0001E91D\U0001E91E"d~ -"\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0053\u0130"d~cast(dchar) 0x02000046~"\u0046"d~cast(dchar) 0x02000046~""d~ -"\u0049"d~cast(dchar) 0x02000046~"\u004C"d~cast(dchar) 0x03000046~"\u0046\u0049"d~cast(dchar) 0x03000046~"\u0046\u004C"d~ -""d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000053~"\u0054"d~cast(dchar) 0x02000535~"\u0552"d~cast(dchar) 0x02000544~""d~ -"\u0546"d~cast(dchar) 0x02000544~"\u0535"d~cast(dchar) 0x02000544~"\u053B"d~cast(dchar) 0x0200054E~"\u0546"d~cast(dchar) 0x02000544~""d~ -"\u053D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ -""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ -"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ -"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ -"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ -""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ -"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ -""d~cast(dchar) 0x020003A9~"\u0342"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ -"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ -"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F08~"\u0399"d~cast(dchar) 0x02001F09~"\u0399"d~cast(dchar) 0x02001F0A~""d~ -"\u0399"d~cast(dchar) 0x02001F0B~"\u0399"d~cast(dchar) 0x02001F0C~"\u0399"d~cast(dchar) 0x02001F0D~"\u0399"d~cast(dchar) 0x02001F0E~""d~ -"\u0399"d~cast(dchar) 0x02001F0F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ -"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ -"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F28~"\u0399"d~cast(dchar) 0x02001F29~"\u0399"d~cast(dchar) 0x02001F2A~""d~ -"\u0399"d~cast(dchar) 0x02001F2B~"\u0399"d~cast(dchar) 0x02001F2C~"\u0399"d~cast(dchar) 0x02001F2D~"\u0399"d~cast(dchar) 0x02001F2E~""d~ -"\u0399"d~cast(dchar) 0x02001F2F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ -"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ -"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02001F68~"\u0399"d~cast(dchar) 0x02001F69~"\u0399"d~cast(dchar) 0x02001F6A~""d~ -"\u0399"d~cast(dchar) 0x02001F6B~"\u0399"d~cast(dchar) 0x02001F6C~"\u0399"d~cast(dchar) 0x02001F6D~"\u0399"d~cast(dchar) 0x02001F6E~""d~ -"\u0399"d~cast(dchar) 0x02001F6F~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000391~"\u0399"d~cast(dchar) 0x02000397~""d~ -"\u0399"d~cast(dchar) 0x02000397~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x020003A9~"\u0399"d~cast(dchar) 0x02001FBA~""d~ -"\u0399"d~cast(dchar) 0x02000386~"\u0399"d~cast(dchar) 0x02001FCA~"\u0399"d~cast(dchar) 0x02000389~"\u0399"d~cast(dchar) 0x02001FFA~""d~ -"\u0399"d~cast(dchar) 0x0200038F~"\u0399"d~cast(dchar) 0x03000391~"\u0342\u0399"d~cast(dchar) 0x03000397~"\u0342\u0399"d~ -""d~cast(dchar) 0x030003A9~"\u0342\u0399"d; -return t[]; +immutable(uint)[] toUpperTable() nothrow @nogc pure @safe { +static immutable uint[] t = +cast(immutable uint[]) x" +0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C +0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 +000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 +000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4 +000000D5000000D6000000D8000000D9000000DA000000DB000000DC000000DD000000DE000001780000010000000102 +0000010400000106000001080000010A0000010C0000010E00000110000001120000011400000116000001180000011A +0000011C0000011E00000120000001220000012400000126000001280000012A0000012C0000012E0000004900000132 +0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C +0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 +00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 +000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C4000001C4 +000001C7000001C7000001CA000001CA000001CD000001CF000001D1000001D3000001D5000001D7000001D9000001DB +0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC000001EE000001F1000001F1 +000001F4000001F8000001FA000001FC000001FE00000200000002020000020400000206000002080000020A0000020C +0000020E00000210000002120000021400000216000002180000021A0000021C0000021E000002220000022400000226 +000002280000022A0000022C0000022E00000230000002320000023B00002C7E00002C7F000002410000024600000248 +0000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186000001890000018A0000018F00000190 +0000A7AB000001930000A7AC000001940000A78D0000A7AA00000197000001960000A7AE00002C620000A7AD0000019C +00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1000001AE00000244000001B1000001B2 +00000245000001B70000A7B20000A7B000000399000003700000037200000376000003FD000003FE000003FF00000386 +00000388000003890000038A000003910000039200000393000003940000039500000396000003970000039800000399 +0000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1000003A3000003A3000003A4000003A5 +000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E0000038F0000039200000398000003A6 +000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2000003E4000003E6000003E8000003EA +000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7000003FA000004100000041100000412 +000004130000041400000415000004160000041700000418000004190000041A0000041B0000041C0000041D0000041E +0000041F000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A +0000042B0000042C0000042D0000042E0000042F00000400000004010000040200000403000004040000040500000406 +0000040700000408000004090000040A0000040B0000040C0000040D0000040E0000040F000004600000046200000464 +00000466000004680000046A0000046C0000046E00000470000004720000047400000476000004780000047A0000047C +0000047E000004800000048A0000048C0000048E00000490000004920000049400000496000004980000049A0000049C +0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC000004AE000004B0000004B2000004B4 +000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5000004C7000004C9000004CB000004CD +000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC000004DE000004E0000004E2000004E4 +000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4000004F6000004F8000004FA000004FC +000004FE00000500000005020000050400000506000005080000050A0000050C0000050E000005100000051200000514 +00000516000005180000051A0000051C0000051E00000520000005220000052400000526000005280000052A0000052C +0000052E0000053100000532000005330000053400000535000005360000053700000538000005390000053A0000053B +0000053C0000053D0000053E0000053F0000054000000541000005420000054300000544000005450000054600000547 +00000548000005490000054A0000054B0000054C0000054D0000054E0000054F00000550000005510000055200000553 +00000554000005550000055600001C9000001C9100001C9200001C9300001C9400001C9500001C9600001C9700001C98 +00001C9900001C9A00001C9B00001C9C00001C9D00001C9E00001C9F00001CA000001CA100001CA200001CA300001CA4 +00001CA500001CA600001CA700001CA800001CA900001CAA00001CAB00001CAC00001CAD00001CAE00001CAF00001CB0 +00001CB100001CB200001CB300001CB400001CB500001CB600001CB700001CB800001CB900001CBA00001CBD00001CBE +00001CBF000013F0000013F1000013F2000013F3000013F4000013F500000412000004140000041E0000042100000422 +000004220000042A000004620000A64A0000A77D00002C630000A7C600001E0000001E0200001E0400001E0600001E08 +00001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E1800001E1A00001E1C00001E1E00001E20 +00001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E3000001E3200001E3400001E3600001E38 +00001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E4800001E4A00001E4C00001E4E00001E50 +00001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E6000001E6200001E6400001E6600001E68 +00001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E7800001E7A00001E7C00001E7E00001E80 +00001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E9000001E9200001E9400001E6000001EA0 +00001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB000001EB200001EB400001EB600001EB8 +00001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC800001ECA00001ECC00001ECE00001ED0 +00001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE000001EE200001EE400001EE600001EE8 +00001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF800001EFA00001EFC00001EFE00001F08 +00001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F1800001F1900001F1A00001F1B00001F1C +00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E00001F2F00001F3800001F3900001F3A +00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A00001F4B00001F4C00001F4D00001F59 +00001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C00001F6D00001F6E00001F6F00001FBA +00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF800001FF900001FEA00001FEB00001FFA +00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A +00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE +00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD900001FE800001FE900001FEC00001FFC +00002132000021600000216100002162000021630000216400002165000021660000216700002168000021690000216A +0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7000024B8000024B9000024BA000024BB +000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3000024C4000024C5000024C6000024C7 +000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF00002C0000002C0100002C0200002C03 +00002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B00002C0C00002C0D00002C0E00002C0F +00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C1700002C1800002C1900002C1A00002C1B +00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C2300002C2400002C2500002C2600002C27 +00002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F00002C600000023A0000023E00002C67 +00002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C8600002C8800002C8A00002C8C00002C8E +00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E00002CA000002CA200002CA400002CA6 +00002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB600002CB800002CBA00002CBC00002CBE +00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE00002CD000002CD200002CD400002CD6 +00002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED00002CF2000010A0000010A1000010A2 +000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA000010AB000010AC000010AD000010AE +000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6000010B7000010B8000010B9000010BA +000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2000010C3000010C4000010C5000010C7 +000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C0000A64E0000A6500000A6520000A654 +0000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A6640000A6660000A6680000A66A0000A66C +0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E0000A6900000A6920000A6940000A696 +0000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C0000A72E0000A7320000A7340000A736 +0000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A7460000A7480000A74A0000A74C0000A74E +0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E0000A7600000A7620000A7640000A766 +0000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A7800000A7820000A7840000A7860000A78B +0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E0000A7A00000A7A20000A7A40000A7A6 +0000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C00000A7C20000A7C70000A7C90000A7D0 +0000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3000013A4000013A5000013A6000013A7 +000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF000013B0000013B1000013B2000013B3 +000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB000013BC000013BD000013BE000013BF +000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7000013C8000013C9000013CA000013CB +000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3000013D4000013D5000013D6000013D7 +000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF000013E0000013E1000013E2000013E3 +000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB000013EC000013ED000013EE000013EF +0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF280000FF290000FF2A0000FF2B0000FF2C +0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF340000FF350000FF360000FF370000FF38 +0000FF390000FF3A00010400000104010001040200010403000104040001040500010406000104070001040800010409 +0001040A0001040B0001040C0001040D0001040E0001040F000104100001041100010412000104130001041400010415 +000104160001041700010418000104190001041A0001041B0001041C0001041D0001041E0001041F0001042000010421 +000104220001042300010424000104250001042600010427000104B0000104B1000104B2000104B3000104B4000104B5 +000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD000104BE000104BF000104C0000104C1 +000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9000104CA000104CB000104CC000104CD +000104CE000104CF000104D0000104D1000104D2000104D3000105700001057100010572000105730001057400010575 +000105760001057700010578000105790001057A0001057C0001057D0001057E0001057F000105800001058100010582 +000105830001058400010585000105860001058700010588000105890001058A0001058C0001058D0001058E0001058F +000105900001059100010592000105940001059500010C8000010C8100010C8200010C8300010C8400010C8500010C86 +00010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E00010C8F00010C9000010C9100010C92 +00010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A00010C9B00010C9C00010C9D00010C9E +00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA600010CA700010CA800010CA900010CAA +00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2000118A0000118A1000118A2000118A3 +000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB000118AC000118AD000118AE000118AF +000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7000118B8000118B9000118BA000118BB +000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E4300016E4400016E4500016E4600016E47 +00016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F00016E5000016E5100016E5200016E53 +00016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B00016E5C00016E5D00016E5E00016E5F +0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E9070001E9080001E9090001E90A0001E90B +0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E9130001E9140001E9150001E9160001E917 +0001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F0001E9200001E9210200005300000053 +0000013002000046000000460200004600000049020000460000004C0300004600000046000000490300004600000046 +0000004C0200005300000054020000530000005402000535000005520200054400000546020005440000053502000544 +0000053B0200054E00000546020005440000053D020002BC0000004E030003990000030800000301030003A500000308 +000003010200004A0000030C02000048000003310200005400000308020000570000030A020000590000030A02000041 +000002BE020003A500000313030003A50000031300000300030003A50000031300000301030003A50000031300000342 +020003910000034202000397000003420300039900000308000003000300039900000308000003010200039900000342 +030003990000030800000342030003A50000030800000300030003A50000030800000301020003A100000313020003A5 +00000342030003A50000030800000342020003A90000034202001F080000039902001F090000039902001F0A00000399 +02001F0B0000039902001F0C0000039902001F0D0000039902001F0E0000039902001F0F0000039902001F0800000399 +02001F090000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D0000039902001F0E00000399 +02001F0F0000039902001F280000039902001F290000039902001F2A0000039902001F2B0000039902001F2C00000399 +02001F2D0000039902001F2E0000039902001F2F0000039902001F280000039902001F290000039902001F2A00000399 +02001F2B0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F0000039902001F6800000399 +02001F690000039902001F6A0000039902001F6B0000039902001F6C0000039902001F6D0000039902001F6E00000399 +02001F6F0000039902001F680000039902001F690000039902001F6A0000039902001F6B0000039902001F6C00000399 +02001F6D0000039902001F6E0000039902001F6F00000399020003910000039902000391000003990200039700000399 +0200039700000399020003A900000399020003A90000039902001FBA00000399020003860000039902001FCA00000399 +020003890000039902001FFA000003990200038F00000399030003910000034200000399030003970000034200000399 +030003A90000034200000399"; +return t; } -dstring toLowerTable() nothrow @nogc pure @safe { -static immutable dchar[1537] t = -"\u0061\u0062\u0063\u0064\u0065\u0066\u0067\u0068\u0069\u006A\u006B\u006C\u006D\u006E\u006F\u0070\u0071\u0072\u0073"d~ -"\u0074\u0075\u0076\u0077\u0078\u0079\u007A\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB"d~ -"\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u0101"d~ -"\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127"d~ -"\u0129\u012B\u012D\u012F\u0069\u0133\u0135\u0137\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u014B\u014D\u014F"d~ -"\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175"d~ -"\u0177\u00FF\u017A\u017C\u017E\u0253\u0183\u0185\u0254\u0188\u0256\u0257\u018C\u01DD\u0259\u025B\u0192\u0260\u0263"d~ -"\u0269\u0268\u0199\u026F\u0272\u0275\u01A1\u01A3\u01A5\u0280\u01A8\u0283\u01AD\u0288\u01B0\u028A\u028B\u01B4\u01B6"d~ -"\u0292\u01B9\u01BD\u01C6\u01C6\u01C9\u01C9\u01CC\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DF\u01E1"d~ -"\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F3\u01F3\u01F5\u0195\u01BF\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205"d~ -"\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u019E\u0223\u0225\u0227\u0229\u022B"d~ -"\u022D\u022F\u0231\u0233\u2C65\u023C\u019A\u2C66\u0242\u0180\u0289\u028C\u0247\u0249\u024B\u024D\u024F\u0371\u0373"d~ -"\u0377\u03F3\u03AC\u03AD\u03AE\u03AF\u03CC\u03CD\u03CE\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA"d~ -"\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03D7\u03D9\u03DB"d~ -"\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF\u03B8\u03F8\u03F2\u03FB\u037B\u037C\u037D\u0450\u0451"d~ -"\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u045D\u045E\u045F\u0430\u0431\u0432\u0433\u0434"d~ -"\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447"d~ -"\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475"d~ -"\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3"d~ -"\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04CF\u04C2\u04C4\u04C6\u04C8"d~ -"\u04CA\u04CC\u04CE\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF"d~ -"\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515"d~ -"\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561\u0562\u0563\u0564\u0565\u0566"d~ -"\u0567\u0568\u0569\u056A\u056B\u056C\u056D\u056E\u056F\u0570\u0571\u0572\u0573\u0574\u0575\u0576\u0577\u0578\u0579"d~ -"\u057A\u057B\u057C\u057D\u057E\u057F\u0580\u0581\u0582\u0583\u0584\u0585\u0586\u2D00\u2D01\u2D02\u2D03\u2D04\u2D05"d~ -"\u2D06\u2D07\u2D08\u2D09\u2D0A\u2D0B\u2D0C\u2D0D\u2D0E\u2D0F\u2D10\u2D11\u2D12\u2D13\u2D14\u2D15\u2D16\u2D17\u2D18"d~ -"\u2D19\u2D1A\u2D1B\u2D1C\u2D1D\u2D1E\u2D1F\u2D20\u2D21\u2D22\u2D23\u2D24\u2D25\u2D27\u2D2D\uAB70\uAB71\uAB72\uAB73"d~ -"\uAB74\uAB75\uAB76\uAB77\uAB78\uAB79\uAB7A\uAB7B\uAB7C\uAB7D\uAB7E\uAB7F\uAB80\uAB81\uAB82\uAB83\uAB84\uAB85\uAB86"d~ -"\uAB87\uAB88\uAB89\uAB8A\uAB8B\uAB8C\uAB8D\uAB8E\uAB8F\uAB90\uAB91\uAB92\uAB93\uAB94\uAB95\uAB96\uAB97\uAB98\uAB99"d~ -"\uAB9A\uAB9B\uAB9C\uAB9D\uAB9E\uAB9F\uABA0\uABA1\uABA2\uABA3\uABA4\uABA5\uABA6\uABA7\uABA8\uABA9\uABAA\uABAB\uABAC"d~ -"\uABAD\uABAE\uABAF\uABB0\uABB1\uABB2\uABB3\uABB4\uABB5\uABB6\uABB7\uABB8\uABB9\uABBA\uABBB\uABBC\uABBD\uABBE\uABBF"d~ -"\u13F8\u13F9\u13FA\u13FB\u13FC\u13FD\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC"d~ -"\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF"d~ -"\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u1E01\u1E03\u1E05\u1E07\u1E09"d~ -"\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F"d~ -"\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55"d~ -"\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B"d~ -"\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95\u00DF\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9"d~ -"\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF"d~ -"\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5"d~ -"\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF\u1F00\u1F01\u1F02\u1F03\u1F04\u1F05\u1F06\u1F07\u1F10\u1F11\u1F12\u1F13\u1F14\u1F15"d~ -"\u1F20\u1F21\u1F22\u1F23\u1F24\u1F25\u1F26\u1F27\u1F30\u1F31\u1F32\u1F33\u1F34\u1F35\u1F36\u1F37\u1F40\u1F41\u1F42"d~ -"\u1F43\u1F44\u1F45\u1F51\u1F53\u1F55\u1F57\u1F60\u1F61\u1F62\u1F63\u1F64\u1F65\u1F66\u1F67\u1F80\u1F81\u1F82\u1F83"d~ -"\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6"d~ -"\u1FA7\u1FB0\u1FB1\u1F70\u1F71\u1FB3\u1F72\u1F73\u1F74\u1F75\u1FC3\u1FD0\u1FD1\u1F76\u1F77\u1FE0\u1FE1\u1F7A\u1F7B"d~ -"\u1FE5\u1F78\u1F79\u1F7C\u1F7D\u1FF3\u03C9\u006B\u00E5\u214E\u2170\u2171\u2172\u2173\u2174\u2175\u2176\u2177\u2178"d~ -"\u2179\u217A\u217B\u217C\u217D\u217E\u217F\u2184\u24D0\u24D1\u24D2\u24D3\u24D4\u24D5\u24D6\u24D7\u24D8\u24D9\u24DA"d~ -"\u24DB\u24DC\u24DD\u24DE\u24DF\u24E0\u24E1\u24E2\u24E3\u24E4\u24E5\u24E6\u24E7\u24E8\u24E9\u2C30\u2C31\u2C32\u2C33"d~ -"\u2C34\u2C35\u2C36\u2C37\u2C38\u2C39\u2C3A\u2C3B\u2C3C\u2C3D\u2C3E\u2C3F\u2C40\u2C41\u2C42\u2C43\u2C44\u2C45\u2C46"d~ -"\u2C47\u2C48\u2C49\u2C4A\u2C4B\u2C4C\u2C4D\u2C4E\u2C4F\u2C50\u2C51\u2C52\u2C53\u2C54\u2C55\u2C56\u2C57\u2C58\u2C59"d~ -"\u2C5A\u2C5B\u2C5C\u2C5D\u2C5E\u2C5F\u2C61\u026B\u1D7D\u027D\u2C68\u2C6A\u2C6C\u0251\u0271\u0250\u0252\u2C73\u2C76"d~ -"\u023F\u0240\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1"d~ -"\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7"d~ -"\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CEC\u2CEE\u2CF3\uA641\uA643"d~ -"\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669"d~ -"\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B\uA723\uA725\uA727"d~ -"\uA729\uA72B\uA72D\uA72F\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F"d~ -"\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F\uA77A\uA77C\u1D79"d~ -"\uA77F\uA781\uA783\uA785\uA787\uA78C\u0265\uA791\uA793\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9"d~ -"\u0266\u025C\u0261\u026C\u026A\u029E\u0287\u029D\uAB53\uA7B5\uA7B7\uA7B9\uA7BB\uA7BD\uA7BF\uA7C1\uA7C3\uA794\u0282"d~ -"\u1D8E\uA7C8\uA7CA\uA7D1\uA7D7\uA7D9\uA7F6\uFF41\uFF42\uFF43\uFF44\uFF45\uFF46\uFF47\uFF48\uFF49\uFF4A\uFF4B\uFF4C"d~ -"\uFF4D\uFF4E\uFF4F\uFF50\uFF51\uFF52\uFF53\uFF54\uFF55\uFF56\uFF57\uFF58\uFF59\uFF5A\U00010428\U00010429\U0001042A"d~ -"\U0001042B\U0001042C\U0001042D\U0001042E\U0001042F\U00010430\U00010431\U00010432\U00010433\U00010434\U00010435"d~ -"\U00010436\U00010437\U00010438\U00010439\U0001043A\U0001043B\U0001043C\U0001043D\U0001043E\U0001043F\U00010440"d~ -"\U00010441\U00010442\U00010443\U00010444\U00010445\U00010446\U00010447\U00010448\U00010449\U0001044A\U0001044B"d~ -"\U0001044C\U0001044D\U0001044E\U0001044F\U000104D8\U000104D9\U000104DA\U000104DB\U000104DC\U000104DD\U000104DE"d~ -"\U000104DF\U000104E0\U000104E1\U000104E2\U000104E3\U000104E4\U000104E5\U000104E6\U000104E7\U000104E8\U000104E9"d~ -"\U000104EA\U000104EB\U000104EC\U000104ED\U000104EE\U000104EF\U000104F0\U000104F1\U000104F2\U000104F3\U000104F4"d~ -"\U000104F5\U000104F6\U000104F7\U000104F8\U000104F9\U000104FA\U000104FB\U00010597\U00010598\U00010599\U0001059A"d~ -"\U0001059B\U0001059C\U0001059D\U0001059E\U0001059F\U000105A0\U000105A1\U000105A3\U000105A4\U000105A5\U000105A6"d~ -"\U000105A7\U000105A8\U000105A9\U000105AA\U000105AB\U000105AC\U000105AD\U000105AE\U000105AF\U000105B0\U000105B1"d~ -"\U000105B3\U000105B4\U000105B5\U000105B6\U000105B7\U000105B8\U000105B9\U000105BB\U000105BC\U00010CC0\U00010CC1"d~ -"\U00010CC2\U00010CC3\U00010CC4\U00010CC5\U00010CC6\U00010CC7\U00010CC8\U00010CC9\U00010CCA\U00010CCB\U00010CCC"d~ -"\U00010CCD\U00010CCE\U00010CCF\U00010CD0\U00010CD1\U00010CD2\U00010CD3\U00010CD4\U00010CD5\U00010CD6\U00010CD7"d~ -"\U00010CD8\U00010CD9\U00010CDA\U00010CDB\U00010CDC\U00010CDD\U00010CDE\U00010CDF\U00010CE0\U00010CE1\U00010CE2"d~ -"\U00010CE3\U00010CE4\U00010CE5\U00010CE6\U00010CE7\U00010CE8\U00010CE9\U00010CEA\U00010CEB\U00010CEC\U00010CED"d~ -"\U00010CEE\U00010CEF\U00010CF0\U00010CF1\U00010CF2\U000118C0\U000118C1\U000118C2\U000118C3\U000118C4\U000118C5"d~ -"\U000118C6\U000118C7\U000118C8\U000118C9\U000118CA\U000118CB\U000118CC\U000118CD\U000118CE\U000118CF\U000118D0"d~ -"\U000118D1\U000118D2\U000118D3\U000118D4\U000118D5\U000118D6\U000118D7\U000118D8\U000118D9\U000118DA\U000118DB"d~ -"\U000118DC\U000118DD\U000118DE\U000118DF\U00016E60\U00016E61\U00016E62\U00016E63\U00016E64\U00016E65\U00016E66"d~ -"\U00016E67\U00016E68\U00016E69\U00016E6A\U00016E6B\U00016E6C\U00016E6D\U00016E6E\U00016E6F\U00016E70\U00016E71"d~ -"\U00016E72\U00016E73\U00016E74\U00016E75\U00016E76\U00016E77\U00016E78\U00016E79\U00016E7A\U00016E7B\U00016E7C"d~ -"\U00016E7D\U00016E7E\U00016E7F\U0001E922\U0001E923\U0001E924\U0001E925\U0001E926\U0001E927\U0001E928\U0001E929"d~ -"\U0001E92A\U0001E92B\U0001E92C\U0001E92D\U0001E92E\U0001E92F\U0001E930\U0001E931\U0001E932\U0001E933\U0001E934"d~ -"\U0001E935\U0001E936\U0001E937\U0001E938\U0001E939\U0001E93A\U0001E93B\U0001E93C\U0001E93D\U0001E93E\U0001E93F"d~ -"\U0001E940\U0001E941\U0001E942\U0001E943\u00DF"d~cast(dchar) 0x02000069~"\u0307\uFB00\uFB01\uFB02\uFB03\uFB04\uFB05"d~ -"\uFB06\u0587\uFB13\uFB14\uFB15\uFB16\uFB17\u0149\u0390\u03B0\u01F0\u1E96\u1E97\u1E98\u1E99\u1E9A\u1F50\u1F52\u1F54"d~ -"\u1F56\u1FB6\u1FC6\u1FD2\u1FD3\u1FD6\u1FD7\u1FE2\u1FE3\u1FE4\u1FE6\u1FE7\u1FF6\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85"d~ -"\u1F86\u1F87\u1F80\u1F81\u1F82\u1F83\u1F84\u1F85\u1F86\u1F87\u1F90\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1F90"d~ -"\u1F91\u1F92\u1F93\u1F94\u1F95\u1F96\u1F97\u1FA0\u1FA1\u1FA2\u1FA3\u1FA4\u1FA5\u1FA6\u1FA7\u1FA0\u1FA1\u1FA2\u1FA3"d~ -"\u1FA4\u1FA5\u1FA6\u1FA7\u1FB3\u1FB3\u1FC3\u1FC3\u1FF3\u1FF3\u1FB2\u1FB4\u1FC2\u1FC4\u1FF2\u1FF4\u1FB7\u1FC7\u1FF7"d; -return t[]; +immutable(uint)[] toLowerTable() nothrow @nogc pure @safe { +static immutable uint[] t = +cast(immutable uint[]) x" +0000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C +0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078 +000000790000007A000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9 +000000EA000000EB000000EC000000ED000000EE000000EF000000F0000000F1000000F2000000F3000000F4000000F5 +000000F6000000F8000000F9000000FA000000FB000000FC000000FD000000FE00000101000001030000010500000107 +000001090000010B0000010D0000010F00000111000001130000011500000117000001190000011B0000011D0000011F +00000121000001230000012500000127000001290000012B0000012D0000012F00000069000001330000013500000137 +0000013A0000013C0000013E00000140000001420000014400000146000001480000014B0000014D0000014F00000151 +000001530000015500000157000001590000015B0000015D0000015F0000016100000163000001650000016700000169 +0000016B0000016D0000016F00000171000001730000017500000177000000FF0000017A0000017C0000017E00000253 +0000018300000185000002540000018800000256000002570000018C000001DD000002590000025B0000019200000260 +000002630000026900000268000001990000026F0000027200000275000001A1000001A3000001A500000280000001A8 +00000283000001AD00000288000001B00000028A0000028B000001B4000001B600000292000001B9000001BD000001C6 +000001C6000001C9000001C9000001CC000001CC000001CE000001D0000001D2000001D4000001D6000001D8000001DA +000001DC000001DF000001E1000001E3000001E5000001E7000001E9000001EB000001ED000001EF000001F3000001F3 +000001F500000195000001BF000001F9000001FB000001FD000001FF0000020100000203000002050000020700000209 +0000020B0000020D0000020F00000211000002130000021500000217000002190000021B0000021D0000021F0000019E +000002230000022500000227000002290000022B0000022D0000022F000002310000023300002C650000023C0000019A +00002C660000024200000180000002890000028C00000247000002490000024B0000024D0000024F0000037100000373 +00000377000003F3000003AC000003AD000003AE000003AF000003CC000003CD000003CE000003B1000003B2000003B3 +000003B4000003B5000003B6000003B7000003B8000003B9000003BA000003BB000003BC000003BD000003BE000003BF +000003C0000003C1000003C3000003C4000003C5000003C6000003C7000003C8000003C9000003CA000003CB000003D7 +000003D9000003DB000003DD000003DF000003E1000003E3000003E5000003E7000003E9000003EB000003ED000003EF +000003B8000003F8000003F2000003FB0000037B0000037C0000037D0000045000000451000004520000045300000454 +00000455000004560000045700000458000004590000045A0000045B0000045C0000045D0000045E0000045F00000430 +0000043100000432000004330000043400000435000004360000043700000438000004390000043A0000043B0000043C +0000043D0000043E0000043F000004400000044100000442000004430000044400000445000004460000044700000448 +000004490000044A0000044B0000044C0000044D0000044E0000044F0000046100000463000004650000046700000469 +0000046B0000046D0000046F00000471000004730000047500000477000004790000047B0000047D0000047F00000481 +0000048B0000048D0000048F00000491000004930000049500000497000004990000049B0000049D0000049F000004A1 +000004A3000004A5000004A7000004A9000004AB000004AD000004AF000004B1000004B3000004B5000004B7000004B9 +000004BB000004BD000004BF000004CF000004C2000004C4000004C6000004C8000004CA000004CC000004CE000004D1 +000004D3000004D5000004D7000004D9000004DB000004DD000004DF000004E1000004E3000004E5000004E7000004E9 +000004EB000004ED000004EF000004F1000004F3000004F5000004F7000004F9000004FB000004FD000004FF00000501 +000005030000050500000507000005090000050B0000050D0000050F0000051100000513000005150000051700000519 +0000051B0000051D0000051F00000521000005230000052500000527000005290000052B0000052D0000052F00000561 +00000562000005630000056400000565000005660000056700000568000005690000056A0000056B0000056C0000056D +0000056E0000056F00000570000005710000057200000573000005740000057500000576000005770000057800000579 +0000057A0000057B0000057C0000057D0000057E0000057F000005800000058100000582000005830000058400000585 +0000058600002D0000002D0100002D0200002D0300002D0400002D0500002D0600002D0700002D0800002D0900002D0A +00002D0B00002D0C00002D0D00002D0E00002D0F00002D1000002D1100002D1200002D1300002D1400002D1500002D16 +00002D1700002D1800002D1900002D1A00002D1B00002D1C00002D1D00002D1E00002D1F00002D2000002D2100002D22 +00002D2300002D2400002D2500002D2700002D2D0000AB700000AB710000AB720000AB730000AB740000AB750000AB76 +0000AB770000AB780000AB790000AB7A0000AB7B0000AB7C0000AB7D0000AB7E0000AB7F0000AB800000AB810000AB82 +0000AB830000AB840000AB850000AB860000AB870000AB880000AB890000AB8A0000AB8B0000AB8C0000AB8D0000AB8E +0000AB8F0000AB900000AB910000AB920000AB930000AB940000AB950000AB960000AB970000AB980000AB990000AB9A +0000AB9B0000AB9C0000AB9D0000AB9E0000AB9F0000ABA00000ABA10000ABA20000ABA30000ABA40000ABA50000ABA6 +0000ABA70000ABA80000ABA90000ABAA0000ABAB0000ABAC0000ABAD0000ABAE0000ABAF0000ABB00000ABB10000ABB2 +0000ABB30000ABB40000ABB50000ABB60000ABB70000ABB80000ABB90000ABBA0000ABBB0000ABBC0000ABBD0000ABBE +0000ABBF000013F8000013F9000013FA000013FB000013FC000013FD000010D0000010D1000010D2000010D3000010D4 +000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 +000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC +000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 +000010F9000010FA000010FD000010FE000010FF00001E0100001E0300001E0500001E0700001E0900001E0B00001E0D +00001E0F00001E1100001E1300001E1500001E1700001E1900001E1B00001E1D00001E1F00001E2100001E2300001E25 +00001E2700001E2900001E2B00001E2D00001E2F00001E3100001E3300001E3500001E3700001E3900001E3B00001E3D +00001E3F00001E4100001E4300001E4500001E4700001E4900001E4B00001E4D00001E4F00001E5100001E5300001E55 +00001E5700001E5900001E5B00001E5D00001E5F00001E6100001E6300001E6500001E6700001E6900001E6B00001E6D +00001E6F00001E7100001E7300001E7500001E7700001E7900001E7B00001E7D00001E7F00001E8100001E8300001E85 +00001E8700001E8900001E8B00001E8D00001E8F00001E9100001E9300001E95000000DF00001EA100001EA300001EA5 +00001EA700001EA900001EAB00001EAD00001EAF00001EB100001EB300001EB500001EB700001EB900001EBB00001EBD +00001EBF00001EC100001EC300001EC500001EC700001EC900001ECB00001ECD00001ECF00001ED100001ED300001ED5 +00001ED700001ED900001EDB00001EDD00001EDF00001EE100001EE300001EE500001EE700001EE900001EEB00001EED +00001EEF00001EF100001EF300001EF500001EF700001EF900001EFB00001EFD00001EFF00001F0000001F0100001F02 +00001F0300001F0400001F0500001F0600001F0700001F1000001F1100001F1200001F1300001F1400001F1500001F20 +00001F2100001F2200001F2300001F2400001F2500001F2600001F2700001F3000001F3100001F3200001F3300001F34 +00001F3500001F3600001F3700001F4000001F4100001F4200001F4300001F4400001F4500001F5100001F5300001F55 +00001F5700001F6000001F6100001F6200001F6300001F6400001F6500001F6600001F6700001F8000001F8100001F82 +00001F8300001F8400001F8500001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F96 +00001F9700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB000001FB100001F70 +00001F7100001FB300001F7200001F7300001F7400001F7500001FC300001FD000001FD100001F7600001F7700001FE0 +00001FE100001F7A00001F7B00001FE500001F7800001F7900001F7C00001F7D00001FF3000003C90000006B000000E5 +0000214E000021700000217100002172000021730000217400002175000021760000217700002178000021790000217A +0000217B0000217C0000217D0000217E0000217F00002184000024D0000024D1000024D2000024D3000024D4000024D5 +000024D6000024D7000024D8000024D9000024DA000024DB000024DC000024DD000024DE000024DF000024E0000024E1 +000024E2000024E3000024E4000024E5000024E6000024E7000024E8000024E900002C3000002C3100002C3200002C33 +00002C3400002C3500002C3600002C3700002C3800002C3900002C3A00002C3B00002C3C00002C3D00002C3E00002C3F +00002C4000002C4100002C4200002C4300002C4400002C4500002C4600002C4700002C4800002C4900002C4A00002C4B +00002C4C00002C4D00002C4E00002C4F00002C5000002C5100002C5200002C5300002C5400002C5500002C5600002C57 +00002C5800002C5900002C5A00002C5B00002C5C00002C5D00002C5E00002C5F00002C610000026B00001D7D0000027D +00002C6800002C6A00002C6C0000025100000271000002500000025200002C7300002C760000023F0000024000002C81 +00002C8300002C8500002C8700002C8900002C8B00002C8D00002C8F00002C9100002C9300002C9500002C9700002C99 +00002C9B00002C9D00002C9F00002CA100002CA300002CA500002CA700002CA900002CAB00002CAD00002CAF00002CB1 +00002CB300002CB500002CB700002CB900002CBB00002CBD00002CBF00002CC100002CC300002CC500002CC700002CC9 +00002CCB00002CCD00002CCF00002CD100002CD300002CD500002CD700002CD900002CDB00002CDD00002CDF00002CE1 +00002CE300002CEC00002CEE00002CF30000A6410000A6430000A6450000A6470000A6490000A64B0000A64D0000A64F +0000A6510000A6530000A6550000A6570000A6590000A65B0000A65D0000A65F0000A6610000A6630000A6650000A667 +0000A6690000A66B0000A66D0000A6810000A6830000A6850000A6870000A6890000A68B0000A68D0000A68F0000A691 +0000A6930000A6950000A6970000A6990000A69B0000A7230000A7250000A7270000A7290000A72B0000A72D0000A72F +0000A7330000A7350000A7370000A7390000A73B0000A73D0000A73F0000A7410000A7430000A7450000A7470000A749 +0000A74B0000A74D0000A74F0000A7510000A7530000A7550000A7570000A7590000A75B0000A75D0000A75F0000A761 +0000A7630000A7650000A7670000A7690000A76B0000A76D0000A76F0000A77A0000A77C00001D790000A77F0000A781 +0000A7830000A7850000A7870000A78C000002650000A7910000A7930000A7970000A7990000A79B0000A79D0000A79F +0000A7A10000A7A30000A7A50000A7A70000A7A9000002660000025C000002610000026C0000026A0000029E00000287 +0000029D0000AB530000A7B50000A7B70000A7B90000A7BB0000A7BD0000A7BF0000A7C10000A7C30000A79400000282 +00001D8E0000A7C80000A7CA0000A7D10000A7D70000A7D90000A7F60000FF410000FF420000FF430000FF440000FF45 +0000FF460000FF470000FF480000FF490000FF4A0000FF4B0000FF4C0000FF4D0000FF4E0000FF4F0000FF500000FF51 +0000FF520000FF530000FF540000FF550000FF560000FF570000FF580000FF590000FF5A00010428000104290001042A +0001042B0001042C0001042D0001042E0001042F00010430000104310001043200010433000104340001043500010436 +0001043700010438000104390001043A0001043B0001043C0001043D0001043E0001043F000104400001044100010442 +000104430001044400010445000104460001044700010448000104490001044A0001044B0001044C0001044D0001044E +0001044F000104D8000104D9000104DA000104DB000104DC000104DD000104DE000104DF000104E0000104E1000104E2 +000104E3000104E4000104E5000104E6000104E7000104E8000104E9000104EA000104EB000104EC000104ED000104EE +000104EF000104F0000104F1000104F2000104F3000104F4000104F5000104F6000104F7000104F8000104F9000104FA +000104FB0001059700010598000105990001059A0001059B0001059C0001059D0001059E0001059F000105A0000105A1 +000105A3000105A4000105A5000105A6000105A7000105A8000105A9000105AA000105AB000105AC000105AD000105AE +000105AF000105B0000105B1000105B3000105B4000105B5000105B6000105B7000105B8000105B9000105BB000105BC +00010CC000010CC100010CC200010CC300010CC400010CC500010CC600010CC700010CC800010CC900010CCA00010CCB +00010CCC00010CCD00010CCE00010CCF00010CD000010CD100010CD200010CD300010CD400010CD500010CD600010CD7 +00010CD800010CD900010CDA00010CDB00010CDC00010CDD00010CDE00010CDF00010CE000010CE100010CE200010CE3 +00010CE400010CE500010CE600010CE700010CE800010CE900010CEA00010CEB00010CEC00010CED00010CEE00010CEF +00010CF000010CF100010CF2000118C0000118C1000118C2000118C3000118C4000118C5000118C6000118C7000118C8 +000118C9000118CA000118CB000118CC000118CD000118CE000118CF000118D0000118D1000118D2000118D3000118D4 +000118D5000118D6000118D7000118D8000118D9000118DA000118DB000118DC000118DD000118DE000118DF00016E60 +00016E6100016E6200016E6300016E6400016E6500016E6600016E6700016E6800016E6900016E6A00016E6B00016E6C +00016E6D00016E6E00016E6F00016E7000016E7100016E7200016E7300016E7400016E7500016E7600016E7700016E78 +00016E7900016E7A00016E7B00016E7C00016E7D00016E7E00016E7F0001E9220001E9230001E9240001E9250001E926 +0001E9270001E9280001E9290001E92A0001E92B0001E92C0001E92D0001E92E0001E92F0001E9300001E9310001E932 +0001E9330001E9340001E9350001E9360001E9370001E9380001E9390001E93A0001E93B0001E93C0001E93D0001E93E +0001E93F0001E9400001E9410001E9420001E943000000DF02000069000003070000FB000000FB010000FB020000FB03 +0000FB040000FB050000FB06000005870000FB130000FB140000FB150000FB160000FB170000014900000390000003B0 +000001F000001E9600001E9700001E9800001E9900001E9A00001F5000001F5200001F5400001F5600001FB600001FC6 +00001FD200001FD300001FD600001FD700001FE200001FE300001FE400001FE600001FE700001FF600001F8000001F81 +00001F8200001F8300001F8400001F8500001F8600001F8700001F8000001F8100001F8200001F8300001F8400001F85 +00001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F9600001F9700001F9000001F91 +00001F9200001F9300001F9400001F9500001F9600001F9700001FA000001FA100001FA200001FA300001FA400001FA5 +00001FA600001FA700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB300001FB3 +00001FC300001FC300001FF300001FF300001FB200001FB400001FC200001FC400001FF200001FF400001FB700001FC7 +00001FF7"; +return t; } -dstring toTitleTable() nothrow @nogc pure @safe { -static immutable dchar[1621] t = -"\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004A\u004B\u004C\u004D\u004E\u004F\u0050\u0051\u0052\u0053"d~ -"\u0054\u0055\u0056\u0057\u0058\u0059\u005A\u039C\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA"d~ -"\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE"d~ -"\u0178\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122"d~ -"\u0124\u0126\u0128\u012A\u012C\u012E\u0049\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A"d~ -"\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170"d~ -"\u0172\u0174\u0176\u0179\u017B\u017D\u0053\u0243\u0182\u0184\u0187\u018B\u0191\u01F6\u0198\u023D\u0220\u01A0\u01A2"d~ -"\u01A4\u01A7\u01AC\u01AF\u01B3\u01B5\u01B8\u01BC\u01F7\u01C5\u01C5\u01C5\u01C8\u01C8\u01C8\u01CB\u01CB\u01CB\u01CD"d~ -"\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u018E\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F2\u01F2"d~ -"\u01F2\u01F4\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218"d~ -"\u021A\u021C\u021E\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023B\u2C7E\u2C7F\u0241\u0246\u0248\u024A"d~ -"\u024C\u024E\u2C6F\u2C6D\u2C70\u0181\u0186\u0189\u018A\u018F\u0190\uA7AB\u0193\uA7AC\u0194\uA78D\uA7AA\u0197\u0196"d~ -"\uA7AE\u2C62\uA7AD\u019C\u2C6E\u019D\u019F\u2C64\u01A6\uA7C5\u01A9\uA7B1\u01AE\u0244\u01B1\u01B2\u0245\u01B7\uA7B2"d~ -"\uA7B0\u0399\u0370\u0372\u0376\u03FD\u03FE\u03FF\u0386\u0388\u0389\u038A\u0391\u0392\u0393\u0394\u0395\u0396\u0397"d~ -"\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA"d~ -"\u03AB\u038C\u038E\u038F\u0392\u0398\u03A6\u03A0\u03CF\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA"d~ -"\u03EC\u03EE\u039A\u03A1\u03F9\u037F\u0395\u03F7\u03FA\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419"d~ -"\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C"d~ -"\u042D\u042E\u042F\u0400\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u040D\u040E\u040F"d~ -"\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C"d~ -"\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2"d~ -"\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04C0\u04D0\u04D2\u04D4\u04D6\u04D8"d~ -"\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE"d~ -"\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524"d~ -"\u0526\u0528\u052A\u052C\u052E\u0531\u0532\u0533\u0534\u0535\u0536\u0537\u0538\u0539\u053A\u053B\u053C\u053D\u053E"d~ -"\u053F\u0540\u0541\u0542\u0543\u0544\u0545\u0546\u0547\u0548\u0549\u054A\u054B\u054C\u054D\u054E\u054F\u0550\u0551"d~ -"\u0552\u0553\u0554\u0555\u0556\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD"d~ -"\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0"d~ -"\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u10F7\u10F8\u10F9\u10FA\u10FD\u10FE\u10FF\u13F0\u13F1\u13F2\u13F3\u13F4\u13F5"d~ -"\u0412\u0414\u041E\u0421\u0422\u0422\u042A\u0462\uA64A\uA77D\u2C63\uA7C6\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C"d~ -"\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32"d~ -"\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58"d~ -"\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E"d~ -"\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E60\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC"d~ -"\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2"d~ -"\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8"d~ -"\u1EFA\u1EFC\u1EFE\u1F08\u1F09\u1F0A\u1F0B\u1F0C\u1F0D\u1F0E\u1F0F\u1F18\u1F19\u1F1A\u1F1B\u1F1C\u1F1D\u1F28\u1F29"d~ -"\u1F2A\u1F2B\u1F2C\u1F2D\u1F2E\u1F2F\u1F38\u1F39\u1F3A\u1F3B\u1F3C\u1F3D\u1F3E\u1F3F\u1F48\u1F49\u1F4A\u1F4B\u1F4C"d~ -"\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68\u1F69\u1F6A\u1F6B\u1F6C\u1F6D\u1F6E\u1F6F\u1FBA\u1FBB\u1FC8\u1FC9\u1FCA\u1FCB"d~ -"\u1FDA\u1FDB\u1FF8\u1FF9\u1FEA\u1FEB\u1FFA\u1FFB\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A"d~ -"\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FB8\u1FB9\u1FBC\u0399\u1FCC\u1FD8"d~ -"\u1FD9\u1FE8\u1FE9\u1FEC\u1FFC\u2132\u2160\u2161\u2162\u2163\u2164\u2165\u2166\u2167\u2168\u2169\u216A\u216B\u216C"d~ -"\u216D\u216E\u216F\u2183\u24B6\u24B7\u24B8\u24B9\u24BA\u24BB\u24BC\u24BD\u24BE\u24BF\u24C0\u24C1\u24C2\u24C3\u24C4"d~ -"\u24C5\u24C6\u24C7\u24C8\u24C9\u24CA\u24CB\u24CC\u24CD\u24CE\u24CF\u2C00\u2C01\u2C02\u2C03\u2C04\u2C05\u2C06\u2C07"d~ -"\u2C08\u2C09\u2C0A\u2C0B\u2C0C\u2C0D\u2C0E\u2C0F\u2C10\u2C11\u2C12\u2C13\u2C14\u2C15\u2C16\u2C17\u2C18\u2C19\u2C1A"d~ -"\u2C1B\u2C1C\u2C1D\u2C1E\u2C1F\u2C20\u2C21\u2C22\u2C23\u2C24\u2C25\u2C26\u2C27\u2C28\u2C29\u2C2A\u2C2B\u2C2C\u2C2D"d~ -"\u2C2E\u2C2F\u2C60\u023A\u023E\u2C67\u2C69\u2C6B\u2C72\u2C75\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90"d~ -"\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6"d~ -"\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC"d~ -"\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\u10A0\u10A1\u10A2\u10A3\u10A4\u10A5\u10A6\u10A7\u10A8\u10A9\u10AA\u10AB\u10AC"d~ -"\u10AD\u10AE\u10AF\u10B0\u10B1\u10B2\u10B3\u10B4\u10B5\u10B6\u10B7\u10B8\u10B9\u10BA\u10BB\u10BC\u10BD\u10BE\u10BF"d~ -"\u10C0\u10C1\u10C2\u10C3\u10C4\u10C5\u10C7\u10CD\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654"d~ -"\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C"d~ -"\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A"d~ -"\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760"d~ -"\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77E\uA780\uA782\uA784\uA786\uA78B\uA790\uA792\uA7C4\uA796"d~ -"\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7B4\uA7B6\uA7B8\uA7BA\uA7BC\uA7BE\uA7C0\uA7C2\uA7C7\uA7C9"d~ -"\uA7D0\uA7D6\uA7D8\uA7F5\uA7B3\u13A0\u13A1\u13A2\u13A3\u13A4\u13A5\u13A6\u13A7\u13A8\u13A9\u13AA\u13AB\u13AC\u13AD"d~ -"\u13AE\u13AF\u13B0\u13B1\u13B2\u13B3\u13B4\u13B5\u13B6\u13B7\u13B8\u13B9\u13BA\u13BB\u13BC\u13BD\u13BE\u13BF\u13C0"d~ -"\u13C1\u13C2\u13C3\u13C4\u13C5\u13C6\u13C7\u13C8\u13C9\u13CA\u13CB\u13CC\u13CD\u13CE\u13CF\u13D0\u13D1\u13D2\u13D3"d~ -"\u13D4\u13D5\u13D6\u13D7\u13D8\u13D9\u13DA\u13DB\u13DC\u13DD\u13DE\u13DF\u13E0\u13E1\u13E2\u13E3\u13E4\u13E5\u13E6"d~ -"\u13E7\u13E8\u13E9\u13EA\u13EB\u13EC\u13ED\u13EE\u13EF\uFF21\uFF22\uFF23\uFF24\uFF25\uFF26\uFF27\uFF28\uFF29\uFF2A"d~ -"\uFF2B\uFF2C\uFF2D\uFF2E\uFF2F\uFF30\uFF31\uFF32\uFF33\uFF34\uFF35\uFF36\uFF37\uFF38\uFF39\uFF3A\U00010400\U00010401"d~ -"\U00010402\U00010403\U00010404\U00010405\U00010406\U00010407\U00010408\U00010409\U0001040A\U0001040B\U0001040C"d~ -"\U0001040D\U0001040E\U0001040F\U00010410\U00010411\U00010412\U00010413\U00010414\U00010415\U00010416\U00010417"d~ -"\U00010418\U00010419\U0001041A\U0001041B\U0001041C\U0001041D\U0001041E\U0001041F\U00010420\U00010421\U00010422"d~ -"\U00010423\U00010424\U00010425\U00010426\U00010427\U000104B0\U000104B1\U000104B2\U000104B3\U000104B4\U000104B5"d~ -"\U000104B6\U000104B7\U000104B8\U000104B9\U000104BA\U000104BB\U000104BC\U000104BD\U000104BE\U000104BF\U000104C0"d~ -"\U000104C1\U000104C2\U000104C3\U000104C4\U000104C5\U000104C6\U000104C7\U000104C8\U000104C9\U000104CA\U000104CB"d~ -"\U000104CC\U000104CD\U000104CE\U000104CF\U000104D0\U000104D1\U000104D2\U000104D3\U00010570\U00010571\U00010572"d~ -"\U00010573\U00010574\U00010575\U00010576\U00010577\U00010578\U00010579\U0001057A\U0001057C\U0001057D\U0001057E"d~ -"\U0001057F\U00010580\U00010581\U00010582\U00010583\U00010584\U00010585\U00010586\U00010587\U00010588\U00010589"d~ -"\U0001058A\U0001058C\U0001058D\U0001058E\U0001058F\U00010590\U00010591\U00010592\U00010594\U00010595\U00010C80"d~ -"\U00010C81\U00010C82\U00010C83\U00010C84\U00010C85\U00010C86\U00010C87\U00010C88\U00010C89\U00010C8A\U00010C8B"d~ -"\U00010C8C\U00010C8D\U00010C8E\U00010C8F\U00010C90\U00010C91\U00010C92\U00010C93\U00010C94\U00010C95\U00010C96"d~ -"\U00010C97\U00010C98\U00010C99\U00010C9A\U00010C9B\U00010C9C\U00010C9D\U00010C9E\U00010C9F\U00010CA0\U00010CA1"d~ -"\U00010CA2\U00010CA3\U00010CA4\U00010CA5\U00010CA6\U00010CA7\U00010CA8\U00010CA9\U00010CAA\U00010CAB\U00010CAC"d~ -"\U00010CAD\U00010CAE\U00010CAF\U00010CB0\U00010CB1\U00010CB2\U000118A0\U000118A1\U000118A2\U000118A3\U000118A4"d~ -"\U000118A5\U000118A6\U000118A7\U000118A8\U000118A9\U000118AA\U000118AB\U000118AC\U000118AD\U000118AE\U000118AF"d~ -"\U000118B0\U000118B1\U000118B2\U000118B3\U000118B4\U000118B5\U000118B6\U000118B7\U000118B8\U000118B9\U000118BA"d~ -"\U000118BB\U000118BC\U000118BD\U000118BE\U000118BF\U00016E40\U00016E41\U00016E42\U00016E43\U00016E44\U00016E45"d~ -"\U00016E46\U00016E47\U00016E48\U00016E49\U00016E4A\U00016E4B\U00016E4C\U00016E4D\U00016E4E\U00016E4F\U00016E50"d~ -"\U00016E51\U00016E52\U00016E53\U00016E54\U00016E55\U00016E56\U00016E57\U00016E58\U00016E59\U00016E5A\U00016E5B"d~ -"\U00016E5C\U00016E5D\U00016E5E\U00016E5F\U0001E900\U0001E901\U0001E902\U0001E903\U0001E904\U0001E905\U0001E906"d~ -"\U0001E907\U0001E908\U0001E909\U0001E90A\U0001E90B\U0001E90C\U0001E90D\U0001E90E\U0001E90F\U0001E910\U0001E911"d~ -"\U0001E912\U0001E913\U0001E914\U0001E915\U0001E916\U0001E917\U0001E918\U0001E919\U0001E91A\U0001E91B\U0001E91C"d~ -"\U0001E91D\U0001E91E\U0001E91F\U0001E920\U0001E921"d~cast(dchar) 0x02000053~"\u0073\u0130"d~cast(dchar) 0x02000046~""d~ -"\u0066"d~cast(dchar) 0x02000046~"\u0069"d~cast(dchar) 0x02000046~"\u006C"d~cast(dchar) 0x03000046~"\u0066\u0069"d~cast(dchar) 0x03000046~""d~ -"\u0066\u006C"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000053~"\u0074"d~cast(dchar) 0x02000535~"\u0582"d~cast(dchar) 0x02000544~""d~ -"\u0576"d~cast(dchar) 0x02000544~"\u0565"d~cast(dchar) 0x02000544~"\u056B"d~cast(dchar) 0x0200054E~"\u0576"d~cast(dchar) 0x02000544~""d~ -"\u056D"d~cast(dchar) 0x020002BC~"\u004E"d~cast(dchar) 0x03000399~"\u0308\u0301"d~cast(dchar) 0x030003A5~"\u0308\u0301"d~ -""d~cast(dchar) 0x0200004A~"\u030C"d~cast(dchar) 0x02000048~"\u0331"d~cast(dchar) 0x02000054~"\u0308"d~cast(dchar) 0x02000057~""d~ -"\u030A"d~cast(dchar) 0x02000059~"\u030A"d~cast(dchar) 0x02000041~"\u02BE"d~cast(dchar) 0x020003A5~"\u0313"d~cast(dchar) 0x030003A5~""d~ -"\u0313\u0300"d~cast(dchar) 0x030003A5~"\u0313\u0301"d~cast(dchar) 0x030003A5~"\u0313\u0342"d~cast(dchar) 0x02000391~""d~ -"\u0342"d~cast(dchar) 0x02000397~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0300"d~cast(dchar) 0x03000399~"\u0308\u0301"d~ -""d~cast(dchar) 0x02000399~"\u0342"d~cast(dchar) 0x03000399~"\u0308\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0300"d~cast(dchar) 0x030003A5~""d~ -"\u0308\u0301"d~cast(dchar) 0x020003A1~"\u0313"d~cast(dchar) 0x020003A5~"\u0342"d~cast(dchar) 0x030003A5~"\u0308\u0342"d~ -""d~cast(dchar) 0x020003A9~"\u0342\u1F88\u1F89\u1F8A\u1F8B\u1F8C\u1F8D\u1F8E\u1F8F\u1F88\u1F89\u1F8A\u1F8B\u1F8C"d~ -"\u1F8D\u1F8E\u1F8F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F\u1F98\u1F99\u1F9A\u1F9B\u1F9C\u1F9D\u1F9E\u1F9F"d~ -"\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FA8\u1FA9\u1FAA\u1FAB\u1FAC\u1FAD\u1FAE\u1FAF\u1FBC\u1FBC\u1FCC"d~ -"\u1FCC\u1FFC\u1FFC"d~cast(dchar) 0x02001FBA~"\u0345"d~cast(dchar) 0x02000386~"\u0345"d~cast(dchar) 0x02001FCA~"\u0345"d~ -""d~cast(dchar) 0x02000389~"\u0345"d~cast(dchar) 0x02001FFA~"\u0345"d~cast(dchar) 0x0200038F~"\u0345"d~cast(dchar) 0x03000391~""d~ -"\u0342\u0345"d~cast(dchar) 0x03000397~"\u0342\u0345"d~cast(dchar) 0x030003A9~"\u0342\u0345"d; -return t[]; +immutable(uint)[] toTitleTable() nothrow @nogc pure @safe { +static immutable uint[] t = +cast(immutable uint[]) x" +0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C +0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 +000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 +000000C9000000CA000000CB000000CC000000CD000000CE000000CF000000D0000000D1000000D2000000D3000000D4 +000000D5000000D6000000D8000000D9000000DA000000DB000000DC000000DD000000DE000001780000010000000102 +0000010400000106000001080000010A0000010C0000010E00000110000001120000011400000116000001180000011A +0000011C0000011E00000120000001220000012400000126000001280000012A0000012C0000012E0000004900000132 +0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C +0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 +00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 +000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C5000001C5 +000001C5000001C8000001C8000001C8000001CB000001CB000001CB000001CD000001CF000001D1000001D3000001D5 +000001D7000001D9000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC +000001EE000001F2000001F2000001F2000001F4000001F8000001FA000001FC000001FE000002000000020200000204 +00000206000002080000020A0000020C0000020E00000210000002120000021400000216000002180000021A0000021C +0000021E000002220000022400000226000002280000022A0000022C0000022E00000230000002320000023B00002C7E +00002C7F0000024100000246000002480000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186 +000001890000018A0000018F000001900000A7AB000001930000A7AC000001940000A78D0000A7AA0000019700000196 +0000A7AE00002C620000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1 +000001AE00000244000001B1000001B200000245000001B70000A7B20000A7B000000399000003700000037200000376 +000003FD000003FE000003FF0000038600000388000003890000038A0000039100000392000003930000039400000395 +000003960000039700000398000003990000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1 +000003A3000003A3000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E +0000038F0000039200000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2 +000003E4000003E6000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7 +000003FA000004100000041100000412000004130000041400000415000004160000041700000418000004190000041A +0000041B0000041C0000041D0000041E0000041F00000420000004210000042200000423000004240000042500000426 +0000042700000428000004290000042A0000042B0000042C0000042D0000042E0000042F000004000000040100000402 +000004030000040400000405000004060000040700000408000004090000040A0000040B0000040C0000040D0000040E +0000040F00000460000004620000046400000466000004680000046A0000046C0000046E000004700000047200000474 +00000476000004780000047A0000047C0000047E000004800000048A0000048C0000048E000004900000049200000494 +00000496000004980000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC +000004AE000004B0000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5 +000004C7000004C9000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC +000004DE000004E0000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4 +000004F6000004F8000004FA000004FC000004FE00000500000005020000050400000506000005080000050A0000050C +0000050E00000510000005120000051400000516000005180000051A0000051C0000051E000005200000052200000524 +00000526000005280000052A0000052C0000052E00000531000005320000053300000534000005350000053600000537 +00000538000005390000053A0000053B0000053C0000053D0000053E0000053F00000540000005410000054200000543 +0000054400000545000005460000054700000548000005490000054A0000054B0000054C0000054D0000054E0000054F +00000550000005510000055200000553000005540000055500000556000010D0000010D1000010D2000010D3000010D4 +000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 +000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC +000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 +000010F9000010FA000010FD000010FE000010FF000013F0000013F1000013F2000013F3000013F4000013F500000412 +000004140000041E0000042100000422000004220000042A000004620000A64A0000A77D00002C630000A7C600001E00 +00001E0200001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E18 +00001E1A00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E30 +00001E3200001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E48 +00001E4A00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E60 +00001E6200001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E78 +00001E7A00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E90 +00001E9200001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB0 +00001EB200001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC8 +00001ECA00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE0 +00001EE200001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF8 +00001EFA00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F18 +00001F1900001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E +00001F2F00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A +00001F4B00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C +00001F6D00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF8 +00001FF900001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E +00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA +00001FAB00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD9 +00001FE800001FE900001FEC00001FFC0000213200002160000021610000216200002163000021640000216500002166 +0000216700002168000021690000216A0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7 +000024B8000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3 +000024C4000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF +00002C0000002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B +00002C0C00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C17 +00002C1800002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C23 +00002C2400002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F +00002C600000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C86 +00002C8800002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E +00002CA000002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB6 +00002CB800002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE +00002CD000002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED +00002CF2000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA +000010AB000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6 +000010B7000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2 +000010C3000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C +0000A64E0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A664 +0000A6660000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E +0000A6900000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C +0000A72E0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A746 +0000A7480000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E +0000A7600000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A780 +0000A7820000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E +0000A7A00000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C0 +0000A7C20000A7C70000A7C90000A7D00000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3 +000013A4000013A5000013A6000013A7000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF +000013B0000013B1000013B2000013B3000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB +000013BC000013BD000013BE000013BF000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7 +000013C8000013C9000013CA000013CB000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3 +000013D4000013D5000013D6000013D7000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF +000013E0000013E1000013E2000013E3000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB +000013EC000013ED000013EE000013EF0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF28 +0000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF34 +0000FF350000FF360000FF370000FF380000FF390000FF3A000104000001040100010402000104030001040400010405 +000104060001040700010408000104090001040A0001040B0001040C0001040D0001040E0001040F0001041000010411 +00010412000104130001041400010415000104160001041700010418000104190001041A0001041B0001041C0001041D +0001041E0001041F0001042000010421000104220001042300010424000104250001042600010427000104B0000104B1 +000104B2000104B3000104B4000104B5000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD +000104BE000104BF000104C0000104C1000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9 +000104CA000104CB000104CC000104CD000104CE000104CF000104D0000104D1000104D2000104D30001057000010571 +00010572000105730001057400010575000105760001057700010578000105790001057A0001057C0001057D0001057E +0001057F000105800001058100010582000105830001058400010585000105860001058700010588000105890001058A +0001058C0001058D0001058E0001058F000105900001059100010592000105940001059500010C8000010C8100010C82 +00010C8300010C8400010C8500010C8600010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E +00010C8F00010C9000010C9100010C9200010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A +00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA6 +00010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2 +000118A0000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB +000118AC000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7 +000118B8000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E43 +00016E4400016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F +00016E5000016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B +00016E5C00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E907 +0001E9080001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E913 +0001E9140001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F +0001E9200001E92102000053000000730000013002000046000000660200004600000069020000460000006C03000046 +000000660000006903000046000000660000006C02000053000000740200005300000074020005350000058202000544 +000005760200054400000565020005440000056B0200054E00000576020005440000056D020002BC0000004E03000399 +0000030800000301030003A500000308000003010200004A0000030C0200004800000331020000540000030802000057 +0000030A020000590000030A02000041000002BE020003A500000313030003A50000031300000300030003A500000313 +00000301030003A500000313000003420200039100000342020003970000034203000399000003080000030003000399 +00000308000003010200039900000342030003990000030800000342030003A50000030800000300030003A500000308 +00000301020003A100000313020003A500000342030003A50000030800000342020003A90000034200001F8800001F89 +00001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F8800001F8900001F8A00001F8B00001F8C00001F8D +00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001F9800001F99 +00001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD +00001FAE00001FAF00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE00001FAF00001FBC00001FBC +00001FCC00001FCC00001FFC00001FFC02001FBA00000345020003860000034502001FCA000003450200038900000345 +02001FFA000003450200038F00000345030003910000034200000345030003970000034200000345030003A900000342 +00000345"; +return t; } } diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 30db2fee3d4..fd74589c388 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -1034,13 +1034,21 @@ void writeGraphemeTries(File sink) } /// Write a function that returns a dchar[] with data stored in `table` -void writeDstringTable(T:dchar)(File sink, string name, const T[] table) +void writeDstringTable(File sink, string name, const dchar[] table) { sink.writefln("dstring %s() nothrow @nogc pure @safe {\nstatic immutable dchar[%d] t =", name, table.length); sink.writeDstring(table); sink.writeln(";\nreturn t[];\n}"); } +/// Write a function that returns a uint[] with data stored in `table` +void writeUintTable(File sink, string name, const uint[] table) +{ + sink.writefln("immutable(uint)[] %s() nothrow @nogc pure @safe {\nstatic immutable uint[] t =", name, ); + sink.writeUintArray(table); + sink.writeln(";\nreturn t;\n}"); +} + void writeCaseCoversion(File sink) { { @@ -1063,10 +1071,9 @@ void writeCaseCoversion(File sink) writeBest3Level(sink, "toTitleSimpleIndex", toTitleSimpleIndex, ushort.max); } - - writeDstringTable(sink, "toUpperTable", toUpperTab); - writeDstringTable(sink, "toLowerTable", toLowerTab); - writeDstringTable(sink, "toTitleTable", toTitleTab); + writeUintTable(sink, "toUpperTable", toUpperTab); + writeUintTable(sink, "toLowerTable", toLowerTab); + writeUintTable(sink, "toTitleTable", toTitleTab); } void writeDecomposition(File sink) @@ -1124,8 +1131,8 @@ void writeDecomposition(File sink) writeBest3Level(sink, "compatMapping", mappingCompat, cast(ushort) 0); writeBest3Level(sink, "canonMapping", mappingCanon, cast(ushort) 0); - writeDstringTable(sink, "decompCanonTable", cast(const(uint)[]) decompCanonFlat); - writeDstringTable(sink, "decompCompatTable", cast(const(uint)[]) decompCompatFlat); + writeDstringTable(sink, "decompCanonTable", decompCanonFlat); + writeDstringTable(sink, "decompCompatTable", decompCompatFlat); } void writeFunctions(File sink) @@ -1151,6 +1158,21 @@ void writeFunctions(File sink) } } +/// Write a `dchar[]` as hex string +void writeUintArray(T:dchar)(File sink, const T[] tab) +{ + size_t lineCount = 1; + sink.write("cast(immutable uint[]) x\""); + foreach (i, elem; tab) + { + if ((i % 12) == 0) + sink.write("\n"); + + sink.writef("%08X", elem); + } + sink.write("\""); +} + /// Write a `dchar[]` as a dstring ""d void writeDstring(T:dchar)(File sink, const T[] tab) { From 5ed3dc90163266861a9beda41488d3e91735d54f Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Fri, 2 Feb 2024 10:00:50 +0000 Subject: [PATCH 180/327] purge changelog --- changelog/is_forward_range_element.dd | 7 ------- changelog/makefiles.dd | 5 ----- 2 files changed, 12 deletions(-) delete mode 100644 changelog/is_forward_range_element.dd delete mode 100644 changelog/makefiles.dd diff --git a/changelog/is_forward_range_element.dd b/changelog/is_forward_range_element.dd deleted file mode 100644 index 128acf883c9..00000000000 --- a/changelog/is_forward_range_element.dd +++ /dev/null @@ -1,7 +0,0 @@ -isForwardRange now takes an optional element type. - -isForwardRange now has an optional 2nd template parameter that defaults -to void. If not void, it only evaluates to true if the range's element -type is the same type as this extra argument, modulo const. For -instance, `isForwardRange!(int[], const(int))` is true, but -`isForwardRange!(int[], string)` is false. \ No newline at end of file diff --git a/changelog/makefiles.dd b/changelog/makefiles.dd deleted file mode 100644 index 6fb38d7f4e1..00000000000 --- a/changelog/makefiles.dd +++ /dev/null @@ -1,5 +0,0 @@ -Makefiles cleanup - -The `{posix,win32,win64}.mak` Makefiles have been merged to a generic `Makefile`. `posix.mak` is kept as a deprecated forwarder for now. - -On Windows, you can/need to use the generic Makefile too - with a GNU make (and a git installation providing bash and GNU tools). Windows devs can finally exploit parallelism via `-j`! You may download a prebuilt zipped .exe from https://github.com/dlang/dmd/releases/download/nightly/gnumake-4.4-win64.zip. From ca9561b3892b0bb2df97c85235321df0eb313c3e Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sat, 10 Feb 2024 12:32:57 +0000 Subject: [PATCH 181/327] [std.algorithm.mutation] Improve `remove` docs Make examples runnable. Add 2 subheadings. Minor tweaks. Fix throwing example of tuple offset. --- std/algorithm/mutation.d | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/std/algorithm/mutation.d b/std/algorithm/mutation.d index 61b6a5e4eff..fbef28e5d56 100644 --- a/std/algorithm/mutation.d +++ b/std/algorithm/mutation.d @@ -1813,22 +1813,28 @@ range. For example, here is how to remove a single element from an array: +$(RUNNABLE_EXAMPLE ---- +import std.algorithm.mutation; string[] a = [ "a", "b", "c", "d" ]; a = a.remove(1); // remove element at offset 1 assert(a == [ "a", "c", "d"]); ---- +) Note that `remove` does not change the length of the original range directly; instead, it returns the shortened range. If its return value is not assigned to the original range, the original range will retain its original length, though its contents will have changed: +$(RUNNABLE_EXAMPLE ---- +import std.algorithm.mutation; int[] a = [ 3, 5, 7, 8 ]; assert(remove(a, 1) == [ 3, 7, 8 ]); assert(a == [ 3, 7, 8, 8 ]); ---- +) The element at offset `1` has been removed and the rest of the elements have shifted up to fill its place, however, the original array remains of the same @@ -1838,25 +1844,34 @@ invoked to rearrange elements, and on integers `move` simply copies the source to the destination. To replace `a` with the effect of the removal, simply assign the slice returned by `remove` to it, as shown in the first example. +$(H3 $(LNAME2 remove-multiple, Removing multiple elements)) + Multiple indices can be passed into `remove`. In that case, elements at the respective indices are all removed. The indices must be passed in increasing order, otherwise an exception occurs. +$(RUNNABLE_EXAMPLE ---- +import std.algorithm.mutation; int[] a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; assert(remove(a, 1, 3, 5) == [ 0, 2, 4, 6, 7, 8, 9, 10 ]); ---- +) -(Note that all indices refer to slots in the $(I original) array, not -in the array as it is being progressively shortened.) +Note that all indices refer to slots in the $(I original) array, not +in the array as it is being progressively shortened. -Tuples of two integral offsets can be used to remove an indices range: +Tuples of two integral offsets can be supplied to remove a range of indices: +$(RUNNABLE_EXAMPLE ---- +import std.algorithm.mutation, std.typecons; int[] a = [ 3, 4, 5, 6, 7]; -assert(remove(a, 1, tuple(1, 3), 9) == [ 3, 6, 7 ]); +// remove elements at indices 1 and 2 +assert(remove(a, tuple(1, 3)) == [ 3, 6, 7 ]); ---- +) The tuple passes in a range closed to the left and open to the right (consistent with built-in slices), e.g. `tuple(1, 3)` @@ -1865,22 +1880,31 @@ means indices `1` and `2` but not `3`. Finally, any combination of integral offsets and tuples composed of two integral offsets can be passed in: +$(RUNNABLE_EXAMPLE ---- +import std.algorithm.mutation, std.typecons; int[] a = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; -assert(remove(a, 1, tuple(3, 5), 9) == [ 0, 2, 5, 6, 7, 8, 10 ]); +a = remove(a, 1, tuple(3, 5), 9); +assert(a == [ 0, 2, 5, 6, 7, 8, 10 ]); ---- +) In this case, the slots at positions 1, 3, 4, and 9 are removed from the array. +$(H3 $(LNAME2 remove-moving, Moving strategy)) + If the need is to remove some elements in the range but the order of the remaining elements does not have to be preserved, you may want to pass `SwapStrategy.unstable` to `remove`. +$(RUNNABLE_EXAMPLE ---- +import std.algorithm.mutation; int[] a = [ 0, 1, 2, 3 ]; assert(remove!(SwapStrategy.unstable)(a, 1) == [ 0, 3, 2 ]); ---- +) In the case above, the element at slot `1` is removed, but replaced with the last element of the range. Taking advantage of the relaxation @@ -1888,7 +1912,7 @@ of the stability requirement, `remove` moved elements from the end of the array over the slots to be removed. This way there is less data movement to be done which improves the execution time of the function. -The function `remove` works on bidirectional ranges that have assignable +`remove` works on bidirectional ranges that have assignable lvalue elements. The moving strategy is (listed from fastest to slowest): $(UL @@ -1914,7 +1938,7 @@ Params: offset = which element(s) to remove Returns: - A range containing all of the elements of range with offset removed. + A range containing elements of `range` with 1 or more elements removed. */ Range remove (SwapStrategy s = SwapStrategy.stable, Range, Offset ...) From 720ac51ea123da95ea8fab65cbdab988484d83e6 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 10 Feb 2024 02:29:58 -0500 Subject: [PATCH 182/327] Skip leading empty ranges in roundRobin Previously, roundRobin would always attempt to fetch its first element from the first range passed to it, even if that range was empty. Fixes bugzilla issue 24384. --- std/range/package.d | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index c985015a7af..36bb4e6624c 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -2427,7 +2427,14 @@ if (Rs.length > 1 && allSatisfy!(isInputRange, staticMap!(Unqual, Rs))) } } - return Result(rs, 0); + size_t firstNonEmpty = size_t.max; + static foreach (i; 0 .. Rs.length) + { + if (firstNonEmpty == size_t.max && !rs[i].empty) + firstNonEmpty = i; + } + + return Result(rs, firstNonEmpty); } /// @@ -2489,6 +2496,14 @@ pure @safe nothrow unittest assert(equal(r, [ S(1), S(10), S(2), S(20) ])); } +// https://issues.dlang.org/show_bug.cgi?id=24384 +@safe unittest +{ + auto r = roundRobin("", "a"); + assert(!r.empty); + auto e = r.front; +} + /** Iterates a random-access range starting from a given point and progressively extending left and right from that point. If no initial From 42b8c65ccfd35c863f7cedfd20794a125615c49b Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 9 Feb 2024 21:50:14 -0800 Subject: [PATCH 183/327] CheckBy postblit should be scope --- std/algorithm/iteration.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/algorithm/iteration.d b/std/algorithm/iteration.d index ef1170600b3..1453d2b64b9 100644 --- a/std/algorithm/iteration.d +++ b/std/algorithm/iteration.d @@ -2027,7 +2027,7 @@ private struct ChunkByGroup(alias eq, Range, bool eqEquivalenceAssured) } // Cannot be a copy constructor due to https://issues.dlang.org/show_bug.cgi?id=22239 - this(this) @trusted + this(this) scope @trusted { import core.lifetime : emplace; // since mothership has to be in a union, we have to manually trigger @@ -2129,7 +2129,7 @@ if (isForwardRange!Range) } // Cannot be a copy constructor due to https://issues.dlang.org/show_bug.cgi?id=22239 - this(this) @trusted + this(this) scope @trusted { import core.lifetime : emplace; // since _impl has to be in a union, we have to manually trigger From c06255411a1a51b51aea24dd88bcf133f00c584e Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Wed, 14 Feb 2024 19:13:42 +0100 Subject: [PATCH 184/327] Build: Add option USE_IMPORTC=0 to switch back to compiling zlib with C compiler Wrt. Bugzilla Issue 24389. --- Makefile | 77 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index 53f5771d799..2e0295c3c18 100644 --- a/Makefile +++ b/Makefile @@ -78,6 +78,9 @@ else override PIC:= endif +# default to compiling the C parts (zlib) with DMD via importC; override with USE_IMPORTC=1/0 +USE_IMPORTC:=1 + # Configurable stuff that's rarely edited INSTALL_DIR = ../install DRUNTIME_PATH = $(DMD_DIR)/druntime @@ -110,18 +113,41 @@ else RUN = endif -# Set extra CFLAGS (for DMD - the zlib .c files are compiled via importC) -NODEFAULTLIB=-defaultlib= -debuglib= -CFLAGS=-P=-Ietc/c/zlib +# Set NODEFAULTLIB and CPPFLAGS (for the C preprocessor) +NODEFAULTLIB:=-defaultlib= -debuglib= +CPPFLAGS:= ifeq (,$(findstring win,$(OS))) - CFLAGS += -P=-DHAVE_UNISTD_H + CPPFLAGS := -DHAVE_UNISTD_H # Bundled with the system library on OSX, and doesn't work with >= MacOS 11 ifneq (osx,$(OS)) NODEFAULTLIB += -L-lpthread -L-lm endif else ifeq ($(MODEL),32omf) - CFLAGS += -P=-DNO_snprintf + CPPFLAGS := -DNO_snprintf + endif +endif + +# Set CC, CC_OUTFILEFLAG and CFLAGS unless using importC +ifneq ($(USE_IMPORTC),1) + CC := cc + CC_OUTFILEFLAG := -o + + ifeq ($(OS),win32wine) + CC := wine dmc.exe + CFLAGS := $(if $(findstring $(BUILD),debug),-g,-O) + else ifeq ($(MODEL),32omf) + CC := dmc + CFLAGS := $(if $(findstring $(BUILD),debug),-g,-O) + else ifeq ($(OS),windows) + CC := cl + CC_OUTFILEFLAG := /Fo + CFLAGS := /nologo /Zl /GS- $(if $(findstring $(BUILD),debug),/Z7,/O2) + else # Posix + CFLAGS := $(MODEL_FLAG) -fPIC -std=c11 $(if $(findstring $(BUILD),debug),-g,-O3) + ifeq (osx64,$(OS)$(MODEL)) + CFLAGS += --target=x86_64-darwin-apple # ARM cpu is not supported by dmd + endif endif endif @@ -268,16 +294,15 @@ ALL_D_FILES = $(addsuffix .d, $(STD_MODULES) $(EXTRA_MODULES_COMMON) \ $(EXTRA_MODULES_WIN32) $(EXTRA_MODULES_INTERNAL)) # C files to be part of the build -C_MODULES = $(addprefix etc/c/zlib/, adler32 compress crc32 deflate \ - gzclose gzlib gzread gzwrite infback inffast inflate inftrees trees uncompr zutil) - -OBJS = $(ROOT)/zlib$(DOTOBJ) - -# C files to be part of the build -C_MODULES = $(addprefix etc/c/zlib/, adler32 compress crc32 deflate \ +C_MODULES := $(addprefix etc/c/zlib/, adler32 compress crc32 deflate \ gzclose gzlib gzread gzwrite infback inffast inflate inftrees trees uncompr zutil) +C_FILES := $(addsuffix .c, $(C_MODULES)) -C_FILES = $(addsuffix .c, $(C_MODULES)) +ifeq ($(USE_IMPORTC),1) + C_OBJS := $(ROOT)/zlib$(DOTOBJ) +else + C_OBJS := $(addprefix $(ROOT)/, $(addsuffix $(DOTOBJ), $(C_MODULES))) +endif # build with shared library support (defaults to true on supported platforms) SHARED=$(if $(findstring $(OS),linux freebsd),1,) @@ -323,12 +348,18 @@ endif lib: $(LIB) dll: $(ROOT)/libphobos2.so -# compile zlib .c files via importC; the druntime dependency makes sure DMD has been built +ifeq ($(USE_IMPORTC),1) +# the druntime dependency makes sure DMD has been built $(ROOT)/zlib$(DOTOBJ): $(C_FILES) $(DRUNTIME) - $(DMD) -c $(DFLAGS) $(CFLAGS) -of$@ $(C_FILES) + $(DMD) -c $(DFLAGS) $(addprefix -P=,$(CPPFLAGS) -Ietc/c/zlib) -of$@ $(C_FILES) +else +$(ROOT)/%$(DOTOBJ): %.c + @[ -d $(dir $@) ] || mkdir -p $(dir $@) || [ -d $(dir $@) ] + $(CC) -c $(CFLAGS) $(CPPFLAGS) $< $(CC_OUTFILEFLAG)$@ +endif -$(LIB): $(ROOT)/zlib$(DOTOBJ) $(ALL_D_FILES) $(DRUNTIME) - $(DMD) $(DFLAGS) -lib -of$@ $(DRUNTIME) $(D_FILES) $(OBJS) +$(LIB): $(C_OBJS) $(ALL_D_FILES) $(DRUNTIME) + $(DMD) $(DFLAGS) -lib -of$@ $(DRUNTIME) $(D_FILES) $(C_OBJS) $(ROOT)/libphobos2.so: $(ROOT)/$(SONAME) ln -sf $(notdir $(LIBSO)) $@ @@ -337,8 +368,8 @@ $(ROOT)/$(SONAME): $(LIBSO) ln -sf $(notdir $(LIBSO)) $@ $(LIBSO): override PIC:=-fPIC -$(LIBSO): $(OBJS) $(ALL_D_FILES) $(DRUNTIMESO) - $(DMD) $(DFLAGS) -shared $(NODEFAULTLIB) -of$@ -L-soname=$(SONAME) $(DRUNTIMESO) $(LINKDL) $(D_FILES) $(OBJS) +$(LIBSO): $(C_OBJS) $(ALL_D_FILES) $(DRUNTIMESO) + $(DMD) $(DFLAGS) -shared $(NODEFAULTLIB) -of$@ -L-soname=$(SONAME) $(DRUNTIMESO) $(LINKDL) $(D_FILES) $(C_OBJS) ifeq (osx,$(OS)) # Build fat library that combines the 32 bit and the 64 bit libraries @@ -379,8 +410,8 @@ ifneq (1,$(SHARED)) $(UT_D_OBJS): $(DRUNTIME) -$(ROOT)/unittest/test_runner$(DOTEXE): $(DRUNTIME_PATH)/src/test_runner.d $(UT_D_OBJS) $(OBJS) $(DRUNTIME) - $(DMD) $(DFLAGS) $(UDFLAGS) -of$@ $(DRUNTIME_PATH)/src/test_runner.d $(UT_D_OBJS) $(OBJS) $(DRUNTIME) $(LINKDL) $(NODEFAULTLIB) +$(ROOT)/unittest/test_runner$(DOTEXE): $(DRUNTIME_PATH)/src/test_runner.d $(UT_D_OBJS) $(C_OBJS) $(DRUNTIME) + $(DMD) $(DFLAGS) $(UDFLAGS) -of$@ $(DRUNTIME_PATH)/src/test_runner.d $(UT_D_OBJS) $(C_OBJS) $(DRUNTIME) $(LINKDL) $(NODEFAULTLIB) else @@ -389,8 +420,8 @@ UT_LIBSO:=$(ROOT)/unittest/libphobos2-ut.so $(UT_D_OBJS): $(DRUNTIMESO) $(UT_LIBSO): override PIC:=-fPIC -$(UT_LIBSO): $(UT_D_OBJS) $(OBJS) $(DRUNTIMESO) - $(DMD) $(DFLAGS) -shared $(UDFLAGS) -of$@ $(UT_D_OBJS) $(OBJS) $(DRUNTIMESO) $(LINKDL) $(NODEFAULTLIB) +$(UT_LIBSO): $(UT_D_OBJS) $(C_OBJS) $(DRUNTIMESO) + $(DMD) $(DFLAGS) -shared $(UDFLAGS) -of$@ $(UT_D_OBJS) $(C_OBJS) $(DRUNTIMESO) $(LINKDL) $(NODEFAULTLIB) $(ROOT)/unittest/test_runner$(DOTEXE): $(DRUNTIME_PATH)/src/test_runner.d $(UT_LIBSO) $(DMD) $(DFLAGS) -of$@ $< -L$(UT_LIBSO) $(NODEFAULTLIB) From 82da4f114d541bc987b1dc8f58e2c37eede25dad Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 10 Feb 2024 01:28:28 -0500 Subject: [PATCH 185/327] Allow assignment of std.range.only elements This allows the ranges returned by only to be used in algorithms that require assignable elements, such as reverse, sort, and transposed. Fixes bugzilla issue 24382. --- std/range/package.d | 98 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/std/range/package.d b/std/range/package.d index 36bb4e6624c..2033e2e7ba5 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -10182,10 +10182,18 @@ public: private struct OnlyResult(Values...) if (Values.length > 1) { + import std.meta : ApplyRight; + import std.traits : isAssignable; + private enum arity = Values.length; private alias UnqualValues = staticMap!(Unqual, Values); + private enum canAssignElements = allSatisfy!( + ApplyRight!(isAssignable, CommonType!Values), + Values + ); + private this(return scope ref Values values) { ref @trusted unqual(T)(ref T x){return cast() x;} @@ -10210,6 +10218,15 @@ if (Values.length > 1) return this[0]; } + static if (canAssignElements) + { + void front(CommonType!Values value) @property + { + assert(!empty, "Attempting to assign the front of an empty Only range"); + this[0] = value; + } + } + void popFront() { assert(!empty, "Attempting to popFront an empty Only range"); @@ -10222,6 +10239,15 @@ if (Values.length > 1) return this[$ - 1]; } + static if (canAssignElements) + { + void back(CommonType!Values value) @property + { + assert(!empty, "Attempting to assign the back of an empty Only range"); + this[$ - 1] = value; + } + } + void popBack() { assert(!empty, "Attempting to popBack an empty Only range"); @@ -10251,6 +10277,18 @@ if (Values.length > 1) return cast(T) values[i]; } + static if (canAssignElements) + { + void opIndexAssign(CommonType!Values value, size_t idx) + { + assert(idx < length, "Attempting to assign to an out of bounds index of an Only range"); + final switch (frontIndex + idx) + static foreach (i; 0 .. Values.length) + case i: + values[i] = value; + } + } + OnlyResult opSlice() { return this; @@ -10294,16 +10332,34 @@ if (Values.length > 1) // Specialize for single-element results private struct OnlyResult(T) { + import std.traits : isAssignable; + @property T front() { assert(!empty, "Attempting to fetch the front of an empty Only range"); return fetchFront(); } + static if (isAssignable!T) + { + @property void front(T value) + { + assert(!empty, "Attempting to assign the front of an empty Only range"); + assignFront(value); + } + } @property T back() { assert(!empty, "Attempting to fetch the back of an empty Only range"); return fetchFront(); } + static if (isAssignable!T) + { + @property void back(T value) + { + assert(!empty, "Attempting to assign the front of an empty Only range"); + assignFront(value); + } + } @property bool empty() const { return _empty; } @property size_t length() const { return !_empty; } @property auto save() { return this; } @@ -10334,6 +10390,15 @@ private struct OnlyResult(T) return fetchFront(); } + static if (isAssignable!T) + { + void opIndexAssign(T value, size_t i) + { + assert(!_empty && i == 0, "Attempting to assign an out of bounds index of an Only range"); + assignFront(value); + } + } + OnlyResult opSlice() { return this; @@ -10363,6 +10428,13 @@ private struct OnlyResult(T) { return *cast(T*)&_value; } + static if (isAssignable!T) + { + private @trusted void assignFront(T newValue) + { + *cast(T*) &_value = newValue; + } + } } /** @@ -10644,6 +10716,32 @@ auto only()() auto r1 = arr.chain(x.only, only(x, x)); } +// https://issues.dlang.org/show_bug.cgi?id=24382 +@safe unittest +{ + auto r1 = only(123); + r1.front = 456; + r1.back = 456; + r1[0] = 456; + + auto r2 = only(123, 456); + r2.front = 789; + r2.back = 789; + r2[0] = 789; + + auto r3 = only(1.23, 456); + // Can't assign double to int + static assert(!__traits(compiles, r3.front = 7.89)); + static assert(!__traits(compiles, r3.back = 7.89)); + // Workaround https://issues.dlang.org/show_bug.cgi?id=24383 + static assert(!__traits(compiles, () { r3[0] = 7.89; })); + // Can't assign type other than element type (even if compatible) + static assert(!__traits(compiles, r3.front = 789)); + static assert(!__traits(compiles, r3.back = 789)); + // Workaround https://issues.dlang.org/show_bug.cgi?id=24383 + static assert(!__traits(compiles, () { r3[0] = 789; })); +} + /** Iterate over `range` with an attached index variable. From 5478868465ae1ad743ff76ac5bb92691463ffec5 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Thu, 15 Feb 2024 08:43:26 -0500 Subject: [PATCH 186/327] Document range capabilities of only() result --- std/range/package.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/std/range/package.d b/std/range/package.d index 2033e2e7ba5..30f6ffb9f44 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -10455,6 +10455,9 @@ Params: Returns: A `RandomAccessRange` of the assembled values. + The returned range can be sliced. Its elements can be assigned to if every + type in `Values` supports assignment from the range's element type. + See_Also: $(LREF chain) to chain ranges */ auto only(Values...)(return scope Values values) From efaf83afdba7c1152291b80a953328514750a3c3 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Mon, 19 Feb 2024 01:47:44 +0100 Subject: [PATCH 187/327] gha: Update cross-platform-actions to v0.23.0 --- .github/workflows/main.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 820977b14d9..b580f597a92 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -81,21 +81,19 @@ jobs: include: - job_name: FreeBSD 13.2 x64 freebsd_version: '13.2' - - job_name: FreeBSD 12.4 x64 - freebsd_version: '12.4' name: ${{ matrix.job_name }} - runs-on: macos-latest + runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 with: fetch-depth: 50 - name: Run in VM - uses: cross-platform-actions/action@v0.21.1 + uses: cross-platform-actions/action@v0.23.0 with: operating_system: freebsd hypervisor: qemu - memory: 8G + memory: 12G sync_files: runner-to-vm version: ${{ matrix.freebsd_version }} shell: bash From 115b7f61a9ad5eb177510ff12eb6d9578d1e6100 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 20 Feb 2024 22:45:21 -0700 Subject: [PATCH 188/327] fix Bugzilla Issue 24403 - Nullable doesn't work with non-mutable types with a destructor This should make it so that a variable of type Nullable!T has the same behavior with regards to destruction as a variable of type T even when it's const, immutable, or shared. --- std/typecons.d | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/std/typecons.d b/std/typecons.d index 13ae2941296..5fac1c9cca4 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -3276,7 +3276,9 @@ struct Nullable(T) { if (!_isNull) { - destroy(_value.payload); + import std.traits : Unqual; + auto ptr = () @trusted { return cast(Unqual!T*) &_value.payload; }(); + destroy!false(*ptr); } } } @@ -4319,6 +4321,37 @@ auto nullable(T)(T t) assert(b.empty); } +// https://issues.dlang.org/show_bug.cgi?id=24403 +@safe unittest +{ + static bool destroyed; + static struct S { ~this() { destroyed = true; } } + + { + Nullable!S s = S.init; + destroyed = false; + } + assert(destroyed); + + { + Nullable!(const S) s = S.init; + destroyed = false; + } + assert(destroyed); + + { + Nullable!(immutable S) s = S.init; + destroyed = false; + } + assert(destroyed); + + { + Nullable!(shared S) s = S.init; + destroyed = false; + } + assert(destroyed); +} + /** Just like `Nullable!T`, except that the null state is defined as a particular value. For example, $(D Nullable!(uint, uint.max)) is an From 89403c359dca365b99441b1c9c06426ca2b3bbd9 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 23 Feb 2024 12:20:01 -0700 Subject: [PATCH 189/327] Fix bugzilla issue 24389 - Make Phobos compile on FreeBSD 14 again. zlib can't be built with importC on FreeBSD 14, because qsort_r in stdlib.h uses some asm instructions, which dmd can't handle. https://github.com/dlang/dmd/pull/16184 fixed it so that we got a proper error message about it (and theoretically making it so that zlib could be compiled on FreeBSD 14 with gdc or ldc, though I haven't tried that), but it didn't fix it so that it could build on dmd, since that would require that dmd be able to handle GNU assembly code, which isn't a planned feature AFAIK. https://github.com/dlang/phobos/pull/8914 fixed it so that it's possible to build Phobos without using importC by providing a make variable, but it didn't do anything for FreeBSD specifically. This commit changes it so that FreeBSD sets that make variable in the makefile so that you don't have to do it manually to get FreeBSD 14 to build. It's not necessary for FreeBSD 13.2 (which is what the auto testers currently use), but it will be necessary for FreeBSD 14 (14.0 currently being the latest release of FreeBSD). I can confirm from testing that explicitly setting USE_IMPORTC=1 on the command line will overrides this change, so that variable can still be set one way or the other on FreeBSD. It's just now 0 by default so that it will build by default on FreeBSD 14. --- Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile b/Makefile index 2e0295c3c18..f8fe1c62f7b 100644 --- a/Makefile +++ b/Makefile @@ -81,6 +81,12 @@ endif # default to compiling the C parts (zlib) with DMD via importC; override with USE_IMPORTC=1/0 USE_IMPORTC:=1 +# FreeBSD 14 can't use importC for zlib thanks to asm in stdlib.h, which dmd can't handle. +# https://issues.dlang.org/show_bug.cgi?id=24389 +ifeq (freebsd,$(OS)) + USE_IMPORTC=0 +endif + # Configurable stuff that's rarely edited INSTALL_DIR = ../install DRUNTIME_PATH = $(DMD_DIR)/druntime From dcbfbd43ac321e81af60afd795bd0f3c3f47cfa0 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 24 Feb 2024 14:10:05 +0100 Subject: [PATCH 190/327] Bump zlib to latest v1.3.1 Which should cleanly compile with C11 now, without walls of warnings with e.g. recent clang versions. Fixes Bugzilla Issue 24268. --- etc/c/zlib/ChangeLog | 54 ++- etc/c/zlib/LICENSE | 22 + etc/c/zlib/README | 19 +- etc/c/zlib/adler32.c | 32 +- etc/c/zlib/compress.c | 21 +- etc/c/zlib/crc32.c | 255 +++++------ etc/c/zlib/deflate.c | 796 ++++++++++++++++------------------- etc/c/zlib/deflate.h | 55 ++- etc/c/zlib/doc/algorithm.txt | 2 +- etc/c/zlib/gzclose.c | 4 +- etc/c/zlib/gzguts.h | 42 +- etc/c/zlib/gzlib.c | 113 ++--- etc/c/zlib/gzread.c | 96 +---- etc/c/zlib/gzwrite.c | 84 +--- etc/c/zlib/infback.c | 47 +-- etc/c/zlib/inffast.c | 5 +- etc/c/zlib/inffast.h | 2 +- etc/c/zlib/inflate.c | 133 ++---- etc/c/zlib/inftrees.c | 17 +- etc/c/zlib/inftrees.h | 12 +- etc/c/zlib/test/example.c | 107 ++--- etc/c/zlib/test/infcover.c | 5 +- etc/c/zlib/test/minigzip.c | 176 +++----- etc/c/zlib/trees.c | 645 +++++++++++++--------------- etc/c/zlib/uncompr.c | 16 +- etc/c/zlib/zconf.h | 37 +- etc/c/zlib/zlib.3 | 6 +- etc/c/zlib/zlib.h | 401 +++++++++--------- etc/c/zlib/zutil.c | 62 +-- etc/c/zlib/zutil.h | 46 +- 30 files changed, 1370 insertions(+), 1942 deletions(-) create mode 100644 etc/c/zlib/LICENSE diff --git a/etc/c/zlib/ChangeLog b/etc/c/zlib/ChangeLog index f0b0e618092..b801a1031ec 100644 --- a/etc/c/zlib/ChangeLog +++ b/etc/c/zlib/ChangeLog @@ -1,6 +1,46 @@ ChangeLog file for zlib +Changes in 1.3.1 (22 Jan 2024) +- Reject overflows of zip header fields in minizip +- Fix bug in inflateSync() for data held in bit buffer +- Add LIT_MEM define to use more memory for a small deflate speedup +- Fix decision on the emission of Zip64 end records in minizip +- Add bounds checking to ERR_MSG() macro, used by zError() +- Neutralize zip file traversal attacks in miniunz +- Fix a bug in ZLIB_DEBUG compiles in check_match() +- Various portability and appearance improvements + +Changes in 1.3 (18 Aug 2023) +- Remove K&R function definitions and zlib2ansi +- Fix bug in deflateBound() for level 0 and memLevel 9 +- Fix bug when gzungetc() is used immediately after gzopen() +- Fix bug when using gzflush() with a very small buffer +- Fix crash when gzsetparams() attempted for transparent write +- Fix test/example.c to work with FORCE_STORED +- Rewrite of zran in examples (see zran.c version history) +- Fix minizip to allow it to open an empty zip file +- Fix reading disk number start on zip64 files in minizip +- Fix logic error in minizip argument processing +- Add minizip testing to Makefile +- Read multiple bytes instead of byte-by-byte in minizip unzip.c +- Add memory sanitizer to configure (--memory) +- Various portability improvements +- Various documentation improvements +- Various spelling and typo corrections + +Changes in 1.2.13 (13 Oct 2022) +- Fix configure issue that discarded provided CC definition +- Correct incorrect inputs provided to the CRC functions +- Repair prototypes and exporting of new CRC functions +- Fix inflateBack to detect invalid input with distances too far +- Have infback() deliver all of the available output up to any error +- Fix a bug when getting a gzip header extra field with inflate() +- Fix bug in block type selection when Z_FIXED used +- Tighten deflateBound bounds +- Remove deleted assembler code references +- Various portability and appearance improvements + Changes in 1.2.12 (27 Mar 2022) - Cygwin does not have _wopen(), so do not create gzopen_w() there - Permit a deflateParams() parameter change as soon as possible @@ -159,7 +199,7 @@ Changes in 1.2.7.1 (24 Mar 2013) - Fix types in contrib/minizip to match result of get_crc_table() - Simplify contrib/vstudio/vc10 with 'd' suffix - Add TOP support to win32/Makefile.msc -- Suport i686 and amd64 assembler builds in CMakeLists.txt +- Support i686 and amd64 assembler builds in CMakeLists.txt - Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h - Add vc11 and vc12 build files to contrib/vstudio - Add gzvprintf() as an undocumented function in zlib @@ -359,14 +399,14 @@ Changes in 1.2.5.1 (10 Sep 2011) - Use u4 type for crc_table to avoid conversion warnings - Apply casts in zlib.h to avoid conversion warnings - Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller] -- Improve inflateSync() documentation to note indeterminancy +- Improve inflateSync() documentation to note indeterminacy - Add deflatePending() function to return the amount of pending output - Correct the spelling of "specification" in FAQ [Randers-Pehrson] - Add a check in configure for stdarg.h, use for gzprintf() - Check that pointers fit in ints when gzprint() compiled old style - Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler] - Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt] -- Add debug records in assmebler code [Londer] +- Add debug records in assembler code [Londer] - Update RFC references to use http://tools.ietf.org/html/... [Li] - Add --archs option, use of libtool to configure for Mac OS X [Borstel] @@ -1033,7 +1073,7 @@ Changes in 1.2.0.1 (17 March 2003) - Include additional header file on VMS for off_t typedef - Try to use _vsnprintf where it supplants vsprintf [Vollant] - Add some casts in inffast.c -- Enchance comments in zlib.h on what happens if gzprintf() tries to +- Enhance comments in zlib.h on what happens if gzprintf() tries to write more than 4095 bytes before compression - Remove unused state from inflateBackEnd() - Remove exit(0) from minigzip.c, example.c @@ -1211,7 +1251,7 @@ Changes in 1.0.9 (17 Feb 1998) - Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8 - in inftrees.c, avoid cc -O bug on HP (Farshid Elahi) - in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with - the declaration of FAR (Gilles VOllant) + the declaration of FAR (Gilles Vollant) - install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann) - read_buf buf parameter of type Bytef* instead of charf* - zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout) @@ -1433,7 +1473,7 @@ Changes in 0.99 (27 Jan 96) - fix typo in Make_vms.com (f$trnlnm -> f$getsyi) - in fcalloc, normalize pointer if size > 65520 bytes - don't use special fcalloc for 32 bit Borland C++ -- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc... +- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc. - use Z_BINARY instead of BINARY - document that gzclose after gzdopen will close the file - allow "a" as mode in gzopen @@ -1567,7 +1607,7 @@ Changes in 0.4: - renamed deflateOptions as deflateInit2, call one or the other but not both - added the method parameter for deflateInit2 - added inflateInit2 -- simplied considerably deflateInit and inflateInit by not supporting +- simplified considerably deflateInit and inflateInit by not supporting user-provided history buffer. This is supported only in deflateInit2 and inflateInit2 diff --git a/etc/c/zlib/LICENSE b/etc/c/zlib/LICENSE new file mode 100644 index 00000000000..ab8ee6f7142 --- /dev/null +++ b/etc/c/zlib/LICENSE @@ -0,0 +1,22 @@ +Copyright notice: + + (C) 1995-2022 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu diff --git a/etc/c/zlib/README b/etc/c/zlib/README index 024b79d3d8c..c5f917540b6 100644 --- a/etc/c/zlib/README +++ b/etc/c/zlib/README @@ -1,6 +1,6 @@ ZLIB DATA COMPRESSION LIBRARY -zlib 1.2.12 is a general purpose data compression library. All the code is +zlib 1.3.1 is a general purpose data compression library. All the code is thread safe. The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and @@ -29,18 +29,17 @@ PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. Mark Nelson wrote an article about zlib for the Jan. 1997 issue of Dr. Dobb's Journal; a copy of the article is available at -http://marknelson.us/1997/01/01/zlib-engine/ . +https://marknelson.us/posts/1997/01/01/zlib-engine.html . -The changes made in version 1.2.12 are documented in the file ChangeLog. +The changes made in version 1.3.1 are documented in the file ChangeLog. Unsupported third party contributions are provided in directory contrib/ . -zlib is available in Java using the java.util.zip package, documented at -http://java.sun.com/developer/technicalArticles/Programming/compression/ . +zlib is available in Java using the java.util.zip package. Follow the API +Documentation link at: https://docs.oracle.com/search/?q=java.util.zip . -A Perl interface to zlib written by Paul Marquess is available -at CPAN (Comprehensive Perl Archive Network) sites, including -http://search.cpan.org/~pmqs/IO-Compress-Zlib/ . +A Perl interface to zlib and bzip2 written by Paul Marquess +can be found at https://github.com/pmqs/IO-Compress . A Python interface to zlib written by A.M. Kuchling is available in Python 1.5 and later versions, see @@ -64,7 +63,7 @@ Notes for some targets: - zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works when compiled with cc. -- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is +- On Digital Unix 4.0D (formerly OSF/1) on AlphaServer, the cc option -std1 is necessary to get gzprintf working correctly. This is done by configure. - zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with @@ -84,7 +83,7 @@ Acknowledgments: Copyright notice: - (C) 1995-2022 Jean-loup Gailly and Mark Adler + (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/etc/c/zlib/adler32.c b/etc/c/zlib/adler32.c index d0be4380a39..04b81d29bad 100644 --- a/etc/c/zlib/adler32.c +++ b/etc/c/zlib/adler32.c @@ -7,8 +7,6 @@ #include "zutil.h" -local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); - #define BASE 65521U /* largest prime smaller than 65536 */ #define NMAX 5552 /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ @@ -60,11 +58,7 @@ local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); #endif /* ========================================================================= */ -uLong ZEXPORT adler32_z(adler, buf, len) - uLong adler; - const Bytef *buf; - z_size_t len; -{ +uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, z_size_t len) { unsigned long sum2; unsigned n; @@ -131,20 +125,12 @@ uLong ZEXPORT adler32_z(adler, buf, len) } /* ========================================================================= */ -uLong ZEXPORT adler32(adler, buf, len) - uLong adler; - const Bytef *buf; - uInt len; -{ +uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len) { return adler32_z(adler, buf, len); } /* ========================================================================= */ -local uLong adler32_combine_(adler1, adler2, len2) - uLong adler1; - uLong adler2; - z_off64_t len2; -{ +local uLong adler32_combine_(uLong adler1, uLong adler2, z_off64_t len2) { unsigned long sum1; unsigned long sum2; unsigned rem; @@ -169,18 +155,10 @@ local uLong adler32_combine_(adler1, adler2, len2) } /* ========================================================================= */ -uLong ZEXPORT adler32_combine(adler1, adler2, len2) - uLong adler1; - uLong adler2; - z_off_t len2; -{ +uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, z_off_t len2) { return adler32_combine_(adler1, adler2, len2); } -uLong ZEXPORT adler32_combine64(adler1, adler2, len2) - uLong adler1; - uLong adler2; - z_off64_t len2; -{ +uLong ZEXPORT adler32_combine64(uLong adler1, uLong adler2, z_off64_t len2) { return adler32_combine_(adler1, adler2, len2); } diff --git a/etc/c/zlib/compress.c b/etc/c/zlib/compress.c index e2db404abf8..f43bacf7ab9 100644 --- a/etc/c/zlib/compress.c +++ b/etc/c/zlib/compress.c @@ -19,13 +19,8 @@ memory, Z_BUF_ERROR if there was not enough room in the output buffer, Z_STREAM_ERROR if the level parameter is invalid. */ -int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; - int level; -{ +int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen, int level) { z_stream stream; int err; const uInt max = (uInt)-1; @@ -65,12 +60,8 @@ int ZEXPORT compress2 (dest, destLen, source, sourceLen, level) /* =========================================================================== */ -int ZEXPORT compress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ +int ZEXPORT compress(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen) { return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION); } @@ -78,9 +69,7 @@ int ZEXPORT compress (dest, destLen, source, sourceLen) If the default memLevel or windowBits for deflateInit() is changed, then this function needs to be updated. */ -uLong ZEXPORT compressBound (sourceLen) - uLong sourceLen; -{ +uLong ZEXPORT compressBound(uLong sourceLen) { return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + (sourceLen >> 25) + 13; } diff --git a/etc/c/zlib/crc32.c b/etc/c/zlib/crc32.c index a1bdce5c23c..6c38f5c04c6 100644 --- a/etc/c/zlib/crc32.c +++ b/etc/c/zlib/crc32.c @@ -98,10 +98,6 @@ # endif #endif -/* Local functions. */ -local z_crc_t multmodp OF((z_crc_t a, z_crc_t b)); -local z_crc_t x2nmodp OF((z_off64_t n, unsigned k)); - /* If available, use the ARM processor CRC32 instruction. */ #if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8 # define ARMCRC32 @@ -114,9 +110,7 @@ local z_crc_t x2nmodp OF((z_off64_t n, unsigned k)); instruction, if one is available. This assumes that word_t is either 32 bits or 64 bits. */ -local z_word_t byte_swap(word) - z_word_t word; -{ +local z_word_t byte_swap(z_word_t word) { # if W == 8 return (word & 0xff00000000000000) >> 56 | @@ -137,24 +131,77 @@ local z_word_t byte_swap(word) } #endif +#ifdef DYNAMIC_CRC_TABLE +/* ========================================================================= + * Table of powers of x for combining CRC-32s, filled in by make_crc_table() + * below. + */ + local z_crc_t FAR x2n_table[32]; +#else +/* ========================================================================= + * Tables for byte-wise and braided CRC-32 calculations, and a table of powers + * of x for combining CRC-32s, all made by make_crc_table(). + */ +# include "crc32.h" +#endif + /* CRC polynomial. */ #define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */ -#ifdef DYNAMIC_CRC_TABLE +/* + Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, + reflected. For speed, this requires that a not be zero. + */ +local z_crc_t multmodp(z_crc_t a, z_crc_t b) { + z_crc_t m, p; + + m = (z_crc_t)1 << 31; + p = 0; + for (;;) { + if (a & m) { + p ^= b; + if ((a & (m - 1)) == 0) + break; + } + m >>= 1; + b = b & 1 ? (b >> 1) ^ POLY : b >> 1; + } + return p; +} + +/* + Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been + initialized. + */ +local z_crc_t x2nmodp(z_off64_t n, unsigned k) { + z_crc_t p; + + p = (z_crc_t)1 << 31; /* x^0 == 1 */ + while (n) { + if (n & 1) + p = multmodp(x2n_table[k & 31], p); + n >>= 1; + k++; + } + return p; +} +#ifdef DYNAMIC_CRC_TABLE +/* ========================================================================= + * Build the tables for byte-wise and braided CRC-32 calculations, and a table + * of powers of x for combining CRC-32s. + */ local z_crc_t FAR crc_table[256]; -local z_crc_t FAR x2n_table[32]; -local void make_crc_table OF((void)); #ifdef W local z_word_t FAR crc_big_table[256]; local z_crc_t FAR crc_braid_table[W][256]; local z_word_t FAR crc_braid_big_table[W][256]; - local void braid OF((z_crc_t [][256], z_word_t [][256], int, int)); + local void braid(z_crc_t [][256], z_word_t [][256], int, int); #endif #ifdef MAKECRCH - local void write_table OF((FILE *, const z_crc_t FAR *, int)); - local void write_table32hi OF((FILE *, const z_word_t FAR *, int)); - local void write_table64 OF((FILE *, const z_word_t FAR *, int)); + local void write_table(FILE *, const z_crc_t FAR *, int); + local void write_table32hi(FILE *, const z_word_t FAR *, int); + local void write_table64(FILE *, const z_word_t FAR *, int); #endif /* MAKECRCH */ /* @@ -167,7 +214,6 @@ local void make_crc_table OF((void)); /* Definition of once functionality. */ typedef struct once_s once_t; -local void once OF((once_t *, void (*)(void))); /* Check for the availability of atomics. */ #if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \ @@ -187,10 +233,7 @@ struct once_s { invoke once() at the same time. The state must be a once_t initialized with ONCE_INIT. */ -local void once(state, init) - once_t *state; - void (*init)(void); -{ +local void once(once_t *state, void (*init)(void)) { if (!atomic_load(&state->done)) { if (atomic_flag_test_and_set(&state->begun)) while (!atomic_load(&state->done)) @@ -213,10 +256,7 @@ struct once_s { /* Test and set. Alas, not atomic, but tries to minimize the period of vulnerability. */ -local int test_and_set OF((int volatile *)); -local int test_and_set(flag) - int volatile *flag; -{ +local int test_and_set(int volatile *flag) { int was; was = *flag; @@ -225,10 +265,7 @@ local int test_and_set(flag) } /* Run the provided init() function once. This is not thread-safe. */ -local void once(state, init) - once_t *state; - void (*init)(void); -{ +local void once(once_t *state, void (*init)(void)) { if (!state->done) { if (test_and_set(&state->begun)) while (!state->done) @@ -270,8 +307,7 @@ local once_t made = ONCE_INIT; combinations of CRC register values and incoming bytes. */ -local void make_crc_table() -{ +local void make_crc_table(void) { unsigned i, j, n; z_crc_t p; @@ -438,11 +474,7 @@ local void make_crc_table() Write the 32-bit values in table[0..k-1] to out, five per line in hexadecimal separated by commas. */ -local void write_table(out, table, k) - FILE *out; - const z_crc_t FAR *table; - int k; -{ +local void write_table(FILE *out, const z_crc_t FAR *table, int k) { int n; for (n = 0; n < k; n++) @@ -455,11 +487,7 @@ local void write_table(out, table, k) Write the high 32-bits of each value in table[0..k-1] to out, five per line in hexadecimal separated by commas. */ -local void write_table32hi(out, table, k) -FILE *out; -const z_word_t FAR *table; -int k; -{ +local void write_table32hi(FILE *out, const z_word_t FAR *table, int k) { int n; for (n = 0; n < k; n++) @@ -475,11 +503,7 @@ int k; bits. If not, then the type cast and format string can be adjusted accordingly. */ -local void write_table64(out, table, k) - FILE *out; - const z_word_t FAR *table; - int k; -{ +local void write_table64(FILE *out, const z_word_t FAR *table, int k) { int n; for (n = 0; n < k; n++) @@ -489,8 +513,7 @@ local void write_table64(out, table, k) } /* Actually do the deed. */ -int main() -{ +int main(void) { make_crc_table(); return 0; } @@ -502,12 +525,7 @@ int main() Generate the little and big-endian braid tables for the given n and z_word_t size w. Each array must have room for w blocks of 256 elements. */ -local void braid(ltl, big, n, w) - z_crc_t ltl[][256]; - z_word_t big[][256]; - int n; - int w; -{ +local void braid(z_crc_t ltl[][256], z_word_t big[][256], int n, int w) { int k; z_crc_t i, p, q; for (k = 0; k < w; k++) { @@ -522,69 +540,13 @@ local void braid(ltl, big, n, w) } #endif -#else /* !DYNAMIC_CRC_TABLE */ -/* ======================================================================== - * Tables for byte-wise and braided CRC-32 calculations, and a table of powers - * of x for combining CRC-32s, all made by make_crc_table(). - */ -#include "crc32.h" #endif /* DYNAMIC_CRC_TABLE */ -/* ======================================================================== - * Routines used for CRC calculation. Some are also required for the table - * generation above. - */ - -/* - Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial, - reflected. For speed, this requires that a not be zero. - */ -local z_crc_t multmodp(a, b) - z_crc_t a; - z_crc_t b; -{ - z_crc_t m, p; - - m = (z_crc_t)1 << 31; - p = 0; - for (;;) { - if (a & m) { - p ^= b; - if ((a & (m - 1)) == 0) - break; - } - m >>= 1; - b = b & 1 ? (b >> 1) ^ POLY : b >> 1; - } - return p; -} - -/* - Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been - initialized. - */ -local z_crc_t x2nmodp(n, k) - z_off64_t n; - unsigned k; -{ - z_crc_t p; - - p = (z_crc_t)1 << 31; /* x^0 == 1 */ - while (n) { - if (n & 1) - p = multmodp(x2n_table[k & 31], p); - n >>= 1; - k++; - } - return p; -} - /* ========================================================================= * This function can be used by asm versions of crc32(), and to force the * generation of the CRC tables in a threaded application. */ -const z_crc_t FAR * ZEXPORT get_crc_table() -{ +const z_crc_t FAR * ZEXPORT get_crc_table(void) { #ifdef DYNAMIC_CRC_TABLE once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ @@ -610,11 +572,8 @@ const z_crc_t FAR * ZEXPORT get_crc_table() #define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */ #define Z_BATCH_MIN 800 /* fewest words in a final batch */ -unsigned long ZEXPORT crc32_z(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - z_size_t len; -{ +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { z_crc_t val; z_word_t crc1, crc2; const z_word_t *word; @@ -630,7 +589,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ - crc ^= 0xffffffff; + crc = (~crc) & 0xffffffff; /* Compute the CRC up to a word boundary. */ while (len && ((z_size_t)buf & 7) != 0) { @@ -645,8 +604,8 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) len &= 7; /* Do three interleaved CRCs to realize the throughput of one crc32x - instruction per cycle. Each CRC is calcuated on Z_BATCH words. The three - CRCs are combined into a single CRC after each set of batches. */ + instruction per cycle. Each CRC is calculated on Z_BATCH words. The + three CRCs are combined into a single CRC after each set of batches. */ while (num >= 3 * Z_BATCH) { crc1 = 0; crc2 = 0; @@ -714,18 +673,14 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) least-significant byte of the word as the first byte of data, without any pre or post conditioning. This is used to combine the CRCs of each braid. */ -local z_crc_t crc_word(data) - z_word_t data; -{ +local z_crc_t crc_word(z_word_t data) { int k; for (k = 0; k < W; k++) data = (data >> 8) ^ crc_table[data & 0xff]; return (z_crc_t)data; } -local z_word_t crc_word_big(data) - z_word_t data; -{ +local z_word_t crc_word_big(z_word_t data) { int k; for (k = 0; k < W; k++) data = (data << 8) ^ @@ -736,11 +691,8 @@ local z_word_t crc_word_big(data) #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32_z(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - z_size_t len; -{ +unsigned long ZEXPORT crc32_z(unsigned long crc, const unsigned char FAR *buf, + z_size_t len) { /* Return initial CRC, if requested. */ if (buf == Z_NULL) return 0; @@ -749,7 +701,7 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) #endif /* DYNAMIC_CRC_TABLE */ /* Pre-condition the CRC */ - crc ^= 0xffffffff; + crc = (~crc) & 0xffffffff; #ifdef W @@ -772,8 +724,8 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) words = (z_word_t const *)buf; /* Do endian check at execution time instead of compile time, since ARM - processors can change the endianess at execution time. If the - compiler knows what the endianess will be, it can optimize out the + processors can change the endianness at execution time. If the + compiler knows what the endianness will be, it can optimize out the check and the unused branch. */ endian = 1; if (*(unsigned char *)&endian) { @@ -1060,39 +1012,26 @@ unsigned long ZEXPORT crc32_z(crc, buf, len) #endif /* ========================================================================= */ -unsigned long ZEXPORT crc32(crc, buf, len) - unsigned long crc; - const unsigned char FAR *buf; - uInt len; -{ +unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, + uInt len) { return crc32_z(crc, buf, len); } /* ========================================================================= */ -uLong ZEXPORT crc32_combine64(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off64_t len2; -{ +uLong ZEXPORT crc32_combine64(uLong crc1, uLong crc2, z_off64_t len2) { #ifdef DYNAMIC_CRC_TABLE once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ - return multmodp(x2nmodp(len2, 3), crc1) ^ crc2; + return multmodp(x2nmodp(len2, 3), crc1) ^ (crc2 & 0xffffffff); } /* ========================================================================= */ -uLong ZEXPORT crc32_combine(crc1, crc2, len2) - uLong crc1; - uLong crc2; - z_off_t len2; -{ - return crc32_combine64(crc1, crc2, len2); +uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2) { + return crc32_combine64(crc1, crc2, (z_off64_t)len2); } /* ========================================================================= */ -uLong ZEXPORT crc32_combine_gen64(len2) - z_off64_t len2; -{ +uLong ZEXPORT crc32_combine_gen64(z_off64_t len2) { #ifdef DYNAMIC_CRC_TABLE once(&made, make_crc_table); #endif /* DYNAMIC_CRC_TABLE */ @@ -1100,17 +1039,11 @@ uLong ZEXPORT crc32_combine_gen64(len2) } /* ========================================================================= */ -uLong ZEXPORT crc32_combine_gen(len2) - z_off_t len2; -{ - return crc32_combine_gen64(len2); +uLong ZEXPORT crc32_combine_gen(z_off_t len2) { + return crc32_combine_gen64((z_off64_t)len2); } /* ========================================================================= */ -uLong crc32_combine_op(crc1, crc2, op) - uLong crc1; - uLong crc2; - uLong op; -{ - return multmodp(op, crc1) ^ crc2; +uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op) { + return multmodp(op, crc1) ^ (crc2 & 0xffffffff); } diff --git a/etc/c/zlib/deflate.c b/etc/c/zlib/deflate.c index 799fb93cc04..012ea8148e8 100644 --- a/etc/c/zlib/deflate.c +++ b/etc/c/zlib/deflate.c @@ -1,5 +1,5 @@ /* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -52,7 +52,7 @@ #include "deflate.h" const char deflate_copyright[] = - " deflate 1.2.12 Copyright 1995-2022 Jean-loup Gailly and Mark Adler "; + " deflate 1.3.1 Copyright 1995-2024 Jean-loup Gailly and Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -60,9 +60,6 @@ const char deflate_copyright[] = copyright string in the executable of your product. */ -/* =========================================================================== - * Function prototypes. - */ typedef enum { need_more, /* block not completed, need more input or more output */ block_done, /* block flush performed */ @@ -70,35 +67,16 @@ typedef enum { finish_done /* finish done, accept no more input or output */ } block_state; -typedef block_state (*compress_func) OF((deflate_state *s, int flush)); +typedef block_state (*compress_func)(deflate_state *s, int flush); /* Compression function. Returns the block state after the call. */ -local int deflateStateCheck OF((z_streamp strm)); -local void slide_hash OF((deflate_state *s)); -local void fill_window OF((deflate_state *s)); -local block_state deflate_stored OF((deflate_state *s, int flush)); -local block_state deflate_fast OF((deflate_state *s, int flush)); +local block_state deflate_stored(deflate_state *s, int flush); +local block_state deflate_fast(deflate_state *s, int flush); #ifndef FASTEST -local block_state deflate_slow OF((deflate_state *s, int flush)); -#endif -local block_state deflate_rle OF((deflate_state *s, int flush)); -local block_state deflate_huff OF((deflate_state *s, int flush)); -local void lm_init OF((deflate_state *s)); -local void putShortMSB OF((deflate_state *s, uInt b)); -local void flush_pending OF((z_streamp strm)); -local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); -#ifdef ASMV -# pragma message("Assembler code may have bugs -- use at your own risk") - void match_init OF((void)); /* asm code initialization */ - uInt longest_match OF((deflate_state *s, IPos cur_match)); -#else -local uInt longest_match OF((deflate_state *s, IPos cur_match)); -#endif - -#ifdef ZLIB_DEBUG -local void check_match OF((deflate_state *s, IPos start, IPos match, - int length)); +local block_state deflate_slow(deflate_state *s, int flush); #endif +local block_state deflate_rle(deflate_state *s, int flush); +local block_state deflate_huff(deflate_state *s, int flush); /* =========================================================================== * Local data @@ -160,7 +138,7 @@ local const config configuration_table[10] = { * characters, so that a running hash key can be computed from the previous * key instead of complete recalculation each time. */ -#define UPDATE_HASH(s,h,c) (h = (((h)<hash_shift) ^ (c)) & s->hash_mask) +#define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask) /* =========================================================================== @@ -191,9 +169,9 @@ local const config configuration_table[10] = { */ #define CLEAR_HASH(s) \ do { \ - s->head[s->hash_size-1] = NIL; \ + s->head[s->hash_size - 1] = NIL; \ zmemzero((Bytef *)s->head, \ - (unsigned)(s->hash_size-1)*sizeof(*s->head)); \ + (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \ } while (0) /* =========================================================================== @@ -201,9 +179,12 @@ local const config configuration_table[10] = { * bit values at the expense of memory usage). We slide even when level == 0 to * keep the hash table consistent if we switch back to level > 0 later. */ -local void slide_hash(s) - deflate_state *s; -{ +#if defined(__has_feature) +# if __has_feature(memory_sanitizer) + __attribute__((no_sanitize("memory"))) +# endif +#endif +local void slide_hash(deflate_state *s) { unsigned n, m; Posf *p; uInt wsize = s->w_size; @@ -227,30 +208,177 @@ local void slide_hash(s) #endif } +/* =========================================================================== + * Read a new buffer from the current input stream, update the adler32 + * and total number of bytes read. All deflate() input goes through + * this function so some applications may wish to modify it to avoid + * allocating a large strm->next_in buffer and copying from it. + * (See also flush_pending()). + */ +local unsigned read_buf(z_streamp strm, Bytef *buf, unsigned size) { + unsigned len = strm->avail_in; + + if (len > size) len = size; + if (len == 0) return 0; + + strm->avail_in -= len; + + zmemcpy(buf, strm->next_in, len); + if (strm->state->wrap == 1) { + strm->adler = adler32(strm->adler, buf, len); + } +#ifdef GZIP + else if (strm->state->wrap == 2) { + strm->adler = crc32(strm->adler, buf, len); + } +#endif + strm->next_in += len; + strm->total_in += len; + + return len; +} + +/* =========================================================================== + * Fill the window when the lookahead becomes insufficient. + * Updates strstart and lookahead. + * + * IN assertion: lookahead < MIN_LOOKAHEAD + * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD + * At least one byte has been read, or avail_in == 0; reads are + * performed for at least two bytes (required for the zip translate_eol + * option -- not supported here). + */ +local void fill_window(deflate_state *s) { + unsigned n; + unsigned more; /* Amount of free space at the end of the window. */ + uInt wsize = s->w_size; + + Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); + + do { + more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); + + /* Deal with !@#$% 64K limit: */ + if (sizeof(int) <= 2) { + if (more == 0 && s->strstart == 0 && s->lookahead == 0) { + more = wsize; + + } else if (more == (unsigned)(-1)) { + /* Very unlikely, but possible on 16 bit machine if + * strstart == 0 && lookahead == 1 (input done a byte at time) + */ + more--; + } + } + + /* If the window is almost full and there is insufficient lookahead, + * move the upper half to the lower one to make room in the upper half. + */ + if (s->strstart >= wsize + MAX_DIST(s)) { + + zmemcpy(s->window, s->window + wsize, (unsigned)wsize - more); + s->match_start -= wsize; + s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ + s->block_start -= (long) wsize; + if (s->insert > s->strstart) + s->insert = s->strstart; + slide_hash(s); + more += wsize; + } + if (s->strm->avail_in == 0) break; + + /* If there was no sliding: + * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && + * more == window_size - lookahead - strstart + * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) + * => more >= window_size - 2*WSIZE + 2 + * In the BIG_MEM or MMAP case (not yet supported), + * window_size == input_size + MIN_LOOKAHEAD && + * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. + * Otherwise, window_size == 2*WSIZE so more >= 2. + * If there was sliding, more >= WSIZE. So in all cases, more >= 2. + */ + Assert(more >= 2, "more < 2"); + + n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); + s->lookahead += n; + + /* Initialize the hash value now that we have some input: */ + if (s->lookahead + s->insert >= MIN_MATCH) { + uInt str = s->strstart - s->insert; + s->ins_h = s->window[str]; + UPDATE_HASH(s, s->ins_h, s->window[str + 1]); +#if MIN_MATCH != 3 + Call UPDATE_HASH() MIN_MATCH-3 more times +#endif + while (s->insert) { + UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); +#ifndef FASTEST + s->prev[str & s->w_mask] = s->head[s->ins_h]; +#endif + s->head[s->ins_h] = (Pos)str; + str++; + s->insert--; + if (s->lookahead + s->insert < MIN_MATCH) + break; + } + } + /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, + * but this is not important since only literal bytes will be emitted. + */ + + } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); + + /* If the WIN_INIT bytes after the end of the current data have never been + * written, then zero those bytes in order to avoid memory check reports of + * the use of uninitialized (or uninitialised as Julian writes) bytes by + * the longest match routines. Update the high water mark for the next + * time through here. WIN_INIT is set to MAX_MATCH since the longest match + * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. + */ + if (s->high_water < s->window_size) { + ulg curr = s->strstart + (ulg)(s->lookahead); + ulg init; + + if (s->high_water < curr) { + /* Previous high water mark below current data -- zero WIN_INIT + * bytes or up to end of window, whichever is less. + */ + init = s->window_size - curr; + if (init > WIN_INIT) + init = WIN_INIT; + zmemzero(s->window + curr, (unsigned)init); + s->high_water = curr + init; + } + else if (s->high_water < (ulg)curr + WIN_INIT) { + /* High water mark at or above current data, but below current data + * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up + * to end of window, whichever is less. + */ + init = (ulg)curr + WIN_INIT - s->high_water; + if (init > s->window_size - s->high_water) + init = s->window_size - s->high_water; + zmemzero(s->window + s->high_water, (unsigned)init); + s->high_water += init; + } + } + + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "not enough room for search"); +} + /* ========================================================================= */ -int ZEXPORT deflateInit_(strm, level, version, stream_size) - z_streamp strm; - int level; - const char *version; - int stream_size; -{ +int ZEXPORT deflateInit_(z_streamp strm, int level, const char *version, + int stream_size) { return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, version, stream_size); /* To do: ignore strm->next_in if we use it as window */ } /* ========================================================================= */ -int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - version, stream_size) - z_streamp strm; - int level; - int method; - int windowBits; - int memLevel; - int strategy; - const char *version; - int stream_size; -{ +int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, + int windowBits, int memLevel, int strategy, + const char *version, int stream_size) { deflate_state *s; int wrap = 1; static const char my_version[] = ZLIB_VERSION; @@ -285,6 +413,8 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, if (windowBits < 0) { /* suppress zlib wrapper */ wrap = 0; + if (windowBits < -15) + return Z_STREAM_ERROR; windowBits = -windowBits; } #ifdef GZIP @@ -314,7 +444,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, s->hash_bits = (uInt)memLevel + 7; s->hash_size = 1 << s->hash_bits; s->hash_mask = s->hash_size - 1; - s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH); + s->hash_shift = ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH); s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte)); s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); @@ -340,11 +470,11 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, * sym_buf value to read moves forward three bytes. From that symbol, up to * 31 bits are written to pending_buf. The closest the written pending_buf * bits gets to the next sym_buf symbol to read is just before the last - * code is written. At that time, 31*(n-2) bits have been written, just - * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at - * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1 + * code is written. At that time, 31*(n - 2) bits have been written, just + * after 24*(n - 2) bits have been consumed from sym_buf. sym_buf starts at + * 8*n bits into pending_buf. (Note that the symbol buffer fills when n - 1 * symbols are written.) The closest the writing gets to what is unread is - * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and + * then n + 14 bits. Here n is lit_bufsize, which is 16384 by default, and * can range from 128 to 32768. * * Therefore, at a minimum, there are 142 bits of space between what is @@ -363,7 +493,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, * symbols from which it is being constructed. */ - s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4); + s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, LIT_BUFS); s->pending_buf_size = (ulg)s->lit_bufsize * 4; if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || @@ -373,8 +503,14 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, deflateEnd (strm); return Z_MEM_ERROR; } +#ifdef LIT_MEM + s->d_buf = (ushf *)(s->pending_buf + (s->lit_bufsize << 1)); + s->l_buf = s->pending_buf + (s->lit_bufsize << 2); + s->sym_end = s->lit_bufsize - 1; +#else s->sym_buf = s->pending_buf + s->lit_bufsize; s->sym_end = (s->lit_bufsize - 1) * 3; +#endif /* We avoid equality with lit_bufsize*3 because of wraparound at 64K * on 16 bit machines and because stored blocks are restricted to * 64K-1 bytes. @@ -390,9 +526,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, /* ========================================================================= * Check for a valid deflate stream state. Return 0 if ok, 1 if not. */ -local int deflateStateCheck (strm) - z_streamp strm; -{ +local int deflateStateCheck(z_streamp strm) { deflate_state *s; if (strm == Z_NULL || strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) @@ -413,11 +547,8 @@ local int deflateStateCheck (strm) } /* ========================================================================= */ -int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) - z_streamp strm; - const Bytef *dictionary; - uInt dictLength; -{ +int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength) { deflate_state *s; uInt str, n; int wrap; @@ -482,11 +613,8 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength) } /* ========================================================================= */ -int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength) - z_streamp strm; - Bytef *dictionary; - uInt *dictLength; -{ +int ZEXPORT deflateGetDictionary(z_streamp strm, Bytef *dictionary, + uInt *dictLength) { deflate_state *s; uInt len; @@ -504,9 +632,7 @@ int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength) } /* ========================================================================= */ -int ZEXPORT deflateResetKeep (strm) - z_streamp strm; -{ +int ZEXPORT deflateResetKeep(z_streamp strm) { deflate_state *s; if (deflateStateCheck(strm)) { @@ -541,10 +667,32 @@ int ZEXPORT deflateResetKeep (strm) return Z_OK; } +/* =========================================================================== + * Initialize the "longest match" routines for a new zlib stream + */ +local void lm_init(deflate_state *s) { + s->window_size = (ulg)2L*s->w_size; + + CLEAR_HASH(s); + + /* Set the default configuration parameters: + */ + s->max_lazy_match = configuration_table[s->level].max_lazy; + s->good_match = configuration_table[s->level].good_length; + s->nice_match = configuration_table[s->level].nice_length; + s->max_chain_length = configuration_table[s->level].max_chain; + + s->strstart = 0; + s->block_start = 0L; + s->lookahead = 0; + s->insert = 0; + s->match_length = s->prev_length = MIN_MATCH-1; + s->match_available = 0; + s->ins_h = 0; +} + /* ========================================================================= */ -int ZEXPORT deflateReset (strm) - z_streamp strm; -{ +int ZEXPORT deflateReset(z_streamp strm) { int ret; ret = deflateResetKeep(strm); @@ -554,10 +702,7 @@ int ZEXPORT deflateReset (strm) } /* ========================================================================= */ -int ZEXPORT deflateSetHeader (strm, head) - z_streamp strm; - gz_headerp head; -{ +int ZEXPORT deflateSetHeader(z_streamp strm, gz_headerp head) { if (deflateStateCheck(strm) || strm->state->wrap != 2) return Z_STREAM_ERROR; strm->state->gzhead = head; @@ -565,11 +710,7 @@ int ZEXPORT deflateSetHeader (strm, head) } /* ========================================================================= */ -int ZEXPORT deflatePending (strm, pending, bits) - unsigned *pending; - int *bits; - z_streamp strm; -{ +int ZEXPORT deflatePending(z_streamp strm, unsigned *pending, int *bits) { if (deflateStateCheck(strm)) return Z_STREAM_ERROR; if (pending != Z_NULL) *pending = strm->state->pending; @@ -579,19 +720,21 @@ int ZEXPORT deflatePending (strm, pending, bits) } /* ========================================================================= */ -int ZEXPORT deflatePrime (strm, bits, value) - z_streamp strm; - int bits; - int value; -{ +int ZEXPORT deflatePrime(z_streamp strm, int bits, int value) { deflate_state *s; int put; if (deflateStateCheck(strm)) return Z_STREAM_ERROR; s = strm->state; +#ifdef LIT_MEM + if (bits < 0 || bits > 16 || + (uchf *)s->d_buf < s->pending_out + ((Buf_size + 7) >> 3)) + return Z_BUF_ERROR; +#else if (bits < 0 || bits > 16 || s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3)) return Z_BUF_ERROR; +#endif do { put = Buf_size - s->bi_valid; if (put > bits) @@ -606,11 +749,7 @@ int ZEXPORT deflatePrime (strm, bits, value) } /* ========================================================================= */ -int ZEXPORT deflateParams(strm, level, strategy) - z_streamp strm; - int level; - int strategy; -{ +int ZEXPORT deflateParams(z_streamp strm, int level, int strategy) { deflate_state *s; compress_func func; @@ -655,13 +794,8 @@ int ZEXPORT deflateParams(strm, level, strategy) } /* ========================================================================= */ -int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) - z_streamp strm; - int good_length; - int max_lazy; - int nice_length; - int max_chain; -{ +int ZEXPORT deflateTune(z_streamp strm, int good_length, int max_lazy, + int nice_length, int max_chain) { deflate_state *s; if (deflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -674,36 +808,47 @@ int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) } /* ========================================================================= - * For the default windowBits of 15 and memLevel of 8, this function returns - * a close to exact, as well as small, upper bound on the compressed size. - * They are coded as constants here for a reason--if the #define's are - * changed, then this function needs to be changed as well. The return - * value for 15 and 8 only works for those exact settings. + * For the default windowBits of 15 and memLevel of 8, this function returns a + * close to exact, as well as small, upper bound on the compressed size. This + * is an expansion of ~0.03%, plus a small constant. + * + * For any setting other than those defaults for windowBits and memLevel, one + * of two worst case bounds is returned. This is at most an expansion of ~4% or + * ~13%, plus a small constant. * - * For any setting other than those defaults for windowBits and memLevel, - * the value returned is a conservative worst case for the maximum expansion - * resulting from using fixed blocks instead of stored blocks, which deflate - * can emit on compressed data for some combinations of the parameters. + * Both the 0.03% and 4% derive from the overhead of stored blocks. The first + * one is for stored blocks of 16383 bytes (memLevel == 8), whereas the second + * is for stored blocks of 127 bytes (the worst case memLevel == 1). The + * expansion results from five bytes of header for each stored block. * - * This function could be more sophisticated to provide closer upper bounds for - * every combination of windowBits and memLevel. But even the conservative - * upper bound of about 14% expansion does not seem onerous for output buffer - * allocation. + * The larger expansion of 13% results from a window size less than or equal to + * the symbols buffer size (windowBits <= memLevel + 7). In that case some of + * the data being compressed may have slid out of the sliding window, impeding + * a stored block from being emitted. Then the only choice is a fixed or + * dynamic block, where a fixed block limits the maximum expansion to 9 bits + * per 8-bit byte, plus 10 bits for every block. The smallest block size for + * which this can occur is 255 (memLevel == 2). + * + * Shifts are used to approximate divisions, for speed. */ -uLong ZEXPORT deflateBound(strm, sourceLen) - z_streamp strm; - uLong sourceLen; -{ +uLong ZEXPORT deflateBound(z_streamp strm, uLong sourceLen) { deflate_state *s; - uLong complen, wraplen; + uLong fixedlen, storelen, wraplen; + + /* upper bound for fixed blocks with 9-bit literals and length 255 + (memLevel == 2, which is the lowest that may not use stored blocks) -- + ~13% overhead plus a small constant */ + fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) + + (sourceLen >> 9) + 4; - /* conservative upper bound for compressed data */ - complen = sourceLen + - ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; + /* upper bound for stored blocks with length 127 (memLevel == 1) -- + ~4% overhead plus a small constant */ + storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) + + (sourceLen >> 11) + 7; - /* if can't get parameters, return conservative bound plus zlib wrapper */ + /* if can't get parameters, return larger bound plus a zlib wrapper */ if (deflateStateCheck(strm)) - return complen + 6; + return (fixedlen > storelen ? fixedlen : storelen) + 6; /* compute wrapper length */ s = strm->state; @@ -740,11 +885,13 @@ uLong ZEXPORT deflateBound(strm, sourceLen) wraplen = 6; } - /* if not default parameters, return conservative bound */ + /* if not default parameters, return one of the conservative bounds */ if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return complen + wraplen; + return (s->w_bits <= s->hash_bits && s->level ? fixedlen : storelen) + + wraplen; - /* default settings: return tight bound for that case */ + /* default settings: return tight bound for that case -- ~0.03% overhead + plus a small constant */ return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + (sourceLen >> 25) + 13 - 6 + wraplen; } @@ -754,10 +901,7 @@ uLong ZEXPORT deflateBound(strm, sourceLen) * IN assertion: the stream state is correct and there is enough room in * pending_buf. */ -local void putShortMSB (s, b) - deflate_state *s; - uInt b; -{ +local void putShortMSB(deflate_state *s, uInt b) { put_byte(s, (Byte)(b >> 8)); put_byte(s, (Byte)(b & 0xff)); } @@ -768,9 +912,7 @@ local void putShortMSB (s, b) * applications may wish to modify it to avoid allocating a large * strm->next_out buffer and copying into it. (See also read_buf()). */ -local void flush_pending(strm) - z_streamp strm; -{ +local void flush_pending(z_streamp strm) { unsigned len; deflate_state *s = strm->state; @@ -801,10 +943,7 @@ local void flush_pending(strm) } while (0) /* ========================================================================= */ -int ZEXPORT deflate (strm, flush) - z_streamp strm; - int flush; -{ +int ZEXPORT deflate(z_streamp strm, int flush) { int old_flush; /* value of flush param for previous deflate call */ deflate_state *s; @@ -856,7 +995,7 @@ int ZEXPORT deflate (strm, flush) s->status = BUSY_STATE; if (s->status == INIT_STATE) { /* zlib header */ - uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8; + uInt header = (Z_DEFLATED + ((s->w_bits - 8) << 4)) << 8; uInt level_flags; if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) @@ -1116,9 +1255,7 @@ int ZEXPORT deflate (strm, flush) } /* ========================================================================= */ -int ZEXPORT deflateEnd (strm) - z_streamp strm; -{ +int ZEXPORT deflateEnd(z_streamp strm) { int status; if (deflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1142,11 +1279,10 @@ int ZEXPORT deflateEnd (strm) * To simplify the source, this is not supported for 16-bit MSDOS (which * doesn't have enough memory anyway to duplicate compression states). */ -int ZEXPORT deflateCopy (dest, source) - z_streamp dest; - z_streamp source; -{ +int ZEXPORT deflateCopy(z_streamp dest, z_streamp source) { #ifdef MAXSEG_64K + (void)dest; + (void)source; return Z_STREAM_ERROR; #else deflate_state *ds; @@ -1170,7 +1306,7 @@ int ZEXPORT deflateCopy (dest, source) ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte)); ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4); + ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, LIT_BUFS); if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || ds->pending_buf == Z_NULL) { @@ -1181,10 +1317,15 @@ int ZEXPORT deflateCopy (dest, source) zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); + zmemcpy(ds->pending_buf, ss->pending_buf, ds->lit_bufsize * LIT_BUFS); ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); +#ifdef LIT_MEM + ds->d_buf = (ushf *)(ds->pending_buf + (ds->lit_bufsize << 1)); + ds->l_buf = ds->pending_buf + (ds->lit_bufsize << 2); +#else ds->sym_buf = ds->pending_buf + ds->lit_bufsize; +#endif ds->l_desc.dyn_tree = ds->dyn_ltree; ds->d_desc.dyn_tree = ds->dyn_dtree; @@ -1194,71 +1335,6 @@ int ZEXPORT deflateCopy (dest, source) #endif /* MAXSEG_64K */ } -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->next_in buffer and copying from it. - * (See also flush_pending()). - */ -local unsigned read_buf(strm, buf, size) - z_streamp strm; - Bytef *buf; - unsigned size; -{ - unsigned len = strm->avail_in; - - if (len > size) len = size; - if (len == 0) return 0; - - strm->avail_in -= len; - - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) { - strm->adler = adler32(strm->adler, buf, len); - } -#ifdef GZIP - else if (strm->state->wrap == 2) { - strm->adler = crc32(strm->adler, buf, len); - } -#endif - strm->next_in += len; - strm->total_in += len; - - return len; -} - -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ -local void lm_init (s) - deflate_state *s; -{ - s->window_size = (ulg)2L*s->w_size; - - CLEAR_HASH(s); - - /* Set the default configuration parameters: - */ - s->max_lazy_match = configuration_table[s->level].max_lazy; - s->good_match = configuration_table[s->level].good_length; - s->nice_match = configuration_table[s->level].nice_length; - s->max_chain_length = configuration_table[s->level].max_chain; - - s->strstart = 0; - s->block_start = 0L; - s->lookahead = 0; - s->insert = 0; - s->match_length = s->prev_length = MIN_MATCH-1; - s->match_available = 0; - s->ins_h = 0; -#ifndef FASTEST -#ifdef ASMV - match_init(); /* initialize the asm code */ -#endif -#endif -} - #ifndef FASTEST /* =========================================================================== * Set match_start to the longest match starting at the given string and @@ -1269,14 +1345,7 @@ local void lm_init (s) * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 * OUT assertion: the match length is not greater than s->lookahead. */ -#ifndef ASMV -/* For 80x86 and 680x0, an optimized version will be provided in match.asm or - * match.S. The code will be functionally equivalent. - */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ +local uInt longest_match(deflate_state *s, IPos cur_match) { unsigned chain_length = s->max_chain_length;/* max hash chain length */ register Bytef *scan = s->window + s->strstart; /* current string */ register Bytef *match; /* matched string */ @@ -1297,10 +1366,10 @@ local uInt longest_match(s, cur_match) */ register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; register ush scan_start = *(ushf*)scan; - register ush scan_end = *(ushf*)(scan+best_len-1); + register ush scan_end = *(ushf*)(scan + best_len - 1); #else register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len-1]; + register Byte scan_end1 = scan[best_len - 1]; register Byte scan_end = scan[best_len]; #endif @@ -1318,7 +1387,8 @@ local uInt longest_match(s, cur_match) */ if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead; - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "need lookahead"); do { Assert(cur_match < s->strstart, "no future"); @@ -1336,43 +1406,44 @@ local uInt longest_match(s, cur_match) /* This code assumes sizeof(unsigned short) == 2. Do not use * UNALIGNED_OK if your compiler uses a different size. */ - if (*(ushf*)(match+best_len-1) != scan_end || + if (*(ushf*)(match + best_len - 1) != scan_end || *(ushf*)match != scan_start) continue; /* It is not necessary to compare scan[2] and match[2] since they are * always equal when the other bytes match, given that the hash keys * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at - * strstart+3, +5, ... up to strstart+257. We check for insufficient + * strstart + 3, + 5, up to strstart + 257. We check for insufficient * lookahead only every 4th comparison; the 128th check will be made - * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is + * at strstart + 257. If MAX_MATCH-2 is not a multiple of 8, it is * necessary to put more guard bytes at the end of the window, or * to check more often for insufficient lookahead. */ Assert(scan[2] == match[2], "scan[2]?"); scan++, match++; do { - } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && - *(ushf*)(scan+=2) == *(ushf*)(match+=2) && + } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && + *(ushf*)(scan += 2) == *(ushf*)(match += 2) && scan < strend); /* The funny "do {}" generates better code on most compilers */ - /* Here, scan <= window+strstart+257 */ - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + /* Here, scan <= window + strstart + 257 */ + Assert(scan <= s->window + (unsigned)(s->window_size - 1), + "wild scan"); if (*scan == *match) scan++; - len = (MAX_MATCH - 1) - (int)(strend-scan); + len = (MAX_MATCH - 1) - (int)(strend - scan); scan = strend - (MAX_MATCH-1); #else /* UNALIGNED_OK */ - if (match[best_len] != scan_end || - match[best_len-1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; + if (match[best_len] != scan_end || + match[best_len - 1] != scan_end1 || + *match != *scan || + *++match != scan[1]) continue; - /* The check at best_len-1 can be removed because it will be made + /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) * It is not necessary to compare scan[2] and match[2] since they * are always equal when the other bytes match, given that @@ -1382,7 +1453,7 @@ local uInt longest_match(s, cur_match) Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. + * the 256th check will be made at strstart + 258. */ do { } while (*++scan == *++match && *++scan == *++match && @@ -1391,7 +1462,8 @@ local uInt longest_match(s, cur_match) *++scan == *++match && *++scan == *++match && scan < strend); - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (unsigned)(s->window_size - 1), + "wild scan"); len = MAX_MATCH - (int)(strend - scan); scan = strend - MAX_MATCH; @@ -1403,9 +1475,9 @@ local uInt longest_match(s, cur_match) best_len = len; if (len >= nice_match) break; #ifdef UNALIGNED_OK - scan_end = *(ushf*)(scan+best_len-1); + scan_end = *(ushf*)(scan + best_len - 1); #else - scan_end1 = scan[best_len-1]; + scan_end1 = scan[best_len - 1]; scan_end = scan[best_len]; #endif } @@ -1415,17 +1487,13 @@ local uInt longest_match(s, cur_match) if ((uInt)best_len <= s->lookahead) return (uInt)best_len; return s->lookahead; } -#endif /* ASMV */ #else /* FASTEST */ /* --------------------------------------------------------------------------- * Optimized version for FASTEST only */ -local uInt longest_match(s, cur_match) - deflate_state *s; - IPos cur_match; /* current match */ -{ +local uInt longest_match(deflate_state *s, IPos cur_match) { register Bytef *scan = s->window + s->strstart; /* current string */ register Bytef *match; /* matched string */ register int len; /* length of current match */ @@ -1436,7 +1504,8 @@ local uInt longest_match(s, cur_match) */ Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead"); + Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, + "need lookahead"); Assert(cur_match < s->strstart, "no future"); @@ -1446,7 +1515,7 @@ local uInt longest_match(s, cur_match) */ if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1; - /* The check at best_len-1 can be removed because it will be made + /* The check at best_len - 1 can be removed because it will be made * again later. (This heuristic is not always a win.) * It is not necessary to compare scan[2] and match[2] since they * are always equal when the other bytes match, given that @@ -1456,7 +1525,7 @@ local uInt longest_match(s, cur_match) Assert(*scan == *match, "match[2]?"); /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. + * the 256th check will be made at strstart + 258. */ do { } while (*++scan == *++match && *++scan == *++match && @@ -1465,7 +1534,7 @@ local uInt longest_match(s, cur_match) *++scan == *++match && *++scan == *++match && scan < strend); - Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan"); len = MAX_MATCH - (int)(strend - scan); @@ -1485,23 +1554,27 @@ local uInt longest_match(s, cur_match) /* =========================================================================== * Check that the match at match_start is indeed a match. */ -local void check_match(s, start, match, length) - deflate_state *s; - IPos start, match; - int length; -{ +local void check_match(deflate_state *s, IPos start, IPos match, int length) { /* check that the match is indeed a match */ - if (zmemcmp(s->window + match, - s->window + start, length) != EQUAL) { - fprintf(stderr, " start %u, match %u, length %d\n", - start, match, length); + Bytef *back = s->window + (int)match, *here = s->window + start; + IPos len = length; + if (match == (IPos)-1) { + /* match starts one byte before the current window -- just compare the + subsequent length-1 bytes */ + back++; + here++; + len--; + } + if (zmemcmp(back, here, len) != EQUAL) { + fprintf(stderr, " start %u, match %d, length %d\n", + start, (int)match, length); do { - fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); - } while (--length != 0); + fprintf(stderr, "(%02x %02x)", *back++, *here++); + } while (--len != 0); z_error("invalid match"); } if (z_verbose > 1) { - fprintf(stderr,"\\[%d,%d]", start-match, length); + fprintf(stderr,"\\[%d,%d]", start - match, length); do { putc(s->window[start++], stderr); } while (--length != 0); } } @@ -1509,137 +1582,6 @@ local void check_match(s, start, match, length) # define check_match(s, start, match, length) #endif /* ZLIB_DEBUG */ -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ -local void fill_window(s) - deflate_state *s; -{ - unsigned n; - unsigned more; /* Amount of free space at the end of the window. */ - uInt wsize = s->w_size; - - Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); - - do { - more = (unsigned)(s->window_size -(ulg)s->lookahead -(ulg)s->strstart); - - /* Deal with !@#$% 64K limit: */ - if (sizeof(int) <= 2) { - if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - more = wsize; - - } else if (more == (unsigned)(-1)) { - /* Very unlikely, but possible on 16 bit machine if - * strstart == 0 && lookahead == 1 (input done a byte at time) - */ - more--; - } - } - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (s->strstart >= wsize+MAX_DIST(s)) { - - zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more); - s->match_start -= wsize; - s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ - s->block_start -= (long) wsize; - if (s->insert > s->strstart) - s->insert = s->strstart; - slide_hash(s); - more += wsize; - } - if (s->strm->avail_in == 0) break; - - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - Assert(more >= 2, "more < 2"); - - n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); - s->lookahead += n; - - /* Initialize the hash value now that we have some input: */ - if (s->lookahead + s->insert >= MIN_MATCH) { - uInt str = s->strstart - s->insert; - s->ins_h = s->window[str]; - UPDATE_HASH(s, s->ins_h, s->window[str + 1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH-3 more times -#endif - while (s->insert) { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - s->insert--; - if (s->lookahead + s->insert < MIN_MATCH) - break; - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); - - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ - if (s->high_water < s->window_size) { - ulg curr = s->strstart + (ulg)(s->lookahead); - ulg init; - - if (s->high_water < curr) { - /* Previous high water mark below current data -- zero WIN_INIT - * bytes or up to end of window, whichever is less. - */ - init = s->window_size - curr; - if (init > WIN_INIT) - init = WIN_INIT; - zmemzero(s->window + curr, (unsigned)init); - s->high_water = curr + init; - } - else if (s->high_water < (ulg)curr + WIN_INIT) { - /* High water mark at or above current data, but below current data - * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up - * to end of window, whichever is less. - */ - init = (ulg)curr + WIN_INIT - s->high_water; - if (init > s->window_size - s->high_water) - init = s->window_size - s->high_water; - zmemzero(s->window + s->high_water, (unsigned)init); - s->high_water += init; - } - } - - Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, - "not enough room for search"); -} - /* =========================================================================== * Flush the current block, with given end-of-file flag. * IN assertion: strstart is set to the end of the current match. @@ -1680,12 +1622,9 @@ local void fill_window(s) * * deflate_stored() is written to minimize the number of times an input byte is * copied. It is most efficient with large input and output buffers, which - * maximizes the opportunites to have a single copy from next_in to next_out. + * maximizes the opportunities to have a single copy from next_in to next_out. */ -local block_state deflate_stored(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_stored(deflate_state *s, int flush) { /* Smallest worthy block size when not flushing or finishing. By default * this is 32K. This can be as small as 507 bytes for memLevel == 1. For * large input and output buffers, the stored block size will be larger. @@ -1869,10 +1808,7 @@ local block_state deflate_stored(s, flush) * new strings in the dictionary only for unmatched strings or for short * matches. It is used only for the fast compression options. */ -local block_state deflate_fast(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_fast(deflate_state *s, int flush) { IPos hash_head; /* head of the hash chain */ int bflush; /* set if current block must be flushed */ @@ -1890,7 +1826,7 @@ local block_state deflate_fast(s, flush) if (s->lookahead == 0) break; /* flush the current block */ } - /* Insert the string window[strstart .. strstart+2] in the + /* Insert the string window[strstart .. strstart + 2] in the * dictionary, and set hash_head to the head of the hash chain: */ hash_head = NIL; @@ -1938,7 +1874,7 @@ local block_state deflate_fast(s, flush) s->strstart += s->match_length; s->match_length = 0; s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]); + UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); #if MIN_MATCH != 3 Call UPDATE_HASH() MIN_MATCH-3 more times #endif @@ -1949,7 +1885,7 @@ local block_state deflate_fast(s, flush) } else { /* No match, output a literal byte */ Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; } @@ -1971,10 +1907,7 @@ local block_state deflate_fast(s, flush) * evaluation for matches: a match is finally adopted only if there is * no better match at the next window position. */ -local block_state deflate_slow(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_slow(deflate_state *s, int flush) { IPos hash_head; /* head of hash chain */ int bflush; /* set if current block must be flushed */ @@ -1993,7 +1926,7 @@ local block_state deflate_slow(s, flush) if (s->lookahead == 0) break; /* flush the current block */ } - /* Insert the string window[strstart .. strstart+2] in the + /* Insert the string window[strstart .. strstart + 2] in the * dictionary, and set hash_head to the head of the hash chain: */ hash_head = NIL; @@ -2035,17 +1968,17 @@ local block_state deflate_slow(s, flush) uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; /* Do not insert strings in hash table beyond this. */ - check_match(s, s->strstart-1, s->prev_match, s->prev_length); + check_match(s, s->strstart - 1, s->prev_match, s->prev_length); - _tr_tally_dist(s, s->strstart -1 - s->prev_match, + _tr_tally_dist(s, s->strstart - 1 - s->prev_match, s->prev_length - MIN_MATCH, bflush); /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not + * strstart - 1 and strstart are already inserted. If there is not * enough lookahead, the last two strings are not inserted in * the hash table. */ - s->lookahead -= s->prev_length-1; + s->lookahead -= s->prev_length - 1; s->prev_length -= 2; do { if (++s->strstart <= max_insert) { @@ -2063,8 +1996,8 @@ local block_state deflate_slow(s, flush) * single literal. If there was a match but the current match * is longer, truncate the previous match to a single literal. */ - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); + Tracevv((stderr,"%c", s->window[s->strstart - 1])); + _tr_tally_lit(s, s->window[s->strstart - 1], bflush); if (bflush) { FLUSH_BLOCK_ONLY(s, 0); } @@ -2082,8 +2015,8 @@ local block_state deflate_slow(s, flush) } Assert (flush != Z_NO_FLUSH, "no flush?"); if (s->match_available) { - Tracevv((stderr,"%c", s->window[s->strstart-1])); - _tr_tally_lit(s, s->window[s->strstart-1], bflush); + Tracevv((stderr,"%c", s->window[s->strstart - 1])); + _tr_tally_lit(s, s->window[s->strstart - 1], bflush); s->match_available = 0; } s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1; @@ -2102,10 +2035,7 @@ local block_state deflate_slow(s, flush) * one. Do not maintain a hash table. (It will be regenerated if this run of * deflate switches away from Z_RLE.) */ -local block_state deflate_rle(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_rle(deflate_state *s, int flush) { int bflush; /* set if current block must be flushed */ uInt prev; /* byte at distance one to match */ Bytef *scan, *strend; /* scan goes up to strend for length of run */ @@ -2140,7 +2070,8 @@ local block_state deflate_rle(s, flush) if (s->match_length > s->lookahead) s->match_length = s->lookahead; } - Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan"); + Assert(scan <= s->window + (uInt)(s->window_size - 1), + "wild scan"); } /* Emit match if have run of MIN_MATCH or longer, else emit literal */ @@ -2155,7 +2086,7 @@ local block_state deflate_rle(s, flush) } else { /* No match, output a literal byte */ Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; } @@ -2175,10 +2106,7 @@ local block_state deflate_rle(s, flush) * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. * (It will be regenerated if this run of deflate switches away from Huffman.) */ -local block_state deflate_huff(s, flush) - deflate_state *s; - int flush; -{ +local block_state deflate_huff(deflate_state *s, int flush) { int bflush; /* set if current block must be flushed */ for (;;) { @@ -2195,7 +2123,7 @@ local block_state deflate_huff(s, flush) /* Output a literal byte */ s->match_length = 0; Tracevv((stderr,"%c", s->window[s->strstart])); - _tr_tally_lit (s, s->window[s->strstart], bflush); + _tr_tally_lit(s, s->window[s->strstart], bflush); s->lookahead--; s->strstart++; if (bflush) FLUSH_BLOCK(s, 0); diff --git a/etc/c/zlib/deflate.h b/etc/c/zlib/deflate.h index 17c226113b0..300c6ada62b 100644 --- a/etc/c/zlib/deflate.h +++ b/etc/c/zlib/deflate.h @@ -1,5 +1,5 @@ /* deflate.h -- internal compression state - * Copyright (C) 1995-2018 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -23,6 +23,10 @@ # define GZIP #endif +/* define LIT_MEM to slightly increase the speed of deflate (order 1% to 2%) at + the cost of a larger memory footprint */ +/* #define LIT_MEM */ + /* =========================================================================== * Internal compression state. */ @@ -217,7 +221,14 @@ typedef struct internal_state { /* Depth of each subtree used as tie breaker for trees of equal frequency */ +#ifdef LIT_MEM +# define LIT_BUFS 5 + ushf *d_buf; /* buffer for distances */ + uchf *l_buf; /* buffer for literals/lengths */ +#else +# define LIT_BUFS 4 uchf *sym_buf; /* buffer for distances and literals/lengths */ +#endif uInt lit_bufsize; /* Size of match buffer for literals/lengths. There are 4 reasons for @@ -239,7 +250,7 @@ typedef struct internal_state { * - I can't count above 4 */ - uInt sym_next; /* running index in sym_buf */ + uInt sym_next; /* running index in symbol buffer */ uInt sym_end; /* symbol table full when sym_next reaches this */ ulg opt_len; /* bit length of current block with optimal trees */ @@ -291,14 +302,14 @@ typedef struct internal_state { memory checker errors from longest match routines */ /* in trees.c */ -void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); -int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); -void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); -void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_align OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); +void ZLIB_INTERNAL _tr_init(deflate_state *s); +int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc); +void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, + ulg stored_len, int last); +void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s); +void ZLIB_INTERNAL _tr_align(deflate_state *s); +void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, + ulg stored_len, int last); #define d_code(dist) \ ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) @@ -318,6 +329,25 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, extern const uch ZLIB_INTERNAL _dist_code[]; #endif +#ifdef LIT_MEM +# define _tr_tally_lit(s, c, flush) \ + { uch cc = (c); \ + s->d_buf[s->sym_next] = 0; \ + s->l_buf[s->sym_next++] = cc; \ + s->dyn_ltree[cc].Freq++; \ + flush = (s->sym_next == s->sym_end); \ + } +# define _tr_tally_dist(s, distance, length, flush) \ + { uch len = (uch)(length); \ + ush dist = (ush)(distance); \ + s->d_buf[s->sym_next] = dist; \ + s->l_buf[s->sym_next++] = len; \ + dist--; \ + s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ + s->dyn_dtree[d_code(dist)].Freq++; \ + flush = (s->sym_next == s->sym_end); \ + } +#else # define _tr_tally_lit(s, c, flush) \ { uch cc = (c); \ s->sym_buf[s->sym_next++] = 0; \ @@ -329,14 +359,15 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, # define _tr_tally_dist(s, distance, length, flush) \ { uch len = (uch)(length); \ ush dist = (ush)(distance); \ - s->sym_buf[s->sym_next++] = dist; \ - s->sym_buf[s->sym_next++] = dist >> 8; \ + s->sym_buf[s->sym_next++] = (uch)dist; \ + s->sym_buf[s->sym_next++] = (uch)(dist >> 8); \ s->sym_buf[s->sym_next++] = len; \ dist--; \ s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ s->dyn_dtree[d_code(dist)].Freq++; \ flush = (s->sym_next == s->sym_end); \ } +#endif #else # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) # define _tr_tally_dist(s, distance, length, flush) \ diff --git a/etc/c/zlib/doc/algorithm.txt b/etc/c/zlib/doc/algorithm.txt index c97f495020b..029e5a31349 100644 --- a/etc/c/zlib/doc/algorithm.txt +++ b/etc/c/zlib/doc/algorithm.txt @@ -77,7 +77,7 @@ table took no time (and if you had infinite memory), then there would only be a first level table to cover all the way to the longest code. However, building the table ends up taking a lot longer for more bits since short codes are replicated many times in such a table. What inflate() does is -simply to make the number of bits in the first table a variable, and then +simply to make the number of bits in the first table a variable, and then to set that variable for the maximum speed. For inflate, which has 286 possible codes for the literal/length tree, the size diff --git a/etc/c/zlib/gzclose.c b/etc/c/zlib/gzclose.c index caeb99a3177..48d6a86f04b 100644 --- a/etc/c/zlib/gzclose.c +++ b/etc/c/zlib/gzclose.c @@ -8,9 +8,7 @@ /* gzclose() is in a separate file so that it is linked in only if it is used. That way the other gzclose functions can be used instead to avoid linking in unneeded compression or decompression routines. */ -int ZEXPORT gzclose(file) - gzFile file; -{ +int ZEXPORT gzclose(gzFile file) { #ifndef NO_GZCOMPRESS gz_statep state; diff --git a/etc/c/zlib/gzguts.h b/etc/c/zlib/gzguts.h index 12b808ca9fa..eba72085bb7 100644 --- a/etc/c/zlib/gzguts.h +++ b/etc/c/zlib/gzguts.h @@ -1,5 +1,5 @@ /* gzguts.h -- zlib internal header definitions for gz* operations - * Copyright (C) 2004-2019 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -7,9 +7,8 @@ # ifndef _LARGEFILE_SOURCE # define _LARGEFILE_SOURCE 1 # endif -# ifdef _FILE_OFFSET_BITS -# undef _FILE_OFFSET_BITS -# endif +# undef _FILE_OFFSET_BITS +# undef _TIME_BITS #endif #ifdef HAVE_HIDDEN @@ -119,8 +118,8 @@ /* gz* functions always use library allocation functions */ #ifndef STDC - extern voidp malloc OF((uInt size)); - extern void free OF((voidpf ptr)); + extern voidp malloc(uInt size); + extern void free(voidpf ptr); #endif /* get errno and strerror definition */ @@ -136,23 +135,12 @@ # endif #endif -/* C11 no longer allows implicit declaration of functions */ -#if defined(__DMC__) -#include -#elif defined(_MSC_VER) -#include -#else -ssize_t read(int, void*, size_t); -ssize_t write(int, const void*, size_t); -int close(int); -#endif - /* provide prototypes for these when building zlib without LFS */ #if !defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int); + ZEXTERN z_off64_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile); #endif /* default memLevel */ @@ -214,17 +202,13 @@ typedef struct { typedef gz_state FAR *gz_statep; /* shared functions */ -void ZLIB_INTERNAL gz_error OF((gz_statep, int, const char *)); +void ZLIB_INTERNAL gz_error(gz_statep, int, const char *); #if defined UNDER_CE -char ZLIB_INTERNAL *gz_strwinerror OF((DWORD error)); +char ZLIB_INTERNAL *gz_strwinerror(DWORD error); #endif /* GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t value -- needed when comparing unsigned to z_off64_t, which is signed (possible z_off64_t types off_t, off64_t, and long are all signed) */ -#ifdef INT_MAX -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > INT_MAX) -#else -unsigned ZLIB_INTERNAL gz_intmax OF((void)); -# define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) -#endif +unsigned ZLIB_INTERNAL gz_intmax(void); +#define GT_OFF(x) (sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax()) diff --git a/etc/c/zlib/gzlib.c b/etc/c/zlib/gzlib.c index 387e96806ac..c50a5202502 100644 --- a/etc/c/zlib/gzlib.c +++ b/etc/c/zlib/gzlib.c @@ -1,5 +1,5 @@ /* gzlib.c -- zlib functions common to reading and writing gzip files - * Copyright (C) 2004-2019 Mark Adler + * Copyright (C) 2004-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -15,10 +15,6 @@ #endif #endif -/* Local functions */ -local void gz_reset OF((gz_statep)); -local gzFile gz_open OF((const void *, int, const char *)); - #if defined UNDER_CE /* Map the Windows error number in ERROR to a locale-dependent error message @@ -30,9 +26,7 @@ local gzFile gz_open OF((const void *, int, const char *)); The gz_strwinerror function does not change the current setting of GetLastError. */ -char ZLIB_INTERNAL *gz_strwinerror (error) - DWORD error; -{ +char ZLIB_INTERNAL *gz_strwinerror(DWORD error) { static char buf[1024]; wchar_t *msgbuf; @@ -72,9 +66,7 @@ char ZLIB_INTERNAL *gz_strwinerror (error) #endif /* UNDER_CE */ /* Reset gzip file state */ -local void gz_reset(state) - gz_statep state; -{ +local void gz_reset(gz_statep state) { state->x.have = 0; /* no output data available */ if (state->mode == GZ_READ) { /* for reading ... */ state->eof = 0; /* not at end of file */ @@ -90,11 +82,7 @@ local void gz_reset(state) } /* Open a gzip file either by name or file descriptor. */ -local gzFile gz_open(path, fd, mode) - const void *path; - int fd; - const char *mode; -{ +local gzFile gz_open(const void *path, int fd, const char *mode) { gz_statep state; z_size_t len; int oflag; @@ -269,26 +257,17 @@ local gzFile gz_open(path, fd, mode) } /* -- see zlib.h -- */ -gzFile ZEXPORT gzopen(path, mode) - const char *path; - const char *mode; -{ +gzFile ZEXPORT gzopen(const char *path, const char *mode) { return gz_open(path, -1, mode); } /* -- see zlib.h -- */ -gzFile ZEXPORT gzopen64(path, mode) - const char *path; - const char *mode; -{ +gzFile ZEXPORT gzopen64(const char *path, const char *mode) { return gz_open(path, -1, mode); } /* -- see zlib.h -- */ -gzFile ZEXPORT gzdopen(fd, mode) - int fd; - const char *mode; -{ +gzFile ZEXPORT gzdopen(int fd, const char *mode) { char *path; /* identifier for error messages */ gzFile gz; @@ -306,19 +285,13 @@ gzFile ZEXPORT gzdopen(fd, mode) /* -- see zlib.h -- */ #ifdef WIDECHAR -gzFile ZEXPORT gzopen_w(path, mode) - const wchar_t *path; - const char *mode; -{ +gzFile ZEXPORT gzopen_w(const wchar_t *path, const char *mode) { return gz_open(path, -2, mode); } #endif /* -- see zlib.h -- */ -int ZEXPORT gzbuffer(file, size) - gzFile file; - unsigned size; -{ +int ZEXPORT gzbuffer(gzFile file, unsigned size) { gz_statep state; /* get internal structure and check integrity */ @@ -335,16 +308,14 @@ int ZEXPORT gzbuffer(file, size) /* check and set requested size */ if ((size << 1) < size) return -1; /* need to be able to double it */ - if (size < 2) - size = 2; /* need two bytes to check magic header */ + if (size < 8) + size = 8; /* needed to behave well with flushing */ state->want = size; return 0; } /* -- see zlib.h -- */ -int ZEXPORT gzrewind(file) - gzFile file; -{ +int ZEXPORT gzrewind(gzFile file) { gz_statep state; /* get internal structure */ @@ -365,11 +336,7 @@ int ZEXPORT gzrewind(file) } /* -- see zlib.h -- */ -z_off64_t ZEXPORT gzseek64(file, offset, whence) - gzFile file; - z_off64_t offset; - int whence; -{ +z_off64_t ZEXPORT gzseek64(gzFile file, z_off64_t offset, int whence) { unsigned n; z_off64_t ret; gz_statep state; @@ -442,11 +409,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence) } /* -- see zlib.h -- */ -z_off_t ZEXPORT gzseek(file, offset, whence) - gzFile file; - z_off_t offset; - int whence; -{ +z_off_t ZEXPORT gzseek(gzFile file, z_off_t offset, int whence) { z_off64_t ret; ret = gzseek64(file, (z_off64_t)offset, whence); @@ -454,9 +417,7 @@ z_off_t ZEXPORT gzseek(file, offset, whence) } /* -- see zlib.h -- */ -z_off64_t ZEXPORT gztell64(file) - gzFile file; -{ +z_off64_t ZEXPORT gztell64(gzFile file) { gz_statep state; /* get internal structure and check integrity */ @@ -471,9 +432,7 @@ z_off64_t ZEXPORT gztell64(file) } /* -- see zlib.h -- */ -z_off_t ZEXPORT gztell(file) - gzFile file; -{ +z_off_t ZEXPORT gztell(gzFile file) { z_off64_t ret; ret = gztell64(file); @@ -481,9 +440,7 @@ z_off_t ZEXPORT gztell(file) } /* -- see zlib.h -- */ -z_off64_t ZEXPORT gzoffset64(file) - gzFile file; -{ +z_off64_t ZEXPORT gzoffset64(gzFile file) { z_off64_t offset; gz_statep state; @@ -504,9 +461,7 @@ z_off64_t ZEXPORT gzoffset64(file) } /* -- see zlib.h -- */ -z_off_t ZEXPORT gzoffset(file) - gzFile file; -{ +z_off_t ZEXPORT gzoffset(gzFile file) { z_off64_t ret; ret = gzoffset64(file); @@ -514,9 +469,7 @@ z_off_t ZEXPORT gzoffset(file) } /* -- see zlib.h -- */ -int ZEXPORT gzeof(file) - gzFile file; -{ +int ZEXPORT gzeof(gzFile file) { gz_statep state; /* get internal structure and check integrity */ @@ -531,10 +484,7 @@ int ZEXPORT gzeof(file) } /* -- see zlib.h -- */ -const char * ZEXPORT gzerror(file, errnum) - gzFile file; - int *errnum; -{ +const char * ZEXPORT gzerror(gzFile file, int *errnum) { gz_statep state; /* get internal structure and check integrity */ @@ -552,9 +502,7 @@ const char * ZEXPORT gzerror(file, errnum) } /* -- see zlib.h -- */ -void ZEXPORT gzclearerr(file) - gzFile file; -{ +void ZEXPORT gzclearerr(gzFile file) { gz_statep state; /* get internal structure and check integrity */ @@ -578,11 +526,7 @@ void ZEXPORT gzclearerr(file) memory). Simply save the error message as a static string. If there is an allocation failure constructing the error message, then convert the error to out of memory. */ -void ZLIB_INTERNAL gz_error(state, err, msg) - gz_statep state; - int err; - const char *msg; -{ +void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg) { /* free previously allocated message and clear */ if (state->msg != NULL) { if (state->err != Z_MEM_ERROR) @@ -619,21 +563,20 @@ void ZLIB_INTERNAL gz_error(state, err, msg) #endif } -#ifndef INT_MAX /* portably return maximum value for an int (when limits.h presumed not available) -- we need to do this to cover cases where 2's complement not used, since C standard permits 1's complement and sign-bit representations, otherwise we could just use ((unsigned)-1) >> 1 */ -unsigned ZLIB_INTERNAL gz_intmax() -{ - unsigned p, q; - - p = 1; +unsigned ZLIB_INTERNAL gz_intmax(void) { +#ifdef INT_MAX + return INT_MAX; +#else + unsigned p = 1, q; do { q = p; p <<= 1; p++; } while (p > q); return q >> 1; -} #endif +} diff --git a/etc/c/zlib/gzread.c b/etc/c/zlib/gzread.c index 884c9bfe4cf..4168cbc8875 100644 --- a/etc/c/zlib/gzread.c +++ b/etc/c/zlib/gzread.c @@ -5,25 +5,12 @@ #include "gzguts.h" -/* Local functions */ -local int gz_load OF((gz_statep, unsigned char *, unsigned, unsigned *)); -local int gz_avail OF((gz_statep)); -local int gz_look OF((gz_statep)); -local int gz_decomp OF((gz_statep)); -local int gz_fetch OF((gz_statep)); -local int gz_skip OF((gz_statep, z_off64_t)); -local z_size_t gz_read OF((gz_statep, voidp, z_size_t)); - /* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from state->fd, and update state->eof, state->err, and state->msg as appropriate. This function needs to loop on read(), since read() is not guaranteed to read the number of bytes requested, depending on the type of descriptor. */ -local int gz_load(state, buf, len, have) - gz_statep state; - unsigned char *buf; - unsigned len; - unsigned *have; -{ +local int gz_load(gz_statep state, unsigned char *buf, unsigned len, + unsigned *have) { int ret; unsigned get, max = ((unsigned)-1 >> 2) + 1; @@ -53,9 +40,7 @@ local int gz_load(state, buf, len, have) If strm->avail_in != 0, then the current data is moved to the beginning of the input buffer, and then the remainder of the buffer is loaded with the available data from the input file. */ -local int gz_avail(state) - gz_statep state; -{ +local int gz_avail(gz_statep state) { unsigned got; z_streamp strm = &(state->strm); @@ -88,9 +73,7 @@ local int gz_avail(state) case, all further file reads will be directly to either the output buffer or a user buffer. If decompressing, the inflate state will be initialized. gz_look() will return 0 on success or -1 on failure. */ -local int gz_look(state) - gz_statep state; -{ +local int gz_look(gz_statep state) { z_streamp strm = &(state->strm); /* allocate read buffers and inflate memory */ @@ -157,11 +140,9 @@ local int gz_look(state) the output buffer is larger than the input buffer, which also assures space for gzungetc() */ state->x.next = state->out; - if (strm->avail_in) { - memcpy(state->x.next, strm->next_in, strm->avail_in); - state->x.have = strm->avail_in; - strm->avail_in = 0; - } + memcpy(state->x.next, strm->next_in, strm->avail_in); + state->x.have = strm->avail_in; + strm->avail_in = 0; state->how = COPY; state->direct = 1; return 0; @@ -172,9 +153,7 @@ local int gz_look(state) data. If the gzip stream completes, state->how is reset to LOOK to look for the next gzip stream or raw data, once state->x.have is depleted. Returns 0 on success, -1 on failure. */ -local int gz_decomp(state) - gz_statep state; -{ +local int gz_decomp(gz_statep state) { int ret = Z_OK; unsigned had; z_streamp strm = &(state->strm); @@ -226,9 +205,7 @@ local int gz_decomp(state) looked for to determine whether to copy or decompress. Returns -1 on error, otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the end of the input file has been reached and all data has been processed. */ -local int gz_fetch(state) - gz_statep state; -{ +local int gz_fetch(gz_statep state) { z_streamp strm = &(state->strm); do { @@ -256,10 +233,7 @@ local int gz_fetch(state) } /* Skip len uncompressed bytes of output. Return -1 on error, 0 on success. */ -local int gz_skip(state, len) - gz_statep state; - z_off64_t len; -{ +local int gz_skip(gz_statep state, z_off64_t len) { unsigned n; /* skip over len bytes or reach end-of-file, whichever comes first */ @@ -291,11 +265,7 @@ local int gz_skip(state, len) input. Return the number of bytes read. If zero is returned, either the end of file was reached, or there was an error. state->err must be consulted in that case to determine which. */ -local z_size_t gz_read(state, buf, len) - gz_statep state; - voidp buf; - z_size_t len; -{ +local z_size_t gz_read(gz_statep state, voidp buf, z_size_t len) { z_size_t got; unsigned n; @@ -372,11 +342,7 @@ local z_size_t gz_read(state, buf, len) } /* -- see zlib.h -- */ -int ZEXPORT gzread(file, buf, len) - gzFile file; - voidp buf; - unsigned len; -{ +int ZEXPORT gzread(gzFile file, voidp buf, unsigned len) { gz_statep state; /* get internal structure */ @@ -408,12 +374,7 @@ int ZEXPORT gzread(file, buf, len) } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfread(buf, size, nitems, file) - voidp buf; - z_size_t size; - z_size_t nitems; - gzFile file; -{ +z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, gzFile file) { z_size_t len; gz_statep state; @@ -444,9 +405,7 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file) #else # undef gzgetc #endif -int ZEXPORT gzgetc(file) - gzFile file; -{ +int ZEXPORT gzgetc(gzFile file) { unsigned char buf[1]; gz_statep state; @@ -471,17 +430,12 @@ int ZEXPORT gzgetc(file) return gz_read(state, buf, 1) < 1 ? -1 : buf[0]; } -int ZEXPORT gzgetc_(file) -gzFile file; -{ +int ZEXPORT gzgetc_(gzFile file) { return gzgetc(file); } /* -- see zlib.h -- */ -int ZEXPORT gzungetc(c, file) - int c; - gzFile file; -{ +int ZEXPORT gzungetc(int c, gzFile file) { gz_statep state; /* get internal structure */ @@ -489,6 +443,10 @@ int ZEXPORT gzungetc(c, file) return -1; state = (gz_statep)file; + /* in case this was just opened, set up the input buffer */ + if (state->mode == GZ_READ && state->how == LOOK && state->x.have == 0) + (void)gz_look(state); + /* check that we're reading and that there's no (serious) error */ if (state->mode != GZ_READ || (state->err != Z_OK && state->err != Z_BUF_ERROR)) @@ -538,11 +496,7 @@ int ZEXPORT gzungetc(c, file) } /* -- see zlib.h -- */ -char * ZEXPORT gzgets(file, buf, len) - gzFile file; - char *buf; - int len; -{ +char * ZEXPORT gzgets(gzFile file, char *buf, int len) { unsigned left, n; char *str; unsigned char *eol; @@ -602,9 +556,7 @@ char * ZEXPORT gzgets(file, buf, len) } /* -- see zlib.h -- */ -int ZEXPORT gzdirect(file) - gzFile file; -{ +int ZEXPORT gzdirect(gzFile file) { gz_statep state; /* get internal structure */ @@ -622,9 +574,7 @@ int ZEXPORT gzdirect(file) } /* -- see zlib.h -- */ -int ZEXPORT gzclose_r(file) - gzFile file; -{ +int ZEXPORT gzclose_r(gzFile file) { int ret, err; gz_statep state; diff --git a/etc/c/zlib/gzwrite.c b/etc/c/zlib/gzwrite.c index 9d74514a881..2940f5cd660 100644 --- a/etc/c/zlib/gzwrite.c +++ b/etc/c/zlib/gzwrite.c @@ -5,18 +5,10 @@ #include "gzguts.h" -/* Local functions */ -local int gz_init OF((gz_statep)); -local int gz_comp OF((gz_statep, int)); -local int gz_zero OF((gz_statep, z_off64_t)); -local z_size_t gz_write OF((gz_statep, voidpc, z_size_t)); - /* Initialize state for writing a gzip file. Mark initialization by setting state->size to non-zero. Return -1 on a memory allocation failure, or 0 on success. */ -local int gz_init(state) - gz_statep state; -{ +local int gz_init(gz_statep state) { int ret; z_streamp strm = &(state->strm); @@ -70,10 +62,7 @@ local int gz_init(state) deflate() flush value. If flush is Z_FINISH, then the deflate() state is reset to start a new gzip stream. If gz->direct is true, then simply write to the output file without compressing, and ignore flush. */ -local int gz_comp(state, flush) - gz_statep state; - int flush; -{ +local int gz_comp(gz_statep state, int flush) { int ret, writ; unsigned have, put, max = ((unsigned)-1 >> 2) + 1; z_streamp strm = &(state->strm); @@ -151,10 +140,7 @@ local int gz_comp(state, flush) /* Compress len zeros to output. Return -1 on a write error or memory allocation failure by gz_comp(), or 0 on success. */ -local int gz_zero(state, len) - gz_statep state; - z_off64_t len; -{ +local int gz_zero(gz_statep state, z_off64_t len) { int first; unsigned n; z_streamp strm = &(state->strm); @@ -184,11 +170,7 @@ local int gz_zero(state, len) /* Write len bytes from buf to file. Return the number of bytes written. If the returned value is less than len, then there was an error. */ -local z_size_t gz_write(state, buf, len) - gz_statep state; - voidpc buf; - z_size_t len; -{ +local z_size_t gz_write(gz_statep state, voidpc buf, z_size_t len) { z_size_t put = len; /* if len is zero, avoid unnecessary operations */ @@ -252,11 +234,7 @@ local z_size_t gz_write(state, buf, len) } /* -- see zlib.h -- */ -int ZEXPORT gzwrite(file, buf, len) - gzFile file; - voidpc buf; - unsigned len; -{ +int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len) { gz_statep state; /* get internal structure */ @@ -280,12 +258,8 @@ int ZEXPORT gzwrite(file, buf, len) } /* -- see zlib.h -- */ -z_size_t ZEXPORT gzfwrite(buf, size, nitems, file) - voidpc buf; - z_size_t size; - z_size_t nitems; - gzFile file; -{ +z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, z_size_t nitems, + gzFile file) { z_size_t len; gz_statep state; @@ -310,10 +284,7 @@ z_size_t ZEXPORT gzfwrite(buf, size, nitems, file) } /* -- see zlib.h -- */ -int ZEXPORT gzputc(file, c) - gzFile file; - int c; -{ +int ZEXPORT gzputc(gzFile file, int c) { unsigned have; unsigned char buf[1]; gz_statep state; @@ -358,10 +329,7 @@ int ZEXPORT gzputc(file, c) } /* -- see zlib.h -- */ -int ZEXPORT gzputs(file, s) - gzFile file; - const char *s; -{ +int ZEXPORT gzputs(gzFile file, const char *s) { z_size_t len, put; gz_statep state; @@ -388,8 +356,7 @@ int ZEXPORT gzputs(file, s) #include /* -- see zlib.h -- */ -int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) -{ +int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) { int len; unsigned left; char *next; @@ -460,8 +427,7 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va) return len; } -int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) -{ +int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) { va_list va; int ret; @@ -479,13 +445,10 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...) #else /* !STDC && !Z_HAVE_STDARG_H */ /* -- see zlib.h -- */ -int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20) - gzFile file; - const char *format; - int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, - a11, a12, a13, a14, a15, a16, a17, a18, a19, a20; -{ +int ZEXPORTVA gzprintf(gzFile file, const char *format, int a1, int a2, int a3, + int a4, int a5, int a6, int a7, int a8, int a9, int a10, + int a11, int a12, int a13, int a14, int a15, int a16, + int a17, int a18, int a19, int a20) { unsigned len, left; char *next; gz_statep state; @@ -567,10 +530,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, #endif /* -- see zlib.h -- */ -int ZEXPORT gzflush(file, flush) - gzFile file; - int flush; -{ +int ZEXPORT gzflush(gzFile file, int flush) { gz_statep state; /* get internal structure */ @@ -599,11 +559,7 @@ int ZEXPORT gzflush(file, flush) } /* -- see zlib.h -- */ -int ZEXPORT gzsetparams(file, level, strategy) - gzFile file; - int level; - int strategy; -{ +int ZEXPORT gzsetparams(gzFile file, int level, int strategy) { gz_statep state; z_streamp strm; @@ -614,7 +570,7 @@ int ZEXPORT gzsetparams(file, level, strategy) strm = &(state->strm); /* check that we're writing and that there's no error */ - if (state->mode != GZ_WRITE || state->err != Z_OK) + if (state->mode != GZ_WRITE || state->err != Z_OK || state->direct) return Z_STREAM_ERROR; /* if no change is requested, then do nothing */ @@ -641,9 +597,7 @@ int ZEXPORT gzsetparams(file, level, strategy) } /* -- see zlib.h -- */ -int ZEXPORT gzclose_w(file) - gzFile file; -{ +int ZEXPORT gzclose_w(gzFile file) { int ret = Z_OK; gz_statep state; diff --git a/etc/c/zlib/infback.c b/etc/c/zlib/infback.c index a390c58e816..e7b25b307a3 100644 --- a/etc/c/zlib/infback.c +++ b/etc/c/zlib/infback.c @@ -15,9 +15,6 @@ #include "inflate.h" #include "inffast.h" -/* function prototypes */ -local void fixedtables OF((struct inflate_state FAR *state)); - /* strm provides memory allocation functions in zalloc and zfree, or Z_NULL to use the library memory allocation functions. @@ -25,13 +22,9 @@ local void fixedtables OF((struct inflate_state FAR *state)); windowBits is in the range 8..15, and window is a user-supplied window and output buffer that is 2**windowBits bytes. */ -int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size) -z_streamp strm; -int windowBits; -unsigned char FAR *window; -const char *version; -int stream_size; -{ +int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, + unsigned char FAR *window, const char *version, + int stream_size) { struct inflate_state FAR *state; if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || @@ -66,6 +59,7 @@ int stream_size; state->window = window; state->wnext = 0; state->whave = 0; + state->sane = 1; return Z_OK; } @@ -79,9 +73,7 @@ int stream_size; used for threaded applications, since the rewriting of the tables and virgin may not be thread-safe. */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ +local void fixedtables(struct inflate_state FAR *state) { #ifdef BUILDFIXED static int virgin = 1; static code *lenfix, *distfix; @@ -247,13 +239,8 @@ struct inflate_state FAR *state; inflateBack() can also return Z_STREAM_ERROR if the input parameters are not correct, i.e. strm is Z_NULL or the state was not initialized. */ -int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc) -z_streamp strm; -in_func in; -void FAR *in_desc; -out_func out; -void FAR *out_desc; -{ +int ZEXPORT inflateBack(z_streamp strm, in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc) { struct inflate_state FAR *state; z_const unsigned char FAR *next; /* next input */ unsigned char FAR *put; /* next output */ @@ -605,33 +592,33 @@ void FAR *out_desc; break; case DONE: - /* inflate stream terminated properly -- write leftover output */ + /* inflate stream terminated properly */ ret = Z_STREAM_END; - if (left < state->wsize) { - if (out(out_desc, state->window, state->wsize - left)) - ret = Z_BUF_ERROR; - } goto inf_leave; case BAD: ret = Z_DATA_ERROR; goto inf_leave; - default: /* can't happen, but makes compilers happy */ + default: + /* can't happen, but makes compilers happy */ ret = Z_STREAM_ERROR; goto inf_leave; } - /* Return unused input */ + /* Write leftover output and return unused input */ inf_leave: + if (left < state->wsize) { + if (out(out_desc, state->window, state->wsize - left) && + ret == Z_STREAM_END) + ret = Z_BUF_ERROR; + } strm->next_in = next; strm->avail_in = have; return ret; } -int ZEXPORT inflateBackEnd(strm) -z_streamp strm; -{ +int ZEXPORT inflateBackEnd(z_streamp strm) { if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0) return Z_STREAM_ERROR; ZFREE(strm, strm->state); diff --git a/etc/c/zlib/inffast.c b/etc/c/zlib/inffast.c index 1fec7f363fa..9354676e786 100644 --- a/etc/c/zlib/inffast.c +++ b/etc/c/zlib/inffast.c @@ -47,10 +47,7 @@ requires strm->avail_out >= 258 for each loop to avoid checking for output space. */ -void ZLIB_INTERNAL inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ +void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start) { struct inflate_state FAR *state; z_const unsigned char FAR *in; /* local strm->next_in */ z_const unsigned char FAR *last; /* have enough input while in < last */ diff --git a/etc/c/zlib/inffast.h b/etc/c/zlib/inffast.h index e5c1aa4ca8c..49c6d156c5c 100644 --- a/etc/c/zlib/inffast.h +++ b/etc/c/zlib/inffast.h @@ -8,4 +8,4 @@ subject to change. Applications should only use zlib.h. */ -void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); +void ZLIB_INTERNAL inflate_fast(z_streamp strm, unsigned start); diff --git a/etc/c/zlib/inflate.c b/etc/c/zlib/inflate.c index 2a3c4fe9846..94ecff015a9 100644 --- a/etc/c/zlib/inflate.c +++ b/etc/c/zlib/inflate.c @@ -91,20 +91,7 @@ # endif #endif -/* function prototypes */ -local int inflateStateCheck OF((z_streamp strm)); -local void fixedtables OF((struct inflate_state FAR *state)); -local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, - unsigned copy)); -#ifdef BUILDFIXED - void makefixed OF((void)); -#endif -local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, - unsigned len)); - -local int inflateStateCheck(strm) -z_streamp strm; -{ +local int inflateStateCheck(z_streamp strm) { struct inflate_state FAR *state; if (strm == Z_NULL || strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) @@ -116,9 +103,7 @@ z_streamp strm; return 0; } -int ZEXPORT inflateResetKeep(strm) -z_streamp strm; -{ +int ZEXPORT inflateResetKeep(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -142,9 +127,7 @@ z_streamp strm; return Z_OK; } -int ZEXPORT inflateReset(strm) -z_streamp strm; -{ +int ZEXPORT inflateReset(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -155,10 +138,7 @@ z_streamp strm; return inflateResetKeep(strm); } -int ZEXPORT inflateReset2(strm, windowBits) -z_streamp strm; -int windowBits; -{ +int ZEXPORT inflateReset2(z_streamp strm, int windowBits) { int wrap; struct inflate_state FAR *state; @@ -168,6 +148,8 @@ int windowBits; /* extract wrap request from windowBits parameter */ if (windowBits < 0) { + if (windowBits < -15) + return Z_STREAM_ERROR; wrap = 0; windowBits = -windowBits; } @@ -193,12 +175,8 @@ int windowBits; return inflateReset(strm); } -int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) -z_streamp strm; -int windowBits; -const char *version; -int stream_size; -{ +int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, + const char *version, int stream_size) { int ret; struct inflate_state FAR *state; @@ -237,22 +215,17 @@ int stream_size; return ret; } -int ZEXPORT inflateInit_(strm, version, stream_size) -z_streamp strm; -const char *version; -int stream_size; -{ +int ZEXPORT inflateInit_(z_streamp strm, const char *version, + int stream_size) { return inflateInit2_(strm, DEF_WBITS, version, stream_size); } -int ZEXPORT inflatePrime(strm, bits, value) -z_streamp strm; -int bits; -int value; -{ +int ZEXPORT inflatePrime(z_streamp strm, int bits, int value) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; + if (bits == 0) + return Z_OK; state = (struct inflate_state FAR *)strm->state; if (bits < 0) { state->hold = 0; @@ -276,9 +249,7 @@ int value; used for threaded applications, since the rewriting of the tables and virgin may not be thread-safe. */ -local void fixedtables(state) -struct inflate_state FAR *state; -{ +local void fixedtables(struct inflate_state FAR *state) { #ifdef BUILDFIXED static int virgin = 1; static code *lenfix, *distfix; @@ -340,7 +311,7 @@ struct inflate_state FAR *state; a.out > inffixed.h */ -void makefixed() +void makefixed(void) { unsigned low, size; struct inflate_state state; @@ -394,11 +365,7 @@ void makefixed() output will fall in the output data, making match copies simpler and faster. The advantage may be dependent on the size of the processor's data caches. */ -local int updatewindow(strm, end, copy) -z_streamp strm; -const Bytef *end; -unsigned copy; -{ +local int updatewindow(z_streamp strm, const Bytef *end, unsigned copy) { struct inflate_state FAR *state; unsigned dist; @@ -620,10 +587,7 @@ unsigned copy; will return Z_BUF_ERROR if it has not reached the end of the stream. */ -int ZEXPORT inflate(strm, flush) -z_streamp strm; -int flush; -{ +int ZEXPORT inflate(z_streamp strm, int flush) { struct inflate_state FAR *state; z_const unsigned char FAR *next; /* next input */ unsigned char FAR *put; /* next output */ @@ -1299,9 +1263,7 @@ int flush; return ret; } -int ZEXPORT inflateEnd(strm) -z_streamp strm; -{ +int ZEXPORT inflateEnd(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1313,11 +1275,8 @@ z_streamp strm; return Z_OK; } -int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) -z_streamp strm; -Bytef *dictionary; -uInt *dictLength; -{ +int ZEXPORT inflateGetDictionary(z_streamp strm, Bytef *dictionary, + uInt *dictLength) { struct inflate_state FAR *state; /* check state */ @@ -1336,11 +1295,8 @@ uInt *dictLength; return Z_OK; } -int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) -z_streamp strm; -const Bytef *dictionary; -uInt dictLength; -{ +int ZEXPORT inflateSetDictionary(z_streamp strm, const Bytef *dictionary, + uInt dictLength) { struct inflate_state FAR *state; unsigned long dictid; int ret; @@ -1371,10 +1327,7 @@ uInt dictLength; return Z_OK; } -int ZEXPORT inflateGetHeader(strm, head) -z_streamp strm; -gz_headerp head; -{ +int ZEXPORT inflateGetHeader(z_streamp strm, gz_headerp head) { struct inflate_state FAR *state; /* check state */ @@ -1399,11 +1352,8 @@ gz_headerp head; called again with more data and the *have state. *have is initialized to zero for the first call. */ -local unsigned syncsearch(have, buf, len) -unsigned FAR *have; -const unsigned char FAR *buf; -unsigned len; -{ +local unsigned syncsearch(unsigned FAR *have, const unsigned char FAR *buf, + unsigned len) { unsigned got; unsigned next; @@ -1422,9 +1372,7 @@ unsigned len; return next; } -int ZEXPORT inflateSync(strm) -z_streamp strm; -{ +int ZEXPORT inflateSync(z_streamp strm) { unsigned len; /* number of bytes to look at or looked at */ int flags; /* temporary to save header status */ unsigned long in, out; /* temporary to save total_in and total_out */ @@ -1439,7 +1387,7 @@ z_streamp strm; /* if first time, start search in bit buffer */ if (state->mode != SYNC) { state->mode = SYNC; - state->hold <<= state->bits & 7; + state->hold >>= state->bits & 7; state->bits -= state->bits & 7; len = 0; while (state->bits >= 8) { @@ -1480,9 +1428,7 @@ z_streamp strm; block. When decompressing, PPP checks that at the end of input packet, inflate is waiting for these length bytes. */ -int ZEXPORT inflateSyncPoint(strm) -z_streamp strm; -{ +int ZEXPORT inflateSyncPoint(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1490,10 +1436,7 @@ z_streamp strm; return state->mode == STORED && state->bits == 0; } -int ZEXPORT inflateCopy(dest, source) -z_streamp dest; -z_streamp source; -{ +int ZEXPORT inflateCopy(z_streamp dest, z_streamp source) { struct inflate_state FAR *state; struct inflate_state FAR *copy; unsigned char FAR *window; @@ -1537,10 +1480,7 @@ z_streamp source; return Z_OK; } -int ZEXPORT inflateUndermine(strm, subvert) -z_streamp strm; -int subvert; -{ +int ZEXPORT inflateUndermine(z_streamp strm, int subvert) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1555,10 +1495,7 @@ int subvert; #endif } -int ZEXPORT inflateValidate(strm, check) -z_streamp strm; -int check; -{ +int ZEXPORT inflateValidate(z_streamp strm, int check) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return Z_STREAM_ERROR; @@ -1570,9 +1507,7 @@ int check; return Z_OK; } -long ZEXPORT inflateMark(strm) -z_streamp strm; -{ +long ZEXPORT inflateMark(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) @@ -1583,9 +1518,7 @@ z_streamp strm; (state->mode == MATCH ? state->was - state->length : 0)); } -unsigned long ZEXPORT inflateCodesUsed(strm) -z_streamp strm; -{ +unsigned long ZEXPORT inflateCodesUsed(z_streamp strm) { struct inflate_state FAR *state; if (inflateStateCheck(strm)) return (unsigned long)-1; state = (struct inflate_state FAR *)strm->state; diff --git a/etc/c/zlib/inftrees.c b/etc/c/zlib/inftrees.c index 09462a740b1..98cfe164458 100644 --- a/etc/c/zlib/inftrees.c +++ b/etc/c/zlib/inftrees.c @@ -1,5 +1,5 @@ /* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2022 Mark Adler + * Copyright (C) 1995-2024 Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -9,7 +9,7 @@ #define MAXBITS 15 const char inflate_copyright[] = - " inflate 1.2.12 Copyright 1995-2022 Mark Adler "; + " inflate 1.3.1 Copyright 1995-2024 Mark Adler "; /* If you use the zlib library in a product, an acknowledgment is welcome in the documentation of your product. If for some reason you cannot @@ -29,14 +29,9 @@ const char inflate_copyright[] = table index bits. It will differ if the request is greater than the longest code or if it is less than the shortest code. */ -int ZLIB_INTERNAL inflate_table(type, lens, codes, table, bits, work) -codetype type; -unsigned short FAR *lens; -unsigned codes; -code FAR * FAR *table; -unsigned FAR *bits; -unsigned short FAR *work; -{ +int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, + unsigned codes, code FAR * FAR *table, + unsigned FAR *bits, unsigned short FAR *work) { unsigned len; /* a code's length in bits */ unsigned sym; /* index of code symbols */ unsigned min, max; /* minimum and maximum code lengths */ @@ -62,7 +57,7 @@ unsigned short FAR *work; 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; static const unsigned short lext[31] = { /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 202}; + 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 203, 77}; static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, diff --git a/etc/c/zlib/inftrees.h b/etc/c/zlib/inftrees.h index baa53a0b1a1..396f74b5da7 100644 --- a/etc/c/zlib/inftrees.h +++ b/etc/c/zlib/inftrees.h @@ -38,11 +38,11 @@ typedef struct { /* Maximum size of the dynamic table. The maximum number of code structures is 1444, which is the sum of 852 for literal/length codes and 592 for distance codes. These values were found by exhaustive searches using the program - examples/enough.c found in the zlib distribtution. The arguments to that + examples/enough.c found in the zlib distribution. The arguments to that program are the number of symbols, the initial root table size, and the maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 30 6 15" for distance codes returns 592. - The initial root table size (9 or 6) is found in the fifth argument of the + returns 852, and "enough 30 6 15" for distance codes returns 592. The + initial root table size (9 or 6) is found in the fifth argument of the inflate_table() calls in inflate.c and infback.c. If the root table size is changed, then these maximum sizes would be need to be recalculated and updated. */ @@ -57,6 +57,6 @@ typedef enum { DISTS } codetype; -int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, - unsigned codes, code FAR * FAR *table, - unsigned FAR *bits, unsigned short FAR *work)); +int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, + unsigned codes, code FAR * FAR *table, + unsigned FAR *bits, unsigned short FAR *work); diff --git a/etc/c/zlib/test/example.c b/etc/c/zlib/test/example.c index 949f4f6256f..c3521dd5934 100644 --- a/etc/c/zlib/test/example.c +++ b/etc/c/zlib/test/example.c @@ -34,37 +34,14 @@ static z_const char hello[] = "hello, hello!"; static const char dictionary[] = "hello"; static uLong dictId; /* Adler32 value of the dictionary */ -void test_deflate OF((Byte *compr, uLong comprLen)); -void test_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_deflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_large_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_flush OF((Byte *compr, uLong *comprLen)); -void test_sync OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_dict_deflate OF((Byte *compr, uLong comprLen)); -void test_dict_inflate OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -int main OF((int argc, char *argv[])); - - #ifdef Z_SOLO -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ +static void *myalloc(void *q, unsigned n, unsigned m) { (void)q; return calloc(n, m); } -void myfree(void *q, void *p) -{ +static void myfree(void *q, void *p) { (void)q; free(p); } @@ -77,18 +54,11 @@ static free_func zfree = myfree; static alloc_func zalloc = (alloc_func)0; static free_func zfree = (free_func)0; -void test_compress OF((Byte *compr, uLong comprLen, - Byte *uncompr, uLong uncomprLen)); -void test_gzio OF((const char *fname, - Byte *uncompr, uLong uncomprLen)); - /* =========================================================================== * Test compress() and uncompress() */ -void test_compress(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_compress(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; uLong len = (uLong)strlen(hello)+1; @@ -111,11 +81,7 @@ void test_compress(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test read/write of .gz files */ -void test_gzio(fname, uncompr, uncomprLen) - const char *fname; /* compressed file name */ - Byte *uncompr; - uLong uncomprLen; -{ +static void test_gzio(const char *fname, Byte *uncompr, uLong uncomprLen) { #ifdef NO_GZCOMPRESS fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n"); #else @@ -197,10 +163,7 @@ void test_gzio(fname, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with small buffers */ -void test_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ +static void test_deflate(Byte *compr, uLong comprLen) { z_stream c_stream; /* compression stream */ int err; uLong len = (uLong)strlen(hello)+1; @@ -235,10 +198,8 @@ void test_deflate(compr, comprLen) /* =========================================================================== * Test inflate() with small buffers */ -void test_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_inflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -276,10 +237,8 @@ void test_inflate(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with large buffers and dynamic change of compression level */ -void test_large_deflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_large_deflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { z_stream c_stream; /* compression stream */ int err; @@ -308,7 +267,7 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen) /* Feed in already compressed data and switch to no compression: */ deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY); c_stream.next_in = compr; - c_stream.avail_in = (uInt)comprLen/2; + c_stream.avail_in = (uInt)uncomprLen/2; err = deflate(&c_stream, Z_NO_FLUSH); CHECK_ERR(err, "deflate"); @@ -331,10 +290,8 @@ void test_large_deflate(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test inflate() with large buffers */ -void test_large_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_large_inflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -361,7 +318,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen) err = inflateEnd(&d_stream); CHECK_ERR(err, "inflateEnd"); - if (d_stream.total_out != 2*uncomprLen + comprLen/2) { + if (d_stream.total_out != 2*uncomprLen + uncomprLen/2) { fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out); exit(1); } else { @@ -372,10 +329,7 @@ void test_large_inflate(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with full flush */ -void test_flush(compr, comprLen) - Byte *compr; - uLong *comprLen; -{ +static void test_flush(Byte *compr, uLong *comprLen) { z_stream c_stream; /* compression stream */ int err; uInt len = (uInt)strlen(hello)+1; @@ -410,10 +364,8 @@ void test_flush(compr, comprLen) /* =========================================================================== * Test inflateSync() */ -void test_sync(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_sync(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -453,10 +405,7 @@ void test_sync(compr, comprLen, uncompr, uncomprLen) /* =========================================================================== * Test deflate() with preset dictionary */ -void test_dict_deflate(compr, comprLen) - Byte *compr; - uLong comprLen; -{ +static void test_dict_deflate(Byte *compr, uLong comprLen) { z_stream c_stream; /* compression stream */ int err; @@ -490,10 +439,8 @@ void test_dict_deflate(compr, comprLen) /* =========================================================================== * Test inflate() with a preset dictionary */ -void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) - Byte *compr, *uncompr; - uLong comprLen, uncomprLen; -{ +static void test_dict_inflate(Byte *compr, uLong comprLen, Byte *uncompr, + uLong uncomprLen) { int err; z_stream d_stream; /* decompression stream */ @@ -541,13 +488,10 @@ void test_dict_inflate(compr, comprLen, uncompr, uncomprLen) * Usage: example [output.gz [input.gz]] */ -int main(argc, argv) - int argc; - char *argv[]; -{ +int main(int argc, char *argv[]) { Byte *compr, *uncompr; - uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */ - uLong uncomprLen = comprLen; + uLong uncomprLen = 20000; + uLong comprLen = 3 * uncomprLen; static const char* myVersion = ZLIB_VERSION; if (zlibVersion()[0] != myVersion[0]) { @@ -555,7 +499,8 @@ int main(argc, argv) exit(1); } else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) { - fprintf(stderr, "warning: different zlib version\n"); + fprintf(stderr, "warning: different zlib version linked: %s\n", + zlibVersion()); } printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n", @@ -589,7 +534,7 @@ int main(argc, argv) test_flush(compr, &comprLen); test_sync(compr, comprLen, uncompr, uncomprLen); - comprLen = uncomprLen; + comprLen = 3 * uncomprLen; test_dict_deflate(compr, comprLen); test_dict_inflate(compr, comprLen, uncompr, uncomprLen); diff --git a/etc/c/zlib/test/infcover.c b/etc/c/zlib/test/infcover.c index 2be01646cec..8912c403dd2 100644 --- a/etc/c/zlib/test/infcover.c +++ b/etc/c/zlib/test/infcover.c @@ -373,7 +373,7 @@ local void cover_support(void) mem_setup(&strm); strm.avail_in = 0; strm.next_in = Z_NULL; - ret = inflateInit_(&strm, ZLIB_VERSION - 1, (int)sizeof(z_stream)); + ret = inflateInit_(&strm, "!", (int)sizeof(z_stream)); assert(ret == Z_VERSION_ERROR); mem_done(&strm, "wrong version"); @@ -462,7 +462,8 @@ local unsigned pull(void *desc, unsigned char **buf) local int push(void *desc, unsigned char *buf, unsigned len) { - buf += len; + (void)buf; + (void)len; return desc != Z_NULL; /* force error if desc not null */ } diff --git a/etc/c/zlib/test/minigzip.c b/etc/c/zlib/test/minigzip.c index e22fb08c0a2..134e10e6c3e 100644 --- a/etc/c/zlib/test/minigzip.c +++ b/etc/c/zlib/test/minigzip.c @@ -59,7 +59,7 @@ #if !defined(Z_HAVE_UNISTD_H) && !defined(_LARGEFILE64_SOURCE) #ifndef WIN32 /* unlink already in stdio.h for WIN32 */ - extern int unlink OF((const char *)); + extern int unlink(const char *); #endif #endif @@ -149,20 +149,12 @@ static void pwinerror (s) # include /* for unlink() */ #endif -void *myalloc OF((void *, unsigned, unsigned)); -void myfree OF((void *, void *)); - -void *myalloc(q, n, m) - void *q; - unsigned n, m; -{ +static void *myalloc(void *q, unsigned n, unsigned m) { (void)q; return calloc(n, m); } -void myfree(q, p) - void *q, *p; -{ +static void myfree(void *q, void *p) { (void)q; free(p); } @@ -175,29 +167,7 @@ typedef struct gzFile_s { z_stream strm; } *gzFile; -gzFile gzopen OF((const char *, const char *)); -gzFile gzdopen OF((int, const char *)); -gzFile gz_open OF((const char *, int, const char *)); - -gzFile gzopen(path, mode) -const char *path; -const char *mode; -{ - return gz_open(path, -1, mode); -} - -gzFile gzdopen(fd, mode) -int fd; -const char *mode; -{ - return gz_open(NULL, fd, mode); -} - -gzFile gz_open(path, fd, mode) - const char *path; - int fd; - const char *mode; -{ +static gzFile gz_open(const char *path, int fd, const char *mode) { gzFile gz; int ret; @@ -231,13 +201,15 @@ gzFile gz_open(path, fd, mode) return gz; } -int gzwrite OF((gzFile, const void *, unsigned)); +static gzFile gzopen(const char *path, const char *mode) { + return gz_open(path, -1, mode); +} -int gzwrite(gz, buf, len) - gzFile gz; - const void *buf; - unsigned len; -{ +static gzFile gzdopen(int fd, const char *mode) { + return gz_open(NULL, fd, mode); +} + +static int gzwrite(gzFile gz, const void *buf, unsigned len) { z_stream *strm; unsigned char out[BUFLEN]; @@ -255,13 +227,7 @@ int gzwrite(gz, buf, len) return len; } -int gzread OF((gzFile, void *, unsigned)); - -int gzread(gz, buf, len) - gzFile gz; - void *buf; - unsigned len; -{ +static int gzread(gzFile gz, void *buf, unsigned len) { int ret; unsigned got; unsigned char in[1]; @@ -292,11 +258,7 @@ int gzread(gz, buf, len) return len - strm->avail_out; } -int gzclose OF((gzFile)); - -int gzclose(gz) - gzFile gz; -{ +static int gzclose(gzFile gz) { z_stream *strm; unsigned char out[BUFLEN]; @@ -321,12 +283,7 @@ int gzclose(gz) return Z_OK; } -const char *gzerror OF((gzFile, int *)); - -const char *gzerror(gz, err) - gzFile gz; - int *err; -{ +static const char *gzerror(gzFile gz, int *err) { *err = gz->err; return gz->msg; } @@ -335,67 +292,20 @@ const char *gzerror(gz, err) static char *prog; -void error OF((const char *msg)); -void gz_compress OF((FILE *in, gzFile out)); -#ifdef USE_MMAP -int gz_compress_mmap OF((FILE *in, gzFile out)); -#endif -void gz_uncompress OF((gzFile in, FILE *out)); -void file_compress OF((char *file, char *mode)); -void file_uncompress OF((char *file)); -int main OF((int argc, char *argv[])); - /* =========================================================================== * Display error message and exit */ -void error(msg) - const char *msg; -{ +static void error(const char *msg) { fprintf(stderr, "%s: %s\n", prog, msg); exit(1); } -/* =========================================================================== - * Compress input to output then close both files. - */ - -void gz_compress(in, out) - FILE *in; - gzFile out; -{ - local char buf[BUFLEN]; - int len; - int err; - -#ifdef USE_MMAP - /* Try first compressing with mmap. If mmap fails (minigzip used in a - * pipe), use the normal fread loop. - */ - if (gz_compress_mmap(in, out) == Z_OK) return; -#endif - for (;;) { - len = (int)fread(buf, 1, sizeof(buf), in); - if (ferror(in)) { - perror("fread"); - exit(1); - } - if (len == 0) break; - - if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); - } - fclose(in); - if (gzclose(out) != Z_OK) error("failed gzclose"); -} - #ifdef USE_MMAP /* MMAP version, Miguel Albrecht */ /* Try compressing the input file at once using mmap. Return Z_OK if - * if success, Z_ERRNO otherwise. + * success, Z_ERRNO otherwise. */ -int gz_compress_mmap(in, out) - FILE *in; - gzFile out; -{ +static int gz_compress_mmap(FILE *in, gzFile out) { int len; int err; int ifd = fileno(in); @@ -424,13 +334,39 @@ int gz_compress_mmap(in, out) } #endif /* USE_MMAP */ +/* =========================================================================== + * Compress input to output then close both files. + */ + +static void gz_compress(FILE *in, gzFile out) { + local char buf[BUFLEN]; + int len; + int err; + +#ifdef USE_MMAP + /* Try first compressing with mmap. If mmap fails (minigzip used in a + * pipe), use the normal fread loop. + */ + if (gz_compress_mmap(in, out) == Z_OK) return; +#endif + for (;;) { + len = (int)fread(buf, 1, sizeof(buf), in); + if (ferror(in)) { + perror("fread"); + exit(1); + } + if (len == 0) break; + + if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err)); + } + fclose(in); + if (gzclose(out) != Z_OK) error("failed gzclose"); +} + /* =========================================================================== * Uncompress input to output then close both files. */ -void gz_uncompress(in, out) - gzFile in; - FILE *out; -{ +static void gz_uncompress(gzFile in, FILE *out) { local char buf[BUFLEN]; int len; int err; @@ -454,10 +390,7 @@ void gz_uncompress(in, out) * Compress the given file: create a corresponding .gz file and remove the * original. */ -void file_compress(file, mode) - char *file; - char *mode; -{ +static void file_compress(char *file, char *mode) { local char outfile[MAX_NAME_LEN]; FILE *in; gzFile out; @@ -493,14 +426,12 @@ void file_compress(file, mode) /* =========================================================================== * Uncompress the given file and remove the original. */ -void file_uncompress(file) - char *file; -{ +static void file_uncompress(char *file) { local char buf[MAX_NAME_LEN]; char *infile, *outfile; FILE *out; gzFile in; - unsigned len = strlen(file); + z_size_t len = strlen(file); if (len + strlen(GZ_SUFFIX) >= sizeof(buf)) { fprintf(stderr, "%s: filename too long\n", prog); @@ -553,10 +484,7 @@ void file_uncompress(file) * -1 to -9 : compression level */ -int main(argc, argv) - int argc; - char *argv[]; -{ +int main(int argc, char *argv[]) { int copyout = 0; int uncompr = 0; gzFile file; diff --git a/etc/c/zlib/trees.c b/etc/c/zlib/trees.c index f73fd99c37b..6a523ef34e3 100644 --- a/etc/c/zlib/trees.c +++ b/etc/c/zlib/trees.c @@ -1,5 +1,5 @@ /* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2021 Jean-loup Gailly + * Copyright (C) 1995-2024 Jean-loup Gailly * detect_data_type() function provided freely by Cosmin Truta, 2006 * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -122,39 +122,116 @@ struct static_tree_desc_s { int max_length; /* max bit length for the codes */ }; -local const static_tree_desc static_l_desc = +#ifdef NO_INIT_GLOBAL_POINTERS +# define TCONST +#else +# define TCONST const +#endif + +local TCONST static_tree_desc static_l_desc = {static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS}; -local const static_tree_desc static_d_desc = +local TCONST static_tree_desc static_d_desc = {static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; -local const static_tree_desc static_bl_desc = +local TCONST static_tree_desc static_bl_desc = {(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; /* =========================================================================== - * Local (static) routines in this file. + * Output a short LSB first on the stream. + * IN assertion: there is enough room in pendingBuf. + */ +#define put_short(s, w) { \ + put_byte(s, (uch)((w) & 0xff)); \ + put_byte(s, (uch)((ush)(w) >> 8)); \ +} + +/* =========================================================================== + * Reverse the first len bits of a code, using straightforward code (a faster + * method would use a table) + * IN assertion: 1 <= len <= 15 + */ +local unsigned bi_reverse(unsigned code, int len) { + register unsigned res = 0; + do { + res |= code & 1; + code >>= 1, res <<= 1; + } while (--len > 0); + return res >> 1; +} + +/* =========================================================================== + * Flush the bit buffer, keeping at most 7 bits in it. + */ +local void bi_flush(deflate_state *s) { + if (s->bi_valid == 16) { + put_short(s, s->bi_buf); + s->bi_buf = 0; + s->bi_valid = 0; + } else if (s->bi_valid >= 8) { + put_byte(s, (Byte)s->bi_buf); + s->bi_buf >>= 8; + s->bi_valid -= 8; + } +} + +/* =========================================================================== + * Flush the bit buffer and align the output on a byte boundary + */ +local void bi_windup(deflate_state *s) { + if (s->bi_valid > 8) { + put_short(s, s->bi_buf); + } else if (s->bi_valid > 0) { + put_byte(s, (Byte)s->bi_buf); + } + s->bi_buf = 0; + s->bi_valid = 0; +#ifdef ZLIB_DEBUG + s->bits_sent = (s->bits_sent + 7) & ~7; +#endif +} + +/* =========================================================================== + * Generate the codes for a given tree and bit counts (which need not be + * optimal). + * IN assertion: the array bl_count contains the bit length statistics for + * the given tree and the field len is set for all tree elements. + * OUT assertion: the field code is set for all tree elements of non + * zero code length. */ +local void gen_codes(ct_data *tree, int max_code, ushf *bl_count) { + ush next_code[MAX_BITS+1]; /* next code value for each bit length */ + unsigned code = 0; /* running code value */ + int bits; /* bit index */ + int n; /* code index */ -local void tr_static_init OF((void)); -local void init_block OF((deflate_state *s)); -local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); -local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); -local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); -local void build_tree OF((deflate_state *s, tree_desc *desc)); -local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local int build_bl_tree OF((deflate_state *s)); -local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, - int blcodes)); -local void compress_block OF((deflate_state *s, const ct_data *ltree, - const ct_data *dtree)); -local int detect_data_type OF((deflate_state *s)); -local unsigned bi_reverse OF((unsigned code, int len)); -local void bi_windup OF((deflate_state *s)); -local void bi_flush OF((deflate_state *s)); + /* The distribution counts are first used to generate the code values + * without bit reversal. + */ + for (bits = 1; bits <= MAX_BITS; bits++) { + code = (code + bl_count[bits - 1]) << 1; + next_code[bits] = (ush)code; + } + /* Check that the bit counts in bl_count are consistent. The last code + * must be all ones. + */ + Assert (code + bl_count[MAX_BITS] - 1 == (1 << MAX_BITS) - 1, + "inconsistent bit counts"); + Tracev((stderr,"\ngen_codes: max_code %d ", max_code)); + + for (n = 0; n <= max_code; n++) { + int len = tree[n].Len; + if (len == 0) continue; + /* Now reverse the bits */ + tree[n].Code = (ush)bi_reverse(next_code[len]++, len); + + Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ", + n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len] - 1)); + } +} #ifdef GEN_TREES_H -local void gen_trees_header OF((void)); +local void gen_trees_header(void); #endif #ifndef ZLIB_DEBUG @@ -167,33 +244,18 @@ local void gen_trees_header OF((void)); send_bits(s, tree[c].Code, tree[c].Len); } #endif -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ -#define put_short(s, w) { \ - put_byte(s, (uch)((w) & 0xff)); \ - put_byte(s, (uch)((ush)(w) >> 8)); \ -} - /* =========================================================================== * Send a value on a given number of bits. * IN assertion: length <= 16 and value fits in length bits. */ #ifdef ZLIB_DEBUG -local void send_bits OF((deflate_state *s, int value, int length)); - -local void send_bits(s, value, length) - deflate_state *s; - int value; /* value to send */ - int length; /* number of bits */ -{ +local void send_bits(deflate_state *s, int value, int length) { Tracevv((stderr," l %2d v %4x ", length, value)); Assert(length > 0 && length <= 15, "invalid length"); s->bits_sent += (ulg)length; /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) + * (16 - bi_valid) bits from value, leaving (width - (16 - bi_valid)) * unused bits in value. */ if (s->bi_valid > (int)Buf_size - length) { @@ -229,8 +291,7 @@ local void send_bits(s, value, length) /* =========================================================================== * Initialize the various 'constant' tables. */ -local void tr_static_init() -{ +local void tr_static_init(void) { #if defined(GEN_TREES_H) || !defined(STDC) static int static_init_done = 0; int n; /* iterates over tree elements */ @@ -256,7 +317,7 @@ local void tr_static_init() length = 0; for (code = 0; code < LENGTH_CODES-1; code++) { base_length[code] = length; - for (n = 0; n < (1< dist code (0..29) */ dist = 0; for (code = 0 ; code < 16; code++) { base_dist[code] = dist; - for (n = 0; n < (1<>= 7; /* from now on, all distances are divided by 128 */ for ( ; code < D_CODES; code++) { base_dist[code] = dist << 7; - for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) { + for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { _dist_code[256 + dist++] = (uch)code; } } - Assert (dist == 256, "tr_static_init: 256+dist != 512"); + Assert (dist == 256, "tr_static_init: 256 + dist != 512"); /* Construct the codes of the static literal tree */ for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; @@ -312,7 +373,7 @@ local void tr_static_init() } /* =========================================================================== - * Genererate the file trees.h describing the static trees. + * Generate the file trees.h describing the static trees. */ #ifdef GEN_TREES_H # ifndef ZLIB_DEBUG @@ -321,10 +382,9 @@ local void tr_static_init() # define SEPARATOR(i, last, width) \ ((i) == (last)? "\n};\n\n" : \ - ((i) % (width) == (width)-1 ? ",\n" : ", ")) + ((i) % (width) == (width) - 1 ? ",\n" : ", ")) -void gen_trees_header() -{ +void gen_trees_header(void) { FILE *header = fopen("trees.h", "w"); int i; @@ -373,12 +433,26 @@ void gen_trees_header() } #endif /* GEN_TREES_H */ +/* =========================================================================== + * Initialize a new block. + */ +local void init_block(deflate_state *s) { + int n; /* iterates over tree elements */ + + /* Initialize the trees. */ + for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; + for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; + for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; + + s->dyn_ltree[END_BLOCK].Freq = 1; + s->opt_len = s->static_len = 0L; + s->sym_next = s->matches = 0; +} + /* =========================================================================== * Initialize the tree data structures for a new zlib stream. */ -void ZLIB_INTERNAL _tr_init(s) - deflate_state *s; -{ +void ZLIB_INTERNAL _tr_init(deflate_state *s) { tr_static_init(); s->l_desc.dyn_tree = s->dyn_ltree; @@ -401,24 +475,6 @@ void ZLIB_INTERNAL _tr_init(s) init_block(s); } -/* =========================================================================== - * Initialize a new block. - */ -local void init_block(s) - deflate_state *s; -{ - int n; /* iterates over tree elements */ - - /* Initialize the trees. */ - for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; - for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; - for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; - - s->dyn_ltree[END_BLOCK].Freq = 1; - s->opt_len = s->static_len = 0L; - s->sym_next = s->matches = 0; -} - #define SMALLEST 1 /* Index within the heap array of least frequent node in the Huffman tree */ @@ -448,17 +504,13 @@ local void init_block(s) * when the heap property is re-established (each father smaller than its * two sons). */ -local void pqdownheap(s, tree, k) - deflate_state *s; - ct_data *tree; /* the tree to restore */ - int k; /* node to move down */ -{ +local void pqdownheap(deflate_state *s, ct_data *tree, int k) { int v = s->heap[k]; int j = k << 1; /* left son of k */ while (j <= s->heap_len) { /* Set j to the smallest of the two sons: */ if (j < s->heap_len && - smaller(tree, s->heap[j+1], s->heap[j], s->depth)) { + smaller(tree, s->heap[j + 1], s->heap[j], s->depth)) { j++; } /* Exit if v is smaller than both sons */ @@ -483,10 +535,7 @@ local void pqdownheap(s, tree, k) * The length opt_len is updated; static_len is also updated if stree is * not null. */ -local void gen_bitlen(s, desc) - deflate_state *s; - tree_desc *desc; /* the tree descriptor */ -{ +local void gen_bitlen(deflate_state *s, tree_desc *desc) { ct_data *tree = desc->dyn_tree; int max_code = desc->max_code; const ct_data *stree = desc->stat_desc->static_tree; @@ -507,7 +556,7 @@ local void gen_bitlen(s, desc) */ tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ - for (h = s->heap_max+1; h < HEAP_SIZE; h++) { + for (h = s->heap_max + 1; h < HEAP_SIZE; h++) { n = s->heap[h]; bits = tree[tree[n].Dad].Len + 1; if (bits > max_length) bits = max_length, overflow++; @@ -518,7 +567,7 @@ local void gen_bitlen(s, desc) s->bl_count[bits]++; xbits = 0; - if (n >= base) xbits = extra[n-base]; + if (n >= base) xbits = extra[n - base]; f = tree[n].Freq; s->opt_len += (ulg)f * (unsigned)(bits + xbits); if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits); @@ -530,10 +579,10 @@ local void gen_bitlen(s, desc) /* Find the first bit length which could increase: */ do { - bits = max_length-1; + bits = max_length - 1; while (s->bl_count[bits] == 0) bits--; - s->bl_count[bits]--; /* move one leaf down the tree */ - s->bl_count[bits+1] += 2; /* move one overflow item as its brother */ + s->bl_count[bits]--; /* move one leaf down the tree */ + s->bl_count[bits + 1] += 2; /* move one overflow item as its brother */ s->bl_count[max_length]--; /* The brother of the overflow item also moves one step up, * but this does not affect bl_count[max_length] @@ -561,48 +610,9 @@ local void gen_bitlen(s, desc) } } -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ -local void gen_codes (tree, max_code, bl_count) - ct_data *tree; /* the tree to decorate */ - int max_code; /* largest code with non zero frequency */ - ushf *bl_count; /* number of codes at each bit length */ -{ - ush next_code[MAX_BITS+1]; /* next code value for each bit length */ - unsigned code = 0; /* running code value */ - int bits; /* bit index */ - int n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS; bits++) { - code = (code + bl_count[bits-1]) << 1; - next_code[bits] = (ush)code; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - Assert (code + bl_count[MAX_BITS]-1 == (1< +#endif /* =========================================================================== * Construct one Huffman tree and assigns the code bit strings and lengths. @@ -612,10 +622,7 @@ local void gen_codes (tree, max_code, bl_count) * and corresponding code. The length opt_len is updated; static_len is * also updated if stree is not null. The field max_code is set. */ -local void build_tree(s, desc) - deflate_state *s; - tree_desc *desc; /* the tree descriptor */ -{ +local void build_tree(deflate_state *s, tree_desc *desc) { ct_data *tree = desc->dyn_tree; const ct_data *stree = desc->stat_desc->static_tree; int elems = desc->stat_desc->elems; @@ -624,7 +631,7 @@ local void build_tree(s, desc) int node; /* new node being created */ /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. + * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n + 1]. * heap[0] is not used. */ s->heap_len = 0, s->heap_max = HEAP_SIZE; @@ -652,7 +659,7 @@ local void build_tree(s, desc) } desc->max_code = max_code; - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, + /* The elements heap[heap_len/2 + 1 .. heap_len] are leaves of the tree, * establish sub-heaps of increasing lengths: */ for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n); @@ -700,11 +707,7 @@ local void build_tree(s, desc) * Scan a literal or distance tree to determine the frequencies of the codes * in the bit length tree. */ -local void scan_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ +local void scan_tree(deflate_state *s, ct_data *tree, int max_code) { int n; /* iterates over all tree elements */ int prevlen = -1; /* last emitted length */ int curlen; /* length of current code */ @@ -714,10 +717,10 @@ local void scan_tree (s, tree, max_code) int min_count = 4; /* min repeat count */ if (nextlen == 0) max_count = 138, min_count = 3; - tree[max_code+1].Len = (ush)0xffff; /* guard */ + tree[max_code + 1].Len = (ush)0xffff; /* guard */ for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; + curlen = nextlen; nextlen = tree[n + 1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { @@ -745,11 +748,7 @@ local void scan_tree (s, tree, max_code) * Send a literal or distance tree in compressed form, using the codes in * bl_tree. */ -local void send_tree (s, tree, max_code) - deflate_state *s; - ct_data *tree; /* the tree to be scanned */ - int max_code; /* and its largest code of non zero frequency */ -{ +local void send_tree(deflate_state *s, ct_data *tree, int max_code) { int n; /* iterates over all tree elements */ int prevlen = -1; /* last emitted length */ int curlen; /* length of current code */ @@ -758,11 +757,11 @@ local void send_tree (s, tree, max_code) int max_count = 7; /* max repeat count */ int min_count = 4; /* min repeat count */ - /* tree[max_code+1].Len = -1; */ /* guard already set */ + /* tree[max_code + 1].Len = -1; */ /* guard already set */ if (nextlen == 0) max_count = 138, min_count = 3; for (n = 0; n <= max_code; n++) { - curlen = nextlen; nextlen = tree[n+1].Len; + curlen = nextlen; nextlen = tree[n + 1].Len; if (++count < max_count && curlen == nextlen) { continue; } else if (count < min_count) { @@ -773,13 +772,13 @@ local void send_tree (s, tree, max_code) send_code(s, curlen, s->bl_tree); count--; } Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2); + send_code(s, REP_3_6, s->bl_tree); send_bits(s, count - 3, 2); } else if (count <= 10) { - send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3); + send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count - 3, 3); } else { - send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7); + send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count - 11, 7); } count = 0; prevlen = curlen; if (nextlen == 0) { @@ -796,9 +795,7 @@ local void send_tree (s, tree, max_code) * Construct the Huffman tree for the bit lengths and return the index in * bl_order of the last bit length code to send. */ -local int build_bl_tree(s) - deflate_state *s; -{ +local int build_bl_tree(deflate_state *s) { int max_blindex; /* index of last bit length code of non zero freq */ /* Determine the bit length frequencies for literal and distance trees */ @@ -807,8 +804,8 @@ local int build_bl_tree(s) /* Build the bit length tree: */ build_tree(s, (tree_desc *)(&(s->bl_desc))); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. + /* opt_len now includes the length of the tree representations, except the + * lengths of the bit lengths codes and the 5 + 5 + 4 bits for the counts. */ /* Determine the number of bit length codes to send. The pkzip format @@ -819,7 +816,7 @@ local int build_bl_tree(s) if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; } /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4; + s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4; Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", s->opt_len, s->static_len)); @@ -831,42 +828,36 @@ local int build_bl_tree(s) * lengths of the bit length codes, the literal tree and the distance tree. * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. */ -local void send_all_trees(s, lcodes, dcodes, blcodes) - deflate_state *s; - int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ +local void send_all_trees(deflate_state *s, int lcodes, int dcodes, + int blcodes) { int rank; /* index in bl_order */ Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, "too many codes"); Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes-1, 5); - send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */ + send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ + send_bits(s, dcodes - 1, 5); + send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ for (rank = 0; rank < blcodes; rank++) { Tracev((stderr, "\nbl code %2d ", bl_order[rank])); send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); } Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */ + send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */ + send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); } /* =========================================================================== * Send a stored block */ -void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */ +void ZLIB_INTERNAL _tr_stored_block(deflate_state *s, charf *buf, + ulg stored_len, int last) { + send_bits(s, (STORED_BLOCK<<1) + last, 3); /* send block type */ bi_windup(s); /* align on byte boundary */ put_short(s, (ush)stored_len); put_short(s, (ush)~stored_len); @@ -877,16 +868,14 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; s->compressed_len += (stored_len + 4) << 3; s->bits_sent += 2*16; - s->bits_sent += stored_len<<3; + s->bits_sent += stored_len << 3; #endif } /* =========================================================================== * Flush the bits in the bit buffer to pending output (leaves at most 7 bits) */ -void ZLIB_INTERNAL _tr_flush_bits(s) - deflate_state *s; -{ +void ZLIB_INTERNAL _tr_flush_bits(deflate_state *s) { bi_flush(s); } @@ -894,9 +883,7 @@ void ZLIB_INTERNAL _tr_flush_bits(s) * Send one empty static block to give enough lookahead for inflate. * This takes 10 bits, of which 7 may remain in the bit buffer. */ -void ZLIB_INTERNAL _tr_align(s) - deflate_state *s; -{ +void ZLIB_INTERNAL _tr_align(deflate_state *s) { send_bits(s, STATIC_TREES<<1, 3); send_code(s, END_BLOCK, static_ltree); #ifdef ZLIB_DEBUG @@ -905,16 +892,108 @@ void ZLIB_INTERNAL _tr_align(s) bi_flush(s); } +/* =========================================================================== + * Send the block data compressed using the given Huffman trees + */ +local void compress_block(deflate_state *s, const ct_data *ltree, + const ct_data *dtree) { + unsigned dist; /* distance of matched string */ + int lc; /* match length or unmatched char (if dist == 0) */ + unsigned sx = 0; /* running index in symbol buffers */ + unsigned code; /* the code to send */ + int extra; /* number of extra bits to send */ + + if (s->sym_next != 0) do { +#ifdef LIT_MEM + dist = s->d_buf[sx]; + lc = s->l_buf[sx++]; +#else + dist = s->sym_buf[sx++] & 0xff; + dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; + lc = s->sym_buf[sx++]; +#endif + if (dist == 0) { + send_code(s, lc, ltree); /* send a literal byte */ + Tracecv(isgraph(lc), (stderr," '%c' ", lc)); + } else { + /* Here, lc is the match length - MIN_MATCH */ + code = _length_code[lc]; + send_code(s, code + LITERALS + 1, ltree); /* send length code */ + extra = extra_lbits[code]; + if (extra != 0) { + lc -= base_length[code]; + send_bits(s, lc, extra); /* send the extra length bits */ + } + dist--; /* dist is now the match distance - 1 */ + code = d_code(dist); + Assert (code < D_CODES, "bad d_code"); + + send_code(s, code, dtree); /* send the distance code */ + extra = extra_dbits[code]; + if (extra != 0) { + dist -= (unsigned)base_dist[code]; + send_bits(s, dist, extra); /* send the extra distance bits */ + } + } /* literal or match pair ? */ + + /* Check for no overlay of pending_buf on needed symbols */ +#ifdef LIT_MEM + Assert(s->pending < 2 * (s->lit_bufsize + sx), "pendingBuf overflow"); +#else + Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); +#endif + + } while (sx < s->sym_next); + + send_code(s, END_BLOCK, ltree); +} + +/* =========================================================================== + * Check if the data type is TEXT or BINARY, using the following algorithm: + * - TEXT if the two conditions below are satisfied: + * a) There are no non-portable control characters belonging to the + * "block list" (0..6, 14..25, 28..31). + * b) There is at least one printable character belonging to the + * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). + * - BINARY otherwise. + * - The following partially-portable control characters form a + * "gray list" that is ignored in this detection algorithm: + * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). + * IN assertion: the fields Freq of dyn_ltree are set. + */ +local int detect_data_type(deflate_state *s) { + /* block_mask is the bit mask of block-listed bytes + * set bits 0..6, 14..25, and 28..31 + * 0xf3ffc07f = binary 11110011111111111100000001111111 + */ + unsigned long block_mask = 0xf3ffc07fUL; + int n; + + /* Check for non-textual ("block-listed") bytes. */ + for (n = 0; n <= 31; n++, block_mask >>= 1) + if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0)) + return Z_BINARY; + + /* Check for textual ("allow-listed") bytes. */ + if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 + || s->dyn_ltree[13].Freq != 0) + return Z_TEXT; + for (n = 32; n < LITERALS; n++) + if (s->dyn_ltree[n].Freq != 0) + return Z_TEXT; + + /* There are no "block-listed" or "allow-listed" bytes: + * this stream either is empty or has tolerated ("gray-listed") bytes only. + */ + return Z_BINARY; +} + /* =========================================================================== * Determine the best encoding for the current block: dynamic trees, static * trees or store, and write out the encoded block. */ -void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) - deflate_state *s; - charf *buf; /* input block, or NULL if too old */ - ulg stored_len; /* length of input block */ - int last; /* one if this is the last block for a file */ -{ +void ZLIB_INTERNAL _tr_flush_block(deflate_state *s, charf *buf, + ulg stored_len, int last) { ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ int max_blindex = 0; /* index of last bit length code of non zero freq */ @@ -943,14 +1022,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) max_blindex = build_bl_tree(s); /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s->opt_len+3+7)>>3; - static_lenb = (s->static_len+3+7)>>3; + opt_lenb = (s->opt_len + 3 + 7) >> 3; + static_lenb = (s->static_len + 3 + 7) >> 3; Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ", opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, s->sym_next / 3)); - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; +#ifndef FORCE_STATIC + if (static_lenb <= opt_lenb || s->strategy == Z_FIXED) +#endif + opt_lenb = static_lenb; } else { Assert(buf != (char*)0, "lost buf"); @@ -960,7 +1042,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) #ifdef FORCE_STORED if (buf != (char*)0) { /* force stored block */ #else - if (stored_len+4 <= opt_lenb && buf != (char*)0) { + if (stored_len + 4 <= opt_lenb && buf != (char*)0) { /* 4: two words for the lengths */ #endif /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. @@ -971,21 +1053,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) */ _tr_stored_block(s, buf, stored_len, last); -#ifdef FORCE_STATIC - } else if (static_lenb >= 0) { /* force static trees */ -#else - } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { -#endif - send_bits(s, (STATIC_TREES<<1)+last, 3); + } else if (static_lenb == opt_lenb) { + send_bits(s, (STATIC_TREES<<1) + last, 3); compress_block(s, (const ct_data *)static_ltree, (const ct_data *)static_dtree); #ifdef ZLIB_DEBUG s->compressed_len += 3 + s->static_len; #endif } else { - send_bits(s, (DYN_TREES<<1)+last, 3); - send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, - max_blindex+1); + send_bits(s, (DYN_TREES<<1) + last, 3); + send_all_trees(s, s->l_desc.max_code + 1, s->d_desc.max_code + 1, + max_blindex + 1); compress_block(s, (const ct_data *)s->dyn_ltree, (const ct_data *)s->dyn_dtree); #ifdef ZLIB_DEBUG @@ -1004,22 +1082,23 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) s->compressed_len += 7; /* align on byte boundary */ #endif } - Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3, - s->compressed_len-7*last)); + Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3, + s->compressed_len - 7*last)); } /* =========================================================================== * Save the match info and tally the frequency counts. Return true if * the current block must be flushed. */ -int ZLIB_INTERNAL _tr_tally (s, dist, lc) - deflate_state *s; - unsigned dist; /* distance of matched string */ - unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ -{ - s->sym_buf[s->sym_next++] = dist; - s->sym_buf[s->sym_next++] = dist >> 8; - s->sym_buf[s->sym_next++] = lc; +int ZLIB_INTERNAL _tr_tally(deflate_state *s, unsigned dist, unsigned lc) { +#ifdef LIT_MEM + s->d_buf[s->sym_next] = (ush)dist; + s->l_buf[s->sym_next++] = (uch)lc; +#else + s->sym_buf[s->sym_next++] = (uch)dist; + s->sym_buf[s->sym_next++] = (uch)(dist >> 8); + s->sym_buf[s->sym_next++] = (uch)lc; +#endif if (dist == 0) { /* lc is the unmatched char */ s->dyn_ltree[lc].Freq++; @@ -1031,152 +1110,8 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc) (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) && (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++; + s->dyn_ltree[_length_code[lc] + LITERALS + 1].Freq++; s->dyn_dtree[d_code(dist)].Freq++; } return (s->sym_next == s->sym_end); } - -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ -local void compress_block(s, ltree, dtree) - deflate_state *s; - const ct_data *ltree; /* literal tree */ - const ct_data *dtree; /* distance tree */ -{ - unsigned dist; /* distance of matched string */ - int lc; /* match length or unmatched char (if dist == 0) */ - unsigned sx = 0; /* running index in sym_buf */ - unsigned code; /* the code to send */ - int extra; /* number of extra bits to send */ - - if (s->sym_next != 0) do { - dist = s->sym_buf[sx++] & 0xff; - dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8; - lc = s->sym_buf[sx++]; - if (dist == 0) { - send_code(s, lc, ltree); /* send a literal byte */ - Tracecv(isgraph(lc), (stderr," '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code+LITERALS+1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra != 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - Assert (code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra != 0) { - dist -= (unsigned)base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and sym_buf is ok: */ - Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow"); - - } while (sx < s->sym_next); - - send_code(s, END_BLOCK, ltree); -} - -/* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "block list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. - */ -local int detect_data_type(s) - deflate_state *s; -{ - /* block_mask is the bit mask of block-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - unsigned long block_mask = 0xf3ffc07fUL; - int n; - - /* Check for non-textual ("block-listed") bytes. */ - for (n = 0; n <= 31; n++, block_mask >>= 1) - if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0)) - return Z_BINARY; - - /* Check for textual ("allow-listed") bytes. */ - if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 - || s->dyn_ltree[13].Freq != 0) - return Z_TEXT; - for (n = 32; n < LITERALS; n++) - if (s->dyn_ltree[n].Freq != 0) - return Z_TEXT; - - /* There are no "block-listed" or "allow-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; -} - -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ -local unsigned bi_reverse(code, len) - unsigned code; /* the value to invert */ - int len; /* its bit length */ -{ - register unsigned res = 0; - do { - res |= code & 1; - code >>= 1, res <<= 1; - } while (--len > 0); - return res >> 1; -} - -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ -local void bi_flush(s) - deflate_state *s; -{ - if (s->bi_valid == 16) { - put_short(s, s->bi_buf); - s->bi_buf = 0; - s->bi_valid = 0; - } else if (s->bi_valid >= 8) { - put_byte(s, (Byte)s->bi_buf); - s->bi_buf >>= 8; - s->bi_valid -= 8; - } -} - -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ -local void bi_windup(s) - deflate_state *s; -{ - if (s->bi_valid > 8) { - put_short(s, s->bi_buf); - } else if (s->bi_valid > 0) { - put_byte(s, (Byte)s->bi_buf); - } - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent+7) & ~7; -#endif -} diff --git a/etc/c/zlib/uncompr.c b/etc/c/zlib/uncompr.c index f03a1a865e3..5e256663b45 100644 --- a/etc/c/zlib/uncompr.c +++ b/etc/c/zlib/uncompr.c @@ -24,12 +24,8 @@ Z_DATA_ERROR if the input data was corrupted, including if the input data is an incomplete zlib stream. */ -int ZEXPORT uncompress2 (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong *sourceLen; -{ +int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong *sourceLen) { z_stream stream; int err; const uInt max = (uInt)-1; @@ -83,11 +79,7 @@ int ZEXPORT uncompress2 (dest, destLen, source, sourceLen) err; } -int ZEXPORT uncompress (dest, destLen, source, sourceLen) - Bytef *dest; - uLongf *destLen; - const Bytef *source; - uLong sourceLen; -{ +int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, + uLong sourceLen) { return uncompress2(dest, destLen, source, &sourceLen); } diff --git a/etc/c/zlib/zconf.h b/etc/c/zlib/zconf.h index 5e1d68a004e..62adc8d8431 100644 --- a/etc/c/zlib/zconf.h +++ b/etc/c/zlib/zconf.h @@ -1,5 +1,5 @@ /* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -38,6 +38,9 @@ # define crc32 z_crc32 # define crc32_combine z_crc32_combine # define crc32_combine64 z_crc32_combine64 +# define crc32_combine_gen z_crc32_combine_gen +# define crc32_combine_gen64 z_crc32_combine_gen64 +# define crc32_combine_op z_crc32_combine_op # define crc32_z z_crc32_z # define deflate z_deflate # define deflateBound z_deflateBound @@ -238,7 +241,11 @@ #endif #ifdef Z_SOLO - typedef unsigned long z_size_t; +# ifdef _WIN64 + typedef unsigned long long z_size_t; +# else + typedef unsigned long z_size_t; +# endif #else # define z_longlong long long # if defined(NO_SIZE_T) @@ -293,14 +300,6 @@ # endif #endif -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - /* The following definitions for FAR are needed only for MSDOS mixed * model programming (small or medium model with some far allocations). * This was tested only with MSC; for other MSDOS compilers you may have @@ -349,6 +348,9 @@ # ifdef FAR # undef FAR # endif +# ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +# endif # include /* No need for _export, use ZLIB.DEF instead. */ /* For complete Windows compatibility, use WINAPI, not __stdcall. */ @@ -467,11 +469,18 @@ typedef uLong FAR uLongf; # undef _LARGEFILE64_SOURCE #endif -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H +#ifndef Z_HAVE_UNISTD_H +# ifdef __WATCOMC__ +# define Z_HAVE_UNISTD_H +# endif +#endif +#ifndef Z_HAVE_UNISTD_H +# if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32) +# define Z_HAVE_UNISTD_H +# endif #endif #ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) +# if defined(Z_HAVE_UNISTD_H) # include /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ # ifdef VMS # include /* for off_t */ @@ -507,7 +516,7 @@ typedef uLong FAR uLongf; #if !defined(_WIN32) && defined(Z_LARGE64) # define z_off64_t off64_t #else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) +# if defined(_WIN32) && !defined(__GNUC__) # define z_off64_t __int64 # else # define z_off64_t z_off_t diff --git a/etc/c/zlib/zlib.3 b/etc/c/zlib/zlib.3 index bcaebd9f02c..c716020ea9c 100644 --- a/etc/c/zlib/zlib.3 +++ b/etc/c/zlib/zlib.3 @@ -1,4 +1,4 @@ -.TH ZLIB 3 "27 Mar 2022" +.TH ZLIB 3 "22 Jan 2024" .SH NAME zlib \- compression/decompression library .SH SYNOPSIS @@ -105,9 +105,9 @@ before asking for help. Send questions and/or comments to zlib@gzip.org, or (for the Windows DLL version) to Gilles Vollant (info@winimage.com). .SH AUTHORS AND LICENSE -Version 1.2.12 +Version 1.3.1 .LP -Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler +Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler .LP This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/etc/c/zlib/zlib.h b/etc/c/zlib/zlib.h index 4a98e38bf34..8d4b932eaf6 100644 --- a/etc/c/zlib/zlib.h +++ b/etc/c/zlib/zlib.h @@ -1,7 +1,7 @@ /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.12, March 11th, 2022 + version 1.3.1, January 22nd, 2024 - Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -37,11 +37,11 @@ extern "C" { #endif -#define ZLIB_VERSION "1.2.12" -#define ZLIB_VERNUM 0x12c0 +#define ZLIB_VERSION "1.3.1" +#define ZLIB_VERNUM 0x1310 #define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 12 +#define ZLIB_VER_MINOR 3 +#define ZLIB_VER_REVISION 1 #define ZLIB_VER_SUBREVISION 0 /* @@ -78,8 +78,8 @@ extern "C" { even in the case of corrupted input. */ -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); +typedef voidpf (*alloc_func)(voidpf opaque, uInt items, uInt size); +typedef void (*free_func)(voidpf opaque, voidpf address); struct internal_state; @@ -217,7 +217,7 @@ typedef gz_header FAR *gz_headerp; /* basic functions */ -ZEXTERN const char * ZEXPORT zlibVersion OF((void)); +ZEXTERN const char * ZEXPORT zlibVersion(void); /* The application can compare zlibVersion and ZLIB_VERSION for consistency. If the first character differs, the library code actually used is not compatible with the zlib.h header file used by the application. This check @@ -225,12 +225,12 @@ ZEXTERN const char * ZEXPORT zlibVersion OF((void)); */ /* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); +ZEXTERN int ZEXPORT deflateInit(z_streamp strm, int level); Initializes the internal stream state for compression. The fields zalloc, zfree and opaque must be initialized before by the caller. If zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. + allocation functions. total_in, total_out, adler, and msg are initialized. The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: 1 gives best speed, 9 gives best compression, 0 gives no compression at all @@ -247,7 +247,7 @@ ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); */ -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); +ZEXTERN int ZEXPORT deflate(z_streamp strm, int flush); /* deflate compresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce @@ -276,7 +276,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); == 0), or after each call of deflate(). If deflate returns Z_OK and with zero avail_out, it must be called again after making room in the output buffer because there might be more output pending. See deflatePending(), - which can be used if desired to determine whether or not there is more ouput + which can be used if desired to determine whether or not there is more output in that case. Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to @@ -320,8 +320,8 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); with the same value of the flush parameter and more output space (updated avail_out), until the flush is complete (deflate returns with non-zero avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. + avail_out is greater than six when the flush marker begins, in order to avoid + repeated flush markers upon calling deflate() again when avail_out == 0. If the parameter flush is set to Z_FINISH, pending input is processed, pending output is flushed and deflate returns with Z_STREAM_END if there was @@ -360,7 +360,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); */ -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); +ZEXTERN int ZEXPORT deflateEnd(z_streamp strm); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending @@ -375,7 +375,7 @@ ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); /* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateInit(z_streamp strm); Initializes the internal stream state for decompression. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized before by @@ -383,7 +383,8 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); read or consumed. The allocation of a sliding window will be deferred to the first call of inflate (if the decompression does not complete on the first call). If zalloc and zfree are set to Z_NULL, inflateInit updates - them to use default allocation functions. + them to use default allocation functions. total_in, total_out, adler, and + msg are initialized. inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the @@ -397,7 +398,7 @@ ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); */ -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); +ZEXTERN int ZEXPORT inflate(z_streamp strm, int flush); /* inflate decompresses as much data as possible, and stops when the input buffer becomes empty or the output buffer becomes full. It may introduce @@ -517,7 +518,7 @@ ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); */ -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateEnd(z_streamp strm); /* All dynamically allocated data structures for this stream are freed. This function discards any unprocessed input and does not flush any pending @@ -535,12 +536,12 @@ ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); */ /* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); +ZEXTERN int ZEXPORT deflateInit2(z_streamp strm, + int level, + int method, + int windowBits, + int memLevel, + int strategy); This is another version of deflateInit with more compression options. The fields zalloc, zfree and opaque must be initialized before by the caller. @@ -607,9 +608,9 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, compression: this will be done by deflate(). */ -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); +ZEXTERN int ZEXPORT deflateSetDictionary(z_streamp strm, + const Bytef *dictionary, + uInt dictLength); /* Initializes the compression dictionary from the given byte sequence without producing any compressed output. When using the zlib format, this @@ -651,16 +652,16 @@ ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, not perform any compression: this will be done by deflate(). */ -ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); +ZEXTERN int ZEXPORT deflateGetDictionary(z_streamp strm, + Bytef *dictionary, + uInt *dictLength); /* Returns the sliding dictionary being maintained by deflate. dictLength is set to the number of bytes in the dictionary, and that many bytes are copied to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If deflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. + Similarly, if dictLength is Z_NULL, then it is not set. deflateGetDictionary() may return a length less than the window size, even when more than the window size in input has been provided. It may return up @@ -673,8 +674,8 @@ ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, stream state is inconsistent. */ -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); +ZEXTERN int ZEXPORT deflateCopy(z_streamp dest, + z_streamp source); /* Sets the destination stream as a complete copy of the source stream. @@ -691,20 +692,20 @@ ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, destination. */ -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); +ZEXTERN int ZEXPORT deflateReset(z_streamp strm); /* This function is equivalent to deflateEnd followed by deflateInit, but does not free and reallocate the internal compression state. The stream will leave the compression level and any other attributes that may have been - set unchanged. + set unchanged. total_in, total_out, adler, and msg are initialized. deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); +ZEXTERN int ZEXPORT deflateParams(z_streamp strm, + int level, + int strategy); /* Dynamically update the compression level and compression strategy. The interpretation of level and strategy is as in deflateInit2(). This can be @@ -729,7 +730,7 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, Then no more input data should be provided before the deflateParams() call. If this is done, the old level and strategy will be applied to the data compressed before deflateParams(), and the new level and strategy will be - applied to the the data compressed after deflateParams(). + applied to the data compressed after deflateParams(). deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if @@ -740,11 +741,11 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, retried with more output space. */ -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); +ZEXTERN int ZEXPORT deflateTune(z_streamp strm, + int good_length, + int max_lazy, + int nice_length, + int max_chain); /* Fine tune deflate's internal compression parameters. This should only be used by someone who understands the algorithm used by zlib's deflate for @@ -757,8 +758,8 @@ ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. */ -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); +ZEXTERN uLong ZEXPORT deflateBound(z_streamp strm, + uLong sourceLen); /* deflateBound() returns an upper bound on the compressed size after deflation of sourceLen bytes. It must be called after deflateInit() or @@ -772,9 +773,9 @@ ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, than Z_FINISH or Z_NO_FLUSH are used. */ -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); +ZEXTERN int ZEXPORT deflatePending(z_streamp strm, + unsigned *pending, + int *bits); /* deflatePending() returns the number of bytes and bits of output that have been generated, but not yet provided in the available output. The bytes not @@ -787,9 +788,9 @@ ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, stream state was inconsistent. */ -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); +ZEXTERN int ZEXPORT deflatePrime(z_streamp strm, + int bits, + int value); /* deflatePrime() inserts bits in the deflate output stream. The intent is that this function is used to start off the deflate output with the bits @@ -804,8 +805,8 @@ ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, source stream state was inconsistent. */ -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); +ZEXTERN int ZEXPORT deflateSetHeader(z_streamp strm, + gz_headerp head); /* deflateSetHeader() provides gzip header information for when a gzip stream is requested by deflateInit2(). deflateSetHeader() may be called @@ -821,16 +822,17 @@ ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, gzip file" and give up. If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). + the time set to zero, and os set to the current operating system, with no + extra, name, or comment fields. The gzip header is returned to the default + state by deflateReset(). deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. */ /* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); +ZEXTERN int ZEXPORT inflateInit2(z_streamp strm, + int windowBits); This is another version of inflateInit with an extra parameter. The fields next_in, avail_in, zalloc, zfree and opaque must be initialized @@ -883,9 +885,9 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, deferred until inflate() is called. */ -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); +ZEXTERN int ZEXPORT inflateSetDictionary(z_streamp strm, + const Bytef *dictionary, + uInt dictLength); /* Initializes the decompression dictionary from the given uncompressed byte sequence. This function must be called immediately after a call of inflate, @@ -906,22 +908,22 @@ ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, inflate(). */ -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); +ZEXTERN int ZEXPORT inflateGetDictionary(z_streamp strm, + Bytef *dictionary, + uInt *dictLength); /* Returns the sliding dictionary being maintained by inflate. dictLength is set to the number of bytes in the dictionary, and that many bytes are copied to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If inflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. + Similarly, if dictLength is Z_NULL, then it is not set. inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the stream state is inconsistent. */ -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateSync(z_streamp strm); /* Skips invalid compressed data until a possible full flush point (see above for the description of deflate with Z_FULL_FLUSH) can be found, or until all @@ -934,14 +936,14 @@ ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); inflateSync returns Z_OK if a possible full flush point has been found, Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. + In the success case, the application may save the current value of total_in + which indicates where valid compressed data was found. In the error case, + the application may repeatedly call inflateSync, providing more input each + time, until success or end of the input data. */ -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); +ZEXTERN int ZEXPORT inflateCopy(z_streamp dest, + z_streamp source); /* Sets the destination stream as a complete copy of the source stream. @@ -956,18 +958,19 @@ ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, destination. */ -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateReset(z_streamp strm); /* This function is equivalent to inflateEnd followed by inflateInit, but does not free and reallocate the internal decompression state. The stream will keep attributes that may have been set by inflateInit2. + total_in, total_out, adler, and msg are initialized. inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). */ -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); +ZEXTERN int ZEXPORT inflateReset2(z_streamp strm, + int windowBits); /* This function is the same as inflateReset, but it also permits changing the wrap and window size requests. The windowBits parameter is interpreted @@ -980,9 +983,9 @@ ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, the windowBits parameter is invalid. */ -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); +ZEXTERN int ZEXPORT inflatePrime(z_streamp strm, + int bits, + int value); /* This function inserts bits in the inflate input stream. The intent is that this function is used to start inflating at a bit position in the @@ -1001,7 +1004,7 @@ ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, stream state was inconsistent. */ -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); +ZEXTERN long ZEXPORT inflateMark(z_streamp strm); /* This function returns two values, one in the lower 16 bits of the return value, and the other in the remaining upper bits, obtained by shifting the @@ -1029,8 +1032,8 @@ ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); source stream state was inconsistent. */ -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); +ZEXTERN int ZEXPORT inflateGetHeader(z_streamp strm, + gz_headerp head); /* inflateGetHeader() requests that gzip header information be stored in the provided gz_header structure. inflateGetHeader() may be called after @@ -1070,8 +1073,8 @@ ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, */ /* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); +ZEXTERN int ZEXPORT inflateBackInit(z_streamp strm, int windowBits, + unsigned char FAR *window); Initialize the internal stream state for decompression using inflateBack() calls. The fields zalloc, zfree and opaque in strm must be initialized @@ -1091,13 +1094,13 @@ ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, the version of the header file. */ -typedef unsigned (*in_func) OF((void FAR *, - z_const unsigned char FAR * FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); +typedef unsigned (*in_func)(void FAR *, + z_const unsigned char FAR * FAR *); +typedef int (*out_func)(void FAR *, unsigned char FAR *, unsigned); -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); +ZEXTERN int ZEXPORT inflateBack(z_streamp strm, + in_func in, void FAR *in_desc, + out_func out, void FAR *out_desc); /* inflateBack() does a raw inflate with a single call using a call-back interface for input and output. This is potentially more efficient than @@ -1165,7 +1168,7 @@ ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, cannot return Z_OK. */ -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); +ZEXTERN int ZEXPORT inflateBackEnd(z_streamp strm); /* All memory allocated by inflateBackInit() is freed. @@ -1173,7 +1176,7 @@ ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); state was inconsistent. */ -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); +ZEXTERN uLong ZEXPORT zlibCompileFlags(void); /* Return flags indicating compile-time options. Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: @@ -1226,8 +1229,8 @@ ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); you need special options. */ -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); +ZEXTERN int ZEXPORT compress(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen); /* Compresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1241,9 +1244,9 @@ ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, buffer. */ -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); +ZEXTERN int ZEXPORT compress2(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen, + int level); /* Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte @@ -1257,15 +1260,15 @@ ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, Z_STREAM_ERROR if the level parameter is invalid. */ -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); +ZEXTERN uLong ZEXPORT compressBound(uLong sourceLen); /* compressBound() returns an upper bound on the compressed size after compress() or compress2() on sourceLen bytes. It would be used before a compress() or compress2() call to allocate the destination buffer. */ -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); +ZEXTERN int ZEXPORT uncompress(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong sourceLen); /* Decompresses the source buffer into the destination buffer. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size @@ -1282,8 +1285,8 @@ ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, buffer with the uncompressed data up to that point. */ -ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong *sourceLen)); +ZEXTERN int ZEXPORT uncompress2(Bytef *dest, uLongf *destLen, + const Bytef *source, uLong *sourceLen); /* Same as uncompress, except that sourceLen is a pointer, where the length of the source is *sourceLen. On return, *sourceLen is the number of @@ -1302,7 +1305,7 @@ ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ /* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); +ZEXTERN gzFile ZEXPORT gzopen(const char *path, const char *mode); Open the gzip (.gz) file at path for reading and decompressing, or compressing and writing. The mode parameter is as in fopen ("rb" or "wb") @@ -1339,7 +1342,7 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); file could not be opened. */ -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); +ZEXTERN gzFile ZEXPORT gzdopen(int fd, const char *mode); /* Associate a gzFile with the file descriptor fd. File descriptors are obtained from calls like open, dup, creat, pipe or fileno (if the file has @@ -1362,7 +1365,7 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); will not detect if fd is invalid (unless fd is -1). */ -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); +ZEXTERN int ZEXPORT gzbuffer(gzFile file, unsigned size); /* Set the internal buffer size used by this library's functions for file to size. The default buffer size is 8192 bytes. This function must be called @@ -1378,7 +1381,7 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); too late. */ -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); +ZEXTERN int ZEXPORT gzsetparams(gzFile file, int level, int strategy); /* Dynamically update the compression level and strategy for file. See the description of deflateInit2 for the meaning of these parameters. Previously @@ -1389,7 +1392,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); or Z_MEM_ERROR if there is a memory allocation error. */ -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); +ZEXTERN int ZEXPORT gzread(gzFile file, voidp buf, unsigned len); /* Read and decompress up to len uncompressed bytes from file into buf. If the input file is not in gzip format, gzread copies the given number of @@ -1419,8 +1422,8 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); Z_STREAM_ERROR. */ -ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, - gzFile file)); +ZEXTERN z_size_t ZEXPORT gzfread(voidp buf, z_size_t size, z_size_t nitems, + gzFile file); /* Read and decompress up to nitems items of size size from file into buf, otherwise operating as gzread() does. This duplicates the interface of @@ -1437,22 +1440,22 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, In the event that the end of file is reached and only a partial item is available at the end, i.e. the remaining uncompressed data length is not a - multiple of size, then the final partial item is nevetheless read into buf + multiple of size, then the final partial item is nevertheless read into buf and the end-of-file flag is set. The length of the partial item read is not provided, but could be inferred from the result of gztell(). This behavior is the same as the behavior of fread() implementations in common libraries, but it prevents the direct use of gzfread() to read a concurrently written - file, reseting and retrying on end-of-file, when size is not 1. + file, resetting and retrying on end-of-file, when size is not 1. */ -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len)); +ZEXTERN int ZEXPORT gzwrite(gzFile file, voidpc buf, unsigned len); /* Compress and write the len uncompressed bytes at buf to file. gzwrite returns the number of uncompressed bytes written or 0 in case of error. */ -ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, - z_size_t nitems, gzFile file)); +ZEXTERN z_size_t ZEXPORT gzfwrite(voidpc buf, z_size_t size, + z_size_t nitems, gzFile file); /* Compress and write nitems items of size size from buf to file, duplicating the interface of stdio's fwrite(), with size_t request and return types. If @@ -1465,7 +1468,7 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, is returned, and the error state is set to Z_STREAM_ERROR. */ -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); +ZEXTERN int ZEXPORTVA gzprintf(gzFile file, const char *format, ...); /* Convert, format, compress, and write the arguments (...) to file under control of the string format, as in fprintf. gzprintf returns the number of @@ -1480,7 +1483,7 @@ ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); This can be determined using zlibCompileFlags(). */ -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); +ZEXTERN int ZEXPORT gzputs(gzFile file, const char *s); /* Compress and write the given null-terminated string s to file, excluding the terminating null character. @@ -1488,7 +1491,7 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); gzputs returns the number of characters written, or -1 in case of error. */ -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); +ZEXTERN char * ZEXPORT gzgets(gzFile file, char *buf, int len); /* Read and decompress bytes from file into buf, until len-1 characters are read, or until a newline character is read and transferred to buf, or an @@ -1502,13 +1505,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len)); buf are indeterminate. */ -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); +ZEXTERN int ZEXPORT gzputc(gzFile file, int c); /* Compress and write c, converted to an unsigned char, into file. gzputc returns the value that was written, or -1 in case of error. */ -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); +ZEXTERN int ZEXPORT gzgetc(gzFile file); /* Read and decompress one byte from file. gzgetc returns this byte or -1 in case of end of file or error. This is implemented as a macro for speed. @@ -1517,7 +1520,7 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); points to has been clobbered or not. */ -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); +ZEXTERN int ZEXPORT gzungetc(int c, gzFile file); /* Push c back onto the stream for file to be read as the first character on the next read. At least one character of push-back is always allowed. @@ -1529,7 +1532,7 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); gzseek() or gzrewind(). */ -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); +ZEXTERN int ZEXPORT gzflush(gzFile file, int flush); /* Flush all pending output to file. The parameter flush is as in the deflate() function. The return value is the zlib error number (see function @@ -1545,8 +1548,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); */ /* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); +ZEXTERN z_off_t ZEXPORT gzseek(gzFile file, + z_off_t offset, int whence); Set the starting position to offset relative to whence for the next gzread or gzwrite on file. The offset represents a number of bytes in the @@ -1564,7 +1567,7 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, would be before the current position. */ -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); +ZEXTERN int ZEXPORT gzrewind(gzFile file); /* Rewind file. This function is supported only for reading. @@ -1572,7 +1575,7 @@ ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); */ /* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); +ZEXTERN z_off_t ZEXPORT gztell(gzFile file); Return the starting position for the next gzread or gzwrite on file. This position represents a number of bytes in the uncompressed data stream, @@ -1583,7 +1586,7 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); */ /* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); +ZEXTERN z_off_t ZEXPORT gzoffset(gzFile file); Return the current compressed (actual) read or write offset of file. This offset includes the count of bytes that precede the gzip stream, for example @@ -1592,7 +1595,7 @@ ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); be used for a progress indicator. On error, gzoffset() returns -1. */ -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); +ZEXTERN int ZEXPORT gzeof(gzFile file); /* Return true (1) if the end-of-file indicator for file has been set while reading, false (0) otherwise. Note that the end-of-file indicator is set @@ -1607,7 +1610,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file)); has grown since the previous end of file was detected. */ -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); +ZEXTERN int ZEXPORT gzdirect(gzFile file); /* Return true (1) if file is being copied directly while reading, or false (0) if file is a gzip stream being decompressed. @@ -1628,7 +1631,7 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); gzip file reading and decompression, which may not be desired.) */ -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose(gzFile file); /* Flush all pending output for file, if necessary, close file and deallocate the (de)compression state. Note that once file is closed, you @@ -1641,8 +1644,8 @@ ZEXTERN int ZEXPORT gzclose OF((gzFile file)); last read ended in the middle of a gzip stream, or Z_OK on success. */ -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); +ZEXTERN int ZEXPORT gzclose_r(gzFile file); +ZEXTERN int ZEXPORT gzclose_w(gzFile file); /* Same as gzclose(), but gzclose_r() is only for use when reading, and gzclose_w() is only for use when writing or appending. The advantage to @@ -1653,7 +1656,7 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); zlib library. */ -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); +ZEXTERN const char * ZEXPORT gzerror(gzFile file, int *errnum); /* Return the error message for the last error which occurred on file. errnum is set to zlib error number. If an error occurred in the file system @@ -1669,7 +1672,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum)); functions above that do not distinguish those cases in their return values. */ -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); +ZEXTERN void ZEXPORT gzclearerr(gzFile file); /* Clear the error and end-of-file flags for file. This is analogous to the clearerr() function in stdio. This is useful for continuing to read a gzip @@ -1686,7 +1689,7 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); library. */ -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); +ZEXTERN uLong ZEXPORT adler32(uLong adler, const Bytef *buf, uInt len); /* Update a running Adler-32 checksum with the bytes buf[0..len-1] and return the updated checksum. An Adler-32 value is in the range of a 32-bit @@ -1706,15 +1709,15 @@ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); if (adler != original_adler) error(); */ -ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf, - z_size_t len)); +ZEXTERN uLong ZEXPORT adler32_z(uLong adler, const Bytef *buf, + z_size_t len); /* Same as adler32(), but with a size_t length. */ /* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); +ZEXTERN uLong ZEXPORT adler32_combine(uLong adler1, uLong adler2, + z_off_t len2); Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for @@ -1724,7 +1727,7 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, negative, the result has no meaning or utility. */ -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); +ZEXTERN uLong ZEXPORT crc32(uLong crc, const Bytef *buf, uInt len); /* Update a running CRC-32 with the bytes buf[0..len-1] and return the updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer. @@ -1742,30 +1745,30 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); if (crc != original_crc) error(); */ -ZEXTERN uLong ZEXPORT crc32_z OF((uLong crc, const Bytef *buf, - z_size_t len)); +ZEXTERN uLong ZEXPORT crc32_z(uLong crc, const Bytef *buf, + z_size_t len); /* Same as crc32(), but with a size_t length. */ /* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); +ZEXTERN uLong ZEXPORT crc32_combine(uLong crc1, uLong crc2, z_off_t len2); Combine two CRC-32 check values into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. + len2. len2 must be non-negative. */ /* -ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2)); +ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t len2); Return the operator corresponding to length len2, to be used with - crc32_combine_op(). + crc32_combine_op(). len2 must be non-negative. */ -ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op)); +ZEXTERN uLong ZEXPORT crc32_combine_op(uLong crc1, uLong crc2, uLong op); /* Give the same result as crc32_combine(), using op in place of len2. op is is generated from len2 by crc32_combine_gen(). This will be faster than @@ -1778,20 +1781,20 @@ ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op)); /* deflateInit and inflateInit are macros to allow checking the zlib version * and the compiler's view of z_stream: */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); +ZEXTERN int ZEXPORT deflateInit_(z_streamp strm, int level, + const char *version, int stream_size); +ZEXTERN int ZEXPORT inflateInit_(z_streamp strm, + const char *version, int stream_size); +ZEXTERN int ZEXPORT deflateInit2_(z_streamp strm, int level, int method, + int windowBits, int memLevel, + int strategy, const char *version, + int stream_size); +ZEXTERN int ZEXPORT inflateInit2_(z_streamp strm, int windowBits, + const char *version, int stream_size); +ZEXTERN int ZEXPORT inflateBackInit_(z_streamp strm, int windowBits, + unsigned char FAR *window, + const char *version, + int stream_size); #ifdef Z_PREFIX_SET # define z_deflateInit(strm, level) \ deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) @@ -1836,7 +1839,7 @@ struct gzFile_s { unsigned char *next; z_off64_t pos; }; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ +ZEXTERN int ZEXPORT gzgetc_(gzFile file); /* backward compatibility */ #ifdef Z_PREFIX_SET # undef z_gzgetc # define z_gzgetc(g) \ @@ -1853,13 +1856,13 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ * without large file support, _LFS64_LARGEFILE must also be true */ #ifdef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); - ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); - ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off64_t)); + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off64_t ZEXPORT gzseek64(gzFile, z_off64_t, int); + ZEXTERN z_off64_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off64_t ZEXPORT gzoffset64(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off64_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off64_t); #endif #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) @@ -1881,50 +1884,50 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ # define crc32_combine_gen crc32_combine_gen64 # endif # ifndef Z_LARGE64 - ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t)); + ZEXTERN gzFile ZEXPORT gzopen64(const char *, const char *); + ZEXTERN z_off_t ZEXPORT gzseek64(gzFile, z_off_t, int); + ZEXTERN z_off_t ZEXPORT gztell64(gzFile); + ZEXTERN z_off_t ZEXPORT gzoffset64(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); # endif #else - ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); - ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); - ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); - ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t)); + ZEXTERN gzFile ZEXPORT gzopen(const char *, const char *); + ZEXTERN z_off_t ZEXPORT gzseek(gzFile, z_off_t, int); + ZEXTERN z_off_t ZEXPORT gztell(gzFile); + ZEXTERN z_off_t ZEXPORT gzoffset(gzFile); + ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); #endif #else /* Z_SOLO */ - ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t)); + ZEXTERN uLong ZEXPORT adler32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen(z_off_t); #endif /* !Z_SOLO */ /* undocumented functions */ -ZEXTERN const char * ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int)); -ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); +ZEXTERN const char * ZEXPORT zError(int); +ZEXTERN int ZEXPORT inflateSyncPoint(z_streamp); +ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table(void); +ZEXTERN int ZEXPORT inflateUndermine(z_streamp, int); +ZEXTERN int ZEXPORT inflateValidate(z_streamp, int); +ZEXTERN unsigned long ZEXPORT inflateCodesUsed(z_streamp); +ZEXTERN int ZEXPORT inflateResetKeep(z_streamp); +ZEXTERN int ZEXPORT deflateResetKeep(z_streamp); #if defined(_WIN32) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); +ZEXTERN gzFile ZEXPORT gzopen_w(const wchar_t *path, + const char *mode); #endif #if defined(STDC) || defined(Z_HAVE_STDARG_H) # ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); +ZEXTERN int ZEXPORTVA gzvprintf(gzFile file, + const char *format, + va_list va); # endif #endif diff --git a/etc/c/zlib/zutil.c b/etc/c/zlib/zutil.c index dcab28a0d51..b1c5d2d3c6d 100644 --- a/etc/c/zlib/zutil.c +++ b/etc/c/zlib/zutil.c @@ -24,13 +24,11 @@ z_const char * const z_errmsg[10] = { }; -const char * ZEXPORT zlibVersion() -{ +const char * ZEXPORT zlibVersion(void) { return ZLIB_VERSION; } -uLong ZEXPORT zlibCompileFlags() -{ +uLong ZEXPORT zlibCompileFlags(void) { uLong flags; flags = 0; @@ -61,9 +59,11 @@ uLong ZEXPORT zlibCompileFlags() #ifdef ZLIB_DEBUG flags += 1 << 8; #endif + /* #if defined(ASMV) || defined(ASMINF) flags += 1 << 9; #endif + */ #ifdef ZLIB_WINAPI flags += 1 << 10; #endif @@ -119,9 +119,7 @@ uLong ZEXPORT zlibCompileFlags() # endif int ZLIB_INTERNAL z_verbose = verbose; -void ZLIB_INTERNAL z_error (m) - char *m; -{ +void ZLIB_INTERNAL z_error(char *m) { fprintf(stderr, "%s\n", m); exit(1); } @@ -130,9 +128,7 @@ void ZLIB_INTERNAL z_error (m) /* exported to allow conversion of error code to string for compress() and * uncompress() */ -const char * ZEXPORT zError(err) - int err; -{ +const char * ZEXPORT zError(int err) { return ERR_MSG(err); } @@ -146,22 +142,14 @@ const char * ZEXPORT zError(err) #ifndef HAVE_MEMCPY -void ZLIB_INTERNAL zmemcpy(dest, source, len) - Bytef* dest; - const Bytef* source; - uInt len; -{ +void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len) { if (len == 0) return; do { *dest++ = *source++; /* ??? to be unrolled */ } while (--len != 0); } -int ZLIB_INTERNAL zmemcmp(s1, s2, len) - const Bytef* s1; - const Bytef* s2; - uInt len; -{ +int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len) { uInt j; for (j = 0; j < len; j++) { @@ -170,10 +158,7 @@ int ZLIB_INTERNAL zmemcmp(s1, s2, len) return 0; } -void ZLIB_INTERNAL zmemzero(dest, len) - Bytef* dest; - uInt len; -{ +void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len) { if (len == 0) return; do { *dest++ = 0; /* ??? to be unrolled */ @@ -214,8 +199,7 @@ local ptr_table table[MAX_PTR]; * a protected system like OS/2. Use Microsoft C instead. */ -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) -{ +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) { voidpf buf; ulg bsize = (ulg)items*size; @@ -240,8 +224,7 @@ voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, unsigned items, unsigned size) return buf; } -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { int n; (void)opaque; @@ -277,14 +260,12 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) # define _hfree hfree #endif -voidpf ZLIB_INTERNAL zcalloc (voidpf opaque, uInt items, uInt size) -{ +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size) { (void)opaque; return _halloc((long)items, size); } -void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) -{ +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { (void)opaque; _hfree(ptr); } @@ -297,25 +278,18 @@ void ZLIB_INTERNAL zcfree (voidpf opaque, voidpf ptr) #ifndef MY_ZCALLOC /* Any system without a special alloc function */ #ifndef STDC -extern voidp malloc OF((uInt size)); -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); +extern voidp malloc(uInt size); +extern voidp calloc(uInt items, uInt size); +extern void free(voidpf ptr); #endif -voidpf ZLIB_INTERNAL zcalloc (opaque, items, size) - voidpf opaque; - unsigned items; - unsigned size; -{ +voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) { (void)opaque; return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : (voidpf)calloc(items, size); } -void ZLIB_INTERNAL zcfree (opaque, ptr) - voidpf opaque; - voidpf ptr; -{ +void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { (void)opaque; free(ptr); } diff --git a/etc/c/zlib/zutil.h b/etc/c/zlib/zutil.h index d9a20ae1bf4..48dd7febae6 100644 --- a/etc/c/zlib/zutil.h +++ b/etc/c/zlib/zutil.h @@ -1,5 +1,5 @@ /* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler + * Copyright (C) 1995-2024 Jean-loup Gailly, Mark Adler * For conditions of distribution and use, see copyright notice in zlib.h */ @@ -56,7 +56,7 @@ typedef unsigned long ulg; extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* (size given to avoid silly warnings with Visual C++) */ -#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] +#define ERR_MSG(err) z_errmsg[(err) < -6 || (err) > 2 ? 9 : 2 - (err)] #define ERR_RETURN(strm,err) \ return (strm->msg = ERR_MSG(err), (err)) @@ -137,17 +137,8 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # endif #endif -#if defined(MACOS) || defined(TARGET_OS_MAC) +#if defined(MACOS) # define OS_CODE 7 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -# endif #endif #ifdef __acorn @@ -170,18 +161,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define OS_CODE 19 #endif -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif -#endif - #if defined(__BORLANDC__) && !defined(MSDOS) #pragma warn -8004 #pragma warn -8008 @@ -191,8 +170,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ /* provide prototypes for these when building zlib without LFS */ #if !defined(_WIN32) && \ (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) - ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); - ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); + ZEXTERN uLong ZEXPORT adler32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine64(uLong, uLong, z_off_t); + ZEXTERN uLong ZEXPORT crc32_combine_gen64(z_off_t); #endif /* common defaults */ @@ -231,16 +211,16 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ # define zmemzero(dest, len) memset(dest, 0, len) # endif #else - void ZLIB_INTERNAL zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); - int ZLIB_INTERNAL zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); - void ZLIB_INTERNAL zmemzero OF((Bytef* dest, uInt len)); + void ZLIB_INTERNAL zmemcpy(Bytef* dest, const Bytef* source, uInt len); + int ZLIB_INTERNAL zmemcmp(const Bytef* s1, const Bytef* s2, uInt len); + void ZLIB_INTERNAL zmemzero(Bytef* dest, uInt len); #endif /* Diagnostic functions */ #ifdef ZLIB_DEBUG # include extern int ZLIB_INTERNAL z_verbose; - extern void ZLIB_INTERNAL z_error OF((char *m)); + extern void ZLIB_INTERNAL z_error(char *m); # define Assert(cond,msg) {if(!(cond)) z_error(msg);} # define Trace(x) {if (z_verbose>=0) fprintf x ;} # define Tracev(x) {if (z_verbose>0) fprintf x ;} @@ -257,9 +237,9 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */ #endif #ifndef Z_SOLO - voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, - unsigned size)); - void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); + voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, + unsigned size); + void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr); #endif #define ZALLOC(strm, items, size) \ From a77d66438864fb8d6466f92fc8a371fb304fbc92 Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sun, 25 Feb 2024 02:37:16 +0100 Subject: [PATCH 191/327] Sync etc.c.zlib D bindings with updated zlib.h --- etc/c/zlib.d | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/etc/c/zlib.d b/etc/c/zlib.d index 73c6534d8da..0ff5f978fbc 100644 --- a/etc/c/zlib.d +++ b/etc/c/zlib.d @@ -9,9 +9,9 @@ module etc.c.zlib; import core.stdc.config; /* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.12, March 11th, 2022 + version 1.3.1, January 22nd, 2024 - Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2024 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -43,8 +43,8 @@ nothrow: extern (C): // Those are extern(D) as they should be mangled -extern(D) immutable string ZLIB_VERSION = "1.2.12"; -extern(D) immutable ZLIB_VERNUM = 0x12c0; +extern(D) immutable string ZLIB_VERSION = "1.3.1"; +extern(D) immutable ZLIB_VERNUM = 0x1310; /* The 'zlib' compression library provides in-memory compression and @@ -250,7 +250,7 @@ int deflateInit(z_streamp strm, int level) Initializes the internal stream state for compression. The fields zalloc, zfree and opaque must be initialized before by the caller. If zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. + allocation functions. total_in, total_out, adler, and msg are initialized. The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: 1 gives best speed, 9 gives best compression, 0 gives no compression at all @@ -296,7 +296,7 @@ int deflate(z_streamp strm, int flush); == 0), or after each call of deflate(). If deflate returns Z_OK and with zero avail_out, it must be called again after making room in the output buffer because there might be more output pending. See deflatePending(), - which can be used if desired to determine whether or not there is more ouput + which can be used if desired to determine whether or not there is more output in that case. Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to @@ -340,8 +340,8 @@ int deflate(z_streamp strm, int flush); with the same value of the flush parameter and more output space (updated avail_out), until the flush is complete (deflate returns with non-zero avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. + avail_out is greater than six when the flush marker begins, in order to avoid + repeated flush markers upon calling deflate() again when avail_out == 0. If the parameter flush is set to Z_FINISH, pending input is processed, pending output is flushed and deflate returns with Z_STREAM_END if there was @@ -405,7 +405,8 @@ int inflateInit(z_streamp strm) read or consumed. The allocation of a sliding window will be deferred to the first call of inflate (if the decompression does not complete on the first call). If zalloc and zfree are set to Z_NULL, inflateInit updates - them to use default allocation functions. + them to use default allocation functions. total_in, total_out, adler, and + msg are initialized. inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough memory, Z_VERSION_ERROR if the zlib library version is incompatible with the @@ -680,7 +681,7 @@ int deflateGetDictionary(z_streamp strm, ubyte *dictionary, uint dictLength); to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If deflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. + Similarly, if dictLength is Z_NULL, then it is not set. deflateGetDictionary() may return a length less than the window size, even when more than the window size in input has been provided. It may return up @@ -715,7 +716,7 @@ int deflateReset(z_streamp strm); This function is equivalent to deflateEnd followed by deflateInit, but does not free and reallocate the internal compression state. The stream will leave the compression level and any other attributes that may have been - set unchanged. + set unchanged. total_in, total_out, adler, and msg are initialized. deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent (such as zalloc or state being Z_NULL). @@ -746,7 +747,7 @@ int deflateParams(z_streamp strm, int level, int strategy); Then no more input data should be provided before the deflateParams() call. If this is done, the old level and strategy will be applied to the data compressed before deflateParams(), and the new level and strategy will be - applied to the the data compressed after deflateParams(). + applied to the data compressed after deflateParams(). deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if @@ -829,8 +830,9 @@ int deflateSetHeader(z_streamp strm, gz_headerp head); gzip file" and give up. If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). + the time set to zero, and os set to the current operating system, with no + extra, name, or comment fields. The gzip header is returned to the default + state by deflateReset(). deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source stream state was inconsistent. @@ -920,7 +922,7 @@ int inflateGetDictionary(z_streamp strm, ubyte* dictionary, uint* dictLength); to dictionary. dictionary must have enough space, where 32768 bytes is always enough. If inflateGetDictionary() is called with dictionary equal to Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. + Similarly, if dictLength is Z_NULL, then it is not set. inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the stream state is inconsistent. @@ -939,10 +941,10 @@ int inflateSync(z_streamp strm); inflateSync returns Z_OK if a possible full flush point has been found, Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. + In the success case, the application may save the current value of total_in + which indicates where valid compressed data was found. In the error case, + the application may repeatedly call inflateSync, providing more input each + time, until success or end of the input data. */ int inflateCopy(z_streamp dest, z_streamp source); @@ -1446,12 +1448,12 @@ z_size_t gzfread(void* buf, z_size_t size, z_size_t nitems, gzFile file); In the event that the end of file is reached and only a partial item is available at the end, i.e. the remaining uncompressed data length is not a - multiple of size, then the final partial item is nevetheless read into buf + multiple of size, then the final partial item is nevertheless read into buf and the end-of-file flag is set. The length of the partial item read is not provided, but could be inferred from the result of gztell(). This behavior is the same as the behavior of fread() implementations in common libraries, but it prevents the direct use of gzfread() to read a concurrently written - file, reseting and retrying on end-of-file, when size is not 1. + file, resetting and retrying on end-of-file, when size is not 1. */ int gzwrite(gzFile file, void* buf, uint len); @@ -1747,19 +1749,18 @@ uint crc32_z(uint crc, const(ubyte)* buf, z_size_t len); */ uint crc32_combine(uint crc1, uint crc2, z_off_t len2); - /* Combine two CRC-32 check values into one. For two sequences of bytes, seq1 and seq2 with lengths len1 and len2, CRC-32 check values were calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. + len2. len2 must be non-negative. */ uint crc32_combine_gen(z_off_t len2); /* Return the operator corresponding to length len2, to be used with - crc32_combine_op(). + crc32_combine_op(). len2 must be non-negative. */ uint crc32_combine_op(uint crc1, uint crc2, uint op); From 8ac2843cd2094aae47e320d5bf3ab4b7318c80fb Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Mon, 26 Feb 2024 19:32:33 +0100 Subject: [PATCH 192/327] Mention improved compile time in changelog --- changelog/upgrade-unicode.dd | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changelog/upgrade-unicode.dd b/changelog/upgrade-unicode.dd index 604c9af8510..62b3c25fda8 100644 --- a/changelog/upgrade-unicode.dd +++ b/changelog/upgrade-unicode.dd @@ -15,3 +15,6 @@ void main() // 622 new dchars return true for `isAlpha` } ``` + +The internal unicode tables (std/internal/unicode_tables.d) have also been changed to use hex strings instead of array literals, which makes them faster to import. +The exact speed up depends on your computer and D compiler, but it likely cuts between 30 and 100 milliseconds if you compile something which imports `std.string` or `std.uni`. From ba9b72f127b369d37727695498008de6c42c2517 Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Mon, 26 Feb 2024 17:32:47 +0800 Subject: [PATCH 193/327] [dub] remove cfg related to `stdx` the source path `source/stdx` no longer exists and `allocator` and `checkedint` have been moved out of there so this configuration at best does nothing. If we want to re-sub-package phobos we should do that from scratch. --- dub.sdl | 46 ---------------------------------------------- 1 file changed, 46 deletions(-) diff --git a/dub.sdl b/dub.sdl index bcaf2ef06ca..b27fe953231 100644 --- a/dub.sdl +++ b/dub.sdl @@ -7,49 +7,3 @@ copyright "Copyright © 1999-2018, The D Language Foundation" targetType "library" sourcePaths "std" "etc" targetPath "generated" - -subPackage { - name "checkedint" - targetType "library" - preGenerateCommands `rdmd --eval=' - auto pkgDir = environment.get("DUB_PACKAGE_DIR"); - auto destDir = pkgDir.buildPath("source", "stdx"); - mkdirRecurse(destDir); - pkgDir.buildPath("std", "checkedint.d") - .readText - .replace("std.checkedint", "stdx.checkedint") - .toFile(destDir.buildPath("checkedint.d"));'` - sourceFiles "source/stdx/checkedint.d" - importPaths "source" -} - -// This meta package is needed because dub searches for the source files _before_ it evaluates preGenerateCommands -// However, it does run its dependencies _before_ searching through its source paths -subPackage { - name "allocator-generator" - targetType "none" - preGenerateCommands `rdmd --eval=' - auto pkgDir = environment.get("DUB_PACKAGE_DIR"); - auto destDir = pkgDir.buildPath("source", "stdx", "allocator"); - auto srcDir = pkgDir.buildPath("std", "experimental", "allocator"); - foreach (file; srcDir.dirEntries("*.d", SpanMode.depth)) { - auto destFile = file.replace(srcDir, destDir); - destFile.dirName.mkdirRecurse; - file.readText.replace("std.experimental.allocator", "stdx.allocator") - .replace("std.conv", "stdx.allocator.conv") - .toFile(destFile); - } - pkgDir.buildPath("std", "conv.d") - .readText - .replace("std.conv", "stdx.allocator.conv") - .toFile(destDir.buildPath("conv.d")); - '` -} - -subPackage { - name "allocator" - targetType "library" - dependency "phobos:allocator-generator" version="*" - sourcePaths "source/stdx/allocator" - importPaths "source" -} From 72db0a56f5d890590e2581f7ef84f68fc028032f Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Wed, 28 Feb 2024 02:14:35 -0800 Subject: [PATCH 194/327] Phobos 3 Setup (#8925) * Copy over base packages the have no imports. Rewrite the dub.sdl to be used for Phobos3. Update .gitignore. * Fix line endings. --- .gitignore | 3 +- dub.sdl | 19 ++++-- lib/package.d | 3 + lib/sys/compiler.d | 58 +++++++++++++++++ lib/sys/package.d | 5 ++ lib/sys/stdint.d | 131 +++++++++++++++++++++++++++++++++++++ lib/sys/system.d | 158 +++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 372 insertions(+), 5 deletions(-) create mode 100644 lib/package.d create mode 100644 lib/sys/compiler.d create mode 100644 lib/sys/package.d create mode 100644 lib/sys/stdint.d create mode 100644 lib/sys/system.d diff --git a/.gitignore b/.gitignore index 3e463051c19..35ba21fcb30 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /phobos.json generated +generated-lib GNUmakefile .DS_Store .*.sw* @@ -18,7 +19,7 @@ obj/ # Rule for VS Code config folder .vscode - +dub.selections.json *.html .dub/ diff --git a/dub.sdl b/dub.sdl index b27fe953231..721781a544f 100644 --- a/dub.sdl +++ b/dub.sdl @@ -2,8 +2,19 @@ name "phobos" license "BSL-1.0" description "D Standard Library" authors "DLang Community" -copyright "Copyright © 1999-2018, The D Language Foundation" +copyright "Copyright © 1999-2024, The D Language Foundation" -targetType "library" -sourcePaths "std" "etc" -targetPath "generated" +configuration "library" { + targetType "staticLibrary" + sourcePaths "lib" + targetPath "generated-lib" + #excludedSourceFiles "unittest.d" "test/**" "std/**" "tools/**" "etc/**" +} + +configuration "unittest" { + dflags "-main" + targetType "executable" + sourcePaths "lib" + targetPath "generated-lib" + #excludedSourceFiles "unittest.d" "test/**" "std/**" "tools/**" "etc/**" +} diff --git a/lib/package.d b/lib/package.d new file mode 100644 index 00000000000..cff4c95fe77 --- /dev/null +++ b/lib/package.d @@ -0,0 +1,3 @@ +module lib; + +public import lib.sys; diff --git a/lib/sys/compiler.d b/lib/sys/compiler.d new file mode 100644 index 00000000000..88bf362de0a --- /dev/null +++ b/lib/sys/compiler.d @@ -0,0 +1,58 @@ +// Written in the D programming language. + +/** + * Identify the compiler used and its various features. + * + * Copyright: Copyright The D Language Foundation 2000 - 2011. + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: $(HTTP digitalmars.com, Walter Bright), Alex Rønne Petersen + * Source: $(PHOBOSSRC std/compiler.d) + */ +/* Copyright The D Language Foundation 2000 - 2011. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module lib.sys.compiler; + +immutable +{ + /// Vendor specific string naming the compiler, for example: "Digital Mars D". + string name = __VENDOR__; + + /// Master list of D compiler vendors. + enum Vendor + { + unknown = 0, /// Compiler vendor could not be detected + digitalMars = 1, /// Digital Mars D (DMD) + gnu = 2, /// GNU D Compiler (GDC) + llvm = 3, /// LLVM D Compiler (LDC) + dotNET = 4, /// D.NET + sdc = 5, /// Snazzy D Compiler (SDC) + } + + /// Which vendor produced this compiler. + version (StdDdoc) Vendor vendor; + else version (DigitalMars) Vendor vendor = Vendor.digitalMars; + else version (GNU) Vendor vendor = Vendor.gnu; + else version (LDC) Vendor vendor = Vendor.llvm; + else version (D_NET) Vendor vendor = Vendor.dotNET; + else version (SDC) Vendor vendor = Vendor.sdc; + else Vendor vendor = Vendor.unknown; + + + /** + * The vendor specific version number, as in + * version_major.version_minor + */ + uint version_major = __VERSION__ / 1000; + uint version_minor = __VERSION__ % 1000; /// ditto + + + /** + * The version of the D Programming Language Specification + * supported by the compiler. + */ + uint D_major = 2; + uint D_minor = 0; +} diff --git a/lib/sys/package.d b/lib/sys/package.d new file mode 100644 index 00000000000..09482318b83 --- /dev/null +++ b/lib/sys/package.d @@ -0,0 +1,5 @@ +module lib.sys; + +public import lib.sys.compiler; +public import lib.sys.stdint; +public import lib.sys.system; diff --git a/lib/sys/stdint.d b/lib/sys/stdint.d new file mode 100644 index 00000000000..990cf73b8d2 --- /dev/null +++ b/lib/sys/stdint.d @@ -0,0 +1,131 @@ +// Written in the D programming language. + +/** + * + D constrains integral types to specific sizes. But efficiency + of different sizes varies from machine to machine, + pointer sizes vary, and the maximum integer size varies. + stdint offers a portable way of trading off size + vs efficiency, in a manner compatible with the stdint.h + definitions in C. + + In the table below, the $(B exact alias)es are types of exactly the + specified number of bits. + The $(B at least alias)es are at least the specified number of bits + large, and can be larger. + The $(B fast alias)es are the fastest integral type supported by the + processor that is at least as wide as the specified number of bits. + + The aliases are: + + $(ATABLE $(TR + $(TH Exact Alias) + $(TH Description) + $(TH At Least Alias) + $(TH Description) + $(TH Fast Alias) + $(TH Description) + )$(TR + $(TD int8_t) + $(TD exactly 8 bits signed) + $(TD int_least8_t) + $(TD at least 8 bits signed) + $(TD int_fast8_t) + $(TD fast 8 bits signed) + )$(TR + $(TD uint8_t) + $(TD exactly 8 bits unsigned) + $(TD uint_least8_t) + $(TD at least 8 bits unsigned) + $(TD uint_fast8_t) + $(TD fast 8 bits unsigned) + + )$(TR + $(TD int16_t) + $(TD exactly 16 bits signed) + $(TD int_least16_t) + $(TD at least 16 bits signed) + $(TD int_fast16_t) + $(TD fast 16 bits signed) + )$(TR + $(TD uint16_t) + $(TD exactly 16 bits unsigned) + $(TD uint_least16_t) + $(TD at least 16 bits unsigned) + $(TD uint_fast16_t) + $(TD fast 16 bits unsigned) + + )$(TR + $(TD int32_t) + $(TD exactly 32 bits signed) + $(TD int_least32_t) + $(TD at least 32 bits signed) + $(TD int_fast32_t) + $(TD fast 32 bits signed) + )$(TR + $(TD uint32_t) + $(TD exactly 32 bits unsigned) + $(TD uint_least32_t) + $(TD at least 32 bits unsigned) + $(TD uint_fast32_t) + $(TD fast 32 bits unsigned) + + )$(TR + $(TD int64_t) + $(TD exactly 64 bits signed) + $(TD int_least64_t) + $(TD at least 64 bits signed) + $(TD int_fast64_t) + $(TD fast 64 bits signed) + )$(TR + $(TD uint64_t) + $(TD exactly 64 bits unsigned) + $(TD uint_least64_t) + $(TD at least 64 bits unsigned) + $(TD uint_fast64_t) + $(TD fast 64 bits unsigned) + )) + + The ptr aliases are integral types guaranteed to be large enough + to hold a pointer without losing bits: + + $(ATABLE $(TR + $(TH Alias) + $(TH Description) + )$(TR + $(TD intptr_t) + $(TD signed integral type large enough to hold a pointer) + )$(TR + $(TD uintptr_t) + $(TD unsigned integral type large enough to hold a pointer) + )) + + The max aliases are the largest integral types: + + $(ATABLE $(TR + $(TH Alias) + $(TH Description) + )$(TR + $(TD intmax_t) + $(TD the largest signed integral type) + )$(TR + $(TD uintmax_t) + $(TD the largest unsigned integral type) + )) + + * Macros: + * ATABLE=$0
+ * + * Copyright: Copyright The D Language Foundation 2000 - 2009. + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: $(HTTP digitalmars.com, Walter Bright) + * Source: $(PHOBOSSRC std/stdint.d) + */ +/* Copyright The D Language Foundation 2000 - 2009. + * Distributed under the Boost Software License, Version 1.0. + * (See accompanying file LICENSE_1_0.txt or copy at + * http://www.boost.org/LICENSE_1_0.txt) + */ +module lib.sys.stdint; + +public import core.stdc.stdint; diff --git a/lib/sys/system.d b/lib/sys/system.d new file mode 100644 index 00000000000..7e5a15cfe89 --- /dev/null +++ b/lib/sys/system.d @@ -0,0 +1,158 @@ +// Written in the D programming language. + +/** + * Information about the target operating system, environment, and CPU. + * + * Copyright: Copyright The D Language Foundation 2000 - 2011 + * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + * Authors: $(HTTP digitalmars.com, Walter Bright) and + $(HTTP jmdavisprog.com, Jonathan M Davis) + * Source: $(PHOBOSSRC std/system.d) + */ +module lib.sys.system; + +immutable +{ + /++ + Operating system. + + Note: + This is for cases where you need a value representing the OS at + runtime. If you're doing something which should compile differently + on different OSes, then please use `version (Windows)`, + `version (linux)`, etc. + + See_Also: + $(DDSUBLINK spec/version,PredefinedVersions, Predefined Versions) + +/ + enum OS + { + win32 = 1, /// Microsoft 32 bit Windows systems + win64, /// Microsoft 64 bit Windows systems + linux, /// All Linux Systems, except for Android + osx, /// Mac OS X + iOS, /// iOS + tvOS, /// tvOS + watchOS, /// watchOS + freeBSD, /// FreeBSD + netBSD, /// NetBSD + openBSD, /// OpenBSD + dragonFlyBSD, /// DragonFlyBSD + solaris, /// Solaris + android, /// Android + otherPosix, /// Other Posix Systems + unknown, /// Unknown + } + + /// The OS that the program was compiled for. + version (Win32) OS os = OS.win32; + else version (Win64) OS os = OS.win64; + else version (Android) OS os = OS.android; + else version (linux) OS os = OS.linux; + else version (OSX) OS os = OS.osx; + else version (iOS) OS os = OS.iOS; + else version (tvOS) OS os = OS.tvOS; + else version (watchOS) OS os = OS.watchOS; + else version (FreeBSD) OS os = OS.freeBSD; + else version (NetBSD) OS os = OS.netBSD; + else version (OpenBSD) OS os = OS.openBSD; + else version (DragonFlyBSD) OS os = OS.dragonFlyBSD; + else version (Posix) OS os = OS.otherPosix; + else OS os = OS.unknown; + + /++ + Byte order endianness. + + Note: + This is intended for cases where you need to deal with endianness at + runtime. If you're doing something which should compile differently + depending on whether you're compiling on a big endian or little + endian machine, then please use `version (BigEndian)` and + `version (LittleEndian)`. + + See_Also: + $(DDSUBLINK spec/version,PredefinedVersions, Predefined Versions) + +/ + enum Endian + { + bigEndian, /// Big endian byte order + littleEndian /// Little endian byte order + } + + /// The endianness that the program was compiled for. + version (LittleEndian) Endian endian = Endian.littleEndian; + else Endian endian = Endian.bigEndian; + /++ + Instruction Set Architecture. + + Note: + This is intended for cases where you need a value representing the + instruction set architecture at runtime. If you're doing something + which should compile differently depending on instruction set + architecture, then please use `version (X86_64)`, `version (ARM)`, + etc. + + See_Also: + $(DDSUBLINK spec/version,PredefinedVersions, Predefined Versions) + +/ + enum ISA + { + x86, /// Intel and AMD 32-bit processors + x86_64, /// Intel and AMD 64-bit processors + arm, /// The ARM architecture (32-bit) (AArch32 et al) + aarch64, /// The Advanced RISC Machine architecture (64-bit) + asmJS, /// The asm.js intermediate programming language + avr, /// 8-bit Atmel AVR Microcontrollers + epiphany, /// The Epiphany architecture + ppc, /// The PowerPC architecture, 32-bit + ppc64, /// The PowerPC architecture, 64-bit + ia64, /// The Itanium architecture (64-bit) + mips32, /// The MIPS architecture, 32-bit + mips64, /// The MIPS architecture, 64-bit + msp430, /// The MSP430 architecture + nvptx, /// The Nvidia Parallel Thread Execution (PTX) architecture, 32-bit + nvptx64, /// The Nvidia Parallel Thread Execution (PTX) architecture, 64-bit + riscv32, /// The RISC-V architecture, 32-bit + riscv64, /// The RISC-V architecture, 64-bit + sparc, /// The SPARC architecture, 32-bit + sparc64, /// The SPARC architecture, 64-bit + s390, /// The System/390 architecture, 32-bit + systemZ, /// The System Z architecture, 64-bit + hppa, /// The HP PA-RISC architecture, 32-bit + hppa64, /// The HP PA-RISC architecture, 64-bit + sh, /// The SuperH architecture, 32-bit + webAssembly, /// The WebAssembly virtual ISA (instruction set architecture), 32-bit + alpha, /// The Alpha architecture + unknown, /// Unknown + } + + /// The instruction set architecture that the program was compiled for. + version (X86) ISA instructionSetArchitecture = ISA.x86; + else version (X86_64) ISA instructionSetArchitecture = ISA.x86_64; + else version (ARM) ISA instructionSetArchitecture = ISA.arm; + else version (AArch64) ISA instructionSetArchitecture = ISA.aarch64; + else version (AsmJS) ISA instructionSetArchitecture = ISA.asmJS; + else version (AVR) ISA instructionSetArchitecture = ISA.avr; + else version (Epiphany) ISA instructionSetArchitecture = ISA.epiphany; + else version (PPC) ISA instructionSetArchitecture = ISA.ppc; + else version (PPC64) ISA instructionSetArchitecture = ISA.ppc64; + else version (IA64) ISA instructionSetArchitecture = ISA.ia64; + else version (MIPS32) ISA instructionSetArchitecture = ISA.mips32; + else version (MIPS64) ISA instructionSetArchitecture = ISA.mips64; + else version (MSP430) ISA instructionSetArchitecture = ISA.msp430; + else version (NVPTX) ISA instructionSetArchitecture = ISA.nvptx; + else version (NVPTX64) ISA instructionSetArchitecture = ISA.nvptx64; + else version (RISCV32) ISA instructionSetArchitecture = ISA.riscv32; + else version (RISCV64) ISA instructionSetArchitecture = ISA.riscv64; + else version (SPARC) ISA instructionSetArchitecture = ISA.sparc; + else version (SPARC64) ISA instructionSetArchitecture = ISA.sparc64; + else version (S390) ISA instructionSetArchitecture = ISA.s390; + else version (SystemZ) ISA instructionSetArchitecture = ISA.systemZ; + else version (HPPA) ISA instructionSetArchitecture = ISA.hppa; + else version (HPPA64) ISA instructionSetArchitecture = ISA.hppa64; + else version (SH) ISA instructionSetArchitecture = ISA.sh; + else version (WebAssembly) ISA instructionSetArchitecture = ISA.webAssembly; + else version (Alpha) ISA instructionSetArchitecture = ISA.alpha; + else ISA instructionSetArchitecture = ISA.unknown; +} + From 111901d87433b4ee61c673ceefe2f3692594e2a5 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Wed, 28 Feb 2024 23:24:26 -0700 Subject: [PATCH 195/327] Remove lib.sys.stdint. (#8926) We really don't want to be publicly importing a bunch of C types as part of Phobos. It may make sense in some specific cases but not like this. If anything, std.stdint should have been gone years ago, but I guess that it got missed when we purged std.c, since it wasn't under std.c. --- lib/sys/package.d | 1 - lib/sys/stdint.d | 131 ---------------------------------------------- 2 files changed, 132 deletions(-) delete mode 100644 lib/sys/stdint.d diff --git a/lib/sys/package.d b/lib/sys/package.d index 09482318b83..04c8903b17c 100644 --- a/lib/sys/package.d +++ b/lib/sys/package.d @@ -1,5 +1,4 @@ module lib.sys; public import lib.sys.compiler; -public import lib.sys.stdint; public import lib.sys.system; diff --git a/lib/sys/stdint.d b/lib/sys/stdint.d deleted file mode 100644 index 990cf73b8d2..00000000000 --- a/lib/sys/stdint.d +++ /dev/null @@ -1,131 +0,0 @@ -// Written in the D programming language. - -/** - * - D constrains integral types to specific sizes. But efficiency - of different sizes varies from machine to machine, - pointer sizes vary, and the maximum integer size varies. - stdint offers a portable way of trading off size - vs efficiency, in a manner compatible with the stdint.h - definitions in C. - - In the table below, the $(B exact alias)es are types of exactly the - specified number of bits. - The $(B at least alias)es are at least the specified number of bits - large, and can be larger. - The $(B fast alias)es are the fastest integral type supported by the - processor that is at least as wide as the specified number of bits. - - The aliases are: - - $(ATABLE $(TR - $(TH Exact Alias) - $(TH Description) - $(TH At Least Alias) - $(TH Description) - $(TH Fast Alias) - $(TH Description) - )$(TR - $(TD int8_t) - $(TD exactly 8 bits signed) - $(TD int_least8_t) - $(TD at least 8 bits signed) - $(TD int_fast8_t) - $(TD fast 8 bits signed) - )$(TR - $(TD uint8_t) - $(TD exactly 8 bits unsigned) - $(TD uint_least8_t) - $(TD at least 8 bits unsigned) - $(TD uint_fast8_t) - $(TD fast 8 bits unsigned) - - )$(TR - $(TD int16_t) - $(TD exactly 16 bits signed) - $(TD int_least16_t) - $(TD at least 16 bits signed) - $(TD int_fast16_t) - $(TD fast 16 bits signed) - )$(TR - $(TD uint16_t) - $(TD exactly 16 bits unsigned) - $(TD uint_least16_t) - $(TD at least 16 bits unsigned) - $(TD uint_fast16_t) - $(TD fast 16 bits unsigned) - - )$(TR - $(TD int32_t) - $(TD exactly 32 bits signed) - $(TD int_least32_t) - $(TD at least 32 bits signed) - $(TD int_fast32_t) - $(TD fast 32 bits signed) - )$(TR - $(TD uint32_t) - $(TD exactly 32 bits unsigned) - $(TD uint_least32_t) - $(TD at least 32 bits unsigned) - $(TD uint_fast32_t) - $(TD fast 32 bits unsigned) - - )$(TR - $(TD int64_t) - $(TD exactly 64 bits signed) - $(TD int_least64_t) - $(TD at least 64 bits signed) - $(TD int_fast64_t) - $(TD fast 64 bits signed) - )$(TR - $(TD uint64_t) - $(TD exactly 64 bits unsigned) - $(TD uint_least64_t) - $(TD at least 64 bits unsigned) - $(TD uint_fast64_t) - $(TD fast 64 bits unsigned) - )) - - The ptr aliases are integral types guaranteed to be large enough - to hold a pointer without losing bits: - - $(ATABLE $(TR - $(TH Alias) - $(TH Description) - )$(TR - $(TD intptr_t) - $(TD signed integral type large enough to hold a pointer) - )$(TR - $(TD uintptr_t) - $(TD unsigned integral type large enough to hold a pointer) - )) - - The max aliases are the largest integral types: - - $(ATABLE $(TR - $(TH Alias) - $(TH Description) - )$(TR - $(TD intmax_t) - $(TD the largest signed integral type) - )$(TR - $(TD uintmax_t) - $(TD the largest unsigned integral type) - )) - - * Macros: - * ATABLE=$0
- * - * Copyright: Copyright The D Language Foundation 2000 - 2009. - * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). - * Authors: $(HTTP digitalmars.com, Walter Bright) - * Source: $(PHOBOSSRC std/stdint.d) - */ -/* Copyright The D Language Foundation 2000 - 2009. - * Distributed under the Boost Software License, Version 1.0. - * (See accompanying file LICENSE_1_0.txt or copy at - * http://www.boost.org/LICENSE_1_0.txt) - */ -module lib.sys.stdint; - -public import core.stdc.stdint; From e0c7aa4a8685eba92db48d9c41df3f665bde3827 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 1 Mar 2024 02:30:54 -0700 Subject: [PATCH 196/327] Add lib.sys.meta. (#8927) This adds lib.sys.meta, containing just AliasSeq and Alias for now. They've been taken from std.meta more or less as-is, since they work just fine as they are. For Phobos v3, we really need a replacement for std.traits in order for most stuff to work, so I was going to start there, adding symbols from there piece by piece, adjusting them as necessary (or skipping them if appropriate) so that we'd have at least the basic traits necessary for everything else, but it turns out that some of the meta stuff is needed as well for the unit tests and documentation of traits stuff, so I'm starting by adding lib.sys.meta as a replacement for std.meta with the two most basic items from std.meta. So, this starts the process of building up lib.sys.meta and lib.sys.traits piece by piece. --- lib/sys/meta.d | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 lib/sys/meta.d diff --git a/lib/sys/meta.d b/lib/sys/meta.d new file mode 100644 index 00000000000..0f359ac5750 --- /dev/null +++ b/lib/sys/meta.d @@ -0,0 +1,149 @@ +// Written in the D programming language +/++ + Templates to manipulate + $(DDSUBLINK spec/template, variadic-templates, template parameter sequences) + (also known as $(I alias sequences)). + + Some operations on alias sequences are built into the language, + such as `S[i]`, which accesses the element at index `i` in the + sequence. `S[low .. high]` returns a new alias + sequence that is a slice of the old one. + + For more information, see + $(DDLINK ctarguments, Compile-time Sequences, Compile-time Sequences). + + $(SCRIPT inhibitQuickIndex = 1;) + $(DIVC quickindex, + $(BOOKTABLE , + $(TR $(TH Category) $(TH Templates)) + $(TR $(TD Building blocks) $(TD + $(LREF Alias) + $(LREF AliasSeq) + )) + ) + + References: + Based on ideas in Table 3.1 from + $(LINK2 http://amazon.com/exec/obidos/ASIN/0201704315/ref=ase_classicempire/102-2957199-2585768, + Modern C++ Design), + Andrei Alexandrescu (Addison-Wesley Professional, 2001) + + Copyright: Copyright The D Language Foundation 2005 - 2024. + License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: $(HTTP digitalmars.com, Walter Bright), + $(HTTP klickverbot.at, David Nadlinger) + $(HTTP jmdavisprog.com, Jonathan M Davis) + Source: $(PHOBOSSRC lib/sys/meta) ++/ +module lib.sys.meta; + +/++ + Creates a sequence of zero or more aliases. This is most commonly + used as template parameters or arguments. + +/ +alias AliasSeq(TList...) = TList; + +/// +@safe unittest +{ + alias TL = AliasSeq!(int, double); + + int foo(TL td) // same as int foo(int, double); + { + return td[0] + cast(int) td[1]; + } +} + +/// +@safe unittest +{ + alias TL = AliasSeq!(int, double); + + alias Types = AliasSeq!(TL, char); + static assert(is(Types == AliasSeq!(int, double, char))); +} + +/// +@safe unittest +{ + static char foo(size_t i, string str) + { + return str[i]; + } + + alias vars = AliasSeq!(2, "dlang"); + + assert(foo(vars) == 'a'); +} + +/++ + Allows aliasing of any single symbol, type or compile-time expression. + + Not everything can be directly aliased. An alias cannot be declared + of - for example - a literal: + --- + alias a = 4; //Error + --- + With this template any single entity can be aliased: + --- + alias b = Alias!4; //OK + --- + See_Also: + To alias more than one thing at once, use $(LREF AliasSeq). + +/ +alias Alias(alias a) = a; + +/// Ditto +alias Alias(T) = T; + +/// +@safe unittest +{ + // Without Alias this would fail if Args[0] were e.g. a value and + // some logic would be needed to detect when to use enum instead + alias Head(Args...) = Alias!(Args[0]); + alias Tail(Args...) = Args[1 .. $]; + + alias Blah = AliasSeq!(3, int, "hello"); + static assert(Head!Blah == 3); + static assert(is(Head!(Tail!Blah) == int)); + static assert((Tail!Blah)[1] == "hello"); +} + +/// +@safe unittest +{ + { + alias a = Alias!123; + static assert(a == 123); + } + { + enum e = 1; + alias a = Alias!e; + static assert(a == 1); + } + { + alias a = Alias!(3 + 4); + static assert(a == 7); + } + { + alias concat = (s0, s1) => s0 ~ s1; + alias a = Alias!(concat("Hello", " World!")); + static assert(a == "Hello World!"); + } + { + alias A = Alias!int; + static assert(is(A == int)); + } + { + alias A = Alias!(AliasSeq!int); + static assert(!is(typeof(A[0]))); //not an AliasSeq + static assert(is(A == int)); + } + { + auto i = 6; + alias a = Alias!i; + ++a; + assert(i == 7); + } +} From a2ade9dec49e70c6acd447df52321988a4c2fb9f Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 2 Mar 2024 03:39:45 +0100 Subject: [PATCH 197/327] GHA: Sync main.yml with DMD repo's --- .github/workflows/main.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 58b087c5d1b..ed27c241e60 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,7 @@ jobs: OS_NAME: ${{ startsWith(matrix.os, 'ubuntu') && 'linux' || (startsWith(matrix.os, 'macos') && 'osx' || (startsWith(matrix.os, 'windows') && 'windows' || '')) }} MODEL: ${{ matrix.model || '64' }} HOST_DMD: dmd - N: ${{ startsWith(matrix.os, 'macos') && '3' || '4' }} + # N is set dynamically below FULL_BUILD: false # work around https://issues.dlang.org/show_bug.cgi?id=23517 MACOSX_DEPLOYMENT_TARGET: '11' @@ -71,6 +71,9 @@ jobs: git clone --branch "$REPO_BRANCH" --depth 1 https://github.com/dlang/dmd.git ../dmd + - name: Set environment variable N (parallelism) + run: echo "N=$(${{ runner.os == 'macOS' && 'sysctl -n hw.logicalcpu' || 'nproc' }})" >> $GITHUB_ENV + - name: 'Posix: Install prerequisites' if: runner.os != 'Windows' run: cd ../dmd && ${{ runner.os == 'macOS' && 'ci/cirrusci.sh' || 'sudo -E ci/cirrusci.sh' }} @@ -80,6 +83,13 @@ jobs: with: arch: ${{ env.MODEL == '64' && 'x64' || 'x86' }} + # NOTE: Linker ICEs with Xcode 15.0.1 (default version on macos-13) + # * https://issues.dlang.org/show_bug.cgi?id=24407 + # Remove this step if the default gets changed to 15.1 in actions/runner-images. + - name: 'macOS 13: Switch to Xcode v15.1' + if: matrix.os == 'macos-13' + run: sudo xcode-select -switch /Applications/Xcode_15.1.app + - name: 'Posix: Install host compiler' if: runner.os != 'Windows' run: cd ../dmd && ci/run.sh install_host_compiler @@ -127,6 +137,7 @@ jobs: operating_system: freebsd hypervisor: qemu memory: 12G + cpu_count: 4 sync_files: runner-to-vm version: ${{ matrix.freebsd_version }} shell: bash @@ -139,7 +150,7 @@ jobs: export OS_NAME=freebsd export MODEL=64 export HOST_DMD=dmd - export N=3 + export N="$(nproc)" export FULL_BUILD=false export CI_DFLAGS="-version=TARGET_FREEBSD${freebsd_major}" From 27cfc6055cf2ded5e2c9f854692d153ebed1687f Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Sat, 2 Mar 2024 20:16:13 -0700 Subject: [PATCH 198/327] Add the beginnings of lib.sys.traits. (#8930) This starts lib.sys.traits with just Unconst, Unshared, and Unqual. Both the tests and documentation have been beefed up from what std.traits has, with many more examples provided to try to make the exact semantics crystal clear, whereas the previous explanation in the docs was pretty sparse. The actual semantics are the same though. This isn't what I would have chosen for traits first, but they're used heavily in unit tests, so they got moved up in the list. I used version (StdDdoc) for the ddoc version, since that's what we do normally in Phobos. I don't know if we'll want or need to change that later given than Phobos v3 technically isn't Std, but all that really matters there is that it's a specific version identifier that we use for building Phobos' documentation and which no other projects would use. And since Phobos v3 currently is set up to build with dub rather than Phobos' normal build system, I expect that the documentation generation is completely busted right now anyway. So, that'll need to get fixed at some point. --- lib/sys/traits.d | 330 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 330 insertions(+) create mode 100644 lib/sys/traits.d diff --git a/lib/sys/traits.d b/lib/sys/traits.d new file mode 100644 index 00000000000..b84088f2e98 --- /dev/null +++ b/lib/sys/traits.d @@ -0,0 +1,330 @@ +// Written in the D programming language +/++ + Templates which extract information about types and symbols at compile time. + + In the context of lib.sys.traits, a "trait" is a template which evaluates to + $(D true) or $(D false), telling the code using it whether the given + arguments match / have that specific trait (e.g. whether the given type is + a dynamic array or whether the given function is $(D @safe)). These traits + are then used primarily in template constraints so that they can test that + the template arguments meet the criteria required by those templates, though + they can be useful in a variety of compile-time contexts + (e.g. the condition of a $(D static if)). + + So, the symbols provided in this module are largely either traits or + templates designed to be used with traits (e.g. $(LREF Unconst) can be used + in a template constraint to get the mutable version of that type so that + the traits used then test the type without worrying about constness). + + $(SCRIPT inhibitQuickIndex = 1;) + + $(BOOKTABLE , + $(TR $(TH Category) $(TH Templates)) + $(TR $(TD Traits for removing type qualfiers) $(TD + $(LREF Unconst) + $(LREF Unshared) + $(LREF Unqual) + )) + ) + + Copyright: Copyright The D Language Foundation 2005 - 2024. + License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). + Authors: $(HTTP jmdavisprog.com, Jonathan M Davis) + $(HTTP digitalmars.com, Walter Bright), + Tomasz Stachowiak (`isExpressions`), + $(HTTP erdani.org, Andrei Alexandrescu), + Shin Fujishiro, + $(HTTP octarineparrot.com, Robert Clipsham), + $(HTTP klickverbot.at, David Nadlinger), + Kenji Hara, + Shoichi Kato + Source: $(PHOBOSSRC lib/sys/traits) ++/ +module lib.sys.traits; + +/++ + Removes the outer layer of $(D const), $(D inout), or $(D immutable) + from type $(D T). + + If none of those qualifiers have been applied to the outer layer of + type $(D T), then the result is $(D T). + + Due to limitations with D's type system, user-defined types have the type + qualifier removed entirely if present. The types of the member variables + themselves are unaffected beyond how removing the type qualifier from the + type containing them affects them (e.g. an $(D int*) member that is + $(D const(int*)) because the type containing it is $(D const) becomes + $(D int*) when Unconst is used on the containing type, because $(D const) + is removed from the containing type. The member does not become + $(D const(int)*) as would occur if Unconst were used directly on a + $(D const(int*))). + + Also, Unconst has no effect on what a templated type is instantiated with, + so if a templated type is instantiated with a template argument which is a + const type, the template instantiation will not change. + +/ +version (StdDdoc) template Unconst(T) +{ + import core.internal.traits : CoreUnconst = Unconst; + alias Unconst = CoreUnconst!T; +} +else +{ + import core.internal.traits : CoreUnconst = Unconst; + alias Unconst = CoreUnconst; +} + +/// +@safe unittest +{ + static assert(is(Unconst!( int) == int)); + static assert(is(Unconst!( const int) == int)); + static assert(is(Unconst!( inout int) == int)); + static assert(is(Unconst!( inout const int) == int)); + static assert(is(Unconst!(shared int) == shared int)); + static assert(is(Unconst!(shared const int) == shared int)); + static assert(is(Unconst!(shared inout int) == shared int)); + static assert(is(Unconst!(shared inout const int) == shared int)); + static assert(is(Unconst!( immutable int) == int)); + + // Only the outer layer of immutable is removed. + // immutable(int[]) -> immutable(int)[] + alias ImmIntArr = immutable(int[]); + static assert(is(Unconst!ImmIntArr == immutable(int)[])); + + // Only the outer layer of const is removed. + // immutable(int*) -> immutable(int)* + alias ConstIntPtr = const(int*); + static assert(is(Unconst!ConstIntPtr == const(int)*)); + + // const(int)* -> const(int)* + alias PtrToConstInt = const(int)*; + static assert(is(Unconst!PtrToConstInt == const(int)*)); + + static struct S + { + int* ptr; + } + + const S s; + static assert(is(typeof(s) == const S)); + static assert(is(typeof(typeof(s).ptr) == const int*)); + + // For user-defined types, the const qualifier is removed entirely. + // const S -> S + static assert(is(Unconst!(typeof(s)) == S)); + static assert(is(typeof(Unconst!(typeof(s)).ptr) == int*)); + + static struct Foo(T) + { + T* ptr; + } + + // The qualifer on the type is removed, but the qualifier on the template + // argument is not. + static assert(is(Unconst!(const(Foo!(const int))) == Foo!(const int))); + static assert(is(Unconst!(Foo!(const int)) == Foo!(const int))); + static assert(is(Unconst!(const(Foo!int)) == Foo!int)); +} + +/++ + Removes the outer layer of $(D shared) from type $(D T). + + If $(D shared) has not been applied to the outer layer of type $(D T), then + the result is $(D T). + + Note that while $(D immutable) is implicitly $(D shared), it is unaffected + by Unshared. Only explict $(D shared) is removed. + + Due to limitations with D's type system, user-defined types have the type + qualifier removed entirely if present. The types of the member variables + themselves are unaffected beyond how removing the type qualifier from the + type containing them affects them (e.g. an $(D int*) member that is + $(D shared(int*)) because the type containing it is $(D shared) becomes + $(D int*) when Unshared is used on the containing type, because $(D shared) + is removed from the containing type. The member does not become + $(D shared(int)*) as would occur if Unshared were used directly on a + $(D shared(int*))). + + Also, Unshared has no effect on what a templated type is instantiated with, + so if a templated type is instantiated with a template argument which is a + shared type, the template instantiation will not change. + +/ +template Unshared(T) +{ + static if (is(T == shared U, U)) + alias Unshared = U; + else + alias Unshared = T; +} + +/// +@safe unittest +{ + static assert(is(Unshared!( int) == int)); + static assert(is(Unshared!( const int) == const int)); + static assert(is(Unshared!( inout int) == inout int)); + static assert(is(Unshared!( inout const int) == inout const int)); + static assert(is(Unshared!(shared int) == int)); + static assert(is(Unshared!(shared const int) == const int)); + static assert(is(Unshared!(shared inout int) == inout int)); + static assert(is(Unshared!(shared inout const int) == inout const int)); + static assert(is(Unshared!( immutable int) == immutable int)); + + // Only the outer layer of shared is removed. + // shared(int[]) -> shared(int)[] + alias SharedIntArr = shared(int[]); + static assert(is(Unshared!SharedIntArr == shared(int)[])); + + // Only the outer layer of shared is removed. + // shared(int*) -> shared(int)* + alias SharedIntPtr = shared(int*); + static assert(is(Unshared!SharedIntPtr == shared(int)*)); + + // shared(int)* -> shared(int)* + alias PtrToSharedInt = shared(int)*; + static assert(is(Unshared!PtrToSharedInt == shared(int)*)); + + // immutable is unaffected + alias ImmutableArr = immutable(int[]); + static assert(is(Unshared!ImmutableArr == immutable(int[]))); + + static struct S + { + int* ptr; + } + + shared S s; + static assert(is(typeof(s) == shared S)); + static assert(is(typeof(typeof(s).ptr) == shared int*)); + + // For user-defined types, the shared qualifier is removed entirely. + // shared S -> S + static assert(is(Unshared!(typeof(s)) == S)); + static assert(is(typeof(Unshared!(typeof(s)).ptr) == int*)); + + static struct Foo(T) + { + T* ptr; + } + + // The qualifer on the type is affected, but the qualifier on the template + // argument is not. + static assert(is(Unshared!(shared(Foo!(shared int))) == Foo!(shared int))); + static assert(is(Unshared!(Foo!(shared int)) == Foo!(shared int))); + static assert(is(Unshared!(shared(Foo!int)) == Foo!int)); +} + +/++ + Removes the outer layer of all type qualifiers from type $(D T). + + If no type qualifiers have been applied to the outer layer of type $(D T), + then the result is $(D T). + + Due to limitations with D's type system, user-defined types have the type + qualifier removed entirely if present. The types of the member variables + themselves are unaffected beyond how removing the type qualifier from the + type containing them affects them (e.g. a $(D int*) member that is + $(D const(int*)) because the type containing it is $(D const) becomes + $(D int*) when Unqual is used on the containing type, because $(D const) + is removed from the containing type. The member does not become + $(D const(int)*) as would occur if Unqual were used directly on a + $(D const(int*))). + + Also, Unqual has no effect on what a templated type is instantiated with, + so if a templated type is instantiated with a template argument which has a + type qualifier, the template instantiation will not change. + + Note that in most cases, $(LREF Unconst) or $(LREF Unshared) should be used + rather than Unqual, because in most cases, code is not designed to work with + $(D shared) and thus doing type checks which remove $(D shared) will allow + $(D shared) types to pass template constraints when they won't actually + work with the code. And when code is designed to work with $(D shared), + it's often the case that the type checks need to take $(D const) into + account to work properly. + + In particular, historically, a lot of D code has used Unqual when the + programmer's intent was to remove $(D const), and $(D shared) wasn't + actually considered at all. And in such cases, the code really should use + $(LREF Unconst) instead. + + But of course, if a template constraint or $(D static if) really needs to + strip off both the mutability qualifers and $(D shared) for what it's + testing for, then that's what Unqual is for. + +/ +version (StdDdoc) template Unqual(T) +{ + import core.internal.traits : CoreUnqual = Unqual; + alias Unqual = CoreUnqual!(T); +} +else +{ + import core.internal.traits : CoreUnqual = Unqual; + alias Unqual = CoreUnqual; +} + +@safe unittest +{ + static assert(is(Unqual!( int) == int)); + static assert(is(Unqual!( const int) == int)); + static assert(is(Unqual!( inout int) == int)); + static assert(is(Unqual!( inout const int) == int)); + static assert(is(Unqual!(shared int) == int)); + static assert(is(Unqual!(shared const int) == int)); + static assert(is(Unqual!(shared inout int) == int)); + static assert(is(Unqual!(shared inout const int) == int)); + static assert(is(Unqual!( immutable int) == int)); + + // Only the outer layer of immutable is removed. + // immutable(int[]) -> immutable(int)[] + alias ImmIntArr = immutable(int[]); + static assert(is(Unqual!ImmIntArr == immutable(int)[])); + + // Only the outer layer of const is removed. + // const(int*) -> const(int)* + alias ConstIntPtr = const(int*); + static assert(is(Unqual!ConstIntPtr == const(int)*)); + + // const(int)* -> const(int)* + alias PtrToConstInt = const(int)*; + static assert(is(Unqual!PtrToConstInt == const(int)*)); + + // Only the outer layer of shared is removed. + // shared(int*) -> shared(int)* + alias SharedIntPtr = shared(int*); + static assert(is(Unqual!SharedIntPtr == shared(int)*)); + + // shared(int)* -> shared(int)* + alias PtrToSharedInt = shared(int)*; + static assert(is(Unqual!PtrToSharedInt == shared(int)*)); + + // Both const and shared are removed from the outer layer. + // shared const int[] -> shared(const(int))[] + alias SharedConstIntArr = shared const(int[]); + static assert(is(Unqual!SharedConstIntArr == shared(const(int))[])); + + static struct S + { + int* ptr; + } + + shared const S s; + static assert(is(typeof(s) == shared const S)); + static assert(is(typeof(typeof(s).ptr) == shared const int*)); + + // For user-defined types, the qualifiers are removed entirely. + // shared const S -> S + static assert(is(Unqual!(typeof(s)) == S)); + static assert(is(typeof(Unqual!(typeof(s)).ptr) == int*)); + + static struct Foo(T) + { + T* ptr; + } + + // The qualifers on the type are affected, but the qualifiers on the + // template argument is not. + static assert(is(Unqual!(const(Foo!(const int))) == Foo!(const int))); + static assert(is(Unqual!(Foo!(const int)) == Foo!(const int))); + static assert(is(Unqual!(const(Foo!int)) == Foo!int)); +} From bfe2a183893df370e270149e2c886b050517250a Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sat, 2 Mar 2024 20:12:40 -0500 Subject: [PATCH 199/327] sumtype: add hint to "never matches" message A common cause of the "handler never matches" error is a template handler that contains a typo or other compile-time error. Since the location of the actual error is suppressed by __traits(compiles), users often do not think to look for a mistake inside the handler itself. Now, the message itself includes a hint to do so. --- std/sumtype.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/sumtype.d b/std/sumtype.d index 4e76156b1cb..80ce73d6a75 100644 --- a/std/sumtype.d +++ b/std/sumtype.d @@ -1988,7 +1988,7 @@ private template matchImpl(Flag!"exhaustive" exhaustive, handlers...) ? "template" : typeof(handler).stringof ) ~ "` " ~ - "never matches" + "never matches. Perhaps the handler failed to compile" ); } From 837b7deb7d6edab28fb93d452201d27e2c0a4bc5 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Sun, 3 Mar 2024 17:56:32 -0500 Subject: [PATCH 200/327] std.range.choose: call payload postblit correctly Fixes bugzilla issue 15708 --- std/range/package.d | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index 30f6ffb9f44..d9d74fb21a9 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -1882,7 +1882,7 @@ private struct ChooseResult(Ranges...) this(this) { actOnChosen!((ref r) { - static if (hasElaborateCopyConstructor!(typeof(r))) r.__postblit(); + static if (hasElaborateCopyConstructor!(typeof(r))) r.__xpostblit(); })(this); } @@ -2177,6 +2177,29 @@ pure @safe nothrow unittest assert(chosen2.front.v == 4); } +// https://issues.dlang.org/show_bug.cgi?id=15708 +@safe unittest +{ + static struct HasPostblit + { + this(this) {} + } + + static struct Range + { + bool empty; + int front; + void popFront() {} + HasPostblit member; + } + + Range range; + int[] arr; + + auto chosen = choose(true, range, arr); + auto copy = chosen; +} + /** Choose one of multiple ranges at runtime. From 04b1563ef124ddff6e77e680284c0fd8c8a21b24 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 4 Mar 2024 07:29:43 +0000 Subject: [PATCH 201/327] std.path: Note that absolutePath and co. do not collapse ".." --- std/path.d | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/std/path.d b/std/path.d index 449235a6820..2dbdf418f33 100644 --- a/std/path.d +++ b/std/path.d @@ -2732,6 +2732,9 @@ else version (Posix) The function allocates memory if and only if it gets to the third stage of this algorithm. + Note that `absolutePath` will not normalize `..` segments. + Use `buildNormalizedPath(absolutePath(path))` if that is desired. + Params: path = the relative path to transform base = the base directory of the relative path @@ -2815,6 +2818,9 @@ string absolutePath(return scope const string path, lazy string base = getcwd()) which allocates memory.) ) + Note that `asAbsolutePath` will not normalize `..` segments. + Use `asNormalizedPath(asAbsolutePath(path))` if that is desired. + Params: path = the relative path to transform From e7ddb170ab04ab9c1637b92854b6518222843064 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 5 Mar 2024 01:25:03 -0700 Subject: [PATCH 202/327] Add Map to lib.sys.meta. (#8934) This ports std.meta.staticMap to lib.sys.meta as Map. The implementation is the same, but the documentation and tests have been expanded. As has been discussed before, the way that std.meta names things is inconsistent, and the pattern that lib.sys.meta is going with is that its templates will be CamelCased like types, which matches what some of std.meta does but not all of it. --- lib/sys/meta.d | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/lib/sys/meta.d b/lib/sys/meta.d index 0f359ac5750..e31dbb03be9 100644 --- a/lib/sys/meta.d +++ b/lib/sys/meta.d @@ -20,6 +20,9 @@ $(LREF Alias) $(LREF AliasSeq) )) + $(TR $(TD Alias sequence transformation) $(TD + $(LREF Map) + )) ) References: @@ -147,3 +150,64 @@ alias Alias(T) = T; assert(i == 7); } } + +/++ + Map takes a template predicate and applies it to every element in the given + $(D AliasSeq), resulting in an $(D AliasSeq) with the transformed elements. + + So, it's equivalent to + `AliasSeq!(fun!(args[0]), fun!(args[1]), ..., fun!(args[$ - 1]))`. + +/ +template Map(alias fun, args...) +{ + alias Map = AliasSeq!(); + static foreach (arg; args) + Map = AliasSeq!(Map, fun!arg); +} + +/// +@safe unittest +{ + import lib.sys.traits : Unqual; + + // empty + alias Empty = Map!Unqual; + static assert(Empty.length == 0); + + // single + alias Single = Map!(Unqual, const int); + static assert(is(Single == AliasSeq!int)); + + // several + alias Several = Map!(Unqual, int, const int, immutable int, uint, + ubyte, byte, short, ushort, const long); + static assert(is(Several == AliasSeq!(int, int, int, uint, + ubyte, byte, short, ushort, long))); + + alias ToDynamicArray(T) = T[]; + + alias Arrays = Map!(ToDynamicArray, int, const ubyte, string); + static assert(is(Arrays == AliasSeq!(int[], const(ubyte)[], string[]))); +} + +// @@@ BUG @@@ The test below exposes failure of the straightforward use. +// See @adamdruppe's comment to https://github.com/dlang/phobos/pull/8039 +@safe unittest +{ + template id(alias what) + { + enum id = __traits(identifier, what); + } + + enum A { a } + static assert(Map!(id, A.a) == AliasSeq!"a"); +} + +// regression test for https://issues.dlang.org/show_bug.cgi?id=21088 +@system unittest // typeid opEquals is @system +{ + enum getTypeId(T) = typeid(T); + alias A = Map!(getTypeId, int); + + assert(A == typeid(int)); +} From 7bc7d988b1bb36b273d70a606c52596a5f2756ff Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 5 Mar 2024 02:26:39 -0700 Subject: [PATCH 203/327] Some documentation improvements to lib.sys.traits and lib.sys.meta. (#8937) --- lib/sys/meta.d | 51 ++++++++++++++++++++++++++++++++++++++++++++++-- lib/sys/traits.d | 20 +++++++++---------- 2 files changed, 59 insertions(+), 12 deletions(-) diff --git a/lib/sys/meta.d b/lib/sys/meta.d index e31dbb03be9..29543c29178 100644 --- a/lib/sys/meta.d +++ b/lib/sys/meta.d @@ -12,6 +12,39 @@ For more information, see $(DDLINK ctarguments, Compile-time Sequences, Compile-time Sequences). + One thing that should be noted is that while the templates provided in this + module can be extremely useful, they generally should not be used with lists + of values. The language uses alias sequences for a variety of things + (including both parameter lists and argument lists), so they can contain + types, symbols, values, or a mixture of them all. The ability to manipulate + types and symbols within alias sequences is vital, because that's really + the only way to do it. However, because D has CTFE (Compile-Time Function + Evaluation), making it possible to call many functions at compile time, if + code needs to be able to manipulate values at compile-time, CTFE is + typically much more efficient and easier to do. Instantiating a bunch of + templates to manipulate values is incredibly inefficient in comparison. + + So, while many of the templates in this module will work with values simply + because alias sequences can contain values, most code should restrict + itself to using them for operating on types or symbols - i.e. the stuff + where CTFE can't be used. That being said, there will be times when one can + be used to feed into the other. E.G. + --- + alias Types = AliasSeq!(int, byte, ulong, int[10]); + + enum Sizeof(T) = T.sizeof; + + alias sizesAsAliasSeq = Map!(Sizeof, Types); + static assert(sizesAsAliasSeq == AliasSeq!(4, 1, 8, 40)); + + enum size_t[] sizes = [sizesAsAliasSeq]; + static assert(sizes == [4, 1, 8, 40]); + --- + + Just be aware that if CTFE can be used for a particular task, it's better to + use CTFE than to manipulate alias sequences with the kind of templates + provided by this module. + $(SCRIPT inhibitQuickIndex = 1;) $(DIVC quickindex, $(BOOKTABLE , @@ -40,6 +73,20 @@ +/ module lib.sys.meta; +// Example for converting types to values from module documentation. +@safe unittest +{ + alias Types = AliasSeq!(int, byte, ulong, int[10]); + + enum Sizeof(T) = T.sizeof; + + alias sizesAsAliasSeq = Map!(Sizeof, Types); + static assert(sizesAsAliasSeq == AliasSeq!(4, 1, 8, 40)); + + enum size_t[] sizes = [sizesAsAliasSeq]; + static assert(sizes == [4, 1, 8, 40]); +} + /++ Creates a sequence of zero or more aliases. This is most commonly used as template parameters or arguments. @@ -103,7 +150,7 @@ alias Alias(T) = T; @safe unittest { // Without Alias this would fail if Args[0] were e.g. a value and - // some logic would be needed to detect when to use enum instead + // some logic would be needed to detect when to use enum instead. alias Head(Args...) = Alias!(Args[0]); alias Tail(Args...) = Args[1 .. $]; @@ -140,7 +187,7 @@ alias Alias(T) = T; } { alias A = Alias!(AliasSeq!int); - static assert(!is(typeof(A[0]))); //not an AliasSeq + static assert(!is(typeof(A[0]))); // An Alias is not an AliasSeq. static assert(is(A == int)); } { diff --git a/lib/sys/traits.d b/lib/sys/traits.d index b84088f2e98..53be37369b6 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -2,20 +2,20 @@ /++ Templates which extract information about types and symbols at compile time. - In the context of lib.sys.traits, a "trait" is a template which evaluates to + In the context of lib.sys.traits, a "trait" is a template which provides + information about a type or symbol. Most traits evaluate to $(D true) or $(D false), telling the code using it whether the given arguments match / have that specific trait (e.g. whether the given type is - a dynamic array or whether the given function is $(D @safe)). These traits - are then used primarily in template constraints so that they can test that - the template arguments meet the criteria required by those templates, though - they can be useful in a variety of compile-time contexts + a dynamic array or whether the given function is $(D @safe)). However, some + traits may provide other kinds of information about a type (e.g. the trait + could evaluate to the base type for an enum type, or it could strip + $(D const) from the type to provide the mutable version of that type). + + These traits are then used primarily in template constraints so that they + can test that the template arguments meet the criteria required by those + templates, though they can be useful in a variety of compile-time contexts (e.g. the condition of a $(D static if)). - So, the symbols provided in this module are largely either traits or - templates designed to be used with traits (e.g. $(LREF Unconst) can be used - in a template constraint to get the mutable version of that type so that - the traits used then test the type without worrying about constness). - $(SCRIPT inhibitQuickIndex = 1;) $(BOOKTABLE , From 3579225931ad9b0d8855b5be1e61c690350b367a Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 5 Mar 2024 02:30:45 -0700 Subject: [PATCH 204/327] Add ConstOf, ImmutableOf, InoutOf, and SharedOf to lib.sys.traits. These do the same as their std.traits counterparts, but I've beefed up the documentation and examples a bit. I'm not sure that it's worth adding SharedConstOf, SharedInoutOf, or SharedConstInoutOf as well, since that seems kind of excessive to me - though it looks like std.variant does use SharedConstOf in its tests - but in either case, I think that those can be left for a later commit if we want to keep them, since this is already adding four symbols. --- lib/sys/traits.d | 167 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) diff --git a/lib/sys/traits.d b/lib/sys/traits.d index 53be37369b6..7a77d9a5c11 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -25,6 +25,12 @@ $(LREF Unshared) $(LREF Unqual) )) + $(TR $(TD Type Constructors) $(TD + $(LREF ConstOf) + $(LREF ImmutableOf) + $(LREF InoutOf) + $(LREF SharedOf) + )) ) Copyright: Copyright The D Language Foundation 2005 - 2024. @@ -328,3 +334,164 @@ else static assert(is(Unqual!(Foo!(const int)) == Foo!(const int))); static assert(is(Unqual!(const(Foo!int)) == Foo!int)); } + +/++ + Applies $(D const) to the given type. + + This is primarily useful in conjunction with templates that take a template + predicate (such as many of the templates in lib.sys.meta), since while in + most cases, you can simply do $(D const T) or $(D const(T)) to make $(D T) + $(D const), with something like $(REF Map, lib, sys, meta), you need to + pass a template to be applied. + + See_Also: + $(LREF ImmutableOf) + $(LREF InoutOf) + $(LREF SharedOf) + +/ +alias ConstOf(T) = const T; + +/// +@safe unittest +{ + static assert(is(ConstOf!int == const int)); + static assert(is(ConstOf!(const int) == const int)); + static assert(is(ConstOf!(inout int) == inout const int)); + static assert(is(ConstOf!(shared int) == const shared int)); + + // Note that const has no effect on immutable. + static assert(is(ConstOf!(immutable int) == immutable int)); + + import lib.sys.meta : AliasSeq, Map; + + alias Types = AliasSeq!(int, long, + bool*, ubyte[], + string, immutable(string)); + alias WithConst = Map!(ConstOf, Types); + static assert(is(WithConst == + AliasSeq!(const int, const long, + const(bool*), const(ubyte[]), + const(string), immutable(string)))); +} + +/++ + Applies $(D immutable) to the given type. + + This is primarily useful in conjunction with templates that take a template + predicate (such as many of the templates in lib.sys.meta), since while in + most cases, you can simply do $(D immutable T) or $(D immutable(T)) to make + $(D T) $(D immutable), with something like $(REF Map, lib, sys, meta), you + need to pass a template to be applied. + + See_Also: + $(LREF ConstOf) + $(LREF InoutOf) + $(LREF SharedOf) + +/ +alias ImmutableOf(T) = immutable T; + +/// +@safe unittest +{ + static assert(is(ImmutableOf!int == immutable int)); + + // Note that immutable overrides const and inout. + static assert(is(ImmutableOf!(const int) == immutable int)); + static assert(is(ImmutableOf!(inout int) == immutable int)); + + // Note that immutable overrides shared, since immutable is implicitly + // shared. + static assert(is(ImmutableOf!(shared int) == immutable int)); + + static assert(is(ImmutableOf!(immutable int) == immutable int)); + + import lib.sys.meta : AliasSeq, Map; + + alias Types = AliasSeq!(int, long, + bool*, ubyte[], + string, immutable(string)); + alias WithImmutable = Map!(ImmutableOf, Types); + static assert(is(WithImmutable == + AliasSeq!(immutable int, immutable long, + immutable(bool*), immutable(ubyte[]), + immutable(string), immutable(string)))); +} + +/++ + Applies $(D inout) to the given type. + + This is primarily useful in conjunction with templates that take a template + predicate (such as many of the templates in lib.sys.meta), since while in + most cases, you can simply do $(D inout T) or $(D inout(T)) to make $(D T) + $(D inout), with something like $(REF Map, lib, sys, meta), you need to + pass a template to be applied. + + See_Also: + $(LREF ConstOf) + $(LREF ImmutableOf) + $(LREF SharedOf) + +/ +alias InoutOf(T) = inout T; + +/// +@safe unittest +{ + static assert(is(InoutOf!int == inout int)); + static assert(is(InoutOf!(const int) == inout const int)); + static assert(is(InoutOf!(inout int) == inout int)); + static assert(is(InoutOf!(shared int) == inout shared int)); + + // Note that inout has no effect on immutable. + static assert(is(InoutOf!(immutable int) == immutable int)); + + import lib.sys.meta : AliasSeq, Map; + + alias Types = AliasSeq!(int, long, + bool*, ubyte[], + string, immutable(string)); + alias WithInout = Map!(InoutOf, Types); + static assert(is(WithInout == + AliasSeq!(inout int, inout long, + inout(bool*), inout(ubyte[]), + inout(string), immutable(string)))); +} + +/++ + Applies $(D shared) to the given type. + + This is primarily useful in conjunction with templates that take a template + predicate (such as many of the templates in lib.sys.meta), since while in + most cases, you can simply do $(D shared T) or $(D shared(T)) to make $(D T) + $(D shared), with something like $(REF Map, lib, sys, meta), you need to + pass a template to be applied. + + See_Also: + $(LREF ConstOf) + $(LREF ImmutableOf) + $(LREF InoutOf) + +/ +alias SharedOf(T) = shared T; + +/// +@safe unittest +{ + static assert(is(SharedOf!int == shared int)); + static assert(is(SharedOf!(const int) == const shared int)); + static assert(is(SharedOf!(inout int) == inout shared int)); + static assert(is(SharedOf!(shared int) == shared int)); + + // Note that shared has no effect on immutable, since immutable is + // implicitly shared. + static assert(is(SharedOf!(immutable int) == immutable int)); + + import lib.sys.meta : AliasSeq, Map; + + alias Types = AliasSeq!(int, long, + bool*, ubyte[], + string, immutable(string)); + alias WithShared = Map!(SharedOf, Types); + static assert(is(WithShared == + AliasSeq!(shared int, shared long, + shared(bool*), shared(ubyte[]), + shared(string), immutable(string)))); +} From 69a5122fad0bb25fda918316b2c8ded29c1aa63d Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 7 Mar 2024 00:48:31 -0700 Subject: [PATCH 205/327] Add isDynamicArray and isStaticArray to lib.sys.traits. (#8939) Their behavior does differ slightly from that of their std.traits counterparts, because they are false for enums even when an enum's base type would match. std.traits is inconsistent with how it treats enums (e.g. isSomeString is false for them, because it was causing bugs with ranges for them to pass, but many of the other traits are true for enums), but unfortunately, this isn't something that we've been able to fix in std.traits (std.traits' isDynamicArray even mentions the problem in a comment in its documentation), since it would break exising code (in potentially very subtle ways no less). I added a section to the module documentation explaining the reasoning for how lib.sys.traits handles enums and implicit conversions with the isXXX and hasXXX traits, which will hopefully not only make the situation clear but also help educate some folks on the issues with implicit conversions and template constraints. I also beefed up the tests and documentation for isDynamicArray and isStaticArray. --- lib/sys/traits.d | 243 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) diff --git a/lib/sys/traits.d b/lib/sys/traits.d index 7a77d9a5c11..9340e5fec55 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -16,6 +16,36 @@ templates, though they can be useful in a variety of compile-time contexts (e.g. the condition of a $(D static if)). + Note that unless otherwise specified, the isXXXX and hasXXX traits in this + module are checking for exact matches, so base types (e.g. with enums) and + other implicit conversions do not factor into whether such traits are true + or false. The type itself is being checked, not what it can be converted + to. + + This is because these traits are often used in templated constraints, and + having a type pass a template constraint based on an implicit conversion + but then not have the implicit conversion actually take place (which it + won't unless the template does something to force it internally) can lead + to either compilation errors or subtle behavioral differences - and even + when the conversion is done explicitly within a templated function, since + it's not done at the call site, it can still lead to subtle bugs in some + cases (e.g. if slicing a static array is involved). + + So, it's typically best to be explicit and clear about a template constraint + accepting any kind of implicit conversion rather than having it buried in a + trait where programmers stand a good chance of using the trait without + realizing that enums might pass based on their base type - or that a type + might pass based on some other implicit conversion. + + Regardless of what a trait is testing for, the documentation strives to be + $(I very) clear about what the trait does, and of course, the names do try + to make it clear as well - though obviously, only so much information can + be put into a name, and some folks will misintrepret some symbols no matter + how well they're named. So, please be sure that you clearly understand what + these traits do when using them, since messing up template constraints can + unfortunately be a great way to introduce subtle bugs into your program. + Either way, of course, unit tests are your friends. + $(SCRIPT inhibitQuickIndex = 1;) $(BOOKTABLE , @@ -48,6 +78,219 @@ +/ module lib.sys.traits; +/++ + Whether type $(D T) is a dynamic array. + + Note that this does not include implicit conversions or enum types. The + type itself must be a dynamic array. + +/ +enum isDynamicArray(T) = is(T == U[], U); + +/// +@safe unittest +{ + static assert( isDynamicArray!(int[])); + static assert( isDynamicArray!(const int[])); + static assert( isDynamicArray!(inout int[])); + static assert( isDynamicArray!(shared(int)[])); + static assert( isDynamicArray!string); + + static struct S + { + int[] arr; + } + + static assert(!isDynamicArray!int); + static assert(!isDynamicArray!(int*)); + static assert(!isDynamicArray!real); + static assert(!isDynamicArray!S); + + // Static arrays. + static assert(!isDynamicArray!(int[5])); + static assert(!isDynamicArray!(const(int)[5])); + + // Dynamic array of static arrays. + static assert( isDynamicArray!(long[3][])); + + // Static array of dynamic arrays. + static assert(!isDynamicArray!(long[][3])); + + // Associative array. + static assert(!isDynamicArray!(int[string])); + + // While typeof(null) gets treated as void[] in some contexts, it is + // distinct from void[] and is not considered to be a dynamic array. + static assert(!isDynamicArray!(typeof(null))); + + // However, naturally, if null is cast to a dynamic array, it's a + // dynamic array, since the cast forces the type. + static assert( isDynamicArray!(typeof(cast(int[]) null))); + + enum E : int[] + { + a = [1, 2, 3], + } + + // Enums do not count. + static assert(!isDynamicArray!E); + + static struct AliasThis + { + int[] arr; + alias this = arr; + } + + // Other implicit conversions do not count. + static assert(!isDynamicArray!AliasThis); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(int[], char[], string, long[3][], double[string][])) + { + enum E : Q!T { a = Q!T.init } + + static assert( isDynamicArray!(Q!T)); + static assert(!isDynamicArray!E); + static assert(!isDynamicArray!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(int[51], int[][2], + char[][int][11], immutable char[13u], + const(real)[1], const(real)[1][1], void[0])) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isDynamicArray!(Q!T)); + static assert(!isDynamicArray!E); + static assert(!isDynamicArray!(AliasThis!(Q!T))); + } + } +} + +/++ + Whether type $(D T) is a static array. + + Note that this does not include implicit conversions or enum types. The + type itself must be a static array. This is in contrast to + $(D __traits(isStaticArray, T)) which is true for enums (but not for other + implict conversions to static arrays). + + As explained in the module documentation, traits like this one are not true + for enums (unlike most of the $(D __traits) traits) in order to avoid + testing for implicit conversions by default with template constraints, + since that tends to lead to subtle bugs when the code isn't carefully + written to take implicit conversions into account. + + See also: + $(DDSUBLINK spec/traits, isStaticArray, $(D __traits(isStaticArray, T))) + +/ +enum bool isStaticArray(T) = is(T == U[n], U, size_t n); + +/// +@safe unittest +{ + static assert( isStaticArray!(int[12])); + static assert( isStaticArray!(const int[42])); + static assert( isStaticArray!(inout int[0])); + static assert( isStaticArray!(shared(int)[907])); + static assert( isStaticArray!(immutable(char)[5])); + + static struct S + { + int[4] arr; + } + + static assert(!isStaticArray!int); + static assert(!isStaticArray!(int*)); + static assert(!isStaticArray!real); + static assert(!isStaticArray!S); + + // Dynamic arrays. + static assert(!isStaticArray!(int[])); + static assert(!isStaticArray!(const(int)[])); + static assert(!isStaticArray!string); + + // Static array of dynamic arrays. + static assert( isStaticArray!(long[][3])); + + // Dynamic array of static arrays. + static assert(!isStaticArray!(long[3][])); + + // Associative array. + static assert(!isStaticArray!(int[string])); + + // Of course, null is not considered to be a static array. + static assert(!isStaticArray!(typeof(null))); + + enum E : int[3] + { + a = [1, 2, 3], + } + + // Enums do not count. + static assert(!isStaticArray!E); + + // This is the one place where isStaticArray differs from + // __traits(isStaticArray, ...) + static assert( __traits(isStaticArray, E)); + + static struct AliasThis + { + int[] arr; + alias this = arr; + } + + // Other implicit conversions do not count. + static assert(!isStaticArray!AliasThis); + + static assert(!__traits(isStaticArray, AliasThis)); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(int[51], int[][2], + char[][int][11], immutable char[13u], + const(real)[1], const(real)[1][1], void[0])) + { + enum E : Q!T { a = Q!T.init, } + + static assert( isStaticArray!(Q!T)); + static assert(!isStaticArray!E); + static assert(!isStaticArray!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(int[], char[], string, long[3][], double[string][])) + { + enum E : Q!T { a = Q!T.init, } + + static assert(!isStaticArray!(Q!T)); + static assert(!isStaticArray!E); + static assert(!isStaticArray!(AliasThis!(Q!T))); + } + } +} + /++ Removes the outer layer of $(D const), $(D inout), or $(D immutable) from type $(D T). From e16ce73f59ea8fb90b0a15bd54688b59dee9a821 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 8 Mar 2024 00:21:51 -0700 Subject: [PATCH 206/327] Add isSomeString and isSomeChar to lib.sys.traits. (#8940) This ports over isSomeString and isSomeChar from std.traits. isSomeString behaves the same (since the std.traits version doesn't accept enums), but the new isSomeChar is different in that the old one accepts enums, and this one rejects them. The new isSomeChar also has a simplified implementation, but the behavior is the same aside from how enums are treated. The documentation and tests have been beefed up in the process, and I added a bit more to the documentation / tests for isDynamicArray and isStaticArray based on what came up with the tests for isSomeString and isSomeChar. It is not my plan to port over any of the other traits in std.traits which are specifically for strings (e.g. isNarrowString), so checking string types with lib.sys.traits should be less confusing than it has been with std.traits. --- lib/sys/traits.d | 272 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 260 insertions(+), 12 deletions(-) diff --git a/lib/sys/traits.d b/lib/sys/traits.d index 9340e5fec55..a3834231970 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -50,6 +50,13 @@ $(BOOKTABLE , $(TR $(TH Category) $(TH Templates)) + $(TR $(TD Categories of types) $(TD + $(TR $(TD Traits for removing type qualfiers) $(TD + $(LREF isDynamicArray) + $(LREF isSomeChar) + $(LREF isSomeString) + $(LREF isStaticArray) + )) $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF Unconst) $(LREF Unshared) @@ -89,26 +96,41 @@ enum isDynamicArray(T) = is(T == U[], U); /// @safe unittest { + // Some types which are dynamic arrays. static assert( isDynamicArray!(int[])); static assert( isDynamicArray!(const int[])); static assert( isDynamicArray!(inout int[])); static assert( isDynamicArray!(shared(int)[])); static assert( isDynamicArray!string); - static struct S - { - int[] arr; - } + static assert( isDynamicArray!(typeof([1, 2, 3]))); + static assert( isDynamicArray!(typeof("dlang"))); + + int[] arr; + static assert( isDynamicArray!(typeof(arr))); + // Some types which aren't dynamic arrays. static assert(!isDynamicArray!int); static assert(!isDynamicArray!(int*)); static assert(!isDynamicArray!real); + + static struct S + { + int[] arr; + } static assert(!isDynamicArray!S); + // The struct itself isn't considered a dynamic array, + // but its member variable is when checked directly. + static assert( isDynamicArray!(typeof(S.arr))); + // Static arrays. static assert(!isDynamicArray!(int[5])); static assert(!isDynamicArray!(const(int)[5])); + int[2] sArr = [42, 97]; + static assert(!isDynamicArray!(typeof(sArr))); + // Dynamic array of static arrays. static assert( isDynamicArray!(long[3][])); @@ -165,7 +187,7 @@ enum isDynamicArray(T) = is(T == U[], U); static assert(!isDynamicArray!(AliasThis!(Q!T))); } - foreach (T; AliasSeq!(int[51], int[][2], + foreach (T; AliasSeq!(int, int[51], int[][2], char[][int][11], immutable char[13u], const(real)[1], const(real)[1][1], void[0])) { @@ -200,27 +222,44 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); /// @safe unittest { + // Some types which are static arrays. static assert( isStaticArray!(int[12])); static assert( isStaticArray!(const int[42])); static assert( isStaticArray!(inout int[0])); static assert( isStaticArray!(shared(int)[907])); static assert( isStaticArray!(immutable(char)[5])); - static struct S - { - int[4] arr; - } + // D doesn't have static array literals, but you get the same effect + // by casting a dynamic array literal to a static array, and of course, + // the result is typed as a static array. + static assert( isStaticArray!(typeof(cast(int[3]) [1, 2, 3]))); + int[2] sArr = [1, 2]; + static assert( isStaticArray!(typeof(sArr))); + + // Some types which are not static arrays. static assert(!isStaticArray!int); static assert(!isStaticArray!(int*)); static assert(!isStaticArray!real); + + static struct S + { + int[4] arr; + } static assert(!isStaticArray!S); + // The struct itself isn't considered a static array, + // but its member variable is when checked directly. + static assert( isStaticArray!(typeof(S.arr))); + // Dynamic arrays. static assert(!isStaticArray!(int[])); static assert(!isStaticArray!(const(int)[])); static assert(!isStaticArray!string); + int[] arr; + static assert(!isStaticArray!(typeof(arr))); + // Static array of dynamic arrays. static assert( isStaticArray!(long[][3])); @@ -241,8 +280,7 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); // Enums do not count. static assert(!isStaticArray!E); - // This is the one place where isStaticArray differs from - // __traits(isStaticArray, ...) + // This is where isStaticArray differs from __traits(isStaticArray, ...) static assert( __traits(isStaticArray, E)); static struct AliasThis @@ -280,7 +318,7 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); static assert(!isStaticArray!(AliasThis!(Q!T))); } - foreach (T; AliasSeq!(int[], char[], string, long[3][], double[string][])) + foreach (T; AliasSeq!(int, int[], char[], string, long[3][], double[string][])) { enum E : Q!T { a = Q!T.init, } @@ -291,6 +329,216 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); } } +/++ + Whether the given type is a built-in string type - i.e whether it's a + dynamic array of $(D char), $(D wchar), or $(D dchar), ignoring all + qualifiers. + + Note that this does not include implicit conversions or enum types. The + type itself must be a dynamic array whose element type is one of the three + built-in character types. + +/ +enum bool isSomeString(T) = is(immutable T == immutable C[], C) && (is(C == char) || is(C == wchar) || is(C == dchar)); + +/// +@safe unittest +{ + // Some types which are string types. + static assert( isSomeString!string); + static assert( isSomeString!wstring); + static assert( isSomeString!dstring); + static assert( isSomeString!(char[])); + static assert( isSomeString!(wchar[])); + static assert( isSomeString!(dchar[])); + static assert( isSomeString!(const char[])); + static assert( isSomeString!(immutable char[])); + static assert( isSomeString!(inout wchar[])); + static assert( isSomeString!(shared wchar[])); + static assert( isSomeString!(const shared dchar[])); + + static assert( isSomeString!(typeof("aaa"))); + static assert( isSomeString!(typeof("aaa"w))); + static assert( isSomeString!(typeof("aaa"d))); + + string s; + static assert( isSomeString!(typeof(s))); + + // Some types which are not strings. + static assert(!isSomeString!int); + static assert(!isSomeString!(int[])); + static assert(!isSomeString!(byte[])); + + // Static arrays of characters are not considered strings. + static assert(!isSomeString!(char[4])); + + static struct S + { + string str; + } + static assert(!isSomeString!S); + + // The struct itself isn't considered a string, + // but its member variable is when checked directly. + static assert( isSomeString!(typeof(S.str))); + + // While strings can be null, typeof(null) is not typed as a string. + static assert(!isSomeString!(typeof(null))); + + // However, naturally, if null is cast to a string type, + // it's a string type, since the cast forces the type. + static assert( isSomeString!(typeof(cast(char[]) null))); + + enum E : string + { + a = "dlang" + } + + // Enums do not count. + static assert(!isSomeString!E); + + static struct AliasThis + { + string str; + alias this = str; + } + + // Other implicit conversions do not count. + static assert(!isSomeString!AliasThis); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(char[], wchar[], dchar[])) + { + enum E : Q!T { a = Q!T.init } + + static assert( isSomeString!(Q!T)); + static assert(!isSomeString!E); + static assert(!isSomeString!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(char, wchar, dchar, int, byte[], ubyte[], int[], char[12], wchar[17], dchar[2], void[])) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isSomeString!(Q!T)); + static assert(!isSomeString!E); + static assert(!isSomeString!(AliasThis!(Q!T))); + } + } +} + +/++ + Whether the given type is $(D char), $(D wchar), or $(D dchar), ignoring all + qualifiers. + + Note that this does not include implicit conversions or enum types. The + type itself must be one of the three built-in character type. + +/ +enum isSomeChar(T) = is(immutable T == immutable char) || + is(immutable T == immutable wchar) || + is(immutable T == immutable dchar); + +/// +@safe unittest +{ + // Some types which are character types. + static assert( isSomeChar!char); + static assert( isSomeChar!wchar); + static assert( isSomeChar!dchar); + static assert( isSomeChar!(const char)); + static assert( isSomeChar!(immutable char)); + static assert( isSomeChar!(inout wchar)); + static assert( isSomeChar!(shared wchar)); + static assert( isSomeChar!(const shared dchar)); + + static assert( isSomeChar!(typeof('c'))); + static assert( isSomeChar!(typeof("hello world"[3]))); + + dchar c; + static assert( isSomeChar!(typeof(c))); + + // Some types which aren't character types. + static assert(!isSomeChar!int); + static assert(!isSomeChar!byte); + static assert(!isSomeChar!string); + static assert(!isSomeChar!wstring); + static assert(!isSomeChar!dstring); + static assert(!isSomeChar!(char[4])); + + static struct S + { + dchar c; + } + static assert(!isSomeChar!S); + + // The struct itself isn't considered a character, + // but its member variable is when checked directly. + static assert( isSomeChar!(typeof(S.c))); + + enum E : dchar + { + a = 'a' + } + + // Enums do not count. + static assert(!isSomeChar!E); + + static struct AliasThis + { + dchar c; + alias this = c; + } + + // Other implicit conversions do not count. + static assert(!isSomeChar!AliasThis); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(char, wchar, dchar)) + { + enum E : Q!T { a = Q!T.init } + + static assert( isSomeChar!(Q!T)); + static assert(!isSomeChar!E); + static assert(!isSomeChar!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(bool, byte, ubyte, short, ushort, int, uint, + long, ulong, float, double, real, + char[], wchar[], dchar[], int[], void[], + char[12], wchar[17], dchar[2])) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isSomeChar!(Q!T)); + static assert(!isSomeChar!E); + static assert(!isSomeChar!(AliasThis!(Q!T))); + } + } +} + /++ Removes the outer layer of $(D const), $(D inout), or $(D immutable) from type $(D T). From ac6c03a646b950ddb6d1d608304ac93caef067aa Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 8 Mar 2024 16:08:47 +0000 Subject: [PATCH 207/327] [std.algorithm.searching] Improve `count` docs Fix `value` missing reference. Tweak wording. Explain `pred` better. Separate out needle overloads from the other 2. Fix 'Returns'. Split example into 2. --- std/algorithm/searching.d | 61 +++++++++++++++++++++++++-------------- 1 file changed, 40 insertions(+), 21 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 465723c16ed..99f318ca7e0 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -605,34 +605,27 @@ if (isNarrowString!R1 && isNarrowString!R2) // count /** -The first version counts the number of elements `x` in `r` for -which `pred(x, value)` is `true`. `pred` defaults to +The first version counts each element `e` in `haystack` for +which `pred(e, needle)` is `true`. `pred` defaults to equality. Performs $(BIGOH haystack.length) evaluations of `pred`. -The second version returns the number of times `needle` occurs in -`haystack`. Throws an exception if `needle.empty`, as the _count +The second version counts the number of times `needle` was matched in +`haystack`. `pred` compares elements in each range. +Throws an exception if `needle.empty`, as the _count of the empty range in any range would be infinite. Overlapped counts are not considered, for example `count("aaa", "aa")` is `1`, not `2`. -The third version counts the elements for which `pred(x)` is $(D -true). Performs $(BIGOH haystack.length) evaluations of `pred`. - -The fourth version counts the number of elements in a range. It is -an optimization for the third version: if the given range has the -`length` property the count is returned right away, otherwise -performs $(BIGOH haystack.length) to walk the range. - Note: Regardless of the overload, `count` will not accept infinite ranges for `haystack`. Params: - pred = The predicate to evaluate. + pred = The predicate to compare elements. haystack = The range to _count. - needle = The element or sub-range to _count in the `haystack`. + needle = The element or sub-range to _count in `haystack`. Returns: - The number of positions in the `haystack` for which `pred` returned true. + The number of matches in `haystack`. */ size_t count(alias pred = "a == b", Range, E)(Range haystack, E needle) if (isInputRange!Range && !isInfinite!Range && @@ -645,21 +638,22 @@ if (isInputRange!Range && !isInfinite!Range && /// @safe unittest { - import std.uni : toLower; - // count elements in range int[] a = [ 1, 2, 4, 3, 2, 5, 3, 2, 4 ]; - assert(count(a) == 9); assert(count(a, 2) == 3); assert(count!("a > b")(a, 2) == 5); +} + +/// +@safe unittest +{ + import std.uni : toLower; // count range in range assert(count("abcadfabf", "ab") == 2); assert(count("ababab", "abab") == 1); assert(count("ababab", "abx") == 0); // fuzzy count range in range assert(count!((a, b) => toLower(a) == toLower(b))("AbcAdFaBf", "ab") == 2); - // count predicate in range - assert(count!("a > 1")(a) == 8); } @safe unittest @@ -711,7 +705,22 @@ if (isForwardRange!R1 && !isInfinite!R1 && } } -/// Ditto +/** +The first version counts each element `e` in `haystack` for which `pred(e)` is $(D +true). Performs $(BIGOH haystack.length) evaluations of `pred`. + +The second version counts the number of elements in a range. +If the given range has the `length` property, +that is returned right away, otherwise +performs $(BIGOH haystack.length) to walk the range. + +Params: + pred = Optional predicate to compare elements. + haystack = The range to _count. + +Returns: + The number of elements in `haystack` (for which `pred` returned true). +*/ size_t count(alias pred, R)(R haystack) if (isInputRange!R && !isInfinite!R && is(typeof(unaryFun!pred(haystack.front)))) @@ -723,6 +732,16 @@ if (isInputRange!R && !isInfinite!R && return result; } +/// +@safe unittest +{ + // count elements in range + int[] a = [ 1, 2, 4, 3, 2, 5, 3, 2, 4 ]; + assert(count(a) == 9); + // count predicate in range + assert(count!("a > 2")(a) == 5); +} + /// Ditto size_t count(R)(R haystack) if (isInputRange!R && !isInfinite!R) From 6cbb729db6e40462cac6573e242beee08b6cdd2c Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 8 Mar 2024 12:19:04 -0700 Subject: [PATCH 208/327] Remove isSomeString and isSomeChar. (#8942) The consensus seems to be that these two should go, for better or worse. --- lib/sys/traits.d | 212 ----------------------------------------------- 1 file changed, 212 deletions(-) diff --git a/lib/sys/traits.d b/lib/sys/traits.d index a3834231970..0c3f838b558 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -53,8 +53,6 @@ $(TR $(TD Categories of types) $(TD $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF isDynamicArray) - $(LREF isSomeChar) - $(LREF isSomeString) $(LREF isStaticArray) )) $(TR $(TD Traits for removing type qualfiers) $(TD @@ -329,216 +327,6 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); } } -/++ - Whether the given type is a built-in string type - i.e whether it's a - dynamic array of $(D char), $(D wchar), or $(D dchar), ignoring all - qualifiers. - - Note that this does not include implicit conversions or enum types. The - type itself must be a dynamic array whose element type is one of the three - built-in character types. - +/ -enum bool isSomeString(T) = is(immutable T == immutable C[], C) && (is(C == char) || is(C == wchar) || is(C == dchar)); - -/// -@safe unittest -{ - // Some types which are string types. - static assert( isSomeString!string); - static assert( isSomeString!wstring); - static assert( isSomeString!dstring); - static assert( isSomeString!(char[])); - static assert( isSomeString!(wchar[])); - static assert( isSomeString!(dchar[])); - static assert( isSomeString!(const char[])); - static assert( isSomeString!(immutable char[])); - static assert( isSomeString!(inout wchar[])); - static assert( isSomeString!(shared wchar[])); - static assert( isSomeString!(const shared dchar[])); - - static assert( isSomeString!(typeof("aaa"))); - static assert( isSomeString!(typeof("aaa"w))); - static assert( isSomeString!(typeof("aaa"d))); - - string s; - static assert( isSomeString!(typeof(s))); - - // Some types which are not strings. - static assert(!isSomeString!int); - static assert(!isSomeString!(int[])); - static assert(!isSomeString!(byte[])); - - // Static arrays of characters are not considered strings. - static assert(!isSomeString!(char[4])); - - static struct S - { - string str; - } - static assert(!isSomeString!S); - - // The struct itself isn't considered a string, - // but its member variable is when checked directly. - static assert( isSomeString!(typeof(S.str))); - - // While strings can be null, typeof(null) is not typed as a string. - static assert(!isSomeString!(typeof(null))); - - // However, naturally, if null is cast to a string type, - // it's a string type, since the cast forces the type. - static assert( isSomeString!(typeof(cast(char[]) null))); - - enum E : string - { - a = "dlang" - } - - // Enums do not count. - static assert(!isSomeString!E); - - static struct AliasThis - { - string str; - alias this = str; - } - - // Other implicit conversions do not count. - static assert(!isSomeString!AliasThis); -} - -@safe unittest -{ - import lib.sys.meta : Alias, AliasSeq; - - static struct AliasThis(T) - { - T member; - alias this = member; - } - - foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) - { - foreach (T; AliasSeq!(char[], wchar[], dchar[])) - { - enum E : Q!T { a = Q!T.init } - - static assert( isSomeString!(Q!T)); - static assert(!isSomeString!E); - static assert(!isSomeString!(AliasThis!(Q!T))); - } - - foreach (T; AliasSeq!(char, wchar, dchar, int, byte[], ubyte[], int[], char[12], wchar[17], dchar[2], void[])) - { - enum E : Q!T { a = Q!T.init } - - static assert(!isSomeString!(Q!T)); - static assert(!isSomeString!E); - static assert(!isSomeString!(AliasThis!(Q!T))); - } - } -} - -/++ - Whether the given type is $(D char), $(D wchar), or $(D dchar), ignoring all - qualifiers. - - Note that this does not include implicit conversions or enum types. The - type itself must be one of the three built-in character type. - +/ -enum isSomeChar(T) = is(immutable T == immutable char) || - is(immutable T == immutable wchar) || - is(immutable T == immutable dchar); - -/// -@safe unittest -{ - // Some types which are character types. - static assert( isSomeChar!char); - static assert( isSomeChar!wchar); - static assert( isSomeChar!dchar); - static assert( isSomeChar!(const char)); - static assert( isSomeChar!(immutable char)); - static assert( isSomeChar!(inout wchar)); - static assert( isSomeChar!(shared wchar)); - static assert( isSomeChar!(const shared dchar)); - - static assert( isSomeChar!(typeof('c'))); - static assert( isSomeChar!(typeof("hello world"[3]))); - - dchar c; - static assert( isSomeChar!(typeof(c))); - - // Some types which aren't character types. - static assert(!isSomeChar!int); - static assert(!isSomeChar!byte); - static assert(!isSomeChar!string); - static assert(!isSomeChar!wstring); - static assert(!isSomeChar!dstring); - static assert(!isSomeChar!(char[4])); - - static struct S - { - dchar c; - } - static assert(!isSomeChar!S); - - // The struct itself isn't considered a character, - // but its member variable is when checked directly. - static assert( isSomeChar!(typeof(S.c))); - - enum E : dchar - { - a = 'a' - } - - // Enums do not count. - static assert(!isSomeChar!E); - - static struct AliasThis - { - dchar c; - alias this = c; - } - - // Other implicit conversions do not count. - static assert(!isSomeChar!AliasThis); -} - -@safe unittest -{ - import lib.sys.meta : Alias, AliasSeq; - - static struct AliasThis(T) - { - T member; - alias this = member; - } - - foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) - { - foreach (T; AliasSeq!(char, wchar, dchar)) - { - enum E : Q!T { a = Q!T.init } - - static assert( isSomeChar!(Q!T)); - static assert(!isSomeChar!E); - static assert(!isSomeChar!(AliasThis!(Q!T))); - } - - foreach (T; AliasSeq!(bool, byte, ubyte, short, ushort, int, uint, - long, ulong, float, double, real, - char[], wchar[], dchar[], int[], void[], - char[12], wchar[17], dchar[2])) - { - enum E : Q!T { a = Q!T.init } - - static assert(!isSomeChar!(Q!T)); - static assert(!isSomeChar!E); - static assert(!isSomeChar!(AliasThis!(Q!T))); - } - } -} - /++ Removes the outer layer of $(D const), $(D inout), or $(D immutable) from type $(D T). From a44abe91674ebafe4d4c137197b13b2d6cdc05d4 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 8 Mar 2024 11:00:40 -0800 Subject: [PATCH 209/327] use cast() where we can --- std/bitmanip.d | 8 ++++---- std/conv.d | 6 +++--- std/math/algebraic.d | 4 ++-- std/variant.d | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/std/bitmanip.d b/std/bitmanip.d index c9813e35476..3006d6337ad 100644 --- a/std/bitmanip.d +++ b/std/bitmanip.d @@ -2959,10 +2959,10 @@ if (__traits(isIntegral, T)) Unqual!T result; version (LittleEndian) foreach_reverse (b; array) - result = cast(Unqual!T) ((result << 8) | b); + result = cast() cast(T) ((result << 8) | b); else foreach (b; array) - result = cast(Unqual!T) ((result << 8) | b); + result = cast() cast(T) ((result << 8) | b); return cast(T) result; } @@ -2977,7 +2977,7 @@ if (__traits(isIntegral, T)) foreach (i; 0 .. T.sizeof) { result[i] = cast(ubyte) tmp; - tmp = cast(Unqual!T) (tmp >>> 8); + tmp = cast() cast(T) (tmp >>> 8); } } else @@ -2985,7 +2985,7 @@ if (__traits(isIntegral, T)) foreach_reverse (i; 0 .. T.sizeof) { result[i] = cast(ubyte) tmp; - tmp = cast(Unqual!T) (tmp >>> 8); + tmp = cast()(T) (tmp >>> 8); } } return result; diff --git a/std/conv.d b/std/conv.d index 5d02df08bf9..3aa73c68bf1 100644 --- a/std/conv.d +++ b/std/conv.d @@ -5250,7 +5250,7 @@ if (isIntegral!T && isOutputRange!(W, char)) auto unsigned(T)(T x) if (isIntegral!T) { - return cast(Unqual!(Unsigned!T))x; + return cast() cast(Unsigned!T) x; } /// @@ -5271,7 +5271,7 @@ if (isSomeChar!T) { // All characters are unsigned static assert(T.min == 0, T.stringof ~ ".min must be zero"); - return cast(Unqual!T) x; + return cast() x; } @safe unittest @@ -5328,7 +5328,7 @@ if (isSomeChar!T) auto signed(T)(T x) if (isIntegral!T) { - return cast(Unqual!(Signed!T))x; + return cast() cast(Signed!T) x; } /// diff --git a/std/math/algebraic.d b/std/math/algebraic.d index fd305231d08..cfb88c89f75 100644 --- a/std/math/algebraic.d +++ b/std/math/algebraic.d @@ -974,9 +974,9 @@ private T powIntegralImpl(PowType type, T)(T val) else { static if (isSigned!T) - return cast(Unqual!T) (val < 0 ? -(T(1) << bsr(0 - val) + type) : T(1) << bsr(val) + type); + return cast() cast(T) (val < 0 ? -(T(1) << bsr(0 - val) + type) : T(1) << bsr(val) + type); else - return cast(Unqual!T) (T(1) << bsr(val) + type); + return cast() cast(T) (T(1) << bsr(val) + type); } } diff --git a/std/variant.d b/std/variant.d index 41cd4848b12..f7832104d70 100644 --- a/std/variant.d +++ b/std/variant.d @@ -382,7 +382,7 @@ private: static if (isStaticArray!A && isDynamicArray!T) { auto this_ = (*src)[]; - emplaceRef(*cast(Unqual!T*) zat, cast(Unqual!T) this_); + emplaceRef(*cast(Unqual!T*) zat, cast() cast(T) this_); } else { From 2759bc800a5ec7db0ea393c21e347e9432bf3e81 Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Fri, 8 Mar 2024 13:23:10 -0800 Subject: [PATCH 210/327] utf.d replace use of Unqual with cast() --- std/utf.d | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/std/utf.d b/std/utf.d index 3eef5cbcc03..c0cd3863b32 100644 --- a/std/utf.d +++ b/std/utf.d @@ -328,7 +328,7 @@ Returns: bool isValidCodepoint(Char)(Char c) if (isSomeChar!Char) { - alias UChar = Unqual!Char; + alias UChar = typeof(cast() c); static if (is(UChar == char)) { return c <= 0x7F; @@ -1418,8 +1418,8 @@ do } else { - alias Char = Unqual!(ElementType!S); - Char[4] codeUnits; + alias Char = typeof(cast() ElementType!S.init); + Char[4] codeUnits = void; S tmp = str.save; for (size_t i = numCodeUnits; i > 0; ) { @@ -2821,7 +2821,7 @@ if (isSomeChar!C) size_t codeLength(C, InputRange)(InputRange input) if (isSomeFiniteCharInputRange!InputRange) { - alias EncType = Unqual!(ElementEncodingType!InputRange); + alias EncType = typeof(cast() ElementEncodingType!InputRange.init); static if (isSomeString!InputRange && is(EncType == C) && is(typeof(input.length))) return input.length; else @@ -3089,7 +3089,8 @@ private T toUTFImpl(T, S)(scope S s) static if (is(S == C[], C) || hasLength!S) app.reserve(s.length); - foreach (c; s.byUTF!(Unqual!(ElementEncodingType!T))) + ElementEncodingType!T e = void; + foreach (c; s.byUTF!(typeof(cast() ElementEncodingType!T.init))) app.put(c); return app.data; @@ -3168,10 +3169,10 @@ if (is(immutable typeof(*P.init) == typeof(str[0]))) return trustedPtr(); } - alias C = Unqual!(ElementEncodingType!S); + alias C = typeof(cast() ElementEncodingType!S.init); //If the P is mutable, then we have to make a copy. - static if (is(Unqual!(typeof(*P.init)) == typeof(*P.init))) + static if (is(typeof(cast() *P.init) == typeof(*P.init))) { return toUTFzImpl!(P, const(C)[])(cast(const(C)[])str); } @@ -3203,13 +3204,15 @@ private P toUTFzImpl(P, S)(return scope S str) @safe pure if (is(typeof(str[0]) C) && is(immutable typeof(*P.init) == immutable C) && !is(C == immutable)) //C[] or const(C)[] -> C*, const(C)*, or immutable(C)* { - alias InChar = typeof(str[0]); - alias OutChar = typeof(*P.init); + alias InChar = typeof(str[0]); + alias UInChar = typeof(cast() str[0]); // unqualified version of InChar + alias OutChar = typeof(*P.init); + alias UOutChar = typeof(cast() *P.init); // unqualified version //const(C)[] -> const(C)* or //C[] -> C* or const(C)* - static if (( is(const(Unqual!InChar) == InChar) && is(const(Unqual!OutChar) == OutChar)) || - (!is(const(Unqual!InChar) == InChar) && !is(immutable(Unqual!OutChar) == OutChar))) + static if (( is(const(UInChar) == InChar) && is( const(UOutChar) == OutChar)) || + (!is(const(UInChar) == InChar) && !is(immutable(UOutChar) == OutChar))) { if (!__ctfe) { @@ -3228,7 +3231,7 @@ if (is(typeof(str[0]) C) && is(immutable typeof(*P.init) == immutable C) && !is( else { import std.array : uninitializedArray; - auto copy = uninitializedArray!(Unqual!OutChar[])(str.length + 1); + auto copy = uninitializedArray!(UOutChar[])(str.length + 1); copy[0 .. $ - 1] = str[]; copy[$ - 1] = '\0'; From 84c6e78a76824bdfb67453efee9d056991294322 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Sat, 9 Mar 2024 15:55:42 -0700 Subject: [PATCH 211/327] Add isInteger and isFloatingPoint to lib.sys.traits. (#8945) isInteger is similar to std.traits.isIntegral, but I went with a different name because it's specifically testing for the built-in integer types and not for all types which are even vaguely integral. It also helps distinguish from __traits(isIntegral, T) which accepts just about anything and its grandmother which is even vaguely integer-like / integral (to the point that I honestly question how much sense it makes to ever use it). The main difference between isInteger and std.traits.isIntegral is that isIntegral accepts enums, whereas isInteger does not. isIntegral also theoretically accepts cent and ucent, but since it's now an error to use those, I don't think that it accepts them any longer in practice anyway. isInteger makes no attempt to accept them and does not accept their replacement types, because they're not built-in (and it's not clear to me that we've fully sorted out what we're doing with those anyway). isFloatingPoint is similar to std.traits' isFloatingPoint except that the std.traits version accepts everything that __traits(isFloating, T) does along with any type that implicitly converts to real. The lib.sys.traits version accepts float, double, and real only. --- lib/sys/traits.d | 300 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 300 insertions(+) diff --git a/lib/sys/traits.d b/lib/sys/traits.d index 0c3f838b558..798437e8e31 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -53,6 +53,8 @@ $(TR $(TD Categories of types) $(TD $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF isDynamicArray) + $(LREF isInteger) + $(LREF isFloatingPoint) $(LREF isStaticArray) )) $(TR $(TD Traits for removing type qualfiers) $(TD @@ -500,6 +502,304 @@ template Unshared(T) static assert(is(Unshared!(shared(Foo!int)) == Foo!int)); } +/++ + Whether the given type is one of the built-in integer types, ignoring all + qualifiers. + + $(TABLE + $(TR $(TH Integer Types)) + $(TR $(TD byte)) + $(TR $(TD ubyte)) + $(TR $(TD short)) + $(TR $(TD ushort)) + $(TR $(TD int)) + $(TR $(TD uint)) + $(TR $(TD long)) + $(TR $(TD ulong)) + ) + + Note that this does not include implicit conversions or enum types. The + type itself must be one of the built-in integer types. + + This trait does have some similarities to $(D __traits(isIntegral, T)), but + $(D isIntegral) accepts a $(D lot) more types than isInteger does. + isInteger is specifically for testing for the built-in integer types, + whereas $(D isIntegral) tests for a whole set of types that are vaguely + integer-like (including $(D bool), the three built-in character types, and + some of the vector types from core.simd). So, for most code, isInteger is + going to be more appropriate, but obviously, it depends on what the code is + trying to do. + + See also: + $(DDSUBLINK spec/traits, isIntegral, $(D __traits(isIntegral, T))) + +/ +enum isInteger(T) = is(immutable T == immutable byte) || + is(immutable T == immutable ubyte) || + is(immutable T == immutable short) || + is(immutable T == immutable ushort) || + is(immutable T == immutable int) || + is(immutable T == immutable uint) || + is(immutable T == immutable long) || + is(immutable T == immutable ulong); + +/// +@safe unittest +{ + // Some types which are integer types. + static assert( isInteger!byte); + static assert( isInteger!ubyte); + static assert( isInteger!short); + static assert( isInteger!ushort); + static assert( isInteger!int); + static assert( isInteger!uint); + static assert( isInteger!long); + static assert( isInteger!ulong); + + static assert( isInteger!(const ubyte)); + static assert( isInteger!(immutable short)); + static assert( isInteger!(inout int)); + static assert( isInteger!(shared uint)); + static assert( isInteger!(const shared ulong)); + + static assert( isInteger!(typeof(42))); + static assert( isInteger!(typeof(1234567890L))); + + int i; + static assert( isInteger!(typeof(i))); + + // Some types which aren't integer types. + static assert(!isInteger!bool); + static assert(!isInteger!char); + static assert(!isInteger!wchar); + static assert(!isInteger!dchar); + static assert(!isInteger!(int[])); + static assert(!isInteger!(ubyte[4])); + static assert(!isInteger!(int*)); + static assert(!isInteger!double); + static assert(!isInteger!string); + + static struct S + { + int i; + } + static assert(!isInteger!S); + + // The struct itself isn't considered an integer, + // but its member variable is when checked directly. + static assert( isInteger!(typeof(S.i))); + + enum E : int + { + a = 42 + } + + // Enums do not count. + static assert(!isInteger!E); + + static struct AliasThis + { + int i; + alias this = i; + } + + // Other implicit conversions do not count. + static assert(!isInteger!AliasThis); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + // The actual core.simd types available vary from system to system, so we + // have to be a bit creative here. The reason that we're testing these types + // is because __traits(isIntegral, T) accepts them, but isInteger is not + // supposed to. + template SIMDTypes() + { + import core.simd; + + alias SIMDTypes = AliasSeq!(); + static if (is(ubyte16)) + SIMDTypes = AliasSeq!(SIMDTypes, ubyte16); + static if (is(int4)) + SIMDTypes = AliasSeq!(SIMDTypes, int4); + static if (is(double2)) + SIMDTypes = AliasSeq!(SIMDTypes, double2); + static if (is(void16)) + SIMDTypes = AliasSeq!(SIMDTypes, void16); + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(byte, ubyte, short, ushort, int, uint, long, ulong)) + { + enum E : Q!T { a = Q!T.init } + + static assert( isInteger!(Q!T)); + static assert(!isInteger!E); + static assert(!isInteger!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(bool, char, wchar, dchar, float, double, real, SIMDTypes!(), + int[], ubyte[8], dchar[], void[], long*)) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isInteger!(Q!T)); + static assert(!isInteger!E); + static assert(!isInteger!(AliasThis!(Q!T))); + } + } +} + +/++ + Whether the given type is one of the built-in floating-point types, ignoring + all qualifiers. + + $(TABLE + $(TR $(TH Floating-Point Types)) + $(TR $(TD float)) + $(TR $(TD double)) + $(TR $(TD real)) + ) + + Note that this does not include implicit conversions or enum types. The + type itself must be one of the built-in floating-point types. + + This trait does have some similarities to $(D __traits(isFloating, T)), but + $(D isFloating) accepts more types than isFloatingPoint does. + isFloatingPoint is specifically for testing for the built-in floating-point + types, whereas $(D isFloating) tests for a whole set of types that are + vaguely float-like (including enums with a base type which is a + floating-point type and some of the vector types from core.simd). So, for + most code, isFloatingPoint is going to be more appropriate, but obviously, + it depends on what the code is trying to do. + + See also: + $(DDSUBLINK spec/traits, isFloating, $(D __traits(isFloating, T))) + +/ +enum isFloatingPoint(T) = is(immutable T == immutable float) || + is(immutable T == immutable double) || + is(immutable T == immutable real); + +/// +@safe unittest +{ + // Some types which are floating-point types. + static assert( isFloatingPoint!float); + static assert( isFloatingPoint!double); + static assert( isFloatingPoint!real); + + static assert( isFloatingPoint!(const float)); + static assert( isFloatingPoint!(immutable float)); + static assert( isFloatingPoint!(inout double)); + static assert( isFloatingPoint!(shared double)); + static assert( isFloatingPoint!(const shared real)); + + static assert( isFloatingPoint!(typeof(42.0))); + static assert( isFloatingPoint!(typeof(42f))); + static assert( isFloatingPoint!(typeof(1e5))); + static assert( isFloatingPoint!(typeof(97.4L))); + + double d; + static assert( isFloatingPoint!(typeof(d))); + + // Some types which aren't floating-point types. + static assert(!isFloatingPoint!bool); + static assert(!isFloatingPoint!char); + static assert(!isFloatingPoint!dchar); + static assert(!isFloatingPoint!int); + static assert(!isFloatingPoint!long); + static assert(!isFloatingPoint!(float[])); + static assert(!isFloatingPoint!(double[4])); + static assert(!isFloatingPoint!(real*)); + static assert(!isFloatingPoint!string); + + static struct S + { + double d; + } + static assert(!isFloatingPoint!S); + + // The struct itself isn't considered a floating-point type, + // but its member variable is when checked directly. + static assert( isFloatingPoint!(typeof(S.d))); + + enum E : double + { + a = 12.34 + } + + // Enums do not count. + static assert(!isFloatingPoint!E); + + static struct AliasThis + { + double d; + alias this = d; + } + + // Other implicit conversions do not count. + static assert(!isFloatingPoint!AliasThis); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + // The actual core.simd types available vary from system to system, so we + // have to be a bit creative here. The reason that we're testing these types + // is because __traits(isFloating, T) accepts them, but isFloatingPoint is + // not supposed to. + template SIMDTypes() + { + import core.simd; + + alias SIMDTypes = AliasSeq!(); + static if (is(int4)) + SIMDTypes = AliasSeq!(SIMDTypes, int4); + static if (is(double2)) + SIMDTypes = AliasSeq!(SIMDTypes, double2); + static if (is(void16)) + SIMDTypes = AliasSeq!(SIMDTypes, void16); + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(float, double, real)) + { + enum E : Q!T { a = Q!T.init } + + static assert( isFloatingPoint!(Q!T)); + static assert(!isFloatingPoint!E); + static assert(!isFloatingPoint!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(bool, char, wchar, dchar, byte, ubyte, short, ushort, + int, uint, long, ulong, SIMDTypes!(), + int[], float[8], real[], void[], double*)) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isFloatingPoint!(Q!T)); + static assert(!isFloatingPoint!E); + static assert(!isFloatingPoint!(AliasThis!(Q!T))); + } + } +} + /++ Removes the outer layer of all type qualifiers from type $(D T). From b37c7cdcfc8448c3101e34434996928dc2d4cef4 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 12 Mar 2024 04:54:56 -0600 Subject: [PATCH 212/327] Add isNumeric and isPointer. (#8946) isNumeric!T is equivalent to isInteger!T || isFloatingPoint!T, so I suppose that its value is somewhat questionable with how simple it is, but it does save a template instantiation in the process and arguably is clearer for documentation purposes. There is an isNumeric in std.traits, but I would have to study it in detail to figure out exactly what it accepts, because it is written in a rather confusing manner (though it does clearly accept enums, which this isNumeric does not). I have tried to make lib.sys.traits' isNumeric very clear in its documentation about what it accepts. isPointer does exactly what it says on the tin, so it's quite straightforward all around. I also beefed up the documentation on isDynamicArray to discuss a bit about dynamic arrays vs slices and why the kind of memory that backs a dynamic array is irrelevant to the type (and thus irrelevant to the trait) - as well as pointing out that they're completely different from pointers, if that isn't obvious enough. --- lib/sys/traits.d | 360 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 358 insertions(+), 2 deletions(-) diff --git a/lib/sys/traits.d b/lib/sys/traits.d index 798437e8e31..9fccfe3e906 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -53,8 +53,10 @@ $(TR $(TD Categories of types) $(TD $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF isDynamicArray) - $(LREF isInteger) $(LREF isFloatingPoint) + $(LREF isInteger) + $(LREF isNumeric) + $(LREF isPointer) $(LREF isStaticArray) )) $(TR $(TD Traits for removing type qualfiers) $(TD @@ -86,10 +88,78 @@ module lib.sys.traits; /++ - Whether type $(D T) is a dynamic array. + Whether the given type is a dynamic array (or what is sometimes referred to + as a slice, since a dynamic array in D is a slice of memory). Note that this does not include implicit conversions or enum types. The type itself must be a dynamic array. + + Remember that D's dynamic arrays are essentially: + --- + struct DynamicArray(T) + { + size_t length; + T* ptr; + } + --- + where $(D ptr) points to the first element in the array, and $(D length) is + the number of elements in the array. + + A dynamic array is not a pointer (unlike arrays in C/C++), and its elements + do not live inside the dynamic array itself. The dynamic array is simply a + slice of memory and does not own or manage its own memory. It can be a + slice of any piece of memory, including GC-allocated memory, the stack, + malloc-ed memory, etc. (with what kind of memory it is of course being + determined by how the dynamic array was created in the first place) + - though if you do any operations on it which end up requiring allocation + (e.g. appending to it if it doesn't have the capacity to expand in-place, + which it won't if it isn't a slice of GC-allocated memory), then that + reallocation will result in the dynamic array being a slice of newly + allocated, GC-backed memory (regardless of what it was a slice of before), + since it's the GC that deals with those allocations. + + As long as code just accesses the elements or members of the dynamic array + - or reduces its length so that it's a smaller slice - it will continue to + point to whatever block of memory it pointed to originally. And because the + GC makes sure that appending to a dynamic array does not stomp on the + memory of any other dynamic arrays, appending to a dynamic array will not + affect any other dynamic array which is a slice of that same block of + memory whether a reallocation occurs or not. + + Regardless, since what allocated the memory that the dynamic array is a + slice of is irrevelant to the type of the dynamic array, whether a given + type is a dynamic array has nothing to do with the kind of memory that's + backing it. A dynamic array which is a slice of a static array of $(D int) + is the the same type as a dynamic array of $(D int) allocated with $(D new) + - i.e. both are $(D int[]). So, this trait will not tell you anything about + what kind of memory a dynamic array is a slice of. It just tells you + whether the type is a dynamic array or not. + + If for some reason, it matters for a function what kind of memory backs one + of its parameters which is a dynamic array, or it needs to be made clear + whether the function will possibly cause that dynamic array to be + reallocated, then that needs to be indicated by the documentation and + cannot be enforced with a template constraint. A template constraint can + enforce that a type used with a template meets certain criteria (e.g. that + it's a dynamic array), but it cannot enforce anything about how the + template actually uses the type. + + However, it $(D is) possible to enforce that a function doesn't use any + operations on a dynamic array which might cause it to be reallocated by + marking that function as $(D @nogc). + + In most cases though, code can be written to not care what kind of memory + backs a dynamic array, because none of the operations on a dynamic array + actually care what kind of memory it's a slice of. It mostly just matters + when you need to track the lifetime of the memory, because it wasn't + allocated by the GC, or when it matters whether a dynamic array could be + reallocated or not (e.g. because the code needs to have that dynamic array + continue to point to the same block of memory). + + See_Also: + $(LREF isPointer) + $(LREF isStaticArray) + $(DDSUBLINK spec/arrays, , The language spec for arrays) +/ enum isDynamicArray(T) = is(T == U[], U); @@ -131,6 +201,10 @@ enum isDynamicArray(T) = is(T == U[], U); int[2] sArr = [42, 97]; static assert(!isDynamicArray!(typeof(sArr))); + // While a static array is not a dynamic array, + // a slice of a static array is a dynamic array. + static assert( isDynamicArray!(typeof(sArr[]))); + // Dynamic array of static arrays. static assert( isDynamicArray!(long[3][])); @@ -216,6 +290,7 @@ enum isDynamicArray(T) = is(T == U[], U); See also: $(DDSUBLINK spec/traits, isStaticArray, $(D __traits(isStaticArray, T))) + $(DDSUBLINK spec/arrays, , The language spec for arrays) +/ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); @@ -260,6 +335,10 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); int[] arr; static assert(!isStaticArray!(typeof(arr))); + // A slice of a static array is of course not a static array, + // because it's a dynamic array. + static assert(!isStaticArray!(typeof(sArr[]))); + // Static array of dynamic arrays. static assert( isStaticArray!(long[][3])); @@ -532,6 +611,8 @@ template Unshared(T) See also: $(DDSUBLINK spec/traits, isIntegral, $(D __traits(isIntegral, T))) + $(LREF isFloatingPoint) + $(LREF isNumeric) +/ enum isInteger(T) = is(immutable T == immutable byte) || is(immutable T == immutable ubyte) || @@ -683,6 +764,8 @@ enum isInteger(T) = is(immutable T == immutable byte) || See also: $(DDSUBLINK spec/traits, isFloating, $(D __traits(isFloating, T))) + $(LREF isInteger) + $(LREF isNumeric) +/ enum isFloatingPoint(T) = is(immutable T == immutable float) || is(immutable T == immutable double) || @@ -800,6 +883,279 @@ enum isFloatingPoint(T) = is(immutable T == immutable float) || } } +/++ + Whether the given type is one of the built-in numeric types, ignoring all + qualifiers. It's equivalent to $(D isInteger!T || isFloatingPoint!T), but + it only involves a single template instantation instead of two. + + $(TABLE + $(TR $(TH Numeric Types)) + $(TR $(TD byte)) + $(TR $(TD ubyte)) + $(TR $(TD short)) + $(TR $(TD ushort)) + $(TR $(TD int)) + $(TR $(TD uint)) + $(TR $(TD long)) + $(TR $(TD ulong)) + $(TR $(TD float)) + $(TR $(TD double)) + $(TR $(TD real)) + ) + + Note that this does not include implicit conversions or enum types. The + type itself must be one of the built-in numeric types. + + See_Also: + $(LREF isFloatingPoint) + $(LREF isInteger) + +/ +enum isNumeric(T) = is(immutable T == immutable byte) || + is(immutable T == immutable ubyte) || + is(immutable T == immutable short) || + is(immutable T == immutable ushort) || + is(immutable T == immutable int) || + is(immutable T == immutable uint) || + is(immutable T == immutable long) || + is(immutable T == immutable ulong) || + is(immutable T == immutable float) || + is(immutable T == immutable double) || + is(immutable T == immutable real); + +/// +@safe unittest +{ + // Some types which are numeric types. + static assert( isNumeric!byte); + static assert( isNumeric!ubyte); + static assert( isNumeric!short); + static assert( isNumeric!ushort); + static assert( isNumeric!int); + static assert( isNumeric!uint); + static assert( isNumeric!long); + static assert( isNumeric!ulong); + static assert( isNumeric!float); + static assert( isNumeric!double); + static assert( isNumeric!real); + + static assert( isNumeric!(const short)); + static assert( isNumeric!(immutable int)); + static assert( isNumeric!(inout uint)); + static assert( isNumeric!(shared long)); + static assert( isNumeric!(const shared real)); + + static assert( isNumeric!(typeof(42))); + static assert( isNumeric!(typeof(1234657890L))); + static assert( isNumeric!(typeof(42.0))); + static assert( isNumeric!(typeof(42f))); + static assert( isNumeric!(typeof(1e5))); + static assert( isNumeric!(typeof(97.4L))); + + int i; + static assert( isNumeric!(typeof(i))); + + // Some types which aren't numeric types. + static assert(!isNumeric!bool); + static assert(!isNumeric!char); + static assert(!isNumeric!dchar); + static assert(!isNumeric!(int[])); + static assert(!isNumeric!(double[4])); + static assert(!isNumeric!(real*)); + static assert(!isNumeric!string); + + static struct S + { + int i; + } + static assert(!isNumeric!S); + + // The struct itself isn't considered a numeric type, + // but its member variable is when checked directly. + static assert( isNumeric!(typeof(S.i))); + + enum E : int + { + a = 42 + } + + // Enums do not count. + static assert(!isNumeric!E); + + static struct AliasThis + { + int i; + alias this = i; + } + + // Other implicit conversions do not count. + static assert(!isNumeric!AliasThis); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + // The actual core.simd types available vary from system to system, so we + // have to be a bit creative here. The reason that we're testing these types + // is because __traits(isInteger, T) and __traits(isFloating, T) accept + // them, but isNumeric is not supposed to. + template SIMDTypes() + { + import core.simd; + + alias SIMDTypes = AliasSeq!(); + static if (is(int4)) + SIMDTypes = AliasSeq!(SIMDTypes, int4); + static if (is(double2)) + SIMDTypes = AliasSeq!(SIMDTypes, double2); + static if (is(void16)) + SIMDTypes = AliasSeq!(SIMDTypes, void16); + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(byte, ubyte, short, ushort, int, uint, long, ulong, float, double, real)) + { + enum E : Q!T { a = Q!T.init } + + static assert( isNumeric!(Q!T)); + static assert(!isNumeric!E); + static assert(!isNumeric!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(bool, char, wchar, dchar, SIMDTypes!(), + int[], float[8], real[], void[], double*)) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isNumeric!(Q!T)); + static assert(!isNumeric!E); + static assert(!isNumeric!(AliasThis!(Q!T))); + } + } +} + +/++ + Whether the given type is a pointer. + + Note that this does not include implicit conversions or enum types. The + type itself must be a pointer. + + Also, remember that unlike C/C++, D's arrays are not pointers. Rather, a + dynamic array in D is a slice of memory which has a member which is a + pointer to its first element and another member which is the length of the + array as $(D size_t). So, a dynamic array / slice has a $(D ptr) member + which is a pointer, but the dynamic array itself is not a pointer. + + See_Also: + $(LREF isDynamicArray) + +/ +enum isPointer(T) = is(T == U*, U); + +/// +@system unittest +{ + // Some types which are pointers. + static assert( isPointer!(bool*)); + static assert( isPointer!(int*)); + static assert( isPointer!(int**)); + static assert( isPointer!(real*)); + static assert( isPointer!(string*)); + + static assert( isPointer!(const int*)); + static assert( isPointer!(immutable int*)); + static assert( isPointer!(inout int*)); + static assert( isPointer!(shared int*)); + static assert( isPointer!(const shared int*)); + + static assert( isPointer!(typeof("foobar".ptr))); + + int* ptr; + static assert( isPointer!(typeof(ptr))); + + int i; + static assert( isPointer!(typeof(&i))); + + // Some types which aren't pointers. + static assert(!isPointer!bool); + static assert(!isPointer!int); + static assert(!isPointer!dchar); + static assert(!isPointer!(int[])); + static assert(!isPointer!(double[4])); + static assert(!isPointer!string); + + static struct S + { + int* ptr; + } + static assert(!isPointer!S); + + // The struct itself isn't considered a numeric type, + // but its member variable is when checked directly. + static assert( isPointer!(typeof(S.ptr))); + + enum E : immutable(char*) + { + a = "foobar".ptr + } + + // Enums do not count. + static assert(!isPointer!E); + + static struct AliasThis + { + int* ptr; + alias this = ptr; + } + + // Other implicit conversions do not count. + static assert(!isPointer!AliasThis); +} + +@safe unittest +{ + import lib.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + static struct S + { + int i; + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(long*, S*, S**, S***, double[]*)) + { + enum E : Q!T { a = Q!T.init } + + static assert( isPointer!(Q!T)); + static assert(!isPointer!E); + static assert(!isPointer!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(bool, char, wchar, dchar, byte, int, uint, long, + int[], float[8], real[], void[])) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isPointer!(Q!T)); + static assert(!isPointer!E); + static assert(!isPointer!(AliasThis!(Q!T))); + } + } +} + /++ Removes the outer layer of all type qualifiers from type $(D T). From e568c67f380af6bc6f51a6bf8ed251cfe2bdbfe7 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 12 Mar 2024 20:25:52 -0600 Subject: [PATCH 213/327] Rearrange some code in lib.sys.traits. Actually organizing all of the symbols within a file is pretty much a losing game in general, but I was trying to put the is* traits together and accidentally put some in the section containing Unconst, Unshared, and Unshared. So, this just moves Unconst and Unshared so that they're next to Unqual again. There is zero code that's actually changed. It's just moved within the file. --- lib/sys/traits.d | 346 +++++++++++++++++++++++------------------------ 1 file changed, 173 insertions(+), 173 deletions(-) diff --git a/lib/sys/traits.d b/lib/sys/traits.d index 9fccfe3e906..3768ea040af 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -408,179 +408,6 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); } } -/++ - Removes the outer layer of $(D const), $(D inout), or $(D immutable) - from type $(D T). - - If none of those qualifiers have been applied to the outer layer of - type $(D T), then the result is $(D T). - - Due to limitations with D's type system, user-defined types have the type - qualifier removed entirely if present. The types of the member variables - themselves are unaffected beyond how removing the type qualifier from the - type containing them affects them (e.g. an $(D int*) member that is - $(D const(int*)) because the type containing it is $(D const) becomes - $(D int*) when Unconst is used on the containing type, because $(D const) - is removed from the containing type. The member does not become - $(D const(int)*) as would occur if Unconst were used directly on a - $(D const(int*))). - - Also, Unconst has no effect on what a templated type is instantiated with, - so if a templated type is instantiated with a template argument which is a - const type, the template instantiation will not change. - +/ -version (StdDdoc) template Unconst(T) -{ - import core.internal.traits : CoreUnconst = Unconst; - alias Unconst = CoreUnconst!T; -} -else -{ - import core.internal.traits : CoreUnconst = Unconst; - alias Unconst = CoreUnconst; -} - -/// -@safe unittest -{ - static assert(is(Unconst!( int) == int)); - static assert(is(Unconst!( const int) == int)); - static assert(is(Unconst!( inout int) == int)); - static assert(is(Unconst!( inout const int) == int)); - static assert(is(Unconst!(shared int) == shared int)); - static assert(is(Unconst!(shared const int) == shared int)); - static assert(is(Unconst!(shared inout int) == shared int)); - static assert(is(Unconst!(shared inout const int) == shared int)); - static assert(is(Unconst!( immutable int) == int)); - - // Only the outer layer of immutable is removed. - // immutable(int[]) -> immutable(int)[] - alias ImmIntArr = immutable(int[]); - static assert(is(Unconst!ImmIntArr == immutable(int)[])); - - // Only the outer layer of const is removed. - // immutable(int*) -> immutable(int)* - alias ConstIntPtr = const(int*); - static assert(is(Unconst!ConstIntPtr == const(int)*)); - - // const(int)* -> const(int)* - alias PtrToConstInt = const(int)*; - static assert(is(Unconst!PtrToConstInt == const(int)*)); - - static struct S - { - int* ptr; - } - - const S s; - static assert(is(typeof(s) == const S)); - static assert(is(typeof(typeof(s).ptr) == const int*)); - - // For user-defined types, the const qualifier is removed entirely. - // const S -> S - static assert(is(Unconst!(typeof(s)) == S)); - static assert(is(typeof(Unconst!(typeof(s)).ptr) == int*)); - - static struct Foo(T) - { - T* ptr; - } - - // The qualifer on the type is removed, but the qualifier on the template - // argument is not. - static assert(is(Unconst!(const(Foo!(const int))) == Foo!(const int))); - static assert(is(Unconst!(Foo!(const int)) == Foo!(const int))); - static assert(is(Unconst!(const(Foo!int)) == Foo!int)); -} - -/++ - Removes the outer layer of $(D shared) from type $(D T). - - If $(D shared) has not been applied to the outer layer of type $(D T), then - the result is $(D T). - - Note that while $(D immutable) is implicitly $(D shared), it is unaffected - by Unshared. Only explict $(D shared) is removed. - - Due to limitations with D's type system, user-defined types have the type - qualifier removed entirely if present. The types of the member variables - themselves are unaffected beyond how removing the type qualifier from the - type containing them affects them (e.g. an $(D int*) member that is - $(D shared(int*)) because the type containing it is $(D shared) becomes - $(D int*) when Unshared is used on the containing type, because $(D shared) - is removed from the containing type. The member does not become - $(D shared(int)*) as would occur if Unshared were used directly on a - $(D shared(int*))). - - Also, Unshared has no effect on what a templated type is instantiated with, - so if a templated type is instantiated with a template argument which is a - shared type, the template instantiation will not change. - +/ -template Unshared(T) -{ - static if (is(T == shared U, U)) - alias Unshared = U; - else - alias Unshared = T; -} - -/// -@safe unittest -{ - static assert(is(Unshared!( int) == int)); - static assert(is(Unshared!( const int) == const int)); - static assert(is(Unshared!( inout int) == inout int)); - static assert(is(Unshared!( inout const int) == inout const int)); - static assert(is(Unshared!(shared int) == int)); - static assert(is(Unshared!(shared const int) == const int)); - static assert(is(Unshared!(shared inout int) == inout int)); - static assert(is(Unshared!(shared inout const int) == inout const int)); - static assert(is(Unshared!( immutable int) == immutable int)); - - // Only the outer layer of shared is removed. - // shared(int[]) -> shared(int)[] - alias SharedIntArr = shared(int[]); - static assert(is(Unshared!SharedIntArr == shared(int)[])); - - // Only the outer layer of shared is removed. - // shared(int*) -> shared(int)* - alias SharedIntPtr = shared(int*); - static assert(is(Unshared!SharedIntPtr == shared(int)*)); - - // shared(int)* -> shared(int)* - alias PtrToSharedInt = shared(int)*; - static assert(is(Unshared!PtrToSharedInt == shared(int)*)); - - // immutable is unaffected - alias ImmutableArr = immutable(int[]); - static assert(is(Unshared!ImmutableArr == immutable(int[]))); - - static struct S - { - int* ptr; - } - - shared S s; - static assert(is(typeof(s) == shared S)); - static assert(is(typeof(typeof(s).ptr) == shared int*)); - - // For user-defined types, the shared qualifier is removed entirely. - // shared S -> S - static assert(is(Unshared!(typeof(s)) == S)); - static assert(is(typeof(Unshared!(typeof(s)).ptr) == int*)); - - static struct Foo(T) - { - T* ptr; - } - - // The qualifer on the type is affected, but the qualifier on the template - // argument is not. - static assert(is(Unshared!(shared(Foo!(shared int))) == Foo!(shared int))); - static assert(is(Unshared!(Foo!(shared int)) == Foo!(shared int))); - static assert(is(Unshared!(shared(Foo!int)) == Foo!int)); -} - /++ Whether the given type is one of the built-in integer types, ignoring all qualifiers. @@ -1156,6 +983,179 @@ enum isPointer(T) = is(T == U*, U); } } +/++ + Removes the outer layer of $(D const), $(D inout), or $(D immutable) + from type $(D T). + + If none of those qualifiers have been applied to the outer layer of + type $(D T), then the result is $(D T). + + Due to limitations with D's type system, user-defined types have the type + qualifier removed entirely if present. The types of the member variables + themselves are unaffected beyond how removing the type qualifier from the + type containing them affects them (e.g. an $(D int*) member that is + $(D const(int*)) because the type containing it is $(D const) becomes + $(D int*) when Unconst is used on the containing type, because $(D const) + is removed from the containing type. The member does not become + $(D const(int)*) as would occur if Unconst were used directly on a + $(D const(int*))). + + Also, Unconst has no effect on what a templated type is instantiated with, + so if a templated type is instantiated with a template argument which is a + const type, the template instantiation will not change. + +/ +version (StdDdoc) template Unconst(T) +{ + import core.internal.traits : CoreUnconst = Unconst; + alias Unconst = CoreUnconst!T; +} +else +{ + import core.internal.traits : CoreUnconst = Unconst; + alias Unconst = CoreUnconst; +} + +/// +@safe unittest +{ + static assert(is(Unconst!( int) == int)); + static assert(is(Unconst!( const int) == int)); + static assert(is(Unconst!( inout int) == int)); + static assert(is(Unconst!( inout const int) == int)); + static assert(is(Unconst!(shared int) == shared int)); + static assert(is(Unconst!(shared const int) == shared int)); + static assert(is(Unconst!(shared inout int) == shared int)); + static assert(is(Unconst!(shared inout const int) == shared int)); + static assert(is(Unconst!( immutable int) == int)); + + // Only the outer layer of immutable is removed. + // immutable(int[]) -> immutable(int)[] + alias ImmIntArr = immutable(int[]); + static assert(is(Unconst!ImmIntArr == immutable(int)[])); + + // Only the outer layer of const is removed. + // immutable(int*) -> immutable(int)* + alias ConstIntPtr = const(int*); + static assert(is(Unconst!ConstIntPtr == const(int)*)); + + // const(int)* -> const(int)* + alias PtrToConstInt = const(int)*; + static assert(is(Unconst!PtrToConstInt == const(int)*)); + + static struct S + { + int* ptr; + } + + const S s; + static assert(is(typeof(s) == const S)); + static assert(is(typeof(typeof(s).ptr) == const int*)); + + // For user-defined types, the const qualifier is removed entirely. + // const S -> S + static assert(is(Unconst!(typeof(s)) == S)); + static assert(is(typeof(Unconst!(typeof(s)).ptr) == int*)); + + static struct Foo(T) + { + T* ptr; + } + + // The qualifer on the type is removed, but the qualifier on the template + // argument is not. + static assert(is(Unconst!(const(Foo!(const int))) == Foo!(const int))); + static assert(is(Unconst!(Foo!(const int)) == Foo!(const int))); + static assert(is(Unconst!(const(Foo!int)) == Foo!int)); +} + +/++ + Removes the outer layer of $(D shared) from type $(D T). + + If $(D shared) has not been applied to the outer layer of type $(D T), then + the result is $(D T). + + Note that while $(D immutable) is implicitly $(D shared), it is unaffected + by Unshared. Only explict $(D shared) is removed. + + Due to limitations with D's type system, user-defined types have the type + qualifier removed entirely if present. The types of the member variables + themselves are unaffected beyond how removing the type qualifier from the + type containing them affects them (e.g. an $(D int*) member that is + $(D shared(int*)) because the type containing it is $(D shared) becomes + $(D int*) when Unshared is used on the containing type, because $(D shared) + is removed from the containing type. The member does not become + $(D shared(int)*) as would occur if Unshared were used directly on a + $(D shared(int*))). + + Also, Unshared has no effect on what a templated type is instantiated with, + so if a templated type is instantiated with a template argument which is a + shared type, the template instantiation will not change. + +/ +template Unshared(T) +{ + static if (is(T == shared U, U)) + alias Unshared = U; + else + alias Unshared = T; +} + +/// +@safe unittest +{ + static assert(is(Unshared!( int) == int)); + static assert(is(Unshared!( const int) == const int)); + static assert(is(Unshared!( inout int) == inout int)); + static assert(is(Unshared!( inout const int) == inout const int)); + static assert(is(Unshared!(shared int) == int)); + static assert(is(Unshared!(shared const int) == const int)); + static assert(is(Unshared!(shared inout int) == inout int)); + static assert(is(Unshared!(shared inout const int) == inout const int)); + static assert(is(Unshared!( immutable int) == immutable int)); + + // Only the outer layer of shared is removed. + // shared(int[]) -> shared(int)[] + alias SharedIntArr = shared(int[]); + static assert(is(Unshared!SharedIntArr == shared(int)[])); + + // Only the outer layer of shared is removed. + // shared(int*) -> shared(int)* + alias SharedIntPtr = shared(int*); + static assert(is(Unshared!SharedIntPtr == shared(int)*)); + + // shared(int)* -> shared(int)* + alias PtrToSharedInt = shared(int)*; + static assert(is(Unshared!PtrToSharedInt == shared(int)*)); + + // immutable is unaffected + alias ImmutableArr = immutable(int[]); + static assert(is(Unshared!ImmutableArr == immutable(int[]))); + + static struct S + { + int* ptr; + } + + shared S s; + static assert(is(typeof(s) == shared S)); + static assert(is(typeof(typeof(s).ptr) == shared int*)); + + // For user-defined types, the shared qualifier is removed entirely. + // shared S -> S + static assert(is(Unshared!(typeof(s)) == S)); + static assert(is(typeof(Unshared!(typeof(s)).ptr) == int*)); + + static struct Foo(T) + { + T* ptr; + } + + // The qualifer on the type is affected, but the qualifier on the template + // argument is not. + static assert(is(Unshared!(shared(Foo!(shared int))) == Foo!(shared int))); + static assert(is(Unshared!(Foo!(shared int)) == Foo!(shared int))); + static assert(is(Unshared!(shared(Foo!int)) == Foo!int)); +} + /++ Removes the outer layer of all type qualifiers from type $(D T). From e695747422ffb2b232e6dc30b4d537b7ce6811b5 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 13 Mar 2024 11:19:06 +0000 Subject: [PATCH 214/327] Update cheat sheet description --- std/algorithm/searching.d | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 99f318ca7e0..02dd6450295 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -22,8 +22,9 @@ $(T2 boyerMooreFinder, $(T2 canFind, `canFind("hello world", "or")` returns `true`.) $(T2 count, - Counts elements that are equal to a specified value or satisfy a - predicate. `count([1, 2, 1], 1)` returns `2` and + Counts all elements or elements matching a predicate, specific element or sub-range.$(BR) + `count([1, 2, 1])` returns `3`, + `count([1, 2, 1], 1)` returns `2` and `count!"a < 0"([1, -3, 0])` returns `1`.) $(T2 countUntil, `countUntil(a, b)` returns the number of steps taken in `a` to From 4ea7dd3e07443dd04c55491135b11ff7b46613aa Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 13 Mar 2024 11:22:58 +0000 Subject: [PATCH 215/327] Add short descriptions for each overload set; minor tweaks Short descriptions improve ddox output. Use overload instead of version. --- std/algorithm/searching.d | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 02dd6450295..195e943085d 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -606,15 +606,17 @@ if (isNarrowString!R1 && isNarrowString!R2) // count /** -The first version counts each element `e` in `haystack` for +Counts matches of `needle` in `haystack`. + +The first overload counts each element `e` in `haystack` for which `pred(e, needle)` is `true`. `pred` defaults to equality. Performs $(BIGOH haystack.length) evaluations of `pred`. -The second version counts the number of times `needle` was matched in +The second overload counts the number of times `needle` was matched in `haystack`. `pred` compares elements in each range. -Throws an exception if `needle.empty`, as the _count +Throws an exception if `needle.empty` is `true`, as the _count of the empty range in any range would be infinite. Overlapped counts -are not considered, for example `count("aaa", "aa")` is `1`, not +are *not* considered, for example `count("aaa", "aa")` is `1`, not `2`. Note: Regardless of the overload, `count` will not accept @@ -707,10 +709,12 @@ if (isForwardRange!R1 && !isInfinite!R1 && } /** -The first version counts each element `e` in `haystack` for which `pred(e)` is $(D +Counts all elements or elements satisfying a predicate in `haystack`. + +The first overload counts each element `e` in `haystack` for which `pred(e)` is $(D true). Performs $(BIGOH haystack.length) evaluations of `pred`. -The second version counts the number of elements in a range. +The second overload counts the number of elements in a range. If the given range has the `length` property, that is returned right away, otherwise performs $(BIGOH haystack.length) to walk the range. From 0b45fc77c6f172feadb913267daf4279ff3024a0 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 13 Mar 2024 11:23:16 +0000 Subject: [PATCH 216/327] Fix pred description when there's no needle --- std/algorithm/searching.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 195e943085d..2d89dea3f1c 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -720,7 +720,7 @@ that is returned right away, otherwise performs $(BIGOH haystack.length) to walk the range. Params: - pred = Optional predicate to compare elements. + pred = Optional predicate to find elements. haystack = The range to _count. Returns: From 03c368158ee0e84b0f4a8d4ac6a16289f4121fd4 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sat, 16 Mar 2024 17:07:50 +0000 Subject: [PATCH 217/327] [std.socket] Fix cast assign to getaddrinfoPointer See https://github.com/dlang/dmd/pull/16315 With that pull, using a type qualifier cast is not @safe to use as an lvalue. --- std/socket.d | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/std/socket.d b/std/socket.d index 4052479f9ca..b2570f596ca 100644 --- a/std/socket.d +++ b/std/socket.d @@ -1116,7 +1116,7 @@ Address[] getAddress(scope const(char)[] hostname, ushort port) // test via gethostbyname auto getaddrinfoPointerBackup = getaddrinfoPointer; cast() getaddrinfoPointer = null; - scope(exit) cast() getaddrinfoPointer = getaddrinfoPointerBackup; + scope(exit) () @trusted { cast() getaddrinfoPointer = getaddrinfoPointerBackup; }(); addresses = getAddress("63.105.9.61"); assert(addresses.length && addresses[0].toAddrString() == "63.105.9.61"); @@ -1196,7 +1196,7 @@ Address parseAddress(scope const(char)[] hostaddr, ushort port) // test via inet_addr auto getaddrinfoPointerBackup = getaddrinfoPointer; cast() getaddrinfoPointer = null; - scope(exit) cast() getaddrinfoPointer = getaddrinfoPointerBackup; + scope(exit) () @trusted { cast() getaddrinfoPointer = getaddrinfoPointerBackup; }(); address = parseAddress("63.105.9.61"); assert(address.toAddrString() == "63.105.9.61"); @@ -1698,7 +1698,7 @@ public: // test reverse lookup, via gethostbyaddr auto getnameinfoPointerBackup = getnameinfoPointer; cast() getnameinfoPointer = null; - scope(exit) cast() getnameinfoPointer = getnameinfoPointerBackup; + scope(exit) () @trusted { cast() getnameinfoPointer = getnameinfoPointerBackup; }(); assert(ia.toHostNameString() == "digitalmars.com"); } @@ -1716,7 +1716,7 @@ public: // test failing reverse lookup, via gethostbyaddr auto getnameinfoPointerBackup = getnameinfoPointer; cast() getnameinfoPointer = null; - scope(exit) cast() getnameinfoPointer = getnameinfoPointerBackup; + scope(exit) () @trusted { cast() getnameinfoPointer = getnameinfoPointerBackup; }(); assert(ia.toHostNameString() is null); } From 1591ce9fe7d284598d01ab84b7d232848684eb8d Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Mon, 18 Mar 2024 09:24:00 -0700 Subject: [PATCH 218/327] swap-and-destroy called too eagerly --- std/typecons.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/typecons.d b/std/typecons.d index 5fac1c9cca4..5c7a3d5ba19 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -971,7 +971,7 @@ if (distinctFieldNames!(Specs)) { import std.algorithm.mutation : swap; - static if (is(R : Tuple!Types) && !__traits(isRef, rhs) && isTuple!R) + static if (is(R == Tuple!Types) && !__traits(isRef, rhs) && isTuple!R) { if (__ctfe) { From 3d909ad863bb9cf8e091ce3b5e2caf4d59944ed0 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 15 Mar 2024 14:04:56 -0600 Subject: [PATCH 219/327] Rename lib.sys.traits' Unqual to Unqualified. The reason for this is because Unqual currently gets used heavily when in many (most?) cases, Unconst should be used instead, because the code in question is not supposed to be operating on shared, and thus stripping off shared will either allow shared types in when they shouldn't be (e.g. with a template constraint), or in the case of a cast, it will actually strip off shared and the protections that it provides, risking concurrency bugs. But a lot of D programmers are in the habit of using Unqual rather than Unconst (probably in part because Unqual has been around longer) when they simply want to remove const, and by renaming it, we will hopefully discourage its use - or at least make programmers think about it briefly rather than unthinkingly grabbing Unqual. Obviously, there are cases where Unqualified should still be used, but hopefully, with the new name, it will be used less when it shouldn't be. I've also adjusted the documentation on Unconst, Unqualified, and Unshared to try to better clarify the situation with user-defined types and member variables (since as Paul Backus has pointed out, it's often incorrectly assumed that Unqual is guaranteed to strip const off of all of the member variables when that's not actually true). --- lib/sys/meta.d | 8 +- lib/sys/traits.d | 240 ++++++++++++++++++++++++++++++----------------- 2 files changed, 158 insertions(+), 90 deletions(-) diff --git a/lib/sys/meta.d b/lib/sys/meta.d index 29543c29178..c05c77efcd0 100644 --- a/lib/sys/meta.d +++ b/lib/sys/meta.d @@ -215,18 +215,18 @@ template Map(alias fun, args...) /// @safe unittest { - import lib.sys.traits : Unqual; + import lib.sys.traits : Unqualified; // empty - alias Empty = Map!Unqual; + alias Empty = Map!Unqualified; static assert(Empty.length == 0); // single - alias Single = Map!(Unqual, const int); + alias Single = Map!(Unqualified, const int); static assert(is(Single == AliasSeq!int)); // several - alias Several = Map!(Unqual, int, const int, immutable int, uint, + alias Several = Map!(Unqualified, int, const int, immutable int, uint, ubyte, byte, short, ushort, const long); static assert(is(Several == AliasSeq!(int, int, int, uint, ubyte, byte, short, ushort, long))); diff --git a/lib/sys/traits.d b/lib/sys/traits.d index 3768ea040af..1e8286fe4fc 100644 --- a/lib/sys/traits.d +++ b/lib/sys/traits.d @@ -62,7 +62,7 @@ $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF Unconst) $(LREF Unshared) - $(LREF Unqual) + $(LREF Unqualified) )) $(TR $(TD Type Constructors) $(TD $(LREF ConstOf) @@ -990,19 +990,31 @@ enum isPointer(T) = is(T == U*, U); If none of those qualifiers have been applied to the outer layer of type $(D T), then the result is $(D T). - Due to limitations with D's type system, user-defined types have the type - qualifier removed entirely if present. The types of the member variables - themselves are unaffected beyond how removing the type qualifier from the - type containing them affects them (e.g. an $(D int*) member that is - $(D const(int*)) because the type containing it is $(D const) becomes - $(D int*) when Unconst is used on the containing type, because $(D const) - is removed from the containing type. The member does not become - $(D const(int)*) as would occur if Unconst were used directly on a - $(D const(int*))). - - Also, Unconst has no effect on what a templated type is instantiated with, - so if a templated type is instantiated with a template argument which is a - const type, the template instantiation will not change. + For the built-in, scalar types (that is $(D bool), the character types, and + the numeric types), they only have one layer, so $(D const U) simply becomes + $(D U). + + Where the layers come in is pointers and arrays. $(D const(U*)) becomes + $(D const(U)*), and $(D const(U[])), becomes $(D const(U)[]). So, a pointer + goes from being fully $(D const) to being a mutable pointer to $(D const), + and a dynamic array goes from being fully $(D const) to being a mutable + dynamic array of $(D const) elements. And if there are multiple layers of + pointers or arrays, it's just that outer layer which is affected - e.g. + $(D const(U**)) would become $(D const(U*)*). + + For user-defined types, the effect is that $(D const U) becomes $(D U), and + how that affects member variables depends on the type of the member + variable. If a member variable is explicitly marked with any mutability + qualifiers, then it will continue to have those qualifiers even after + Unconst has stripped all mutability qualifiers from the containing type. + However, if a mutability qualifier was on the member variable only because + the containing type had that qualifier, then when Unconst removes the + qualifier from the containing type, it is removed from the member variable + as well. + + Also, Unconst has no effect on what a templated type is instantiated + with, so if a templated type is instantiated with a template argument which + has a mutability qualifier, the template instantiation will not change. +/ version (StdDdoc) template Unconst(T) { @@ -1045,16 +1057,25 @@ else static struct S { int* ptr; + const int* cPtr; + shared int* sPtr; } const S s; static assert(is(typeof(s) == const S)); static assert(is(typeof(typeof(s).ptr) == const int*)); + static assert(is(typeof(typeof(s).cPtr) == const int*)); + static assert(is(typeof(typeof(s).sPtr) == const shared int*)); + + // For user-defined types, all mutability qualifiers that are applied to + // member variables only because the containing type has them are removed, + // but the ones that are directly on those member variables remain. - // For user-defined types, the const qualifier is removed entirely. // const S -> S static assert(is(Unconst!(typeof(s)) == S)); static assert(is(typeof(Unconst!(typeof(s)).ptr) == int*)); + static assert(is(typeof(Unconst!(typeof(s)).cPtr) == const int*)); + static assert(is(typeof(Unconst!(typeof(s)).sPtr) == shared int*)); static struct Foo(T) { @@ -1075,21 +1096,32 @@ else the result is $(D T). Note that while $(D immutable) is implicitly $(D shared), it is unaffected - by Unshared. Only explict $(D shared) is removed. - - Due to limitations with D's type system, user-defined types have the type - qualifier removed entirely if present. The types of the member variables - themselves are unaffected beyond how removing the type qualifier from the - type containing them affects them (e.g. an $(D int*) member that is - $(D shared(int*)) because the type containing it is $(D shared) becomes - $(D int*) when Unshared is used on the containing type, because $(D shared) - is removed from the containing type. The member does not become - $(D shared(int)*) as would occur if Unshared were used directly on a - $(D shared(int*))). - - Also, Unshared has no effect on what a templated type is instantiated with, - so if a templated type is instantiated with a template argument which is a - shared type, the template instantiation will not change. + by Unshared. Only explicit $(D shared) is removed. + + For the built-in, scalar types (that is $(D bool), the character types, and + the numeric types), they only have one layer, so $(D shared U) simply + becomes $(D U). + + Where the layers come in is pointers and arrays. $(D shared(U*)) becomes + $(D shared(U)*), and $(D shared(U[])), becomes $(D shared(U)[]). So, a + pointer goes from being fully $(D shared) to being a mutable pointer to + $(D shared), and a dynamic array goes from being fully $(D shared) to being + a mutable dynamic array of $(D shared) elements. And if there are multiple + layers of pointers or arrays, it's just that outer layer which is affected + - e.g. $(D shared(U**)) would become $(D shared(U*)*). + + For user-defined types, the effect is that $(D shared U) becomes $(D U), + and how that affects member variables depends on the type of the member + variable. If a member variable is explicitly marked with $(D shared), then + it will continue to be $(D shared) even after Unshared has stripped + $(D shared) from the containing type. However, if $(D shared) was on the + member variable only because the containing type was $(D shared), then when + Unshared removes the qualifier from the containing type, it is removed from + the member variable as well. + + Also, Unshared has no effect on what a templated type is instantiated + with, so if a templated type is instantiated with a template argument which + has a type qualifier, the template instantiation will not change. +/ template Unshared(T) { @@ -1133,23 +1165,33 @@ template Unshared(T) static struct S { int* ptr; + const int* cPtr; + shared int* sPtr; } shared S s; static assert(is(typeof(s) == shared S)); static assert(is(typeof(typeof(s).ptr) == shared int*)); + static assert(is(typeof(typeof(s).cPtr) == const shared int*)); + static assert(is(typeof(typeof(s).sPtr) == shared int*)); + + // For user-defined types, if shared is applied to a member variable only + // because the containing type is shared, then shared is removed from that + // member variable, but if the member variable is directly marked as shared, + // then it continues to be shared. - // For user-defined types, the shared qualifier is removed entirely. // shared S -> S static assert(is(Unshared!(typeof(s)) == S)); static assert(is(typeof(Unshared!(typeof(s)).ptr) == int*)); + static assert(is(typeof(Unshared!(typeof(s)).cPtr) == const int*)); + static assert(is(typeof(Unshared!(typeof(s)).sPtr) == shared int*)); static struct Foo(T) { T* ptr; } - // The qualifer on the type is affected, but the qualifier on the template + // The qualifer on the type is removed, but the qualifier on the template // argument is not. static assert(is(Unshared!(shared(Foo!(shared int))) == Foo!(shared int))); static assert(is(Unshared!(Foo!(shared int)) == Foo!(shared int))); @@ -1157,117 +1199,143 @@ template Unshared(T) } /++ - Removes the outer layer of all type qualifiers from type $(D T). + Removes the outer layer of all type qualifiers from type $(D T) - this + includes $(D shared). If no type qualifiers have been applied to the outer layer of type $(D T), then the result is $(D T). - Due to limitations with D's type system, user-defined types have the type - qualifier removed entirely if present. The types of the member variables - themselves are unaffected beyond how removing the type qualifier from the - type containing them affects them (e.g. a $(D int*) member that is - $(D const(int*)) because the type containing it is $(D const) becomes - $(D int*) when Unqual is used on the containing type, because $(D const) - is removed from the containing type. The member does not become - $(D const(int)*) as would occur if Unqual were used directly on a - $(D const(int*))). - - Also, Unqual has no effect on what a templated type is instantiated with, - so if a templated type is instantiated with a template argument which has a - type qualifier, the template instantiation will not change. + For the built-in, scalar types (that is $(D bool), the character types, and + the numeric types), they only have one layer, so $(D const U) simply becomes + $(D U). + + Where the layers come in is pointers and arrays. $(D const(U*)) becomes + $(D const(U)*), and $(D const(U[])), becomes $(D const(U)[]). So, a pointer + goes from being fully $(D const) to being a mutable pointer to $(D const), + and a dynamic array goes from being fully $(D const) to being a mutable + dynamic array of $(D const) elements. And if there are multiple layers of + pointers or arrays, it's just that outer layer which is affected - e.g. + $(D shared(U**)) would become $(D shared(U*)*). + + For user-defined types, the effect is that $(D const U) becomes $(D U), and + how that affects member variables depends on the type of the member + variable. If a member variable is explicitly marked with any qualifiers, + then it will continue to have those qualifiers even after Unqualified has + stripped all qualifiers from the containing type. However, if a qualifier + was on the member variable only because the containing type had that + qualifier, then when Unqualified removes the qualifier from the containing + type, it is removed from the member variable as well. + + Also, Unqualified has no effect on what a templated type is instantiated + with, so if a templated type is instantiated with a template argument which + has a type qualifier, the template instantiation will not change. Note that in most cases, $(LREF Unconst) or $(LREF Unshared) should be used - rather than Unqual, because in most cases, code is not designed to work with - $(D shared) and thus doing type checks which remove $(D shared) will allow - $(D shared) types to pass template constraints when they won't actually - work with the code. And when code is designed to work with $(D shared), - it's often the case that the type checks need to take $(D const) into - account to work properly. - - In particular, historically, a lot of D code has used Unqual when the - programmer's intent was to remove $(D const), and $(D shared) wasn't - actually considered at all. And in such cases, the code really should use - $(LREF Unconst) instead. + rather than Unqualified, because in most cases, code is not designed to + work with $(D shared) and thus doing type checks which remove $(D shared) + will allow $(D shared) types to pass template constraints when they won't + actually work with the code. And when code is designed to work with + $(D shared), it's often the case that the type checks need to take + $(D const) into account in order to avoid accidentally mutating $(D const) + data and violating the type system. + + In particular, historically, a lot of D code has used + $(REF Unqual, std, traits) (which is equivalent to lib.sys.traits' + Unqualified) when the programmer's intent was to remove $(D const), and + $(D shared) wasn't actually considered at all. And in such cases, the code + really should use $(LREF Unconst) instead. But of course, if a template constraint or $(D static if) really needs to strip off both the mutability qualifers and $(D shared) for what it's - testing for, then that's what Unqual is for. + testing for, then that's what Unqualified is for. It's just that it's best + practice to use $(LREF Unconst) when it's not clear that $(D shared) should + be removed as well. +/ -version (StdDdoc) template Unqual(T) +version (StdDdoc) template Unqualified(T) { - import core.internal.traits : CoreUnqual = Unqual; - alias Unqual = CoreUnqual!(T); + import core.internal.traits : CoreUnqualified = Unqual; + alias Unqualified = CoreUnqualified!(T); } else { - import core.internal.traits : CoreUnqual = Unqual; - alias Unqual = CoreUnqual; + import core.internal.traits : CoreUnqualified = Unqual; + alias Unqualified = CoreUnqualified; } +/// @safe unittest { - static assert(is(Unqual!( int) == int)); - static assert(is(Unqual!( const int) == int)); - static assert(is(Unqual!( inout int) == int)); - static assert(is(Unqual!( inout const int) == int)); - static assert(is(Unqual!(shared int) == int)); - static assert(is(Unqual!(shared const int) == int)); - static assert(is(Unqual!(shared inout int) == int)); - static assert(is(Unqual!(shared inout const int) == int)); - static assert(is(Unqual!( immutable int) == int)); + static assert(is(Unqualified!( int) == int)); + static assert(is(Unqualified!( const int) == int)); + static assert(is(Unqualified!( inout int) == int)); + static assert(is(Unqualified!( inout const int) == int)); + static assert(is(Unqualified!(shared int) == int)); + static assert(is(Unqualified!(shared const int) == int)); + static assert(is(Unqualified!(shared inout int) == int)); + static assert(is(Unqualified!(shared inout const int) == int)); + static assert(is(Unqualified!( immutable int) == int)); // Only the outer layer of immutable is removed. // immutable(int[]) -> immutable(int)[] alias ImmIntArr = immutable(int[]); - static assert(is(Unqual!ImmIntArr == immutable(int)[])); + static assert(is(Unqualified!ImmIntArr == immutable(int)[])); // Only the outer layer of const is removed. // const(int*) -> const(int)* alias ConstIntPtr = const(int*); - static assert(is(Unqual!ConstIntPtr == const(int)*)); + static assert(is(Unqualified!ConstIntPtr == const(int)*)); // const(int)* -> const(int)* alias PtrToConstInt = const(int)*; - static assert(is(Unqual!PtrToConstInt == const(int)*)); + static assert(is(Unqualified!PtrToConstInt == const(int)*)); // Only the outer layer of shared is removed. // shared(int*) -> shared(int)* alias SharedIntPtr = shared(int*); - static assert(is(Unqual!SharedIntPtr == shared(int)*)); + static assert(is(Unqualified!SharedIntPtr == shared(int)*)); // shared(int)* -> shared(int)* alias PtrToSharedInt = shared(int)*; - static assert(is(Unqual!PtrToSharedInt == shared(int)*)); + static assert(is(Unqualified!PtrToSharedInt == shared(int)*)); // Both const and shared are removed from the outer layer. // shared const int[] -> shared(const(int))[] alias SharedConstIntArr = shared const(int[]); - static assert(is(Unqual!SharedConstIntArr == shared(const(int))[])); + static assert(is(Unqualified!SharedConstIntArr == shared(const(int))[])); static struct S { int* ptr; + const int* cPtr; + shared int* sPtr; } shared const S s; static assert(is(typeof(s) == shared const S)); static assert(is(typeof(typeof(s).ptr) == shared const int*)); + static assert(is(typeof(typeof(s).cPtr) == shared const int*)); + static assert(is(typeof(typeof(s).sPtr) == shared const int*)); + + // For user-defined types, all qualifiers that are applied to member + // variables only because the containing type has them are removed, but the + // ones that are directly on those member variables remain. - // For user-defined types, the qualifiers are removed entirely. // shared const S -> S - static assert(is(Unqual!(typeof(s)) == S)); - static assert(is(typeof(Unqual!(typeof(s)).ptr) == int*)); + static assert(is(Unqualified!(typeof(s)) == S)); + static assert(is(typeof(Unqualified!(typeof(s)).ptr) == int*)); + static assert(is(typeof(Unqualified!(typeof(s)).cPtr) == const int*)); + static assert(is(typeof(Unqualified!(typeof(s)).sPtr) == shared int*)); static struct Foo(T) { T* ptr; } - // The qualifers on the type are affected, but the qualifiers on the - // template argument is not. - static assert(is(Unqual!(const(Foo!(const int))) == Foo!(const int))); - static assert(is(Unqual!(Foo!(const int)) == Foo!(const int))); - static assert(is(Unqual!(const(Foo!int)) == Foo!int)); + // The qualifers on the type are removed, but the qualifiers on the + // template argument are not. + static assert(is(Unqualified!(const(Foo!(const int))) == Foo!(const int))); + static assert(is(Unqualified!(Foo!(const int)) == Foo!(const int))); + static assert(is(Unqualified!(const(Foo!int)) == Foo!int)); } /++ From f6b2932268d8b801e5cf66649f7c047eeebc9366 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Tue, 19 Mar 2024 14:36:26 +0100 Subject: [PATCH 220/327] Remove explicit hex string casts --- std/internal/unicode_comp.d | 24 ++-- std/internal/unicode_decomp.d | 24 ++-- std/internal/unicode_grapheme.d | 84 ++++++------ std/internal/unicode_norm.d | 48 +++---- std/internal/unicode_tables.d | 220 ++++++++++++++++---------------- tools/unicode_table_generator.d | 8 +- 6 files changed, 204 insertions(+), 204 deletions(-) diff --git a/std/internal/unicode_comp.d b/std/internal/unicode_comp.d index 646aeeb3af0..28b2e0d26b9 100644 --- a/std/internal/unicode_comp.d +++ b/std/internal/unicode_comp.d @@ -7,11 +7,11 @@ import std.internal.unicode_tables; static if (size_t.sizeof == 4) { //10144 bytes -enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(cast(immutable size_t[]) x" +enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(x" 0000000000000040000005C0", -cast(immutable size_t[]) x" +x" 0000010000000B00000010A0", -cast(immutable size_t[]) x" +x" 020201000402030206020205090807020000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -226,11 +226,11 @@ E600E6E6E6E600E600E6E6E600000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000", ); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; -enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(cast(immutable size_t[]) x" +enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(x" 0000000000000800", -cast(immutable size_t[]) x" +x" 0000100000002600", -cast(immutable size_t[]) x" +x" 00010000000300020005000400070006000700080007000700090007000A0007000C000B000700070007000700070007 0007000D0007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 @@ -919,11 +919,11 @@ return t[]; static if (size_t.sizeof == 8) { //10144 bytes -enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(cast(immutable size_t[]) x" +enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(x" 0000000000000000000000000000002000000000000002E0", -cast(immutable size_t[]) x" +x" 00000000000001000000000000000B0000000000000010A0", -cast(immutable size_t[]) x" +x" 040203020202010009080702060202050000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -1138,11 +1138,11 @@ E6E6E6E600000000000000000007E6E6000000000000000000000000000000000000000000000000 00000000000000000000000000000000", ); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; -enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(cast(immutable size_t[]) x" +enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(x" 00000000000000000000000000000400", -cast(immutable size_t[]) x" +x" 00000000000010000000000000002600", -cast(immutable size_t[]) x" +x" 000300020001000000070006000500040007000700070008000A00070009000700070007000C000B0007000700070007 000700070007000D00070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 diff --git a/std/internal/unicode_decomp.d b/std/internal/unicode_decomp.d index 6016f3dee23..d596d48c3ee 100644 --- a/std/internal/unicode_decomp.d +++ b/std/internal/unicode_decomp.d @@ -19,11 +19,11 @@ import std.internal.unicode_tables; static if (size_t.sizeof == 4) { //23488 bytes -enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" 000000000000004000000540", -cast(immutable size_t[]) x" +x" 0000010000000A0000002360", -cast(immutable size_t[]) x" +x" 020201000402030202020205070602020202020208020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -516,11 +516,11 @@ cast(immutable size_t[]) x" 00000000000000000000000000000000", ); //12544 bytes -enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" 000000000000004000000440", -cast(immutable size_t[]) x" +x" 000001000000080000001000", -cast(immutable size_t[]) x" +x" 020201000302020202020204020502020202020206020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -1636,11 +1636,11 @@ return t[]; static if (size_t.sizeof == 8) { //23488 bytes -enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" 0000000000000000000000000000002000000000000002A0", -cast(immutable size_t[]) x" +x" 00000000000001000000000000000A000000000000002360", -cast(immutable size_t[]) x" +x" 040203020202010007060202020202050802020202020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -2133,11 +2133,11 @@ cast(immutable size_t[]) x" 00000000000000000000000000000000", ); //12544 bytes -enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(cast(immutable size_t[]) x" +enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" 000000000000000000000000000000200000000000000220", -cast(immutable size_t[]) x" +x" 000000000000010000000000000008000000000000001000", -cast(immutable size_t[]) x" +x" 030202020202010002050202020202040602020202020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 diff --git a/std/internal/unicode_grapheme.d b/std/internal/unicode_grapheme.d index d33e987de2c..ba80e188a80 100644 --- a/std/internal/unicode_grapheme.d +++ b/std/internal/unicode_grapheme.d @@ -19,11 +19,11 @@ package(std): static if (size_t.sizeof == 4) { //832 bytes -enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000080", -cast(immutable size_t[]) x" +x" 000001000000008000000A00", -cast(immutable size_t[]) x" +x" 000000000002010000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -44,11 +44,11 @@ cast(immutable size_t[]) x" 00000000000000000000000000000000", ); //832 bytes -enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000080", -cast(immutable size_t[]) x" +x" 000001000000008000000A00", -cast(immutable size_t[]) x" +x" 000000000002010000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -69,11 +69,11 @@ FEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFF0000000F00000000000000000000000000000000 00000000000000000000000000000000", ); //896 bytes -enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000080", -cast(immutable size_t[]) x" +x" 000001000000008000000C00", -cast(immutable size_t[]) x" +x" 010101000101010101010102010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 @@ -95,11 +95,11 @@ cast(immutable size_t[]) x" 0000000000000000000000000000000000000000000000000000000000000000", ); //1280 bytes -enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000D0", -cast(immutable size_t[]) x" +x" 000001000000012000000E00", -cast(immutable size_t[]) x" +x" 020201000302020202020402020605020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020702020202020202020202020202020202020202020000000000000000 @@ -129,11 +129,11 @@ FFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 0000000000000000000000000000000000000000000000000000000000000000", ); //1856 bytes -enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000B0", -cast(immutable size_t[]) x" +x" 00000100000000E000002400", -cast(immutable size_t[]) x" +x" 010101000101020104010103010501010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 @@ -175,11 +175,11 @@ cast(immutable size_t[]) x" 0000000000000000000000000000000000000000000000000000000000000000", ); //3488 bytes -enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000110", -cast(immutable size_t[]) x" +x" 00000100000001A000004B00", -cast(immutable size_t[]) x" +x" 0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020B02020202020202020202020202020202020202020000000000000000 @@ -255,11 +255,11 @@ FFFFFFFFF87FFFFFFFFFFFFF00201FFFF80000100000FFFE0000000000000000F9FFFF7F000007DB 0000000000000000000000000000000000000000000000000000000000000000", ); //1344 bytes -enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000090", -cast(immutable size_t[]) x" +x" 00000100000000A000001800", -cast(immutable size_t[]) x" +x" 020201000202020202020202030202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -296,11 +296,11 @@ FFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFF000000000000000000000000000000000000000000000000 static if (size_t.sizeof == 8) { //832 bytes -enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum hangulLVTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000040", -cast(immutable size_t[]) x" +x" 000000000000010000000000000000800000000000000A00", -cast(immutable size_t[]) x" +x" 000201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -321,11 +321,11 @@ cast(immutable size_t[]) x" 00000000000000000000000000000000", ); //832 bytes -enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum hangulLVTTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000040", -cast(immutable size_t[]) x" +x" 000000000000010000000000000000800000000000000A00", -cast(immutable size_t[]) x" +x" 000201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -346,11 +346,11 @@ FFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFF0000000FFFFFFEFF00000000000000000000000000000000 00000000000000000000000000000000", ); //896 bytes -enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000040", -cast(immutable size_t[]) x" +x" 000000000000010000000000000000800000000000000C00", -cast(immutable size_t[]) x" +x" 010101010101010001010101010101020101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 @@ -372,11 +372,11 @@ cast(immutable size_t[]) x" 0000000000000000000000000000000000000000000000000000000000000000", ); //1280 bytes -enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000068", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001200000000000000E00", -cast(immutable size_t[]) x" +x" 030202020202010002060502020204020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020207020202020202020202020202020202020000000000000000 @@ -406,11 +406,11 @@ FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000", ); //1856 bytes -enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000058", -cast(immutable size_t[]) x" +x" 000000000000010000000000000000E00000000000002400", -cast(immutable size_t[]) x" +x" 010102010101010001050101040101030101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 @@ -452,11 +452,11 @@ C0300000000000080000000000000002000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000", ); //3488 bytes -enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000088", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001A00000000000004B00", -cast(immutable size_t[]) x" +x" 04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202020202020202020B020202020202020202020202020202020000000000000000 @@ -532,11 +532,11 @@ F87FFFFFFFFFFFFF00201FFFFFFFFFFF0000FFFEF80000100000000000000000000007DBF9FFFF7F 0000000000000000000000000000000000000000000000000000000000000000", ); //1344 bytes -enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000048", -cast(immutable size_t[]) x" +x" 000000000000010000000000000000A00000000000001800", -cast(immutable size_t[]) x" +x" 020202020202010003020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 diff --git a/std/internal/unicode_norm.d b/std/internal/unicode_norm.d index c103c254d7e..bc51c8cd610 100644 --- a/std/internal/unicode_norm.d +++ b/std/internal/unicode_norm.d @@ -19,11 +19,11 @@ package(std): static if (size_t.sizeof == 4) { //1728 bytes -enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000C0", -cast(immutable size_t[]) x" +x" 000001000000010000001E00", -cast(immutable size_t[]) x" +x" 020201000302020202020204020502020202020206020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -62,11 +62,11 @@ FFFFFFFFFFFFFFFF03FFFFFF00000000A00000005F7FFC0000007FDB000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); //2048 bytes -enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000E0", -cast(immutable size_t[]) x" +x" 000001000000014000002400", -cast(immutable size_t[]) x" +x" 020201000504030202020206020702020202020208020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -112,11 +112,11 @@ A00000005F7FFC0000007FDB00000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000", ); //2848 bytes -enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000E0", -cast(immutable size_t[]) x" +x" 000001000000014000003D00", -cast(immutable size_t[]) x" +x" 020201000402030202020205070602020202020208020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -179,11 +179,11 @@ FFFF07FFFFFF7FFF0000FFFF00001C0000010000000000000000000000000000FFFF00070FFFFFFF 00000000000000000000000000000000", ); //2944 bytes -enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000F0", -cast(immutable size_t[]) x" +x" 000001000000016000003E00", -cast(immutable size_t[]) x" +x" 020201000504030202020206080702020202020209020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -254,11 +254,11 @@ FFFF07FFFFFF7FFF0000FFFF00001C0000010000000000000000000000000000FFFF00070FFFFFFF static if (size_t.sizeof == 8) { //1728 bytes -enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000060", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001000000000000001E00", -cast(immutable size_t[]) x" +x" 030202020202010002050202020202040602020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -297,11 +297,11 @@ FFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFC00A00000000000000000007FDB0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); //2048 bytes -enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000070", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001400000000000002400", -cast(immutable size_t[]) x" +x" 050403020202010002070202020202060802020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -347,11 +347,11 @@ F8000000000000000000000000000001000000003FFFFFFF00000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000", ); //2848 bytes -enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000070", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001400000000000003D00", -cast(immutable size_t[]) x" +x" 040203020202010007060202020202050802020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -414,11 +414,11 @@ FFFF7FFFFFFF07FF00001C000000FFFF000000000001000000000000000000000FFFFFFFFFFF0007 00000000000000000000000000000000", ); //2944 bytes -enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000078", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001600000000000003E00", -cast(immutable size_t[]) x" +x" 050403020202010008070202020202060902020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index cc0225b1a51..a686e389171 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -75,7 +75,7 @@ struct TrieEntry(T...) SCE simpleCaseTable(size_t i) { -static immutable uint[] t = cast(immutable uint[]) x" +static immutable uint[] t = x" 0201E90B0211E92D0201E9110211E93302000496021004970200A7220210A72302001F7902101FF902001F4402101F4C 0200015A0210015B020010FD02101CBD02016E4C02116E6C02001E3802101E390201E9210211E94302001F2302101F2B 020001A0021001A1030003A3031003C2032003C3020004DC021004DD02002CA602102CA70200017B0210017C0201E906 @@ -329,7 +329,7 @@ return SCE(t[i]); } @property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure { -static immutable ulong[] t = cast(immutable ulong[]) x" +static immutable ulong[] t = x" 001E90B000000021001E92D0000001210010CAE0000000210010CEE00000012100004960000000210000497000000121 001E911000000021001E933000000121000A722000000021000A7230000001210001F790000000210001FF9000000121 0001F440000000210001F4C000000121000015A000000021000015B00000012100010FD0000000210001CBD000000121 @@ -2285,11 +2285,11 @@ bool isHangT(dchar ch) @safe pure nothrow @nogc static if (size_t.sizeof == 4) { //2080 bytes -enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000E0", -cast(immutable size_t[]) x" +x" 000001000000014000002500", -cast(immutable size_t[]) x" +x" 020201000402030206020205080702020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -2336,11 +2336,11 @@ FFFFFFC0FC000000000FFFFFFFFFC000000000FF0FFFFFFCFFC000000000FFFFFFFFFC000000003F 00000000000000000000000000000000", ); //1856 bytes -enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000E0", -cast(immutable size_t[]) x" +x" 000001000000014000001E00", -cast(immutable size_t[]) x" +x" 020201000402030206020205080702020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -2382,11 +2382,11 @@ F0000000001FFFFFFFC0000000007FFFFFFF0000000001FF0000040000000000FFFFFFFF00000003 0000000000000000000000000000000000000000000000000000000000000000", ); //11648 bytes -enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 0000010000000480000011C0", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -2632,11 +2632,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //11648 bytes -enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 0000010000000480000011C0", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -2882,11 +2882,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //5600 bytes -enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000001A0", -cast(immutable size_t[]) x" +x" 00000100000002C000007B00", -cast(immutable size_t[]) x" +x" 03020100060504030A0908070E0D0C0B0303030311100F03141413121414141414141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000 @@ -3006,11 +3006,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF 0000000000000000000000000000000000000000000000000000000000000000", ); //3392 bytes -enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000110", -cast(immutable size_t[]) x" +x" 00000100000001A000004800", -cast(immutable size_t[]) x" +x" 0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020B02020202020202020202020202020202020202020000000000000000 @@ -3084,11 +3084,11 @@ F9FFFF7F000007DB0000000000000000000080000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000", ); //2848 bytes -enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(cast(immutable size_t[]) x" +enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(x" 0000000000000040000001A0", -cast(immutable size_t[]) x" +x" 00000100000002C000002500", -cast(immutable size_t[]) x" +x" 020201000402030207020605090802020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -3151,11 +3151,11 @@ FFFFFFFF001EEFFF0000000000000000FFFFFFFE3FFFBFFF000000000000000000001FFF00000000 00000000000000000000000003FF0000", ); //3360 bytes -enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000100", -cast(immutable size_t[]) x" +x" 000001000000018000004900", -cast(immutable size_t[]) x" +x" 0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -3228,11 +3228,11 @@ E8003600000000000000000000003C000000000000000000001000000000000000003FFF00000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); //3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000100", -cast(immutable size_t[]) x" +x" 000001000000018000004B00", -cast(immutable size_t[]) x" +x" 0302010005030403070303060A0908030303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000 @@ -3307,11 +3307,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFF000007FF000000000000000000000000 00000000000000000000000000000000", ); //6080 bytes -enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000001A0", -cast(immutable size_t[]) x" +x" 00000100000002C000008A00", -cast(immutable size_t[]) x" +x" 0202010005040302090807060D0C0B0A02020202100F0E02131312111313131313131313131313131313131313131313 131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313 131313131313131313131313131313131313131413131313131313131313131313131313131313130000000000000000 @@ -3441,11 +3441,11 @@ FFFFFFFF0000FFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000000000000000000000000000000000000000000000000000000000000", ); //4824 bytes -enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(cast(immutable size_t[]) x" +enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(x" 00000000000000200000009800000298", -cast(immutable size_t[]) x" +x" 00000080000000F000000400000043C0", -cast(immutable size_t[]) x" +x" 0302010007060504090801010B0B0B0A0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B 0B0B0B0B0B0B0B0B0B0B0B0C0D0101010D01010100000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000010000000300020005000400070006 @@ -3552,11 +3552,11 @@ enum MAX_SIMPLE_LOWER = 1433; enum MAX_SIMPLE_UPPER = 1450; enum MAX_SIMPLE_TITLE = 1454; //10496 bytes -enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 000001000000048000000F80", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -3778,11 +3778,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10112 bytes -enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 000001000000048000000EC0", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -3996,11 +3996,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10496 bytes -enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 000001000000048000000F80", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4222,11 +4222,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10368 bytes -enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 000001000000048000000F40", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4445,11 +4445,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //9856 bytes -enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 000001000000048000000E40", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4658,11 +4658,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10368 bytes -enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", -cast(immutable size_t[]) x" +x" 000001000000048000000F40", -cast(immutable size_t[]) x" +x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4882,7 +4882,7 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ); immutable(uint)[] toUpperTable() nothrow @nogc pure @safe { static immutable uint[] t = -cast(immutable uint[]) x" +x" 0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C 0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 @@ -5027,7 +5027,7 @@ return t; } immutable(uint)[] toLowerTable() nothrow @nogc pure @safe { static immutable uint[] t = -cast(immutable uint[]) x" +x" 0000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C 0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078 000000790000007A000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9 @@ -5161,7 +5161,7 @@ return t; } immutable(uint)[] toTitleTable() nothrow @nogc pure @safe { static immutable uint[] t = -cast(immutable uint[]) x" +x" 0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C 0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 @@ -5307,11 +5307,11 @@ return t; static if (size_t.sizeof == 8) { //2080 bytes -enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000070", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001400000000000002500", -cast(immutable size_t[]) x" +x" 040203020202010008070202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -5358,11 +5358,11 @@ FFFFFFFC00000000000000000000000F000000000000000000000000000000000000000000000000 00000000000000000000000000000000", ); //1856 bytes -enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000070", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001400000000000001E00", -cast(immutable size_t[]) x" +x" 040203020202010008070202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -5404,11 +5404,11 @@ FFF0000003FFFFFFFFFFFF0000003FFF003FDE64D0000003000003FFFFFF00007B0000001FDFE7B0 0000000000000000000000000000000000000000000000000000000000000000", ); //11648 bytes -enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 0000000000000100000000000000048000000000000011C0", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -5654,11 +5654,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //11648 bytes -enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 0000000000000100000000000000048000000000000011C0", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -5904,11 +5904,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //5600 bytes -enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000000000000000000002000000000000000D0", -cast(immutable size_t[]) x" +x" 000000000000010000000000000002C00000000000007B00", -cast(immutable size_t[]) x" +x" 06050403030201000E0D0C0B0A09080711100F0303030303141414141414131214141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414141414141414141414140000000000000000 @@ -6028,11 +6028,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF 0000000000000000000000000000000000000000000000000000000000000000", ); //3392 bytes -enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000088", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001A00000000000004800", -cast(immutable size_t[]) x" +x" 04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 02020202020202020202020202020202020202020202020B020202020202020202020202020202020000000000000000 @@ -6106,11 +6106,11 @@ B47E00000000000000000000000000BF0000000000FB7C0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000", ); //2848 bytes -enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(cast(immutable size_t[]) x" +enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(x" 0000000000000000000000000000002000000000000000D0", -cast(immutable size_t[]) x" +x" 000000000000010000000000000002C00000000000002500", -cast(immutable size_t[]) x" +x" 040203020202010009080202070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -6173,11 +6173,11 @@ FFFE0000000003FF0000000000000000000003FF000000000000000000000000003F000000000000 000000000000000003FF000000000000", ); //3360 bytes -enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000080", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001800000000000004900", -cast(immutable size_t[]) x" +x" 04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 @@ -6250,11 +6250,11 @@ FE000000000000000000000000000000000000001E00000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); //3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000080", -cast(immutable size_t[]) x" +x" 000000000000010000000000000001800000000000004B00", -cast(immutable size_t[]) x" +x" 05030403030201000A090803070303060303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000 @@ -6329,11 +6329,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFF00000000000007FF0000000000000000 00000000000000000000000000000000", ); //6080 bytes -enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(cast(immutable size_t[]) x" +enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000000000000000000002000000000000000D0", -cast(immutable size_t[]) x" +x" 000000000000010000000000000002C00000000000008A00", -cast(immutable size_t[]) x" +x" 05040302020201000D0C0B0A09080706100F0E0202020202131313131313121113131313131313131313131313131313 131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313 131313131313131313131313131313131313131313131314131313131313131313131313131313130000000000000000 @@ -6463,11 +6463,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000000000000000000000000000000000000000000000000000000000000", ); //4824 bytes -enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(cast(immutable size_t[]) x" +enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(x" 00000000000000000000000000000010000000000000004C000000000000014C", -cast(immutable size_t[]) x" +x" 000000000000008000000000000000F0000000000000040000000000000043C0", -cast(immutable size_t[]) x" +x" 07060504030201000B0B0B0A090801010B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B 0B0B0B0B0B0B0B0B0D0101010B0B0B0C000000000D010101000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000030002000100000007000600050004 @@ -6574,11 +6574,11 @@ enum MAX_SIMPLE_LOWER = 1433; enum MAX_SIMPLE_UPPER = 1450; enum MAX_SIMPLE_TITLE = 1454; //10496 bytes -enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 000000000000010000000000000004800000000000000F80", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -6800,11 +6800,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10112 bytes -enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 000000000000010000000000000004800000000000000EC0", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7018,11 +7018,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10496 bytes -enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 000000000000010000000000000004800000000000000F80", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7244,11 +7244,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10368 bytes -enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 000000000000010000000000000004800000000000000F40", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7467,11 +7467,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //9856 bytes -enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 000000000000010000000000000004800000000000000E40", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7680,11 +7680,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); //10368 bytes -enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(cast(immutable size_t[]) x" +enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", -cast(immutable size_t[]) x" +x" 000000000000010000000000000004800000000000000F40", -cast(immutable size_t[]) x" +x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7904,7 +7904,7 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ); immutable(uint)[] toUpperTable() nothrow @nogc pure @safe { static immutable uint[] t = -cast(immutable uint[]) x" +x" 0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C 0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 @@ -8049,7 +8049,7 @@ return t; } immutable(uint)[] toLowerTable() nothrow @nogc pure @safe { static immutable uint[] t = -cast(immutable uint[]) x" +x" 0000006100000062000000630000006400000065000000660000006700000068000000690000006A0000006B0000006C 0000006D0000006E0000006F000000700000007100000072000000730000007400000075000000760000007700000078 000000790000007A000000E0000000E1000000E2000000E3000000E4000000E5000000E6000000E7000000E8000000E9 @@ -8183,7 +8183,7 @@ return t; } immutable(uint)[] toTitleTable() nothrow @nogc pure @safe { static immutable uint[] t = -cast(immutable uint[]) x" +x" 0000004100000042000000430000004400000045000000460000004700000048000000490000004A0000004B0000004C 0000004D0000004E0000004F000000500000005100000052000000530000005400000055000000560000005700000058 000000590000005A0000039C000000C0000000C1000000C2000000C3000000C4000000C5000000C6000000C7000000C8 diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index fd74589c388..0bbe80f608d 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -898,7 +898,7 @@ void writeCaseFolding(File sink) writeln("SCE simpleCaseTable(size_t i)"); writeln("{"); - writef("static immutable uint[] t = cast(immutable uint[]) x\""); + writef("static immutable uint[] t = x\""); foreach (i, v; simpleTable) { if (i % 12 == 0) writeln(); @@ -915,7 +915,7 @@ void writeCaseFolding(File sink) writeln("}"); writeln("@property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure"); writeln("{"); - writef("static immutable ulong[] t = cast(immutable ulong[]) x\""); + writef("static immutable ulong[] t = x\""); int[4] maxS = 0; foreach (i, v; fullTable) { @@ -1162,7 +1162,7 @@ void writeFunctions(File sink) void writeUintArray(T:dchar)(File sink, const T[] tab) { size_t lineCount = 1; - sink.write("cast(immutable uint[]) x\""); + sink.write("x\""); foreach (i, elem; tab) { if ((i % 12) == 0) @@ -1461,7 +1461,7 @@ void storeTrie(T, O)(T trie, O sink) import std.format.write : formattedWrite; void store(size_t[] arr) { - formattedWrite(sink, "cast(immutable size_t[]) x\""); + formattedWrite(sink, "x\""); foreach (i; 0 .. arr.length) { static if (size_t.sizeof == 8) From 90af8c22220028689275d62434fa42114ad6487f Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Wed, 20 Mar 2024 16:12:06 -0600 Subject: [PATCH 221/327] Rename lib to phobos. (#8953) As discussed in a recent planning meeting, we're renaming lib to phobos, making it so that the root for Phobos v3 is phobos. So, that's what this commit does. However, on top of that, I removed the existing package.d files (both lib/package.d and lib/sys/package.d) rather than fixing them, since I'm inclined to think that we should be very selective about when we use package.d, and I think that allowing something like import phobos; is a mistake. It wouldn't surprise me if we get screaming about that later, and maybe we'll add it back at that point, but I'd rather not worry about maintaining it as modules get added, and if we can get away with it, I think that we should just not have it at all, since it's better practice in general to limit the symbols that you import to something close to what you're actually using, whereas import phobos; would be importing everything. And having a package.d at each level like lib/sys/package.d seems to be trying to do would complicate things even further. We may very well end up with some package.d files in some cases, but I think that that should be handled on a case-by-case basis - and that the default should be to only have one module to import a symbol from. So, with these changes, lib becomes phobos, and there are no longer any package.d files in it. --- dub.sdl | 4 +-- lib/package.d | 3 --- lib/sys/package.d | 4 --- {lib => phobos}/sys/compiler.d | 4 +-- {lib => phobos}/sys/meta.d | 6 ++--- {lib => phobos}/sys/system.d | 4 +-- {lib => phobos}/sys/traits.d | 46 +++++++++++++++++----------------- 7 files changed, 32 insertions(+), 39 deletions(-) delete mode 100644 lib/package.d delete mode 100644 lib/sys/package.d rename {lib => phobos}/sys/compiler.d (96%) rename {lib => phobos}/sys/meta.d (98%) rename {lib => phobos}/sys/system.d (98%) rename {lib => phobos}/sys/traits.d (97%) diff --git a/dub.sdl b/dub.sdl index 721781a544f..516e5968293 100644 --- a/dub.sdl +++ b/dub.sdl @@ -6,7 +6,7 @@ copyright "Copyright © 1999-2024, The D Language Foundation" configuration "library" { targetType "staticLibrary" - sourcePaths "lib" + sourcePaths "phobos" targetPath "generated-lib" #excludedSourceFiles "unittest.d" "test/**" "std/**" "tools/**" "etc/**" } @@ -14,7 +14,7 @@ configuration "library" { configuration "unittest" { dflags "-main" targetType "executable" - sourcePaths "lib" + sourcePaths "phobos" targetPath "generated-lib" #excludedSourceFiles "unittest.d" "test/**" "std/**" "tools/**" "etc/**" } diff --git a/lib/package.d b/lib/package.d deleted file mode 100644 index cff4c95fe77..00000000000 --- a/lib/package.d +++ /dev/null @@ -1,3 +0,0 @@ -module lib; - -public import lib.sys; diff --git a/lib/sys/package.d b/lib/sys/package.d deleted file mode 100644 index 04c8903b17c..00000000000 --- a/lib/sys/package.d +++ /dev/null @@ -1,4 +0,0 @@ -module lib.sys; - -public import lib.sys.compiler; -public import lib.sys.system; diff --git a/lib/sys/compiler.d b/phobos/sys/compiler.d similarity index 96% rename from lib/sys/compiler.d rename to phobos/sys/compiler.d index 88bf362de0a..8181c9e3f10 100644 --- a/lib/sys/compiler.d +++ b/phobos/sys/compiler.d @@ -6,14 +6,14 @@ * Copyright: Copyright The D Language Foundation 2000 - 2011. * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: $(HTTP digitalmars.com, Walter Bright), Alex Rønne Petersen - * Source: $(PHOBOSSRC std/compiler.d) + * Source: $(PHOBOSSRC phobos/sys/compiler.d) */ /* Copyright The D Language Foundation 2000 - 2011. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE_1_0.txt or copy at * http://www.boost.org/LICENSE_1_0.txt) */ -module lib.sys.compiler; +module phobos.sys.compiler; immutable { diff --git a/lib/sys/meta.d b/phobos/sys/meta.d similarity index 98% rename from lib/sys/meta.d rename to phobos/sys/meta.d index c05c77efcd0..c57b7714cc3 100644 --- a/lib/sys/meta.d +++ b/phobos/sys/meta.d @@ -69,9 +69,9 @@ Authors: $(HTTP digitalmars.com, Walter Bright), $(HTTP klickverbot.at, David Nadlinger) $(HTTP jmdavisprog.com, Jonathan M Davis) - Source: $(PHOBOSSRC lib/sys/meta) + Source: $(PHOBOSSRC phobos/sys/meta) +/ -module lib.sys.meta; +module phobos.sys.meta; // Example for converting types to values from module documentation. @safe unittest @@ -215,7 +215,7 @@ template Map(alias fun, args...) /// @safe unittest { - import lib.sys.traits : Unqualified; + import phobos.sys.traits : Unqualified; // empty alias Empty = Map!Unqualified; diff --git a/lib/sys/system.d b/phobos/sys/system.d similarity index 98% rename from lib/sys/system.d rename to phobos/sys/system.d index 7e5a15cfe89..538db6d70c8 100644 --- a/lib/sys/system.d +++ b/phobos/sys/system.d @@ -7,9 +7,9 @@ * License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: $(HTTP digitalmars.com, Walter Bright) and $(HTTP jmdavisprog.com, Jonathan M Davis) - * Source: $(PHOBOSSRC std/system.d) + * Source: $(PHOBOSSRC phobos/sys/system.d) */ -module lib.sys.system; +module phobos.sys.system; immutable { diff --git a/lib/sys/traits.d b/phobos/sys/traits.d similarity index 97% rename from lib/sys/traits.d rename to phobos/sys/traits.d index 1e8286fe4fc..70c79d5cd0d 100644 --- a/lib/sys/traits.d +++ b/phobos/sys/traits.d @@ -2,7 +2,7 @@ /++ Templates which extract information about types and symbols at compile time. - In the context of lib.sys.traits, a "trait" is a template which provides + In the context of phobos.sys.traits, a "trait" is a template which provides information about a type or symbol. Most traits evaluate to $(D true) or $(D false), telling the code using it whether the given arguments match / have that specific trait (e.g. whether the given type is @@ -83,9 +83,9 @@ $(HTTP klickverbot.at, David Nadlinger), Kenji Hara, Shoichi Kato - Source: $(PHOBOSSRC lib/sys/traits) + Source: $(PHOBOSSRC phobos/sys/traits) +/ -module lib.sys.traits; +module phobos.sys.traits; /++ Whether the given type is a dynamic array (or what is sometimes referred to @@ -242,7 +242,7 @@ enum isDynamicArray(T) = is(T == U[], U); @safe unittest { - import lib.sys.meta : Alias, AliasSeq; + import phobos.sys.meta : Alias, AliasSeq; static struct AliasThis(T) { @@ -376,7 +376,7 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); @safe unittest { - import lib.sys.meta : Alias, AliasSeq; + import phobos.sys.meta : Alias, AliasSeq; static struct AliasThis(T) { @@ -516,7 +516,7 @@ enum isInteger(T) = is(immutable T == immutable byte) || @safe unittest { - import lib.sys.meta : Alias, AliasSeq; + import phobos.sys.meta : Alias, AliasSeq; static struct AliasThis(T) { @@ -661,7 +661,7 @@ enum isFloatingPoint(T) = is(immutable T == immutable float) || @safe unittest { - import lib.sys.meta : Alias, AliasSeq; + import phobos.sys.meta : Alias, AliasSeq; static struct AliasThis(T) { @@ -820,7 +820,7 @@ enum isNumeric(T) = is(immutable T == immutable byte) || @safe unittest { - import lib.sys.meta : Alias, AliasSeq; + import phobos.sys.meta : Alias, AliasSeq; static struct AliasThis(T) { @@ -947,7 +947,7 @@ enum isPointer(T) = is(T == U*, U); @safe unittest { - import lib.sys.meta : Alias, AliasSeq; + import phobos.sys.meta : Alias, AliasSeq; static struct AliasThis(T) { @@ -1240,7 +1240,7 @@ template Unshared(T) data and violating the type system. In particular, historically, a lot of D code has used - $(REF Unqual, std, traits) (which is equivalent to lib.sys.traits' + $(REF Unqual, std, traits) (which is equivalent to phobos.sys.traits' Unqualified) when the programmer's intent was to remove $(D const), and $(D shared) wasn't actually considered at all. And in such cases, the code really should use $(LREF Unconst) instead. @@ -1342,9 +1342,9 @@ else Applies $(D const) to the given type. This is primarily useful in conjunction with templates that take a template - predicate (such as many of the templates in lib.sys.meta), since while in + predicate (such as many of the templates in phobos.sys.meta), since while in most cases, you can simply do $(D const T) or $(D const(T)) to make $(D T) - $(D const), with something like $(REF Map, lib, sys, meta), you need to + $(D const), with something like $(REF Map, phobos, sys, meta), you need to pass a template to be applied. See_Also: @@ -1365,7 +1365,7 @@ alias ConstOf(T) = const T; // Note that const has no effect on immutable. static assert(is(ConstOf!(immutable int) == immutable int)); - import lib.sys.meta : AliasSeq, Map; + import phobos.sys.meta : AliasSeq, Map; alias Types = AliasSeq!(int, long, bool*, ubyte[], @@ -1381,10 +1381,10 @@ alias ConstOf(T) = const T; Applies $(D immutable) to the given type. This is primarily useful in conjunction with templates that take a template - predicate (such as many of the templates in lib.sys.meta), since while in + predicate (such as many of the templates in phobos.sys.meta), since while in most cases, you can simply do $(D immutable T) or $(D immutable(T)) to make - $(D T) $(D immutable), with something like $(REF Map, lib, sys, meta), you - need to pass a template to be applied. + $(D T) $(D immutable), with something like $(REF Map, phobos, sys, meta), + you need to pass a template to be applied. See_Also: $(LREF ConstOf) @@ -1408,7 +1408,7 @@ alias ImmutableOf(T) = immutable T; static assert(is(ImmutableOf!(immutable int) == immutable int)); - import lib.sys.meta : AliasSeq, Map; + import phobos.sys.meta : AliasSeq, Map; alias Types = AliasSeq!(int, long, bool*, ubyte[], @@ -1424,9 +1424,9 @@ alias ImmutableOf(T) = immutable T; Applies $(D inout) to the given type. This is primarily useful in conjunction with templates that take a template - predicate (such as many of the templates in lib.sys.meta), since while in + predicate (such as many of the templates in phobos.sys.meta), since while in most cases, you can simply do $(D inout T) or $(D inout(T)) to make $(D T) - $(D inout), with something like $(REF Map, lib, sys, meta), you need to + $(D inout), with something like $(REF Map, phobos, sys, meta), you need to pass a template to be applied. See_Also: @@ -1447,7 +1447,7 @@ alias InoutOf(T) = inout T; // Note that inout has no effect on immutable. static assert(is(InoutOf!(immutable int) == immutable int)); - import lib.sys.meta : AliasSeq, Map; + import phobos.sys.meta : AliasSeq, Map; alias Types = AliasSeq!(int, long, bool*, ubyte[], @@ -1463,9 +1463,9 @@ alias InoutOf(T) = inout T; Applies $(D shared) to the given type. This is primarily useful in conjunction with templates that take a template - predicate (such as many of the templates in lib.sys.meta), since while in + predicate (such as many of the templates in phobos.sys.meta), since while in most cases, you can simply do $(D shared T) or $(D shared(T)) to make $(D T) - $(D shared), with something like $(REF Map, lib, sys, meta), you need to + $(D shared), with something like $(REF Map, phobos, sys, meta), you need to pass a template to be applied. See_Also: @@ -1487,7 +1487,7 @@ alias SharedOf(T) = shared T; // implicitly shared. static assert(is(SharedOf!(immutable int) == immutable int)); - import lib.sys.meta : AliasSeq, Map; + import phobos.sys.meta : AliasSeq, Map; alias Types = AliasSeq!(int, long, bool*, ubyte[], From 3919c7f31a193b5436611e22b7ea3c02344bf9bd Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 21 Mar 2024 13:36:59 -0600 Subject: [PATCH 222/327] Add isSignedInteger and isUnsignedInteger to phobos.sys.traits. (#8954) They're similar to isSigned and isUnsigned from std.traits, but these new traits are far more restrictive, because they're only true for the four signed/unsigned built-in integer types, whereas isSigned and isUnsigned accept a bunch of different types (including floating point types and types that implicitly convert to real in the case of isSigned). From what I've looked at in Phobos v2, most uses of isSigned and isUnsigned are used specifically when the code already knows that it's operating on integer types anyway, so these traits should work for most of those cases, and floating point types are always signed, so including them in a check for signedness seems kind of redundant. I suppose that isNumericSigned might make sense under some set of circumstances, since it would allow for a single template instantiation instead of two like you'd get with isSignedInteger!T || isFloatingPoint!T, but at least for now, I think that isSignedInteger and isUnsignedInteger are enough. --- phobos/sys/traits.d | 322 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 314 insertions(+), 8 deletions(-) diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 70c79d5cd0d..7f66d3e6edf 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -57,7 +57,9 @@ $(LREF isInteger) $(LREF isNumeric) $(LREF isPointer) + $(LREF isSignedInteger) $(LREF isStaticArray) + $(LREF isUnsignedInteger) )) $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF Unconst) @@ -113,7 +115,7 @@ module phobos.sys.traits; determined by how the dynamic array was created in the first place) - though if you do any operations on it which end up requiring allocation (e.g. appending to it if it doesn't have the capacity to expand in-place, - which it won't if it isn't a slice of GC-allocated memory), then that + which it won't if it isn't a slice of GC-allocated memory), then that reallocation will result in the dynamic array being a slice of newly allocated, GC-backed memory (regardless of what it was a slice of before), since it's the GC that deals with those allocations. @@ -427,8 +429,8 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); Note that this does not include implicit conversions or enum types. The type itself must be one of the built-in integer types. - This trait does have some similarities to $(D __traits(isIntegral, T)), but - $(D isIntegral) accepts a $(D lot) more types than isInteger does. + This trait does have some similarities with $(D __traits(isIntegral, T)), + but $(D isIntegral) accepts a $(D lot) more types than isInteger does. isInteger is specifically for testing for the built-in integer types, whereas $(D isIntegral) tests for a whole set of types that are vaguely integer-like (including $(D bool), the three built-in character types, and @@ -439,7 +441,9 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); See also: $(DDSUBLINK spec/traits, isIntegral, $(D __traits(isIntegral, T))) $(LREF isFloatingPoint) + $(LREF isSignedInteger) $(LREF isNumeric) + $(LREF isUnsignedInteger) +/ enum isInteger(T) = is(immutable T == immutable byte) || is(immutable T == immutable ubyte) || @@ -566,6 +570,304 @@ enum isInteger(T) = is(immutable T == immutable byte) || } } +/++ + Whether the given type is one of the built-in signed integer types, ignoring + all qualifiers. + + $(TABLE + $(TR $(TH Signed Integer Types)) + $(TR $(TD byte)) + $(TR $(TD short)) + $(TR $(TD int)) + $(TR $(TD long)) + ) + + Note that this does not include implicit conversions or enum types. The + type itself must be one of the built-in signed integer types. + + See also: + $(LREF isFloatingPoint) + $(LREF isInteger) + $(LREF isNumeric) + $(LREF isUnsignedInteger) + +/ +enum isSignedInteger(T) = is(immutable T == immutable byte) || + is(immutable T == immutable short) || + is(immutable T == immutable int) || + is(immutable T == immutable long); + +/// +@safe unittest +{ + // Some types which are signed integer types. + static assert( isSignedInteger!byte); + static assert( isSignedInteger!short); + static assert( isSignedInteger!int); + static assert( isSignedInteger!long); + + static assert( isSignedInteger!(const byte)); + static assert( isSignedInteger!(immutable short)); + static assert( isSignedInteger!(inout int)); + static assert( isSignedInteger!(shared int)); + static assert( isSignedInteger!(const shared long)); + + static assert( isSignedInteger!(typeof(42))); + static assert( isSignedInteger!(typeof(1234567890L))); + + int i; + static assert( isSignedInteger!(typeof(i))); + + // Some types which aren't signed integer types. + static assert(!isSignedInteger!ubyte); + static assert(!isSignedInteger!ushort); + static assert(!isSignedInteger!uint); + static assert(!isSignedInteger!ulong); + + static assert(!isSignedInteger!bool); + static assert(!isSignedInteger!char); + static assert(!isSignedInteger!wchar); + static assert(!isSignedInteger!dchar); + static assert(!isSignedInteger!(int[])); + static assert(!isSignedInteger!(ubyte[4])); + static assert(!isSignedInteger!(int*)); + static assert(!isSignedInteger!double); + static assert(!isSignedInteger!string); + + static struct S + { + int i; + } + static assert(!isSignedInteger!S); + + // The struct itself isn't considered a signed integer, + // but its member variable is when checked directly. + static assert( isSignedInteger!(typeof(S.i))); + + enum E : int + { + a = 42 + } + + // Enums do not count. + static assert(!isSignedInteger!E); + + static struct AliasThis + { + int i; + alias this = i; + } + + // Other implicit conversions do not count. + static assert(!isSignedInteger!AliasThis); +} + +@safe unittest +{ + import phobos.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + // The actual core.simd types available vary from system to system, so we + // have to be a bit creative here. The reason that we're testing these types + // is because __traits(isIntegral, T) accepts them, but isSignedInteger is + // not supposed to. + template SIMDTypes() + { + import core.simd; + + alias SIMDTypes = AliasSeq!(); + static if (is(ubyte16)) + SIMDTypes = AliasSeq!(SIMDTypes, ubyte16); + static if (is(int4)) + SIMDTypes = AliasSeq!(SIMDTypes, int4); + static if (is(double2)) + SIMDTypes = AliasSeq!(SIMDTypes, double2); + static if (is(void16)) + SIMDTypes = AliasSeq!(SIMDTypes, void16); + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(byte, short, int, long)) + { + enum E : Q!T { a = Q!T.init } + + static assert( isSignedInteger!(Q!T)); + static assert(!isSignedInteger!E); + static assert(!isSignedInteger!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(ubyte, ushort, uint, ulong, + bool, char, wchar, dchar, float, double, real, SIMDTypes!(), + int[], ubyte[8], dchar[], void[], long*)) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isSignedInteger!(Q!T)); + static assert(!isSignedInteger!E); + static assert(!isSignedInteger!(AliasThis!(Q!T))); + } + } +} + +/++ + Whether the given type is one of the built-in unsigned integer types, + ignoring all qualifiers. + + $(TABLE + $(TR $(TH Integer Types)) + $(TR $(TD ubyte)) + $(TR $(TD ushort)) + $(TR $(TD uint)) + $(TR $(TD ulong)) + ) + + Note that this does not include implicit conversions or enum types. The + type itself must be one of the built-in unsigned integer types. + + This trait does have some similarities with $(D __traits(isUnsigned, T)), + but $(D isUnsigned) accepts a $(D lot) more types than isUnsignedInteger + does. isUnsignedInteger is specifically for testing for the built-in + unsigned integer types, whereas $(D isUnsigned) tests for a whole set of + types that are unsigned and vaguely integer-like (including $(D bool), the + three built-in character types, and some of the vector types from + core.simd). So, for most code, isUnsignedInteger is going to be more + appropriate, but obviously, it depends on what the code is trying to do. + + See also: + $(DDSUBLINK spec/traits, isUnsigned, $(D __traits(isUnsigned, T))) + $(LREF isFloatingPoint) + $(LREF isInteger) + $(LREF isSignedInteger) + $(LREF isNumeric) + +/ +enum isUnsignedInteger(T) = is(immutable T == immutable ubyte) || + is(immutable T == immutable ushort) || + is(immutable T == immutable uint) || + is(immutable T == immutable ulong); + +/// +@safe unittest +{ + // Some types which are unsigned integer types. + static assert( isUnsignedInteger!ubyte); + static assert( isUnsignedInteger!ushort); + static assert( isUnsignedInteger!uint); + static assert( isUnsignedInteger!ulong); + + static assert( isUnsignedInteger!(const ubyte)); + static assert( isUnsignedInteger!(immutable ushort)); + static assert( isUnsignedInteger!(inout uint)); + static assert( isUnsignedInteger!(shared uint)); + static assert( isUnsignedInteger!(const shared ulong)); + + static assert( isUnsignedInteger!(typeof(42u))); + static assert( isUnsignedInteger!(typeof(1234567890UL))); + + uint u; + static assert( isUnsignedInteger!(typeof(u))); + + // Some types which aren't unsigned integer types. + static assert(!isUnsignedInteger!byte); + static assert(!isUnsignedInteger!short); + static assert(!isUnsignedInteger!int); + static assert(!isUnsignedInteger!long); + + static assert(!isUnsignedInteger!bool); + static assert(!isUnsignedInteger!char); + static assert(!isUnsignedInteger!wchar); + static assert(!isUnsignedInteger!dchar); + static assert(!isUnsignedInteger!(int[])); + static assert(!isUnsignedInteger!(ubyte[4])); + static assert(!isUnsignedInteger!(int*)); + static assert(!isUnsignedInteger!double); + static assert(!isUnsignedInteger!string); + + static struct S + { + uint u; + } + static assert(!isUnsignedInteger!S); + + // The struct itself isn't considered an unsigned integer, + // but its member variable is when checked directly. + static assert( isUnsignedInteger!(typeof(S.u))); + + enum E : uint + { + a = 42 + } + + // Enums do not count. + static assert(!isUnsignedInteger!E); + + static struct AliasThis + { + uint u; + alias this = u; + } + + // Other implicit conversions do not count. + static assert(!isUnsignedInteger!AliasThis); +} + +@safe unittest +{ + import phobos.sys.meta : Alias, AliasSeq; + + static struct AliasThis(T) + { + T member; + alias this = member; + } + + // The actual core.simd types available vary from system to system, so we + // have to be a bit creative here. The reason that we're testing these types + // is because __traits(isIntegral, T) and __traits(isUnsigned, T) accept + // them, but isUnsignedInteger is not supposed to. + template SIMDTypes() + { + import core.simd; + + alias SIMDTypes = AliasSeq!(); + static if (is(ubyte16)) + SIMDTypes = AliasSeq!(SIMDTypes, ubyte16); + static if (is(int4)) + SIMDTypes = AliasSeq!(SIMDTypes, int4); + static if (is(double2)) + SIMDTypes = AliasSeq!(SIMDTypes, double2); + static if (is(void16)) + SIMDTypes = AliasSeq!(SIMDTypes, void16); + } + + foreach (Q; AliasSeq!(Alias, ConstOf, ImmutableOf, SharedOf)) + { + foreach (T; AliasSeq!(ubyte, ushort, uint, ulong)) + { + enum E : Q!T { a = Q!T.init } + + static assert( isUnsignedInteger!(Q!T)); + static assert(!isUnsignedInteger!E); + static assert(!isUnsignedInteger!(AliasThis!(Q!T))); + } + + foreach (T; AliasSeq!(byte, short, int, long, + bool, char, wchar, dchar, float, double, real, SIMDTypes!(), + int[], ubyte[8], dchar[], void[], long*)) + { + enum E : Q!T { a = Q!T.init } + + static assert(!isUnsignedInteger!(Q!T)); + static assert(!isUnsignedInteger!E); + static assert(!isUnsignedInteger!(AliasThis!(Q!T))); + } + } +} + /++ Whether the given type is one of the built-in floating-point types, ignoring all qualifiers. @@ -580,8 +882,8 @@ enum isInteger(T) = is(immutable T == immutable byte) || Note that this does not include implicit conversions or enum types. The type itself must be one of the built-in floating-point types. - This trait does have some similarities to $(D __traits(isFloating, T)), but - $(D isFloating) accepts more types than isFloatingPoint does. + This trait does have some similarities with $(D __traits(isFloating, T)), + but $(D isFloating) accepts more types than isFloatingPoint does. isFloatingPoint is specifically for testing for the built-in floating-point types, whereas $(D isFloating) tests for a whole set of types that are vaguely float-like (including enums with a base type which is a @@ -592,7 +894,9 @@ enum isInteger(T) = is(immutable T == immutable byte) || See also: $(DDSUBLINK spec/traits, isFloating, $(D __traits(isFloating, T))) $(LREF isInteger) + $(LREF isSignedInteger) $(LREF isNumeric) + $(LREF isUnsignedInteger) +/ enum isFloatingPoint(T) = is(immutable T == immutable float) || is(immutable T == immutable double) || @@ -736,6 +1040,8 @@ enum isFloatingPoint(T) = is(immutable T == immutable float) || See_Also: $(LREF isFloatingPoint) $(LREF isInteger) + $(LREF isSignedInteger) + $(LREF isUnsignedInteger) +/ enum isNumeric(T) = is(immutable T == immutable byte) || is(immutable T == immutable ubyte) || @@ -990,7 +1296,7 @@ enum isPointer(T) = is(T == U*, U); If none of those qualifiers have been applied to the outer layer of type $(D T), then the result is $(D T). - For the built-in, scalar types (that is $(D bool), the character types, and + For the built-in scalar types (that is $(D bool), the character types, and the numeric types), they only have one layer, so $(D const U) simply becomes $(D U). @@ -1098,7 +1404,7 @@ else Note that while $(D immutable) is implicitly $(D shared), it is unaffected by Unshared. Only explicit $(D shared) is removed. - For the built-in, scalar types (that is $(D bool), the character types, and + For the built-in scalar types (that is $(D bool), the character types, and the numeric types), they only have one layer, so $(D shared U) simply becomes $(D U). @@ -1205,7 +1511,7 @@ template Unshared(T) If no type qualifiers have been applied to the outer layer of type $(D T), then the result is $(D T). - For the built-in, scalar types (that is $(D bool), the character types, and + For the built-in scalar types (that is $(D bool), the character types, and the numeric types), they only have one layer, so $(D const U) simply becomes $(D U). From b2853536e940a66c723681e15656f2fa77b517c0 Mon Sep 17 00:00:00 2001 From: Horodniceanu Andrei Date: Fri, 22 Mar 2024 09:03:46 +0200 Subject: [PATCH 223/327] std/file.d: Don't check for OS-dependent error message in unittest Signed-off-by: Horodniceanu Andrei --- std/file.d | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/std/file.d b/std/file.d index 5b8925d5eb4..1db779bdf8e 100644 --- a/std/file.d +++ b/std/file.d @@ -1083,6 +1083,7 @@ private void removeImpl(scope const(char)[] name, scope const(FSChar)* namez) @t @safe unittest { import std.exception : collectExceptionMsg, assertThrown; + import std.algorithm.searching : startsWith; string filename = null; // e.g. as returned by File.tmpfile.name @@ -1090,12 +1091,10 @@ private void removeImpl(scope const(char)[] name, scope const(FSChar)* namez) @t { // exact exception message is OS-dependent auto msg = filename.remove.collectExceptionMsg!FileException; - assert("Failed to remove file (null): Bad address" == msg, msg); + assert(msg.startsWith("Failed to remove file (null):"), msg); } else version (Windows) { - import std.algorithm.searching : startsWith; - // don't test exact message on windows, it's language dependent auto msg = filename.remove.collectExceptionMsg!FileException; assert(msg.startsWith("(null):"), msg); From 2fc0991cf9c3c1c0bea9563dcdad3526312b32b0 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 22 Mar 2024 15:52:17 -0600 Subject: [PATCH 224/327] Add isImplicitlyConvertible and isQualifierConvertible to phobos v3. (#8955) Both traits do exactly the same thing as their std.traits counterparts, though these have far more documentation and examples. I'm not a big fan of isImplicitlyConvertible, since it's usually a bad idea to test for implicit conversions in template constraints, and the is expression is incredibly simple to boot, but a trait _is_ needed when a template predicate is needed (e.g. for the templates in phobos.sys.meta), and having isImplicitlyConvertible allows for a good place to put documentation on implicit conversions in general (as well as to warn against testing for them in template constraints). isQualifierConvertible isn't actually used much in Phobos v2 right now (in most cases right now, Unqual is used with an is expression instead), but it is used by the range traits, and there probably are a number of cases where it would be better to use it than Unqualified or Unconst with an is expression. But it's new enough that I don't think that many of us have really thought through how best to use it yet. Either way, if we want to be able to do something like isInputRange!(R, const char), then it's a good trait to have. --- phobos/sys/traits.d | 427 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 420 insertions(+), 7 deletions(-) diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 7f66d3e6edf..24788bb5ff9 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -61,6 +61,10 @@ $(LREF isStaticArray) $(LREF isUnsignedInteger) )) + $(TR $(TD Traits testing for type conversions) $(TD + $(LREF isImplicitlyConvertible) + $(LREF isQualifierConvertible) + )) $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF Unconst) $(LREF Unshared) @@ -294,7 +298,7 @@ enum isDynamicArray(T) = is(T == U[], U); $(DDSUBLINK spec/traits, isStaticArray, $(D __traits(isStaticArray, T))) $(DDSUBLINK spec/arrays, , The language spec for arrays) +/ -enum bool isStaticArray(T) = is(T == U[n], U, size_t n); +enum isStaticArray(T) = is(T == U[n], U, size_t n); /// @safe unittest @@ -430,7 +434,7 @@ enum bool isStaticArray(T) = is(T == U[n], U, size_t n); type itself must be one of the built-in integer types. This trait does have some similarities with $(D __traits(isIntegral, T)), - but $(D isIntegral) accepts a $(D lot) more types than isInteger does. + but $(D isIntegral) accepts a $(I lot) more types than isInteger does. isInteger is specifically for testing for the built-in integer types, whereas $(D isIntegral) tests for a whole set of types that are vaguely integer-like (including $(D bool), the three built-in character types, and @@ -730,7 +734,7 @@ enum isSignedInteger(T) = is(immutable T == immutable byte) || type itself must be one of the built-in unsigned integer types. This trait does have some similarities with $(D __traits(isUnsigned, T)), - but $(D isUnsigned) accepts a $(D lot) more types than isUnsignedInteger + but $(D isUnsigned) accepts a $(I lot) more types than isUnsignedInteger does. isUnsignedInteger is specifically for testing for the built-in unsigned integer types, whereas $(D isUnsigned) tests for a whole set of types that are unsigned and vaguely integer-like (including $(D bool), the @@ -1289,6 +1293,415 @@ enum isPointer(T) = is(T == U*, U); } } +/++ + Whether the type $(D From) is implicitly convertible to the type $(D To). + + Note that template constraints should be very careful about when they test + for implicit conversions and in general should prefer to either test for an + exact set of types or for types which compile with a particular piece of + code rather than being designed to accept any type which implicitly converts + to a particular type. + + This is because having a type pass a template constraint based on an + implicit conversion but then not have the implicit conversion actually take + place (which it won't unless the template does something to force it + internally) can lead to either compilation errors or subtle behavioral + differences - and even when the conversion is done explicitly within a + templated function, since it's not done at the call site, it can still lead + to subtle bugs in some cases (e.g. if slicing a static array is involved). + + For situations where code needs to verify that a type is implicitly + convertible based solely on its qualifiers, $(LREF isQualifierConvertible) + would be a more appropriate choice than isImplicitlyConvertible. + + Given how trivial the $(D is) expression for isImplicitlyConvertible is - + $(D is(To : From)) - this trait is provided primarily so that it can be + used in conjunction with templates that use a template predicate (such as + many of the templates in phobos.sys.meta). + + See_Also: + $(DDSUBLINK dlang.org/spec/type, implicit-conversions, Spec on implicit conversions) + $(DDSUBLINK spec/const3, implicit_qualifier_conversions, Spec for implicit qualifier conversions) + $(LREF isQualifierConvertible) + +/ +enum isImplicitlyConvertible(From, To) = is(From : To); + +/// +@safe unittest +{ + static assert( isImplicitlyConvertible!(byte, long)); + static assert( isImplicitlyConvertible!(ushort, long)); + static assert( isImplicitlyConvertible!(int, long)); + static assert( isImplicitlyConvertible!(long, long)); + static assert( isImplicitlyConvertible!(ulong, long)); + + static assert( isImplicitlyConvertible!(ubyte, int)); + static assert( isImplicitlyConvertible!(short, int)); + static assert( isImplicitlyConvertible!(int, int)); + static assert( isImplicitlyConvertible!(uint, int)); + static assert(!isImplicitlyConvertible!(long, int)); + static assert(!isImplicitlyConvertible!(ulong, int)); + + static assert(!isImplicitlyConvertible!(int, string)); + static assert(!isImplicitlyConvertible!(int, int[])); + static assert(!isImplicitlyConvertible!(int, int*)); + + static assert(!isImplicitlyConvertible!(string, int)); + static assert(!isImplicitlyConvertible!(int[], int)); + static assert(!isImplicitlyConvertible!(int*, int)); + + // For better or worse, bool and the built-in character types will + // implicitly convert to integer or floating-point types if the target type + // is large enough. Sometimes, this is desirable, whereas at other times, + // it can have very surprising results, so it's one reason why code should + // be very careful when testing for implicit conversions. + static assert( isImplicitlyConvertible!(bool, int)); + static assert( isImplicitlyConvertible!(char, int)); + static assert( isImplicitlyConvertible!(wchar, int)); + static assert( isImplicitlyConvertible!(dchar, int)); + + static assert( isImplicitlyConvertible!(bool, ubyte)); + static assert( isImplicitlyConvertible!(char, ubyte)); + static assert(!isImplicitlyConvertible!(wchar, ubyte)); + static assert(!isImplicitlyConvertible!(dchar, ubyte)); + + static assert( isImplicitlyConvertible!(bool, double)); + static assert( isImplicitlyConvertible!(char, double)); + static assert( isImplicitlyConvertible!(wchar, double)); + static assert( isImplicitlyConvertible!(dchar, double)); + + // Value types can be implicitly converted regardless of their qualifiers + // thanks to the fact that they're copied. + static assert( isImplicitlyConvertible!(int, int)); + static assert( isImplicitlyConvertible!(const int, int)); + static assert( isImplicitlyConvertible!(immutable int, int)); + static assert( isImplicitlyConvertible!(inout int, int)); + + static assert( isImplicitlyConvertible!(int, const int)); + static assert( isImplicitlyConvertible!(int, immutable int)); + static assert( isImplicitlyConvertible!(int, inout int)); + + // Reference types are far more restrictive about which implicit conversions + // they allow, because qualifiers in D are transitive. + static assert( isImplicitlyConvertible!(int*, int*)); + static assert(!isImplicitlyConvertible!(const int*, int*)); + static assert(!isImplicitlyConvertible!(immutable int*, int*)); + + static assert( isImplicitlyConvertible!(int*, const int*)); + static assert( isImplicitlyConvertible!(const int*, const int*)); + static assert( isImplicitlyConvertible!(immutable int*, const int*)); + + static assert(!isImplicitlyConvertible!(int*, immutable int*)); + static assert(!isImplicitlyConvertible!(const int*, immutable int*)); + static assert( isImplicitlyConvertible!(immutable int*, immutable int*)); + + // Note that inout gets a bit weird, since it's only used with function + // parameters, and it's a stand-in for whatever mutability qualifiers the + // type actually has. So, a function parameter that's inout accepts any + // mutability, but you can't actually implicitly convert to inout, because + // it's unknown within the function what the actual mutability of the type + // is. It will differ depending on the function arguments of a specific + // call to that function, so the same code has to work with all combinations + // of mutability qualifiers. + static assert(!isImplicitlyConvertible!(int*, inout int*)); + static assert(!isImplicitlyConvertible!(const int*, inout int*)); + static assert(!isImplicitlyConvertible!(immutable int*, inout int*)); + static assert( isImplicitlyConvertible!(inout int*, inout int*)); + + static assert(!isImplicitlyConvertible!(inout int*, int*)); + static assert( isImplicitlyConvertible!(inout int*, const int*)); + static assert(!isImplicitlyConvertible!(inout int*, immutable int*)); + + // Enums implicitly convert to their base type. + enum E : int + { + a = 42 + } + static assert( isImplicitlyConvertible!(E, int)); + static assert( isImplicitlyConvertible!(E, long)); + static assert(!isImplicitlyConvertible!(E, int[])); + + // Structs only implicit convert to another type via declaring an + // alias this. + static struct S + { + int i; + } + static assert(!isImplicitlyConvertible!(S, int)); + static assert(!isImplicitlyConvertible!(S, long)); + static assert(!isImplicitlyConvertible!(S, string)); + + static struct AliasThis + { + int i; + alias this = i; + } + static assert( isImplicitlyConvertible!(AliasThis, int)); + static assert( isImplicitlyConvertible!(AliasThis, long)); + static assert(!isImplicitlyConvertible!(AliasThis, string)); + + static struct AliasThis2 + { + AliasThis at; + alias this = at; + } + static assert( isImplicitlyConvertible!(AliasThis2, AliasThis)); + static assert( isImplicitlyConvertible!(AliasThis2, int)); + static assert( isImplicitlyConvertible!(AliasThis2, long)); + static assert(!isImplicitlyConvertible!(AliasThis2, string)); + + static struct AliasThis3 + { + AliasThis2 at; + alias this = at; + } + static assert( isImplicitlyConvertible!(AliasThis3, AliasThis2)); + static assert( isImplicitlyConvertible!(AliasThis3, AliasThis)); + static assert( isImplicitlyConvertible!(AliasThis3, int)); + static assert( isImplicitlyConvertible!(AliasThis3, long)); + static assert(!isImplicitlyConvertible!(AliasThis3, string)); + + // D does not support implicit conversions via construction. + static struct Cons + { + this(int i) + { + this.i = i; + } + + int i; + } + static assert(!isImplicitlyConvertible!(int, Cons)); + + // Classes support implicit conversion based on their class and + // interface hierarchies. + static interface I1 {} + static class Base : I1 {} + + static interface I2 {} + static class Foo : Base, I2 {} + + static class Bar : Base {} + + static assert( isImplicitlyConvertible!(Base, Base)); + static assert(!isImplicitlyConvertible!(Base, Foo)); + static assert(!isImplicitlyConvertible!(Base, Bar)); + static assert( isImplicitlyConvertible!(Base, I1)); + static assert(!isImplicitlyConvertible!(Base, I2)); + + static assert( isImplicitlyConvertible!(Foo, Base)); + static assert( isImplicitlyConvertible!(Foo, Foo)); + static assert(!isImplicitlyConvertible!(Foo, Bar)); + static assert( isImplicitlyConvertible!(Foo, I1)); + static assert( isImplicitlyConvertible!(Foo, I2)); + + static assert( isImplicitlyConvertible!(Bar, Base)); + static assert(!isImplicitlyConvertible!(Bar, Foo)); + static assert( isImplicitlyConvertible!(Bar, Bar)); + static assert( isImplicitlyConvertible!(Bar, I1)); + static assert(!isImplicitlyConvertible!(Bar, I2)); + + static assert(!isImplicitlyConvertible!(I1, Base)); + static assert(!isImplicitlyConvertible!(I1, Foo)); + static assert(!isImplicitlyConvertible!(I1, Bar)); + static assert( isImplicitlyConvertible!(I1, I1)); + static assert(!isImplicitlyConvertible!(I1, I2)); + + static assert(!isImplicitlyConvertible!(I2, Base)); + static assert(!isImplicitlyConvertible!(I2, Foo)); + static assert(!isImplicitlyConvertible!(I2, Bar)); + static assert(!isImplicitlyConvertible!(I2, I1)); + static assert( isImplicitlyConvertible!(I2, I2)); + + // Note that arrays are not implicitly convertible even when their elements + // are implicitly convertible. + static assert(!isImplicitlyConvertible!(ubyte[], uint[])); + static assert(!isImplicitlyConvertible!(Foo[], Base[])); + static assert(!isImplicitlyConvertible!(Bar[], Base[])); + + // However, like with pointers, dynamic arrays are convertible based on + // constness. + static assert( isImplicitlyConvertible!(Base[], const Base[])); + static assert( isImplicitlyConvertible!(Base[], const(Base)[])); + static assert(!isImplicitlyConvertible!(Base[], immutable(Base)[])); + static assert(!isImplicitlyConvertible!(const Base[], immutable Base[])); + static assert( isImplicitlyConvertible!(const Base[], const Base[])); + static assert(!isImplicitlyConvertible!(const Base[], immutable Base[])); +} + +/++ + Whether $(D From) is + $(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) + to $(D To). + + This is testing whether $(D From) and $(D To) are the same type - minus the + qualifiers - and whether the qualifiers on $(D From) can be implicitly + converted to the qualifiers on $(D To). No other implicit conversions are + taken into account. + + For instance, $(D const int*) is not implicitly convertible to $(D int*), + because that would violate $(D const). That means that $(D const) is not + qualifier convertible to mutable. And as such, $(I any) $(D const) type + is not qualifier convertible to a mutable type even if it's implicitly + convertible. E.G. $(D const int) is implicitly convertible to $(D int), + because it can be copied to avoid violating $(D const), but it's still not + qualifier convertible, because $(D const) types in general cannot be + implicitly converted to mutable. + + The exact types being tested matter, because they need to be the same + (minus the qualifiers) in order to be considered convertible, but beyond + that, all that matters for the conversion is whether those qualifers would + be convertible regardless of which types they were on. So, if you're having + trouble picturing whether $(D From) would be qualifier convertible to + $(D To), then consider which conversions would be allowed from $(D From[]) + to $(D To[]) (and remember that dynamic arrays are only implicitly + convertible based on their qualifers). + + The $(DDSUBLINK spec/const3, implicit_qualifier_conversions, spec) provides + a table of which qualifiers can be implcitly converted to which other + qualifers (and of course, there a bunch of examples below). + + So, isQualifierConvertible can be used in a case like + $(D isQualifierConvertible!(ReturnType!(typeof(foo(bar))), const char), + which would be testing that the return type of $(D foo(bar)) was $(D char), + $(D const char), or $(D immutable char) (since those are the only types + which are qualifier convertible to $(D const char)). + + This is in contrast to + $(D isImplicitlyConvertible!(ReturnType!(typeof(foo(bar))), const char), + which would be $(D true) for $(I any) type which was implicitly convertible + to $(D const char) rather than just $(D char), $(D const char), and + $(D immutable char). + + See_Also: + $(DDSUBLINK spec/const3, implicit_qualifier_conversions, Spec for implicit qualifier conversions) + $(LREF isImplicitlyConvertible) + +/ +enum isQualifierConvertible(From, To) = is(immutable From == immutable To) && is(From* : To*); + +/// +@safe unittest +{ + // i.e. char* -> const char* + static assert( isQualifierConvertible!(char, const char)); + + // i.e. const char* -> char* + static assert(!isQualifierConvertible!(const char, char)); + + static assert( isQualifierConvertible!(int, int)); + static assert( isQualifierConvertible!(int, const int)); + static assert(!isQualifierConvertible!(int, immutable int)); + + static assert(!isQualifierConvertible!(const int, int)); + static assert( isQualifierConvertible!(const int, const int)); + static assert(!isQualifierConvertible!(const int, immutable int)); + + static assert(!isQualifierConvertible!(immutable int, int)); + static assert( isQualifierConvertible!(immutable int, const int)); + static assert( isQualifierConvertible!(immutable int, immutable int)); + + // Note that inout gets a bit weird, since it's only used with function + // parameters, and it's a stand-in for whatever mutability qualifiers the + // type actually has. So, a function parameter that's inout accepts any + // mutability, but you can't actually implicitly convert to inout, because + // it's unknown within the function what the actual mutability of the type + // is. It will differ depending on the function arguments of a specific + // call to that function, so the same code has to work with all combinations + // of mutability qualifiers. + static assert(!isQualifierConvertible!(int, inout int)); + static assert(!isQualifierConvertible!(const int, inout int)); + static assert(!isQualifierConvertible!(immutable int, inout int)); + static assert( isQualifierConvertible!(inout int, inout int)); + + static assert(!isQualifierConvertible!(inout int, int)); + static assert( isQualifierConvertible!(inout int, const int)); + static assert(!isQualifierConvertible!(inout int, immutable int)); + + // shared is of course also a qualifer. + static assert(!isQualifierConvertible!(int, shared int)); + static assert(!isQualifierConvertible!(int, const shared int)); + static assert(!isQualifierConvertible!(const int, shared int)); + static assert(!isQualifierConvertible!(const int, const shared int)); + static assert(!isQualifierConvertible!(immutable int, shared int)); + static assert( isQualifierConvertible!(immutable int, const shared int)); + + static assert(!isQualifierConvertible!(shared int, int)); + static assert(!isQualifierConvertible!(shared int, const int)); + static assert(!isQualifierConvertible!(shared int, immutable int)); + static assert( isQualifierConvertible!(shared int, shared int)); + static assert( isQualifierConvertible!(shared int, const shared int)); + + static assert(!isQualifierConvertible!(const shared int, int)); + static assert(!isQualifierConvertible!(const shared int, const int)); + static assert(!isQualifierConvertible!(const shared int, immutable int)); + static assert(!isQualifierConvertible!(const shared int, shared int)); + static assert( isQualifierConvertible!(const shared int, const shared int)); + + // Implicit conversions don't count unless they're based purely on + // qualifiers. + enum E : int + { + a = 1 + } + + static assert(!isQualifierConvertible!(E, int)); + static assert(!isQualifierConvertible!(E, const int)); + static assert( isQualifierConvertible!(E, E)); + static assert( isQualifierConvertible!(E, const E)); + static assert(!isQualifierConvertible!(E, immutable E)); + + static struct AliasThis + { + int i; + alias this = i; + } + + static assert(!isQualifierConvertible!(AliasThis, int)); + static assert(!isQualifierConvertible!(AliasThis, const int)); + static assert( isQualifierConvertible!(AliasThis, AliasThis)); + static assert( isQualifierConvertible!(AliasThis, const AliasThis)); + static assert(!isQualifierConvertible!(AliasThis, immutable AliasThis)); + + // The qualifiers are irrelevant if the types aren't the same when + // stripped of all qualifers. + static assert(!isQualifierConvertible!(int, long)); + static assert(!isQualifierConvertible!(int, const long)); + static assert(!isQualifierConvertible!(string, const(ubyte)[])); +} + +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + alias Types = AliasSeq!(int, const int, shared int, inout int, const shared int, + const inout int, inout shared int, const inout shared int, immutable int); + + // https://dlang.org/spec/const3.html#implicit_qualifier_conversions + enum _ = 0; + static immutable bool[Types.length][Types.length] conversions = [ + // m c s i cs ci is cis im + [1, 1, _, _, _, _, _, _, _], // mutable + [_, 1, _, _, _, _, _, _, _], // const + [_, _, 1, _, 1, _, _, _, _], // shared + [_, 1, _, 1, _, 1, _, _, _], // inout + [_, _, _, _, 1, _, _, _, _], // const shared + [_, 1, _, _, _, 1, _, _, _], // const inout + [_, _, _, _, 1, _, 1, 1, _], // inout shared + [_, _, _, _, 1, _, _, 1, _], // const inout shared + [_, 1, _, _, 1, 1, _, 1, 1], // immutable + ]; + + foreach (i, From; Types) + { + foreach (j, To; Types) + { + static assert(isQualifierConvertible!(From, To) == conversions[i][j], + "`isQualifierConvertible!(" ~ From.stringof ~ ", " ~ To.stringof ~ ")`" ~ + " should be `" ~ (conversions[i][j] ? "true`" : "false`")); + } + } +} + /++ Removes the outer layer of $(D const), $(D inout), or $(D immutable) from type $(D T). @@ -1388,7 +1801,7 @@ else T* ptr; } - // The qualifer on the type is removed, but the qualifier on the template + // The qualifier on the type is removed, but the qualifier on the template // argument is not. static assert(is(Unconst!(const(Foo!(const int))) == Foo!(const int))); static assert(is(Unconst!(Foo!(const int)) == Foo!(const int))); @@ -1497,7 +1910,7 @@ template Unshared(T) T* ptr; } - // The qualifer on the type is removed, but the qualifier on the template + // The qualifier on the type is removed, but the qualifier on the template // argument is not. static assert(is(Unshared!(shared(Foo!(shared int))) == Foo!(shared int))); static assert(is(Unshared!(Foo!(shared int)) == Foo!(shared int))); @@ -1552,7 +1965,7 @@ template Unshared(T) really should use $(LREF Unconst) instead. But of course, if a template constraint or $(D static if) really needs to - strip off both the mutability qualifers and $(D shared) for what it's + strip off both the mutability qualifiers and $(D shared) for what it's testing for, then that's what Unqualified is for. It's just that it's best practice to use $(LREF Unconst) when it's not clear that $(D shared) should be removed as well. @@ -1637,7 +2050,7 @@ else T* ptr; } - // The qualifers on the type are removed, but the qualifiers on the + // The qualifiers on the type are removed, but the qualifiers on the // template argument are not. static assert(is(Unqualified!(const(Foo!(const int))) == Foo!(const int))); static assert(is(Unqualified!(Foo!(const int)) == Foo!(const int))); From e10c49f528dec9e79fe6e63fbd81a5f55f4463b9 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 22 Mar 2024 03:06:43 -0600 Subject: [PATCH 225/327] Add Filter and Reverse to phobos.sys.meta. They're the same as their std.meta counterparts, albeit with tweaked documentation and examples. I also fixed the casing on Map's parameters. They're supposed to be types (or a template in the case of the template that it's applying to the other arguments), so they should be PascalCased. --- phobos/sys/meta.d | 71 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 5 deletions(-) diff --git a/phobos/sys/meta.d b/phobos/sys/meta.d index c57b7714cc3..85988ba5451 100644 --- a/phobos/sys/meta.d +++ b/phobos/sys/meta.d @@ -53,8 +53,12 @@ $(LREF Alias) $(LREF AliasSeq) )) + $(TR $(TD Alias sequence filtering) $(TD + $(LREF Filter) + )) $(TR $(TD Alias sequence transformation) $(TD $(LREF Map) + $(LREF Reverse) )) ) @@ -199,17 +203,49 @@ alias Alias(T) = T; } /++ - Map takes a template predicate and applies it to every element in the given + Filters an $(D AliasSeq) using the given template predicate. + + The result is an $(D AliasSeq) that contains only the elements which satisfy + the predicate. + +/ +template Filter(alias Pred, Args...) +{ + alias Filter = AliasSeq!(); + static foreach (Arg; Args) + { + static if (Pred!Arg) + Filter = AliasSeq!(Filter, Arg); + } +} + +/// +@safe unittest +{ + import phobos.sys.traits : isDynamicArray, isPointer, isUnsignedInteger; + + alias Types = AliasSeq!(string, int, int[], bool[], ulong, double, ubyte); + + static assert(is(Filter!(isDynamicArray, Types) == + AliasSeq!(string, int[], bool[]))); + + static assert(is(Filter!(isUnsignedInteger, Types) == + AliasSeq!(ulong, ubyte))); + + static assert(is(Filter!(isPointer, Types) == AliasSeq!())); +} + +/++ + Map takes a template and applies it to every element in the given $(D AliasSeq), resulting in an $(D AliasSeq) with the transformed elements. So, it's equivalent to - `AliasSeq!(fun!(args[0]), fun!(args[1]), ..., fun!(args[$ - 1]))`. + `AliasSeq!(Fun!(Args[0]), Fun!(Args[1]), ..., Fun!(Args[$ - 1]))`. +/ -template Map(alias fun, args...) +template Map(alias Fun, Args...) { alias Map = AliasSeq!(); - static foreach (arg; args) - Map = AliasSeq!(Map, fun!arg); + static foreach (Arg; Args) + Map = AliasSeq!(Map, Fun!Arg); } /// @@ -258,3 +294,28 @@ template Map(alias fun, args...) assert(A == typeid(int)); } + +/++ + Takes an $(D AliasSeq) and result in an $(D AliasSeq) where the order of + the elements has been reversed. + +/ +template Reverse(Args...) +{ + alias Reverse = AliasSeq!(); + static foreach_reverse (Arg; Args) + Reverse = AliasSeq!(Reverse, Arg); +} + +/// +@safe unittest +{ + static assert(is(Reverse!(int, byte, long, string) == + AliasSeq!(string, long, byte, int))); + + alias Types = AliasSeq!(int, long, long, int, float, + ubyte, short, ushort, uint); + static assert(is(Reverse!Types == AliasSeq!(uint, ushort, short, ubyte, + float, int, long, long, int))); + + static assert(is(Reverse!() == AliasSeq!())); +} From 676710c7b83472d54c2339cfa89f182fb0cfb71f Mon Sep 17 00:00:00 2001 From: liushuyu Date: Sat, 23 Mar 2024 01:46:09 -0600 Subject: [PATCH 226/327] std/math/hardware.d: use an alternative register naming ... ... for LoongArch64 so that LDC/LLVM can recognize certain fp instructions --- std/math/hardware.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/math/hardware.d b/std/math/hardware.d index f474ea90373..4bfe792428c 100644 --- a/std/math/hardware.d +++ b/std/math/hardware.d @@ -203,7 +203,7 @@ private: { asm nothrow @nogc { - "movgr2fcsr $r2,$r0"; + "movgr2fcsr $fcsr2,$r0"; } } else @@ -933,7 +933,7 @@ private: { asm nothrow @nogc { - "movgr2fcsr $r0,%0" : + "movgr2fcsr $fcsr0,%0" : : "r" (newState & (roundingMask | allExceptions)); } } From a613e8f7147ecbffffb5bf32b5c52e4591cf5fd8 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 26 Mar 2024 19:11:20 -0600 Subject: [PATCH 227/327] Add all and any to phobos.sys.meta. (#8959) all is the same as std.meta's allSatisfy, and any is the same as std.meta's anySatisfy. However, their documentation and examples have been tweaked. --- phobos/sys/meta.d | 74 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/phobos/sys/meta.d b/phobos/sys/meta.d index 85988ba5451..2fc2483de72 100644 --- a/phobos/sys/meta.d +++ b/phobos/sys/meta.d @@ -60,6 +60,10 @@ $(LREF Map) $(LREF Reverse) )) + $(TR $(TD Alias sequence searching) $(TD + $(LREF all) + $(LREF any) + )) ) References: @@ -319,3 +323,73 @@ template Reverse(Args...) static assert(is(Reverse!() == AliasSeq!())); } + +/++ + Whether the given template predicate is $(D true) for all of the elements in + the given $(D AliasSeq). + + Evaluation is $(I not) short-circuited if a $(D false) result is + encountered; the template predicate must be instantiable with all the + elements. + +/ +version (StdDdoc) template all(alias Pred, Args...) +{ + import core.internal.traits : allSatisfy; + alias all = allSatisfy!(Pred, Args); +} +else +{ + import core.internal.traits : allSatisfy; + alias all = allSatisfy; +} + +/// +@safe unittest +{ + import phobos.sys.traits : isDynamicArray, isInteger; + + static assert(!all!(isInteger, int, double)); + static assert( all!(isInteger, int, long)); + + alias Types = AliasSeq!(string, int[], bool[]); + + static assert( all!(isDynamicArray, Types)); + static assert(!all!(isInteger, Types)); + + static assert( all!isInteger); +} + +/++ + Whether the given template predicate is $(D true) for any of the elements in + the given $(D AliasSeq). + + Evaluation is $(I not) short-circuited if a $(D true) result is + encountered; the template predicate must be instantiable with all the + elements. + +/ +version (StdDdoc) template any(alias Pred, Args...) +{ + import core.internal.traits : anySatisfy; + alias any = anySatisfy!(Pred, Args); +} +else +{ + import core.internal.traits : anySatisfy; + alias any = anySatisfy; +} + +/// +@safe unittest +{ + import phobos.sys.traits : isDynamicArray, isInteger; + + static assert(!any!(isInteger, string, double)); + static assert( any!(isInteger, int, double)); + + alias Types = AliasSeq!(string, int[], bool[], real, bool); + + static assert( any!(isDynamicArray, Types)); + static assert(!any!(isInteger, Types)); + + static assert(!any!isInteger); +} From ec0857574c40839fc152a24ccb228565c1330d0f Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Wed, 27 Mar 2024 03:33:54 -0600 Subject: [PATCH 228/327] Add isSameSymbol and isSameType to v3 traits and indexOf to v3 meta. (#8960) indexOf is phobos.sys.meta's version of std.meta's staticIndexOf. The name was changed to better match our naming scheme. Because the result of the template is a value and not a type or AliasSeq, it is correct for it to be camelCased, but we don't normally prepend templates with static, making it inconsistent to do so in the case of indexOf. This might result in some symbol conflicts with indexOf from the algorithm modules (assuming that we retain that function and its name for Phobos v3), but a quick test showed that importing both phobos.sys.meta and std.algorithm didn't result in a symbol conflict when using the one from phobos.sys.meta. And even if we do get symbol conflicts in some situations, the module system is designed to allow us to deal with that. As for the implementation, I've both made indexOf more flexible and more straightforward. staticIndexOf looks for an element in the AliasSeq which is "the same" as the first argument, and that results in a big mess, since what "the same" is varies considerably depending on what the elements are, and staticIndexOf makes it even more complicated by evaluating some symbols at CTFE if it can (e.g. evaluating a no-arg function that returns an int to try to compare it to an integer literal) while not evaluating them in other cases. Not only did trying to document the current behavior make it clear that it's just way too confusing, but even trying to come up with a sane simplification of how the comparison works was just too messy, because it's trying to be able to compare just about anything which you can stick in an AliasSeq. So, I punted on it by taking the comparison out of the equation entirely. indexOf now takes a template predicate. So, rather than looking for an element which is the same, it looks for an element which matches the predicate. This allows indexOf to be used in more cases than staticIndexOf can be, _and_ it allows the programmer using it to decide how the comparison works by choosing a predicate that matches what they want. So, in conjuction with that I added isSameSymbol and isSameType to phobos.sys.traits, since those should correspond to the most common searches that someone would be trying to do with staticIndexOf, but since those traits are very specific in what they search for rather than searching for an element which is "the same" in some nebulous sense, the code should end up being much clearer and cleaner. And if someone wants to do something completely different like indexOf!(isInteger, Types), then they can, unlike with staticIndexOf. --- phobos/sys/meta.d | 79 ++++++++++++++++++++++++++ phobos/sys/traits.d | 131 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 209 insertions(+), 1 deletion(-) diff --git a/phobos/sys/meta.d b/phobos/sys/meta.d index 2fc2483de72..2236dc89c7f 100644 --- a/phobos/sys/meta.d +++ b/phobos/sys/meta.d @@ -63,6 +63,7 @@ $(TR $(TD Alias sequence searching) $(TD $(LREF all) $(LREF any) + $(LREF indexOf) )) ) @@ -393,3 +394,81 @@ else static assert(!any!isInteger); } + +/++ + Returns the index of the first element where $(D Pred!(Args[i])) is + $(D true). + + If $(D Pred!(Args[i])) is not $(D true) for any elements, then the result + is $(D -1). + + Evaluation is $(I not) short-circuited if a $(D true) result is + encountered; the template predicate must be instantiable with all the + elements. + +/ +template indexOf(alias Pred, Args...) +{ + enum ptrdiff_t indexOf = + { + static foreach (i; 0 .. Args.length) + { + static if (Pred!(Args[i])) + return i; + } + return -1; + }(); +} + +/// +@safe unittest +{ + import phobos.sys.traits : isInteger, isSameSymbol, isSameType; + + alias Types1 = AliasSeq!(string, int, long, char[], ubyte, int); + alias Types2 = AliasSeq!(float, double, int[], char[], void); + + static assert(indexOf!(isInteger, Types1) == 1); + static assert(indexOf!(isInteger, Types2) == -1); + + static assert(indexOf!(isSameType!ubyte, Types1) == 4); + static assert(indexOf!(isSameType!ubyte, Types2) == -1); + + int i; + int j; + string s; + int foo() { return 0; } + alias Symbols = AliasSeq!(i, j, foo); + static assert(indexOf!(isSameSymbol!j, Symbols) == 1); + static assert(indexOf!(isSameSymbol!s, Symbols) == -1); + + // Empty AliasSeq. + static assert(indexOf!isInteger == -1); + + // The predicate does not compile with all of the arguments, + // so indexOf does not compile. + static assert(!__traits(compiles, indexOf!(isSameType!int, long, int, 42))); +} + +unittest +{ + import phobos.sys.traits : isSameType; + + static assert(indexOf!(isSameType!int, short, int, long) >= 0); + static assert(indexOf!(isSameType!string, short, int, long) < 0); + + // This is to verify that we don't accidentally end up with the type of + // the result differing based on whether it's -1 or not. Not specifying the + // type at all in indexOf results in -1 being int on all systems and the + // other results being whatever size_t is (ulong on most systems at this + // point), which does generally work, but being explicit with the type + // avoids any subtle issues that might come from the type of the result + // varying based on whether the item is found or not. + static assert(is(typeof(indexOf!(isSameType!int, short, int, long)) == + typeof(indexOf!(isSameType!string, short, int, long)))); + + static assert(indexOf!(isSameType!string, string, string, string, string) == 0); + static assert(indexOf!(isSameType!string, int, string, string, string) == 1); + static assert(indexOf!(isSameType!string, int, int, string, string) == 2); + static assert(indexOf!(isSameType!string, int, int, int, string) == 3); + static assert(indexOf!(isSameType!string, int, int, int, int) == -1); +} diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 24788bb5ff9..324b63bb23f 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -51,7 +51,6 @@ $(BOOKTABLE , $(TR $(TH Category) $(TH Templates)) $(TR $(TD Categories of types) $(TD - $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF isDynamicArray) $(LREF isFloatingPoint) $(LREF isInteger) @@ -65,6 +64,10 @@ $(LREF isImplicitlyConvertible) $(LREF isQualifierConvertible) )) + $(TR $(TD Traits for comparisons) $(TD + $(LREF isSameSymbol) + $(LREF isSameType) + )) $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF Unconst) $(LREF Unshared) @@ -1702,6 +1705,132 @@ enum isQualifierConvertible(From, To) = is(immutable From == immutable To) && is } } +/++ + Whether the given symbols are the same symbol. + + All this does is $(D __traits(isSame, lhs, rhs)), so most code shouldn't + use it. It's intended to be used in conjunction with templates that take a + template predicate - such as those in phobos.sys.meta. + + The single-argument overload makes it so that it can be partially + instantiated with the first argument, which will often be necessary with + template predicates. + + See_Also: + $(DDSUBLINK spec/traits, isSame, $(D __traits(isSame, lhs, rhs))) + $(LREF isSameType) + +/ +enum isSameSymbol(alias lhs, alias rhs) = __traits(isSame, lhs, rhs); + +/++ Ditto +/ +template isSameSymbol(alias lhs) +{ + enum isSameSymbol(alias rhs) = __traits(isSame, lhs, rhs); +} + +/// +@safe unittest +{ + int i; + int j; + real r; + + static assert( isSameSymbol!(i, i)); + static assert(!isSameSymbol!(i, j)); + static assert(!isSameSymbol!(i, r)); + + static assert(!isSameSymbol!(j, i)); + static assert( isSameSymbol!(j, j)); + static assert(!isSameSymbol!(j, r)); + + static assert(!isSameSymbol!(r, i)); + static assert(!isSameSymbol!(r, j)); + static assert( isSameSymbol!(r, r)); + + auto foo() { return 0; } + auto bar() { return 0; } + + static assert( isSameSymbol!(foo, foo)); + static assert(!isSameSymbol!(foo, bar)); + static assert(!isSameSymbol!(foo, i)); + + static assert(!isSameSymbol!(bar, foo)); + static assert( isSameSymbol!(bar, bar)); + static assert(!isSameSymbol!(bar, i)); + + // Types are symbols too. However, in most cases, they should be compared + // as types, not symbols (be it with is expressions or with isSameType), + // because the results aren't consistent between scalar types and + // user-defined types with regards to type qualifiers when they're compared + // as symbols. + static assert( isSameSymbol!(double, double)); + static assert(!isSameSymbol!(double, const double)); + static assert(!isSameSymbol!(double, int)); + static assert( isSameSymbol!(Object, Object)); + static assert( isSameSymbol!(Object, const Object)); + + static assert(!isSameSymbol!(i, int)); + static assert( isSameSymbol!(typeof(i), int)); + + // Lambdas can be compared with __traits(isSame, ...), + // so they can be compared with isSameSymbol. + static assert( isSameSymbol!(a => a + 42, a => a + 42)); + static assert(!isSameSymbol!(a => a + 42, a => a + 99)); + + // Partial instantiation allows it to be used with templates that expect + // a predicate that takes only a single argument. + import phobos.sys.meta : AliasSeq, indexOf; + alias Types = AliasSeq!(i, j, r, int, long, foo); + static assert(indexOf!(isSameSymbol!j, Types) == 1); + static assert(indexOf!(isSameSymbol!int, Types) == 3); + static assert(indexOf!(isSameSymbol!bar, Types) == -1); +} + +/++ + Whether the given types are the same type. + + All this does is $(D is(T == U)), so most code shouldn't use it. It's + intended to be used in conjunction with templates that take a template + predicate - such as those in phobos.sys.meta. + + The single-argument overload makes it so that it can be partially + instantiated with the first argument, which will often be necessary with + template predicates. + + See_Also: + $(LREF isSameSymbol) + +/ +enum isSameType(T, U) = is(T == U); + +/++ Ditto +/ +template isSameType(T) +{ + enum isSameType(U) = is(T == U); +} + +/// +@safe unittest +{ + static assert( isSameType!(long, long)); + static assert(!isSameType!(long, const long)); + static assert(!isSameType!(long, string)); + static assert( isSameType!(string, string)); + + int i; + real r; + static assert( isSameType!(int, typeof(i))); + static assert(!isSameType!(int, typeof(r))); + + static assert(!isSameType!(real, typeof(i))); + static assert( isSameType!(real, typeof(r))); + + // Partial instantiation allows it to be used with templates that expect + // a predicate that takes only a single argument. + import phobos.sys.meta : AliasSeq, indexOf; + alias Types = AliasSeq!(float, string, int, double); + static assert(indexOf!(isSameType!int, Types) == 2); +} + /++ Removes the outer layer of $(D const), $(D inout), or $(D immutable) from type $(D T). From eeffdfe525ba41a0d367802d27af0eb058ccf262 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 28 Mar 2024 00:05:00 -0600 Subject: [PATCH 229/327] Add Stride and Unique to phobos.sys.meta. Stride is basically the same as std.meta's Stride aside from some improvements to the tests and documentation. Unique is the equivalent of std.meta's NoDuplicates except that it's been updated in the same fashion as indexOf. So, instead of checking for whether the elements are "the same" based on some complicated rules, Unique takes a predicate which it uses to compare the elements for equality (essentially making it the AliasSeq equivalent of std.algorithm's uniq, though uniq requires that the range be sorted, and Unique has no such requirement). So, the programmer can decide what kind of comparison is used. --- phobos/sys/meta.d | 202 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 201 insertions(+), 1 deletion(-) diff --git a/phobos/sys/meta.d b/phobos/sys/meta.d index 2236dc89c7f..e28a4d1c1ce 100644 --- a/phobos/sys/meta.d +++ b/phobos/sys/meta.d @@ -55,6 +55,8 @@ )) $(TR $(TD Alias sequence filtering) $(TD $(LREF Filter) + $(LREF Stride) + $(LREF Unique) )) $(TR $(TD Alias sequence transformation) $(TD $(LREF Map) @@ -239,6 +241,204 @@ template Filter(alias Pred, Args...) static assert(is(Filter!(isPointer, Types) == AliasSeq!())); } +/++ + Evaluates to an $(LREF AliasSeq) which only contains every nth element from + the $(LREF AliasSeq) that was passed in, where $(D n) is stepSize. + + So, if stepSize is $(D 2), then the result contains every other element from + the original. If stepSize is $(D 3), then the result contains every third + element from the original. Etc. + + If stepSize is negative, then the result is equivalent to using + $(LREF Reverse) on the given $(LREF AliasSeq) and then using Stride on it + with the absolute value of that stepSize. + + If stepSize is positive, then the first element in the original + $(LREF AliasSeq) is the first element in the result, whereas if stepSize is + negative, then the last element in the original is the first element in the + result. Each subsequent element is then the element at the index of the + previous element plus stepSize. + +/ +template Stride(int stepSize, Args...) +if (stepSize != 0) +{ + alias Stride = AliasSeq!(); + static if (stepSize > 0) + { + static foreach (i; 0 .. (Args.length + stepSize - 1) / stepSize) + Stride = AliasSeq!(Stride, Args[i * stepSize]); + } + else + { + static foreach (i; 0 .. (Args.length - stepSize - 1) / -stepSize) + Stride = AliasSeq!(Stride, Args[$ - 1 + i * stepSize]); + } +} + +/// +@safe unittest +{ + static assert(is(Stride!(1, short, int, long) == AliasSeq!(short, int, long))); + static assert(is(Stride!(2, short, int, long) == AliasSeq!(short, long))); + static assert(is(Stride!(3, short, int, long) == AliasSeq!short)); + static assert(is(Stride!(100, short, int, long) == AliasSeq!short)); + + static assert(is(Stride!(-1, short, int, long) == AliasSeq!(long, int, short))); + static assert(is(Stride!(-2, short, int, long) == AliasSeq!(long, short))); + static assert(is(Stride!(-3, short, int, long) == AliasSeq!long)); + static assert(is(Stride!(-100, short, int, long) == AliasSeq!long)); + + alias Types = AliasSeq!(short, int, long, ushort, uint, ulong); + static assert(is(Stride!(3, Types) == AliasSeq!(short, ushort))); + static assert(is(Stride!(3, Types[1 .. $]) == AliasSeq!(int, uint))); + static assert(is(Stride!(-3, Types) == AliasSeq!(ulong, long))); + + static assert(is(Stride!(-2, Types) == Stride!(2, Reverse!Types))); + + static assert(is(Stride!1 == AliasSeq!())); + static assert(is(Stride!100 == AliasSeq!())); +} + +@safe unittest +{ + static assert(!__traits(compiles, Stride!(0, int))); + + alias Types = AliasSeq!(bool, byte, ubyte, short, ushort, int, uint, long, ulong, + char, wchar, dchar, float, double, real, Object); + alias Types2 = AliasSeq!(bool, ubyte, ushort, uint, ulong, wchar, float, real); + alias Types3 = AliasSeq!(bool, short, uint, char, float, Object); + alias Types4 = AliasSeq!(bool, ushort, ulong, float); + alias Types5 = AliasSeq!(bool, int, wchar, Object); + alias Types6 = AliasSeq!(bool, uint, float); + alias Types7 = AliasSeq!(bool, long, real); + alias Types8 = AliasSeq!(bool, ulong); + alias Types9 = AliasSeq!(bool, char); + alias Types10 = AliasSeq!(bool, wchar); + + static assert(is(Stride!(1, Types) == Types)); + static assert(is(Stride!(2, Types) == Types2)); + static assert(is(Stride!(3, Types) == Types3)); + static assert(is(Stride!(4, Types) == Types4)); + static assert(is(Stride!(5, Types) == Types5)); + static assert(is(Stride!(6, Types) == Types6)); + static assert(is(Stride!(7, Types) == Types7)); + static assert(is(Stride!(8, Types) == Types8)); + static assert(is(Stride!(9, Types) == Types9)); + static assert(is(Stride!(10, Types) == Types10)); + + static assert(is(Stride!(-1, Types) == Reverse!Types)); + static assert(is(Stride!(-2, Types) == Stride!(2, Reverse!Types))); + static assert(is(Stride!(-3, Types) == Stride!(3, Reverse!Types))); + static assert(is(Stride!(-4, Types) == Stride!(4, Reverse!Types))); + static assert(is(Stride!(-5, Types) == Stride!(5, Reverse!Types))); + static assert(is(Stride!(-6, Types) == Stride!(6, Reverse!Types))); + static assert(is(Stride!(-7, Types) == Stride!(7, Reverse!Types))); + static assert(is(Stride!(-8, Types) == Stride!(8, Reverse!Types))); + static assert(is(Stride!(-9, Types) == Stride!(9, Reverse!Types))); + static assert(is(Stride!(-10, Types) == Stride!(10, Reverse!Types))); +} + +/++ + Evaluates to an $(LREF AliasSeq) which contains no duplicate elements. + + Unique takes a binary template predicate that it uses to compare elements + for equality. If the predicate is $(D true) when an element in the given + $(LREF AliasSeq) is compared with an element with a lower index, then that + element is not included in the result (so if any elements in the + $(LREF AliasSeq) are considered equal per the predicate, then only the + first one is included in the result). + + Note that the binary predicate must be partially instantiable, e.g. + --- + alias PartialCmp = Cmp!(Args[0]); + enum same = PartialCmp!(Args[1]); + --- + Otherwise, it won't work. + + See_Also: + $(REF isSameSymbol, phobos, sys, traits) + $(REF isSameType, phobos, sys, traits) + +/ +template Unique(alias Cmp, Args...) +{ + alias Unique = AliasSeq!(); + static foreach (i, Arg; Args) + { + static if (i == 0) + Unique = AliasSeq!Arg; + else + Unique = AppendIfUnique!(Cmp, Unique, Arg); + } +} + +// Unfortunately, this can't be done in-place in Unique, because then we get +// errors about reassigning Unique after reading it. +private template AppendIfUnique(alias Cmp, Args...) +{ + static if (indexOf!(Cmp!(Args[$ - 1]), Args[0 .. $ - 1]) == -1) + alias AppendIfUnique = Args; + else + alias AppendIfUnique = Args[0 .. $ - 1]; +} + +/// +@safe unittest +{ + import phobos.sys.traits : isSameType; + + alias Types1 = AliasSeq!(int, long, long, int, int, float, int); + + static assert(is(Unique!(isSameType, Types1) == + AliasSeq!(int, long, float))); + + alias Types2 = AliasSeq!(byte, ubyte, short, ushort, int, uint); + static assert(is(Unique!(isSameType, Types2) == Types2)); + + // Empty AliasSeq. + static assert(Unique!isSameType.length == 0); + + // An AliasSeq with a single element works as well. + static assert(Unique!(isSameType, int).length == 1); +} + +/// +@safe unittest +{ + import phobos.sys.traits : isSameSymbol; + + int i; + string s; + real r; + alias Symbols = AliasSeq!(i, s, i, i, s, r, r, i); + + alias Result = Unique!(isSameSymbol, Symbols); + static assert(Result.length == 3); + static assert(__traits(isSame, Result[0], i)); + static assert(__traits(isSame, Result[1], s)); + static assert(__traits(isSame, Result[2], r)); + + // Comparing AliasSeqs for equality with is expressions only works + // if they only contain types. + static assert(!is(Symbols == Result)); +} + +/// +@safe unittest +{ + alias Types = AliasSeq!(int, uint, long, string, short, int*, ushort); + + template sameSize(T) + { + enum sameSize(U) = T.sizeof == U.sizeof; + } + static assert(is(Unique!(sameSize, Types) == + AliasSeq!(int, long, string, short))); + + // The predicate must be partially instantiable. + enum sameSize_fails(T, U) = T.sizeof == U.sizeof; + static assert(!__traits(compiles, Unique!(sameSize_fails, Types))); +} + /++ Map takes a template and applies it to every element in the given $(D AliasSeq), resulting in an $(D AliasSeq) with the transformed elements. @@ -396,7 +596,7 @@ else } /++ - Returns the index of the first element where $(D Pred!(Args[i])) is + Evaluates to the index of the first element where $(D Pred!(Args[i])) is $(D true). If $(D Pred!(Args[i])) is not $(D true) for any elements, then the result From afb0b3485b918e97caff0476f2e60e1d936aafeb Mon Sep 17 00:00:00 2001 From: MrcSnm Date: Wed, 27 Mar 2024 14:54:10 -0300 Subject: [PATCH 230/327] Fix Bugzilla Issue 24458 - Mac M3 associative array keys on std.net.curl gets overwritten --- std/net/curl.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/std/net/curl.d b/std/net/curl.d index 6aec366c657..536d0d1d64b 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -2449,6 +2449,8 @@ struct HTTP auto m = header.findSplit(": "); auto fieldName = m[0].toLower(); + ///Fixes https://issues.dlang.org/show_bug.cgi?id=24458 + fieldName = fieldName.idup; auto fieldContent = m[2].chomp; if (fieldName == "content-type") { From 4d332baad1a053d8aa67ff3cff80f7787182cbe7 Mon Sep 17 00:00:00 2001 From: MrcSnm Date: Sun, 31 Mar 2024 15:54:23 -0300 Subject: [PATCH 231/327] Fix Bugzilla Issue 24458 - Mac M3 associative array keys on std.net.curl gets overwritten --- std/net/curl.d | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/std/net/curl.d b/std/net/curl.d index 536d0d1d64b..3f823013e65 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -2422,6 +2422,7 @@ struct HTTP import std.algorithm.searching : findSplit, startsWith; import std.string : indexOf, chomp; import std.uni : toLower; + import std.exception : assumeUnique; // Wrap incoming callback in order to separate http status line from // http headers. On redirected requests there may be several such @@ -2448,9 +2449,9 @@ struct HTTP } auto m = header.findSplit(": "); - auto fieldName = m[0].toLower(); + const(char)[] lowerFieldName = m[0].toLower(); ///Fixes https://issues.dlang.org/show_bug.cgi?id=24458 - fieldName = fieldName.idup; + string fieldName = lowerFieldName is m[0] ? lowerFieldName.idup : assumeUnique(lowerFieldName); auto fieldContent = m[2].chomp; if (fieldName == "content-type") { From 14b23633b762cfd7b03614dca4c6b0cafa1016e5 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sun, 31 Mar 2024 20:25:24 +0100 Subject: [PATCH 232/327] [std.traits] Improve FunctionTypeOf docs --- std/traits.d | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/std/traits.d b/std/traits.d index 2e7a4f6a30b..5ed37a1f418 100644 --- a/std/traits.d +++ b/std/traits.d @@ -2181,7 +2181,7 @@ if (isCallable!func) /** -Get the function type from a callable object `func`. +Get the function type from a callable object `func`, or from a function pointer/delegate type. Using builtin `typeof` on a property function yields the types of the property value, not of the property function itself. Still, @@ -2229,10 +2229,17 @@ if (isCallable!func) { class C { - int value() @property { return 0; } + int value() @property => 0; + static string opCall() => "hi"; } static assert(is( typeof(C.value) == int )); static assert(is( FunctionTypeOf!(C.value) == function )); + static assert(is( FunctionTypeOf!C == typeof(C.opCall) )); + + int function() fp; + alias IntFn = int(); + static assert(is( typeof(fp) == IntFn* )); + static assert(is( FunctionTypeOf!fp == IntFn )); } @system unittest From 9f735fd8bfb75e3e51b04b10e09ded57299b5700 Mon Sep 17 00:00:00 2001 From: Johan Engelen Date: Mon, 1 Apr 2024 14:54:59 +0200 Subject: [PATCH 233/327] Fix alignment of buffers in kernighan_ritchie unittests. --- .../allocator/building_blocks/kernighan_ritchie.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/experimental/allocator/building_blocks/kernighan_ritchie.d b/std/experimental/allocator/building_blocks/kernighan_ritchie.d index 6883d33adae..167cf1bc6bc 100644 --- a/std/experimental/allocator/building_blocks/kernighan_ritchie.d +++ b/std/experimental/allocator/building_blocks/kernighan_ritchie.d @@ -647,7 +647,7 @@ fronting the GC allocator. import std.experimental.allocator.gc_allocator : GCAllocator; import std.typecons : Ternary; // KRRegion fronting a general-purpose allocator - ubyte[1024 * 128] buf; + align(KRRegion!().alignment) ubyte[1024 * 128] buf; auto alloc = fallbackAllocator(KRRegion!()(buf), GCAllocator.instance); auto b = alloc.allocate(100); assert(b.length == 100); @@ -916,7 +916,7 @@ version (StdUnittest) @system unittest { import std.typecons : Ternary; - ubyte[1024] b; + align(KRRegion!().alignment) ubyte[1024] b; auto alloc = KRRegion!()(b); auto k = alloc.allocate(128); From 7858069343679401fea49a48bcaf965b7f22dde0 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 28 Mar 2024 19:48:40 -0600 Subject: [PATCH 234/327] Fix bugzilla #24465: Make Tuple work with copy constructors If there's a constructor that looks like a copy constructor except that it takes an rvalue instead of taking the argument by ref, then that type can't have a copy constructor, and one of Tuple's constructors was causing that problem. So, this fixes it so that it doesn't. --- std/typecons.d | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/std/typecons.d b/std/typecons.d index 5fac1c9cca4..460cd427ed0 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -559,6 +559,14 @@ private template isBuildableFrom(U) enum isBuildableFrom(T) = isBuildable!(T, U); } +private enum hasCopyCtor(T) = __traits(hasCopyConstructor, T); + +// T is expected to be an instantiation of Tuple. +private template noMemberHasCopyCtor(T) +{ + import std.meta : anySatisfy; + enum noMemberHasCopyCtor = !anySatisfy!(hasCopyCtor, T.Types); +} /** _Tuple of values, for example $(D Tuple!(int, string)) is a record that @@ -745,7 +753,8 @@ if (distinctFieldNames!(Specs)) * compatible with the target `Tuple`'s type. */ this(U)(U another) - if (areBuildCompatibleTuples!(typeof(this), U)) + if (areBuildCompatibleTuples!(typeof(this), U) && + (noMemberHasCopyCtor!(typeof(this)) || !is(Unqual!U == Unqual!(typeof(this))))) { field[] = another.field[]; } @@ -1655,6 +1664,42 @@ if (distinctFieldNames!(Specs)) Tuple!(MyStruct) t; } +// https://issues.dlang.org/show_bug.cgi?id=24465 +@safe unittest +{ + { + static struct S + { + this(ref return scope inout(S) rhs) scope @trusted inout pure nothrow {} + } + + static void foo(Tuple!S) + { + } + + Tuple!S t; + foo(t); + + auto t2 = Tuple!S(t); + } + + { + static struct S {} + Tuple!S t; + auto t2 = Tuple!S(t); + + // This can't be done if Tuple has a copy constructor, because it's not + // allowed to have an rvalue constructor at that point, and the + // compiler doesn't to something intelligent like transform it into a + // move instead. However, it has been legal with Tuple for a while + // (maybe even since it was first added) when the type doesn't have a + // copy constructor, so this is testing to make sure that the fix to + // make copy constructors work doesn't mess up the rvalue constructor + // when none of the Tuple's members have copy constructors. + auto t3 = Tuple!S(Tuple!S.init); + } +} + /** Creates a copy of a $(LREF Tuple) with its fields in _reverse order. From 92dc5a4e98591a0e6b0af4ff0f84f096fea09016 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Mon, 1 Apr 2024 20:12:41 +0000 Subject: [PATCH 235/327] purge changelog --- changelog/range_predicate_element.dd | 24 ------------------------ changelog/upgrade-unicode.dd | 20 -------------------- 2 files changed, 44 deletions(-) delete mode 100644 changelog/range_predicate_element.dd delete mode 100644 changelog/upgrade-unicode.dd diff --git a/changelog/range_predicate_element.dd b/changelog/range_predicate_element.dd deleted file mode 100644 index 570c561c206..00000000000 --- a/changelog/range_predicate_element.dd +++ /dev/null @@ -1,24 +0,0 @@ -`isForwardRange`, `isBidirectionalRange`, and `isRandomAccessRange` now take an optional element type - -In Phobos 2.106, an optional second template parameter was added to -`isInputRange` to enable conveniently checking a range's element type. Now, the -same parameter has been added to `isForwardRange`, `isBidirectionalRange`, and -`isRandomAccessRange`. - -As before, if a second type argument is passed to one of these templates, the -range's element type is checked to see if it is -$(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) -to the given type, and this additional check must pass in order for the -template to evaluate to `true`. - -Examples: ---- -// exact match -static assert( isForwardRange!(int[], int)); - -// match with qualifier conversion -static assert( isBidirectionalRange!(int[], const(int)); - -// not a match -static assert(!isRandomAccessRange!(int[], string)); ---- diff --git a/changelog/upgrade-unicode.dd b/changelog/upgrade-unicode.dd deleted file mode 100644 index 62b3c25fda8..00000000000 --- a/changelog/upgrade-unicode.dd +++ /dev/null @@ -1,20 +0,0 @@ -std.uni has been upgraded from Unicode 15.0.0 to 15.1.0 - -This Unicode update was released September 12, 2023. -See: https://www.unicode.org/versions/Unicode15.1.0/ - -``` -import std; - -void main() -{ - const alphaCount = iota(0, dchar.max).filter!(std.uni.isAlpha).walkLength; - writeln(alphaCount); - // formerly: 137765 - // now: 138387 - // 622 new dchars return true for `isAlpha` -} -``` - -The internal unicode tables (std/internal/unicode_tables.d) have also been changed to use hex strings instead of array literals, which makes them faster to import. -The exact speed up depends on your computer and D compiler, but it likely cuts between 30 and 100 milliseconds if you compile something which imports `std.string` or `std.uni`. From 8729740e3221cd6dcccdbbbb12b452d0ee9c1ee1 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Mon, 1 Apr 2024 23:52:32 +0200 Subject: [PATCH 236/327] Mark `endianToNativeImpl` `@trusted` --- std/bitmanip.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/bitmanip.d b/std/bitmanip.d index 3006d6337ad..717fa2dbb7b 100644 --- a/std/bitmanip.d +++ b/std/bitmanip.d @@ -3274,7 +3274,7 @@ if (canSwapEndianness!T && n == T.sizeof) assert(c == littleEndianToNative!dchar(swappedC)); } -private T endianToNativeImpl(bool swap, T, size_t n)(ubyte[n] val) @nogc nothrow pure @safe +private T endianToNativeImpl(bool swap, T, size_t n)(ubyte[n] val) @nogc nothrow pure @trusted if (__traits(isIntegral, T) && n == T.sizeof) { if (!__ctfe) From 08b6dd3f7a24ac94ffd5ae2541bccacb3048f757 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Tue, 2 Apr 2024 15:46:44 +0200 Subject: [PATCH 237/327] Fix bugzilla 24478 - std.csv array out of bounds when row size exceeds header --- std/csv.d | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/std/csv.d b/std/csv.d index 7f5c2b24c01..9ee9b5d5baf 100644 --- a/std/csv.d +++ b/std/csv.d @@ -175,6 +175,16 @@ class CSVException : Exception assert(ex.toString == "(Row: 1, Col: 2) Unexpected 'b' when converting from type string to type int"); } +// https://issues.dlang.org/show_bug.cgi?id=24478 +@safe unittest +{ + import std.exception : collectException; + import std.algorithm.searching : count; + string text = "A, B\n1, 2, 3"; + auto ex = collectException!CSVException(csvReader!(string[string])(text, null).count); + assert(ex.toString == "(Row: 1, Col: 3) row contains more values than header"); +} + @safe pure unittest { import std.string; @@ -1179,7 +1189,10 @@ public: { for (; !recordRange.empty; recordRange.popFront()) { - aa[header[_input.col-1]] = recordRange.front; + const i = _input.col - 1; + if (i >= header.length) + throw new CSVException("row contains more values than header", _input.row, _input.col); + aa[header[i]] = recordRange.front; } } catch (ConvException e) From 23e5d21d38462c9dd85a8007394b04e5ea9ce29c Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 5 Apr 2024 14:28:03 -0600 Subject: [PATCH 238/327] Add isEqual and EnumMembers to phobos.sys.traits. (#8970) EnumMembers is obviously needed and does the same thing as its std.traits counterpart. isEqual is new, and it really shouldn't be used in many circumstances, but it's needed in conjunction with Unique to be able to do what NoDuplicates from std.meta does when given an AliasSeq of enum members. So, if you need the list of enum members to have no duplicate values (e.g. when creating a final switch), then you would now do Unique!(isEqual, EnumMembers!E) instead of NoDuplicates!(EnumMembers!E). As part of isEqual's documentation, I added a list of examples which highlight the difference between operating on the list of enum members as an AliasSeq and operating on them as a dynamic array, since that's not something that's at all obvious - and it shows why you might need to use isEqual with Unique to weed out duplicate values instead of doing something like [EnumMembers!E].sort().unique() to weed them out. For documentation purposes, I just assumed that uniq would be renamed to unique, but the documentation can be fixed later if need be once we have the actual functions in Phobos v3. --- phobos/sys/traits.d | 312 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 312 insertions(+) diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 324b63bb23f..cfc2ac27425 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -60,11 +60,15 @@ $(LREF isStaticArray) $(LREF isUnsignedInteger) )) + $(TR $(TD Aggregate Type traits) $(TD + $(LREF EnumMembers) + )) $(TR $(TD Traits testing for type conversions) $(TD $(LREF isImplicitlyConvertible) $(LREF isQualifierConvertible) )) $(TR $(TD Traits for comparisons) $(TD + $(LREF isEqual) $(LREF isSameSymbol) $(LREF isSameType) )) @@ -1296,6 +1300,172 @@ enum isPointer(T) = is(T == U*, U); } } +/++ + Evaluates to an $(D AliasSeq) containing the members of an enum type. + + The elements of the $(D AliasSeq) are in the same order as they are in the + enum declaration. + + An enum can have multiple members with the same value, so if code needs the + enum values to be unique (e.g. if it's generating a switch statement from + them), then $(REF Unique, phobos, sys, meta) can be used to filter out the + duplicate values - e.g. $(D Unique!(isEqual, EnumMembers!E)). + +/ +template EnumMembers(E) +if (is(E == enum)) +{ + import phobos.sys.meta : AliasSeq; + + alias EnumMembers = AliasSeq!(); + static foreach (member; __traits(allMembers, E)) + EnumMembers = AliasSeq!(EnumMembers, __traits(getMember, E, member)); +} + +/// Create an array of enum values. +@safe unittest +{ + enum Sqrts : real + { + one = 1, + two = 1.41421, + three = 1.73205 + } + auto sqrts = [EnumMembers!Sqrts]; + assert(sqrts == [Sqrts.one, Sqrts.two, Sqrts.three]); +} + +/++ + A generic function $(D rank(v)) in the following example uses this template + for finding a member $(D e) in an enum type $(D E). + +/ +@safe unittest +{ + // Returns i if e is the i-th member of E. + static size_t rank(E)(E e) + if (is(E == enum)) + { + static foreach (i, member; EnumMembers!E) + { + if (e == member) + return i; + } + assert(0, "Not an enum member"); + } + + enum Mode + { + read = 1, + write = 2, + map = 4 + } + assert(rank(Mode.read) == 0); + assert(rank(Mode.write) == 1); + assert(rank(Mode.map) == 2); +} + +/// Use EnumMembers to generate a switch statement using static foreach. +@safe unittest +{ + static class Foo + { + string calledMethod; + void foo() @safe { calledMethod = "foo"; } + void bar() @safe { calledMethod = "bar"; } + void baz() @safe { calledMethod = "baz"; } + } + + enum FuncName : string { foo = "foo", bar = "bar", baz = "baz" } + + auto foo = new Foo; + + s: final switch (FuncName.bar) + { + static foreach (member; EnumMembers!FuncName) + { + // Generate a case for each enum value. + case member: + { + // Call foo.{enum value}(). + __traits(getMember, foo, member)(); + break s; + } + } + } + + // Since we passed FuncName.bar to the switch statement, the bar member + // function was called. + assert(foo.calledMethod == "bar"); +} + +@safe unittest +{ + { + enum A { a } + static assert([EnumMembers!A] == [A.a]); + enum B { a, b, c, d, e } + static assert([EnumMembers!B] == [B.a, B.b, B.c, B.d, B.e]); + } + { + enum A : string { a = "alpha", b = "beta" } + static assert([EnumMembers!A] == [A.a, A.b]); + + static struct S + { + int value; + int opCmp(S rhs) const nothrow { return value - rhs.value; } + } + enum B : S { a = S(1), b = S(2), c = S(3) } + static assert([EnumMembers!B] == [B.a, B.b, B.c]); + } + { + enum A { a = 0, b = 0, c = 1, d = 1, e } + static assert([EnumMembers!A] == [A.a, A.b, A.c, A.d, A.e]); + } + { + enum E { member, a = 0, b = 0 } + + static assert(__traits(isSame, EnumMembers!E[0], E.member)); + static assert(__traits(isSame, EnumMembers!E[1], E.a)); + static assert(__traits(isSame, EnumMembers!E[2], E.b)); + + static assert(__traits(identifier, EnumMembers!E[0]) == "member"); + static assert(__traits(identifier, EnumMembers!E[1]) == "a"); + static assert(__traits(identifier, EnumMembers!E[2]) == "b"); + } +} + +// https://issues.dlang.org/show_bug.cgi?id=14561: huge enums +@safe unittest +{ + static string genEnum() + { + string result = "enum TLAs {"; + foreach (c0; '0' .. '2' + 1) + { + foreach (c1; '0' .. '9' + 1) + { + foreach (c2; '0' .. '9' + 1) + { + foreach (c3; '0' .. '9' + 1) + { + result ~= '_'; + result ~= c0; + result ~= c1; + result ~= c2; + result ~= c3; + result ~= ','; + } + } + } + } + result ~= '}'; + return result; + } + mixin(genEnum); + static assert(EnumMembers!TLAs[0] == TLAs._0000); + static assert(EnumMembers!TLAs[$ - 1] == TLAs._2999); +} + /++ Whether the type $(D From) is implicitly convertible to the type $(D To). @@ -1705,6 +1875,146 @@ enum isQualifierConvertible(From, To) = is(immutable From == immutable To) && is } } +/++ + Whether the given values are equal per $(D ==). + + All this does is $(D lhs == rhs) but in an eponymous template, so most code + shouldn't use it. It's intended to be used in conjunction with templates + that take a template predicate - such as those in phobos.sys.meta. + + The single-argument overload makes it so that it can be partially + instantiated with the first argument, which will often be necessary with + template predicates. + + Note that in most cases, even when comparing values at compile time, using + isEqual makes no sense, because you can use CTFE to just compare two values + (or expressions which evaluate to values), but in rare cases where you need + to compare symbols in an $(D AliasSeq) by value with a template predicate + while still leaving them as symbols in an $(D AliasSeq), then isEqual would + be needed. + + A prime example of this would be $(D Unique!(isEqual, EnumMembers!MyEnum)), + which results in an $(D AliasSeq) containing the list of members of + $(D MyEnum) but without any duplicate values (e.g. to use when doing code + generation to create a final switch). + + Alternatively, code such as $(D [EnumMembers!MyEnum].sort().unique()) could + be used to get a dynamic array of the enum members with no duplicate values + via CTFE, thus avoiding the need for template predicates or anything from + phobos.sys.meta. However, you then have a dynamic array of enum values + rather than an $(D AliasSeq) of symbols for those enum members, which + affects what you can do with type introspection. So, which approach is + better depends on what the code needs to do with the enum members. + + In general, however, if code doesn't need an $(D AliasSeq), and an array of + values will do the trick, then it's more efficient to operate on an array of + values with CTFE and avoid using isEqual or other templates to operate on + the values as an $(D AliasSeq). + + See_Also: + $(LREF isSameSymbol) + $(LREF isSameType) + +/ +enum isEqual(alias lhs, alias rhs) = lhs == rhs; + +/++ Ditto +/ +template isEqual(alias lhs) +{ + enum isEqual(alias rhs) = lhs == rhs; +} + +/// It acts just like ==, but it's a template. +@safe unittest +{ + enum a = 42; + + static assert( isEqual!(a, 42)); + static assert( isEqual!(20, 10 + 10)); + + static assert(!isEqual!(a, 120)); + static assert(!isEqual!(77, 19 * 7 + 2)); + + // b cannot be read at compile time, so it won't work with isEqual. + int b = 99; + static assert(!__traits(compiles, isEqual!(b, 99))); +} + +/++ + Comparing some of the differences between an $(D AliasSeq) of enum members + and an array of enum values created from an $(D AliasSeq) of enum members. + +/ +@safe unittest +{ + import phobos.sys.meta : AliasSeq, Unique; + + enum E + { + a = 0, + b = 22, + c = 33, + d = 0, + e = 256, + f = 33, + g = 7 + } + + alias uniqueMembers = Unique!(isEqual, EnumMembers!E); + static assert(uniqueMembers.length == 5); + + static assert(__traits(isSame, uniqueMembers[0], E.a)); + static assert(__traits(isSame, uniqueMembers[1], E.b)); + static assert(__traits(isSame, uniqueMembers[2], E.c)); + static assert(__traits(isSame, uniqueMembers[3], E.e)); + static assert(__traits(isSame, uniqueMembers[4], E.g)); + + static assert(__traits(identifier, uniqueMembers[0]) == "a"); + static assert(__traits(identifier, uniqueMembers[1]) == "b"); + static assert(__traits(identifier, uniqueMembers[2]) == "c"); + static assert(__traits(identifier, uniqueMembers[3]) == "e"); + static assert(__traits(identifier, uniqueMembers[4]) == "g"); + + // Same value but different symbol. + static assert(uniqueMembers[0] == E.d); + static assert(!__traits(isSame, uniqueMembers[0], E.d)); + + // is expressions compare types, not symbols or values, and these AliasSeqs + // contain the list of symbols for the enum members, not types, so the is + // expression evaluates to false even though the symbols are the same. + static assert(!is(uniqueMembers == AliasSeq!(E.a, E.b, E.c, E.e, E.g))); + + // Once the members are converted to an array, the types are the same, and + // the values are the same, but the symbols are not the same. Instead of + // being the symbols E.a, E.b, etc., they're just values with the type E + // which match the values of E.a, E.b, etc. + enum arr = [uniqueMembers]; + static assert(is(typeof(arr) == E[])); + + static assert(arr == [E.a, E.b, E.c, E.e, E.g]); + static assert(arr == [E.d, E.b, E.f, E.e, E.g]); + + static assert(!__traits(isSame, arr[0], E.a)); + static assert(!__traits(isSame, arr[1], E.b)); + static assert(!__traits(isSame, arr[2], E.c)); + static assert(!__traits(isSame, arr[3], E.e)); + static assert(!__traits(isSame, arr[4], E.g)); + + // Since arr[0] is just a value of type E, it's no longer the symbol, E.a, + // even though its type is E, and its value is the same as that of E.a. And + // unlike the actual members of an enum, an element of an array does not + // have an identifier, so __traits(identifier, ...) doesn't work with it. + static assert(!__traits(compiles, __traits(identifier, arr[0]))); + + // Similarly, once an enum member from the AliasSeq is assigned to a + // variable, __traits(identifer, ...) operates on the variable, not the + // symbol from the AliasSeq or the value of the variable. + auto var = uniqueMembers[0]; + static assert(__traits(identifier, var) == "var"); + + // The same with a manifest constant. + enum constant = uniqueMembers[0]; + static assert(__traits(identifier, constant) == "constant"); +} + /++ Whether the given symbols are the same symbol. @@ -1718,6 +2028,7 @@ enum isQualifierConvertible(From, To) = is(immutable From == immutable To) && is See_Also: $(DDSUBLINK spec/traits, isSame, $(D __traits(isSame, lhs, rhs))) + $(LREF isEqual) $(LREF isSameType) +/ enum isSameSymbol(alias lhs, alias rhs) = __traits(isSame, lhs, rhs); @@ -1798,6 +2109,7 @@ template isSameSymbol(alias lhs) template predicates. See_Also: + $(LREF isEqual) $(LREF isSameSymbol) +/ enum isSameType(T, U) = is(T == U); From aeace12de6f6a4e9ab96c7ed52b5f6fcd91e740f Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Sun, 7 Apr 2024 08:34:39 -0600 Subject: [PATCH 239/327] Add lvalueOf and rvalueOf to phobos.sys.traits. These are straight from std.traits but with improvements to the documentation and unit tests. The __InoutWorkaroundStruct bit is kind of ugly, but it does seem to be necessary due to how inout works. --- phobos/sys/traits.d | 99 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 92 insertions(+), 7 deletions(-) diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index cfc2ac27425..5619a49c3b7 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -68,9 +68,9 @@ $(LREF isQualifierConvertible) )) $(TR $(TD Traits for comparisons) $(TD - $(LREF isEqual) - $(LREF isSameSymbol) - $(LREF isSameType) + $(LREF isEqual) + $(LREF isSameSymbol) + $(LREF isSameType) )) $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF Unconst) @@ -78,10 +78,14 @@ $(LREF Unqualified) )) $(TR $(TD Type Constructors) $(TD - $(LREF ConstOf) - $(LREF ImmutableOf) - $(LREF InoutOf) - $(LREF SharedOf) + $(LREF ConstOf) + $(LREF ImmutableOf) + $(LREF InoutOf) + $(LREF SharedOf) + )) + $(TR $(TD Misc) $(TD + $(LREF lvalueOf) + $(LREF rvalueOf) )) ) @@ -2658,3 +2662,84 @@ alias SharedOf(T) = shared T; shared(bool*), shared(ubyte[]), shared(string), immutable(string)))); } + +// Needed for rvalueOf/lvalueOf because +// "inout on return means inout must be on a parameter as well" +private struct __InoutWorkaroundStruct {} + +/++ + Creates an lvalue or rvalue of type T to be used in conjunction with + $(D is(typeof(...))) or + $(DDSUBLINK spec/traits, compiles, $(D __traits(compiles, ...))). + + The idea is that some traits or other forms of conditional compilation need + to verify that a particular piece of code compiles with an rvalue or an + lvalue of a specific type, and these $(D @property) functions allow you to + get an rvalue or lvalue of a specific type to use within an expression that + is then tested to see whether it compiles. + + They're $(D @property) functions so that using $(D typeof) on them gives + the return type rather than the type of the function. + + Note that these functions are $(I not) defined, so if they're actually used + outside of type introspection, they'll result in linker errors. They're + entirely for testing that a particular piece of code compiles with an rvalue + or lvalue of the given type. + + The $(D __InoutWorkaroundStruct) parameter is entirely to make it so that + these work when the given type has the $(D inout) qualifier, since the + language requires that a function that returns an $(D inout) type also have + an $(D inout) type as a parameter. It should just be ignored. + +/ +@property T rvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); + +/++ Ditto +/ +@property ref T lvalueOf(T)(inout __InoutWorkaroundStruct = __InoutWorkaroundStruct.init); + +/// +@safe unittest +{ + static int foo(int); + static assert(is(typeof(foo(lvalueOf!int)) == int)); + static assert(is(typeof(foo(rvalueOf!int)) == int)); + + static bool bar(ref int); + static assert(is(typeof(bar(lvalueOf!int)) == bool)); + static assert(!is(typeof(bar(rvalueOf!int)))); + + static assert( is(typeof({ lvalueOf!int = 42; }))); + static assert(!is(typeof({ rvalueOf!int = 42; }))); + + static struct S {} + static assert( is(typeof({ lvalueOf!S = S.init; }))); + static assert(!is(typeof({ rvalueOf!S = S.init; }))); + + static struct NoAssign + { + @disable void opAssign(ref NoAssign); + } + static assert(!is(typeof({ lvalueOf!NoAssign = NoAssign.init; }))); + static assert(!is(typeof({ rvalueOf!NoAssign = NoAssign.init; }))); +} + +@system unittest +{ + import phobos.sys.meta : AliasSeq; + + void needLvalue(T)(ref T); + static struct S {} + int i; + struct Nested { void f() { ++i; } } + + static foreach (T; AliasSeq!(int, const int, immutable int, inout int, string, S, Nested, Object)) + { + static assert(!__traits(compiles, needLvalue(rvalueOf!T))); + static assert( __traits(compiles, needLvalue(lvalueOf!T))); + static assert(is(typeof(rvalueOf!T) == T)); + static assert(is(typeof(lvalueOf!T) == T)); + } + + static assert(!__traits(compiles, rvalueOf!int = 1)); + static assert( __traits(compiles, lvalueOf!byte = 127)); + static assert(!__traits(compiles, lvalueOf!byte = 128)); +} From 95a9d9f1227866e526ebe4f6c2b6fedf578bc8d3 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Sat, 6 Apr 2024 07:12:50 -0600 Subject: [PATCH 240/327] Adds Instantiate, ApplyLeft, and ApplyRight to phobos.sys.meta. This also makes it so that isImplicitlyConvertible and isQualifierConvertible in phobos.sys.traits can be partially instantiated, since I missed that before. Instantiate is basically identical to the one in std.meta implementation-wise, but the documentation and unit tests have been improved. ApplyLeft and ApplyRight should be functionally the same as their std.meta counterparts, but they have a simpler implementation than their std.meta counterparts (I'm pretty sure that the extra complexity in the old implementation is to work around built-in types not working with aliases, which was fixed a while ago). Of course, their documentation and tests have also been improved. --- phobos/sys/meta.d | 329 ++++++++++++++++++++++++++++++++++++++++++++ phobos/sys/traits.d | 56 +++++++- 2 files changed, 384 insertions(+), 1 deletion(-) diff --git a/phobos/sys/meta.d b/phobos/sys/meta.d index e28a4d1c1ce..9abab19568d 100644 --- a/phobos/sys/meta.d +++ b/phobos/sys/meta.d @@ -67,6 +67,11 @@ $(LREF any) $(LREF indexOf) )) + $(TR $(TD Template instantiation) $(TD + $(LREF ApplyLeft) + $(LREF ApplyRight) + $(LREF Instantiate) + )) ) References: @@ -672,3 +677,327 @@ unittest static assert(indexOf!(isSameType!string, int, int, int, string) == 3); static assert(indexOf!(isSameType!string, int, int, int, int) == -1); } + +/++ + Instantiates the given template with the given arguments and evaluates to + the result of that template. + + This is used to work around some syntactic limitations that D has with + regards to instantiating templates. Essentially, D requires a name for a + template when instantiating it (be it the name of the template itself or an + alias to the template), which causes problems when you don't have that. + + Specifically, if the template is within an $(LREF AliasSeq) - e.g. + $(D Templates[0]!Args) - or it's the result of another template - e.g + $(D Foo!Bar!Baz) - the instantiation is illegal. This leaves two ways to + solve the problem. The first is to create an alias, e.g. + --- + alias Template = Templates[0]; + enum result = Template!Args; + + alias Partial = Foo!Bar; + alias T = Partial!Baz; + --- + The second is to use Instantiate, e.g. + --- + enum result = Instantiate!(Templates[0], Args); + + alias T = Instiantiate!(Foo!Bar, Baz); + --- + + Of course, the downside to this is that it adds an additional template + instantiation, but it avoids creating an alias just to be able to + instantiate a template. So, whether it makes sense to use Instantiate + instead of an alias naturally depends on the situation, but without it, + we'd be forced to create aliases even in situations where that's + problematic. + + See_Also: + $(LREF ApplyLeft) + $(LREF ApplyRight) + +/ +alias Instantiate(alias Template, Args...) = Template!Args; + +/// +@safe unittest +{ + import phobos.sys.traits : ConstOf, isImplicitlyConvertible, isSameType, isInteger; + + alias Templates = AliasSeq!(isImplicitlyConvertible!int, + isSameType!string, + isInteger, + ConstOf); + + // Templates[0]!long does not compile, because the compiler can't parse it. + + static assert( Instantiate!(Templates[0], long)); + static assert(!Instantiate!(Templates[0], string)); + + static assert(!Instantiate!(Templates[1], long)); + static assert( Instantiate!(Templates[1], string)); + + static assert( Instantiate!(Templates[2], long)); + static assert(!Instantiate!(Templates[2], string)); + + static assert(is(Instantiate!(Templates[3], int) == const int)); + static assert(is(Instantiate!(Templates[3], double) == const double)); +} + +/// +@safe unittest +{ + template hasMember(string member) + { + enum hasMember(T) = __traits(hasMember, T, member); + } + + struct S + { + int foo; + } + + // hasMember!"foo"!S does not compile, + // because having multiple ! arguments is not allowed. + + static assert( Instantiate!(hasMember!"foo", S)); + static assert(!Instantiate!(hasMember!"bar", S)); +} + +/++ + Instantiate also allows us to do template instantations via templates that + take other templates as arguments. + +/ +@safe unittest +{ + import phobos.sys.traits : isInteger, isNumeric, isUnsignedInteger; + + alias Results = Map!(ApplyRight!(Instantiate, int), + isInteger, isNumeric, isUnsignedInteger); + + static assert([Results] == [true, true, false]); +} + +/++ + ApplyLeft does a + $(LINK2 http://en.wikipedia.org/wiki/Partial_application, partial application) + of its arguments, providing a way to bind a set of arguments to the given + template while delaying actually instantiating that template until the full + set of arguments is provided. The "Left" in the name indicates that the + initial arguments are one the left-hand side of the argument list + when the given template is instantiated. + + Essentially, ApplyLeft results in a template that stores Template and Args, + and when that intermediate template is instantiated in turn, it instantiates + Template with Args on the left-hand side of the arguments to Template and + with the arguments to the intermediate template on the right-hand side - + i.e. Args is applied to the left when instantiating Template. + + So, if you have + --- + alias Intermediate = ApplyLeft!(MyTemplate, Arg1, Arg2); + alias Result = Intermediate!(ArgA, ArgB); + --- + then that is equivalent to + --- + alias Result = MyTemplate!(Arg1, Arg2, ArgA, ArgB); + --- + with the difference being that you have an intermediate template which can + be stored or passed to other templates (e.g. as a template predicate). + + The only difference between ApplyLeft and $(LREF ApplyRight) is whether + Args is on the left-hand or the right-hand side of the arguments given to + Template when it's instantiated. + + Note that in many cases, the need for ApplyLeft can be eliminated by making + it so that Template can be partially instantiated. E.G. + --- + enum isSameType(T, U) = is(T == U); + + template isSameType(T) + { + enum isSameType(U) = is(T == U); + } + --- + makes it so that both of these work + --- + enum result1 = isSameType!(int, long); + + alias Intermediate = isSameType!int; + enum result2 = Intermediate!long; + --- + whereas if only the two argument version is provided, then ApplyLeft would + be required for the second use case. + --- + enum result1 = isSameType!(int, long); + + alias Intermediate = ApplyLeft!(isSameType, int); + enum result2 = Intermediate!long; + --- + + See_Also: + $(LREF ApplyRight) + $(LREF Instantiate) + +/ +template ApplyLeft(alias Template, Args...) +{ + alias ApplyLeft(Right...) = Template!(Args, Right); +} + +/// +@safe unittest +{ + { + alias Intermediate = ApplyLeft!(AliasSeq, ubyte, ushort, uint); + alias Result = Intermediate!(char, wchar, dchar); + static assert(is(Result == AliasSeq!(ubyte, ushort, uint, char, wchar, dchar))); + } + { + enum isImplicitlyConvertible(T, U) = is(T : U); + + // i.e. isImplicitlyConvertible!(ubyte, T) is what all is checking for + // with each element in the AliasSeq. + static assert(all!(ApplyLeft!(isImplicitlyConvertible, ubyte), + short, ushort, int, uint, long, ulong)); + } + { + enum hasMember(T, string member) = __traits(hasMember, T, member); + + struct S + { + bool foo; + int bar; + string baz; + } + + static assert(all!(ApplyLeft!(hasMember, S), "foo", "bar", "baz")); + } + { + // Either set of arguments can be empty, since the first set is just + // stored to be applied later, and then when the intermediate template + // is instantiated, they're all applied to the given template in the + // requested order. However, whether the code compiles when + // instantiating the intermediate template depends on what kinds of + // arguments the given template requires. + + alias Intermediate1 = ApplyLeft!AliasSeq; + static assert(Intermediate1!().length == 0); + + enum isSameSize(T, U) = T.sizeof == U.sizeof; + + alias Intermediate2 = ApplyLeft!(isSameSize, int); + static assert(Intermediate2!uint); + + alias Intermediate3 = ApplyLeft!(isSameSize, int, uint); + static assert(Intermediate3!()); + + alias Intermediate4 = ApplyLeft!(isSameSize); + static assert(Intermediate4!(int, uint)); + + // isSameSize requires two arguments + alias Intermediate5 = ApplyLeft!isSameSize; + static assert(!__traits(compiles, Intermediate5!())); + static assert(!__traits(compiles, Intermediate5!int)); + static assert(!__traits(compiles, Intermediate5!(int, long, string))); + } +} + +/++ + ApplyRight does a + $(LINK2 http://en.wikipedia.org/wiki/Partial_application, partial application) + of its arguments, providing a way to bind a set of arguments to the given + template while delaying actually instantiating that template until the full + set of arguments is provided. The "Right" in the name indicates that the + initial arguments are one the right-hand side of the argument list + when the given template is instantiated. + + Essentially, ApplyRight results in a template that stores Template and + Args, and when that intermediate template is instantiated in turn, it + instantiates Template with the arguments to the intermediate template on + the left-hand side and with Args on the right-hand side - i.e. Args is + applied to the right when instantiating Template. + + So, if you have + --- + alias Intermediate = ApplyRight!(MyTemplate, Arg1, Arg2); + alias Result = Intermediate!(ArgA, ArgB); + --- + then that is equivalent to + --- + alias Result = MyTemplate!(ArgA, ArgB, Arg1, Arg2); + --- + with the difference being that you have an intermediate template which can + be stored or passed to other templates (e.g. as a template predicate). + + The only difference between $(LREF ApplyLeft) and ApplyRight is whether + Args is on the left-hand or the right-hand side of the arguments given to + Template when it's instantiated. + + See_Also: + $(LREF ApplyLeft) + $(LREF Instantiate) + +/ +template ApplyRight(alias Template, Args...) +{ + alias ApplyRight(Left...) = Template!(Left, Args); +} + +/// +@safe unittest +{ + { + alias Intermediate = ApplyRight!(AliasSeq, ubyte, ushort, uint); + alias Result = Intermediate!(char, wchar, dchar); + static assert(is(Result == AliasSeq!(char, wchar, dchar, ubyte, ushort, uint))); + } + { + enum isImplicitlyConvertible(T, U) = is(T : U); + + // i.e. isImplicitlyConvertible!(T, short) is what Filter is checking + // for with each element in the AliasSeq. + static assert(is(Filter!(ApplyRight!(isImplicitlyConvertible, short), + ubyte, string, short, float, int) == + AliasSeq!(ubyte, short))); + } + { + enum hasMember(T, string member) = __traits(hasMember, T, member); + + struct S1 + { + bool foo; + } + + struct S2 + { + int foo() { return 42; } + } + + static assert(all!(ApplyRight!(hasMember, "foo"), S1, S2)); + } + { + // Either set of arguments can be empty, since the first set is just + // stored to be applied later, and then when the intermediate template + // is instantiated, they're all applied to the given template in the + // requested order. However, whether the code compiles when + // instantiating the intermediate template depends on what kinds of + // arguments the given template requires. + + alias Intermediate1 = ApplyRight!AliasSeq; + static assert(Intermediate1!().length == 0); + + enum isSameSize(T, U) = T.sizeof == U.sizeof; + + alias Intermediate2 = ApplyRight!(isSameSize, int); + static assert(Intermediate2!uint); + + alias Intermediate3 = ApplyRight!(isSameSize, int, uint); + static assert(Intermediate3!()); + + alias Intermediate4 = ApplyRight!(isSameSize); + static assert(Intermediate4!(int, uint)); + + // isSameSize requires two arguments + alias Intermediate5 = ApplyRight!isSameSize; + static assert(!__traits(compiles, Intermediate5!())); + static assert(!__traits(compiles, Intermediate5!int)); + } +} diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 5619a49c3b7..828ac36dbfc 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -1496,6 +1496,10 @@ if (is(E == enum)) used in conjunction with templates that use a template predicate (such as many of the templates in phobos.sys.meta). + The single-argument overload makes it so that it can be partially + instantiated with the first argument, which will often be necessary with + template predicates. + See_Also: $(DDSUBLINK dlang.org/spec/type, implicit-conversions, Spec on implicit conversions) $(DDSUBLINK spec/const3, implicit_qualifier_conversions, Spec for implicit qualifier conversions) @@ -1503,6 +1507,12 @@ if (is(E == enum)) +/ enum isImplicitlyConvertible(From, To) = is(From : To); +/++ Ditto +/ +template isImplicitlyConvertible(From) +{ + enum isImplicitlyConvertible(To) = is(From : To); +} + /// @safe unittest { @@ -1706,6 +1716,23 @@ enum isImplicitlyConvertible(From, To) = is(From : To); static assert(!isImplicitlyConvertible!(const Base[], immutable Base[])); } +/++ + isImplicitlyConvertible can be used with partial instantiation so that it + can be passed to a template which takes a unary predicate. + +/ +@safe unittest +{ + import phobos.sys.meta : AliasSeq, all, indexOf; + + // byte is implicitly convertible to byte, short, int, and long. + static assert(all!(isImplicitlyConvertible!byte, short, int, long)); + + // const(char)[] at index 2 is the first type in the AliasSeq which string + // can be implicitly converted to. + alias Types = AliasSeq!(int, char[], const(char)[], string, int*); + static assert(indexOf!(isImplicitlyConvertible!string, Types) == 2); +} + /++ Whether $(D From) is $(DDSUBLINK spec/const3, implicit_qualifier_conversions, qualifier-convertible) @@ -1750,12 +1777,22 @@ enum isImplicitlyConvertible(From, To) = is(From : To); to $(D const char) rather than just $(D char), $(D const char), and $(D immutable char). + The single-argument overload makes it so that it can be partially + instantiated with the first argument, which will often be necessary with + template predicates. + See_Also: $(DDSUBLINK spec/const3, implicit_qualifier_conversions, Spec for implicit qualifier conversions) $(LREF isImplicitlyConvertible) +/ enum isQualifierConvertible(From, To) = is(immutable From == immutable To) && is(From* : To*); +/++ Ditto +/ +template isQualifierConvertible(From) +{ + enum isQualifierConvertible(To) = is(immutable From == immutable To) && is(From* : To*); +} + /// @safe unittest { @@ -1794,7 +1831,7 @@ enum isQualifierConvertible(From, To) = is(immutable From == immutable To) && is static assert( isQualifierConvertible!(inout int, const int)); static assert(!isQualifierConvertible!(inout int, immutable int)); - // shared is of course also a qualifer. + // shared is of course also a qualifier. static assert(!isQualifierConvertible!(int, shared int)); static assert(!isQualifierConvertible!(int, const shared int)); static assert(!isQualifierConvertible!(const int, shared int)); @@ -1846,6 +1883,23 @@ enum isQualifierConvertible(From, To) = is(immutable From == immutable To) && is static assert(!isQualifierConvertible!(string, const(ubyte)[])); } +/++ + isQualifierConvertible can be used with partial instantiation so that it + can be passed to a template which takes a unary predicate. + +/ +@safe unittest +{ + import phobos.sys.meta : AliasSeq, all, indexOf; + + // byte is qualifier convertible to byte and const byte. + static assert(all!(isQualifierConvertible!byte, byte, const byte)); + + // const(char[]) at index 2 is the first type in the AliasSeq which string + // is qualifier convertible to. + alias Types = AliasSeq!(int, char[], const(char[]), string, int*); + static assert(indexOf!(isQualifierConvertible!string, Types) == 2); +} + @safe unittest { import phobos.sys.meta : AliasSeq; From fc7273b0a38dead8433d5d352b99b8de0d844859 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Mon, 8 Apr 2024 23:19:41 -0600 Subject: [PATCH 241/327] Remove dscanner check for const/immutable variables in unit tests. This appears to be the check which is making https://github.com/dlang/phobos/pull/8924 fail the style check with warnings such as std/internal/test/range.d(43:14)[warn]: Variable b is never modified and could have been declared const or immutable. It makes no sense to require that unit tests follow such a rule, and it is actually detrimental when tests involve stuff like copy constructors, because then the type of the target variable matters as part of the test. Honestly, I think that it should probably not be checked at all, since it's a pretty questionable requirement in many cases given how strict D's const and immutable are, but that's more debatable, whereas this check really makes no sense with unit tests, so I'm just disabling it for unit tests for now. We can disable it more generally later if it turns out that it's causing problems for normal code. --- .dscanner.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dscanner.ini b/.dscanner.ini index 1e57b92b57d..5f936444735 100644 --- a/.dscanner.ini +++ b/.dscanner.ini @@ -52,7 +52,7 @@ comma_expression_check="enabled" ; Checks for local imports that are too broad local_import_check="skip-unittest" ; Checks for variables that could be declared immutable -could_be_immutable_check="enabled" +could_be_immutable_check="skip-unittest" ; Checks for redundant expressions in if statements redundant_if_check="enabled" ; Checks for redundant parenthesis From 34ff27e58d83e7a6135af56af2eb34ba3a6d7252 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Mon, 26 Feb 2024 10:30:28 -0700 Subject: [PATCH 242/327] Work around bugzilla issue 24415 - only doesn't work with elements with a copy constructor. Since the compiler is treating the auto-generated copy-constructor for OnlyResult as private (thus rendering it useless outside of std.range.package), this commit adds an explicit one and makes it public. Once the dmd bug has been fixed, the explicit copy constructor should be removed. --- std/internal/test/range.d | 91 +++++++++++++++++++++++++++++++++++++++ std/range/package.d | 8 ++++ 2 files changed, 99 insertions(+) diff --git a/std/internal/test/range.d b/std/internal/test/range.d index 6aa9676abf1..4a5ff721d19 100644 --- a/std/internal/test/range.d +++ b/std/internal/test/range.d @@ -23,3 +23,94 @@ module std.internal.test.range; auto r = R().chunks(3); assert(r.equal!equal([[ 0, 1, 2 ], [ 3, 4 ]])); } + +// https://issues.dlang.org/show_bug.cgi?id=24415 +@safe unittest +{ + import std.range : only; + + static struct S(T) + { + T i; + + this(ref return scope inout(S) rhs) scope @safe inout pure nothrow + { + i = rhs.i; + } + } + { + auto a = only(S!int(42)); + auto b = a; + assert(!b.empty); + assert(b.front == S!int(42)); + + a.popFront(); + auto c = a; + assert(c.empty); + } + { + auto a = only(S!(const int)(42)); + auto b = a; + assert(!b.empty); + assert(b.front == S!(const int)(42)); + + a.popFront(); + auto c = a; + assert(c.empty); + } + { + auto a = only(S!(immutable int)(42)); + auto b = a; + assert(!b.empty); + assert(b.front == S!(immutable int)(42)); + + a.popFront(); + auto c = a; + assert(c.empty); + } + { + auto a = only(S!int(42), S!int(192)); + auto b = a; + assert(!b.empty); + assert(b.front == S!int(42)); + + a.popFront(); + auto c = a; + assert(!c.empty); + assert(c.front == S!int(192)); + + a.popFront(); + auto d = a; + assert(d.empty); + } + { + auto a = only(S!(const int)(42), S!(const int)(192)); + auto b = a; + assert(!b.empty); + assert(b.front == S!(const int)(42)); + + a.popFront(); + auto c = a; + assert(!c.empty); + assert(c.front == S!(const int)(192)); + + a.popFront(); + auto d = a; + assert(d.empty); + } + { + auto a = only(S!(immutable int)(42), S!(immutable int)(192)); + auto b = a; + assert(!b.empty); + assert(b.front == S!(immutable int)(42)); + + a.popFront(); + auto c = a; + assert(!c.empty); + assert(c.front == S!(immutable int)(192)); + + a.popFront(); + auto d = a; + assert(d.empty); + } +} diff --git a/std/range/package.d b/std/range/package.d index 30f6ffb9f44..a2f5cc498c1 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -10375,6 +10375,14 @@ private struct OnlyResult(T) } alias opDollar = length; + // FIXME Workaround for https://issues.dlang.org/show_bug.cgi?id=24415 + import std.traits : hasElaborateCopyConstructor; + static if (hasElaborateCopyConstructor!T) + { + private static struct WorkaroundBugzilla24415 {} + public this()(WorkaroundBugzilla24415) {} + } + private this()(return scope auto ref T value) { ref @trusted unqual(ref T x){return cast() x;} From 0663564600edb3cce6e0925599ebe8a6da8c20fd Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Tue, 9 Apr 2024 04:20:12 -0600 Subject: [PATCH 243/327] Add And, Not, and Or to phobos.sys.meta. (#8977) These correspond to templateAnd, templateNot, and templateOr from std.meta. The names have been shortened and made PascalCase to make them consistent with our normal naming rules. It's PascalCase rather than camelCase, because the result is a template rather than a value, and we don't normally prefix symbols with "template" just because they're templates. The implementation of Not is unchanged. However, unlike their std.meta counterparts, And and Or do not short-circuit their evaluation. This makes them consistent with the rest of phobos.sys.meta (whereas std.meta is inconsistent about whether its templates short-circuit their evaluation), but it's also because they're implemented to be iterative rather than recursive, which should make them more efficient. --- phobos/sys/meta.d | 256 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 254 insertions(+), 2 deletions(-) diff --git a/phobos/sys/meta.d b/phobos/sys/meta.d index 9abab19568d..1c31b67a72f 100644 --- a/phobos/sys/meta.d +++ b/phobos/sys/meta.d @@ -50,8 +50,8 @@ $(BOOKTABLE , $(TR $(TH Category) $(TH Templates)) $(TR $(TD Building blocks) $(TD - $(LREF Alias) - $(LREF AliasSeq) + $(LREF Alias) + $(LREF AliasSeq) )) $(TR $(TD Alias sequence filtering) $(TD $(LREF Filter) @@ -67,6 +67,11 @@ $(LREF any) $(LREF indexOf) )) + $(TR $(TD Template predicates) $(TD + $(LREF And) + $(LREF Not) + $(LREF Or) + )) $(TR $(TD Template instantiation) $(TD $(LREF ApplyLeft) $(LREF ApplyRight) @@ -678,6 +683,253 @@ unittest static assert(indexOf!(isSameType!string, int, int, int, int) == -1); } +/++ + Combines multiple template predicates into a single template predicate using + logical AND - i.e. for the resulting predicate to be $(D true) with a + particular argument, all of the predicates must be $(D true) with that + argument. + + Evaluation is $(I not) short-circuited if a $(D false) result is + encountered; the template predicate must be instantiable with all the + elements. + + See_Also: + $(LREF Not) + $(LREF Or) + +/ +template And(Preds...) +{ + enum And(Args...) = + { + static foreach (Pred; Preds) + { + static if (!Pred!Args) + return false; + } + return true; + }(); +} + +/// +@safe unittest +{ + import phobos.sys.traits : isNumeric; + + template isSameSize(size_t size) + { + enum isSameSize(T) = T.sizeof == size; + } + + alias is32BitNumeric = And!(isNumeric, isSameSize!4); + + static assert(!is32BitNumeric!short); + static assert( is32BitNumeric!int); + static assert(!is32BitNumeric!long); + static assert( is32BitNumeric!float); + static assert(!is32BitNumeric!double); + static assert(!is32BitNumeric!(int*)); + + // An empty sequence of predicates always yields true. + alias alwaysTrue = And!(); + static assert(alwaysTrue!int); +} + +/++ + Predicates with multiple parameters are also supported. However, the number + of parameters must match. + +/ +@safe unittest +{ + import phobos.sys.traits : isImplicitlyConvertible, isInteger, isSameType; + + alias isOnlyImplicitlyConvertible + = And!(Not!isSameType, isImplicitlyConvertible); + + static assert( isOnlyImplicitlyConvertible!(int, long)); + static assert(!isOnlyImplicitlyConvertible!(int, int)); + static assert(!isOnlyImplicitlyConvertible!(long, int)); + + static assert( isOnlyImplicitlyConvertible!(string, const(char)[])); + static assert(!isOnlyImplicitlyConvertible!(string, string)); + static assert(!isOnlyImplicitlyConvertible!(const(char)[], string)); + + // Mismatched numbers of parameters. + alias doesNotWork = And!(isInteger, isImplicitlyConvertible); + static assert(!__traits(compiles, doesNotWork!int)); + static assert(!__traits(compiles, doesNotWork!(int, long))); +} + +@safe unittest +{ + enum testAlways(Args...) = true; + enum testNever(Args...) = false; + + static assert( Instantiate!(And!(testAlways, testAlways, testAlways), int)); + static assert(!Instantiate!(And!(testAlways, testAlways, testNever), int)); + static assert(!Instantiate!(And!(testAlways, testNever, testNever), int)); + static assert(!Instantiate!(And!(testNever, testNever, testNever), int)); + static assert(!Instantiate!(And!(testNever, testNever, testAlways), int)); + static assert(!Instantiate!(And!(testNever, testAlways, testAlways), int)); + + static assert( Instantiate!(And!(testAlways, testAlways), int)); + static assert(!Instantiate!(And!(testAlways, testNever), int)); + static assert(!Instantiate!(And!(testNever, testAlways), int)); + static assert(!Instantiate!(And!(testNever, testNever), int)); + + static assert( Instantiate!(And!testAlways, int)); + static assert(!Instantiate!(And!testNever, int)); + + // No short-circuiting. + import phobos.sys.traits : isEqual, isFloatingPoint; + static assert(!Instantiate!(And!isFloatingPoint, int)); + static assert(!__traits(compiles, Instantiate!(And!(isFloatingPoint, isEqual), int))); +} + +/++ + Evaluates to a template predicate which negates the given predicate. + + See_Also: + $(LREF And) + $(LREF Or) + +/ +template Not(alias Pred) +{ + enum Not(Args...) = !Pred!Args; +} + +/// +@safe unittest +{ + import phobos.sys.traits : isDynamicArray, isPointer; + + alias isNotPointer = Not!isPointer; + static assert( isNotPointer!int); + static assert(!isNotPointer!(int*)); + static assert( all!(isNotPointer, string, char, float)); + + static assert(!all!(Not!isDynamicArray, string, char[], int[], long)); + static assert( any!(Not!isDynamicArray, string, char[], int[], long)); +} + +/++ + Predicates with multiple parameters are also supported. + +/ +@safe unittest +{ + import phobos.sys.traits : isImplicitlyConvertible, isInteger; + + alias notImplicitlyConvertible = Not!isImplicitlyConvertible; + + static assert( notImplicitlyConvertible!(long, int)); + static assert(!notImplicitlyConvertible!(int, long)); + + static assert( notImplicitlyConvertible!(const(char)[], string)); + static assert(!notImplicitlyConvertible!(string, const(char)[])); +} + +/++ + Combines multiple template predicates into a single template predicate using + logical OR - i.e. for the resulting predicate to be $(D true) with a + particular argument, at least one of the predicates must be $(D true) with + that argument. + + Evaluation is $(I not) short-circuited if a $(D true) result is + encountered; the template predicate must be instantiable with all the + elements. + + See_Also: + $(LREF And) + $(LREF Not) + +/ +template Or(Preds...) +{ + enum Or(Args...) = + { + static foreach (Pred; Preds) + { + static if (Pred!Args) + return true; + } + return false; + }(); +} + +/// +@safe unittest +{ + import phobos.sys.traits : isFloatingPoint, isSignedInteger; + + alias isSignedNumeric = Or!(isFloatingPoint, isSignedInteger); + + static assert( isSignedNumeric!short); + static assert( isSignedNumeric!long); + static assert( isSignedNumeric!double); + static assert(!isSignedNumeric!uint); + static assert(!isSignedNumeric!ulong); + static assert(!isSignedNumeric!string); + static assert(!isSignedNumeric!(int*)); + + // An empty sequence of predicates always yields false. + alias alwaysFalse = Or!(); + static assert(!alwaysFalse!int); +} + +/++ + Predicates with multiple parameters are also supported. However, the number + of parameters must match. + +/ +@safe unittest +{ + import phobos.sys.traits : isImplicitlyConvertible, isInteger; + + enum isSameSize(T, U) = T.sizeof == U.sizeof; + alias convertibleOrSameSize = Or!(isImplicitlyConvertible, isSameSize); + + static assert( convertibleOrSameSize!(int, int)); + static assert( convertibleOrSameSize!(int, long)); + static assert(!convertibleOrSameSize!(long, int)); + + static assert( convertibleOrSameSize!(int, float)); + static assert( convertibleOrSameSize!(float, int)); + static assert(!convertibleOrSameSize!(double, int)); + static assert(!convertibleOrSameSize!(float, long)); + + static assert( convertibleOrSameSize!(int*, string*)); + + // Mismatched numbers of parameters. + alias doesNotWork = Or!(isInteger, isImplicitlyConvertible); + static assert(!__traits(compiles, doesNotWork!int)); + static assert(!__traits(compiles, doesNotWork!(int, long))); +} + +@safe unittest +{ + enum testAlways(Args...) = true; + enum testNever(Args...) = false; + + static assert( Instantiate!(Or!(testAlways, testAlways, testAlways), int)); + static assert( Instantiate!(Or!(testAlways, testAlways, testNever), int)); + static assert( Instantiate!(Or!(testAlways, testNever, testNever), int)); + static assert(!Instantiate!(Or!(testNever, testNever, testNever), int)); + + static assert( Instantiate!(Or!(testAlways, testAlways), int)); + static assert( Instantiate!(Or!(testAlways, testNever), int)); + static assert( Instantiate!(Or!(testNever, testAlways), int)); + static assert(!Instantiate!(Or!(testNever, testNever), int)); + + static assert( Instantiate!(Or!testAlways, int)); + static assert(!Instantiate!(Or!testNever, int)); + + static assert(Instantiate!(Or!testAlways, int)); + static assert(Instantiate!(Or!testAlways, Map)); + static assert(Instantiate!(Or!testAlways, int, Map)); + + // No short-circuiting. + import phobos.sys.traits : isEqual, isInteger; + static assert( Instantiate!(Or!isInteger, int)); + static assert(!__traits(compiles, Instantiate!(Or!(isInteger, isEqual), int))); +} + /++ Instantiates the given template with the given arguments and evaluates to the result of that template. From c489361e71e7d1075f07a855316a7acdb95687ee Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 12 Apr 2024 18:09:58 -0600 Subject: [PATCH 244/327] Add OriginalType, KeyType, and ValueType to phobos.sys.traits. (#8978) They're each the same as their std.traits counterparts, though the documentation and tests have been updated. I considered renaming KeyType and ValueType to AAKeyType and AAValueType for increased clarity, but that seems pretty ugly, and while "value type" could mean other things depending on the context, I don't know what else it could mean in this context. So, I left the names the same. --- phobos/sys/traits.d | 144 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 828ac36dbfc..23f16667e82 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -72,6 +72,11 @@ $(LREF isSameSymbol) $(LREF isSameType) )) + $(TR $(TD General Types) $(TD + $(LREF KeyType) + $(LREF OriginalType) + $(LREF ValueType) + )) $(TR $(TD Traits for removing type qualfiers) $(TD $(LREF Unconst) $(LREF Unshared) @@ -2201,6 +2206,145 @@ template isSameType(T) static assert(indexOf!(isSameType!int, Types) == 2); } +/++ + Takes a type which is an associative array and evaluates to the type of the + keys in that associative array. + + See_Also: + $(LREF ValueType) + +/ +alias KeyType(V : V[K], K) = K; + +/// +@safe unittest +{ + static assert(is(KeyType!(int[string]) == string)); + static assert(is(KeyType!(string[int]) == int)); + + static assert(is(KeyType!(string[const int]) == const int)); + static assert(is(KeyType!(const int[string]) == string)); + + struct S + { + int i; + } + + string[S] aa1; + static assert(is(KeyType!(typeof(aa1)) == S)); + + S[string] aa2; + static assert(is(KeyType!(typeof(aa2)) == string)); + + KeyType!(typeof(aa1)) key1 = S(42); + KeyType!(typeof(aa2)) key2 = "foo"; + + // Key types with indirections have their inner layers treated as const + // by the compiler, because the values of keys can't change, or the hash + // value could change, putting the associative array in an invalid state. + static assert(is(KeyType!(bool[string[]]) == const(string)[])); + static assert(is(KeyType!(bool[int*]) == const(int)*)); + + // If the given type is not an AA, then KeyType won't compile. + static assert(!__traits(compiles, KeyType!int)); + static assert(!__traits(compiles, KeyType!(int[]))); +} + +/++ + Takes a type which is an associative array and evaluates to the type of the + values in that associative array. + + See_Also: + $(LREF KeyType) + +/ +alias ValueType(V : V[K], K) = V; + +/// +@safe unittest +{ + static assert(is(ValueType!(int[string]) == int)); + static assert(is(ValueType!(string[int]) == string)); + + static assert(is(ValueType!(string[const int]) == string)); + static assert(is(ValueType!(const int[string]) == const int)); + + struct S + { + int i; + } + + string[S] aa1; + static assert(is(ValueType!(typeof(aa1)) == string)); + + S[string] aa2; + static assert(is(ValueType!(typeof(aa2)) == S)); + + ValueType!(typeof(aa1)) value1 = "foo"; + ValueType!(typeof(aa2)) value2 = S(42); + + // If the given type is not an AA, then ValueType won't compile. + static assert(!__traits(compiles, ValueType!int)); + static assert(!__traits(compiles, ValueType!(int[]))); +} + +/++ + Evaluates to the original / ultimate base type of an enum type - or for + non-enum types, it evaluates to the type that it's given. + + If the base type of the given enum type is not an enum, then the result of + OriginalType is its direct base type. However, if the base type of the + given enum is also an enum, then OriginalType gives the ultimate base type + - that is, it keeps getting the base type for each succesive enum in the + chain until it gets to a base type that isn't an enum, and that's the + result. So, the result will never be an enum type. + + If the given type has any qualifiers, the result will have those same + qualifiers. + +/ +version (StdDdoc) template OriginalType(T) +{ + import core.internal.traits : CoreOriginalType = OriginalType; + alias OriginalType = CoreOriginalType!T; +} +else +{ + import core.internal.traits : CoreOriginalType = OriginalType; + alias OriginalType = CoreOriginalType; +} + +/// +@safe unittest +{ + enum E { a, b, c } + static assert(is(OriginalType!E == int)); + + enum F : E { x = E.a } + static assert(is(OriginalType!F == int)); + + enum G : F { y = F.x } + static assert(is(OriginalType!G == int)); + static assert(is(OriginalType!(const G) == const int)); + static assert(is(OriginalType!(immutable G) == immutable int)); + static assert(is(OriginalType!(shared G) == shared int)); + + enum C : char { a = 'a', b = 'b' } + static assert(is(OriginalType!C == char)); + + enum D : string { d = "dlang" } + static assert(is(OriginalType!D == string)); + + static assert(is(OriginalType!int == int)); + static assert(is(OriginalType!(const long) == const long)); + static assert(is(OriginalType!string == string)); + + // OriginalType gets the base type of enums and for all other types gives + // the same type back. It does nothing special for other types - like + // classes - where one could talk about the type having a base type. + class Base {} + class Derived : Base {} + static assert(is(OriginalType!Base == Base)); + static assert(is(OriginalType!Derived == Derived)); +} + /++ Removes the outer layer of $(D const), $(D inout), or $(D immutable) from type $(D T). From 655a1e4d1fa9b2f5d66d7e5c8512633bbd96fa7c Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sun, 14 Apr 2024 14:35:33 +0100 Subject: [PATCH 245/327] Fix ref foreach range variable See https://github.com/dlang/dmd/pull/16381. --- std/path.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/path.d b/std/path.d index 2dbdf418f33..a45865a9f18 100644 --- a/std/path.d +++ b/std/path.d @@ -3397,7 +3397,7 @@ do else { C[] pattmp; - foreach (ref pi; 0 .. pattern.length) + for (size_t pi = 0; pi < pattern.length; pi++) { const pc = pattern[pi]; switch (pc) From 80235ea0568caaa8993e2d4fc6e3b7daa102bd6c Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Wed, 17 Apr 2024 10:59:07 +0200 Subject: [PATCH 246/327] Add `@nogc nothrow` to randomUUID --- std/uuid.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/uuid.d b/std/uuid.d index dec2a1c276d..b8cac6ecdd7 100644 --- a/std/uuid.d +++ b/std/uuid.d @@ -1207,7 +1207,7 @@ public struct UUID * randomGen = uniform RNG * See_Also: $(REF isUniformRNG, std,random) */ -@safe UUID randomUUID() +@nogc nothrow @safe UUID randomUUID() { import std.random : rndGen; // A PRNG with fewer than `n` bytes of state cannot produce From 7740a857f3e0cba3e4d675e0efc73fc8b881cc19 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 17 Apr 2024 09:39:26 +0100 Subject: [PATCH 247/327] [std/net/isemail] Fix foreach ref index See https://github.com/dlang/dmd/pull/16381. --- std/net/isemail.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/std/net/isemail.d b/std/net/isemail.d index 12a29fe44c9..2234f3590ca 100644 --- a/std/net/isemail.d +++ b/std/net/isemail.d @@ -111,8 +111,9 @@ if (isSomeChar!(Char)) auto endOrDie = false; auto crlfCount = int.min; // int.min == not defined - foreach (ref i, e ; email) + for (size_t i; i < email.length; i++) { + auto e = email[i]; token = email.get(i, e); switch (context) From 5d6eacc0c46594d292b857b9a4ee6b4e339c564c Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 18 Apr 2024 16:44:31 -0600 Subject: [PATCH 248/327] Add isAggegregateType and isInstantiationOf to phobos.sys.traits. (#8981) isAggregateType is the same as isAggregateType from std.traits but with tweaked documentation and examples. isInstantiationOf is the equivalent of std.traits' isInstanceOf. The documentation and tests have been updated, and an overload for partial instantiation has been added. The reason for the name change is that "instance" is not normally used with templates (instantiation is typically considered to be the correct term). Rather, instance is normally used to indicate that a value is an instance of a particular type. So, using isInstanceOf to check whether a type is an instantiation of a particular template seems like a misuse of the term and like it could easily cause confusion. The downside of course is that the new name is longer and harder to type, but while it's a trait that is necessary in some situations, IMHO, it's not needed frequently enough for the longer name to be a problem - particularly when it's a clearer name. I did try to simplify isInstantationOf's implementation so that it didn't need an alias overload, but I failed, because apparently, when typeof is used on the instantiation of a function template, the fact that it's a template instantation is lost. So, unfortunately, we're forced to operate on the function's symbol rather than its type to detect whether it's an instantation of a particular template. The documentation has been updated to include that information. I also tried to then make the alias overload not need a helper template so that fewer template instantiations would be needed, but that didn't work either, because the alias overload needs a template specialization to work, and I couldn't find a way to write an is expression that would have the same effect. So maybe, someone can improve the implementation later if they can figure that out, but since it's the same implementation as std.traits, we're not any worse off. And the overload which operates on aggregate types probably sees a lot more use anyway. --- phobos/sys/traits.d | 262 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 23f16667e82..65d56af141b 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -51,8 +51,10 @@ $(BOOKTABLE , $(TR $(TH Category) $(TH Templates)) $(TR $(TD Categories of types) $(TD + $(LREF isAggregateType) $(LREF isDynamicArray) $(LREF isFloatingPoint) + $(LREF isInstantiationOf) $(LREF isInteger) $(LREF isNumeric) $(LREF isPointer) @@ -109,6 +111,33 @@ +/ module phobos.sys.traits; +/++ + Whether the given type is an "aggregate type" - i.e. a struct, class, + interface, or union. + +/ +enum isAggregateType(T) = is(T == struct) || is(T == class) || is(T == interface) || is(T == union); + +@safe unittest +{ + struct S {} + class C {} + interface I {} + union U {} + + static assert( isAggregateType!S); + static assert( isAggregateType!C); + static assert( isAggregateType!I); + static assert( isAggregateType!U); + static assert( isAggregateType!(const S)); + static assert( isAggregateType!(shared C)); + + static assert(!isAggregateType!int); + static assert(!isAggregateType!string); + static assert(!isAggregateType!(S*)); + static assert(!isAggregateType!(C[])); + static assert(!isAggregateType!(I[string])); +} + /++ Whether the given type is a dynamic array (or what is sometimes referred to as a slice, since a dynamic array in D is a slice of memory). @@ -1309,6 +1338,239 @@ enum isPointer(T) = is(T == U*, U); } } +/++ + Evaluates to $(D true) if the given type or symbol is an instantiation of + the given template. + + The overload which takes $(D T) operates on types and indicates whether an + aggregate type (i.e. struct, class, interface, or union) is an + instantiation of the given template. + + The overload which takes $(D Symbol) operates on function templates, + because unlike with aggregate types, the type of a function does not retain + the fact that it was instantiated from a template. So, for functions, it's + necessary to pass the function itself as a symbol rather than pass the type + of the function. + + The overload which takes $(D Symbol) also works with templates which are + not types or functions. + + The single-argument overload makes it so that it can be partially + instantiated with the first argument, which will often be necessary with + template predicates. + +/ +template isInstantiationOf(alias Template, T) +if (__traits(isTemplate, Template)) +{ + enum isInstantiationOf = is(T == Template!Args, Args...); +} + +/++ Ditto +/ +template isInstantiationOf(alias Template, alias Symbol) +if (__traits(isTemplate, Template)) +{ + enum impl(alias T : Template!Args, Args...) = true; + enum impl(alias T) = false; + enum isInstantiationOf = impl!Symbol; +} + +/++ Ditto +/ +template isInstantiationOf(alias Template) +if (__traits(isTemplate, Template)) +{ + enum isInstantiationOf(T) = is(T == Template!Args, Args...); + + template isInstantiationOf(alias Symbol) + { + enum impl(alias T : Template!Args, Args...) = true; + enum impl(alias T) = false; + enum isInstantiationOf = impl!Symbol; + } +} + +/// Examples of templated types. +@safe unittest +{ + static struct S(T) {} + static class C(T) {} + + static assert( isInstantiationOf!(S, S!int)); + static assert( isInstantiationOf!(S, S!int)); + static assert( isInstantiationOf!(S, S!string)); + static assert( isInstantiationOf!(S, const S!string)); + static assert( isInstantiationOf!(S, shared S!string)); + static assert(!isInstantiationOf!(S, int)); + static assert(!isInstantiationOf!(S, C!int)); + static assert(!isInstantiationOf!(S, C!string)); + static assert(!isInstantiationOf!(S, C!(S!int))); + + static assert( isInstantiationOf!(C, C!int)); + static assert( isInstantiationOf!(C, C!string)); + static assert( isInstantiationOf!(C, const C!string)); + static assert( isInstantiationOf!(C, shared C!string)); + static assert(!isInstantiationOf!(C, int)); + static assert(!isInstantiationOf!(C, S!int)); + static assert(!isInstantiationOf!(C, S!string)); + static assert(!isInstantiationOf!(C, S!(C!int))); + + static struct Variadic(T...) {} + + static assert( isInstantiationOf!(Variadic, Variadic!())); + static assert( isInstantiationOf!(Variadic, Variadic!int)); + static assert( isInstantiationOf!(Variadic, Variadic!(int, string))); + static assert( isInstantiationOf!(Variadic, Variadic!(int, string, int))); + static assert( isInstantiationOf!(Variadic, const Variadic!(int, short))); + static assert( isInstantiationOf!(Variadic, shared Variadic!(int, short))); + static assert(!isInstantiationOf!(Variadic, int)); + static assert(!isInstantiationOf!(Variadic, S!int)); + static assert(!isInstantiationOf!(Variadic, C!int)); + + static struct ValueArg(int i) {} + static assert( isInstantiationOf!(ValueArg, ValueArg!42)); + static assert( isInstantiationOf!(ValueArg, ValueArg!256)); + static assert( isInstantiationOf!(ValueArg, const ValueArg!1024)); + static assert( isInstantiationOf!(ValueArg, shared ValueArg!1024)); + static assert(!isInstantiationOf!(ValueArg, int)); + static assert(!isInstantiationOf!(ValueArg, S!int)); + + int i; + + static struct AliasArg(alias Symbol) {} + static assert( isInstantiationOf!(AliasArg, AliasArg!42)); + static assert( isInstantiationOf!(AliasArg, AliasArg!int)); + static assert( isInstantiationOf!(AliasArg, AliasArg!i)); + static assert( isInstantiationOf!(AliasArg, const AliasArg!i)); + static assert( isInstantiationOf!(AliasArg, shared AliasArg!i)); + static assert(!isInstantiationOf!(AliasArg, int)); + static assert(!isInstantiationOf!(AliasArg, S!int)); + + // An uninstantiated template is not an instance of any template, + // not even itself. + static assert(!isInstantiationOf!(S, S)); + static assert(!isInstantiationOf!(S, C)); + static assert(!isInstantiationOf!(C, C)); + static assert(!isInstantiationOf!(C, S)); + + // Variables of a templated type are not considered instantiations of that + // type. For templated types, the overload which takes a type must be used. + S!int s; + C!string c; + static assert(!isInstantiationOf!(S, s)); + static assert(!isInstantiationOf!(C, c)); +} + +// Examples of templated functions. +@safe unittest +{ + static int foo(T...)() { return 42; } + static void bar(T...)(T var) {} + static void baz(T)(T var) {} + static bool frobozz(alias pred)(int) { return true; } + + static assert( isInstantiationOf!(foo, foo!int)); + static assert( isInstantiationOf!(foo, foo!string)); + static assert( isInstantiationOf!(foo, foo!(int, string))); + static assert(!isInstantiationOf!(foo, bar!int)); + static assert(!isInstantiationOf!(foo, bar!string)); + static assert(!isInstantiationOf!(foo, bar!(int, string))); + + static assert( isInstantiationOf!(bar, bar!int)); + static assert( isInstantiationOf!(bar, bar!string)); + static assert( isInstantiationOf!(bar, bar!(int, string))); + static assert(!isInstantiationOf!(bar, foo!int)); + static assert(!isInstantiationOf!(bar, foo!string)); + static assert(!isInstantiationOf!(bar, foo!(int, string))); + + static assert( isInstantiationOf!(baz, baz!int)); + static assert( isInstantiationOf!(baz, baz!string)); + static assert(!isInstantiationOf!(baz, foo!(int, string))); + + static assert( isInstantiationOf!(frobozz, frobozz!(a => a))); + static assert( isInstantiationOf!(frobozz, frobozz!(a => a > 2))); + static assert(!isInstantiationOf!(frobozz, baz!int)); + + // Unfortunately, the function type is not considered an instantiation of + // the template, because that information is not part of the type, unlike + // with templated structs or classes. + static assert(!isInstantiationOf!(foo, typeof(foo!int))); + static assert(!isInstantiationOf!(bar, typeof(bar!int))); +} + +// Examples of templates which aren't types or functions. +@safe unittest +{ + template SingleArg(T) {} + template Variadic(T...) {} + template ValueArg(string s) {} + template Alias(alias symbol) {} + + static assert( isInstantiationOf!(SingleArg, SingleArg!int)); + static assert( isInstantiationOf!(SingleArg, SingleArg!string)); + static assert(!isInstantiationOf!(SingleArg, int)); + static assert(!isInstantiationOf!(SingleArg, Variadic!int)); + + static assert( isInstantiationOf!(Variadic, Variadic!())); + static assert( isInstantiationOf!(Variadic, Variadic!int)); + static assert( isInstantiationOf!(Variadic, Variadic!string)); + static assert( isInstantiationOf!(Variadic, Variadic!(short, int, long))); + static assert(!isInstantiationOf!(Variadic, int)); + static assert(!isInstantiationOf!(Variadic, SingleArg!int)); + + static assert( isInstantiationOf!(ValueArg, ValueArg!"dlang")); + static assert( isInstantiationOf!(ValueArg, ValueArg!"foobar")); + static assert(!isInstantiationOf!(ValueArg, string)); + static assert(!isInstantiationOf!(ValueArg, Variadic!string)); + + int i; + + static assert( isInstantiationOf!(Alias, Alias!int)); + static assert( isInstantiationOf!(Alias, Alias!42)); + static assert( isInstantiationOf!(Alias, Alias!i)); + static assert(!isInstantiationOf!(Alias, int)); + static assert(!isInstantiationOf!(Alias, SingleArg!int)); +} + +/// Examples of partial instantation. +@safe unittest +{ + static struct SingleArg(T) {} + static struct Variadic(T...) {} + + alias isSingleArg = isInstantiationOf!SingleArg; + alias isVariadic = isInstantiationOf!Variadic; + + static assert( isSingleArg!(SingleArg!int)); + static assert( isSingleArg!(const SingleArg!int)); + static assert(!isSingleArg!int); + static assert(!isSingleArg!(Variadic!int)); + + static assert( isVariadic!(Variadic!())); + static assert( isVariadic!(Variadic!int)); + static assert( isVariadic!(shared Variadic!int)); + static assert( isVariadic!(Variadic!(int, string))); + static assert(!isVariadic!int); + static assert(!isVariadic!(SingleArg!int)); + + T foo(T)(T t) { return t; } + T likeFoo(T)(T t) { return t; } + bool bar(alias pred)(int i) { return pred(i); } + + alias isFoo = isInstantiationOf!foo; + alias isBar = isInstantiationOf!bar; + + static assert( isFoo!(foo!int)); + static assert( isFoo!(foo!string)); + static assert(!isFoo!int); + static assert(!isFoo!(likeFoo!int)); + static assert(!isFoo!(bar!(a => true))); + + static assert( isBar!(bar!(a => true))); + static assert( isBar!(bar!(a => a > 2))); + static assert(!isBar!int); + static assert(!isBar!(foo!int)); + static assert(!isBar!(likeFoo!int)); +} + /++ Evaluates to an $(D AliasSeq) containing the members of an enum type. From ffe309b06563f8ace3f952a144b038653966e29e Mon Sep 17 00:00:00 2001 From: Inkrementator <70717315+Inkrementator@users.noreply.github.com> Date: Fri, 19 Apr 2024 17:16:18 +0200 Subject: [PATCH 249/327] Remove resolved bug from exmaples https://issues.dlang.org/show_bug.cgi?id=24064 is resolved --- std/range/package.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index d9d74fb21a9..8e8287a5c8d 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -1683,7 +1683,7 @@ pure @safe unittest assert(range.array == [S(5), S(6)]); } -/// https://issues.dlang.org/show_bug.cgi?id=24064 +// https://issues.dlang.org/show_bug.cgi?id=24064 pure @safe nothrow unittest { import std.algorithm.comparison : equal; From 7b05ce70cc305385a5b99cbbe67d544f8227d2ac Mon Sep 17 00:00:00 2001 From: Inkrementator <70717315+Inkrementator@users.noreply.github.com> Date: Fri, 19 Apr 2024 17:18:41 +0200 Subject: [PATCH 250/327] Correct Link formatting --- std/range/package.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index 8e8287a5c8d..c9314796171 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -1716,7 +1716,7 @@ pure @safe nothrow @nogc unittest } } -/// https://issues.dlang.org/show_bug.cgi?id=24243 +/// $(LINK2 https://issues.dlang.org/show_bug.cgi?id=24243, Bug 24243) pure @safe nothrow unittest { import std.algorithm.iteration : filter; From 72832ab8a496a5985f333e8979b6376cc9bbd99f Mon Sep 17 00:00:00 2001 From: Inkrementator <70717315+Inkrementator@users.noreply.github.com> Date: Fri, 19 Apr 2024 17:34:19 +0200 Subject: [PATCH 251/327] Remove test with bugreport from the online documentation --- std/range/package.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index c9314796171..15c8b0879b1 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -1716,7 +1716,7 @@ pure @safe nothrow @nogc unittest } } -/// $(LINK2 https://issues.dlang.org/show_bug.cgi?id=24243, Bug 24243) +// https://issues.dlang.org/show_bug.cgi?id=24243 pure @safe nothrow unittest { import std.algorithm.iteration : filter; From a92d08bcfc64d116fb070ff5fc161605d5022ffd Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Fri, 19 Apr 2024 23:54:27 +0200 Subject: [PATCH 252/327] std.bigint: remove subSimple --- std/internal/math/biguintcore.d | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/std/internal/math/biguintcore.d b/std/internal/math/biguintcore.d index d5c4768f064..9df6bb22274 100644 --- a/std/internal/math/biguintcore.d +++ b/std/internal/math/biguintcore.d @@ -2241,31 +2241,6 @@ do return carry; } -// result = left - right -// returns carry (0 or 1) -BigDigit subSimple(BigDigit [] result,const(BigDigit) [] left, - const(BigDigit) [] right) pure nothrow -in -{ - assert(result.length == left.length, - "result and left must be of the same length"); - assert(left.length >= right.length, - "left must be longer or of equal length to right"); - assert(right.length > 0, "right must not be empty"); -} -do -{ - BigDigit carry = multibyteSub(result[0 .. right.length], - left[0 .. right.length], right, 0); - if (right.length < left.length) - { - result[right.length .. left.length] = left[right.length .. $]; - carry = multibyteIncrementAssign!('-')(result[right.length..$], carry); - } //else if (result.length == left.length+1) { result[$-1] = carry; carry=0; } - return carry; -} - - /* result = result - right * Returns carry = 1 if result was less than right. */ From 375f738b0c797c5730b89c40403febaf0d61dff8 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Sun, 21 Apr 2024 16:57:19 -0600 Subject: [PATCH 253/327] Add FieldNames, FieldSymbols, and FieldTypes to phobos.sys.traits. (#8986) FieldNames is roughly equivalent to std.traits' FieldNameTuple, and FieldTypes is roughly equivalent to std.traits' Fields (which used to be FieldTypeTuple). The primary difference implementation-wise is that the phobos.sys.traits versions require that the types that they're given be aggregate types. For some reason, the std.traits versions accept any type and then try to give a result that at least sort of make sense when they're given a type which isn't an aggregate type (even though they really can't, because a type which isn't an aggregate type has no fields, making any choice kind of arbitrary). For types which aren't aggregate types, Fields gives the type back in an AliasSeq, and FieldNameTuple gives AliasSeq!"". Neither makes any sense to me. I assume that it was done so that those traits could be used in generic code and work with any type, but realistically, if you want to do anything sane with them, you need to already have verified that you're dealing with an aggregate type, since it's just going to be error-prone to do stuff like Fields!int and then get AliasSeq!int back as if it had a single field of type int (or FieldNameTuple!int and get an empty string as the name). So, the phobos.sys.traits versions simply require that you give them aggregate types to avoid that entire mess. FieldNames evaluates to the names of the fields as strings. The "Tuple" in the name of the std.traits version is an artifact from when AliasSeqs were called TypeTuples, so I didn't keep that. FieldTypes evaluates to the types for the fields. It's FieldTypes rather than Fields for clarity, since it's not at all obvious what Fields is supposed to give you (if I'd had to guess, I would have guessed the symbols, not the types). FieldSymbols is new. Its usefulness is questionable, since it does almost exactly the same thing that tupleof does. However, I've included it because of the subtle issues that you get with nested structs - namely that tupleof includes a context pointer in its result, which you probably don't want (though that obviously depends on what you're doing), and FieldNames and FieldTypes don't include it (just like their std.traits counterparts don't), so it seemed like it would make it less error-prone to have FieldSymbols for the cases where symbols are needed. The documentation explains (and the examples show) the difference between FieldSymbols and tupleof so that the programmer can decide which makes more sense for their particular use case. --- phobos/sys/traits.d | 797 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 797 insertions(+) diff --git a/phobos/sys/traits.d b/phobos/sys/traits.d index 65d56af141b..595dc7a15b6 100644 --- a/phobos/sys/traits.d +++ b/phobos/sys/traits.d @@ -74,6 +74,11 @@ $(LREF isSameSymbol) $(LREF isSameType) )) + $(TR $(TD Aggregate Type Traits) $(TD + $(LREF FieldNames) + $(LREF FieldSymbols) + $(LREF FieldTypes) + )) $(TR $(TD General Types) $(TD $(LREF KeyType) $(LREF OriginalType) @@ -2468,6 +2473,798 @@ template isSameType(T) static assert(indexOf!(isSameType!int, Types) == 2); } +/++ + Evaluates to an $(D AliasSeq) of the names (as $(D string)s) of the member + variables of an aggregate type (i.e. a struct, class, interface, or union). + + These are fields which take up memory space within an instance of the type + (i.e. not enums / manifest constants, since they don't take up memory + space, and not static member variables, since they don't take up memory + space within an instance). + + Hidden fields (like the virtual function table pointer or the context + pointer for nested types) are not included. + + For classes, only the direct member variables are included and not those + of any base classes. + + For interfaces, the result of FieldNames is always empty, because + interfaces cannot have member variables. However, because interfaces are + aggregate types, they work with FieldNames for consistency so that code + that's written to work on aggregate types doesn't have to worry about + whether it's dealing with an interface. + + See_Also: + $(LREF FieldSymbols) + $(LREF FieldTypes) + $(DDSUBLINK spec/struct.html, struct_instance_properties, $(D tupleof)) + +/ +template FieldNames(T) +if (isAggregateType!T) +{ + import phobos.sys.meta : AliasSeq; + + static if (is(T == struct) && __traits(isNested, T)) + private alias Fields = AliasSeq!(T.tupleof[0 .. $ - 1]); + else + private alias Fields = T.tupleof; + + alias FieldNames = AliasSeq!(); + static foreach (Field; Fields) + FieldNames = AliasSeq!(FieldNames, Field.stringof); +} + +/// +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + struct S + { + int x; + float y; + } + static assert(FieldNames!S == AliasSeq!("x", "y")); + + // Since the AliasSeq contains values, all of which are of the same type, + // it can be used to create a dynamic array, which would be more + // efficient than operating on an AliasSeq in the cases where an + // AliasSeq is not necessary. + static assert([FieldNames!S] == ["x", "y"]); + + class C + { + // static variables are not included. + static int var; + + // Manifest constants are not included. + enum lang = "dlang"; + + // Functions are not included, even if they're @property functions. + @property int foo() { return 42; } + + string s; + int i; + int[] arr; + } + static assert(FieldNames!C == AliasSeq!("s", "i", "arr")); + + static assert([FieldNames!C] == ["s", "i", "arr"]); + + // Only direct member variables are included. Member variables from any base + // classes are not. + class D : C + { + real r; + } + static assert(FieldNames!D == AliasSeq!"r"); + + static assert([FieldNames!D] == ["r"]); + + // FieldNames will always be empty for an interface, since it's not legal + // for interfaces to have member variables. + interface I + { + } + static assert(FieldNames!I.length == 0); + + union U + { + int i; + double d; + long l; + S s; + } + static assert(FieldNames!U == AliasSeq!("i", "d", "l", "s")); + + static assert([FieldNames!U] == ["i", "d", "l", "s"]);; + + // FieldNames only operates on aggregate types. + static assert(!__traits(compiles, FieldNames!int)); + static assert(!__traits(compiles, FieldNames!(S*))); + static assert(!__traits(compiles, FieldNames!(C[]))); +} + +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + { + static struct S0 {} + static assert(FieldNames!S0.length == 0); + + static struct S1 { int a; } + static assert(FieldNames!S1 == AliasSeq!"a"); + + static struct S2 { int a; string b; } + static assert(FieldNames!S2 == AliasSeq!("a", "b")); + + static struct S3 { int a; string b; real c; } + static assert(FieldNames!S3 == AliasSeq!("a", "b", "c")); + } + { + int i; + struct S0 { void foo() { i = 0; }} + static assert(FieldNames!S0.length == 0); + static assert(__traits(isNested, S0)); + + struct S1 { int a; void foo() { i = 0; } } + static assert(FieldNames!S1 == AliasSeq!"a"); + static assert(__traits(isNested, S1)); + + struct S2 { int a; string b; void foo() { i = 0; } } + static assert(FieldNames!S2 == AliasSeq!("a", "b")); + static assert(__traits(isNested, S2)); + + struct S3 { int a; string b; real c; void foo() { i = 0; } } + static assert(FieldNames!S3 == AliasSeq!("a", "b", "c")); + static assert(__traits(isNested, S3)); + } + { + static class C0 {} + static assert(FieldNames!C0.length == 0); + + static class C1 { int a; } + static assert(FieldNames!C1 == AliasSeq!"a"); + + static class C2 { int a; string b; } + static assert(FieldNames!C2 == AliasSeq!("a", "b")); + + static class C3 { int a; string b; real c; } + static assert(FieldNames!C3 == AliasSeq!("a", "b", "c")); + + static class D0 : C3 {} + static assert(FieldNames!D0.length == 0); + + static class D1 : C3 { bool x; } + static assert(FieldNames!D1 == AliasSeq!"x"); + + static class D2 : C3 { bool x; int* y; } + static assert(FieldNames!D2 == AliasSeq!("x", "y")); + + static class D3 : C3 { bool x; int* y; short[] z; } + static assert(FieldNames!D3 == AliasSeq!("x", "y", "z")); + } + { + int i; + class C0 { void foo() { i = 0; }} + static assert(FieldNames!C0.length == 0); + static assert(__traits(isNested, C0)); + + class C1 { int a; void foo() { i = 0; } } + static assert(FieldNames!C1 == AliasSeq!"a"); + static assert(__traits(isNested, C1)); + + class C2 { int a; string b; void foo() { i = 0; } } + static assert(FieldNames!C2 == AliasSeq!("a", "b")); + static assert(__traits(isNested, C2)); + + class C3 { int a; string b; real c; void foo() { i = 0; } } + static assert(FieldNames!C3 == AliasSeq!("a", "b", "c")); + static assert(__traits(isNested, C3)); + + class D0 : C3 {} + static assert(FieldNames!D0.length == 0); + static assert(__traits(isNested, D0)); + + class D1 : C3 { bool x; } + static assert(FieldNames!D1 == AliasSeq!"x"); + static assert(__traits(isNested, D1)); + + class D2 : C3 { bool x; int* y; } + static assert(FieldNames!D2 == AliasSeq!("x", "y")); + static assert(__traits(isNested, D2)); + + class D3 : C3 { bool x; int* y; short[] z; } + static assert(FieldNames!D3 == AliasSeq!("x", "y", "z")); + static assert(__traits(isNested, D3)); + } + { + static union U0 {} + static assert(FieldNames!U0.length == 0); + + static union U1 { int a; } + static assert(FieldNames!U1 == AliasSeq!"a"); + + static union U2 { int a; string b; } + static assert(FieldNames!U2 == AliasSeq!("a", "b")); + + static union U3 { int a; string b; real c; } + static assert(FieldNames!U3 == AliasSeq!("a", "b", "c")); + } + { + static struct S + { + enum e = 42; + static str = "foobar"; + + string name() { return "foo"; } + + int[] arr; + + struct Inner1 { int i; } + + static struct Inner2 { long gnol; } + + union { int a; string b; } + + alias Foo = Inner1; + } + + static assert(FieldNames!S == AliasSeq!("arr", "a", "b")); + static assert(FieldNames!(const S) == AliasSeq!("arr", "a", "b")); + static assert(FieldNames!(S.Inner1) == AliasSeq!"i"); + static assert(FieldNames!(S.Inner2) == AliasSeq!"gnol"); + } +} + +/++ + Evaluates to an $(D AliasSeq) of the symbols for the member variables of an + aggregate type (i.e. a struct, class, interface, or union). + + These are fields which take up memory space within an instance of the type + (i.e. not enums / manifest constants, since they don't take up memory + space, and not static member variables, since they don't take up memory + space within an instance). + + Hidden fields (like the virtual function table pointer or the context + pointer for nested types) are not included. + + For classes, only the direct member variables are included and not those + of any base classes. + + For interfaces, the result of FieldSymbols is always empty, because + interfaces cannot have member variables. However, because interfaces are + aggregate types, they work with FieldSymbols for consistency so that code + that's written to work on aggregate types doesn't have to worry about + whether it's dealing with an interface. + + In most cases, $(D FieldSymbols!T) has the same result as $(D T.tupleof). + The difference is that for nested structs with a context pointer, + $(D T.tupleof) includes the context pointer, whereas $(D FieldSymbols!T) + does not. For non-nested structs, and for classes, interfaces, and unions, + $(D FieldSymbols!T) and $(D T.tupleof) are the same. + + So, for most cases, $(D T.tupleof) is sufficient and avoids instantiating + an additional template, but FieldSymbols is provided so that the code that + needs to avoid including context pointers in the list of fields can do so + without the programmer having to figure how to do that correctly. It also + provides a template that's equivalent to what $(LREF FieldNames) and + $(LREF FieldTypes) do in terms of which fields it gives (the difference of + course then being whether you get the symbols, names, or types for the + fields), whereas the behavior for $(D tupleof) is subtly different. + + See_Also: + $(LREF FieldNames) + $(LREF FieldTypes) + $(DDSUBLINK spec/struct.html, struct_instance_properties, $(D tupleof)) + $(DDSUBLINK spec/traits, isNested, $(D __traits(isNested, ...))). + $(DDSUBLINK spec/traits, isSame, $(D __traits(isSame, ...))). + +/ +template FieldSymbols(T) +if (isAggregateType!T) +{ + static if (is(T == struct) && __traits(isNested, T)) + { + import phobos.sys.meta : AliasSeq; + alias FieldSymbols = AliasSeq!(T.tupleof[0 .. $ - 1]); + } + else + alias FieldSymbols = T.tupleof; +} + +/// +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + struct S + { + int x; + float y; + } + static assert(__traits(isSame, FieldSymbols!S, AliasSeq!(S.x, S.y))); + + // FieldSymbols!S and S.tupleof are the same, because S is not nested. + static assert(__traits(isSame, FieldSymbols!S, S.tupleof)); + + // Note that type qualifiers _should_ be passed on to the result, but due + // to https://issues.dlang.org/show_bug.cgi?id=24516, they aren't. + // FieldTypes does not have this problem, because it aliases the types + // rather than the symbols, so if you need the types from the symbols, you + // should use either FieldTypes or tupleof until the compiler bug has been + // fixed (and if you use tupleof, you need to avoid aliasing the result + // before getting the types from it). + static assert(is(typeof(FieldSymbols!S[0]) == int)); + + // These currently fail when they shouldn't: + //static assert(is(typeof(FieldSymbols!(const S)[0]) == const int)); + //static assert(is(typeof(FieldSymbols!(shared S)[0]) == shared int)); + + class C + { + // static variables are not included. + static int var; + + // Manifest constants are not included. + enum lang = "dlang"; + + // Functions are not included, even if they're @property functions. + @property int foo() { return 42; } + + string s; + int i; + int[] arr; + } + static assert(__traits(isSame, FieldSymbols!C, AliasSeq!(C.s, C.i, C.arr))); + + // FieldSymbols!C and C.tupleof have the same symbols, because they are + // always the same for classes. + static assert(__traits(isSame, FieldSymbols!C, C.tupleof)); + + // Only direct member variables are included. Member variables from any base + // classes are not. + class D : C + { + real r; + } + static assert(__traits(isSame, FieldSymbols!D, AliasSeq!(D.r))); + static assert(__traits(isSame, FieldSymbols!D, D.tupleof)); + + // FieldSymbols will always be empty for an interface, since it's not legal + // for interfaces to have member variables. + interface I + { + } + static assert(FieldSymbols!I.length == 0); + static assert(I.tupleof.length == 0); + + union U + { + int i; + double d; + long l; + S s; + } + static assert(__traits(isSame, FieldSymbols!U, AliasSeq!(U.i, U.d, U.l, U.s))); + + // FieldSymbols!C and C.tupleof have the same symbols, because they are + // always the same for unions. + static assert(__traits(isSame, FieldSymbols!U, U.tupleof)); + + // FieldSymbols only operates on aggregate types. + static assert(!__traits(compiles, FieldSymbols!int)); + static assert(!__traits(compiles, FieldSymbols!(S*))); + static assert(!__traits(compiles, FieldSymbols!(C[]))); +} + +/// Some examples with nested types. +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + int outside; + + struct S + { + long l; + string s; + + void foo() { outside = 2; } + } + static assert(__traits(isNested, S)); + static assert(__traits(isSame, FieldSymbols!S, AliasSeq!(S.l, S.s))); + + // FieldSymbols!S and S.tupleof are not the same, because S is nested, and + // the context pointer to the outer scope is included in S.tupleof, whereas + // it is excluded from FieldSymbols!S. + static assert(__traits(isSame, S.tupleof[0 .. $ - 1], AliasSeq!(S.l, S.s))); + static assert(S.tupleof[$ - 1].stringof == "this"); + + class C + { + bool b; + int* ptr; + + void foo() { outside = 7; } + } + static assert(__traits(isNested, C)); + static assert(__traits(isSame, FieldSymbols!C, AliasSeq!(C.b, C.ptr))); + + // FieldSymbols!C and C.tupleof have the same symbols, because they are + // always the same for classes. No context pointer is provided as part of + // tupleof for nested classes. + static assert(__traits(isSame, FieldSymbols!C, C.tupleof)); + + // __traits(isNested, ...) is never true for interfaces or unions, since + // they cannot have a context pointer to an outer scope. So, tupleof and + // FieldSymbols will always be the same for interfaces and unions. +} + +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + { + static struct S0 {} + static assert(FieldSymbols!S0.length == 0); + + static struct S1 { int a; } + static assert(__traits(isSame, FieldSymbols!S1, AliasSeq!(S1.a))); + + static struct S2 { int a; string b; } + static assert(__traits(isSame, FieldSymbols!S2, AliasSeq!(S2.a, S2.b))); + + static struct S3 { int a; string b; real c; } + static assert(__traits(isSame, FieldSymbols!S3, AliasSeq!(S3.a, S3.b, S3.c))); + } + { + int i; + struct S0 { void foo() { i = 0; }} + static assert(FieldSymbols!S0.length == 0); + static assert(__traits(isNested, S0)); + + struct S1 { int a; void foo() { i = 0; } } + static assert(__traits(isSame, FieldSymbols!S1, AliasSeq!(S1.a))); + static assert(__traits(isNested, S1)); + + struct S2 { int a; string b; void foo() { i = 0; } } + static assert(__traits(isSame, FieldSymbols!S2, AliasSeq!(S2.a, S2.b))); + static assert(__traits(isNested, S2)); + + struct S3 { int a; string b; real c; void foo() { i = 0; } } + static assert(__traits(isSame, FieldSymbols!S3, AliasSeq!(S3.a, S3.b, S3.c))); + static assert(__traits(isNested, S3)); + } + { + static class C0 {} + static assert(FieldSymbols!C0.length == 0); + + static class C1 { int a; } + static assert(__traits(isSame, FieldSymbols!C1, AliasSeq!(C1.a))); + + static class C2 { int a; string b; } + static assert(__traits(isSame, FieldSymbols!C2, AliasSeq!(C2.a, C2.b))); + + static class C3 { int a; string b; real c; } + static assert(__traits(isSame, FieldSymbols!C3, AliasSeq!(C3.a, C3.b, C3.c))); + + static class D0 : C3 {} + static assert(FieldSymbols!D0.length == 0); + + static class D1 : C3 { bool x; } + static assert(__traits(isSame, FieldSymbols!D1, AliasSeq!(D1.x))); + + static class D2 : C3 { bool x; int* y; } + static assert(__traits(isSame, FieldSymbols!D2, AliasSeq!(D2.x, D2.y))); + + static class D3 : C3 { bool x; int* y; short[] z; } + static assert(__traits(isSame, FieldSymbols!D3, AliasSeq!(D3.x, D3.y, D3.z))); + } + { + int i; + class C0 { void foo() { i = 0; }} + static assert(FieldSymbols!C0.length == 0); + static assert(__traits(isNested, C0)); + + class C1 { int a; void foo() { i = 0; } } + static assert(__traits(isSame, FieldSymbols!C1, AliasSeq!(C1.a))); + static assert(__traits(isNested, C1)); + + class C2 { int a; string b; void foo() { i = 0; } } + static assert(__traits(isSame, FieldSymbols!C2, AliasSeq!(C2.a, C2.b))); + static assert(__traits(isNested, C2)); + + class C3 { int a; string b; real c; void foo() { i = 0; } } + static assert(__traits(isSame, FieldSymbols!C3, AliasSeq!(C3.a, C3.b, C3.c))); + static assert(__traits(isNested, C3)); + + class D0 : C3 {} + static assert(FieldSymbols!D0.length == 0); + static assert(__traits(isNested, D0)); + + class D1 : C3 { bool x; } + static assert(__traits(isSame, FieldSymbols!D1, AliasSeq!(D1.x))); + static assert(__traits(isNested, D1)); + + class D2 : C3 { bool x; int* y; } + static assert(__traits(isSame, FieldSymbols!D2, AliasSeq!(D2.x, D2.y))); + static assert(__traits(isNested, D2)); + + class D3 : C3 { bool x; int* y; short[] z; } + static assert(__traits(isSame, FieldSymbols!D3, AliasSeq!(D3.x, D3.y, D3.z))); + static assert(__traits(isNested, D3)); + } + { + static union U0 {} + static assert(FieldSymbols!U0.length == 0); + + static union U1 { int a; } + static assert(__traits(isSame, FieldSymbols!U1, AliasSeq!(U1.a))); + + static union U2 { int a; string b; } + static assert(__traits(isSame, FieldSymbols!U2, AliasSeq!(U2.a, U2.b))); + + static union U3 { int a; string b; real c; } + static assert(__traits(isSame, FieldSymbols!U3, AliasSeq!(U3.a, U3.b, U3.c))); + } + { + static struct S + { + enum e = 42; + static str = "foobar"; + + string name() { return "foo"; } + + int[] arr; + + struct Inner1 { int i; } + + static struct Inner2 { long gnol; } + + union { int a; string b; } + + alias Foo = Inner1; + } + + static assert(__traits(isSame, FieldSymbols!S, AliasSeq!(S.arr, S.a, S.b))); + static assert(__traits(isSame, FieldSymbols!(const S), AliasSeq!(S.arr, S.a, S.b))); + static assert(__traits(isSame, FieldSymbols!(S.Inner1), AliasSeq!(S.Inner1.i))); + static assert(__traits(isSame, FieldSymbols!(S.Inner2), AliasSeq!(S.Inner2.gnol))); + } +} + +/++ + Evaluates to an $(D AliasSeq) of the types of the member variables of an + aggregate type (i.e. a struct, class, interface, or union). + + These are fields which take up memory space within an instance of the type + (i.e. not enums / manifest constants, since they don't take up memory + space, and not static member variables, since they don't take up memory + space within an instance). + + Hidden fields (like the virtual function table pointer or the context + pointer for nested types) are not included. + + For classes, only the direct member variables are included and not those + of any base classes. + + For interfaces, the result of FieldTypes is always empty, because + interfaces cannot have member variables. However, because interfaces are + aggregate types, they work with FieldTypes for consistency so that code + that's written to work on aggregate types doesn't have to worry about + whether it's dealing with an interface. + + See_Also: + $(LREF FieldNames) + $(LREF FieldSymbols) + $(DDSUBLINK spec/struct.html, struct_instance_properties, $(D tupleof)) + +/ +template FieldTypes(T) +if (isAggregateType!T) +{ + static if (is(T == struct) && __traits(isNested, T)) + alias FieldTypes = typeof(T.tupleof[0 .. $ - 1]); + else + alias FieldTypes = typeof(T.tupleof); +} + +/// +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + struct S + { + int x; + float y; + } + static assert(is(FieldTypes!S == AliasSeq!(int, float))); + + // Type qualifers will be passed on to the result. + static assert(is(FieldTypes!(const S) == AliasSeq!(const int, const float))); + static assert(is(FieldTypes!(shared S) == AliasSeq!(shared int, shared float))); + + class C + { + // static variables are not included. + static int var; + + // Manifest constants are not included. + enum lang = "dlang"; + + // Functions are not included, even if they're @property functions. + @property int foo() { return 42; } + + string s; + int i; + int[] arr; + } + static assert(is(FieldTypes!C == AliasSeq!(string, int, int[]))); + + // Only direct member variables are included. Member variables from any base + // classes are not. + class D : C + { + real r; + } + static assert(is(FieldTypes!D == AliasSeq!real)); + + // FieldTypes will always be empty for an interface, since it's not legal + // for interfaces to have member variables. + interface I + { + } + static assert(FieldTypes!I.length == 0); + + union U + { + int i; + double d; + long l; + S s; + } + static assert(is(FieldTypes!U == AliasSeq!(int, double, long, S))); + + // FieldTypes only operates on aggregate types. + static assert(!__traits(compiles, FieldTypes!int)); + static assert(!__traits(compiles, FieldTypes!(S*))); + static assert(!__traits(compiles, FieldTypes!(C[]))); +} + +@safe unittest +{ + import phobos.sys.meta : AliasSeq; + + { + static struct S0 {} + static assert(FieldTypes!S0.length == 0); + + static struct S1 { int a; } + static assert(is(FieldTypes!S1 == AliasSeq!int)); + + static struct S2 { int a; string b; } + static assert(is(FieldTypes!S2 == AliasSeq!(int, string))); + + static struct S3 { int a; string b; real c; } + static assert(is(FieldTypes!S3 == AliasSeq!(int, string, real))); + } + { + int i; + struct S0 { void foo() { i = 0; }} + static assert(FieldTypes!S0.length == 0); + static assert(__traits(isNested, S0)); + + struct S1 { int a; void foo() { i = 0; } } + static assert(is(FieldTypes!S1 == AliasSeq!int)); + static assert(__traits(isNested, S1)); + + struct S2 { int a; string b; void foo() { i = 0; } } + static assert(is(FieldTypes!S2 == AliasSeq!(int, string))); + static assert(__traits(isNested, S2)); + + struct S3 { int a; string b; real c; void foo() { i = 0; } } + static assert(is(FieldTypes!S3 == AliasSeq!(int, string, real))); + static assert(__traits(isNested, S3)); + } + { + static class C0 {} + static assert(FieldTypes!C0.length == 0); + + static class C1 { int a; } + static assert(is(FieldTypes!C1 == AliasSeq!int)); + + static class C2 { int a; string b; } + static assert(is(FieldTypes!C2 == AliasSeq!(int, string))); + + static class C3 { int a; string b; real c; } + static assert(is(FieldTypes!C3 == AliasSeq!(int, string, real))); + + static class D0 : C3 {} + static assert(FieldTypes!D0.length == 0); + + static class D1 : C3 { bool x; } + static assert(is(FieldTypes!D1 == AliasSeq!bool)); + + static class D2 : C3 { bool x; int* y; } + static assert(is(FieldTypes!D2 == AliasSeq!(bool, int*))); + + static class D3 : C3 { bool x; int* y; short[] z; } + static assert(is(FieldTypes!D3 == AliasSeq!(bool, int*, short[]))); + } + { + int i; + class C0 { void foo() { i = 0; }} + static assert(FieldTypes!C0.length == 0); + static assert(__traits(isNested, C0)); + + class C1 { int a; void foo() { i = 0; } } + static assert(is(FieldTypes!C1 == AliasSeq!int)); + static assert(__traits(isNested, C1)); + + class C2 { int a; string b; void foo() { i = 0; } } + static assert(is(FieldTypes!C2 == AliasSeq!(int, string))); + static assert(__traits(isNested, C2)); + + class C3 { int a; string b; real c; void foo() { i = 0; } } + static assert(is(FieldTypes!C3 == AliasSeq!(int, string, real))); + static assert(__traits(isNested, C3)); + + class D0 : C3 {} + static assert(FieldTypes!D0.length == 0); + static assert(__traits(isNested, D0)); + + class D1 : C3 { bool x; } + static assert(is(FieldTypes!D1 == AliasSeq!bool)); + static assert(__traits(isNested, D1)); + + class D2 : C3 { bool x; int* y; } + static assert(is(FieldTypes!D2 == AliasSeq!(bool, int*))); + static assert(__traits(isNested, D2)); + + class D3 : C3 { bool x; int* y; short[] z; } + static assert(is(FieldTypes!D3 == AliasSeq!(bool, int*, short[]))); + static assert(__traits(isNested, D3)); + } + { + static union U0 {} + static assert(FieldTypes!U0.length == 0); + + static union U1 { int a; } + static assert(is(FieldTypes!U1 == AliasSeq!int)); + + static union U2 { int a; string b; } + static assert(is(FieldTypes!U2 == AliasSeq!(int, string))); + + static union U3 { int a; string b; real c; } + static assert(is(FieldTypes!U3 == AliasSeq!(int, string, real))); + } + { + static struct S + { + enum e = 42; + static str = "foobar"; + + string name() { return "foo"; } + + int[] arr; + + struct Inner1 { int i; } + + static struct Inner2 { long gnol; } + + union { int a; string b; } + + alias Foo = Inner1; + } + + static assert(is(FieldTypes!S == AliasSeq!(int[], int, string))); + static assert(is(FieldTypes!(const S) == AliasSeq!(const(int[]), const int, const string))); + static assert(is(FieldTypes!(S.Inner1) == AliasSeq!int)); + static assert(is(FieldTypes!(S.Inner2) == AliasSeq!long)); + } +} + /++ Takes a type which is an associative array and evaluates to the type of the keys in that associative array. From 4b2ea30979d3cc48f39ea5b7119004ace6df96ac Mon Sep 17 00:00:00 2001 From: 0-v-0 Date: Mon, 22 Apr 2024 21:04:56 +0800 Subject: [PATCH 254/327] Remove std.conv import from createStorageAndFields --- std/bitmanip.d | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/std/bitmanip.d b/std/bitmanip.d index 717fa2dbb7b..de2ff318f4e 100644 --- a/std/bitmanip.d +++ b/std/bitmanip.d @@ -164,8 +164,7 @@ private template createStorageAndFields(Ts...) alias StoreType = ulong; else { - import std.conv : to; - static assert(false, "Field widths must sum to 8, 16, 32, or 64, not " ~ to!string(Size)); + static assert(false, "Field widths must sum to 8, 16, 32, or 64, not " ~ Size.stringof); alias StoreType = ulong; // just to avoid another error msg } From 5ce534459330c466ec1da3619ac2665d52b7d99a Mon Sep 17 00:00:00 2001 From: chloekek Date: Fri, 26 Apr 2024 00:56:55 +0200 Subject: [PATCH 255/327] Promote `std.process.Config.preExecFunction` to a delegate std.process.Config.preExecFunction is now a delegate instead of a function pointer, and can therefore capture an environment, for example: import core.sys.linux.sys.prctl : PR_SET_PDEATHSIG, prctl; import std.process : Config, execute; void runProgram(int pdeathsig) { execute( ["program"], config: Config( preExecFunction: () @trusted => prctl(PR_SET_PDEATHSIG, pdeathsig, 0, 0, 0) != -1, ), ); } Despite function pointers implicitly converting to delegates, this is a backwards-incompatible change, as user code may rely on the field being a function pointer. For example, code like the following will no longer compile: import std.process : Config; nothrow pure @nogc @safe bool f() { return true; } void example() { auto config = Config(preExecFunction: &f); bool function() g = config.preExecFunction; } --- ...process.Config.preExecFunction-delegate.dd | 38 +++++++++++++++++++ std/process.d | 20 +++++++++- 2 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 changelog/std.process.Config.preExecFunction-delegate.dd diff --git a/changelog/std.process.Config.preExecFunction-delegate.dd b/changelog/std.process.Config.preExecFunction-delegate.dd new file mode 100644 index 00000000000..e9b13b3c268 --- /dev/null +++ b/changelog/std.process.Config.preExecFunction-delegate.dd @@ -0,0 +1,38 @@ +Promote `std.process.Config.preExecFunction` to a delegate + +$(LINK2 $(ROOT_DIR)phobos/std_process.html#.Config.preExecFunction, +`std.process.Config.preExecFunction`) is now a delegate instead of a function +pointer, and can therefore capture an environment, for example: + +------- +import core.sys.linux.sys.prctl : PR_SET_PDEATHSIG, prctl; +import std.process : Config, execute; + +void runProgram(int pdeathsig) +{ + execute( + ["program"], + config: Config( + preExecFunction: () @trusted => + prctl(PR_SET_PDEATHSIG, pdeathsig, 0, 0, 0) != -1, + ), + ); +} +------- + +Despite function pointers implicitly converting to delegates, this is a +backwards-incompatible change, as user code may rely on the field being a +function pointer. For example, code like the following will no longer compile: + +------- +import std.process : Config; + +nothrow pure @nogc @safe +bool f() { return true; } + +void example() +{ + auto config = Config(preExecFunction: &f); + bool function() g = config.preExecFunction; +} +------- diff --git a/std/process.d b/std/process.d index 494910f3535..fbdb2e48ea9 100644 --- a/std/process.d +++ b/std/process.d @@ -1271,6 +1271,22 @@ version (Posix) assert(received); } +version (Posix) +@safe unittest +{ + foreach (i; 0 .. 3) + { + auto config = Config( + preExecFunction: delegate() @trusted { + _Exit(i); + return true; + }, + ); + auto pid = spawnProcess(["false"], config: config); + assert(wait(pid) == i); + } +} + /* Implementation of spawnProcess() for Windows. @@ -2188,11 +2204,11 @@ struct Config On Windows, this member is not available. */ - bool function() nothrow @nogc @safe preExecFunction; + bool delegate() nothrow @nogc @safe preExecFunction; } else version (Posix) { - bool function() nothrow @nogc @safe preExecFunction; + bool delegate() nothrow @nogc @safe preExecFunction; } } From 7a280a938e48d96cca5e01bdd5c5ae71bd502114 Mon Sep 17 00:00:00 2001 From: chloekek Date: Fri, 26 Apr 2024 00:56:55 +0200 Subject: [PATCH 256/327] Add std.process.Config.preExecDelegate std.process.Config.preExecDelegate is just like std.process.Config.preExecFunction, but can capture an environment, for example: import core.sys.linux.sys.prctl : PR_SET_PDEATHSIG, prctl; import std.process : Config, execute; void runProgram(int pdeathsig) { execute( ["program"], config: Config( preExecDelegate: () @trusted => prctl(PR_SET_PDEATHSIG, pdeathsig, 0, 0, 0) != -1, ), ); } preExecFunction is retained for backwards compatibility. If both preExecFunction and preExecDelegate are given, both are called. --- .../std.process.Config.preExecDelegate.dd | 25 ++++++++++ ...process.Config.preExecFunction-delegate.dd | 38 --------------- std/process.d | 46 ++++++++++++++++--- 3 files changed, 64 insertions(+), 45 deletions(-) create mode 100644 changelog/std.process.Config.preExecDelegate.dd delete mode 100644 changelog/std.process.Config.preExecFunction-delegate.dd diff --git a/changelog/std.process.Config.preExecDelegate.dd b/changelog/std.process.Config.preExecDelegate.dd new file mode 100644 index 00000000000..393d26cf0b9 --- /dev/null +++ b/changelog/std.process.Config.preExecDelegate.dd @@ -0,0 +1,25 @@ +Add `std.process.Config.preExecDelegate` + +$(LINK2 $(ROOT_DIR)phobos/std_process.html#.Config.preExecDelegate, `std.process.Config.preExecDelegate`) +is just like +$(LINK2 $(ROOT_DIR)phobos/std_process.html#.Config.preExecFunction, `std.process.Config.preExecFunction`), +but can capture an environment, for example: + +------- +import core.sys.linux.sys.prctl : PR_SET_PDEATHSIG, prctl; +import std.process : Config, execute; + +void runProgram(int pdeathsig) +{ + execute( + ["program"], + config: Config( + preExecDelegate: () @trusted => + prctl(PR_SET_PDEATHSIG, pdeathsig, 0, 0, 0) != -1, + ), + ); +} +------- + +`preExecFunction` is retained for backwards compatibility. If both +`preExecFunction` and `preExecDelegate` are given, both are called. diff --git a/changelog/std.process.Config.preExecFunction-delegate.dd b/changelog/std.process.Config.preExecFunction-delegate.dd deleted file mode 100644 index e9b13b3c268..00000000000 --- a/changelog/std.process.Config.preExecFunction-delegate.dd +++ /dev/null @@ -1,38 +0,0 @@ -Promote `std.process.Config.preExecFunction` to a delegate - -$(LINK2 $(ROOT_DIR)phobos/std_process.html#.Config.preExecFunction, -`std.process.Config.preExecFunction`) is now a delegate instead of a function -pointer, and can therefore capture an environment, for example: - -------- -import core.sys.linux.sys.prctl : PR_SET_PDEATHSIG, prctl; -import std.process : Config, execute; - -void runProgram(int pdeathsig) -{ - execute( - ["program"], - config: Config( - preExecFunction: () @trusted => - prctl(PR_SET_PDEATHSIG, pdeathsig, 0, 0, 0) != -1, - ), - ); -} -------- - -Despite function pointers implicitly converting to delegates, this is a -backwards-incompatible change, as user code may rely on the field being a -function pointer. For example, code like the following will no longer compile: - -------- -import std.process : Config; - -nothrow pure @nogc @safe -bool f() { return true; } - -void example() -{ - auto config = Config(preExecFunction: &f); - bool function() g = config.preExecFunction; -} -------- diff --git a/std/process.d b/std/process.d index fbdb2e48ea9..325689ba51d 100644 --- a/std/process.d +++ b/std/process.d @@ -1102,6 +1102,14 @@ private Pid spawnProcessPosix(scope const(char[])[] args, } } + if (config.preExecDelegate !is null) + { + if (config.preExecDelegate() != true) + { + abortOnError(forkPipeOut, InternalError.preExec, .errno); + } + } + // Execute program. core.sys.posix.unistd.execve(argz[0], argz.ptr, envz); @@ -1187,7 +1195,7 @@ private Pid spawnProcessPosix(scope const(char[])[] args, errorMsg = "Failed to allocate memory"; break; case InternalError.preExec: - errorMsg = "Failed to execute preExecFunction"; + errorMsg = "Failed to execute preExecFunction or preExecDelegate"; break; case InternalError.noerror: assert(false); @@ -1272,18 +1280,25 @@ version (Posix) } version (Posix) -@safe unittest +@system unittest { + __gshared int j; foreach (i; 0 .. 3) { auto config = Config( - preExecFunction: delegate() @trusted { - _Exit(i); + preExecFunction: function() @trusted { + j = 1; + return true; + }, + preExecDelegate: delegate() @trusted { + // j should now be 1, as preExecFunction is called before + // preExecDelegate is. + _Exit(i + j); return true; }, ); auto pid = spawnProcess(["false"], config: config); - assert(wait(pid) == i); + assert(wait(pid) == i + 1); } } @@ -2202,13 +2217,30 @@ struct Config Please note that the code in this function must only use async-signal-safe functions.) + If $(LREF preExecDelegate) is also set, it is called last. + + On Windows, this member is not available. + */ + bool function() nothrow @nogc @safe preExecFunction; + + /** + A delegate that is called before `exec` in $(LREF spawnProcess). + It returns `true` if succeeded and otherwise returns `false`. + + $(RED Warning: + Please note that the code in this function must only use + async-signal-safe functions.) + + If $(LREF preExecFunction) is also set, it is called first. + On Windows, this member is not available. */ - bool delegate() nothrow @nogc @safe preExecFunction; + bool delegate() nothrow @nogc @safe preExecDelegate; } else version (Posix) { - bool delegate() nothrow @nogc @safe preExecFunction; + bool function() nothrow @nogc @safe preExecFunction; + bool delegate() nothrow @nogc @safe preExecDelegate; } } From 140484a4bbfefcc2624f3bd70eb4c5010f11ca59 Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Sun, 28 Apr 2024 20:32:06 -0700 Subject: [PATCH 257/327] Add DUB install to VM initialization. (#8992) --- .github/workflows/main.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ed27c241e60..df7dbe21bd3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -51,6 +51,10 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 50 + + - name: Install Host D compiler + uses: dlang-community/setup-dlang@v1 + - name: Clone DMD run: | set -uexo pipefail @@ -131,6 +135,10 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 50 + + - name: Install Host D compiler + uses: dlang-community/setup-dlang@v1 + - name: Run in VM uses: cross-platform-actions/action@v0.23.0 with: From ffe00ebdc38ee803aab25e8032ca5828e06fafcf Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Wed, 3 Apr 2024 23:13:48 -0600 Subject: [PATCH 258/327] Fix bugzilla issue 24481: retro stopped working In an attempt make it so that non-copyable types worked with some of the functions in std/range/package.d, they were made to use moves instead of assignment, which broke the code for types which work with assignment but not moves (which affected the folks at Weka). The code checked for assignment but not whether move could be used, and that didn't change when the code was changed to use move, meaning that the checks didn't match what the code was actually doing. So, to support both the non-copyable types and the ones that can be assigned to but not moved to, this changes the code to use core.lifetime.forward which will move the argument if it can and assign otherwise. So ,the code that worked previously should work again, and the newer functionality of being able to use non-copyable types with this code should continue to work. Discussion here: https://github.com/dlang/phobos/pull/8721 --- std/range/package.d | 254 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 226 insertions(+), 28 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index a2f5cc498c1..9f530418a85 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -313,16 +313,18 @@ if (isBidirectionalRange!(Unqual!Range)) { @property void front(ElementType!R val) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - source.back = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source.back = __ctfe ? val : forward!val; } @property void back(ElementType!R val) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - source.front = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source.front = __ctfe ? val : forward!val; } } @@ -334,9 +336,10 @@ if (isBidirectionalRange!(Unqual!Range)) { void opIndexAssign(ElementType!R val, size_t n) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - source[retroIndex(n)] = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source[retroIndex(n)] = __ctfe ? val : forward!val; } } @@ -494,6 +497,32 @@ pure @safe nothrow unittest assert(equal(r, [S(3), S(2), S(1)])); } +// https://issues.dlang.org/show_bug.cgi?id=24481 +@safe unittest +{ + bool called; + struct Handle + { + int entry; + void opAssign()(auto ref const(typeof(this)) that) const { called = true; } + } + + const(Handle)[5] arr = [Handle(0), Handle(1), Handle(2), Handle(3), Handle(4)]; + auto range = arr[].retro(); + + called = false; + range.front = Handle(42); + assert(called); + + called = false; + range.back = Handle(42); + assert(called); + + called = false; + range[2] = Handle(42); + assert(called); +} + /** Iterates range `r` with stride `n`. If the range is a random-access range, moves by indexing into the range; otherwise, @@ -604,9 +633,10 @@ do { @property void front(ElementType!R val) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - source.front = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source.front = __ctfe ? val : forward!val; } } @@ -899,6 +929,24 @@ pure @safe nothrow unittest assert(equal(r, [S(1), S(4)])); } +// https://issues.dlang.org/show_bug.cgi?id=24481 +@safe unittest +{ + bool called; + struct Handle + { + int entry; + void opAssign()(auto ref const(typeof(this)) that) const { called = true; } + } + + const(Handle)[5] arr = [Handle(0), Handle(1), Handle(2), Handle(3), Handle(4)]; + auto range = arr[].stride(2); + + called = false; + range.front = Handle(42); + assert(called); +} + /** Spans multiple ranges in sequence. The function `chain` takes any number of ranges and returns a $(D Chain!(R1, R2,...)) object. The @@ -1120,14 +1168,15 @@ if (Ranges.length > 0 && @property void front(RvalueElementType v) { - import std.algorithm.mutation : move; + import core.lifetime : forward; sw: switch (frontIndex) { static foreach (i; 0 .. R.length) { case i: - source[i].front = move(v); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source[i].front = __ctfe ? v : forward!v; break sw; } @@ -1246,14 +1295,15 @@ if (Ranges.length > 0 && { @property void back(RvalueElementType v) { - import std.algorithm.mutation : move; + import core.lifetime : forward; sw: switch (backIndex) { static foreach_reverse (i; 1 .. R.length + 1) { case i: - source[i-1].back = move(v); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source[i - 1].back = __ctfe ? v : forward!v; break sw; } @@ -1359,7 +1409,7 @@ if (Ranges.length > 0 && static if (allSameType && allSatisfy!(hasAssignableElements, R)) void opIndexAssign(ElementType v, size_t index) { - import std.algorithm.mutation : move; + import core.lifetime : forward; sw: switch (frontIndex) { @@ -1376,7 +1426,8 @@ if (Ranges.length > 0 && } } - source[i][index] = move(v); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source[i][index] = __ctfe ? v : forward!v; break sw; } @@ -1727,6 +1778,32 @@ pure @safe nothrow unittest assert(typeof(range).init.empty); } +// https://issues.dlang.org/show_bug.cgi?id=24481 +@safe unittest +{ + bool called; + struct Handle + { + int entry; + void opAssign()(auto ref const(typeof(this)) that) const { called = true; } + } + + const(Handle)[5] arr = [Handle(0), Handle(1), Handle(2), Handle(3), Handle(4)]; + auto range = arr[0 .. 2].chain(arr[4 .. 5]); + + called = false; + range.front = Handle(42); + assert(called); + + called = false; + range.back = Handle(42); + assert(called); + + called = false; + range[2] = Handle(42); + assert(called); +} + /** Choose one of two ranges at runtime depending on a Boolean condition. @@ -2694,12 +2771,14 @@ if (isInputRange!(Unqual!Range) && /// ditto @property void front(ElementType!R v) { - import std.algorithm.mutation : move; + import core.lifetime : forward; assert(!empty, "Attempting to assign to the front of an empty " ~ Take.stringof); - source.front = move(v); + + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + source.front = __ctfe ? v : forward!v; } static if (hasMobileElements!R) @@ -2996,6 +3075,25 @@ pure @safe nothrow @nogc unittest assert(r.take(2).equal(repeat(1, 2))); } +// https://issues.dlang.org/show_bug.cgi?id=24481 +@safe unittest +{ + import std.algorithm.iteration : filter; + + bool called; + struct Handle + { + int entry; + void opAssign()(auto ref const(typeof(this)) that) const { called = true; } + } + + const(Handle)[5] arr = [Handle(0), Handle(1), Handle(2), Handle(3), Handle(4)]; + auto range = arr[].filter!(a => true)().take(3); + + called = false; + range.front = Handle(42); + assert(called); +} /** Similar to $(LREF take), but assumes that `range` has at least $(D @@ -3075,12 +3173,14 @@ if (isInputRange!R) { @property auto ref front(ElementType!R v) { - import std.algorithm.mutation : move; + import core.lifetime : forward; assert(!empty, "Attempting to assign to the front of an empty " ~ typeof(this).stringof); - return _input.front = move(v); + + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + return _input.front = __ctfe ? v : forward!v; } } } @@ -3217,6 +3317,26 @@ pure @safe nothrow unittest }} } +// https://issues.dlang.org/show_bug.cgi?id=24481 +@safe unittest +{ + import std.algorithm.iteration : filter; + + bool called; + struct Handle + { + int entry; + void opAssign()(auto ref const(typeof(this)) that) const { called = true; } + } + + const(Handle)[5] arr = [Handle(0), Handle(1), Handle(2), Handle(3), Handle(4)]; + auto range = arr[].filter!(a => true)().takeExactly(3); + + called = false; + range.front = Handle(42); + assert(called); +} + /** Returns a range with at most one element; for example, $(D takeOne([42, 43, 44])) returns a range consisting of the integer $(D @@ -4310,9 +4430,10 @@ if (isForwardRange!R && !isInfinite!R) /// ditto @property void front(ElementType!R val) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - _original[_index] = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + _original[_index] = __ctfe ? val : forward!val; } } @@ -4422,9 +4543,10 @@ if (isForwardRange!R && !isInfinite!R) /// ditto @property auto front(ElementType!R val) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - return _current.front = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + return _current.front = __ctfe ? val : forward!val; } } @@ -4767,6 +4889,35 @@ pure @safe unittest assert(equal(r.save, "foof")); } +// https://issues.dlang.org/show_bug.cgi?id=24481 +@safe unittest +{ + import std.algorithm.iteration : filter; + + bool called; + struct Handle + { + int entry; + void opAssign()(auto ref const(typeof(this)) that) const { called = true; } + } + + const(Handle)[3] arr = [Handle(0), Handle(1), Handle(2)]; + { + auto range = arr[].cycle().take(5); + + called = false; + range.front = Handle(42); + assert(called); + } + { + auto range = arr[].filter!(a => true)().cycle().take(5); + + called = false; + range.front = Handle(42); + assert(called); + } +} + private alias lengthType(R) = typeof(R.init.length.init); /** @@ -7438,9 +7589,10 @@ struct FrontTransversal(Ror, { @property void front(ElementType val) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - _input.front.front = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + _input.front.front = __ctfe ? val : forward!val; } } @@ -7497,9 +7649,10 @@ struct FrontTransversal(Ror, { @property void back(ElementType val) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - _input.back.front = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + _input.back.front = __ctfe ? val : forward!val; } } } @@ -7532,9 +7685,10 @@ struct FrontTransversal(Ror, { void opIndexAssign(ElementType val, size_t n) { - import std.algorithm.mutation : move; + import core.lifetime : forward; - _input[n].front = move(val); + // __ctfe check is workaround for https://issues.dlang.org/show_bug.cgi?id=21542 + _input[n].front = __ctfe ? val : forward!val; } } mixin ImplementLength!_input; @@ -7675,6 +7829,50 @@ pure @safe unittest assert(ft.empty); } +// https://issues.dlang.org/show_bug.cgi?id=24481 +@safe unittest +{ + bool called; + struct Handle + { + int entry; + void opAssign()(auto ref const(typeof(this)) that) const { called = true; } + } + + const(Handle)[][] arr = [[Handle(0), Handle(10)], + [Handle(1), Handle(11)], + [Handle(2), Handle(12)], + [Handle(3), Handle(13)], + [Handle(4), Handle(14)]]; + + { + auto range = arr.frontTransversal(); + + called = false; + range.front = Handle(42); + assert(called == true); + + called = false; + range.back = Handle(42); + assert(called == true); + } + { + auto range = arr.frontTransversal!(TransverseOptions.assumeNotJagged)(); + + called = false; + range.front = Handle(42); + assert(called == true); + + called = false; + range.back = Handle(42); + assert(called == true); + + called = false; + range[0] = Handle(42); + assert(called == true); + } +} + /** Given a range of ranges, iterate transversally through the `n`th element of each of the enclosed ranges. This function From 9a8325ca5f3269ce1154baf1da8ea2b491e834aa Mon Sep 17 00:00:00 2001 From: dokutoku <3581664+dokutoku@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:08:10 +0900 Subject: [PATCH 259/327] Fix some invalid links (#8994) Co-authored-by: dokutoku <3729541-dokutoku@users.noreply.gitlab.com> --- std/algorithm/setops.d | 2 +- std/socket.d | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/std/algorithm/setops.d b/std/algorithm/setops.d index cc6f5b77db7..363bd16a0f9 100644 --- a/std/algorithm/setops.d +++ b/std/algorithm/setops.d @@ -8,7 +8,7 @@ $(LREF setIntersection), $(LREF setSymmetricDifference) expect a range of sorted ranges as input. All algorithms are generalized to accept as input not only sets but also -$(HTTP https://en.wikipedia.org/wiki/Multiset, multisets). Each algorithm +$(LINK2 https://en.wikipedia.org/wiki/Multiset, multisets). Each algorithm documents behaviour in the presence of duplicated inputs. $(SCRIPT inhibitQuickIndex = 1;) diff --git a/std/socket.d b/std/socket.d index b2570f596ca..e86a51fe2df 100644 --- a/std/socket.d +++ b/std/socket.d @@ -1925,7 +1925,7 @@ version (StdDdoc) * auto abstractAddr = new UnixAddress("\0/tmp/dbus-OtHLWmCLPR"); * --- * - * See_Also: $(HTTP http://man7.org/linux/man-pages/man7/unix.7.html, UNIX(7)) + * See_Also: $(HTTP man7.org/linux/man-pages/man7/unix.7.html, UNIX(7)) */ class UnixAddress: Address { From c970ca67f25eab9f975da285d6cb4a56902c525a Mon Sep 17 00:00:00 2001 From: Bastiaan Veelo Date: Wed, 1 May 2024 14:50:06 +0200 Subject: [PATCH 260/327] Fix documentation typos. --- std/logger/core.d | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/std/logger/core.d b/std/logger/core.d index 846f6ee214a..0633bddee81 100644 --- a/std/logger/core.d +++ b/std/logger/core.d @@ -1473,15 +1473,15 @@ if (sharedLog !is myLogger) atomicStore!(MemoryOrder.seq)(stdSharedLogger, atomicLoad(logger)); } -/** This methods get and set the global `LogLevel`. +/** These methods get and set the global `LogLevel`. -Every log message with a `LogLevel` lower as the global `LogLevel` +Every log message with a `LogLevel` lower than the global `LogLevel` will be discarded before it reaches `writeLogMessage` method of any `Logger`. */ /* Implementation note: For any public logging call, the global log level shall only be queried once on -entry. Otherwise when another threads changes the level, we would work with +entry. Otherwise when another thread changes the level, we would work with different levels at different spots in the code. */ @property LogLevel globalLogLevel() @safe @nogc From 449b8e12faa2e03b1db3dffcadd27afb40ad578c Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sat, 4 May 2024 12:55:46 +0200 Subject: [PATCH 261/327] Revert "Add DUB install to VM initialization. (#8992)" (#8999) This reverts commit 140484a4bbfefcc2624f3bd70eb4c5010f11ca59. --- .github/workflows/main.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index df7dbe21bd3..ed27c241e60 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -51,10 +51,6 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 50 - - - name: Install Host D compiler - uses: dlang-community/setup-dlang@v1 - - name: Clone DMD run: | set -uexo pipefail @@ -135,10 +131,6 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 50 - - - name: Install Host D compiler - uses: dlang-community/setup-dlang@v1 - - name: Run in VM uses: cross-platform-actions/action@v0.23.0 with: From f9fa1354fa242be694de689740e79c82141f09dc Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Tue, 7 May 2024 16:30:23 -0700 Subject: [PATCH 262/327] Remove OMF flags from Makefile (#8993) --- Makefile | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Makefile b/Makefile index f8fe1c62f7b..89704a431ee 100644 --- a/Makefile +++ b/Makefile @@ -128,10 +128,6 @@ ifeq (,$(findstring win,$(OS))) ifneq (osx,$(OS)) NODEFAULTLIB += -L-lpthread -L-lm endif -else - ifeq ($(MODEL),32omf) - CPPFLAGS := -DNO_snprintf - endif endif # Set CC, CC_OUTFILEFLAG and CFLAGS unless using importC @@ -142,9 +138,6 @@ ifneq ($(USE_IMPORTC),1) ifeq ($(OS),win32wine) CC := wine dmc.exe CFLAGS := $(if $(findstring $(BUILD),debug),-g,-O) - else ifeq ($(MODEL),32omf) - CC := dmc - CFLAGS := $(if $(findstring $(BUILD),debug),-g,-O) else ifeq ($(OS),windows) CC := cl CC_OUTFILEFLAG := /Fo @@ -202,9 +195,7 @@ ifeq (,$(findstring win,$(OS))) SONAME:=libphobos2.so.$(MAJOR).$(MINOR) LIBSO:=$(ROOT)/$(SONAME).$(PATCH) else - ifeq ($(MODEL),32omf) - LIB:=phobos.lib - else ifeq ($(MODEL),32) + ifeq ($(MODEL),32) LIB:=phobos32mscoff.lib else LIB:=phobos$(MODEL).lib From 1a8d2eae06f0d37dd137517f51115dfc79276b0b Mon Sep 17 00:00:00 2001 From: WANG Rui Date: Tue, 7 May 2024 23:12:50 +0800 Subject: [PATCH 263/327] std/math/hardware.d: Fix compile error for LoongArch ``` std/math/hardware.d(187):1:19: error: invalid operand for instruction movfcsr2gr $a0, $r2 ``` --- std/math/hardware.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/math/hardware.d b/std/math/hardware.d index 4bfe792428c..501245ba90b 100644 --- a/std/math/hardware.d +++ b/std/math/hardware.d @@ -165,7 +165,7 @@ private: uint result = void; asm pure nothrow @nogc { - "movfcsr2gr %0,$r2" : "=r" (result); + "movfcsr2gr %0, $fcsr2" : "=r" (result); } return result & EXCEPTIONS_MASK; } @@ -883,7 +883,7 @@ private: ControlState cont; asm pure nothrow @nogc { - "movfcsr2gr %0,$r0" : "=r" (cont); + "movfcsr2gr %0, $fcsr0" : "=r" (cont); } cont &= (roundingMask | allExceptions); return cont; From 82e8e32b2ff546a86eb3683b1af4ecc5939f633e Mon Sep 17 00:00:00 2001 From: Steven Schveighoffer Date: Mon, 13 May 2024 21:10:06 -0400 Subject: [PATCH 264/327] Fix bugzilla issue 24549 -- environment.get(null) segfaults on Linux --- std/process.d | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/std/process.d b/std/process.d index 325689ba51d..c53a5b11709 100644 --- a/std/process.d +++ b/std/process.d @@ -350,6 +350,8 @@ static: */ bool opBinaryRight(string op : "in")(scope const(char)[] name) @trusted { + if (name is null) + return false; version (Posix) return core.sys.posix.stdlib.getenv(name.tempCString()) !is null; else version (Windows) @@ -451,6 +453,10 @@ private: // doesn't exist. void getImpl(scope const(char)[] name, scope void delegate(const(OSChar)[]) @safe sink) @trusted { + // fix issue https://issues.dlang.org/show_bug.cgi?id=24549 + if (name is null) + return sink(null); + version (Windows) { // first we ask windows how long the environment variable is, @@ -600,6 +606,15 @@ private: assert("std_process" !in environment); } +// https://issues.dlang.org/show_bug.cgi?id=24549 +@safe unittest +{ + import std.exception : assertThrown; + assert(environment.get(null) is null); + assertThrown(environment[null]); + assert(!(null in environment)); +} + // ============================================================================= // Functions and classes for process management. // ============================================================================= From 2133b68234c1f4e3fa9f9e85135fe141bcd618d4 Mon Sep 17 00:00:00 2001 From: Ben Jones Date: Mon, 20 May 2024 14:18:50 -0600 Subject: [PATCH 265/327] fix goto skipping over declaration --- std/string.d | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/std/string.d b/std/string.d index ca14c23747e..b350d6b7134 100644 --- a/std/string.d +++ b/std/string.d @@ -5942,36 +5942,36 @@ C1[] tr(C1, C2, C3, C4 = immutable char) n = 0; // consider it 'found' at position 0 Lfound: - - // Find the nth character in to[] - dchar nextt; - for (size_t i = 0; i < to.length; ) - { - immutable t = decode(to, i); - if (t == '-' && lastt != dchar.init && i < to.length) + { // create a new scope so that gotos don't skip of declaration of nextt + // Find the nth character in to[] + dchar nextt; + for (size_t i = 0; i < to.length; ) { - nextt = decode(to, i); - n -= nextt - lastt; - if (n < 0) + immutable t = decode(to, i); + if (t == '-' && lastt != dchar.init && i < to.length) { - newc = nextt + n + 1; + nextt = decode(to, i); + n -= nextt - lastt; + if (n < 0) + { + newc = nextt + n + 1; + goto Lnewc; + } + lastt = dchar.init; + continue; + } + if (n == 0) + { newc = t; goto Lnewc; } - lastt = dchar.init; - continue; - } - if (n == 0) - { newc = t; - goto Lnewc; + lastt = t; + nextt = t; + n--; } - lastt = t; - nextt = t; - n--; + if (mod_d) + continue; + newc = nextt; } - if (mod_d) - continue; - newc = nextt; - Lnewc: if (mod_s && modified && newc == lastc) continue; From 38fa9c329419598510b7b71dcde6763dce1f8170 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 24 May 2024 20:08:43 +0100 Subject: [PATCH 266/327] Fix Bugzilla 24564 - std.file.DirEntry throws Exception instead of FileException --- std/file.d | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/std/file.d b/std/file.d index 1db779bdf8e..2a0d1392c08 100644 --- a/std/file.d +++ b/std/file.d @@ -4053,12 +4053,10 @@ else version (Posix) +/ void _ensureStatDone() @trusted scope { - import std.exception : enforce; - if (_didStat) return; - enforce(stat(_name.tempCString(), &_statBuf) == 0, + cenforce(stat(_name.tempCString(), &_statBuf) == 0, "Failed to stat file `" ~ _name ~ "'"); _didStat = true; @@ -4095,13 +4093,11 @@ else version (Posix) +/ void _ensureLStatDone() @trusted scope { - import std.exception : enforce; - if (_didLStat) return; stat_t statbuf = void; - enforce(lstat(_name.tempCString(), &statbuf) == 0, + cenforce(lstat(_name.tempCString(), &statbuf) == 0, "Failed to stat file `" ~ _name ~ "'"); _lstatMode = statbuf.st_mode; @@ -4183,12 +4179,12 @@ else version (Posix) assert(!de.isFile); assert(!de.isDir); assert(de.isSymlink); - assertThrown(de.size); - assertThrown(de.timeStatusChanged); - assertThrown(de.timeLastAccessed); - assertThrown(de.timeLastModified); - assertThrown(de.attributes); - assertThrown(de.statBuf); + assertThrown!FileException(de.size); + assertThrown!FileException(de.timeStatusChanged); + assertThrown!FileException(de.timeLastAccessed); + assertThrown!FileException(de.timeLastModified); + assertThrown!FileException(de.attributes); + assertThrown!FileException(de.statBuf); assert(symfile.exists); symfile.remove(); } From acd2013413265dcabc48a7ddf6afb45ba69a275f Mon Sep 17 00:00:00 2001 From: Martin Kinkelin Date: Sat, 25 May 2024 17:20:18 +0200 Subject: [PATCH 267/327] Get rid of obsolete CRuntime_DigitalMars support --- std/experimental/allocator/mallocator.d | 137 +---------- std/math/rounding.d | 17 +- std/process.d | 19 +- std/stdio.d | 305 +++--------------------- 4 files changed, 47 insertions(+), 431 deletions(-) diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index 02d5cf8b6d3..3d4dc9a2c52 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -116,93 +116,11 @@ struct Mallocator test!Mallocator(); } -version (Windows) +version (CRuntime_Microsoft) { - // DMD Win 32 bit, DigitalMars C standard library misses the _aligned_xxx - // functions family (snn.lib) - version (CRuntime_DigitalMars) - { - // Helper to cast the infos written before the aligned pointer - // this header keeps track of the size (required to realloc) and of - // the base ptr (required to free). - private struct AlignInfo - { - void* basePtr; - size_t size; - - @nogc nothrow - static AlignInfo* opCall(void* ptr) - { - return cast(AlignInfo*) (ptr - AlignInfo.sizeof); - } - } - - @nogc nothrow - private void* _aligned_malloc(size_t size, size_t alignment) - { - import core.stdc.stdlib : malloc; - size_t offset = alignment + size_t.sizeof * 2 - 1; - - // unaligned chunk - void* basePtr = malloc(size + offset); - if (!basePtr) return null; - - // get aligned location within the chunk - void* alignedPtr = cast(void**)((cast(size_t)(basePtr) + offset) - & ~(alignment - 1)); - - // write the header before the aligned pointer - AlignInfo* head = AlignInfo(alignedPtr); - head.basePtr = basePtr; - head.size = size; - - return alignedPtr; - } - - @nogc nothrow - private void* _aligned_realloc(void* ptr, size_t size, size_t alignment) - { - import core.stdc.stdlib : free; - import core.stdc.string : memcpy; - - if (!ptr) return _aligned_malloc(size, alignment); - - // gets the header from the exising pointer - AlignInfo* head = AlignInfo(ptr); - - // gets a new aligned pointer - void* alignedPtr = _aligned_malloc(size, alignment); - if (!alignedPtr) - { - //to https://msdn.microsoft.com/en-us/library/ms235462.aspx - //see Return value: in this case the original block is unchanged - return null; - } - - // copy exising data - memcpy(alignedPtr, ptr, head.size); - free(head.basePtr); - - return alignedPtr; - } - - @nogc nothrow - private void _aligned_free(void *ptr) - { - import core.stdc.stdlib : free; - if (!ptr) return; - AlignInfo* head = AlignInfo(ptr); - free(head.basePtr); - } - - } - // DMD Win 64 bit, uses microsoft standard C library which implements them - else - { - @nogc nothrow private extern(C) void* _aligned_malloc(size_t, size_t); - @nogc nothrow private extern(C) void _aligned_free(void *memblock); - @nogc nothrow private extern(C) void* _aligned_realloc(void *, size_t, size_t); - } + @nogc nothrow private extern(C) void* _aligned_malloc(size_t, size_t); + @nogc nothrow private extern(C) void _aligned_free(void *memblock); + @nogc nothrow private extern(C) void* _aligned_realloc(void *, size_t, size_t); } /** @@ -399,50 +317,3 @@ version (Posix) assert(!AlignedMallocator.instance.alignedReallocate(c, size_t.max, 4096)); AlignedMallocator.instance.deallocate(c); } - -version (CRuntime_DigitalMars) -@nogc @system nothrow unittest -{ - void* m; - - size_t m_addr() { return cast(size_t) m; } - - m = _aligned_malloc(16, 0x10); - if (m) - { - assert((m_addr & 0xF) == 0); - _aligned_free(m); - } - - m = _aligned_malloc(16, 0x100); - if (m) - { - assert((m_addr & 0xFF) == 0); - _aligned_free(m); - } - - m = _aligned_malloc(16, 0x1000); - if (m) - { - assert((m_addr & 0xFFF) == 0); - _aligned_free(m); - } - - m = _aligned_malloc(16, 0x10); - if (m) - { - assert((cast(size_t) m & 0xF) == 0); - m = _aligned_realloc(m, 32, 0x10000); - if (m) assert((m_addr & 0xFFFF) == 0); - _aligned_free(m); - } - - m = _aligned_malloc(8, 0x10); - if (m) - { - *cast(ulong*) m = 0X01234567_89ABCDEF; - m = _aligned_realloc(m, 0x800, 0x1000); - if (m) assert(*cast(ulong*) m == 0X01234567_89ABCDEF); - _aligned_free(m); - } -} diff --git a/std/math/rounding.d b/std/math/rounding.d index 16b02259721..0639078c55f 100644 --- a/std/math/rounding.d +++ b/std/math/rounding.d @@ -772,27 +772,18 @@ version (Posix) * * If the fractional part of x is exactly 0.5, the return value is rounded * away from zero. - * - * $(BLUE This function is not implemented for Digital Mars C runtime.) */ long lround(real x) @trusted nothrow @nogc { - version (CRuntime_DigitalMars) - assert(0, "lround not implemented"); - else - return core.stdc.math.llroundl(x); + return core.stdc.math.llroundl(x); } /// @safe nothrow @nogc unittest { - version (CRuntime_DigitalMars) {} - else - { - assert(lround(0.49) == 0); - assert(lround(0.5) == 1); - assert(lround(1.5) == 2); - } + assert(lround(0.49) == 0); + assert(lround(0.5) == 1); + assert(lround(1.5) == 2); } /** diff --git a/std/process.d b/std/process.d index 325689ba51d..0c2a8c49d7f 100644 --- a/std/process.d +++ b/std/process.d @@ -127,26 +127,19 @@ else version (WatchOS) version = iOSDerived; } -// When the DMC runtime is used, we have to use some custom functions -// to convert between Windows file handles and FILE*s. -version (Win32) version (CRuntime_DigitalMars) version = DMC_RUNTIME; - // Some of the following should be moved to druntime. private { // Microsoft Visual C Runtime (MSVCRT) declarations. - version (Windows) + version (CRuntime_Microsoft) { - version (DMC_RUNTIME) { } else + import core.stdc.stdint; + enum { - import core.stdc.stdint; - enum - { - STDIN_FILENO = 0, - STDOUT_FILENO = 1, - STDERR_FILENO = 2, - } + STDIN_FILENO = 0, + STDOUT_FILENO = 1, + STDERR_FILENO = 2, } } diff --git a/std/stdio.d b/std/stdio.d index 40dc85420fe..8caa9b36718 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -123,9 +123,6 @@ alias KeepTerminator = Flag!"keepTerminator"; version (CRuntime_Microsoft) { } -else version (CRuntime_DigitalMars) -{ -} else version (CRuntime_Glibc) { } @@ -215,54 +212,7 @@ version (Posix) static import core.sys.posix.stdio; // getdelim, flockfile } -version (CRuntime_DigitalMars) -{ - private alias _FPUTC = _fputc_nlock; - private alias _FPUTWC = _fputwc_nlock; - private alias _FGETC = _fgetc_nlock; - private alias _FGETWC = _fgetwc_nlock; - private alias _FLOCK = __fp_lock; - private alias _FUNLOCK = __fp_unlock; - - // Alias for CRuntime_Microsoft compatibility. - // @@@DEPRECATED_2.107@@@ - // Rename this back to _setmode once the deprecation phase has ended. - private alias __setmode = setmode; - - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTC = _fputc_nlock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTWC = _fputwc_nlock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETC = _fgetc_nlock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETWC = _fgetwc_nlock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FLOCK = __fp_lock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FUNLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FUNLOCK = __fp_unlock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias _setmode was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias _setmode = setmode; - // @@@DEPRECATED_2.107@@@ - deprecated("internal function _fileno was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - fileno_t _fileno(FILE* f) { return f._file; } -} -else version (CRuntime_Microsoft) +version (CRuntime_Microsoft) { private alias _FPUTC = _fputc_nolock; private alias _FPUTWC = _fputwc_nolock; @@ -271,10 +221,6 @@ else version (CRuntime_Microsoft) private alias _FLOCK = _lock_file; private alias _FUNLOCK = _unlock_file; - // @@@DEPRECATED_2.107@@@ - // Remove this once the deprecation phase for CRuntime_DigitalMars has ended. - private alias __setmode = _setmode; - // @@@DEPRECATED_2.107@@@ deprecated("internal alias FPUTC was unintentionally available from " ~ "std.stdio and will be removed afer 2.107") @@ -413,11 +359,7 @@ else private extern (C) @nogc nothrow { pragma(mangle, _FPUTC.mangleof) int trustedFPUTC(int ch, _iobuf* h) @trusted; - - version (CRuntime_DigitalMars) - pragma(mangle, _FPUTWC.mangleof) int trustedFPUTWC(int ch, _iobuf* h) @trusted; - else - pragma(mangle, _FPUTWC.mangleof) int trustedFPUTWC(wchar_t ch, _iobuf* h) @trusted; + pragma(mangle, _FPUTWC.mangleof) int trustedFPUTWC(wchar_t ch, _iobuf* h) @trusted; } //------------------------------------------------------------------------------ @@ -829,7 +771,6 @@ Throws: `ErrnoException` in case of error. f.close(); } - version (CRuntime_DigitalMars) {} else // Not implemented version (CRuntime_Microsoft) {} else // Not implemented @safe unittest // Test changing mode { @@ -889,22 +830,7 @@ Params: auto modez = stdioOpenmode.tempCString(); detach(); - version (CRuntime_DigitalMars) - { - // This is a re-implementation of DMC's fdopen, but without the - // mucking with the file descriptor. POSIX standard requires the - // new fdopen'd file to retain the given file descriptor's - // position. - auto fp = fopen("NUL", modez); - errnoEnforce(fp, "Cannot open placeholder NUL stream"); - _FLOCK(fp); - auto iob = cast(_iobuf*) fp; - .close(iob._file); - iob._file = fd; - iob._flag &= ~_IOTRAN; - _FUNLOCK(fp); - } - else version (CRuntime_Microsoft) + version (CRuntime_Microsoft) { auto fp = _fdopen(fd, modez); errnoEnforce(fp); @@ -943,26 +869,21 @@ Throws: `ErrnoException` in case of error. import std.format : format; // Create file descriptors from the handles - version (CRuntime_DigitalMars) - auto fd = _handleToFD(handle, FHND_DEVICE); - else // MSVCRT - { - int mode; - modeLoop: - foreach (c; stdioOpenmode) - switch (c) - { - case 'r': mode |= _O_RDONLY; break; - case '+': mode &=~_O_RDONLY; break; - case 'a': mode |= _O_APPEND; break; - case 'b': mode |= _O_BINARY; break; - case 't': mode |= _O_TEXT; break; - case ',': break modeLoop; - default: break; - } + int mode; + modeLoop: + foreach (c; stdioOpenmode) + switch (c) + { + case 'r': mode |= _O_RDONLY; break; + case '+': mode &=~_O_RDONLY; break; + case 'a': mode |= _O_APPEND; break; + case 'b': mode |= _O_BINARY; break; + case 't': mode |= _O_TEXT; break; + case ',': break modeLoop; + default: break; + } - auto fd = _open_osfhandle(cast(intptr_t) handle, mode); - } + auto fd = _open_osfhandle(cast(intptr_t) handle, mode); errnoEnforce(fd >= 0, "Cannot open Windows HANDLE"); fdopen(fd, stdioOpenmode, "HANDLE(%s)".format(handle)); @@ -1186,17 +1107,8 @@ Throws: `ErrnoException` if the file is not opened or the call to `fread` fails. version (Windows) { immutable fileno_t fd = .fileno(_p.handle); - immutable mode = .__setmode(fd, _O_BINARY); - scope(exit) .__setmode(fd, mode); - version (CRuntime_DigitalMars) - { - import core.atomic : atomicOp; - - // https://issues.dlang.org/show_bug.cgi?id=4243 - immutable info = __fhnd_info[fd]; - atomicOp!"&="(__fhnd_info[fd], ~FHND_TEXT); - scope(exit) __fhnd_info[fd] = info; - } + immutable mode = ._setmode(fd, _O_BINARY); + scope(exit) ._setmode(fd, mode); } immutable freadResult = trustedFread(_p.handle, buffer); assert(freadResult <= buffer.length); // fread return guarantee @@ -1276,24 +1188,14 @@ Throws: `ErrnoException` if the file is not opened or if the call to `fwrite` fa version (Windows) { immutable fileno_t fd = .fileno(_p.handle); - immutable oldMode = .__setmode(fd, _O_BINARY); + immutable oldMode = ._setmode(fd, _O_BINARY); if (oldMode != _O_BINARY) { // need to flush the data that was written with the original mode - .__setmode(fd, oldMode); - flush(); // before changing translation mode .__setmode(fd, _O_BINARY); - .__setmode(fd, _O_BINARY); - } - - version (CRuntime_DigitalMars) - { - import core.atomic : atomicOp; - - // https://issues.dlang.org/show_bug.cgi?id=4243 - immutable info = __fhnd_info[fd]; - atomicOp!"&="(__fhnd_info[fd], ~FHND_TEXT); - scope (exit) __fhnd_info[fd] = info; + ._setmode(fd, oldMode); + flush(); // before changing translation mode ._setmode(fd, _O_BINARY); + ._setmode(fd, _O_BINARY); } scope (exit) @@ -1301,7 +1203,7 @@ Throws: `ErrnoException` if the file is not opened or if the call to `fwrite` fa if (oldMode != _O_BINARY) { flush(); - .__setmode(fd, oldMode); + ._setmode(fd, oldMode); } } } @@ -1394,9 +1296,6 @@ Throws: `Exception` if the file is not opened. f.seek(7); assert(f.readln() == "hijklmnopqrstuvwxyz"); - version (CRuntime_DigitalMars) - auto bigOffset = int.max - 100; - else version (CRuntime_Bionic) auto bigOffset = int.max - 100; else @@ -2349,10 +2248,7 @@ Returns the underlying operating system `HANDLE` (Windows only). version (Windows) @property HANDLE windowsHandle() { - version (CRuntime_DigitalMars) - return _fdToHandle(fileno); - else - return cast(HANDLE)_get_osfhandle(fileno); + return cast(HANDLE)_get_osfhandle(fileno); } @@ -3151,11 +3047,11 @@ is empty, throws an `Exception`. In case of an I/O error throws // concept of ANSI/UNICODE mode. fputc doesn't work in UNICODE // mode; fputwc has to be used. So that essentially means // "wide-oriented" for us. - immutable int mode = __setmode(f.fileno, _O_TEXT); + immutable int mode = _setmode(f.fileno, _O_TEXT); // Set some arbitrary mode to obtain the previous one. - if (mode != -1) // __setmode() succeeded + if (mode != -1) // _setmode() succeeded { - __setmode(f.fileno, mode); // Restore previous mode. + _setmode(f.fileno, mode); // Restore previous mode. if (mode & (_O_WTEXT | _O_U16TEXT | _O_U8TEXT)) { orientation_ = 1; // wide @@ -3386,8 +3282,6 @@ is empty, throws an `Exception`. In case of an I/O error throws { fileno_t fd; int oldMode; - version (CRuntime_DigitalMars) - ubyte oldInfo; } public: @@ -3407,15 +3301,7 @@ is empty, throws an `Exception`. In case of an I/O error throws { .fflush(fps); // before changing translation mode fd = .fileno(fps); - oldMode = .__setmode(fd, _O_BINARY); - version (CRuntime_DigitalMars) - { - import core.atomic : atomicOp; - - // https://issues.dlang.org/show_bug.cgi?id=4243 - oldInfo = __fhnd_info[fd]; - atomicOp!"&="(__fhnd_info[fd], ~FHND_TEXT); - } + oldMode = ._setmode(fd, _O_BINARY); } } @@ -3429,12 +3315,7 @@ is empty, throws an `Exception`. In case of an I/O error throws version (Windows) { .fflush(fps); // before restoring translation mode - version (CRuntime_DigitalMars) - { - // https://issues.dlang.org/show_bug.cgi?id=4243 - __fhnd_info[fd] = oldInfo; - } - .__setmode(fd, oldMode); + ._setmode(fd, oldMode); } _FUNLOCK(fps); @@ -3887,19 +3768,12 @@ void main() return setlocale(LC_CTYPE, loc.ptr).fromStringz.endsWith(loc); }); scope(exit) () @trusted { setlocale(LC_CTYPE, oldCt); } (); - version (CRuntime_DigitalMars) // DM can't handle Unicode above U+07FF. - { - alias strs = AliasSeq!("xä\u07FE", "yö\u07FF"w); - } - else - { - alias strs = AliasSeq!("xä\U0001F607", "yö\U0001F608"w); - } + alias strs = AliasSeq!("xä\U0001F607", "yö\U0001F608"w); { auto f = File(deleteme, "w"); version (CRuntime_Microsoft) { - () @trusted { __setmode(fileno(f.getFP()), _O_U8TEXT); } (); + () @trusted { _setmode(fileno(f.getFP()), _O_U8TEXT); } (); } else { @@ -5537,120 +5411,7 @@ private struct LockedFile // Private implementation of readln private size_t readlnImpl(FILE* fps, ref char[] buf, dchar terminator, File.Orientation orientation) @safe { - version (CRuntime_DigitalMars) - return () @trusted { - auto lf = LockedFile(fps); - ReadlnAppender app; - app.initialize(buf); - - if (__fhnd_info[lf.fp._file] & FHND_WCHAR) - { /* Stream is in wide characters. - * Read them and convert to chars. - */ - static assert(wchar_t.sizeof == 2); - for (int c = void; (c = lf.fgetwc()) != -1; ) - { - if ((c & ~0x7F) == 0) - { - app.putchar(cast(char) c); - if (c == terminator) - break; - } - else - { - if (c >= 0xD800 && c <= 0xDBFF) - { - int c2 = void; - if ((c2 = lf.fgetwc()) != -1 || - c2 < 0xDC00 && c2 > 0xDFFF) - { - StdioException("unpaired UTF-16 surrogate"); - } - c = ((c - 0xD7C0) << 10) + (c2 - 0xDC00); - } - app.putdchar(cast(dchar) c); - } - } - if (ferror(fps)) - StdioException(); - } - else if (lf.fp._flag & _IONBF) - { - /* Use this for unbuffered I/O, when running - * across buffer boundaries, or for any but the common - * cases. - */ - L1: - int c; - while ((c = lf.fgetc()) != -1) - { - app.putchar(cast(char) c); - if (c == terminator) - { - buf = app.data; - return buf.length; - } - - } - - if (ferror(fps)) - StdioException(); - } - else - { - int u = lf.fp._cnt; - char* p = lf.fp._ptr; - int i; - if (lf.fp._flag & _IOTRAN) - { /* Translated mode ignores \r and treats ^Z as end-of-file - */ - char c; - while (1) - { - if (i == u) // if end of buffer - goto L1; // give up - c = p[i]; - i++; - if (c != '\r') - { - if (c == terminator) - break; - if (c != 0x1A) - continue; - goto L1; - } - else - { if (i != u && p[i] == terminator) - break; - goto L1; - } - } - app.putonly(p[0 .. i]); - app.buf[i - 1] = cast(char) terminator; - if (terminator == '\n' && c == '\r') - i++; - } - else - { - while (1) - { - if (i == u) // if end of buffer - goto L1; // give up - auto c = p[i]; - i++; - if (c == terminator) - break; - } - app.putonly(p[0 .. i]); - } - lf.fp._cnt -= i; - lf.fp._ptr += i; - } - - buf = app.data; - return buf.length; - }(); - else version (CRuntime_Microsoft) + version (CRuntime_Microsoft) { auto lf = LockedFile(fps); From e13bd7dec64766b713e6990c76e98bb462bee374 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Thu, 30 May 2024 22:18:30 -0400 Subject: [PATCH 268/327] sumtype: remove match-by-introspection example This technique has turned out not to be very useful in practice, and the example is a bit subtle and tricky to understand. Removing it will make room for more useful and less confusing examples. --- std/sumtype.d | 51 +++------------------------------------------------ 1 file changed, 3 insertions(+), 48 deletions(-) diff --git a/std/sumtype.d b/std/sumtype.d index 80ce73d6a75..916f984c330 100644 --- a/std/sumtype.d +++ b/std/sumtype.d @@ -77,51 +77,6 @@ version (D_BetterC) {} else assert(!isFahrenheit(t3)); } -/** $(DIVID introspection-based-matching, $(H3 Introspection-based matching)) - * - * In the `length` and `horiz` functions below, the handlers for `match` do not - * specify the types of their arguments. Instead, matching is done based on how - * the argument is used in the body of the handler: any type with `x` and `y` - * properties will be matched by the `rect` handlers, and any type with `r` and - * `theta` properties will be matched by the `polar` handlers. - */ -version (D_BetterC) {} else -@safe unittest -{ - import std.math.operations : isClose; - import std.math.trigonometry : cos; - import std.math.constants : PI; - import std.math.algebraic : sqrt; - - struct Rectangular { double x, y; } - struct Polar { double r, theta; } - alias Vector = SumType!(Rectangular, Polar); - - double length(Vector v) - { - return v.match!( - rect => sqrt(rect.x^^2 + rect.y^^2), - polar => polar.r - ); - } - - double horiz(Vector v) - { - return v.match!( - rect => rect.x, - polar => polar.r * cos(polar.theta) - ); - } - - Vector u = Rectangular(1, 1); - Vector v = Polar(1, PI/4); - - assert(length(u).isClose(sqrt(2.0))); - assert(length(v).isClose(1)); - assert(horiz(u).isClose(1)); - assert(horiz(v).isClose(sqrt(0.5))); -} - /** $(DIVID arithmetic-expression-evaluator, $(H3 Arithmetic expression evaluator)) * * This example makes use of the special placeholder type `This` to define a @@ -1619,9 +1574,9 @@ enum bool isSumType(T) = is(T : SumType!Args, Args...); * overloads are considered as potential matches. * * Templated handlers are also accepted, and will match any type for which they - * can be [implicitly instantiated](https://dlang.org/glossary.html#ifti). See - * ["Introspection-based matching"](#introspection-based-matching) for an - * example of templated handler usage. + * can be [implicitly instantiated](https://dlang.org/glossary.html#ifti). + * (Remember that a $(DDSUBLINK spec/expression,function_literals, function literal) + * without an explicit argument type is considered a template.) * * If multiple [SumType]s are passed to match, their values are passed to the * handlers as separate arguments, and matching is done for each possible From d1dfd094f4dffd15e215e44a4a83b19c7e531d10 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Thu, 30 May 2024 23:26:04 -0400 Subject: [PATCH 269/327] sumtype: add overload-set matching example This is a useful technique, and non-obvious enough that other D community members were surprised when I showed it to them. The unusual formatting and code layout used here achieves the following goals: 1. Have this example appear below "Basic usage". 2. Have the overload set appear as it would at module level. 3. Have as much of the example code unit-tested as possible. Goal (2), in particular, rules out the use of a "wrapper" struct to create an overload set of static methods, which is the technique that's normally used to include an overload set in a unittest block. --- .dscanner.ini | 2 +- Makefile | 1 + std/internal/test/sumtype_example_overloads.d | 17 +++++++++ std/sumtype.d | 35 +++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 std/internal/test/sumtype_example_overloads.d diff --git a/.dscanner.ini b/.dscanner.ini index 5f936444735..03cf7e6ee77 100644 --- a/.dscanner.ini +++ b/.dscanner.ini @@ -404,7 +404,7 @@ redundant_attributes_check="-std.concurrency,-std.digest.md,-std.digest.ripemd,- style_check="+disabled" ;style_check="-etc.c.curl,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-etc.c.sqlite3,-etc.c.zlib,-std.algorithm.comparison,-std.algorithm.internal,-std.algorithm.iteration,-std.algorithm.mutation,-std.algorithm.sorting,-std.array,-std.base64,-std.bitmanip,-std.c.linux.linux,-std.compiler,-std.container.array,-std.conv,-std.datetime.date,-std.datetime.interval,-std.datetime.systime,-std.digest,-std.digest.murmurhash,-std.digest.sha,-std.encoding,-std.exception,-std.experimental.allocator,-std.experimental.allocator.building_blocks.affix_allocator,-std.experimental.allocator.building_blocks.allocator_list,-std.experimental.allocator.building_blocks.bucketizer,-std.experimental.allocator.building_blocks.fallback_allocator,-std.experimental.allocator.building_blocks.free_list,-std.experimental.allocator.building_blocks.free_tree,-std.experimental.allocator.building_blocks.null_allocator,-std.experimental.allocator.building_blocks.region,-std.experimental.allocator.building_blocks.segregator,-std.experimental.allocator.common,-std.experimental.allocator.gc_allocator,-std.experimental.allocator.mallocator,-std.experimental.allocator.mmap_allocator,-std.experimental.checkedint,-std.format,-std.functional,-std.getopt,-std.internal.digest.sha_SSSE3,-std.internal.math.errorfunction,-std.internal.math.gammafunction,-std.internal.test.dummyrange,-std.internal.unicode_tables,-std.json,-std.math,-std.meta,-std.numeric,-std.parallelism,-std.path,-std.process,-std.random,-std.range,-std.range.primitives,-std.regex,-std.regex.internal.ir,-std.regex.internal.kickstart,-std.signals,-std.socket,-std.stdio,-std.string,-std.uni,-std.uri,-std.utf,-std.uuid,-std.variant,-std.zlib" ; Checks for undocumented public declarations -undocumented_declaration_check="-etc.c.curl,-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-etc.c.sqlite3,-etc.c.zlib,-std.algorithm.sorting,-std.array,-std.ascii,-std.base64,-std.bitmanip,-std.c.linux.linux,-std.c.linux.socket,-std.c.osx.socket,-std.c.process,-std.compiler,-std.complex,-std.concurrency,-std.container,-std.container.array,-std.container.binaryheap,-std.container.dlist,-std.container.rbtree,-std.container.slist,-std.conv,-std.csv,-std.datetime,-std.datetime.date,-std.digest,-std.digest.hmac,-std.digest.md,-std.digest.murmurhash,-std.digest.ripemd,-std.digest.sha,-std.encoding,-std.exception,-std.experimental.allocator,-std.experimental.allocator.building_blocks.affix_allocator,-std.experimental.allocator.building_blocks.allocator_list,-std.experimental.allocator.building_blocks.bitmapped_block,-std.experimental.allocator.building_blocks.fallback_allocator,-std.experimental.allocator.building_blocks.free_list,-std.experimental.allocator.building_blocks.free_tree,-std.experimental.allocator.building_blocks.kernighan_ritchie,-std.experimental.allocator.building_blocks.quantizer,-std.experimental.allocator.building_blocks.region,-std.experimental.allocator.building_blocks.segregator,-std.experimental.allocator.building_blocks.stats_collector,-std.experimental.allocator.gc_allocator,-std.experimental.allocator.mallocator,-std.experimental.checkedint,-std.logger.core,-std.file,-std.format,-std.functional,-std.internal.digest.sha_SSSE3,-std.internal.math.biguintcore,-std.internal.math.biguintnoasm,-std.internal.math.biguintx86,-std.internal.math.errorfunction,-std.internal.math.gammafunction,-std.internal.test.dummyrange,-std.internal.test.uda,-std.internal.windows.advapi32,-std.json,-std.math,-std.mmfile,-std.numeric,-std.outbuffer,-std.parallelism,-std.path,-std.process,-std.regex,-std.regex.internal.parser,-std.signals,-std.socket,-std.stdio,-std.string,-std.system,-std.traits,-std.uni,-std.utf,-std.variant,-std.windows.charset,-std.windows.registry,-std.windows.syserror,-std.zip,-std.zlib,-std.int128" +undocumented_declaration_check="-etc.c.curl,-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-etc.c.sqlite3,-etc.c.zlib,-std.algorithm.sorting,-std.array,-std.ascii,-std.base64,-std.bitmanip,-std.c.linux.linux,-std.c.linux.socket,-std.c.osx.socket,-std.c.process,-std.compiler,-std.complex,-std.concurrency,-std.container,-std.container.array,-std.container.binaryheap,-std.container.dlist,-std.container.rbtree,-std.container.slist,-std.conv,-std.csv,-std.datetime,-std.datetime.date,-std.digest,-std.digest.hmac,-std.digest.md,-std.digest.murmurhash,-std.digest.ripemd,-std.digest.sha,-std.encoding,-std.exception,-std.experimental.allocator,-std.experimental.allocator.building_blocks.affix_allocator,-std.experimental.allocator.building_blocks.allocator_list,-std.experimental.allocator.building_blocks.bitmapped_block,-std.experimental.allocator.building_blocks.fallback_allocator,-std.experimental.allocator.building_blocks.free_list,-std.experimental.allocator.building_blocks.free_tree,-std.experimental.allocator.building_blocks.kernighan_ritchie,-std.experimental.allocator.building_blocks.quantizer,-std.experimental.allocator.building_blocks.region,-std.experimental.allocator.building_blocks.segregator,-std.experimental.allocator.building_blocks.stats_collector,-std.experimental.allocator.gc_allocator,-std.experimental.allocator.mallocator,-std.experimental.checkedint,-std.logger.core,-std.file,-std.format,-std.functional,-std.internal.digest.sha_SSSE3,-std.internal.math.biguintcore,-std.internal.math.biguintnoasm,-std.internal.math.biguintx86,-std.internal.math.errorfunction,-std.internal.math.gammafunction,-std.internal.test.dummyrange,-std.internal.test.sumtype_example_overloads,-std.internal.test.uda,-std.internal.windows.advapi32,-std.json,-std.math,-std.mmfile,-std.numeric,-std.outbuffer,-std.parallelism,-std.path,-std.process,-std.regex,-std.regex.internal.parser,-std.signals,-std.socket,-std.stdio,-std.string,-std.system,-std.traits,-std.uni,-std.utf,-std.variant,-std.windows.charset,-std.windows.registry,-std.windows.syserror,-std.zip,-std.zlib,-std.int128" ; Checks for unused labels unused_label_check="-std.conv,-std.internal.math.biguintx86,-std.regex.internal.thompson,-std.signals,-std.uni" ; Checks for unused function parameters diff --git a/Makefile b/Makefile index 89704a431ee..76a6130d9cf 100644 --- a/Makefile +++ b/Makefile @@ -272,6 +272,7 @@ EXTRA_MODULES_INTERNAL := $(addprefix std/, \ $(addprefix math/, biguintcore biguintnoasm biguintx86 \ errorfunction gammafunction ) \ scopebuffer test/dummyrange test/range \ + test/sumtype_example_overloads \ $(addprefix unicode_, comp decomp grapheme norm tables) \ windows/advapi32 \ ) \ diff --git a/std/internal/test/sumtype_example_overloads.d b/std/internal/test/sumtype_example_overloads.d new file mode 100644 index 00000000000..235659dc8b7 --- /dev/null +++ b/std/internal/test/sumtype_example_overloads.d @@ -0,0 +1,17 @@ +/++ +For testing only. + +Overload set used in std.sumtype example. Needs its own internal module so that +it can be available for `make publictests` without polluting the public API. ++/ +module std.internal.test.sumtype_example_overloads; + +import std.sumtype; + +@safe +{ + string handle(int) { return "got an int"; } + string handle(string) { return "got a string"; } + string handle(double) { return "got a double"; } + alias handle = match!handle; +} diff --git a/std/sumtype.d b/std/sumtype.d index 916f984c330..c510e15990c 100644 --- a/std/sumtype.d +++ b/std/sumtype.d @@ -77,6 +77,37 @@ version (D_BetterC) {} else assert(!isFahrenheit(t3)); } +/** $(DIVID matching-with-an-overload-set, $(H3 Matching with an overload set)) + * + * Instead of writing `match` handlers inline as lambdas, you can write them as + * overloads of a function. An `alias` can be used to create an additional + * overload for the `SumType` itself. + * + * For example, with this overload set: + * + * --- + * string handle(int n) { return "got an int"; } + * string handle(string s) { return "got a string"; } + * string handle(double d) { return "got a double"; } + * alias handle = match!handle; + * --- + * + * Usage would look like this: + */ +version (D_BetterC) {} else +@safe unittest +{ + alias ExampleSumType = SumType!(int, string, double); + + ExampleSumType a = 123; + ExampleSumType b = "hello"; + ExampleSumType c = 3.14; + + assert(a.handle == "got an int"); + assert(b.handle == "got a string"); + assert(c.handle == "got a double"); +} + /** $(DIVID arithmetic-expression-evaluator, $(H3 Arithmetic expression evaluator)) * * This example makes use of the special placeholder type `This` to define a @@ -182,6 +213,10 @@ version (D_BetterC) {} else assert(pprint(*myExpr) == "(a + (2 * b))"); } +// For the "Matching with an overload set" example above +// Needs public import to work with `make publictests` +version (unittest) public import std.internal.test.sumtype_example_overloads; + import std.format.spec : FormatSpec, singleSpec; import std.meta : AliasSeq, Filter, IndexOf = staticIndexOf, Map = staticMap; import std.meta : NoDuplicates; From 1aa99f8e3f4555d714ee72af38d1d596621a7002 Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Thu, 30 May 2024 23:40:51 -0400 Subject: [PATCH 270/327] sumtype: rename arithmetic evaluator example --- std/sumtype.d | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/std/sumtype.d b/std/sumtype.d index c510e15990c..d5f567dc09e 100644 --- a/std/sumtype.d +++ b/std/sumtype.d @@ -108,7 +108,7 @@ version (D_BetterC) {} else assert(c.handle == "got a double"); } -/** $(DIVID arithmetic-expression-evaluator, $(H3 Arithmetic expression evaluator)) +/** $(DIVID recursive-sumtypes, $(H3 Recursive SumTypes)) * * This example makes use of the special placeholder type `This` to define a * [recursive data type](https://en.wikipedia.org/wiki/Recursive_data_type): an @@ -256,8 +256,7 @@ private enum isInout(T) = is(T == inout); * * The special type `This` can be used as a placeholder to create * self-referential types, just like with `Algebraic`. See the - * ["Arithmetic expression evaluator" example](#arithmetic-expression-evaluator) for - * usage. + * ["Recursive SumTypes" example](#recursive-sumtypes) for usage. * * A `SumType` is initialized by default to hold the `.init` value of its * first member type, just like a regular union. The version identifier From ed91e50deb4d8a2dba80f84f769231a1c166edcd Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Thu, 30 May 2024 23:57:54 -0400 Subject: [PATCH 271/327] sumtype: add list of examples to module doc This will hopefully make it easier for readers to notice that all of these examples exist. --- std/sumtype.d | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/std/sumtype.d b/std/sumtype.d index d5f567dc09e..69c2a49dd7f 100644 --- a/std/sumtype.d +++ b/std/sumtype.d @@ -11,6 +11,15 @@ include: * No dependency on runtime type information (`TypeInfo`). * Compatibility with BetterC. +$(H3 List of examples) + +* [Basic usage](#basic-usage) +* [Matching with an overload set](#matching-with-an-overload-set) +* [Recursive SumTypes](#recursive-sumtypes) +* [Memory corruption](#memory-corruption) (why assignment can be `@system`) +* [Avoiding unintentional matches](#avoiding-unintentional-matches) +* [Multiple dispatch](#multiple-dispatch) + License: Boost License 1.0 Authors: Paul Backus Source: $(PHOBOSSRC std/sumtype.d) From aee2a7b760376dae047b8b228947ea0c30df19ca Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 2 Jun 2024 00:29:27 +0000 Subject: [PATCH 272/327] purge changelog --- .../std.process.Config.preExecDelegate.dd | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 changelog/std.process.Config.preExecDelegate.dd diff --git a/changelog/std.process.Config.preExecDelegate.dd b/changelog/std.process.Config.preExecDelegate.dd deleted file mode 100644 index 393d26cf0b9..00000000000 --- a/changelog/std.process.Config.preExecDelegate.dd +++ /dev/null @@ -1,25 +0,0 @@ -Add `std.process.Config.preExecDelegate` - -$(LINK2 $(ROOT_DIR)phobos/std_process.html#.Config.preExecDelegate, `std.process.Config.preExecDelegate`) -is just like -$(LINK2 $(ROOT_DIR)phobos/std_process.html#.Config.preExecFunction, `std.process.Config.preExecFunction`), -but can capture an environment, for example: - -------- -import core.sys.linux.sys.prctl : PR_SET_PDEATHSIG, prctl; -import std.process : Config, execute; - -void runProgram(int pdeathsig) -{ - execute( - ["program"], - config: Config( - preExecDelegate: () @trusted => - prctl(PR_SET_PDEATHSIG, pdeathsig, 0, 0, 0) != -1, - ), - ); -} -------- - -`preExecFunction` is retained for backwards compatibility. If both -`preExecFunction` and `preExecDelegate` are given, both are called. From ccd3115b8b8188fb5d6c961fe5096002dd50c21c Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 3 Jun 2024 14:26:46 +0100 Subject: [PATCH 273/327] [std.regex] Fix unsafe casts to bool These are disallowed in `@safe` code with https://github.com/dlang/dmd/pull/16558. --- std/regex/internal/ir.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/regex/internal/ir.d b/std/regex/internal/ir.d index 04b902fc39d..25566d6bea6 100644 --- a/std/regex/internal/ir.d +++ b/std/regex/internal/ir.d @@ -318,7 +318,7 @@ struct Bytecode @property bool backreference() const { assert(code == IR.GroupStart || code == IR.GroupEnd); - return cast(bool)(raw & 1 << 23); + return (raw & 1 << 23) != 0; } //mark as local reference (for backrefs in lookarounds) @@ -332,7 +332,7 @@ struct Bytecode @property bool localRef() const { assert(code == IR.Backref); - return cast(bool)(raw & 1 << 23); + return (raw & 1 << 23) != 0; } //human readable name of instruction From ad9f87d1b816783bd8c13f461490e68f7fcae20a Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Mon, 3 Jun 2024 20:50:23 +0100 Subject: [PATCH 274/327] [std.bitmanip] Make 3 examples runnable --- std/bitmanip.d | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/std/bitmanip.d b/std/bitmanip.d index de2ff318f4e..639b8214c8c 100644 --- a/std/bitmanip.d +++ b/std/bitmanip.d @@ -805,6 +805,7 @@ private struct FloatingPointRepresentation(T) Allows manipulating the fraction, exponent, and sign parts of a `float` separately. The definition is: +$(RUNNABLE_EXAMPLE ---- struct FloatRep { @@ -819,6 +820,7 @@ struct FloatRep enum uint bias = 127, fractionBits = 23, exponentBits = 8, signBits = 1; } ---- +) */ alias FloatRep = FloatingPointRepresentation!float; @@ -874,6 +876,7 @@ alias FloatRep = FloatingPointRepresentation!float; Allows manipulating the fraction, exponent, and sign parts of a `double` separately. The definition is: +$(RUNNABLE_EXAMPLE ---- struct DoubleRep { @@ -888,6 +891,7 @@ struct DoubleRep enum uint bias = 1023, signBits = 1, fractionBits = 52, exponentBits = 11; } ---- +) */ alias DoubleRep = FloatingPointRepresentation!double; @@ -1050,6 +1054,8 @@ public: of a type different than `size_t`, firstly because its length should be a multiple of `size_t.sizeof`, and secondly because how the bits are mapped: + + $(RUNNABLE_EXAMPLE --- size_t[] source = [1, 2, 3, 3424234, 724398, 230947, 389492]; enum sbits = size_t.sizeof * 8; @@ -1060,6 +1066,7 @@ public: assert(ba[n] == nth_bit); } --- + ) The least significant bit in any `size_t` unit is the starting bit of this unit, and the most significant bit is the last bit of this unit. Therefore, passing e.g. an array of `int`s may result in a different `BitArray` From 539dc473ba79db0e5e8cf9ee059a5cc137b88bda Mon Sep 17 00:00:00 2001 From: FeepingCreature <540727+FeepingCreature@users.noreply.github.com> Date: Mon, 10 Jun 2024 17:10:18 +0200 Subject: [PATCH 275/327] Fix bugzilla issue 24596: std.typecons.Rebindable2: Don't destroy classes! Only destroy structs! (#9012) --- std/algorithm/searching.d | 15 +++++++++++++++ std/typecons.d | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/std/algorithm/searching.d b/std/algorithm/searching.d index 2d89dea3f1c..42a9df518c9 100644 --- a/std/algorithm/searching.d +++ b/std/algorithm/searching.d @@ -3873,6 +3873,21 @@ if (isInputRange!Range && !isInfinite!Range && assert([BigInt(2), BigInt(3)].maxElement == BigInt(3)); } +// https://issues.dlang.org/show_bug.cgi?id=24596 +@safe unittest +{ + static class A { + int i; + int getI() @safe => i; + this(int i) @safe { this.i = i; } + } + auto arr = [new A(2), new A(3)]; + + arr.maxElement!(a => a.getI); + + assert(arr[0].getI == 2); +} + // minPos /** Computes a subrange of `range` starting at the first occurrence of `range`'s diff --git a/std/typecons.d b/std/typecons.d index f5b48468a80..3c425c7d7de 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -3125,7 +3125,10 @@ private: } // call possible struct destructors - .destroy!(No.initialize)(*cast(T*) &this.data); + static if (is(T == struct)) + { + .destroy!(No.initialize)(*cast(T*) &this.data); + } } } From beeed12c064f7600a1542f7fb4757dad6cb10ba1 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 14 Jun 2024 13:22:04 +0100 Subject: [PATCH 276/327] Fix assigning const(void)[] to void[] Needed for https://github.com/dlang/dmd/pull/16583. --- std/net/curl.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/net/curl.d b/std/net/curl.d index 3f823013e65..07905fc7003 100644 --- a/std/net/curl.d +++ b/std/net/curl.d @@ -1063,7 +1063,7 @@ private auto _basicHTTP(T)(const(char)[] url, const(void)[] sendData, HTTP clien { size_t minLen = min(buf.length, remainingData.length); if (minLen == 0) return 0; - buf[0 .. minLen] = remainingData[0 .. minLen]; + buf[0 .. minLen] = cast(void[]) remainingData[0 .. minLen]; remainingData = remainingData[minLen..$]; return minLen; }; @@ -1202,7 +1202,7 @@ private auto _basicFTP(T)(const(char)[] url, const(void)[] sendData, FTP client) { size_t minLen = min(buf.length, sendData.length); if (minLen == 0) return 0; - buf[0 .. minLen] = sendData[0 .. minLen]; + buf[0 .. minLen] = cast(void[]) sendData[0 .. minLen]; sendData = sendData[minLen..$]; return minLen; }; From 4686927fb6adfd2a5e84f33be1cc80c5ba9d128e Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 14 Jun 2024 13:27:18 +0100 Subject: [PATCH 277/327] Document running a single unittest --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 89704a431ee..67e28d310d0 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,9 @@ # make BUILD=debug => makes debug build of the library # # make unittest => builds all unittests (for debug AND release) and runs them +# make std/somemodule.test => only builds and unittests std.somemodule +# make std/somepackage.test => only builds and unittests modules in std.somepackage +# make unittest/std/somemodule.run => run std.somemodule unittest # # make BUILD=debug unittest => builds all unittests (for debug) and runs them # @@ -25,8 +28,6 @@ # # make install => copies library to /usr/lib # -# make std/somemodule.test => only builds and unittests std.somemodule -# ################################################################################ # Configurable stuff, usually from the command line # From 42e2caa5c033cd0c5ffa34a0a15ae878751bffa1 Mon Sep 17 00:00:00 2001 From: 0-v-0 Date: Sat, 22 Jun 2024 00:00:22 +0800 Subject: [PATCH 278/327] Improve code readablitity in unittests --- std/format/spec.d | 6 ++--- std/range/package.d | 6 ++--- std/string.d | 56 ++++++++++++++++++++++----------------------- std/utf.d | 8 +++---- 4 files changed, 38 insertions(+), 38 deletions(-) diff --git a/std/format/spec.d b/std/format/spec.d index b129686f8a3..e5564c99d8f 100644 --- a/std/format/spec.d +++ b/std/format/spec.d @@ -681,7 +681,7 @@ if (is(Unqual!Char == Char)) auto fmt = "Number: %6.4e\nString: %s"; auto f = FormatSpec!char(fmt); - assert(f.writeUpToNextSpec(a) == true); + assert(f.writeUpToNextSpec(a)); assert(a.data == "Number: "); assert(f.trailing == "\nString: %s"); @@ -689,13 +689,13 @@ if (is(Unqual!Char == Char)) assert(f.width == 6); assert(f.precision == 4); - assert(f.writeUpToNextSpec(a) == true); + assert(f.writeUpToNextSpec(a)); assert(a.data == "Number: \nString: "); assert(f.trailing == ""); assert(f.spec == 's'); - assert(f.writeUpToNextSpec(a) == false); + assert(!f.writeUpToNextSpec(a)); assert(a.data == "Number: \nString: "); } diff --git a/std/range/package.d b/std/range/package.d index 995bf1e6c9b..b6fddf76559 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -13539,10 +13539,10 @@ if (isInputRange!R && isIntegral!(ElementType!R)) { size_t bitsNum = IntegralType.sizeof * 8; - auto first = cast(IntegralType)(1); + auto first = IntegralType(1); // 2 ^ (bitsNum - 1) - auto second = cast(IntegralType)(cast(IntegralType)(1) << (bitsNum - 2)); + auto second = cast(IntegralType)(IntegralType(1) << (bitsNum - 2)); IntegralType[] a = [first, second]; auto bw = Bitwise!(IntegralType[])(a); @@ -13571,7 +13571,7 @@ if (isInputRange!R && isIntegral!(ElementType!R)) auto bw2 = bw[0 .. $ - 5]; auto bw3 = bw2[]; - assert(bw2.length == (bw.length - 5)); + assert(bw2.length == bw.length - 5); assert(bw2.length == bw3.length); bw2.popFront(); assert(bw2.length != bw3.length); diff --git a/std/string.d b/std/string.d index b350d6b7134..21e1ca356f8 100644 --- a/std/string.d +++ b/std/string.d @@ -6331,42 +6331,42 @@ if (isSomeString!S || assertCTFEable!( { // Test the isNumeric(in string) function - assert(isNumeric("1") == true ); - assert(isNumeric("1.0") == true ); - assert(isNumeric("1e-1") == true ); - assert(isNumeric("12345xxxx890") == false ); - assert(isNumeric("567L") == true ); - assert(isNumeric("23UL") == true ); - assert(isNumeric("-123..56f") == false ); - assert(isNumeric("12.3.5.6") == false ); - assert(isNumeric(" 12.356") == false ); - assert(isNumeric("123 5.6") == false ); - assert(isNumeric("1233E-1+1.0e-1i") == true ); - - assert(isNumeric("123.00E-5+1234.45E-12Li") == true); - assert(isNumeric("123.00e-5+1234.45E-12iL") == false); - assert(isNumeric("123.00e-5+1234.45e-12uL") == false); - assert(isNumeric("123.00E-5+1234.45e-12lu") == false); - - assert(isNumeric("123fi") == true); - assert(isNumeric("123li") == true); - assert(isNumeric("--123L") == false); - assert(isNumeric("+123.5UL") == false); - assert(isNumeric("123f") == true); - assert(isNumeric("123.u") == false); + assert(isNumeric("1")); + assert(isNumeric("1.0")); + assert(isNumeric("1e-1")); + assert(!isNumeric("12345xxxx890")); + assert(isNumeric("567L")); + assert(isNumeric("23UL")); + assert(!isNumeric("-123..56f")); + assert(!isNumeric("12.3.5.6")); + assert(!isNumeric(" 12.356")); + assert(!isNumeric("123 5.6")); + assert(isNumeric("1233E-1+1.0e-1i")); + + assert(isNumeric("123.00E-5+1234.45E-12Li")); + assert(!isNumeric("123.00e-5+1234.45E-12iL")); + assert(!isNumeric("123.00e-5+1234.45e-12uL")); + assert(!isNumeric("123.00E-5+1234.45e-12lu")); + + assert(isNumeric("123fi")); + assert(isNumeric("123li")); + assert(!isNumeric("--123L")); + assert(!isNumeric("+123.5UL")); + assert(isNumeric("123f")); + assert(!isNumeric("123.u")); // @@@BUG@@ to!string(float) is not CTFEable. // Related: formatValue(T) if (is(FloatingPointTypeOf!T)) if (!__ctfe) { - assert(isNumeric(to!string(real.nan)) == true); - assert(isNumeric(to!string(-real.infinity)) == true); + assert(isNumeric(to!string(real.nan))); + assert(isNumeric(to!string(-real.infinity))); } string s = "$250.99-"; - assert(isNumeric(s[1 .. s.length - 2]) == true); - assert(isNumeric(s) == false); - assert(isNumeric(s[0 .. s.length - 1]) == false); + assert(isNumeric(s[1 .. $ - 2])); + assert(!isNumeric(s)); + assert(!isNumeric(s[0 .. $ - 1])); }); assert(!isNumeric("-")); diff --git a/std/utf.d b/std/utf.d index c0cd3863b32..f0d5d4d268b 100644 --- a/std/utf.d +++ b/std/utf.d @@ -2528,8 +2528,8 @@ size_t encode(UseReplacementDchar useReplacementDchar = No.useReplacementDchar)( encode(buf, '\u0000'); assert(buf[0] == '\u0000'); encode(buf, '\uD7FF'); assert(buf[0] == '\uD7FF'); encode(buf, '\uE000'); assert(buf[0] == '\uE000'); - encode(buf, 0xFFFE ); assert(buf[0] == 0xFFFE); - encode(buf, 0xFFFF ); assert(buf[0] == 0xFFFF); + encode(buf, 0xFFFE); assert(buf[0] == 0xFFFE); + encode(buf, 0xFFFF); assert(buf[0] == 0xFFFF); encode(buf, '\U0010FFFF'); assert(buf[0] == '\U0010FFFF'); assertThrown!UTFException(encode(buf, cast(dchar) 0xD800)); @@ -2749,8 +2749,8 @@ void encode(UseReplacementDchar useReplacementDchar = No.useReplacementDchar)( encode(buf, '\u0000'); assert(buf[0] == '\u0000'); encode(buf, '\uD7FF'); assert(buf[1] == '\uD7FF'); encode(buf, '\uE000'); assert(buf[2] == '\uE000'); - encode(buf, 0xFFFE ); assert(buf[3] == 0xFFFE); - encode(buf, 0xFFFF ); assert(buf[4] == 0xFFFF); + encode(buf, 0xFFFE); assert(buf[3] == 0xFFFE); + encode(buf, 0xFFFF); assert(buf[4] == 0xFFFF); encode(buf, '\U0010FFFF'); assert(buf[5] == '\U0010FFFF'); assertThrown!UTFException(encode(buf, cast(dchar) 0xD800)); From d8e8f1f351d650a3fe90c5f5a4e846018e799a6c Mon Sep 17 00:00:00 2001 From: 0-v-0 Date: Sat, 22 Jun 2024 11:07:40 +0800 Subject: [PATCH 279/327] Remove std.conv import from quickSortImpl --- std/algorithm/sorting.d | 6 +++--- std/format/internal/read.d | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/std/algorithm/sorting.d b/std/algorithm/sorting.d index c5b085d1037..2d16c65111f 100644 --- a/std/algorithm/sorting.d +++ b/std/algorithm/sorting.d @@ -2164,12 +2164,12 @@ private void quickSortImpl(alias less, Range)(Range r, size_t depth) { import std.algorithm.comparison : min, max; import std.algorithm.mutation : swap, swapAt; - import std.conv : to; alias Elem = ElementType!(Range); - enum size_t shortSortGetsBetter = max(32, 1024 / Elem.sizeof); + enum int size = Elem.sizeof; + enum size_t shortSortGetsBetter = max(32, 1024 / size); static assert(shortSortGetsBetter >= 1, Elem.stringof ~ " " - ~ to!string(Elem.sizeof)); + ~ size.stringof); // partition while (r.length > shortSortGetsBetter) diff --git a/std/format/internal/read.d b/std/format/internal/read.d index 9130499081c..597898c9e23 100644 --- a/std/format/internal/read.d +++ b/std/format/internal/read.d @@ -161,15 +161,16 @@ if (isInputRange!Range && isSomeChar!T && !is(T == enum) && isSomeChar!(ElementT enforceFmt(find(acceptedSpecs!T, spec.spec).length, text("Wrong unformat specifier '%", spec.spec , "' for ", T.stringof)); - static if (T.sizeof == 1) + enum int size = T.sizeof; + static if (size == 1) return unformatValue!ubyte(input, spec); - else static if (T.sizeof == 2) + else static if (size == 2) return unformatValue!ushort(input, spec); - else static if (T.sizeof == 4) + else static if (size == 4) return unformatValue!uint(input, spec); else static assert(false, T.stringof ~ ".sizeof must be 1, 2, or 4 not " ~ - to!string(T.sizeof)); + size.stringof); } T unformatValueImpl(T, Range, Char)(ref Range input, scope const ref FormatSpec!Char fmt) From 312a86d741e4b330398faacf45cf6b7a578f8fec Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Sun, 30 Jun 2024 21:04:08 +0200 Subject: [PATCH 280/327] Mark std.math.exponential.pow `@safe` --- std/math/exponential.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/math/exponential.d b/std/math/exponential.d index 0ca12f8e337..be0fdb0b13c 100644 --- a/std/math/exponential.d +++ b/std/math/exponential.d @@ -256,7 +256,7 @@ if (isFloatingPoint!(F) && isIntegral!(G)) * If x is 0 and n is negative, the result is the same as the result of a * division by zero. */ -typeof(Unqual!(F).init * Unqual!(G).init) pow(F, G)(F x, G n) @nogc @trusted pure nothrow +typeof(Unqual!(F).init * Unqual!(G).init) pow(F, G)(F x, G n) @nogc @safe pure nothrow if (isIntegral!(F) && isIntegral!(G)) { import std.traits : isSigned; From a6ad1522a572a675759c6100d85d0c60ccc39e0b Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 3 Jul 2024 09:22:25 +0200 Subject: [PATCH 281/327] Move `std.math.exponential.pow` implementation outside template (#9019) * Move `std.math.exponential.pow` implementation outside template * Fix compilation on Mac --- std/math/exponential.d | 422 ++++++++++++++++++++--------------------- 1 file changed, 211 insertions(+), 211 deletions(-) diff --git a/std/math/exponential.d b/std/math/exponential.d index be0fdb0b13c..13103794660 100644 --- a/std/math/exponential.d +++ b/std/math/exponential.d @@ -422,217 +422,7 @@ if (isIntegral!I && isFloatingPoint!F) Unqual!(Largest!(F, G)) pow(F, G)(F x, G y) @nogc @trusted pure nothrow if (isFloatingPoint!(F) && isFloatingPoint!(G)) { - import core.math : fabs, sqrt; - import std.math.traits : isInfinity, isNaN, signbit; - - alias Float = typeof(return); - - static real impl(real x, real y) @nogc pure nothrow - { - // Special cases. - if (isNaN(y)) - return y; - if (isNaN(x) && y != 0.0) - return x; - - // Even if x is NaN. - if (y == 0.0) - return 1.0; - if (y == 1.0) - return x; - - if (isInfinity(y)) - { - if (isInfinity(x)) - { - if (!signbit(y) && !signbit(x)) - return F.infinity; - else - return F.nan; - } - else if (fabs(x) > 1) - { - if (signbit(y)) - return +0.0; - else - return F.infinity; - } - else if (fabs(x) == 1) - { - return F.nan; - } - else // < 1 - { - if (signbit(y)) - return F.infinity; - else - return +0.0; - } - } - if (isInfinity(x)) - { - if (signbit(x)) - { - long i = cast(long) y; - if (y > 0.0) - { - if (i == y && i & 1) - return -F.infinity; - else if (i == y) - return F.infinity; - else - return -F.nan; - } - else if (y < 0.0) - { - if (i == y && i & 1) - return -0.0; - else if (i == y) - return +0.0; - else - return F.nan; - } - } - else - { - if (y > 0.0) - return F.infinity; - else if (y < 0.0) - return +0.0; - } - } - - if (x == 0.0) - { - if (signbit(x)) - { - long i = cast(long) y; - if (y > 0.0) - { - if (i == y && i & 1) - return -0.0; - else - return +0.0; - } - else if (y < 0.0) - { - if (i == y && i & 1) - return -F.infinity; - else - return F.infinity; - } - } - else - { - if (y > 0.0) - return +0.0; - else if (y < 0.0) - return F.infinity; - } - } - if (x == 1.0) - return 1.0; - - if (y >= F.max) - { - if ((x > 0.0 && x < 1.0) || (x > -1.0 && x < 0.0)) - return 0.0; - if (x > 1.0 || x < -1.0) - return F.infinity; - } - if (y <= -F.max) - { - if ((x > 0.0 && x < 1.0) || (x > -1.0 && x < 0.0)) - return F.infinity; - if (x > 1.0 || x < -1.0) - return 0.0; - } - - if (x >= F.max) - { - if (y > 0.0) - return F.infinity; - else - return 0.0; - } - if (x <= -F.max) - { - long i = cast(long) y; - if (y > 0.0) - { - if (i == y && i & 1) - return -F.infinity; - else - return F.infinity; - } - else if (y < 0.0) - { - if (i == y && i & 1) - return -0.0; - else - return +0.0; - } - } - - // Integer power of x. - long iy = cast(long) y; - if (iy == y && fabs(y) < 32_768.0) - return pow(x, iy); - - real sign = 1.0; - if (x < 0) - { - // Result is real only if y is an integer - // Check for a non-zero fractional part - enum maxOdd = pow(2.0L, real.mant_dig) - 1.0L; - static if (maxOdd > ulong.max) - { - // Generic method, for any FP type - import std.math.rounding : floor; - if (floor(y) != y) - return sqrt(x); // Complex result -- create a NaN - - const hy = 0.5 * y; - if (floor(hy) != hy) - sign = -1.0; - } - else - { - // Much faster, if ulong has enough precision - const absY = fabs(y); - if (absY <= maxOdd) - { - const uy = cast(ulong) absY; - if (uy != absY) - return sqrt(x); // Complex result -- create a NaN - - if (uy & 1) - sign = -1.0; - } - } - x = -x; - } - version (INLINE_YL2X) - { - // If x > 0, x ^^ y == 2 ^^ ( y * log2(x) ) - // TODO: This is not accurate in practice. A fast and accurate - // (though complicated) method is described in: - // "An efficient rounding boundary test for pow(x, y) - // in double precision", C.Q. Lauter and V. Lefèvre, INRIA (2007). - return sign * exp2( core.math.yl2x(x, y) ); - } - else - { - // If x > 0, x ^^ y == 2 ^^ ( y * log2(x) ) - // TODO: This is not accurate in practice. A fast and accurate - // (though complicated) method is described in: - // "An efficient rounding boundary test for pow(x, y) - // in double precision", C.Q. Lauter and V. Lefèvre, INRIA (2007). - Float w = exp2(y * log2(x)); - return sign * w; - } - } - return impl(x, y); + return _powImpl(x, y); } /// @@ -802,6 +592,216 @@ if (isFloatingPoint!(F) && isFloatingPoint!(G)) assert(pow(-real.infinity, 0.0) == 1.0); } +private real _powImpl(real x, real y) @safe @nogc pure nothrow +{ + alias F = real; + import core.math : fabs, sqrt; + import std.math.traits : isInfinity, isNaN, signbit; + + // Special cases. + if (isNaN(y)) + return y; + if (isNaN(x) && y != 0.0) + return x; + + // Even if x is NaN. + if (y == 0.0) + return 1.0; + if (y == 1.0) + return x; + + if (isInfinity(y)) + { + if (isInfinity(x)) + { + if (!signbit(y) && !signbit(x)) + return F.infinity; + else + return F.nan; + } + else if (fabs(x) > 1) + { + if (signbit(y)) + return +0.0; + else + return F.infinity; + } + else if (fabs(x) == 1) + { + return F.nan; + } + else // < 1 + { + if (signbit(y)) + return F.infinity; + else + return +0.0; + } + } + if (isInfinity(x)) + { + if (signbit(x)) + { + long i = cast(long) y; + if (y > 0.0) + { + if (i == y && i & 1) + return -F.infinity; + else if (i == y) + return F.infinity; + else + return -F.nan; + } + else if (y < 0.0) + { + if (i == y && i & 1) + return -0.0; + else if (i == y) + return +0.0; + else + return F.nan; + } + } + else + { + if (y > 0.0) + return F.infinity; + else if (y < 0.0) + return +0.0; + } + } + + if (x == 0.0) + { + if (signbit(x)) + { + long i = cast(long) y; + if (y > 0.0) + { + if (i == y && i & 1) + return -0.0; + else + return +0.0; + } + else if (y < 0.0) + { + if (i == y && i & 1) + return -F.infinity; + else + return F.infinity; + } + } + else + { + if (y > 0.0) + return +0.0; + else if (y < 0.0) + return F.infinity; + } + } + if (x == 1.0) + return 1.0; + + if (y >= F.max) + { + if ((x > 0.0 && x < 1.0) || (x > -1.0 && x < 0.0)) + return 0.0; + if (x > 1.0 || x < -1.0) + return F.infinity; + } + if (y <= -F.max) + { + if ((x > 0.0 && x < 1.0) || (x > -1.0 && x < 0.0)) + return F.infinity; + if (x > 1.0 || x < -1.0) + return 0.0; + } + + if (x >= F.max) + { + if (y > 0.0) + return F.infinity; + else + return 0.0; + } + if (x <= -F.max) + { + long i = cast(long) y; + if (y > 0.0) + { + if (i == y && i & 1) + return -F.infinity; + else + return F.infinity; + } + else if (y < 0.0) + { + if (i == y && i & 1) + return -0.0; + else + return +0.0; + } + } + + // Integer power of x. + long iy = cast(long) y; + if (iy == y && fabs(y) < 32_768.0) + return pow(x, iy); + + real sign = 1.0; + if (x < 0) + { + // Result is real only if y is an integer + // Check for a non-zero fractional part + enum maxOdd = pow(2.0L, real.mant_dig) - 1.0L; + static if (maxOdd > ulong.max) + { + // Generic method, for any FP type + import std.math.rounding : floor; + if (floor(y) != y) + return sqrt(x); // Complex result -- create a NaN + + const hy = 0.5 * y; + if (floor(hy) != hy) + sign = -1.0; + } + else + { + // Much faster, if ulong has enough precision + const absY = fabs(y); + if (absY <= maxOdd) + { + const uy = cast(ulong) absY; + if (uy != absY) + return sqrt(x); // Complex result -- create a NaN + + if (uy & 1) + sign = -1.0; + } + } + x = -x; + } + version (INLINE_YL2X) + { + // If x > 0, x ^^ y == 2 ^^ ( y * log2(x) ) + // TODO: This is not accurate in practice. A fast and accurate + // (though complicated) method is described in: + // "An efficient rounding boundary test for pow(x, y) + // in double precision", C.Q. Lauter and V. Lefèvre, INRIA (2007). + return sign * exp2( core.math.yl2x(x, y) ); + } + else + { + // If x > 0, x ^^ y == 2 ^^ ( y * log2(x) ) + // TODO: This is not accurate in practice. A fast and accurate + // (though complicated) method is described in: + // "An efficient rounding boundary test for pow(x, y) + // in double precision", C.Q. Lauter and V. Lefèvre, INRIA (2007). + auto w = exp2(y * log2(x)); + return sign * w; + } +} + /** Computes the value of a positive integer `x`, raised to the power `n`, modulo `m`. * * Params: From f176df8475ee1d3e8a1684957945a844f1ddb462 Mon Sep 17 00:00:00 2001 From: Jeremy Baxter Date: Mon, 8 Jul 2024 08:39:14 +1200 Subject: [PATCH 282/327] fix ddoc blunders Caught with grep -Er '\(\$[A-Za-z]' --- std/bitmanip.d | 2 +- std/exception.d | 2 +- std/format/package.d | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/std/bitmanip.d b/std/bitmanip.d index 639b8214c8c..0993d34843f 100644 --- a/std/bitmanip.d +++ b/std/bitmanip.d @@ -1306,7 +1306,7 @@ public: /** Sets the bits of a slice of `BitArray` starting - at index `start` and ends at index ($D end - 1) + at index `start` and ends at index $(D end - 1) with the values specified by `val`. */ void opSliceAssign(bool val, size_t start, size_t end) @nogc pure nothrow diff --git a/std/exception.d b/std/exception.d index 58a667c1d85..f2693cfb0eb 100644 --- a/std/exception.d +++ b/std/exception.d @@ -1540,7 +1540,7 @@ version (StdUnittest) } /+ -Returns true if the field at index `i` in ($D T) shares its address with another field. +Returns true if the field at index `i` in $(D T) shares its address with another field. Note: This does not merelly check if the field is a member of an union, but also that it is not a single child. diff --git a/std/format/package.d b/std/format/package.d index f1d47055836..a78e1b3d0dc 100644 --- a/std/format/package.d +++ b/std/format/package.d @@ -358,7 +358,7 @@ $(BOOKTABLE , Default precision is large enough to add all digits of the integral value. - In case of ($B 'a') and $(B 'A'), the integral digit can be + In case of $(B 'a') and $(B 'A'), the integral digit can be any hexadecimal digit. ) ) From 581f473d24814e6720ea5d7eee86ece0bd98489e Mon Sep 17 00:00:00 2001 From: Jeremy Baxter Date: Mon, 8 Jul 2024 08:40:28 +1200 Subject: [PATCH 283/327] fix minor spelling mistake --- std/exception.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/exception.d b/std/exception.d index f2693cfb0eb..c3024d79968 100644 --- a/std/exception.d +++ b/std/exception.d @@ -1542,7 +1542,7 @@ version (StdUnittest) /+ Returns true if the field at index `i` in $(D T) shares its address with another field. -Note: This does not merelly check if the field is a member of an union, but also that +Note: This does not merely check if the field is a member of an union, but also that it is not a single child. +/ package enum isUnionAliased(T, size_t i) = isUnionAliasedImpl!T(T.tupleof[i].offsetof); From f31a7bc41db365271fd4427045386a56a2816614 Mon Sep 17 00:00:00 2001 From: Jeremy Baxter Date: Sun, 14 Jul 2024 15:16:11 +1200 Subject: [PATCH 284/327] replace dead links for link in $(grep -Eor 'https?://[^\\)", ]+' | grep -v dlang.org \ | grep -Eo 'https?://.+'); do (printf "%s: " "$link"; curl -Is "$link" \ | head -n1) | grep -E '4..$'; done for link in $(grep -Eor '\\$\\(HTTP .+, ' | grep -v dlang.org \ | cut -d' ' -f2- | sed 's/, .*$//'); do out="$(curl -Is "$link")"; \ (! [ $? = 0 ] || printf '%s' "$out" | head -n1 | grep -Eq '4..') \ && printf '%s\\n' "$link"; done --- std/datetime/timezone.d | 8 ++++---- std/experimental/allocator/building_blocks/region.d | 4 ++-- std/experimental/allocator/mmap_allocator.d | 2 +- std/json.d | 2 +- std/numeric.d | 2 +- std/stdio.d | 6 +++--- std/utf.d | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/std/datetime/timezone.d b/std/datetime/timezone.d index b23891808f5..4b6f27d066d 100644 --- a/std/datetime/timezone.d +++ b/std/datetime/timezone.d @@ -3339,7 +3339,7 @@ else version (Posix) Windows uses a different set of time zone names than the IANA time zone database does, and how they correspond to one another changes over time (particularly when Microsoft updates Windows). - $(HTTP unicode.org/cldr/data/common/supplemental/windowsZones.xml, windowsZones.xml) + $(HTTP github.com/unicode-org/cldr/blob/main/common/supplemental/windowsZones.xml, windowsZones.xml) provides the current conversions (which may or may not match up with what's on a particular Windows box depending on how up-to-date it is), and parseTZConversions reads in those conversions from windowsZones.xml so that @@ -3358,7 +3358,7 @@ else version (Posix) Params: windowsZonesXMLText = The text from - $(HTTP unicode.org/cldr/data/common/supplemental/windowsZones.xml, windowsZones.xml) + $(HTTP github.com/unicode-org/cldr/blob/main/common/supplemental/windowsZones.xml, windowsZones.xml) Throws: Exception if there is an error while parsing the given XML. @@ -3372,7 +3372,7 @@ else version (Posix) // and parse it so that it's guaranteed to be up-to-date, though // that has the downside that the code needs to worry about the // site being down or unicode.org changing the URL. - auto url = "http://unicode.org/cldr/data/common/supplemental/windowsZones.xml"; + auto url = "https://raw.githubusercontent.com/unicode-org/cldr/main/common/supplemental/windowsZones.xml"; auto conversions2 = parseTZConversions(std.net.curl.get(url)); -------------------- +/ @@ -3458,7 +3458,7 @@ TZConversions parseTZConversions(string windowsZonesXMLText) @safe pure import std.algorithm.iteration : uniq; import std.algorithm.sorting : isSorted; - // Reduced text from http://unicode.org/cldr/data/common/supplemental/windowsZones.xml + // Reduced text from https://github.com/unicode-org/cldr/blob/main/common/supplemental/windowsZones.xml auto sampleFileText = ` diff --git a/std/experimental/allocator/building_blocks/region.d b/std/experimental/allocator/building_blocks/region.d index a23746a236b..736b1858e43 100644 --- a/std/experimental/allocator/building_blocks/region.d +++ b/std/experimental/allocator/building_blocks/region.d @@ -904,7 +904,7 @@ version (DragonFlyBSD) { // sbrk is deprecated in favor of mmap (we could implement a mmap + MAP_NORESERVE + PROT_NONE version) // brk has been removed - // https://www.dragonflydigest.com/2019/02/22/22586.html + // https://web.archive.org/web/20221006070113/https://www.dragonflydigest.com/2019/02/22/22586.html // http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/dc676eaefa61b0f47bbea1c53eab86fd5ccd78c6 // http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4b5665564ef37dc939a3a9ffbafaab9894c18885 // http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/8618d94a0e2ff8303ad93c123a3fa598c26a116e @@ -968,7 +968,7 @@ version (Posix) struct SbrkRegion(uint minAlign = platformAlignment) scope(exit) pthread_mutex_unlock(cast(pthread_mutex_t*) &sbrkMutex) == 0 || assert(0); // Assume sbrk returns the old break. Most online documentation confirms - // that, except for http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf, + // that, except for https://web.archive.org/web/20171014020821/http://www.inf.udec.cl/~leo/Malloc_tutorial.pdf, // which claims the returned value is not portable. auto p = sbrk(rounded); if (p == cast(void*) -1) diff --git a/std/experimental/allocator/mmap_allocator.d b/std/experimental/allocator/mmap_allocator.d index 4151d0e0504..494d5a3b40a 100644 --- a/std/experimental/allocator/mmap_allocator.d +++ b/std/experimental/allocator/mmap_allocator.d @@ -60,7 +60,7 @@ struct MmapAllocator // http://man7.org/linux/man-pages/man2/mmap.2.html package alias allocateZeroed = allocate; else version (NetBSD) - // http://netbsd.gw.com/cgi-bin/man-cgi?mmap+2+NetBSD-current + // https://man.netbsd.org/mmap.2 package alias allocateZeroed = allocate; else version (Solaris) // https://docs.oracle.com/cd/E88353_01/html/E37841/mmap-2.html diff --git a/std/json.d b/std/json.d index 6e94a5d71ce..46a7196d078 100644 --- a/std/json.d +++ b/std/json.d @@ -13,7 +13,7 @@ also $(LINK https://forum.dlang.org/post/dzfyaxypmkdrpakmycjv@forum.dlang.org).) Copyright: Copyright Jeremie Pelletier 2008 - 2009. License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: Jeremie Pelletier, David Herberth -References: $(LINK http://json.org/), $(LINK http://seriot.ch/parsing_json.html) +References: $(LINK http://json.org/), $(LINK https://seriot.ch/projects/parsing_json.html) Source: $(PHOBOSSRC std/json.d) */ /* diff --git a/std/numeric.d b/std/numeric.d index 648b70eeea8..9f0fb564de3 100644 --- a/std/numeric.d +++ b/std/numeric.d @@ -3405,7 +3405,7 @@ private: // This algorithm works by performing the even and odd parts of our FFT // using the "two for the price of one" method mentioned at - // http://www.engineeringproductivitytools.com/stuff/T0001/PT10.HTM#Head521 + // https://web.archive.org/web/20180312110051/http://www.engineeringproductivitytools.com/stuff/T0001/PT10.HTM#Head521 // by making the odd terms into the imaginary components of our new FFT, // and then using symmetry to recombine them. void fftImplPureReal(Ret, R)(R range, Ret buf) const diff --git a/std/stdio.d b/std/stdio.d index 8caa9b36718..502a5a8c9e9 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -795,7 +795,7 @@ Throws: `ErrnoException` in case of error. /** Detaches from the current file (throwing on failure), and then runs a command by calling the C standard library function $(HTTP -opengroup.org/onlinepubs/007908799/xsh/_popen.html, _popen). +pubs.opengroup.org/onlinepubs/7908799/xsh/popen.html, popen). Throws: `ErrnoException` in case of error. */ @@ -4576,11 +4576,11 @@ if ((isSomeFiniteCharInputRange!R1 || isSomeString!R1) && { /* * The new opengroup large file support API is transparently - * included in the normal C bindings. http://opengroup.org/platform/lfs.html#1.0 + * included in the normal C bindings. https://www.opengroup.org/platform/lfs.html#1.0 * if _FILE_OFFSET_BITS in druntime is 64, off_t is 64 bit and * the normal functions work fine. If not, then large file support * probably isn't available. Do not use the old transitional API - * (the native extern(C) fopen64, http://www.unix.org/version2/whatsnew/lfs20mar.html#3.0) + * (the native extern(C) fopen64, https://unix.org/version2/whatsnew/lfs20mar.html#3.0) */ import core.sys.posix.stdio : fopen; return fopen(namez, modez); diff --git a/std/utf.d b/std/utf.d index f0d5d4d268b..9a326a5ac3a 100644 --- a/std/utf.d +++ b/std/utf.d @@ -53,7 +53,7 @@ $(TR $(TD Miscellaneous) $(TD See_Also: $(LINK2 http://en.wikipedia.org/wiki/Unicode, Wikipedia)
$(LINK http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8)
- $(LINK http://anubis.dkuug.dk/JTC1/SC2/WG2/docs/n1335) + $(LINK https://web.archive.org/web/20100113043530/https://anubis.dkuug.dk/JTC1/SC2/WG2/docs/n1335) Copyright: Copyright The D Language Foundation 2000 - 2012. License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: $(HTTP digitalmars.com, Walter Bright) and From 7c68568353d05e0f7df76179086eb3615672a90a Mon Sep 17 00:00:00 2001 From: Jeremy Baxter Date: Sun, 14 Jul 2024 15:37:44 +1200 Subject: [PATCH 285/327] std.stdio: fdopen is a POSIX library function It's implemented in Windows but it's not part of standard C. https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/fdopen --- std/stdio.d | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/std/stdio.d b/std/stdio.d index 502a5a8c9e9..3362040a75c 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -813,8 +813,9 @@ The mode must be compatible with the mode of the file descriptor. Throws: `ErrnoException` in case of error. Params: fd = File descriptor to associate with this `File`. - stdioOpenmode = Mode to associate with this File. The mode has the same semantics - semantics as in the C standard library $(CSTDIO fdopen) function, + stdioOpenmode = Mode to associate with this File. The mode has the same + semantics as in the POSIX library function $(HTTP + pubs.opengroup.org/onlinepubs/7908799/xsh/fdopen.html, fdopen) and must be compatible with `fd`. */ void fdopen(int fd, scope const(char)[] stdioOpenmode = "rb") @safe From d5780aa8f5ee25a6330993d15262a33eb722aeeb Mon Sep 17 00:00:00 2001 From: Dennis Date: Fri, 19 Jul 2024 09:52:14 +0200 Subject: [PATCH 286/327] std.json: Document `opEquals` (#8975) Co-authored-by: Dennis Korpel --- std/json.d | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/std/json.d b/std/json.d index 46a7196d078..9dcec89b2ce 100644 --- a/std/json.d +++ b/std/json.d @@ -804,7 +804,22 @@ struct JSONValue assert(j["author"].str == "Walter"); } - /// + /** + * Compare two JSONValues for equality + * + * JSON arrays and objects are compared deeply. The order of object keys does not matter. + * + * Floating point numbers are compared for exact equality, not approximal equality. + * + * Different number types (unsigned, signed, and floating) will be compared by converting + * them to a common type, in the same way that comparison of built-in D `int`, `uint` and + * `float` works. + * + * Other than that, types must match exactly. + * Empty arrays are not equal to empty objects, and booleans are never equal to integers. + * + * Returns: whether this `JSONValue` is equal to `rhs` + */ bool opEquals(const JSONValue rhs) const @nogc nothrow pure @safe { return opEquals(rhs); @@ -871,9 +886,13 @@ struct JSONValue /// @safe unittest { - assert(JSONValue(0u) == JSONValue(0)); - assert(JSONValue(0u) == JSONValue(0.0)); - assert(JSONValue(0) == JSONValue(0.0)); + assert(JSONValue(10).opEquals(JSONValue(10.0))); + assert(JSONValue(10) != (JSONValue(10.5))); + + assert(JSONValue(1) != JSONValue(true)); + assert(JSONValue.emptyArray != JSONValue.emptyObject); + + assert(parseJSON(`{"a": 1, "b": 2}`).opEquals(parseJSON(`{"b": 2, "a": 1}`))); } /// Implements the foreach `opApply` interface for json arrays. From 33c643245a43dafdf56b2ef8f9df1d5d72aa1790 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Fri, 19 Jul 2024 10:46:17 +0100 Subject: [PATCH 287/327] Expand `goo.gl` links that may break Note: www.canonware.com/download/jemalloc/jemalloc-latest/doc/jemalloc.html jemalloc link isn't responding, and it now lives at jemalloc.net (see also https://github.com/jemalloc/jemalloc?tab=readme-ov-file#readme). Fixes Bugzilla Issue 24667 - goo.gl is going away. --- std/experimental/allocator/building_blocks/package.d | 4 ++-- std/experimental/allocator/building_blocks/stats_collector.d | 2 +- std/experimental/allocator/mallocator.d | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/std/experimental/allocator/building_blocks/package.d b/std/experimental/allocator/building_blocks/package.d index 6bc527d2374..521d7ed0a47 100644 --- a/std/experimental/allocator/building_blocks/package.d +++ b/std/experimental/allocator/building_blocks/package.d @@ -43,7 +43,7 @@ alignedReallocate) APIs.)) $(TR $(TDC size_t goodAllocSize(size_t n);, $(POST $(RES) >= n)) $(TD Allocators customarily allocate memory in discretely-sized chunks. Therefore, a request for `n` bytes may result in a larger allocation. The extra memory allocated goes -unused and adds to the so-called $(HTTP goo.gl/YoKffF,internal fragmentation). +unused and adds to the so-called $(HTTPS en.wikipedia.org/wiki/Fragmentation_(computing)#Internal_fragmentation,internal fragmentation). The function `goodAllocSize(n)` returns the actual number of bytes that would be allocated upon a request for `n` bytes. This module defines a default implementation that returns `n` rounded up to a multiple of the allocator's @@ -137,7 +137,7 @@ thread-safe or not, this instance may be `shared`.)) $(H2 Sample Assembly) -The example below features an _allocator modeled after $(HTTP goo.gl/m7329l, +The example below features an _allocator modeled after $(HTTP jemalloc.net/, jemalloc), which uses a battery of free-list allocators spaced so as to keep internal fragmentation to a minimum. The `FList` definitions specify no bounds for the freelist because the `Segregator` does all size selection in diff --git a/std/experimental/allocator/building_blocks/stats_collector.d b/std/experimental/allocator/building_blocks/stats_collector.d index 3770af10ceb..1d1e480ec56 100644 --- a/std/experimental/allocator/building_blocks/stats_collector.d +++ b/std/experimental/allocator/building_blocks/stats_collector.d @@ -134,7 +134,7 @@ enum Options : ulong bytesNotMoved = 1u << 17, /** Measures the sum of extra bytes allocated beyond the bytes requested, i.e. - the $(HTTP goo.gl/YoKffF, internal fragmentation). This is the current + the $(HTTPS en.wikipedia.org/wiki/Fragmentation_(computing)#Internal_fragmentation, internal fragmentation). This is the current effective number of slack bytes, and it goes up and down with time. */ bytesSlack = 1u << 18, diff --git a/std/experimental/allocator/mallocator.d b/std/experimental/allocator/mallocator.d index 3d4dc9a2c52..087dbec449a 100644 --- a/std/experimental/allocator/mallocator.d +++ b/std/experimental/allocator/mallocator.d @@ -52,7 +52,7 @@ struct Mallocator import core.memory : pureRealloc; if (!s) { - // fuzzy area in the C standard, see http://goo.gl/ZpWeSE + // fuzzy area in the C standard, see https://stackoverflow.com/questions/6502077/malloc-and-realloc-functions // so just deallocate and nullify the pointer deallocate(b); b = null; From 0a1735bf155ab9ff13f30a5a662a39fea44acc27 Mon Sep 17 00:00:00 2001 From: Quirin Schroll Date: Mon, 15 Jul 2024 16:53:06 +0200 Subject: [PATCH 288/327] Fix Lockstep attribute limitation --- std/range/package.d | 182 +++++++++++++++++++++++++------------------- 1 file changed, 105 insertions(+), 77 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index b6fddf76559..11fd5e3166f 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -6070,10 +6070,13 @@ nothrow pure @system unittest Generate lockstep's opApply function as a mixin string. If withIndex is true prepend a size_t index to the delegate. */ -private string lockstepMixin(Ranges...)(bool withIndex, bool reverse) +private struct LockstepMixin(Ranges...) { + import std.conv : text; import std.format : format; + string name; + string implName; string[] params; string[] emptyChecks; string[] dgArgs; @@ -6081,76 +6084,90 @@ private string lockstepMixin(Ranges...)(bool withIndex, bool reverse) string indexDef; string indexInc; - if (withIndex) +@safe pure: + this(bool withIndex, bool reverse) { - params ~= "size_t"; - dgArgs ~= "index"; - if (reverse) + if (withIndex) { - indexDef = q{ - size_t index = ranges[0].length-1; - enforce(_stoppingPolicy == StoppingPolicy.requireSameLength, - "lockstep can only be used with foreach_reverse when stoppingPolicy == requireSameLength"); + params ~= "size_t"; + dgArgs ~= "index"; + if (reverse) + { + indexDef = q{ + size_t index = ranges[0].length - 1; + enforce(this.stoppingPolicy == StoppingPolicy.requireSameLength, + "lockstep can only be used with foreach_reverse when stoppingPolicy == requireSameLength"); - foreach (range; ranges[1..$]) - enforce(range.length == ranges[0].length); - }; - indexInc = "--index;"; + foreach (range; ranges[1 .. $]) + enforce(range.length == ranges[0].length); + }; + indexInc = "--index;"; + } + else + { + indexDef = "size_t index = 0;"; + indexInc = "++index;"; + } } - else + + foreach (idx, Range; Ranges) { - indexDef = "size_t index = 0;"; - indexInc = "++index;"; + params ~= format("%sElementType!(Ranges[%s])", hasLvalueElements!Range ? "ref " : "", idx); + emptyChecks ~= format("!ranges[%s].empty", idx); + if (reverse) + { + dgArgs ~= format("ranges[%s].back", idx); + popFronts ~= format("ranges[%s].popBack();", idx); + } + else + { + dgArgs ~= format("ranges[%s].front", idx); + popFronts ~= format("ranges[%s].popFront();", idx); + } } - } - foreach (idx, Range; Ranges) - { - params ~= format("%sElementType!(Ranges[%s])", hasLvalueElements!Range ? "ref " : "", idx); - emptyChecks ~= format("!ranges[%s].empty", idx); if (reverse) { - dgArgs ~= format("ranges[%s].back", idx); - popFronts ~= format("ranges[%s].popBack();", idx); + name = "opApplyReverse"; + if (withIndex) implName = "opApplyReverseIdxImpl"; + else implName = "opApplyReverseImpl"; } else { - dgArgs ~= format("ranges[%s].front", idx); - popFronts ~= format("ranges[%s].popFront();", idx); + name = "opApply"; + if (withIndex) implName = "opApplyIdxImpl"; + else implName = "opApplyImpl"; } } - string name = reverse ? "opApplyReverse" : "opApply"; +const: + string getAlias() => iq{ + alias $(name) = $(implName)!(int delegate($(params.join(", ")))); + }.text; - return format( - q{ - int %s(scope int delegate(%s) dg) + string getImpl() => iq{ + int $(implName)(DG)(scope DG dg) scope { import std.exception : enforce; - auto ranges = _ranges; - int res; - %s + auto ranges = this.ranges; + $(indexDef) - while (%s) + while ($(emptyChecks.join(" && "))) { - res = dg(%s); - if (res) break; - %s - %s + if (int result = dg($(dgArgs.join(", ")))) return result; + $(popFronts.join("\n ")) + $(indexInc) } - if (_stoppingPolicy == StoppingPolicy.requireSameLength) + if (this.stoppingPolicy == StoppingPolicy.requireSameLength) { foreach (range; ranges) enforce(range.empty); } - return res; + return 0; } - }, name, params.join(", "), indexDef, - emptyChecks.join(" && "), dgArgs.join(", "), - popFronts.join("\n "), - indexInc); + }.text; } /** @@ -6170,10 +6187,6 @@ private string lockstepMixin(Ranges...)(bool withIndex, bool reverse) By default `StoppingPolicy` is set to `StoppingPolicy.shortest`. - Limitations: The `pure`, `@safe`, `@nogc`, or `nothrow` attributes cannot be - inferred for `lockstep` iteration. $(LREF zip) can infer the first two due to - a different implementation. - See_Also: $(LREF zip) `lockstep` is similar to $(LREF zip), but `zip` bundles its @@ -6184,41 +6197,50 @@ private string lockstepMixin(Ranges...)(bool withIndex, bool reverse) struct Lockstep(Ranges...) if (Ranges.length > 1 && allSatisfy!(isInputRange, Ranges)) { + private Ranges ranges; + private StoppingPolicy stoppingPolicy; + /// - this(R ranges, StoppingPolicy sp = StoppingPolicy.shortest) + this(Ranges ranges, StoppingPolicy sp = StoppingPolicy.shortest) { import std.exception : enforce; - _ranges = ranges; + this.ranges = ranges; enforce(sp != StoppingPolicy.longest, - "Can't use StoppingPolicy.Longest on Lockstep."); - _stoppingPolicy = sp; + "Can't use StoppingPolicy.Longest on Lockstep."); + this.stoppingPolicy = sp; } - mixin(lockstepMixin!Ranges(false, false)); - mixin(lockstepMixin!Ranges(true, false)); + enum lockstepMixinFF = LockstepMixin!Ranges(false, false); + mixin(lockstepMixinFF.getImpl); + + enum lockstepMixinTF = LockstepMixin!Ranges(true, false); + mixin(lockstepMixinTF.getImpl); + + mixin(lockstepMixinFF.getAlias); + mixin(lockstepMixinTF.getAlias); + static if (allSatisfy!(isBidirectionalRange, Ranges)) { - mixin(lockstepMixin!Ranges(false, true)); + enum lockstepMixinFT = LockstepMixin!Ranges(false, true); + mixin(lockstepMixinFT.getImpl); static if (allSatisfy!(hasLength, Ranges)) { - mixin(lockstepMixin!Ranges(true, true)); + enum lockstepMixinTT = LockstepMixin!Ranges(true, true); + mixin(lockstepMixinTT.getImpl); + mixin(lockstepMixinTT.getAlias); } else { mixin(lockstepReverseFailMixin!Ranges(true)); } + mixin(lockstepMixinFT.getAlias); } else { mixin(lockstepReverseFailMixin!Ranges(false)); mixin(lockstepReverseFailMixin!Ranges(true)); } - -private: - alias R = Ranges; - R _ranges; - StoppingPolicy _stoppingPolicy; } /// Ditto @@ -6238,28 +6260,34 @@ if (allSatisfy!(isInputRange, Ranges)) } /// -@system unittest +pure @safe unittest { - auto arr1 = [1,2,3,4,5,100]; - auto arr2 = [6,7,8,9,10]; + int[6] arr1 = [1,2,3,4,5,100]; + int[5] arr2 = [6,7,8,9,10]; - foreach (ref a, b; lockstep(arr1, arr2)) - { - a += b; - } + foreach (ref a, b; lockstep(arr1[], arr2[])) + { + a += b; + } - assert(arr1 == [7,9,11,13,15,100]); + assert(arr1 == [7,9,11,13,15,100]); +} - /// Lockstep also supports iterating with an index variable: - foreach (index, a, b; lockstep(arr1, arr2)) - { - assert(arr1[index] == a); - assert(arr2[index] == b); - } +/// Lockstep also supports iterating with an index variable: +pure @safe unittest +{ + int[3] arr1 = [1,2,3]; + int[3] arr2 = [4,5,6]; + + foreach (index, a, b; lockstep(arr1[], arr2[])) + { + assert(arr1[index] == a); + assert(arr2[index] == b); + } } // https://issues.dlang.org/show_bug.cgi?id=15860: foreach_reverse on lockstep -@system unittest +pure @safe unittest { auto arr1 = [0, 1, 2, 3]; auto arr2 = [4, 5, 6, 7]; @@ -6283,7 +6311,7 @@ if (allSatisfy!(isInputRange, Ranges)) } } -@system unittest +pure @safe unittest { import std.algorithm.iteration : filter; import std.conv : to; @@ -6380,7 +6408,7 @@ if (allSatisfy!(isInputRange, Ranges)) foreach (x, y; lockstep(iota(0, 10), iota(0, 10))) { } } -@system unittest +pure @safe unittest { struct RvalueRange { From 9a63e1c6b469bda4270eea89b4e622735590c002 Mon Sep 17 00:00:00 2001 From: Quirin Schroll Date: Mon, 15 Jul 2024 18:56:45 +0200 Subject: [PATCH 289/327] Address style errors --- std/range/package.d | 50 +++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index 11fd5e3166f..99032fa9531 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -6141,33 +6141,39 @@ private struct LockstepMixin(Ranges...) } const: - string getAlias() => iq{ - alias $(name) = $(implName)!(int delegate($(params.join(", ")))); - }.text; + string getAlias() + { + return iq{ + alias $(name) = $(implName)!(int delegate($(params.join(", ")))); + }.text; + } - string getImpl() => iq{ - int $(implName)(DG)(scope DG dg) scope - { - import std.exception : enforce; + string getImpl() + { + return iq{ + int $(implName)(DG)(scope DG dg) scope + { + import std.exception : enforce; - auto ranges = this.ranges; - $(indexDef) + auto ranges = this.ranges; + $(indexDef) - while ($(emptyChecks.join(" && "))) - { - if (int result = dg($(dgArgs.join(", ")))) return result; - $(popFronts.join("\n ")) - $(indexInc) - } + while ($(emptyChecks.join(" && "))) + { + if (int result = dg($(dgArgs.join(", ")))) return result; + $(popFronts.join("\n ")) + $(indexInc) + } - if (this.stoppingPolicy == StoppingPolicy.requireSameLength) - { - foreach (range; ranges) - enforce(range.empty); + if (this.stoppingPolicy == StoppingPolicy.requireSameLength) + { + foreach (range; ranges) + enforce(range.empty); + } + return 0; } - return 0; - } - }.text; + }.text; + } } /** From 4d5ba460831ff28a19b18c1f9fe6f67b20893060 Mon Sep 17 00:00:00 2001 From: Quirin Schroll Date: Mon, 15 Jul 2024 20:05:45 +0200 Subject: [PATCH 290/327] Fix problems with reverse --- std/range/package.d | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index 99032fa9531..a6b0c15a462 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -6217,10 +6217,10 @@ if (Ranges.length > 1 && allSatisfy!(isInputRange, Ranges)) this.stoppingPolicy = sp; } - enum lockstepMixinFF = LockstepMixin!Ranges(false, false); + enum lockstepMixinFF = LockstepMixin!Ranges(withIndex: false, reverse: false); mixin(lockstepMixinFF.getImpl); - enum lockstepMixinTF = LockstepMixin!Ranges(true, false); + enum lockstepMixinTF = LockstepMixin!Ranges(withIndex: true, reverse: false); mixin(lockstepMixinTF.getImpl); mixin(lockstepMixinFF.getAlias); @@ -6228,24 +6228,27 @@ if (Ranges.length > 1 && allSatisfy!(isInputRange, Ranges)) static if (allSatisfy!(isBidirectionalRange, Ranges)) { - enum lockstepMixinFT = LockstepMixin!Ranges(false, true); + enum lockstepMixinFT = LockstepMixin!Ranges(withIndex: false, reverse: true); mixin(lockstepMixinFT.getImpl); static if (allSatisfy!(hasLength, Ranges)) { - enum lockstepMixinTT = LockstepMixin!Ranges(true, true); + enum lockstepMixinTT = LockstepMixin!Ranges(withIndex: true, reverse: true); mixin(lockstepMixinTT.getImpl); mixin(lockstepMixinTT.getAlias); } else { - mixin(lockstepReverseFailMixin!Ranges(true)); + mixin(lockstepReverseFailMixin!Ranges(withIndex: true)); + alias opApplyReverse = opApplyReverseIdxFail; } mixin(lockstepMixinFT.getAlias); } else { - mixin(lockstepReverseFailMixin!Ranges(false)); - mixin(lockstepReverseFailMixin!Ranges(true)); + mixin(lockstepReverseFailMixin!Ranges(withIndex: false)); + mixin(lockstepReverseFailMixin!Ranges(withIndex: true)); + alias opApplyReverse = opApplyReverseFail; + alias opApplyReverse = opApplyReverseIdxFail; } } @@ -6298,7 +6301,7 @@ pure @safe unittest auto arr1 = [0, 1, 2, 3]; auto arr2 = [4, 5, 6, 7]; - size_t n = arr1.length -1; + size_t n = arr1.length - 1; foreach_reverse (index, a, b; lockstep(arr1, arr2, StoppingPolicy.requireSameLength)) { assert(n == index); @@ -6470,11 +6473,11 @@ private string lockstepReverseFailMixin(Ranges...)(bool withIndex) return format( q{ - int opApplyReverse()(scope int delegate(%s) dg) + int opApplyReverse%sFail()(scope int delegate(%s) dg) { static assert(false, "%s"); } - }, params.join(", "), message); + }, withIndex ? "Idx" : "" , params.join(", "), message); } // For generic programming, make sure Lockstep!(Range) is well defined for a From 0050fb0c0f0471774e84d64f9bdf2d628e2991f9 Mon Sep 17 00:00:00 2001 From: Quirin Schroll Date: Mon, 15 Jul 2024 20:58:57 +0200 Subject: [PATCH 291/327] Address style errors --- std/range/package.d | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index a6b0c15a462..e2a2d7d2564 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -6143,26 +6143,29 @@ private struct LockstepMixin(Ranges...) const: string getAlias() { - return iq{ - alias $(name) = $(implName)!(int delegate($(params.join(", ")))); - }.text; + return format(q{ + alias %s = %s!(int delegate(%-(%s%|, %))); + }, + name, implName, params + ); } string getImpl() { - return iq{ - int $(implName)(DG)(scope DG dg) scope + return format(q{ + int %s(DG)(scope DG dg) scope { import std.exception : enforce; auto ranges = this.ranges; - $(indexDef) + %s - while ($(emptyChecks.join(" && "))) + while (%-(%s%| && %)) { - if (int result = dg($(dgArgs.join(", ")))) return result; - $(popFronts.join("\n ")) - $(indexInc) + if (int result = dg(%-(%s%|, %))) return result; + %-(%s%| + %) + %s } if (this.stoppingPolicy == StoppingPolicy.requireSameLength) @@ -6172,7 +6175,9 @@ const: } return 0; } - }.text; + }, + implName, indexDef, emptyChecks, dgArgs, popFronts, indexInc + ); } } @@ -6217,10 +6222,10 @@ if (Ranges.length > 1 && allSatisfy!(isInputRange, Ranges)) this.stoppingPolicy = sp; } - enum lockstepMixinFF = LockstepMixin!Ranges(withIndex: false, reverse: false); + private enum lockstepMixinFF = LockstepMixin!Ranges(withIndex: false, reverse: false); mixin(lockstepMixinFF.getImpl); - enum lockstepMixinTF = LockstepMixin!Ranges(withIndex: true, reverse: false); + private enum lockstepMixinTF = LockstepMixin!Ranges(withIndex: true, reverse: false); mixin(lockstepMixinTF.getImpl); mixin(lockstepMixinFF.getAlias); @@ -6228,11 +6233,11 @@ if (Ranges.length > 1 && allSatisfy!(isInputRange, Ranges)) static if (allSatisfy!(isBidirectionalRange, Ranges)) { - enum lockstepMixinFT = LockstepMixin!Ranges(withIndex: false, reverse: true); + private enum lockstepMixinFT = LockstepMixin!Ranges(withIndex: false, reverse: true); mixin(lockstepMixinFT.getImpl); static if (allSatisfy!(hasLength, Ranges)) { - enum lockstepMixinTT = LockstepMixin!Ranges(withIndex: true, reverse: true); + private enum lockstepMixinTT = LockstepMixin!Ranges(withIndex: true, reverse: true); mixin(lockstepMixinTT.getImpl); mixin(lockstepMixinTT.getAlias); } From 2959a226413076670120a76631aa85cc5f1291c6 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Fri, 19 Jul 2024 11:23:14 +0200 Subject: [PATCH 292/327] Bugzilla 23300 - add testcase for std.array on scope InputRange --- std/array.d | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/std/array.d b/std/array.d index 494fa297b4b..95340f7dabc 100644 --- a/std/array.d +++ b/std/array.d @@ -295,6 +295,19 @@ if (is(Range == U*, U) && isIterable!U && !isAutodecodableString!Range && !isInf R().array; } +// Test that `array(scope InputRange r)` returns a non-scope array +// https://issues.dlang.org/show_bug.cgi?id=23300 +@safe pure nothrow unittest +{ + @safe int[] fun() + { + import std.algorithm.iteration : map; + int[3] arr = [1, 2, 3]; + scope r = arr[].map!(x => x + 3); + return r.array; + } +} + /** Convert a narrow autodecoding string to an array type that fully supports random access. This is handled as a special case and always returns an array From 8a7aee06a3a04397f507a3dfdde336375eeac298 Mon Sep 17 00:00:00 2001 From: Denis Feklushkin Date: Tue, 23 Jul 2024 17:20:36 +0700 Subject: [PATCH 293/327] DEPRECATED_2.107 code removed (#9028) --- std/stdio.d | 96 ----------------------------------------------------- 1 file changed, 96 deletions(-) diff --git a/std/stdio.d b/std/stdio.d index 3362040a75c..35576a0ab9d 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -220,31 +220,6 @@ version (CRuntime_Microsoft) private alias _FGETWC = _fgetwc_nolock; private alias _FLOCK = _lock_file; private alias _FUNLOCK = _unlock_file; - - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTC = _fputc_nolock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTWC = _fputwc_nolock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETC = _fgetc_nolock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETWC = _fgetwc_nolock; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FLOCK = _lock_file; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FUNLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FUNLOCK = _unlock_file; } else version (CRuntime_Glibc) { @@ -254,31 +229,6 @@ else version (CRuntime_Glibc) private alias _FGETWC = fgetwc_unlocked; private alias _FLOCK = core.sys.posix.stdio.flockfile; private alias _FUNLOCK = core.sys.posix.stdio.funlockfile; - - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTC = fputc_unlocked; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTWC = fputwc_unlocked; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETC = fgetc_unlocked; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETWC = fgetwc_unlocked; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FLOCK = core.sys.posix.stdio.flockfile; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FUNLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FUNLOCK = core.sys.posix.stdio.funlockfile; } else version (GENERIC_IO) { @@ -304,52 +254,6 @@ else version (GENERIC_IO) { static assert(0, "don't know how to lock files on GENERIC_IO"); } - - // @@@DEPRECATED_2.107@@@ - deprecated("internal function fputc_unlocked was unintentionally available " - ~ "from std.stdio and will be removed afer 2.107") - extern (C) pragma(mangle, fputc.mangleof) int fputc_unlocked(int c, _iobuf* fp); - // @@@DEPRECATED_2.107@@@ - deprecated("internal function fputwc_unlocked was unintentionally available " - ~ "from std.stdio and will be removed afer 2.107") - extern (C) pragma(mangle, core.stdc.wchar_.fputwc.mangleof) int fputwc_unlocked(wchar_t c, _iobuf* fp); - // @@@DEPRECATED_2.107@@@ - deprecated("internal function fgetc_unlocked was unintentionally available " - ~ "from std.stdio and will be removed afer 2.107") - extern (C) pragma(mangle, fgetc.mangleof) int fgetc_unlocked(_iobuf* fp); - // @@@DEPRECATED_2.107@@@ - deprecated("internal function fgetwc_unlocked was unintentionally available " - ~ "from std.stdio and will be removed afer 2.107") - extern (C) pragma(mangle, core.stdc.wchar_.fgetwc.mangleof) int fgetwc_unlocked(_iobuf* fp); - - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTC = fputc_unlocked; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FPUTWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FPUTWC = fputwc_unlocked; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETC = fgetc_unlocked; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FGETWC was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FGETWC = fgetwc_unlocked; - - version (Posix) - { - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FLOCK = core.sys.posix.stdio.flockfile; - // @@@DEPRECATED_2.107@@@ - deprecated("internal alias FUNLOCK was unintentionally available from " - ~ "std.stdio and will be removed afer 2.107") - alias FUNLOCK = core.sys.posix.stdio.funlockfile; - } } else { From c00a5ee6a88a5aa852aa3c3b7f60f30ab1bda8d9 Mon Sep 17 00:00:00 2001 From: Denis Feklushkin Date: Wed, 17 Jul 2024 15:30:13 +0300 Subject: [PATCH 294/327] Adds check bounds of year to std.datetime.date.Date --- std/datetime/date.d | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/std/datetime/date.d b/std/datetime/date.d index ebdaba42a9d..7526f2d7bb4 100644 --- a/std/datetime/date.d +++ b/std/datetime/date.d @@ -3776,7 +3776,7 @@ public: enforceValid!"months"(cast(Month) month); enforceValid!"days"(year, cast(Month) month, day); - _year = cast(short) year; + _year = year.castToYear; _month = cast(Month) month; _day = cast(ubyte) day; } @@ -3814,6 +3814,7 @@ public: assertThrown!DateTimeException(Date(1999, 10, 32)); assertThrown!DateTimeException(Date(1999, 11, 31)); assertThrown!DateTimeException(Date(1999, 12, 32)); + assertThrown!DateTimeException(Date(short.max+1, 1, 1)); assertNotThrown!DateTimeException(Date(1999, 1, 31)); assertNotThrown!DateTimeException(Date(1999, 2, 28)); @@ -3839,6 +3840,7 @@ public: assertThrown!DateTimeException(Date(-1, 2, 29)); assertThrown!DateTimeException(Date(-2, 2, 29)); assertThrown!DateTimeException(Date(-3, 2, 29)); + assertThrown!DateTimeException(Date(short.min-1, 1, 1)); } @@ -4128,7 +4130,7 @@ public: @property void year(int year) @safe pure { enforceValid!"days"(year, _month, _day); - _year = cast(short) year; + _year = year.castToYear; } /// @@ -4215,7 +4217,7 @@ public: { if (year <= 0) throw new DateTimeException("The given year is not a year B.C."); - _year = cast(short)((year - 1) * -1); + _year = castToYear((year - 1) * -1); } /// @@ -9689,6 +9691,16 @@ if (units == "days") assert(!valid!"days"(2017, 2, 29)); } +private short castToYear(int year, string file = __FILE__, size_t line = __LINE__) @safe pure +{ + import std.conv : to, ConvOverflowException; + import std.format : format; + + try + return year.to!short; + catch (ConvOverflowException) + throw new DateTimeException(format("year %s doesn't fit to Date.", year), file, line); +} /++ Params: From 4d54884a49d074231044ad97c8a093be447d3af9 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sat, 27 Jul 2024 00:23:54 +0100 Subject: [PATCH 295/327] Fix Bugzilla 24685 - std.stdio.File.rawRead allows reading raw pointers from files in @safe code (#9030) --- std/stdio.d | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/std/stdio.d b/std/stdio.d index 35576a0ab9d..b4744600cd5 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -1040,6 +1040,9 @@ Throws: `ErrnoException` if the file is not opened or the call to `fread` fails. assert(buf == "\r\n\n\r\n"); } + // https://issues.dlang.org/show_bug.cgi?id=24685 + static assert(!__traits(compiles, (File f) @safe { int*[1] bar; f.rawRead(bar[]); })); + // https://issues.dlang.org/show_bug.cgi?id=21729 @system unittest { @@ -4534,6 +4537,13 @@ private auto trustedFwrite(T)(FILE* f, const T[] obj) @trusted * Convenience function that forwards to `core.stdc.stdio.fread` */ private auto trustedFread(T)(FILE* f, T[] obj) @trusted +if (!imported!"std.traits".hasIndirections!T) +{ + return fread(obj.ptr, T.sizeof, obj.length, f); +} + +private auto trustedFread(T)(FILE* f, T[] obj) @system +if (imported!"std.traits".hasIndirections!T) { return fread(obj.ptr, T.sizeof, obj.length, f); } From 7a14c896dd05f09b17e245453eee48bf9f278972 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sun, 28 Jul 2024 23:45:40 +0100 Subject: [PATCH 296/327] Fix Bugzilla 14138 - std.parallelism.task breaks @safety (#9033) --- std/parallelism.d | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/std/parallelism.d b/std/parallelism.d index fadb4c1759d..7525d9b1491 100644 --- a/std/parallelism.d +++ b/std/parallelism.d @@ -884,11 +884,26 @@ identical to the non-@safe case, but safety introduces some restrictions: */ @trusted auto task(F, Args...)(F fun, Args args) -if (is(typeof(fun(args))) && isSafeTask!F) +if (__traits(compiles, () @safe => fun(args)) && isSafeTask!F) { return new Task!(run, F, Args)(fun, args); } +@safe unittest +{ + static struct Oops { + int convert() { + *cast(int*) 0xcafebabe = 0xdeadbeef; + return 0; + } + alias convert this; + } + static void foo(int) @safe {} + + static assert(!__traits(compiles, task(&foo, Oops.init))); + static assert(!__traits(compiles, scopedTask(&foo, Oops.init))); +} + /** These functions allow the creation of `Task` objects on the stack rather than the GC heap. The lifetime of a `Task` created by `scopedTask` @@ -928,7 +943,7 @@ if (is(typeof(delegateOrFp(args))) && !isSafeTask!F) /// Ditto @trusted auto scopedTask(F, Args...)(F fun, Args args) -if (is(typeof(fun(args))) && isSafeTask!F) +if (__traits(compiles, () @safe => fun(args)) && isSafeTask!F) { auto ret = Task!(run, F, Args)(fun, args); ret.isScoped = true; From 9ffe71fea333bdd4880160bf6801e24a4a1bfc44 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Sun, 28 Jul 2024 23:49:54 +0100 Subject: [PATCH 297/327] Fix Bugzilla 15315 - can break immutable with std.algorithm.move (#9032) --- std/algorithm/mutation.d | 23 +++++++++++++++++++++++ std/typecons.d | 23 +++++++++++++---------- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/std/algorithm/mutation.d b/std/algorithm/mutation.d index fbef28e5d56..e434d248edb 100644 --- a/std/algorithm/mutation.d +++ b/std/algorithm/mutation.d @@ -1071,10 +1071,20 @@ Params: copy is performed. */ void move(T)(ref T source, ref T target) +if (__traits(compiles, target = T.init)) { moveImpl(target, source); } +/// ditto +template move(T) +if (!__traits(compiles, imported!"std.traits".lvalueOf!T = T.init)) +{ + /// + deprecated("Can't move into `target` as `" ~ T.stringof ~ "` can't be assigned") + void move(ref T source, ref T target) => moveImpl(target, source); +} + /// For non-struct types, `move` just performs `target = source`: @safe unittest { @@ -1184,6 +1194,19 @@ pure nothrow @safe @nogc unittest assert(s53 is s51); } +@system unittest +{ + static struct S + { + immutable int i; + ~this() @safe {} + } + alias ol = __traits(getOverloads, std.algorithm.mutation, "move", true)[1]; + static assert(__traits(isDeprecated, ol!S)); + // uncomment after deprecation + //static assert(!__traits(compiles, { S a, b; move(a, b); })); +} + /// Ditto T move(T)(return scope ref T source) { diff --git a/std/typecons.d b/std/typecons.d index 3c425c7d7de..0a378a732e4 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -10928,19 +10928,22 @@ struct RefCounted(T, RefCountedAutoInitialize autoInit = swap(_refCounted._store, rhs._refCounted._store); } - void opAssign(T rhs) + static if (__traits(compiles, lvalueOf!T = T.init)) { - import std.algorithm.mutation : move; - - static if (autoInit == RefCountedAutoInitialize.yes) - { - _refCounted.ensureInitialized(); - } - else + void opAssign(T rhs) { - assert(_refCounted.isInitialized); + import std.algorithm.mutation : move; + + static if (autoInit == RefCountedAutoInitialize.yes) + { + _refCounted.ensureInitialized(); + } + else + { + assert(_refCounted.isInitialized); + } + move(rhs, _refCounted._store._payload); } - move(rhs, _refCounted._store._payload); } static if (autoInit == RefCountedAutoInitialize.yes) From 4552211174f6575f63c61c74598e0bcc7530e508 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 31 Jul 2024 13:05:48 +0100 Subject: [PATCH 298/327] Fix Bugzilla 20870 - std.outbuffer.printf is trusted (#9037) --- std/outbuffer.d | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/std/outbuffer.d b/std/outbuffer.d index 92af9a9a16a..f6d4ba850f3 100644 --- a/std/outbuffer.d +++ b/std/outbuffer.d @@ -22,9 +22,10 @@ import std.traits : isSomeString; * OutBuffer's byte order is the format native to the computer. * To control the byte order (endianness), use a class derived * from OutBuffer. + * * OutBuffer's internal buffer is allocated with the GC. Pointers * stored into the buffer are scanned by the GC, but you have to - * ensure proper alignment, e.g. by using alignSize((void*).sizeof). + * ensure proper alignment, e.g. by using `alignSize((void*).sizeof)`. */ class OutBuffer @@ -297,7 +298,7 @@ class OutBuffer * Append output of C's vprintf() to internal buffer. */ - void vprintf(scope string format, va_list args) @trusted nothrow + void vprintf(scope string format, va_list args) @system nothrow { import core.stdc.stdio : vsnprintf; import core.stdc.stdlib : alloca; @@ -342,7 +343,7 @@ class OutBuffer * Append output of C's printf() to internal buffer. */ - void printf(scope string format, ...) @trusted + void printf(scope string format, ...) @system { va_list ap; va_start(ap, format); @@ -475,7 +476,7 @@ class OutBuffer buf.write("hello"); buf.write(cast(byte) 0x20); buf.write("world"); - buf.printf(" %d", 62665); + buf.writef(" %d", 62665); assert(cmp(buf.toString(), "hello world 62665") == 0); buf.clear(); From 4641576812c35968300f715ad91f00cb4cdb060c Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 31 Jul 2024 13:07:23 +0100 Subject: [PATCH 299/327] =?UTF-8?q?Fix=20Bugzilla=2020872=20-=20std.array.?= =?UTF-8?q?assocArray=20trusts=20user-provided=20'front=E2=80=A6=20(#9036)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- std/array.d | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/std/array.d b/std/array.d index 95340f7dabc..1ce4a648777 100644 --- a/std/array.d +++ b/std/array.d @@ -663,6 +663,8 @@ if (isInputRange!Values && isInputRange!Keys) alias ValueElement = ElementType!Values; static if (hasElaborateDestructor!ValueElement) ValueElement.init.__xdtor(); + + aa[key] = values.front; }))) { () @trusted { @@ -803,6 +805,20 @@ if (isInputRange!Values && isInputRange!Keys) assert(assocArray(1.iota, [UnsafeElement()]) == [0: UnsafeElement()]); } +@safe unittest +{ + struct ValueRange + { + string front() const @system; + @safe: + void popFront() {} + bool empty() const { return false; } + } + int[] keys; + ValueRange values; + static assert(!__traits(compiles, assocArray(keys, values))); +} + /** Construct a range iterating over an associative array by key/value tuples. From bdc034d9d44c284ffb4e387f0e10705905a84759 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Wed, 31 Jul 2024 14:07:16 +0200 Subject: [PATCH 300/327] Silence buildkite style failure on std.range --- .dscanner.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dscanner.ini b/.dscanner.ini index 03cf7e6ee77..83db68f6e67 100644 --- a/.dscanner.ini +++ b/.dscanner.ini @@ -404,7 +404,7 @@ redundant_attributes_check="-std.concurrency,-std.digest.md,-std.digest.ripemd,- style_check="+disabled" ;style_check="-etc.c.curl,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-etc.c.sqlite3,-etc.c.zlib,-std.algorithm.comparison,-std.algorithm.internal,-std.algorithm.iteration,-std.algorithm.mutation,-std.algorithm.sorting,-std.array,-std.base64,-std.bitmanip,-std.c.linux.linux,-std.compiler,-std.container.array,-std.conv,-std.datetime.date,-std.datetime.interval,-std.datetime.systime,-std.digest,-std.digest.murmurhash,-std.digest.sha,-std.encoding,-std.exception,-std.experimental.allocator,-std.experimental.allocator.building_blocks.affix_allocator,-std.experimental.allocator.building_blocks.allocator_list,-std.experimental.allocator.building_blocks.bucketizer,-std.experimental.allocator.building_blocks.fallback_allocator,-std.experimental.allocator.building_blocks.free_list,-std.experimental.allocator.building_blocks.free_tree,-std.experimental.allocator.building_blocks.null_allocator,-std.experimental.allocator.building_blocks.region,-std.experimental.allocator.building_blocks.segregator,-std.experimental.allocator.common,-std.experimental.allocator.gc_allocator,-std.experimental.allocator.mallocator,-std.experimental.allocator.mmap_allocator,-std.experimental.checkedint,-std.format,-std.functional,-std.getopt,-std.internal.digest.sha_SSSE3,-std.internal.math.errorfunction,-std.internal.math.gammafunction,-std.internal.test.dummyrange,-std.internal.unicode_tables,-std.json,-std.math,-std.meta,-std.numeric,-std.parallelism,-std.path,-std.process,-std.random,-std.range,-std.range.primitives,-std.regex,-std.regex.internal.ir,-std.regex.internal.kickstart,-std.signals,-std.socket,-std.stdio,-std.string,-std.uni,-std.uri,-std.utf,-std.uuid,-std.variant,-std.zlib" ; Checks for undocumented public declarations -undocumented_declaration_check="-etc.c.curl,-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-etc.c.sqlite3,-etc.c.zlib,-std.algorithm.sorting,-std.array,-std.ascii,-std.base64,-std.bitmanip,-std.c.linux.linux,-std.c.linux.socket,-std.c.osx.socket,-std.c.process,-std.compiler,-std.complex,-std.concurrency,-std.container,-std.container.array,-std.container.binaryheap,-std.container.dlist,-std.container.rbtree,-std.container.slist,-std.conv,-std.csv,-std.datetime,-std.datetime.date,-std.digest,-std.digest.hmac,-std.digest.md,-std.digest.murmurhash,-std.digest.ripemd,-std.digest.sha,-std.encoding,-std.exception,-std.experimental.allocator,-std.experimental.allocator.building_blocks.affix_allocator,-std.experimental.allocator.building_blocks.allocator_list,-std.experimental.allocator.building_blocks.bitmapped_block,-std.experimental.allocator.building_blocks.fallback_allocator,-std.experimental.allocator.building_blocks.free_list,-std.experimental.allocator.building_blocks.free_tree,-std.experimental.allocator.building_blocks.kernighan_ritchie,-std.experimental.allocator.building_blocks.quantizer,-std.experimental.allocator.building_blocks.region,-std.experimental.allocator.building_blocks.segregator,-std.experimental.allocator.building_blocks.stats_collector,-std.experimental.allocator.gc_allocator,-std.experimental.allocator.mallocator,-std.experimental.checkedint,-std.logger.core,-std.file,-std.format,-std.functional,-std.internal.digest.sha_SSSE3,-std.internal.math.biguintcore,-std.internal.math.biguintnoasm,-std.internal.math.biguintx86,-std.internal.math.errorfunction,-std.internal.math.gammafunction,-std.internal.test.dummyrange,-std.internal.test.sumtype_example_overloads,-std.internal.test.uda,-std.internal.windows.advapi32,-std.json,-std.math,-std.mmfile,-std.numeric,-std.outbuffer,-std.parallelism,-std.path,-std.process,-std.regex,-std.regex.internal.parser,-std.signals,-std.socket,-std.stdio,-std.string,-std.system,-std.traits,-std.uni,-std.utf,-std.variant,-std.windows.charset,-std.windows.registry,-std.windows.syserror,-std.zip,-std.zlib,-std.int128" +undocumented_declaration_check="-etc.c.curl,-etc.c.odbc.sql,-etc.c.odbc.sqlext,-etc.c.odbc.sqltypes,-etc.c.odbc.sqlucode,-etc.c.sqlite3,-etc.c.zlib,-std.algorithm.sorting,-std.array,-std.ascii,-std.base64,-std.bitmanip,-std.c.linux.linux,-std.c.linux.socket,-std.c.osx.socket,-std.c.process,-std.compiler,-std.complex,-std.concurrency,-std.container,-std.container.array,-std.container.binaryheap,-std.container.dlist,-std.container.rbtree,-std.container.slist,-std.conv,-std.csv,-std.datetime,-std.datetime.date,-std.digest,-std.digest.hmac,-std.digest.md,-std.digest.murmurhash,-std.digest.ripemd,-std.digest.sha,-std.encoding,-std.exception,-std.experimental.allocator,-std.experimental.allocator.building_blocks.affix_allocator,-std.experimental.allocator.building_blocks.allocator_list,-std.experimental.allocator.building_blocks.bitmapped_block,-std.experimental.allocator.building_blocks.fallback_allocator,-std.experimental.allocator.building_blocks.free_list,-std.experimental.allocator.building_blocks.free_tree,-std.experimental.allocator.building_blocks.kernighan_ritchie,-std.experimental.allocator.building_blocks.quantizer,-std.experimental.allocator.building_blocks.region,-std.experimental.allocator.building_blocks.segregator,-std.experimental.allocator.building_blocks.stats_collector,-std.experimental.allocator.gc_allocator,-std.experimental.allocator.mallocator,-std.experimental.checkedint,-std.logger.core,-std.file,-std.format,-std.functional,-std.internal.digest.sha_SSSE3,-std.internal.math.biguintcore,-std.internal.math.biguintnoasm,-std.internal.math.biguintx86,-std.internal.math.errorfunction,-std.internal.math.gammafunction,-std.internal.test.dummyrange,-std.internal.test.sumtype_example_overloads,-std.internal.test.uda,-std.internal.windows.advapi32,-std.json,-std.math,-std.mmfile,-std.numeric,-std.outbuffer,-std.parallelism,-std.path,-std.process,-std.regex,-std.regex.internal.parser,-std.signals,-std.socket,-std.stdio,-std.string,-std.system,-std.traits,-std.uni,-std.utf,-std.variant,-std.windows.charset,-std.windows.registry,-std.windows.syserror,-std.zip,-std.zlib,-std.int128,-std.range" ; Checks for unused labels unused_label_check="-std.conv,-std.internal.math.biguintx86,-std.regex.internal.thompson,-std.signals,-std.uni" ; Checks for unused function parameters From ebd24da8add9243c52e5cb346dcdf7acf3e6cbac Mon Sep 17 00:00:00 2001 From: Paul Backus Date: Thu, 1 Aug 2024 05:09:38 -0400 Subject: [PATCH 301/327] Fix Bugzilla 22293: opCast!bool for Nullable (#9039) The second opCast overload is necessary to allow built-in implicit conversions (e.g., mutable to const) to be performed explicitly via a cast expression. Nullable.opEquals depends on this behavior. --- std/typecons.d | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/std/typecons.d b/std/typecons.d index 0a378a732e4..aceb2878d49 100644 --- a/std/typecons.d +++ b/std/typecons.d @@ -3543,6 +3543,35 @@ struct Nullable(T) format!"%s"(a); } + /** + * Returns true if `this` has a value, otherwise false. + * + * Allows a `Nullable` to be used as the condition in an `if` statement: + * + * --- + * if (auto result = functionReturningNullable()) + * { + * doSomethingWith(result.get); + * } + * --- + */ + bool opCast(T : bool)() const + { + return !isNull; + } + + /// Prevents `opCast` from disabling built-in conversions. + auto ref T opCast(T, this This)() + if (is(This : T) || This.sizeof == T.sizeof) + { + static if (is(This : T)) + // Convert implicitly + return this; + else + // Reinterpret + return *cast(T*) &this; + } + /** * Forces `this` to the null state. */ @@ -4400,6 +4429,26 @@ auto nullable(T)(T t) assert(destroyed); } +// https://issues.dlang.org/show_bug.cgi?id=22293 +@safe unittest +{ + Nullable!int empty; + Nullable!int full = 123; + + assert(cast(bool) empty == false); + assert(cast(bool) full == true); + + if (empty) assert(0); + if (!full) assert(0); +} + +// check that opCast doesn't break unsafe casts +@system unittest +{ + Nullable!(const(int*)) a; + auto result = cast(immutable(Nullable!(int*))) a; +} + /** Just like `Nullable!T`, except that the null state is defined as a particular value. For example, $(D Nullable!(uint, uint.max)) is an From 59200013b3448c6bda14e8f76e3f4db550c44052 Mon Sep 17 00:00:00 2001 From: 0-v-0 Date: Wed, 7 Aug 2024 22:21:24 +0800 Subject: [PATCH 302/327] Remove std.conv import from skipData (#9040) --- std/format/internal/read.d | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/std/format/internal/read.d b/std/format/internal/read.d index 597898c9e23..05d6adc6318 100644 --- a/std/format/internal/read.d +++ b/std/format/internal/read.d @@ -25,7 +25,6 @@ package(std.format): void skipData(Range, Char)(ref Range input, scope const ref FormatSpec!Char spec) { import std.ascii : isDigit; - import std.conv : text; import std.range.primitives : empty, front, popFront; switch (spec.spec) @@ -38,8 +37,7 @@ void skipData(Range, Char)(ref Range input, scope const ref FormatSpec!Char spec while (!input.empty && isDigit(input.front)) input.popFront(); break; default: - assert(false, - text("Format specifier not understood: %", spec.spec)); + assert(0, "Format specifier not understood: %" ~ spec.spec); } } From f11b19d4115ef1871224cb6814c26799ea9a0369 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Thu, 8 Aug 2024 19:31:47 +0100 Subject: [PATCH 303/327] Fix Bugzilla 24698 - Appender needs to expose readonly property 'size_t length' without using 'data' property Add `length` property rather than `app[].length`. Also remove `@trusted` attribute from `@safe` function. --- std/array.d | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/std/array.d b/std/array.d index 1ce4a648777..27d216740aa 100644 --- a/std/array.d +++ b/std/array.d @@ -3586,11 +3586,14 @@ if (isDynamicArray!A) return _data ? _data.capacity : 0; } + /// Returns: The number of elements appended. + @property size_t length() const => _data ? _data.arr.length : 0; + /** * Use opSlice() from now on. * Returns: The managed array. */ - @property inout(T)[] data() inout @trusted + @property inout(T)[] data() inout { return this[]; } @@ -3921,6 +3924,7 @@ if (isDynamicArray!A) int[] a = [ 1, 2 ]; auto app2 = appender(a); app2.put(3); + assert(app2.length == 3); app2.put([ 4, 5, 6 ]); assert(app2[] == [ 1, 2, 3, 4, 5, 6 ]); } @@ -4134,6 +4138,9 @@ if (isDynamicArray!A) return impl.capacity; } + /// Returns: The number of elements appended. + @property size_t length() const => impl.length; + /* Use opSlice() instead. * Returns: the managed array. */ @@ -4160,6 +4167,7 @@ unittest assert(app2[] == [1, 2]); assert(a == [1, 2]); app2 ~= 3; + assert(app2.length == 3); app2 ~= [4, 5, 6]; assert(app2[] == [1, 2, 3, 4, 5, 6]); assert(a == [1, 2, 3, 4, 5, 6]); From bbb156629ecdbf5f56da17591b6a6f683e5c6802 Mon Sep 17 00:00:00 2001 From: Dennis Korpel Date: Wed, 14 Aug 2024 15:48:50 +0200 Subject: [PATCH 304/327] std.uni: Make `auto ref` adjacent --- std/uni/package.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/uni/package.d b/std/uni/package.d index 632704b59b3..b6d31a810ea 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -3349,7 +3349,7 @@ struct CowArray(SP=GcPolicy) data[$-val.length-1 .. $-1] = val[]; } - bool opEquals()(auto const ref CowArray rhs)const + bool opEquals()(auto ref const CowArray rhs) const { if (empty ^ rhs.empty) return false; // one is empty and the other isn't From f7e523bc3c69506c3e7b4da7e78af93ed8547910 Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Fri, 16 Aug 2024 10:18:36 -0600 Subject: [PATCH 305/327] Fix Bugzilla issue 24704: Improve error messages for from*String in std.datetime. The documentation for the from*String functions specifies what they accept, and the fromISO*String functions accept ISO or ISO extended strings, but it is technically the case that there are ISO and ISO extended strings which they do not accept (since the standard specifies what the fields should look like for each string but doesn't specify that all fields must be present or that any code parsing them must accept all variants). So, technically, the error messages which have said that the given strings are not valid ISO or ISO extended strings are not necessarily correct. So, this changes the error messages to remove that ambiguity. --- std/datetime/date.d | 40 +++++++++++++++++++++------------------- std/datetime/systime.d | 18 +++++++++++------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/std/datetime/date.d b/std/datetime/date.d index 7526f2d7bb4..c757b1e2880 100644 --- a/std/datetime/date.d +++ b/std/datetime/date.d @@ -3161,10 +3161,10 @@ public: auto str = strip(isoString); - enforce(str.length >= 15, new DateTimeException(format("Invalid ISO String: %s", isoString))); + enforce!DateTimeException(str.length >= 15, format("Invalid format for DateTime.fromISOString %s", isoString)); auto t = str.byCodeUnit.countUntil('T'); - enforce(t != -1, new DateTimeException(format("Invalid ISO String: %s", isoString))); + enforce!DateTimeException(t != -1, format("Invalid format for DateTime.fromISOString: %s", isoString)); immutable date = Date.fromISOString(str[0 .. t]); immutable tod = TimeOfDay.fromISOString(str[t+1 .. $]); @@ -3262,10 +3262,11 @@ public: auto str = strip(isoExtString); - enforce(str.length >= 15, new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString))); + enforce!DateTimeException(str.length >= 15, + format("Invalid format for DateTime.fromISOExtString: %s", isoExtString)); auto t = str.byCodeUnit.countUntil('T'); - enforce(t != -1, new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString))); + enforce!DateTimeException(t != -1, format("Invalid format for DateTime.fromISOExtString: %s", isoExtString)); immutable date = Date.fromISOExtString(str[0 .. t]); immutable tod = TimeOfDay.fromISOExtString(str[t+1 .. $]); @@ -3362,10 +3363,11 @@ public: auto str = strip(simpleString); - enforce(str.length >= 15, new DateTimeException(format("Invalid string format: %s", simpleString))); + enforce!DateTimeException(str.length >= 15, + format("Invalid format for DateTime.fromSimpleString: %s", simpleString)); auto t = str.byCodeUnit.countUntil(' '); - enforce(t != -1, new DateTimeException(format("Invalid string format: %s", simpleString))); + enforce!DateTimeException(t != -1, format("Invalid format for DateTime.fromSimpleString: %s", simpleString)); immutable date = Date.fromSimpleString(str[0 .. t]); immutable tod = TimeOfDay.fromISOExtString(str[t+1 .. $]); @@ -7628,7 +7630,7 @@ public: auto str = isoString.strip; - enforce!DateTimeException(str.length >= 8, text("Invalid ISO String: ", isoString)); + enforce!DateTimeException(str.length >= 8, text("Invalid format for Date.fromISOString: ", isoString)); int day, month, year; auto yearStr = str[0 .. $ - 4]; @@ -7643,7 +7645,7 @@ public: if (yearStr.length > 4) { enforce!DateTimeException(yearStr.startsWith('-', '+'), - text("Invalid ISO String: ", isoString)); + text("Invalid format for Date.fromISOString: ", isoString)); year = to!int(yearStr); } else @@ -7653,7 +7655,7 @@ public: } catch (ConvException) { - throw new DateTimeException(text("Invalid ISO String: ", isoString)); + throw new DateTimeException(text("Invalid format for Date.fromISOString: ", isoString)); } return Date(year, month, day); @@ -7774,13 +7776,13 @@ public: ubyte month, day; if (str.length < 10 || str[$-3] != '-' || str[$-6] != '-') - throw new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString)); + throw new DateTimeException(format("Invalid format for Date.fromISOExtString: %s", isoExtString)); auto yearStr = str[0 .. $-6]; auto signAtBegining = cast(bool) yearStr.startsWith('-', '+'); if ((yearStr.length > 4) != signAtBegining) { - throw new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString)); + throw new DateTimeException(format("Invalid format for Date.fromISOExtString: %s", isoExtString)); } try @@ -7791,7 +7793,7 @@ public: } catch (ConvException) { - throw new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString)); + throw new DateTimeException(format("Invalid format for Date.fromISOExtString: %s", isoExtString)); } return Date(year, month, day); @@ -7910,7 +7912,7 @@ public: auto str = strip(simpleString); if (str.length < 11 || str[$-3] != '-' || str[$-7] != '-') - throw new DateTimeException(format!"Invalid string format: %s"(simpleString)); + throw new DateTimeException(format!"Invalid format for Date.fromSimpleString: %s"(simpleString)); int year; uint day; @@ -7919,7 +7921,7 @@ public: auto signAtBegining = cast(bool) yearStr.startsWith('-', '+'); if ((yearStr.length > 4) != signAtBegining) { - throw new DateTimeException(format!"Invalid string format: %s"(simpleString)); + throw new DateTimeException(format!"Invalid format for Date.fromSimpleString: %s"(simpleString)); } try @@ -7929,7 +7931,7 @@ public: } catch (ConvException) { - throw new DateTimeException(format!"Invalid string format: %s"(simpleString)); + throw new DateTimeException(format!"Invalid format for Date.fromSimpleString: %s"(simpleString)); } return Date(year, month, day); @@ -9208,7 +9210,7 @@ public: int hours, minutes, seconds; auto str = strip(isoString); - enforce!DateTimeException(str.length == 6, text("Invalid ISO String: ", isoString)); + enforce!DateTimeException(str.length == 6, text("Invalid format for TimeOfDay.fromISOString: ", isoString)); try { @@ -9220,7 +9222,7 @@ public: } catch (ConvException) { - throw new DateTimeException(text("Invalid ISO String: ", isoString)); + throw new DateTimeException(text("Invalid format for TimeOfDay.fromISOString: ", isoString)); } return TimeOfDay(hours, minutes, seconds); @@ -9333,7 +9335,7 @@ public: int hours, minutes, seconds; if (str.length != 8 || str[2] != ':' || str[5] != ':') - throw new DateTimeException(text("Invalid ISO Extended String: ", isoExtString)); + throw new DateTimeException(text("Invalid format for TimeOfDay.fromISOExtString: ", isoExtString)); try { @@ -9345,7 +9347,7 @@ public: } catch (ConvException) { - throw new DateTimeException(text("Invalid ISO Extended String: ", isoExtString)); + throw new DateTimeException(text("Invalid format for TimeOfDay.fromISOExtString: ", isoExtString)); } return TimeOfDay(hours, minutes, seconds); diff --git a/std/datetime/systime.d b/std/datetime/systime.d index a1d8ef3604f..a2e52aebac5 100644 --- a/std/datetime/systime.d +++ b/std/datetime/systime.d @@ -8879,7 +8879,7 @@ public: return retval; } catch (DateTimeException dte) - throw new DateTimeException(format("Invalid ISO String: %s", isoString)); + throw new DateTimeException(format("Invalid format for SysTime.fromISOString: %s", isoString)); } /// @@ -9109,7 +9109,8 @@ public: auto str = strip(isoExtString); auto tIndex = str.indexOf('T'); - enforce(tIndex != -1, new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString))); + enforce!DateTimeException(tIndex != -1, + format("Invalid format for SysTime.fromISOExtString: %s", isoExtString)); auto found = str[tIndex + 1 .. $].find('.', 'Z', '+', '-'); auto dateTimeStr = str[0 .. $ - found[0].length]; @@ -9157,7 +9158,7 @@ public: return retval; } catch (DateTimeException dte) - throw new DateTimeException(format("Invalid ISO Extended String: %s", isoExtString)); + throw new DateTimeException(format("Invalid format for SysTime.fromISOExtString: %s", isoExtString)); } /// @@ -9359,7 +9360,8 @@ public: auto str = strip(simpleString); auto spaceIndex = str.indexOf(' '); - enforce(spaceIndex != -1, new DateTimeException(format("Invalid Simple String: %s", simpleString))); + enforce!DateTimeException(spaceIndex != -1, + format("Invalid format for SysTime.fromSimpleString: %s", simpleString)); auto found = str[spaceIndex + 1 .. $].find('.', 'Z', '+', '-'); auto dateTimeStr = str[0 .. $ - found[0].length]; @@ -9407,7 +9409,7 @@ public: return retval; } catch (DateTimeException dte) - throw new DateTimeException(format("Invalid Simple String: %s", simpleString)); + throw new DateTimeException(format("Invalid format for SysTime.fromSimpleString: %s", simpleString)); } /// @@ -11170,6 +11172,7 @@ if (isSomeString!S) import std.algorithm.searching : all; import std.ascii : isDigit; import std.conv : to; + import std.format : format; import std.string : representation; if (isoString.empty) @@ -11177,10 +11180,11 @@ if (isSomeString!S) auto str = isoString.representation; - enforce(str[0] == '.', new DateTimeException("Invalid ISO String")); + enforce!DateTimeException(str[0] == '.', format("Invalid format for fracSecsFromISOString: %s", isoString)); str.popFront(); - enforce(!str.empty && all!isDigit(str), new DateTimeException("Invalid ISO String")); + enforce!DateTimeException(!str.empty && all!isDigit(str), + format("Invalid format for fracSecsFromISOString: %s", isoString)); dchar[7] fullISOString = void; foreach (i, ref dchar c; fullISOString) From 48d581a1f509a7a302ea893e28939edb5b130622 Mon Sep 17 00:00:00 2001 From: Andrei Horodniceanu Date: Thu, 22 Aug 2024 20:14:51 +0300 Subject: [PATCH 306/327] Fix Bugzilla 24715 - std/process: Default to libc `closefrom` in spawnProcessPosix The current implementation of spawnProcessPosix is broken on systems with a large `ulimit -n` because it always OOMs making it impossible to spawn processes. Using the libc implementation, when available, for doing file descriptor operations en-mass partially solves this problem. Signed-off-by: Andrei Horodniceanu --- std/process.d | 149 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 102 insertions(+), 47 deletions(-) diff --git a/std/process.d b/std/process.d index d1783742e5e..41f788d2290 100644 --- a/std/process.d +++ b/std/process.d @@ -880,6 +880,7 @@ version (Posix) private enum InternalError : ubyte doubleFork, malloc, preExec, + closefds_dup2, } /* @@ -1008,7 +1009,7 @@ private Pid spawnProcessPosix(scope const(char[])[] args, if (config.flags & Config.Flags.detached) close(pidPipe[0]); close(forkPipe[0]); - immutable forkPipeOut = forkPipe[1]; + auto forkPipeOut = forkPipe[1]; immutable pidPipeOut = pidPipe[1]; // Set the working directory. @@ -1042,56 +1043,106 @@ private Pid spawnProcessPosix(scope const(char[])[] args, if (!(config.flags & Config.Flags.inheritFDs)) { - // NOTE: malloc() and getrlimit() are not on the POSIX async - // signal safe functions list, but practically this should - // not be a problem. Java VM and CPython also use malloc() - // in its own implementation via opendir(). - import core.stdc.stdlib : malloc; - import core.sys.posix.poll : pollfd, poll, POLLNVAL; - import core.sys.posix.sys.resource : rlimit, getrlimit, RLIMIT_NOFILE; - - // Get the maximum number of file descriptors that could be open. - rlimit r; - if (getrlimit(RLIMIT_NOFILE, &r) != 0) - { - abortOnError(forkPipeOut, InternalError.getrlimit, .errno); - } - immutable maxDescriptors = cast(int) r.rlim_cur; - - // The above, less stdin, stdout, and stderr - immutable maxToClose = maxDescriptors - 3; + version (FreeBSD) + import core.sys.freebsd.unistd : closefrom; + else version (OpenBSD) + import core.sys.openbsd.unistd : closefrom; - // Call poll() to see which ones are actually open: - auto pfds = cast(pollfd*) malloc(pollfd.sizeof * maxToClose); - if (pfds is null) - { - abortOnError(forkPipeOut, InternalError.malloc, .errno); - } - foreach (i; 0 .. maxToClose) + static if (!__traits(compiles, closefrom)) { - pfds[i].fd = i + 3; - pfds[i].events = 0; - pfds[i].revents = 0; - } - if (poll(pfds, maxToClose, 0) >= 0) - { - foreach (i; 0 .. maxToClose) - { - // don't close pipe write end - if (pfds[i].fd == forkPipeOut) continue; - // POLLNVAL will be set if the file descriptor is invalid. - if (!(pfds[i].revents & POLLNVAL)) close(pfds[i].fd); - } - } - else - { - // Fall back to closing everything. - foreach (i; 3 .. maxDescriptors) - { - if (i == forkPipeOut) continue; - close(i); + // FIXME: This implementation crashes the system when RLIMIT_NOFILE + // has a big value. For a possible solution see: + // https://github.com/dlang/phobos/pull/8990 + void fallback (int lowfd) { + // NOTE: malloc() and getrlimit() are not on the POSIX async + // signal safe functions list, but practically this should + // not be a problem. Java VM and CPython also use malloc() + // in its own implementation via opendir(). + import core.stdc.stdlib : malloc; + import core.sys.posix.poll : pollfd, poll, POLLNVAL; + import core.sys.posix.sys.resource : rlimit, getrlimit, RLIMIT_NOFILE; + + // Get the maximum number of file descriptors that could be open. + rlimit r; + if (getrlimit(RLIMIT_NOFILE, &r) != 0) + { + abortOnError(forkPipeOut, InternalError.getrlimit, .errno); + } + immutable maxDescriptors = cast(int) r.rlim_cur; + + immutable maxToClose = maxDescriptors - lowfd; + + // Call poll() to see which ones are actually open: + auto pfds = cast(pollfd*) malloc(pollfd.sizeof * maxToClose); + if (pfds is null) + { + abortOnError(forkPipeOut, InternalError.malloc, .errno); + } + foreach (i; 0 .. maxToClose) + { + pfds[i].fd = i + lowfd; + pfds[i].events = 0; + pfds[i].revents = 0; + } + if (poll(pfds, maxToClose, 0) >= 0) + { + foreach (i; 0 .. maxToClose) + { + // POLLNVAL will be set if the file descriptor is invalid. + if (!(pfds[i].revents & POLLNVAL)) close(pfds[i].fd); + } + } + else + { + // Fall back to closing everything. + foreach (i; lowfd .. maxDescriptors) + { + close(i); + } + } } + + // closefrom may not be available on the version of glibc we build against. + // Until we find a way to perform this check we will try to use dlsym to + // check for the function. See: https://github.com/dlang/phobos/pull/9048 + version (CRuntime_Glibc) + void closefrom (int lowfd) { + static bool tryGlibcClosefrom (int lowfd) { + import core.sys.posix.dlfcn : dlopen, dlclose, dlsym, dlerror, RTLD_LAZY; + + void *handle = dlopen("libc.so.6", RTLD_LAZY); + if (!handle) + return false; + scope(exit) dlclose(handle); + + // Clear errors + dlerror(); + alias closefromT = extern(C) void function(int) @nogc @system nothrow; + auto closefrom = cast(closefromT) dlsym(handle, "closefrom"); + if (dlerror()) + return false; + + closefrom(lowfd); + return true; + } + + if (!tryGlibcClosefrom(lowfd)) + fallback(lowfd); + } + else + alias closefrom = fallback; } + + // We need to close all open file descriptors excluding std{in,out,err} + // and forkPipeOut because we still need it. + // Since the various libc's provide us with `closefrom` move forkPipeOut + // to position 3, right after STDERR_FILENO, and close all FDs following that. + if (dup2(forkPipeOut, 3) == -1) + abortOnError(forkPipeOut, InternalError.closefds_dup2, .errno); + forkPipeOut = 3; + // forkPipeOut needs to be closed after we call `exec`. + setCLOEXEC(forkPipeOut, true); + closefrom(forkPipeOut + 1); } else // This is already done if we don't inherit descriptors. { @@ -1205,6 +1256,10 @@ private Pid spawnProcessPosix(scope const(char[])[] args, case InternalError.preExec: errorMsg = "Failed to execute preExecFunction or preExecDelegate"; break; + case InternalError.closefds_dup2: + assert(!(config.flags & Config.Flags.inheritFDs)); + errorMsg = "Failed to close inherited file descriptors"; + break; case InternalError.noerror: assert(false); } From b3a97364805500926cdfc8edcc75994dddd3970d Mon Sep 17 00:00:00 2001 From: Ate Eskola Date: Fri, 20 Sep 2024 12:14:08 +0300 Subject: [PATCH 307/327] graphemeStride now @nogc with DChars --- std/uni/package.d | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/std/uni/package.d b/std/uni/package.d index b6d31a810ea..f7610c022eb 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -7005,7 +7005,7 @@ private enum TransformRes // Note, getting GB1 (break at start of text, unless text is empty) right // relies on the user starting grapheme walking from beginning of the text, and // not attempting to walk an empty text. -private enum TransformRes +private immutable TransformRes function(ref GraphemeState, dchar) @safe pure nothrow @nogc [] graphemeTransforms = [ GraphemeState.Start: (ref state, ch) @@ -7243,9 +7243,7 @@ if (is(C : dchar)) static assert(c2 == 3); // \u0301 has 2 UTF-8 code units } -// TODO: make this @nogc. Probably no big deal since the state machine is -// already GC-free. -@safe pure nothrow unittest +@safe pure nothrow @nogc unittest { // grinning face ~ emoji modifier fitzpatrick type-5 ~ grinning face assert(graphemeStride("\U0001F600\U0001f3FE\U0001F600"d, 0) == 2); From 2168becf74b3d18d3f944d97c5a8c538a0e17855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6nke=20Ludwig?= Date: Fri, 20 Sep 2024 11:07:22 +0200 Subject: [PATCH 308/327] Fix Bugzilla 24773: Don't invoke destructors on uninitialized elements in stable sort Uses a regular initialized temporary array when sorting elements with an elaborate assignment to avoid undefined behavior when destructors, postblits or copy constructors are invoked during the array assignment. --- std/algorithm/sorting.d | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/std/algorithm/sorting.d b/std/algorithm/sorting.d index 2d16c65111f..cb471532872 100644 --- a/std/algorithm/sorting.d +++ b/std/algorithm/sorting.d @@ -2385,7 +2385,11 @@ private template TimSortImpl(alias pred, R) size_t stackLen = 0; // Allocate temporary memory if not provided by user - if (temp.length < minTemp) temp = () @trusted { return uninitializedArray!(T[])(minTemp); }(); + if (temp.length < minTemp) + { + static if (hasElaborateAssign!T) temp = new T[](minTemp); + else temp = () @trusted { return uninitializedArray!(T[])(minTemp); }(); + } for (size_t i = 0; i < range.length; ) { @@ -3076,6 +3080,20 @@ private template TimSortImpl(alias pred, R) array.sort!("a < b", SwapStrategy.stable); } +// https://issues.dlang.org/show_bug.cgi?id=24773 +@safe unittest +{ + static struct S + { + int i = 42; + ~this() { assert(i == 42); } + } + + auto array = new S[](400); + array.sort!((a, b) => false, SwapStrategy.stable); +} + + // schwartzSort /** Alternative sorting method that should be used when comparing keys involves an From 59b371567b65e331b4d219e35c7b4da0540a5970 Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Fri, 20 Sep 2024 05:02:02 -0700 Subject: [PATCH 309/327] Remove -de switch from Phobos builds to allow deprecations. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 17998f75e31..7a0f73e2e65 100644 --- a/Makefile +++ b/Makefile @@ -154,7 +154,7 @@ endif # Set DFLAGS DFLAGS= -override DFLAGS+=-conf= -I$(DRUNTIME_PATH)/import $(DMDEXTRAFLAGS) -w -de -preview=dip1000 -preview=dtorfields -preview=fieldwise $(MODEL_FLAG) $(PIC) +override DFLAGS+=-conf= -I$(DRUNTIME_PATH)/import $(DMDEXTRAFLAGS) -w -preview=dip1000 -preview=dtorfields -preview=fieldwise $(MODEL_FLAG) $(PIC) ifeq ($(BUILD),debug) override DFLAGS += -g -debug else From 61bd59c66900ce3898bdc42df60e95ae666c7702 Mon Sep 17 00:00:00 2001 From: Nick Treleaven Date: Wed, 2 Oct 2024 14:54:07 +0100 Subject: [PATCH 310/327] [std.format] Add anchors for section headings (#9054) --- std/format/package.d | 12 ++++++------ std/format/write.d | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/std/format/package.d b/std/format/package.d index a78e1b3d0dc..e02c1202a4b 100644 --- a/std/format/package.d +++ b/std/format/package.d @@ -60,7 +60,7 @@ Limitation: This package does not support localization, but adheres to the rounding mode of the floating point unit, if available. -$(SECTION3 Format Strings) +$(H3 $(LNAME2 format-strings, Format Strings)) The functions contained in this package use $(I format strings). A format string describes the layout of another string for reading or @@ -144,7 +144,7 @@ recommended to assign (lower- and uppercase) letters. Note: The $(I Parameters) of a $(I CompoundIndicator) are currently limited to a $(B '-') flag. -$(SECTION4 Format Indicator) +$(H4 $(LNAME2 format-indicator, Format Indicator)) The $(I format indicator) can either be a single character or an expression surrounded by $(B %\() and $(B %\)). It specifies the @@ -205,7 +205,7 @@ Note: Inside a $(I compound indicator), strings and characters are escaped automatically. To avoid this behavior, use `"%-$(LPAREN)"` instead of `"%$(LPAREN)"`. -$(SECTION4 Flags) +$(H4 $(LNAME2 flags, Flags)) There are several flags that affect the outcome of the formatting. @@ -244,7 +244,7 @@ $(BOOKTABLE , sections below for more information.)) ) -$(SECTION4 Width$(COMMA) Precision and Separator) +$(H4 $(LNAME2 width-precision-separator, Width, Precision and Separator)) The $(I width) parameter specifies the minimum width of the result. @@ -269,7 +269,7 @@ The $(I separator) can also be followed by a $(B '?'). In that case, an additional argument is used to specify the symbol that should be used to separate the chunks. -$(SECTION4 Position) +$(H4 $(LNAME2 position, Position)) By default, the arguments are processed in the provided order. With the $(I position) parameter it is possible to address arguments @@ -282,7 +282,7 @@ It's also possible to use positional arguments for $(I width), $(I precision) and $(I separator) by adding a number and a $(B '$(DOLLAR)') after the $(B '*'). -$(SECTION4 Types) +$(H4 $(LNAME2 types, Types)) This section describes the result of combining types with format characters. It is organized in 2 subsections: a list of general diff --git a/std/format/write.d b/std/format/write.d index 2aa45d724b5..078fa786e76 100644 --- a/std/format/write.d +++ b/std/format/write.d @@ -28,7 +28,7 @@ $(TR $(TD $(I delegates)) $(TD yes) $(TD $(MDASH)) $(TD $(MDASH)) $(TD $(MDASH)) Enums can be used with all format characters of the base type. -$(SECTION3 Structs$(COMMA) Unions$(COMMA) Classes$(COMMA) and Interfaces) +$(H3 $(LNAME2 aggregates, Structs, Unions, Classes, and Interfaces)) Aggregate types can define various `toString` functions. If this function takes a $(REF_ALTTEXT FormatSpec, FormatSpec, std, format, From bdedad3bf8090808e41726e7b9f8e928f6cb10bd Mon Sep 17 00:00:00 2001 From: Ate Eskola Date: Sun, 13 Oct 2024 02:24:24 +0300 Subject: [PATCH 311/327] Added a new popGrapheme function to std.uni (#9053) * Added a new popGrapheme function to std.uni * A changelog clarification and fix of inaccurate static condition * Committing to restart the tests, and adding the new function to the module doc index while there. --- changelog/pop-grapheme.dd | 38 +++++++++++++ std/uni/package.d | 114 ++++++++++++++++++++++++++++++++------ 2 files changed, 135 insertions(+), 17 deletions(-) create mode 100644 changelog/pop-grapheme.dd diff --git a/changelog/pop-grapheme.dd b/changelog/pop-grapheme.dd new file mode 100644 index 00000000000..48c93d6fc88 --- /dev/null +++ b/changelog/pop-grapheme.dd @@ -0,0 +1,38 @@ +Added popGrapheme function to std.uni. + +The new function is a cross between the existing $(REF graphemeStride, std, +uni) and $(REF decodeGrapheme, std, uni) functions. The new function both +supports `@safe pure nothrow @nogc` like `graphemeStride` does as long as you +don't rely on autodecoding (side node: `@nogc` support for `graphemeStride` +added in this release), and works with any non-array ranges just like +`decodeGrapheme` does. + +Example: + +------- +import std.uni; + +// Two Union Jacks of the Great Britain in each +string s = "\U0001F1EC\U0001F1E7\U0001F1EC\U0001F1E7"; +wstring ws = "\U0001F1EC\U0001F1E7\U0001F1EC\U0001F1E7"; +dstring ds = "\U0001F1EC\U0001F1E7\U0001F1EC\U0001F1E7"; + +// String pop length in code units, not points. +assert(s.popGrapheme() == 8); +assert(ws.popGrapheme() == 4); +assert(ds.popGrapheme() == 2); + +assert(s == "\U0001F1EC\U0001F1E7"); +assert(ws == "\U0001F1EC\U0001F1E7"); +assert(ds == "\U0001F1EC\U0001F1E7"); + +import std.algorithm.comparison : equal; +import std.algorithm.iteration : filter; + +// Also works for non-random access ranges as long as the +// character type is 32-bit. +auto testPiece = "\r\nhello!"d.filter!(x => !x.isAlpha); +// Windows-style line ending is two code point in a single grapheme. +assert(testPiece.popGrapheme() == 2); +assert(testPiece.equal("!"d)); +------- diff --git a/std/uni/package.d b/std/uni/package.d index f7610c022eb..bb18ac6d5a9 100644 --- a/std/uni/package.d +++ b/std/uni/package.d @@ -16,6 +16,7 @@ $(TR $(TD Decode) $(TD $(LREF byGrapheme) $(LREF decodeGrapheme) $(LREF graphemeStride) + $(LREF popGrapheme) )) $(TR $(TD Comparison) $(TD $(LREF icmp) @@ -708,8 +709,8 @@ import std.meta : AliasSeq; import std.range.primitives : back, ElementEncodingType, ElementType, empty, front, hasLength, hasSlicing, isForwardRange, isInputRange, isRandomAccessRange, popFront, put, save; -import std.traits : isConvertibleToString, isIntegral, isSomeChar, - isSomeString, Unqual, isDynamicArray; +import std.traits : isAutodecodableString, isConvertibleToString, isIntegral, + isSomeChar, isSomeString, Unqual, isDynamicArray; // debug = std_uni; import std.internal.unicode_tables; // generated file @@ -7148,17 +7149,25 @@ private immutable TransformRes TransformRes.goOn ]; -template genericDecodeGrapheme(bool getValue) -{ - static if (getValue) +enum GraphemeRet { none, step, value } + +template genericDecodeGrapheme(GraphemeRet retType) +{ alias Ret = GraphemeRet; + + static if (retType == Ret.value) alias Value = Grapheme; - else + else static if (retType == Ret.step) + alias Value = size_t; + else static if (retType == Ret.none) alias Value = void; Value genericDecodeGrapheme(Input)(ref Input range) { - static if (getValue) - Grapheme grapheme; + static if (retType == Ret.value) + Grapheme result; + else static if (retType == Ret.step) + size_t result = 0; + auto state = GraphemeState.Start; dchar ch; @@ -7173,8 +7182,10 @@ template genericDecodeGrapheme(bool getValue) with(TransformRes) { case goOn: - static if (getValue) - grapheme ~= ch; + static if (retType == Ret.value) + result ~= ch; + else static if (retType == Ret.step) + result++; range.popFront(); continue; @@ -7182,8 +7193,10 @@ template genericDecodeGrapheme(bool getValue) goto rerun; case retInclude: - static if (getValue) - grapheme ~= ch; + static if (retType == Ret.value) + result ~= ch; + else static if (retType == Ret.step) + result++; range.popFront(); break outer; @@ -7192,8 +7205,8 @@ template genericDecodeGrapheme(bool getValue) } } - static if (getValue) - return grapheme; + static if (retType != Ret.none) + return result; } } @@ -7217,7 +7230,7 @@ if (is(C : dchar)) { auto src = input[index..$]; auto n = src.length; - genericDecodeGrapheme!(false)(src); + genericDecodeGrapheme!(GraphemeRet.none)(src); return n - src.length; } @@ -7279,7 +7292,7 @@ if (is(C : dchar)) Grapheme decodeGrapheme(Input)(ref Input inp) if (isInputRange!Input && is(immutable ElementType!Input == immutable dchar)) { - return genericDecodeGrapheme!true(inp); + return genericDecodeGrapheme!(GraphemeRet.value)(inp); } @safe unittest @@ -7304,6 +7317,73 @@ if (isInputRange!Input && is(immutable ElementType!Input == immutable dchar)) assert(equal(decodeGrapheme(s)[], "\U0001F1EC\U0001F1E7")); } +/++ + Reads one full grapheme cluster from an + $(REF_ALTTEXT input range, isInputRange, std,range,primitives) of dchar `inp`, + but doesn't return it. Instead returns the number of code units read. + This differs from number of code points read only if `input` is an + autodecodable string. + + Note: + This function modifies `inp` and thus `inp` + must be an L-value. ++/ +size_t popGrapheme(Input)(ref Input inp) +if (isInputRange!Input && is(immutable ElementType!Input == immutable dchar)) +{ + static if (isAutodecodableString!Input || hasLength!Input) + { + // Why count each step in the decoder when you can just + // measure the grapheme in one go? + auto n = inp.length; + genericDecodeGrapheme!(GraphemeRet.none)(inp); + return n - inp.length; + } + else return genericDecodeGrapheme!(GraphemeRet.step)(inp); +} + +/// +@safe pure unittest +{ + // Two Union Jacks of the Great Britain in each + string s = "\U0001F1EC\U0001F1E7\U0001F1EC\U0001F1E7"; + wstring ws = "\U0001F1EC\U0001F1E7\U0001F1EC\U0001F1E7"; + dstring ds = "\U0001F1EC\U0001F1E7\U0001F1EC\U0001F1E7"; + + // String pop length in code units, not points. + assert(s.popGrapheme() == 8); + assert(ws.popGrapheme() == 4); + assert(ds.popGrapheme() == 2); + + assert(s == "\U0001F1EC\U0001F1E7"); + assert(ws == "\U0001F1EC\U0001F1E7"); + assert(ds == "\U0001F1EC\U0001F1E7"); + + import std.algorithm.comparison : equal; + import std.algorithm.iteration : filter; + + // Also works for non-random access ranges as long as the + // character type is 32-bit. + auto testPiece = "\r\nhello!"d.filter!(x => !x.isAlpha); + // Windows-style line ending is two code points in a single grapheme. + assert(testPiece.popGrapheme() == 2); + assert(testPiece.equal("!"d)); +} + +// Attribute compliance test. Should be nothrow `@nogc` when +// no autodecoding needed. +@safe pure nothrow @nogc unittest +{ + import std.algorithm.iteration : filter; + + auto str = "abcdef"d; + assert(str.popGrapheme() == 1); + + // also test with non-random access + auto filtered = "abcdef"d.filter!(x => x%2); + assert(filtered.popGrapheme() == 1); +} + /++ $(P Iterate a string by $(LREF Grapheme).) @@ -7722,7 +7802,7 @@ public: @property bool valid()() /*const*/ { auto r = this[]; - genericDecodeGrapheme!false(r); + genericDecodeGrapheme!(GraphemeRet.none)(r); return r.length == 0; } From bf96b99fc2c61385edd1ccb9397f625b5bcb9369 Mon Sep 17 00:00:00 2001 From: Dennis Date: Wed, 16 Oct 2024 00:24:56 +0200 Subject: [PATCH 312/327] Update to unicode 16.0.0 (#9058) --- changelog/unicode-16.dd | 16 + std/internal/unicode_comp.d | 352 +- std/internal/unicode_decomp.d | 2526 ++++----- std/internal/unicode_grapheme.d | 298 +- std/internal/unicode_norm.d | 618 +-- std/internal/unicode_tables.d | 8775 ++++++++++++++++--------------- tools/unicode_table_generator.d | 4 +- 7 files changed, 6519 insertions(+), 6070 deletions(-) create mode 100644 changelog/unicode-16.dd diff --git a/changelog/unicode-16.dd b/changelog/unicode-16.dd new file mode 100644 index 00000000000..84455fb93fe --- /dev/null +++ b/changelog/unicode-16.dd @@ -0,0 +1,16 @@ +std.uni has been upgraded from Unicode 15.1.0 to 16.0.0 + +This Unicode update was released September 10, 2024, and adds new blocks with characters. +See: https://www.unicode.org/versions/Unicode16.0.0/ + +``` +import std; + +void main() +{ + const alphaCount = iota(0, dchar.max).filter!(std.uni.isAlpha).walkLength; + writeln(alphaCount); + // formerly: 138387 + // now: 142759 +} +``` diff --git a/std/internal/unicode_comp.d b/std/internal/unicode_comp.d index 28b2e0d26b9..dba5ba4cfcd 100644 --- a/std/internal/unicode_comp.d +++ b/std/internal/unicode_comp.d @@ -6,11 +6,11 @@ import std.internal.unicode_tables; static if (size_t.sizeof == 4) { -//10144 bytes +//10272 bytes enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(x" 0000000000000040000005C0", x" -0000010000000B00000010A0", +0000010000000B0000001120", x" 020201000402030206020205090807020000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -75,18 +75,18 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 005800570000000000000000005900000000000000000000000000000000000000000000000000000000000000000000 -005A00000000000000000000000000000000000000000000005B0000005C0000000000000000005D0000005E00000000 -00000000005F0048006000000000000000620061004D0000000000000000006300640000000000000000000000650000 -006600000067001A0000000000000000000000000000006800000000000000690000000000000000004100000000006A -0041000000000000006B000000000000006C000000000000000000000000000000600000000000000000000000000000 -006D00000000006E00000000004E0000002C00000000006F000000700000000000000000000000000000000000000000 -004100000000000000000000000000000000000000000071000000720000000000000000000000000000000000000000 -000000000000007300000000000000000000000000000000000000000000000000000000000000000000000000000000 +005A0000005B000000000000000000000000000000000000005C0000005D0000000000000000005E0000005F00000000 +0000000000600048006100000000000000630062004D0000000000000000006400650000000000000000000000660000 +006700000068001A0000000000000069000000000000006A000000000000006B0000000000000000004100000000006C +0041000000000000006D000000000000006E000000000000000000000000000000610000000000000000000000000000 +006F00000000007000000000004E0000002C000000000071000000720000000000000000000000000000000000000000 +004100000000000000000000000000000000000000000073000000740000000000000000000000000000000000000000 +000000000000007500000000000000000000000000000000000000000000000000760000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000740000 -007500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000770000 +007800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000079000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -101,22 +101,22 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000770000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000007A0000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000780000007A007900000000000000000000007B0000000000000000 +0000000000000000000000000000000000000000007B0000007D007C00000000000000000000007E0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000007D007C000000000000007E0000000000750000000000000000000000000000 -0000000000000000007F0000008000000000000000000000000000000000000000000000000000000000000000810000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000820000000000000083000000000000000000000000000000000000000000000000 +000000000000000000000000000000000080007F00000000000000810000000000780000000000000000000000000000 +000000000000000000820000008300000000000000000000000000000000000000000000000000000000000000840000 +000000000000000000000000008500000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000860000000000000087000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -149,7 +149,7 @@ E6E6DCE6DCE6E6DCDCE6DCDCE6DCE6DCE6DCE6E6E6DCE6DC00E6E6DC000000000000000000000000 0000000000000000E6000000E6E6E6E6E6DCE6E600000000000000000000DC0000000000000000000000000000000000 00000000E6E60000E600E6E6E6E6E6E6E6E6E6E6E6E6E600E6E6E6000000E6E600000000000000000000000000000000 000000000000000000000000000000000000000000000000DCDCDC000000000000000000000000000000000000000000 -0000000000000000DCDCDCE6E6E6E6E60000000000000000E6E60000DCE6E6E6DCDCDCDCE6E6E6E6E6E6E6E6E6E6E6E6 +00000000E6000000DCDCDCE6E6E6E6E60000000000000000E6E60000DCE6E6E6DCDCDCDCE6E6E6E6E6E6E6E6E6E6E6E6 DC00E6E6E6DCE6E6E6E6DCE6DCDCDCE6E61D1C1BE6DCE6E6E6DCDCE6E6E6E6E600000000000000000000000000000000 0000000000000000000000000000000700000000000000000000000000000900E6DCE600000000E60000000000000000 000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000000 @@ -195,23 +195,25 @@ E6E6E6E6DCE6E6E6DCDCDCDCE6E6DCDC000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000E6E6000000E6E6E600000000000000000000000000000000E600DC00 0000000000000000000000000000000000000000000000000000000000000000000000000000000000DC01E609000000 0000000000DCE60000000000000000000000000000000000000000000000000000000000E6E6E6E60000000000000000 -000000000000000000000000000000000000000000000000E6000000000000E600000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000DCDCDC0000000000DCDC0000DCE6E6E6DCDCDCE6 -000000DC000000000000000000000000DCE600000000DCE6000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000900000000000000000900000000000000000000000000000000000000 -0000000000000000000709000000000000E6E6E600000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000900000000000009000000000000000000000009000000000007000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000709000000000000000000 -000000000000000000090700000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000070000000000000700000000E6E60000E6E6E6E6000000E6E6E6E6E6000000E60000000000000000 -0009000000070000000000000000000000000000000000000000000000E6000007090000000000000000000000000000 -000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000007090000000000000000000000000000000000000900000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090900 -070000000000000000000000000000000000000000000000000000000000000000000000090000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000090000000000 -000700000000090900000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000900000000000000000000000009090000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000E6E6E6000000E6E600000000000000000000000000000000 +0000000000000000E6000000000000E60000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000DCDCDC0000000000DCDC0000DCE6E6E6DCDCDCE6000000DC000000000000000000000000 +DCE600000000DCE600000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000090000000000000000090000000000000000000000000000000000000000000000000000000007090000000000 +00E6E6E60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +090000000000000900000000000000000000000900000000000700000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000070900000000000000000000000000000000000009070000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000700000000000007 +00000000E6E60000E6E6E6E6000000E6E6E6E6E6000000E6000000000000000000000000000000000000000009090000 +000000090000000000000000000000000009000000070000000000000000000000000000000000000000000000E60000 +070900000000000000000000000000000000000000000000000000000000000000000007000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000070900000000000000000000 +000000000000000009000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000909000700000000000000000000000000000000000000000000000000000000000000 +000000000900000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000900000000000007000000000909000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000009000000000000000000000000090900000000000000000000000000 +000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000 000000000000000000000000000000000101010100000001000000000000000000000000000000000000000000000000 E6E6E6E600E6E6E600000000000000000000000000000000000000000000000000000606000000000000000000000000 00000000000000000000000000000000000000000000000000000000000100000000000001D8D80000000101D8D8E200 @@ -221,24 +223,24 @@ E6E6E6E600E6E6E60000000000000000000000000000000000000000000000000000060600000000 E600E6E6E6E600E600E6E6E60000000000000000000000000000000000000000000000000000000000000000E6000000 0000000000000000000000000000000000000000000000000000000000E6000000000000000000000000000000000000 000000000000000000000000E6E6E6E600000000000000000000000000000000000000000000000000000000E6DCE8E8 -0000000000000000000000000000000000000000000000000000000000000000DCDCDCDC00DCDCDC0000000000000000 -00000000E6E6E6E60007E6E6000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +00000000000000000000000000000000000000000000000000000000DCE6000000000000000000000000000000000000 +00000000000000000000000000000000DCDCDCDC00DCDCDC000000000000000000000000E6E6E6E60007E6E600000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(x" 0000000000000800", x" -0000100000002600", +0000100000002C00", x" 00010000000300020005000400070006000700080007000700090007000A0007000C000B000700070007000700070007 0007000D0007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -0007000700070007000700070007000700070007000700070007000700070007000F000E000700100007001100070007 -000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +00070007000700070007000700070007000700070007000E00070007000700070010000F000700110007001200070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007001300070007000700070007001400070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 @@ -706,14 +708,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA0FFFF0BA1FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF0BA2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0BA3FFFFFFFF0BA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -722,6 +721,73 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA0FFFFFFFFFFFFFFFF +FFFFFFFFFFFF0BA1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0BA2FFFF0BA3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA5FFFFFFFF0BA6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0BA9FFFF0BAAFFFFFFFFFFFFFFFF0BABFFFFFFFFFFFFFFFFFFFFFFFF0BACFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BADFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +1BB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BB40BB3FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -734,8 +800,8 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BB5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF13A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -750,18 +816,18 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BA7FFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23B6 +13BAFFFFFFFF0BBCFFFFFFFFFFFFFFFF0BBDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BAB0BAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -777,9 +843,9 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF0BACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0BBEFFFFFFFFFFFF0BBFFFFF0BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -809,7 +875,7 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); dstring compositionTable() nothrow @nogc pure @safe { -static immutable dchar[1882] t = +static immutable dchar[1922] t = "\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"d~ "\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"d~ "\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"d~ @@ -907,9 +973,13 @@ static immutable dchar[1882] t = "\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"d~ "\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"d~ "\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"d~ -"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"d~ -"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"d~ -"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"d; +"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\u0307\U000105C9\u0307\U000105E4"d~ +"\U000110BA\U0001109A\U000110BA\U0001109C\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E"d~ +"\U0001134B\U00011357\U0001134C\U000113C9\U00011383\U000113BB\U00011385\U000113C2\U0001138E\U000113C9\U00011391"d~ +"\U000113B8\U000113C7\U000113C2\U000113C5\U000113C9\U000113C8\U000114B0\U000114BC\U000114BA\U000114BB\U000114BD"d~ +"\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938\U0001611E\U00016121\U0001611F\U00016123"d~ +"\U00016120\U00016125\U00016129\U00016122\U0001611F\U00016126\U00016120\U00016128\U0001611F\U00016127\U0001611F"d~ +"\U00016124\U00016D67\U00016D69\U00016D67\U00016D68\U00016D67\U00016D6A"d; return t[]; } @@ -918,11 +988,11 @@ return t[]; static if (size_t.sizeof == 8) { -//10144 bytes +//10272 bytes enum combiningClassTrieEntries = TrieEntry!(ubyte, 8, 8, 5)(x" 0000000000000000000000000000002000000000000002E0", x" -00000000000001000000000000000B0000000000000010A0", +00000000000001000000000000000B000000000000001120", x" 040203020202010009080702060202050000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -987,18 +1057,18 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000058005700590000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000005A000000000000000000000000000000000000005C0000005B00000000005D00000000000000000000005E -005F0048000000000000000000600000004D000000620061000000630000000000000000006400000065000000000000 -0067001A0066000000000000000000000000006800000000000000690000000000000000000000000000006A00410000 -000000000041000000000000006B000000000000006C0000000000000000000000000000006000000000000000000000 -0000006E006D0000004E0000000000000000006F002C0000000000000000007000000000000000000000000000000000 -000000000041000000000000000000000000007100000000000000000000007200000000000000000000000000000000 -000000730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +005B0000005A000000000000000000000000000000000000005D0000005C00000000005E00000000000000000000005F +00600048000000000000000000610000004D000000630062000000640000000000000000006500000066000000000000 +0068001A0067000000000069000000000000006A000000000000006B0000000000000000000000000000006C00410000 +000000000041000000000000006D000000000000006E0000000000000000000000000000006100000000000000000000 +00000070006F0000004E00000000000000000071002C0000000000000000007200000000000000000000000000000000 +000000000041000000000000000000000000007300000000000000000000007400000000000000000000000000000000 +000000750000000000000000000000000000000000000000000000000000000000000000007600000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000074000000000000 -000000000075000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000007600000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000077000000000000 +000000000078000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000007900000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -1013,22 +1083,22 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000007700000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000007A00000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000007800000000000000000000007A00790000007B000000000000000000000000 +00000000000000000000000000000000007B00000000000000000000007D007C0000007E000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000007D007C000000000000007E00000000007500000000000000000000 -000000000000000000800000007F00000000000000000000000000000000000000000000000000000081000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000082000000000000008300000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000080007F000000000000008100000000007800000000000000000000 +000000000000000000830000008200000000000000000000000000000000000000000000000000000084000000000000 +000000000000000000850000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000086000000000000008700000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -1061,7 +1131,7 @@ DCE6E6DCE6E6DCE6E6DCE6DCDCE6DCDCE6DCE6DCE6DCE6E60000000000E6E6DC0000000000000000 0000000000000000E6E6E6E6E600000000000000E6DCE6E60000DC000000000000000000000000000000000000000000 E6E6000000000000E6E6E6E6E600E6E6E6E6E600E6E6E6E60000E6E6E6E6E60000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000DCDCDC0000000000000000000000000000000000 -0000000000000000E6E6E6E6DCDCDCE60000000000000000DCE6E6E6E6E60000E6E6E6E6DCDCDCDCE6E6E6E6E6E6E6E6 +E600000000000000E6E6E6E6DCDCDCE60000000000000000DCE6E6E6E6E60000E6E6E6E6DCDCDCDCE6E6E6E6E6E6E6E6 E6DCE6E6DC00E6E6DCDCDCE6E6E6DCE6E6DCE6E6E61D1C1BE6E6E6E6E6DCDCE600000000000000000000000000000000 0000000000000000000000070000000000000000000000000000090000000000000000E6E6DCE6000000000000000000 000000000000000000000900000000000000000000000000000000000000000000000000000000000000000000000000 @@ -1107,23 +1177,25 @@ DCE6E6E6E6E6E6E6E6E6DCDCDCDCDCDC000000000000000000000000000000000000000000000000 00000000000000000000000000000000E6E60000000000000000000000E6E6E60000000000000000E600DC0000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000900000000DC01E6 00DCE60000000000000000000000000000000000000000000000000000000000E6E6E6E6000000000000000000000000 -000000000000000000000000000000000000000000000000000000E6E600000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000DCDCDC0000000000DCDC000000000000DCDCDCE6DCE6E6E6 -00000000000000DC00000000000000000000DCE6DCE60000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000009090000000000000000000000000000000000000000000000 -000000000000000000000000000709000000000000E6E6E6000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000909000000000000000000000000000000000000090000000000070000 -000000000000000000000000000000000000000000000000000000000000000000070900000000000000000000000000 -000000000000000000000000000907000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000707000000E6E6000000000000000000E6E6E6E6E6000000E6E6E6E6E60000000000000000 -00070000000900000000000000000000000000000000000000E600000000000000000000070900000000000000000000 -000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000 -000000000000000000000000000000000709000000000000000000000000000000000000000000000000000009000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000009090000000000 -000000000700000000000000000000000000000000000000000000000000000009000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900 -000009090007000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -090000000000000000000000000000000000000000090900000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000E6E6E6E6E60000000000000000000000000000000000 +0000000000000000000000E6E60000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000DCDCDC0000000000DCDC000000000000DCDCDCE6DCE6E6E600000000000000DC0000000000000000 +0000DCE6DCE6000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000909000000000000000000000000000000000000000000000000000000000000000000000000070900 +0000000000E6E6E600000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000090900000000000000000000000000000000000009000000000007000000000000000000000000000000000000 +000000000000000000000000000000000007090000000000000000000000000000000000000000000000000000090700 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000707000000 +E6E6000000000000000000E6E6E6E6E6000000E6E6E6E6E6000000000000000000000000000000000909000000000000 +0000000000000009000000000000000000070000000900000000000000000000000000000000000000E6000000000000 +000000000709000000000000000000000000000000000000000000000000000000000000000000070000000000000000 +000000000000000000000000000000000000000000000000000000000000000007090000000000000000000000000000 +000000000000000000000000090000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000090900000000000000000007000000000000000000000000000000000000000000000000000000 +090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000009000000090900070000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000900000000000000000000000000000000000000000909000000000000000000 +000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000 000000000000000000000000000000000000000101010101000000000000000000000000000000000000000000000000 00E6E6E6E6E6E6E600000000000000000000000000000000000000000000000000000000000006060000000000000000 000000000000000000000000000000000000000000000000000100000000000001D8D80000000000D8D8E20000000101 @@ -1133,24 +1205,24 @@ DCE6E6E6E6E6E6E6E6E6DCDCDCDCDCDC000000000000000000000000000000000000000000000000 E6E600E6E600E6E60000000000E6E6E6000000000000000000000000000000000000000000000000E600000000000000 00000000000000000000000000000000000000000000000000E600000000000000000000000000000000000000000000 0000000000000000E6E6E6E600000000000000000000000000000000000000000000000000000000E6DCE8E800000000 -000000000000000000000000000000000000000000000000000000000000000000DCDCDCDCDCDCDC0000000000000000 -E6E6E6E600000000000000000007E6E60000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +000000000000000000000000000000000000000000000000DCE600000000000000000000000000000000000000000000 +0000000000000000000000000000000000DCDCDCDCDCDCDC0000000000000000E6E6E6E600000000000000000007E6E6 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); enum composeIdxMask = (1 << 11) - 1, composeCntShift = 11; enum compositionJumpTrieEntries = TrieEntry!(ushort, 12, 9)(x" 00000000000000000000000000000400", x" -00000000000010000000000000002600", +00000000000010000000000000002C00", x" 000300020001000000070006000500040007000700070008000A00070009000700070007000C000B0007000700070007 000700070007000D00070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -000700070007000700070007000700070007000700070007000700070007000700070010000F000E0007000700070011 -000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000E000700070007000700070007000700110010000F0007000700070012 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070013000700140007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 @@ -1618,14 +1690,11 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA1FFFF0BA0FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF0BA2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF0BA40BA3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -1634,6 +1703,73 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA0FFFFFFFFFFFFFFFFFFFFFFFF +FFFF0BA1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0BA3FFFF0BA2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA60BA5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0BA9FFFFFFFFFFFFFFFFFFFF0BAA0BABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BACFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BADFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF1BB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BB40BB3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -1646,8 +1782,8 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BB5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF13A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -1662,18 +1798,18 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BA7FFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23B6FFFFFFFF +FFFF0BBC13BAFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BBDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BAB0BAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -1689,9 +1825,9 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF0BACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0BBEFFFFFFFFFFFF0BBFFFFFFFFFFFFFFFFFFFFF0BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -1721,7 +1857,7 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); dstring compositionTable() nothrow @nogc pure @safe { -static immutable dchar[1882] t = +static immutable dchar[1922] t = "\u0338\u226E\u0338\u2260\u0338\u226F\u0300\u00C0\u0301\u00C1\u0302\u00C2\u0303\u00C3\u0304\u0100\u0306\u0102\u0307"d~ "\u0226\u0308\u00C4\u0309\u1EA2\u030A\u00C5\u030C\u01CD\u030F\u0200\u0311\u0202\u0323\u1EA0\u0325\u1E00\u0328\u0104"d~ "\u0307\u1E02\u0323\u1E04\u0331\u1E06\u0301\u0106\u0302\u0108\u0307\u010A\u030C\u010C\u0327\u00C7\u0307\u1E0A\u030C"d~ @@ -1819,9 +1955,13 @@ static immutable dchar[1882] t = "\u309A\u307A\u3099\u307C\u309A\u307D\u3099\u309E\u3099\u30F4\u3099\u30AC\u3099\u30AE\u3099\u30B0\u3099\u30B2\u3099"d~ "\u30B4\u3099\u30B6\u3099\u30B8\u3099\u30BA\u3099\u30BC\u3099\u30BE\u3099\u30C0\u3099\u30C2\u3099\u30C5\u3099\u30C7"d~ "\u3099\u30C9\u3099\u30D0\u309A\u30D1\u3099\u30D3\u309A\u30D4\u3099\u30D6\u309A\u30D7\u3099\u30D9\u309A\u30DA\u3099"d~ -"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\U000110BA\U0001109A\U000110BA\U0001109C"d~ -"\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E\U0001134B\U00011357\U0001134C\U000114B0"d~ -"\U000114BC\U000114BA\U000114BB\U000114BD\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938"d; +"\u30DC\u309A\u30DD\u3099\u30F7\u3099\u30F8\u3099\u30F9\u3099\u30FA\u3099\u30FE\u0307\U000105C9\u0307\U000105E4"d~ +"\U000110BA\U0001109A\U000110BA\U0001109C\U000110BA\U000110AB\U00011127\U0001112E\U00011127\U0001112F\U0001133E"d~ +"\U0001134B\U00011357\U0001134C\U000113C9\U00011383\U000113BB\U00011385\U000113C2\U0001138E\U000113C9\U00011391"d~ +"\U000113B8\U000113C7\U000113C2\U000113C5\U000113C9\U000113C8\U000114B0\U000114BC\U000114BA\U000114BB\U000114BD"d~ +"\U000114BE\U000115AF\U000115BA\U000115AF\U000115BB\U00011930\U00011938\U0001611E\U00016121\U0001611F\U00016123"d~ +"\U00016120\U00016125\U00016129\U00016122\U0001611F\U00016126\U00016120\U00016128\U0001611F\U00016127\U0001611F"d~ +"\U00016124\U00016D67\U00016D69\U00016D67\U00016D68\U00016D67\U00016D6A"d; return t[]; } diff --git a/std/internal/unicode_decomp.d b/std/internal/unicode_decomp.d index d596d48c3ee..76fe10cd42a 100644 --- a/std/internal/unicode_decomp.d +++ b/std/internal/unicode_decomp.d @@ -18,13 +18,13 @@ import std.internal.unicode_tables; static if (size_t.sizeof == 4) { -//23488 bytes +//24512 bytes enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" -000000000000004000000540", +0000000000000040000005C0", x" -0000010000000A0000002360", +0000010000000B0000002460", x" -020201000402030202020205070602020202020208020202000000000000000000000000000000000000000000000000 +020201000402030206020205080702020202020209020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -84,46 +84,47 @@ x" 00A700A600A900A800AB00AA00AD00AC00AF00AE00B100B000B300B200B500B400B700B600B900B800BB00BA00BD00BC 00BF00BE00C100C000C300C200C500C400C700C600C900C800CB00CA00CD00CC00000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000CF00CE00000000000000000000000000000000 +000000000000000000D100D0000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000CF00CE000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000D300D20000000000D4000000000000000000000000000000000000000000000000000000000000 +00000000000000D5000000D6000000D7000000000000000000D8000000000000000000000000000000D9000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000D100D00000000000D2000000000000000000000000000000000000000000000000000000000000 -00000000000000D30000000000000000000000000000000000D4000000000000000000000000000000D5000000000000 +00DA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00D600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000DB0000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000DC00000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000D800D700D90000000000DA0000000000000000000000000000000000000000000000000000000000000000 -00DC00DB00DE00DD00E000DF00E200E100E400E300E600E500DB00E700E800DC00E900DE00EB00EA00EC00E200EE00ED -00F000EF00F200F100F400F300F600F50000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00F7000000F900F800000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000FB00FA00FD00FC00FF00FE00000000 -000000000000000000000000000000000000000000000000000000000000000001010100010301020000010400000000 -010601050000010700000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000DE00DD0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000E000DF00E10000000000E2 +000000000000000000000000000000000000000000000000000000000000000000E400E300E600E500E800E700EA00E9 +00EC00EB00EE00ED00E300EF00F000E400F100E600F300F200F400EA00F600F500F800F700FA00F900FC00FB00FE00FD 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000010800000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000FF0000010101000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000103010201050104010701060000000000000000000000000000000000000000 +0000000000000000000000000000000001090108010B010A0000010C00000000010E010D0000010F0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000010A0109010C010B010E010D0110010F -011201110114011301160115011801170000011900000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -132,396 +133,416 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000001120111011401130116011501180117011A0119011C011B011E011D0120011F +000001210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000100000000000000000000000000000015000006920000000000090000 -00000000030F0343120F000300000000031400480000078A03C603CE000004940570056D0586057305B005A605F80000 -062E062B0658063106E706E406F906EA0792000007AC07A907C207AF000007E608B4000008BA08B7096208CE00000000 -09AF09AC09C509B209EF09E50A4A00000A8C0A890AB60A8F0B490B460B580B4C0C4400000C610C5E0C770C6400000C9B -0D6B00000D710D6E0E0F0D850E1E000009C8058909CB058C0A0D05CE0A3E05EC0A4105EF0A4405F20A4705F50A71061A -000000000AA506470AB006520AB306550AD306750ABC065E0AFE069A0B0406A00B0706A30B0D06A90B1906BA00000000 -0B4F06ED0B5206F00B5506F30B6E070F000006F60B3A06D80B7607170BB1072E0743000007500BCF07460BDC07400BD2 -00000BCC078F0000079E0C4107980C500F300C4A000000000C8607D10C9107DC0CA507F0000000000D0A08450D20085B -0D10084B0D2E086F0D3508760D4C088D0D3B087C0D6008A90D5708A0000000000D7408BD0D7B08C40D8208CB0D9B08E4 -0D9E08E70DC709100DEC09420E120965097C097109820E2C060D0E32084306140CB107FC000000000000000000000000 -00000000000000000000000008F3000000000DAA00000000000000000000000000000000000000000000000000000000 -00000000000000000613060C07360A6A0BBC073D0786078305B70C35070309F607F30B6208EA0CA808D90DA108D50D90 -08DD0D8C08D10D9400000D8809E805A909E105A20E680E5D000000000B0A06A60BAB07280CCF081A0CD2081D0F070E82 -06090B790A6706100AFB0697000000000C3E078C09F205B30E650E5A0E6F0E6009F905BA09FC05BD0ABF06610AC20664 -0B6507060B6807090CAB07F60CAE07F90D13084E0D1608510DA408ED0DA708F00D49088A0D5D08A6000000000B2206C3 -00000000000000000000000009DE059F0ACC066E0C9E07E90C7E07C90C9407DF0C9707E20E18096B0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0EB70B100A14073E0EE10EDD0DE40EE90000069500000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000012000F004B00240027000600000000 -0A2B0EB10B44084300000F0A000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000004001A002B00000000001D0000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000F2E0000000000000000000000540000000000000546 -0000000000000000001C000307410F450FC00FA0000010110000104A10991073000011E2000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000107C101A115210EC11D21176 -000012700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000126911DB12601232000012A811CB11471073106E1299107C0000124B00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000124D120B00001255114D100A00000000 -106A00000000000000000000000000001313130D130A000000000000130100000000000000000000131F132B00001334 -000000000000000000000000000000001325000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000013790000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000001361135B135400000000000013C60000 -0000000000000000137313810000139C0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000013D013CD0000000000000000000000000000000013160000000013660000000000000000 -0000000000000000000000000000000013481304134B130700000000135E13100000000013E213DD13691319136E131C -0000000013761322137C1328138C132E0000000013EA13E513BD134313991331139F133713A2133A13AD133D00000000 -13B6134000000000000000000000000000000000000000000000000013ED000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000149414911497183A00001875 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000149A00001906183D -000018BC00000000000000000000000000001918000018FD000000000000000000000000000000000000000000000000 -000000001915000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -192D00000000000000000000000000001936000000000000000019390000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -191E191B19241921192A1927193319300000000000000000000000000000000000000000194500000000194800000000 -000000000000000000000000000000000000000000000000193F193C1942000000000000000000000000000000000000 -000000000000000000000000000000000000000019570000000000000000195A00000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -194B00001951194E00000000000019540000000000000000000000000000000000001966196300000000196900000000 -0000000000000000000000000000000000000000000000001960195D0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000196C0000000000000000000000000000000000000000 -00000000000000000000000000000000000000001975196F000019720000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000001978000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000197B000000000000000019850000 -000019881981197E00000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000001991198B0000198E0000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000001994199A19970000199E00000000000000000000000000000000 -000000000000000000000000000000000000000019A10000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000019AA00000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000019A719A40000000000000000000000000000000000000000 -0000000000000000000019AD000000000000000000000000000000000000000000000000000000000000000000000000 -0000000019B200000000000000000000000000000000000019B500000000000000000000000019B80000000019BB0000 -0000000000000000000019BE000000000000000000000000000000000000000019AF0000000000000000000000000000 -0000000019C1000019C4000019DC19E019E319E700000000000000000000000019C70000000000000000000000000000 -000000000000000000000000000000000000000019CD00000000000000000000000000000000000019D0000000000000 -00000000000019D30000000019D600000000000000000000000019D90000000000000000000000000000000000000000 -19CA0000000000000000000000000000000000000000000000000000000019EA00000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000000019ED00000000 -00000000000000000000000000001AE300001AE600001AE900001AEC00001AEF0000000000001AF20000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000001AF500001AF80000000000001AFE1AFB1B0100000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000E580568000005D5062905E606870E7C06CF06AC071A0607 -07230734000007810E8B07A7076D06AF056B0890069207730E910E8F093A1B040A800A310EA30EA106020EA50B7C0000 -0E7805D30E97078A1B081B060BA60CD61B0C0A27086D0EC911471B0E114B1149129B12990A140AE3086D0A2711491147 -1299124D0000129B00000000000000000000000000000000000000000000000000001388000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000E9300000E9909A30EA50E6B0EA90ADC0EB50EAD0EBD0EBB1B100EBF0EC50F140F161B120ECB0ECD0ED10ECF -0ED50ED30EEB0EDB0E800EED0EF50EF30EF71B0A06110EF90F030F0111CB0F050A0A05CB0A1605DA0A1905DD0A1C05E0 -0A4D05FB0A6E06170A74061D0A7D06260A7706200A7A06230AA8064A0AAC064E0AD606780AD9067B0ACF06710AF20684 -0B01069D0B1C06BD0B2506C60B1F06C00B2806C90B2B06CC0B7107120B5B06FC0BA807250BAE072B0BB407310BD50749 -0BD8074C0BE207560BDF07530C1507750C1807780C1B077B0C4707950C4D079B0C5607A40C5307A10C7A07C50C8207CD -0C8907D40C8D07D80CEF08380CF2083B0D0D08480D1908540D1C08570D23085E0D3808790D4208830D3108720D3E087F -0D4508860D51089D0D5A08A30D6608AF0D6308AC0DC4090D0DCD09160DCA09130D7708C00D7E08C70DDE09270DE1092A -0DE6093C0DE9093F0DF209480DEF09450DF8094B0E0409570E07095A0E1B096E0E2F097F0E3809880E3B098B0D540B2E -0E240DF50D3809A9000000000000000009FF05C009EC05AD09B9057A09B5057609C1058209BD057E0A0205C309D20593 -09CE058F09DA059B09D605970A0605C70AC506670AB9065B0AA206440A9606380A9206340A9E06400A9A063C0AC8066A -0B5F07000B6B070C0CC808130CA207ED0C6B07B60C6707B20C7307BE0C6F07BA0CCB08160CB808030CB407FF0CC0080B -0CBC08070CC4080F0DC1090A0D9808E10DB108FA0DAD08F60DB909020DB508FE0DBD09060E0C095F0E2709770E210974 -0E150968000000000000000000000000111B10F9111E10FC112711051130110E0F700F4E0F730F510F7C0F5A0F850F63 -11601155116311581167115C000000000FAE0FA30FB10FA60FB50FAA00000000119F117D11A2118011AB118911B41192 -0FE50FC30FE80FC60FF10FCF0FFA0FD811F911EA11FC11ED120011F1120411F5102C101D102F10201033102410371028 -12401235124312381247123C000000001058104D105B1050105F10540000000012871278128A127B128E127F12921283 -107F00001082000010860000108A000012D112AF12D412B212DD12BB12E612C410BE109C10C1109F10CA10A810D310B1 -10EC10E51152114F1176116F11D211CF1232122F1260125D12A812A1000000001139111711221100112B110911341112 -0F8E0F6C0F770F550F800F5E0F890F6711BD119B11A6118411AF118D11B8119610030FE10FEC0FCA0FF50FD30FFE0FDC -12EF12CD12D812B612E112BF12EA12C810DC10BA10C510A310CE10AC10D710B510F310F6114410E8000010EF1140113D -0F480F4B0F450F42002A0F92002A11CD0020005111C811720000117911C411C10FA00F9D0FC00FBD002D100700350031 -11D511D811E211DE0000000011E61208101410171011100E003C000000440040126312661270126C1252124F12741296 -1076107910731070001810670998001C0000000012FA12A4000012AB12F612F3104A104710991096000310E000000039 -00010001000100010001000100010001000100010000000100000000000000001B1600000000000000000000004E0000 -00000000000000000000000000000000000000000000000002FC02FA000002FF00000000000000000000000000010000 -000000001B1C000000001B1F1B2B1B2800000000000000000000008F0000000C00000000000000000000000005630000 -009205600000000000000000000000000000000000000000000000001B23000000000000000000000000000000010000 -00000000000000000000000000000000000000000000000000000000000000000AE30305000000000374036503920383 -03B003A11B5A02F400A105440B3E00A503140305030F0343037403650392038303B003A11B5A02F400A10544000000A5 -0A8006920B44078A0B100EA10A2B0B7C0B3E05D308430CD600000BA60000000000000000000000000000000000000000 -000008420000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -09A509A10E5005E30A2100000E7E0A250E53000006AC060206AC06AC0E740B1006CF06CF0A2B07340781000000000789 -06AF0000076D083E076D076D00000000089208660000089A0000060A0000077F0000060A05B0071A05E305D50A800000 -067E06290723000013FF078A1415140D0AE3141A068000001149124B10630F9700001B580000000005E600000A800A31 -073E0AE300000000000000000000000003E203DA03CA03C103D204550498045903D604CF03DE04E704EB049C03BE0511 -06D106CF06DE06D4091B06B20922091E068206E10953095005E30734072305E60B330AE30B400B360DD2086D0DD90DD5 -0B440B430E000DFD09A30A2B05D30A3100000000000000000000000000000000030D0000000000000000000000000000 -00000000000000000000000000000000000000001B3A1B33000000000000000000000000000000000000000000000000 -00000000000000000000000000001B3F0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000001B4200001B451B4800000000000000000000000000000000 -00000000000000000000000000000000000000000000000000001B4D000000001B5200000000000000001B5500000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000001B5C00001B5F -00000000000000001B651B621B6E000000001B7100000000000000000000000000000000000000000000000000000000 -1B7500000000000000001B781B7B00001B7E000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000055600001B84000000000000000000000000000000001B810000055B054A -1B8A1B87000000001B901B8D000000001B961B930000000000000000000000001B9C1B99000000001BA81BA500000000 -1BAE1BAB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000001BBA1BB71BC01BBD00000000000000000000000000000000 -000000000000000000000000000000001BA21B9F1BB41BB10000000000000000000000001BC61BC31BCC1BC900000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1BE4000000001BE600000000000000000000000000000000000000000000000000000000000000000000000000000000 -034303140365030F0383037403A10392031C03B00342032F036403550382037303A0039103F703AF00D900A300E600E2 -00EE00EA00F600F200A700FA00B100AC00BB00B600C500C000CF00CA00DD00D403460319036803590386037703A40395 -031F03B303450332036703580385037603A3039403FA03B2016A01660172016E017A01760182017E018A01860192018E -019A019601A2019E01AA01A601B201AE01BA01B601C201BE01CA01C605D5056805E605E3067E062906AC0687060706CF -0734071A0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A800B100602 -073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE406110695000003050000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000001B69000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000054F054200000552 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000001BD90000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000006B2073E00000000 -000000000000000000000000000000000000000000000000000000001BDE000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000232E000000000000000000000000000000000000 -000000000000000000000000000000000000000027640000000000000000000000000000000000000000000000000000 -1FAA1F981FB81FB01FC21FBC1FCA1FC61FFD1FD0201120092021201920392029203D203B206B205720772073207F2079 -208F208D209D209B20A920A1210120F7212B21212131212F214A213921662160217C21762180217E218E218C21AA21A4 -21B221AE21C121BA21DB21C521E121DD21E721E321F321EB223D220122492247228B228922972295229F229B032522A3 -032922C3231222D523202318232C232623322330233623342394233823BE23B823C223C023C823C423D423CA23E623E2 -24082406240E240C241424122428242624382436243C243A24582446245C245A248E246E24A0249024AC24A824CE24BC -24F424F0250424FE250C25082510250E251E251C2530252C253625342540253C25442542254A254825A4259A25C025BE -25DA25C425E225DE260425E6260A2606260E260C262626242634262A26442636264A2648266C265C267826762692267C -269C269426B426AE26C826BC26CE26CC26D226D026DA26D826EC26DE26F026EE26FE26FC270C27022710270E27162714 -271A27182724271C27322730273A2738273E273C27442742274C274627542750275A2756275E275C2766276200000000 -000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000001BF82081207F000020830000000000000000 -00000000000000000000000000000000000000000000000000001C2D00001C3000001C3300001C3600001C3900001C3C -00001C3F00001C4200001C4500001C4800001C4B00001C4E1C5100001C5400001C570000000000000000000000000000 -1C5D1C5A1C60000000001C631C691C661C6C000000001C6F1C781C750000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000001C2A0000000000000000008700000000008A1C7B1C82 -00000000000000000000000000000000000000000000000000001CD500001CF200001CA500001D4100001D4A00001D5E -00001D6E00001D7900001D7E00001D8B00001D9000001D9A1DA100001DA600001CBF0000000000000000000000000000 -1DD51DCC1DEA000000001DF11E101E061E25000000001E2D1D591E500000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000001CB01EF300001F011EFC00001F06000000001D501F0F -000000000000000000000000000000000000000000000000000000000000000019EF00001ABB19F41ABD19F619FB1ABF -1A021A001AC31AC11AC71AC51ACB1AC91A071A511A111A0C1A131A5B1A1A1A181A2C1A221A391A2E1A431A3E19F21A48 -1A851A831A891A871A8D1A8B1A371A8F1A951A931A991A971A9D1A201AA11A9F1AA51AA31AA91A2A1A4D1A7F1ACD1A4F -1AD11ACF1AD51AD31AD91AD71ADB1A531A551ADD1A591A571A5F1A5D1A631A611A671A651A6B1A691A6F1A6D1A731A71 -1A771A751AE11ADF1A7B1A791AAB1A7D1AAF1AAD1AB31AB11AB71AB500001AB9000000001FC61F9820F91F9E1FAC1FA0 -24161FA21FA61FBC213E1F9A1FD0210301D701CE01E901E001FB01F2020D0204023302250245023C0257024E01DB01D2 -01ED01E401FF01F6021102080237022902490240025B02520216022E0000021E0270026002A002680288027402840264 -0290026C02C402B002B802C002A402EC02BC02AC02D002B402C8029802D402E40278028C02A8029C027C02CC029402E8 -028002D802E002DC21C320D324B022950000000000000000000000000000000004060831041C04110432042704400439 -044E04470475046E047F047C0485048219F619EF1A0219FB1A0C1A071A1A1A131A2E1A221A3E1A391A481A4319F819F1 -1A0419FD1A0E1A091A1C1A151A301A241A401A3B1A4A1A451A271A3300001A1F1FC61F9820F91F9E20131FC820111F9C -207F1FBE2394032922D523382101267C22ED032522F222CD23CE20B9247C26102494205D214A241A1FFB265423482091 -1FDD26E0213C20251FAC1FA021AC1FA2207B20B32164216A1FDB24422089261A04882135048E048B04B1049104B704B4 -04BD04BA04C304C004C904C604E404CC034E033B04D604A3050304F2052905180327053A034D033A0A8506B407390A82 -1CA01C871CB91CAE1CD31CC91D221CF01D481D3F1D6C1D5C1D7C1CCD1D8E1D891D9F1CAA1C8D1DA41DBE1D551D3D1DC0 -1DCA1DBC1E041DE81E4E1E231E8B1CE01E9E1CD11EB31EAF1EC81EC01CE41ECA1EE31C9C1EF11D0C1EFF1EFA1FD81F04 -1C8F1C891C9A1C941CA81CA21CBB1CB31CCB1CC21CE21CCF1CEB1CE61CDD1CD81CFA1CF51CFF1D061D0E1D0B1D1C1D15 -1D2C1D101D3A1D331D531D441D611D571D711D661D851D811DA91D931D301DB21DC61DBB1DD81DE41DCF1DDF1DFB1DF4 -1DED1E001E1A1E131E1F1E091E301E441E4A1E341E3E1E391E5B1E281E671E531E6A1E611E741E6E1E7D1E791E851E81 -1E921E8D1EA01E951D171EA41EBA1EB51ECE1EC21ED81ED31EE51EDD1D1E1EE8033F031103610352037F0370039D038E -03BB03AC033E032B03600351037E036F039C038D03BA03AB040D0402042304180B12042E056A0A560C5B0A120A5C0CE9 -0A630A5F21BC06DB213B22B222EF22AB0C290CDD0BED1211071C0B7E0689075B0B8F0A290C2C0CE0121D121406010BF9 -0B81068D068C0764122008960A590C000AEF0B9712230C380A330C030C060B9A0A370A360C0A0B9D0A3B0A3A0C1E0BA1 -06910C2207680B850CF906900D030CFD0C3B0CEC0C1212260C2F0CE30BF01217076F0B890C320CE60BF3121A07720B8C -077E0BB705D7099C0A300A2D05E805FF06940A5306AE0B16071F0B3D0BA507220BC20BBF0BC90BC50BFC0BF608230C0E -08260CD80D28082E0939086C05D1092D034A0337036C035D038A037B03A80399032303B703490336036B035C0389037A -03A7039803FE03B604140409042A041F043C0435044A0443047104510AF7047800000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000013B913B200000000 -00000000000000000000000000000000000000000000000000000000000000000000276E000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000067E05E30000083E000000000E7A0E7200000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000002772276C27740EC1 -000000000000000000000000000000000EFB000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000022C52608261C26361FAE2378276220AB2144276220DD267C2239214224FC2434 -25B62598265A25D0234C230623EE23A22670257C1FC0270623102095259623B42198272E258E2388225325D825BC252A -22CF21D123DA23581FE326602065202F230C2287244423B2259225082630259E271E26C42462272C24DE2482268A256E -25F2273221DF211F251A24BA246623CC26C026182186211D2362230824D6237C26A024EA252020632033203524E02498 -26A4257A2255260025F8230621701FB423E4220B207524241FEB246A1FA421FD22932342209F24D4244A211525EA257E -26482328225D233E226D255A1FCE24222031200F24CA22F625F025462069267A214A20C322A121D9246C238A270A2698 -2740273422C120572642231E222D21BF2283223B23A8238224922400251624E42582263A268C264E2059204323A020CD -25EA25C6220721CF2324226923DE24B820FB1FD621A2217023EC220D250223FA267E251226C626BE1FE526E42674248C -221926B21FF71FC42182217223062299243223AE2658258822B9275E2055269E22E522DF23702354242023F224D22460 -201326EA26A6224321941FEF263C2364221D21F523E422E9204726AA218A20BB22D722AE234622FC242A23F025C824F8 -267825CE207D26B820BD2372240223B026AC259027362722236022E324A8252E24C024AE239C23D81FD225FE20492562 -21C7204124C62257234E2168264022BF26A225C021D525DE20E91FFF0000000000002113000022B720370000243E23DC -247E2470248A248024C226CA0000250400002594000025F626500000000026660000000026F626F4272A26F826B02662 -1FF91FE7206120032087206720EF20E1211120F3218821172213218C222B2227228D223722BB22A5235A22F823802368 -23BA23AA246423F4247622F224782474247C247A2488248624A4249A24E424B224EC24E8250A24F6254C25322580254C -25E025D425FC25FA2620261E2650264C26DC26BA220F26E8253E283300000000202D1FA81FE1200D20172001206D205F -20D720E120ED20DF211B211321462140215C215421D721D321FF21EF22232217222B221B2237222522712245227B2277 -22B7228F22D122CF232022DB235423282376237A238E2380245623AA23D623BC23FC23DC241C240A2430242E2440243E -245224482468245024B224A624DA24BE24F224E42564250A25B2257825DC25D625EC25E025EE25F625F825FA25FC25F4 -262026022656263E2682267226BA26A826D426CA26E226DC271226E828092762281B28071F501F3C284F1F5228912861 -276027580000000000000000000000000AE20ADE0AE10AE60D2B0AE500000D2B00000000000000000000000000000000 -0000000013F9000013F313F013F613FC000000000000000014300000147D000013FF1451141F141A140B143914621446 -02F4147814751472146E146A14041401140F1407141C1417142714210000142A1433142D143B14360000144300001448 -144E144B1453000000001456145F145C146714641424147A143E1412140A145918C318C318C918C918C918C918CB18CB -18CB18CB18CF18CF18CF18CF18C718C718C718C718CD18CD18CD18CD18C518C518C518C518E718E718E718E718E918E9 -18E918E918D318D318D318D318D118D118D118D118D518D518D518D518D718D718D718D718DD18DD18DB18DB18DF18DF -18D918D918E318E318E118E118EB18EB18EB18EB18EF18EF18EF18EF18F318F318F318F318F118F118F118F118F518F5 -18F718F718F718F71918191818FB18FB18FB18FB18F918F918F918F9163C163C19151915000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000018ED000018ED18ED18AE18ED18AA18AE18B218AA190618B2190D190D19001900190B190B18B618B618B618B6 -14C014C01878187818B818B8189C189C18AC18AC18A818A818B018B018B418B418A018B418A018A0190F190F190F190F -1880187C18A01890149F18A414A914A214BF14B614C914C214E314D8151514F8151D1518152F15261537153214DC14CD -157C14E014E7157F15B015A515C515B7163E160D1650164D1665165B16731670168F168A16B2162016EA16B516F016ED -16FE16F717061701171C170D1724171F172A17271730172D173E173317551741177317641624163714FC178B15041500 -150815D117D8150C17FA17EB18141803181C1817182A181F1847182D1855184E186F185E158F1872184215990064005D -0072006B00800079188C18881894189018A418A014B3148614B914B614C214BF14F514F2150F14F81518151515231520 -152915261532152F170116FE171F171C17301724173E173316371741178B162415D11790180017FD180E180318171814 -18581842185E185B186F1869187C1872188418801898189014A2149F14B614A914C914BC14E314D8151214F815371526 -14DC14CD157C14E015A514E715B715B0160D15C5163E16181650164D1665165B168A16701620168F16B516B216ED16EA -16F716F0170D1706172A17271730172D1755173317731764148B1637150014FC15D1150417EB17D8180317FA181C1811 -1830181F184E1847185E18551890169814B6189814F814BC1526151215C5152C15F715D4173016021637173318111803 -1698185E16D716D0168216DE16AA168516C416AD15D716C7160515DA153B160814D114A614EB14D5164514AD16681648 -15DF166B15F115E615F415F7161B15C21682166216AA168516C416AD15D716C7160515DA153B160814D114A614EB14D5 -164514AD1668164815DF166B15F115E615F415F7161B15C215DF166215F115E615D415F71673160215B015A515DF15B7 -15F115E6168A1673148E148E000000000000000000000000000000000000000000000000000000000000000000000000 -14DB14CC14DF14DB14FB14E6150314FF154E154E156C157015A815B315CC15AC15C815CC15D015D01610161015E91641 -15E215E915FA15FA15FE15FE165E16531676165E167A16761692167E169E169E16B816A216BC16C016F316F317141710 -176F17671758176B17761758177D177617A9177D17B617AD179E179617C117BD000000001822179A17EE182617DF17F2 -17E317DF1806180A1861186114D414AC14EE14D0150B14EA155615071552153A161415BA165715ED17811760184A1851 -17CC186517F6171817671710173A16A617C517DB1736175C17DB175C1565153E16FA17A2173614A51641169217E715BE -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000001709163A14841489161E17B116961594 -16231635154216270000159C000000000000000000000000000000000000000000000000000000000000000000000000 -1BE002F605401BE2008D05461C26009302FF1C2800000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000001B1A02FC09961B1800A109960E3E00A51BFA0E421BF41BFE1BE81BF61BE41BEA -1BEC1BE61BF01BEE00001BF2098E0000000C0992000C000C0996000C099609961BE002F6000002FA05400546008D0093 -00A11B1A0E3E00A51BFA0E4200971BFE02F2009D02F802F40559054800000544009909900566009B0000000000000000 -16CA00570000005A0000006116CD006816D4006F16DB007616E2007D16E500841491148014941491183A14941497183A -187514971875187514821875149D1482149D149D14C5149D14C714C514C714C7151B14C7151B151B14A0151B14A014A0 -14A314A014A314A314AA14A314AA14AA158B14AA158D158B1487158D14B4148715A314B415A315A315DD15A315DD15DD -160B15DD160B160B164B160B164B164B166E164B166E166E1688166E16881688168D1688168D168D16B0168D16B016B0 -16E816B016E816E8170416E8170417041722170417221722159717221597159714B7159714B714B714BA14B714BA14BA -148C14BA148C148C1833148C14C0183314A714C014A714A7174914A7174D17491751174D174617510000174600000000 -008D000000970095009B0099009F009D00A500A102F402F202F802F6030302FA03140305030F03430374036503920383 -03B003A10546054005440548009305590568056605E305D5062905E60687067E06CF06AC071A06070723073407A70781 -083E06AF0861076D056B0890077306B2095D0682098E060A09920990099609940692099809A3093A0A800A3106020ADC -0AE30B100B7C073E05D30A2B078A0B3E05D80CD608430A140A270BA60DE4086D06950B440E3E06110E420E401BD50E44 -1BE21BD71BEE1BEC1F0B1BE01C851F041CAC1C9E1CC71CB71EBE1EB11D9D1EC61C871CC51CAE1CA01CC91CB91CF01CD3 -1D3F1D221D5C1D481CCD1D6C1D891D7C1CAA1D8E1DA41D9F1D551C8D1DC01DBE1DBC1D3D1DE81DCA1E231E041CE01E4E -1CD11E8B1EAF1E9E1EC01EB31ECA1EC81C9C1CE41D0C1EE31CB51EF1008B008819EF1A7F1ABB19F41ABD19F619FB1ABF -1A021A001AC31AC11AC71AC51ACB1AC91A071A511A111A0C1A131A5B1A1A1A181A2C1A221A391A2E1A431A3E00001A48 -000000001A8319F21A871A851A8B1A89000000001A8F1A8D1A931A371A971A95000000001A201A991A9F1A9D1AA31AA1 -000000001A2A1AA500001AA9000000000E480E4600090E4E0E4A0E4C00001B2F1B311BCF1B381B361BD11B3D00001BD3 -00000000000000000000000000000000000000000000000000000000000000000F3300000E630F350E950F0E0F1C0000 -0F2027760E9B0F1E1B140E9D0EA70E9F0EB30F280EAB0EAF0E740F100EB90F120F2A0EEF0EC30F2C277027D127D30EC7 -27D50EFD0ED70E6D05D80ED927D70EDF0EE50EE30F260EE727780F220EF10F2400001BDC0F180EFF0F0C0F1A0E870E85 -27D90E89000027DB00000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000277A0000277D0000000000000000000000000000000000000000 -000000002780000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000002786278300000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000278900000000278C00000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000279200000000278F00002795 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000279B279800000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000279E00000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027A427A1 -27AB27A727B327AF000027B7000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000027BB000027BE27C627C227C9000027CD000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -05D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773 -060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A27 -0B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E08900861 -06B2056B06820773060A095D093A06920A3109A30ADC0A8000000602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8 -0BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000010000000000000000000000000000001500000692000000000009000000000000030F0343120F000300000000 +031400480000078A03C603CE000004940570056D0586057305B005A605F80000062E062B0658063106E706E406F906EA +0792000007AC07A907C207AF000007E608B4000008BA08B7096208CE0000000009AF09AC09C509B209EF09E50A4A0000 +0A8C0A890AB60A8F0B490B460B580B4C0C4400000C610C5E0C770C6400000C9B0D6B00000D710D6E0E0F0D850E1E0000 +09C8058909CB058C0A0D05CE0A3E05EC0A4105EF0A4405F20A4705F50A71061A000000000AA506470AB006520AB30655 +0AD306750ABC065E0AFE069A0B0406A00B0706A30B0D06A90B1906BA000000000B4F06ED0B5206F00B5506F30B6E070F +000006F60B3A06D80B7607170BB1072E0743000007500BCF07460BDC07400BD200000BCC078F0000079E0C4107980C50 +0F300C4A000000000C8607D10C9107DC0CA507F0000000000D0A08450D20085B0D10084B0D2E086F0D3508760D4C088D +0D3B087C0D6008A90D5708A0000000000D7408BD0D7B08C40D8208CB0D9B08E40D9E08E70DC709100DEC09420E120965 +097C097109820E2C060D0E32084306140CB107FC00000000000000000000000000000000000000000000000008F30000 +00000DAA0000000000000000000000000000000000000000000000000000000000000000000000000613060C07360A6A +0BBC073D0786078305B70C35070309F607F30B6208EA0CA808D90DA108D50D9008DD0D8C08D10D9400000D8809E805A9 +09E105A20E680E5D000000000B0A06A60BAB07280CCF081A0CD2081D0F070E8206090B790A6706100AFB069700000000 +0C3E078C09F205B30E650E5A0E6F0E6009F905BA09FC05BD0ABF06610AC206640B6507060B6807090CAB07F60CAE07F9 +0D13084E0D1608510DA408ED0DA708F00D49088A0D5D08A6000000000B2206C300000000000000000000000009DE059F +0ACC066E0C9E07E90C7E07C90C9407DF0C9707E20E18096B000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000EB70B100A14073E0EE10EDD0DE40EE9 +000006950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000012000F004B002400270006000000000A2B0EB10B44084300000F0A00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0004001A002B00000000001D000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000F2E00000000000000000000005400000000000005460000000000000000001C000307410F45 +0FC00FA0000010110000104A10991073000011E200000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000107C101A115210EC11D2117600001270000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000126911DB12601232000012A8 +11CB11471073106E1299107C0000124B0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000124D120B00001255114D100A00000000106A0000000000000000000000000000 +1313130D130A000000000000130100000000000000000000131F132B0000133400000000000000000000000000000000 +132500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001379000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001361135B135400000000000013C600000000000000000000137313810000139C +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013D013CD +000000000000000000000000000000001316000000001366000000000000000000000000000000000000000000000000 +13481304134B130700000000135E13100000000013E213DD13691319136E131C0000000013761322137C1328138C132E +0000000013EA13E513BD134313991331139F133713A2133A13AD133D0000000013B61340000000000000000000000000 +00000000000000000000000013ED00000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000149414911497183A0000187500000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000149A00001906183D000018BC000000000000000000000000 +00001918000018FD00000000000000000000000000000000000000000000000000000000191500000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000192D0000000000000000000000000000 +193600000000000000001939000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000191E191B19241921192A192719331930 +000000000000000000000000000000000000000019450000000019480000000000000000000000000000000000000000 +0000000000000000193F193C194200000000000000000000000000000000000000000000000000000000000000000000 +0000000019570000000000000000195A0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000194B00001951194E0000000000001954 +000000000000000000000000000000000000196619630000000019690000000000000000000000000000000000000000 +00000000000000001960195D000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000196C000000000000000000000000000000000000000000000000000000000000000000000000 +000000001975196F00001972000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000197800000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000197B000000000000000019850000000019881981197E0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000001991198B0000198E000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000001994199A19970000199E0000000000000000000000000000000000000000000000000000000000000000 +0000000019A1000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000019AA0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000019A719A400000000000000000000000000000000000000000000000000000000000019AD00000000 +00000000000000000000000000000000000000000000000000000000000000000000000019B200000000000000000000 +000000000000000019B500000000000000000000000019B80000000019BB00000000000000000000000019BE00000000 +0000000000000000000000000000000019AF00000000000000000000000000000000000019C1000019C4000019DC19E0 +19E319E700000000000000000000000019C7000000000000000000000000000000000000000000000000000000000000 +0000000019CD00000000000000000000000000000000000019D000000000000000000000000019D30000000019D60000 +0000000000000000000019D9000000000000000000000000000000000000000019CA0000000000000000000000000000 +000000000000000000000000000019EA0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000019ED0000000000000000000000000000000000001AE3 +00001AE600001AE900001AEC00001AEF0000000000001AF2000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000001AF500001AF80000000000001AFE1AFB1B010000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000E580568000005D5062905E606870E7C06CF06AC071A060707230734000007810E8B07A7076D06AF +056B0890069207730E910E8F093A1B040A800A310EA30EA106020EA50B7C00000E7805D30E97078A1B081B060BA60CD6 +1B0C0A27086D0EC911471B0E114B1149129B12990A140AE3086D0A27114911471299124D0000129B0000000000000000 +000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000E9300000E9909A30EA50E6B +0EA90ADC0EB50EAD0EBD0EBB1B100EBF0EC50F140F161B120ECB0ECD0ED10ECF0ED50ED30EEB0EDB0E800EED0EF50EF3 +0EF71B0A06110EF90F030F0111CB0F050A0A05CB0A1605DA0A1905DD0A1C05E00A4D05FB0A6E06170A74061D0A7D0626 +0A7706200A7A06230AA8064A0AAC064E0AD606780AD9067B0ACF06710AF206840B01069D0B1C06BD0B2506C60B1F06C0 +0B2806C90B2B06CC0B7107120B5B06FC0BA807250BAE072B0BB407310BD507490BD8074C0BE207560BDF07530C150775 +0C1807780C1B077B0C4707950C4D079B0C5607A40C5307A10C7A07C50C8207CD0C8907D40C8D07D80CEF08380CF2083B +0D0D08480D1908540D1C08570D23085E0D3808790D4208830D3108720D3E087F0D4508860D51089D0D5A08A30D6608AF +0D6308AC0DC4090D0DCD09160DCA09130D7708C00D7E08C70DDE09270DE1092A0DE6093C0DE9093F0DF209480DEF0945 +0DF8094B0E0409570E07095A0E1B096E0E2F097F0E3809880E3B098B0D540B2E0E240DF50D3809A90000000000000000 +09FF05C009EC05AD09B9057A09B5057609C1058209BD057E0A0205C309D2059309CE058F09DA059B09D605970A0605C7 +0AC506670AB9065B0AA206440A9606380A9206340A9E06400A9A063C0AC8066A0B5F07000B6B070C0CC808130CA207ED +0C6B07B60C6707B20C7307BE0C6F07BA0CCB08160CB808030CB407FF0CC0080B0CBC08070CC4080F0DC1090A0D9808E1 +0DB108FA0DAD08F60DB909020DB508FE0DBD09060E0C095F0E2709770E2109740E150968000000000000000000000000 +111B10F9111E10FC112711051130110E0F700F4E0F730F510F7C0F5A0F850F6311601155116311581167115C00000000 +0FAE0FA30FB10FA60FB50FAA00000000119F117D11A2118011AB118911B411920FE50FC30FE80FC60FF10FCF0FFA0FD8 +11F911EA11FC11ED120011F1120411F5102C101D102F1020103310241037102812401235124312381247123C00000000 +1058104D105B1050105F10540000000012871278128A127B128E127F12921283107F00001082000010860000108A0000 +12D112AF12D412B212DD12BB12E612C410BE109C10C1109F10CA10A810D310B110EC10E51152114F1176116F11D211CF +1232122F1260125D12A812A1000000001139111711221100112B1109113411120F8E0F6C0F770F550F800F5E0F890F67 +11BD119B11A6118411AF118D11B8119610030FE10FEC0FCA0FF50FD30FFE0FDC12EF12CD12D812B612E112BF12EA12C8 +10DC10BA10C510A310CE10AC10D710B510F310F6114410E8000010EF1140113D0F480F4B0F450F42002A0F92002A11CD +0020005111C811720000117911C411C10FA00F9D0FC00FBD002D10070035003111D511D811E211DE0000000011E61208 +101410171011100E003C000000440040126312661270126C1252124F127412961076107910731070001810670998001C +0000000012FA12A4000012AB12F612F3104A104710991096000310E00000003900010001000100010001000100010001 +000100010000000100000000000000001B1600000000000000000000004E000000000000000000000000000000000000 +000000000000000002FC02FA000002FF00000000000000000000000000010000000000001B1C000000001B1F1B2B1B28 +00000000000000000000008F0000000C0000000000000000000000000563000000920560000000000000000000000000 +0000000000000000000000001B2300000000000000000000000000000001000000000000000000000000000000000000 +000000000000000000000000000000000AE3030500000000037403650392038303B003A11B5A02F400A105440B3E00A5 +03140305030F0343037403650392038303B003A11B5A02F400A10544000000A50A8006920B44078A0B100EA10A2B0B7C +0B3E05D308430CD600000BA6000000000000000000000000000000000000000000000842000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000009A509A10E5005E30A2100000E7E0A25 +0E53000006AC060206AC06AC0E740B1006CF06CF0A2B0734078100000000078906AF0000076D083E076D076D00000000 +089208660000089A0000060A0000077F0000060A05B0071A05E305D50A800000067E06290723000013FF078A1415140D +0AE3141A068000001149124B10630F9700001B580000000005E600000A800A31073E0AE3000000000000000000000000 +03E203DA03CA03C103D204550498045903D604CF03DE04E704EB049C03BE051106D106CF06DE06D4091B06B20922091E +068206E10953095005E30734072305E60B330AE30B400B360DD2086D0DD90DD50B440B430E000DFD09A30A2B05D30A31 +00000000000000000000000000000000030D000000000000000000000000000000000000000000000000000000000000 +000000001B3A1B3300000000000000000000000000000000000000000000000000000000000000000000000000001B3F +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000001B4200001B451B480000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001B4D000000001B5200000000000000001B550000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000001B5C00001B5F00000000000000001B651B621B6E0000 +00001B71000000000000000000000000000000000000000000000000000000001B7500000000000000001B781B7B0000 +1B7E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000055600001B84000000000000000000000000000000001B810000055B054A1B8A1B87000000001B901B8D00000000 +1B961B930000000000000000000000001B9C1B99000000001BA81BA5000000001BAE1BAB000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000001BBA1BB71BC01BBD0000000000000000000000000000000000000000000000000000000000000000 +1BA21B9F1BB41BB10000000000000000000000001BC61BC31BCC1BC90000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000001BE4000000001BE60000000000000000 +0000000000000000000000000000000000000000000000000000000000000000034303140365030F0383037403A10392 +031C03B00342032F036403550382037303A0039103F703AF00D900A300E600E200EE00EA00F600F200A700FA00B100AC +00BB00B600C500C000CF00CA00DD00D403460319036803590386037703A40395031F03B3034503320367035803850376 +03A3039403FA03B2016A01660172016E017A01760182017E018A01860192018E019A019601A2019E01AA01A601B201AE +01BA01B601C201BE01CA01C605D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E +0890086106B2056B06820773060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A +0A1405D80BA60843086D0A270B440DE40611069500000305000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000001B6900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000054F05420000055200000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001BD9000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000006B2073E0000000000000000000000000000000000000000 +0000000000000000000000001BDE00000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000232E00000000000000000000000000000000000000000000000000000000000000000000 +00000000276400000000000000000000000000000000000000000000000000001FAA1F981FB81FB01FC21FBC1FCA1FC6 +1FFD1FD0201120092021201920392029203D203B206B205720772073207F2079208F208D209D209B20A920A1210120F7 +212B21212131212F214A213921662160217C21762180217E218E218C21AA21A421B221AE21C121BA21DB21C521E121DD +21E721E321F321EB223D220122492247228B228922972295229F229B032522A3032922C3231222D523202318232C2326 +23322330233623342394233823BE23B823C223C023C823C423D423CA23E623E224082406240E240C2414241224282426 +24382436243C243A24582446245C245A248E246E24A0249024AC24A824CE24BC24F424F0250424FE250C25082510250E +251E251C2530252C253625342540253C25442542254A254825A4259A25C025BE25DA25C425E225DE260425E6260A2606 +260E260C262626242634262A26442636264A2648266C265C267826762692267C269C269426B426AE26C826BC26CE26CC +26D226D026DA26D826EC26DE26F026EE26FE26FC270C27022710270E27162714271A27182724271C27322730273A2738 +273E273C27442742274C274627542750275A2756275E275C276627620000000000000000000000000000000000000000 +000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000001BF82081207F00002083000000000000000000000000000000000000000000000000 +000000000000000000001C2D00001C3000001C3300001C3600001C3900001C3C00001C3F00001C4200001C4500001C48 +00001C4B00001C4E1C5100001C5400001C5700000000000000000000000000001C5D1C5A1C60000000001C631C691C66 +1C6C000000001C6F1C781C75000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001C2A0000000000000000008700000000008A1C7B1C8200000000000000000000000000000000 +000000000000000000001CD500001CF200001CA500001D4100001D4A00001D5E00001D6E00001D7900001D7E00001D8B +00001D9000001D9A1DA100001DA600001CBF00000000000000000000000000001DD51DCC1DEA000000001DF11E101E06 +1E25000000001E2D1D591E50000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001CB01EF300001F011EFC00001F06000000001D501F0F00000000000000000000000000000000 +0000000000000000000000000000000019EF00001ABB19F41ABD19F619FB1ABF1A021A001AC31AC11AC71AC51ACB1AC9 +1A071A511A111A0C1A131A5B1A1A1A181A2C1A221A391A2E1A431A3E19F21A481A851A831A891A871A8D1A8B1A371A8F +1A951A931A991A971A9D1A201AA11A9F1AA51AA31AA91A2A1A4D1A7F1ACD1A4F1AD11ACF1AD51AD31AD91AD71ADB1A53 +1A551ADD1A591A571A5F1A5D1A631A611A671A651A6B1A691A6F1A6D1A731A711A771A751AE11ADF1A7B1A791AAB1A7D +1AAF1AAD1AB31AB11AB71AB500001AB9000000001FC61F9820F91F9E1FAC1FA024161FA21FA61FBC213E1F9A1FD02103 +01D701CE01E901E001FB01F2020D0204023302250245023C0257024E01DB01D201ED01E401FF01F60211020802370229 +02490240025B02520216022E0000021E0270026002A0026802880274028402640290026C02C402B002B802C002A402EC +02BC02AC02D002B402C8029802D402E40278028C02A8029C027C02CC029402E8028002D802E002DC21C320D324B02295 +0000000000000000000000000000000004060831041C04110432042704400439044E04470475046E047F047C04850482 +19F619EF1A0219FB1A0C1A071A1A1A131A2E1A221A3E1A391A481A4319F819F11A0419FD1A0E1A091A1C1A151A301A24 +1A401A3B1A4A1A451A271A3300001A1F1FC61F9820F91F9E20131FC820111F9C207F1FBE2394032922D523382101267C +22ED032522F222CD23CE20B9247C26102494205D214A241A1FFB2654234820911FDD26E0213C20251FAC1FA021AC1FA2 +207B20B32164216A1FDB24422089261A04882135048E048B04B1049104B704B404BD04BA04C304C004C904C604E404CC +034E033B04D604A3050304F2052905180327053A034D033A0A8506B407390A821CA01C871CB91CAE1CD31CC91D221CF0 +1D481D3F1D6C1D5C1D7C1CCD1D8E1D891D9F1CAA1C8D1DA41DBE1D551D3D1DC01DCA1DBC1E041DE81E4E1E231E8B1CE0 +1E9E1CD11EB31EAF1EC81EC01CE41ECA1EE31C9C1EF11D0C1EFF1EFA1FD81F041C8F1C891C9A1C941CA81CA21CBB1CB3 +1CCB1CC21CE21CCF1CEB1CE61CDD1CD81CFA1CF51CFF1D061D0E1D0B1D1C1D151D2C1D101D3A1D331D531D441D611D57 +1D711D661D851D811DA91D931D301DB21DC61DBB1DD81DE41DCF1DDF1DFB1DF41DED1E001E1A1E131E1F1E091E301E44 +1E4A1E341E3E1E391E5B1E281E671E531E6A1E611E741E6E1E7D1E791E851E811E921E8D1EA01E951D171EA41EBA1EB5 +1ECE1EC21ED81ED31EE51EDD1D1E1EE8033F031103610352037F0370039D038E03BB03AC033E032B03600351037E036F +039C038D03BA03AB040D0402042304180B12042E056A0A560C5B0A120A5C0CE90A630A5F21BC06DB213B22B222EF22AB +0C290CDD0BED1211071C0B7E0689075B0B8F0A290C2C0CE0121D121406010BF90B81068D068C0764122008960A590C00 +0AEF0B9712230C380A330C030C060B9A0A370A360C0A0B9D0A3B0A3A0C1E0BA106910C2207680B850CF906900D030CFD +0C3B0CEC0C1212260C2F0CE30BF01217076F0B890C320CE60BF3121A07720B8C077E0BB705D7099C0A300A2D05E805FF +06940A5306AE0B16071F0B3D0BA507220BC20BBF0BC90BC50BFC0BF608230C0E08260CD80D28082E0939086C05D1092D +034A0337036C035D038A037B03A80399032303B703490336036B035C0389037A03A7039803FE03B604140409042A041F +043C0435044A0443047104510AF704780000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000013B913B20000000000000000000000000000000000000000 +000000000000000000000000000000000000276E00000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000067E05E30000083E00000000 +0E7A0E720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000002772276C27740EC100000000000000000000000000000000 +0EFB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +22C52608261C26361FAE2378276220AB2144276220DD267C2239214224FC243425B62598265A25D0234C230623EE23A2 +2670257C1FC0270623102095259623B42198272E258E2388225325D825BC252A22CF21D123DA23581FE326602065202F +230C2287244423B2259225082630259E271E26C42462272C24DE2482268A256E25F2273221DF211F251A24BA246623CC +26C026182186211D2362230824D6237C26A024EA252020632033203524E0249826A4257A2255260025F8230621701FB4 +23E4220B207524241FEB246A1FA421FD22932342209F24D4244A211525EA257E26482328225D233E226D255A1FCE2422 +2031200F24CA22F625F025462069267A214A20C322A121D9246C238A270A26982740273422C120572642231E222D21BF +2283223B23A8238224922400251624E42582263A268C264E2059204323A020CD25EA25C6220721CF2324226923DE24B8 +20FB1FD621A2217023EC220D250223FA267E251226C626BE1FE526E42674248C221926B21FF71FC42182217223062299 +243223AE2658258822B9275E2055269E22E522DF23702354242023F224D22460201326EA26A6224321941FEF263C2364 +221D21F523E422E9204726AA218A20BB22D722AE234622FC242A23F025C824F8267825CE207D26B820BD2372240223B0 +26AC259027362722236022E324A8252E24C024AE239C23D81FD225FE2049256221C7204124C62257234E2168264022BF +26A225C021D525DE20E91FFF0000000000002113000022B720370000243E23DC247E2470248A248024C226CA00002504 +00002594000025F626500000000026660000000026F626F4272A26F826B026621FF91FE7206120032087206720EF20E1 +211120F3218821172213218C222B2227228D223722BB22A5235A22F82380236823BA23AA246423F4247622F224782474 +247C247A2488248624A4249A24E424B224EC24E8250A24F6254C25322580254C25E025D425FC25FA2620261E2650264C +26DC26BA220F26E8253E287300000000202D1FA81FE1200D20172001206D205F20D720E120ED20DF211B211321462140 +215C215421D721D321FF21EF22232217222B221B2237222522712245227B227722B7228F22D122CF232022DB23542328 +2376237A238E2380245623AA23D623BC23FC23DC241C240A2430242E2440243E245224482468245024B224A624DA24BE +24F224E42564250A25B2257825DC25D625EC25E025EE25F625F825FA25FC25F4262026022656263E2682267226BA26A8 +26D426CA26E226DC271226E828492762285B28471F501F3C288F1F5228D128A127602758000000000000000000000000 +0AE20ADE0AE10AE60D2B0AE500000D2B000000000000000000000000000000000000000013F9000013F313F013F613FC +000000000000000014300000147D000013FF1451141F141A140B14391462144602F4147814751472146E146A14041401 +140F1407141C1417142714210000142A1433142D143B14360000144300001448144E144B1453000000001456145F145C +146714641424147A143E1412140A145918C318C318C918C918C918C918CB18CB18CB18CB18CF18CF18CF18CF18C718C7 +18C718C718CD18CD18CD18CD18C518C518C518C518E718E718E718E718E918E918E918E918D318D318D318D318D118D1 +18D118D118D518D518D518D518D718D718D718D718DD18DD18DB18DB18DF18DF18D918D918E318E318E118E118EB18EB +18EB18EB18EF18EF18EF18EF18F318F318F318F318F118F118F118F118F518F518F718F718F718F71918191818FB18FB +18FB18FB18F918F918F918F9163C163C1915191500000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000018ED000018ED18ED18AE18ED +18AA18AE18B218AA190618B2190D190D19001900190B190B18B618B618B618B614C014C01878187818B818B8189C189C +18AC18AC18A818A818B018B018B418B418A018B418A018A0190F190F190F190F1880187C18A01890149F18A414A914A2 +14BF14B614C914C214E314D8151514F8151D1518152F15261537153214DC14CD157C14E014E7157F15B015A515C515B7 +163E160D1650164D1665165B16731670168F168A16B2162016EA16B516F016ED16FE16F717061701171C170D1724171F +172A17271730172D173E173317551741177317641624163714FC178B15041500150815D117D8150C17FA17EB18141803 +181C1817182A181F1847182D1855184E186F185E158F1872184215990064005D0072006B00800079188C188818941890 +18A418A014B3148614B914B614C214BF14F514F2150F14F81518151515231520152915261532152F170116FE171F171C +17301724173E173316371741178B162415D11790180017FD180E18031817181418581842185E185B186F1869187C1872 +188418801898189014A2149F14B614A914C914BC14E314D8151214F81537152614DC14CD157C14E015A514E715B715B0 +160D15C5163E16181650164D1665165B168A16701620168F16B516B216ED16EA16F716F0170D1706172A17271730172D +1755173317731764148B1637150014FC15D1150417EB17D8180317FA181C18111830181F184E1847185E185518901698 +14B6189814F814BC1526151215C5152C15F715D41730160216371733181118031698185E16D716D0168216DE16AA1685 +16C416AD15D716C7160515DA153B160814D114A614EB14D5164514AD1668164815DF166B15F115E615F415F7161B15C2 +1682166216AA168516C416AD15D716C7160515DA153B160814D114A614EB14D5164514AD1668164815DF166B15F115E6 +15F415F7161B15C215DF166215F115E615D415F71673160215B015A515DF15B715F115E6168A1673148E148E00000000 +000000000000000000000000000000000000000000000000000000000000000014DB14CC14DF14DB14FB14E6150314FF +154E154E156C157015A815B315CC15AC15C815CC15D015D01610161015E9164115E215E915FA15FA15FE15FE165E1653 +1676165E167A16761692167E169E169E16B816A216BC16C016F316F317141710176F17671758176B17761758177D1776 +17A9177D17B617AD179E179617C117BD000000001822179A17EE182617DF17F217E317DF1806180A1861186114D414AC +14EE14D0150B14EA155615071552153A161415BA165715ED17811760184A185117CC186517F6171817671710173A16A6 +17C517DB1736175C17DB175C1565153E16FA17A2173614A51641169217E715BE00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001709163A14841489161E17B11696159416231635154216270000159C00000000 +00000000000000000000000000000000000000000000000000000000000000001BE002F605401BE2008D05461C260093 +02FF1C280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1B1A02FC09961B1800A109960E3E00A51BFA0E421BF41BFE1BE81BF61BE41BEA1BEC1BE61BF01BEE00001BF2098E0000 +000C0992000C000C0996000C099609961BE002F6000002FA05400546008D009300A11B1A0E3E00A51BFA0E4200971BFE +02F2009D02F802F40559054800000544009909900566009B000000000000000016CA00570000005A0000006116CD0068 +16D4006F16DB007616E2007D16E500841491148014941491183A14941497183A187514971875187514821875149D1482 +149D149D14C5149D14C714C514C714C7151B14C7151B151B14A0151B14A014A014A314A014A314A314AA14A314AA14AA +158B14AA158D158B1487158D14B4148715A314B415A315A315DD15A315DD15DD160B15DD160B160B164B160B164B164B +166E164B166E166E1688166E16881688168D1688168D168D16B0168D16B016B016E816B016E816E8170416E817041704 +1722170417221722159717221597159714B7159714B714B714BA14B714BA14BA148C14BA148C148C1833148C14C01833 +14A714C014A714A7174914A7174D17491751174D174617510000174600000000008D000000970095009B0099009F009D +00A500A102F402F202F802F6030302FA03140305030F0343037403650392038303B003A1054605400544054800930559 +0568056605E305D5062905E60687067E06CF06AC071A06070723073407A70781083E06AF0861076D056B0890077306B2 +095D0682098E060A09920990099609940692099809A3093A0A800A3106020ADC0AE30B100B7C073E05D30A2B078A0B3E +05D80CD608430A140A270BA60DE4086D06950B440E3E06110E420E401BD50E441BE21BD71BEE1BEC1F0B1BE01C851F04 +1CAC1C9E1CC71CB71EBE1EB11D9D1EC61C871CC51CAE1CA01CC91CB91CF01CD31D3F1D221D5C1D481CCD1D6C1D891D7C +1CAA1D8E1DA41D9F1D551C8D1DC01DBE1DBC1D3D1DE81DCA1E231E041CE01E4E1CD11E8B1EAF1E9E1EC01EB31ECA1EC8 +1C9C1CE41D0C1EE31CB51EF1008B008819EF1A7F1ABB19F41ABD19F619FB1ABF1A021A001AC31AC11AC71AC51ACB1AC9 +1A071A511A111A0C1A131A5B1A1A1A181A2C1A221A391A2E1A431A3E00001A48000000001A8319F21A871A851A8B1A89 +000000001A8F1A8D1A931A371A971A95000000001A201A991A9F1A9D1AA31AA1000000001A2A1AA500001AA900000000 +0E480E4600090E4E0E4A0E4C00001B2F1B311BCF1B381B361BD11B3D00001BD300000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000277A0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000277D00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0F3300000E630F350E950F0E0F1C00000F2027760E9B0F1E1B140E9D0EA70E9F0EB30F280EAB0EAF0E740F100EB90F12 +0F2A0EEF0EC30F2C2770281128130EC728150EFD0ED70E6D05D80ED928170EDF0EE50EE30F260EE727780F220EF10F24 +00001BDC0F180EFF0F0C0F1A0E870E8528190E890000281B000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000027800000278300000000 +000000000000000000000000000000000000000027860000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000278C2789 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000278F000000002792000000000000000000000000000000000000000000000000000000000000000000000000 +000000002795000027980000000000000000000000000000000000000000279B279E0000000000000000000000000000 +00000000000000000000000000000000000000000000000027A4000027A10000000027A7000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000027AD0000000027AA000027B0 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000027B627B300000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000027B900000000000000000000000027BC000027C027CD27C427D127D027BF +000027C30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000027D727DB000027DA000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000005D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E +0890086106B2056B06820773060A095D03140305030F0343037403650392038303B003A1000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000027E427E127EB27E727F327EF000027F70000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000027FB000027FE280628022809 +0000280D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000005D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7 076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D3 -0CD6078A0A1405D80BA60843086D0A270B440DE4061106950000056805E605E30000000000000687060700000000071A -0781000006AF07A70000083E0890086106B2056B06820773060A095D093A06920A3109A30ADC00000B100000073E0AE3 -0A2B0B7C0B3E05D30CD600000A1405D80BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687 +0CD6078A0A1405D80BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A +0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A8000000602073E0AE3 +0A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687 060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A80 -0B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE40611069505D5056805E60000 -067E062900000687060700000734071A0781072306AF07A70000083E0890086106B2056B068207730000095D093A0692 -0A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE406110695 -05D5056805E60000067E062900000687060706CF0734071A00000723000007A7000000000890086106B2056B06820773 -0000095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A27 +0B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE4061106950000056805E605E3 +0000000000000687060700000000071A0781000006AF07A70000083E0890086106B2056B06820773060A095D093A0692 +0A3109A30ADC00000B100000073E0AE30A2B0B7C0B3E05D30CD600000A1405D80BA60843086D0A270B440DE406110695 +05D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773 +060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A27 +0B440DE40611069505D5056805E60000067E062900000687060700000734071A0781072306AF07A70000083E08900861 +06B2056B068207730000095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8 +0BA60843086D0A270B440DE40611069505D5056805E60000067E062900000687060706CF0734071A00000723000007A7 +000000000890086106B2056B068207730000095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D3 +0CD6078A0A1405D80BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A +0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A06920A3109A30ADC0A800B100602073E0AE3 +0A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE4061106950781072306AF07A7076D083E08900861 +06B2056B06820773060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8 +060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A27 0B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7076D083E08900861 06B2056B06820773060A095D093A06920A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8 -0BA60843086D0A270B440DE4061106950781072306AF07A7076D083E0890086106B2056B06820773060A095D093A0692 -0A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D8060A095D093A06920A3109A30ADC0A80 -0B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE40611069505D5056805E605E3 -067E062906AC0687060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773060A095D093A0692 -0A3109A30ADC0A800B100602073E0AE30A2B0B7C0B3E05D30CD6078A0A1405D80BA60843086D0A270B440DE406110695 -05D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A70B440DE4061106950E8D0E7600000000 +0BA60843086D0A270B440DE40611069505D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7 +0B440DE4061106950E8D0E76000000000F950F400F990F970FB90F9B100A0FBB103B100C103F103D1043104110631045 +100A1065106C106A108E106E109210901B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D122B1229 +124B122D1255124D125912571299125B129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F970FB90F9B +100A0FBB103B100C103F103D1043104110631045100A1065106C106A108E106E109210901B50077F114710E3114B1149 +116B114D11CB116D120B11CD120F120D122B1229124B122D1255124D125912571299125B129D129B1B4B129F11CB114D +1299120B124B124D0F950F400F990F970FB90F9B100A0FBB103B100C103F103D1043104110631045100A1065106C106A +108E106E109210901B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D122B1229124B122D1255124D +125912571299125B129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F970FB90F9B100A0FBB103B100C +103F103D1043104110631045100A1065106C106A108E106E109210901B50077F114710E3114B1149116B114D11CB116D +120B11CD120F120D122B1229124B122D1255124D125912571299125B129D129B1B4B129F11CB114D1299120B124B124D 0F950F400F990F970FB90F9B100A0FBB103B100C103F103D1043104110631045100A1065106C106A108E106E10921090 1B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D122B1229124B122D1255124D125912571299125B -129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F970FB90F9B100A0FBB103B100C103F103D10431041 -10631045100A1065106C106A108E106E109210901B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D -122B1229124B122D1255124D125912571299125B129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F97 -0FB90F9B100A0FBB103B100C103F103D1043104110631045100A1065106C106A108E106E109210901B50077F114710E3 -114B1149116B114D11CB116D120B11CD120F120D122B1229124B122D1255124D125912571299125B129D129B1B4B129F -11CB114D1299120B124B124D0F950F400F990F970FB90F9B100A0FBB103B100C103F103D1043104110631045100A1065 -106C106A108E106E109210901B50077F114710E3114B1149116B114D11CB116D120B11CD120F120D122B1229124B122D -1255124D125912571299125B129D129B1B4B129F11CB114D1299120B124B124D0F950F400F990F970FB90F9B100A0FBB -103B100C103F103D1043104110631045100A1065106C106A108E106E109210901B50077F114710E3114B1149116B114D -11CB116D120B11CD120F120D122B1229124B122D1255124D125912571299125B129D129B1B4B129F11CB114D1299120B -124B124D12FF12FD0000000003140305030F0343037403650392038303B003A103140305030F03430374036503920383 -03B003A103140305030F0343037403650392038303B003A103140305030F0343037403650392038303B003A103140305 -030F0343037403650392038303B003A10000000000000000000000000000000000000000000000000000000000000000 -134E13461352135013591357136C1364137F137113861384138F138A139313911397139513A713A513AB13A913B413B0 -13C013BB13E0276A13C913C413D713E8134613DB1350134E13571352136413591371136C1384137F138F138A13971393 -13A713A513AB13A913B213B013D313B413C213C413D513CB13D927680000000000000000000000000000000000000000 -00000000000000000000000000000000149D1482158B14A01833000014A314B414A7166E1597172214BA14B7168D15A3 -160B16E81487170414C715DD14AA151B164B158D16B0168818F518BF18C118E5149D0000000014A00000148C14A30000 -14A700001597172214BA14B7168D15A3160B16E80000170414C715DD14AA151B164B000016B000000000000000000000 -00000000000014A00000000014A3000014A700001597000014BA0000168D15A3160B000000001704000015DD14AA0000 -164B000016B0000018F5000018C10000149D0000000014A00000148C14A3000014A7166E0000172214BA14B7168D15A3 -160B16E80000170414C715DD14AA151B164B000016B01688000018BF000018E5149D1482158B14A01833148C14A314B4 -14A7166E1597000014BA14B7168D15A3160B16E81487170414C715DD14AA151B164B158D16B016880000000000000000 -149D0000158B14A01833000014A314B414A7166E1597000014BA14B7168D15A3160B16E81487170414C715DD14AA151B -164B158D16B0168800000000000000000307030A03F1031604AB046804FA04DE0520050B000005310000000000000000 -010200FE010A01060112010E011A01160122011E012A01260132012E013A01360142013E014A01460152014E015A0156 -0162015E05E31BFC05E5076D0000093605D5056805E605E3067E062906AC0687060706CF0734071A0781072306AF07A7 -076D083E0890086106B2056B06820773060A095D076F06B1086908630933082A00000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000761075E0000076C00000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000060600000000000000000000000000000000000000000000000000000000 -1D4D1C7200001D5C000000000000000000000000000000000000000000000000216222491DA620A521331FC6213E25E4 -22B01FCC229923A421F7204F229D201B24D820452612240E20C12125224F237E1F98226526521F9E1FAC21AC225F20B3 -224B262624A22484236E20B7032922CD20512418266E20E700000000000000001C001C181C0C1C041C101C1C1C081C20 -00001C1400000000000000000000000020AF21F900000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000003140305030F03430374036503920383 -03B003A10000000000000000000000001FB21FB627DD1FBA1FE71FDF1FED1FE91FF31FF11FF51FF927E51F1220052003 -201520071F1427DF201B200B202327E31FD42027202D202B203B28A11F18203F204D204B20532051205F1F1A20672061 -206F206D20752071208720852093208B2099209720992099239627EB20A720A320AD27ED20B520B120BF20C920C720C5 -20CF20CB20D520D120DB20D920DF20DB20E520E320FD20EB20FF20EF20F520F121232041210921072105210B210D210F -27EF2119212921272133212D2148213727F327F12150214E214C21521F1C2156215A1F1E215E215E216C27F52170216E -27F72174217A2178217E21E921841F202192218C27FB219027FD2196219A219C21A6219E1F2221A821B421B021B821B6 -27FF1F2421C91F2621CD21CB28B521D1280321DD2538280321E521E528111F2821ED28651F2A21F1220321FB22092205 -1F2E221122131F2C221528052221221F22212223222B2229222F22332235223122392237224121BD2251224D22632259 -2261280B2267225B2275226B2279280D226F2273227D1F30228522811F32227F2291228D22A7280F22B522C722BB1F38 -1F341F36201F201D22BD22C91F6A252222D122CF22DD22D3281922D922E71F3A22F422E1281D22F822EB22FA1F3C22FE -23022300230A2304230E281F23141F3E23162821231C1F40232823222823232A282527F92827233A23442340234A233C -235A235223562354235E235C23502829236C236A23761F42282B237423842366282F282D23902386238C238E23921F44 -2398239A27E1239E283123A6283523AC23BC23B6283723C623D223D0283B283923E823E023EA1F461F481F4823F823F6 -23FE23FC1F4A2404283D2410283F241E280124242841242C284528431F4E1F4C28492448284B2847244C284D244E244E -1F5224521F54245428511F562462245E1F582468247A2853285728552496248A249A1F5A249E249C285B285924AA285B -285D1F5C24B624B4285F1F5E1F6024C424C824CC286324D01F6224DC24E624E21F6424EE28692867286B1F66286D24FA -25062500286F250A25142871251828731F6828132526252425281F6C2875215828152877253828172646253A25501F6E -2552254E2554205B255825562879255C255E255A256A2568256C2560258025762570256625742572287F287B1F70287D -258625842887258A2881258C1F741F7228852883259C1F7625A0259E25A825A225AC25A625B225AA25B025AE1F7825B4 -25BA25B825C21F7A288925C425CC25CA25D21F7C288B1F161F7E288D25E81F80260225F4288F260A2616261426282622 -27E72893262C262E27E92632263E2638289728952664265E289926682680266A26882686268E2684289B26901F822696 -289D269A26B61F8426C221A028A3289F1F881F8628A526D628A71F8A26E226E228A926E61F8C26F2270026FA27082704 -28AB1F8E272027121F90272627281F921F9428AD28B128AF273A28B327441F96274A27482752274E28B7275600000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +129D129B1B4B129F11CB114D1299120B124B124D12FF12FD0000000003140305030F0343037403650392038303B003A1 +03140305030F0343037403650392038303B003A103140305030F0343037403650392038303B003A103140305030F0343 +037403650392038303B003A103140305030F0343037403650392038303B003A100000000000000000000000000000000 +00000000000000000000000000000000134E13461352135013591357136C1364137F137113861384138F138A13931391 +1397139513A713A513AB13A913B413B013C013BB13E0276A13C913C413D713E8134613DB1350134E1357135213641359 +1371136C1384137F138F138A1397139313A713A513AB13A913B213B013D313B413C213C413D513CB13D9276800000000 +0000000000000000000000000000000000000000000000000000000000000000149D1482158B14A01833000014A314B4 +14A7166E1597172214BA14B7168D15A3160B16E81487170414C715DD14AA151B164B158D16B0168818F518BF18C118E5 +149D0000000014A00000148C14A3000014A700001597172214BA14B7168D15A3160B16E80000170414C715DD14AA151B +164B000016B00000000000000000000000000000000014A00000000014A3000014A700001597000014BA0000168D15A3 +160B000000001704000015DD14AA0000164B000016B0000018F5000018C10000149D0000000014A00000148C14A30000 +14A7166E0000172214BA14B7168D15A3160B16E80000170414C715DD14AA151B164B000016B01688000018BF000018E5 +149D1482158B14A01833148C14A314B414A7166E1597000014BA14B7168D15A3160B16E81487170414C715DD14AA151B +164B158D16B016880000000000000000149D0000158B14A01833000014A314B414A7166E1597000014BA14B7168D15A3 +160B16E81487170414C715DD14AA151B164B158D16B0168800000000000000000307030A03F1031604AB046804FA04DE +0520050B000005310000000000000000010200FE010A01060112010E011A01160122011E012A01260132012E013A0136 +0142013E014A01460152014E015A01560162015E05E31BFC05E5076D0000093605D5056805E605E3067E062906AC0687 +060706CF0734071A0781072306AF07A7076D083E0890086106B2056B06820773060A095D076F06B1086908630933082A +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000761075E0000076C000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000606000000000000000000000000 +000000000000000000000000000000001D4D1C7200001D5C000000000000000000000000000000000000000000000000 +216222491DA620A521331FC6213E25E422B01FCC229923A421F7204F229D201B24D820452612240E20C12125224F237E +1F98226526521F9E1FAC21AC225F20B3224B262624A22484236E20B7032922CD20512418266E20E70000000000000000 +1C001C181C0C1C041C101C1C1C081C2000001C1400000000000000000000000020AF21F9000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +03140305030F0343037403650392038303B003A10000000000000000000000001FB21FB6281D1FBA1FE71FDF1FED1FE9 +1FF31FF11FF51FF928251F1220052003201520071F14281F201B200B202328231FD42027202D202B203B28E11F18203F +204D204B20532051205F1F1A20672061206F206D20752071208720852093208B20992097209920992396282B20A720A3 +20AD282D20B520B120BF20C920C720C520CF20CB20D520D120DB20D920DF20DB20E520E320FD20EB20FF20EF20F520F1 +21232041210921072105210B210D210F282F2119212921272133212D21482137283328312150214E214C21521F1C2156 +215A1F1E215E215E216C28352170216E28372174217A2178217E21E921841F202192218C283B2190283D2196219A219C +21A6219E1F2221A821B421B021B821B6283F1F2421C91F2621CD21CB28F521D1284321DD2538284321E521E528511F28 +21ED28A51F2A21F1220321FB220922051F2E221122131F2C221528452221221F22212223222B2229222F223322352231 +22392237224121BD2251224D226322592261284B2267225B2275226B2279284D226F2273227D1F30228522811F32227F +2291228D22A7284F22B522C722BB1F381F341F36201F201D22BD22C91F6A252222D122CF22DD22D3285922D922E71F3A +22F422E1285D22F822EB22FA1F3C22FE23022300230A2304230E285F23141F3E23162861231C1F40232823222863232A +286528392867233A23442340234A233C235A235223562354235E235C23502869236C236A23761F42286B237423842366 +286F286D23902386238C238E23921F442398239A2821239E287123A6287523AC23BC23B6287723C623D223D0287B2879 +23E823E023EA1F461F481F4823F823F623FE23FC1F4A2404287D2410287F241E284124242881242C288528831F4E1F4C +28892448288B2887244C288D244E244E1F5224521F54245428911F562462245E1F582468247A2893289728952496248A +249A1F5A249E249C289B289924AA289B289D1F5C24B624B4289F1F5E1F6024C424C824CC28A324D01F6224DC24E624E2 +1F6424EE28A928A728AB1F6628AD24FA2506250028AF250A251428B1251828B31F6828532526252425281F6C28B52158 +285528B7253828572646253A25501F6E2552254E2554205B2558255628B9255C255E255A256A2568256C256025802576 +257025662574257228BF28BB1F7028BD2586258428C7258A28C1258C1F741F7228C528C3259C1F7625A0259E25A825A2 +25AC25A625B225AA25B025AE1F7825B425BA25B825C21F7A28C925C425CC25CA25D21F7C28CB1F161F7E28CD25E81F80 +260225F428CF260A2616261426282622282728D3262C262E28292632263E263828D728D52664265E28D926682680266A +26882686268E268428DB26901F82269628DD269A26B61F8426C221A028E328DF1F881F8628E526D628E71F8A26E226E2 +28E926E61F8C26F2270026FA2708270428EB1F8E272027121F90272627281F921F9428ED28F128EF273A28F327441F96 +274A27482752274E28F72756000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//12544 bytes +//13440 bytes enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" -000000000000004000000440", +0000000000000040000004C0", x" -000001000000080000001000", +0000010000000900000010C0", x" -020201000302020202020204020502020202020206020202000000000000000000000000000000000000000000000000 +020201000302020205020204020602020202020207020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -570,14 +591,23 @@ x" 005A0059005C005B005E005D0000005F0061006000000062000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640063 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000006600650000000000670000000000000000000000000000 +000000000000000000000000000000000000000000000068000000690000006A0000000000000000006B000000000000 +0000000000000000006C0000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000006D000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +006E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000006F000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000006400630000000000650000000000000000000000000000 -000000000000000000000000000000000000000000000066000000000000000000000000000000000067000000000000 -000000000000000000680000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000069000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -585,9 +615,9 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000006B006A006C00000000006D00000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000071007000720000000000730000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -598,10 +628,9 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000006F006E0071007000730072007500740077007600790078007B007A007D007C -0000007E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +007500740077007600790078007B007A007D007C007F007E008100800083008200000084000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -613,179 +642,189 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000F000C00250012004F00450085000000A1009E00CB00A40121011E013301240188000001A0019D01B601A3000001DA -026D00000273027002F30287000000000322031F03380325036203580398000003B403B103DE03B7043704340446043A -049C000004B404B104CA04B7000004EE05840000058A0587060D059E061C0000033B0028033E002B0380006D038C0079 -038F007C0392007F0395008203A2008F0000000003CD00BA03D800C503DB00C803FB00E803E400D1040A00F7041000FD -0413010004190106041C010900000000043D01270440012A0443012D045C014900000130000000000462014F0471015D -0163000001700477016604840000047A000000000185000001940499018E04A8000004A20000000004D901C504E401D0 -04F801E400000000052F021B0545023105350221054B02370552023E0569025505580244057B02640572025B00000000 -058D02760594027D059B028405B4029D05B702A005E002C905F502DE061002F6030B0302031106280314062E00000631 -050401F000000000000000000000000000000000000000000000000002AC0000000005C3000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000560000013D0369 -01E7045002A304FB029205BA028E05A9029605A5028A05AD000005A1035B0048035400410653064A0000000004160103 -046B01570522020E05250211065F065C0000046500000000040700F4000000000496018203650052065006470656064D -036C0059036F005C03E700D403EA00D7045301400456014304FE01EA050101ED05380224053B022705BD02A605C002A9 -056602520578026100000000042501120000000000000000000000000351003E03F400E104F101DD04D101BD04E701D3 -04EA01D6061602FC0000000000000000000000000000000000000000000000000010000D066B00000000013700000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000066200000000 -000000000000000000000000000000010000000000000000063D00000645067006DF06C30000072C0000075907980778 -000008D10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000007810735084707E908C108670000092F00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000092808CA091F08FD0000095F0000000009B40000000009B700000000 -0000000000000000000000000000000009CC09C609C300000000000009BA0000000000000000000009D809E4000009ED -0000000000000000000000000000000009DE000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000A200000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000A0E0A080A050000000000000A410000 -00000000000000000A1A0A2600000A2F0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000A470A440000000000000000000000000000000009CF000000000A110000000000000000 -0000000000000000000000000000000009FF09BD0A0209C0000000000A0B09C9000000000A4D0A4A0A1409D20A1709D5 -000000000A1D09DB0A2309E10A2909E7000000000A530A500A3E09FC0A2C09EA0A3209F00A3509F30A3809F600000000 -0A3B09F9000000000000000000000000000000000AC10ABE0AC40AC700000ACA00000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000AD300000ACD0000000000000000 -00000000000000000000000000000000000000000AD00000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000AE800000000000000000000000000000AF100000000000000000AF400000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000AD90AD60ADF0ADC0AE50AE20AEE0AEB00000000000000000000000000000000 -000000000B00000000000B03000000000000000000000000000000000000000000000000000000000AFA0AF70AFD0000 -0000000000000000000000000000000000000000000000000000000000000000000000000B1200000000000000000B15 +0000000000000000000000000000000000000000000000000000000000000000000F000C00250012004F004500850000 +00A1009E00CB00A40121011E013301240188000001A0019D01B601A3000001DA026D00000273027002F3028700000000 +0322031F03380325036203580398000003B403B103DE03B7043704340446043A049C000004B404B104CA04B7000004EE +05840000058A0587060D059E061C0000033B0028033E002B0380006D038C0079038F007C0392007F0395008203A2008F +0000000003CD00BA03D800C503DB00C803FB00E803E400D1040A00F7041000FD0413010004190106041C010900000000 +043D01270440012A0443012D045C014900000130000000000462014F0471015D0163000001700477016604840000047A +000000000185000001940499018E04A8000004A20000000004D901C504E401D004F801E400000000052F021B05450231 +05350221054B02370552023E0569025505580244057B02640572025B00000000058D02760594027D059B028405B4029D +05B702A005E002C905F502DE061002F6030B0302031106280314062E00000631050401F0000000000000000000000000 +00000000000000000000000002AC0000000005C300000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000560000013D036901E7045002A304FB029205BA028E05A9 +029605A5028A05AD000005A1035B0048035400410653064A0000000004160103046B01570522020E05250211065F065C +0000046500000000040700F4000000000496018203650052065006470656064D036C0059036F005C03E700D403EA00D7 +045301400456014304FE01EA050101ED05380224053B022705BD02A605C002A905660252057802610000000004250112 +0000000000000000000000000351003E03F400E104F101DD04D101BD04E701D304EA01D6061602FC0000000000000000 +000000000000000000000000000000000010000D066B0000000001370000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000B0600000B0C0B090000000000000B0F00000000000000000000000000000000 -00000B210B1E000000000B24000000000000000000000000000000000000000000000000000000000B1B0B1800000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2700000000 -0000000000000000000000000000000000000000000000000000000000000000000000000B300B2A00000B2D00000000 +000000000000000000000000000000000000000000000000000006620000000000000000000000000000000000000001 +0000000000000000063D00000645067006DF06C30000072C0000075907980778000008D1000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000007810735084707E908C10867 +0000092F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000092808CA091F08FD0000095F0000000009B40000000009B70000000000000000000000000000000000000000 +09CC09C609C300000000000009BA0000000000000000000009D809E4000009ED00000000000000000000000000000000 +09DE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000A20000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000A0E0A080A050000000000000A41000000000000000000000A1A0A2600000A2F +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A470A44 +0000000000000000000000000000000009CF000000000A11000000000000000000000000000000000000000000000000 +09FF09BD0A0209C0000000000A0B09C9000000000A4D0A4A0A1409D20A1709D5000000000A1D09DB0A2309E10A2909E7 +000000000A530A500A3E09FC0A2C09EA0A3209F00A3509F30A3809F6000000000A3B09F9000000000000000000000000 +000000000AC10ABE0AC40AC700000ACA0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000AD300000ACD000000000000000000000000000000000000000000000000 +000000000AD0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0AE800000000000000000000000000000AF100000000000000000AF40000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000B330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000B3600000000000000000B40000000000B430B3C0B39000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000B4C0B4600000B4900000000 +0AD90AD60ADF0ADC0AE50AE20AEE0AEB00000000000000000000000000000000000000000B00000000000B0300000000 +0000000000000000000000000000000000000000000000000AFA0AF70AFD000000000000000000000000000000000000 +00000000000000000000000000000000000000000B1200000000000000000B1500000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000B4F0B550B5200000B59 -000000000B5F0000000000000000000000000000000000000B620000000000000000000000000B65000000000B680000 -000000000000000000000B6B00000000000000000000000000000000000000000B5C0000000000000000000000000000 -000000000B6E00000B71000000000B8900000B8C0000000000000000000000000B740000000000000000000000000000 -00000000000000000000000000000000000000000B7A0000000000000000000000000000000000000B7D000000000000 -0000000000000B80000000000B830000000000000000000000000B860000000000000000000000000000000000000000 -0B77000000000000000000000000000000000000000000000000000000000B8F00000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B92 -00000B9500000B9800000B9B00000B9E0000000000000BA1000000000000000000000000000000000000000000000000 +0B0600000B0C0B090000000000000B0F0000000000000000000000000000000000000B210B1E000000000B2400000000 +0000000000000000000000000000000000000000000000000B1B0B180000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000B270000000000000000000000000000000000000000 +00000000000000000000000000000000000000000B300B2A00000B2D0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000B33000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000B3600000000000000000B400000 +00000B430B3C0B3900000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000B4C0B4600000B490000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000BA400000BA70000000000000BAD0BAA0BB00000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000037D006A038300700386007303890076 -039B0088039F008C03A5009203AE009B03A8009503AB009803D000BD03D400C103FE00EB040100EE03F700E4040400F1 -040D00FA041F010C042801150422010F042B0118042E011B045F014C0449013604680154046E015A04740160047D0169 -0480016C048A017604870173048D01790490017C0493017F049F018B04A5019104AE019A04AB019704CD01B904D501C1 -04DC01C804E001CC05290215052C02180532021E053E022A0541022D0548023405550241055F024B054E023A055B0247 -0562024E056C02580575025E0581026A057E026705DD02C605E602CF05E302CC059002790597028005E902D205EC02D5 -05EF02D805F202DB05FB02E405F802E1060102E7060402EA060702ED061902FF062B030E063403170637031A056F0431 -062205FE0659000000000000000000000372005F035F004C032C001903280015033400210330001D0375006203450032 -0341002E034D003A034900360379006603ED00DA03E100CE03CA00B703BE00AB03BA00A703C600B303C200AF03F000DD -044D013A04590146051B020704F501E104BE01AA04BA01A604C601B204C201AE051E020A050B01F7050701F3051301FF -050F01FB0517020305DA02C305B1029A05CA02B305C602AF05D202BB05CE02B705D602BF060A02F006250308061F0305 -061302F9000000000000000000000000081807F6081B07F908240802082D080B069B0679069E067C06A7068506B0068E -0855084A0858084D085C08510000000006D106C606D406C906D806CD000000000890086E08930871089C087A08A50883 -070406E2070706E5071006EE071906F708E808D908EB08DC08EF08E008F308E407470738074A073B074E073F07520743 -090B0900090E090309120907000000000767075C076A075F076E076300000000094609370949093A094D093E09510942 -0784000007870000078B0000078F000009880966098B096909940972099D097B07BD079B07C0079E07C907A707D207B0 -07E907E2084708440867086008C108BE08FD08FA091F091C095F09580000000008360814081F07FD082808060831080F -06B9069706A2068006AB068906B4069208AE088C0897087508A0087E08A9088707220700070B06E9071406F2071D06FB -09A60984098F096D0998097609A1097F07DB07B907C407A207CD07AB07D607B407F007F3084107E5000007EC083D083A -067306760670066D000006BD000008BC0640000008B908630000086A08B508B206C306C006DF06DC0BB307260BB90BB6 -08C408C708D108CD0000000008D508F7072F0732072C07290BBC00000BC20BBF09220925092F092B0919091609330955 -077B077E07780775063A0772031D063D0000000009B1095B0000096209AD09AA0759075607980795064307DF00000000 -0BC70BC50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000079300000000004F01520000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000BCC0BC90000000000000000 -0000000000000000000000000000000000000000000000000000000000000BCF00000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000BD200000BD50BD8 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000BDB00000000 -0BDE00000000000000000BE1000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000BE400000BE70000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000BEA00000000000000000BED0BF000000BF30000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000600000BF90000000000000000 -00000000000000000BF60000000900030BFF0BFC000000000C050C02000000000C0B0C08000000000000000000000000 -0C110C0E000000000C1D0C1A000000000C230C2000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000C2F0C2C0C350C32 -00000000000000000000000000000000000000000000000000000000000000000C170C140C290C260000000000000000 -000000000C3B0C380C410C3E000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000C47000000000C49000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000C440000000000000000000000000000000000000000 -000000000000000000000C4E00000C5100000C5400000C5700000C5A00000C5D00000C6000000C6300000C6600000C69 -00000C6C00000C6F0C7200000C7500000C7800000000000000000000000000000C7E0C7B0C81000000000C840C8A0C87 -0C8D000000000C900C960C93000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000C4B0000000000000000000000000000000000000C9900000000000000000000000000000000 -000000000000000000000C9F00000CA200000CA500000CA800000CAB00000CAE00000CB100000CB400000CB700000CBA -00000CBD00000CC00CC300000CC600000CC900000000000000000000000000000CCF0CCC0CD2000000000CD50CDB0CD8 -0CDE000000000CE10CE70CE4000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000C9C0CEA00000CF00CED00000CF30000000000000CF60FB71241124B125D0D83104313270E29 -0E9913270E4F12930F550E97116710CD11FD11E31279121510190FEB109D1069128911C70D8D12F30FF50E1D11E11079 -0EDB130911D910510F65121D120311890FBD0EFF108D10250D9D127D0E050DD90FF10F9510D3107711DD1171125911E7 -12FB12CF10E91307114D110712A111B9122F130B0F0B0E87117D112F10ED108312CB12490ECB0E85102F0FED11471047 -12B11159117F0E030DDD0DDF114F111512B511C50F67123D12350FEB0EBB0D8710950F270E1110C10DA510F10D7F0F1B -0F9D10110E23114510D70E7D122711C9126D10050F6F100D0F7B11A50D9110BF0DDB0DC3113D0FDB122D11950E091291 -0E9F0E370FA10F0710F3105312F712AB1313130D0FB50DF912690FFD0F490EF30F910F57106D104B111110AF11791153 -11CD126112A312710DFB0DE910670E411227120B0F230EFD10030F771091112D0E670D970EE50EBB109B0F29116B10A9 -1295117512D112C90D9F12DD128D110F0F3512C10DB10D8F0EC70EBD0FEB0F9F10CB1073127711D30FAD13230DF712AF -0FD10FCB103B102110BD10A1114310E70DC512E312B70F5D0ED70DA9126310310F390F1710950FD50DEB12BB0ECF0E31 -0FC30FA710150FE110C3109F120D1163128F12130E1312C50E33103D10B1107512BD11DB130F12FF102D0FCF1121118B -113311251063108B0D93123B0DED11AD0EF50DE711390F69101B0EB512670FB312B312050F0312210E590DB500000000 -00000E7B00000FAB0DE1000010CF108F110310F5110D1105113512D30000116D000011DF000012331273000000001283 -0000000012E912E7130512EB12BF127F0DB30DA10E010DB90E170E070E5F0E530E790E630ECD0E7F0F2F0ED10F470F43 -0F970F530FAF0FA310270FDD10491035107D106F10EB10A310FB10F710FD10F9110110FF110B1109111D111711531127 -115B1157117311611197118D11CB11971223121912391237124F124D1273126F12D912C70F2B12E1119313D600000000 -0DD70D810D9B0DC10DC90DB70E0B0DFF0E490E530E5D0E510E830E7B0E9B0E950EB10EA90F050F010F1D0F130F3F0F33 -0F470F370F530F410F7F0F5F0F890F850FAB0F990FBF0FBD0FFF0FC710211005104110451057104910E3106F1089107F -10AB108F10B910B510C910C710D110CF10DF10D510EF10DD1127111F11491131115F115311AF117311F911C3121F121B -12291223122B12331235123712391231124F123F127512651299128B12C712B912D512D312DB12D912F912E113AC1327 -13BE13AA0D370D2313F20D39143414041325132100000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000A7A00000ABB0000 -00000000000000000000000000000000000000000AB50AB20AAE0AAA0A590A560A5F0A5C0A680A650A710A6B00000A74 -0A7D0A770A830A8000000A8900000A8C0A920A8F0A95000000000A980AA10A9E0AA70AA40A6E0AB80A860A6200000A9B -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000013290000132C00000000 -0000000000000000000000000000000000000000132F0000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013351332 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000133800000000133B000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000134100000000133E000013440000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000134A1347000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000134D000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000013531350135A13561362135E000013660000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000136A0000136D137513711378 -0000137C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000D850D8913800D8B0DA10D990DA70DA30DAD0DAB0DAF0DB313880CF90DBB0DB9 -0DC70DBD0CFB13820DCB0DBF0DD113860D950DD30DD70DD50DE314440CFF0DE50DF10DEF0DF50DF30DFF0D010E070E01 -0E0D0E0B0E110E0F0E170E150E1B0E190E210E1F0E210E21105D138E0E270E250E2B13900E2F0E2D0E350E3D0E3B0E39 -0E430E3F0E470E450E4D0E4B0E510E4D0E570E550E690E5B0E6B0E5F0E650E610E890DE70E710E6F0E6D0E730E750E77 -13920E810E8D0E8B0E910E8F0E9D0E93139613940EA50EA30EA10EA70D030EAB0EAF0D050EB30EB30EB713980EBB0EB9 -139A0EBF0EC30EC10EC50F0F0EC90D070ED50ED1139E0ED313A00ED90EDD0EDF0EE70EE10D090EE90EED0EEB0EF10EEF -13A20D0B0EF70D0D0EFB0EF914580EFF13A60F09118F13A60F0D0F0D13B40D0F0F1114080D110F150F1F0F190F250F21 -0D150F2D0F2F0D130F3113A80F3D0F3B0F3D0F3F0F470F450F4B0F4F0F510F4D0F550F530F5B0F590F630F610F730F6B -0F7113AE0F750F6D0F830F790F8713B00F7D0F810F8B0D170F930F8F0D190F8D0F9B0F970FA513B20FA90FB90FAF0D1F -0D1B0D1D0DCF0DCD0FB10FBB0D5111810FBF0FBD0FC90FC113BC0FC50FD30D210FD90FCD13C00FDD0FD70FDF0D230FE3 -0FE70FE50FEF0FE90FF313C20FF70D250FF913C40FFB0D271005100113C6100713C8139C13CA10091013100F1017100B -1027101F10231021102B1029101D13CC1039103710410D2913CE103F104D103313D213D01059104F10551057105B0D2B -105F10611384106513D4106B13D81071107F107B13DA10811087108513DE13DC1097109310990D2D0D2F0D2F10A710A5 -10AD10AB0D3110B313E010B713E210BB13A410C113E410C513E813E60D350D3313EC10D513EE13EA10D913F010DB10DB -0D3910DF0D3B10E113F40D3D10E910E50D3F10EF10FF13F613FA13F81113110D11170D41111B111913FE13FC112313FE -14000D43112B112914020D450D471137113B113F140611410D49114B115511510D4B115D140C140A140E0D4D14101165 -116F11691412117311771414117B14160D4F13B61185118311870D5314180EAD13B8141A118F13BA126B1191119B0D55 -119D1199119F0DFD11A311A1141C11A711A911A511B511B311B711AB11CB11C111BB11B111BF11BD1422141E0D571420 -11D111CF142A11D5142411D70D5B0D591428142611E50D5D11E911E711EF11EB11F311ED11F911F111F711F50D5F11FB -120111FF12070D61142C12091211120F12170D63142E0CFD0D65143012250D67123F1231143212431247124512531251 -138A143612551257138C125B1265125F143A14381281127B143C128512971287129F129D12A5129B143E12A70D6912A9 -144012AD12C30D6B12CD0EE3144614420D6F0D6D144812D7144A0D7112DB12DB144C12DF0D7312E512EF12ED12F512F1 -144E0D7512FD12F90D77130113030D790D7B1450145414521311145613150D7D13191317131D131B145A131F00000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +000000000000000000000000000000000000000000000B4F0B550B5200000B59000000000B5F00000000000000000000 +00000000000000000B620000000000000000000000000B65000000000B680000000000000000000000000B6B00000000 +000000000000000000000000000000000B5C0000000000000000000000000000000000000B6E00000B71000000000B89 +00000B8C0000000000000000000000000B74000000000000000000000000000000000000000000000000000000000000 +000000000B7A0000000000000000000000000000000000000B7D0000000000000000000000000B80000000000B830000 +000000000000000000000B8600000000000000000000000000000000000000000B770000000000000000000000000000 +00000000000000000000000000000B8F0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000B9200000B9500000B9800000B9B00000B9E +0000000000000BA100000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000BA400000BA7000000000000 +0BAD0BAA0BB0000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000037D006A038300700386007303890076039B0088039F008C03A5009203AE009B +03A8009503AB009803D000BD03D400C103FE00EB040100EE03F700E4040400F1040D00FA041F010C042801150422010F +042B0118042E011B045F014C0449013604680154046E015A04740160047D01690480016C048A017604870173048D0179 +0490017C0493017F049F018B04A5019104AE019A04AB019704CD01B904D501C104DC01C804E001CC05290215052C0218 +0532021E053E022A0541022D0548023405550241055F024B054E023A055B02470562024E056C02580575025E0581026A +057E026705DD02C605E602CF05E302CC059002790597028005E902D205EC02D505EF02D805F202DB05FB02E405F802E1 +060102E7060402EA060702ED061902FF062B030E063403170637031A056F0431062205FE065900000000000000000000 +0372005F035F004C032C001903280015033400210330001D03750062034500320341002E034D003A0349003603790066 +03ED00DA03E100CE03CA00B703BE00AB03BA00A703C600B303C200AF03F000DD044D013A04590146051B020704F501E1 +04BE01AA04BA01A604C601B204C201AE051E020A050B01F7050701F3051301FF050F01FB0517020305DA02C305B1029A +05CA02B305C602AF05D202BB05CE02B705D602BF060A02F006250308061F0305061302F9000000000000000000000000 +081807F6081B07F908240802082D080B069B0679069E067C06A7068506B0068E0855084A0858084D085C085100000000 +06D106C606D406C906D806CD000000000890086E08930871089C087A08A50883070406E2070706E5071006EE071906F7 +08E808D908EB08DC08EF08E008F308E407470738074A073B074E073F07520743090B0900090E09030912090700000000 +0767075C076A075F076E076300000000094609370949093A094D093E095109420784000007870000078B0000078F0000 +09880966098B096909940972099D097B07BD079B07C0079E07C907A707D207B007E907E2084708440867086008C108BE +08FD08FA091F091C095F09580000000008360814081F07FD082808060831080F06B9069706A2068006AB068906B40692 +08AE088C0897087508A0087E08A9088707220700070B06E9071406F2071D06FB09A60984098F096D0998097609A1097F +07DB07B907C407A207CD07AB07D607B407F007F3084107E5000007EC083D083A067306760670066D000006BD000008BC +0640000008B908630000086A08B508B206C306C006DF06DC0BB307260BB90BB608C408C708D108CD0000000008D508F7 +072F0732072C07290BBC00000BC20BBF09220925092F092B0919091609330955077B077E07780775063A0772031D063D +0000000009B1095B0000096209AD09AA0759075607980795064307DF000000000BC70BC5000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000079300000000004F0152000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000BCC0BC9000000000000000000000000000000000000000000000000 +00000000000000000000000000000BCF0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000BD200000BD50BD800000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000BDB000000000BDE00000000000000000BE100000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE400000BE7 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0BEA00000000000000000BED0BF000000BF3000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000600000BF9000000000000000000000000000000000BF6000000090003 +0BFF0BFC000000000C050C02000000000C0B0C080000000000000000000000000C110C0E000000000C1D0C1A00000000 +0C230C200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000C2F0C2C0C350C3200000000000000000000000000000000 +000000000000000000000000000000000C170C140C290C260000000000000000000000000C3B0C380C410C3E00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0C47000000000C4900000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000C440000000000000000000000000000000000000000000000000000000000000C4E00000C51 +00000C5400000C5700000C5A00000C5D00000C6000000C6300000C6600000C6900000C6C00000C6F0C7200000C750000 +0C7800000000000000000000000000000C7E0C7B0C81000000000C840C8A0C870C8D000000000C900C960C9300000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4B00000000 +00000000000000000000000000000C9900000000000000000000000000000000000000000000000000000C9F00000CA2 +00000CA500000CA800000CAB00000CAE00000CB100000CB400000CB700000CBA00000CBD00000CC00CC300000CC60000 +0CC900000000000000000000000000000CCF0CCC0CD2000000000CD50CDB0CD80CDE000000000CE10CE70CE400000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9C0CEA0000 +0CF00CED00000CF30000000000000CF60FB71241124B125D0D83104313270E290E9913270E4F12930F550E97116710CD +11FD11E31279121510190FEB109D1069128911C70D8D12F30FF50E1D11E110790EDB130911D910510F65121D12031189 +0FBD0EFF108D10250D9D127D0E050DD90FF10F9510D3107711DD1171125911E712FB12CF10E91307114D110712A111B9 +122F130B0F0B0E87117D112F10ED108312CB12490ECB0E85102F0FED1147104712B11159117F0E030DDD0DDF114F1115 +12B511C50F67123D12350FEB0EBB0D8710950F270E1110C10DA510F10D7F0F1B0F9D10110E23114510D70E7D122711C9 +126D10050F6F100D0F7B11A50D9110BF0DDB0DC3113D0FDB122D11950E0912910E9F0E370FA10F0710F3105312F712AB +1313130D0FB50DF912690FFD0F490EF30F910F57106D104B111110AF1179115311CD126112A312710DFB0DE910670E41 +1227120B0F230EFD10030F771091112D0E670D970EE50EBB109B0F29116B10A91295117512D112C90D9F12DD128D110F +0F3512C10DB10D8F0EC70EBD0FEB0F9F10CB1073127711D30FAD13230DF712AF0FD10FCB103B102110BD10A1114310E7 +0DC512E312B70F5D0ED70DA9126310310F390F1710950FD50DEB12BB0ECF0E310FC30FA710150FE110C3109F120D1163 +128F12130E1312C50E33103D10B1107512BD11DB130F12FF102D0FCF1121118B113311251063108B0D93123B0DED11AD +0EF50DE711390F69101B0EB512670FB312B312050F0312210E590DB50000000000000E7B00000FAB0DE1000010CF108F +110310F5110D1105113512D30000116D000011DF0000123312730000000012830000000012E912E7130512EB12BF127F +0DB30DA10E010DB90E170E070E5F0E530E790E630ECD0E7F0F2F0ED10F470F430F970F530FAF0FA310270FDD10491035 +107D106F10EB10A310FB10F710FD10F9110110FF110B1109111D111711531127115B1157117311611197118D11CB1197 +1223121912391237124F124D1273126F12D912C70F2B12E111931416000000000DD70D810D9B0DC10DC90DB70E0B0DFF +0E490E530E5D0E510E830E7B0E9B0E950EB10EA90F050F010F1D0F130F3F0F330F470F370F530F410F7F0F5F0F890F85 +0FAB0F990FBF0FBD0FFF0FC710211005104110451057104910E3106F1089107F10AB108F10B910B510C910C710D110CF +10DF10D510EF10DD1127111F11491131115F115311AF117311F911C3121F121B12291223122B12331235123712391231 +124F123F127512651299128B12C712B912D512D312DB12D912F912E113EC132713FE13EA0D370D2314320D3914741444 +132513210000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000A7A00000ABB000000000000000000000000000000000000 +000000000AB50AB20AAE0AAA0A590A560A5F0A5C0A680A650A710A6B00000A740A7D0A770A830A8000000A8900000A8C +0A920A8F0A95000000000A980AA10A9E0AA70AA40A6E0AB80A860A6200000A9B00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000013290000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000132C00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000132F00001332000000000000000000000000000000000000000000000000133500000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000133B13380000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000133E0000000013410000000000000000000000000000000000000000 +00000000000000000000000000000000000000001344000013470000000000000000000000000000000000000000134A +134D00000000000000000000000000000000000000000000000000000000000000000000000000001353000013500000 +000013560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000135C0000000013590000135F0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000013651362000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000001368000000000000000000000000 +136B0000136F137C13731380137F136E0000137200000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000001386138A000013890000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013931390 +139A139613A2139E000013A6000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000013AA000013AD13B513B113B8000013BC000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0D850D8913C00D8B0DA10D990DA70DA30DAD0DAB0DAF0DB313C80CF90DBB0DB90DC70DBD0CFB13C20DCB0DBF0DD113C6 +0D950DD30DD70DD50DE314840CFF0DE50DF10DEF0DF50DF30DFF0D010E070E010E0D0E0B0E110E0F0E170E150E1B0E19 +0E210E1F0E210E21105D13CE0E270E250E2B13D00E2F0E2D0E350E3D0E3B0E390E430E3F0E470E450E4D0E4B0E510E4D +0E570E550E690E5B0E6B0E5F0E650E610E890DE70E710E6F0E6D0E730E750E7713D20E810E8D0E8B0E910E8F0E9D0E93 +13D613D40EA50EA30EA10EA70D030EAB0EAF0D050EB30EB30EB713D80EBB0EB913DA0EBF0EC30EC10EC50F0F0EC90D07 +0ED50ED113DE0ED313E00ED90EDD0EDF0EE70EE10D090EE90EED0EEB0EF10EEF13E20D0B0EF70D0D0EFB0EF914980EFF +13E60F09118F13E60F0D0F0D13F40D0F0F1114480D110F150F1F0F190F250F210D150F2D0F2F0D130F3113E80F3D0F3B +0F3D0F3F0F470F450F4B0F4F0F510F4D0F550F530F5B0F590F630F610F730F6B0F7113EE0F750F6D0F830F790F8713F0 +0F7D0F810F8B0D170F930F8F0D190F8D0F9B0F970FA513F20FA90FB90FAF0D1F0D1B0D1D0DCF0DCD0FB10FBB0D511181 +0FBF0FBD0FC90FC113FC0FC50FD30D210FD90FCD14000FDD0FD70FDF0D230FE30FE70FE50FEF0FE90FF314020FF70D25 +0FF914040FFB0D271005100114061007140813DC140A10091013100F1017100B1027101F10231021102B1029101D140C +1039103710410D29140E103F104D1033141214101059104F10551057105B0D2B105F106113C410651414106B14181071 +107F107B141A108110871085141E141C1097109310990D2D0D2F0D2F10A710A510AD10AB0D3110B3142010B7142210BB +13E410C1142410C5142814260D350D33142C10D5142E142A10D9143010DB10DB0D3910DF0D3B10E114340D3D10E910E5 +0D3F10EF10FF1436143A14381113110D11170D41111B1119143E143C1123143E14400D43112B112914420D450D471137 +113B113F144611410D49114B115511510D4B115D144C144A144E0D4D14501165116F11691452117311771454117B1456 +0D4F13F61185118311870D5314580EAD13F8145A118F13FA126B1191119B0D55119D1199119F0DFD11A311A1145C11A7 +11A911A511B511B311B711AB11CB11C111BB11B111BF11BD1462145E0D57146011D111CF146A11D5146411D70D5B0D59 +1468146611E50D5D11E911E711EF11EB11F311ED11F911F111F711F50D5F11FB120111FF12070D61146C12091211120F +12170D63146E0CFD0D65147012250D67123F123114721243124712451253125113CA14761255125713CC125B1265125F +147A14781281127B147C128512971287129F129D12A5129B147E12A70D6912A9148012AD12C30D6B12CD0EE314861482 +0D6F0D6D148812D7148A0D7112DB12DB148C12DF0D7312E512EF12ED12F512F1148E0D7512FD12F90D77130113030D79 +0D7B1490149414921311149613150D7D13191317131D131B149A131F0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); dstring decompCanonTable() nothrow @nogc pure @safe { -static immutable dchar[5212] t = +static immutable dchar[5276] t = "\u0000\u003B\u0000\u003C\u0338\u0000\u003D\u0338\u0000\u003E\u0338\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041"d~ "\u0302\u0000\u0041\u0302\u0300\u0000\u0041\u0302\u0301\u0000\u0041\u0302\u0303\u0000\u0041\u0302\u0309\u0000\u0041"d~ "\u0303\u0000\u0041\u0304\u0000\u0041\u0306\u0000\u0041\u0306\u0300\u0000\u0041\u0306\u0301\u0000\u0041\u0306\u0303"d~ @@ -1044,33 +1083,38 @@ static immutable dchar[5212] t = "\u9929\u0000\u99A7\u0000\u99C2\u0000\u99F1\u0000\u99FE\u0000\u9A6A\u0000\u9B12\u0000\u9B6F\u0000\u9C40\u0000\u9C57"d~ "\u0000\u9CFD\u0000\u9D67\u0000\u9DB4\u0000\u9DFA\u0000\u9E1E\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EBB\u0000"d~ "\u9ECE\u0000\u9EF9\u0000\u9EFE\u0000\u9F05\u0000\u9F0F\u0000\u9F16\u0000\u9F3B\u0000\u9F43\u0000\u9F8D\u0000\u9F8E"d~ -"\u0000\u9F9C\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127"d~ -"\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000"d~ +"\u0000\u9F9C\u0000\U000105D2\u0307\u0000\U000105DA\u0307\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000"d~ +"\U000110A5\U000110BA\u0000\U00011131\U00011127\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347"d~ +"\U00011357\u0000\U00011382\U000113C9\u0000\U00011384\U000113BB\u0000\U0001138B\U000113C2\u0000\U00011390\U000113C9"d~ +"\u0000\U000113C2\U000113B8\u0000\U000113C2\U000113C2\u0000\U000113C2\U000113C9\u0000\U000114B9\U000114B0\u0000"d~ "\U000114B9\U000114BA\u0000\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935"d~ -"\U00011930\u0000\U0001D157\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158"d~ -"\U0001D165\U0001D16F\u0000\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165"d~ -"\U0001D172\u0000\U0001D1B9\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000"d~ -"\U0001D1BA\U0001D165\u0000\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U00020122\u0000"d~ -"\U0002051C\u0000\U00020525\u0000\U0002054B\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000"d~ -"\U00020B63\u0000\U000214E4\u0000\U000216A8\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000"d~ -"\U00021DE4\u0000\U00021DE6\u0000\U00022183\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000"d~ -"\U0002284A\u0000\U00022B0C\u0000\U00022BF1\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000"d~ -"\U0002339C\u0000\U000233C3\u0000\U000233D5\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000"d~ -"\U00023AFA\u0000\U00023CBC\u0000\U00023D1E\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000"d~ -"\U000242EE\u0000\U000243AB\u0000\U00024608\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000"d~ -"\U00024FA1\u0000\U00024FB8\u0000\U00025044\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000"d~ -"\U00025249\u0000\U0002541D\u0000\U00025626\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000"d~ -"\U00025BAB\u0000\U00025C80\u0000\U00025CD0\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000"d~ -"\U000262D9\u0000\U0002633E\u0000\U000264DA\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000"d~ -"\U00026B3C\u0000\U00026C36\u0000\U00026CD5\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000"d~ -"\U000273CA\u0000\U00027667\u0000\U000278AE\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000"d~ -"\U000285D2\u0000\U000285ED\u0000\U0002872E\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000"d~ -"\U0002921A\u0000\U0002940A\u0000\U00029496\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000"d~ -"\U0002A20E\u0000\U0002A291\u0000\U0002A392\u0000\U0002A600\u0000"d; +"\U00011930\u0000\U0001611E\U0001611E\u0000\U0001611E\U0001611E\U0001611F\u0000\U0001611E\U0001611E\U00016120\u0000"d~ +"\U0001611E\U0001611F\u0000\U0001611E\U00016120\u0000\U0001611E\U00016129\u0000\U0001611E\U00016129\U0001611F\u0000"d~ +"\U00016129\U0001611F\u0000\U00016D63\U00016D67\u0000\U00016D63\U00016D67\U00016D67\u0000\U00016D67\U00016D67\u0000"d~ +"\U0001D157\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F"d~ +"\u0000\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000"d~ +"\U0001D1B9\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165"d~ +"\u0000\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U00020122\u0000\U0002051C\u0000"d~ +"\U00020525\u0000\U0002054B\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000"d~ +"\U000214E4\u0000\U000216A8\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000"d~ +"\U00021DE6\u0000\U00022183\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000"d~ +"\U00022B0C\u0000\U00022BF1\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000"d~ +"\U000233C3\u0000\U000233D5\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000"d~ +"\U00023CBC\u0000\U00023D1E\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000"d~ +"\U000243AB\u0000\U00024608\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000"d~ +"\U00024FB8\u0000\U00025044\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000"d~ +"\U0002541D\u0000\U00025626\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000"d~ +"\U00025C80\u0000\U00025CD0\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000"d~ +"\U0002633E\u0000\U000264DA\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000"d~ +"\U00026C36\u0000\U00026CD5\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000"d~ +"\U00027667\u0000\U000278AE\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000"d~ +"\U000285ED\u0000\U0002872E\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000"d~ +"\U0002940A\u0000\U00029496\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000"d~ +"\U0002A291\u0000\U0002A392\u0000\U0002A600\u0000"d; return t[]; } dstring decompCompatTable() nothrow @nogc pure @safe { -static immutable dchar[10425] t = +static immutable dchar[10489] t = "\u0000\u0020\u0000\u0020\u0301\u0000\u0020\u0303\u0000\u0020\u0304\u0000\u0020\u0305\u0000\u0020\u0306\u0000\u0020"d~ "\u0307\u0000\u0020\u0308\u0000\u0020\u0308\u0300\u0000\u0020\u0308\u0301\u0000\u0020\u0308\u0342\u0000\u0020\u030A"d~ "\u0000\u0020\u030B\u0000\u0020\u0313\u0000\u0020\u0313\u0300\u0000\u0020\u0313\u0301\u0000\u0020\u0313\u0342\u0000"d~ @@ -1602,31 +1646,36 @@ static immutable dchar[10425] t = "\u9E75\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EA5\u0000\u9EBB\u0000\u9EC3\u0000\u9ECD\u0000\u9ECE\u0000\u9ED1"d~ "\u0000\u9EF9\u0000\u9EFD\u0000\u9EFE\u0000\u9F05\u0000\u9F0E\u0000\u9F0F\u0000\u9F13\u0000\u9F16\u0000\u9F20\u0000"d~ "\u9F3B\u0000\u9F43\u0000\u9F4A\u0000\u9F52\u0000\u9F8D\u0000\u9F8E\u0000\u9F9C\u0000\u9F9F\u0000\u9FA0\u0000\uA651"d~ -"\u0000\uA689\u0000\uA727\u0000\uA76F\u0000\uA78E\u0000\uAB37\u0000\uAB52\u0000\uAB66\u0000\uAB67\u0000\U00011099"d~ -"\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127\u0000\U00011132\U00011127"d~ -"\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000\U000114B9\U000114BA\u0000"d~ -"\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935\U00011930\u0000\U0001D157"d~ -"\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F\u0000"d~ -"\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000\U0001D1B9"d~ -"\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165\u0000"d~ -"\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U0001DF04\u0000\U0001DF05\u0000\U0001DF06"d~ -"\u0000\U0001DF08\u0000\U0001DF0A\u0000\U0001DF1E\u0000\U00020122\u0000\U0002051C\u0000\U00020525\u0000\U0002054B"d~ -"\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000\U000214E4\u0000\U000216A8"d~ -"\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000\U00021DE6\u0000\U00022183"d~ -"\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000\U00022B0C\u0000\U00022BF1"d~ -"\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000\U000233C3\u0000\U000233D5"d~ -"\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000\U00023CBC\u0000\U00023D1E"d~ -"\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000\U000243AB\u0000\U00024608"d~ -"\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000\U00024FB8\u0000\U00025044"d~ -"\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000\U0002541D\u0000\U00025626"d~ -"\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000\U00025C80\u0000\U00025CD0"d~ -"\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000\U0002633E\u0000\U000264DA"d~ -"\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000\U00026C36\u0000\U00026CD5"d~ -"\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000\U00027667\u0000\U000278AE"d~ -"\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000\U000285ED\u0000\U0002872E"d~ -"\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000\U0002940A\u0000\U00029496"d~ -"\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000\U0002A291\u0000\U0002A392"d~ -"\u0000\U0002A600\u0000"d; +"\u0000\uA689\u0000\uA727\u0000\uA76F\u0000\uA78E\u0000\uAB37\u0000\uAB52\u0000\uAB66\u0000\uAB67\u0000\U000105D2"d~ +"\u0307\u0000\U000105DA\u0307\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000"d~ +"\U00011131\U00011127\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U00011382"d~ +"\U000113C9\u0000\U00011384\U000113BB\u0000\U0001138B\U000113C2\u0000\U00011390\U000113C9\u0000\U000113C2\U000113B8"d~ +"\u0000\U000113C2\U000113C2\u0000\U000113C2\U000113C9\u0000\U000114B9\U000114B0\u0000\U000114B9\U000114BA\u0000"d~ +"\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935\U00011930\u0000\U0001611E"d~ +"\U0001611E\u0000\U0001611E\U0001611E\U0001611F\u0000\U0001611E\U0001611E\U00016120\u0000\U0001611E\U0001611F\u0000"d~ +"\U0001611E\U00016120\u0000\U0001611E\U00016129\u0000\U0001611E\U00016129\U0001611F\u0000\U00016129\U0001611F\u0000"d~ +"\U00016D63\U00016D67\u0000\U00016D63\U00016D67\U00016D67\u0000\U00016D67\U00016D67\u0000\U0001D157\U0001D165\u0000"d~ +"\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F\u0000\U0001D158\U0001D165"d~ +"\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000\U0001D1B9\U0001D165\u0000"d~ +"\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165\u0000\U0001D1BA\U0001D165"d~ +"\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U0001DF04\u0000\U0001DF05\u0000\U0001DF06\u0000\U0001DF08"d~ +"\u0000\U0001DF0A\u0000\U0001DF1E\u0000\U00020122\u0000\U0002051C\u0000\U00020525\u0000\U0002054B\u0000\U0002063A"d~ +"\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000\U000214E4\u0000\U000216A8\u0000\U000216EA"d~ +"\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000\U00021DE6\u0000\U00022183\u0000\U0002219F"d~ +"\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000\U00022B0C\u0000\U00022BF1\u0000\U0002300A"d~ +"\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000\U000233C3\u0000\U000233D5\u0000\U0002346D"d~ +"\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000\U00023CBC\u0000\U00023D1E\u0000\U00023ED1"d~ +"\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000\U000243AB\u0000\U00024608\u0000\U00024735"d~ +"\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000\U00024FB8\u0000\U00025044\u0000\U000250F2"d~ +"\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000\U0002541D\u0000\U00025626\u0000\U0002569A"d~ +"\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000\U00025C80\u0000\U00025CD0\u0000\U00025F86"d~ +"\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000\U0002633E\u0000\U000264DA\u0000\U00026523"d~ +"\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000\U00026C36\u0000\U00026CD5\u0000\U00026D6B"d~ +"\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000\U00027667\u0000\U000278AE\u0000\U00027966"d~ +"\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000\U000285ED\u0000\U0002872E\u0000\U00028BFA"d~ +"\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000\U0002940A\u0000\U00029496\u0000\U000295B6"d~ +"\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000\U0002A291\u0000\U0002A392\u0000\U0002A600"d~ +"\u0000"d; return t[]; } @@ -1635,13 +1684,13 @@ return t[]; static if (size_t.sizeof == 8) { -//23488 bytes +//24512 bytes enum compatMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" -0000000000000000000000000000002000000000000002A0", +0000000000000000000000000000002000000000000002E0", x" -00000000000001000000000000000A000000000000002360", +00000000000001000000000000000B000000000000002460", x" -040203020202010007060202020202050802020202020202000000000000000000000000000000000000000000000000 +040203020202010008070202060202050902020202020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -1701,46 +1750,47 @@ x" 00A900A800A700A600AD00AC00AB00AA00B100B000AF00AE00B500B400B300B200B900B800B700B600BD00BC00BB00BA 00C100C000BF00BE00C500C400C300C200C900C800C700C600CD00CC00CB00CA00000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000CF00CE0000000000000000000000000000000000000000 +00000000000000000000000000D100D00000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000CF00CE0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000D300D20000000000D40000000000000000000000000000000000000000000000000000 +000000D500000000000000D7000000D600000000000000000000000000D8000000000000000000000000000000D90000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000D100D00000000000D20000000000000000000000000000000000000000000000000000 -000000D300000000000000000000000000000000000000000000000000D4000000000000000000000000000000D50000 +0000000000DA000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000D6000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000DB00000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000DC0000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00D800D700000000000000DA00D900000000000000000000000000000000000000000000000000000000000000000000 -00DE00DD00DC00DB00E200E100E000DF00E600E500E400E300E800DC00DB00E700EB00EA00E900DE00EE00ED00EC00E2 -00F200F100F000EF00F600F500F400F30000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00F900F800F7000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000FD00FC00FB00FA0000000000FF00FE -000000000000000000000000000000000000000000000000000000000000000001030102010101000000000000000104 -000001070106010500000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000DE00DD000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000E000DF00000000000000E200E10000 +000000000000000000000000000000000000000000000000000000000000000000E600E500E400E300EA00E900E800E7 +00EE00ED00EC00EB00F000E400E300EF00F300F200F100E600F600F500F400EA00FA00F900F800F700FE00FD00FC00FB 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000001080000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000101010000FF00000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000105010401030102000000000107010600000000000000000000000000000000 +00000000000000000000000000000000010B010A01090108000000000000010C0000010F010E010D0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000010C010B010A01090110010F010E010D -011401130112011101180117011601150000000000000119000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -1749,396 +1799,416 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000001140113011201110118011701160115011C011B011A01190120011F011E011D +000000000000012100000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000001000000000000000000000692000000150009000000000000 -030F03430000000000000000120F00030000078A031400480000049403C603CE058605730570056D05F8000005B005A6 -06580631062E062B06F906EA06E706E407AC07A907920000000007E607C207AF08BA08B708B4000000000000096208CE -09C509B209AF09AC0A4A000009EF09E50AB60A8F0A8C0A890B580B4C0B490B460C610C5E0C44000000000C9B0C770C64 -0D710D6E0D6B00000E1E00000E0F0D8509CB058C09C805890A3E05EC0A0D05CE0A4405F20A4105EF0A71061A0A4705F5 -0AA50647000000000AB306550AB006520ABC065E0AD306750B0406A00AFE069A0B0D06A90B0706A3000000000B1906BA -0B5206F00B4F06ED0B6E070F0B5506F30B3A06D8000006F60BB1072E0B76071707500BCF0743000007400BD207460BDC -078F000000000BCC07980C50079E0C41000000000F300C4A0C9107DC0C8607D1000000000CA507F00D20085B0D0A0845 -0D2E086F0D10084B0D4C088D0D3508760D6008A90D3B087C000000000D5708A00D7B08C40D7408BD0D9B08E40D8208CB -0DC709100D9E08E70E1209650DEC094209820E2C097C097108430614060D0E32000000000CB107FC0000000000000000 -000000000000000008F30000000000000000000000000DAA000000000000000000000000000000000000000000000000 -000000000000000007360A6A0613060C078607830BBC073D070309F605B70C3508EA0CA807F30B6208D50D9008D90DA1 -08D10D9408DD0D8C09E805A900000D880E680E5D09E105A20B0A06A6000000000CCF081A0BAB07280F070E820CD2081D -0A67061006090B79000000000AFB069709F205B30C3E078C0E6F0E600E650E5A09FC05BD09F905BA0AC206640ABF0661 -0B6807090B6507060CAE07F90CAB07F60D1608510D13084E0DA708F00DA408ED0D5D08A60D49088A0B2206C300000000 -000000000000000009DE059F000000000C9E07E90ACC066E0C9407DF0C7E07C90E18096B0C9707E20000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0A14073E0EB70B100DE40EE90EE10EDD0000000000000695000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000004B00240012000F0000000000270006 -0B4408430A2B0EB10000000000000F0A0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000002B00000004001A000000000000001D00000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000F2E00000054000000000000054600000000 -000000000000000007410F45001C0003000010110FC00FA0109910730000104A00000000000011E20000000000000000 -0000000000000000000000000000000000000000000000000000000000000000107C101A0000000011D21176115210EC -000000000000127000000000000000000000000000000000000000000000000000000000000000000000000000000000 -126911DB00000000000012A8126012321073106E11CB11470000124B1299107C00000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000001255124D120B00000000114D100A -00000000106A00000000000000000000130A00001313130D1301000000000000000000000000000000001334131F132B -000000000000000000000000000000000000000013250000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000137900000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000135400001361135B13C6000000000000 -00000000000000000000139C137313810000000000000000000000000000000000000000000000000000000000000000 -000000000000000013D013CD000000000000000000000000000000000000000000001366131600000000000000000000 -00000000000000000000000000000000134B130713481304135E13100000000013E213DD00000000136E131C13691319 -1376132200000000138C132E137C132813EA13E5000000001399133113BD134313A2133A139F13370000000013AD133D -0000000013B613400000000000000000000000000000000013ED00000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000001494149100000000000018751497183A 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000001906183D149A0000 -00000000000018BC0000000000000000000018FD00001918000000000000000000000000000000000000000000000000 -191500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000192D000000000000000000000000000019360000000000000000193900000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -19241921191E191B19331930192A19270000000000000000000000000000000019450000000000000000000000001948 -00000000000000000000000000000000000000000000000019420000193F193C00000000000000000000000000000000 -0000000000000000000000000000000019570000000000000000195A0000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1951194E194B000000001954000000000000000000000000000000000000000019630000000019660000000000001969 -000000000000000000000000000000000000000000000000000000001960195D00000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000196C00000000000000000000000000000000 -000000000000000000000000000000001975196F00000000000000000000197200000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000019780000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000197B1985000000000000 -1981197E0000198800000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000001991198B00000000000000000000198E00000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000001994000000000000199E199A199700000000000000000000000000000000 -0000000000000000000000000000000019A1000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000019AA0000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000019A719A400000000000000000000000000000000 -000000000000000000000000000019AD0000000000000000000000000000000000000000000000000000000000000000 -19B2000000000000000000000000000000000000000000000000000019B50000000019B80000000019BB000000000000 -000000000000000000000000000019BE000000000000000000000000000000000000000019AF00000000000000000000 -19C100000000000019DC19E019C400000000000019E319E700000000000000000000000019C700000000000000000000 -0000000000000000000000000000000019CD000000000000000000000000000000000000000000000000000019D00000 -000019D30000000019D6000000000000000000000000000000000000000019D900000000000000000000000000000000 -0000000019CA000000000000000000000000000000000000000019EA0000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019ED -000000000000000000001AE30000000000001AE900001AE600001AEF00001AEC00001AF2000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000001AF5000000000000000000001AF800001B0100001AFE1AFB0000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000005D50E58056806870E7C062905E6071A060706CF06AC -0000078107230734076D06AF0E8B07A706920773056B0890093A1B040E910E8F0EA30EA10A800A310B7C000006020EA5 -0E97078A0E7805D30BA60CD61B081B06086D0EC91B0C0A27114B114911471B0E0A140AE3129B129911491147086D0A27 -0000129B1299124D00000000000000000000000000000000000000000000000000000000000013880000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0E930000000000000EA50E6B0E9909A30EB50EAD0EA90ADC1B100EBF0EBD0EBB0F161B120EC50F140ED10ECF0ECB0ECD -0EEB0EDB0ED50ED30EF50EF30E800EED06110EF90EF71B0A11CB0F050F030F010A1605DA0A0A05CB0A1C05E00A1905DD -0A6E06170A4D05FB0A7D06260A74061D0A7A06230A7706200AAC064E0AA8064A0AD9067B0AD606780AF206840ACF0671 -0B1C06BD0B01069D0B1F06C00B2506C60B2B06CC0B2806C90B5B06FC0B7107120BAE072B0BA807250BD507490BB40731 -0BE207560BD8074C0C1507750BDF07530C1B077B0C1807780C4D079B0C4707950C5307A10C5607A40C8207CD0C7A07C5 -0C8D07D80C8907D40CF2083B0CEF08380D1908540D0D08480D23085E0D1C08570D4208830D3808790D3E087F0D310872 -0D51089D0D4508860D6608AF0D5A08A30DC4090D0D6308AC0DCA09130DCD09160D7E08C70D7708C00DE1092A0DDE0927 -0DE9093F0DE6093C0DEF09450DF209480E0409570DF8094B0E1B096E0E07095A0E3809880E2F097F0D540B2E0E3B098B -0D3809A90E240DF5000000000000000009EC05AD09FF05C009B5057609B9057A09BD057E09C1058209D205930A0205C3 -09DA059B09CE058F0A0605C709D605970AB9065B0AC506670A9606380AA206440A9E06400A9206340AC8066A0A9A063C -0B6B070C0B5F07000CA207ED0CC808130C6707B20C6B07B60C6F07BA0C7307BE0CB808030CCB08160CC0080B0CB407FF -0CC4080F0CBC08070D9808E10DC1090A0DAD08F60DB108FA0DB508FE0DB909020E0C095F0DBD09060E2109740E270977 -000000000E1509680000000000000000111E10FC111B10F91130110E112711050F730F510F700F4E0F850F630F7C0F5A -1163115811601155000000001167115C0FB10FA60FAE0FA3000000000FB50FAA11A21180119F117D11B4119211AB1189 -0FE80FC60FE50FC30FFA0FD80FF10FCF11FC11ED11F911EA120411F5120011F1102F1020102C101D1037102810331024 -1243123812401235000000001247123C105B10501058104D00000000105F1054128A127B1287127812921283128E127F -10820000107F0000108A00001086000012D412B212D112AF12E612C412DD12BB10C1109F10BE109C10D310B110CA10A8 -1152114F10EC10E511D211CF1176116F1260125D1232122F0000000012A812A1112211001139111711341112112B1109 -0F770F550F8E0F6C0F890F670F800F5E11A6118411BD119B11B8119611AF118D0FEC0FCA10030FE10FFE0FDC0FF50FD3 -12D812B612EF12CD12EA12C812E112BF10C510A310DC10BA10D710B510CE10AC114410E810F310F61140113D000010EF -0F450F420F480F4B002A11CD002A0F9211C811720020005111C411C1000011790FC00FBD0FA00F9D00350031002D1007 -11E211DE11D511D811E61208000000001011100E1014101700440040003C00001270126C12631266127412961252124F -10731070107610790998001C0018106712FA12A40000000012F612F3000012AB10991096104A104700000039000310E0 -0001000100010001000100010001000100000001000100010000000000000000000000001B160000004E000000000000 -000000000000000000000000000000000000000000000000000002FF02FC02FA00000000000000000001000000000000 -1B1C0000000000001B2B1B2800001B1F00000000000000000000000C0000008F00000000000000000563000000000000 -0000000000920560000000000000000000000000000000001B2300000000000000000000000000000001000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000AE303050392038303740365 -1B5A02F403B003A10B3E00A500A10544030F03430314030503920383037403651B5A02F403B003A1000000A500A10544 -0B44078A0A8006920A2B0B7C0B100EA108430CD60B3E05D30000000000000BA600000000000000000000000000000000 -000000000000084200000000000000000000000000000000000000000000000000000000000000000000000000000000 -0E5005E309A509A10E7E0A250A21000006AC06020E5300000E740B1006AC06AC0A2B073406CF06CF0000078907810000 -076D083E06AF000000000000076D076D0000089A089208660000077F0000060A05B0071A0000060A0A80000005E305D5 -07230000067E06291415140D13FF078A068000000AE3141A10630F971149124B0000000000001B580A800A3105E60000 -00000000073E0AE3000000000000000003CA03C103E203DA0498045903D2045503DE04E703D604CF03BE051104EB049C -06DE06D406D106CF0922091E091B06B209530950068206E1072305E605E307340B400B360B330AE30DD90DD50DD2086D -0E000DFD0B440B4305D30A3109A30A2B0000000000000000000000000000000000000000030D00000000000000000000 -000000000000000000000000000000001B3A1B3300000000000000000000000000000000000000000000000000000000 -000000000000000000001B3F000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000001B451B481B42000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000001B4D000000001B5200000000000000001B55 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000001B5F00001B5C -00000000000000001B6E00001B651B620000000000001B71000000000000000000000000000000000000000000000000 -000000001B7500001B7B000000001B78000000001B7E0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000001B840000055600000000000000000000000000000000055B054A1B810000 -000000001B8A1B87000000001B901B8D000000001B961B930000000000000000000000001B9C1B99000000001BA81BA5 -000000001BAE1BAB00000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000001BC01BBD1BBA1BB700000000000000000000000000000000 -000000000000000000000000000000001BB41BB11BA21B9F00000000000000001BC61BC300000000000000001BCC1BC9 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00001BE61BE4000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0365030F0343031403A10392038303740342032F031C03B0038203730364035503F703AF03A0039100E600E200D900A3 -00F600F200EE00EA00B100AC00A700FA00C500C000BB00B600DD00D400CF00CA036803590346031903A4039503860377 -03450332031F03B3038503760367035803FA03B203A303940172016E016A01660182017E017A01760192018E018A0186 -01A2019E019A019601B201AE01AA01A601C201BE01BA01B605D5056801CA01C6067E062905E605E3060706CF06AC0687 -078107230734071A076D083E06AF07A706B2056B08900861060A095D068207730A3109A3093A06920B1006020ADC0A80 -0A2B0B7C073E0AE30CD6078A0B3E05D30BA608430A1405D80B440DE4086D0A2700000305061106950000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000001B690000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000552054F0542 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000001BD900000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B2073E -0000000000000000000000000000000000000000000000001BDE00000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000232E00000000000000000000000000000000000000000000 -000000000000000000000000000000002764000000000000000000000000000000000000000000000000000000000000 -1FB81FB01FAA1F981FCA1FC61FC21FBC201120091FFD1FD02039202920212019206B2057203D203B207F207920772073 -209D209B208F208D210120F720A920A12131212F212B212121662160214A21392180217E217C217621AA21A4218E218C -21C121BA21B221AE21E121DD21DB21C521F321EB21E721E322492247223D220122972295228B2289032522A3229F229B -231222D5032922C3232C232623202318233623342332233023BE23B82394233823C823C423C223C023E623E223D423CA -240E240C240824062428242624142412243C243A24382436245C245A2458244624A02490248E246E24CE24BC24AC24A8 -250424FE24F424F02510250E250C25082530252C251E251C2540253C25362534254A25482544254225C025BE25A4259A -25E225DE25DA25C4260A2606260425E626262624260E260C264426362634262A266C265C264A26482692267C26782676 -26B426AE269C269426CE26CC26C826BC26DA26D826D226D026F026EE26EC26DE270C270226FE26FC271627142710270E -2724271C271A2718273A27382732273027442742273E273C27542750274C2746275E275C275A27560000000027662762 -000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000001BF800000000000020832081207F0000000000000000 -00000000000000000000000000000000000000000000000000001C3000001C2D00001C3600001C3300001C3C00001C39 -00001C4200001C3F00001C4800001C4500001C4E00001C4B1C5400001C510000000000001C5700000000000000000000 -1C6000001C5D1C5A1C691C6600001C6300001C6F1C6C0000000000001C781C7500000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000001C2A00870000000000001C7B1C820000008A -00000000000000000000000000000000000000000000000000001CF200001CD500001D4100001CA500001D5E00001D4A -00001D7900001D6E00001D8B00001D7E00001D9A00001D901DA600001DA10000000000001CBF00000000000000000000 -1DEA00001DD51DCC1E101E0600001DF100001E2D1E250000000000001D591E5000000000000000000000000000000000 -0000000000000000000000000000000000000000000000001EF3000000001CB000001F061F011EFC1D501F0F00000000 -00000000000000000000000000000000000000000000000000000000000000001ABB19F419EF000019FB1ABF1ABD19F6 -1AC31AC11A021A001ACB1AC91AC71AC51A111A0C1A071A511A1A1A181A131A5B1A391A2E1A2C1A2219F21A481A431A3E -1A891A871A851A831A371A8F1A8D1A8B1A991A971A951A931AA11A9F1A9D1A201AA91A2A1AA51AA31ACD1A4F1A4D1A7F -1AD51AD31AD11ACF1ADB1A531AD91AD71A591A571A551ADD1A631A611A5F1A5D1A6B1A691A671A651A731A711A6F1A6D -1AE11ADF1A771A751AAB1A7D1A7B1A791AB31AB11AAF1AAD00001AB91AB71AB51FC61F98000000001FAC1FA020F91F9E -1FA61FBC24161FA21FD02103213E1F9A01E901E001D701CE020D020401FB01F20245023C0233022501DB01D20257024E -01FF01F601ED01E40237022902110208025B0252024902400000021E0216022E02A00268027002600284026402880274 -02C402B00290026C02A402EC02B802C002D002B402BC02AC02D402E402C8029802A8029C0278028C029402E8027C02CC -02E002DC028002D824B0229521C320D300000000000000000000000000000000041C0411040608310440043904320427 -0475046E044E044704850482047F047C1A0219FB19F619EF1A1A1A131A0C1A071A3E1A391A2E1A2219F819F11A481A43 -1A0E1A091A0419FD1A301A241A1C1A151A4A1A451A401A3B00001A1F1A271A3320F91F9E1FC61F9820111F9C20131FC8 -23940329207F1FBE2101267C22D5233822F222CD22ED0325247C261023CE20B9214A241A2494205D234820911FFB2654 -213C20251FDD26E021AC1FA21FAC1FA02164216A207B20B32089261A1FDB2442048E048B0488213504B704B404B10491 -04C304C004BD04BA04E404CC04C904C604D604A3034E033B05290518050304F2034D033A0327053A07390A820A8506B4 -1CB91CAE1CA01C871D221CF01CD31CC91D6C1D5C1D481D3F1D8E1D891D7C1CCD1C8D1DA41D9F1CAA1D3D1DC01DBE1D55 -1E041DE81DCA1DBC1E8B1CE01E4E1E231EB31EAF1E9E1CD11CE41ECA1EC81EC01EF11D0C1EE31C9C1FD81F041EFF1EFA -1C9A1C941C8F1C891CBB1CB31CA81CA21CE21CCF1CCB1CC21CDD1CD81CEB1CE61CFF1D061CFA1CF51D1C1D151D0E1D0B -1D3A1D331D2C1D101D611D571D531D441D851D811D711D661D301DB21DA91D931DD81DE41DC61DBB1DFB1DF41DCF1DDF -1E1A1E131DED1E001E301E441E1F1E091E3E1E391E4A1E341E671E531E5B1E281E741E6E1E6A1E611E851E811E7D1E79 -1EA01E951E921E8D1EBA1EB51D171EA41ED81ED31ECE1EC21D1E1EE81EE51EDD03610352033F0311039D038E037F0370 -033E032B03BB03AC037E036F0360035103BA03AB039C038D04230418040D0402056A0A560B12042E0A5C0CE90C5B0A12 -21BC06DB0A630A5F22EF22AB213B22B20BED12110C290CDD0689075B071C0B7E0C2C0CE00B8F0A2906010BF9121D1214 -068C07640B81068D0A590C001220089612230C380AEF0B970C060B9A0A330C030C0A0B9D0A370A360C1E0BA10A3B0A3A -07680B8506910C220D030CFD0CF906900C1212260C3B0CEC0BF012170C2F0CE30C320CE6076F0B8907720B8C0BF3121A -05D7099C077E0BB705E805FF0A300A2D06AE0B1606940A530BA50722071F0B3D0BC90BC50BC20BBF08230C0E0BFC0BF6 -0D28082E08260CD805D1092D0939086C036C035D034A033703A80399038A037B03490336032303B70389037A036B035C -03FE03B603A70398042A041F04140409044A0443043C04350AF704780471045100000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013B913B2 -0000000000000000000000000000000000000000000000000000000000000000000000000000276E0000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -067E05E300000000000000000000083E000000000E7A0E72000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000027740EC12772276C -00000000000000000000000000000000000000000EFB0000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000261C263622C52608276220AB1FAE237820DD267C2144276224FC243422392142 -265A25D025B6259823EE23A2234C23061FC027062670257C259623B423102095258E23882198272E25BC252A225325D8 -23DA235822CF21D12065202F1FE32660244423B2230C22872630259E259225082462272C271E26C4268A256E24DE2482 -21DF211F25F22732246623CC251A24BA2186211D26C0261824D6237C236223082520206326A024EA24E0249820332035 -2255260026A4257A21701FB425F823062075242423E4220B1FA421FD1FEB246A209F24D42293234225EA257E244A2115 -225D233E264823281FCE2422226D255A24CA22F62031200F2069267A25F0254622A121D9214A20C3270A2698246C238A -22C1205727402734222D21BF2642231E23A823822283223B251624E424922400268C264E2582263A23A020CD20592043 -220721CF25EA25C623DE24B82324226921A2217020FB1FD6250223FA23EC220D26C626BE267E25122674248C1FE526E4 -1FF71FC4221926B2230622992182217226582588243223AE2055269E22B9275E2370235422E522DF24D22460242023F2 -26A62243201326EA263C236421941FEF23E422E9221D21F5218A20BB204726AA234622FC22D722AE25C824F8242A23F0 -207D26B8267825CE240223B020BD23722736272226AC259024A8252E236022E3239C23D824C024AE204925621FD225FE -24C6225721C72041264022BF234E216821D525DE26A225C00000000020E91FFF000022B700002113243E23DC20370000 -248A2480247E24700000250424C226CA000025F600002594000026662650000026F626F40000000026B02662272A26F8 -206120031FF91FE720EF20E12087206721882117211120F3222B22272213218C22BB22A5228D223723802368235A22F8 -246423F423BA23AA24782474247622F224882486247C247A24E424B224A4249A250A24F624EC24E82580254C254C2532 -25FC25FA25E025D42650264C2620261E220F26E826DC26BA00000000253E28331FE1200D202D1FA8206D205F20172001 -20ED20DF20D720E121462140211B211321D721D3215C21542223221721FF21EF22372225222B221B227B227722712245 -22D122CF22B7228F23542328232022DB238E23802376237A23D623BC245623AA241C240A23FC23DC2440243E2430242E -246824502452244824DA24BE24B224A62564250A24F224E425DC25D625B2257825EE25F625EC25E025FC25F425F825FA -2656263E2620260226BA26A82682267226E226DC26D426CA28092762271226E81F501F3C281B280728912861284F1F52 -000000002760275800000000000000000AE10AE60AE20ADE00000D2B0D2B0AE500000000000000000000000000000000 -13F900000000000013F613FC13F313F00000000000000000147D000014300000141F141A13FF145114621446140B1439 -1475147202F4147814041401146E146A141C1417140F14070000142A14271421143B14361433142D0000144800001443 -14530000144E144B145F145C000014561424147A14671464140A1459143E141218C918C918C318C318CB18CB18C918C9 -18CF18CF18CB18CB18C718C718CF18CF18CD18CD18C718C718C518C518CD18CD18E718E718C518C518E918E918E718E7 -18D318D318E918E918D118D118D318D318D518D518D118D118D718D718D518D518DD18DD18D718D718DF18DF18DB18DB -18E318E318D918D918EB18EB18E118E118EF18EF18EB18EB18F318F318EF18EF18F118F118F318F318F518F518F118F1 -18F718F718F718F718FB18FB1918191818F918F918FB18FB163C163C18F918F900000000191519150000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -18ED00000000000018AE18ED18ED18ED18B218AA18AA18AE190D190D190618B2190B190B1900190018B618B618B618B6 -1878187814C014C0189C189C18B818B818A818A818AC18AC18B418B418B018B018A018A018A018B4190F190F190F190F -18A018901880187C14A914A2149F18A414C914C214BF14B6151514F814E314D8152F1526151D151814DC14CD15371532 -14E7157F157C14E015C515B715B015A51650164D163E160D167316701665165B16B21620168F168A16F016ED16EA16B5 -1706170116FE16F71724171F171C170D1730172D172A172717551741173E173316241637177317641504150014FC178B -17D8150C150815D11814180317FA17EB182A181F181C18171855184E1847182D158F1872186F185E0064005D18421599 -008000790072006B18941890188C188814B3148618A418A014C214BF14B914B6150F14F814F514F21523152015181515 -1532152F15291526171F171C170116FE173E173317301724178B162416371741180017FD15D1179018171814180E1803 -185E185B18581842187C1872186F1869189818901884188014B614A914A2149F14E314D814C914BC15371526151214F8 -157C14E014DC14CD15B715B015A514E7163E1618160D15C51665165B1650164D1620168F168A167016ED16EA16B516B2 -170D170616F716F01730172D172A17271773176417551733150014FC148B163717EB17D815D11504181C1811180317FA -184E18471830181F18901698185E185514F814BC14B6189815C5152C152615121730160215F715D41811180316371733 -16D716D01698185E16AA1685168216DE15D716C716C416AD153B1608160515DA14EB14D514D114A616681648164514AD -15F115E615DF166B161B15C215F415F716AA16851682166215D716C716C416AD153B1608160515DA14EB14D514D114A6 -16681648164514AD15F115E615DF166B161B15C215F415F715F115E615DF16621673160215D415F715DF15B715B015A5 -168A167315F115E600000000148E148E0000000000000000000000000000000000000000000000000000000000000000 -14DF14DB14DB14CC150314FF14FB14E6156C1570154E154E15CC15AC15A815B315D015D015C815CC15E9164116101610 -15FA15FA15E215E9165E165315FE15FE167A16761676165E169E169E1692167E16BC16C016B816A21714171016F316F3 -1758176B176F1767177D17761776175817B617AD17A9177D17C117BD179E17961822179A0000000017DF17F217EE1826 -1806180A17E317DF14D414AC18611861150B14EA14EE14D01552153A15561507165715ED161415BA184A185117811760 -17F6171817CC1865173A16A6176717101736175C17C517DB1565153E17DB175C173614A516FA17A217E715BE16411692 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000148414891709163A16961594161E17B1 -1542162716231635000000000000159C0000000000000000000000000000000000000000000000000000000000000000 -05401BE21BE002F61C260093008D05460000000002FF1C28000000000000000000000000000000000000000000000000 -0000000000000000000000000000000009961B181B1A02FC0E3E00A500A109961BF41BFE1BFA0E421BE41BEA1BE81BF6 -1BF01BEE1BEC1BE6098E000000001BF2000C000C000C0992099609960996000C000002FA1BE002F6008D009305400546 -0E3E00A500A11B1A00971BFE1BFA0E4202F802F402F2009D00000544055905480566009B009909900000000000000000 -0000005A16CA005716CD00680000006116DB007616D4006F16E5008416E2007D14941491149114801497183A183A1494 -1875187518751497149D14821482187514C5149D149D149D14C714C714C714C5151B151B151B14C714A014A014A0151B -14A314A314A314A014AA14AA14AA14A3158D158B158B14AA14B414871487158D15A315A315A314B415DD15DD15DD15A3 -160B160B160B15DD164B164B164B160B166E166E166E164B168816881688166E168D168D168D168816B016B016B0168D -16E816E816E816B017041704170416E81722172217221704159715971597172214B714B714B7159714BA14BA14BA14B7 -148C148C148C14BA14C018331833148C14A714A714A714C0174D1749174914A7174617511751174D0000000000001746 -00970095008D0000009F009D009B009902F402F200A500A1030302FA02F802F6030F0343031403050392038303740365 -0546054003B003A1009305590544054805E305D5056805660687067E062905E6071A060706CF06AC07A7078107230734 -0861076D083E06AF077306B2056B0890098E060A095D0682099609940992099009A3093A0692099806020ADC0A800A31 -0B7C073E0AE30B10078A0B3E05D30A2B08430A1405D80CD60DE4086D0A270BA60E3E061106950B441BD50E440E420E40 -1BEE1BEC1BE21BD71C851F041F0B1BE01CC71CB71CAC1C9E1D9D1EC61EBE1EB11CAE1CA01C871CC51CF01CD31CC91CB9 -1D5C1D481D3F1D221D891D7C1CCD1D6C1DA41D9F1CAA1D8E1DC01DBE1D551C8D1DE81DCA1DBC1D3D1CE01E4E1E231E04 -1EAF1E9E1CD11E8B1ECA1EC81EC01EB31D0C1EE31C9C1CE4008B00881CB51EF11ABB19F419EF1A7F19FB1ABF1ABD19F6 -1AC31AC11A021A001ACB1AC91AC71AC51A111A0C1A071A511A1A1A181A131A5B1A391A2E1A2C1A2200001A481A431A3E -1A8319F2000000001A8B1A891A871A851A8F1A8D000000001A971A951A931A371A201A99000000001AA31AA11A9F1A9D -1A2A1AA5000000000000000000001AA900090E4E0E480E4600001B2F0E4A0E4C1B381B361B311BCF00001BD31BD11B3D -00000000000000000000000000000000000000000000000000000000000000000E630F350F3300000F1C00000E950F0E -0E9B0F1E0F2027760EA70E9F1B140E9D0EAB0EAF0EB30F280EB90F120E740F100EC30F2C0F2A0EEF27D30EC7277027D1 -0ED70E6D27D50EFD27D70EDF05D80ED90F260EE70EE50EE30EF10F2427780F220F180EFF00001BDC0E870E850F0C0F1A -000027DB27D90E8900000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000277A00000000000000000000277D00000000000000000000000000000000 -278000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000278627830000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000002789000000000000000000000000278C -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000002792000000000000000027950000278F -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -279B27980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000279E000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000027A427A100000000 -27B327AF27AB27A700000000000027B70000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000027BB00000000000027C227C927BE27C600000000000027CD0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -05E605E305D5056806AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B -093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843 -061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E -0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE3000006020B3E05D30A2B0B7C0A1405D80CD6078A -086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000001000000000000000000000692000000150009000000000000030F03430000000000000000120F0003 +0000078A031400480000049403C603CE058605730570056D05F8000005B005A606580631062E062B06F906EA06E706E4 +07AC07A907920000000007E607C207AF08BA08B708B4000000000000096208CE09C509B209AF09AC0A4A000009EF09E5 +0AB60A8F0A8C0A890B580B4C0B490B460C610C5E0C44000000000C9B0C770C640D710D6E0D6B00000E1E00000E0F0D85 +09CB058C09C805890A3E05EC0A0D05CE0A4405F20A4105EF0A71061A0A4705F50AA50647000000000AB306550AB00652 +0ABC065E0AD306750B0406A00AFE069A0B0D06A90B0706A3000000000B1906BA0B5206F00B4F06ED0B6E070F0B5506F3 +0B3A06D8000006F60BB1072E0B76071707500BCF0743000007400BD207460BDC078F000000000BCC07980C50079E0C41 +000000000F300C4A0C9107DC0C8607D1000000000CA507F00D20085B0D0A08450D2E086F0D10084B0D4C088D0D350876 +0D6008A90D3B087C000000000D5708A00D7B08C40D7408BD0D9B08E40D8208CB0DC709100D9E08E70E1209650DEC0942 +09820E2C097C097108430614060D0E32000000000CB107FC0000000000000000000000000000000008F3000000000000 +0000000000000DAA000000000000000000000000000000000000000000000000000000000000000007360A6A0613060C +078607830BBC073D070309F605B70C3508EA0CA807F30B6208D50D9008D90DA108D10D9408DD0D8C09E805A900000D88 +0E680E5D09E105A20B0A06A6000000000CCF081A0BAB07280F070E820CD2081D0A67061006090B79000000000AFB0697 +09F205B30C3E078C0E6F0E600E650E5A09FC05BD09F905BA0AC206640ABF06610B6807090B6507060CAE07F90CAB07F6 +0D1608510D13084E0DA708F00DA408ED0D5D08A60D49088A0B2206C300000000000000000000000009DE059F00000000 +0C9E07E90ACC066E0C9407DF0C7E07C90E18096B0C9707E2000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000A14073E0EB70B100DE40EE90EE10EDD +000000000000069500000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000004B00240012000F00000000002700060B4408430A2B0EB10000000000000F0A +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +002B00000004001A000000000000001D0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000F2E00000054000000000000054600000000000000000000000007410F45001C0003 +000010110FC00FA0109910730000104A00000000000011E2000000000000000000000000000000000000000000000000 +00000000000000000000000000000000107C101A0000000011D21176115210EC00000000000012700000000000000000 +0000000000000000000000000000000000000000000000000000000000000000126911DB00000000000012A812601232 +1073106E11CB11470000124B1299107C0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000001255124D120B00000000114D100A00000000106A00000000000000000000 +130A00001313130D1301000000000000000000000000000000001334131F132B00000000000000000000000000000000 +000000001325000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000013790000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000135400001361135B13C600000000000000000000000000000000139C13731381 +0000000000000000000000000000000000000000000000000000000000000000000000000000000013D013CD00000000 +000000000000000000000000000000000000136613160000000000000000000000000000000000000000000000000000 +134B130713481304135E13100000000013E213DD00000000136E131C136913191376132200000000138C132E137C1328 +13EA13E5000000001399133113BD134313A2133A139F13370000000013AD133D0000000013B613400000000000000000 +000000000000000013ED0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001494149100000000000018751497183A00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000001906183D149A000000000000000018BC0000000000000000 +000018FD0000191800000000000000000000000000000000000000000000000019150000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000192D00000000000000000000 +000000001936000000000000000019390000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000019241921191E191B19331930192A1927 +000000000000000000000000000000001945000000000000000000000000194800000000000000000000000000000000 +000000000000000019420000193F193C0000000000000000000000000000000000000000000000000000000000000000 +19570000000000000000195A000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000001951194E194B00000000195400000000 +000000000000000000000000000000001963000000001966000000000000196900000000000000000000000000000000 +0000000000000000000000001960195D0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000196C0000000000000000000000000000000000000000000000000000000000000000 +1975196F0000000000000000000019720000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000001978000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000197B19850000000000001981197E000019880000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1991198B00000000000000000000198E0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00001994000000000000199E199A19970000000000000000000000000000000000000000000000000000000000000000 +19A100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000019AA000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000019A719A400000000000000000000000000000000000000000000000000000000000019AD +000000000000000000000000000000000000000000000000000000000000000019B20000000000000000000000000000 +00000000000000000000000019B50000000019B80000000019BB000000000000000000000000000000000000000019BE +000000000000000000000000000000000000000019AF0000000000000000000019C100000000000019DC19E019C40000 +0000000019E319E700000000000000000000000019C70000000000000000000000000000000000000000000000000000 +19CD000000000000000000000000000000000000000000000000000019D00000000019D30000000019D6000000000000 +000000000000000000000000000019D9000000000000000000000000000000000000000019CA00000000000000000000 +0000000000000000000019EA000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000019ED000000000000000000001AE300000000 +00001AE900001AE600001AEF00001AEC00001AF200000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +1AF5000000000000000000001AF800001B0100001AFE1AFB000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000005D50E58056806870E7C062905E6071A060706CF06AC0000078107230734076D06AF0E8B07A7 +06920773056B0890093A1B040E910E8F0EA30EA10A800A310B7C000006020EA50E97078A0E7805D30BA60CD61B081B06 +086D0EC91B0C0A27114B114911471B0E0A140AE3129B129911491147086D0A270000129B1299124D0000000000000000 +000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000E930000000000000EA50E6B0E9909A3 +0EB50EAD0EA90ADC1B100EBF0EBD0EBB0F161B120EC50F140ED10ECF0ECB0ECD0EEB0EDB0ED50ED30EF50EF30E800EED +06110EF90EF71B0A11CB0F050F030F010A1605DA0A0A05CB0A1C05E00A1905DD0A6E06170A4D05FB0A7D06260A74061D +0A7A06230A7706200AAC064E0AA8064A0AD9067B0AD606780AF206840ACF06710B1C06BD0B01069D0B1F06C00B2506C6 +0B2B06CC0B2806C90B5B06FC0B7107120BAE072B0BA807250BD507490BB407310BE207560BD8074C0C1507750BDF0753 +0C1B077B0C1807780C4D079B0C4707950C5307A10C5607A40C8207CD0C7A07C50C8D07D80C8907D40CF2083B0CEF0838 +0D1908540D0D08480D23085E0D1C08570D4208830D3808790D3E087F0D3108720D51089D0D4508860D6608AF0D5A08A3 +0DC4090D0D6308AC0DCA09130DCD09160D7E08C70D7708C00DE1092A0DDE09270DE9093F0DE6093C0DEF09450DF20948 +0E0409570DF8094B0E1B096E0E07095A0E3809880E2F097F0D540B2E0E3B098B0D3809A90E240DF50000000000000000 +09EC05AD09FF05C009B5057609B9057A09BD057E09C1058209D205930A0205C309DA059B09CE058F0A0605C709D60597 +0AB9065B0AC506670A9606380AA206440A9E06400A9206340AC8066A0A9A063C0B6B070C0B5F07000CA207ED0CC80813 +0C6707B20C6B07B60C6F07BA0C7307BE0CB808030CCB08160CC0080B0CB407FF0CC4080F0CBC08070D9808E10DC1090A +0DAD08F60DB108FA0DB508FE0DB909020E0C095F0DBD09060E2109740E270977000000000E1509680000000000000000 +111E10FC111B10F91130110E112711050F730F510F700F4E0F850F630F7C0F5A1163115811601155000000001167115C +0FB10FA60FAE0FA3000000000FB50FAA11A21180119F117D11B4119211AB11890FE80FC60FE50FC30FFA0FD80FF10FCF +11FC11ED11F911EA120411F5120011F1102F1020102C101D10371028103310241243123812401235000000001247123C +105B10501058104D00000000105F1054128A127B1287127812921283128E127F10820000107F0000108A000010860000 +12D412B212D112AF12E612C412DD12BB10C1109F10BE109C10D310B110CA10A81152114F10EC10E511D211CF1176116F +1260125D1232122F0000000012A812A1112211001139111711341112112B11090F770F550F8E0F6C0F890F670F800F5E +11A6118411BD119B11B8119611AF118D0FEC0FCA10030FE10FFE0FDC0FF50FD312D812B612EF12CD12EA12C812E112BF +10C510A310DC10BA10D710B510CE10AC114410E810F310F61140113D000010EF0F450F420F480F4B002A11CD002A0F92 +11C811720020005111C411C1000011790FC00FBD0FA00F9D00350031002D100711E211DE11D511D811E6120800000000 +1011100E1014101700440040003C00001270126C12631266127412961252124F10731070107610790998001C00181067 +12FA12A40000000012F612F3000012AB10991096104A104700000039000310E000010001000100010001000100010001 +00000001000100010000000000000000000000001B160000004E00000000000000000000000000000000000000000000 +0000000000000000000002FF02FC02FA000000000000000000010000000000001B1C0000000000001B2B1B2800001B1F +00000000000000000000000C0000008F0000000000000000056300000000000000000000009205600000000000000000 +00000000000000001B230000000000000000000000000000000100000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000AE3030503920383037403651B5A02F403B003A10B3E00A500A10544 +030F03430314030503920383037403651B5A02F403B003A1000000A500A105440B44078A0A8006920A2B0B7C0B100EA1 +08430CD60B3E05D30000000000000BA60000000000000000000000000000000000000000000008420000000000000000 +00000000000000000000000000000000000000000000000000000000000000000E5005E309A509A10E7E0A250A210000 +06AC06020E5300000E740B1006AC06AC0A2B073406CF06CF0000078907810000076D083E06AF000000000000076D076D +0000089A089208660000077F0000060A05B0071A0000060A0A80000005E305D507230000067E06291415140D13FF078A +068000000AE3141A10630F971149124B0000000000001B580A800A3105E6000000000000073E0AE30000000000000000 +03CA03C103E203DA0498045903D2045503DE04E703D604CF03BE051104EB049C06DE06D406D106CF0922091E091B06B2 +09530950068206E1072305E605E307340B400B360B330AE30DD90DD50DD2086D0E000DFD0B440B4305D30A3109A30A2B +0000000000000000000000000000000000000000030D0000000000000000000000000000000000000000000000000000 +1B3A1B3300000000000000000000000000000000000000000000000000000000000000000000000000001B3F00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000001B451B481B4200000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000001B4D000000001B5200000000000000001B5500000000000000000000000000000000 +00000000000000000000000000000000000000000000000000001B5F00001B5C00000000000000001B6E00001B651B62 +0000000000001B71000000000000000000000000000000000000000000000000000000001B7500001B7B000000001B78 +000000001B7E000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00001B840000055600000000000000000000000000000000055B054A1B810000000000001B8A1B87000000001B901B8D +000000001B961B930000000000000000000000001B9C1B99000000001BA81BA5000000001BAE1BAB0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000001BC01BBD1BBA1BB70000000000000000000000000000000000000000000000000000000000000000 +1BB41BB11BA21B9F00000000000000001BC61BC300000000000000001BCC1BC900000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000001BE61BE400000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000365030F0343031403A1039203830374 +0342032F031C03B0038203730364035503F703AF03A0039100E600E200D900A300F600F200EE00EA00B100AC00A700FA +00C500C000BB00B600DD00D400CF00CA036803590346031903A403950386037703450332031F03B30385037603670358 +03FA03B203A303940172016E016A01660182017E017A01760192018E018A018601A2019E019A019601B201AE01AA01A6 +01C201BE01BA01B605D5056801CA01C6067E062905E605E3060706CF06AC0687078107230734071A076D083E06AF07A7 +06B2056B08900861060A095D068207730A3109A3093A06920B1006020ADC0A800A2B0B7C073E0AE30CD6078A0B3E05D3 +0BA608430A1405D80B440DE4086D0A270000030506110695000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B69 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000552054F054200000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000001BD90000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000006B2073E00000000000000000000000000000000 +00000000000000001BDE0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000232E0000000000000000000000000000000000000000000000000000000000000000000000000000 +27640000000000000000000000000000000000000000000000000000000000001FB81FB01FAA1F981FCA1FC61FC21FBC +201120091FFD1FD02039202920212019206B2057203D203B207F207920772073209D209B208F208D210120F720A920A1 +2131212F212B212121662160214A21392180217E217C217621AA21A4218E218C21C121BA21B221AE21E121DD21DB21C5 +21F321EB21E721E322492247223D220122972295228B2289032522A3229F229B231222D5032922C3232C232623202318 +233623342332233023BE23B82394233823C823C423C223C023E623E223D423CA240E240C240824062428242624142412 +243C243A24382436245C245A2458244624A02490248E246E24CE24BC24AC24A8250424FE24F424F02510250E250C2508 +2530252C251E251C2540253C25362534254A25482544254225C025BE25A4259A25E225DE25DA25C4260A2606260425E6 +26262624260E260C264426362634262A266C265C264A26482692267C2678267626B426AE269C269426CE26CC26C826BC +26DA26D826D226D026F026EE26EC26DE270C270226FE26FC271627142710270E2724271C271A2718273A273827322730 +27442742273E273C27542750274C2746275E275C275A2756000000002766276200000000000000000000000000000000 +000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001BF800000000000020832081207F000000000000000000000000000000000000000000000000 +000000000000000000001C3000001C2D00001C3600001C3300001C3C00001C3900001C4200001C3F00001C4800001C45 +00001C4E00001C4B1C5400001C510000000000001C57000000000000000000001C6000001C5D1C5A1C691C6600001C63 +00001C6F1C6C0000000000001C781C750000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000001C2A00870000000000001C7B1C820000008A00000000000000000000000000000000 +000000000000000000001CF200001CD500001D4100001CA500001D5E00001D4A00001D7900001D6E00001D8B00001D7E +00001D9A00001D901DA600001DA10000000000001CBF000000000000000000001DEA00001DD51DCC1E101E0600001DF1 +00001E2D1E250000000000001D591E500000000000000000000000000000000000000000000000000000000000000000 +00000000000000001EF3000000001CB000001F061F011EFC1D501F0F0000000000000000000000000000000000000000 +000000000000000000000000000000001ABB19F419EF000019FB1ABF1ABD19F61AC31AC11A021A001ACB1AC91AC71AC5 +1A111A0C1A071A511A1A1A181A131A5B1A391A2E1A2C1A2219F21A481A431A3E1A891A871A851A831A371A8F1A8D1A8B +1A991A971A951A931AA11A9F1A9D1A201AA91A2A1AA51AA31ACD1A4F1A4D1A7F1AD51AD31AD11ACF1ADB1A531AD91AD7 +1A591A571A551ADD1A631A611A5F1A5D1A6B1A691A671A651A731A711A6F1A6D1AE11ADF1A771A751AAB1A7D1A7B1A79 +1AB31AB11AAF1AAD00001AB91AB71AB51FC61F98000000001FAC1FA020F91F9E1FA61FBC24161FA21FD02103213E1F9A +01E901E001D701CE020D020401FB01F20245023C0233022501DB01D20257024E01FF01F601ED01E40237022902110208 +025B0252024902400000021E0216022E02A0026802700260028402640288027402C402B00290026C02A402EC02B802C0 +02D002B402BC02AC02D402E402C8029802A8029C0278028C029402E8027C02CC02E002DC028002D824B0229521C320D3 +00000000000000000000000000000000041C04110406083104400439043204270475046E044E044704850482047F047C +1A0219FB19F619EF1A1A1A131A0C1A071A3E1A391A2E1A2219F819F11A481A431A0E1A091A0419FD1A301A241A1C1A15 +1A4A1A451A401A3B00001A1F1A271A3320F91F9E1FC61F9820111F9C20131FC823940329207F1FBE2101267C22D52338 +22F222CD22ED0325247C261023CE20B9214A241A2494205D234820911FFB2654213C20251FDD26E021AC1FA21FAC1FA0 +2164216A207B20B32089261A1FDB2442048E048B0488213504B704B404B1049104C304C004BD04BA04E404CC04C904C6 +04D604A3034E033B05290518050304F2034D033A0327053A07390A820A8506B41CB91CAE1CA01C871D221CF01CD31CC9 +1D6C1D5C1D481D3F1D8E1D891D7C1CCD1C8D1DA41D9F1CAA1D3D1DC01DBE1D551E041DE81DCA1DBC1E8B1CE01E4E1E23 +1EB31EAF1E9E1CD11CE41ECA1EC81EC01EF11D0C1EE31C9C1FD81F041EFF1EFA1C9A1C941C8F1C891CBB1CB31CA81CA2 +1CE21CCF1CCB1CC21CDD1CD81CEB1CE61CFF1D061CFA1CF51D1C1D151D0E1D0B1D3A1D331D2C1D101D611D571D531D44 +1D851D811D711D661D301DB21DA91D931DD81DE41DC61DBB1DFB1DF41DCF1DDF1E1A1E131DED1E001E301E441E1F1E09 +1E3E1E391E4A1E341E671E531E5B1E281E741E6E1E6A1E611E851E811E7D1E791EA01E951E921E8D1EBA1EB51D171EA4 +1ED81ED31ECE1EC21D1E1EE81EE51EDD03610352033F0311039D038E037F0370033E032B03BB03AC037E036F03600351 +03BA03AB039C038D04230418040D0402056A0A560B12042E0A5C0CE90C5B0A1221BC06DB0A630A5F22EF22AB213B22B2 +0BED12110C290CDD0689075B071C0B7E0C2C0CE00B8F0A2906010BF9121D1214068C07640B81068D0A590C0012200896 +12230C380AEF0B970C060B9A0A330C030C0A0B9D0A370A360C1E0BA10A3B0A3A07680B8506910C220D030CFD0CF90690 +0C1212260C3B0CEC0BF012170C2F0CE30C320CE6076F0B8907720B8C0BF3121A05D7099C077E0BB705E805FF0A300A2D +06AE0B1606940A530BA50722071F0B3D0BC90BC50BC20BBF08230C0E0BFC0BF60D28082E08260CD805D1092D0939086C +036C035D034A033703A80399038A037B03490336032303B70389037A036B035C03FE03B603A70398042A041F04140409 +044A0443043C04350AF70478047104510000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000013B913B200000000000000000000000000000000 +00000000000000000000000000000000000000000000276E000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000067E05E300000000000000000000083E +000000000E7A0E7200000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000027740EC12772276C00000000000000000000000000000000 +000000000EFB000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +261C263622C52608276220AB1FAE237820DD267C2144276224FC243422392142265A25D025B6259823EE23A2234C2306 +1FC027062670257C259623B423102095258E23882198272E25BC252A225325D823DA235822CF21D12065202F1FE32660 +244423B2230C22872630259E259225082462272C271E26C4268A256E24DE248221DF211F25F22732246623CC251A24BA +2186211D26C0261824D6237C236223082520206326A024EA24E02498203320352255260026A4257A21701FB425F82306 +2075242423E4220B1FA421FD1FEB246A209F24D42293234225EA257E244A2115225D233E264823281FCE2422226D255A +24CA22F62031200F2069267A25F0254622A121D9214A20C3270A2698246C238A22C1205727402734222D21BF2642231E +23A823822283223B251624E424922400268C264E2582263A23A020CD20592043220721CF25EA25C623DE24B823242269 +21A2217020FB1FD6250223FA23EC220D26C626BE267E25122674248C1FE526E41FF71FC4221926B22306229921822172 +26582588243223AE2055269E22B9275E2370235422E522DF24D22460242023F226A62243201326EA263C236421941FEF +23E422E9221D21F5218A20BB204726AA234622FC22D722AE25C824F8242A23F0207D26B8267825CE240223B020BD2372 +2736272226AC259024A8252E236022E3239C23D824C024AE204925621FD225FE24C6225721C72041264022BF234E2168 +21D525DE26A225C00000000020E91FFF000022B700002113243E23DC20370000248A2480247E24700000250424C226CA +000025F600002594000026662650000026F626F40000000026B02662272A26F8206120031FF91FE720EF20E120872067 +21882117211120F3222B22272213218C22BB22A5228D223723802368235A22F8246423F423BA23AA24782474247622F2 +24882486247C247A24E424B224A4249A250A24F624EC24E82580254C254C253225FC25FA25E025D42650264C2620261E +220F26E826DC26BA00000000253E28731FE1200D202D1FA8206D205F2017200120ED20DF20D720E121462140211B2113 +21D721D3215C21542223221721FF21EF22372225222B221B227B22772271224522D122CF22B7228F23542328232022DB +238E23802376237A23D623BC245623AA241C240A23FC23DC2440243E2430242E246824502452244824DA24BE24B224A6 +2564250A24F224E425DC25D625B2257825EE25F625EC25E025FC25F425F825FA2656263E2620260226BA26A826822672 +26E226DC26D426CA28492762271226E81F501F3C285B284728D128A1288F1F5200000000276027580000000000000000 +0AE10AE60AE20ADE00000D2B0D2B0AE50000000000000000000000000000000013F900000000000013F613FC13F313F0 +0000000000000000147D000014300000141F141A13FF145114621446140B14391475147202F4147814041401146E146A +141C1417140F14070000142A14271421143B14361433142D000014480000144314530000144E144B145F145C00001456 +1424147A14671464140A1459143E141218C918C918C318C318CB18CB18C918C918CF18CF18CB18CB18C718C718CF18CF +18CD18CD18C718C718C518C518CD18CD18E718E718C518C518E918E918E718E718D318D318E918E918D118D118D318D3 +18D518D518D118D118D718D718D518D518DD18DD18D718D718DF18DF18DB18DB18E318E318D918D918EB18EB18E118E1 +18EF18EF18EB18EB18F318F318EF18EF18F118F118F318F318F518F518F118F118F718F718F718F718FB18FB19181918 +18F918F918FB18FB163C163C18F918F90000000019151915000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000018ED00000000000018AE18ED18ED18ED +18B218AA18AA18AE190D190D190618B2190B190B1900190018B618B618B618B61878187814C014C0189C189C18B818B8 +18A818A818AC18AC18B418B418B018B018A018A018A018B4190F190F190F190F18A018901880187C14A914A2149F18A4 +14C914C214BF14B6151514F814E314D8152F1526151D151814DC14CD1537153214E7157F157C14E015C515B715B015A5 +1650164D163E160D167316701665165B16B21620168F168A16F016ED16EA16B51706170116FE16F71724171F171C170D +1730172D172A172717551741173E173316241637177317641504150014FC178B17D8150C150815D11814180317FA17EB +182A181F181C18171855184E1847182D158F1872186F185E0064005D18421599008000790072006B18941890188C1888 +14B3148618A418A014C214BF14B914B6150F14F814F514F215231520151815151532152F15291526171F171C170116FE +173E173317301724178B162416371741180017FD15D1179018171814180E1803185E185B18581842187C1872186F1869 +189818901884188014B614A914A2149F14E314D814C914BC15371526151214F8157C14E014DC14CD15B715B015A514E7 +163E1618160D15C51665165B1650164D1620168F168A167016ED16EA16B516B2170D170616F716F01730172D172A1727 +1773176417551733150014FC148B163717EB17D815D11504181C1811180317FA184E18471830181F18901698185E1855 +14F814BC14B6189815C5152C152615121730160215F715D4181118031637173316D716D01698185E16AA1685168216DE +15D716C716C416AD153B1608160515DA14EB14D514D114A616681648164514AD15F115E615DF166B161B15C215F415F7 +16AA16851682166215D716C716C416AD153B1608160515DA14EB14D514D114A616681648164514AD15F115E615DF166B +161B15C215F415F715F115E615DF16621673160215D415F715DF15B715B015A5168A167315F115E600000000148E148E +000000000000000000000000000000000000000000000000000000000000000014DF14DB14DB14CC150314FF14FB14E6 +156C1570154E154E15CC15AC15A815B315D015D015C815CC15E916411610161015FA15FA15E215E9165E165315FE15FE +167A16761676165E169E169E1692167E16BC16C016B816A21714171016F316F31758176B176F1767177D177617761758 +17B617AD17A9177D17C117BD179E17961822179A0000000017DF17F217EE18261806180A17E317DF14D414AC18611861 +150B14EA14EE14D01552153A15561507165715ED161415BA184A18511781176017F6171817CC1865173A16A617671710 +1736175C17C517DB1565153E17DB175C173614A516FA17A217E715BE1641169200000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000148414891709163A16961594161E17B11542162716231635000000000000159C +000000000000000000000000000000000000000000000000000000000000000005401BE21BE002F61C260093008D0546 +0000000002FF1C2800000000000000000000000000000000000000000000000000000000000000000000000000000000 +09961B181B1A02FC0E3E00A500A109961BF41BFE1BFA0E421BE41BEA1BE81BF61BF01BEE1BEC1BE6098E000000001BF2 +000C000C000C0992099609960996000C000002FA1BE002F6008D0093054005460E3E00A500A11B1A00971BFE1BFA0E42 +02F802F402F2009D00000544055905480566009B0099099000000000000000000000005A16CA005716CD006800000061 +16DB007616D4006F16E5008416E2007D14941491149114801497183A183A14941875187518751497149D148214821875 +14C5149D149D149D14C714C714C714C5151B151B151B14C714A014A014A0151B14A314A314A314A014AA14AA14AA14A3 +158D158B158B14AA14B414871487158D15A315A315A314B415DD15DD15DD15A3160B160B160B15DD164B164B164B160B +166E166E166E164B168816881688166E168D168D168D168816B016B016B0168D16E816E816E816B017041704170416E8 +1722172217221704159715971597172214B714B714B7159714BA14BA14BA14B7148C148C148C14BA14C018331833148C +14A714A714A714C0174D1749174914A7174617511751174D000000000000174600970095008D0000009F009D009B0099 +02F402F200A500A1030302FA02F802F6030F03430314030503920383037403650546054003B003A10093055905440548 +05E305D5056805660687067E062905E6071A060706CF06AC07A70781072307340861076D083E06AF077306B2056B0890 +098E060A095D0682099609940992099009A3093A0692099806020ADC0A800A310B7C073E0AE30B10078A0B3E05D30A2B +08430A1405D80CD60DE4086D0A270BA60E3E061106950B441BD50E440E420E401BEE1BEC1BE21BD71C851F041F0B1BE0 +1CC71CB71CAC1C9E1D9D1EC61EBE1EB11CAE1CA01C871CC51CF01CD31CC91CB91D5C1D481D3F1D221D891D7C1CCD1D6C +1DA41D9F1CAA1D8E1DC01DBE1D551C8D1DE81DCA1DBC1D3D1CE01E4E1E231E041EAF1E9E1CD11E8B1ECA1EC81EC01EB3 +1D0C1EE31C9C1CE4008B00881CB51EF11ABB19F419EF1A7F19FB1ABF1ABD19F61AC31AC11A021A001ACB1AC91AC71AC5 +1A111A0C1A071A511A1A1A181A131A5B1A391A2E1A2C1A2200001A481A431A3E1A8319F2000000001A8B1A891A871A85 +1A8F1A8D000000001A971A951A931A371A201A99000000001AA31AA11A9F1A9D1A2A1AA5000000000000000000001AA9 +00090E4E0E480E4600001B2F0E4A0E4C1B381B361B311BCF00001BD31BD11B3D00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000277A00000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000277D +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0E630F350F3300000F1C00000E950F0E0E9B0F1E0F2027760EA70E9F1B140E9D0EAB0EAF0EB30F280EB90F120E740F10 +0EC30F2C0F2A0EEF28130EC7277028110ED70E6D28150EFD28170EDF05D80ED90F260EE70EE50EE30EF10F2427780F22 +0F180EFF00001BDC0E870E850F0C0F1A0000281B28190E89000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000002780000000000000000000002783 +000000000000000000000000000000002786000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000278C278900000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +278F00000000000000000000000027920000000000000000000000000000000000000000000000000000000000000000 +2795000000000000000000002798000000000000000000000000279B0000000000000000279E00000000000000000000 +00000000000000000000000000000000000000000000000027A1000027A4000000000000000027A70000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000027AD000000000000000027B0000027AA +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +27B627B30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000027B9000000000000000027C027CD27BC000027D027BF27C427D1 +00000000000027C300000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000027DA27D727DB000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000005D5056800000000067E062905E605E3060706CF06AC0687078107230734071A076D083E06AF07A7 +06B2056B08900861060A095D06820773030F03430314030503920383037403650000000003B003A10000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000027E427E10000000027F327EF27EB27E700000000000027F700000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000027FB0000000000002802280927FE2806 +000000000000280D00000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000005E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723 08900861076D083E0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C -0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E30000056800000687000000000000071A06070000 -06AF07A707810000089008610000083E0682077306B2056B093A0692060A095D0ADC00000A3109A3073E0AE30B100000 -0B3E05D30A2B0B7C0A1405D80CD60000086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E0629 +0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF +06AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE300000602 +0B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E0629 0734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D0ADC0A800A3109A3 -073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE405E6000005D50568 -00000687067E06290734071A0607000006AF07A707810723089008610000083E0682077306B2056B093A06920000095D -0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE4 -05E6000005D5056800000687067E06290734071A060706CF000007A70000072308900861000000000682077306B2056B -093A06920000095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843 +073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E300000568 +00000687000000000000071A0607000006AF07A707810000089008610000083E0682077306B2056B093A0692060A095D +0ADC00000A3109A3073E0AE30B1000000B3E05D30A2B0B7C0A1405D80CD60000086D0A270BA60843061106950B440DE4 +05E605E305D5056806AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B +093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843 +061106950B440DE405E6000005D5056800000687067E06290734071A0607000006AF07A707810723089008610000083E +0682077306B2056B093A06920000095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A +086D0A270BA60843061106950B440DE405E6000005D5056800000687067E06290734071A060706CF000007A700000723 +08900861000000000682077306B2056B093A06920000095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C +0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF +06AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE30B100602 +0B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE406AF07A70781072308900861076D083E +0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A +093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843 061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E 0682077306B2056B093A0692060A095D0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A -086D0A270BA60843061106950B440DE406AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D -0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A093A0692060A095D0ADC0A800A3109A3 -073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE405E605E305D50568 -06AC0687067E06290734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B093A0692060A095D -0ADC0A800A3109A3073E0AE30B1006020B3E05D30A2B0B7C0A1405D80CD6078A086D0A270BA60843061106950B440DE4 -05E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723061106950B440DE4000000000E8D0E76 +086D0A270BA60843061106950B440DE405E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723 +061106950B440DE4000000000E8D0E760F990F970F950F40100A0FBB0FB90F9B103F103D103B100C1063104510431041 +106C106A100A106510921090108E106E114710E31B50077F116B114D114B1149120B11CD11CB116D122B1229120F120D +1255124D124B122D1299125B125912571B4B129F129D129B1299120B11CB114D0F950F40124B124D0FB90F9B0F990F97 +103B100C100A0FBB10431041103F103D100A106510631045108E106E106C106A1B50077F10921090114B1149114710E3 +11CB116D116B114D120F120D120B11CD124B122D122B1229125912571255124D129D129B1299125B11CB114D1B4B129F +124B124D1299120B0F990F970F950F40100A0FBB0FB90F9B103F103D103B100C1063104510431041106C106A100A1065 +10921090108E106E114710E31B50077F116B114D114B1149120B11CD11CB116D122B1229120F120D1255124D124B122D +1299125B125912571B4B129F129D129B1299120B11CB114D0F950F40124B124D0FB90F9B0F990F97103B100C100A0FBB +10431041103F103D100A106510631045108E106E106C106A1B50077F10921090114B1149114710E311CB116D116B114D +120F120D120B11CD124B122D122B1229125912571255124D129D129B1299125B11CB114D1B4B129F124B124D1299120B 0F990F970F950F40100A0FBB0FB90F9B103F103D103B100C1063104510431041106C106A100A106510921090108E106E 114710E31B50077F116B114D114B1149120B11CD11CB116D122B1229120F120D1255124D124B122D1299125B12591257 -1B4B129F129D129B1299120B11CB114D0F950F40124B124D0FB90F9B0F990F97103B100C100A0FBB10431041103F103D -100A106510631045108E106E106C106A1B50077F10921090114B1149114710E311CB116D116B114D120F120D120B11CD -124B122D122B1229125912571255124D129D129B1299125B11CB114D1B4B129F124B124D1299120B0F990F970F950F40 -100A0FBB0FB90F9B103F103D103B100C1063104510431041106C106A100A106510921090108E106E114710E31B50077F -116B114D114B1149120B11CD11CB116D122B1229120F120D1255124D124B122D1299125B125912571B4B129F129D129B -1299120B11CB114D0F950F40124B124D0FB90F9B0F990F97103B100C100A0FBB10431041103F103D100A106510631045 -108E106E106C106A1B50077F10921090114B1149114710E311CB116D116B114D120F120D120B11CD124B122D122B1229 -125912571255124D129D129B1299125B11CB114D1B4B129F124B124D1299120B0F990F970F950F40100A0FBB0FB90F9B -103F103D103B100C1063104510431041106C106A100A106510921090108E106E114710E31B50077F116B114D114B1149 -120B11CD11CB116D122B1229120F120D1255124D124B122D1299125B125912571B4B129F129D129B1299120B11CB114D -12FF12FD124B124D031403050000000003740365030F034303B003A103920383030F0343031403050392038303740365 -0314030503B003A103740365030F034303B003A103920383030F03430314030503920383037403650314030503B003A1 -03740365030F034303B003A1039203830000000000000000000000000000000000000000000000000000000000000000 -13521350134E1346136C13641359135713861384137F137113931391138F138A13A713A51397139513B413B013AB13A9 -13E0276A13C013BB13D713E813C913C41350134E134613DB13641359135713521384137F1371136C13971393138F138A -13AB13A913A713A513D313B413B213B013D513CB13C213C40000000013D9276800000000000000000000000000000000 -00000000000000000000000000000000158B14A0149D148214A314B4183300001597172214A7166E168D15A314BA14B7 -14871704160B16E814AA151B14C715DD16B01688164B158D18C118E518F518BF000014A0149D000014A300000000148C -1597172214A70000168D15A314BA14B700001704160B16E814AA151B14C715DD16B00000164B00000000000000000000 -000014A00000000014A30000000000001597000014A70000168D15A314BA000000001704160B000014AA0000000015DD -16B00000164B000018C1000018F50000000014A0149D000014A300000000148C0000172214A7166E168D15A314BA14B7 -00001704160B16E814AA151B14C715DD16B01688164B0000000018E5000018BF158B14A0149D148214A314B41833148C -1597000014A7166E168D15A314BA14B714871704160B16E814AA151B14C715DD16B01688164B158D0000000000000000 -158B14A0149D000014A314B4183300001597000014A7166E168D15A314BA14B714871704160B16E814AA151B14C715DD -16B01688164B158D000000000000000003F103160307030A04FA04DE04AB0468000005310520050B0000000000000000 -010A0106010200FE011A01160112010E012A01260122011E013A01360132012E014A01460142013E015A01560152014E -05E31BFC0162015E0000093605E5076D05E605E305D5056806AC0687067E06290734071A060706CF06AF07A707810723 -08900861076D083E0682077306B2056B076F06B1060A095D0933082A0869086300000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000761075E00000000000000000000076C -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000606000000000000000000000000000000000000000000000000 -00001D5C1D4D1C720000000000000000000000000000000000000000000000001DA620A521622249213E25E421331FC6 -229923A422B01FCC229D201B21F7204F2612240E24D82045224F237E20C1212526521F9E1F982265225F20B31FAC21AC -24A22484224B2626032922CD236E20B7266E20E72051241800000000000000001C0C1C041C001C181C081C201C101C1C -0000000000001C1400000000000000000000000020AF21F9000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000030F0343031403050392038303740365 -0000000003B003A1000000000000000027DD1FBA1FB21FB61FED1FE91FE71FDF1FF51FF91FF31FF12005200327E51F12 -1F1427DF20152007202327E3201B200B202D202B1FD420271F18203F203B28A120532051204D204B20672061205F1F1A -20752071206F206D2093208B20872085209920992099209720A720A3239627EB20B520B120AD27ED20C720C520BF20C9 -20D520D120CF20CB20DF20DB20DB20D920FD20EB20E520E320F520F120FF20EF2109210721232041210D210F2105210B -2129212727EF2119214821372133212D2150214E27F327F11F1C2156214C2152215E215E215A1F1E2170216E216C27F5 -217A217827F7217421841F20217E21E927FB21902192218C219A219C27FD21961F2221A821A6219E21B821B621B421B0 -21C91F2627FF1F2428B521D121CD21CB25382803280321DD28111F2821E521E51F2A21F121ED286522092205220321FB -22131F2C1F2E22112221221F22152805222B22292221222322352231222F2233224121BD22392237226322592251224D -2267225B2261280B2279280D2275226B227D1F30226F22731F32227F2285228122A7280F2291228D22BB1F3822B522C7 -201F201D1F341F361F6A252222BD22C922DD22D322D122CF22E71F3A281922D9281D22F822F422E11F3C22FE22EB22FA -230A23042302230023141F3E230E281F231C1F40231628212823232A232823222827233A282527F9234A233C23442340 -23562354235A235223502829235E235C23761F42236C236A23842366282B237423902386282F282D23921F44238C238E -27E1239E2398239A283523AC283123A6283723C623BC23B6283B283923D223D023EA1F4623E823E023F823F61F481F48 -1F4A240423FE23FC283F241E283D24102841242C280124241F4E1F4C28452843284B284728492448244E244E244C284D -1F5424541F5224522462245E28511F56247A28531F5824682496248A28572855249E249C249A1F5A24AA285B285B2859 -24B624B4285D1F5C1F6024C4285F1F5E286324D024C824CC24E624E21F6224DC286928671F6424EE286D24FA286B1F66 -286F250A250625002518287325142871252625241F6828132875215825281F6C253828172815287725501F6E2646253A -2554205B2552254E2879255C25582556256A2568255E255A25802576256C256025742572257025661F70287D287F287B -2887258A258625841F741F722881258C259C1F762885288325A825A225A0259E25B225AA25AC25A61F7825B425B025AE -25C21F7A25BA25B825CC25CA288925C4288B1F1625D21F7C25E81F801F7E288D288F260A260225F42628262226162614 -262C262E27E72893263E263827E926322664265E289728952680266A28992668268E2684268826861F822696289B2690 -26B61F84289D269A28A3289F26C221A028A526D61F881F8626E226E228A71F8A1F8C26F228A926E627082704270026FA -2720271228AB1F8E27281F921F90272628B128AF1F9428AD27441F96273A28B32752274E274A27480000000028B72756 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +1B4B129F129D129B1299120B11CB114D12FF12FD124B124D031403050000000003740365030F034303B003A103920383 +030F03430314030503920383037403650314030503B003A103740365030F034303B003A103920383030F034303140305 +03920383037403650314030503B003A103740365030F034303B003A10392038300000000000000000000000000000000 +0000000000000000000000000000000013521350134E1346136C13641359135713861384137F137113931391138F138A +13A713A51397139513B413B013AB13A913E0276A13C013BB13D713E813C913C41350134E134613DB1364135913571352 +1384137F1371136C13971393138F138A13AB13A913A713A513D313B413B213B013D513CB13C213C40000000013D92768 +0000000000000000000000000000000000000000000000000000000000000000158B14A0149D148214A314B418330000 +1597172214A7166E168D15A314BA14B714871704160B16E814AA151B14C715DD16B01688164B158D18C118E518F518BF +000014A0149D000014A300000000148C1597172214A70000168D15A314BA14B700001704160B16E814AA151B14C715DD +16B00000164B00000000000000000000000014A00000000014A30000000000001597000014A70000168D15A314BA0000 +00001704160B000014AA0000000015DD16B00000164B000018C1000018F50000000014A0149D000014A300000000148C +0000172214A7166E168D15A314BA14B700001704160B16E814AA151B14C715DD16B01688164B0000000018E5000018BF +158B14A0149D148214A314B41833148C1597000014A7166E168D15A314BA14B714871704160B16E814AA151B14C715DD +16B01688164B158D0000000000000000158B14A0149D000014A314B4183300001597000014A7166E168D15A314BA14B7 +14871704160B16E814AA151B14C715DD16B01688164B158D000000000000000003F103160307030A04FA04DE04AB0468 +000005310520050B0000000000000000010A0106010200FE011A01160112010E012A01260122011E013A01360132012E +014A01460142013E015A01560152014E05E31BFC0162015E0000093605E5076D05E605E305D5056806AC0687067E0629 +0734071A060706CF06AF07A70781072308900861076D083E0682077306B2056B076F06B1060A095D0933082A08690863 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0761075E00000000000000000000076C0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000006060000000000000000 +0000000000000000000000000000000000001D5C1D4D1C72000000000000000000000000000000000000000000000000 +1DA620A521622249213E25E421331FC6229923A422B01FCC229D201B21F7204F2612240E24D82045224F237E20C12125 +26521F9E1F982265225F20B31FAC21AC24A22484224B2626032922CD236E20B7266E20E7205124180000000000000000 +1C0C1C041C001C181C081C201C101C1C0000000000001C1400000000000000000000000020AF21F90000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +030F03430314030503920383037403650000000003B003A10000000000000000281D1FBA1FB21FB61FED1FE91FE71FDF +1FF51FF91FF31FF12005200328251F121F14281F2015200720232823201B200B202D202B1FD420271F18203F203B28E1 +20532051204D204B20672061205F1F1A20752071206F206D2093208B20872085209920992099209720A720A32396282B +20B520B120AD282D20C720C520BF20C920D520D120CF20CB20DF20DB20DB20D920FD20EB20E520E320F520F120FF20EF +2109210721232041210D210F2105210B21292127282F2119214821372133212D2150214E283328311F1C2156214C2152 +215E215E215A1F1E2170216E216C2835217A21782837217421841F20217E21E9283B21902192218C219A219C283D2196 +1F2221A821A6219E21B821B621B421B021C91F26283F1F2428F521D121CD21CB25382843284321DD28511F2821E521E5 +1F2A21F121ED28A522092205220321FB22131F2C1F2E22112221221F22152845222B22292221222322352231222F2233 +224121BD22392237226322592251224D2267225B2261284B2279284D2275226B227D1F30226F22731F32227F22852281 +22A7284F2291228D22BB1F3822B522C7201F201D1F341F361F6A252222BD22C922DD22D322D122CF22E71F3A285922D9 +285D22F822F422E11F3C22FE22EB22FA230A23042302230023141F3E230E285F231C1F40231628612863232A23282322 +2867233A28652839234A233C2344234023562354235A235223502869235E235C23761F42236C236A23842366286B2374 +23902386286F286D23921F44238C238E2821239E2398239A287523AC287123A6287723C623BC23B6287B287923D223D0 +23EA1F4623E823E023F823F61F481F481F4A240423FE23FC287F241E287D24102881242C284124241F4E1F4C28852883 +288B288728892448244E244E244C288D1F5424541F5224522462245E28911F56247A28931F5824682496248A28972895 +249E249C249A1F5A24AA289B289B289924B624B4289D1F5C1F6024C4289F1F5E28A324D024C824CC24E624E21F6224DC +28A928A71F6424EE28AD24FA28AB1F6628AF250A25062500251828B3251428B1252625241F68285328B5215825281F6C +25382857285528B725501F6E2646253A2554205B2552254E28B9255C25582556256A2568255E255A25802576256C2560 +25742572257025661F7028BD28BF28BB28C7258A258625841F741F7228C1258C259C1F7628C528C325A825A225A0259E +25B225AA25AC25A61F7825B425B025AE25C21F7A25BA25B825CC25CA28C925C428CB1F1625D21F7C25E81F801F7E28CD +28CF260A260225F42628262226162614262C262E282728D3263E2638282926322664265E28D728D52680266A28D92668 +268E2684268826861F82269628DB269026B61F8428DD269A28E328DF26C221A028E526D61F881F8626E226E228E71F8A +1F8C26F228E926E627082704270026FA2720271228EB1F8E27281F921F90272628F128EF1F9428ED27441F96273A28F3 +2752274E274A27480000000028F727560000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//12544 bytes +//13440 bytes enum canonMappingTrieEntries = TrieEntry!(ushort, 8, 8, 5)(x" -000000000000000000000000000000200000000000000220", +000000000000000000000000000000200000000000000260", x" -000000000000010000000000000008000000000000001000", +0000000000000100000000000000090000000000000010C0", x" -030202020202010002050202020202040602020202020202000000000000000000000000000000000000000000000000 +030202020202010002060202050202040702020202020202000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -2187,14 +2257,23 @@ x" 005C005B005A00590000005F005E005D0000006200610060000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000064006300000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000066006500000000006700000000000000000000 +0000000000000000000000000000000000000068000000000000006A00000069000000000000000000000000006B0000 +000000000000000000000000006C00000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000006D0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000006E000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +006F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000064006300000000006500000000000000000000 -000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000670000 -000000000000000000000000006800000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000690000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -2202,9 +2281,9 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000006B006A000000000000006D006C000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +007100700000000000000073007200000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -2215,10 +2294,9 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000710070006F006E00750074007300720079007800770076007D007C007B007A -000000000000007E00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0077007600750074007B007A00790078007F007E007D007C008300820081008000000000000000840000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -2230,179 +2308,189 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00250012000F000C00850000004F004500CB00A400A1009E013301240121011E01A0019D01880000000001DA01B601A3 -02730270026D00000000000002F30287033803250322031F039800000362035803DE03B703B403B10446043A04370434 -04B404B1049C0000000004EE04CA04B7058A058705840000061C0000060D059E033E002B033B0028038C00790380006D -0392007F038F007C03A2008F0395008203CD00BA0000000003DB00C803D800C503E400D103FB00E8041000FD040A00F7 -041901060413010000000000041C01090440012A043D0127045C01490443012D00000000000001300471015D0462014F -01700477016300000000047A016604840185000000000000018E04A80194049900000000000004A204E401D004D901C5 -0000000004F801E405450231052F021B054B023705350221056902550552023E057B026405580244000000000572025B -0594027D058D027605B4029D059B028405E002C905B702A0061002F605F502DE03110628030B0302000006310314062E -00000000050401F00000000000000000000000000000000002AC00000000000000000000000005C30000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000000000000000013D036900560000 -02A304FB01E70450028E05A9029205BA028A05AD029605A5035B0048000005A10653064A035400410416010300000000 -0522020E046B0157065F065C05250211000000000000046500000000040700F403650052049601820656064D06500647 -036F005C036C005903EA00D703E700D40456014304530140050101ED04FE01EA053B02270538022405C002A905BD02A6 -0578026105660252042501120000000000000000000000000351003E0000000004F101DD03F400E104E701D304D101BD -061602FC04EA01D6000000000000000000000000000000000000000000000000066B00000010000D0000000000000137 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000662 -00000000000000000000000100000000000000000000000006450670063D00000000072C06DF06C30798077800000759 -00000000000008D100000000000000000000000000000000000000000000000000000000000000000000000000000000 -078107350000000008C10867084707E9000000000000092F000000000000000000000000000000000000000000000000 -00000000000000000000000000000000092808CA000000000000095F091F08FD09B400000000000000000000000009B7 -0000000000000000000000000000000009C3000009CC09C609BA0000000000000000000000000000000009ED09D809E4 -000000000000000000000000000000000000000009DE0000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000A2000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000A0500000A0E0A080A41000000000000 -000000000000000000000A2F0A1A0A260000000000000000000000000000000000000000000000000000000000000000 -00000000000000000A470A44000000000000000000000000000000000000000000000A1109CF00000000000000000000 -000000000000000000000000000000000A0209C009FF09BD0A0B09C9000000000A4D0A4A000000000A1709D50A1409D2 -0A1D09DB000000000A2909E70A2309E10A530A50000000000A2C09EA0A3E09FC0A3509F30A3209F0000000000A3809F6 -000000000A3B09F900000000000000000AC10ABE0000000000000ACA0AC40AC700000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000ACD00000AD30000000000000000 -000000000000000000000000000000000AD0000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000AE800000000000000000000000000000AF100000000000000000AF4 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000ADF0ADC0AD90AD60AEE0AEB0AE50AE200000000000000000000000000000000 -0B000000000000000000000000000B030000000000000000000000000000000000000000000000000AFD00000AFA0AF7 -00000000000000000000000000000000000000000000000000000000000000000B1200000000000000000B1500000000 +000000000000000000000000000000000000000000000000000000000000000000250012000F000C00850000004F0045 +00CB00A400A1009E013301240121011E01A0019D01880000000001DA01B601A302730270026D00000000000002F30287 +033803250322031F039800000362035803DE03B703B403B10446043A0437043404B404B1049C0000000004EE04CA04B7 +058A058705840000061C0000060D059E033E002B033B0028038C00790380006D0392007F038F007C03A2008F03950082 +03CD00BA0000000003DB00C803D800C503E400D103FB00E8041000FD040A00F7041901060413010000000000041C0109 +0440012A043D0127045C01490443012D00000000000001300471015D0462014F01700477016300000000047A01660484 +0185000000000000018E04A80194049900000000000004A204E401D004D901C50000000004F801E405450231052F021B +054B023705350221056902550552023E057B026405580244000000000572025B0594027D058D027605B4029D059B0284 +05E002C905B702A0061002F605F502DE03110628030B0302000006310314062E00000000050401F00000000000000000 +000000000000000002AC00000000000000000000000005C3000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000013D03690056000002A304FB01E70450028E05A9029205BA +028A05AD029605A5035B0048000005A10653064A0354004104160103000000000522020E046B0157065F065C05250211 +000000000000046500000000040700F403650052049601820656064D06500647036F005C036C005903EA00D703E700D4 +0456014304530140050101ED04FE01EA053B02270538022405C002A905BD02A605780261056602520425011200000000 +00000000000000000351003E0000000004F101DD03F400E104E701D304D101BD061602FC04EA01D60000000000000000 +00000000000000000000000000000000066B00000010000D000000000000013700000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000B0C0B090B06000000000B0F0000000000000000000000000000000000000000 -0B1E000000000B210000000000000B24000000000000000000000000000000000000000000000000000000000B1B0B18 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B27 -00000000000000000000000000000000000000000000000000000000000000000B300B2A000000000000000000000B2D +000000000000000000000000000000000000000000000000000000000000066200000000000000000000000100000000 +000000000000000006450670063D00000000072C06DF06C3079807780000075900000000000008D10000000000000000 +0000000000000000000000000000000000000000000000000000000000000000078107350000000008C10867084707E9 +000000000000092F00000000000000000000000000000000000000000000000000000000000000000000000000000000 +092808CA000000000000095F091F08FD09B400000000000000000000000009B700000000000000000000000000000000 +09C3000009CC09C609BA0000000000000000000000000000000009ED09D809E400000000000000000000000000000000 +0000000009DE000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000A200000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000A0500000A0E0A080A41000000000000000000000000000000000A2F0A1A0A26 +000000000000000000000000000000000000000000000000000000000000000000000000000000000A470A4400000000 +0000000000000000000000000000000000000A1109CF0000000000000000000000000000000000000000000000000000 +0A0209C009FF09BD0A0B09C9000000000A4D0A4A000000000A1709D50A1409D20A1D09DB000000000A2909E70A2309E1 +0A530A50000000000A2C09EA0A3E09FC0A3509F30A3209F0000000000A3809F6000000000A3B09F90000000000000000 +0AC10ABE0000000000000ACA0AC40AC70000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000ACD00000AD3000000000000000000000000000000000000000000000000 +0AD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000AE800000000000000000000000000000AF100000000000000000AF400000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000B3300000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000B360B400000000000000B3C0B3900000B43000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000B4C0B46000000000000000000000B49 +0ADF0ADC0AD90AD60AEE0AEB0AE50AE2000000000000000000000000000000000B000000000000000000000000000B03 +0000000000000000000000000000000000000000000000000AFD00000AFA0AF700000000000000000000000000000000 +000000000000000000000000000000000B1200000000000000000B150000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000B4F0000000000000B590B550B52 -0B5F00000000000000000000000000000000000000000000000000000B62000000000B65000000000B68000000000000 -00000000000000000000000000000B6B00000000000000000000000000000000000000000B5C00000000000000000000 -0B6E00000000000000000B890B7100000000000000000B8C0000000000000000000000000B7400000000000000000000 -000000000000000000000000000000000B7A00000000000000000000000000000000000000000000000000000B7D0000 -00000B80000000000B8300000000000000000000000000000000000000000B8600000000000000000000000000000000 -000000000B7700000000000000000000000000000000000000000B8F0000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9200000000 -00000B9800000B9500000B9E00000B9B00000BA100000000000000000000000000000000000000000000000000000000 +0B0C0B090B06000000000B0F00000000000000000000000000000000000000000B1E000000000B210000000000000B24 +000000000000000000000000000000000000000000000000000000000B1B0B1800000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000B2700000000000000000000000000000000 +000000000000000000000000000000000B300B2A000000000000000000000B2D00000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000B330000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000B360B40000000000000 +0B3C0B3900000B4300000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000B4C0B46000000000000000000000B4900000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0BA4000000000000000000000BA700000BB000000BAD0BAA000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000003830070037D006A0389007603860073 -039F008C039B008803AE009B03A5009203AB009803A8009503D400C103D000BD040100EE03FE00EB040400F103F700E4 -041F010C040D00FA0422010F04280115042E011B042B011804490136045F014C046E015A04680154047D016904740160 -048A01760480016C048D0179048701730493017F0490017C04A50191049F018B04AB019704AE019A04D501C104CD01B9 -04E001CC04DC01C8052C021805290215053E022A0532021E054802340541022D055F024B05550241055B0247054E023A -056C02580562024E0581026A0575025E05DD02C6057E026705E302CC05E602CF059702800590027905EC02D505E902D2 -05F202DB05EF02D805F802E105FB02E4060402EA060102E7061902FF060702ED06340317062B030E056F04310637031A -06590000062205FE0000000000000000035F004C0372005F03280015032C00190330001D033400210345003203750062 -034D003A0341002E037900660349003603E100CE03ED00DA03BE00AB03CA00B703C600B303BA00A703F000DD03C200AF -04590146044D013A04F501E1051B020704BA01A604BE01AA04C201AE04C601B2050B01F7051E020A051301FF050701F3 -05170203050F01FB05B1029A05DA02C305C602AF05CA02B305CE02B705D202BB060A02F005D602BF061F030506250308 -00000000061302F90000000000000000081B07F9081807F6082D080B08240802069E067C069B067906B0068E06A70685 -0858084D0855084A00000000085C085106D406C906D106C60000000006D806CD089308710890086E08A50883089C087A -070706E5070406E2071906F7071006EE08EB08DC08E808D908F308E408EF08E0074A073B0747073807520743074E073F -090E0903090B09000000000009120907076A075F0767075C00000000076E07630949093A0946093709510942094D093E -0787000007840000078F0000078B0000098B096909880966099D097B0994097207C0079E07BD079B07D207B007C907A7 -0847084407E907E208C108BE08670860091F091C08FD08FA00000000095F0958081F07FD083608140831080F08280806 -06A2068006B9069706B4069206AB06890897087508AE088C08A9088708A0087E070B06E907220700071D06FB071406F2 -098F096D09A6098409A1097F0998097607C407A207DB07B907D607B407CD07AB084107E507F007F3083D083A000007EC -0670066D06730676000008BC000006BD08B908630640000008B508B20000086A06DF06DC06C306C00BB90BB60BB30726 -08D108CD08C408C708D508F700000000072C0729072F07320BC20BBF0BBC0000092F092B092209250933095509190916 -07780775077B077E031D063D063A077209B1095B0000000009AD09AA00000962079807950759075600000000064307DF -000000000BC70BC500000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000079300000000004F0152000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000BCC0BC9000000000000000000000000 -00000000000000000000000000000000000000000000000000000BCF0000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000BD50BD80BD20000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BDB -000000000BDE00000000000000000BE10000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000BE700000BE40000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000BEA00000BF0000000000BED000000000BF300000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000BF9000000060000000000000000 -0000000000000000000900030BF60000000000000BFF0BFC000000000C050C02000000000C0B0C080000000000000000 -000000000C110C0E000000000C1D0C1A000000000C230C20000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000C350C320C2F0C2C -00000000000000000000000000000000000000000000000000000000000000000C290C260C170C140000000000000000 -0C3B0C3800000000000000000C410C3E0000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000C490C470000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000C4400000000000000000000000000000000 -000000000000000000000C5100000C4E00000C5700000C5400000C5D00000C5A00000C6300000C6000000C6900000C66 -00000C6F00000C6C0C7500000C720000000000000C78000000000000000000000C8100000C7E0C7B0C8A0C8700000C84 -00000C900C8D0000000000000C960C930000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000C4B000000000000000000000C990000000000000000000000000000000000000000 -000000000000000000000CA200000C9F00000CA800000CA500000CAE00000CAB00000CB400000CB100000CBA00000CB7 -00000CC000000CBD0CC600000CC30000000000000CC9000000000000000000000CD200000CCF0CCC0CDB0CD800000CD5 -00000CE10CDE0000000000000CE70CE40000000000000000000000000000000000000000000000000000000000000000 -00000000000000000CEA000000000C9C00000CF30CF00CED00000CF600000000124B125D0FB7124113270E290D831043 -0E4F12930E991327116710CD0F550E971279121511FD11E3109D106910190FEB0D8D12F3128911C711E110790FF50E1D -11D910510EDB1309120311890F65121D108D10250FBD0EFF0E050DD90D9D127D10D310770FF10F95125911E711DD1171 -10E9130712FB12CF12A111B9114D11070F0B0E87122F130B10ED1083117D112F0ECB0E8512CB124911471047102F0FED -117F0E0312B11159114F11150DDD0DDF0F67123D12B511C50EBB0D8712350FEB0E1110C110950F270D7F0F1B0DA510F1 -0E2311450F9D1011122711C910D70E7D0F6F100D126D10050D9110BF0F7B11A5113D0FDB0DDB0DC30E091291122D1195 -0FA10F070E9F0E3712F712AB10F310530FB50DF91313130D0F490EF312690FFD106D104B0F910F5711791153111110AF -12A3127111CD126110670E410DFB0DE90F230EFD1227120B1091112D10030F770EE50EBB0E670D97116B10A9109B0F29 -12D112C912951175128D110F0D9F12DD0DB10D8F0F3512C10FEB0F9F0EC70EBD127711D310CB10730DF712AF0FAD1323 -103B10210FD10FCB114310E710BD10A112B70F5D0DC512E3126310310ED70DA910950FD50F390F170ECF0E310DEB12BB -10150FE10FC30FA7120D116310C3109F0E1312C5128F121310B110750E33103D130F12FF12BD11DB1121118B102D0FCF -1063108B113311250DED11AD0D93123B11390F690EF50DE712670FB3101B0EB50F03122112B31205000000000E590DB5 -00000FAB00000E7B10CF108F0DE10000110D1105110310F50000116D113512D300001233000011DF0000128312730000 -12E912E70000000012BF127F130512EB0E010DB90DB30DA10E5F0E530E170E070ECD0E7F0E790E630F470F430F2F0ED1 -0FAF0FA30F970F531049103510270FDD10EB10A3107D106F10FD10F910FB10F7110B1109110110FF11531127111D1117 -11731161115B115711CB11971197118D12391237122312191273126F124F124D0F2B12E112D912C700000000119313D6 -0D9B0DC10DD70D810E0B0DFF0DC90DB70E5D0E510E490E530E9B0E950E830E7B0F050F010EB10EA90F3F0F330F1D0F13 -0F530F410F470F370F890F850F7F0F5F0FBF0FBD0FAB0F99102110050FFF0FC710571049104110451089107F10E3106F -10B910B510AB108F10D110CF10C910C710EF10DD10DF10D5114911311127111F11AF1173115F1153121F121B11F911C3 -122B123312291223123912311235123712751265124F123F12C712B91299128B12DB12D912D512D313AC132712F912E1 -0D370D2313BE13AA1434140413F20D390000000013251321000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000ABB00000A7A0000 -000000000000000000000000000000000AB50AB2000000000A590A560AAE0AAA0A680A650A5F0A5C00000A740A710A6B -0A830A800A7D0A7700000A8C00000A890A9500000A920A8F0AA10A9E00000A980A6E0AB80AA70AA400000A9B0A860A62 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000132900000000000000000000132C -00000000000000000000000000000000132F000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000001335133200000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1338000000000000000000000000133B0000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -1341000000000000000013440000133E0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000134A134700000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000134D0000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000013531350000000001362135E135A1356000000000000136600000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000136A00000000000013711378136D1375 -000000000000137C00000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000013800D8B0D850D890DA70DA30DA10D990DAF0DB30DAD0DAB0DBB0DB913880CF9 -0CFB13820DC70DBD0DD113860DCB0DBF0DD70DD50D950DD30CFF0DE50DE314440DF50DF30DF10DEF0E070E010DFF0D01 -0E110E0F0E0D0E0B0E1B0E190E170E150E210E210E210E1F0E270E25105D138E0E2F0E2D0E2B13900E3B0E390E350E3D -0E470E450E430E3F0E510E4D0E4D0E4B0E690E5B0E570E550E650E610E6B0E5F0E710E6F0E890DE70E750E770E6D0E73 -0E8D0E8B13920E810E9D0E930E910E8F0EA50EA3139613940D030EAB0EA10EA70EB30EB30EAF0D050EBB0EB90EB71398 -0EC30EC1139A0EBF0EC90D070EC50F0F139E0ED30ED50ED10EDD0EDF13A00ED90D090EE90EE70EE10EF10EEF0EED0EEB -0EF70D0D13A20D0B14580EFF0EFB0EF9118F13A613A60F0913B40D0F0F0D0F0D0D110F150F1114080F250F210F1F0F19 -0F2F0D130D150F2D0F3D0F3B0F3113A80F470F450F3D0F3F0F510F4D0F4B0F4F0F5B0F590F550F530F730F6B0F630F61 -0F750F6D0F7113AE0F8713B00F830F790F8B0D170F7D0F810D190F8D0F930F8F0FA513B20F9B0F970FAF0D1F0FA90FB9 -0DCF0DCD0D1B0D1D0D5111810FB10FBB0FC90FC10FBF0FBD0FD30D2113BC0FC513C00FDD0FD90FCD0D230FE30FD70FDF -0FEF0FE90FE70FE50FF70D250FF313C20FFB0D270FF913C413C610071005100113CA100913C8139C1017100B1013100F -102310211027101F101D13CC102B102910410D2910391037104D103313CE103F1059104F13D213D0105B0D2B10551057 -13841065105F106113D8107113D4106B13DA1081107F107B13DE13DC1087108510990D2D1097109310A710A50D2F0D2F -0D3110B310AD10AB13E210BB13E010B713E410C513A410C10D350D3313E813E613EE13EA13EC10D510DB10DB10D913F0 -0D3B10E10D3910DF10E910E513F40D3D10FF13F60D3F10EF1113110D13FA13F8111B111911170D41112313FE13FE13FC -112B112914000D430D47113714020D4514061141113B113F115511510D49114B140C140A0D4B115D14101165140E0D4D -14121173116F1169117B141611771414118511830D4F13B614180EAD11870D53118F13BA13B8141A119B0D55126B1191 -119F0DFD119D1199141C11A711A311A111B511B311A911A511CB11C111B711AB11BF11BD11BB11B10D5714201422141E -142A11D511D111CF0D5B0D59142411D711E50D5D1428142611EF11EB11E911E711F911F111F311ED0D5F11FB11F711F5 -12070D61120111FF1211120F142C1209142E0CFD12170D6312250D670D65143014321243123F12311253125112471245 -12551257138A14361265125F138C125B1281127B143A143812971287143C128512A5129B129F129D0D6912A9143E12A7 -12C30D6B144012AD1446144212CD0EE3144812D70D6F0D6D12DB12DB144A0D710D7312E5144C12DF12F512F112EF12ED -12FD12F9144E0D7513030D790D771301145414520D7B145013150D7D13111456131D131B1319131700000000145A131F -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +0000000000000000000000000000000000000B4F0000000000000B590B550B520B5F0000000000000000000000000000 +0000000000000000000000000B62000000000B65000000000B6800000000000000000000000000000000000000000B6B +00000000000000000000000000000000000000000B5C000000000000000000000B6E00000000000000000B890B710000 +0000000000000B8C0000000000000000000000000B740000000000000000000000000000000000000000000000000000 +0B7A00000000000000000000000000000000000000000000000000000B7D000000000B80000000000B83000000000000 +00000000000000000000000000000B8600000000000000000000000000000000000000000B7700000000000000000000 +000000000000000000000B8F000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000B920000000000000B9800000B9500000B9E00000B9B +00000BA10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000BA4000000000000000000000BA70000 +0BB000000BAD0BAA00000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000003830070037D006A0389007603860073039F008C039B008803AE009B03A50092 +03AB009803A8009503D400C103D000BD040100EE03FE00EB040400F103F700E4041F010C040D00FA0422010F04280115 +042E011B042B011804490136045F014C046E015A04680154047D016904740160048A01760480016C048D017904870173 +0493017F0490017C04A50191049F018B04AB019704AE019A04D501C104CD01B904E001CC04DC01C8052C021805290215 +053E022A0532021E054802340541022D055F024B05550241055B0247054E023A056C02580562024E0581026A0575025E +05DD02C6057E026705E302CC05E602CF059702800590027905EC02D505E902D205F202DB05EF02D805F802E105FB02E4 +060402EA060102E7061902FF060702ED06340317062B030E056F04310637031A06590000062205FE0000000000000000 +035F004C0372005F03280015032C00190330001D033400210345003203750062034D003A0341002E0379006603490036 +03E100CE03ED00DA03BE00AB03CA00B703C600B303BA00A703F000DD03C200AF04590146044D013A04F501E1051B0207 +04BA01A604BE01AA04C201AE04C601B2050B01F7051E020A051301FF050701F305170203050F01FB05B1029A05DA02C3 +05C602AF05CA02B305CE02B705D202BB060A02F005D602BF061F03050625030800000000061302F90000000000000000 +081B07F9081807F6082D080B08240802069E067C069B067906B0068E06A706850858084D0855084A00000000085C0851 +06D406C906D106C60000000006D806CD089308710890086E08A50883089C087A070706E5070406E2071906F7071006EE +08EB08DC08E808D908F308E408EF08E0074A073B0747073807520743074E073F090E0903090B09000000000009120907 +076A075F0767075C00000000076E07630949093A0946093709510942094D093E0787000007840000078F0000078B0000 +098B096909880966099D097B0994097207C0079E07BD079B07D207B007C907A70847084407E907E208C108BE08670860 +091F091C08FD08FA00000000095F0958081F07FD083608140831080F0828080606A2068006B9069706B4069206AB0689 +0897087508AE088C08A9088708A0087E070B06E907220700071D06FB071406F2098F096D09A6098409A1097F09980976 +07C407A207DB07B907D607B407CD07AB084107E507F007F3083D083A000007EC0670066D06730676000008BC000006BD +08B908630640000008B508B20000086A06DF06DC06C306C00BB90BB60BB3072608D108CD08C408C708D508F700000000 +072C0729072F07320BC20BBF0BBC0000092F092B09220925093309550919091607780775077B077E031D063D063A0772 +09B1095B0000000009AD09AA00000962079807950759075600000000064307DF000000000BC70BC50000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000079300000000004F015200000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000BCC0BC900000000000000000000000000000000000000000000000000000000 +000000000000000000000BCF000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000BD50BD80BD2000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000BDB000000000BDE00000000000000000BE1 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE700000BE4 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000BEA00000BF0000000000BED000000000BF30000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000BF90000000600000000000000000000000000000000000900030BF60000 +000000000BFF0BFC000000000C050C02000000000C0B0C080000000000000000000000000C110C0E000000000C1D0C1A +000000000C230C2000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000C350C320C2F0C2C00000000000000000000000000000000 +000000000000000000000000000000000C290C260C170C1400000000000000000C3B0C3800000000000000000C410C3E +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000C490C47000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000C4400000000000000000000000000000000000000000000000000000C5100000C4E +00000C5700000C5400000C5D00000C5A00000C6300000C6000000C6900000C6600000C6F00000C6C0C7500000C720000 +000000000C78000000000000000000000C8100000C7E0C7B0C8A0C8700000C8400000C900C8D0000000000000C960C93 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4B +000000000000000000000C990000000000000000000000000000000000000000000000000000000000000CA200000C9F +00000CA800000CA500000CAE00000CAB00000CB400000CB100000CBA00000CB700000CC000000CBD0CC600000CC30000 +000000000CC9000000000000000000000CD200000CCF0CCC0CDB0CD800000CD500000CE10CDE0000000000000CE70CE4 +000000000000000000000000000000000000000000000000000000000000000000000000000000000CEA000000000C9C +00000CF30CF00CED00000CF600000000124B125D0FB7124113270E290D8310430E4F12930E991327116710CD0F550E97 +1279121511FD11E3109D106910190FEB0D8D12F3128911C711E110790FF50E1D11D910510EDB1309120311890F65121D +108D10250FBD0EFF0E050DD90D9D127D10D310770FF10F95125911E711DD117110E9130712FB12CF12A111B9114D1107 +0F0B0E87122F130B10ED1083117D112F0ECB0E8512CB124911471047102F0FED117F0E0312B11159114F11150DDD0DDF +0F67123D12B511C50EBB0D8712350FEB0E1110C110950F270D7F0F1B0DA510F10E2311450F9D1011122711C910D70E7D +0F6F100D126D10050D9110BF0F7B11A5113D0FDB0DDB0DC30E091291122D11950FA10F070E9F0E3712F712AB10F31053 +0FB50DF91313130D0F490EF312690FFD106D104B0F910F5711791153111110AF12A3127111CD126110670E410DFB0DE9 +0F230EFD1227120B1091112D10030F770EE50EBB0E670D97116B10A9109B0F2912D112C912951175128D110F0D9F12DD +0DB10D8F0F3512C10FEB0F9F0EC70EBD127711D310CB10730DF712AF0FAD1323103B10210FD10FCB114310E710BD10A1 +12B70F5D0DC512E3126310310ED70DA910950FD50F390F170ECF0E310DEB12BB10150FE10FC30FA7120D116310C3109F +0E1312C5128F121310B110750E33103D130F12FF12BD11DB1121118B102D0FCF1063108B113311250DED11AD0D93123B +11390F690EF50DE712670FB3101B0EB50F03122112B31205000000000E590DB500000FAB00000E7B10CF108F0DE10000 +110D1105110310F50000116D113512D300001233000011DF000012831273000012E912E70000000012BF127F130512EB +0E010DB90DB30DA10E5F0E530E170E070ECD0E7F0E790E630F470F430F2F0ED10FAF0FA30F970F531049103510270FDD +10EB10A3107D106F10FD10F910FB10F7110B1109110110FF11531127111D111711731161115B115711CB11971197118D +12391237122312191273126F124F124D0F2B12E112D912C700000000119314160D9B0DC10DD70D810E0B0DFF0DC90DB7 +0E5D0E510E490E530E9B0E950E830E7B0F050F010EB10EA90F3F0F330F1D0F130F530F410F470F370F890F850F7F0F5F +0FBF0FBD0FAB0F99102110050FFF0FC710571049104110451089107F10E3106F10B910B510AB108F10D110CF10C910C7 +10EF10DD10DF10D5114911311127111F11AF1173115F1153121F121B11F911C3122B1233122912231239123112351237 +12751265124F123F12C712B91299128B12DB12D912D512D313EC132712F912E10D370D2313FE13EA1474144414320D39 +000000001325132100000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000ABB00000A7A000000000000000000000000000000000000 +0AB50AB2000000000A590A560AAE0AAA0A680A650A5F0A5C00000A740A710A6B0A830A800A7D0A7700000A8C00000A89 +0A9500000A920A8F0AA10A9E00000A980A6E0AB80AA70AA400000A9B0A860A6200000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000132900000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000132C +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000132F0000000000000000000013320000000000000000000000000000000013350000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000133B1338000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000133E000000000000000000000000134100000000000000000000000000000000 +000000000000000000000000000000001344000000000000000000001347000000000000000000000000134A00000000 +00000000134D000000000000000000000000000000000000000000000000000000000000000000001350000013530000 +000000000000135600000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +135C0000000000000000135F000013590000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000001365136200000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000013680000000000000000 +136F137C136B0000137F136E137313800000000000001372000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000013891386138A0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000001393139000000000 +13A2139E139A139600000000000013A60000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000013AA00000000000013B113B813AD13B500000000000013BC0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +13C00D8B0D850D890DA70DA30DA10D990DAF0DB30DAD0DAB0DBB0DB913C80CF90CFB13C20DC70DBD0DD113C60DCB0DBF +0DD70DD50D950DD30CFF0DE50DE314840DF50DF30DF10DEF0E070E010DFF0D010E110E0F0E0D0E0B0E1B0E190E170E15 +0E210E210E210E1F0E270E25105D13CE0E2F0E2D0E2B13D00E3B0E390E350E3D0E470E450E430E3F0E510E4D0E4D0E4B +0E690E5B0E570E550E650E610E6B0E5F0E710E6F0E890DE70E750E770E6D0E730E8D0E8B13D20E810E9D0E930E910E8F +0EA50EA313D613D40D030EAB0EA10EA70EB30EB30EAF0D050EBB0EB90EB713D80EC30EC113DA0EBF0EC90D070EC50F0F +13DE0ED30ED50ED10EDD0EDF13E00ED90D090EE90EE70EE10EF10EEF0EED0EEB0EF70D0D13E20D0B14980EFF0EFB0EF9 +118F13E613E60F0913F40D0F0F0D0F0D0D110F150F1114480F250F210F1F0F190F2F0D130D150F2D0F3D0F3B0F3113E8 +0F470F450F3D0F3F0F510F4D0F4B0F4F0F5B0F590F550F530F730F6B0F630F610F750F6D0F7113EE0F8713F00F830F79 +0F8B0D170F7D0F810D190F8D0F930F8F0FA513F20F9B0F970FAF0D1F0FA90FB90DCF0DCD0D1B0D1D0D5111810FB10FBB +0FC90FC10FBF0FBD0FD30D2113FC0FC514000FDD0FD90FCD0D230FE30FD70FDF0FEF0FE90FE70FE50FF70D250FF31402 +0FFB0D270FF914041406100710051001140A1009140813DC1017100B1013100F102310211027101F101D140C102B1029 +10410D2910391037104D1033140E103F1059104F14121410105B0D2B1055105713C41065105F1061141810711414106B +141A1081107F107B141E141C1087108510990D2D1097109310A710A50D2F0D2F0D3110B310AD10AB142210BB142010B7 +142410C513E410C10D350D3314281426142E142A142C10D510DB10DB10D914300D3B10E10D3910DF10E910E514340D3D +10FF14360D3F10EF1113110D143A1438111B111911170D411123143E143E143C112B112914400D430D47113714420D45 +14461141113B113F115511510D49114B144C144A0D4B115D14501165144E0D4D14521173116F1169117B145611771454 +118511830D4F13F614580EAD11870D53118F13FA13F8145A119B0D55126B1191119F0DFD119D1199145C11A711A311A1 +11B511B311A911A511CB11C111B711AB11BF11BD11BB11B10D5714601462145E146A11D511D111CF0D5B0D59146411D7 +11E50D5D1468146611EF11EB11E911E711F911F111F311ED0D5F11FB11F711F512070D61120111FF1211120F146C1209 +146E0CFD12170D6312250D670D65147014721243123F123112531251124712451255125713CA14761265125F13CC125B +1281127B147A147812971287147C128512A5129B129F129D0D6912A9147E12A712C30D6B148012AD1486148212CD0EE3 +148812D70D6F0D6D12DB12DB148A0D710D7312E5148C12DF12F512F112EF12ED12FD12F9148E0D7513030D790D771301 +149414920D7B149013150D7D13111496131D131B1319131700000000149A131F00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); dstring decompCanonTable() nothrow @nogc pure @safe { -static immutable dchar[5212] t = +static immutable dchar[5276] t = "\u0000\u003B\u0000\u003C\u0338\u0000\u003D\u0338\u0000\u003E\u0338\u0000\u0041\u0300\u0000\u0041\u0301\u0000\u0041"d~ "\u0302\u0000\u0041\u0302\u0300\u0000\u0041\u0302\u0301\u0000\u0041\u0302\u0303\u0000\u0041\u0302\u0309\u0000\u0041"d~ "\u0303\u0000\u0041\u0304\u0000\u0041\u0306\u0000\u0041\u0306\u0300\u0000\u0041\u0306\u0301\u0000\u0041\u0306\u0303"d~ @@ -2661,33 +2749,38 @@ static immutable dchar[5212] t = "\u9929\u0000\u99A7\u0000\u99C2\u0000\u99F1\u0000\u99FE\u0000\u9A6A\u0000\u9B12\u0000\u9B6F\u0000\u9C40\u0000\u9C57"d~ "\u0000\u9CFD\u0000\u9D67\u0000\u9DB4\u0000\u9DFA\u0000\u9E1E\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EBB\u0000"d~ "\u9ECE\u0000\u9EF9\u0000\u9EFE\u0000\u9F05\u0000\u9F0F\u0000\u9F16\u0000\u9F3B\u0000\u9F43\u0000\u9F8D\u0000\u9F8E"d~ -"\u0000\u9F9C\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127"d~ -"\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000"d~ +"\u0000\u9F9C\u0000\U000105D2\u0307\u0000\U000105DA\u0307\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000"d~ +"\U000110A5\U000110BA\u0000\U00011131\U00011127\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347"d~ +"\U00011357\u0000\U00011382\U000113C9\u0000\U00011384\U000113BB\u0000\U0001138B\U000113C2\u0000\U00011390\U000113C9"d~ +"\u0000\U000113C2\U000113B8\u0000\U000113C2\U000113C2\u0000\U000113C2\U000113C9\u0000\U000114B9\U000114B0\u0000"d~ "\U000114B9\U000114BA\u0000\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935"d~ -"\U00011930\u0000\U0001D157\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158"d~ -"\U0001D165\U0001D16F\u0000\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165"d~ -"\U0001D172\u0000\U0001D1B9\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000"d~ -"\U0001D1BA\U0001D165\u0000\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U00020122\u0000"d~ -"\U0002051C\u0000\U00020525\u0000\U0002054B\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000"d~ -"\U00020B63\u0000\U000214E4\u0000\U000216A8\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000"d~ -"\U00021DE4\u0000\U00021DE6\u0000\U00022183\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000"d~ -"\U0002284A\u0000\U00022B0C\u0000\U00022BF1\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000"d~ -"\U0002339C\u0000\U000233C3\u0000\U000233D5\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000"d~ -"\U00023AFA\u0000\U00023CBC\u0000\U00023D1E\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000"d~ -"\U000242EE\u0000\U000243AB\u0000\U00024608\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000"d~ -"\U00024FA1\u0000\U00024FB8\u0000\U00025044\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000"d~ -"\U00025249\u0000\U0002541D\u0000\U00025626\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000"d~ -"\U00025BAB\u0000\U00025C80\u0000\U00025CD0\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000"d~ -"\U000262D9\u0000\U0002633E\u0000\U000264DA\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000"d~ -"\U00026B3C\u0000\U00026C36\u0000\U00026CD5\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000"d~ -"\U000273CA\u0000\U00027667\u0000\U000278AE\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000"d~ -"\U000285D2\u0000\U000285ED\u0000\U0002872E\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000"d~ -"\U0002921A\u0000\U0002940A\u0000\U00029496\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000"d~ -"\U0002A20E\u0000\U0002A291\u0000\U0002A392\u0000\U0002A600\u0000"d; +"\U00011930\u0000\U0001611E\U0001611E\u0000\U0001611E\U0001611E\U0001611F\u0000\U0001611E\U0001611E\U00016120\u0000"d~ +"\U0001611E\U0001611F\u0000\U0001611E\U00016120\u0000\U0001611E\U00016129\u0000\U0001611E\U00016129\U0001611F\u0000"d~ +"\U00016129\U0001611F\u0000\U00016D63\U00016D67\u0000\U00016D63\U00016D67\U00016D67\u0000\U00016D67\U00016D67\u0000"d~ +"\U0001D157\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F"d~ +"\u0000\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000"d~ +"\U0001D1B9\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165"d~ +"\u0000\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U00020122\u0000\U0002051C\u0000"d~ +"\U00020525\u0000\U0002054B\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000"d~ +"\U000214E4\u0000\U000216A8\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000"d~ +"\U00021DE6\u0000\U00022183\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000"d~ +"\U00022B0C\u0000\U00022BF1\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000"d~ +"\U000233C3\u0000\U000233D5\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000"d~ +"\U00023CBC\u0000\U00023D1E\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000"d~ +"\U000243AB\u0000\U00024608\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000"d~ +"\U00024FB8\u0000\U00025044\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000"d~ +"\U0002541D\u0000\U00025626\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000"d~ +"\U00025C80\u0000\U00025CD0\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000"d~ +"\U0002633E\u0000\U000264DA\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000"d~ +"\U00026C36\u0000\U00026CD5\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000"d~ +"\U00027667\u0000\U000278AE\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000"d~ +"\U000285ED\u0000\U0002872E\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000"d~ +"\U0002940A\u0000\U00029496\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000"d~ +"\U0002A291\u0000\U0002A392\u0000\U0002A600\u0000"d; return t[]; } dstring decompCompatTable() nothrow @nogc pure @safe { -static immutable dchar[10425] t = +static immutable dchar[10489] t = "\u0000\u0020\u0000\u0020\u0301\u0000\u0020\u0303\u0000\u0020\u0304\u0000\u0020\u0305\u0000\u0020\u0306\u0000\u0020"d~ "\u0307\u0000\u0020\u0308\u0000\u0020\u0308\u0300\u0000\u0020\u0308\u0301\u0000\u0020\u0308\u0342\u0000\u0020\u030A"d~ "\u0000\u0020\u030B\u0000\u0020\u0313\u0000\u0020\u0313\u0300\u0000\u0020\u0313\u0301\u0000\u0020\u0313\u0342\u0000"d~ @@ -3219,31 +3312,36 @@ static immutable dchar[10425] t = "\u9E75\u0000\u9E7F\u0000\u9E97\u0000\u9E9F\u0000\u9EA5\u0000\u9EBB\u0000\u9EC3\u0000\u9ECD\u0000\u9ECE\u0000\u9ED1"d~ "\u0000\u9EF9\u0000\u9EFD\u0000\u9EFE\u0000\u9F05\u0000\u9F0E\u0000\u9F0F\u0000\u9F13\u0000\u9F16\u0000\u9F20\u0000"d~ "\u9F3B\u0000\u9F43\u0000\u9F4A\u0000\u9F52\u0000\u9F8D\u0000\u9F8E\u0000\u9F9C\u0000\u9F9F\u0000\u9FA0\u0000\uA651"d~ -"\u0000\uA689\u0000\uA727\u0000\uA76F\u0000\uA78E\u0000\uAB37\u0000\uAB52\u0000\uAB66\u0000\uAB67\u0000\U00011099"d~ -"\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000\U00011131\U00011127\u0000\U00011132\U00011127"d~ -"\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U000114B9\U000114B0\u0000\U000114B9\U000114BA\u0000"d~ -"\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935\U00011930\u0000\U0001D157"d~ -"\U0001D165\u0000\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F\u0000"d~ -"\U0001D158\U0001D165\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000\U0001D1B9"d~ -"\U0001D165\u0000\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165\u0000"d~ -"\U0001D1BA\U0001D165\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U0001DF04\u0000\U0001DF05\u0000\U0001DF06"d~ -"\u0000\U0001DF08\u0000\U0001DF0A\u0000\U0001DF1E\u0000\U00020122\u0000\U0002051C\u0000\U00020525\u0000\U0002054B"d~ -"\u0000\U0002063A\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000\U000214E4\u0000\U000216A8"d~ -"\u0000\U000216EA\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000\U00021DE6\u0000\U00022183"d~ -"\u0000\U0002219F\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000\U00022B0C\u0000\U00022BF1"d~ -"\u0000\U0002300A\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000\U000233C3\u0000\U000233D5"d~ -"\u0000\U0002346D\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000\U00023CBC\u0000\U00023D1E"d~ -"\u0000\U00023ED1\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000\U000243AB\u0000\U00024608"d~ -"\u0000\U00024735\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000\U00024FB8\u0000\U00025044"d~ -"\u0000\U000250F2\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000\U0002541D\u0000\U00025626"d~ -"\u0000\U0002569A\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000\U00025C80\u0000\U00025CD0"d~ -"\u0000\U00025F86\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000\U0002633E\u0000\U000264DA"d~ -"\u0000\U00026523\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000\U00026C36\u0000\U00026CD5"d~ -"\u0000\U00026D6B\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000\U00027667\u0000\U000278AE"d~ -"\u0000\U00027966\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000\U000285ED\u0000\U0002872E"d~ -"\u0000\U00028BFA\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000\U0002940A\u0000\U00029496"d~ -"\u0000\U000295B6\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000\U0002A291\u0000\U0002A392"d~ -"\u0000\U0002A600\u0000"d; +"\u0000\uA689\u0000\uA727\u0000\uA76F\u0000\uA78E\u0000\uAB37\u0000\uAB52\u0000\uAB66\u0000\uAB67\u0000\U000105D2"d~ +"\u0307\u0000\U000105DA\u0307\u0000\U00011099\U000110BA\u0000\U0001109B\U000110BA\u0000\U000110A5\U000110BA\u0000"d~ +"\U00011131\U00011127\u0000\U00011132\U00011127\u0000\U00011347\U0001133E\u0000\U00011347\U00011357\u0000\U00011382"d~ +"\U000113C9\u0000\U00011384\U000113BB\u0000\U0001138B\U000113C2\u0000\U00011390\U000113C9\u0000\U000113C2\U000113B8"d~ +"\u0000\U000113C2\U000113C2\u0000\U000113C2\U000113C9\u0000\U000114B9\U000114B0\u0000\U000114B9\U000114BA\u0000"d~ +"\U000114B9\U000114BD\u0000\U000115B8\U000115AF\u0000\U000115B9\U000115AF\u0000\U00011935\U00011930\u0000\U0001611E"d~ +"\U0001611E\u0000\U0001611E\U0001611E\U0001611F\u0000\U0001611E\U0001611E\U00016120\u0000\U0001611E\U0001611F\u0000"d~ +"\U0001611E\U00016120\u0000\U0001611E\U00016129\u0000\U0001611E\U00016129\U0001611F\u0000\U00016129\U0001611F\u0000"d~ +"\U00016D63\U00016D67\u0000\U00016D63\U00016D67\U00016D67\u0000\U00016D67\U00016D67\u0000\U0001D157\U0001D165\u0000"d~ +"\U0001D158\U0001D165\u0000\U0001D158\U0001D165\U0001D16E\u0000\U0001D158\U0001D165\U0001D16F\u0000\U0001D158\U0001D165"d~ +"\U0001D170\u0000\U0001D158\U0001D165\U0001D171\u0000\U0001D158\U0001D165\U0001D172\u0000\U0001D1B9\U0001D165\u0000"d~ +"\U0001D1B9\U0001D165\U0001D16E\u0000\U0001D1B9\U0001D165\U0001D16F\u0000\U0001D1BA\U0001D165\u0000\U0001D1BA\U0001D165"d~ +"\U0001D16E\u0000\U0001D1BA\U0001D165\U0001D16F\u0000\U0001DF04\u0000\U0001DF05\u0000\U0001DF06\u0000\U0001DF08"d~ +"\u0000\U0001DF0A\u0000\U0001DF1E\u0000\U00020122\u0000\U0002051C\u0000\U00020525\u0000\U0002054B\u0000\U0002063A"d~ +"\u0000\U00020804\u0000\U000208DE\u0000\U00020A2C\u0000\U00020B63\u0000\U000214E4\u0000\U000216A8\u0000\U000216EA"d~ +"\u0000\U000219C8\u0000\U00021B18\u0000\U00021D0B\u0000\U00021DE4\u0000\U00021DE6\u0000\U00022183\u0000\U0002219F"d~ +"\u0000\U00022331\u0000\U000226D4\u0000\U00022844\u0000\U0002284A\u0000\U00022B0C\u0000\U00022BF1\u0000\U0002300A"d~ +"\u0000\U000232B8\u0000\U0002335F\u0000\U00023393\u0000\U0002339C\u0000\U000233C3\u0000\U000233D5\u0000\U0002346D"d~ +"\u0000\U000236A3\u0000\U000238A7\u0000\U00023A8D\u0000\U00023AFA\u0000\U00023CBC\u0000\U00023D1E\u0000\U00023ED1"d~ +"\u0000\U00023F5E\u0000\U00023F8E\u0000\U00024263\u0000\U000242EE\u0000\U000243AB\u0000\U00024608\u0000\U00024735"d~ +"\u0000\U00024814\u0000\U00024C36\u0000\U00024C92\u0000\U00024FA1\u0000\U00024FB8\u0000\U00025044\u0000\U000250F2"d~ +"\u0000\U000250F3\u0000\U00025119\u0000\U00025133\u0000\U00025249\u0000\U0002541D\u0000\U00025626\u0000\U0002569A"d~ +"\u0000\U000256C5\u0000\U0002597C\u0000\U00025AA7\u0000\U00025BAB\u0000\U00025C80\u0000\U00025CD0\u0000\U00025F86"d~ +"\u0000\U000261DA\u0000\U00026228\u0000\U00026247\u0000\U000262D9\u0000\U0002633E\u0000\U000264DA\u0000\U00026523"d~ +"\u0000\U000265A8\u0000\U000267A7\u0000\U000267B5\u0000\U00026B3C\u0000\U00026C36\u0000\U00026CD5\u0000\U00026D6B"d~ +"\u0000\U00026F2C\u0000\U00026FB1\u0000\U000270D2\u0000\U000273CA\u0000\U00027667\u0000\U000278AE\u0000\U00027966"d~ +"\u0000\U00027CA8\u0000\U00027ED3\u0000\U00027F2F\u0000\U000285D2\u0000\U000285ED\u0000\U0002872E\u0000\U00028BFA"d~ +"\u0000\U00028D77\u0000\U00029145\u0000\U000291DF\u0000\U0002921A\u0000\U0002940A\u0000\U00029496\u0000\U000295B6"d~ +"\u0000\U00029B30\u0000\U0002A0CE\u0000\U0002A105\u0000\U0002A20E\u0000\U0002A291\u0000\U0002A392\u0000\U0002A600"d~ +"\u0000"d; return t[]; } diff --git a/std/internal/unicode_grapheme.d b/std/internal/unicode_grapheme.d index ba80e188a80..37df7afd56c 100644 --- a/std/internal/unicode_grapheme.d +++ b/std/internal/unicode_grapheme.d @@ -68,11 +68,11 @@ FFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFEFFFFFFEFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFF FEFFFFFFFFEFFFFFFFFEFFFFFFFFEFFFFFFFFEFF0000000F000000000000000000000000000000000000000000000000 00000000000000000000000000000000", ); -//896 bytes +//928 bytes enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000080", x" -000001000000008000000C00", +000001000000008000000D00", x" 010101000101010101010102010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 @@ -82,17 +82,18 @@ x" 000000000000000000000000000000000000000000000000000000000002000100000003000000000004000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000060005000000000000000000000000 -000700000000000800090000000A00000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000060005000700000000000000000000 +0008000000000009000A0000000B00000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000003F00000000000000000000000000000000000000002000000000000000 000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000300000000000000000000000000040000000000000000000040000000000000000000000000000000000000000000 000000000000000000000000000000000000000020000000000020000000000000000000000000000000000000000000 -00000000000000000000000C000000000000000080000000000000020000000000000000000000000000000000000000 -00000000040000000000000000000000000003F000000000000000000000000000000000000000000000004000000000 -000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +00000000000000000000000C000000000000000000000000000000000000000000000000000000000002000000000000 +000000008000000000000002000000000000000000000000000000000000000000000000040000000000000000000000 +000003F00000000000000000000000000000000000000000000000400000000000000000000000000000000000000000 +000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", ); //1280 bytes enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" @@ -128,13 +129,13 @@ FFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 000000000000000000000000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000000000000000000000000000000000000000000000000000000000000", ); -//1856 bytes +//1792 bytes enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -0000000000000040000000B0", +0000000000000040000000A0", x" -00000100000000E000002400", +00000100000000C000002400", x" -010101000101020104010103010501010101010101010101010101010101010101010101010101010101010101010101 +010101000101020104010103010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -144,41 +145,40 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000F000E00110010000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00130012001500140017001600190018001B001A0000001C001E001D0020001F00000000000000000000000000000000 -000000000000000000000000002100000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000008C80000000000DE01000000000000000C800000000000198100000000 -00000008C0000000000000010000000000000008C000000000001A01000000000000000C000000000000198100000000 -000000008000000000001DC6000000000000000E000000000000001E000000000000000C4000000000000D9B00080000 -0000000C8000000000001DC1000000000000000C000000007F030000000C000000000000000800000000000000000000 -0000000000080000000000000000000000000000C0000000000000008000000000000000000000000000000000000000 -000000001802000000C00000000000000000001000000000000000000000000000200000001000000000000000000000 -00000000C0400000000001BF000000000000000001FB0E78000000000000000000000000000000000000000000000000 -060000000000000000A000000007E0000000000000000000000000000000000000000010E80000000000001B00000000 -00000004000004C200000000000C5C800000000000300FF0000000000000000000000000000000000000000000800002 -0000000000000098000000000000000000000003FFF000000000000F000000000000000000000000000C000000000000 -00000008CC3000000000000100000000000000000019800000002000000000000000000000000000000000000020C800 -00000000000000000000000000000000000000000000000000000000000016D800000005000000000000000000000000 -000000040187000000000000000000000000000000001000000000600000000000000004803800000000400100000000 -00000000002C70000000000000000000000000000000000000000000000000070000000C800000000000399E0000000C -000000000000000000000000000000000000000000E000000000002300000000000000005A0600000000000200000000 -00000000000000000000000000000000000000004F030000000000000000000000000000580700000000000000000000 -000000000040D00000000000000000000000000000000040000000000000000000000000000000000000000000000000 -00000000010070000000000000000000000000000000000000000000000000000000000021BE00000000000500000000 -0000000000000000F00E0000000000100000000002000000018000000000000000800000000000000000000000000000 -000000004000800000000000000000000000000000120200000000000000000000000000000000000000000000000000 -00587C000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000 -00000008C03000000000000200000000000000000000000000000000000000000000000000000000FFFE0000FFFFFFFF -000000FF0000000000000000000300000000000000000000000000000000204000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +00130012001500140017001600190018001B001A0000001C001E001D0020001F00210000000000000000000000000000 +000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000008C80000000000DE01000000000000000C80000000000019810000000000000008C00000000000000100000000 +00000008C000000000001A01000000000000000C000000000000198100000000000000008000000000001DC600000000 +0000000E000000000000001E000000000000000C400000000000001A000800000000000C8000000000001DC100000000 +0000000C000000007F030000000C00000000000000080000000000000000000000000000000800000000000000000000 +00000000C0000000000000008000000000000000000000000000000000000000000000001802000000C0000000000000 +000000100000000000000000000000000000000000000000000000000000000000000000C0400000000001BF00000000 +0000000001FB0E78000000000000000000000000000000000000000000000000060000000000000000A000000007E000 +0000000000000000000000000000000000000010C0000000000000030000000000000004000000C20000000000005C80 +0000000000300FF000000000000000000000000000000000000000000080000200000000000000980000000000000000 +00000003FFF000000000000F000000000000000000000000000400000000000000000008CC3000000000000000000000 +000000000019800000002000000000000000000000000000000000000020C80000000000000000000000000000000000 +000000000000000000000000000016D80000000500000000000000000000000000000004018700000000000000000000 +000000000000100000000060000000000000000480380000000040000000000000000000000C70000000000000000000 +000000000000000000000000000000070000000C800000000000199E0000000C00000000060000000000340000000000 +0000000000E000000000002300000000000000005A060000000000020000000000000000000000000000000000000000 +000000004F030000000000000000000000000000580700000000000000000000000000000000D0000000000000000000 +400000000000004000000000000000000000000000000000000000000000000000000000010070000000000000000000 +000000000000000000000000000000000000000001BE000000000005000000000000000000000000F00E000000000010 +000000000200000001800000000000000080000000000000000000000000000000000000400080000000000000000000 +000000000012020000000000000000000000000000000000000000000000000000587C00000000000000000000000000 +000000000000000000000000000000000000000000000000000000000060000000000008C03000000000000000000000 +000000000000000000000000000000000000000000001C00000000000000000000000000000000000000000000000000 +0000000000000000FFFE0000FFFFFFFF000000FF00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", ); -//3488 bytes +//3552 bytes enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000110", x" -00000100000001A000004B00", +00000100000001A000004D00", x" 0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -194,65 +194,66 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000220021 0023000000250024000000000000000000000000000000260027000000290028002B002A002D002C002F002E00310030 003300320000003400360035003800370000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000039000000000000000000000000000000000000000000000000000000000000000000000000 -00000000003B003A00000000003C00000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000390000000000000000000000000000000000000000003A0000000000000000000000000000 +00000000003C003B00000000003D00000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000003D0000000000000000000000000000000000000000000000000000000000000000003E0000 -003F000000000040000000000000000000000000000000410000000000000000003B0042000000430000004400000000 -004600450000000000000000000000000000000000470000000000000000000000000000000000000000000000000000 -004900480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000003E0000000000000000000000000000000000000000000000000000000000000000003F0000 +0040000000000041000000000000000000000000000000420000000000000000003C0043000000440046004500000000 +004800470000000000000000000000000000000000490000000000000000000000000000000000000000000000000000 +004B004A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00000000000000000000000000000000 00000000000000000000000000000000000003F800000000000000000000000000000000000000000000000000000000 FFFE0000BFFFFFFF000000B60000000007FF000000000000FFFFF8000001000000000000000000009FC0000000003D9F 00020000FFFF0000000007FF00000000000000000001FFC000000000200FF800FBC0000000003EEF0E00000000000000 -FF00000000000000FFFFFC00FFFFFFFB000000071400000000FE21FE0000000C00000002500000000080201E4000000C +FF80000000000000FFFFFC00FFFFFFFB000000071400000000FE21FE0000000C00000002500000000080201E4000000C 000000061000000000023986002300000000000610000000000021BEFC00000C00000002D000000000E0201E0000000C -0000000440000000008020010000000000000011D000000000603DC10000000C0000000290000000006030440000000C +0000000440000000008020010000000000000011D000000000603DC10000000C000000029000000000603DC50000000C 00000003580000000080201E0000000C0000000200000000805C8400000000000000000007F2000000007F8000000000 000000001FF2000000007F00000000000300000002A00000000000007FFE0000FEFFE0DF1FFFFFFF0000004000000000 0000000066FDE000C3000000001E0001200020640000000000000000000000000000000000000000E000000000000000 -00000000000000000000000000000000001C0000000C0000000C0000000C0000000000003FB00000200FFE4000000000 +00000000000000000000000000000000003C0000001C0000000C0000000C0000000000003FB00000200FFE4000000000 0000B80000000000000000000000000000000060000002000000000000000000000000000E0401870000000000000000 0000000000000000000000000000000009800000000000007F4000009FF81FE500000000FFFF000000007FFF00000000 -0000000F17F0000000000004000FF8000000000300003B3C000000000003A3400000000000CFF0000000000000000000 +0000000F3FF000000000001C000FF8000000000300003F3C00000000000FA3400000000000CFF0000000000000000000 0000000000000000FFF70000031021FD000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF 000010000000000000000000000000000000000000000000FFFF00000001FFFF00000000000000000000000000000000 0000000000000000000000000003800000000000000000000000000080000000000000000000000000000000FFFFFFFF 000000000000FC000000000000000000060000000000000000000000000000000000000000000000000000003FF78000 C0000000000000000000000000030000000008440000106000000000000000000000000000000000000000308003FFFF -0000000000003FC00003FF80000000000000000733C8000000000000000000200000000000667E000000100810000000 +0000000000003FC0000BFF80000000000000000733C8000000000001000000200000000000667E000000100810000000 00000000C19D000000000002004030000000000000000000000000000000000000000000000000000000000000002120 40000000000000000000000000000000000000000000000000000000000000000000FFFF0000FFFF0000000000000000 0000000000000000000000000000000000000000000000000000000000000000C0000000000000000000000000000000 000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000 0000000000000000000000000000000100000000000000000000000007C0000000000000000000000000000000000000 -0000F06E8700000000000000000000000000000000000000000000000000006000000000000000F00000000000000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000180000000000E0000000 +0000F06E8700000000000000000000000000000000000000000000000000006000000000000000F00000000000003E00 +0000000000000000000000000000000000000000000000000000000000000000000000000000180000000000F0000000 00000000000000000001FFC0000000000000003C00000000000000000000000000000002FF0000000000007F80190000 -0000000306780000000000040000000000000007001FEF800000000000080000000000037FC0000000009E0000000000 -0000000040D380000000000200000000000000000000000080000000000007F8000000035800000000800001001F1FC0 -0000000000000000000000000000000000000000FF0000004000005C0000000000000000A5F900000000000D00000000 +0000000306780000000000040000000000000007001FEF800000000000080000000000037FC0000000009E0100000000 +0000000040F380000000000200000000000000000000000080000000000007F8000000035800000000802001001F1FC0 +00000000F90000000005C3A50000000600000000FF0000004000005C0000000000000000A5F900000000000D00000000 0000000000000000000000000000000000000000B03C8000300000010000000000000000A7F800000000000100000000 -0000000000BF28000000000000000000E000000000000FBC000000000000000000000000000000000000000000000000 -0000000006FF800000000000000000000000000000000000000000000000000000000000580100000000000800000000 +0000000000FF28000000000000000000A000000000000FBC000000000000000000000000000000000000000000000000 +0000000006FF800000000000000000000000000000000000000000000000000000000000780100000000000800000000 00000000000000000CF0000000000001000007FE79F800000E7E008000000000037FFC00000000000000000000000000 00000000BF7F00000000000000000000FFFC0000006DFCFF000000000000000000000000B47E0000000000BF00000000 00A300000000000000000000000000000000000000000000000000000000000000000000000000000000000000180000 -0000000307C000000000000500000000000000000000000000000000000000000000000000000000003FFF8100000000 -0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F0000 -00000000007F000000000000000000000000000000000000000000000000000000000000000000000000800000000000 -000780000000000000000000000000100000000000000000000000000000000060000000000000000000000000000000 -FFFFFFFFFFFF3FFF0000007F0000000000000000000000000000000000000000000000000000000000000000F807C3A0 -00000FE700003C00000000000000000000000000000000000000001C0000000000000000000000000000000000000000 -FFFFFFFFF87FFFFFFFFFFFFF00201FFFF80000100000FFFE0000000000000000F9FFFF7F000007DB0000000000000000 -00008000000000000000000000000000000000000000000000000000000000000000000000004000000000000000F000 -000000000000000000000000000000000000000000000000000000000000F00000000000000000000000000000000000 -0000000000000000007F0000000000000000000000000000000007F00000000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000F800000000000000FFFFFFFFFFFFFFFFFFFFFFFF -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF -0000000000000000000000000000000000000000000000000000000000000000", +0000000307C000000400000700000000000000000000000000000000000000000000000000000000003FFF8100000000 +00000000000000000000000000000000C00000000000E3FF000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000001F000000000000007F00000000000000000000 +000000000000000000000000000000000000000000000000000080000000000000078000000000000000000000030010 +0000000000000000000000000000000060000000000000000000000000000000FFFFFFFFFFFF3FFF0000007F00000000 +00000000000000000000000000000000000000000000000000000000F807E3E000000FE700003C000000000000000000 +00000000000000000000001C0000000000000000000000000000000000000000FFFFFFFFF87FFFFFFFFFFFFF00201FFF +F80000100000FFFE0000000000000000F9FFFF7F000007DB000000000000000000008000000000000000000000000000 +000000000000000000000000000000000000000000004000000000000000F00000000000000000000000000000000000 +0000000000000000000000000000F000000000000000000000000000000000000000000000000000000000000000C000 +000000000000000000000000000000000000000000000000007F0000000000000000000000000000000007F000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8000000 +00000000FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000000000000000000000000000000000000000000000000000000000000000", ); //1344 bytes enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" @@ -345,11 +346,11 @@ FFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFEFFFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFF FFEFFFFFFEFFFFFFFFFFEFFFFFFEFFFF0000000FFFFFFEFF000000000000000000000000000000000000000000000000 00000000000000000000000000000000", ); -//896 bytes +//928 bytes enum prependTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000040", x" -000000000000010000000000000000800000000000000C00", +000000000000010000000000000000800000000000000D00", x" 010101010101010001010101010101020101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 @@ -359,17 +360,18 @@ x" 000000000000000000000000000000000000000000000000000200010000000000000000000000030000000000040000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000600050000000000000000 -0000000800070000000A0000000900000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000070000000600050000000000000000 +0000000900080000000B0000000A00000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000003F000000000000000000000000000000000000000020000000 000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000003000000000004000000000000000000000000000000000000400000000000000000000000000000000000 000000000000000000000000000000002000000000000000000000000000200000000000000000000000000000000000 -0000000000000000000000000000000C8000000000000000000000000000000200000000000000000000000000000000 -0400000000000000000000000000000000000000000003F0000000000000000000000000000000000000000000000040 -000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +0000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000000020000 +800000000000000000000000000000020000000000000000000000000000000004000000000000000000000000000000 +00000000000003F000000000000000000000000000000000000000000000004000000000000000000000000000000000 +000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", ); //1280 bytes enum controlTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" @@ -405,13 +407,13 @@ FFFF0000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000FFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000000000000000000000000000000000000000000000000000000000000", ); -//1856 bytes +//1792 bytes enum spacingMarkTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -000000000000000000000000000000200000000000000058", +000000000000000000000000000000200000000000000050", x" -000000000000010000000000000000E00000000000002400", +000000000000010000000000000000C00000000000002400", x" -010102010101010001050101040101030101010101010101010101010101010101010101010101010101010101010101 +010102010101010001010101040101030101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101 010101010101010101010101010101010101010101010101010101010101010101010101010101010000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -421,41 +423,40 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000110010000F000E000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -001500140013001200190018001700160000001C001B001A0020001F001E001D00000000000000000000000000000000 -000000000000000000210000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000C800000000000008000000000000DE01800000000000000C0000000000001981 -C0000000000000080000000000000001C0000000000000080000000000001A01000000000000000C0000000000001981 -80000000000000000000000000001DC6000000000000000E000000000000001E400000000000000C0008000000000D9B -800000000000000C0000000000001DC1000000000000000C000C00007F03000000080000000000000000000000000000 -00080000000000000000000000000000C000000000000000800000000000000000000000000000000000000000000000 -18020000000000000000000000C000000000000000000010000000000000000000100000002000000000000000000000 -C04000000000000000000000000001BF01FB0E7800000000000000000000000000000000000000000000000000000000 -00000000060000000007E00000A0000000000000000000000000000000000000E800000000000010000000000000001B -000004C200000004000C5C800000000000300FF000000000000000000000000000000000000000000080000200000000 -00000098000000000000000000000000FFF0000000000003000000000000000F000000000000000000000000000C0000 -CC3000000000000800000000000000010019800000000000000000000000200000000000000000000020C80000000000 -000000000000000000000000000000000000000000000000000016D80000000000000000000000050000000000000000 -018700000000000400000000000000000000100000000000000000000000006080380000000000040000000000004001 -002C700000000000000000000000000000000000000000000000000700000000800000000000000C0000000C0000399E -0000000000000000000000000000000000E000000000000000000000000000235A060000000000000000000000000002 -000000000000000000000000000000004F03000000000000000000000000000058070000000000000000000000000000 -0040D0000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000 -010070000000000000000000000000000000000000000000000000000000000021BE0000000000000000000000000005 -000000000000000000000010F00E00000200000000000000000000000180000000000000008000000000000000000000 -400080000000000000000000000000000012020000000000000000000000000000000000000000000000000000000000 -0000000000587C0000000000000000000000000000000000000000000000000000000000000000000060000000000000 -C0300000000000080000000000000002000000000000000000000000000000000000000000000000FFFFFFFFFFFE0000 -00000000000000FF00030000000000000000000000000000000020400000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +001500140013001200190018001700160000001C001B001A0020001F001E001D00000000002100000000000000000000 +000000000000000000220000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +C800000000000008000000000000DE01800000000000000C0000000000001981C0000000000000080000000000000001 +C0000000000000080000000000001A01000000000000000C000000000000198180000000000000000000000000001DC6 +000000000000000E000000000000001E400000000000000C000800000000001A800000000000000C0000000000001DC1 +000000000000000C000C00007F0300000008000000000000000000000000000000080000000000000000000000000000 +C00000000000000080000000000000000000000000000000000000000000000018020000000000000000000000C00000 +0000000000000010000000000000000000000000000000000000000000000000C04000000000000000000000000001BF +01FB0E780000000000000000000000000000000000000000000000000000000000000000060000000007E00000A00000 +00000000000000000000000000000000C0000000000000100000000000000003000000C20000000400005C8000000000 +00300FF00000000000000000000000000000000000000000008000020000000000000098000000000000000000000000 +FFF0000000000003000000000000000F00000000000000000000000000040000CC300000000000080000000000000000 +0019800000000000000000000000200000000000000000000020C8000000000000000000000000000000000000000000 +0000000000000000000016D8000000000000000000000005000000000000000001870000000000040000000000000000 +0000100000000000000000000000006080380000000000040000000000004000000C7000000000000000000000000000 +00000000000000000000000700000000800000000000000C0000000C0000199E06000000000000000000000000003400 +00E000000000000000000000000000235A06000000000000000000000000000200000000000000000000000000000000 +4F030000000000000000000000000000580700000000000000000000000000000000D000000000000000000000000000 +000000404000000000000000000000000000000000000000000000000000000001007000000000000000000000000000 +0000000000000000000000000000000001BE0000000000000000000000000005000000000000000000000010F00E0000 +020000000000000000000000018000000000000000800000000000000000000040008000000000000000000000000000 +00120200000000000000000000000000000000000000000000000000000000000000000000587C000000000000000000 +0000000000000000000000000000000000000000000000000060000000000000C0300000000000080000000000000000 +0000000000000000000000000000000000001C0000000000000000000000000000000000000000000000000000000000 +0000000000000000FFFFFFFFFFFE000000000000000000FF000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", ); -//3488 bytes +//3552 bytes enum graphemeExtendTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000088", x" -000000000000010000000000000001A00000000000004B00", +000000000000010000000000000001A00000000000004D00", x" 04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -471,65 +472,66 @@ x" 000000000000000000000000000000000000000000000000000000000000000000200000000000000022002100000000 0025002400230000000000000000000000000026000000000029002800270000002D002C002B002A00310030002F002E 000000340033003200380037003600350000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000 -003B003A00000000003C0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000390000000000000000000000000000000000000000003A00000000000000000000 +003C003B00000000003D0000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000003D000000000000000000000000000000000000000000000000003E000000000000 -00000040003F000000000000000000000000004100000000000000000000000000000043003B00420000000000000044 -000000000046004500000000000000000047000000000000000000000000000000000000000000000000000000000000 -000000000049004800000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000003E000000000000000000000000000000000000000000000000003F000000000000 +000000410040000000000000000000000000004200000000000000000000000000000044003C00430000000000460045 +000000000048004700000000000000000049000000000000000000000000000000000000000000000000000000000000 +00000000004B004A00000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF00000000000000000000000000000000 0000000000000000000000000000000000000000000003F8000000000000000000000000000000000000000000000000 BFFFFFFFFFFE000000000000000000B60000000007FF000000010000FFFFF800000000000000000000003D9F9FC00000 FFFF00000002000000000000000007FF0001FFC000000000200FF8000000000000003EEFFBC00000000000000E000000 -00000000FF000000FFFFFFFBFFFFFC0014000000000000070000000C00FE21FE50000000000000024000000C0080201E +00000000FF800000FFFFFFFBFFFFFC0014000000000000070000000C00FE21FE50000000000000024000000C0080201E 100000000000000600230000000239861000000000000006FC00000C000021BED0000000000000020000000C00E0201E -40000000000000040000000000802001D0000000000000110000000C00603DC190000000000000020000000C00603044 +40000000000000040000000000802001D0000000000000110000000C00603DC190000000000000020000000C00603DC5 58000000000000030000000C0080201E000000000000000200000000805C840007F20000000000000000000000007F80 1FF20000000000000000000000007F0002A00000030000007FFE0000000000001FFFFFFFFEFFE0DF0000000000000040 66FDE00000000000001E0001C300000000000000200020640000000000000000000000000000000000000000E0000000 -00000000000000000000000000000000000C0000001C0000000C0000000C00003FB000000000000000000000200FFE40 +00000000000000000000000000000000001C0000003C0000000C0000000C00003FB000000000000000000000200FFE40 000000000000B8000000000000000000000002000000006000000000000000000E040187000000000000000000000000 0000000000000000000000000000000000000000098000009FF81FE57F400000FFFF0000000000000000000000007FFF -17F000000000000F000FF8000000000400003B3C000000030003A3400000000000CFF000000000000000000000000000 +3FF000000000000F000FF8000000001C00003F3C00000003000FA3400000000000CFF000000000000000000000000000 0000000000000000031021FDFFF70000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF 0000000000001000000000000000000000000000000000000001FFFFFFFF000000000000000000000000000000000000 00000000000000000003800000000000000000000000000080000000000000000000000000000000FFFFFFFF00000000 0000FC000000000000000000000000000000000006000000000000000000000000000000000000003FF7800000000000 00000000C000000000030000000000000000106000000844000000000000000000000000000000008003FFFF00000030 -00003FC000000000000000000003FF8033C8000000000007000000200000000000667E00000000001000000000001008 +00003FC00000000000000000000BFF8033C8000000000007000000200000000100667E00000000001000000000001008 C19D00000000000000403000000000020000000000000000000000000000000000000000000000000000212000000000 00000000400000000000000000000000000000000000000000000000000000000000FFFF0000FFFF0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000C00000000000000000000000 000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000 00000000000000000000000100000000000000000000000007C000000000000000000000000000000000000000000000 -870000000000F06E000000000000000000000000000000000000006000000000000000F0000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000000000180000000000E000000000000000 +870000000000F06E000000000000000000000000000000000000006000000000000000F00000000000003E0000000000 +00000000000000000000000000000000000000000000000000000000000000000000180000000000F000000000000000 0000000000000000000000000001FFC0000000000000003C0000000000000000FF00000000000002801900000000007F -06780000000000030000000000000004001FEF800000000700080000000000007FC00000000000030000000000009E00 -40D380000000000000000000000000020000000000000000000007F8800000005800000000000003001F1FC000800001 -00000000000000000000000000000000FF00000000000000000000004000005CA5F9000000000000000000000000000D +06780000000000030000000000000004001FEF800000000700080000000000007FC00000000000030000000000009E01 +40F380000000000000000000000000020000000000000000000007F8800000005800000000000003001F1FC000802001 +F900000000000000000000060005C3A5FF00000000000000000000004000005CA5F9000000000000000000000000000D 00000000000000000000000000000000B03C8000000000000000000030000001A7F80000000000000000000000000001 -00BF280000000000000000000000000000000FBCE0000000000000000000000000000000000000000000000000000000 -06FF80000000000000000000000000000000000000000000000000000000000058010000000000000000000000000008 +00FF280000000000000000000000000000000FBCA0000000000000000000000000000000000000000000000000000000 +06FF80000000000000000000000000000000000000000000000000000000000078010000000000000000000000000008 0000000000000000000000010CF0000079F80000000007FE000000000E7E008000000000037FFC000000000000000000 BF7F0000000000000000000000000000006DFCFFFFFC00000000000000000000B47E00000000000000000000000000BF 0000000000A3000000000000000000000000000000000000000000000000000000000000000000000018000000000000 -07C0000000000003000000000000000500000000000000000000000000000000000000000000000000000000003FFF81 -00000000000000000000000000000000000000000000000000000000000000000000000000000000001F000000000000 -007F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000 -000000000007800000000010000000000000000000000000000000000000000000000000600000000000000000000000 -FFFF3FFFFFFFFFFF000000000000007F000000000000000000000000000000000000000000000000F807C3A000000000 -00003C0000000FE700000000000000000000000000000000000000000000001C00000000000000000000000000000000 -F87FFFFFFFFFFFFF00201FFFFFFFFFFF0000FFFEF80000100000000000000000000007DBF9FFFF7F0000000000000000 -000000000000800000000000000000000000000000000000000000000000000000004000000000000000F00000000000 -0000000000000000000000000000000000000000000000000000F0000000000000000000000000000000000000000000 -000000000000000000000000007F0000000000000000000000000000000007F000000000000000000000000000000000 -000000000000000000000000000000000000000000000000F800000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFF -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF -0000000000000000000000000000000000000000000000000000000000000000", +07C0000000000003000000000400000700000000000000000000000000000000000000000000000000000000003FFF81 +000000000000000000000000000000000000E3FFC0000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000001F000000000000007F0000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000800000000000000780000003001000000000 +0000000000000000000000000000000000000000600000000000000000000000FFFF3FFFFFFFFFFF000000000000007F +000000000000000000000000000000000000000000000000F807E3E00000000000003C0000000FE70000000000000000 +0000000000000000000000000000001C00000000000000000000000000000000F87FFFFFFFFFFFFF00201FFFFFFFFFFF +0000FFFEF80000100000000000000000000007DBF9FFFF7F000000000000000000000000000080000000000000000000 +0000000000000000000000000000000000004000000000000000F0000000000000000000000000000000000000000000 +00000000000000000000F000000000000000000000000000000000000000000000000000000000000000C00000000000 +00000000000000000000000000000000000000000000000000000000007F0000000000000000000000000000000007F0 +00000000000000000000000000000000000000000000000000000000000000000000000000000000F800000000000000 +FFFFFFFF00000000FFFFFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000", ); //1344 bytes enum Extended_PictographicTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" diff --git a/std/internal/unicode_norm.d b/std/internal/unicode_norm.d index bc51c8cd610..d1d2fe5315c 100644 --- a/std/internal/unicode_norm.d +++ b/std/internal/unicode_norm.d @@ -18,13 +18,13 @@ package(std): static if (size_t.sizeof == 4) { -//1728 bytes +//1856 bytes enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -0000000000000040000000C0", +0000000000000040000000D0", x" -000001000000010000001E00", +000001000000012000002000", x" -020201000302020202020204020502020202020206020202020202020202020202020202020202020202020202020202 +020201000302020205020204020602020202020207020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -36,38 +36,41 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000012000000140013000000000000000000000000000000000000000000000000 0000000000000000000000000000000000160015001700000019001800000000001A0000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000001B0000000000000000000000000000 +001B00000000000000000000000000000000000000000000001C00000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000001200120000001C000000000000000000000000000000000000000000000000 +001D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000001200120000001E0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000081A9FDF010361F80000003F40100000 -000000800000000000000000000000000000000000000000003800000000000000000000000000000000000000000000 -0000000010000000FF000000000000000000000040000000B08000000000000000000000004800004E00000000000000 -00000000000000000000000000000000000000004000000030C000000000000000000000400000000080000000000000 -000000000000000000400000000000000000000000000000006000040000000000000000400000000080000000000000 -000000000000000080008400000000000000000000000000108420080168020020080002020010840000000000000000 -0000000000004000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFE -00000000FFFFFF0000000007000000000000000000200000000000000000000000000000000000000000000000000000 -0000000000000000000000002AAA0000000000004800000008080A002A00C80800000003000000000000000000000000 -000000000000000000000000000000000000000000000C40000000000000000000000000000000000000000000000000 -000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000010000000000000000000000000000000000000000000000006000000000000000000000000000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FE53FFFFFFFFC65FFFFFFFFFFFF3FFF -FFFFFFFFFFFFFFFF03FFFFFF00000000A00000005F7FFC0000007FDB0000000000000000000000000000000000000000 -000000000000000000000000000000000000000004000000000000000000000000000000000000800000000000000000 -000000000000000000000000000000000000000040000000008000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000024010000000000000000000000000000000000000000000000000000 -000000000000800000000000000000000000000000010000000000000000000000000000000000000000000000000000 -0000000000000000C00000000000001F00000000F800000000000001000000003FFFFFFF000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +081A9FDF010361F80000003F401000000000008000000000000000000000000000000000000000000038000000000000 +000000000000000000000000000000000000000010000000FF000000000000000000000040000000B080000000000000 +00000000004800004E0000000000000000000000000000000000000000000000000000004000000030C0000000000000 +000000004000000000800000000000000000000000000000004000000000000000000000000000000060000400000000 +000000004000000000800000000000000000000000000000800084000000000000000000000000001084200801680200 +200800020200108400000000000000000000000000004000000000000000000000000000000000000000000000000000 +000000000000000000000000003FFFFE00000000FFFFFF00000000070000000000000000002000000000000000000000 +000000000000000000000000000000000000000000000000000000002AAA0000000000004800000008080A002A00C808 +00000003000000000000000000000000000000000000000000000000000000000000000000000C400000000000000000 +000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000 +06000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +7FE53FFFFFFFFC65FFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000A00000005F7FFC0000007FDB00000000 +000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000 +000000000000008000000000000000000000000000000000000000000000000000000000400000000080000000000000 +0000000009000000000003A4000000000000000000000000000000000000000000000000240100000000000000000000 +000000000000000000000000000000000000000000008000000000000000000000000000000100000000000000000000 +00000000000000000000000000000000C0000000000003FF000000000000000000000000000000000000000000000000 +00000000000000000000000000000180000000000000000000000000000000000000000000000000C00000000000001F +00000000F800000000000001000000003FFFFFFF00000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//2048 bytes +//2208 bytes enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -0000000000000040000000E0", +0000000000000040000000F0", x" -000001000000014000002400", +000001000000016000002700", x" -020201000504030202020206020702020202020208020202020202020202020202020202020202020202020202020202 +020201000504030207020206020802020202020209020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -80,44 +83,47 @@ x" 001700170017001700170017001700170017001700170017001700170017001700170017001700170017001700170017 001700170017001700170017001700170017001700170017001700170018001700050005000500050005000500050005 000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 -00170005001A001900050005000500050005000500050005000500050005000500050005000500050005000500050005 -001C001B001D0005001F001E000500050020000500050005000500050005000500050005000500050005000500050005 -000500050005000500050005000500050021000500050005000500050005000500050005000500050005000500050005 +00170005001A001900050005000500050005000500050005001B00050005000500050005000500050005000500050005 +001D001C001E00050020001F000500050021000500050005000500050005000500220005000500050005000500050005 +000500050005000500230005000500050005000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500240005000500050005000500050005 000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 -001700170005002200050005000500050005000500050005000500050005000500050005000500050005000500050005 -000500050005000500050005000500050005000500050005000500050005000500000000000000000000000000000000 -00000000000000003E7EFFBFBE7EFFBFFFFCFFFF7EF1FF3FFFF3F1F87FFFFF3F0000000000018003DFFFE000FF31FFCF -CFFFFFFF000FFFC000000000000000000000000000000000000000000000000000000000000000000000001B40100000 -0001D7E00001FC0000187C00000000000200708B02000000708B000000C000000000000000000000FCCF0006033FFCFC -0000000000000000000000000000000000000000000000000000000000000000000000000000007C0000000000000000 -000000000000000000080005000000000000000000120200FF000000000000000000000000000000B000180000000000 -00000000004800004E000000000000000000000000000000000000000000000000000000000000003000190000000000 -001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D8100000000 -000000000000000000001C00000000000000000000000000740000000000000000000000000000001084200801680200 -200800020200108400000000000000000000000000000040000000000000000000000000000000000000000000000000 -00045540280000000000000B0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0BFFFFFFFFFFFFFFFFFFFFFF03FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFFFFFFFFFF5FDFFFFFEFCFFFDE3FDCFFFF -00000003000000000000000000000000000000000000000000000000000000000000000000000C400000000000000000 -0C000000000040000000E000000000000000121000000050000002920333E005000003330000F0000000000000003C0F -000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000100000000000000000000000000000005555500036DB02A5401000005555500036DB02A547900000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF0000000F00000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000 -A00000005F7FFC0000007FDB000000000000000000000000000000000000000000000000000000000000000000000000 +000500050005000500050005000500050017001700050025000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +0000000000000000000000000000000000000000000000003E7EFFBFBE7EFFBFFFFCFFFF7EF1FF3FFFF3F1F87FFFFF3F +0000000000018003DFFFE000FF31FFCFCFFFFFFF000FFFC0000000000000000000000000000000000000000000000000 +00000000000000000000001B401000000001D7E00001FC0000187C00000000000200708B02000000708B000000C00000 +0000000000000000FCCF0006033FFCFC0000000000000000000000000000000000000000000000000000000000000000 +000000000000007C0000000000000000000000000000000000080005000000000000000000120200FF00000000000000 +0000000000000000B00018000000000000000000004800004E0000000000000000000000000000000000000000000000 +00000000000000003000190000000000001000000000000000001C000000000000000000000000000000010000000000 +000000000000000000000D8100000000000000000000000000001C000000000000000000000000007400000000000000 +000000000000000010842008016802002008000202001084000000000000000000000000000000400000000000000000 +0000000000000000000000000000000000045540280000000000000B0000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BFFFFFFFFFFFFFFFFFFFFFF03FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFF +FFFFFFFF5FDFFFFFEFCFFFDE3FDCFFFF0000000300000000000000000000000000000000000000000000000000000000 +0000000000000C4000000000000000000C000000000040000000E000000000000000121000000050000002920333E005 +000003330000F0000000000000003C0F0000000000000600000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000100000000000000000000000000000005555500036DB02A5 +401000005555500036DB02A547900000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFF +FFFFFFFFFFFFFFFF03FFFFFF00000000A00000005F7FFC0000007FDB0000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000 14000000000008000000000000000000000000000000C000000000000000000000000000000000000000000000000000 -000000000000000000001800000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000001800000000000002402800000000000001A00000000000000000000000000000000000000000 0000000058000000000000000000000000000000000000000000000000000000000000000C0000000000000000000000 -00000000010000000000000000000000000000000000000000000000000000000000000000000000C00000000000001F -00000000F800000000000001000000003FFFFFFF00000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +000000000100000000000000000000000000000000000000000000000000000000000000000001FE0000000000000000 +000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000 +0000000000000000C00000000000001F00000000F800000000000001000000003FFFFFFF000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); -//2848 bytes +//3008 bytes enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -0000000000000040000000E0", +0000000000000040000000F0", x" -000001000000014000003D00", +000001000000016000004000", x" -020201000402030202020205070602020202020208020202020202020202020202020202020202020202020202020202 +020201000402030206020205080702020202020209020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -130,61 +136,64 @@ x" 000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 000400040004000400040004000400040004000400040004000400040004000400210004002600250027002100290028 000400040004000400040004002A000400040004000400040004000400040004002C002B002D0004002F002E00040004 -003000040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 -003100040004000400330032003500340004000400040004000400040004000400040036000400040004000400040004 -000400040004000400040004000400370038000400040039000400040004000400040004003A00040004000400040004 +003000040004000400040004000400040031000400040004000400040004000400040004000400040032000400040004 000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 -002100210004003B00040004000400040004000400040004000400040004000400040004000400040004000400040004 -000400040004000400040004000400040004000400040004000400040004000400000000000000000000000000000000 -00000000773C8501000000000000000000000000800C00000000020180000000000000000000000000001FF0000E0000 -000000000000000000000000000000000000000001FF00003F0000000000001F081A9FDF010361F80000003F44100000 -000000B000000000007F0000023700000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000008000000000000000000000000000000000000000000038000001E00000 -000000000000000000000000000000000000000010000000FF000000000000000000000040000000B080000000000000 -00000000004800004E0000000000000000000000000000000000000000000000000000004000000030C0000000000000 -000000004000000000800000000000000000000000000000004000000000000000000000000000000060000400000000 -000000004000000000800000000000000000000000000000800084000000000000000000000800000000000000000000 -0000000000080000300000000000000000001000000000001084200803E8020020080002020010840000000000000000 -0000000000004000000000000000000000000000000000000000000010000000000000000000000000000000003FFFFE -00000000FFFFFF0000000007000000000000000000200000000000000000000000000000000000000000000000000000 -00000000F7FF7000FFFFBFFF010007FFF8000000FFFFFFFF000000000000000000000000000000000000000000000000 -0C0000000000000000000000000000000000000000000000000000002AAA000000000000E8000000E808EA036A00E808 -008207FF50D8807080800380FFF300001FFF7FFF0000010000000000000000003E6FFEEFFBFBBD57FFFF03E1FFFFFFFF -00000200000000000000000000000000000000000001B000000000000000000000000000000000000000000000000000 -0000000000000600000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF000007FF0000100000000000000000000070000000000000000000001000000000000000 -000000000000000000000000300000000000000000000000000000000000000000000000000000000000000000008000 -000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000080000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF0000000000000001074000000000000000000000 -9E00000000000000000000008000000000000000FFFE0000FFFFFFFFFFFFFFFFFFFC7FFF000000000000000000000000 -7FFFFFFFFFFFFFFFFFFF00FF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000030000000000000000000000000000000 -00000000000000000000000000010000000000000000000000000000031C00000000000000000000F000000000000200 -000000000000000000000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000 -A0F8007F5F7FFFFFFFFFFFDBFFFFFFFFFFFFFFFF0003FFFFFFF80000FFFFFFFFFFFFFFFF3FFFFFFFFFFF0000FFFFFFFF -FFFCFFFFFFFFFFFF000000FF1FFF000003FF0000FFFF0000FFF7FF9FFFD70F7FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFF -FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF1CFCFCFC00007F7F00000000000000000000000000000000 -FFFFFFBE07FDFFFF00000000000000000000000000000000000000000000000000000000040000000000000000000000 -000000000000008000000000000000000000000000000000000000000000000000000000400000000080000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000240100000000000000000000 -000000000000000000000000000000000000000000008000000000000000000000000000000100000000000000000000 -000000000000000000000000000000000000000000000000C00000000000001F00000000F80000000000000100000000 -FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFFDFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFF00000000FFFF0000FFFFFFFF00003FFF -00000000000000000000000000000000FFFFFFEF0AF7FE96AA96EA845EF7F7960FFFFBFF0FFFFBEE0000000000000000 -FFFF07FFFFFF7FFF0000FFFF00001C0000010000000000000000000000000000FFFF00070FFFFFFF000301FF00000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003FF0000 -3FFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +000400040004000400040033000400040034000400040004003600350038003700040004000400040004000400040004 +000400390004000400040004000400040004000400040004000400040004003A003B00040004003C0004000400040004 +00040004003D000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +00040004000400040004000400040004002100210004003E000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +0000000000000000000000000000000000000000773C8501000000000000000000000000800C00000000020180000000 +000000000000000000001FF0000E0000000000000000000000000000000000000000000001FF00003F0000000000001F +081A9FDF010361F80000003F44100000000000B000000000007F00000237000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000 +00000000000000000038000001E00000000000000000000000000000000000000000000010000000FF00000000000000 +0000000040000000B08000000000000000000000004800004E0000000000000000000000000000000000000000000000 +000000004000000030C00000000000000000000040000000008000000000000000000000000000000040000000000000 +000000000000000000600004000000000000000040000000008000000000000000000000000000008000840000000000 +000000000008000000000000000000000000000000080000300000000000000000001000000000001084200803E80200 +200800020200108400000000000000000000000000004000000000000000000000000000000000000000000010000000 +000000000000000000000000003FFFFE00000000FFFFFF00000000070000000000000000002000000000000000000000 +0000000000000000000000000000000000000000F7FF7000FFFFBFFF010007FFF8000000FFFFFFFF0000000000000000 +000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000002AAA0000 +00000000E8000000E808EA036A00E808008207FF50D8807080800380FFF300001FFF7FFF000001000000000000000000 +3E6FFEEFFBFBBD57FFFF03E1FFFFFFFF00000200000000000000000000000000000000000001B0000000000000000000 +000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000 +000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FF00001000000000000000000000700000 +000000000000000010000000000000000000000000000000000000003000000000000000000000000000000000000000 +000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000 +80000000000000000000000000080000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF00000000 +000000010740000000000000000000009E00000000000000000000008000000000000000FFFE0000FFFFFFFFFFFFFFFF +FFFC7FFF0000000000000000000000007FFFFFFFFFFFFFFFFFFF00FF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 +3000000000000000000000000000000000000000000000000000000000010000000000000000000000000000031C0000 +0000000000000000F000000000000200000000000000000000000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFF +FFFFFFFFFFFFFFFF03FFFFFF00000000A0F8007F5F7FFFFFFFFFFFDBFFFFFFFFFFFFFFFF0003FFFFFFF80000FFFFFFFF +FFFFFFFF3FFFFFFFFFFF0000FFFFFFFFFFFCFFFFFFFFFFFF000000FF1FFF000003FF0000FFFF0000FFF7FF9FFFD70F7F +FFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF1CFCFCFC00007F7F +00000000000000000000000000000000FFFFFFBE07FDFFFF000000000000000000000000000000000000000000000000 +000000000400000000000000000000000000000000000080000000000000000000000000000000000000000000000000 +000000004000000000800000000000000000000009000000000003A40000000000000000000000000000000000000000 +000000002401000000000000000000000000000000000000000000000000000000000000000080000000000000000000 +0000000000010000000000000000000000000000000000000000000000000000C0000000000003FF0000000000000000 +000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000 +000000000000000000000000000000000000000000000000FFC0000003FFFFFF0000000000000000C00000000000001F +00000000F80000000000000100000000FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFF +DFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFF +00000000FFFF0000FFFFFFFF00003FFF00000000000000000000000000000000FFFFFFEF0AF7FE96AA96EA845EF7F796 +0FFFFBFF0FFFFBEE0000000000000000FFFF07FFFFFF7FFF0000FFFF00001C0000010000000000000000000000000000 +FFFF00070FFFFFFF000301FF000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000003FF00003FFFFFFF00000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//2944 bytes +//3136 bytes enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -0000000000000040000000F0", +000000000000004000000100", x" -000001000000016000003E00", +000001000000018000004200", x" -020201000504030202020206080702020202020209020202020202020202020202020202020202020202020202020202 +02020100050403020702020609080202020202020A020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -197,47 +206,51 @@ x" 002100210021002100210021002100210021002100210021002100210021002100210021002100210021002100210021 002100210021002100210021002100210021002100210021002100210025002100070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -002100070027002600280021002A0029000700070007000700070007002B000700070007000700070007000700070007 -002D002C002E00070030002F000700070031000700070007000700070007000700070007000700070007000700070007 -000700070007000700070007000700070032000700070007003400330036003500070007000700070007000700070007 -0007003700070007000700070007000700070007000700070007000700070038003900070007003A0007000700070007 -00070007003B000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -00070007000700070007000700070007002100210007003C000700070007000700070007000700070007000700070007 +002100070027002600280021002A00290007000700070007002B0007002C000700070007000700070007000700070007 +002E002D002F000700310030000700070032000700070007000700070007000700330007000700070007000700070007 +000700070007000700340007000700070007000700070007000700070007000700070007000700070007000700070007 +0007000700070007000700070007000700070007000700070007003500070007003600070007000700380037003A0039 +000700070007000700070007000700070007003B0007000700070007000700070007000700070007000700070007003C +003D00070007003E000700070007000700070007003F0007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700210021000700400007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -0000000000000000000000000000000000000000773C85013E7EFFBFBE7EFFBFFFFCFFFFFEFDFF3FFFF3F3F9FFFFFF3F -0000000000018003DFFFFFF0FF3FFFCFCFFFFFFF000FFFC000000000000000000000000001FF00003F0000000000001F -00000000000000000000001B441000000001D7F00001FC00007F7C00023700000200708B02000000708B000000C00000 -0000000000000000FCCF0006033FFCFC0000000000000000000000000000000000000080000000000000000000000000 -000000000000007C0000000001E000000000000000000000000800050000000000000000000000000000000000000000 -000000000000000000000000000000000000000000120200FF000000000000000000000000000000B000180000000000 -00000000004800004E000000000000000000000000000000000000000000000000000000000000003000190000000000 -001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D8100000000 -000000000000000000001C00000000000000000000000000740000000000000000000000000800000000000000000000 -0000000000080000300000000000000000001000000000001084200803E8020020080002020010840000000000000000 -000000000000004000000000000000000000000000000000000000001000000000045540280000000000000B00000000 -0000000000000000000000000000000000000000F7FF7000FFFFBFFF010007FFF8000000FFFFFFFF0000000000000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF03FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFF -FFFFFFFFFFDFFFFFEFCFFFDF7FDCFFFF008207FF50D8807080800380FFF300001FFF7FFF000001000000000000000000 -3E6FFEEFFBFBBD57FFFF03E1FFFFFFFF0C000200000040000000E00000000000000012100001B050000002920333E005 -000003330000F0000000000000003C0F0000000000000600000000000000000000000000000000000000000000000000 -000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FF00001000000000000000000000700000 -000000000000000010000000000000000000000000000000000000003000000000000000000000000000000000000000 -000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000 -80000000000000000000000000080000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF00000000 -00000001074000005555500036DB02A5D81000005555500036DB02A5C790000000000000FFFE0000FFFFFFFFFFFFFFFF -FFFC7FFF0000000000000000000000007FFFFFFFFFFFFFFFFFFF00FF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 -3000000000000000000000000000000000000000000000000000000000010000000000000000000000000000031C0000 -0000000000000000F00000000000020000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF0000000F00000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFF03FFFFFF00000000 -A0F8007F5F7FFFFFFFFFFFDBFFFFFFFFFFFFFFFF0003FFFFFFF80000FFFFFFFFFFFFFFFF3FFFFFFFFFFF0000FFFFFFFF -FFFCFFFFFFFFFFFF000000FF1FFF000003FF0000FFFF0000FFF7FF9FFFD70F7FFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFF -FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF1CFCFCFC00007F7F00000000000000000000000000000000 +000700070007000700070007000700070000000000000000000000000000000000000000773C85013E7EFFBFBE7EFFBF +FFFCFFFFFEFDFF3FFFF3F3F9FFFFFF3F0000000000018003DFFFFFF0FF3FFFCFCFFFFFFF000FFFC00000000000000000 +0000000001FF00003F0000000000001F00000000000000000000001B441000000001D7F00001FC00007F7C0002370000 +0200708B02000000708B000000C000000000000000000000FCCF0006033FFCFC00000000000000000000000000000000 +00000080000000000000000000000000000000000000007C0000000001E0000000000000000000000008000500000000 +00000000000000000000000000000000000000000000000000000000000000000000000000120200FF00000000000000 +0000000000000000B00018000000000000000000004800004E0000000000000000000000000000000000000000000000 +00000000000000003000190000000000001000000000000000001C000000000000000000000000000000010000000000 +000000000000000000000D8100000000000000000000000000001C000000000000000000000000007400000000000000 +000000000008000000000000000000000000000000080000300000000000000000001000000000001084200803E80200 +200800020200108400000000000000000000000000000040000000000000000000000000000000000000000010000000 +00045540280000000000000B000000000000000000000000000000000000000000000000F7FF7000FFFFBFFF010007FF +F8000000FFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFF03FFFFFF +3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFFFFFFFFFFFFDFFFFFEFCFFFDF7FDCFFFF008207FF50D8807080800380FFF30000 +1FFF7FFF0000010000000000000000003E6FFEEFFBFBBD57FFFF03E1FFFFFFFF0C000200000040000000E00000000000 +000012100001B050000002920333E005000003330000F0000000000000003C0F00000000000006000000000000000000 +00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FF +000010000000000000000000007000000000000000000000100000000000000000000000000000000000000030000000 +000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000 +0000000000000000000000000000000080000000000000000000000000080000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF003FFFFF0000000000000001074000005555500036DB02A5D81000005555500036DB02A5C7900000 +00000000FFFE0000FFFFFFFFFFFFFFFFFFFC7FFF0000000000000000000000007FFFFFFFFFFFFFFFFFFF00FF7FFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000010000 +000000000000000000000000031C00000000000000000000F00000000000020000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000000000007FE53FFFFFFFFC65FFFFFFFFFFFF3FFF +FFFFFFFFFFFFFFFF03FFFFFF00000000A0F8007F5F7FFFFFFFFFFFDBFFFFFFFFFFFFFFFF0003FFFFFFF80000FFFFFFFF +FFFFFFFF3FFFFFFFFFFF0000FFFFFFFFFFFCFFFFFFFFFFFF000000FF1FFF000003FF0000FFFF0000FFF7FF9FFFD70F7F +FFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF1CFCFCFC00007F7F +000000000000000000000000000000000000000000000000000002000000001000000000000000000000000000000000 FFFFFFBE07FDFFFF00000000000000000000000000000000000000000000000014000000000008000000000000000000 000000000000C00000000000000000000000000000000000000000000000000000000000000000000000180000000000 -000000000000000000000000000000000000000000000000000000000000000000000000580000000000000000000000 +0002402800000000000001A0000000000000000000000000000000000000000000000000580000000000000000000000 00000000000000000000000000000000000000000C000000000000000000000000000000010000000000000000000000 -000000000000000000000000000000000000000000000000C00000000000001F00000000F80000000000000100000000 +0000000000000000000000000000000000000000000001FE000000000000000000000000000000000000000000000000 +000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000FFC0000003FFFFFF0000000000000000C00000000000001F00000000F80000000000000100000000 FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFFDFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFF00000000FFFF0000FFFFFFFF00003FFF @@ -253,13 +266,13 @@ FFFF07FFFFFF7FFF0000FFFF00001C0000010000000000000000000000000000FFFF00070FFFFFFF static if (size_t.sizeof == 8) { -//1728 bytes +//1856 bytes enum nfcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -000000000000000000000000000000200000000000000060", +000000000000000000000000000000200000000000000068", x" -000000000000010000000000000001000000000000001E00", +000000000000010000000000000001200000000000002000", x" -030202020202010002050202020202040602020202020202020202020202020202020202020202020202020202020202 +030202020202010002060202050202040702020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -271,38 +284,41 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000014001300120000000000000000000000000000000000000000000000000000 000000000000000000000000000000000017000000160015000000000019001800000000001A00000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000001B00000000000000000000 +00000000001B00000000000000000000000000000000000000000000001C000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000001C00120012000000000000000000000000000000000000000000000000 +00000000001D000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000001E001200120000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000010361F8081A9FDF401000000000003F -000000000000008000000000000000000000000000000000000000000038000000000000000000000000000000000000 -100000000000000000000000FF000000400000000000000000000000B08000000048000000000000000000004E000000 -0000000000000000000000000000000040000000000000000000000030C0000040000000000000000000000000800000 -000000000000000000000000004000000000000000000000000000000060000440000000000000000000000000800000 -000000000000000000000000800084000000000000000000016802001084200802001084200800020000000000000000 -00004000000000000000000000000000000000000000000000000000000000000000000000000000003FFFFE00000000 -FFFFFF000000000000000000000000070020000000000000000000000000000000000000000000000000000000000000 -00000000000000002AAA00000000000048000000000000002A00C80808080A0000000000000000030000000000000000 -0000000000000000000000000000000000000C4000000000000000000000000000000000000000000000000000000000 -000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000100000000000000000000000000000000000000000000000060000000000000000000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC657FE53FFFFFFF3FFFFFFFFFFF -FFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFC00A00000000000000000007FDB00000000000000000000000000000000 -000000000000000000000000000000000400000000000000000000000000000000000080000000000000000000000000 -000000000000000000000000000000004000000000000000000000000080000000000000000000000000000000000000 -000000000000000000000000000000002401000000000000000000000000000000000000000000000000000000000000 -000080000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000 -00000000000000000000001FC0000000F8000000000000000000000000000001000000003FFFFFFF0000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +010361F8081A9FDF401000000000003F0000000000000080000000000000000000000000000000000000000000380000 +00000000000000000000000000000000100000000000000000000000FF000000400000000000000000000000B0800000 +0048000000000000000000004E0000000000000000000000000000000000000040000000000000000000000030C00000 +400000000000000000000000008000000000000000000000000000000040000000000000000000000000000000600004 +400000000000000000000000008000000000000000000000000000008000840000000000000000000168020010842008 +020010842008000200000000000000000000400000000000000000000000000000000000000000000000000000000000 +0000000000000000003FFFFE00000000FFFFFF0000000000000000000000000700200000000000000000000000000000 +0000000000000000000000000000000000000000000000002AAA00000000000048000000000000002A00C80808080A00 +000000000000000300000000000000000000000000000000000000000000000000000C40000000000000000000000000 +000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000 +00000000060000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFC657FE53FFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFC00A00000000000000000007FDB +000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000 +000000800000000000000000000000000000000000000000000000000000000040000000000000000000000000800000 +090000000000000000000000000003A40000000000000000000000000000000024010000000000000000000000000000 +000000000000000000000000000000000000800000000000000000000000000000010000000000000000000000000000 +00000000000000000000000000000000000003FFC0000000000000000000000000000000000000000000000000000000 +000000000000000000000180000000000000000000000000000000000000000000000000000000000000001FC0000000 +F8000000000000000000000000000001000000003FFFFFFF000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//2048 bytes +//2208 bytes enum nfdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -000000000000000000000000000000200000000000000070", +000000000000000000000000000000200000000000000078", x" -000000000000010000000000000001400000000000002400", +000000000000010000000000000001600000000000002700", x" -050403020202010002070202020202060802020202020202020202020202020202020202020202020202020202020202 +050403020202010002080202070202060902020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -315,44 +331,47 @@ x" 001700170017001700170017001700170017001700170017001700170017001700170017001700170017001700170017 001700170017001700170017001700170017001700170017001800170017001700050005000500050005000500050005 000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 -001A00190017000500050005000500050005000500050005000500050005000500050005000500050005000500050005 -001D0005001C001B00050005001F001E0005000500200005000500050005000500050005000500050005000500050005 -000500050005000500050005000500050005000500210005000500050005000500050005000500050005000500050005 +001A0019001700050005000500050005000500050005000500050005001B000500050005000500050005000500050005 +001E0005001D001C000500050020001F0005000500210005000500050005000500050005002200050005000500050005 +000500050005000500050005002300050005000500050005000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005002400050005000500050005 000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 -000500220017001700050005000500050005000500050005000500050005000500050005000500050005000500050005 -000500050005000500050005000500050005000500050005000500050005000500000000000000000000000000000000 -0000000000000000BE7EFFBF3E7EFFBF7EF1FF3FFFFCFFFF7FFFFF3FFFF3F1F80001800300000000FF31FFCFDFFFE000 -000FFFC0CFFFFFFF0000000000000000000000000000000000000000000000000000000000000000401000000000001B -0001FC000001D7E00000000000187C00020000000200708B00C00000708B00000000000000000000033FFCFCFCCF0006 -00000000000000000000000000000000000000000000000000000000000000000000007C000000000000000000000000 -00000000000000000000000000080005001202000000000000000000FF000000000000000000000000000000B0001800 -0048000000000000000000004E0000000000000000000000000000000000000000000000000000000000000030001900 -00000000001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D81 -00000000000000000000000000001C000000000000000000000000007400000000000000000000000168020010842008 -020010842008000200000000000000000000004000000000000000000000000000000000000000000000000000000000 -2800000000045540000000000000000B00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF0BFFFFFF03FFFFFFFFFFFFFFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F5FDFFFFFFFFFFFFF3FDCFFFFEFCFFFDE -000000000000000300000000000000000000000000000000000000000000000000000C40000000000000000000000000 -000040000C000000000000000000E00000000050000012100333E005000002920000F0000000033300003C0F00000000 -000006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000010000000000000000000000036DB02A55555500055555000401000004790000036DB02A5 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0000000FFFFFFFFF0000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF -5F7FFC00A00000000000000000007FDB0000000000000000000000000000000000000000000000000000000000000000 +000500050005000500050005000500050005002500170017000500050005000500050005000500050005000500050005 +000500050005000500050005000500050005000500050005000500050005000500050005000500050005000500050005 +000000000000000000000000000000000000000000000000BE7EFFBF3E7EFFBF7EF1FF3FFFFCFFFF7FFFFF3FFFF3F1F8 +0001800300000000FF31FFCFDFFFE000000FFFC0CFFFFFFF000000000000000000000000000000000000000000000000 +0000000000000000401000000000001B0001FC000001D7E00000000000187C00020000000200708B00C00000708B0000 +0000000000000000033FFCFCFCCF00060000000000000000000000000000000000000000000000000000000000000000 +0000007C00000000000000000000000000000000000000000000000000080005001202000000000000000000FF000000 +000000000000000000000000B00018000048000000000000000000004E00000000000000000000000000000000000000 +0000000000000000000000003000190000000000001000000000000000001C0000000000000000000000000000000100 +00000000000000000000000000000D8100000000000000000000000000001C0000000000000000000000000074000000 +000000000000000001680200108420080200108420080002000000000000000000000040000000000000000000000000 +000000000000000000000000000000002800000000045540000000000000000B00000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BFFFFFF03FFFFFFFFFFFFFFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F +5FDFFFFFFFFFFFFF3FDCFFFFEFCFFFDE0000000000000003000000000000000000000000000000000000000000000000 +00000C40000000000000000000000000000040000C000000000000000000E00000000050000012100333E00500000292 +0000F0000000033300003C0F000000000000060000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000010000000000000000000000036DB02A555555000 +55555000401000004790000036DB02A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFF0000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFF +FFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFC00A00000000000000000007FDB00000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000100000020000000000000000000000000000000000 000008001400000000000000000000000000C00000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000001800000000000002402800000000000001A000000000000000000000000000000000 58000000000000000000000000000000000000000000000000000000000000000C000000000000000000000000000000 -010000000000000000000000000000000000000000000000000000000000000000000000000000000000001FC0000000 -F8000000000000000000000000000001000000003FFFFFFF000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +0100000000000000000000000000000000000000000000000000000000000000000001FE000000000000000000000000 +000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000 +00000000000000000000001FC0000000F8000000000000000000000000000001000000003FFFFFFF0000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); -//2848 bytes +//3008 bytes enum nfkcQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -000000000000000000000000000000200000000000000070", +000000000000000000000000000000200000000000000078", x" -000000000000010000000000000001400000000000003D00", +000000000000010000000000000001600000000000004000", x" -040203020202010007060202020202050802020202020202020202020202020202020202020202020202020202020202 +040203020202010008070202060202050902020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -365,61 +384,64 @@ x" 000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 000400040004000400040004000400040004000400040004000400040004000400260025002100040029002800270021 0004000400040004002A00040004000400040004000400040004000400040004002D0004002C002B00040004002F002E -000400040030000400040004000400040004000400040004000400040004000400040004000400040004000400040004 -000400040031000400350034003300320004000400040004000400040004000400040004000400360004000400040004 -0004000400040004000400370004000400040039003800040004000400040004003A0004000400040004000400040004 +000400040030000400040004000400040004000400310004000400040004000400040004000400040004000400320004 000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 -0004003B0021002100040004000400040004000400040004000400040004000400040004000400040004000400040004 -000400040004000400040004000400040004000400040004000400040004000400000000000000000000000000000000 -773C8501000000000000000000000000800C00000000000080000000000002010000000000000000000E000000001FF0 -0000000000000000000000000000000001FF0000000000000000001F3F000000010361F8081A9FDF441000000000003F -00000000000000B002370000007F00000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000800000000000000000000000000000000001E0000000380000 -00000000000000000000000000000000100000000000000000000000FF000000400000000000000000000000B0800000 -0048000000000000000000004E0000000000000000000000000000000000000040000000000000000000000030C00000 -400000000000000000000000008000000000000000000000000000000040000000000000000000000000000000600004 -400000000000000000000000008000000000000000000000000000008000840000080000000000000000000000000000 -00080000000000000000000030000000000000000000100003E802001084200802001084200800020000000000000000 -00004000000000000000000000000000000000000000000010000000000000000000000000000000003FFFFE00000000 -FFFFFF000000000000000000000000070020000000000000000000000000000000000000000000000000000000000000 -F7FF700000000000010007FFFFFFBFFFFFFFFFFFF8000000000000000000000000000000000000000000000000000000 -000000000C000000000000000000000000000000000000002AAA000000000000E8000000000000006A00E808E808EA03 -50D88070008207FFFFF3000080800380000001001FFF7FFF0000000000000000FBFBBD573E6FFEEFFFFFFFFFFFFF03E1 -000000000000020000000000000000000001B00000000000000000000000000000000000000000000000000000000000 -00000600000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000 -FFFFFFFFFFFFFFFF000007FFFFFFFFFF0000000000001000007000000000000000000000000000000000000010000000 -000000000000000030000000000000000000000000000000000000000000000000000000000000000000800000000000 -000000000000000000000000000000000000000000000000000000000000000000000000800000000008000000000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000003FFFFF07400000000000010000000000000000 -000000009E0000008000000000000000FFFE000000000000FFFFFFFFFFFFFFFF00000000FFFC7FFF0000000000000000 -FFFFFFFF7FFFFFFF7FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000300000000000000000000000 -000000000000000000010000000000000000000000000000031C000000000000000000000000000000000200F0000000 -00000000000000000000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF -5F7FFFFFA0F8007FFFFFFFFFFFFFFFDB0003FFFFFFFFFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFFFFFFFFFFFFF0000 -FFFFFFFFFFFCFFFF1FFF0000000000FFFFFF000003FF0000FFD70F7FFFF7FF9FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF00007F7F1CFCFCFC00000000000000000000000000000000 -07FDFFFFFFFFFFBE00000000000000000000000000000000000000000000000004000000000000000000000000000000 -000000800000000000000000000000000000000000000000000000000000000040000000000000000000000000800000 -000000000000000000000000000000000000000000000000000000000000000024010000000000000000000000000000 -000000000000000000000000000000000000800000000000000000000000000000010000000000000000000000000000 -0000000000000000000000000000000000000000000000000000001FC0000000F8000000000000000000000000000001 -FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFF00000000000000003FFFFFFFFFFF -000000000000000000000000000000000AF7FE96FFFFFFEF5EF7F796AA96EA840FFFFBEE0FFFFBFF0000000000000000 -FFFF7FFFFFFF07FF00001C000000FFFF000000000001000000000000000000000FFFFFFFFFFF000700000000000301FF -0000000000000000000000000000000000000000000000000000000000000000000000000000000003FF000000000000 -000000003FFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +000400040004000400040004000400330004000400340004003800370036003500040004000400040004000400040004 +0004000400040039000400040004000400040004000400040004003A000400040004003C003B00040004000400040004 +003D00040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004003E00210021000400040004000400040004000400040004000400040004 +000400040004000400040004000400040004000400040004000400040004000400040004000400040004000400040004 +00000000000000000000000000000000773C8501000000000000000000000000800C0000000000008000000000000201 +0000000000000000000E000000001FF00000000000000000000000000000000001FF0000000000000000001F3F000000 +010361F8081A9FDF441000000000003F00000000000000B002370000007F000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000 +000000000000000001E000000038000000000000000000000000000000000000100000000000000000000000FF000000 +400000000000000000000000B08000000048000000000000000000004E00000000000000000000000000000000000000 +40000000000000000000000030C000004000000000000000000000000080000000000000000000000000000000400000 +000000000000000000000000006000044000000000000000000000000080000000000000000000000000000080008400 +0008000000000000000000000000000000080000000000000000000030000000000000000000100003E8020010842008 +020010842008000200000000000000000000400000000000000000000000000000000000000000001000000000000000 +0000000000000000003FFFFE00000000FFFFFF0000000000000000000000000700200000000000000000000000000000 +00000000000000000000000000000000F7FF700000000000010007FFFFFFBFFFFFFFFFFFF80000000000000000000000 +00000000000000000000000000000000000000000C000000000000000000000000000000000000002AAA000000000000 +E8000000000000006A00E808E808EA0350D88070008207FFFFF3000080800380000001001FFF7FFF0000000000000000 +FBFBBD573E6FFEEFFFFFFFFFFFFF03E1000000000000020000000000000000000001B000000000000000000000000000 +000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000 +0000000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFF000007FFFFFFFFFF00000000000010000070000000000000 +000000000000000000000000100000000000000000000000300000000000000000000000000000000000000000000000 +000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000800000000008000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000003FFFFF +07400000000000010000000000000000000000009E0000008000000000000000FFFE000000000000FFFFFFFFFFFFFFFF +00000000FFFC7FFF0000000000000000FFFFFFFF7FFFFFFF7FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 +00000000300000000000000000000000000000000000000000010000000000000000000000000000031C000000000000 +000000000000000000000200F000000000000000000000000000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFF +FFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFFFFA0F8007FFFFFFFFFFFFFFFDB0003FFFFFFFFFFFFFFFFFFFFFFF80000 +3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFCFFFF1FFF0000000000FFFFFF000003FF0000FFD70F7FFFF7FF9F +FFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF00007F7F1CFCFCFC +0000000000000000000000000000000007FDFFFFFFFFFFBE000000000000000000000000000000000000000000000000 +040000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000 +40000000000000000000000000800000090000000000000000000000000003A400000000000000000000000000000000 +240100000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000 +0001000000000000000000000000000000000000000000000000000000000000000003FFC00000000000000000000000 +000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000003FFFFFFFFC0000000000000000000000000001FC0000000 +F8000000000000000000000000000001FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF +7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFF +FFFF00000000000000003FFFFFFFFFFF000000000000000000000000000000000AF7FE96FFFFFFEF5EF7F796AA96EA84 +0FFFFBEE0FFFFBFF0000000000000000FFFF7FFFFFFF07FF00001C000000FFFF00000000000100000000000000000000 +0FFFFFFFFFFF000700000000000301FF0000000000000000000000000000000000000000000000000000000000000000 +000000000000000003FF000000000000000000003FFFFFFF000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//2944 bytes +//3136 bytes enum nfkdQCTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -000000000000000000000000000000200000000000000078", +000000000000000000000000000000200000000000000080", x" -000000000000010000000000000001600000000000003E00", +000000000000010000000000000001800000000000004200", x" -050403020202010008070202020202060902020202020202020202020202020202020202020202020202020202020202 +050403020202010009080202070202060A02020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -432,47 +454,51 @@ x" 002100210021002100210021002100210021002100210021002100210021002100210021002100210021002100210021 002100210021002100210021002100210021002100210021002500210021002100070007000700070007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -0027002600210007002A0029002800210007000700070007002B00070007000700070007000700070007000700070007 -002E0007002D002C000700070030002F0007000700310007000700070007000700070007000700070007000700070007 -000700070007000700070007000700070007000700320007003600350034003300070007000700070007000700070007 -00070007000700370007000700070007000700070007000700070038000700070007003A003900070007000700070007 -003B00070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -000700070007000700070007000700070007003C00210021000700070007000700070007000700070007000700070007 +0027002600210007002A0029002800210007000700070007002C0007002B000700070007000700070007000700070007 +002F0007002E002D00070007003100300007000700320007000700070007000700070007003300070007000700070007 +000700070007000700070007003400070007000700070007000700070007000700070007000700070007000700070007 +00070007000700070007000700070007000700070007000700070007000700350007000700360007003A003900380037 +00070007000700070007000700070007000700070007003B000700070007000700070007000700070007003C00070007 +0007003E003D00070007000700070007003F000700070007000700070007000700070007000700070007000700070007 +000700070007000700070007000700070007000700070007000700070007000700070040002100210007000700070007 000700070007000700070007000700070007000700070007000700070007000700070007000700070007000700070007 -00000000000000000000000000000000773C850100000000BE7EFFBF3E7EFFBFFEFDFF3FFFFCFFFFFFFFFF3FFFF3F3F9 -0001800300000000FF3FFFCFDFFFFFF0000FFFC0CFFFFFFF000000000000000001FF0000000000000000001F3F000000 -0000000000000000441000000000001B0001FC000001D7F002370000007F7C00020000000200708B00C00000708B0000 -0000000000000000033FFCFCFCCF00060000000000000000000000000000000000000000000000800000000000000000 -0000007C0000000001E00000000000000000000000000000000000000008000500000000000000000000000000000000 -00000000000000000000000000000000001202000000000000000000FF000000000000000000000000000000B0001800 -0048000000000000000000004E0000000000000000000000000000000000000000000000000000000000000030001900 -00000000001000000000000000001C000000000000000000000000000000010000000000000000000000000000000D81 -00000000000000000000000000001C000000000000000000000000007400000000080000000000000000000000000000 -00080000000000000000000030000000000000000000100003E802001084200802001084200800020000000000000000 -00000040000000000000000000000000000000000000000010000000000000002800000000045540000000000000000B -00000000000000000000000000000000F7FF700000000000010007FFFFFFBFFFFFFFFFFFF80000000000000000000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF03FFFFFFFFFFFFFFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F -FFDFFFFFFFFFFFFF7FDCFFFFEFCFFFDF50D88070008207FFFFF3000080800380000001001FFF7FFF0000000000000000 -FBFBBD573E6FFEEFFFFFFFFFFFFF03E1000040000C000200000000000000E0000001B050000012100333E00500000292 -0000F0000000033300003C0F000000000000060000000000000000000000000000000000000000000000000000000000 -0000000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFF000007FFFFFFFFFF00000000000010000070000000000000 -000000000000000000000000100000000000000000000000300000000000000000000000000000000000000000000000 -000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000800000000008000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000003FFFFF -074000000000000136DB02A55555500055555000D8100000C790000036DB02A5FFFE000000000000FFFFFFFFFFFFFFFF -00000000FFFC7FFF0000000000000000FFFFFFFF7FFFFFFF7FFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000 -00000000300000000000000000000000000000000000000000010000000000000000000000000000031C000000000000 -000000000000000000000200F000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0000000FFFFFFFFF0000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF -5F7FFFFFA0F8007FFFFFFFFFFFFFFFDB0003FFFFFFFFFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFFFFFFFFFFFFF0000 -FFFFFFFFFFFCFFFF1FFF0000000000FFFFFF000003FF0000FFD70F7FFFF7FF9FFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF00007F7F1CFCFCFC00000000000000000000000000000000 +0007000700070007000700070007000700000000000000000000000000000000773C850100000000BE7EFFBF3E7EFFBF +FEFDFF3FFFFCFFFFFFFFFF3FFFF3F3F90001800300000000FF3FFFCFDFFFFFF0000FFFC0CFFFFFFF0000000000000000 +01FF0000000000000000001F3F0000000000000000000000441000000000001B0001FC000001D7F002370000007F7C00 +020000000200708B00C00000708B00000000000000000000033FFCFCFCCF000600000000000000000000000000000000 +000000000000008000000000000000000000007C0000000001E000000000000000000000000000000000000000080005 +0000000000000000000000000000000000000000000000000000000000000000001202000000000000000000FF000000 +000000000000000000000000B00018000048000000000000000000004E00000000000000000000000000000000000000 +0000000000000000000000003000190000000000001000000000000000001C0000000000000000000000000000000100 +00000000000000000000000000000D8100000000000000000000000000001C0000000000000000000000000074000000 +0008000000000000000000000000000000080000000000000000000030000000000000000000100003E8020010842008 +020010842008000200000000000000000000004000000000000000000000000000000000000000001000000000000000 +2800000000045540000000000000000B00000000000000000000000000000000F7FF700000000000010007FFFFFFBFFF +FFFFFFFFF80000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF03FFFFFFFFFFFFFF +FFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3FFFDFFFFFFFFFFFFF7FDCFFFFEFCFFFDF50D88070008207FFFFF3000080800380 +000001001FFF7FFF0000000000000000FBFBBD573E6FFEEFFFFFFFFFFFFF03E1000040000C000200000000000000E000 +0001B050000012100333E005000002920000F0000000033300003C0F0000000000000600000000000000000000000000 +000000000000000000000000000000000000000000000000FFFFFFFF00000000FFFFFFFFFFFFFFFF000007FFFFFFFFFF +000000000000100000700000000000000000000000000000000000001000000000000000000000003000000000000000 +000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000800000000008000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00000000003FFFFF074000000000000136DB02A55555500055555000D8100000C790000036DB02A5 +FFFE000000000000FFFFFFFFFFFFFFFF00000000FFFC7FFF0000000000000000FFFFFFFF7FFFFFFF7FFFFFFFFFFF00FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000000000000000000000000000000000000000030000000000000000000000000000000000000000001000000000000 +0000000000000000031C000000000000000000000000000000000200F000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFF0000000000000000FFFFFC657FE53FFFFFFF3FFFFFFFFFFF +FFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFFFFA0F8007FFFFFFFFFFFFFFFDB0003FFFFFFFFFFFFFFFFFFFFFFF80000 +3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFCFFFF1FFF0000000000FFFFFF000003FF0000FFD70F7FFFF7FF9F +FFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF00007F7F1CFCFCFC +000000000000000000000000000000000000000000000000000000100000020000000000000000000000000000000000 07FDFFFFFFFFFFBE00000000000000000000000000000000000000000000000000000800140000000000000000000000 0000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800 -000000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000 +000000000002402800000000000001A00000000000000000000000000000000058000000000000000000000000000000 000000000000000000000000000000000C00000000000000000000000000000001000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000001FC0000000F8000000000000000000000000000001 +00000000000000000000000000000000000001FE00000000000000000000000000000000000000000000000000000000 +000000000000000000000700000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000003FFFFFFFFC0000000000000000000000000001FC0000000F8000000000000000000000000000001 FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFF00000000000000003FFFFFFFFFFF diff --git a/std/internal/unicode_tables.d b/std/internal/unicode_tables.d index a686e389171..73e1c2297e6 100644 --- a/std/internal/unicode_tables.d +++ b/std/internal/unicode_tables.d @@ -77,71 +77,72 @@ SCE simpleCaseTable(size_t i) { static immutable uint[] t = x" 0201E90B0211E92D0201E9110211E93302000496021004970200A7220210A72302001F7902101FF902001F4402101F4C -0200015A0210015B020010FD02101CBD02016E4C02116E6C02001E3802101E390201E9210211E94302001F2302101F2B -020001A0021001A1030003A3031003C2032003C3020004DC021004DD02002CA602102CA70200017B0210017C0201E906 -0211E928020010DC02101C9C020104CD021104F502001F6502101F6D0200051E0210051F020010D802101C9802002C1A -02102C4A0200027D02102C640200A69A0210A69B02001F0202101F0A020005220210052302002C6002102C6102002C1E -02102C4E0200A6500210A6510200A65C0210A65D020013C90210AB99020104140211043C020013CD0210AB9D020000CE -021000EE02001E7E02101E7F020013F0021013F802001EC402101EC50200A78B0210A78C02000114021001150200042F -0210044F0201E9020211E924020004D8021004D902002CAA02102CAB0200011002100111020004920210049302001E34 -02101E35020013F4021013FC020002240210022502002CA202102CA30200A72E0210A72F02016E4802116E680200004A -0210006A020013A60210AB760200015E0210015F030001C4031001C5032001C602001F4002101F480200A6580210A659 -0200022C0210022D02010C9F02110CDF02001FA702101FAF020013AE0210AB7E0200004202100062020013D50210ABA5 -02016E4002116E60020000D2021000F202001E8202101E8302010C9702110CD7020010E002101CA00200013D0210013E -02000406021004560200029D0210A7B2020001390210013A020001980210019902001EBC02101EBD020003AB021003CB -0200040E0210045E0200A7B60210A7B70200040A0210045A02001EC002101EC10201057202110599020024B9021024D3 -02002C1602102C460200019C0210026F020003A7021003C70200A6920210A693030000C5031000E50320212B02000526 -02100527020002660210A7AA0201057A021105A10201057E021105A502001FD002101FD802000046021000660201E90A -0211E92C0200022802100229020013A20210AB720200A7260210A72702010C9302110CD30200049A0210049B020000D6 -021000F60200010C0210010D020118A8021118C802000162021001630200019E0210022002002C9E02102C9F03000392 -031003B2032003D002001E3002101E3102001FA302101FAB0200216D0210217D0200004E0210006E030000B50310039C -032003BC0200048E0210048F0200A72A0210A72B02010410021104380200038A021003AF02001EFE02101EFF020118AC -021118CC020001EA021001EB02001F0602101F0E02001FC302101FCC020010B402102D140200026A0210A7AE03000412 -0310043203201C800200A7600210A76102010C9B02110CDB020024C8021024E2020001A4021001A50200039F021003BF -020010C402102D24020004A2021004A302002C0302102C3302002CE002102CE1020105760211059D020004E0021004E1 -02002C2A02102C5A02001ED002101ED1020000C2021000E2020004E8021004E90200A7A60210A7A7020010F902101CB9 -02000145021001460200037C021003FE02001EC802101EC90200041A0210043A020000CA021000EA02001F8602101F8E -030004210310044103201C83020104040211042C02010583021105AA0200053F0210056F0200054702100577020013B6 -0210AB86020013EC0210ABBC0200FF2C0210FF4C0200A7BA0210A7BB0200A6480210A649020013C50210AB950200FF24 -0210FF440201040F021104370201041C0211044402010C8302110CC3020002410210024202001E7602101E77020010BC -02102D1C02002C2202102C52020010D002101C900200A7680210A7690200A7320210A7330200011C0210011D02000427 -0210044702001E4002101E41020118B1021118D10200015202100153030003A1031003C1032003F102000397021003B7 -020001AC021001AD020001E2021001E302000218021002190201E91A0211E93C020005160210051702001F2702101F2F -0200A7C90210A7CA02001FE002101FE802002165021021750200A66C0210A66D02000393021003B30200053202100562 -020000560210007602001F3302101F3B020005540210058403001C880310A64A0320A64B0200A68E0210A68F020003D8 -021003D9020024C5021024DF02002CB202102CB302010C8202110CC2020000570210007702016E5302116E730200FF37 -0210FF5702001EF602101EF70201E9120211E93402001F1202101F1A020004A6021004A70200016A0210016B02001F34 -02101F3C02002CDC02102CDD020001B10210028A020118A4021118C402001E2802101E29020001BF021001F70200018B -0210018C020010A702102D07020001280210012902001E6A02101E6B020010AB02102D0B0200041F0210043F02002C2E -02102C5E02010CAF02110CEF020104C5021104ED020118A5021118C502001FE102101FE9030003A6031003C6032003D5 -02002C0A02102C3A0200050E0210050F0200010402100105020003720210037302001E8E02101E8F02000396021003B6 -02001EFA02101EFB020003F2021003F90200A6400210A641020010EC02101CAC020118A1021118C10200016602100167 -02001F3702101F3F02010C8602110CC6020013DD0210ABAD02001F5102101F5902002C9A02102C9B020001FA021001FB -020021690210217902016E5702116E77020010A402102D0403000053031000730320017F0200037602100377020013B1 -0210AB810200046802100469020013E40210ABB402001F9602101F9E020001080210010902010CA002110CE002001E66 -02101E6702001E8A02101E8B02001E4C02101E4D02001F7502101FCB02002C0E02102C3E02001E5002101E51020024C0 -021024DA0200A7500210A751020000DA021000FA020010E902101CA902002CD802102CD902001EB802101EB90200012C -0210012D0200025202102C70020004C3021004C4020024C4021024DE020104B5021104DD02002C0F02102C3F02000533 -0210056302000195021001F602001F1302101F1B020104B8021104E00200055302100583020104250211044D020013D1 -0210ABA1020004F4021004F5020004C7021004C802010CAC02110CEC020004D0021004D10200A75C0210A75D02001E2C -02101E2D020010A802102D0802000464021004650200042602100446020004E4021004E5020010ED02101CAD0200A792 -0210A79302001EDC02101EDD020104BC021104E4020105770211059E02001EA802101EA9020001B8021001B9020000C6 -021000E60200FF300210FF5002016E4402116E640201041B0211044302001E0E02101E0F020004D4021004D502002CAE -02102CAF02002C6B02102C6C0200FF230210FF430200018402100185020105730211059A04000398041003B8042003D1 -043003F4020013D40210ABA40201E9190211E93B020001870210018802002C1302102C430200A7A20210A7A302000194 -02100263020004160210043602002CBE02102CBF02001FA602101FAE020104C6021104EE02001F8202101F8A020104C9 -021104F1020013E00210ABB00200024002102C7F0200A7BE0210A7BF02001F9202101F9A020004020210045202000536 -0210056602000550021005800200A6820210A68302000386021003AC02001FE502101FEC020024C9021024E3020000D3 -021000F3020010F002101CB002001E3C02101E3D02002C8002102C810201058A021105B1020001560210015702001E7A -02101E7B020013ED0210ABBD0200A73E0210A73F0200011802100119020002140210021503001E6003101E6103201E9B -02002C8A02102C8B0200A64C0210A64D03000395031003B5032003F5020001E6021001E702001F8502101F8D02000512 -0210051302001F6102101F690200A6680210A66902010594021105BB02001E1802101E19020013B20210AB8202010415 -0211043D0201041802110440020002450210028C02001F7202101FC8020118B5021118D5020010B802102D18020004C0 -021004CF0201040B021104330200042302100443020010C502102D2502002C2D02102C5D02001F3002101F38020013C1 -0210AB910200A76C0210A76D020104CC021104F402001F7102101FBB0200FF330210FF530200216A0210217A02001ECC -02101ECD020003E8021003E90200A7D00210A7D10200005A0210007A02010CB002110CF0020001D9021001DA02010587 -021105AE020001B5021001B6020005430210057302001F2202101F2A02001EA002101EA102010C8F02110CCF02016E54 -02116E7402001D7D02102C630200A7D60210A7D70200A74C0210A74D020013CE0210AB9E020000CF021000EF020010D9 +0200015A0210015B020010FD02101CBD02010D6102110D8102001E3802101E390201E9210211E94302016E4C02116E6C +02001F2302101F2B020001A0021001A1030003A3031003C2032003C3020004DC021004DD02002CA602102CA70200017B +0210017C0201E9060211E928020010DC02101C9C020104CD021104F502001F6502101F6D0200051E0210051F020010D8 +02101C9802002C1A02102C4A0200027D02102C640200A69A0210A69B02001F0202101F0A020005220210052302002C60 +02102C6102002C1E02102C4E0200A6500210A6510200A65C0210A65D020013C90210AB99020104140211043C020013CD +0210AB9D020000CE021000EE02001E7E02101E7F020013F0021013F802001EC402101EC50200A78B0210A78C02000114 +021001150200042F0210044F0201E9020211E924020004D8021004D902002CAA02102CAB020001100210011102000492 +0210049302001E3402101E35020013F4021013FC020002240210022502002CA202102CA30200A72E0210A72F02016E48 +02116E680200004A0210006A020013A60210AB760200015E0210015F030001C4031001C5032001C602001F4002101F48 +0200A6580210A6590200022C0210022D02010C9F02110CDF02001FA702101FAF020013AE0210AB7E0200004202100062 +020013D50210ABA502016E4002116E60020000D2021000F202001E8202101E8302010C9702110CD7020010E002101CA0 +0200013D0210013E02000406021004560200029D0210A7B2020001390210013A020001980210019902001EBC02101EBD +020003AB021003CB0200040E0210045E0200A7B60210A7B70200040A0210045A02001EC002101EC10201057202110599 +020024B9021024D302002C1602102C460200019C0210026F020003A7021003C70200A6920210A693030000C5031000E5 +0320212B0200052602100527020002660210A7AA0201057A021105A10201057E021105A502001FD002101FD802000046 +021000660201E90A0211E92C0200022802100229020013A20210AB720200A7260210A72702010C9302110CD30200049A +0210049B020000D6021000F60200010C0210010D020118A8021118C802000162021001630200019E0210022002002C9E +02102C9F03000392031003B2032003D002001E3002101E3102001FA302101FAB0200216D0210217D0200004E0210006E +030000B50310039C032003BC0200048E0210048F0200A72A0210A72B02010410021104380200038A021003AF02001EFE +02101EFF020118AC021118CC020001EA021001EB02001F0602101F0E02001FC302101FCC020010B402102D140200026A +0210A7AE030004120310043203201C800200A7600210A76102010C9B02110CDB020024C8021024E2020001A4021001A5 +0200039F021003BF020010C402102D24020004A2021004A302002C0302102C3302002CE002102CE1020105760211059D +020004E0021004E102002C2A02102C5A02001ED002101ED1020000C2021000E2020004E8021004E90200A7A60210A7A7 +020010F902101CB902000145021001460200037C021003FE02001EC802101EC90200041A0210043A020000CA021000EA +02001F8602101F8E030004210310044103201C83020104040211042C02010583021105AA0200053F0210056F02000547 +02100577020013B60210AB86020013EC0210ABBC0200FF2C0210FF4C0200A7BA0210A7BB0200A6480210A649020013C5 +0210AB950200FF240210FF440201040F021104370201041C0211044402010C8302110CC3020002410210024202001E76 +02101E77020010BC02102D1C02002C2202102C52020010D002101C900200A7680210A7690200A7320210A7330200011C +0210011D020004270210044702001E4002101E41020118B1021118D10200015202100153030003A1031003C1032003F1 +02000397021003B7020001AC021001AD020001E2021001E302000218021002190201E91A0211E93C0200051602100517 +02001F2702101F2F0200A7C90210A7CA02001FE002101FE802002165021021750200A66C0210A66D02000393021003B3 +0200053202100562020000560210007602001F3302101F3B020005540210058403001C880310A64A0320A64B0200A68E +0210A68F020003D8021003D9020024C5021024DF02002CB202102CB302010C8202110CC2020000570210007702010D50 +02110D700200FF370210FF5702001EF602101EF70201E9120211E93402001F1202101F1A02016E5302116E73020004A6 +021004A70200016A0210016B02001F3402101F3C02002CDC02102CDD020001B10210028A020118A4021118C402001E28 +02101E29020001BF021001F70200018B0210018C020010A702102D0702010D6502110D85020001280210012902001E6A +02101E6B020010AB02102D0B0200041F0210043F02002C2E02102C5E02010CAF02110CEF020104C5021104ED02010D51 +02110D7102001FE102101FE9030003A6031003C6032003D502002C0A02102C3A0200050E0210050F02010D5D02110D7D +0200010402100105020003720210037302001E8E02101E8F02000396021003B602001EFA02101EFB020003F2021003F9 +0200A6400210A641020118A5021118C5020010EC02101CAC020118A1021118C1020001660210016702001F3702101F3F +02010C8602110CC6020013DD0210ABAD02001F5102101F5902002C9A02102C9B020001FA021001FB0200216902102179 +02010D5402110D74020010A402102D0403000053031000730320017F0200037602100377020013B10210AB8102000468 +02100469020013E40210ABB402001F9602101F9E020001080210010902010CA002110CE002001E6602101E6702001E8A +02101E8B02001E4C02101E4D02001F7502101FCB02002C0E02102C3E02001E5002101E51020024C0021024DA0200A750 +0210A751020000DA021000FA020010E902101CA902002CD802102CD902001EB802101EB90200012C0210012D02000252 +02102C70020004C3021004C4020024C4021024DE020104B5021104DD02002C0F02102C3F020005330210056302000195 +021001F602001F1302101F1B020104B8021104E00200055302100583020104250211044D020013D10210ABA1020004F4 +021004F5020004C7021004C802010CAC02110CEC020004D0021004D10200A75C0210A75D02001E2C02101E2D020010A8 +02102D0802000464021004650200042602100446020004E4021004E5020010ED02101CAD0200A7920210A79302001EDC +02101EDD020104BC021104E4020105770211059E02001EA802101EA9020001B8021001B9020000C6021000E60200FF30 +0210FF5002016E4402116E640201041B0211044302001E0E02101E0F020004D4021004D502002CAE02102CAF02002C6B +02102C6C0200FF230210FF430200018402100185020105730211059A04000398041003B8042003D1043003F4020013D4 +0210ABA40201E9190211E93B020001870210018802002C1302102C430200A7A20210A7A3020001940210026302000416 +0210043602002CBE02102CBF02001FA602101FAE020104C6021104EE02001F8202101F8A020104C9021104F1020013E0 +0210ABB00200024002102C7F0200A7BE0210A7BF02001F9202101F9A0200040202100452020005360210056602000550 +021005800200A6820210A68302000386021003AC02001FE502101FEC020024C9021024E3020000D3021000F3020010F0 +02101CB002001E3C02101E3D02002C8002102C810201058A021105B1020001560210015702001E7A02101E7B020013ED +0210ABBD0200A73E0210A73F0200011802100119020002140210021503001E6003101E6103201E9B02002C8A02102C8B +0200A64C0210A64D03000395031003B5032003F5020001E6021001E702001F8502101F8D020005120210051302001F61 +02101F690200A6680210A66902010594021105BB02001E1802101E19020013B20210AB82020104150211043D02010418 +02110440020002450210028C02001F7202101FC8020118B5021118D5020010B802102D18020004C0021004CF0201040B +021104330200042302100443020010C502102D2502002C2D02102C5D02001F3002101F38020013C10210AB910200A76C +0210A76D020104CC021104F402001F7102101FBB0200FF330210FF530200216A0210217A02001ECC02101ECD020003E8 +021003E90200A7D00210A7D10200005A0210007A02010CB002110CF0020001D9021001DA02010587021105AE020001B5 +021001B6020005430210057302001F2202101F2A02001EA002101EA102010C8F02110CCF02016E5402116E7402016E57 +02116E7702001D7D02102C630200A7D60210A7D70200A74C0210A74D020013CE0210AB9E020000CF021000EF020010D9 02101C99020000450210006502000136021001370200040D0210045D02016E4302116E6302001F7C02101FFA0200024A 0210024B020004B8021004B902002CCA02102CCB02002CED02102CEE0200019F02100275020003A4021003C40200A74E 0210A74F020104C0021104E802001E1602101E17020013AF0210AB7F020005000210050102002C8202102C83020010BD @@ -166,126 +167,129 @@ static immutable uint[] t = x" 030001C7031001C8032001C90200047E0210047F020001FC021001FD0200020E0210020F020002440210028902001F77 02101FDB02002CD602102CD702010589021105B0040004220410044204201C8404301C85020010E702101CA7020004FA 021004FB020010D502101C9502001EAC02101EAD020010B702102D17020013A10210AB710200A7C20210A7C30201E907 -0211E929020013F5021013FD02001EE202101EE302001F6202101F6A02001E9202101E93020001D5021001D602002C06 -02102C3602010C8B02110CCB02001F7002101FBA020003EC021003ED0201E9150211E9370200216E0210217E020013C0 -0210AB9002001EF402101EF50200FF3A0210FF5A020118BC021118DC020004AA021004AB020021630210217302001E1C -02101E1D020013C80210AB98020118AF021118CF02010C9802110CD8020105710211059802010CA702110CE702000051 -02100071020004F2021004F302010CAA02110CEA020010AF02102D0F02002C8E02102C8F02002CC402102CC502001E0A -02101E0B02016E5002116E700201058E021105B50201041102110439020104230211044B0200053A0210056A02001E6C -02101E6D020104BE021104E6020104240211044C020010A902102D09020024C2021024DC02010C8102110CC1020013BC -0210AB8C030004620310046303201C87020118A6021118C602001E4A02101E4B020021620210217202001ED402101ED5 -020010AA02102D0A020004EC021004ED02002C0C02102C3C0200A79A0210A79B020004CB021004CC020104BD021104E5 -02000370021003710201E9140211E936020003DA021003DB02001F3502101F3D02016E5102116E7103000392031003B2 -032003D002002C9602102C9702000391021003B102000534021005640200041B0210043B020013DF0210ABAF02002C2C -02102C5C020001240210012502010CA202110CE202001E8C02101E8D02001EB402101EB50200016C0210016D02001E02 -02101E030200019A0210023D020001020210010302001F1402101F1C0200FF280210FF4802010C8002110CC0020010EE -02101CAE02001F5502101F5D0200A77B0210A77C02000059021000790200014A0210014B02001E2402101E25020013BD -0210AB8D02002CBC02102CBD0201040D021104350201058F021105B6020118A7021118C70200A6600210A66102000514 -021005150200052E0210052F020004A4021004A5020004000210045002016E5802116E780200A64E0210A64F0200FF2E -0210FF4E0201040C02110434020000DB021000FB020001CD021001CE020010E802101CA80200054F0210057F0200A738 -0210A73902016E5F02116E7F02001D790210A77D0201E90F0211E93102002C0702102C37020010A302102D030200A7A0 -0210A7A1030004210310044103201C830200A6800210A681020002820210A7C5020024CB021024E50200040102100451 -0200A7580210A7590200005802100078020001930210026002010CA102110CE10200054E0210057E0200018602100254 -020013DC0210ABAC020024BD021024D7020001B3021001B40200A6960210A697020002160210021702001ECE02101ECF -02002168021021780201E90E0211E93002002C1202102C4202002C2F02102C5F02010CAB02110CEB02001E8602101E87 -030004120310043203201C80020013D60210ABA602001EBA02101EBB0201E91B0211E93D0201041A0211044202001EEE -02101EEF0200FF310210FF510200A7BC0210A7BD020001DB021001DC020001A60210028002001F0702101F0F020118BD -021118DD020000C8021000E8020004D2021004D3020010E102101CA1020013B70210AB8702010585021105AC02016E4B -02116E6B02000172021001730200049E0210049F020004E6021004E7020010B002102D1002002C9C02102C9D020001EE -021001EF020104B4021104DC02010C8702110CC7020013BA0210AB8A02001E1002101E11020002300210023102000428 -0210044802002CD002102CD1020118A0021118C0020003E0021003E102010588021105AF0200A7800210A781020010F5 -02101CB50200053B0210056B020000D5021000F5030004140310043403201C8102001FA402101FAC0200012A0210012B -0200005202100072020024B7021024D10201E9080211E92A04000398041003B8042003D1043003F40200020202100203 -0200027102102C6E020004700210047102002C1B02102C4B0200048A0210048B0200A7520210A7530200FF250210FF45 -0200040702100457020000C1021000E102001E4402101E4502001F9702101F9F02000548021005780200021C0210021D -020013E50210ABB50200051A0210051B02002CB602102CB70200A6540210A655020104030211042B02001E7202101E73 -020010D402101C94020104C1021104E902010C8A02110CCA02001E2A02101E2B030004620310046303201C8702001F76 -02101FDA03000053031000730320017F02002C2602102C56020013A00210AB70020004C5021004C6020003FA021003FB -0200055502100585020013E80210ABB8030001C7031001C8032001C902001F4202101F4A02001F6702101F6F0201057C -021105A30200A7B40210A7B50200A6980210A6990201E9040211E9260200040C0210045C020010DA02101C9A020000D0 -021000F002016E4602116E6602001EC202101EC3020001E4021001E502000044021000640200017D0210017E02001F21 -02101F290200FF390210FF59020013AC0210AB7C02001F0002101F08020003A5021003C50200015802100159020104CF -021104F702001E3A02101E3B0200A72C0210A72D020118B7021118D7020001120210011302001E3602101E3702016E4E -02116E6E02001F7D02101FFB020004940210049502001E8002101E8102000116021001170200042D0210044D020013F2 -021013FA020001790210017A020004DA021004DB02002CA802102CA9020000CC021000EC020001A2021001A3030003A1 -031003C1032003F102001E7C02101E7D020013CF0210AB9F020104120211043A020005200210052102002C1C02102C4C +0211E929020013F5021013FD0200019B0210A7DC02001EE202101EE302001F6202101F6A02001E9202101E93020001D5 +021001D602002C0602102C3602010C8B02110CCB02001F7002101FBA020003EC021003ED0201E9150211E9370200216E +0210217E020013C00210AB9002001EF402101EF50200FF3A0210FF5A020118BC021118DC020004AA021004AB02002163 +0210217302001E1C02101E1D020013C80210AB98020118AF021118CF02010C9802110CD8020105710211059802010CA7 +02110CE70200005102100071020004F2021004F302010CAA02110CEA020010AF02102D0F02002C8E02102C8F02002CC4 +02102CC502001E0A02101E0B02010D6002110D8002016E5002116E700201058E021105B5020104110211043902010423 +0211044B0200053A0210056A02001E6C02101E6D020104BE021104E6020104240211044C020010A902102D09020024C2 +021024DC02010C8102110CC1020013BC0210AB8C030004620310046303201C87020118A6021118C602001E4A02101E4B +020021620210217202001ED402101ED5020010AA02102D0A020004EC021004ED02002C0C02102C3C0200A79A0210A79B +020004CB021004CC020104BD021104E502000370021003710201E9140211E936020003DA021003DB02001F3502101F3D +02010D5202110D7203000392031003B2032003D002002C9602102C9702016E5102116E7102000391021003B102000534 +021005640200041B0210043B020013DF0210ABAF02002C2C02102C5C020001240210012502010CA202110CE202001E8C +02101E8D02001EB402101EB50200016C0210016D02001E0202101E030200019A0210023D020001020210010302001F14 +02101F1C0200FF280210FF4802010C8002110CC0020010EE02101CAE02001F5502101F5D0200A77B0210A77C02000059 +021000790200014A0210014B02001E2402101E25020013BD0210AB8D02002CBC02102CBD0201040D0211043502010D5C +02110D7C0201058F021105B6020118A7021118C70200A6600210A66102000514021005150200052E0210052F020004A4 +021004A5020004000210045002016E5802116E780200A64E0210A64F0200FF2E0210FF4E02010D5B02110D7B0201040C +02110434020000DB021000FB020001CD021001CE020010E802101CA80200054F0210057F0200A7380210A73902016E5F +02116E7F02001D790210A77D0201E90F0211E93102002C0702102C37020010A302102D030200A7A00210A7A103000421 +0310044103201C830200A6800210A681020002820210A7C5020024CB021024E502000401021004510200A7580210A759 +0200005802100078020001930210026002010CA102110CE10200054E0210057E0200018602100254020013DC0210ABAC +020024BD021024D7020001B3021001B40200A6960210A697020002160210021702001ECE02101ECF0200216802102178 +0201E90E0211E93002002C1202102C4202002C2F02102C5F02010CAB02110CEB02001E8602101E870300041203100432 +03201C80020013D60210ABA602001EBA02101EBB0201E91B0211E93D0201041A0211044202001EEE02101EEF0200FF31 +0210FF510200A7BC0210A7BD020001DB021001DC020001A60210028002001F0702101F0F020118BD021118DD020000C8 +021000E8020004D2021004D3020010E102101CA1020013B70210AB8702010585021105AC02016E4B02116E6B02000172 +021001730200049E0210049F020004E6021004E7020010B002102D1002002C9C02102C9D020001EE021001EF020104B4 +021104DC02010C8702110CC7020013BA0210AB8A02001E1002101E110200023002100231020004280210044802002CD0 +02102CD1020118A0021118C0020003E0021003E102010588021105AF0200A7800210A781020010F502101CB50200053B +0210056B020000D5021000F5030004140310043403201C8102001FA402101FAC0200012A0210012B0200005202100072 +020024B7021024D10201E9080211E92A04000398041003B8042003D1043003F402000202021002030200027102102C6E +020004700210047102002C1B02102C4B0200048A0210048B0200A7520210A7530200FF250210FF450200040702100457 +020000C1021000E102001E4402101E4502001F9702101F9F02000548021005780200021C0210021D020013E50210ABB5 +0200051A0210051B02002CB602102CB70200A6540210A655020104030211042B02001E7202101E73020010D402101C94 +020104C1021104E902010C8A02110CCA02001E2A02101E2B030004620310046303201C8702001F7602101FDA03000053 +031000730320017F02002C2602102C56020013A00210AB70020004C5021004C6020003FA021003FB0200055502100585 +020013E80210ABB8030001C7031001C8032001C902001F4202101F4A02001F6702101F6F0201057C021105A30200A7B4 +0210A7B50200A6980210A6990201E9040211E9260200040C0210045C020010DA02101C9A020000D0021000F002016E46 +02116E6602001EC202101EC3020001E4021001E502000044021000640200017D0210017E02001F2102101F290200FF39 +0210FF59020013AC0210AB7C02001F0002101F08020003A5021003C50200015802100159020104CF021104F702001E3A +02101E3B0200A72C0210A72D02010D6302110D83020001120210011302001E3602101E3702016E4E02116E6E02001F7D +02101FFB020004940210049502001E8002101E8102000116021001170200042D0210044D020013F2021013FA02000179 +0210017A020004DA021004DB02002CA802102CA9020000CC021000EC020001A2021001A3030003A1031003C1032003F1 +02001E7C02101E7D020118B7021118D7020013CF0210AB9F020104120211043A020005200210052102002C1C02102C4C 0200026B02102C6202010591021105B80200015C0210015D0200A6520210A6530200FF260210FF46020001E8021001E9 020010B602102D160200A6560210A6570200051C0210051D020013C30210AB93020104CB021104F302001EC602101EC7 020001E0021001E102001F6302101F6B02002C0102102C310201E9000211E92202001E7802101E79020024CE021024E8 0200A76A0210A76B0200011A0210011B020004290210044902001F8402101F8C020010D602101C9602001FB102101FB9 0200A7620210A76302010CB202110CF202002C2002102C50020010BE02102D1E0201041E02110446020004E2021004E3 020004DE021004DF020013EA0210ABBA0200054102100571020005450210057502001F2502101F2D0200015402100155 -02002C2402102C54020013EE0210ABBE0200018102100253030003A3031003C2032003C3020118B3021118D3020010BA +02002C2402102C54020002640210A7CB0200018102100253030003A3031003C2032003C3020118B3021118D3020010BA 02102D1A020001800210024302001E3E02101E3F020010FF02101CBF02010C8802110CC8020010D202101C920200A76E 0210A76F03001C880310A64A0320A64B020010B202102D12020013C70210AB9702000518021005190200A7660210A767 -020001EC021001ED020104C3021104EB020105740211059B0201E91C0211E93E020010E202101CA202002C0502102C35 -020004A0021004A102001E4202101E43020013B40210AB84020118BF021118DF020001500210015102002CB002102CB1 -020013A40210AB74020004C1021004C2030001CA031001CB032001CC0200004C0210006C020104C7021104EF02016E5A -02116E7A0200022202100223020004900210049102002CF202102CF302010595021105BC0200053D0210056D02000388 -021003AD0200054902100579020013E20210ABB202016E4A02116E6A02001EFC02101EFD02001F9002101F98020004D6 -021004D70200A7B80210A7B9030004140310043403201C8102010CAD02110CED020010F702101CB702016E5502116E75 -0200A7280210A72902001E0002101E010200023202100233020010A502102D0502001F1502101F1D030003A9031003C9 -032021260200013B0210013C0200040802100458020000DC021000FC02001EBE02101EBF02002C1802102C480200A7A8 -0210A7A90200216B0210217B02002C1002102C4002002CDE02102CDF0200029E0210A7B0020000D4021000F4020010EF -02101CAF0200055102100581020013DA0210ABAA020005350210056502010C9D02110CDD020024C6021024E002000410 -0210043002001EB602101EB7020104160211043E02016E4202116E62020001640210016502002CA002102CA102001E2E -02101E2F02010C9502110CD502000498021004990200010A0210010B020118AA021118CA02001E8802101E8902000528 -02100529020013D70210ABA70200A65A0210A65B0200022A0210022B02001FA502101FAD020104B3021104DB0201E90C -0211E92E020024BB021024D5020001F4021001F50200A6900210A6910200FF290210FF4902002C7502102C7602002CB8 -02102CB9020104010211042902002C0D02102C3D020104D0021104F80201E9130211E935020001AF021001B00200A7C7 -0210A7C8020013BF0210AB8F020104020211042A020010EA02101CAA020104BF021104E70201058D021105B402002164 -021021740200018E021001DD020001D3021001D402001F1002101F1802001F5702101F5F02001ED202101ED30200FF2A -0210FF4A02001E0402101E05020004EE021004EF02002C9402102C95020000C0021000E0020013DB0210ABAB020001B2 -0210028B020104260211044E0200A6620210A663020000540210007402000556021005860300042A0310044A03201C86 -020104220211044A02001F3602101F3E0200A7940210A7C4020004CD021004CE020104BB021104E30200023B0210023C -020001CF021001D00200050C0210050D0200A6460210A64702001E4602101E4702010CA602110CE60200A7790210A77A -0200FF360210FF56020118A2021118C2020004EA021004EB0200041D0210043D02016E5202116E720200A6880210A689 -02001EB202101EB3020021600210217002001ED602101ED7020024C3021024DD02016E5E02116E7E020004AC021004AD -0201E9100211E9320200023E02102C6602002CB402102CB50200FF2D0210FF4D0200014C0210014D02001E2202101E23 -020013BB0210AB8B020001430210014402010581021105A8020001700210017102001E9402101E9502002C2802102C58 -0201040E02110436020104B2021104DA0200A7980210A799020013B80210AB8802001E7002101E710400042204100442 -04201C8404301C8502010C8502110CC502001EAE02101EAF020001220210012302010C8C02110CCC020104050211042D -0200042002100440020001AE021002880200021A0210021B0200038C021003CC02001F9502101F9D0400034504100399 -042003B904301FBE0200018A0210025702002C9002102C91020010B102102D110200011E0210011F02001E0802101E09 -0200A7C00210A7C1020013E70210ABB702010580021105A70200041C0210043C0200FB050210FB060200A7A40210A7A5 -02001E7402101E7502002C1402102C440201E90D0211E92F020013A50210AB75020010F302101CB3020024BA021024D4 -0200013F021001400200039D021003BD02002CE202102CE3020010A102102D0102000508021005090200004D0210006D -02000389021003AE0200048C0210048D02002C0402102C340200216F0210217F020004B0021004B102002CD202102CD3 -0200A7340210A73502010584021105AB0200005002100070020001600210016102010CA902110CE902001E3202101E33 -0200020002100201020118AB021118CB0200A7860210A787020118BB021118DB020118AE021118CE0200021E0210021F -020003AA021003CA020010C202102D22020013C40210AB9402000539021005690200A74A0210A74B020000C3021000E3 -0200046E0210046F0200054D0210057D020010E302101CA3020003DE021003DF020024CA021024E40400034504100399 -042003B904301FBE02010C9902110CD90200A75A0210A75B020004190210043902002C0902102C390200037D021003FF -02001F2602101F2E020118B2021118D2020021830210218402002C2302102C53020001320210013302001E5602101E57 -020010AE02102D0E0200A7400210A741020000DD021000FD020010E602101CA603001E6003101E6103201E9B02000478 -021004790200022E0210022F0200A6940210A6950200052C0210052D02010570021105970200A6660210A667020013A8 -0210AB7802010C9602110CD60200020A0210020B020024BF021024D9020013CB0210AB9B02010C9C02110CDC0300041E -0310043E03201C8202001E8402101E8502001EF002101EF102016E5902116E7902002CA402102CA50200A7240210A725 -0200049C0210049D0200010E0210010F020104D3021104FB0201E9030211E9250200019102100192020013DE0210ABAE -030003A0031003C0032003D6020013AD0210AB7D020002060210020702001F4502101F4D020003EA021003EB020010BB -02102D1B02000474021004750200FF380210FF58020004FE021004FF02002C8402102C85020104130211043B02002C1F -02102C4F02001E5C02101E5D02001EE402101EE502002CC802102CC9020104CE021104F6020004BA021004BB0201E905 -0211E927020000D1021000F10200047202100473020118B6021118D602001F7802101FF8020000430210006302001EA2 -02101EA302001F2402101F2C0200019D02100272020004B6021004B7020000DF02101E9E02001F8702101F8F02001E14 -02101E1502001EE602101EE70200040B0210045B02000409021004590201057D021105A4020003A8021003C802001E5A -02101E5B0201057F021105A60200054402100574020010FE02101CBE02001E1202101E13020010B902102D1902000047 -02100067020004FC021004FD02010C9202110CD202002C8602102C8702001E1A02101E1B02010C9002110CD0020010BF -02102D1F020013CA0210AB9A02016E4902116E690200004102100061020001BC021001BD02001EEA02101EEB02000502 -021005030200024802100249020010DF02101C9F030001C4031001C5032001C60200054602100576020013EF0210ABBF -02002CCC02102CCD020010D702101C97020013A70210AB770200047A0210047B02000134021001350300042A0310044A -03201C8602002C1902102C4902000204021002050200025C0210A7AB020024CF021024E902001E5402101E5502010579 -021105A00200054A0210057A0200A6840210A6850200FF270210FF4702001F0502101F0D020021320210214E0200024C -0210024D020013B50210AB8502002CC602102CC7020104080211043002002C1D02102C4D0200023F02102C7E0200A742 -0210A74302001E6202101E6302010CA802110CE8030000B50310039C032003BC02001F8102101F8902010C9A02110CDA -0200012E0210012F0200040302100453020001FE021001FF0400034504100399042003B904301FBE0200017402100175 -020003CF021003D7020024CD021024E702001FB302101FBC020118AD021118CD0200A7440210A745020000D9021000F9 -02001E0C02101E0D02002C1702102C47020003E2021003E30200026C0210A7AD0200A7560210A7570200040502100455 -020001970210026802001F6002101F6802001EEC02101EED02002C8C02102C8D020010F202101CB2020104B6021104DE -0201E91D0211E93F0201040A02110432020013C60210AB9602016E4102116E610200042402100444020001A902100283 -0300039A031003BA032003F0020010E502101CA5020104C8021104F0020104070211042F020013D00210ABA002001FA2 -02101FAA0200046C0210046D020010A002102D000200A7820210A783030000C5031000E50320212B020004B4021004B5 -02002CCE02102CCF0200A73A0210A73B0200FF210210FF41020104B9021104E102001EA402101EA50200038F021003CE -020024BE021024D8020003B002101FE302000049021000690201E91F0211E941020002460210024702001F7302101FC9 +020001EC021001ED020104C3021104EB020105740211059B020013EE0210ABBE0201E91C0211E93E020010E202101CA2 +02002C0502102C35020004A0021004A102001E4202101E43020013B40210AB84020118BF021118DF0200015002100151 +02002CB002102CB1020013A40210AB74020004C1021004C2030001CA031001CB032001CC0200004C0210006C020104C7 +021104EF02016E5A02116E7A0200022202100223020004900210049102002CF202102CF302010595021105BC0200053D +0210056D02000388021003AD0200054902100579020013E20210ABB202016E4A02116E6A02001EFC02101EFD02001F90 +02101F98020004D6021004D70200A7B80210A7B9030004140310043403201C8102010CAD02110CED020010F702101CB7 +02016E5502116E750200A7280210A72902001E0002101E010200023202100233020010A502102D0502001F1502101F1D +030003A9031003C9032021260200013B0210013C0200040802100458020000DC021000FC02001EBE02101EBF02002C18 +02102C480200A7A80210A7A90200216B0210217B02002C1002102C4002002CDE02102CDF0200029E0210A7B0020000D4 +021000F4020010EF02101CAF0200055102100581020013DA0210ABAA020005350210056502010C9D02110CDD020024C6 +021024E0020004100210043002001EB602101EB7020104160211043E02016E4202116E6202010D5E02110D7E02000164 +0210016502002CA002102CA102001E2E02101E2F02010C9502110CD502000498021004990200010A0210010B020118AA +021118CA02010D5302110D7302001E8802101E890200052802100529020013D70210ABA70200A65A0210A65B0200022A +0210022B02001FA502101FAD020104B3021104DB0201E90C0211E92E020024BB021024D5020001F4021001F50200A690 +0210A6910200FF290210FF4902002C7502102C7602002CB802102CB9020104010211042902002C0D02102C3D020104D0 +021104F80201E9130211E935020001AF021001B00200A7C70210A7C8020013BF0210AB8F020104020211042A020010EA +02101CAA020104BF021104E70201058D021105B402002164021021740200018E021001DD020001D3021001D402001F10 +02101F1802001F5702101F5F02001ED202101ED30200FF2A0210FF4A02001E0402101E05020004EE021004EF02002C94 +02102C95020000C0021000E0020013DB0210ABAB020001B20210028B020104260211044E0200A6620210A66302000054 +0210007402000556021005860300042A0310044A03201C86020104220211044A02001F3602101F3E0200A7940210A7C4 +020004CD021004CE020104BB021104E30200023B0210023C020001CF021001D00200050C0210050D0200A6460210A647 +02001E4602101E4702010CA602110CE60200A7790210A77A0200FF360210FF56020118A2021118C2020004EA021004EB +0200041D0210043D02016E5202116E720200A6880210A68902001EB202101EB3020021600210217002001ED602101ED7 +020024C3021024DD02016E5E02116E7E020004AC021004AD0201E9100211E9320200023E02102C6602002CB402102CB5 +0200FF2D0210FF4D0200014C0210014D02001E2202101E23020013BB0210AB8B020001430210014402010581021105A8 +020001700210017102001E9402101E9502002C2802102C580201040E02110436020104B2021104DA0200A7980210A799 +020013B80210AB8802001E7002101E71040004220410044204201C8404301C8502010C8502110CC502001EAE02101EAF +020001220210012302010C8C02110CCC020104050211042D0200042002100440020001AE021002880200021A0210021B +0200038C021003CC02001F9502101F9D0400034504100399042003B904301FBE0200018A0210025702002C9002102C91 +020010B102102D110200011E0210011F02001E0802101E090200A7C00210A7C102001C8902101C8A02010580021105A7 +0200041C0210043C0200FB050210FB060200A7A40210A7A502001E7402101E7502002C1402102C44020013E70210ABB7 +0201E90D0211E92F020013A50210AB75020010F302101CB3020024BA021024D40200013F021001400200039D021003BD +02002CE202102CE3020010A102102D0102000508021005090200004D0210006D02000389021003AE0200048C0210048D +02002C0402102C340200216F0210217F020004B0021004B102002CD202102CD30200A7340210A73502010584021105AB +0200005002100070020001600210016102010CA902110CE902001E3202101E330200020002100201020118AB021118CB +0200A7860210A787020118BB021118DB020118AE021118CE0200021E0210021F020003AA021003CA020010C202102D22 +020013C40210AB9402000539021005690200A74A0210A74B020000C3021000E30200046E0210046F0200054D0210057D +020010E302101CA3020003DE021003DF020024CA021024E40400034504100399042003B904301FBE0200A7DA0210A7DB +0200A75A0210A75B020004190210043902002C0902102C390200037D021003FF02001F2602101F2E02010C9902110CD9 +020021830210218402002C2302102C53020001320210013302001E5602101E57020010AE02102D0E0200A7400210A741 +020000DD021000FD020010E602101CA603001E6003101E6103201E9B02000478021004790200022E0210022F0200A694 +0210A6950200052C0210052D02010570021105970200A6660210A667020013A80210AB7802010C9602110CD6020118B2 +021118D202010D6402110D840200020A0210020B020024BF021024D9020013CB0210AB9B02010C9C02110CDC0300041E +0310043E03201C8202001E8402101E8502001EF002101EF102010D5702110D7702010D5A02110D7A02016E5902116E79 +02002CA402102CA50200A7240210A7250200049C0210049D0200010E0210010F020104D3021104FB0201E9030211E925 +0200019102100192020013DE0210ABAE030003A0031003C0032003D6020013AD0210AB7D020002060210020702001F45 +02101F4D020003EA021003EB020010BB02102D1B02000474021004750200FF380210FF58020004FE021004FF02002C84 +02102C85020104130211043B02002C1F02102C4F02001E5C02101E5D02001EE402101EE502002CC802102CC9020104CE +021104F6020004BA021004BB02010D6202110D82020000D1021000F10200047202100473020118B6021118D602001F78 +02101FF8020000430210006302001EA202101EA30201E9050211E92702001F2402101F2C0200019D02100272020004B6 +021004B7020000DF02101E9E02001F8702101F8F02001E1402101E1502001EE602101EE70200040B0210045B02000409 +021004590201057D021105A4020003A8021003C802001E5A02101E5B0201057F021105A60200054402100574020010FE +02101CBE02001E1202101E13020010B902102D190200004702100067020004FC021004FD02010C9202110CD202002C86 +02102C8702001E1A02101E1B02010C9002110CD0020010BF02102D1F020013CA0210AB9A02016E4902116E6902000041 +02100061020001BC021001BD02001EEA02101EEB02000502021005030200024802100249020010DF02101C9F030001C4 +031001C5032001C60200054602100576020013EF0210ABBF02002CCC02102CCD020010D702101C97020013A70210AB77 +0200047A0210047B02000134021001350300042A0310044A03201C8602002C1902102C4902000204021002050200025C +0210A7AB020024CF021024E902001E5402101E5502010579021105A00200054A0210057A0200A6840210A6850200FF27 +0210FF4702001F0502101F0D020021320210214E0200024C0210024D020013B50210AB8502002CC602102CC702010408 +0211043002002C1D02102C4D0200023F02102C7E0200A7420210A74302001E6202101E6302010CA802110CE8030000B5 +0310039C032003BC02001F8102101F8902010C9A02110CDA0200012E0210012F0200040302100453020001FE021001FF +0400034504100399042003B904301FBE0200017402100175020003CF021003D7020024CD021024E702001FB302101FBC +020118AD021118CD0200A7440210A745020000D9021000F902001E0C02101E0D02002C1702102C47020003E2021003E3 +0200026C0210A7AD0200A7560210A7570200040502100455020001970210026802001F6002101F6802001EEC02101EED +02002C8C02102C8D020010F202101CB20200A7CC0210A7CD02010D5902110D790201040A02110432020013C60210AB96 +0201E91D0211E93F020104B6021104DE0200042402100444020001A9021002830300039A031003BA032003F0020010E5 +02101CA5020104C8021104F0020104070211042F020013D00210ABA002001FA202101FAA0200046C0210046D020010A0 +02102D000200A7820210A783030000C5031000E50320212B020004B4021004B502002CCE02102CCF0200A73A0210A73B +0200FF210210FF4102010D5602110D76020104B9021104E102001EA402101EA50200038F021003CE020024BE021024D8 +020003B002101FE3020000490210006902016E4102116E6102000246021002470201E91F0211E94102001F7302101FC9 02002C6702102C6802002166021021760200010002100101020003E4021003E5020013D20210ABA20200A79E0210A79F 02001FA002101FA802010CB102110CF102016E5D02116E7D020010C102102D210200A7F50210A7F6020013BE0210AB8E 0200042C0210044C020010DD02101C9D02001F9302101F9B0200024E0210024F020004BC021004BD0200017602100177 @@ -295,36 +299,36 @@ static immutable uint[] t = x" 0210A643020004C9021004CA020001470210014802001EB002101EB10200A75E0210A75F0201058C021105B30200A73C 0210A73D020104D1021104F9020104D2021104FA02010590021105B7020000550210007502001F1102101F190200037B 021003FD02001F3102101F3902002CBA02102CBB02000552021005820200A68C0210A68D02001E6E02101E6F02002167 -02102177020000DE021000FE020001900210025B02001EF802101EF9020104B0021104D802010C8E02110CCE02002C08 -02102C380200016E0210016F02016E5C02116E7C020010CD02102D2D02001F7B02101FEB02001E9002101E91020013B3 -0210AB83020001D1021001D202001F5302101F5B020001260210012702001E4802101E4902002C9802102C9902010400 -0211042802010CA402110CE4020118B9021118D9020013B00210AB8002001ED802101ED902001F7402101FCA04000422 -0410044204201C8404301C8502001EF202101EF302002161021021710201042002110448030001F1031001F2032001F3 -020001D7021001D80200A68A0210A68B020003F7021003F80200FF350210FF55020003DC021003DD02010C8D02110CCD -02000418021004380200021202100213020004F0021004F1020024C1021024DB0200050A0210050B0201E9170211E939 -0200A6440210A6450200053702100567020010AC02102D0C020010AD02102D0D020024C7021024E10200046002100461 -02002C2B02102C5B02016E5602116E76020010C702102D27020104060211042E02002CD402102CD5020010F102101CB1 -02001F7A02101FEA02002C0B02102C3B0200FF340210FF540200041702100437020118BA021118DA030001F1031001F2 -032001F303000395031003B5032003F5020001B7021002920200018F0210025902000538021005680200A66A0210A66B -02001F3202101F3A02010421021104490200052A0210052B02000425021004450200A7840210A7850200004F0210006F -0200A6640210A665020104B1021104D9020000C4021000E402010CA502110CE502001EAA02101EAB020013D80210ABA8 -020010E402101CA4020000D8021000F8030001CA031001CB032001CC020010D102101C91020105750211059C0200216C -0210217C02002C0202102C3202016E5B02116E7B0200A7D80210A7D90200FF220210FF420200040402100454020010B3 -02102D1302001ECA02101ECB02010409021104310201E9180211E93A020004F6021004F702002CC002102CC102001E20 -02101E21020104B7021104DF0200039B021003BB020001960210026902002C2502102C550200A7900210A7910200A764 -0210A7650200020C0210020D02001F9402101F9C020118B0021118D0020001820210018302002CAC02102CAD02001F80 -02101F88020024CC021024E60200025102102C6D0200048002100481020013E60210ABB6020024B8021024D20200054B -0210057B020013AA0210AB7A0300004B0310006B0320212A020002610210A7AC02000141021001420300039A031003BA -032003F0020010F802101CB8020104C4021104EC0200018902100256020010DE02101C9E02001E6802101E69020104BA -021104E202001F0402101F0C020105780211059F020004110210043102010582021105A902000466021004670200A736 -0210A737020000CB021000EB020010C002102D20020104270211044F020001DE021001DF02002C9202102C9302000106 -0210010702001E4E02101E4F0200042B0210044B0200A7480210A74902002C1102102C410200A7B30210AB530200053E -0210056E0200014E0210014F020013D30210ABA302000524021005250200A65E0210A65F020001F8021001F9020004AE -021004AF0200A77E0210A77F030003A0031003C0032003D6020002650210A78D0200FF2B0210FF4B02001FA102101FA9 -02001EDE02101EDF020013B90210AB8902000168021001690200022602100227020013F1021013F902001E0602101E07 -02000120021001210201041D0211044502001F6602101F6E020010A602102D0602010C9102110CD102001D8E0210A7C6 -02010C8402110CC402010CAE02110CEE020118A3021118C30200004802100068020013CC0210AB9C0201E91E0211E940 -0200038E021003CD0200053102100561"; +02102177020000DE021000FE020001900210025B02001EF802101EF902010D5F02110D7F020104B0021104D802010C8E +02110CCE02002C0802102C380200016E0210016F02016E5C02116E7C020010CD02102D2D02001F7B02101FEB02001E90 +02101E91020013B30210AB83020001D1021001D202001F5302101F5B020001260210012702001E4802101E4902002C98 +02102C99020104000211042802010CA402110CE4020118B9021118D9020013B00210AB8002001ED802101ED902001F74 +02101FCA040004220410044204201C8404301C8502001EF202101EF302002161021021710201042002110448030001F1 +031001F2032001F3020001D7021001D80200A68A0210A68B020003F7021003F80200FF350210FF55020003DC021003DD +02010C8D02110CCD02000418021004380200021202100213020004F0021004F1020024C1021024DB0200050A0210050B +0201E9170211E9390200A6440210A6450200053702100567020010AC02102D0C020010AD02102D0D020024C7021024E1 +020004600210046102002C2B02102C5B02016E5602116E76020010C702102D27020104060211042E02002CD402102CD5 +020010F102101CB102001F7A02101FEA02002C0B02102C3B0200FF340210FF540200041702100437020118BA021118DA +030001F1031001F2032001F303000395031003B5032003F5020001B7021002920200018F021002590200053802100568 +0200A66A0210A66B02001F3202101F3A02010421021104490200052A0210052B02000425021004450200A7840210A785 +0200004F0210006F0200A6640210A665020104B1021104D9020000C4021000E402010CA502110CE502001EAA02101EAB +020013D80210ABA802010D5502110D75020010E402101CA4020000D8021000F8030001CA031001CB032001CC020010D1 +02101C91020105750211059C0200216C0210217C02002C0202102C3202010D5802110D780200A7D80210A7D90200FF22 +0210FF4202016E5B02116E7B0200040402100454020010B302102D1302001ECA02101ECB02010409021104310201E918 +0211E93A020004F6021004F702002CC002102CC102001E2002101E21020104B7021104DF0200039B021003BB02000196 +0210026902002C2502102C550200A7900210A7910200A7640210A7650200020C0210020D02001F9402101F9C020118B0 +021118D0020001820210018302002CAC02102CAD02001F8002101F88020024CC021024E60200025102102C6D02000480 +02100481020013E60210ABB6020024B8021024D20200054B0210057B020013AA0210AB7A0300004B0310006B0320212A +020002610210A7AC02000141021001420300039A031003BA032003F0020010F802101CB8020104C4021104EC02000189 +02100256020010DE02101C9E02001E6802101E69020104BA021104E202001F0402101F0C020105780211059F02000411 +0210043102010582021105A902000466021004670200A7360210A737020000CB021000EB020010C002102D2002010427 +0211044F020001DE021001DF02002C9202102C93020001060210010702001E4E02101E4F0200042B0210044B0200A748 +0210A74902002C1102102C410200A7B30210AB530200053E0210056E0200014E0210014F020013D30210ABA302000524 +021005250200A65E0210A65F020001F8021001F9020004AE021004AF0200A77E0210A77F030003A0031003C0032003D6 +020002650210A78D0200FF2B0210FF4B02001FA102101FA902001EDE02101EDF020013B90210AB890200016802100169 +0200022602100227020013F1021013F902001E0602101E0702000120021001210201041D0211044502001F6602101F6E +020010A602102D0602010C9102110CD102001D8E0210A7C602010C8402110CC402010CAE02110CEE020118A3021118C3 +0200004802100068020013CC0210AB9C0201E91E0211E9400200038E021003CD0200053102100561"; return SCE(t[i]); } @property FCE fullCaseTable(size_t index) nothrow @nogc @safe pure @@ -333,141 +337,143 @@ static immutable ulong[] t = x" 001E90B000000021001E92D0000001210010CAE0000000210010CEE00000012100004960000000210000497000000121 001E911000000021001E933000000121000A722000000021000A7230000001210001F790000000210001FF9000000121 0001F440000000210001F4C000000121000015A000000021000015B00000012100010FD0000000210001CBD000000121 -0016E4C0000000210016E6C0000001210001E380000000210001E39000000121000FB16000000021000057E576000122 -001E921000000021001E9430000001210001F230000000210001F2B00000012100001A000000002100001A1000000121 -00003A300000003100003C200000013100003C300000023100004DC00000002100004DD0000001210002CA6000000021 -0002CA7000000121000017B000000021000017C000000121001E906000000021001E92800000012100010DC000000021 -0001C9C00000012100104CD00000002100104F50000001210001F650000000210001F6D000000121000051E000000021 -000051F00000012100010D80000000210001C980000001210002C1A0000000210002C4A000000121000027D000000021 -0002C64000000121000A69A000000021000A69B0000001210001F020000000210001F0A0000001210000522000000021 -00005230000001210002C600000000210002C610000001210001FB700000002100003B13423B9123000A650000000021 -000A651000000121000A65C000000021000A65D0000001210002C1E0000000210002C4E0000001210001FB3000000031 -0001FBC00000013100003B13B900023200013C9000000021000AB9900000012100013CD000000021000AB9D000000121 -00000CE00000002100000EE0000001210001E7E0000000210001E7F0000001210010414000000021001043C000000121 -00013F000000002100013F80000001210001EC40000000210001EC5000000121000A78B000000021000A78C000000121 -00001140000000210000115000000121000042F000000021000044F000000121001E902000000021001E924000000121 -00004D800000002100004D90000001210002CAA0000000210002CAB00000012100001100000000210000111000000121 -000049200000002100004930000001210001E340000000210001E3500000012100013F400000002100013FC000000121 -000022400000002100002250000001210002CA20000000210002CA3000000121000A72E000000021000A72F000000121 -0016E480000000210016E68000000121000004A000000021000006A00000012100013A6000000021000AB76000000121 -000015E000000021000015F00000012100001C400000003100001C500000013100001C60000002310001F40000000021 -0001F48000000121000A658000000021000A659000000121000022C000000021000022D0000001210010C9F000000021 -0010CDF0000001210001F5000000002100003C53130001220001FA70000000310001FAF0000001310001F673B9000232 -0000042000000021000006200000012100013AE000000021000AB7E0000001210016E400000000210016E60000000121 -00000D200000002100000F20000001210001E820000000210001E8300000012100013D5000000021000ABA5000000121 -00010E00000000210001CA0000000121000013D000000021000013E00000012100004060000000210000456000000121 -000029D000000021000A7B20000001210000139000000021000013A00000012100001980000000210000199000000121 -0001EBC0000000210001EBD00000012100003AB00000002100003CB000000121000040E000000021000045E000000121 -000A7B6000000021000A7B7000000121000040A000000021000045A0000001210001EC00000000210001EC1000000121 -0010572000000021001059900000012100024B900000002100024D30000001210002C160000000210002C46000000121 -000019C000000021000026F00000012100003A700000002100003C7000000121000A692000000021000A693000000121 -00000C500000003100000E5000000131000212B000000231000052600000002100005270000001210000266000000021 -000A7AA000000121001057A00000002100105A1000000121001057E00000002100105A50000001210001FD0000000021 -0001FD800000012100000460000000210000066000000121001E90A000000021001E92C0000001210000228000000021 -000022900000012100013A2000000021000AB72000000121000A726000000021000A7270000001210010C93000000021 -0010CD3000000121000049A000000021000049B00000012100000D600000002100000F6000000121000010C000000021 -000010D0000001210010C970000000210010CD700000012100001620000000210000163000000121000019E000000021 -00002200000001210001E970000000210000074308000122000039200000003100003B200000013100003D0000000231 -0001E300000000210001E310000001210001FA30000000310001FAB0000001310001F633B900023200118A8000000021 -00118C8000000121000216D000000021000217D0000001210002C9E0000000210002C9F000000121000004E000000021 -000006E00000012100000B5000000031000039C00000013100003BC000000231000048E000000021000048F000000121 -000A72A000000021000A72B00000012100104100000000210010438000000121000038A00000002100003AF000000121 -0001EFE0000000210001EFF00000012100118AC00000002100118CC00000012100001EA00000002100001EB000000121 -0001F060000000210001F0E0000001210001FC30000000310001FCC00000013100003B73B900023200010B4000000021 -0002D14000000121000026A000000021000A7AE000000121000041200000003100004320000001310001C80000000231 -0001F860000000310001F8E0000001310001F063B90002320010C9B0000000210010CDB000000121000A760000000021 -000A76100000012100024C800000002100024E200000012100001A400000002100001A5000000121000039F000000021 -00003BF00000012100010C40000000210002D2400000012100004A200000002100004A30000001210002C03000000021 -0002C330000001210002CE00000000210002CE10000001210010576000000021001059D0000001210001F96000000031 -0001F9E0000001310001F263B900023200004E000000002100004E10000001210002C2A0000000210002C5A000000121 -0001ED00000000210001ED100000012100000C200000002100000E200000012100004E800000002100004E9000000121 -000A7A6000000021000A7A700000012100010F90000000210001CB900000012100001450000000210000146000000121 -000037C00000002100003FE0000001210001EC80000000210001EC9000000121000041A000000021000043A000000121 -00000CA00000002100000EA0000001210001F860000000310001F8E0000001310001F063B90002320000421000000031 -00004410000001310001C830000002310010404000000021001042C000000121000FB02000000021000006606C000122 -000053F000000021000056F0000001210000547000000021000057700000012100013B6000000021000AB86000000121 -00013EC000000021000ABBC000000121000FF2C000000021000FF4C000000121000A7BA000000021000A7BB000000121 -000A648000000021000A64900000012100013C5000000021000AB95000000121000FF24000000021000FF44000000121 -001040F0000000210010437000000121001041C0000000210010444000000121001058300000002100105AA000000121 -0010C830000000210010CC3000000121000024100000002100002420000001210001E760000000210001E77000000121 -00010BC0000000210002D1C0000001210002C220000000210002C5200000012100010D00000000210001C90000000121 -000A768000000021000A769000000121000A732000000021000A733000000121000011C000000021000011D000000121 -000042700000002100004470000001210001E400000000210001E4100000012100118B100000002100118D1000000121 -0000152000000021000015300000012100003A100000003100003C100000013100003F10000002310000397000000021 -00003B700000012100001AC00000002100001AD00000012100001E200000002100001E30000001210000218000000021 -0000219000000121001E91A000000021001E93C000000121000051600000002100005170000001210001F27000000021 -0001F2F000000121000A7C9000000021000A7CA0000001210001FE00000000210001FE80000001210002165000000021 -0002175000000121000A66C000000021000A66D000000121000039300000002100003B30000001210000532000000021 -0000562000000121000005600000002100000760000001210001F330000000210001F3B0000001210000554000000021 -00005840000001210001C88000000031000A64A000000131000A64B000000231000A68E000000021000A68F000000121 -00003D800000002100003D900000012100024C500000002100024DF0000001210002CB20000000210002CB3000000121 -0010C820000000210010CC2000000121000005700000002100000770000001210016E530000000210016E73000000121 -000FF37000000021000FF570000001210001EF60000000210001EF7000000121001E912000000021001E934000000121 -0001F120000000210001F1A00000012100004A600000002100004A7000000121000016A000000021000016B000000121 -0001F340000000210001F3C0000001210002CDC0000000210002CDD00000012100001B1000000021000028A000000121 -00118A400000002100118C40000001210001E280000000210001E2900000012100001BF00000002100001F7000000121 -000018B000000021000018C00000012100010A70000000210002D0700000012100001280000000210000129000000121 +0010D610000000210010D810000001210001E380000000210001E39000000121000FB16000000021000057E576000122 +0016E4C0000000210016E6C0000001210001F230000000210001F2B000000121001E921000000021001E943000000121 +00001A000000002100001A100000012100003A300000003100003C200000013100003C300000023100004DC000000021 +00004DD0000001210002CA60000000210002CA7000000121000017B000000021000017C000000121001E906000000021 +001E92800000012100010DC0000000210001C9C00000012100104CD00000002100104F50000001210001F65000000021 +0001F6D000000121000051E000000021000051F00000012100010D80000000210001C980000001210002C1A000000021 +0002C4A000000121000027D0000000210002C64000000121000A69A000000021000A69B0000001210001F02000000021 +0001F0A000000121000052200000002100005230000001210002C600000000210002C610000001210001FB7000000021 +00003B13423B9123000A650000000021000A651000000121000A65C000000021000A65D0000001210002C1E000000021 +0002C4E0000001210001FB30000000310001FBC00000013100003B13B900023200013C9000000021000AB99000000121 +00013CD000000021000AB9D00000012100000CE00000002100000EE0000001210001E7E0000000210001E7F000000121 +0010414000000021001043C00000012100013F000000002100013F80000001210001EC40000000210001EC5000000121 +000A78B000000021000A78C00000012100001140000000210000115000000121000042F000000021000044F000000121 +001E902000000021001E92400000012100004D800000002100004D90000001210002CAA0000000210002CAB000000121 +00001100000000210000111000000121000049200000002100004930000001210001E340000000210001E35000000121 +00013F400000002100013FC000000121000022400000002100002250000001210002CA20000000210002CA3000000121 +000A72E000000021000A72F0000001210016E480000000210016E68000000121000004A000000021000006A000000121 +00013A6000000021000AB76000000121000015E000000021000015F00000012100001C400000003100001C5000000131 +00001C60000002310001F400000000210001F48000000121000A658000000021000A659000000121000022C000000021 +000022D0000001210010C9F0000000210010CDF0000001210001F5000000002100003C53130001220001FA7000000031 +0001FAF0000001310001F673B90002320000042000000021000006200000012100013AE000000021000AB7E000000121 +0016E400000000210016E6000000012100000D200000002100000F20000001210001E820000000210001E83000000121 +00013D5000000021000ABA500000012100010E00000000210001CA0000000121000013D000000021000013E000000121 +00004060000000210000456000000121000029D000000021000A7B20000001210000139000000021000013A000000121 +000019800000002100001990000001210001EBC0000000210001EBD00000012100003AB00000002100003CB000000121 +000040E000000021000045E000000121000A7B6000000021000A7B7000000121000040A000000021000045A000000121 +0001EC00000000210001EC10000001210010572000000021001059900000012100024B900000002100024D3000000121 +0002C160000000210002C46000000121000019C000000021000026F00000012100003A700000002100003C7000000121 +000A692000000021000A69300000012100000C500000003100000E5000000131000212B0000002310000526000000021 +00005270000001210000266000000021000A7AA000000121001057A00000002100105A1000000121001057E000000021 +00105A50000001210001FD00000000210001FD800000012100000460000000210000066000000121001E90A000000021 +001E92C0000001210000228000000021000022900000012100013A2000000021000AB72000000121000A726000000021 +000A7270000001210010C930000000210010CD3000000121000049A000000021000049B00000012100000D6000000021 +00000F6000000121000010C000000021000010D0000001210010C970000000210010CD70000001210000162000000021 +0000163000000121000019E00000002100002200000001210001E9700000002100000743080001220000392000000031 +00003B200000013100003D00000002310001E300000000210001E310000001210001FA30000000310001FAB000000131 +0001F633B900023200118A800000002100118C8000000121000216D000000021000217D0000001210002C9E000000021 +0002C9F000000121000004E000000021000006E00000012100000B5000000031000039C00000013100003BC000000231 +000048E000000021000048F000000121000A72A000000021000A72B00000012100104100000000210010438000000121 +000038A00000002100003AF0000001210001EFE0000000210001EFF00000012100118AC00000002100118CC000000121 +00001EA00000002100001EB0000001210001F060000000210001F0E0000001210001FC30000000310001FCC000000131 +00003B73B900023200010B40000000210002D14000000121000026A000000021000A7AE0000001210000412000000031 +00004320000001310001C800000002310001F860000000310001F8E0000001310001F063B90002320010C9B000000021 +0010CDB000000121000A760000000021000A76100000012100024C800000002100024E200000012100001A4000000021 +00001A5000000121000039F00000002100003BF00000012100010C40000000210002D2400000012100004A2000000021 +00004A30000001210002C030000000210002C330000001210002CE00000000210002CE10000001210010576000000021 +001059D0000001210001F960000000310001F9E0000001310001F263B900023200004E000000002100004E1000000121 +0002C2A0000000210002C5A0000001210001ED00000000210001ED100000012100000C200000002100000E2000000121 +00004E800000002100004E9000000121000A7A6000000021000A7A700000012100010F90000000210001CB9000000121 +00001450000000210000146000000121000037C00000002100003FE0000001210001EC80000000210001EC9000000121 +000041A000000021000043A00000012100000CA00000002100000EA0000001210001F860000000310001F8E000000131 +0001F063B9000232000042100000003100004410000001310001C830000002310010404000000021001042C000000121 +000FB02000000021000006606C000122000053F000000021000056F00000012100005470000000210000577000000121 +00013B6000000021000AB8600000012100013EC000000021000ABBC000000121000FF2C000000021000FF4C000000121 +000A7BA000000021000A7BB000000121000A648000000021000A64900000012100013C5000000021000AB95000000121 +000FF24000000021000FF44000000121001040F0000000210010437000000121001041C0000000210010444000000121 +001058300000002100105AA0000001210010C830000000210010CC300000012100002410000000210000242000000121 +0001E760000000210001E7700000012100010BC0000000210002D1C0000001210002C220000000210002C52000000121 +00010D00000000210001C90000000121000A768000000021000A769000000121000A732000000021000A733000000121 +000011C000000021000011D000000121000042700000002100004470000001210001E400000000210001E41000000121 +00118B100000002100118D10000001210000152000000021000015300000012100003A100000003100003C1000000131 +00003F1000000231000039700000002100003B700000012100001AC00000002100001AD00000012100001E2000000021 +00001E300000012100002180000000210000219000000121001E91A000000021001E93C0000001210000516000000021 +00005170000001210001F270000000210001F2F000000121000A7C9000000021000A7CA0000001210001FE0000000021 +0001FE800000012100021650000000210002175000000121000A66C000000021000A66D0000001210000393000000021 +00003B300000012100005320000000210000562000000121000005600000002100000760000001210001F33000000021 +0001F3B000000121000055400000002100005840000001210001C88000000031000A64A000000131000A64B000000231 +000A68E000000021000A68F00000012100003D800000002100003D900000012100024C500000002100024DF000000121 +0002CB20000000210002CB30000001210010C820000000210010CC200000012100000570000000210000077000000121 +0010D500000000210010D70000000121000FF37000000021000FF570000001210001EF60000000210001EF7000000121 +001E912000000021001E9340000001210001F120000000210001F1A0000001210016E530000000210016E73000000121 +00004A600000002100004A7000000121000016A000000021000016B0000001210001F340000000210001F3C000000121 +0002CDC0000000210002CDD00000012100001B1000000021000028A00000012100118A400000002100118C4000000121 +0001E280000000210001E2900000012100001BF00000002100001F7000000121000018B000000021000018C000000121 +00010A70000000210002D070000001210010D650000000210010D8500000012100001280000000210000129000000121 0001E6A0000000210001E6B00000012100010AB0000000210002D0B000000121000041F000000021000043F000000121 0002C2E0000000210002C5E0000001210010CAF0000000210010CEF00000012100104C500000002100104ED000000121 -00118A500000002100118C50000001210001FE10000000210001FE900000012100003A600000003100003C6000000131 -00003D50000002310002C0A0000000210002C3A000000121000050E000000021000050F0000001210000104000000021 -0000105000000121000037200000002100003730000001210001E8E0000000210001E8F0000001210000396000000021 -00003B60000001210001EFA0000000210001EFB00000012100003F200000002100003F9000000121000A640000000021 -000A64100000012100010EC0000000210001CAC00000012100118A100000002100118C10000001210001FA7000000031 -0001FAF0000001310001F673B9000232000016600000002100001670000001210001F370000000210001F3F000000121 -0010C860000000210010CC600000012100013DD000000021000ABAD0000001210001F510000000210001F59000000121 -0002C9A0000000210002C9B00000012100001FA00000002100001FB00000012100021690000000210002179000000121 -0016E570000000210016E7700000012100010A40000000210002D0400000012100000530000000310000073000000131 -000017F0000002310000376000000021000037700000012100013B1000000021000AB810000001210000468000000021 -000046900000012100013E4000000021000ABB40000001210001F960000000310001F9E0000001310001F263B9000232 -000010800000002100001090000001210010CA00000000210010CE00000001210001E660000000210001E67000000121 -0001E8A0000000210001E8B0000001210001E4C0000000210001E4D0000001210001F750000000210001FCB000000121 -0002C0E0000000210002C3E0000001210001E500000000210001E5100000012100024C000000002100024DA000000121 -000A750000000021000A75100000012100000DA00000002100000FA00000012100010E90000000210001CA9000000121 -0002CD80000000210002CD90000001210001EB80000000210001EB9000000121000012C000000021000012D000000121 -00002520000000210002C7000000012100004C300000002100004C400000012100003B00000000310001FE3000000131 -00003C530830123300024C400000002100024DE0000001210002C0F0000000210002C3F0000001210000533000000021 -0000563000000121000019500000002100001F60000001210001F130000000210001F1B00000012100104B8000000021 -00104E0000000121000055300000002100005830000001210010425000000021001044D00000012100013D1000000021 -000ABA100000012100004F400000002100004F500000012100004C700000002100004C800000012100104B5000000021 -00104DD00000012100004D000000002100004D1000000121000A75C000000021000A75D0000001210010CAC000000021 -0010CEC0000001210001E2C0000000210001E2D00000012100010A80000000210002D080000001210000464000000021 -00004650000001210000426000000021000044600000012100004E400000002100004E500000012100010ED000000021 -0001CAD000000121000A792000000021000A7930000001210001EDC0000000210001EDD00000012100104BC000000021 -00104E40000001210010577000000021001059E0000001210001EA80000000210001EA900000012100001B8000000021 -00001B900000012100000C600000002100000E6000000121000FF30000000021000FF500000001210016E44000000021 -0016E64000000121001041B00000002100104430000001210001E0E0000000210001E0F00000012100004D4000000021 -00004D50000001210002CAE0000000210002CAF0000001210002C6B0000000210002C6C000000121000FF23000000021 -000FF43000000121000018400000002100001850000001210010573000000021001059A0000001210000398000000041 -00003B800000014100003D100000024100003F400000034100013D4000000021000ABA4000000121001E919000000021 -001E93B000000121000018700000002100001880000001210002C130000000210002C43000000121000A7A2000000021 -000A7A300000012100001940000000210000263000000121000041600000002100004360000001210002CBE000000021 -0002CBF0000001210001FA60000000310001FAE0000001310001F663B900023200104C600000002100104EE000000121 -0001F820000000310001F8A0000001310001F023B900023200104C900000002100104F100000012100013E0000000021 -000ABB000000012100002400000000210002C7F000000121000A7BE000000021000A7BF0000001210001F92000000031 -0001F9A0000001310001F223B90002320000402000000021000045200000012100005360000000210000566000000121 -00005500000000210000580000000121000A682000000021000A683000000121000038600000002100003AC000000121 -0001FE50000000210001FEC00000012100024C900000002100024E300000012100000D300000002100000F3000000121 -00010F00000000210001CB00000001210001E3C0000000210001E3D0000001210002C800000000210002C81000000121 -0001F970000000310001F9F0000001310001F273B9000232001058A00000002100105B10000001210000156000000021 -00001570000001210001E7A0000000210001E7B00000012100013ED000000021000ABBD000000121000A73E000000021 -000A73F00000012100001180000000210000119000000121000021400000002100002150000001210001E60000000031 -0001E610000001310001E9B0000002310002C8A0000000210002C8B000000121000A64C000000021000A64D000000121 -000039500000003100003B500000013100003F500000023100001E600000002100001E70000001210001F85000000031 -0001F8D0000001310001F053B9000232000051200000002100005130000001210001F610000000210001F69000000121 -000A668000000021000A669000000121001059400000002100105BB0000001210001E180000000210001E19000000121 -00013B2000000021000AB820000001210010415000000021001043D00000012100104180000000210010440000000121 -0000245000000021000028C0000001210001F720000000210001FC800000012100118B500000002100118D5000000121 -00010B80000000210002D1800000012100004C000000002100004CF000000121001040B0000000210010433000000121 -0000423000000021000044300000012100010C50000000210002D250000001210002C2D0000000210002C5D000000121 -0001F300000000210001F3800000012100013C1000000021000AB91000000121000A76C000000021000A76D000000121 -00104CC00000002100104F40000001210001F710000000210001FBB000000121000FF33000000021000FF53000000121 -000216A000000021000217A000000121000014900000002100002BC06E00012200003E800000002100003E9000000121 -000A7D0000000021000A7D1000000121000005A000000021000007A0000001210010CB00000000210010CF0000000121 -00001D900000002100001DA0000001210001ECC0000000210001ECD00000012100001B500000002100001B6000000121 -000054300000002100005730000001210001F220000000210001F2A000000121001058700000002100105AE000000121 -0001EA00000000210001EA10000001210010C8F0000000210010CCF0000001210016E540000000210016E74000000121 -0001FB400000002100003AC3B90001220001D7D0000000210002C63000000121000A7D6000000021000A7D7000000121 +0010D510000000210010D710000001210001FE10000000210001FE900000012100003A600000003100003C6000000131 +00003D50000002310002C0A0000000210002C3A000000121000050E000000021000050F0000001210010D5D000000021 +0010D7D00000012100001040000000210000105000000121000037200000002100003730000001210001E8E000000021 +0001E8F000000121000039600000002100003B60000001210001EFA0000000210001EFB00000012100003F2000000021 +00003F9000000121000A640000000021000A64100000012100118A500000002100118C500000012100010EC000000021 +0001CAC00000012100118A100000002100118C10000001210001FA70000000310001FAF0000001310001F673B9000232 +000016600000002100001670000001210001F370000000210001F3F0000001210010C860000000210010CC6000000121 +00013DD000000021000ABAD0000001210001F510000000210001F590000001210002C9A0000000210002C9B000000121 +00001FA00000002100001FB000000121000216900000002100021790000001210010D540000000210010D74000000121 +00010A40000000210002D0400000012100000530000000310000073000000131000017F0000002310000376000000021 +000037700000012100013B1000000021000AB810000001210000468000000021000046900000012100013E4000000021 +000ABB40000001210001F960000000310001F9E0000001310001F263B900023200001080000000210000109000000121 +0010CA00000000210010CE00000001210001E660000000210001E670000001210001E8A0000000210001E8B000000121 +0001E4C0000000210001E4D0000001210001F750000000210001FCB0000001210002C0E0000000210002C3E000000121 +0001E500000000210001E5100000012100024C000000002100024DA000000121000A750000000021000A751000000121 +00000DA00000002100000FA00000012100010E90000000210001CA90000001210002CD80000000210002CD9000000121 +0001EB80000000210001EB9000000121000012C000000021000012D00000012100002520000000210002C70000000121 +00004C300000002100004C400000012100003B00000000310001FE300000013100003C530830123300024C4000000021 +00024DE0000001210002C0F0000000210002C3F000000121000053300000002100005630000001210000195000000021 +00001F60000001210001F130000000210001F1B00000012100104B800000002100104E00000001210000553000000021 +00005830000001210010425000000021001044D00000012100013D1000000021000ABA100000012100004F4000000021 +00004F500000012100004C700000002100004C800000012100104B500000002100104DD00000012100004D0000000021 +00004D1000000121000A75C000000021000A75D0000001210010CAC0000000210010CEC0000001210001E2C000000021 +0001E2D00000012100010A80000000210002D08000000121000046400000002100004650000001210000426000000021 +000044600000012100004E400000002100004E500000012100010ED0000000210001CAD000000121000A792000000021 +000A7930000001210001EDC0000000210001EDD00000012100104BC00000002100104E40000001210010577000000021 +001059E0000001210001EA80000000210001EA900000012100001B800000002100001B900000012100000C6000000021 +00000E6000000121000FF30000000021000FF500000001210016E440000000210016E64000000121001041B000000021 +00104430000001210001E0E0000000210001E0F00000012100004D400000002100004D50000001210002CAE000000021 +0002CAF0000001210002C6B0000000210002C6C000000121000FF23000000021000FF430000001210000184000000021 +00001850000001210010573000000021001059A000000121000039800000004100003B800000014100003D1000000241 +00003F400000034100013D4000000021000ABA4000000121001E919000000021001E93B0000001210000187000000021 +00001880000001210002C130000000210002C43000000121000A7A2000000021000A7A30000001210000194000000021 +0000263000000121000041600000002100004360000001210002CBE0000000210002CBF0000001210001FA6000000031 +0001FAE0000001310001F663B900023200104C600000002100104EE0000001210001F820000000310001F8A000000131 +0001F023B900023200104C900000002100104F100000012100013E0000000021000ABB00000001210000240000000021 +0002C7F000000121000A7BE000000021000A7BF0000001210001F920000000310001F9A0000001310001F223B9000232 +000040200000002100004520000001210000536000000021000056600000012100005500000000210000580000000121 +000A682000000021000A683000000121000038600000002100003AC0000001210001FE50000000210001FEC000000121 +00024C900000002100024E300000012100000D300000002100000F300000012100010F00000000210001CB0000000121 +0001E3C0000000210001E3D0000001210002C800000000210002C810000001210001F970000000310001F9F000000131 +0001F273B9000232001058A00000002100105B1000000121000015600000002100001570000001210001E7A000000021 +0001E7B00000012100013ED000000021000ABBD000000121000A73E000000021000A73F0000001210000118000000021 +0000119000000121000021400000002100002150000001210001E600000000310001E610000001310001E9B000000231 +0002C8A0000000210002C8B000000121000A64C000000021000A64D000000121000039500000003100003B5000000131 +00003F500000023100001E600000002100001E70000001210001F850000000310001F8D0000001310001F053B9000232 +000051200000002100005130000001210001F610000000210001F69000000121000A668000000021000A669000000121 +001059400000002100105BB0000001210001E180000000210001E1900000012100013B2000000021000AB82000000121 +0010415000000021001043D000000121001041800000002100104400000001210000245000000021000028C000000121 +0001F720000000210001FC800000012100118B500000002100118D500000012100010B80000000210002D18000000121 +00004C000000002100004CF000000121001040B000000021001043300000012100004230000000210000443000000121 +00010C50000000210002D250000001210002C2D0000000210002C5D0000001210001F300000000210001F38000000121 +00013C1000000021000AB91000000121000A76C000000021000A76D00000012100104CC00000002100104F4000000121 +0001F710000000210001FBB000000121000FF33000000021000FF53000000121000216A000000021000217A000000121 +000014900000002100002BC06E00012200003E800000002100003E9000000121000A7D0000000021000A7D1000000121 +000005A000000021000007A0000001210010CB00000000210010CF000000012100001D900000002100001DA000000121 +0001ECC0000000210001ECD00000012100001B500000002100001B600000012100005430000000210000573000000121 +0001F220000000210001F2A000000121001058700000002100105AE0000001210001EA00000000210001EA1000000121 +0010C8F0000000210010CCF0000001210016E540000000210016E740000001210001FB400000002100003AC3B9000122 +0016E570000000210016E770000001210001D7D0000000210002C63000000121000A7D6000000021000A7D7000000121 000A74C000000021000A74D00000012100013CE000000021000AB9E00000012100000CF00000002100000EF000000121 00010D90000000210001C990000001210000045000000021000006500000012100001360000000210000137000000121 000040D000000021000045D0000001210016E430000000210016E630000001210001F7C0000000210001FFA000000121 @@ -520,28 +526,29 @@ static immutable ulong[] t = x" 0001C840000002410001C8500000034100010E70000000210001CA700000012100004FA00000002100004FB000000121 00010D50000000210001C950000001210001EAC0000000210001EAD00000012100010B70000000210002D17000000121 00013A1000000021000AB71000000121000A7C2000000021000A7C3000000121001E907000000021001E929000000121 -00013F500000002100013FD0000001210001EE20000000210001EE30000001210001F620000000210001F6A000000121 -0001E920000000210001E9300000012100001D500000002100001D60000001210002C060000000210002C36000000121 -0010C8B0000000210010CCB0000001210001F700000000210001FBA00000012100003EC00000002100003ED000000121 -001E915000000021001E937000000121000216E000000021000217E00000012100013C0000000021000AB90000000121 -0001EF40000000210001EF50000001210001FB20000000210001F703B9000122000FF3A000000021000FF5A000000121 -00118BC00000002100118DC00000012100004AA00000002100004AB00000012100021630000000210002173000000121 -0001E1C0000000210001E1D00000012100013C8000000021000AB9800000012100118AF00000002100118CF000000121 -0001E9A00000002100000612BE000122001057100000002100105980000001210010CA70000000210010CE7000000121 -0010C980000000210010CD80000001210000051000000021000007100000012100004F200000002100004F3000000121 -0010CAA0000000210010CEA00000012100010AF0000000210002D0F0000001210002C8E0000000210002C8F000000121 -0002CC40000000210002CC50000001210001E0A0000000210001E0B000000121000FB15000000021000057456B000122 -0016E500000000210016E70000000121001058E00000002100105B500000012100104110000000210010439000000121 -0010423000000021001044B000000121000053A000000021000056A0000001210001E6C0000000210001E6D000000121 -00104BE00000002100104E60000001210010424000000021001044C00000012100010A90000000210002D09000000121 -00024C200000002100024DC0000001210010C810000000210010CC100000012100013BC000000021000AB8C000000121 -000046200000003100004630000001310001C8700000023100118A600000002100118C60000001210001E4A000000021 -0001E4B000000121000216200000002100021720000001210001ED40000000210001ED500000012100010AA000000021 -0002D0A00000012100004EC00000002100004ED0000001210002C0C0000000210002C3C000000121000A79A000000021 -000A79B00000012100004CB00000002100004CC00000012100104BD00000002100104E50000001210000370000000021 -00003710000001210001FE700000002100003C5308342123001E914000000021001E93600000012100003DA000000021 -00003DB0000001210001F350000000210001F3D0000001210016E510000000210016E710000001210000392000000031 -00003B200000013100003D00000002310002C960000000210002C970000001210001FA50000000310001FAD000000131 +00013F500000002100013FD000000121000019B000000021000A7DC0000001210001EE20000000210001EE3000000121 +0001F620000000210001F6A0000001210001E920000000210001E9300000012100001D500000002100001D6000000121 +0002C060000000210002C360000001210010C8B0000000210010CCB0000001210001F700000000210001FBA000000121 +00003EC00000002100003ED000000121001E915000000021001E937000000121000216E000000021000217E000000121 +00013C0000000021000AB900000001210001EF40000000210001EF50000001210001FB20000000210001F703B9000122 +000FF3A000000021000FF5A00000012100118BC00000002100118DC00000012100004AA00000002100004AB000000121 +000216300000002100021730000001210001E1C0000000210001E1D00000012100013C8000000021000AB98000000121 +00118AF00000002100118CF0000001210001E9A00000002100000612BE00012200105710000000210010598000000121 +0010CA70000000210010CE70000001210010C980000000210010CD800000012100000510000000210000071000000121 +00004F200000002100004F30000001210010CAA0000000210010CEA00000012100010AF0000000210002D0F000000121 +0002C8E0000000210002C8F0000001210002CC40000000210002CC50000001210001E0A0000000210001E0B000000121 +000FB15000000021000057456B0001220010D600000000210010D80000000121001058E00000002100105B5000000121 +001041100000002100104390000001210010423000000021001044B000000121000053A000000021000056A000000121 +0001E6C0000000210001E6D00000012100104BE00000002100104E60000001210010424000000021001044C000000121 +00010A90000000210002D0900000012100024C200000002100024DC0000001210010C810000000210010CC1000000121 +00013BC000000021000AB8C000000121000046200000003100004630000001310001C8700000023100118A6000000021 +00118C60000001210001E4A0000000210001E4B000000121000216200000002100021720000001210001ED4000000021 +0001ED500000012100010AA0000000210002D0A00000012100004EC00000002100004ED0000001210002C0C000000021 +0002C3C000000121000A79A000000021000A79B00000012100004CB00000002100004CC00000012100104BD000000021 +00104E5000000121000037000000002100003710000001210001FE700000002100003C53083421230016E50000000021 +0016E70000000121001E914000000021001E93600000012100003DA00000002100003DB0000001210001F35000000021 +0001F3D0000001210010D520000000210010D72000000121000039200000003100003B200000013100003D0000000231 +0002C960000000210002C970000001210016E510000000210016E710000001210001FA50000000310001FAD000000131 0001F653B9000232000039100000002100003B100000012100005340000000210000564000000121000041B000000021 000043B00000012100013DF000000021000ABAF0000001210002C2C0000000210002C5C0000001210000124000000021 00001250000001210010CA20000000210010CE20000001210001E8C0000000210001E8D0000001210001EB4000000021 @@ -550,67 +557,68 @@ static immutable ulong[] t = x" 000FF480000001210010C800000000210010CC000000012100010EE0000000210001CAE0000001210001F55000000021 0001F5D000000121000A77B000000021000A77C0000001210001FC700000002100003B73423B91230000059000000021 0000079000000121000014A000000021000014B0000001210001E240000000210001E2500000012100013BD000000021 -000AB8D0000001210002CBC0000000210002CBD000000121001040D0000000210010435000000121001058F000000021 -00105B600000012100118A700000002100118C7000000121000A660000000021000A6610000001210000514000000021 -0000515000000121000052E000000021000052F00000012100004A400000002100004A50000001210000400000000021 -00004500000001210016E580000000210016E78000000121000A64E000000021000A64F000000121000FF2E000000021 -000FF4E000000121001040C000000021001043400000012100000DB00000002100000FB00000012100001CD000000021 -00001CE00000012100010E80000000210001CA8000000121000054F000000021000057F000000121000A738000000021 -000A7390000001210016E5F0000000210016E7F0000001210001FA60000000310001FAE0000001310001F663B9000232 -001E90F000000021001E9310000001210002C070000000210002C3700000012100010A30000000210002D03000000121 -000A7A0000000021000A7A1000000121000042100000003100004410000001310001C83000000231000A680000000021 -000A6810000001210000282000000021000A7C50000001210001D79000000021000A77D00000012100024CB000000021 -00024E500000012100004010000000210000451000000121000A758000000021000A7590000001210000058000000021 -0000078000000121000019300000002100002600000001210010CA10000000210010CE1000000121000054E000000021 -000057E0000001210000186000000021000025400000012100013DC000000021000ABAC00000012100024BD000000021 -00024D700000012100001B300000002100001B4000000121000A696000000021000A6970000001210000216000000021 -00002170000001210001ECE0000000210001ECF000000121000216800000002100021780000001210001FC6000000021 -00003B73420001220002C120000000210002C420000001210002C2F0000000210002C5F000000121001E90E000000021 -001E9300000001210010CAB0000000210010CEB0000001210001E860000000210001E870000001210000412000000031 -00004320000001310001C8000000023100013D6000000021000ABA60000001210001EBA0000000210001EBB000000121 -001E91B000000021001E93D000000121001041A00000002100104420000001210001EEE0000000210001EEF000000121 -000FF31000000021000FF51000000121000A7BC000000021000A7BD00000012100001DB00000002100001DC000000121 -00001A600000002100002800000001210001F070000000210001F0F00000012100118BD00000002100118DD000000121 -00000C800000002100000E800000012100004D200000002100004D300000012100010E10000000210001CA1000000121 -00013B7000000021000AB87000000121001058500000002100105AC0000001210016E4B0000000210016E6B000000121 -00001720000000210000173000000121000049E000000021000049F00000012100004E600000002100004E7000000121 -00010B00000000210002D100000001210001E99000000021000007930A00012200001EE00000002100001EF000000121 -0002C9C0000000210002C9D00000012100104B400000002100104DC0000001210010C870000000210010CC7000000121 -00013BA000000021000AB8A0000001210001E100000000210001E1100000012100002300000000210000231000000121 -000042800000002100004480000001210002CD00000000210002CD100000012100118A000000002100118C0000000121 -00003E000000002100003E10000001210001FF400000002100003CE3B9000122000A780000000021000A781000000121 -00010F50000000210001CB5000000121000053B000000021000056B00000012100000D500000002100000F5000000121 -001058800000002100105AF000000121000041400000003100004340000001310001C810000002310001FA4000000031 -0001FAC0000001310001F643B9000232000012A000000021000012B00000012100000520000000210000072000000121 -00024B700000002100024D1000000121001E908000000021001E92A000000121000039800000004100003B8000000141 -00003D100000024100003F4000000341000020200000002100002030000001210001F850000000310001F8D000000131 -0001F053B90002320000470000000021000047100000012100002710000000210002C6E0000001210002C1B000000021 -0002C4B000000121000FB030000000210000066066069123000048A000000021000048B000000121000A752000000021 -000A753000000121000FF25000000021000FF450000001210000407000000021000045700000012100000C1000000021 -00000E10000001210001E440000000210001E450000001210001F970000000310001F9F0000001310001F273B9000232 -00005480000000210000578000000121000021C000000021000021D00000012100013E5000000021000ABB5000000121 -000051A000000021000051B0000001210002CB60000000210002CB7000000121000A654000000021000A655000000121 -0010403000000021001042B0000001210001E720000000210001E7300000012100010D40000000210001C94000000121 -00104C100000002100104E90000001210010C8A0000000210010CCA0000001210001E2A0000000210001E2B000000121 -000046200000003100004630000001310001C870000002310001F760000000210001FDA0000001210000053000000031 -0000073000000131000017F0000002310002C260000000210002C5600000012100013A0000000021000AB70000000121 -00003FA00000002100003FB00000012100004C500000002100004C60000001210001F920000000310001F9A000000131 -0001F223B90002320000555000000021000058500000012100013E8000000021000ABB800000012100001C7000000031 -00001C800000013100001C90000002310001F420000000210001F4A0000001210001F670000000210001F6F000000121 -001057C00000002100105A3000000121000A7B4000000021000A7B5000000121000A698000000021000A699000000121 -001E904000000021001E926000000121000040C000000021000045C00000012100010DA0000000210001C9A000000121 -0001FD600000002100003B934200012200000D000000002100000F00000001210016E460000000210016E66000000121 -0001EC20000000210001EC300000012100001E400000002100001E500000012100000440000000210000064000000121 -000017D000000021000017E0000001210001F210000000210001F29000000121000FF39000000021000FF59000000121 -00013AC000000021000AB7C000000121000058700000002100005655820001220001F000000000210001F08000000121 -00003A500000002100003C50000001210000158000000021000015900000012100104CF00000002100104F7000000121 -0001E3A0000000210001E3B000000121000A72C000000021000A72D00000012100118B700000002100118D7000000121 -000011200000002100001130000001210001E360000000210001E370000001210016E4E0000000210016E6E000000121 -0001F7D0000000210001FFB000000121000049400000002100004950000001210001E800000000210001E81000000121 -00001160000000210000117000000121000042D000000021000044D00000012100013F200000002100013FA000000121 -0000179000000021000017A00000012100004DA00000002100004DB0000001210002CA80000000210002CA9000000121 -00000CC00000002100000EC00000012100001A200000002100001A300000012100003A100000003100003C1000000131 -00003F10000002310001E7C0000000210001E7D00000012100013CF000000021000AB9F0000001210010412000000021 +000AB8D0000001210002CBC0000000210002CBD000000121001040D00000002100104350000001210010D5C000000021 +0010D7C000000121001058F00000002100105B600000012100118A700000002100118C7000000121000A660000000021 +000A66100000012100005140000000210000515000000121000052E000000021000052F00000012100004A4000000021 +00004A5000000121000040000000002100004500000001210016E580000000210016E78000000121000A64E000000021 +000A64F000000121000FF2E000000021000FF4E0000001210010D5B0000000210010D7B000000121001040C000000021 +001043400000012100000DB00000002100000FB00000012100001CD00000002100001CE00000012100010E8000000021 +0001CA8000000121000054F000000021000057F000000121000A738000000021000A7390000001210016E5F000000021 +0016E7F0000001210001FA60000000310001FAE0000001310001F663B9000232001E90F000000021001E931000000121 +0002C070000000210002C3700000012100010A30000000210002D03000000121000A7A0000000021000A7A1000000121 +000042100000003100004410000001310001C83000000231000A680000000021000A6810000001210000282000000021 +000A7C50000001210001D79000000021000A77D00000012100024CB00000002100024E50000001210000401000000021 +0000451000000121000A758000000021000A759000000121000005800000002100000780000001210000193000000021 +00002600000001210010CA10000000210010CE1000000121000054E000000021000057E0000001210000186000000021 +000025400000012100013DC000000021000ABAC00000012100024BD00000002100024D700000012100001B3000000021 +00001B4000000121000A696000000021000A697000000121000021600000002100002170000001210001ECE000000021 +0001ECF000000121000216800000002100021780000001210001FC600000002100003B73420001220002C12000000021 +0002C420000001210002C2F0000000210002C5F000000121001E90E000000021001E9300000001210010CAB000000021 +0010CEB0000001210001E860000000210001E87000000121000041200000003100004320000001310001C80000000231 +00013D6000000021000ABA60000001210001EBA0000000210001EBB000000121001E91B000000021001E93D000000121 +001041A00000002100104420000001210001EEE0000000210001EEF000000121000FF31000000021000FF51000000121 +000A7BC000000021000A7BD00000012100001DB00000002100001DC00000012100001A60000000210000280000000121 +0001F070000000210001F0F00000012100118BD00000002100118DD00000012100000C800000002100000E8000000121 +00004D200000002100004D300000012100010E10000000210001CA100000012100013B7000000021000AB87000000121 +001058500000002100105AC0000001210016E4B0000000210016E6B00000012100001720000000210000173000000121 +000049E000000021000049F00000012100004E600000002100004E700000012100010B00000000210002D10000000121 +0001E99000000021000007930A00012200001EE00000002100001EF0000001210002C9C0000000210002C9D000000121 +00104B400000002100104DC0000001210010C870000000210010CC700000012100013BA000000021000AB8A000000121 +0001E100000000210001E110000001210000230000000021000023100000012100004280000000210000448000000121 +0002CD00000000210002CD100000012100118A000000002100118C000000012100003E000000002100003E1000000121 +0001FF400000002100003CE3B9000122000A780000000021000A78100000012100010F50000000210001CB5000000121 +000053B000000021000056B00000012100000D500000002100000F5000000121001058800000002100105AF000000121 +000041400000003100004340000001310001C810000002310001FA40000000310001FAC0000001310001F643B9000232 +000012A000000021000012B0000001210000052000000021000007200000012100024B700000002100024D1000000121 +001E908000000021001E92A000000121000039800000004100003B800000014100003D100000024100003F4000000341 +000020200000002100002030000001210001F850000000310001F8D0000001310001F053B90002320000470000000021 +000047100000012100002710000000210002C6E0000001210002C1B0000000210002C4B000000121000FB03000000021 +0000066066069123000048A000000021000048B000000121000A752000000021000A753000000121000FF25000000021 +000FF450000001210000407000000021000045700000012100000C100000002100000E10000001210001E44000000021 +0001E450000001210001F970000000310001F9F0000001310001F273B900023200005480000000210000578000000121 +000021C000000021000021D00000012100013E5000000021000ABB5000000121000051A000000021000051B000000121 +0002CB60000000210002CB7000000121000A654000000021000A6550000001210010403000000021001042B000000121 +0001E720000000210001E7300000012100010D40000000210001C9400000012100104C100000002100104E9000000121 +0010C8A0000000210010CCA0000001210001E2A0000000210001E2B00000012100004620000000310000463000000131 +0001C870000002310001F760000000210001FDA00000012100000530000000310000073000000131000017F000000231 +0002C260000000210002C5600000012100013A0000000021000AB7000000012100003FA00000002100003FB000000121 +00004C500000002100004C60000001210001F920000000310001F9A0000001310001F223B90002320000555000000021 +000058500000012100013E8000000021000ABB800000012100001C700000003100001C800000013100001C9000000231 +0001F420000000210001F4A0000001210001F670000000210001F6F000000121001057C00000002100105A3000000121 +000A7B4000000021000A7B5000000121000A698000000021000A699000000121001E904000000021001E926000000121 +000040C000000021000045C00000012100010DA0000000210001C9A0000001210001FD600000002100003B9342000122 +00000D000000002100000F00000001210016E460000000210016E660000001210001EC20000000210001EC3000000121 +00001E400000002100001E500000012100000440000000210000064000000121000017D000000021000017E000000121 +0001F210000000210001F29000000121000FF39000000021000FF5900000012100013AC000000021000AB7C000000121 +000058700000002100005655820001220001F000000000210001F0800000012100003A500000002100003C5000000121 +0000158000000021000015900000012100104CF00000002100104F70000001210001E3A0000000210001E3B000000121 +000A72C000000021000A72D0000001210010D630000000210010D8300000012100001120000000210000113000000121 +0001E360000000210001E370000001210016E4E0000000210016E6E0000001210001F7D0000000210001FFB000000121 +000049400000002100004950000001210001E800000000210001E8100000012100001160000000210000117000000121 +000042D000000021000044D00000012100013F200000002100013FA0000001210000179000000021000017A000000121 +00004DA00000002100004DB0000001210002CA80000000210002CA900000012100000CC00000002100000EC000000121 +00001A200000002100001A300000012100003A100000003100003C100000013100003F10000002310001E7C000000021 +0001E7D00000012100118B700000002100118D700000012100013CF000000021000AB9F0000001210010412000000021 001043A000000121000052000000002100005210000001210002C1C0000000210002C4C000000121000026B000000021 0002C62000000121000FB140000000210000574565000122000015C000000021000015D000000121000A652000000021 000A653000000121000FF26000000021000FF4600000012100001E800000002100001E900000012100010B6000000021 @@ -625,39 +633,40 @@ static immutable ulong[] t = x" 0001FF700000002100003C93423B912300004E200000002100004E30000001210001F900000000310001F98000000131 0001F203B900023200004DE00000002100004DF0000001210001F940000000310001F9C0000001310001F243B9000232 00005410000000210000571000000121000054500000002100005750000001210001F250000000210001F2D000000121 -000015400000002100001550000001210002C240000000210002C5400000012100013EA000000021000ABBA000000121 +000015400000002100001550000001210002C240000000210002C540000001210000264000000021000A7CB000000121 0000181000000021000025300000012100003A300000003100003C200000013100003C300000023100118B3000000021 00118D300000012100010BA0000000210002D1A000000121000018000000002100002430000001210001E3E000000021 0001E3F00000012100010FF0000000210001CBF0000001210001FF30000000310001FFC00000013100003C93B9000232 00010D20000000210001C92000000121000A76E000000021000A76F0000001210010C880000000210010CC8000000121 0001C88000000031000A64A000000131000A64B00000023100010B20000000210002D1200000012100013C7000000021 000AB9700000012100005180000000210000519000000121000A766000000021000A76700000012100001EC000000021 -00001ED00000012100104C300000002100104EB0000001210010574000000021001059B00000012100013EE000000021 -000ABBE000000121001E91C000000021001E93E00000012100010E20000000210001CA20000001210002C05000000021 -0002C3500000012100004A000000002100004A10000001210001E420000000210001E4300000012100013B4000000021 -000AB8400000012100118BF00000002100118DF000000121000015000000002100001510000001210001F56000000021 -00003C53133421230002CB00000000210002CB100000012100013A4000000021000AB7400000012100004C1000000021 -00004C200000012100001CA00000003100001CB00000013100001CC000000231000004C000000021000006C000000121 -00104C700000002100104EF0000001210016E5A0000000210016E7A00000012100002220000000210000223000000121 -000049000000002100004910000001210002CF20000000210002CF3000000121001059500000002100105BC000000121 -000053D000000021000056D000000121000038800000002100003AD00000012100005490000000210000579000000121 -00013E2000000021000ABB20000001210016E4A0000000210016E6A0000001210001EFC0000000210001EFD000000121 -0001F900000000310001F980000001310001F203B900023200004D600000002100004D7000000121000A7B8000000021 -000A7B9000000121000041400000003100004340000001310001C810000002310010CAD0000000210010CED000000121 -00010F70000000210001CB70000001210016E550000000210016E75000000121000A728000000021000A729000000121 -0001E000000000210001E010000001210000232000000021000023300000012100010A50000000210002D05000000121 -0001F150000000210001F1D00000012100003A900000003100003C90000001310002126000000231000013B000000021 -000013C0000001210000408000000021000045800000012100000DC00000002100000FC0000001210001EBE000000021 -0001EBF0000001210002C180000000210002C48000000121000A7A8000000021000A7A9000000121000216B000000021 -000217B0000001210002C100000000210002C400000001210002CDE0000000210002CDF000000121000029E000000021 -000A7B000000012100000D400000002100000F400000012100010EF0000000210001CAF0000001210000551000000021 -000058100000012100013DA000000021000ABAA000000121000053500000002100005650000001210001FA0000000031 -0001FA80000001310001F603B900023200024C600000002100024E000000012100004100000000210000430000000121 -0001EB60000000210001EB70000001210001F840000000310001F8C0000001310001F043B90002320010416000000021 -001043E0000001210016E420000000210016E62000000121000016400000002100001650000001210002CA0000000021 -0002CA10000001210001E2E0000000210001E2F0000001210010C950000000210010CD50000001210000498000000021 -0000499000000121000010A000000021000010B0000001210010C9D0000000210010CDD00000012100118AA000000021 -00118CA0000001210001E880000000210001E890000001210000528000000021000052900000012100013D7000000021 +00001ED00000012100104C300000002100104EB00000012100013EA000000021000ABBA0000001210010574000000021 +001059B00000012100013EE000000021000ABBE000000121001E91C000000021001E93E00000012100010E2000000021 +0001CA20000001210002C050000000210002C3500000012100004A000000002100004A10000001210001E42000000021 +0001E4300000012100013B4000000021000AB8400000012100118BF00000002100118DF0000001210000150000000021 +00001510000001210001F5600000002100003C53133421230002CB00000000210002CB100000012100013A4000000021 +000AB7400000012100004C100000002100004C200000012100001CA00000003100001CB00000013100001CC000000231 +000004C000000021000006C00000012100104C700000002100104EF0000001210016E5A0000000210016E7A000000121 +00002220000000210000223000000121000049000000002100004910000001210002CF20000000210002CF3000000121 +001059500000002100105BC000000121000053D000000021000056D000000121000038800000002100003AD000000121 +0000549000000021000057900000012100013E2000000021000ABB20000001210016E4A0000000210016E6A000000121 +0001EFC0000000210001EFD0000001210001F900000000310001F980000001310001F203B900023200004D6000000021 +00004D7000000121000A7B8000000021000A7B9000000121000041400000003100004340000001310001C81000000231 +0010CAD0000000210010CED00000012100010F70000000210001CB70000001210016E550000000210016E75000000121 +000A728000000021000A7290000001210001E000000000210001E0100000012100002320000000210000233000000121 +00010A50000000210002D050000001210001F150000000210001F1D00000012100003A900000003100003C9000000131 +0002126000000231000013B000000021000013C0000001210000408000000021000045800000012100000DC000000021 +00000FC0000001210001EBE0000000210001EBF0000001210002C180000000210002C48000000121000A7A8000000021 +000A7A9000000121000216B000000021000217B0000001210002C100000000210002C400000001210002CDE000000021 +0002CDF000000121000029E000000021000A7B000000012100000D400000002100000F400000012100010EF000000021 +0001CAF0000001210000551000000021000058100000012100013DA000000021000ABAA0000001210000535000000021 +00005650000001210001FA00000000310001FA80000001310001F603B900023200024C600000002100024E0000000121 +000041000000002100004300000001210001EB60000000210001EB70000001210001F840000000310001F8C000000131 +0001F043B90002320010416000000021001043E0000001210016E420000000210016E620000001210010D5E000000021 +0010D7E000000121000016400000002100001650000001210002CA00000000210002CA10000001210001E2E000000021 +0001E2F0000001210010C950000000210010CD500000012100004980000000210000499000000121000010A000000021 +000010B0000001210010C9D0000000210010CDD0000001210010D530000000210010D730000001210001E88000000021 +0001E890000001210000528000000021000052900000012100118AA00000002100118CA00000012100013D7000000021 000ABA7000000121000A65A000000021000A65B000000121000022A000000021000022B0000001210001FA5000000031 0001FAD0000001310001F653B900023200104B300000002100104DB000000121001E90C000000021001E92E000000121 00024BB00000002100024D500000012100001F400000002100001F5000000121000A690000000021000A691000000121 @@ -695,48 +704,50 @@ static immutable ulong[] t = x" 0001F253B90002320000345000000041000039900000014100003B90000002410001FBE000000341000018A000000021 000025700000012100003900000000310001FD300000013100003B930830123300010B10000000210002D11000000121 000011E000000021000011F0000001210001E080000000210001E090000001210002C900000000210002C91000000121 -000A7C0000000021000A7C100000012100013E7000000021000ABB7000000121001058000000002100105A7000000121 +000A7C0000000021000A7C10000001210001C890000000210001C8A000000121001058000000002100105A7000000121 000041C000000021000043C000000121000FB05000000031000FB060000001310000073074000232000A7A4000000021 -000A7A50000001210001E740000000210001E750000001210002C140000000210002C44000000121001E90D000000021 -001E92F00000012100013A5000000021000AB7500000012100010F30000000210001CB300000012100024BA000000021 -00024D4000000121000013F0000000210000140000000121000039D00000002100003BD0000001210002CE2000000021 -0002CE300000012100010A10000000210002D0100000012100005080000000210000509000000121000004D000000021 -000006D000000121000038900000002100003AE000000121000048C000000021000048D0000001210002C04000000021 -0002C34000000121000216F000000021000217F00000012100004B000000002100004B10000001210002CD2000000021 -0002CD3000000121000A734000000021000A735000000121000FB0100000002100000660690001220000050000000021 -000007000000012100001600000000210000161000000121001058400000002100105AB0000001210001E32000000021 -0001E330000001210010CA90000000210010CE90000001210000200000000021000020100000012100118AB000000021 -00118CB000000121000A786000000021000A78700000012100118BB00000002100118DB00000012100118AE000000021 -00118CE000000121000021E000000021000021F00000012100003AA00000002100003CA00000012100010C2000000021 -0002D2200000012100013C4000000021000AB9400000012100005390000000210000569000000121000A74A000000021 -000A74B00000012100000C300000002100000E3000000121000046E000000021000046F000000121000054D000000021 -000057D0000001210001FE200000002100003C530830012300010E30000000210001CA30000001210001F52000000021 -00003C531330012300003DE00000002100003DF00000012100024CA00000002100024E40000001210000345000000041 -000039900000014100003B90000002410001FBE0000003410010C990000000210010CD9000000121000A75A000000021 -000A75B000000121000041900000002100004390000001210002C090000000210002C39000000121000037D000000021 -00003FF0000001210001F260000000210001F2E00000012100118B200000002100118D20000001210002183000000021 -00021840000001210002C230000000210002C53000000121000013200000002100001330000001210001E56000000021 -0001E5700000012100010AE0000000210002D0E000000121000A740000000021000A74100000012100000DD000000021 -00000FD00000012100010E60000000210001CA60000001210001E600000000310001E610000001310001E9B000000231 -00004780000000210000479000000121000022E000000021000022F0000001210001FF600000002100003C9342000122 -0001FD200000002100003B9308300123000A694000000021000A695000000121000052C000000021000052D000000121 -00105700000000210010597000000121000A666000000021000A66700000012100001F0000000021000006A30C000122 -0010C960000000210010CD6000000121000020A000000021000020B00000012100024BF00000002100024D9000000121 +000A7A50000001210001E740000000210001E750000001210002C140000000210002C4400000012100013E7000000021 +000ABB7000000121001E90D000000021001E92F00000012100013A5000000021000AB7500000012100010F3000000021 +0001CB300000012100024BA00000002100024D4000000121000013F0000000210000140000000121000039D000000021 +00003BD0000001210002CE20000000210002CE300000012100010A10000000210002D010000001210000508000000021 +0000509000000121000004D000000021000006D000000121000038900000002100003AE000000121000048C000000021 +000048D0000001210002C040000000210002C34000000121000216F000000021000217F00000012100004B0000000021 +00004B10000001210002CD20000000210002CD3000000121000A734000000021000A735000000121000FB01000000021 +000006606900012200000500000000210000070000000121000016000000002100001610000001210010584000000021 +00105AB0000001210001E320000000210001E330000001210010CA90000000210010CE90000001210000200000000021 +000020100000012100118AB00000002100118CB000000121000A786000000021000A78700000012100118BB000000021 +00118DB00000012100118AE00000002100118CE000000121000021E000000021000021F00000012100003AA000000021 +00003CA00000012100010C20000000210002D2200000012100013C4000000021000AB940000001210000539000000021 +0000569000000121000A74A000000021000A74B00000012100000C300000002100000E3000000121000046E000000021 +000046F000000121000054D000000021000057D0000001210001FE200000002100003C530830012300010E3000000021 +0001CA30000001210001F5200000002100003C531330012300003DE00000002100003DF00000012100024CA000000021 +00024E40000001210000345000000041000039900000014100003B90000002410001FBE000000341000A7DA000000021 +000A7DB000000121000A75A000000021000A75B000000121000041900000002100004390000001210002C09000000021 +0002C39000000121000037D00000002100003FF0000001210001F260000000210001F2E0000001210010C99000000021 +0010CD9000000121000218300000002100021840000001210002C230000000210002C530000001210000132000000021 +00001330000001210001E560000000210001E5700000012100010AE0000000210002D0E000000121000A740000000021 +000A74100000012100000DD00000002100000FD00000012100010E60000000210001CA60000001210001E60000000031 +0001E610000001310001E9B00000023100004780000000210000479000000121000022E000000021000022F000000121 +0001FF600000002100003C93420001220001FD200000002100003B9308300123000A694000000021000A695000000121 +000052C000000021000052D00000012100105700000000210010597000000121000A666000000021000A667000000121 +00001F0000000021000006A30C0001220010C960000000210010CD600000012100118B200000002100118D2000000121 +0010D640000000210010D84000000121000020A000000021000020B00000012100024BF00000002100024D9000000121 00013CB000000021000AB9B0000001210010C9C0000000210010CDC000000121000041E000000031000043E000000131 0001C820000002310001E840000000210001E850000001210001EF00000000210001EF100000012100013A8000000021 -000AB780000001210016E590000000210016E790000001210002CA40000000210002CA5000000121000A724000000021 -000A725000000121000049C000000021000049D000000121000010E000000021000010F0000001210001FA4000000031 -0001FAC0000001310001F643B900023200104D300000002100104FB000000121001E903000000021001E925000000121 -000019100000002100001920000001210001F800000000310001F880000001310001F003B900023200013DE000000021 -000ABAE00000012100003A000000003100003C000000013100003D600000023100013AD000000021000AB7D000000121 -000020600000002100002070000001210001F450000000210001F4D00000012100003EA00000002100003EB000000121 -00010BB0000000210002D1B00000012100004740000000210000475000000121000FF38000000021000FF58000000121 -00004FE00000002100004FF0000001210002C840000000210002C850000001210010413000000021001043B000000121 -0001FD700000002100003B93083421230001E5C0000000210001E5D0000001210001EE40000000210001EE5000000121 -0002CC80000000210002CC90000001210002C1F0000000210002C4F00000012100004BA00000002100004BB000000121 -00104CE00000002100104F6000000121001E905000000021001E92700000012100000D100000002100000F1000000121 -0000472000000021000047300000012100118B600000002100118D60000001210001F780000000210001FF8000000121 -000004300000002100000630000001210001EA20000000210001EA30000001210001F240000000210001F2C000000121 +000AB780000001210010D5A0000000210010D7A0000001210010D570000000210010D770000001210002CA4000000021 +0002CA5000000121000A724000000021000A725000000121000049C000000021000049D000000121000010E000000021 +000010F0000001210016E590000000210016E790000001210001FA40000000310001FAC0000001310001F643B9000232 +00104D300000002100104FB000000121001E903000000021001E92500000012100001910000000210000192000000121 +0001F800000000310001F880000001310001F003B900023200013DE000000021000ABAE00000012100003A0000000031 +00003C000000013100003D600000023100013AD000000021000AB7D00000012100002060000000210000207000000121 +0001F450000000210001F4D00000012100003EA00000002100003EB00000012100010BB0000000210002D1B000000121 +00004740000000210000475000000121000FF38000000021000FF5800000012100004FE00000002100004FF000000121 +0002C840000000210002C850000001210010413000000021001043B0000001210001FD700000002100003B9308342123 +0001E5C0000000210001E5D0000001210001EE40000000210001EE50000001210002CC80000000210002CC9000000121 +0002C1F0000000210002C4F00000012100004BA00000002100004BB00000012100104CE00000002100104F6000000121 +0010D620000000210010D8200000012100000D100000002100000F100000012100004720000000210000473000000121 +00118B600000002100118D60000001210001F780000000210001FF800000012100000430000000210000063000000121 +0001EA20000000210001EA3000000121001E905000000021001E9270000001210001F240000000210001F2C000000121 000019D000000021000027200000012100004B600000002100004B700000012100000DF0000000310001E9E000000131 00000730730002320001F870000000310001F8F0000001310001F073B90002320001E140000000210001E15000000121 0001EE60000000210001EE7000000121000040B000000021000045B00000012100004090000000210000459000000121 @@ -767,18 +778,19 @@ static immutable ulong[] t = x" 0001E0C0000000210001E0D0000001210002C170000000210002C4700000012100003E200000002100003E3000000121 000026C000000021000A7AD000000121000A756000000021000A75700000012100004050000000210000455000000121 000019700000002100002680000001210001F600000000210001F680000001210001EEC0000000210001EED000000121 -0002C8C0000000210002C8D00000012100010F20000000210001CB200000012100104B600000002100104DE000000121 -001E91D000000021001E93F000000121001040A000000021001043200000012100013C6000000021000AB96000000121 -0016E410000000210016E610000001210000424000000021000044400000012100001A90000000210000283000000121 -000039A00000003100003BA00000013100003F000000023100010E50000000210001CA500000012100104C8000000021 -00104F00000001210010407000000021001042F00000012100013D0000000021000ABA00000001210001FA2000000031 -0001FAA0000001310001F623B9000232000046C000000021000046D00000012100010A00000000210002D00000000121 -000A782000000021000A78300000012100000C500000003100000E5000000131000212B00000023100004B4000000021 -00004B50000001210002CCE0000000210002CCF0000001210001FF20000000210001F7C3B9000122000FF21000000021 -000FF41000000121000A73A000000021000A73B00000012100104B900000002100104E10000001210001EA4000000021 -0001EA5000000121000038F00000002100003CE00000012100024BE00000002100024D800000012100003B0000000031 -0001FE300000013100003C530830123300000490000000210000069000000121001E91F000000021001E941000000121 -000024600000002100002470000001210001F730000000210001FC90000001210002C670000000210002C68000000121 +0002C8C0000000210002C8D00000012100010F20000000210001CB2000000121000A7CC000000021000A7CD000000121 +0010D590000000210010D79000000121001040A000000021001043200000012100013C6000000021000AB96000000121 +001E91D000000021001E93F00000012100104B600000002100104DE00000012100004240000000210000444000000121 +00001A90000000210000283000000121000039A00000003100003BA00000013100003F000000023100010E5000000021 +0001CA500000012100104C800000002100104F00000001210010407000000021001042F00000012100013D0000000021 +000ABA00000001210001FA20000000310001FAA0000001310001F623B9000232000046C000000021000046D000000121 +00010A00000000210002D00000000121000A782000000021000A78300000012100000C500000003100000E5000000131 +000212B00000023100004B400000002100004B50000001210002CCE0000000210002CCF0000001210001FF2000000021 +0001F7C3B9000122000FF21000000021000FF41000000121000A73A000000021000A73B00000012100104B9000000021 +00104E10000001210010D560000000210010D760000001210001EA40000000210001EA5000000121000038F000000021 +00003CE00000012100024BE00000002100024D800000012100003B00000000310001FE300000013100003C5308301233 +000004900000002100000690000001210016E410000000210016E6100000012100002460000000210000247000000121 +001E91F000000021001E9410000001210001F730000000210001FC90000001210002C670000000210002C68000000121 000216600000002100021760000001210000100000000021000010100000012100003E400000002100003E5000000121 00013D2000000021000ABA2000000121000A79E000000021000A79F0000001210001FA00000000310001FA8000000131 0001F603B90002320010CB10000000210010CF10000001210016E5D0000000210016E7D00000012100010C1000000021 @@ -799,38 +811,39 @@ static immutable ulong[] t = x" 0001F310000000210001F390000001210002CBA0000000210002CBB00000012100005520000000210000582000000121 0001FC30000000310001FCC00000013100003B73B90002320001E6E0000000210001E6F0000001210002167000000021 000217700000012100000DE00000002100000FE0000001210000190000000021000025B000000121000A68C000000021 -000A68D0000001210001EF80000000210001EF900000012100104B000000002100104D80000001210010C8E000000021 -0010CCE0000001210002C080000000210002C38000000121000016E000000021000016F0000001210016E5C000000021 -0016E7C00000012100010CD0000000210002D2D0000001210001F7B0000000210001FEB0000001210001E90000000021 -0001E9100000012100013B3000000021000AB8300000012100001D100000002100001D20000001210001F53000000021 -0001F5B000000121000012600000002100001270000001210001E480000000210001E490000001210002C98000000021 -0002C99000000121001040000000002100104280000001210001FA30000000310001FAB0000001310001F633B9000232 -00118B900000002100118D900000012100013B0000000021000AB800000001210001ED80000000210001ED9000000121 -0010CA40000000210010CE40000001210001F740000000210001FCA00000012100004220000000410000442000000141 -0001C840000002410001C850000003410001EF20000000210001EF300000012100021610000000210002171000000121 -0010420000000021001044800000012100001F100000003100001F200000013100001F300000023100001D7000000021 -00001D8000000121000A68A000000021000A68B00000012100003F700000002100003F8000000121000FF35000000021 -000FF5500000012100003DC00000002100003DD0000001210010C8D0000000210010CCD0000001210000418000000021 -00004380000001210000212000000021000021300000012100004F000000002100004F100000012100024C1000000021 -00024DB000000121000050A000000021000050B000000121001E917000000021001E939000000121000A644000000021 -000A6450000001210000537000000021000056700000012100010AC0000000210002D0C00000012100010AD000000021 -0002D0D00000012100024C700000002100024E1000000121000046000000002100004610000001210002C2B000000021 -0002C5B0000001210016E560000000210016E7600000012100010C70000000210002D27000000121000FB05000000031 -000FB0600000013100000730740002320002CD40000000210002CD500000012100010F10000000210001CB1000000121 -0001F7A0000000210001FEA0000001210002C0B0000000210002C3B000000121000FF34000000021000FF54000000121 -0010406000000021001042E0000001210000417000000021000043700000012100118BA00000002100118DA000000121 -0001F820000000310001F8A0000001310001F023B900023200001F100000003100001F200000013100001F3000000231 -000039500000003100003B500000013100003F500000023100001B70000000210000292000000121000018F000000021 -000025900000012100005380000000210000568000000121000A66A000000021000A66B0000001210001F32000000021 -0001F3A00000012100104210000000210010449000000121000052A000000021000052B0000001210000425000000021 -0000445000000121000A784000000021000A785000000121000004F000000021000006F000000121000A664000000021 -000A6650000001210001FA20000000310001FAA0000001310001F623B900023200104B100000002100104D9000000121 -00000C400000002100000E40000001210010CA50000000210010CE50000001210001EAA0000000210001EAB000000121 -00013D8000000021000ABA800000012100000DF0000000310001E9E000000131000007307300023200010E4000000021 -0001CA400000012100000D800000002100000F800000012100001CA00000003100001CB00000013100001CC000000231 -00010D10000000210001C910000001210010575000000021001059C000000121000216C000000021000217C000000121 -0002C020000000210002C320000001210016E5B0000000210016E7B000000121000A7D8000000021000A7D9000000121 -000FF22000000021000FF420000001210000404000000021000045400000012100010B30000000210002D13000000121 +000A68D0000001210001EF80000000210001EF90000001210010D5F0000000210010D7F00000012100104B0000000021 +00104D80000001210010C8E0000000210010CCE0000001210002C080000000210002C38000000121000016E000000021 +000016F0000001210016E5C0000000210016E7C00000012100010CD0000000210002D2D0000001210001F7B000000021 +0001FEB0000001210001E900000000210001E9100000012100013B3000000021000AB8300000012100001D1000000021 +00001D20000001210001F530000000210001F5B000000121000012600000002100001270000001210001E48000000021 +0001E490000001210002C980000000210002C99000000121001040000000002100104280000001210001FA3000000031 +0001FAB0000001310001F633B900023200118B900000002100118D900000012100013B0000000021000AB80000000121 +0001ED80000000210001ED90000001210010CA40000000210010CE40000001210001F740000000210001FCA000000121 +000042200000004100004420000001410001C840000002410001C850000003410001EF20000000210001EF3000000121 +000216100000002100021710000001210010420000000021001044800000012100001F100000003100001F2000000131 +00001F300000023100001D700000002100001D8000000121000A68A000000021000A68B00000012100003F7000000021 +00003F8000000121000FF35000000021000FF5500000012100003DC00000002100003DD0000001210010C8D000000021 +0010CCD000000121000041800000002100004380000001210000212000000021000021300000012100004F0000000021 +00004F100000012100024C100000002100024DB000000121000050A000000021000050B000000121001E917000000021 +001E939000000121000A644000000021000A6450000001210000537000000021000056700000012100010AC000000021 +0002D0C00000012100010AD0000000210002D0D00000012100024C700000002100024E10000001210000460000000021 +00004610000001210002C2B0000000210002C5B0000001210016E560000000210016E7600000012100010C7000000021 +0002D27000000121000FB05000000031000FB0600000013100000730740002320002CD40000000210002CD5000000121 +00010F10000000210001CB10000001210001F7A0000000210001FEA0000001210002C0B0000000210002C3B000000121 +000FF34000000021000FF540000001210010406000000021001042E00000012100004170000000210000437000000121 +00118BA00000002100118DA0000001210001F820000000310001F8A0000001310001F023B900023200001F1000000031 +00001F200000013100001F3000000231000039500000003100003B500000013100003F500000023100001B7000000021 +0000292000000121000018F000000021000025900000012100005380000000210000568000000121000A66A000000021 +000A66B0000001210001F320000000210001F3A00000012100104210000000210010449000000121000052A000000021 +000052B00000012100004250000000210000445000000121000A784000000021000A785000000121000004F000000021 +000006F000000121000A664000000021000A6650000001210001FA20000000310001FAA0000001310001F623B9000232 +00104B100000002100104D900000012100000C400000002100000E40000001210010CA50000000210010CE5000000121 +0001EAA0000000210001EAB00000012100013D8000000021000ABA80000001210010D550000000210010D75000000121 +00000DF0000000310001E9E000000131000007307300023200010E40000000210001CA400000012100000D8000000021 +00000F800000012100001CA00000003100001CB00000013100001CC00000023100010D10000000210001C91000000121 +0010575000000021001059C000000121000216C000000021000217C0000001210002C020000000210002C32000000121 +0010D580000000210010D78000000121000A7D8000000021000A7D9000000121000FF22000000021000FF42000000121 +0016E5B0000000210016E7B0000001210000404000000021000045400000012100010B30000000210002D13000000121 0001ECA0000000210001ECB00000012100104090000000210010431000000121001E918000000021001E93A000000121 00004F600000002100004F70000001210002CC00000000210002CC10000001210001E200000000210001E21000000121 000FB00000000021000006606600012200104B700000002100104DF000000121000039B00000002100003BB000000121 @@ -871,21 +884,22 @@ private alias _U = immutable(UnicodeProperty); @property static _U[] tab() pure { return _tab; } static immutable: private alias _T = ubyte[]; -_T ID_Start = x"411A061A2F010A0104010517011F0181CA040C0E05070101018081050102020401010601010301010114015301808B0880A6012602010629471B04042D2B2302016301010F0207020A0302011001011E1D590B0118210902040105160401090103011719070B05180106112A3A3603011201070A0F10040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001020C073A020101010501180101010A0102090102050101150420013F0801241B05732B140110060404030103020703040D0C01112601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07120D130E120E0D01030F342301040143590729010105460A1F311E02050B2C041A3617093552015D2F1108361E0D020A2C1A2429030A240209072B020329040106010203010580C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A01010206060101010101011002040505040111298A7780E5060403020C26010105010238070110170907010701070107010701070107010782260319090705020504560405015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F101F025027090267024005020101010518100103010401171D340E323E06030101020B1C0A17191D072F1C011005010A0A05012917030108141703010332010103020205020101011803020B07030C060206020609070107012B010E06731DA02BA40C170431A02104816E026A26070C050501010A010D0105010101020102016C21816B12400236280C7405018087241A061A0B590306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E05260A1E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4937330D330D24815C2A06024E1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C05809E35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C74401F0802010208010201180F0101015E080227100101011C010A28070115010B2E1301124981070901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A666F1180C48A4C610F843011068FB98247A021B98239071F114F111E123010041F15051382B04080804B0501420D400201011C97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A97665501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060681053E80922D0A07100181411E122C81E41C82F40701040102010F0180C53B44070184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T ID_Start = x"411A061A2F010A0104010517011F0181CA040C0E05070101018081050102020401010601010301010114015301808B0880A6012602010629471B04042D2B2302016301010F0207020A0302011001011E1D590B0118210902040105160401090103011719070B05180106112A3A3603011201070A0F10040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001020C073A020101010501180101010A0102090102050101150420013F0801241B05732B140110060404030103020703040D0C01112601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07120D130E120E0D01030F342301040143590729010105460A1F311E02050B2C041A3617093552015D2F1108361E0D020A2C1A2429030A24020B052B020329040106010203010580C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A01010206060101010101011002040505040111298A7780E5060403020C26010105010238070110170907010701070107010701070107010782260319090705020504560405015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F101F025027090267024302020101010815100103010401171D340E323E06030101020B1C0A17191D072F1C011005010A0A05012917030108141703010332010103020205020101011803020B07030C060206020609070107012B010E06731DA02BA40C170431A02104816E026A26070C050501010A010D0105010101020102016C21816B12400236280C7405018087241A061A0B590306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E05260A1E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010203340C813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4937330D330D24261C091780FA2A060210033B1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C051E0A0101020101260101190101012C35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C74401F0802010208010201180F0101015E080227100101011C010A28070115010B2E1301124980C7211F0901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A666F1180C48A4C610F84301106198F9B0582479AB91E86E28239071F114F111E123010041F15051381B02D80D34080804B0501420D400201011C97F80884D6290AA022E704010701020181230F011D0302010E0408818C89046B050D0309070A97665501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060681053E80922D0A07100181411E122C81E41C80E41E020181EF0701040102010F0180C53B44070184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; _T Cs = x"A0D8008800"; _T Default_Ignorable_Code_Point = x"80AD0182A10182CC018B4202865302550587FB051A05311090F401A0CC9B1080EF0180A0014F09A0BCA70494CF08AC2E859000"; -_T Pd = x"2D01855C0133018E41018405018809068E010102011F0204011C0181BE0113016F01A0CD900225010A0180A9018F9F01"; +_T Pd = x"2D01855C0133018E41018405018809068E010102011F0204011C0181BE0113016F01A0CD900225010A0180A9018E6001813E01"; _T Unified_Ideograph = x"A0340099C040A05200A05A0E02010101020A01010101020203A105D6A0A6E020903A0680DE0296820E9D310F826E91A2934B059060"; _T IDS_Binary_Operator = x"A02FF002020A81F101"; -_T Sm = x"2B0110033D0101012D01040125011F0182FE01820F039A3B010D0127030D03808B01270506014405050204010201020107011F02020101011F810C20025A011E19280681D501090136086F01815005021F0A1081008083163F042002810230150206A0CFDC01833801010380A40110033D0101018083010604A0D6D40119011F0119011F0119011F0119011F011901972C02"; +_T Sm = x"2B0110033D0101012D01040125011F0182FE01820F039A3B010D0127030D03808B01270506014405050204010201020107011F02020101011F810C20025A011E19280681D501090136086F01815005021F0A1081008083163F042002810230150206A0CFDC01833801010380A40110033D01010180830106048DA102A0C9310119011F0119011F0119011F0119011F011901972C02"; _T Pi = x"80AB019F6C010202020119018DC8010101040102010F010301"; -_T Other_Grapheme_Extend = x"89BE01180181660118016601180180EA0112026701180177010F018D550184D601902102A0CF6E02939E0118018158010C0180F101838001A0B834010805AC2EAD60"; -_T Grapheme_Extend = x"83007081130781072D0101010201020101480B30151001650702060202010423011E1B5B0B3A09090118040109010301052B033C082A180120370101010408040103070A021D013A0101010204080109010A021A010202390104020402020303011E0203010B0239010405010204011402160601013A0101020104080107030A021E013B0101010C01090128010301370101030503010407020B021D013A01020102010301050207020B021C02390201010204080109010A021D0148010401020301010801510102070C08620102090B0749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F0182BF0383B2031D021E021E02400201070801020B09012D03010175022201760304020901060380DB0202013A010107010101010208060A0201301F310430070101050128090C0220040202010338010102030101033A080202809803010D010704010601030280C640820C0180C3218BFE03808D016020822A066902A075D404010A2002500281100103010401190205018097021A120D012608190B2E0330010204020227014306020202020C0108012F01330101030202050201012A02080180EE0102010401A04F300182E1101010816E02825D0180E201809505868603010205042803040180A502823D048183025003460B31047B01360F290102020A033104020207013D03240501083E010C0234090A0402015F030201010206010201809D010308150239020101010116010E07030580C30802030101170151010206010102010102010280EB010204060201021B025508020101026A01010102060101650302040105810309010280F5010A020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B0234050501010194FD01060FA0369A053B078418013F045101A04CB80292612E0217821E0101030405080802071E0480940387BB37043208010E011605010F8550070111020701020105640180A0078177013D0481FC0483E0076D07AC16D560808080F0"; +_T Other_Grapheme_Extend = x"89BE01180181660118016601180180E80101010402010209026701180177010F018935011E0184000105010101050265014702841801902102A07923016C01A055DD0292200174018108010E0109016001090102010103050180E0010C0180F1018106018279010C01860301A050AE02A06173020606AC2EAD60"; +_T Grapheme_Extend = x"83007081130781072D0101010201020101480B30151001650702060202010423011E1B5B0B3A09090118040109010301052B033B092A180120370101010408040103070A021D013A0101010204080109010A021A010202390104020402020303011E0203010B0239010405010204011402160601013A0101020104080107030A021E013B0101010C01090128010301370101030503010407020B021D013A01020201010303010407020B021C02390201010204080109010A021D0148010401020301010801510102070C08620102090B0749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F0182BF0383B2041C031D021E02400201070801020B09012D03010175022201760304020901060380DB0202013A010107010101010208060A0201301F3104300A040326090C0220040206380101020301010538080202809803010D010704010601030280C640820C0180C3218BFE03808D016020822A066902A075D404010A2002500281100103010401190205018097021A120D012608190B01012C03300102040202020124014306020202020C0108012F01330101030202050201012A02080180EE0102010401A04F300182E1101010816E02825D0180E201809505868603010205042803040180A502823D044105813D024F04460B31047B01360F290102020A033104020207013D03240501083E010C0234090101080402015F03020406010201809D01030815023902010101010C0109010E07030543010206010102010103040301010E02550802030101170151010206010102010102010280EB010204060201021B025508020101026A01010102086501010102040105810309010280F5010A04040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B0234050503170194E501060FA02CC80C030389C0053B078418013F0451010B02A04CAB0292612E0217821E050306080802071E0480940387BB37043208010E011605010F8550070111020701020105640180A0078177013D0481FC0480FE0282E0076D07AC16D560808080F0"; _T Other_ID_Start = x"98850288910115018F6C02"; _T Pattern_Syntax = x"210F0A071A0401011A042207010101020101010204010401030117011F019F1818080F0213010A813182D080A082761E846C8200808081810304190F01A0CD0D02810502"; -_T Lu = x"411A6517010721010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102030107010201020102010101010101010101010101010101020101010101010101010101010101010101020102010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010181210101010301080106010103010101020111010923010203030101010101010101010101010101010101010101010101050102010102023330010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102268B49260101050182D256889A2B0203814001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101090808060A08080808060B01010101010101080848040C040C040C050B0481060104010303020302010305060101010101010402040A0205013D018A7C303001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080101010401A0794D0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011301010101010101010101010101010101010101010101010101010180870101010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A0101010102010101010101010104010101020101010301010101010101010101010101010101010101010501050101010101010101010101010101010401010601050101011C01A0572B1A84C528808824809C0B010F0107010286EA338BED20A0558020A065A01A1A1A1A1A1A01010202010202020401081A1A1A020104020801071B0201040105010103071B1A1A1A1A1A1A1A1A1A1A1A1E1921192119211921192101913522"; -_T Case_Ignorable = x"270106010B01230101014701040101010401020281F780C0040204010902010180FB0780CF010501312D01010102010201012C010B060A0B010123010A1510016508010A0104210101011E1B5B0B3A0B0401020118182B032C0107020608293A370101010408040103070A020D010F013A010404080114021A010202390104020402020303011E0203010B0239010405010204011402160601013A0102010104080107020B021E013D010C0132010301370101030503010407020B021D013A0102010601050214021C0239020404080114021D014801070301015A0102070B09620102090901010749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F015E0182600383B2031D021E021E02400201070801020B030105012D05330141022201760304020901060380DB0202013A010107010101010208060A02012701081F3104300101050101050128090C0220040202010338010102030101033A08020240065203010D0107040106010302323F0D01226581BD0101030B030D030D030D020C0508020A01020102053105010A01010D01100D33218B8B0271037D010F0160202F0181D5012404030505015D065D03A06F160184E206810E016204010A01011C0450020E224E01170367030302080103010401190205018097021A120D012608190B2E03300102040202110115024206020202020C01080123010B01330101030202050201011B010E020502010164050903790102010401A04F3001809311823D1003010C102201020180A901070106010B01230101012F012D024301150382010180E201809505840506012A0109824603010205042803040180A502823D048183025003460B31047B01360F290102020A0331040202020104010A013203240501083E010C0234090A0402015F030201010206010201809D0103081502390203012507030580C308020301011701540601010402010280EE04060201021B025508020101026A0101010206010165030204010581030901028100020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B0234050501010194ED11060FA0369A053B070904840B013F1140020102A0400B04010701028C9E020104925C2E0217822003091002071E0480940387BB37043208010E011605010F8550070111020701020105053E210180A00E8170013D0481FB0583E0076D088AAF05AC0C01011E60808080F0"; -_T Lo = x"80AA010F01810001040480D001833B1B04042D20010A23020163010118020A0302011001011E1D590B01182115162A19070B0518010611293B3603011201070A100F040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001020C063B020101010501180101010A010209010205170420013F0801241B05732B140110060404030103020703040D0C0171814901040207010101040229010402210104020701010104020F013901040243251071826C0211011A054B060807120D130E120E0D01030F3428014323013507050222010105460A1F311E02050B2C041A3617093580B02F1108361E0D020A2C1A2429030A1E7104010601020301843A048BF738181709070107010701070107010701070107822701350104560801015A0401052B015E11203010820099C040A05215018477432808810C04100A024201314680A901670103070103010401171D340E323E06030101020B1C0A17191D072F2D0502090A050129170301081410010603010332010103020205020101011802030B07010E0602060206090701078091231DA02BA40C170431A02104816E026A4301010A010D0105010101020102016C21816B12400236280C7405018087690A012D021F0306020602060203230C011A01130102010F020E227B81851D03312F200D14010806260A1E0224040880804E62280834809C813709160A088098060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4980B724815C2A06024E1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C05809E35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C80D30802010208010201180F0101015E080227100101011C010A28070115010B2E1301124981070901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A80E680C48A4C610F843011068FB98247A021B98239071F114F111E12303315051383704B050180AF97F80884D62A09A022F781230F011D0302010E0408818C89046B050D0309070AA022700181F52D210181411E122C81E41B82F50701040102010F0180C5853B04011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Modifier_Combining_Mark = x"86540202018083010601030281E102010303011F01"; +_T Lu = x"411A6517010721010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102030107010201020102010101010101010101010101010101020101010101010101010101010101010101020102010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010181210101010301080106010103010101020111010923010203030101010101010101010101010101010101010101010101050102010102023330010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102268B49260101050182D256889301062B0203814001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101090808060A08080808060B01010101010101080848040C040C040C050B0481060104010303020302010305060101010101010402040A0205013D018A7C303001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080101010401A0794D0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011301010101010101010101010101010101010101010101010101010180870101010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A0101010102010101010101010104010101020101010301010101010101010101010101010101010101010501050101010101010101010101010101010401010102030105010101010101011801A0572B1A84C528808824809C0B010F0107010286EA33809D168B3A20A0558020A065A01A1A1A1A1A1A01010202010202020401081A1A1A020104020801071B0201040105010103071B1A1A1A1A1A1A1A1A1A1A1A1E1921192119211921192101913522"; +_T Case_Ignorable = x"270106010B01230101014701040101010401020281F780C0040204010902010180FB0780CF010501312D01010102010201012C010B060A0B010123010A1510016508010A0104210101011E1B5B0B3A0B0401020118182B032C0107020509293A370101010408040103070A020D010F013A010404080114021A010202390104020402020303011E0203010B0239010405010204011402160601013A0102010104080107020B021E013D010C0132010301370101030503010407020B021D013A0102010601050214021C0239020404080114021D014801070301015A0102070B09620102090901010749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F015E0182600383B2031D021E021E02400201070801020B030105012D05330141022201760304020901060380DB0202013A010107010101010208060A02012701081F3104300101050101050128090C0220040202010338010102030101033A08020240065203010D0107040106010302323F0D01226581BD0101030B030D030D030D020C0508020A01020102053105010A01010D01100D33218B8B0271037D010F0160202F0181D5012404030505015D065D03A06F160184E206810E016204010A01011C0450020E224E01170367030302080103010401190205018097021A120D012608190B2E03300102040202110115024206020202020C01080123010B01330101030202050201011B010E020502010164050903790102010401A04F3001809311823D1003010C102201020180A901070106010B01230101012F012D024301150382010180E201809505840506012A0109824603010205042803040180A502823D0426011A050101813B024F04460B31047B01360F290102020A0331040202020104010A013203240501083E010C0234090A0402015F030201010206010201809D0103081502390203012507030546060D01010101010E025508020301011701540601010402010280EE04060201021B025508020101026A01010102060101650101010204010581030901028100020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B02340505010101170194D511060FA02CC80C030389C0053B07090481FC03280281E2013F1140020102A0400B04010701028C9E020104925C2E0217822003091002071E0480940387BB37043208010E011605010F8550070111020701020105053E210180A00E8170013D0481FB0580FE0282E0076D088AAF05AC0C01011E60808080F0"; +_T Lo = x"80AA010F01810001040480D001833B1B04042D20010A23020163010118020A0302011001011E1D590B01182115162A19070B0518010611293B3603011201070A100F040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001020C063B020101010501180101010A010209010205170420013F0801241B05732B140110060404030103020703040D0C0171814901040207010101040229010402210104020701010104020F013901040243251071826C0211011A054B060807120D130E120E0D01030F3428014323013507050222010105460A1F311E02050B2C041A3617093580B02F1108361E0D020A2C1A2429030A1E7104010601020301843A048BF738181709070107010701070107010701070107822701350104560801015A0401052B015E11203010820099C040A05215018477432808810C04100A024201314680A901670103070103010401171D340E323E06030101020B1C0A17191D072F2D0502090A050129170301081410010603010332010103020205020101011802030B07010E0602060206090701078091231DA02BA40C170431A02104816E026A4301010A010D0105010101020102016C21816B12400236280C7405018087690A012D021F0306020602060203230C011A01130102010F020E227B81851D03312F200D14010806260A1E0224040880804E622808345C340C813709160A088098060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4980B7242604010181302A060210033B1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C051E0A0101020101260101190101012C35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C80D30802010208010201180F0101015E080227100101011C010A28070115010B2E1301124980C7211F0901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A80E680C48A4C610F84301106198F9B0582479AB91E86E28239071F114F111E12303315051381B32881954B050180AF97F80884D6290AA022F781230F011D0302010E0408818C89046B050D0309070AA022700181F52D210181411E122C81E41B80E51E020181EF0701040102010F0180C5853B04011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; _T Pc = x"5F019FDF021301A0DDDE02180380EF01"; _T Bidi_Control = x"861C0199F1021A053704"; _T Co = x"A0E0009900AE0700A0FFFE02A0FFFE"; @@ -893,21 +907,21 @@ _T Variation_Selector = x"980B030101A0E5F010AD02F080F0"; _T Soft_Dotted = x"690280C4018119011E01340114018140016201010199090133010D010301808401809D0181A50180D6028B3201A1A7A5023202320232023202320232023202320232023202320232028886018131021A01"; _T Noncharacter_Code_Point = x"A0FDD020820E02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE02A0FFFE"; _T Logical_Order_Exception = x"8E40057B058AF0030201A090FA0202010102"; -_T Cased = x"411A061A2F010A0104010517011F0180C301040480D0012407021E0560012A040202020401010601010301010114015301808B0880A6012609298B172601010501022B010482A0560206888209072B02034080C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A0101030506010101010101040106040102040505040111200302833134871680E5060403020C2601010501A079122E121E8084660304013B0502010101051805010383352B010E0650A04F40070C0584091A061A84A55060240424740B010F01070102010B010F0107010281C3010203012A010984C5330D338BAD40A0556040A065805501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887340A0114060681053E88924487EC1A061A061A"; +_T Cased = x"411A061A2F010A0104010517011F0180C301040480D0012407021E0560012A040202020401010601010301010114015301808B0880A6012609298B172601010501022B010482A056020688820B052B02034080C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A0101030506010101010101040106040102040505040111200302833134871680E5060403020C2601010501A079122E121E8084660304013E0202010101081505010383352B010E0650A04F40070C0584091A061A84A55060240424740B010F01070102010B010F0107010281C3010203012A010984C5330D335D160A168B1A40A0556040A065805501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887340A0114060681053E88924487EC1A061A061A"; _T ID_Compat_Math_Continue = x"80B20205019FB601030B010F81730104011601A1B4A20119011F0119011F0119011F0119011F011901"; -_T Math = x"2B0110031F011D0101012D01040125011F0182D80302011A020203820F039A0D011B030B0103010D010E0415050B05410D04010302040512010401020A0101020606010302020201030106030E010144180106010204020420010106020E810C080414025A011E1B010118010B0781BD020C0A04060402020203050E01010102060B080502390101011D0409038150408100820030150206A0CFDC01833706010180A20110031D0101011D0101018083010604A0D4135501470102020102020204010C010101070141010402080107011C01040105010103070181540281240232960004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402"; +_T Math = x"2B0110031F011D0101012D01040125011F0182D80302011A020203820F039A0D011B030B0103010D010E0415050B05410D04010302040512010401020A0101020606010302020201030106030E010144180106010204020420010106020E810C080414025A011E1B010118010B0781BD020C0A04060402020203050E01010102060B080502390101011D0409038150408100820030150206A0CFDC01833706010180A20110031D0101011D01010180830106048DA102A0C6705501470102020102020204010C010101070141010402080107011C01040105010103070181540281240232960004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402"; _T No = x"80B20205010203893506817806780380850780D907110981B10A84351484730A81E0018695010306060A80C610290182D63C4E1682761E856901849404808A0A1E08010F200A270FA0757006A058D12D4104110281551B2404853408190727094B05160680A0020210022E400934021E034B05680818082907814A0681601F809E0A2A047007808614817B1485450281AE09836713835315A04B8607831E17A06429140C146C19954E0983A13B010301044C2D010F83C20D"; -_T ID_Continue = x"300A071A0401011A2F010A01010102010517011F0181CA040C0E05070101011175010202040101060501010114015301808B01050280A6012602010629082D0101010201020101081B04041D0B054A04660108020A01130201103B02650E3604010201022E121C040B05180106094A018081020A0113010802020216010701010304020902020204080104020105020C0A01010102030106040202160107010201020102020101050402020303010704010107100B03010901030116010701020105020A0103010302010F04020A09070103010802020216010701020105020902020203070304020105020A0101100201060303010403020101010203020303030C040503030104020106010E0A100D0103011701100209010301040702010302010204020A1004010801030117010A0105020901030104070206020104020A01030C0D010301330103010505040705020A0A060103011203180109010102070301040601010108060A02020D3A050F010A270201010105011801010117020501010107010A020420011702060A0B0101010101040A01240414011201240901394A064E022601010501022B01814D01040207010101040229010402210104020701010104020F013901040243020309090E101056020603826C0211011A054B030B071609160B140C0D010301020C5403010402020A2103010B0659072B05460A1F010C040C0A2802050B2C041A060B251C043F011D020B060A0D01080E0110314D030A11090C740C38080A03310209072B0203100301270582160206022602060208010101010101011F0235010701010303010703040206040D050301070F02310213011C010D01100D330D0401030C11010401020A01010206060101010101011002040505040111298A7780E506090C2601010501023807010F18090701070107010701070107010701070120820503190F0105020504560207015F052B015E11203010820099C040A0568D432E02810D031C1430040A01732509026702400502010101051836040113340C460A0A06180301013102240C1D03410E0B061F0137090E020A061703491803021002050A060206020609070107012B010E067B0102020A06A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21816B12400236280C04101010030218032005018087130A071A0401011A0A5A0306020602060203230C011A01130102010F020E227B453580880180821D03310F011F200D1E052B051E0224040801052A809E020A06240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D02030401201D031D2308011E19360A160A130D126E4937330D330D28080A81462A010203024B200A0108211F162A151B1709471F10093C07010D19070A0635010A04040824020109450404010D01012312012506043E0701010104010F010A073B050A0604010802020216010701020105010A0202020302010601050702070305808B4B050A04041E460101080A80A63602091706224103010B0A2639070A361B020F040A060780B93B654A1508020102080102011E010202090C0A4608022E020801021B3F0801084A03011249810709012D01090F0A181E0216010E49070102012C030101020109080A06060102012501020106070A8136170911012903050D0A56014F839A666F1180C48A4C610F843010168FAA8247A021B98239071F010A064F010A061E02050B3709040C0A0915051382B04080804B04390711400201020B020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A030292612E0217821E050306080802071E0480940381BB5501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232820037043208010E011605010F84501F060680D5070111020701020105053E2101702D030E020A040181411F113A81D62A82E60701040102010F0180C50B07294C040A84A604011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501118D340A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADD5080F0"; +_T ID_Continue = x"300A071A0401011A2F010A01010102010517011F0181CA040C0E05070101011175010202040101060501010114015301808B01050280A6012602010629082D0101010201020101081B04041D0B054A04660108020A01130201103B02650E3604010201022E121C040B05180106084B018081020A0113010802020216010701010304020902020204080104020105020C0A01010102030106040202160107010201020102020101050402020303010704010107100B03010901030116010701020105020A0103010302010F04020A09070103010802020216010701020105020902020203070304020105020A0101100201060303010403020101010203020303030C040503030104020106010E0A100D0103011701100209010301040702010302010204020A1004010801030117010A0105020901030104070206020104020A01030C0D010301330103010505040705020A0A060103011203180109010102070301040601010108060A02020D3A050F010A270201010105011801010117020501010107010A020420011702060A0B0101010101040A01240414011201240901394A064E022601010501022B01814D01040207010101040229010402210104020701010104020F013901040243020309090E101056020603826C0211011A054B030B071609160B140C0D010301020C5403010402020A2103010B0659072B05460A1F010C040C0A2802050B2C041A060B251C043F011D020B060A0D01080E0110314D030A11090C740C38080A0331020B052B0203100301270582160206022602060208010101010101011F0235010701010303010703040206040D050301070F02310213011C010D01100D330D0401030C11010401020A01010206060101010101011002040505040111298A7780E506090C2601010501023807010F18090701070107010701070107010701070120820503190F0105020504560207015F052B015E11203010820099C040A0568D432E02810D031C1430040A01732509026702430202010101081536040113340C460A0A06180301013102240C1D03410E0B061F0137090E020A061703491803021002050A060206020609070107012B010E067B0102020A06A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21816B12400236280C04101010030218032005018087130A071A0401011A0A5A0306020602060203230C011A01130102010F020E227B453580880180821D03310F011F200D1E052B051E0224040801052A809E020A06240424042808340C0B010F01070102010B010F0107010203340C813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D02030401201D031D2308011E19360A160A130D126E4937330D330D28080A06260305011780FA2A01020302100337210A0108211F162A151B1709471F10093C07010D19070A0635010A04040824020109450404010D01012312012506043E0701010104010F010A073B050A0604010802020216010701020105010A02020203020106010507020703050B0A010102010126010A01010201010401080D021D4B050A04041E460101080A80A63602091706224103010B0A2639070A06141C1B020F040A060780B93B654A1508020102080102011E010202090C0A4608022E020801021B3F0801084A0301124980C7210F0A0609012D01090F0A181E0216010E49070102012C030101020109080A06060102012501020106070A8136170911012903050D0B55014F839A666F1180C48A4C610F843010160A8F9B0582479AB93A86C68239071F010A064F010A061E02050B3709040C0A0915051381B02D030A80C64080804B04390711400201020B020E97F80884D6290AA022E704010701020181230F011D0302010E0408818C89046B050D0309070A030290510A82062E0217821E050306080802071E0480940381BB5501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232820037043208010E011605010F84501F060680D5070111020701020105053E2101702D030E020A040181411F113A81D62A80D62B81E50701040102010F0180C50B07294C040A84A604011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501118D340A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADD5080F0"; _T Me = x"848802963401861E040103A0858B03"; -_T Ideographic = x"A030060219090E0383C599C040A05200A05900816E026AA0750A011B97F80884D62A09A02467818CA04D04A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Ideographic = x"A030060219090E0383C599C040A05200A05900816E026AA0750A011B97F80884D6290AA02467818CA04D04A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; _T Cf = x"80AD01855206160180C001310181800250018F2B0187FC051A053105010AA0DE8F0180F90390C1010F01A0236210A088600494CF08AC2E86011E60"; -_T So = x"80A60102010401010183D101810A027F0280CE010A01130280F701820301817501808206010180840180CF0129018187030F010103020614010101010180850801060102050480C50282F00A82D30182D201809D2281610A0909858302010401020A010102060601010101010104010B020E01010201013A0209050204010201020107011F02020101011F810C08041402070251011E19280645190B514E1680B701090136086F0180F82C2C408100820030150206270220016980E5068165022E1A01590C80D61A1004010D020C0115020602815002040A20240B01101F0B1E08010F200A270F814099C040A05690378361040A020101823D03A052C6107F012D0381E401030104020D0281390939110203010D03012F2D867A02824F018C76018895080411A04B4A040501A051560192B3743C80F60A27023C05031602071E043D1542030180BA5784A9820037043208010E010286C8018B5C0180810182D12C04640C0F020F010F01251780A1381D0D2C040907020E06809A80FB0582D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137"; +_T So = x"80A60102010401010183D101810A027F0280CE010A01130280F701820301817501808206010180840180CF0129018187030F010103020614010101010180850801060102050480C50282F00A82D30182D201809D2281610A0909858302010401020A010102060601010101010104010B020E01010201013A0209050204010201020107011F02020101011F810C08041402070251011E19280648160B514E1680B701090136086F0180F82C2C408100820030150206270220016980E5068165022E1A01590C80D61A1004010D020C0115020602815002040A20260901101F0B1E08010F200A270F814099C040A05690378361040A020101823D03A052C6107F012D0381E401030104020D0281390939110203010D03012F2D867A02824F018C76018895080411A04B4A040501A05156018F6380F01081B4809C743C80F60A27023C05031602071E043D1542030180BA5784A9820037043208010E010286C8018B5C0180810182D12C04640C0F020F010F01251780A1381D0D2C040907020E06809A80FB0582D80411030D0377045F060C04010F0C0438080A0628081E020C04023E81540C0E020D030A0538070F020B0609078093015C"; _T White_Space = x"0905120164011A0195DF01897F0B1D0205012F018FA001"; -_T Sentence_Terminal = x"21010C01100185490180930380B4012B0380F6013D010101030281250286E402831601040283050180C602809D022D010501813A0281620480AE0202021D0280BC02410283BC0209038DE4010D01160281AD01A074FC01810E0280E3010301817E0256025F0180980280930380900280F901A0526601030280A9010C01100141018AF40284FD052C0480BD0275047F0380810206011002580201026C0181A102817502050F690280F903820501010180FB02570281A40282B4024A02A04B290280850141020B01835301A04E06019DE801"; +_T Sentence_Terminal = x"21010C01100185490180930380B4012B0380F6013D010101030281250286E402831601040283050180C602809D022D010501813A0281620480A2020A0202021D0380BB02410283A401170209038CAF038132010D01160281AD01A074FC01810E0280E3010301817E0256025F0180980280930380900280F901A052260102023B01030280A9010C01100141018AF40284FD052C0480BD0275047F0380810206011002580201026C01812A027502817502050F690280F903820501010180FB02570281A40282B4024A02A04B290280850141020B01822902812801A04E06019DE801"; _T Lt = x"81C5010201020126019D9508080808080C010F012F01"; _T Other_Lowercase = x"80AA010F0181F50907021E05600134018D81018C2F3F0D01222582B1010D01100D80D31083501A879202A07A1E0280D20180810303028362040901A05C16010203012A0109A0D8753E"; -_T Other_Alphabetic = x"834501826A0E0101010201020101480B300D01071001650704040202040123011E10660B650203090103010480A70C030706143602020F010205030A021D033A07020202020A010A021D033A050402020204011E0203010B033A08010301021502160304033A070202020209020A021E013B05030301030A01280539070103010308020B021D033A070103010308020B020F010C043A07010301030A010A021D034B060101010812023D0102071201630102060102100180A313090B01246E0C01010204170404030103020703040D0C01010A048674021E021E021E02421380BC022201760C040980DE05390A02144A020B033105300F3C031E090202390B321381B00E86C13488F620A0787408220281620108011705580232100101390126051C0C2D04300C2501430E0C0108022D0332010103020205012C05050180ED08A04F330188570586860301020504831404818302815303350E2D020B032D0909013D03240C12023903300D0E025C09020106010201809D0A17043A07020202020A010A0280D10D01036A1280ED0702071D02520F01016A0B670E81010D80F7060102020203010101808E07020604011C0A2A050104120B2E0E81970801075316010E7A0603010102010301010301420501020104815C040902010130070303A0500E01013707045D02A04CAC01A02361070111020701020105640188B70187E81A061A061A"; -_T XID_Continue = x"300A071A0401011A2F010A01010102010517011F0181CA040C0E05070101011175010203030101060501010114015301808B01050280A6012602010629082D0101010201020101081B04041D0B054A04660108020A01130201103B02650E3604010201022E121C040B05180106094A018081020A0113010802020216010701010304020902020204080104020105020C0A01010102030106040202160107010201020102020101050402020303010704010107100B03010901030116010701020105020A0103010302010F04020A09070103010802020216010701020105020902020203070304020105020A0101100201060303010403020101010203020303030C040503030104020106010E0A100D0103011701100209010301040702010302010204020A1004010801030117010A0105020901030104070206020104020A01030C0D010301330103010505040705020A0A060103011203180109010102070301040601010108060A02020D3A050F010A270201010105011801010117020501010107010A020420011702060A0B0101010101040A01240414011201240901394A064E022601010501022B01814D01040207010101040229010402210104020701010104020F013901040243020309090E101056020603826C0211011A054B030B071609160B140C0D010301020C5403010402020A2103010B0659072B05460A1F010C040C0A2802050B2C041A060B251C043F011D020B060A0D01080E0110314D030A11090C740C38080A03310209072B0203100301270582160206022602060208010101010101011F0235010701010303010703040206040D050301070F02310213011C010D01100D330D0401030C11010401020A01010206060101010101011002040505040111298A7780E506090C2601010501023807010F18090701070107010701070107010701070120820503190F01050205045602020203015F052B015E11203010820099C040A0568D432E02810D031C1430040A01732509026702400502010101051836040113340C460A0A06180301013102240C1D03410E0B061F0137090E020A061703491803021002050A060206020609070107012B010E067B0102020A06A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21808B0680DA12400236280A0610101003021803210101010301010101010101017E130A071A0401011A0A5A0306020602060203230C011A01130102010F020E227B453580880180821D03310F011F200D1E052B051E0224040801052A809E020A06240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D02030401201D031D2308011E19360A160A130D126E4937330D330D28080A81462A010203024B200A0108211F162A151B1709471F10093C07010D19070A0635010A04040824020109450404010D01012312012506043E0701010104010F010A073B050A0604010802020216010701020105010A0202020302010601050702070305808B4B050A04041E460101080A80A63602091706224103010B0A2639070A361B020F040A060780B93B654A1508020102080102011E010202090C0A4608022E020801021B3F0801084A03011249810709012D01090F0A181E0216010E49070102012C030101020109080A06060102012501020106070A8136170911012903050D0A56014F839A666F1180C48A4C610F843010168FAA8247A021B98239071F010A064F010A061E02050B3709040C0A0915051382B04080804B04390711400201020B020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A030292612E0217821E050306080802071E0480940381BB5501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232820037043208010E011605010F84501F060680D5070111020701020105053E2101702D030E020A040181411F113A81D62A82E60701040102010F0180C50B07294C040A84A604011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501118D340A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADD5080F0"; +_T Other_Alphabetic = x"8345011D0D82400E0101010201020101480B300D01071001650704040202040123011E10660B65020309010301046A013C0C030706143602020F010205030A021D033A07020202020A010A021D033A050402020204011E0203010B033A08010301021502160304033A070202020209020A021E013B05030301030A01280539070103010308020B021D033A070103010308020B020F010C043A07010301030A010A021D034B060101010812023D0102071201630102060102100180A313090B01246E0C01010204170404030103020703040D0C01010A048674021E021E021E02421380BC022201760C040980DE05390A02144A020B033105300F3C031E090202390B3213819C2286C13488F620A0787408220281620108011705580232100101390126051C0C2D04300C2501430E0C0108022D0332010103020205012C05050180ED08A04F33018857058686030102050483140441018141024F01810303350E2D020B032D0909013D03240C12023903300D0E025C09020106010201809D0A17043A07020202020A010A0254090101020101040102670D01036A1280ED0702071D02520F01016A0B670E81010D80F7060102020203010101808E07020604011C0A2A050104120B2E0E81970801075316010E7A0603010102010301010301420501020104815C040902010130070303A041DD118E2001013707045D02A04CAC01A02361070111020701020105640188B70187E81A061A061A"; +_T XID_Continue = x"300A071A0401011A2F010A01010102010517011F0181CA040C0E05070101011175010203030101060501010114015301808B01050280A6012602010629082D0101010201020101081B04041D0B054A04660108020A01130201103B02650E3604010201022E121C040B05180106084B018081020A0113010802020216010701010304020902020204080104020105020C0A01010102030106040202160107010201020102020101050402020303010704010107100B03010901030116010701020105020A0103010302010F04020A09070103010802020216010701020105020902020203070304020105020A0101100201060303010403020101010203020303030C040503030104020106010E0A100D0103011701100209010301040702010302010204020A1004010801030117010A0105020901030104070206020104020A01030C0D010301330103010505040705020A0A060103011203180109010102070301040601010108060A02020D3A050F010A270201010105011801010117020501010107010A020420011702060A0B0101010101040A01240414011201240901394A064E022601010501022B01814D01040207010101040229010402210104020701010104020F013901040243020309090E101056020603826C0211011A054B030B071609160B140C0D010301020C5403010402020A2103010B0659072B05460A1F010C040C0A2802050B2C041A060B251C043F011D020B060A0D01080E0110314D030A11090C740C38080A0331020B052B0203100301270582160206022602060208010101010101011F0235010701010303010703040206040D050301070F02310213011C010D01100D330D0401030C11010401020A01010206060101010101011002040505040111298A7780E506090C2601010501023807010F18090701070107010701070107010701070120820503190F01050205045602020203015F052B015E11203010820099C040A0568D432E02810D031C1430040A01732509026702430202010101081536040113340C460A0A06180301013102240C1D03410E0B061F0137090E020A061703491803021002050A060206020609070107012B010E067B0102020A06A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21808B0680DA12400236280A0610101003021803210101010301010101010101017E130A071A0401011A0A5A0306020602060203230C011A01130102010F020E227B453580880180821D03310F011F200D1E052B051E0224040801052A809E020A06240424042808340C0B010F01070102010B010F0107010203340C813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D02030401201D031D2308011E19360A160A130D126E4937330D330D28080A06260305011780FA2A01020302100337210A0108211F162A151B1709471F10093C07010D19070A0635010A04040824020109450404010D01012312012506043E0701010104010F010A073B050A0604010802020216010701020105010A02020203020106010507020703050B0A010102010126010A01010201010401080D021D4B050A04041E460101080A80A63602091706224103010B0A2639070A06141C1B020F040A060780B93B654A1508020102080102011E010202090C0A4608022E020801021B3F0801084A0301124980C7210F0A0609012D01090F0A181E0216010E49070102012C030101020109080A06060102012501020106070A8136170911012903050D0B55014F839A666F1180C48A4C610F843010160A8F9B0582479AB93A86C68239071F010A064F010A061E02050B3709040C0A0915051381B02D030A80C64080804B04390711400201020B020E97F80884D6290AA022E704010701020181230F011D0302010E0408818C89046B050D0309070A030290510A82062E0217821E050306080802071E0480940381BB5501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232820037043208010E011605010F84501F060680D5070111020701020105053E2101702D030E020A040181411F113A81D62A80D62B81E50701040102010F0180C50B07294C040A84A604011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501118D340A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADD5080F0"; _T Cc = x"00205F21"; _T Regional_Indicator = x"A1F1E61A"; _T Sc = x"24017D0484E9017B0181F20281F202070180F501810701824501899B0188C421A0877701A055C3016C01809A0180DB0203029FF604A0C31E0189B001"; @@ -915,41 +929,41 @@ _T IDS_Unary_Operator = x"A02FFE02"; _T Pf = x"80BB019F5D0103011C018DC8010101040102010F010301"; _T Pe = x"290133011F018EBD010101875E0189A90137010F01827A0101011E01843E0101010101010101010101010150012001010101010101010181940101010101010101010101010101010101010101014001010121018425010101010101012C0101010101010181AC01010101010101010103010101010101010202A0CD1E0180D9011D010101010101010101010101010101030111010101010180AA0133011F0102010201"; _T Other_Uppercase = x"A021601083461AA1CC601A061A061A"; -_T Cn = x"8378020604070101011401818D0126023202030137081B04060B810E013C02650E3B0231020F011C0201010B051F01020680EC010802020216010701010304020902020204080104020105021902030106040202160107010201020102020101050402020303010704010107110A03010901030116010701020105020A0103010302010F04020C0707010301080202021601070102010502090202020307030402010502120A0201060303010403020101010203020303030C040503030104020106010E15050D0103011701100209010301040702010302010204020A071601030117010A0105020901030104070206020104020A01030C0D01030133010301060410021A0103011203180109010102070301040601010108060A02030C3A041D250201010105011801010117020501010107010A02042048012404270124010F010D2580C60101050102817901040207010101040229010402210104020701010104020F0139010402430220031A0656020602829D03590716091809140C0D010301020C5E020A060A061A0659072B05460A1F010C040C0401032A02050B2C041A060B033E0241011D020B060A060E021F314D032F0174083C030F033C072B020B082B0582160206022602060208010101010101011F0235010F010E02060113020301090165010C021B010D03210F210F808C048297190B158714022001815D052D01010501023807020E1809070107010701070107010701070107017E221A01590C80D61A5001560267052B015E01540B3001A0726D033709815C1480B80880CB050201010105183B030A06380846080C06740B1E034E010B04210137090E020A0267181C0A060206020609070107013C047E020A06A02BA40C17043104A0226E026A26070C05051A0105010101020102017D1081BD02360701202A063301130104040501808702010180BE0306020602060203030701070A05020C011A01130102010F020E227B0503042D0358010D03012F2E80821D03310F1C0424091E052B051E0125040E2A809E020A06240424042808340B0C010F01070102010B010F0107010243813709160A081806012A010945060201012C01020301021701480809301301020521031B0501403804140232010205080103011D0203040A070907402027040C0936031D021B051A07040C07504937330D33072E080A81261F012A010302024B2B082A161A261C1417094E042409440A010219070A063501120827096001140B12012F3E0701010104010F010B063B050A0604010802020216010701020105010A0202020302010601050702070305808B5C01051E48080A80A636022622450B0A060D133A060A361B020F041780B93C64530C08020102080102011E0102020C090A4608022E020B1B4808530D49070A80F609012D010E0A1D03200216010E49070102012C030101020109080A06060102012501020106070A81361907110129031C56010F320D839B666F01050B80C48A4C630D84568FAA8247A021B98239071F010A0451010A061E02060A460A0A01070115051382B05B654B0439071140050B020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A0208925C2E021709743C80F60A270280C215467A140C140C57091980875501470102020102020204010C010101070141010402080107011C01040105010103070181540281240282BE0F05010F84501F060680D5070111020701020105053E2101702D030E020A040281401F113A050181D02A82E60701040102010F0180C50210294C040A04028311444C3D80C204011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402810E2C04640C0F020F010F01250A80AE381D0D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137250A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADC51011E60808080F0A0FE10A0FFFE02A0FFFE"; +_T Cn = x"8378020604070101011401818D0126023202030137081B04060B810E013C02650E3B0231020F011C0201010B051F01020580ED010802020216010701010304020902020204080104020105021902030106040202160107010201020102020101050402020303010704010107110A03010901030116010701020105020A0103010302010F04020C0707010301080202021601070102010502090202020307030402010502120A0201060303010403020101010203020303030C040503030104020106010E15050D0103011701100209010301040702010302010204020A071601030117010A0105020901030104070206020104020A01030C0D01030133010301060410021A0103011203180109010102070301040601010108060A02030C3A041D250201010105011801010117020501010107010A02042048012404270124010F010D2580C60101050102817901040207010101040229010402210104020701010104020F0139010402430220031A0656020602829D03590716091809140C0D010301020C5E020A060A061A0659072B05460A1F010C040C0401032A02050B2C041A060B033E0241011D020B060A060E021F314D0180A6083C030F033E052B020B082B0582160206022602060208010101010101011F0235010F010E02060113020301090165010C021B010D03210F210F808C04829A160B158714022001815D052D01010501023807020E1809070107010701070107010701070107017E221A01590C80D61A5001560267052B015E0156093001A0726D033709815C1480B80880CE020201010108153B030A06380846080C06740B1E034E010B04210137090E020A0267181C0A060206020609070107013C047E020A06A02BA40C17043104A0226E026A26070C05051A0105010101020102017D1081BD02360701202A063301130104040501808702010180BE0306020602060203030701070A05020C011A01130102010F020E227B0503042D0358010D03012F2E80821D03310F1C0424091E052B051E0125040E2A809E020A06240424042808340B0C010F01070102010B010F0107010203340C813709160A081806012A010945060201012C01020301021701480809301301020521031B0501403804140232010205080103011D0203040A070907402027040C0936031D021B051A07040C07504937330D33072E080A0626031D080280D01F012A010302021003372C082A161A261C1417094E042409440A010219070A063501120827096001140B12012F3E0701010104010F010B063B050A0604010802020216010701020105010A02020203020106010507020703050B0A010102010126010A010102010104010A010208021D5C01051E48080A80A636022622450B0A060D133A060A06141C1B020F041780B93C64530C08020102080102011E0102020C090A4608022E020B1B4808530D49070A80B6220E0A0609012D010E0A1D03200216010E49070102012C030101020109080A06060102012501020106070A81361907110129031D55010F320D839B666F01050B80C48A4C630D84560A8F9B0582479AB93A86C68239071F010A0451010A061E02060A460A0A01070115051381B03A80C65B654B0439071140050B020E97F80884D6290AA022E704010701020181230F011D0302010E0408818C89046B050D0309070A02088F5C80FA0681B44C2E021709743C80F60A270280C215467A140C140C57091980875501470102020102020204010C010101070141010402080107011C01040105010103070181540281240282BE0F05010F84501F060680D5070111020701020105053E2101702D030E020A040281401F113A050181D02A80D62B040181E00701040102010F0180C50210294C040A04028311444C3D80C204011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402810E2C04640C0F020F010F01250A80AE381D0D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E020C04023E81540C0E020D030A0538070F020B060907809301668406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060AADC51011E60808080F0A0FE10A0FFFE02A0FFFE"; _T Hyphen = x"2D017F0184DC01927B018809028E050182E301A0CD670180A9015701"; _T Other_Math = x"5E0183710302011A0202029C20011B030B01200418020E02410D04010302040512010401020A0101030506010302020201030106030405054B05020401020102010101050202040204120202010101070101060281220480A80201011801110181BD020C0905050502020203050E01010102061802390101011D0409028156021F0A8193163F042002A0D463010101040180D3010101A0D4C15501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F011901080232960004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A0111050301050111"; _T Ps = x"280132011F018EBE010101875E01897E010301260137010F01827A0101011E01843E0101010101010101010101010150012001010101010101010181940101010101010101010101010101010101010101014001010121018425010101010101011901120101010101010181AC01010101010101010103010101010101010201A0CD210180D7011D010101010101010101010101010101030111010101010180AA0132011F0103010201"; _T Zs = x"20017F0195DF01897F0B24012F018FA001"; -_T Alphabetic = x"411A061A2F010A0104010517011F0181CA040C0E050701010156012A050102020401010601010301010114015301808B0880A6012602010629270E0101010201020101081B04041D0B053801070E660108040804030A03020110300D65182109020401051802131319070B05180106112A0A0C0307064C01100103040F0D1301080202021601070101030403080202020201010801040201050C020A010403010604020216010701020102010204050402020204010704010111060B0301090103011601070102010503090103010203010F04150404030108020202160107010201050308020202020902040201050D01100201060303010403020101010203020303030C04050303010303010601280D01030117011003080103010308020103020102041C04010801030117010A01050308010301030802060201040D030C0D01030129020801030103010105040705160601030112031801090101020708060101010812020D3A0507060133020101010501180101011301030205010106010E0420013F08012404130410012443370101020510400A04022601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07140B150C140C0D010301020C3402130E0104014359072B05460A1F010C0409171E02050B2C041A361C043F0214320117020B033134010F0108332A02040A2C010B0E3716030A240209072B020329040106010203010580C0270E0B81160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A010103050601010101010104010B0204050504011129832D34871680E5060403020C26010105010238070110170907010701070107010701070107010701202F0181D50319090705020504560603015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F050803712709026702400502010101051814012118340C4401012C06030101030A2105230D1D0333010C0F0110100A050137090E12170345010101011803021002040B060206020609070107012B010E067B15A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21816B12400236280C7405018087241A061A0B590306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E052B051E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D2A1D031D2308011C1B360A160A130D126E4937330D330D2881582A010203024E1D0A0108162A122E151B1709462B050A3909010D1917331104082303010940010409020A01010123120122020106043E0701010104010F010A07391704010802020216010701020105030802020202030106010507809C420103010414031E420202010180B83602071906223F010103013B360201471B020E150780B93967401F08020102080102011E0102020202045D08022E0206010101021B33020A114805011249810709012D01070101311E0216010E49070102012C030101020103010102021806010201250102010401018147170911012903036F014F839A666F1180C48A4C610F843011068FB98247A021B98239071F114F111E123010041F15051382B04080804B04390711400201010C020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A040197615501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060680D5070111020701020105053E2101702D0A07100181411E122C81E41C82F40701040102010F0180C53B440301030184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A011105030105011182741A061A061A8E76A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; -_T XID_Start = x"411A061A2F010A0104010517011F0181CA040C0E05070101018081050102030301010601010301010114015301808B0880A6012602010629471B04042D2B2302016301010F0207020A0302011001011E1D590B0118210902040105160401090103011719070B05180106112A3A3603011201070A0F10040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001010D073A020101010501180101010A01010A0102050101150420013F0801241B05732B140110060404030103020703040D0C01112601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07120D130E120E0D01030F342301040143590729010105460A1F311E02050B2C041A3617093552015D2F1108361E0D020A2C1A2429030A240209072B020329040106010203010580C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A01010206060101010101011002040505040111298A7780E5060403020C26010105010238070110170907010701070107010701070107010782260319090705020504560603015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F101F025027090267024005020101010518100103010401171D340E323E06030101020B1C0A17191D072F1C011005010A0A05012917030108141703010332010103020205020101011803020B07030C060206020609070107012B010E06731DA02BA40C170431A02104816E026A26070C050501010A010D0105010101020102016C21808B0680DA12400236280A770101010301010101010101017E241A061A0B38021F0306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E05260A1E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010243813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4937330D330D24815C2A06024E1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C05809E35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C74401F0802010208010201180F0101015E080227100101011C010A28070115010B2E1301124981070901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A666F1180C48A4C610F843011068FB98247A021B98239071F114F111E123010041F15051382B04080804B0501420D400201011C97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A97665501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060681053E80922D0A07100181411E122C81E41C82F40701040102010F0180C53B44070184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; -_T Grapheme_Link = x"894D017F017F017F017F017F017F017F016D0210017C016F017F0180C90180B40286D9021E01809D01828D0180E30165024602918B01A07A86012501809701808E016C0181350180F601A05E510186060129010E0139017902808B01740180B401620180F4017F0180FC017F0176017401810D0181030280A10153011201510181A501810402510181A902"; -_T Dash = x"2D01855C0133018E41018405018809063D0127010F018186018C040102011F0204011C0181BE0113016F01A0CD900225010A0180A9018F9F01"; +_T Alphabetic = x"411A061A2F010A0104010517011F0181CA040C0E050701010156011D120102020401010601010301010114015301808B0880A6012602010629270E0101010201020101081B04041D0B053801070E660108040804030A03020110300D65182109020401051802131319070B051801060801082A0A0C0307064C01100103040F0D1301080202021601070101030403080202020201010801040201050C020A010403010604020216010701020102010204050402020204010704010111060B0301090103011601070102010503090103010203010F04150404030108020202160107010201050308020202020902040201050D01100201060303010403020101010203020303030C04050303010303010601280D01030117011003080103010308020103020102041C04010801030117010A01050308010301030802060201040D030C0D01030129020801030103010105040705160601030112031801090101020708060101010812020D3A0507060133020101010501180101011301030205010106010E0420013F08012404130410012443370101020510400A04022601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07140B150C140C0D010301020C3402130E0104014359072B05460A1F010C0409171E02050B2C041A361C043F0214320117020B033134010F0108332A02040A2C010B0E3716030A24020B052B020329040106010203010580C013220B81160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A010103050601010101010104010B0204050504011129832D34871680E5060403020C26010105010238070110170907010701070107010701070107010701202F0181D50319090705020504560603015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F050803712709026702430202010101081514012118340C4401012C06030101030A2105230D1D0333010C0F0110100A050137090E12170345010101011803021002040B060206020609070107012B010E067B15A02BA40C170431A02104816E026A26070C05050C010D0105010101020102016C21816B12400236280C7405018087241A061A0B590306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E052B051E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010203340C813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A463806024004010205080103011D2A1D031D2308011C1B360A160A130D126E4937330D330D28221C0301051780FA2A0102030210033701031D0A0108162A122E151B1709462B050A3909010D1917331104082303010940010409020A01010123120122020106043E0701010104010F010A073917040108020202160107010201050308020202020301060105071C0A010102010126010A0101020101040102030101012C420103010414031E420202010180B83602071906223F010103013B360201471B020E150780B93967401F08020102080102011E0102020202045D08022E0206010101021B33020A11480501124980C7211F09012D01070101311E0216010E49070102012C030101020103010102021806010201250102010401018147170911012903036F014F839A666F1180C48A4C610F84301106198F9B0582479AB92F86D18239071F114F111E123010041F15051381B02D80D34080804B04390711400201010C020E97F80884D6290AA022E704010701020181230F011D0302010E0408818C89046B050D0309070A040197615501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060680D5070111020701020105053E2101702D0A07100181411E122C81E41C80E41E020181EF0701040102010F0180C53B440301030184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A011105030105011182741A061A061A8E76A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T XID_Start = x"411A061A2F010A0104010517011F0181CA040C0E05070101018081050102030301010601010301010114015301808B0880A6012602010629471B04042D2B2302016301010F0207020A0302011001011E1D590B0118210902040105160401090103011719070B05180106112A3A3603011201070A0F10040802020216010701010304030110010D0201030E020A0108060402021601070102010201021F0401011303100901030116010701020105030112010F0217010B080202021601070102010503011E0201030F01110101060303010403020101010203020303030C1601340801030117011003011A03020102021E01040801030117010A010503011F0201020F0211090103012902011001050308031806051203180109010102073A3001010D073A020101010501180101010A01010A0102050101150420013F0801241B05732B140110060404030103020703040D0C01112601010501022B01814D01040207010101040229010402210104020701010104020F01390104024325101056020603826C0211011A054B030B07120D130E120E0D01030F342301040143590729010105460A1F311E02050B2C041A3617093552015D2F1108361E0D020A2C1A2429030A24020B052B020329040106010203010580C04081160206022602060208010101010101011F0235010701010303010703040206040D0503010774010D01100D65010401020A01010206060101010101011002040505040111298A7780E5060403020C26010105010238070110170907010701070107010701070107010782260319090705020504560603015A0104052B015E11203010820099C040A0568D432E02810D03100A02142F101F025027090267024302020101010815100103010401171D340E323E06030101020B1C0A17191D072F1C011005010A0A05012917030108141703010332010103020205020101011803020B07030C060206020609070107012B010E06731DA02BA40C170431A02104816E026A26070C050501010A010D0105010101020102016C21808B0680DA12400236280A770101010301010101010101017E241A061A0B38021F0306020602060203230C011A01130102010F020E227B4535810B1D03312F200D1E05260A1E0224040801052A809E12240424042808340C0B010F01070102010B010F0107010203340C813709160A081806012A010945060201012C0102030102170A17091F411301020A160A1A4638060240010F040103011D2A1D031D2308011C1B360A160A130D126E4937330D330D24261C091780FA2A060210033B1D0A0108162A122E151B170C35390202010D2D20191A241D010201082303010C300E04150101012312011913023F0701010104010F010A072F260802020216010701020105030112010C051E0A0101020101260101190101012C35120414031E301402010180B82F2904243014013B2B0D01471B250780B92C74401F0802010208010201180F0101015E080227100101011C010A28070115010B2E1301124980C7211F0901251101311E70070102012615011906010201200E018147130F01010D01227C014F839A666F1180C48A4C610F84301106198F9B0582479AB91E86E28239071F114F111E123010041F15051381B02D80D34080804B0501420D400201011C97F80884D6290AA022E704010701020181230F011D0302010E0408818C89046B050D0309070A97665501470102020102020204010C010101070141010402080107011C010401050101030701815402190119011F0119011F0119011F0119011F0119010887341F060681053E80922D0A07100181411E122C81E41C80E41E020181EF0701040102010F0180C53B44070184B404011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501119144A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Grapheme_Link = x"894D017F017F017F017F017F017F017F016D0210017C016F017F0180C90180B40286D9021E01809D01828D0180E30165024602918B01A07A86012501809701808E016C0181350180F601A05E510186060129010E0139017902808B01740180B401620180800371017F0180FC017F0176017401810D0181030280A10153011201510181A501810402510181A902A041EC01"; +_T Dash = x"2D01855C0133018E41018405018809063D0127010F018186018C040102011F0204011C0181BE0113016F01A0CD900225010A0180A9018E6001813E01"; _T Nl = x"96EE038A6F2302048E7E0119090E03A076AB0AA05A503581CC010801808605A0202A6F"; _T IDS_Trinary_Operator = x"A02FF202"; -_T Terminal_Punctuation = x"21010A0101010B020301833E010801820101390148010E01010380B4012B0B010180EB02360F1F0181050284F40280AC0104068137028315088305017C034702809D03030127040202813A0281620480AE0201031D0280BC053E0283BC0209038DE4010D0104010A010102030281AC02A074FB02810D0380E305817E0256025F018097038093037F01100280F901A0526403010480A9010A0101010B02030141010201843A01300184860180C7018136028098064406590483B8052C0480BD0770047F038081020601100258056C0181A1030C02816604030F690280F903820501010180FB0257020402819E032D018285024A02852B05A045F90280850141030A01835202A04E06019DE704"; -_T Nd = x"300A86260A80860A80C60A819C0A760A760A760A760A760A760A760A760A760A600A760A460A81160A460A87460A260A812C0A80800A80A60A060A80B60A560A80860A060AA089C60A82A60A260A80C60A160A560A81960AA053160A85860A88860A832C0A80800A3C0A80900A81160A81560A760A81760A660A660A81A60A660A82F60A80F60A460A81A60AA04B060A560A80860AA06C743289400A81A60A81F60A84560A92960A"; +_T Terminal_Punctuation = x"21010A0101010B020301833E010801820101390148010E01010380B4012B0B010180EB02360601081F0181050284F40280AC0104068137028315088305017C034702809D03030127040202813A0281620480A2020A0201031D0380BB053E0283A401170209038CAF038132010D0104010A010102030281AC02A074FB02810D0380E305817E0256025F018097038093037F01100280F901A052260102023903010480A9010A0101010B02030141010201843A01300184860180C7018136028098064406590483B8052C0480BD0770047F038081020601100258056C01812A0275030C02816604030F690280F903820501010180FB0257020402819E032D018285024A02852B05A045F90280850141030A01822902812702A04E06019DE704"; +_T Nd = x"300A86260A80860A80C60A819C0A760A760A760A760A760A760A760A760A760A600A760A460A81160A460A87460A260A812C0A80800A80A60A060A80B60A560A80860A060AA089C60A82A60A260A80C60A160A560A81960AA053160A85860A88860A060A831C0A80800A3C0A80900A81160A81560A760A81760A660A06144C0A81A60A660A82960A560A80F60A460A81A60AA041D60A89260A560A80860A82160AA05F760A8AD43289400A81A60A81F60A80F70A83550A92960A"; _T ID_Compat_Math_Start = x"A022020104011601A1B4A20119011F0119011F0119011F0119011F011901"; _T Prepended_Concatenation_Mark = x"86000680D70131018180025001A107DA010F01"; _T ASCII_Hex_Digit = x"300A07061A06"; -_T Mc = x"890301370102030804010232023A03060202020A012B013A0342013A030801010235023A010101060202020A0166020102030301030A0129033D043D023A0101050202010209021C010E023A03050301030A012A024B0306081202814A023F0180AB0204010601020219020A0302071502020602010A038678011E0180810107080102815A0402030402010680E0023A01010109010102080680910130010501010501023D011E01040202013C010203010103023008080280AB011501933602A077F302020158023210808E022F013002040202036E02020218012D0101016D010202050180ED02010201020101A064130101017F012D030402730118023B01300309020D015D030302010180AA031F023A0201040202020309010A0280D103080203016A0306010104020180ED03060402017103080201016D010102060169020401810503090180F7060102040102010101808E030804040154011D023E018197010E016A010701020180D50504020101815E020C01300208020101A0500F376802A06173020606"; +_T Mc = x"890301370102030804010232023A03060202020A012B013A0342013A030801010235023A010101060202020A0166020102030301030A0129033D043D023A0101050202010209021C010E023A03050301030A012A024B0306081202814A023F0180AB0204010601020219020A0302071502020602010A038678011E0180810107080102815A0402030402010680E0023A01010109010102080680910130010501010501023D011E01040202013C010203010103023008080280AB011501933602A077F302020158023210808E022F013002040202036E02020218012D0101016D010202050180ED02010201020101A064130101017F012D030402730118023B01300309020D015D030302010180AA031F023A0201040202020309010A025403070102010104010201016503080203016A0306010104020180ED03060402017103080201016D0101020601670101020401810503090180F7060102040102010101808E030804040154011D023E018197010E016A010701020180D50504020101815E020C01300208020101A041E8038E24376802A06173020606"; _T Radical = x"A02E801A01590C80D6"; _T Quotation_Mark = x"220104018083010F019F5C0819028E070181C9040D03A0CE210480BD0104015A02"; _T Other_Default_Ignorable_Code_Point = x"834F018E0F0286530288AF0190FE01A0CE3B014F09AD000701011E60808080F08E10"; _T Join_Control = x"A0200C02"; -_T Grapheme_Base = x"205F210D018252700802060407010101140180E00780A60126023202032E01010102010201091B0406110A0B01012E1510016508010602020104200201011E1D590B010E2B09070318040109010301070F01190501010B051F112A39370101010408040103070A021D0102010802020216010701010304030101020602020201010D020103041805010106040202160107010201020102040318040101070A020301010C0101090103011601070102010503040801010203010F02040C0701080201080202021601070102010503010201060202020F02010304120B0101060303010403020101010203020303030C0501010203030103030115150603010801030117011003010304130302010202040A070A010B01030117010A01050302010201020202010211020102040A01030E0B01030129020101020503010301020403010A041A02020112031801090101020709020607070A02030C3001020B08080D25020101010501180101010A0102090102050101090A02042018021B01010101010E012412010501020531080106010D252D040106010202021902040310040D01020206010F01280101050102817901040207010101040229010402210104020701010104020F013901040243051D031A0656020602829D0359071203010913020309120E0D01030F340201070801020B09030A060A060B050A065907050222010105460A1F04040203040201060701032A02050B2C041A060B03390202033801010901010208060D0A060A060E563007010105010A031B090B0320040202010338010102030101030208300802050F033C072B020B0B010D0107040106010302010580C04081160206022602060208010101010101011F0235010F010E0206011302030109010B051807311002021B010D03213F808C048297190B15871402200181580302052D01010501023807020F1709070107010701070107010701070107215E221A01590C80D61A3A061001560465052B015E01540B3001A0726D033709815C142F04010A20025002060880CB05020101010518100103010401190205040A063808440A0C180D012608190B020B1E0630010204020210010B040701190129060202020B0301080101020A0220013301010302020502010101181102080B060206020609070107013C047501020104030A06A02BA40C170431A02104816E026A26070C05050101180105010101020102017D1081BD023607012010100A162301130104040501808704809D021F0306020602060203030701070D02020C011A01130102010F020E227B0503042D0358010D03012F2D80831D0331101B0424091E05260A1E0125040E2A809E020A06240424042808340B0C010F01070102010B010F0107010243813709160A081806012A010945060201012C01020301021701480809301301020521031B050140380414022F0F040103011D0A09070907402025060C0936031D021B051A07040C07504937330D33072A0C0A81261F012A030102024E2808160B0916120404261C1417090101360F07041E010202010C310402020201040E19070A092405010912082301030B34090A0402011001140B12011C03020101020601023F0701010104010F010B062F01030D0A08020108020202160107010201050301010101040202020302010C07809C38080203010115010101031E30010206010102010102010204080A80A62F010206040201021B24330802010102040B0A060D132B0101010206010102060A361B05020401091780B92F0901020164530C08020102080102011801050102040101040103090A4608022A080401041B010A280602040809010602032E0D0102090D49070A80F60901260E0101060A1D03201901070102014B07010201261501090A060601020125040201010101070A8136130204090F012408020101011756010F320D839B666F01050B80C48A4C630D843011068FB98247A021B98239071F010A0451010A061E07010A30070F0A0A01070115051382B05B654B05380B0D40040C020E97F80884D62A09A022E704010701020181230F011D0302010E0408818C89046B050D0309070A0201020192B0743C80F60A27023C010103041502071E043D154203017A140C140C57091980875501470102020102020204010C010101070141010402080107011C010401050101030701815402812402823237043208010E010784741F060681053E80922D0A07020A040281401E122C040A050181D01C040A82E60701040102010F0180C5020930440701040A04028311444C3D80C204011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402810E2C04640C0F020F010F01250A80AE381D0D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137250A8406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; -_T Uppercase = x"411A6517010721010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102030107010201020102010101010101010101010101010101020101010101010101010101010101010101020102010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010181210101010301080106010103010101020111010923010203030101010101010101010101010101010101010101010101050102010102023330010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102268B49260101050182D256889A2B0203814001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101090808060A08080808060B01010101010101080848040C040C040C050B0481060104010303020302010305060101010101010402040A0205011A10130183321A8730303001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080101010401A0794D0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011301010101010101010101010101010101010101010101010101010180870101010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A0101010102010101010101010104010101020101010301010101010101010101010101010101010101010501050101010101010101010101010101010401010601050101011C01A0572B1A84C528808824809C0B010F0107010286EA338BED20A0558020A065A01A1A1A1A1A1A01010202010202020401081A1A1A020104020801071B0201040105010103071B1A1A1A1A1A1A1A1A1A1A1A1E1921192119211921192101913522880E1A061A061A"; +_T Grapheme_Base = x"205F210D018252700802060407010101140180E00780A60126023202032E01010102010201091B0406110A0B01012E1510016508010602020104200201011E1D590B010E2B09070318040109010301070F01190501010B051F112A39370101010408040103070A021D0102010802020216010701010304030101020602020201010D020103041805010106040202160107010201020102040318040101070A020301010C0101090103011601070102010503040801010203010F02040C0701080201080202021601070102010503010201060202020F02010304120B0101060303010403020101010203020303030C0501010203030103030115150603010801030117011003010304130302010202040A070A010B01030117010A010503020201010218020102040A01030E0B01030129020101020503010301020403010A041A02020112031801090101020709020607070A02030C3001020B08080D25020101010501180101010A0102090102050101090A02042018021B01010101010E012412010501020531080106010D252D040106010202021902040310040D01020206010F01280101050102817901040207010101040229010402210104020701010104020F013901040243051D031A0656020602829D035907120D13030209120E0D01030F340201070801020B09030A060A060B050A065907050222010105460A1F04040203040201060701032A02050B2C041A060B03390202033801010901010208060D0A060A060E56300A040308011D090C0220040206380101020301010D300802050F033E052B020B0B010D0107040106010302010580C04081160206022602060208010101010101011F0235010F010E0206011302030109010B051807311002021B010D03213F808C04829A160B15871402200181580302052D01010501023807020F1709070107010701070107010701070107215E221A01590C80D61A3A061001560465052B015E0156093001A0726D033709815C142F04010A20025002060880CE02020101010815100103010401190205040A063808440A0C180D012608190B010C1E0630010204020202010D010B040701190129060202020B0301080101020A0220013301010302020502010101181102080B060206020609070107013C047501020104030A06A02BA40C170431A02104816E026A26070C05050101180105010101020102017D1081BD023607012010100A162301130104040501808704809D021F0306020602060203030701070D02020C011A01130102010F020E227B0503042D0358010D03012F2D80831D0331101B0424091E05260A1E0125040E2A809E020A06240424042808340B0C010F01070102010B010F0107010203340C813709160A081806012A010945060201012C01020301021701480809301301020521031B050140380414022F0F040103011D0A09070907402025060C0936031D021B051A07040C07504937330D33072A0C0A06260818080280D01F012A0301020210033B2808160B0916120404261C1417090101360F07041E010202010C310402020201040E19070A092405010912082301030B34090101080402011001140B12011C0302040601023F0701010104010F010B062F01030D0A08020108020202160107010201050301010101040202020203010C071C0A010102010126010101020F0101020301010301022738080203010115010101031E30010206010102010102010204080A80A62F010206040201021B24330802010102040B0A060D132B010101020802060A06141C1B030101020401091780B92F0901020164530C0802010208010201180105010206040103090A4608022A080401041B010A280602040809010602032E0D0102090D49070A80B6220E0A060901260E0101060A1D03201901070102014B07010201261501090A060601020125040201010101070A8136130204090F01240802031756010F320D839B666F01050B80C48A4C630D84301106198F9B0582479AB91E0C03030A86C68239071F010A0451010A061E07010A30070F0A0A01070115051381B03A80C65B654B05380B0D40041C97F80884D6290AA022E704010701020181230F011D0302010E0408818C89046B050D0309070A020102018F6080FA0681B4809C743C80F60A27023C05031602071E043D154203017A140C140C57091980875501470102020102020204010C010101070141010402080107011C010401050101030701815402812402823237043208010E010784741F060681053E80922D0A07020A040281401E122C040A050181D01C040A80D61E020B040181E00701040102010F0180C5020930440701040A04028311444C3D80C204011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402810E2C04640C0F020F010F01250A80AE381D0D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E020C04023E81540C0E020D030A0538070F020B060907809301668406A0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; +_T Uppercase = x"411A6517010721010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102030107010201020102010101010101010101010101010101020101010101010101010101010101010101020102010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010181210101010301080106010103010101020111010923010203030101010101010101010101010101010101010101010101050102010102023330010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010102268B49260101050182D256889301062B0203814001010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010901010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101090808060A08080808060B01010101010101080848040C040C040C050B0481060104010303020302010305060101010101010402040A0205011A10130183321A8730303001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080101010401A0794D0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011301010101010101010101010101010101010101010101010101010180870101010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A0101010102010101010101010104010101020101010301010101010101010101010101010101010101010501050101010101010101010101010101010401010102030105010101010101011801A0572B1A84C528808824809C0B010F0107010286EA33809D168B3A20A0558020A065A01A1A1A1A1A1A01010202010202020401081A1A1A020104020801071B0201040105010103071B1A1A1A1A1A1A1A1A1A1A1A1E1921192119211921192101913522880E1A061A061A"; _T Zl = x"A0202801"; _T Hex_Digit = x"300A07061A06A0FEA90A07061A06"; _T Zp = x"A0202901"; _T Pattern_White_Space = x"0905120164019F88021802"; -_T Diacritic = x"5E010101470106010401020281F7809F0108050611020401090280FD0580D1013711011B010101020101808608040280860204020303431B5B0B3A0B22027E08290A101C3D01100103041C014A0110016E0110016E0110012F033C011001070177016E0110016E0110016D0210017C017C0601016B010D054B021B01010101010402420301023E017001010228020405190701010A0282C10383B40280B30B0901815B038139080201300F020B68010F0126093602808A0240065219040106010203323F590C250B81BD0101030B030D030D030D028CF003813D0181FA0669045F01A07572010C0201011C0252020E2266036D0280CA011B12390424015F010C0124018095034104330164050903808002A04F3001830110810E0101012F012D02430182FC01849F06012A0109832A02823B0681D503460B310480C0012901480278023E014C010903680280B202510110011807030580CD0103017B0280FB027E0176027301810D028102020401809C0153011201510181A5018102010102510196AF0FA0369A053B078458115002A03FFE04010701029F012E02178220030306080802071E048E823E80C2078177013D0485E0076D030103"; -_T Lowercase = x"611A2F010A01040124180108010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102020203060102010201010101010101010101010101010101020101010101010101010101010101010101020201010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010145012407021E0560012B0101010301020412011B2301020303010101010101010101010101010101010101010101010105010102010202333001010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020101010101010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010130298B472B010482F8068882097780C0410101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010908060A08080808060A080808080E020808080808080501020601030301020804020208080A03010279010D01100D6D01030203011B010401040102020804040121100401834B1A87463001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020701010104010C2601010501A0791301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010113010101010101010101010101010101010101010101010101010103808501010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A010101010201010101010101010104010101020101030101010101010101010101010101010101010101050105010101010101010101010101010101040101010601010101010101010118030101010383352B010E0650A04F40070C0584291A84CD28808824809B0B010F0107010281C3010203012A01098505338BCD20A0558020A0659A1A1A0701121A1A1A0401010107010B1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1C1C1901061A1901061A1901061A1901061A190106010187340A0114060681053E88B422"; -_T Ll = x"611A3A0129180108010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102020203060102010201010101010101010101010101010101020101010101010101010101010101010101020201010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010145011B80C10101010301030312011B2301020303010101010101010101010101010101010101010101010105010102010202333001010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020101010101010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010130298B472B020382F806888209772C3F0D0122660101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010908060A08080808060A080808080E020808080808080501020601030301020804020208080A030102811201030203011B010401040102020804040135018AAB3001010302010101010101040101020106050101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020701010104010C2601010501A07913010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101130101010101010101010101010101010101010101010101010101018087010101010101010101010101030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010801010101020101010101010101010401010102010103010101010101010101010101010101010101010105010501010101010101010101010101010104010101060101010101010101011C01030183352B05090750A04F40070C0584291A84CD28808824809B0B010F010701028703338BCD20A0558020A0659A1A1A0701121A1A1A0401010107010B1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1C1C1901061A1901061A1901061A1901061A190106010187340A0114060689F722"; -_T Extender = x"80B701821802836E0181B901835A0182F0017F018943013801826301818E0144019389012B0567025D03A06F160185F60183C20116018089016C011502A0547B018810028BDA0182680384CF01A050A902849C020101A0715802880603"; -_T Lm = x"82B012040C0E0507010101808501050181DE0180E60180A402810D0204011F010901030180A00180A70184D4017F0182350186DA016B0182630181D00680AE3F0D01222582B1010D01100D8BDF0280F10180BF0181D5012B05050161025D03A06F160184E206810E0172011C027909500117016903030281D50116018089016C01150267040901A05406012D0287E006012A0109A0638504844F0D40020101A0400C0401070102A030313E80C90783AD01845F01"; -_T Mn = x"83007081130581092D0101010201020101480B30151001650702060202010423011E1B5B0B3A09090118040109010301052B033C082A180120370101010408040103070A021D013A010404080114021A010202390104020402020303011E0203010B0239010405010204011402160601013A0102010104080107020B021E013D010C0132010301370101030503010407020B021D013A0102010601050214021C0239020404080114021D014801070301015A0102070C08620102090B0749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F0182BF0383B2031D021E021E02400201070801020B09012D03010175022201760304020901060380DB0202013A010107010101010208060A0201300E01103104300101050101050128090C0220040202010338010102030101033A080202809803010D010704010601030280C64082D00D0401030C8BFE03808D016020822A046B02A075D401040A2002500281100103010401190205018097021A120D012608190B2E0330010204020227014306020202020C0108012F01330101030202050201012A02080180EE0102010401A04F300182E110101083CD0180E201809505868603010205042803040180A502823D048183025003460B31047B01360F290102020A033104020207013D03240501083E010C0234090A0402015F030201010206010201809D0103081502390203012507030580C308020301011701540601010402010280EE04060201021B025508020101026A0101010206010165030204010581030901028100020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B0234050501010194FD01060FA0369A053B078418013F045101A04CB80292612E0217822003110802071E0480940387BB37043208010E011605010F8550070111020701020105640180A0078177013D0481FC0483E0076D07AC17B580F0"; +_T Diacritic = x"5E010101470106010401020281F7809F0108050611020401090280FD0580D1013711011B010101020101808608040280860204020303431B5B0B3A0B22027E08290A101C3D01100103041C014A0110016E0110016E0110012F033C011001070177016E0110016E0110016D0210017C016F010C0601016B010D054B021B01010101010402420301023E017001010228020405190701010A0282C10383B4021E0180940B0901815B0381240114080201300F020B68010F01260936023A010B02420240065219040106010203323F590C250B81BD0101030B030D030D030D028CF003813D0181FA0669045F01A07572010C0201011C0252020E2266036D020C0125018097011B12390424015F010C0124018095034104330164050903808002A04F3001830110810E0101012F012D02430182FC01849F06012A0109827D03040180A502823B0626011A05818F03460B310480C0012901480278023E014C010903680280B2025002100118070305590301020D025F0103017B0280FB027E0176027301810D028102020401809C0153011201510181A5018102010102510181A902170194EC0FA02CD90189C0053B078234028222115002A03FFE04010701029F012E02178220030306080802071E048E823E80C2078177013D0482FE0282E0076D030103"; +_T Lowercase = x"611A2F010A01040124180108010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102020203060102010201010101010101010101010101010101020101010101010101010101010101010101020201010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010145012407021E0560012B0101010301020412011B2301020303010101010101010101010101010101010101010101010105010102010202333001010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020101010101010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010130298B472B010482F80688820901017580C0410101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010908060A08080808060A080808080E020808080808080501020601030301020804020208080A03010279010D01100D6D01030203011B010401040102020804040121100401834B1A87463001010302010101010101040101020108030101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020701010104010C2601010501A0791301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010113010101010101010101010101010101010101010101010101010103808501010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010A01010101020101010101010101010401010102010103010101010101010101010101010101010101010105010501010101010101010101010101010104010101020103010101010101010101010116030101010383352B010E0650A04F40070C0584291A84CD28808824809B0B010F0107010281C3010203012A01098505337D168B3A20A0558020A0659A1A1A0701121A1A1A0401010107010B1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1C1C1901061A1901061A1901061A1901061A190106010187340A0114060681053E88B422"; +_T Ll = x"611A3A0129180108010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101010101010101010101010102010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010201010101030201010102010302040102010303020102010101010102010102010102010301010102020203060102010201010101010101010101010101010101020101010101010101010101010101010101020201010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010702010202010104010101010101010145011B80C10101010301030312011B2301020303010101010101010101010101010101010101010101010105010102010202333001010101010101010101010101010101010101010101010101010101010101010101090101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020101010101010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010130298B472B020382F8068882090101752C3F0D0122660101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010109010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010908060A08080808060A080808080E020808080808080501020601030301020804020208080A030102811201030203011B010401040102020804040135018AAB3001010302010101010101040101020106050101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101020701010104010C2601010501A0791301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010113010101010101010101010101010101010101010101010101010101808701010101010101010101010103010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101080101010102010101010101010101040101010201010301010101010101010101010101010101010101010501050101010101010101010101010101010401010102010301010101010101010101011A01030183352B05090750A04F40070C0584291A84CD28808824809B0B010F010701028703337D168B3A20A0558020A0659A1A1A0701121A1A1A0401010107010B1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1C1C1901061A1901061A1901061A1901061A190106010187340A0114060689F722"; +_T Extender = x"80B701821802836E0181B901827601808901590182F0017F018943013801826301818E0144019389012B0567025D03A06F160185F60183C20116018089016C011502A0547B0188100285CB011B01040184C701812501740281F20384CF01A050A902849C020101A071580284B101835403"; +_T Lm = x"82B012040C0E0507010101808501050181DE0180E60180A402810D0204011F010901030180A00180A70184D4017F0182350186DA016B0182630181D00680AE3F0D01222582B1010D01100D8BDF0280F10180BF0181D5012B05050161025D03A06F160184E206810E0172011C027909500117016903030281D50116018089016C01150267040901A05406012D0287E006012A01098593012001A05DD00481FC03280282260D40020101A0400C0401070102A030313E80C90783AD01845F01"; +_T Mn = x"83007081130581092D0101010201020101480B30151001650702060202010423011E1B5B0B3A09090118040109010301052B033B092A180120370101010408040103070A021D013A010404080114021A010202390104020402020303011E0203010B0239010405010204011402160601013A0102010104080107020B021E013D010C0132010301370101030503010407020B021D013A0102010601050214021C0239020404080114021D014801070301015A0102070C08620102090B0749021B0101010101370E01050102050B0124090166040106010202021902040310040D01020206010F0182BF0383B2031D021E021E02400201070801020B09012D03010175022201760304020901060380DB0202013A010107010101010208060A0201300E01103104300101050101050128090C0220040202010338010102030101033A080202809803010D010704010601030280C64082D00D0401030C8BFE03808D016020822A046B02A075D401040A2002500281100103010401190205018097021A120D012608190B2E0330010204020227014306020202020C0108012F01330101030202050201012A02080180EE0102010401A04F300182E110101083CD0180E201809505868603010205042803040180A502823D044105813D024F04460B31047B01360F290102020A033104020207013D03240501083E010C0234090A0402015F030201010206010201809D0103081502390203012507030546060D01010101010E025508020301011701540601010402010280EE04060201021B025508020101026A01010102060101650101010204010581030901028100020101040180900402020401200A280602040801090602032E0D01028196070106010152160207010201027A060301010201070101480203010101815B020B02340505010101170194E501060FA02CC80C030389C0053B078418013F045101A04CB80292612E0217822003110802071E0480940387BB37043208010E011605010F8550070111020701020105640180A0078177013D0481FC0480FE0282E0076D07AC17B580F0"; _T Sk = x"5E01010147010601040103018209040C0E05070101011175010E0285020197340101030B030D030D030D02909C02A07663170902670283D0010E02A0504611837B01010180A201A0F41705"; -_T Po = x"210301030201010101020A0203021B01440105010E02070182BE01080181D20629013601020102012C02140201020D0101034A0466012B0E80E903360F1F018105020A01808C01780179018186010C01816F015A010A0280A80F010170014A0504026F0680AB018264098305017C034702809D0301032506010481390280D802808007010680AC071C027D043B053E0240080B018342020808080902040203030B0101010A8C9A0401027001808F020403020102090102010102020A05010A02040101010D020381AC03390180BD01A0740202810D0363010A017306817C0456022803010131022F01610D10027C047E02100280F901A052240702011601140202040303010407030601010280950301030201010101020A0203021B0124010202819A03829C013001819E0182E70180C7011F01811009260170074207590483B8052C0480BD076D0201047E0430024F0404010D01010358066B0181A1050A020101680180FA1769031C0D4C0180820380FC01810803809B015C08530301055D0A8137052A028285024A0D80AF018470058B7C02A03A7B0280850141050801835204814701A04CBC019DE7058ED202"; +_T Po = x"210301030201010101020A0203021B01440105010E02070182BE01080181D20629013601020102012C02140201020D0101034A0466012B0E80E903360F1F018105020A01808C01780179018186010C01816F015A010A0280A80F010170014A0504026F0680AB018264098305017C034702809D0301032506010481390280D802808007010680A0020A071C037C043B053E0240080B018342020808080902040203030B0101010A8C9A0401027001808F020403020102090102010102020A05010A02040101010D020381AC03390180BD01A0740202810D0363010A017306817C0456022803010131022F01610D10027C047E02100280F901A052240702011601140202040303010407030601010280950301030201010101020A0203021B0124010202819A03829C013001819E0182E70180C7011F01811009260170074207590483B8052C0480BD076D0201047E0430024F0404010D01010358066B01812A02010272050A020101680180FA1769031C0D4C0180820380FC01810803809B015C08530301055D0A80D7015F052A028285024A0D80AF018470058B7C02A03A7B0280850141050801822803812704814701A04CBC019DE7058B7301835E02"; _T Deprecated = x"814901852901890301010188290288C50682B902ADDCD601"; _T Other_ID_Continue = x"80B70182CF018FE10986680186310290ED01A0CE6901"; _U[] _tab = [ @@ -1007,6 +1021,7 @@ _U("Math_Symbol", Sm), _U("Mc", Mc), _U("Me", Me), _U("Mn", Mn), +_U("Modifier_Combining_Mark", Modifier_Combining_Mark), _U("Modifier_Letter", Lm), _U("Modifier_Symbol", Sk), _U("Nd", Nd), @@ -1125,9 +1140,10 @@ _T Brahmi = x"A110008080"; _T Number_Forms = x"A0215040"; _T Mayan_Numerals = x"A1D2E020"; _T Ornamental_Dingbats = x"A1F65030"; -_T Symbols_for_Legacy_Computing = x"A1FB008100"; +_T Todhri = x"A105C040"; _T Unified_Canadian_Aboriginal_Syllabics_Extended_A = x"A11AB010"; _T Greek_and_Coptic = x"83708090"; +_T Symbols_for_Legacy_Computing = x"A1FB008100"; _T CJK_Unified_Ideographs_Extension_I = x"A2EBF08270"; _T Counting_Rod_Numerals = x"A1D36020"; _T Ethiopic_Extended_B = x"A1E7E020"; @@ -1151,12 +1167,12 @@ _T Variation_Selectors_Supplement = x"AE010080F0"; _T Psalter_Pahlavi = x"A10B8030"; _T Palmyrene = x"A1086020"; _T Tagbanwa = x"976020"; -_T CJK_Unified_Ideographs_Extension_F = x"A2CEB09D40"; +_T Tulu_Tigalari = x"A113808080"; _T Combining_Diacritical_Marks_for_Symbols = x"A020D030"; _T Dingbats = x"A0270080C0"; _T Nyiakeng_Puachue_Hmong = x"A1E10050"; _T Combining_Half_Marks = x"A0FE2010"; -_T Supplementary_Private_Use_Area_A = x"AF0000A10000"; +_T CJK_Unified_Ideographs_Extension_F = x"A2CEB09D40"; _T Playing_Cards = x"A1F0A060"; _T Malayalam = x"8D008080"; _T Indic_Siyaq_Numbers = x"A1EC7050"; @@ -1167,6 +1183,7 @@ _T Zanabazar_Square = x"A11A0050"; _T Ideographic_Symbols_and_Punctuation = x"A16FE020"; _T Symbols_and_Pictographs_Extended_A = x"A1FA708090"; _T High_Private_Use_Surrogates = x"A0DB808080"; +_T Supplementary_Private_Use_Area_A = x"AF0000A10000"; _T Modifier_Tone_Letters = x"A0A70020"; _T Samaritan = x"880040"; _T Egyptian_Hieroglyph_Format_Controls = x"A1343030"; @@ -1216,6 +1233,7 @@ _T Bamum_Supplement = x"A168008240"; _T Cypro_Minoan = x"A12F9070"; _T Basic_Latin = x"008080"; _T Multani = x"A1128030"; +_T Sunuwar = x"A11BC040"; _T Alchemical_Symbols = x"A1F7008080"; _T Bopomofo = x"A0310030"; _T Adlam = x"A1E90060"; @@ -1224,7 +1242,9 @@ _T Old_Turkic = x"A10C0050"; _T Lao = x"8E808080"; _T Cherokee_Supplement = x"A0AB7050"; _T CJK_Compatibility_Ideographs = x"A0F9008200"; +_T Kirat_Rai = x"A16D4040"; _T Latin_Extended_F = x"A1078040"; +_T Myanmar_Extended_C = x"A116D030"; _T Lisu_Supplement = x"A11FB010"; _T Latin_Extended_A = x"81008080"; _T Spacing_Modifier_Letters = x"82B050"; @@ -1239,6 +1259,7 @@ _T Optical_Character_Recognition = x"A0244020"; _T Greek_Extended = x"9F008100"; _T Miscellaneous_Symbols_and_Pictographs = x"A1F3008300"; _T Emoticons = x"A1F60050"; +_T Ol_Onal = x"A1E5D030"; _T Tirhuta = x"A1148060"; _T Marchen = x"A11C7050"; _T Geometric_Shapes_Extended = x"A1F7808080"; @@ -1297,6 +1318,7 @@ _T Ottoman_Siyaq_Numbers = x"A1ED0050"; _T Buhid = x"974020"; _T Myanmar_Extended_A = x"A0AA6020"; _T Manichaean = x"A10AC040"; +_T Garay = x"A10D4050"; _T Miscellaneous_Mathematical_Symbols_B = x"A029808080"; _T Latin_Extended_D = x"A0A72080E0"; _T Avestan = x"A10B0040"; @@ -1305,8 +1327,10 @@ _T Ethiopic_Supplement = x"938020"; _T Arabic = x"86008100"; _T Kayah_Li = x"A0A90030"; _T Javanese = x"A0A98060"; +_T Gurung_Khema = x"A1610040"; _T Lydian = x"A1092020"; _T Aegean_Numbers = x"A1010040"; +_T Symbols_for_Legacy_Computing_Supplement = x"A1CC0082C0"; _T Braille_Patterns = x"A028008100"; _T Buginese = x"9A0020"; _T CJK_Symbols_and_Punctuation = x"A0300040"; @@ -1334,6 +1358,7 @@ _T Superscripts_and_Subscripts = x"A0207030"; _T CJK_Strokes = x"A031C030"; _T Letterlike_Symbols = x"A0210050"; _T CJK_Unified_Ideographs_Extension_D = x"A2B74080E0"; +_T Egyptian_Hieroglyphs_Extended_A = x"A134608FA0"; _T Yijing_Hexagram_Symbols = x"A04DC040"; _T Georgian_Extended = x"9C9030"; _T Khmer_Symbols = x"99E020"; @@ -1497,6 +1522,7 @@ _U("Duployan", Duployan), _U("Early Dynastic Cuneiform", Early_Dynastic_Cuneiform), _U("Egyptian Hieroglyph Format Controls", Egyptian_Hieroglyph_Format_Controls), _U("Egyptian Hieroglyphs", Egyptian_Hieroglyphs), +_U("Egyptian Hieroglyphs Extended-A", Egyptian_Hieroglyphs_Extended_A), _U("Elbasan", Elbasan), _U("Elymaic", Elymaic), _U("Emoticons", Emoticons), @@ -1509,6 +1535,7 @@ _U("Ethiopic Extended", Ethiopic_Extended), _U("Ethiopic Extended-A", Ethiopic_Extended_A), _U("Ethiopic Extended-B", Ethiopic_Extended_B), _U("Ethiopic Supplement", Ethiopic_Supplement), +_U("Garay", Garay), _U("General Punctuation", General_Punctuation), _U("Geometric Shapes", Geometric_Shapes), _U("Geometric Shapes Extended", Geometric_Shapes_Extended), @@ -1524,6 +1551,7 @@ _U("Greek Extended", Greek_Extended), _U("Gujarati", Gujarati), _U("Gunjala Gondi", Gunjala_Gondi), _U("Gurmukhi", Gurmukhi), +_U("Gurung Khema", Gurung_Khema), _U("Halfwidth and Fullwidth Forms", Halfwidth_and_Fullwidth_Forms), _U("Hangul Compatibility Jamo", Hangul_Compatibility_Jamo), _U("Hangul Jamo", Hangul_Jamo), @@ -1563,6 +1591,7 @@ _U("Khmer", Khmer), _U("Khmer Symbols", Khmer_Symbols), _U("Khojki", Khojki), _U("Khudawadi", Khudawadi), +_U("Kirat Rai", Kirat_Rai), _U("Lao", Lao), _U("Latin-1 Supplement", Latin_1_Supplement), _U("Latin Extended-A", Latin_Extended_A), @@ -1618,6 +1647,7 @@ _U("Musical Symbols", Musical_Symbols), _U("Myanmar", Myanmar), _U("Myanmar Extended-A", Myanmar_Extended_A), _U("Myanmar Extended-B", Myanmar_Extended_B), +_U("Myanmar Extended-C", Myanmar_Extended_C), _U("Nabataean", Nabataean), _U("Nag Mundari", Nag_Mundari), _U("Nandinagari", Nandinagari), @@ -1638,6 +1668,7 @@ _U("Old Sogdian", Old_Sogdian), _U("Old South Arabian", Old_South_Arabian), _U("Old Turkic", Old_Turkic), _U("Old Uyghur", Old_Uyghur), +_U("Ol Onal", Ol_Onal), _U("Optical Character Recognition", Optical_Character_Recognition), _U("Oriya", Oriya), _U("Ornamental Dingbats", Ornamental_Dingbats), @@ -1675,6 +1706,7 @@ _U("Spacing Modifier Letters", Spacing_Modifier_Letters), _U("Specials", Specials), _U("Sundanese", Sundanese), _U("Sundanese Supplement", Sundanese_Supplement), +_U("Sunuwar", Sunuwar), _U("Superscripts and Subscripts", Superscripts_and_Subscripts), _U("Supplemental Arrows-A", Supplemental_Arrows_A), _U("Supplemental Arrows-B", Supplemental_Arrows_B), @@ -1688,6 +1720,7 @@ _U("Sutton SignWriting", Sutton_SignWriting), _U("Syloti Nagri", Syloti_Nagri), _U("Symbols and Pictographs Extended-A", Symbols_and_Pictographs_Extended_A), _U("Symbols for Legacy Computing", Symbols_for_Legacy_Computing), +_U("Symbols for Legacy Computing Supplement", Symbols_for_Legacy_Computing_Supplement), _U("Syriac", Syriac), _U("Syriac Supplement", Syriac_Supplement), _U("Tagalog", Tagalog), @@ -1710,8 +1743,10 @@ _U("Thai", Thai), _U("Tibetan", Tibetan), _U("Tifinagh", Tifinagh), _U("Tirhuta", Tirhuta), +_U("Todhri", Todhri), _U("Toto", Toto), _U("Transport and Map Symbols", Transport_and_Map_Symbols), +_U("Tulu-Tigalari", Tulu_Tigalari), _U("Ugaritic", Ugaritic), _U("Unified Canadian Aboriginal Syllabics", Unified_Canadian_Aboriginal_Syllabics), _U("Unified Canadian Aboriginal Syllabics Extended", Unified_Canadian_Aboriginal_Syllabics_Extended), @@ -1742,7 +1777,7 @@ private alias _T = ubyte[]; _T Old_Hungarian = x"A10C80330D330706"; _T Coptic = x"83E20EA02890740507"; _T Ol_Chiki = x"9C5030"; -_T Cyrillic = x"840080850280A997500980A2014C01906720A0784060A0578E02A0E2003E2101"; +_T Cyrillic = x"840080850280A997500B80A0014C01906720A0784060A0578E02A0E2003E2101"; _T Thaana = x"878032"; _T Inscriptional_Parthian = x"A10B40160208"; _T Nabataean = x"A108801F0809"; @@ -1750,9 +1785,10 @@ _T Ogham = x"96801D"; _T Meroitic_Hieroglyphs = x"A1098020"; _T Makasar = x"A11EE019"; _T Siddham = x"A11580360226"; +_T Gurung_Khema = x"A161003A"; _T Old_Persian = x"A103A024040E"; _T Imperial_Aramaic = x"A10840160109"; -_T Myanmar = x"900080A0A099401F6120"; +_T Myanmar = x"900080A0A099401F6120A06C5014"; _T Deseret = x"A1040050"; _T Kaithi = x"A11080430A01"; _T Medefaidrin = x"A16E405B"; @@ -1763,17 +1799,18 @@ _T Devanagari = x"890051040F021AA09F6020A072000A"; _T Tibetan = x"8F0048012404270124010F01070402"; _T Nko = x"87C03B0203"; _T Brahmi = x"A110004E04240901"; +_T Todhri = x"A105C034"; _T Osage = x"A104B0240424"; _T Nushu = x"A16FE101A0418E818C"; _T Cuneiform = x"A12000839A666F01050B80C4"; _T Takri = x"A116803A060A"; _T Toto = x"A1E2901F"; -_T Latin = x"411A061A2F010F010517011F0181C127059A1B2606310504050D01464181008171010D01100D808D0206011B0111298AD720A07AA2660340050201010105180E83302B01090104A04F9607841A1A061A882506012A0109A0D7451F0606"; +_T Latin = x"411A061A2F010F010517011F0181C127059A1B2606310504050D01464181008171010D01100D808D0206011B0111298AD720A07AA2660343020201010108150E83302B01090104A04F9607841A1A061A882506012A0109A0D7451F0606"; _T Hanunoo = x"972015"; _T Limbu = x"99001F010C040C0401030C"; _T Saurashtra = x"A0A88046080C"; _T Lisu = x"A0A4D030A07AB001"; -_T Egyptian_Hieroglyphs = x"A130008456"; +_T Egyptian_Hieroglyphs = x"A1300084560A8F9B"; _T Elbasan = x"A1050028"; _T Palmyrene = x"A1086020"; _T Tagbanwa = x"97600D01030102"; @@ -1792,7 +1829,7 @@ _T Old_Turkic = x"A10C0049"; _T Samaritan = x"88002E020F"; _T Old_South_Arabian = x"A10A6020"; _T Hanifi_Rohingya = x"A10D0028080A"; -_T Balinese = x"9B004D032F"; +_T Balinese = x"9B004D0132"; _T Mandaic = x"88401C0201"; _T SignWriting = x"A1D800828C0F05010F"; _T Tifinagh = x"A02D303807020E01"; @@ -1800,25 +1837,29 @@ _T Tai_Viet = x"A0AA80431805"; _T Syriac = x"87000E013C020381100B"; _T Soyombo = x"A11A5053"; _T Elymaic = x"A10FE017"; +_T Ol_Onal = x"A1E5D02B0401"; _T Hatran = x"A108E01301020505"; _T Chorasmian = x"A10FB01C"; _T Glagolitic = x"A02C0060A1B3A0070111020701020105"; _T Osmanya = x"A104801E020A"; _T Linear_A = x"A10600813709160A08"; +_T Kirat_Rai = x"A16D403A"; _T Mro = x"A16A401F010A0402"; _T Chakma = x"A11100350112"; _T Modi = x"A11600450B0A"; _T Bassa_Vah = x"A16AD01E0206"; +_T Tulu_Tigalari = x"A113800A010102010126010A010102010104010A01020802"; _T Han = x"A02E801A01590C80D62F01010119090E0483C499C040A05200A05900816E026AA07508020C02A0900EA0A6E020903A0680DE0296820E9D310F826E89A2821E85E2934B059060"; _T Multani = x"A112800701010104010F010B"; +_T Sunuwar = x"A11BC0220E0A"; _T Bopomofo = x"82EA02A02E192B7020"; _T Adlam = x"A1E9004C040A0402"; -_T Khitan_Small_Script = x"A16FE4019B1B81D6"; +_T Khitan_Small_Script = x"A16FE4019B1B81D62901"; _T Lao = x"8E810201010105011801010117020501010107010A0204"; _T Psalter_Pahlavi = x"A10B801207040C07"; _T Anatolian_Hieroglyphs = x"A144008247"; _T Canadian_Aboriginal = x"94008280823046A101BA10"; -_T Common = x"00411A061A2F010F010517011F0181C127050502147401090106010101827D0106010E0103012001809C0182040180810284D90181950481220185EF03470280CB02010184CD010D01070401060103020183050C0257010B030B010F11213F2601030206011B01112903048297190B1583A0810082740220016982005E819215010101190F0804045B0203015A0280931020240B0130401F512F015880A899C040A0590022660380A50A80F40180A001818B010E02A051D20280D00A16230113010480930101201A061A0B0A012D02400701070A05810203042D0309500D332D80E41BA0B9A40492AC743C80F60A27023E03110802071E043D80D5140C140C57091980875501470102020102020204010C010101070141010402080107011C010401050101030701815402812402329471444C3D82C22C04640C0F020F010F01250A80AE381A01020D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E02024E81540C0E020D0309072E0107080E040907090780930137250AAC0407011E60"; +_T Common = x"00411A061A2F010F010517011F0181C127050502147401090106010101827D0106010E0103012001809C0182040180810284D90181950481220185EF03470280CB02010184CD010D01070401060103020183050C0257010B030B010F11213F2601030206011B0111290304829A160B1583A0810082740220016982005E819215010101190F0804045B0203015A028093102026090130401F512F015880A899C040A0590022660380A50A80F40180A001818B010E02A051D20280D00A16230113010480930101201A061A0B0A012D02400701070A05810203042D0309500D332D80E41BA0B9A4048F5C80FA0681B4809C743C80F60A27023E03110802071E043D80D5140C140C57091980875501470102020102020204010C010101070141010402080107011C010401050101030701815402812402329471444C3D82C22C04640C0F020F010F01250A80AE381A01020D2C040907020E06809A83D80411030D0377045F060C04010F0C0438080A0628081E020C04023E81540C0E020D030A0538070F020B06090780930166AC0407011E60"; _T Gothic = x"A103301B"; _T Yi = x"A0A000848D0337"; _T Sinhala = x"8D8103011203180109010102070301040601010108060A0203A103EC14"; @@ -1852,10 +1893,11 @@ _T New_Tai_Lue = x"99802C041A060B0302"; _T Sogdian = x"A10F302A"; _T Buhid = x"974014"; _T Manichaean = x"A10AC027040C"; +_T Garay = x"A10D4026031D0802"; _T Greek = x"83700401030204010104010101010301010114013F0E109926053205040554018140160206022602060208010101010101011F0235010F010E0206011302030109812701A08A3E01A055DA4F1101A0D05F46"; _T Braille = x"A028008100"; _T Avestan = x"A10B00360307"; -_T Arabic = x"8600050106010E01030120010A0B1A016C0122503080F01F0102064A011DA0F2507310816B025002360701201070050180878F631F7E03A0DF0004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402"; +_T Arabic = x"8600050106010E01030120010A0B1A016C0122503080F01F0102054B011DA0F2507310816B025002360701201070050180878F631F43033704A0DF0004011B010201010201010A0104010101010601040101010101010301020101020101010101010101010102010102040107010401040101010A01110503010501113402"; _T Javanese = x"A0A9804E020A0402"; _T Lydian = x"A109201A0501"; _T Pau_Cin_Hau = x"A11AC039"; @@ -1888,7 +1930,7 @@ _T Mahajani = x"A1115027"; _T Khmer = x"97805E020A060A81E620"; _T Grantha = x"A113000401080202021601070102010502090202020302010601050702070305"; _T Kannada = x"8C800D01030117010A0105020901030104070206020104020A0103"; -_T Kawi = x"A11F00110129031C"; +_T Kawi = x"A11F00110129031D"; _T Yezidi = x"A10E802A01030202"; _T Old_North_Arabian = x"A10A8020"; _T Tai_Le = x"99501E0205"; @@ -1942,6 +1984,7 @@ _U("Egyptian_Hieroglyphs", Egyptian_Hieroglyphs), _U("Elbasan", Elbasan), _U("Elymaic", Elymaic), _U("Ethiopic", Ethiopic), +_U("Garay", Garay), _U("Georgian", Georgian), _U("Glagolitic", Glagolitic), _U("Gothic", Gothic), @@ -1950,6 +1993,7 @@ _U("Greek", Greek), _U("Gujarati", Gujarati), _U("Gunjala_Gondi", Gunjala_Gondi), _U("Gurmukhi", Gurmukhi), +_U("Gurung_Khema", Gurung_Khema), _U("Han", Han), _U("Hangul", Hangul), _U("Hanifi_Rohingya", Hanifi_Rohingya), @@ -1972,6 +2016,7 @@ _U("Khitan_Small_Script", Khitan_Small_Script), _U("Khmer", Khmer), _U("Khojki", Khojki), _U("Khudawadi", Khudawadi), +_U("Kirat_Rai", Kirat_Rai), _U("Lao", Lao), _U("Latin", Latin), _U("Lepcha", Lepcha), @@ -2018,6 +2063,7 @@ _U("Old_Sogdian", Old_Sogdian), _U("Old_South_Arabian", Old_South_Arabian), _U("Old_Turkic", Old_Turkic), _U("Old_Uyghur", Old_Uyghur), +_U("Ol_Onal", Ol_Onal), _U("Oriya", Oriya), _U("Osage", Osage), _U("Osmanya", Osmanya), @@ -2040,6 +2086,7 @@ _U("Sogdian", Sogdian), _U("Sora_Sompeng", Sora_Sompeng), _U("Soyombo", Soyombo), _U("Sundanese", Sundanese), +_U("Sunuwar", Sunuwar), _U("Syloti_Nagri", Syloti_Nagri), _U("Syriac", Syriac), _U("Tagalog", Tagalog), @@ -2057,7 +2104,9 @@ _U("Thai", Thai), _U("Tibetan", Tibetan), _U("Tifinagh", Tifinagh), _U("Tirhuta", Tirhuta), +_U("Todhri", Todhri), _U("Toto", Toto), +_U("Tulu_Tigalari", Tulu_Tigalari), _U("Ugaritic", Ugaritic), _U("Vai", Vai), _U("Vithkuqi", Vithkuqi), @@ -2284,11 +2333,11 @@ bool isHangT(dchar ch) @safe pure nothrow @nogc static if (size_t.sizeof == 4) { -//2080 bytes +//2112 bytes enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000E0", x" -000001000000014000002500", +000001000000014000002600", x" 020201000402030206020205080702020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -2302,11 +2351,11 @@ x" 000600060006000600060006000600060006000600060006000600060013001200060006001400060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006001500060006000600160006 -0006000600060006001800170019000600060006000600060006001A0006000600060006000600060006000600060006 -0006001B000600060006000600060006000600060006000600060006000600060006000600060006000600060006001C +000600060006000600180017001900060006000600060006001B001A0006000600060006000600060006000600060006 +0006001C000600060006000600060006000600060006000600060006000600060006000600060006000600060006001D 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 -000600060006000600060006000600060006000600060006001E001D0020001F00060006000600060006000600210006 -000600220006000600060006000600060023000600060006000600060006000600060006000600060006000600060006 +000600060006000600060006000600060006000600060006001F001E0021002000060006000600060006000600220006 +000600230006000600060006000600060024000600060006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600000000000000000000000007FFFFFE 000000000420040080000000FF7FFFFFAAAAAAAA55AAAAAAAAAAAB55D4AAAAAA4E243129E6512D2AB5555240AA29AAAA @@ -2315,31 +2364,31 @@ AAAAAAAA93FAAAAAFFFFAA85FFFFFFFFFFEFFFFF01FFFFFF000000030000001F0000000000000000 AAAAAAAA0000AAAA00000000FFFFFFFF000001FF00000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000FFFF0000F7FFFFFF 000000000000000000000000000000000000000000000000000000003F00000000000000000000000000000000000000 -000001FF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 +000005FF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA003F00FF00FF00FF00FF003F3FFF00FF 00FF00FF40DF00FF00CF00DC00DC00FF000000000000000000000000800200001FFF0000000000000000000000000000 0008C40032108000000043C0FFFF00000000001000000000000000000000000000000000000000000000000000000000 0000000000000000FFFF0000000003FF00000000FFFF0000FFFFFFFF3FDA1562AAAAAAAAAAAAAAAAAAAAAAAA0008501A FFFFFFFF000020BF0000000000000000000000000000000000000000000000000000000000000000AAAAAAAA00002AAA -3AAAAAAA00000000000000000000000000000000AAABAAA8AAAAAAAA95FFAAAAAABA50AAAAA082AA02AA050A075C0000 +3AAAAAAA00000000000000000000000000000000AAABAAA8AAAAAAAA95FFAAAAAABA50AAAAA082AA0AAA250A075C0000 00000000FFFF0000F7FFFFFFFFFF03FFFFFFFFFFFFFFFFFF000000000000000000F8007F000000000000000000000000 00000000000000000000000000000000000000000000000007FFFFFE0000000000000000000000000000000000000000 00000000FFFFFF000000FFFF000000000000000000000000FF0000000FFFFFFF00000000000000000000000000000000 FF8000001BFBFFFB000000000000000000000000000000000000000000000000FFFFFFB907FDFFFF0000000000000000 -000000000000000000000000000000000000000000000000FFFFFFFF0007FFFF00000000000000000000000000000000 -0000000000000000FFFFFFFF00000000000000000000000000000000FFFFFFFF00000000000000000000000000000000 -FC000000000FFFFFFFDFC000000000FF0FFFFFFCEBC000000000FFEFFFFFFC00C000000F00FFFFFFFFFC000000000FFF -FFFFFFC0FC000000000FFFFFFFFFC000000000FF0FFFFFFCFFC000000000FFFFFFFFFC000000003FF7FFFFFCF0000003 -0FDFFFFFFFC00000003F7FFFFFFF00000000FDFFFFFFFC0000000BF7000000007FFFFBFF000007E00000000000000000 -0000000000000000000000000000000000000000FFFF0000FFFFFFFF00003FFF00000000000000000000000000000000 -00000000FFFFFFFC0000000F000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +000000000000000000000000000000000000000000000000FFFFFFFF0007FFFF000000000000000000000000FFFF0000 +0000003F000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF00000000 +000000000000000000000000FFFFFFFF00000000000000000000000000000000FC000000000FFFFFFFDFC000000000FF +0FFFFFFCEBC000000000FFEFFFFFFC00C000000F00FFFFFFFFFC000000000FFFFFFFFFC0FC000000000FFFFFFFFFC000 +000000FF0FFFFFFCFFC000000000FFFFFFFFFC000000003FF7FFFFFCF00000030FDFFFFFFFC00000003F7FFFFFFF0000 +0000FDFFFFFFFC0000000BF7000000007FFFFBFF000007E0000000000000000000000000000000000000000000000000 +00000000FFFF0000FFFFFFFF00003FFF0000000000000000000000000000000000000000FFFFFFFC0000000F00000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); -//1856 bytes +//1888 bytes enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000000E0", x" -000001000000014000001E00", +000001000000014000001F00", x" 020201000402030206020205080702020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -2353,11 +2402,11 @@ x" 000600060006000600060006000600060006000600060006000600060010000F00060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600110006 -000600060006000600130012000600060006000600060006000600140006000600060006000600060006000600060006 -000600150006000600060006000600060006000600060006000600060006000600060006000600060006000600060016 +000600060006000600130012000600060006000600060006001500140006000600060006000600060006000600060006 +000600160006000600060006000600060006000600060006000600060006000600060006000600060006000600060017 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 -00060006000600060006000600060006000600060006000600180017001A001900060006000600060006000600060006 -00060006000600060006000600060006001B0006000600060006000600060006001C0006000600060006000600060006 +00060006000600060006000600060006000600060006000600190018001B001A00060006000600060006000600060006 +00060006000600060006000600060006001C0006000600060006000600060006001D0006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 0006000600060006000600060006000600060006000600060006000600060006000000000000000007FFFFFE00000000 00000000000000007F7FFFFF0000000055555555AA555555555554AA2B555555B1DBCED611AED2D54AAAA49055D25555 @@ -2366,26 +2415,27 @@ FFFED74000000FFB551C8000E6905555FFFFFFFF0000FFFF00000000555555555555540155555555 55555555FFFE5555007FFFFF000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000020BF00000000 0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF003FFFFF00000000000000000000000000000000 -FFFF0000E7FFFFFF00000000000000005555555555555555555555555555555540155555555555555555555555555555 +FFFF0200E7FFFFFF00000000000000005555555555555555555555555555555540155555555555555555555555555555 3F00FF00FF00FF00AA003F000000FF00000000000F0000000F000F000F001F003E273884C00F3D50000000200000FFFF 000000080000000000000000000000000000000000000000000000000000000000000000FFC000000000FFFF00000000 FFFFFFFF0000FFFF00000000C025EA9D5555555555555555555555550004280500000000000000005555555500001555 -055555550000000000000000000000000000000055545554555555556A00555555452855555F7D55014102F500200000 +055555550000000000000000000000000000000055545554555555556A00555555452855555F7D5515411AF500200000 0000000007FFFFFE000000000000000000000000000000000000000000000000FFFFFFFF000000FF0000000000000000 00000000FFFF0000000FFFFF00000000000000000000000000000000F7FF00000037F7FF000000000000000000000000 -00000000000000000000000000000000FFFFFFFF0007FFFF000000000000000000000000000000000000000000000000 -00000000FFFFFFFF00000000000000000000000000000000FFFFFFFF0000000000000000000000000000000000000000 -03FFFFFFFFF0000000003FFFFFFFFF00D0000003003FDE64FFFF0000000003FF1FDFE7B07B0000000001FC5FFFFFF000 -0000003F03FFFFFFFFF0000000003FFFFFFFFF00F0000003003FFFFFFFFF0000000003FFFFFFFF000000000107FFFFFC -F0000000001FFFFFFFC0000000007FFFFFFF0000000001FF0000040000000000FFFFFFFF000000030000000000000000 -0000000000000000000000000000000000000000FFFF0000FFFF03FFFFFF03FF000003FF000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +00000000000000000000000000000000FFFFFFFF0007FFFF00000000000000000000000000000000FFFF00000000003F +000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000 +0000000000000000FFFFFFFF000000000000000000000000000000000000000003FFFFFFFFF0000000003FFFFFFFFF00 +D0000003003FDE64FFFF0000000003FF1FDFE7B07B0000000001FC5FFFFFF0000000003F03FFFFFFFFF0000000003FFF +FFFFFF00F0000003003FFFFFFFFF0000000003FFFFFFFF000000000107FFFFFCF0000000001FFFFFFFC0000000007FFF +FFFF0000000001FF0000040000000000FFFFFFFF00000003000000000000000000000000000000000000000000000000 +00000000FFFF0000FFFF03FFFFFF03FF000003FF00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", ); -//11648 bytes +//11904 bytes enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -0000010000000480000011C0", +000001000000048000001240", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -2421,17 +2471,17 @@ x" 000000000000000000000036000000000000000000000000000000000000000000000000000000000038003700000000 0000000000000000000000000000000000000000000000000000000000000000003A0039003C003B003D00000000003E 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000040003F00000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000040003F00410000000000420000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000042004100000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000044004300000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000450044000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000470046000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -2443,199 +2493,204 @@ x" 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -091DFFFF08E50080031905FB090B00BD09D00B9A0B2B006B082606C70AD200E00467083805D105940A33078501930180 -04D9051EFFFF02F9FFFFFFFFFFFFFFFF091EFFFF08E60081031A05FC090C00BE09D10B9B0B2C006C082706C80AD300E1 -0468083905D205950A3407860194018104DA051FFFFF02FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0965FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AE077B0856011809BB0AD803DB0257038F05590B4D01280397062B03150047 -08DD05F3029F0086058B0711FFFF00CB09820AE204FB02130880070108EF0A4505AF077C0857011909BC0AD903DC0258 -0390055A0B4E01290398062C0316004808DE05F402A00087058C0712FFFF00CC09830AE304FC021408810702036A0A46 -09DD09DC04CC04CB01CD01CC0B580B57020001FF0732073100CE00CD08AF08AE005C005B06140613005200510620061F -02B202B106630662015A0159080108000B890B8807E707E604BE04BD0A620A6101B401B305930592021C021B096D096C -FFFFFFFF0879087809390938031C031B0094FFFF06FD0095008E06FE081C008F0B30081D07CA0B31012007CB0A230121 -FFFF0A2404DC04DB07C507C40B660B6506BD06BC016201610683068202AA02A9060A0609000D000C064106400070006F -083B083A00D200D10728072701DF01DE0B810B8001A201A104C604C50A520A5107CF07CE056605650977097609FB09FA -0625036B0021062605FD002205D305FE068806910B180B17026A0269027505260B39027601AF07FAFFFF01B00AC20769 -08B40A47052008B50229027B09900B0900970096FFFF04C908EB00AA032B00D300190018062E062D0105010403CF0553 -09A603D0FFFFFFFF01690168075907EE01A7075A052C077F0301052D0AC0030202560255FFFFFFFF0920091F01ADFFFF -FFFFFFFFFFFFFFFF092A092905E0092B05E205E10AE50AE404FD0AE6079804FE0A5D0799076B0A5E0441076C0A800442 -02FD0A81055102FE076A05520B540B5306550654016B016A05FA05F902C002BF0647064600F200F106A906A80570056F -0ABAFFFF0ABC0ABB0748074701AE022A0B6E0B6D01EB01EA041A04190971097008410840059F059E0940093F08BE08BD -03AE03AD089808970B120B11041C041B040B040A0A8F0A8E02B402B305310530016D016C07F107F005B705B6084B084A -FFFF00D406CE06CD006400630B830B8200C200C1073E073D00790078088A0889057A057906F506F4FFFFFFFFFFFFFFFF -FFFFFFFF07960A0E04CA0797095D07BE014B028B0692014C02D3041D09D509D409260925032403230954095309F709F6 -0B1F04020689021DFFFF052707FB0B3A0AC3FFFF0A48FFFFFFFF0941FFFFFFFF0B2E0521027CFFFF0B76FFFFFFFF00B5 -0B0A0991063C00F9FFFF098A00ABFFFF05A0FFFFFFFF08EC032CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0031FFFFFFFFFFFF -FFFF055409A70516FFFFFFFF0350FFFF041E07EF078001A8FFFF02D4FFFFFFFFFFFFFFFFFFFF0AC1FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF0092FFFFFFFF070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0972FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04A504A401CF01CEFFFFFFFF01F601F5 -FFFFFFFF0A37FFFF086E01220382FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0299082806D7FFFF00EBFFFF07F209CA0BA0 -04B30386017C04AE0ABD0A17016601D20973059A0B070B32081E09660106039B062F0B73068AFFFF0607032D00AC0345 -06FA08FD009A084C06D8029A00EC082904B409CE017D04AF0ABE0A18016701D30974059B0B080B33081F09670107039C -06300B74068C068B0608032E00AD034606FB08FE009B084D0BA107F3097809CB059C04B0FFFFFFFF0347FFFF09790B75 -018C018B04A904A80A890A88085F085E058205810989098809DF09DE03BC03BB02F602F508C208C1044A044903630362 -06310B34038301D60ABF059D0A84FFFF01D70A8505DB05DA0A38FFFF086F0123051A04F1096E0291098E0AF505AC0090 -08F906FF08F700A0031D05EF0391009C0B45071F03C1054003D306E70AB6027D086A0A8C04B7012607AA080A01B90A14 -051107EC02DF0A730ACE09A4015B02450664057B0B5B093A062109F0005303C30B46072003C2054103D406E80AB7027E -086B0A8D04B8012707AB080B01BA0A15051207ED02E00A740ACF09A5015C02460665057C0B5C093B062209F1005403C4 -051B04F2096F0292098F0AF605AD009108FA070008F800A1031E05F00392009D0AA30AA205CD05CC024402430B4A0B49 -01FA01F903E603E509B609B50859085805A305A208E008DF08C608C5039A0399088808870937093603DE03DD04180417 -0B220B21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A705A6082B082A00E600E506D006CF005E005D061C061B00050004 -0730072F00CA00C908AD08AC0568056706B506B4010B010A04F004EF01A0019F0A110A100458045707BB07BA0B700B6F -083108300407040609BF09BE08EE08ED0326032508DA08D909F909F803B803B706C202DB021F06C305D80220023705D9 -0A21023804A00A22079204A102DC0793023C023B055C055B0262026106E406E30058005706280627001E001D06790678 -011301120677067602480247056A0569011B011A07A907A8049B049A077807770A910A90046A0469023602350B000AFF -038C038B042C042B090E090D08CA08C903380337092409230A010A0003D803D7082508240A950A94079B079A01CB01CA -0A1C0A1B02C402C304EC04EB0171017006A506A405BB05BA064D064C002C002B06390638003800370B6A0B6900B400B3 -073807370ACD0ACC088E088D04EE04ED0BA2FFFF0227017E071904B50A9A029308520AC40589047D06D503A701330B63 -067C038403030352067E09030135092C06D905B40B270949085A0A060501052407150295022F0A3D05DC0184FFFF0787 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BA3FFFF0228017F071A04B60A9B029408530AC5058A047E06D603A801340B64 -067D038503040353067F09040136092D06DA05B50B28094A085B0A07050205250716029602300A3E05DD0185FFFF0788 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF082209B7050D03EB06F601F001B10B8E -0485024101B704980A9E0A9C046D087C07FE056B0AF706A0039300F704310648090902D908C3068F033B014F09170672 -09EA0B4F03D1084E02E101080AA8FFFFFFFFFFFFFFFFFFFF0A55FFFFFFFFFFFF0AE7015303FC0699042D05C409320668 -0317002D03C905F109F2002509270B3B055D008C085C06B009AB0AE004290882021504FF0A0A0761024901DA071304D3 -0AAE02A108180998058703E106EC03CB011E0B35FFFF039F000EFFFF06950905FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -043305D6036000C3081606C00934006D0374089309FC0B2908BB06030335007E01F70A6D0A5B02CD095506B8055F0137 -0B7E07DA07C8057504DF048B075D09EE02E7044F064E03780141085006A209A00041045D089B091900450B9C06340313 -023309B10B6709E000820271073905430A0C0ADE077D071701E4052804B908B609FE028903AF06DB05B801FB08060B23 -034C05DE035A067A02AD0139092E06860B84004B038D062304390061FFFFFFFF0B85004C038E0624043A0062FFFFFFFF -06E9054205130A160A760A7505CE093CFFFF069DFFFFFFFFFFFFFFFFFFFFFFFF0AE8015403FD069A042E05C509330669 -0318002E03CA05F209F3002609280B3C055E008D085D06B109AC0AE1042A0883021605000A0B0762024A01DB071404D4 -0AAF02A208190999058803E206ED03CC011F0B36FFFF03A0000FFFFF06960906FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0507FFFFFFFFFFFF030DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B92 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -06F306F204C804C7077607750B870B860803080204740473098509840260025F057805770908090708F408F303340333 -02CC02CB09140913045C045B03D603D50B040B0307C707C604DE04DD0A1E0A1D01AC01AB05CB05CA0240023F072C072B -00DB00DA083F083E0060005F0616061500130012060E060D02A402A306940693015E015D06B706B605B105B0079F079E -0A640A6304930492020802070B5A0B59020E020D03E003DF09460945087B087A03550354090008FF08D208D1037D037C -088508840962096103DA03D9020402030B3E0B3D01B601B50480047F0A420A4107DD07DC05C305C208110810014E014D -065D065C02AC02AB06330632004A0049061E061D0089008808A308A2053F053E073607350206020504C204C101D101D0 -0A5A0A590440043F07D107D0FFFFFFFFFFFFFFFF0886FFFFFFFFFFFFFFFF08F00308030708E808E709C909C803A403A3 -025402530ADD0ADC0430042F07E507E40A260A2507B107B004C404C307220721021A0219054605450099009807040703 -00A300A205F805F7004E004D06530652012501240AFA0AF902F402F30533053201170116077207710497049607B507B4 -0A700A6F03F703F6024E024D0B7D0B7C03BE03BD043C043B08D408D308F608F5035F035E0922092109950994054C054B -08A508A40A780A7704520451019A01990A4A0A4901D501D406E006DF00EE00ED03A906050A020035094F0B41055500F3 -03AA06060A03003609500B42055600F40A35076D022B019D06F804CDFFFFFFFF0A36076E022C019E06F904CEFFFFFFFF -05FF039D00160305068008E9017208700600039E00170306068108EA017308710A3902E501820AC804AA01A301E0078E -0A3A02E601830AC904AB01A401E1078F034E0074035605E308BF000AFFFFFFFF034F0075035705E408C0000BFFFFFFFF -01E6FFFF0A5FFFFF04D5FFFF076FFFFF01E7FFFF0A60FFFF04D6FFFF0770FFFF02C509920656043D002903B305E50B8C -02C609930657043E002A03B405E60B8D02ED044709D602D502090A71041F05CF000808E30A570AB006190321FFFFFFFF -09680B1B03A5028502C1066608F1012A09690B1C03A6028602C2066708F2012B03B906E109F4028F07F40B1305B201FD -03BA06E209F5029007F50B1405B301FE0B7A09E400DC09B3073F0590007C02810B7B09E500DD09B407400591007D0282 -066A0370097CFFFFFFFFFFFFFFFFFFFF066B037102EE0448FFFF097DFFFF0975FFFFFFFF00F5FFFFFFFFFFFFFFFFFFFF -09D702D6020A0A72FFFF00F6FFFFFFFF035C00BB0387FFFFFFFFFFFFFFFFFFFF035D00BC042005D0FFFFFFFFFFFFFFFF -01C3017609CFFFFF029BFFFFFFFFFFFF01C401770A580AB1FFFF029CFFFFFFFFFFFFFFFF03BFFFFFFFFFFFFFFFFFFFFF -000908E4061A0322FFFF03C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06FC -FFFFFFFF09BD0B2DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0951FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0952FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A7907B204590494017807670A4309DA01EC0534070902F100DE0AEB082E044D -0A7A07B3045A0495017907680A4409DB01ED0535070A02F200DF0AEC082F044EFFFFFFFF0874FFFFFFFF0875FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0596037A00A60B250745081A052A03FE089909CC -0A92020F07B60487018D02210AA0071D029D010205180860097A0B1D0943065E0597037B00A70B260746081B052B03FF -089A09CD0A93021007B70488018E02220AA1071E029E010305190861097B0B1E0944065FFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF065803C7010C0AED06B2082C050B0443 -086C0A4F0AB201C80753049C0225020B0B5F070B02770538040C0812098600A8093D070505A4002F095B063A08CF003B -03A10670087601510B0B068403E705D4040407D20AA4011402E304BB053A01BB065903C8010D0AEE06B3082D050C0444 -086D0A500AB301C90754049D0226020C0B60070C02780539040D0813098700A9093E070605A50030095C063B08D0003C -03A20671087701520B0C068503E805D5040507D30AA5011502E404BC053B01BC003A0039030E063D0A0F003209D807BF -037E09D90265037F0B200266040305A1FFFF021E0A1A0A19074DFFFFFFFF074EFFFFFFFFFFFFFFFFFFFFFFFF028C095E -02A602A5033A033908CC08CB091209110373037202B902B8099709960470046F07FD07FC0B560B55077A077904B204B1 -0A660A6501E901E8056E056D00D600D5072A07290066006508A908A80020001F062A0629005A00590B1A0B1902640263 -06BF06BE0190018F07C107C005BD05BC0750074F0A3C0A3B04E204E10280027F0B020B0103AC03AB0472047109580957 -08D608D5032803270931093009C109C0057E057D083308320AAD0AAC04220421021802170A130A1201A601A5070E070D -010F010E08210820FFFFFFFFFFFFFFFFFFFFFFFF0358FFFF03290359FFFF032AFFFFFFFF06D206D1FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF082309B8050E03EC06F701F101B20B8F0486024201B804990A9F0A9D046E087D -07FF056C0AF806A1039400F804320649090A02DA08C40690033C01500918067309EB0B5003D2084F02E201090AA9FFFF -FFFFFFFFFFFFFFFF0A56FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01D901D80A200A1F0A990A98079D079C0140013F069F069E02BB02BA04F604F5003E003D0643064205BF05BE064B064A -00770076073C073B0040003F0B6C0B6B04EA04E9078407830AD50AD40892089102C802C70AC70AC6017B017AFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0515051402980297094C094B0A050A04 -07AF07AE0A830A820A400A3F018A0189074A074900AF00AE088C088B052F052E05EC05EB00340033FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0007000608AB08AA00C600C5 -06F106F000E800E70610060F00680067FFFFFFFF01580157083508340B4C0B4B0504050309C309C20A2C0A2B02B002AF -087F087E0960095F09810980039603950B5E0B5D08550854031203110330032F0212021105A905A804110410098D098C -051D051C08690868023E023D0A280A2700FF00FE066D066C0B100B0F06A706A6015601550661066002EA02E9069C069B -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07A2FFFF04D707A3050804D80B720B710586058509BA09B90AD10AD008450844 -FFFFFFFF004FFFFF0B770050FFFFFFFF0B0E0B0D024C024BFFFF079003B203B107D907D8049F049E03FB03FA09E309E2 -0510050F027A0279080F080E011D011C07080707094200B6098B0B2FFFFF00FA035107100B61009305EA05E9009F009E -06E606E5013E013D0550054F028E028D080508040436043505170791075B0B930174075CFFFF0175FFFFFFFFFFFFFFFF -02F802F7FFFFFFFFFFFFFFFF0310030F0AF20AF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09ECFFFFFFFF09EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B62FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -043405D7036100C4081706C10935006E0375089409FD0B2A08BC06040336007F01F80A6E0A5C02CE095606B905600138 -0B7F07DB07C9057604E0048C075E09EF02E80450064F03790142085106A309A10042045E089C091A00460B9D06350314 -023409B20B6809E100830272073A05440A0D0ADF077E071801E5052904BA08B709FF028A03B006DC05B901FC08070B24 -034D05DF035B067B02AE013A092F0687FFFFFFFFFFFFFFFF080CFFFFFFFF080DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09C4FFFF02670AF305AA0143094D0644074B04CF0B78077307C2013B040004F7 -054D025902EF03ED0A860AB4019707A4060108C7FFFF0453FFFFFFFFFFFFFFFF09C5FFFF02680AF405AB0144094E0645 -074C04D00B79077407C3013C040104F8054E025A02F003EE0A870AB5019807A5060208C8FFFF0454FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07510A6705C0075F07EA012F09AF0AAA0AFB095902DD099E04E304F9014507D4 -047900E908CD063602CF0043036C0723040802D1025D05490B8A0147038006740ACA0A7B047B078C023104830B510781 -07520A6805C1076007EB013009B00AAB0AFC095A02DE099F04E404FA014607D5047A00EA08CE063702D00044036D0724 -040902D2025E054A0B8B0148038106750ACB0A7C047C078D023204840B520782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AD60A4B074107D6022305710B05099A -09C6022D07940B3F04A2024F0763048105C6033106AA034301BF0B3706C90283028709AD065003C5002702EB060B08D7 -0A2D075508B00A2FFFFFFFFFFFFFFFFF0AD70A4C074207D7022405720B06099B09C7022E07950B4004A3025007640482 -05C7033206AB034401C00B3806CA0284028809AE065103C6002802EC060C08D80A2E075608B10A30FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0463088F026B00A40AE906AC0251011009470B43FFFF00B708FB05E7090100B907CC080801310B470561083602FF03E3 -04230583FFFF02A707650A2904E50477063E0A31FFFF03B506D302C90890FFFF00A5046406AD026C01110AEA0B440252 -00B8094805E8FFFF00BA08FC080909020B4807CD0837013203E405620584030002A804240A2AFFFF047807660A3204E6 -03B6063F02CAFFFFFFFF06D4FFFFFFFF048904D10149019107E20B94057301E203E90697044505C80A8A07E803090A4D -0B90091500C7090F072D0341008A0895086604610100096A071B089D007A036605220201033F04BF0ADA0A69046507A0 -083C0963053C046B06EA023901BD0B9609E602FBFFFF066EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -048A04D2014A019207E30B95057401E303EA0698044605C90A8B07E9030A0A4E0B91091600C80910072E0342008B0896 -086704620101096B071C089E007B036705230202034004C00ADB0A6A046607A1083D0964053D046C06EB023A01BE0B97 -09E702FCFFFF066FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01DC057F0B9807A601C101A904E70490036E00CF08420733097E00EF045F0848015F0B15068D087202D7034A061108E1 -0A6B036408460AB80557045506BA03CD01DD05800B9907A701C201AA04E80491036F00D008430734097F00F004600849 -01600B16068E087302D8034B061208E20A6C036508470AB90558045606BB03CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -09A20084031F07250412025B040E05F5091B0069056306DD034800100A08061704AC0475019507AC06EE030B01EE0AA6 -08A604F30AEF06CB09E80A53050507B809A30085032007260413025C040F05F6091C006A056406DE034900110A090618 -04AD0476019607AD06EF030C01EF0AA708A704F40AF006CC09E90A54050607B903F8065A08B2005508DB05ED04370023 -03760598000000BF0814074305090536000207BC0757019B044B04A60A96033D02730AFD0547016E099C06AE09D20B9E -0014036803F9065B08B3005608DC05EE0438002403770599000100C008150744050A0537000307BD0758019C044C04A7 -0A97033E02740AFE0548016F099D06AF09D30B9F00150369FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +0947FFFF090D008203250611093500BF09FE0BD00B61006D084606E10B0400E20475085805E705AA0A6307A301950182 +04EB0534FFFF0303FFFFFFFFFFFFFFFF0948FFFF090E008303260612093600C009FF0BD10B62006E084706E20B0500E3 +0476085905E805AB0A6407A40196018304EC0535FFFF0304FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF098FFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C407990876011A09E70B0A03E70261039B056F0B83012A03A3064103210049 +0905060902A9008805A1072BFFFF00CD09AC0B160511021D08A0071B09190A7505C5079A0877011B09E80B0B03E80262 +039C05700B84012B03A406420322004A0906060A02AA008905A2072CFFFF00CE09AD0B170512021E08A1071C03760A76 +0A0D0A0C04DE04DD01D501D40B8E0B8D020A0209074E074D00D000CF08D708D6005E005D062A06290054005306360635 +02BC02BB067B067A015C015B081F081E0BBF0BBE0805080404D004CF0A940A9301BA01B905A905A80226022509970996 +FFFFFFFF0899089809630962032803270096FFFF0717009700900718083C00910B66083D07E80B67012207E90A530123 +FFFF0A5404EE04ED07E307E20B9C0B9B06D706D601640163069B069A02B402B30620061F000D000C0659065800720071 +085B085A00D400D30744074301E901E80BB70BB601A601A504D804D70A840A8307ED07EC057C057B09A109A00A2B0A2A +063B03770023063C0613002405E9061406A006A90B4E0B4D02740273027F053C0B6F028001B30818FFFF01B40AF40787 +08DC0A77053608DD0233028509BA0B3F00990098044704DB091500AC033700D5001B001A064406430107010603DB0569 +09D203DCFFFFFFFF016B016A0777080C01AB07780542079D030B05430AF2030C0260025FFFFFFFFF094A094901B1FFFF +FFFFFFFFFFFFFFFF0954095305F6095505F805F70B190B1805130B1A07B605140A8F07B707890A90044F078A0AB20450 +03070AB305670308078805680B8A0B89066D066C016D016C0610060F02CA02C9065F065E00F400F306C106C005860585 +0AECFFFF0AEE0AED0766076501B202340BA40BA301F501F404260425099B099A0861086005B505B4096A096908E608E5 +03BA03B908BC08BB0B480B4704280427041704160AC10AC002BE02BD05470546016F016E080F080E05CD05CC086B086A +FFFF00D606E806E7006600650BB90BB800C400C3075C075B007B007A08AA08A90590058F070F070EFFFFFFFFFFFFFFFF +FFFFFFFF07B40A3E04DC07B5098707DC014D029506AA014E02DD04290A030A020950094F0330032F097E097D0A270A26 +0B55040E06A10227FFFF053D08190B700AF5FFFF0A78FFFFFFFF096BFFFFFFFF0B6405370286FFFF0BAC069EFFFF00B7 +0B4009BB065400FBFFFF09B400ADFFFF05B6FFFFFFFF09160338FFFFFFFFFFFFFFFFFFFFFFFFFFFF0033FFFFFFFFFFFF +FFFF056A09D3052CFFFFFFFF035CFFFF042A080D079E01ACFFFF02DEFFFFFFFFFFFFFFFFFFFF0AF3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0094FFFFFFFF0729FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF099CFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04B504B401D701D6FFFFFFFF020001FF +FFFFFFFF0A67FFFF088E0124038EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02A3084806F1FFFF00EDFFFF081009F80BD6 +04C50392017E04BE0AEF0A47016801DA099D05B00B3D0B68083E0990010803A706450BA906A2FFFF061D033900AE0351 +07140927009C086C06F202A400EE084904C609FC017F04BF0AF00A48016901DB099E05B10B3E0B69083F0991010903A8 +06460BAA06A406A3061E033A00AF035207150928009D086D0BD7081109A209F905B204C0FFFFFFFF0353FFFF09A30BAB +018E018D04B904B80ABB0ABA087F087E0598059709B309B20A0F0A0E03C803C7030002FF08EA08E904580457036F036E +06470B6A038F01DE0AF105B30AB6FFFF01DF0AB705F105F00A68FFFF088F0125053005050998029B09B80B2B05C20092 +09230719092100A203290605039D009E0B7B073903CD055603DF07010AE80287088A0ABE04C9012807C8082801BF0A44 +0527080A02E90AA50B0009D0015D024F067C05910B91096406370A20005503CF0B7C073A03CE055703E007020AE90288 +088B0ABF04CA012907C9082901C00A450528080B02EA0AA60B0109D1015E0250067D05920B92096506380A21005603D0 +053105060999029C09B90B2C05C300930924071A092200A3032A0606039E009F0AD50AD405E305E2024E024D0B800B7F +0204020303F203F109E209E10879087805B905B80908090708EE08ED03A603A508A808A70961096003EA03E904240423 +0B580B57FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BD05BC084B084A00E800E706EA06E90060005F0632063100050004 +074C074B00CC00CB08D508D4057E057D06CF06CE010D010C0504050301A401A30A410A400466046507D907D80BA60BA5 +085108500413041209EB09EA0918091703320331090209010A290A2803C403C306DC02E5022906DD05EE022A024105EF +0A51024204B00A5207B004B102E607B10246024505720571026C026B06FE06FD005A0059063E063D0020001F06910690 +01150114068F068E025202510580057F011D011C07C707C604AB04AA079607950AC30AC2047804770240023F0B360B35 +03980397043804370938093708F208F103440343094E094D0A310A3003E403E3084508440AC70AC607B907B801D101D0 +0A4C0A4B02CE02CD050004FF0173017206BD06BC05D105D006650664002E002D06510650003A00390BA00B9F00B600B5 +075607550AFF0AFE08AE08AD050205010BD8FFFF02310180073304C70ACC029D08720AF6059F048D06EF03B301350B99 +06940390030D035E0696092D0137095606F305CA0B5D0973087A0A360517053A072F029F02390A6D05F20186FFFF07A5 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BD9FFFF02320181073404C80ACD029E08730AF705A0048E06F003B401360B9A +06950391030E035F0697092E0138095706F405CB0B5E0974087B0A370518053B073002A0023A0A6E05F30187FFFF07A6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084209E3052303F7071001FA01B50BC4 +0495024B01BD04A80AD00ACE047B089C081C05810B2D06B8039F00F9043D0660093302E308EB06A7034701510941068A +0A1A0B8503DD086E02EB010A0ADAFFFFFFFFFFFFFFFFFFFF0A87FFFFFFFFFFFF0B1B0155040806B1043905DA095C0680 +0323002F03D506070A22002709510B710573008E087C06CA09D70B14043508A2021F05150A3A077F025301E4072D04E5 +0AE002AB083809C2059D03ED070603D701200B6BFFFF03AB000EFFFF06AD092FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +043F05EC036C00C5083606DA095E006F038008B30A2C0B5F08E306190341008002010A9F0A8D02D7097F06D205750139 +0BB407F807E6058B04F1049B077B0A1E02F1045D066603840143087006BA09CA0043046B08BF094300470BD2064C031F +023D09DD0B9D0A100084027B075705590A3C0B10079B073101EE053E04CB08DE0A2E029303BB06F505CE020508320B59 +035805F40366069202B7013B095806C60BBA004D0399063904450063FFFFFFFF0BBB004E039A063A04460064FFFFFFFF +0703055805290A460AA80AA705E40966082406B5FFFF0825FFFFFFFFFFFFFFFF0B1C0156040906B2043A05DB095D0681 +0324003003D606080A23002809520B720574008F087D06CB09D80B15043608A3022005160A3B0780025401E5072E04E6 +0AE102AC083909C3059E03EE070703D801210B6CFFFF03AC000FFFFF06AE0930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +051DFFFFFFFFFFFF0319FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BC8 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +070D070C04DA04D9079407930BBD0BBC082108200482048109AF09AE026A0269058E058D09320931091E091D0340033F +02D602D5093E093D046A046903E203E10B3A0B3907E507E404F004EF0A4E0A4D01B001AF05E105E0024A024907480747 +00DD00DC085F085E00620061062C062B001300120624062302AE02AD06AC06AB0160015F06D106D005C705C607BD07BC +0A960A9504A304A2021202110B900B8F0218021703EC03EB0970096F089B089A03610360092A092908FA08F903890388 +08A508A4098C098B03E603E5020E020D0B740B7301BC01BB0490048F0A720A7107FB07FA05D905D8082F082E0150014F +0675067402B602B506490648004C004B06340633008B008A08C708C605550554075407530210020F04D404D301D901D8 +0A8C0A8B044E044D07EF07EEFFFFFFFFFFFFFFFF08A6FFFFFFFFFFFFFFFF091A031203110910090F09F709F603B003AF +025E025D0B0F0B0E043C043B080308020A560A5507CF07CE04D604D5073C073B02240223055C055B009B009A071E071D +00A500A4060E060D0050004F066B066A012701260B300B2F02FE02FD05490548011901180790078F04A704A607D307D2 +0AA20AA104030402025802570BB30BB203CA03C9044A044908FC08FB0920091F036B036A094C094B09BF09BE05620561 +08C908C80AAA0AA90460045F019C019B0A7A0A7901DD01DC06FA06F900F000EF03B5061B0A32003709790B77056B00F5 +03B6061C0A330038097A0B78056C00F60A65078B0235019F071204DFFFFFFFFF0A66078C023601A0071304E0FFFFFFFF +061503A90018030F0698091301740890061603AA0019031006990914017508910A6902EF01840AFA04BA01A701EA07AC +0A6A02F001850AFB04BB01A801EB07AD035A0076036205F908E7000AFFFFFFFF035B0077036305FA08E8000BFFFFFFFF +01F0FFFF0A91FFFF04E7FFFF078DFFFF01F1FFFF0A92FFFF04E8FFFF078EFFFF02CF09BC066E044B002B03BF05FB0BC2 +02D009BD066F044C002C03C005FC0BC302F704550A0602DF02130AA3042B05E50008090B0A890AE2062F032DFFFFFFFF +09920B5103B1028F02CB067E091B012C09930B5203B2029002CC067F091C012D03C506FB0A24029908120B4905C80207 +03C606FC0A25029A08130B4A05C902080BB00A1400DE09DF075D05A6007E028B0BB10A1500DF09E0075E05A7007F028C +0682037C09A6FFFFFFFFFFFFFFFFFFFF0683037D02F80456FFFF09A7FFFF099FFFFFFFFF00F7FFFFFFFFFFFFFFFFFFFF +0A0702E002140AA4FFFF00F8FFFFFFFF036800BD0393FFFFFFFFFFFFFFFFFFFF036900BE042C05E6FFFFFFFFFFFFFFFF +01C9017809FDFFFF02A5FFFFFFFFFFFF01CA01790A8A0AE3FFFF02A6FFFFFFFFFFFFFFFF03CBFFFFFFFFFFFFFFFFFFFF +0009090C0630032EFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0716 +FFFFFFFF09E90B63FFFFFFFFFFFFFFFFFFFFFFFFFFFF097BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF097CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AAB07D0046704A4017A07850A730A0A01F6054A072302FB00E00B1F084E045B +0AAC07D1046804A5017B07860A740A0B01F7054B072402FC00E10B20084F045CFFFFFFFF0894FFFFFFFF0895FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AC038600A80B5B0763083A0540040A08BD09FA +0AC4021907D40497018F022B0AD2073702A70104052E088009A40B53096D067605AD038700A90B5C0764083B0541040B +08BE09FB0AC5021A07D504980190022C0AD3073802A80105052F088109A50B54096E0677FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF067003D3010E0B2106CC084C05210451 +088C0A810AE401CE077104AC022F02150B9507250281054E0418083009B000AA0967071F05BA00310985065208F7003D +03AD0688089601530B41069C03F305EA041007F00AD6011602ED04CD055001C1067103D4010F0B2206CD084D05220452 +088D0A820AE501CF077204AD023002160B9607260282054F0419083109B100AB0968072005BB00320986065308F8003E +03AE0689089701540B42069D03F405EB041107F10AD7011702EE04CE055101C2003C003B031A06550A3F00340A0807DD +038A0A09026F038B0B560270040F05B7FFFF02280A4A0A49076BFFFFFFFF076CFFFFFFFFFFFFFFFFFFFFFFFF02960988 +02B002AF0346034508F408F3093C093B037F037E02C302C209C109C0047E047D081B081A0B8C0B8B0798079704C204C1 +0A980A9701F301F20584058300D800D7074607450068006708D108D0002200210640063F005C005B0B500B4F026E026D +06D906D80192019107DF07DE05D305D2076E076D0A6C0A6B04F404F3028A02890B380B3703B803B70480047F09820981 +08FE08FD03340333095B095A09ED09EC05940593085308520ADF0ADE042E042D022202210A430A4201AA01A907280727 +0111011008410840FFFFFFFFFFFFFFFFFFFFFFFF0364FFFF03350365FFFF0336FFFFFFFF06EC06EBFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF084309E4052403F8071101FB01B60BC50496024C01BE04A90AD10ACF047C089D +081D05820B2E06B903A000FA043E0661093402E408EC06A8034801520942068B0A1B0B8603DE086F02EC010B0ADBFFFF +FFFFFFFFFFFFFFFF0A88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01E101E00A500A4F0ACB0ACA07BB07BA0142014106B706B602C502C4050A05090040003F065B065A05D505D406630662 +00790078075A0759004200410BA20BA104FE04FD07A207A10B070B0608B208B102D202D10AF90AF8017D017CFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF052B052A02A202A1097609750A350A34 +07CD07CC0AB50AB40A700A6F018C018B0768076700B100B008AC08AB054505440602060100360035FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0007000608D308D200C800C7 +070B070A00EA00E906260625006A0069FFFFFFFF015A0159085508540B820B81051A051909EF09EE0A5C0A5B02BA02B9 +089F089E098A098909AB09AA03A203A10B940B9308750874031E031D033C033B021C021B05BF05BE041D041C09B709B6 +0533053208890888024802470A580A5701010100068506840B460B4506BF06BE015801570679067802F402F306B406B3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07C0FFFF04E907C1051E04EA0BA80BA7059C059B09E609E50B030B0208650864 +FFFFFFFF0051FFFF0BAD0052FFFFFFFF0B440B4302560255FFFF07AE03BE03BD07F707F604AF04AE040704060A130A12 +0526052502840283082D082C011F011E07220721096C00B809B50B65FFFF00FC035D072A0B970095060005FF00A100A0 +070006FF0140013F05660565029802970823082204420441052D07AF07790BC90176077A069F017709C509C4FFFFFFFF +03020301FFFFFFFFFFFFFFFF031C031B0B260B2508870886FFFF0448FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A1CFFFFFFFF0A1DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B98FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +044005ED036D00C6083706DB095F0070038108B40A2D0B6008E4061A0342008102020AA00A8E02D8098006D30576013A +0BB507F907E7058C04F2049C077C0A1F02F2045E066703850144087106BB09CB0044046C08C0094400480BD3064D0320 +023E09DE0B9E0A110085027C0758055A0A3D0B11079C073201EF053F04CC08DF0A2F029403BC06F605CF020608330B5A +035905F50367069302B8013C095906C7FFFFFFFFFFFFFFFF082AFFFFFFFF082BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09F0FFFF02710B2705C001450977065C076904E10BAE079107E0013D040C050B +0563026302F903F90AB80AE6019907C2061708EFFFFF0461FFFFFFFFFFFFFFFF09F1FFFF02720B2805C101460978065D +076A04E20BAF079207E1013E040D050C0564026402FA03FA0AB90AE7019A07C3061808F0FFFF0462FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF076F0A9905D6077D0808013109DB0ADC0B31098302E709C804F5050F014707F2 +048900EB08F5064E02D900450378073D041402DB0267055F0BC00149038C068C0AFC0AAD048B07AA023B04930B87079F +07700A9A05D7077E0809013209DC0ADD0B32098402E809C904F60510014807F3048A00EC08F6064F02DA00460379073E +041502DC026805600BC1014A038D068D0AFD0AAE048C07AB023C04940B8807A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B080A7D075F07F4022D05870B3B09CE +09F4023707B20B7504B202590781049105DC033D06C2034F01C50B6D06E3028D029109D9066803D1002902F5062108FF +0A5D077308D80A5FFFFFFFFFFFFFFFFF0B090A7E076007F5022E05880B3C09CF09F5023807B30B7604B3025A07820492 +05DD033E06C3035001C60B6E06E4028E029209DA066903D2002A02F6062209000A5E077408D90A60FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +047108AF027500A60B1D06C4025B011209710B79FFFF00B9092505FD092B00BB07EA082601330B7D05770856030903EF +042F0599FFFF02B107830A5904F9048706560A61FFFF03C106ED02D308B0FFFF00A7047206C5027601130B1E0B7A025C +00BA097205FEFFFF00BC09260827092C0B7E07EB0857013403F00578059A030A02B204300A5AFFFF048807840A6204FA +03C2065702D4FFFFFFFF06EEFFFFFFFF049904E3014B019308000BCA058901EC03F506AF045305DE0ABC080603130A7F +0BC6093F00C909390749034D008C08B50892046F01020994073508C1007C03720538020B034B04D10B0C0A9B047307BE +085C098D055204790704024301C30BCC0A160305FFFF0686FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +049A04E4014C019408010BCB058A01ED03F606B0045405DF0ABD080703140A800BC7094000CA093A074A034E008D08B6 +0893047001030995073608C2007D03730539020C034C04D20B0D0A9C047407BF085D098E0553047A0705024401C40BCD +0A170306FFFF0687FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01C70197075104BC0B1201F808CA09F209C60B23050D08CC01D204F70A7B0741 +001004830627090301B708B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01C80198075204BD0B1301F908CB09F3 +09C70B24050E08CD01D304F80A7C0742001104840628090401B808BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01E605950BCE07C401E201AD04FB04A0037A00D10862074F09A800F1046D0868 +01610B4B06A508B702E10356064A09090A9D037008660AEA056D046306D403D901E705960BCF07C501E301AE04FC04A1 +037B00D20863075009A900F2046E086901620B4C06A608B802E20357064B090A0A9E037108670AEB056E046406D503DA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A000086032B073F041E0265041A060B0945006B057906F7035400160A38062D +04C3048501A107CA0708031503170AD808CE05070B2906E50A180A85051B07D60A010087032C0740041F0266041B060C +0946006C057A06F8035500170A39062E04C4048601A207CB0709031603180AD908CF05080B2A06E60A190A86051C07D7 +0404067208DA00570911060304430025038205AE000000C108340761051F054C000207DA0775019D045904B60AC80349 +027D0B33055D017009CC06C80A040BD4001403740405067308DB00580912060404440026038305AF000100C208350762 +0520054D000307DB0776019E045A04B70AC9034A027E0B34055E017109CD06C90A050BD500150375FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//11648 bytes +//11904 bytes enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -0000010000000480000011C0", +000001000000048000001240", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -2671,17 +2726,17 @@ x" 000000000000000000000036000000000000000000000000000000000000000000000000000000000038003700000000 0000000000000000000000000000000000000000000000000000000000000000003A0039003C003B003D00000000003E 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000040003F00000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000040003F00410000000000420000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000042004100000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000044004300000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000430000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000450000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000450044000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000470046000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -2693,199 +2748,204 @@ x" 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -09BEFFFF0984008A0344065809AC00C70A7C0C6A0BF4007408B107360B9100EF04A608C3062905E60AE607FE01AC0199 -05210569FFFF0320FFFFFFFFFFFFFFFF09BFFFFF0985008B0345065909AD00C80A7D0C6B0BF5007508B207370B9200F0 -04A708C4062A05E70AE707FF01AD019A0522056AFFFF0321FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0BFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF060507F208E3012E0A640B9A0412027703C105A60C18013E03C9068A0340004E -097C065002C2009005DA0781FFFF00D50A2A0BA705430230091107710BA20AF9060607F308E4012F0A650B9B04130278 -03C205A70C19013F03CA068B0341004F097D065102C3009105DB0782FFFF00D60A2B0BA80544023109120772039B0AFA -0A890A880512051101E601E50C230C22021D021C07A607A500D800D7094609450065006406730672005B005A067F067E -02D802D706C406C301730172088908880C550C5408680867050405030B180B1701CD01CC05E505E4023902380A140A13 -FFFF03F6090A090909DD09DC03470346009EFFFF076D009F0098076E08A700990BF908A808440BFA013608450AD60137 -031A0AD705240523083F083E0C310C30072A0729017B017A06EB06EA02D002CF06690668000F000E06A0069F00790078 -08C608C500DC00DB079C079B01FB01FA0C4D0C4C01BB01BA050C050B0B080B07084B084A05B305B20A1E0A1D0AAB0AAA -0684039C00250685065A0026062B065B06F006F90BE00BDF028A0289029505710C02029601C80881FFFF01C90B8107E0 -094E0AFB056B094F0247029B0A380BD000A100A0FFFF050F098A00B4035600DD001D001C068D068C01180117040605A0 -0A4E0407FFFFFFFF0182018107D0087401C007D1057707F8032805780B7F032902760275FFFFFFFF09C109C001C6FFFF -FFFFFFFFFFFFFFFF09CE09CD063B09CF063D063C0BAA0BA905450BAB081205460B13081307E20B14047C07E30B39047D -03240B3A059E032507E1059F0C1F0C1E06B606B5018401830657065602E602E506A606A5010101000714071305BD05BC -0B7909280B7B0B7A07BF07BE01C702480C390C3802070206045504540A180A1708CE08CD05F105F009E409E3095B095A -03E103E0092D092C0BD90BD804570456044604450B480B4702DA02D9057C057B0186018508770876060F060E08D808D7 -FFFF00DE073D073C006D006C0C4F0C4E00CC00CB07B407B300820081091B091A05C905C807650764FFFFFFFFFFFFFFFF -FFFFFFFF08100ABE051008110A030838016402AD06FA016502FA04580A810A8009C709C6034F034E09FA09F90AA70AA6 -0BE8043B06F1023AFFFF057208820C030B82FFFF0AFCFFFFFFFF09E5FFFFFFFF0BF7056C029CFFFF0C41FFFFFFFF00BF -0BD10A39069B0109FFFF0A3200B5FFFF05F7FFFFFFFF098B0357FFFFFFFFFFFFFFFFFFFFFFFFFFFF0035FFFFFFFFFFFF -FFFF05A10A4F055FFFFFFFFF0380FFFF0459087507F901C1FFFF02FBFFFFFFFFFFFFFFFFFFFF0B80FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF009CFFFFFFFF077FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A19FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E604E501E801E7FFFFFFFF02120211 -FFFFFFFF0AEAFFFF08FF013803B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BC08B30746FFFF00FAFFFF08780A750C70 -04F90883019504F10B7C0ACA017F01EB0A1A05EC0BCE0BFB08A90A0C011903CD068E0C3E06F2FFFF0666035800B60372 -076A099E00A408D9074702BD00FB08B404FA0A79019604F20B7D0ACB018001EC0A1B05ED0BCF0BFC08AA0A0D011A03CE -068F0C3F06F406F30667035900B70373076B099F00A508DA0C7108790A1F0A7605EE04F3FFFFFFFF0374FFFF0A200C40 -01A501A404EC04EB0B420B4108F008EF05D105D00A310A300A8B0A8A03F003EF031D031C095F095E0485048403940393 -06900BFD03B401EF0B7E05EF0B3DFFFF01F00B3E063106300AEBFFFF09000139056505390A1502B40A360BBA0603009A -099A076F099800AA0348064A03C300A60C0E079003F8058D040A07570B72029D08FB0B4504FD013C0824089401D20AC4 -055A087203060B2C0B8D0A4C0174026506C505CA0C2609DE06800A9D005C03FC0C0F079103F9058E040B07580B73029E -08FC0B4604FE013D0825089501D30AC5055B087303070B2D0B8E0A4D0175026606C605CB0C2709DF06810A9E005D03FD -0566053A0A1602B50A370BBB0604009B099B0770099900AB0349064B03C400A70B5C0B5B06250624026402630C130C12 -02160215041D041C0A5F0A5E08E608E505F605F5097F097E0963096203CC03CB0919091809DB09DA0415041404530452 -0BEB0BEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FE05FD08B608B500F500F4073F073E00670066067B067A00050004 -07A407A300D400D30944094305B505B407220721011E011D0538053701B901B80AC10AC004950494083508340C3B0C3A -08BC08BB044204410A680A67098D098C03510350097709760AA90AA803EB03EA07310302023C07320632023D02550633 -0AD4025604E10AD5080C04E20303080D025A025905A905A8028202810754075300610060068706860022002106E006DF -0129012806DB06DA0268026705B705B6013101300823082204DC04DB07EF07EE0B4A0B4904A904A8025402530BC50BC4 -03BE03BD0467046609AF09AE096709660365036409C509C40AB10AB0040F040E08B008AF0B4E0B4D0815081401E401E3 -0ACF0ACE02EB02EA05340533018A01890710070F0613061206AC06AB0030002F06980697003C003B0C350C3400BE00BD -07AE07AD0B8C0B8B09230922053605350C72FFFF02450197078904FB0B5302B608DF0B8305D804BE074403DA014A0C2E -06E403B5032A038206E609A4014C09D00748060C0BF009ED08E70AB60549056F078502B8024D0AF00637019DFFFF0800 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C73FFFF02460198078A04FC0B5402B708E00B8405D904BF074503DB014B0C2F -06E503B6032B038306E709A5014D09D10749060D0BF109EE08E80AB7054A0570078602B9024E0AF10638019E06620801 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08AD0A60055604220766020C01CA0C5E -04C6026101D004D90B570B5504AC090D088605B80BBC070B03C50107046C06A709AA0300096006F70368016809B806D4 -0A970C1A040808DB0308011B0B61FFFFFFFFFFFFFFFFFFFF0B0BFFFFFFFFFFFF0BAC016C043507020468061C09D606CA -0342003103FE064C0AA1002909CB0C0405AA009608EB071D0A530BA504640913023205470ABA07D8026901F307830519 -0B6802C408A30A4005D60418075C040001340BFEFFFF03D10010FFFF06FD09A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -046E062E039100CD08A1072F09D8007603A5093B0AAC0BF2095806600362008C02130B240B1102F409FB072505AC014E -0C4A085B084205C4052704CC07D40A9B030E048A06AD03A9015808DD070D0A48004A049A093009BA004C0C6C0693033E -02510A590C320A8C0094029107AF05900ABC0BA007F607870200057304FF09530AAE02AB03E2074A0610021708900C08 -037A0639039906EE02D3015009D207190C50005403BF06820474006AFFFFFFFF0C51005503C006830475006BFFFFFFFF -0759058F055C0AC60B2F0B2E062609E0FFFF0708FFFFFFFFFFFFFFFFFFFFFFFF0BAD016D043607030469061D09D706CB -0343003203FF064D0AA2002A09CC0C0505AB009708EC071E0A540BA604650914023305480ABB07D9026A01F40784051A -0B6902C508A40A4105D70419075D040101350BFFFFFF03D20011FFFF06FE09A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0561FFFFFFFFFFFF0338FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C62 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -07630762050E050D07ED07EC0C530C52088B088A04B304B20A2D0A2C0280027F05C705C609A909A80995099403610360 -02F302F209B509B404990498040D040C0BC90BC808410840052605250AD10AD001C501C4062306220260025F07A0079F -00E500E408CA08C9006900680675067400150014066D066C02C702C606FC06FB01770176072407230608060708190818 -0B1A0B1904D404D3022502240C250C24022B022A0417041609EA09E9090C090B0385038409A109A0096F096E03AE03AD -091609150A080A0704110410022102200C070C0601CF01CE04C104C00AF60AF5085E085D061B061A089C089B01670166 -06BE06BD02D202D10692069100510050067D067C0093009209380937058C058B07AC07AB022302220508050701EA01E9 -0B100B0F047B047A084D084C00DF0C5C05BA03FA0917049EFFFFFFFFFFFF0BA303310330098709860A740A7303D603D5 -027402730B9F0B9E046B046A086608650AD90AD8082B082A050A050907930792023702360593059200A300A207740773 -00AD00AC065506540057005606B406B3013B013A0BBF0BBE03270326057E057D012D012C07E907E804D804D7082F082E -0B270B260430042F026E026D0C490C4803F203F10477047609710970099709960390038F09C309C20A3D0A3C05990598 -093A09390B310B30048D048C01B301B20B000AFF01EE01ED074F074E00FD00FC03DC06640AB2003909F30C0A05A20102 -03DD06650AB3003A09F40C0B05A301030AE807E4024901B607680513FFFFFFFF0AE907E5024A01B707690514FFFFFFFF -065C03CF001A032C06E80988018B0901065D03D0001B032D06E90989018C09020AEC030C019B0B8704ED01BC01FC0807 -0AED030D019C0B8804EE01BD01FD0808037E007D0386063E095C000CFFFFFFFF037F007E0387063F095D000DFFFFFFFF -020200850B1508ED051B0BEC07E6072B0203FFFF0B16FFFF051CFFFF07E7FFFF02EC0A3A06B70478002D03E606400C5A -02ED0A3B06B80479002E03E706410C5B031404820A8202FC02260B2A045A0627000A09820B0D0B6A0678034CFFFFFFFF -0AC70BE308560B7605F20794099101400AC80BE408570B7705F307950992014103EC07500AA3063409C80BDA06090219 -03ED07510AA4063509C90BDB060A021A0C450A900B1F0B9507B5094701F7054F0C460A910B200B9607B6094801F80550 -06CC03A10A23048EFFFF0336003F0C4306CD03A203150483FFFF0A24FFFF0A1CFFFFFFFF0AF2084EFFFF0A9F051F0581 -0A8302FD02270B2BFFFF0AF3FFFFFFFF038D00C50884091EFFFFFFFF096C064E038E00C6045B0628FFFFFFFFFFFFFFFF -01DC018F0A7A08E902BE0C1604E707F401DD01900B0E0B6BFFFF02BFFFFFFFFFFFFFFFFF06FF0A6BFFFF05D206D8091C -000B09830679034DFFFF0700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF076C -FFFFFFFF0A660BF6FFFFFFFFFFFFFFFFFFFFFFFFFFFF09F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B32082C049604D5019107DE0AF70A860208057F0779031800EB0BB008B90488 -0B33082D049704D6019207DF0AF80A8702090580077A031900EC0BB108BA0489FFFFFFFF0905FFFFFFFF0906FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05E803AB00B00BEE07BC08A505750437092E0A77 -0B4B022C083004C801A602410B59078E02C00115056308F10A210BE609E706BF05E903AC00B10BEF07BD08A605760438 -092F0A780B4C022D083104C901A702420B5A078F02C10116056408F20A220BE709E806C0FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06B90402011F0BB2071F08B70554047E -08FD0B050B6C01E107CA04DD024302280C2A077B029705830447089D0A2E00B209E1077505F900330A01069909740045 -03D306D20907016A0BD206EC041E062C043D08500B5D012A030A0501058501D406BA040301200BB3072008B80555047F -08FE0B060B6D01E207CB04DE024402290C2B077C029805840448089E0A2F00B309E2077605FA00340A02069A09750046 -03D406D30908016B0BD306ED041F062D043E08510B5E012B030B0502058601D5003E003D0339069C0ABF00360A840839 -03AF0A85028503B00BE90286043C05F8FFFF023B0ACD0ACC07C4FFFFFFFF07C5FFFFFFFFFFFFFFFFFFFFFFFF02AE0A04 -02C902C8036703660969096809B309B203A403A302DF02DE0A3F0A3E04AF04AE088D088C0C210C2007F107F004F504F4 -0B1C0B1B0205020405BF05BE00EE00ED079E079D006F006E0940093F0024002306890688006300620BE20BE102840283 -072E072D01A901A8083B083A0615061407C707C60AEF0AEE052A052902A0029F0BC70BC603DF03DE04B104B009FE09FD -097309720353035209D509D40A6A0A6905CD05CC08BE08BD0B670B66045D045C023502340AC30AC201BF01BE077E077D -0122012108AC08ABFFFFFFFFFFFFFFFFFFFFFFFF038BFFFF0354038CFFFF0355FFFFFFFF07410740FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08AE0A61055704230767020D01CB0C5F04C7026201D104DA0B580B5604AD090E -088705B90BBD070C03C60108046D06A809AB0301096106F80369016909B906D50A980C1B040908DC0309011C0B62FFFF -FFFFFFFFFFFFFFFF0B0CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F201F10AD30AD20B520B510817081601570156070A070902E102E0053E053D0042004106A206A10617061606AA06A9 -0080007F07B207B1004400430C370C360532053107FD07FC0B940B930927092602EF02EE0B860B8501940193FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF055E055D02BB02BA09F009EF0AB50AB4 -082908280B3C0B3B0AFE0AFD01A301A207C107C000B900B809210920057A05790647064600380037FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000900080942094100D000CF -0761076000F700F6066F066E00710070FFFFFFFF0171017008C008BF0C150C14054C054B0A700A6F0ADF0ADE02D602D5 -0910090F0A060A050A290A2803C803C70C290C2808E208E1033D033C035D035C022F022E060005FF044C044B0A350A34 -0568056708FA08F9025C025B0ADB0ADA0114011306CF06CE0BD70BD607120711016F016E06C206C10311031007050704 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF081CFFFF051D081D0562051E0C3D0C3C05D505D40A630A620B900B8F08D208D1 -FFFFFFFF0058FFFF0C420059FFFFFFFF0BD50BD4026C026BFFFF082603E503E4085A085904E004DF043404330A8F0A8E -05590558029A0299089A0899013301320778077709E600C00A330BF8FFFF010A038107800C2C009D0645064400A900A8 -0756075501550154059D059C02B002AF088F088E047104700560082707D20C63018D07D3FFFF018EFFFFFFFFFFFFFFFF -031F031EFFFFFFFFFFFFFFFF033B033A0BB70BB6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A99FFFFFFFF0A9AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C2DFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -046F062F039200CE08A2073009D9007703A6093C0AAD0BF3095906610363008D02140B250B1202F509FC072605AD014F -0C4B085C084305C5052804CD07D50A9C030F048B06AE03AA015908DE070E0A49004B049B093109BB004D0C6D0694033F -02520A5A0C330A8D0095029207B005910ABD0BA107F7078802010574050009540AAF02AC03E3074B0611021808910C09 -037B063A039A06EF02D4015109D3071A08C10BCA05FB01480B630846FFFF0B64FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF09F5FFFF04B4069D035A0016FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A6DFFFF02870BB80601015A09F106A307C205150C6607EA083C01520439053F -059A0279031604260B3F0B6E01B0081E065E0964FFFF0490FFFFFFFFFFFFFFFF0A6EFFFF02880BB90602015B09F206A4 -07C305160C6707EB083D0153043A0540059B027A031704270B400B6F01B1081F065F0965FFFF0491FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07C80B1D061807D6086D01460A570B700BC009FF03040A46052B0541015C0854 -04BA00F8096A069502F60052039D0797044302F8027D05960C56015E03B106D60B890B3404BC0805024F04C40C1C07FA -07C90B1E061907D7086E01470A580B710BC10A0003050A47052C0542015D085504BB00F9096B069602F70053039E0798 -044402F9027E05970C57015F03B206D70B8A0B3504BD0806025004C50C1D07FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B980B0107B80869025705C00BCC0A42 -0A71024B080E0C1004E3026F07DA04C2061E035E0715037001D80C00073802A402A90A5506B10420002B0312066A0978 -0AE007CC094A0AE2FFFFFFFFFFFFFFFF0B990B0207B9086A025805C10BCD0A430A72024C080F0C1104E4027007DB04C3 -061F035F0716037101D90C01073902A502AA0A5606B20421002C0313066B09790AE107CD094B0AE3FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04A00924028B00AE0BAE07170271012309EB0C0CFFFF00C1099C064209A200C30848089201600C5805AE08C7032E041A -045E05DCFFFF02CD07DC0ADC052D04B806AF0AE4FFFF03E8074202F00925FFFF00AF04A10718028C01240BAF0C0D0272 -00C209EC0643FFFF00C4099D089309A30C59084908C80161041B05AF05DD032F02CE045F0ADDFFFF04B907DD0AE5052E -03E906B002F1FFFFFFFF0743FFFFFFFF04CA0517016201AA08630C6405C201FE04240706048006200B43086B03320B03 -0C6009B600D109B007A1036E00D9092A08F704A401110A1107A7093200830397056D021E036C05050B9C0B2804A2081A -08CB0A09058904AA075A025D01D600020A930322FFFF06D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04CB0518016301AB08640C6505C301FF04250707048106210B44086C03330B040C6109B700D209B107A2036F00DA092B -08F804A501120A1207A8093300840398056E021F036D05060B9D0B2904A3081B08CC0A0A058A04AB075B025E01D70003 -0A940323FFFF06D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F505CE0C68082001DA01C2052F04D1039F00E908CF07A90A2600FE049C08D501780BDD06F5090302FE037806700980 -0B22039508D30B7405A404920727040401F605CF0C69082101DB01C3053004D203A000EA08D007AA0A2700FF049D08D6 -01790BDE06F6090402FF0379067109810B23039608D40B7505A5049307280405FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0A4A008E034A0799044D027B0449065209BC007205B0074C037C00120AB8067604EF04B601AE0836075E0334020A0B5F -093D053B0BB4073A0A950B09054D08320A4B008F034B079A044E027C044A065309BD007305B1074D037D00130AB90677 -04F004B701AF0837075F0335020B0B60093E053C0BB5073B0A960B0A054E0833043106BB094C005E097A064804720027 -03A705EA000000C9089F07BA055205870006085207CE01B4048604E90B4F036A02930BC2059401870A44071B0A7E0C6E -0018043F043206BC094D005F097B06490473002803A805EB000100CA08A007BB055305880007085307CF01B5048704EA -0B50036B02940BC3059501880A45071C0A7F0C6F00190440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +09E8FFFF09AC008C0350066E09D600C90AAA0CA00C2A007608D107500BC300F104B408E3063F05FC0B16081C01AE019B +0533057FFFFF032AFFFFFFFFFFFFFFFF09E9FFFF09AD008D0351066F09D700CA0AAB0CA10C2B007708D207510BC400F2 +04B508E4064005FD0B17081D01AF019C05340580FFFF032BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A35FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF061B0810090301300A900BCC041E028103CD05BC0C4E014003D506A0034C0050 +09A4066602CC009205F0079BFFFF00D70A540BDB0559023A0931078B0BD60B29061C0811090401310A910BCD041F0282 +03CE05BD0C4F014103D606A1034D005109A5066702CD009305F1079CFFFF00D80A550BDC055A023B0932078C03A70B2A +0AB90AB80524052301EE01ED0C590C580227022607C207C100DA00D9096C096B0067006606890688005D005C06950694 +02E202E106DC06DB0175017408A708A60C8B0C8A08860885051605150B4A0B4901D301D205FB05FA024302420A3E0A3D +FFFF0402092A09290A070A060353035200A0FFFF078700A1009A078808C7009B0C2F08C808620C30013808630B060139 +03240B0705360535085D085C0C670C6607440743017D017C0703070202DA02D9067F067E000F000E06B806B7007B007A +08E608E500DE00DD07B807B7020502040C830C8201BF01BE051E051D0B3A0B390869086805C905C80A480A470ADB0ADA +069A03A80027069B0670002806410671070807110C160C1502940293029F05870C3802A001CC089FFFFF01CD0BB307FE +09760B2B05810977025102A50A620C0600A300A20482052109B400B6036200DF001F001E06A306A2011A0119041205B6 +0A7A0413FFFFFFFF0184018307EE089201C407EF058D08160332058E0BB103330280027FFFFFFFFF09EB09EA01CAFFFF +FFFFFFFFFFFFFFFF09F809F7065109F9065306520BDE0BDD055B0BDF0830055C0B45083108000B46048A08010B6B048B +032E0B6C05B4032F07FF05B50C550C5406CE06CD01860185066D066C02F002EF06BE06BD01030102072C072B05D305D2 +0BAB09480BAD0BAC07DD07DC01CB02520C6F0C6E02110210046104600A420A4108EE08ED060706060A0E0A0D09830982 +03ED03EC095109500C0F0C0E04630462045204510B7A0B7902E402E30592059101880187089508940625062408F808F7 +FFFF00E007570756006F006E0C850C8400CE00CD07D207D100840083093B093A05DF05DE077F077EFFFFFFFFFFFFFFFF +FFFFFFFF082E0AEE0522082F0A2D0856016602B707120167030404640AAF0AAE09F109F0035B035A0A240A230AD70AD6 +0C1E044707090244FFFF058808A00C390BB4FFFF0B2CFFFFFFFF0A0FFFFFFFFF0C2D058202A6FFFF0C770706FFFF00C1 +0C070A6306B3010BFFFF0A5C00B7FFFF060DFFFFFFFF09B50363FFFFFFFFFFFFFFFFFFFFFFFFFFFF0037FFFFFFFFFFFF +FFFF05B70A7B0575FFFFFFFF038CFFFF04650893081701C5FFFF0305FFFFFFFFFFFFFFFFFFFF0BB2FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF009EFFFFFFFF0799FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A43FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F404F301F001EFFFFFFFFF021C021B +FFFFFFFF0B1AFFFF091F013A03BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C608D30760FFFF00FCFFFF08960AA30CA6 +050B08A1019705010BAE0AFA018101F30A4406020C040C3108C90A36011B03D906A40C74070AFFFF067C036400B8037E +078409C800A608F9076102C700FD08D4050C0AA7019805020BAF0AFB018201F40A4506030C050C3208CA0A37011C03DA +06A50C75070C070B067D036500B9037F078509C900A708FA0CA708970A490AA406040503FFFFFFFF0380FFFF0A4A0C76 +01A701A604FC04FB0B740B730910090F05E705E60A5B0A5A0ABB0ABA03FC03FB03270326098709860493049203A0039F +06A60C3303C001F70BB006050B6FFFFF01F80B70064706460B1BFFFF0920013B057B054D0A3F02BE0A600BF00619009C +09C4078909C200AC0354066003CF00A80C4407AA040405A3041607710BA402A7091B0B77050F013E084208B201D80AF4 +0570089003100B5E0BBF0A780176026F06DD05E00C5C0A0806960ACD005E04080C4507AB040505A4041707720BA502A8 +091C0B780510013F084308B301D90AF50571089103110B5F0BC00A790177027006DE05E10C5D0A0906970ACE005F0409 +057C054E0A4002BF0A610BF1061A009D09C5078A09C300AD0355066103D000A90B8E0B8D063B063A026E026D0C490C48 +0220021F042904280A8B0A8A09060905060C060B09A709A6098B098A03D803D7093909380A050A0404210420045F045E +0C210C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0614061308D608D500F700F607590758006900680691069000050004 +07C007BF00D600D5096A096905CB05CA073C073B0120011F054C054B01BD01BC0AF10AF004A304A2085308520C710C70 +08DC08DB044E044D0A940A9309B709B6035D035C099F099E0AD90AD803F703F6074B030C0246074C06480247025F0649 +0B04026004EF0B05082A04F0030D082B0264026305BF05BE028C028B076E076D00630062069D069C0024002306F806F7 +012B012A06F306F20272027105CD05CC013301320841084004EA04E9080D080C0B7C0B7B04B704B6025E025D0BFB0BFA +03CA03C90473047209D909D8098F098E0371037009EF09EE0AE10AE0041B041A08D008CF0B800B7F0833083201EA01E9 +0AFF0AFE02F502F405480547018C018B072807270629062806C406C30032003106B006AF003E003D0C6B0C6A00C000BF +07CA07C90BBE0BBD09430942054A05490CA8FFFF024F019907A3050D0B8502C008FF0BB505EE04CC075E03E6014C0C64 +06FC03C10334038E06FE09CE014E09FA076206220C260A1709070AE6055F0585079F02C202570B20064D019FFFFF081E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0CA9FFFF0250019A07A4050E0B8602C109000BB605EF04CD075F03E7014D0C65 +06FD03C20335038F06FF09CF014F09FB076306230C270A1809080AE70560058607A002C302580B21064E01A00678081F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08CD0A8C056C042E0780021601CE0C94 +04D4026B01D604E70B890B8704BA092D08A405CE0BF2072303D10109047806BF09D4030A0988070F0374016A09E206EC +0AC70C50041408FB0312011D0B93FFFFFFFFFFFFFFFFFFFF0B3DFFFFFFFFFFFF0BE0016E0441071A047406320A0006E2 +034E0033040A06620AD1002B09F50C3A05C00098090B07370A7F0BD904700933023C055D0AEA07F6027301FD079D052B +0B9A02CE08C30A6A05EC04240776040C01360C34FFFF03DD0010FFFF071509D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +047A0644039D00CF08C107490A02007803B1095F0ADC0C2809800676036E008E021D0B560B4302FE0A25073F05C20150 +0C800879086005DA053904DA07F20ACB0318049806C503B5015A08FD07250A72004C04A8095409E4004E0CA206AB034A +025B0A850C680ABC0096029B07CD05A60AEC0BD2081407A1020A05890511097B0ADE02B503EE07640626022108BD0C3E +0386064F03A5072F02DD015209FC07330C86005603CB06980480006CFFFFFFFF0C87005703CC06990481006DFFFFFFFF +077305A505720AF60B610B60063C0A0A08AE0720FFFF08AFFFFFFFFFFFFFFFFF0BE1016F0442071B047506330A0106E3 +034F0034040B06630AD2002C09F60C3B05C10099090C07380A800BDA04710934023D055E0AEB07F7027401FE079E052C +0B9B02CF08C40A6B05ED04250777040D01370C35FFFF03DE0011FFFF071609D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0577FFFFFFFFFFFF0344FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C98 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +077D077C0520051F080B080A0C890C8808A908A804C104C00A570A56028A028905DD05DC09D309D209BF09BE036D036C +02FD02FC09DF09DE04A704A6041904180BFF0BFE085F085E053805370B010B0001C901C806390638026A026907BC07BB +00E700E608EA08E9006B006A068B068A001500140683068202D102D00714071301790178073E073D061E061D08370836 +0B4C0B4B04E204E1022F022E0C5B0C5A02350234042304220A140A13092C092B0391039009CB09CA0997099603BA03B9 +093609350A320A31041D041C022B022A0C3D0C3C01D501D404CF04CE0B260B25087C087B0631063008BA08B901690168 +06D606D502DC02DB06A806A7005300520693069200950094095C095B05A205A107C807C7022D022C051A051901F201F1 +0B420B4104890488086B086A00E10C9205D00406093704ACFFFFFFFFFFFF0BD7033B033A09AF09AE0AA20AA103E203E1 +027E027D0BD10BD004770476088408830B090B0808490848051C051B07AD07AC0241024005A905A800A500A4078E078D +00AF00AE066B066A0059005806CC06CB013D013C0BF50BF40331033005940593012F012E0807080604E604E5084D084C +0B590B58043C043B027802770C7F0C7E03FE03FD048504840999099809C109C0039C039B09ED09EC0A670A6605AF05AE +095E095D0B630B62049B049A01B501B40B300B2F01F601F50769076800FF00FE03E8067A0AE2003B0A1D0C4005B80104 +03E9067B0AE3003C0A1E0C4105B901050B180802025301B807820525FFFFFFFF0B190803025401B907830526FFFFFFFF +067203DB001A0336070009B2018D0921067303DC001B0337070109B3018E09220B1C0316019D0BB904FD01C002060825 +0B1D0317019E0BBA04FE01C102070826038A007F039206540984000CFFFFFFFF038B0080039306550985000DFFFFFFFF +020C00870B47090D052D0C2208040745020DFFFF0B48FFFF052EFFFF0805FFFF02F60A6406CF0486002F03F206560C90 +02F70A6506D00487003003F306570C91031E04900AB2030602300B5C0466063D000A09AA0B3F0B9C068E0358FFFFFFFF +0AF70C1908740BA8060807AE09BB01420AF80C1A08750BA9060907AF09BC014303F8076A0AD3064A09F20C10061F0223 +03F9076B0AD4064B09F30C11062002240C7B0AC00B510BC707D3096F020105650C7C0AC10B520BC807D4097002020566 +06E403AD0A4D049CFFFF034000410C7906E503AE031F0491FFFF0A4EFFFF0A46FFFFFFFF0B22086CFFFF0ACF05310597 +0AB3030702310B5DFFFF0B23FFFFFFFF039900C708A2093EFFFFFFFF09940664039A00C80467063EFFFFFFFFFFFFFFFF +01E201910AA8090902C80C4C04F5081201E301920B400B9DFFFF02C9FFFFFFFFFFFFFFFF07170A97FFFF05E806F0093C +000B09AB068F0359FFFF0718FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0786 +FFFFFFFF0A920C2CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A22FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B64084A04A404E3019307FC0B270AB6021205950793032200ED0BE408D90496 +0B65084B04A504E4019407FD0B280AB7021305960794032300EE0BE508DA0497FFFFFFFF0925FFFFFFFF0926FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FE03B700B20C2407DA08C5058B044309520AA5 +0B7D0236084E04D601A8024B0B8B07A802CA0117057909110A4B0C1C0A1106D705FF03B800B30C2507DB08C6058C0444 +09530AA60B7E0237084F04D701A9024C0B8C07A902CB0118057A09120A4C0C1D0A1206D8FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06D1040E01210BE6073908D7056A048C +091D0B370B9E01E707E804EB024D02320C60079502A10599045308BB0A5800B40A0B078F060F00350A2B06B1099C0047 +03DF06EA0927016C0C080704042A06420449086E0B8F012C03140513059B01DA06D2040F01220BE7073A08D8056B048D +091E0B380B9F01E807E904EC024E02330C61079602A2059A045408BC0A5900B50A0C0790061000360A2C06B2099D0048 +03E006EB0928016D0C090705042B0643044A086F0B90012D03150514059C01DB0040003F034506B40AEF00380AB40857 +03BB0AB5028F03BC0C1F02900448060EFFFF02450AFD0AFC07E2FFFFFFFF07E3FFFFFFFFFFFFFFFFFFFFFFFF02B80A2E +02D302D2037303720991099009DD09DC03B003AF02E902E80A690A6804BD04BC08AB08AA0C570C56080F080E05050504 +0B4E0B4D020F020E05D505D400F000EF07BA07B9007100700966096500260025069F069E006500640C180C17028E028D +0748074701AB01AA08590858062B062A07E507E40B1F0B1E053C053B02AA02A90BFD0BFC03EB03EA04BF04BE0A280A27 +099B099A035F035E09FF09FE0A960A9505E305E208DE08DD0B990B9804690468023F023E0AF30AF201C301C207980797 +0124012308CC08CBFFFFFFFFFFFFFFFFFFFFFFFF0397FFFF03600398FFFF0361FFFFFFFF075B075AFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08CE0A8D056D042F0781021701CF0C9504D5026C01D704E80B8A0B8804BB092E +08A505CF0BF3072403D2010A047906C009D5030B098907100375016B09E306ED0AC80C51041508FC0313011E0B94FFFF +FFFFFFFFFFFFFFFF0B3EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01FA01F90B030B020B840B8308350834015901580722072102EB02EA055205510044004306BA06B9062D062C06C206C1 +0082008107D007CF004600450C6D0C6C05460545081B081A0BC60BC50947094602F902F80BB80BB701960195FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0574057302C502C40A1A0A190AE50AE4 +084708460B6E0B6D0B2E0B2D01A501A407DF07DE00BB00BA094109400590058F065D065C003A0039FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000900080968096700D200D1 +077B077A00F900F80685068400730072FFFFFFFF0173017208E008DF0C4B0C4A056205610A9C0A9B0B0F0B0E02E002DF +0930092F0A300A2F0A530A5203D403D30C5F0C5E0902090103490348036903680239023806160615045804570A5F0A5E +057E057D091A0919026602650B0B0B0A0116011506E706E60C0D0C0C072A07290171017006DA06D9031B031A071D071C +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF083AFFFF052F083B057805300C730C7205EB05EA0A8F0A8E0BC20BC108F208F1 +FFFFFFFF005AFFFF0C78005BFFFFFFFF0C0B0C0A02760275FFFF084403F103F00878087704EE04ED0440043F0ABF0ABE +056F056E02A402A308B808B701350134079207910A1000C20A5D0C2EFFFF010C038D079A0C62009F065B065A00AB00AA +0770076F0157015605B305B202BA02B908AD08AC047D047C0576084507F00C99018F07F1070701900A6D0A6CFFFFFFFF +03290328FFFFFFFFFFFFFFFF034703460BEB0BEA09180917FFFF0483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AC9FFFFFFFF0ACAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C63FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +047B0645039E00D008C2074A0A03007903B209600ADD0C2909810677036F008F021E0B570B4402FF0A26074005C30151 +0C81087A086105DB053A04DB07F30ACC0319049906C603B6015B08FE07260A73004D04A9095509E5004F0CA306AC034B +025C0A860C690ABD0097029C07CE05A70AED0BD3081507A2020B058A0512097C0ADF02B603EF07650627022208BE0C3F +0387065003A6073002DE015309FD073408E10C000611014A0B950864FFFF0B96FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0A1FFFFF04C206B503660016FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A99FFFF02910BEC0617015C0A1B06BB07E005270C9C0808085A015404450553 +05B00283032004320B710BA001B2083C0674098CFFFF049EFFFFFFFFFFFFFFFF0A9AFFFF02920BED0618015D0A1C06BC +07E105280C9D0809085B01550446055405B10284032104330B720BA101B3083D0675098DFFFF049FFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07E60B4F062E07F4088B01480A830BA20BF60A29030E0A70053D0557015E0872 +04C800FA099206AD0300005403A907B1044F0302028705AC0C8C016003BD06EE0BBB0B6604CA0823025904D20C520818 +07E70B50062F07F5088C01490A840BA30BF70A2A030F0A71053E0558015F087304C900FB099306AE0301005503AA07B2 +04500303028805AD0C8D016103BE06EF0BBC0B6704CB0824025A04D30C530819FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BCA0B3307D60887026105D60C020A76 +0A9D0255082C0C4604F1027907F804D00634036A072D037C01DE0C36075202AE02B30A8106C9042C002D031C068009A0 +0B1007EA09720B12FFFFFFFFFFFFFFFF0BCB0B3407D70888026205D70C030A770A9E0256082D0C4704F2027A07F904D1 +0635036B072E037D01DF0C37075302AF02B40A8206CA042D002E031D068109A10B1107EB09730B13FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04AE0944029500B00BE20731027B01250A150C42FFFF00C309C6065809CC00C5086608B001620C8E05C408E703380426 +046A05F2FFFF02D707FA0B0C054104C606C70B14FFFF03F4075C02FA0945FFFF00B104AF0732029601260BE30C43027C +00C40A160659FFFF00C609C708B109CD0C8F086708E80163042705C505F3033902D8046B0B0DFFFF04C707FB0B150542 +03F506C802FBFFFFFFFF075DFFFFFFFF04D80529016401AC08810C9A05D802080430071E048E06360B750889033C0B35 +0C9609E000D309DA07BD037A00DB094A092304B201130A3B07C30956008503A305830228037805170BCE0B5A04B00838 +08EB0A33059F04B80774026701DC00020AC3032CFFFF06E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04D9052A016501AD08820C9B05D902090431071F048F06370B76088A033D0B360C9709E100D409DB07BE037B00DC094B +092404B301140A3C07C40957008603A405840229037905180BCF0B5B04B1083908EC0A3405A004B90775026801DD0003 +0AC4032DFFFF06E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01E001B007C504FF0BD4021409630A9F0A6E0BE80555096101EB053F0B3107B5 +001204C4068609A201D0094EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01E101B107C605000BD5021509640AA0 +0A6F0BE90556096201EC05400B3207B6001304C5068709A301D1094FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01FF05E40C9E083E01FB01C6054304DF03AB00EB08EF07CB0A50010004AA08F5 +017A0C13070D094C0308038406A909A80B5403A108F30BA605BA04A007410410020005E50C9F083F01FC01C7054404E0 +03AC00EC08F007CC0A51010104AB08F6017B0C14070E094D0309038506AA09A90B5503A208F40BA705BB04A107420411 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0AAC0090035607B3045902850455066809E6007405C60766038800180AE8068C +050604F701BA08540778033E03420B91096D054F0BEE07540AC50B3B056308500AAD0091035707B4045A028604560669 +09E7007505C70767038900190AE9068D050704F801BB08550779033F03430B92096E05500BEF07550AC60B3C05640851 +043D06D30974006009B0065E047E002903B30600000000CB08BF07D80568059D0006087007EC01B6049404F90B810376 +029D0BF805AA01890A7407350AB00CA4001C044B043E06D40975006109B1065F047F002A03B40601000100CC08C007D9 +0569059E0007087107ED01B7049504FA0B820377029E0BF905AB018A0A7507360AB10CA5001D044CFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//5600 bytes +//5760 bytes enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000001A0", x" -00000100000002C000007B00", +00000100000002C000008000", x" 03020100060504030A0908070E0D0C0B0303030311100F03141413121414141414141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414 @@ -2902,32 +2962,32 @@ x" 0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001002E0001 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F0001001F0030002F0031000100330032003500340037003600390038003A0001 -003C003B003E003D0040003F00420041004400430046004500480047004A0049004C004B001F004D004F004E00510050 -000100010052000100540053001F001F001F001F001F001F001F001F0055001F0001000100010001001F0056001F001F -001F001F001F001F001F001F001F001F001F001F001F001F00010001001F0057001F001F001F001F001F001F001F001F -001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F -0001000100590058001F001F005B005A0001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001005C00010001000100010001005E005D001F001F001F001F001F001F001F001F001F001F -001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F005F001F -00600001001F0061001F001F001F001F001F001F001F001F001F0062001F001F001F001F001F001F001F001F001F001F -001F001F001F001F001F001F001F001F001F001F001F001F0064006300660065001F001F001F001F001F001F0067001F -00690068001F006A001F006B006C001F006E006D001F001F001F001F001F006F0070001F001F001F001F001F001F001F -001F001F001F001F001F001F001F001F0001000100010001000100010001007100010001000100010001000100010001 -000100010001000100010001007200010001007300010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100740001000100010001000100010001000100010001000100010001000100010001 -00010001000100010001000100010001000100010075000100010001001F0076001F001F001F001F001F001F001F001F -00010001001F0077001F001F001F001F0001000100010001000100010001000100010001000100010001000100010001 -00010001007800010001000100010001000100010001000100010001000100010001000100790001001F001F001F001F +003C003B003E003D0040003F00420041004400430046004500480047004A0049004C004B004E004D0050004F00520051 +000100010053000100550054001F001F001F001F001F001F001F001F0056001F00010001000100010001005700010001 +00010001000100010001000100010001000100010058000100010001001F0059001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F005A001F001F001F001F001F001F001F +00010001005C005B005D001F005F005E0001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100600001000100010001000100620061001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F0063001F +00640001001F0065001F001F001F001F001F001F001F001F001F0066001F001F001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F00680067006A0069001F001F001F001F001F001F006B001F +006D006C001F006E0070006F0071001F00730072001F001F001F001F001F00740075001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F0001000100010001000100010001007600010001000100010001000100010001 +000100010001000100010001007700010001007800010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100790001000100010001000100010001000100010001000100010001000100010001 +0001000100010001000100010001000100010001007A000100010001001F007B001F001F001F001F001F001F001F001F +00010001001F007C001F001F001F001F0001000100010001000100010001000100010001000100010001000100010001 +00010001007D000100010001000100010001000100010001000100010001000100010001007E0001001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F000000000000000007FFFFFE07FFFFFE 0000000004200400FF7FFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFC30000501F000000000000000000000020BCDF0000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFC30000501F000000000000000000000020BCDFFFF8 FFFFD740FFFFFFFBFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC03FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFEFFFF027FFFFFFFFFFFFF000001FFBFFF0000FFFF00B6000787FF07FF0000FFFFFFFFFEFFFFFFFFFFC000 FFFFFFFFFFFFFFFF1FEFFFFF9C00E1FEFFFF0000FFFFFFFFFFFFE000FFFFFFFFFFFFFFFF0003FFFFFFFFFC00043007FF -FCFFFFFF00001FFF01FFFFFFFFFF07FF00007EFFFFFFFFFFFFF003FFFFFF03F8FFFFFFFFEFFFFFFFFFE1DFFFFFFE000F +FCFFFFFF00001FFF01FFFFFFFFFF07FF00807EFFFFFFFFFFFFF003FFFFFF03F8FFFFFFFFEFFFFFFFFFE1DFFFFFFE000F FFF99FEFE3C5FDFFB080599F1003000FFFF987EEC36DFDFF5E021987003F0000FFFBBFEEE3EDFDFF00011BBF1E00000F FFF99FEEE3EDFDFFB0C0199F0002000FD63DC7ECC3FFC71800811DC700000000FFFDDFFFE3FFFDFF27601DDF0000000F FFFDDFEFE3EFFDFF60601DDF000E000FFFFDDFFFE7FFFFFF80F05DDFFC00000FFC7FFFEE2FFBFFFFFF5F807F000C0000 @@ -2939,8 +2999,8 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFF07FFFFFEFFFFFFFFFFFFFFFF01FFC7FF800FFFFF000FFFFF FFFFFFFFFFCFFFFF108001FF0000000000000000FFFFFFFFFFFFFFFF01FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFF 7FFFFFFF01FF0FFFFFFF0000001F3FFFFFFFFFFFFFFF0FFF000003FF000000000FFFFFFFFFFFFFFF7FFFFFFF001FFFFE 00000000800000800000700100000000FFFFFFFFFFEFFFFF00001FEF00000000FFFFFFFFFC00F3FFFFFFFFFF0003FFBF -FFFFFFFF007FFFFFFC00E0003FFFFFFFFFFF01FFE7FFFFFF00000000046FDE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00000000001FFF803F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFFFFFFFFFF5FDFFFFF0FCF1FDC1FDC1FFF +FFFFFFFF007FFFFFFC00E0003FFFFFFFFFFF07FFE7FFFFFF00000000046FDE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF80000001FFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFFFFFFFFFF5FDFFFFF0FCF1FDC1FDC1FFF 000000000000000000000000800200001FFF00000000000000000000000000003E2FFC84F3FFBD50000043E0FFFFFFFF 000001FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000FFC00000FFFFFFFF000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -2949,7 +3009,7 @@ FFFFFFFFFFFFFFFFFFFFFFFF000C781FFFFFFFFFFFFF20BFFFFFFFFF000080FF007FFFFF7F7F7F7F E07FFFFFFFFFFFFEFFFFFFFFF7FFFFFFFFFFFFE0FFFEFFFFFFFFFFFFFFFFFFFF00007FFFFFFFFFFF00000000FFFF0000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00001FFF00000000FFFF00003FFFFFFFFFFF1FFF00000C00FFFFFFFF8FF07FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF -FF800000FFFFFFFCFFFFFFFFFFFFFFFFFFFFF9FFFFFFFFFF03EB07FFFFFC0000FFFFFFBF000000FFFFFFFFFF000FFFFF +FF800000FFFFFFFCFFFFFFFFFFFFFFFFFFFFF9FFFFFFFFFF1FEB3FFFFFFC0000FFFFFFBF000000FFFFFFFFFF000FFFFF FFFFFFFFFFFFFFFF0000002FE8FC0000FFFFFC00FFFF07FF0007FFFF1FFFFFFFFFFFFFFFFFF7FFFF000080007C00FFFF FFFFFFFF007FFFFF00003FFFFC7FFFFFFFFFFFFF7FFFFFFF38000005003CFFFF007E7E7EFFFF7F7FF7FFFFFFFFFF03FF FFFFFFFFFFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFF87F0FFFFFFF @@ -2960,56 +3020,59 @@ FFFFFFFF7FFFFFFF1CFCFCFC00000000FFFFEFFFB7FFFF7F3FFF3FFF00000000FFFFFFFFFFFFFFFF 0000000000000000FFFFFFFF001FFFFF0000000000000000000000000000000000000000000000000000000000000000 1FFFFFFFFFFFFFFF0001FFFF00000000FFFFFFFFFFFFE000FFFF07FF07FFFFFF3FFFFFFFFFFFFFFF003EFF0F00000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFF0000FF0FFFFF0FFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF7FF000F -FFB7F7FF1BFBFFFB0000000000000000FFFFFFFF007FFFFF003FFFFF000000FFFFFFFFBF07FDFFFF0000000000000000 +FFB7F7FF1BFBFFFBFFFFFFFF000FFFFFFFFFFFFF007FFFFF003FFFFF000000FFFFFFFFBF07FDFFFF0000000000000000 FFFFFD3F91BFFFFF003FFFFF007FFFFF7FFFFFFF00000000000000000037FFFF003FFFFF03FFFFFF0000000000000000 FFFFFFFFC0FFFFFF0000000000000000FEEFF06F003FFFFF000000001FFFFFFF1FFFFFFF00000000FFFFFEFF0000001F FFFFFFFF003FFFFF003FFFFF0007FFFF0003FFFF000000000000000000000000FFFFFFFFFFFFFFFF000001FF00000000 -FFFFFFFF0007FFFFFFFFFFFF0007FFFFFFFFFFFF000000FF000000000000000000000000000000000000000000000000 -00000000000000000000000000000000FFFFFFFF00031BFF00000000000000001FFFFFFFFFFF00800000003FFFFF0000 +FFFFFFFF0007FFFFFFFFFFFF0007FFFFFFFFFFFF000000FFFFFFFC00FFFF823F0000003F000000000000000000000000 +00000000000000000000000000000000FFFFFFFF00031BFF0000001C100000001FFFFFFFFFFF00800000003FFFFF0000 00000003FFFF00000000001F007FFFFFFFFFFFFFFFFFFFFF0000003F003E0000FFFFFFFF01FFFFFFFFFF0004000001FF FFFFFFFF0007FFFFFFFF00F00047FFFFFFFFFFFFFFFFFFFF1400C01E00000000FFFBFFFFC09FFFFF0000000300000000 -BFFFBD7FFFFF01FFFFFFFFFF000001FFFFF99FEFE3EDFDFFE081199F0000000F00000000000000000000000000000000 +BFFFBD7FFFFF01FFFFFFFFFF000001FFFFF99FEFE3EDFDFFE081199F0000000FFFFF4BFFFFBFFFFF000A37A500000000 FFFFFFFFFFFFFFFF800007BB00000003FFFFFFFFFFFFFFFF000000B30000000000000000000000000000000000000000 FFFFFFFF7F3FFFFF3F00000000000000FFFFFFFF7FFFFFFF0000001100000000FFFFFFFF013FFFFF0000000000000000 E7FFFFFF000007FF0000007F0000000000000000000000000000000000000000FFFFFFFF01FFFFFF0000000000000000 00000000FFFFFFFFFFFFFFFF80000000FF6FF27F99BFFFFF000000070000000000000000FFFFFCFFFCFFFFFF0000001A -FFFFFFFF7FE7FFFFFFFF0000FFFFFFFF20FFFFFFFFFF0000FFFFFFFF01FFFFFFFFFFFDFF7F7FFFFF00000001FFFC0000 -FFFCFFFF007FFEFF0000000000000000FFFFFB7FB47FFFFF000000CBFFFFFDBF017B7FFF000000000000000000000000 -00000000000000000000000000000000000000000000000000000000007FFFFFFFFDFFFFC7FFFFFF0000000100000000 -00000000000100000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFF000000000000000000000000 -FFFFFFFFFFFFFFFFFFFFFFFF00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000 -0000000000000000000000000000000000000000000000000000000000000000FFFF0000FFFFFFFFFFFFFFFF0001FFFF -FFFFFFFF0000FFFF0000007E0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF0000007F00000000 +FFFFFFFF7FE7FFFFFFFF0000FFFFFFFF20FFFFFFFFFF0000FFFFFFFF01FFFFFF00000000000000000000000000000000 +0000000000000000FFFFFFFF00000001FFFFFDFF7F7FFFFF00000001FFFC0000FFFCFFFF007FFEFF0000000000000000 +FFFFFB7FB47FFFFF000000CBFFFFFDBF017B7FFF00000000000000000000000000000000000000000000000000000000 +000000000000000000000000007FFFFFFFFDFFFFC7FFFFFF000000010000000000000000000100000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF00007FFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000F0000000000000000000000000000000000000000 +00000000000000000000000000000000FFFF0000FFFFFFFFFFFFFFFF0001FFFFFFFFFFFF0000FFFF0000007EFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFF +FFFFFFFFFFFFFFFF0000007F0000000000000000000000000000000000000000FFFFFFFF00007FFF0000000000000000 00000000000000000000000000000000FFFFFFFF01FFFFFF7FFFFFFFFFFF0000FFFFFFFF7FFFFFFFFFFF000000003FFF -FFFFFFFF0000FFFF0000000FE0FFFFF80000FFFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFF -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFF80FF00000000000000000003000B -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF003FFFFF00000000000001FF00000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000006FEF0000FFFFFFFF0004000700270000FFFF00F0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF1FFF07FF43FF01FF000000000000000000000000FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFF -DFFFFFFFEBFFDE64FFFFFFEFFFFFFFFFDFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FF7FFFFFDF7FFFFFFFFDFFFFFFFDFFFFFFFFF7FFFFFFF7FFF -FFFFFDFFFFFFFDFF00000FF7000000007FFFFFFF000007E0000000000000000000000000000000000000000000000000 -F9FFFF7FFFFF07DBFFFFFFFF00003FFF00008000000000000000000000000000FFFFFFFF3F801FFF0000400000000000 -0000000000000000000000000000000000000000000000000000000000000000FFFF000000003FFFFFFFFFFF00000FFF -000000000000000000000000000000000000000000000000FFFF000000000FFF00000000000000000000000000000000 -0000000000000000000000007FFF6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000001F00000000 -FFFFFFFFFFFFFFFF0000088F0000000000000000000000000000000000000000FFFFFFEF0AF7FE96AA96EA845EF7F796 -0FFFFBFF0FFFFBEE000000000000000000000000FFFF0000FFFF03FFFFFF03FF000003FF000000000000000000000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF03FFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFF3FFFFFFF0000000000000000000000000000000000000000 -3FFFFFFF00000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF07FFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +FFFFFFFF0000FFFF0000000FE0FFFFF80000FFFF0000000000000000000000000000000000000000FFFFFFFF00001FFF +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFF80FF00000000000000000003000BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF80000000 +000001FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000006FEF0000FFFFFFFF0004000700270000FFFF00F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF07FF +43FF01FF000000000000000000000000FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFF +DFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFF3FF7FFFFFDF7FFFFFFFFDFFFFFFFDFFFFFFFFF7FFFFFFF7FFFFFFFFDFFFFFFFDFF00000FF700000000 +7FFFFFFF000007E0000000000000000000000000000000000000000000000000F9FFFF7FFFFF07DBFFFFFFFF00003FFF +00008000000000000000000000000000FFFFFFFF3F801FFF000040000000000000000000000000000000000000000000 +00000000000000000000000000000000FFFF000000003FFFFFFFFFFF00000FFF00000000000000000000000000000000 +0000000000000000FFFF000000000FFF000000000000000000000000000000000000000000000000FFFF000000013FFF +000000000000000000000000000000000000000000000000000000007FFF6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0000001F00000000FFFFFFFFFFFFFFFF0000088F0000000000000000000000000000000000000000 +FFFFFFEF0AF7FE96AA96EA845EF7F7960FFFFBFF0FFFFBEE000000000000000000000000FFFF0000FFFF03FFFFFF03FF +000003FF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 +FFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFF3FFFFFFF00000000 +000000000000000000000000000000003FFFFFFF00000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0000FFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000", ); -//3392 bytes +//3456 bytes enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000110", x" -00000100000001A000004800", +00000100000001A000004A00", x" 0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -3025,20 +3088,20 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000021 0022000000240023000000000000000000000000000000250026000000280027002A0029002C002B002E002D0030002F 003200310000003300350034003700360000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000038000000000000000000000000000000000000000000000000000000000000000000000000 -00000000003A003900000000003B00000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000038000000000000000000000000000000000000000000390000000000000000000000000000 +00000000003B003A00000000003C00000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000003C0000000000000000000000000000000000000000000000000000000000000000003D0000 -003E00000000003F000000000000000000000000000000400000000000000000003A0041000000420000004300000000 -004500440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -004600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000003D0000000000000000000000000000000000000000000000000000000000000000003E0000 +003F000000000040000000000000000000000000000000410000000000000000003B0042000000430045004400000000 +004700460000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +004800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00000000000000000000000000000000 00000000000000000000000000000000000003F800000000000000000000000000000000000000000000000000000000 FFFE0000BFFFFFFF000000B60000000007FF000000000000FFFFF8000001000000000000000000009FC0000000003D9F 00020000FFFF0000000007FF00000000000000000001FFC000000000200FF800FBC0000000003EEF0E00000000000000 -FF00000000000000FFFFFC00FFFFFFFB0000000FDC00000000FEFFFF0000000C0000000ED00000000080399F4000000C +FF80000000000000FFFFFC00FFFFFFFB0000000FDC00000000FEFFFF0000000C0000000ED00000000080399F4000000C 0000000ED000000000023987002300000000000ED000000000003BBFFC00000C0000000ED000000000E0399F0000000C 00000004C000000000803DC7000000000000001FD000000000603DDF0000000C0000000ED000000000603DDF0008000C 0000000FD800000000803DDF0000000C0000000E00000000FF5F8400000C00000000000007F2000000007F8000000000 @@ -3059,35 +3122,36 @@ C000000000000000000000000003000000000844000010F8000000000000000000000003FFF00000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000 000000000000000000000000000000000000000000000000000000000000000100000000000000000000000007C00000 000000000000000000000000000000000000F06E87000000000000000000000000000000000000000000000000000060 -00000000000000F000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000180000000000E000000000000000000000000001FFC0000000000000003C000000000000000000000000 +00000000000000F00000000000003E000000000000000000000000000000000000000000000000000000000000000000 +000000000000180000000000F000000000000000000000000001FFC0000000000000003C000000000000000000000000 00000007FF0000000000007F801900000000000707FF0000000000040000000000000007001FFF800000006000080000 00000007FFF800000000DE01000000000000000040FFF0000000000200000000000000000000000080000000000007FF -0000000FD80000000080399F001F1FCC0000000000000000000000000000000000000000FFE000004000007F00000000 +0000000FD80000000080399F001F1FCC00000000FF0000000005F7A50000000600000000FFE000004000007F00000000 00000000FFFF00000000000F000000000000000000000000000000000000000000000000FF3F80003000000100000000 00000000FFFF000000000001000000000000000000FFF8000000000000000000E000000000000FFF0000000000000000 000000000000000000000000000000000000000007FFF000000000000000000000000000000000000000000000000000 0000000079BF00000000000D000000000000000000000000FCFE000000000011000007FE7BF800000FFE008000000000 03FFFC0000000000000000000000000000000000FF7F80000000000000000000FFFC0000007FFEFF0000000000000000 00000000B47E0000000000BF0000000000FB7C0000000000000000000000000000000000000000000000000000000000 -000000000000000000000000007800000000000BC7F00000000000070000000000000000000000000000000000000000 -0000000000000000003FFF81000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000001F000000000000007F0000000000000000000000000000000000000000000000000000 -0000000000000000FFFE8000FFFFFFFF000780FF00000000000000000003001000000000000000000000000000000000 -60000000000000000000000000000000FFFFFFFFFFFF3FFF0000007F0000000000000000000000000000000000000000 -000000000000000000000000F807E3E000000FE700003C00000000000000000000000000000000000000001C00000000 -00000000000000000000000000000000FFFFFFFFF87FFFFFFFFFFFFF00201FFFF80000100000FFFE0000000000000000 -F9FFFF7F000007DB00000000000000000000800000000000000000000000000000000000000000000000000000000000 -0000000000004000000000000000F000000000000000000000000000000000000000000000000000000000000000F000 -000000000000000000000000000000000000000000000000007F0000000000000000000000000000000007F000000000 -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF -0000000000000000000000000000000000000000000000000000000000000000", +000000000000000000000000007800000000000BC7F00000040000070000000000000000000000000000000000000000 +0000000000000000003FFF810000000000000000000000000000000000000000C00000000000FFFF0000000000000000 +0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F0000 +00000000007F00000000000000000000000000000000000000000000000000000000000000000000FFFE8000FFFFFFFF +000780FF0000000000000000000300100000000000000000000000000000000060000000000000000000000000000000 +FFFFFFFFFFFF3FFF0000007F0000000000000000000000000000000000000000000000000000000000000000F807E3E0 +00000FE700003C00000000000000000000000000000000000000001C0000000000000000000000000000000000000000 +FFFFFFFFF87FFFFFFFFFFFFF00201FFFF80000100000FFFE0000000000000000F9FFFF7F000007DB0000000000000000 +00008000000000000000000000000000000000000000000000000000000000000000000000004000000000000000F000 +000000000000000000000000000000000000000000000000000000000000F00000000000000000000000000000000000 +0000000000000000000000000000C000000000000000000000000000000000000000000000000000007F000000000000 +0000000000000000000007F00000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000000000000000000000000000000000000000000000000000000000000000", ); -//2848 bytes +//2896 bytes enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(x" 0000000000000040000001A0", x" -00000100000002C000002500", +00000100000002C000002680", x" 020201000402030207020605090802020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -3108,18 +3172,18 @@ x" 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000E000200020027002600280002002A0029 -00230002000200020002000200020002002C002B002E002D0030002F0032003100330002000200000002003400360035 -00040037003900380004000200020002000C000C000200020005000C0002003A003B00020002000C0002000200020002 -0002003C0023000C00020002003D000C000200020002000200020002000200020002003E000200020002000200020002 -000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +00230002000200020002000200020002002C002B002E002D0030002F0032003100330002000200340002003500370036 +00040038003A00390004000200020002000C000C00020002003B000C0002003C003D00020002000C0002000200040002 +0002003E0023000C00020002003F000C0002000200020002000200020002000200020040000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 -00020002000200020002000200020002000200020002000200020002000200020002000200020002000500030002003F -000200020002000200400002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000000020002000200020002000200020002000200020002000200020002000200020005000300020041 +000200020002000400420002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 -000200020002000200410002000200420002000200020002000200020043000200020002000200020002000200020002 -000200020002000200020002000200020002000200020005000400020002000200040002000200020002000200020002 -004400020002000C00020002000200020046004500020047000200020002000200020002000200480002000200020002 +000200020002000200020002000200020002000200020002000200020002000200040002000200020002000200020002 +000200020002000200430002000200440002000200020002000200020045000200020002000200020002000200020002 +000200020002000200020002000200020002000200020005000400020002000200040002004600020002000200020002 +004700020002000C0002000200020002004900480002004A0002000200020002000200020002004B0002000200020002 000200020002000200020002000200020002000200020002000200020004000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 @@ -3141,20 +3205,21 @@ x" 0000000000000000FF000000FE000000000000000000FF8000000000F80000000FC00000000000000000000000000000 0000000030000000FFFCFFFFFFFFFFFF0000000000000000000001FF60000000E000000000000000000000000000F800 0000000000000000FF000000FF000000000000000000FE000000000000000000000000000000000000000000FC000000 -0000000000000000000000007FFFFFFFE00000000000007F001E000000000000000000000000000000000FE000000000 -0000000000000000FFFC00000000FFFF00000000FFC000000000000000000000000000000000000003FF0000001FFFFE -000000000FFF000000000000000000000000000000000000000000000007FFFF0000000000000000FFFF000000001FFF -0000000000000000001FFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF00007FFF0000000000000000FBFF000000000003 -007FFFFF0000000000000000000000000000000000000000000FFFFF000FFFFF00000000000000000000000001FFFFFF -0000000000000000FFFFC000FFFFFFFF00000000000000000000FF8000000000000000000000000000000000FFFE0000 +0000000003FF0000000003FF000000000000000000000000000000007FFFFFFFE00000000000007F001E000000000000 +000000000000000000000FE0000000000000000000000000FFFC00000000FFFF00000000FFC000000000000000000000 +000000000000000003FF0000001FFFFE0000000000000000FFFF03FF0000000F000000000FFF00000000000000000000 +0000000000000000000000000007FFFF0000000000000000FFFF000000001FFF0000000000000000001FFFFF00000000 +FFFFFFFFFFFFFFFFFFFFFFFF00007FFF0000000000000000FBFF000000000003007FFFFF000000000000000000000000 +0000000000000000000FFFFF000FFFFF00000000000000000000000001FFFFFF0000000000000000FFFFC000FFFFFFFF +00000000000000000000000007FE000000000000000000000000FF8000000000000000000000000000000000FFFE0000 FFFFFFFF001EEFFF0000000000000000FFFFFFFE3FFFBFFF000000000000000000001FFF000000000000000000000000 00000000000000000000000003FF0000", ); -//3360 bytes +//3488 bytes enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000004000000100", x" -000001000000018000004900", +000001000000018000004D00", x" 0202010004020302070206050A0908020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -3168,14 +3233,14 @@ x" 0001000100010001000100010001000100010001000100010001001F0001002000220021002400230001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010025000100270026 -0028000100290001002A000100010001002C002B002E002D000100010030002F00320031000100330035003400370036 -00390038003B003A0001003C003E003D00010001000100010001003F0001000100010001000100010001000100400001 +0028000100290001002A000100010001002C002B002E002D002F00010031003000330032003500340037003600390038 +003B003A003D003C0001003E0040003F0001000100010001000100410001000100010001000100010001000100420001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010042004100010001004400430001000100010001000100010001000100010001000100010001000100010001 +000100010044004300450001004700460001000100010001000100010001000100010001000100010001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010045000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010046000100010001000100010001000100010001000100010001 -004700010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010048000100010001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001000100010001004900010001000100010001000100010001004A000100010001 +004B00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 00010001000100010001000100010001000000008C00F7EEB8000001280000000000000088C008820000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000 @@ -3191,7 +3256,7 @@ E8003600000000000000000000003C000000000000000000001000000000000000003FFF00000000 000000000000000000000000000040001800000000000000000000000000380000000000006000000000000000000000 00000000000000000770000000000000000007FF00000000000000000000000000000000000000000000000000000000 0000000000000000000000300000000000000000000000000000000000000000C0000000000000000000000000000000 -0000000000003F7F00000000000000000000000000000000FC00000060000001000000000000000000000000F0000000 +0000000000003F7F00000000000000000000000000000000FC00C000E0000001000000000000000000000000F0000000 00000000F800000000000000C00000000000000000000000000800FF00000000FFFF0000FFFF00FF7FFBFFEF60000000 0000600000000000000000000000000000000F0000000600000000000000000000000000000000000000000000000000 000000000000000000000000003FFF000000000000000000000000600000FFC000000000000000000000000000000000 @@ -3208,109 +3273,113 @@ E8003600000000000000000000003C000000000000000000001000000000000000003FFF00000000 800000000000000000010000000000000000000000000000000000000000800000000000000000000000000000000000 000000000000000000800000000000000000000000000000000000000000000080000000800000000000000000000000 00000000000000000000000000000000000000000000000001FF000080000000000000000000000000000000007F0000 -00000000FE00000000000000000000001E00000000000000000000000000000000000000000000000000000000000000 -00000000000020000000000000000000000000000000000003E0000000000000000003C0000000000000000000000000 -000000000000000000003F800000000000000000D8000000000000030000000000000000000000000000000F00300000 -0000000000000000E80021E000000000000000003F000000000000000000000000000000000002000000000000000000 -00000000000000002C00F800000000000000000000000000000000400000000000000000000000000000000000000000 -000000000000000000FFFFFE0000000000000000000000000000000E00001FFF00000000020000000000000000000000 -000000007000000000000000000000000000000000000000000000000000000000000000080000000000000000000000 -000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000004 -00000000800000000000007F00000000DC000000000000070000000000000000000003FF000000000000000000000000 -0000000000000000000000000000000000000000000000000000003E0003000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000180000000000000000000000000FFF800000000 -00000000000000000000000080000000000000000000000000000000001F000000000000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000C000 -00000000000000000000000000200000000000000F800000000000100000000000000000000000000000000000000000 +00000000FE00000000000000000000001E00000000000000000000000000000000000000000000000000000000004000 +000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000 +000000000000000003E0000000000000000003C0000000000000000000000000000000000000000000003F8000000000 +00000000D8000000000000030000000000000000000000000000000F003000000000000000000000E80021E000000000 +000000003F00000000000000000000000000000000000200000000000000000000000000000000000000000000000000 +000000000000000001B000000000000000000000000000002C00F8000000000000000000000000000000004000000000 +00000000000000000000000000000000000000000000000000FFFFFE0000000000000000000000000000000E00001FFF +000000000200000000000000000000000000000070000000000000000000000000000000000000000000000000000000 +000000000800000000000000000000000000000000000000000000000000000000000000000000000000007000000000 +0000000000000000000000000000000400000000800000000000007F00000000DC000000000000070000000000000000 +000003FF0000000000000000000000000000000000000000000000000000000200000000000000000000003E00030000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001800000 +00000000000000000000FFF80000000000000000000000000000000080000000000000000000000000000000001F0000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000 +0000000000000000000000000000C00000000000000000000000000000200000000000000F8000000000001000000000 +000000000000000000000000000000000000000000000000000000000000E00000000000000000000000000000000000 000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000040000000000000000000000000000000080000000000000000000000000000000 -0000000000000000000000000000000000000F800000000000000000000000000000000000000000C000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +0000000000000000000000000000000000000F8000000000000000000000000000000000000000000000000000000000 +000000000000000000000000800000000000000000000000C00000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -000000000000004000000100", +//3472 bytes +enum symbolTrieEntries = TrieEntry!(bool, 8, 6, 7)(x" +0000000000000040000001C0", x" -000001000000018000004B00", +000001000000030000003480", x" 0302010005030403070303060A0908030303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000001000000030002000500040007000600090008000B000A000D000C000F000E -000100100011000100010001001300120014000100150001000100010016000100180017001A00190019001B001C0019 -001D0019001E00190001001F002100200023002200190024000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001002500010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001002600270001 -00010028002A002900010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -00010001002B0001002C0001002E002D002F000100010001000100010001000100010030000100310001000100010001 -000100010001000100010001000E00010001000100010001000100010032000100010001000100010001000100010001 -000100010033000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010034000100010001000100010001000100010001000100010001000100010001000100350001 -003700360039003800010001003B003A001900190001003C0001000100010001003D00010001003E0001000100010001 -00010001000100010040003F000100410043004200190044001900190046004500190047004900480001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -0001000100010001000100010001000100000000700008104000000050000001000000000113D37C0080000000800000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000FFFC003CFFFFAFE00000000000000000000000000020000000000030000000000000000000400000 -000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000 -0000E0000000000000000000000000000000C9C000000000000000000000000000000000000000004000000060000200 -00000000000000000000000000000000000000000000000000000000C040000000000000000000000000000000000000 -00000100000000000000000000000000000000000000000000000000000000000000000000000000000000000C0C0000 -000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000010000 -00000000000000000000000007F800000000000000000000000000008000000000000000000000000000000000000000 -000000000000000000008000020000000000000000000000000000000000000000000000800000000000000000000000 -00000000000000000000000000000000FCE8000E01500000000000000000000000000000C000000001E0DFBF00000000 -00000000000000000000000000000000C000000000000000000000000000000000000000000000000000000000000000 -03FF00000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000 -000000000000000000000000000000000000000000000000080000000000000000000000000000000000000100000000 -0000000000000000C0000000FFFFFFFF0000000000000000000000001FF007FE00000000000000000000000000000000 -0000000000000000000000000000000000000000A0000000E000E0036000E0000000000000000000000400101C000000 -00001C00FFFFFFFF0000000100000000C1D0037B0C0042AF0000BC1F00000000FFFF0C00FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF9FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000007F000007FF00000000F0000000FFFFFFFFFFFFFFFF000003FF -FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFF00000FFFFFFFFFFFFFF9FFFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FE000007FFFFFFFFF0FFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -00000000000000000000000000000000000000000000000000000000000007E000000000000000000003000000000000 -FBFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFF0000 -000C0010C0C0000100000000000000001800000000000000000000000000000000000000000000000000000000000000 -FFC3000000000000FFFFFFFF0000800F7FFFFFFFFFFFFC00000100FFFFFFFFFFFFFFFC000001FFFFFFFFFFFFFFFFFFFF -000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000 -FFFF0000FFFFFFFF0000007F00000000007FFFFF00000003000000000000000000000600000000000000000000000000 -0000000003C00F0000000000000000000000000000000000000000000000000000000000000000000000000003800000 -0000000000000000000000000000000000000000000000000800000000000C0000000000000000000000000000000000 -0000000000000200000000000000000000000000FFFC0000000000070000000000000000000000000000FFFF00000000 -000000000000000000008000F00000000000000000000000000000000000027400000000000000000000000000000000 -7000081040000000500000010000000000000000000000000000000030007F7F00000000FF80000000000000FE000000 -1FFF73FF00000001FFFF00001FFFFFFF0000000000000000000000000180000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000 -0000000000000000FFE000000003FFFF00000000F0000000000000200000000000000000000000000000000000000000 -00000000000000000000000000000000100000000000000000000000000000000000000000000000FFFF0000FFFFFFFF -FFFFFFFFFFFFFFFF0000000F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF -FFFFFFFFFFFFFE7FFFFFFFFF00001C1FFFFFF018FFFFC3FFFFFFFFFF000007FFFFFFFFFFFFFFFFFF0000002300000000 -00000000000000000000000000000000FFFFFFFFFFFFFFFF007FFFFF0000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000080000020800000000200000002000000000800000008000 -00000200000002000000000800000000000000000780000000000000FFDFE0000000006F000000000000000000000000 -000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000800000000000000000000000000000000000000000000000000110000000000000000000 -000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000030000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF000FFFFFFFFE7FFFFFFEFFFE003FFFFF -FFFFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00003FFF00000000FFFFFFC0FFFF00070FFFFFFF000301FF0000003F -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF1FFF1FFF -FFFFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFF03FFFFFF00010FFFFFFF0FFFFFFFFFFF03FF00FFFFFFFFFF -FFFF00FF00033FFF0000000000000000FFFFFFFFFFFFFFFF000FFFFF1FFF3FFFFFFF01FFBFFFFFFF0FFFC03F01FF01FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFF000007FF0000000000000000000000000000000000000000 +0000000000000000000000000000000000010000000200020003000200050004000600020007000200090008000A0002 +000B0002000C0002000D0002000F000E0002001000020011000200120014001300150002000200020002000200160002 +0002000200020002000200170018000200020002001A0019000200020002001B000200020002000200020002001C0002 +001E001D0020001F00210021002100220024002300210021002100210026002500210021002700210021002100290028 +002A000200020002002C002B002D0021002F002E00300002003200310021002100020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002003300020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020034000200020002000200020036003500020037000200020002003800020039 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +0002000200020002000200020002000200020002000200020002000200020002000200020002000200020002003B003A +00020002003D003C0002003E0040003F0002000200420041000200020002000200020002000200020002000200020002 +000200430002000200440002000200020002000200450002000200020002000200020002000200020002000200020002 +000200020002000200020002000200120002000200020002000200020002000200020002000200020002000200460002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020047 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +004800020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020049002100210021004A0021004C004B004D0021004F004E0002005000020051 +000200020002000200520002005400530021002100210021005600550002000200020002000200020002000200020002 +000200020002005700100002000200020002000200020002000200020002000200020002000200020002000200020002 +0058000200020059005A000200020002005C005B005E005D0002005F0021002100210021002100210060002100620061 +006400630021002100660065006700210002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +0002000200020002000200020002000200000000700008104000000050000001000000000113D37C0080000000800000 +000000000000000000000000000000000000000000000000FFFC003CFFFFAFE000000000000000000000000000200000 +00000030000000000000000000400000000000040000000000000000000000000000E000000000000000000000000000 +0000C9C000000000000000000000000000000000000000004000000060000200000000000000000000000000C0400000 +000001000000000000000000000000000000000000000000000000000C0C000000000000000000000000000000020000 +0000000000000000000000000001000000000000000000000000000007F8000000000000000000000000000080000000 +0000000000000000000080000200000000000000800000000000000000000000FCE8000E015000000000000000000000 +00000000C000000001E0DFBF00000000C000000000000000000000000000000003FF0000000000000000000000000000 +000000000000000000000000000020000000000000000000080000000000000000000000000000000000000100000000 +0000000000000000C0000000FFFFFFFF0000000000000000000000001FF007FE00000000A0000000E000E0036000E000 +0000000000000000000400101C00000000001C00FFFFFFFF0000000100000000C1D0037B0C0042AF0000BC1F00000000 +FFFF0C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFF9FFFFFFFFFFFFFFFFFF +FFFFFFFF000003FF000007FF00000000F0000000FFFFFFFFFFFFFFFF000003FFFFFFFFFFFFFFFFFFFFFFFFFF000000FF +FFF00000FFFFFFFFFFFFFF9FFFFF003FFE000007FFFFFFFFF0FFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFF +FFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000007E000000000000000000003000000000000 +FBFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFF003FFFFFFFFF0000000C0010C0C000010000000000000000 +18000000000000000000000000000000FFC3000000000000FFFFFFFF0000803F7FFFFFFFFFFFFC00000100FFFFFFFFFF +FFFFFC000001FFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0000007F00000000 +007FFFFF000000030000000000000000000006000000000000000000000000000000000003C00F000000000000000000 +0000000000000000000000000380000000000000000000000800000000000C0000000000000002000000000000000000 +00000000FFFC0000000000070000000000000000000000000000FFFF00000000000000000000000000008000F0000000 +000000000000000000000000000002747000081040000000500000010000000000000000000000000000000030007F7F +00000000FF80000000000000FE0000001FFF73FF00000001FFFF00001FFFFFFF00000000000000000000000001800000 +000000000000000000000100000000000000C0000000000000000000000000000000000000000000FFE000000003FFFF +00000000F0000000000000200000000010000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF +FFFFFFFF000FFFFF00000000000000000000000000000000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000 +FFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFF00001C1FFFFFF018FFFFC3FFFFFFFFFF000007FF +FFFFFFFFFFFFFFFF0000002300000000FFFFFFFFFFFFFFFF007FFFFF0000000000000000000000000800000208000000 +0020000000200000000080000000800000000200000002000000000800000000000000000780000000000000FFDFE000 +0000006F0000000000000000000000000000000000000000000080000000000000000000000110000000000000000000 +0000000000004000000000000000000000000000000000000000000000030000FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF +000FFFFFFFFE7FFFFFFEFFFE003FFFFFFFFFE000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00003FFF00000000FFFFFFC0 +FFFF00070FFFFFFF000301FF0000003FFFFFFFFFFFFFFFFFF0FFFFFF1FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFFF +FFFFFFFFFFFFFFFF03FFFFFF00010FFFFFFF0FFFFFFFFFFF03FF00FFFFFFFFFFFFFF00FF0FFF3FFF0000000300000000 +FFFFFFFFFFFFFFFF000FFFFF1FFF3FFFFFFF83FFFFFFFFFF9FFFC07F01FF03FFFFF7FFFFFFFFFFFFFFFFFFFF0000FFFF 00000000000000000000000000000000", ); -//6080 bytes +//6272 bytes enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000040000001A0", x" -00000100000002C000008A00", +00000100000002C000009000", x" 0202010005040302090807060D0C0B0A02020202100F0E02131312111313131313131313131313131313131313131313 131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313 @@ -3327,31 +3396,31 @@ x" 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 0001002C002E002D002F00010031003000330032003500340037003600380001003A0039003C003B003E003D0040003F 00420041004400430046004500480047004A0049004C004B004E004D0050004F000100010051000100530052002C002C -002C002C002C002C002C002C0054002C0001000100010001002C0055002C002C002C002C002C002C002C002C002C002C -002C002C002C002C00010001002C0056002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C -002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C0001000100580057002C002C005A0059 -0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001005B0001 -0001000100010001005D005C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C -002C002C002C002C002C002C002C002C002C002C002C002C002C002C005E002C005F0001002C0060002C002C002C002C -002C002C002C002C002C0061002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C0062002C -006400630066006500680067006A006900010001002C006B002C002C006C002C006E006D002C006F002C00700071002C -00730072002C002C00750074002C0076007800770001007900010001007B007A0001007C007E007D002C002C002C002C -0001000100010001000100010001007F0001000100010001000100010001000100010001000100010001000100800001 -000100810001000100010001000100010001000100010001000100010001000100010001000100010001000100010082 +002C002C002C002C002C002C0054002C0001000100010001000100550001000100010001000100010001000100010001 +000100010056000100010001002C0057002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C0058002C002C002C002C002C002C002C00010001005A0059005B002C005D005C +0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001005E0001 +00010001000100010060005F002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C002C002C0061002C00620001002C0063002C002C002C002C +002C002C002C002C002C0064002C002C002C002C002C002C002C002C002C002C002C002C002C002C0001006500670066 +00690068006B006A006D006C006F006E00010001002C0070002C002C0071002C00730072002C0074007600750077002C +00790078002C002C007B007A002C007C007E007D0001007F00010001008100800001008200840083002C002C002C002C +000100010001000100010001000100850001000100010001000100010001000100010001000100010001000100860001 +000100870001000100010001000100010001000100010001000100010001000100010001000100010001000100010088 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010083000100010001002C0084002C002C002C002C002C002C002C002C00010001002C0085002C002C002C002C -000100010001000100010001000100010001000100010001000100010001000100010001008600010001000100010001 -000100010001000100010001000100010001000100870001002C002C002C002C002C002C002C002C002C002C002C002C +000100010089000100010001002C008A002C002C002C002C002C002C002C002C00010001002C008B002C002C002C002C +000100010001000100010001000100010001000100010001000100010001000100010001008C00010001000100010001 +0001000100010001000100010001000100010001008D0001002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C -0088002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +008E002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C00000000FFFFFFFFFFFFFFFF7FFFFFFF 00000000FFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFD7F0FFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFE7FFFFFFFFFFFFF FFFEE7FFFFFFFFFFFFFF00FF001F87FFEFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFF FFFF3FFFFFFFFFFFFFFFE7FFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFE7FFFFFFFFFFFFFF7FFF3FFF4FFFFFFFFFFF07FF -FF007FFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FEFF3C5FDFFB080799F7FFFFFCF +FF807FFFFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99FEFF3C5FDFFB080799F7FFFFFCF FFF987EED36DFDFF5E023987007FFFC0FFFBBFEEF3EDFDFF00013BBFFE03FFCFFFF99FEEF3EDFDFFB0E0399F00FFFFCF D63DC7ECC3FFC71800813DC707FFFFC0FFFDDFFFF3FFFDFF27603DDFFF80FFCFFFFDDFFFF3EFFDFF60603DDF000EFFCF FFFDDFFFFFFFFFFFFFF0FDDFFFFFFFCFFC7FFFEE2FFBFFFFFF5F847F001CFFC0FFFFFFFE87FFFFFF0FFFFFFF00000000 @@ -3361,18 +3430,18 @@ FFFF3DFF7F3DFFFFFF7FFF3DFFFFFFFFFF3DFFFFFFFFFFFFE7FFFFFF1FFFFFFF03FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFF01FFFFFF803FFFFF007FFFFF000FFFFF000DDFFF FFFFFFFFFFFFFFFF3FFFFFFF03FF03FF03FFBFFFFFFFFFFFFFFFFFFF01FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFF 7FFFFFFF0FFF0FFFFFFFFFF1001F3FFFFFFFFFFFFFFF0FFFC7FF03FFFFFFFFFFCFFFFFFFFFFFFFFF7FFFFFFF9FFFFFFF -03FF03FFFFFF3FFF00007FFF00000000FFFFFFFFFFFFFFFFFFFF1FFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF -FFFFFFFFF8FFFFFFFFFFE3FFFFFFFFFFFFFF01FFE7FFFFFFFFFF00FF07FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFF +03FF03FFFFFF3FFF00007FFF00000000FFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFF +FFFFFFFFF8FFFFFFFFFFE3FFFFFFFFFFFFFF07FFE7FFFFFFFFFF00FF07FFFFFF3F3FFFFFFFFFFFFFAAFF3F3F3FFFFFFF FFFFFFFFFFDFFFFFEFCFFFDF7FDCFFFFFFFF07FFFFFF80FFFFFFFFFFFFF300001FFF7FFFFFFFFFFFFFFF00010001FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000007F000007FFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000003FF000007FFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFF20BFFFFFFFFF800180FF 007FFFFF7F7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFF00000000FBFFFFFFFFFFFFFFFFFFFFFF000FFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF -FE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFEFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFF800F +FE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFEFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFF803F 7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFF1FFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03EB07FFFFFC0000FFFFFFFF03FF1FFFFFFFFFFF00FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FEB3FFFFFFC0000FFFFFFFF03FF1FFFFFFFFFFF00FFFFFF FFFFFFFFFFFFFFFF03FFC03FFFFFFFFFFFFFFFFFFFFFFFFF800FFFFF1FFFFFFFFFFFFFFFFFFFFFFFC3FFBFFF7FFFFFFF FFFFFFFF007FFFFFF3FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFF8000007007FFFFF007E7E7EFFFF7F7FFFFFFFFFFFFF0FFF FFFFFFFFFFFFFFFFFFFFFFFF03FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFF87F0FFFFFFF @@ -3383,45 +3452,49 @@ FFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF FFFFEFFFB7FFFF7F3FFF3FFF00000000FFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFF87FF8FFFFFFFFFFFFFFFFFFFFF 1FFF7FFF00000001FFFF00003FFFFFFF000000000000000000000000000000001FFFFFFFFFFFFFFF0001FFFF0FFFFFFF FFFFFFFFFFFFE00FFFFF07FF07FFFFFFBFFFFFFFFFFFFFFF003FFF0F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -3FFFFFFFFFFF03FFFF0FFFFF0FFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF7FF800FFFB7F7FF1BFBFFFB0000000000000000 +3FFFFFFFFFFF03FFFF0FFFFF0FFFFFFFFFFFFFFFFFFF00FFFFFFFFFFF7FF800FFFB7F7FF1BFBFFFBFFFFFFFF000FFFFF FFFFFFFF007FFFFF003FFFFF000000FFFFFFFFBF07FDFFFF0000000000000000FFFFFD3F91BFFFFFFFBFFFFFFFFFFFFF 7FFFFFFF0000FF8000000000F837FFFF8FFFFFFF83FFFFFF0000000000000000FFFFFFFFF0FFFFFFFFFCFFFFFFFFFFFF FEEFF06F873FFFFF01FF01FFFFFFFFFFFFFFFFFF00000000FFFFFFFF007FF87FFFFFFFFFFE3FFFFFFF3FFFFFFF07FFFF 1E03FFFF0000FE000000000000000000FFFFFFFFFFFFFFFF000001FF00000000FFFFFFFF0007FFFFFFFFFFFFFC07FFFF -FFFFFFFF03FF00FF0000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFF -FFFFFFFF00033BFF00000000E0000000FFFFFFFFFFFF00FF03FFFFFFFFFF0000000003FFFFFF000000000FFF007FFFFF +FFFFFFFF03FF00FFFFFFFFFFFFFFFE3F0000C03F0000000000000000000000000000000000000000000000007FFFFFFF +FFFFFFFF00033BFF0000001CF0000000FFFFFFFFFFFF00FF03FFFFFFFFFF0000000003FFFFFF000000000FFF007FFFFF FFFFFFFFFFFFFFFFFFFC3FFF803FFFFFFFFFFFFFDFFFFFFFFFFF000703FF01FFFFFFFFFFFFDFFFFFFFFF00FF007FFFFF FFFFFFFFFFFFFFFFFFFFFFFF001FFFFEFFFBFFFFFFFFFFFF0000000300000000BFFFBD7FFFFF03FFFFFFFFFF03FF07FF -FFF99FEFFBEDFDFFE081399F001F1FCF00000000000000000000000000000000FFFFFFFFFFFFFFFFEFFFFFFF00000003 +FFF99FEFFBEDFDFFE081399F001F1FCFFFFF4BFFFFBFFFFF01BFF7A500000006FFFFFFFFFFFFFFFFEFFFFFFF00000003 FFFFFFFFFFFFFFFF03FF00FF0000000000000000000000000000000000000000FFFFFFFFFF3FFFFF3FFFFFFF00000000 -FFFFFFFFFFFFFFFF03FF001F00001FFFFFFFFFFF03FFFFFF000003FF00000000E7FFFFFFFFFF0FFF0000007F00000000 +FFFFFFFFFFFFFFFF03FF001F00001FFFFFFFFFFF03FFFFFFFFFF03FF0000000FE7FFFFFFFFFF0FFF0000007F00000000 00000000000000000000000000000000FFFFFFFF0FFFFFFF000000000000000000000000FFFFFFFFFFFFFFFF8007FFFF FF6FF27FF9BFFFFF03FF007F0000000000000000FFFFFCFFFCFFFFFF0000001FFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF -FFFFFFFFFFFF0007FFFFFFFF01FFFFFF000003FF00000000000000000000000000000000000000000000000000000000 +FFFFFFFFFFFF0007FFFFFFFF01FFFFFF000003FF0000000000000000000000000000000000000000FFFFFFFF03FF0003 FFFFFDFFFF7FFFFFFFFF003FFFFF1FFFFFFCFFFF007FFEFF0000000000000000FFFFFB7FB47FFFFF03FF00FFFFFFFDBF 01FB7FFF000003FF00000000000000000000000000000000000000000000000000000000000000000000000001FFFFFF -FFFDFFFFC7FFFFFF03FFFFFF000000000000000000010000FFFFFFFF8003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFDFFFFC7FFFFFF07FFFFFF000000000000000000010000FFFFFFFF8003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 03FFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF001F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0000000F000000000000000000000000000000000000000000000000000000000000000000000000 -FFFF0000FFFFFFFFFFFFFFFF0007FFFFFFFFFFFF0000FFFF003FFFFF0000000000000000000000000000000000000000 -FFFFFFFFFFFFFFFF0000007F0000000000000000000000000000000000000000FFFFFFFF01FFFFFF7FFFFFFFFFFFC3FF -FFFFFFFF7FFFFFFFFFFF03FF003F3FFFFFFFFFFFFFFFFFFFFBFF003FE0FFFFFB0000FFFF000000000000000000000000 +FFFF0000FFFFFFFFFFFFFFFF0007FFFFFFFFFFFF0000FFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFF0000007F00000000 +00000000000000000000000000000000FFFFFFFF03FFFFFF000000000000000000000000000000000000000000000000 +FFFFFFFF01FFFFFF7FFFFFFFFFFFC3FFFFFFFFFF7FFFFFFFFFFF03FF003F3FFFFFFFFFFFFFFFFFFFFBFF003FE0FFFFFB +0000FFFF0000000000000000000000000000000000000000FFFFFFFF03FFFFFF00000000000000000000000000000000 0000000000000000FFFFFFFFFFFFFFFF07FFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFF87FFFFFFFFFF FFFF80FF00000000000000000003001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF00000000000001FF000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFF80000000000001FF000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000006FEF0000 FFFFFFFF0004000700270000FFFF00F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF07FFF3FF01FF000000000000000000000000 -FFFFFFFFFFFF3FFFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FF -FFFFFFFFFFFFFFFF0000003F000000000000000000000000000FFFFF000FFFFFFFFFFFFFFFFFFFFF007FFFFF01FFFFFF -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFDFFFFFFFEBFFDE64FFFFFFEFFFFFFFFF -DFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000FFF0000FFFE00000000000000007FFFFFFF000007E00000000000000000 -00000000000000000000000000000000F9FFFF7FFFFF07DBFFFFFFFF00003FFF00008000000000000000000000000000 -FFFFFFFF3FFF1FFF0000C3FF000000000000000000000000000000000000000000000000000000000000000000000000 -FFFF000000007FFFFFFFFFFF83FFFFFF000000000000000000000000000000000000000000000000FFFF000003FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF000FFFFF0000000000000000FFFFFFFFFFFF3FFFFFFF007FFFFFFFFFFFFFFFFFFFFFFFFF0000000F00000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFFF807FFFF +FFFFFFFFFFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFF0000003F000000000000000000000000000FFFFF000FFFFF +FFFFFFFFFFFFFFFF007FFFFF01FFFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFF +DFFFFFFFEBFFDE64FFFFFFEFFFFFFFFFDFDFE7BF7BFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8000FFF0000FFFE0000000000000000 +7FFFFFFF000007E0000000000000000000000000000000000000000000000000F9FFFF7FFFFF07DBFFFFFFFF00003FFF +00008000000000000000000000000000FFFFFFFF3FFF1FFF0000C3FF0000000000000000000000000000000000000000 +00000000000000000000000000000000FFFF000000007FFFFFFFFFFF83FFFFFF00000000000000000000000000000000 +0000000000000000FFFF000003FFFFFF000000000000000000000000000000000000000000000000FFFF000087FFFFFF 000000000000000000000000000000000000000000000000000000007FFF6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF007FFF9F00000000FFFFFFFFFFFFFFFFC3FF0FFF0000000000000000000000000000000000000000 000000000000000000000000FFFE0000FFFFFFFF001FFFFF0000000000000000FFFFFFFE3FFFFFFF0000000000000000 @@ -3429,9 +3502,9 @@ FFFFFFFFFFFFFFFF007FFF9F00000000FFFFFFFFFFFFFFFFC3FF0FFF000000000000000000000000 FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF000FFFFFFFFE7FFFFFFEFFFE003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF00003FFF00000000FFFFFFC0FFFF00070FFFFFFF000301FF0000003F00000000000000000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF1FFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFFF -FFFFFFFFFFFFFFFF03FFFFFF00010FFFFFFF0FFFFFFFFFFF03FF00FFFFFFFFFFFFFF00FF00033FFF0000000000000000 -FFFFFFFFFFFFFFFF000FFFFF1FFF3FFFFFFF01FFBFFFFFFF0FFFC03F01FF01FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFF7FFFFFFFFFFFF000007FF03FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 +FFFFFFFFFFFFFFFF03FFFFFF00010FFFFFFF0FFFFFFFFFFF03FF00FFFFFFFFFFFFFF00FF0FFF3FFF0000000300000000 +FFFFFFFFFFFFFFFF000FFFFF1FFF3FFFFFFF83FFFFFFFFFF9FFFC07F01FF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFF7FFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000 FFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFF3FFFFFFF00000000 @@ -3440,25 +3513,25 @@ FFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFF0000FFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF 0000000000000000000000000000000000000000000000000000000000000000", ); -//4824 bytes +//4944 bytes enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(x" -00000000000000200000009800000298", +000000000000002000000098000002A8", x" -00000080000000F000000400000043C0", +00000080000000F00000042000004580", x" 0302010007060504090801010B0B0B0A0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B 0B0B0B0B0B0B0B0B0B0B0B0C0D0101010D01010100000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000010000000300020005000400070006 00090008000B000A000D000C000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D 000D000D000D000D000D000D000D000D000E000D000D000F000D000D000D000D000D000D000D000D0010000D000D000D -000D000D000D000D000D000D00120011001400130016001500180017001A0019001C001B001E001D001F000D001D001D -0020001D001D001D001D001D001D001D001D001D00220021000D000D000D000D0023000D0024000D001D001D001D001D -001D001D0025001D001D00260027001D001D001D0028001D002A0029002C002B002E002D0030002F00320031001D0033 -000D000D000D000D000D000D000D000D0034000D000D000D0035000D000D0036000D000D0037000D000D000D000D000D -000D000D00390038001D001D001D003A000D000D000D000D000D003B000D000D001D003C001D001D001D001D001D001D -001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D003D001D001D001D001D001D001D -001D001D001D001D001D001D001D001D000D000D000D000D000D000D000D000D000D000D000D000D000D000D003E000D -000D000D000D000D000D000D000D000D000D000D000D000D000D000D003E000D00000000000000000000000000000000 +000D000D000D000D000D000D00120011001400130016001500180017001A0019001C001B001E001D001F000D000D000D +00210020001D001D001D001D001D001D001D002200240023000D000D000D000D0025000D0026000D001D001D001D001D +001D001D0027001D001D00280029001D001D001D002A001D002C002B002E002D0030002F0032003100340033001D0035 +000D000D000D000D000D000D000D000D0036000D000D000D0037000D000D0038000D000D0039000D000D000D000D000D +000D000D003B003A001D001D001D003C000D000D000D000D000D003D000D000D001D003E001D001D001D001D001D001D +001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D003F001D001D001D001D001D001D +001D001D001D001D001D001D001D001D000D000D000D000D000D000D000D000D000D000D000D000D000D000D0040000D +000D000D000D000D000D000D000D000D000D000D000D000D000D000D0040000D00000000000000000000000000000000 0000000000000000000100000000000200000000000000000004000300060005000000000000000000080007000A0009 000C000B0000000D00000000000F000E0011001000130012001500140017001600190018001B001A001D001C001F001E 002100200023002200240000002600250000000000270000000000000000000000280000002A0029002C002B002E002D @@ -3472,90 +3545,92 @@ x" 00680067006900000038006A006B000000000000000000000000000000000000000000000000000000000000006D006C 00000000000000000000000000000000006E0000006F0000007100700072000000000000000000000000000000740073 0075002D007600000000005900780077007A0079007B00000000007C007E007D007F007F0080002F0082008100840083 -000000000086008500880087007F00890000000000000000008A0067007F008B004F008C008E008D007F008F00730090 -009200910094009300960095007F009700980000009A0099007F009B007F007F009C007F009E009D009F008700A100A0 -00A2000000A3000000A4004600A5000000A700A600A900A800AB00AA007F007F00AC000000AD0000007F007F005500AE -00AF000000B100B000B300B2007F007F007F00B400B600B500B800B700BA00B900BB0000003000BC007F00B1007F007F -00BE00BD007F00BF00C100C0007F00C2007F007F00C3007F006F00C400C600C500000000000000000000000000000000 -000000000000000000000000007F006F00C700000000000000C80000007F007F007F007F007F007F007F007F007F007F +000000000086008500880087005700890000000000000000008A0067007F008B004F008C008E008D007F008F00730090 +009200910094009300960095007F009700980000009A0099009C009B007F009D009E007F00A0009F00A1008700A300A2 +00A4000000A5000000A6004600A7000000A900A800AB00AA00AD00AC00AF00AE00B0000000B10000007F007F005500B2 +00B3000000B500B400B700B6007F007F007F00B800BA00B900BC00BB00BE00BD00BF0000003000C0007F00C100C2007F +00C400C3007F00C500C700C6007F00C8007F007F00C9007F00CB00CA00CD00CC00000000000000000000000000000000 +000000000000000000000000007F006F00CE00000000000000CF0000007F007F007F007F007F007F007F007F007F007F 007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F -007F007F007F007F007F007F009900C900CA0000007F007F007F007F007F007F007F007F007F007F007F007F007F007F -0000000000000000000000000000000000B30000007F007F007F007F007F007F00000000000000000000000000000000 -00CB003000CC007700CD0000007F00CE007F007F007F007F007F007F007F007F0000007F007F00CF00D0000000D200D1 -00000000000000000000000000000000000000000000000000000000006100000000000000CA0000007F0098007F007F -007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00D3007F -000000000000000000D500D4000000000000000000B40000007F007F007F007F00D60000007F00D7007F007F007F007F -007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F005F006E00C80000 -0000000000350000000000D800D9000000DA000000DB007F00DC0000007F007F00DD000000DF00DE00E100E000000000 -00000000000000E20000000000E300000000000000000000000000000000000000000000007F00E4007F007F007F007F -007F007F007F007F007F007F007F007F007F007F007F007F007F00E5007F007F00E700E6007F00E800EA00E9007F007F -007F007F00EC00EB007F007F007F007F007F007F00ED007F007F007F007F007F007F007F007F007F007F007F00EE007F -0000000000EF000000F00000007F007F007F007F007F007F007F007F007F007F00F1007F007F00F2007F00F3007F007F -00F500F400F700F6007F007F007F007F0000003800F900F80000000000FA00E700FC00FB007F007F0000000000000000 -000000000000000000000000000000000000000000FD000000FE000000FF00000100004B007F01010000000000000000 -010200000104010300000000010601050000000000000000000000000000000000000000009300000000000000000000 -000000000000000000000000000000000000000000000000000000B00000000000000107000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000000001080000000000000000 -000000000000000000000000000000000000000000000000000000000109000000000000000000000000000000000000 -00550000007F007F007F007F007F007F00000000000000000000000000000000007F0055007F007F007F007F007F007F -000000000000000000000000000000000000000000000000010A00000000000000000000000000000000000000000000 -000000000000000000000000007F010B0000010C007F007F00000000010B0000007F007F007F007F007F007F007F007F -00000000000000000000000000000000000000000000000000000000010D000000000000000000000000000000000000 -000000000000000000000000010D0000000000000000000000000000030000000000280F000000040000000000010000 -018000000000000000011800000000000000FF00FFE078000000400000000000000018000000000000000000FFFC0000 -0000000018000000000000008000C000B00000000000F80000FC800000000000000660100C3A02004F7F866080000030 -000678112C920200A1FDC678FF80003F000440110C120200FFFEC44001FC0030000660110C1202004F1FC660FF000030 -29C238133C0038E7FF7EC238F800003F000220000C000200D89FC220007F0030000220000C1002009F9FC220FFF10030 -0002200000000000000F02200000003003800011D004000000A07B80FFE3003F0000000178000000F0000000FFFFFFFF -00000829C00000500C0080A0FFFFFFFF000001000001E0000100000020000000F8002000FFFFFFFF0000DF4000000000 -C280C200000000000000C20080C20000008000C20000000000C200000000000018000000E0000000FC00000000000000 -00000000C0C00000E00000000000000000000000FE0000007FC00000FF800000FFF00000FFF22000C0000000FC00FC00 -000000000000F80000000000FFC0000080000000F000F0000000000EFFE0C000000000000000F0003800FC0000000000 -30000000000000008000000060000000FC00FC000000C000FFFF8000FFFFFFFF0000E00080000000000000000FF00000 -000000000700000000001C00000000000000FE00180000000000FF00F8000000C0C00000000000005500C0C0C0000000 -0000000000200000103000208023000000000000000C0020E0008000000000000000FFFEFFFE00000000F00000000000 -00000000FFFFFF80FFFFF80000000000000000000030000000400000000000000000000001F00000000000000000DF40 -000000007FFE7F00FF800000808080808080808000000000C0000000FFFFFFFF040000000000000000000000FFF00000 -FFC000000000FFFF00000001000000000000001F0001000000008000000000000000000000007FF08000000000000000 -0000E000000000000000FF800000000000000000FFFFF00000000000FF000000FC14F8000003FFFF00000000FC00E000 -FC003FC0000000007FF00000E00000003C0040008000000000000000FF8000000C00C0000000000007FFFFF8FF800000 -FF8181810000808000000000FC00C000000000000000FFF000000780F0000000000000000000C000FC000000FFFFFFFF -1F07FF80A080000000000024000000000007FFF8000000000003000000000000FFFF7F000000FFFF000800000020F080 -00000000600000000000000080000000E3030303C1FF80800000100048000080C000C000FFFFFFFF00000000F8000000 -0000007800700000E0008000FFFFFFFE0000FFFFC0000000FFFFFFFFFFFFFFFFFFFE0000F00000000000000000001FF0 -0000F800F80000004000000000000000FFC000F0FFFFFFFFC00000000000FC0000F00000F0000000000000000000FF00 -0000000008007FF000480800E4040004FFC00000FFFFFF0000000040F8020000000002C06E40000080000000FFFF007F -FFFFFFFF07C80000700000007C000000000000000F00000001100F9078C00000FE00FE000000000000000000FFFFFFFF -00000000FF8007800000000001C0000000C0000000F80000E1FC0000FFFF01FFFFFFFE00FFFFFFFF00000000FFF80000 -0000000003F8000000000000FC00FF00FFFFFFFF8000000000000000FFFCC400FFFFFFFF1FFFFFFFFC0000000000FFFF -FFFFFC000000FFFFFFFFF000FF8000000003C0007FC000000000DFF8FC00FE000000FF00FF80000000000000FFE00001 -0004000000000000FFFFFFFCFFFFFFFF400042800000FC0000000000FC00F80000066010041202001F7EC660FFE0E030 -10000000FFFFFFFCFC00FF00FFFFFFFF0000000000C00000FC00FFE0FFFFE00000000000FC000000FFFFFC00FFFFFFFF +007F007F007F007F007F007F009900D000D1000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000007B000000000000000000000000000000000000 +00B70000007F007F007F007F007F007F007F007F007F007F007F00B4007F007F007F007F007F007F007F007F007F007F +0000000000000000000000000000000000D2003000D3007700D40000007F00D5007F007F007F007F00B4007F007F007F +0000007F007F00CB00D6000000D800D70000000000000000000000000000000000000000000000000000000000610000 +0000000000D90000007F0098007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F +007F007F007F007F007F007F00DA007F000000000000000000DC00DB000000000000000000B80000007F007F007F007F +00DD0000007F00DE007F007F007F007F007F007F007F007F007F007F007F007F0000000000B400000000000000000000 +00000000007F0057005F006E00CF00000000000000350000000000DF00E0000000E1000000E2007F00E30000007F007F +00E4000000E600E500E800E70000000000000000000000E90000000000EA000000000000000000000000000000000000 +00000000007F00EB007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00EC007F007F +00EE00ED007F00EF00F100F0007F007F007F007F00F300F2007F007F007F007F007F007F00F4007F007F007F00F5007F +007F007F007F007F007F007F00F6007F0000000000F7000000F80000007F007F007F007F007F007F007F007F007F007F +00F9007F007F00FA007F00FB007F007F00FD00FC00FF00FE007F007F007F007F000000380101010000000000010200EE +01040103007F007F00000000000000000000000000000000000000000000000000000000010500000106000001070000 +0108004B00A901090000000000000000010A0000010C010B0000000000B4010D00000000000000000000000000000000 +00000000009300000000000000000000000000000000000000000000000000000000000000000000000000B400000000 +0000010E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000010F00000000000000000000000000000000000000000000000000000000000000000000000001100000 +0000000000000000000000000000000000550000007F007F007F007F007F007F00000000000000000000000000000000 +007F0055007F007F007F007F007F007F0000000000000000000000000000000000000000000000000111000000000000 +00000000000000000000000000000000000000000000000000000000007F011200000113007F007F0000000001120000 +007F007F007F007F007F007F007F007F0000000000000000000000000000000000000000000000000000000001140000 +000000000000000000000000000000000000000000000000000000000114000000000000000000000000000003000000 +0000280F000000040000000000010000018000000000000000011800000000000000FF00FFE078000000400000000000 +000018000000000000000000FFFC00000000000018000000000000008000C000B00000000000F800007C800000000000 +000660100C3A02004F7F866080000030000678112C920200A1FDC678FF80003F000440110C120200FFFEC44001FC0030 +000660110C1202004F1FC660FF00003029C238133C0038E7FF7EC238F800003F000220000C000200D89FC220007F0030 +000220000C1002009F9FC220FFF100300002200000000000000F02200000003003800011D004000000A07B80FFE3003F +0000000178000000F0000000FFFFFFFF00000829C00000500C0080A0FFFFFFFF000001000001E0000100000020000000 +F8002000FFFFFFFF0000DF4000000000C280C200000000000000C20080C20000008000C20000000000C2000000000000 +18000000E0000000FC0000000000000000000000C0C00000E00000000000000000000000FE0000007FC00000FF800000 +FFF00000FFF22000C0000000FC00FC00000000000000F80000000000FFC0000080000000F000F0000000000EFFE0C000 +000000000000F0003800FC000000000030000000000000008000000060000000FC00FC000000C000FFFF8000FFFFFFFF +0000200000000000000000000FF00000000000000700000000001C00000000000000F800180000000000FF00F8000000 +C0C00000000000005500C0C0C00000000000000000200000103000208023000000000000000C0020E000800000000000 +0000FFFEFFFE00000000F0000000000000000000FFFFFC00FFFFF8000000000000000000003000000040000000000000 +0000000001F00000000000000000DF40000000007FFE7F00FF800000808080808080808000000000C0000000FFFFFFFF +040000000000000000000000FFF00000FFC000000000FFFF00000001000000000000001F000100000000800000000000 +0000000000007FC080000000000000000000E000000000000000FF800000000000000000FFFFF00000000000FF000000 +E014C0000003FFFF00000000FC00E000FC003FC0000000007FF00000E00000003C0040008000000000000000FF800000 +0C00C0000000000007FFFFF8FF800000FF8181810000808000000000FC00C000000000000000FFF000000780F0000000 +000000000000C000FC000000FFFFFFFF1F07FF80A080000000000024000000000007FFF8000000000003000000000000 +FFFF7F000000FFFF000800000020F08000000000600000000000000080000000E3030303C1FF80800000100048000080 +C000C000FFFFFFFF00000000F80000000000007800700000E0008000FFFFFFFE0000FFFFC0000000FFFFFFFFFFFFFFFF +FFFE0000F00000000000000000001FF00000F800F80000004000000000000000FFC000F0FFFFFFFFC00000000000FC00 +00F00000F0000000000000000000FF000000000008007FF000480800E4040004FFC00000FFFFFF0000000040F8020000 +000002C06E40000080000000FFFF007FFFFFFFFF07C80000700000007C000000000000000F00000001100F9078C00000 +FE00FE000000000000000000FFFFFFFF00000000FF8007800000000001C0000000C0000000F80000E1FC0000FFFF01FF +FFFFFE00FFFFFFFF00000000FFF800000000000003F8000000000000FC00FF0000000000000001C0FFFF3FC0FFFFFFFF +FFFFFFFF8000000000000000FFFCC400FFFFFFE30FFFFFFFFC0000000000FFFFFFFFFC000000FFFFFFFFF000FF800000 +0003C0007FC000000000DFF8FC00FE000000FF00FF80000000000000FFE000010004000000000000FFFFFFFCFFFFFFFF +400042800000FC0000000000FC00F80000066010041202001F7EC660FFE0E0300000B40000400000FE40085AFFFFFFF9 +10000000FFFFFFFCFC00FF00FFFFFFFF0000000000C00000FC00FFE0FFFFE00000000000FC0000000000FC00FFFFFFF0 180000000000F000FFFFFF80FFFFFFFF00000000F0000000FFFFFFFF00000000000000007FF8000000900D8006400000 -FC00FF80FFFFFFFFFFFFFFFF0000030003000000FFFFFFE00000FF0000000000000000000000FFF80000020000800000 -0000FFC00000E00000030000FF800100000004804B800000FC00FF0000000240FE048000FFFFFC00FFFFFFFFFE000000 -0002000038000000FFFFFFFFFFFEFFFF000000007FFC000000000000FFE08000FFFFFFF0FFFFFFFF0000FFFF00000000 -FFC00000FFFFFFFF8000000000003C000000FC00FFC0C0000400FFC01F000004FFFF0000FFFFFFFFF8000000FFFFFFFF -000078000000000000007F00FFFFFFFFFFFFFFFFFFFCFFE0FFFFFFFF9010FFFF00000000FFFBFFF8FFD8FFFF0000FF0F -00000000E000F8000C00FE00FFFFFFF0000000000000018000000000FFFFF800FFFFFFC0FFFFFFFFFFF00000FFF00000 -FF800000FE0000000020000000000000200000001400219B00000010000000002020184084000000000203A000000000 -00000000000000C0000030000000000007FFF000FFFF000180000000FFFFF81F060000800000F82400000000FFFFC000 -FFFF7FFFFFFFFFFF00000000C000E000FFFF3C00FFFFFFFF0000FFFFFFFF8000000000007C0000000000FFFFFC000000 -FFFFFFFF80009080FF800060FFFFFFFF3C00F000FFFFFFFFFFFFFFFF0001FFFF00000000FFE0000000000001C0000000 -00000010F50801695569157BA1080869F0000400F0000411FFFFFFFFFFFCFFFFFFF000000001800000010001FFC00000 -FFFFFFFF0000003F0000FFF8F0000000FFFCFE00FFFFFFC00F000000E000E0000000000007800000FC000000FFFEF000 -FC00FF00000000000000FF00FFFCC000FFF00000E000C0000000FE0040000000F0003FC0FE00FE000008000000000000 -FFFFF800FC00FFFFC000000000000000000000000000FFFC000000000000FFFE0000F8000000000000000000FFFF0000 -FFFFFFFD0000000000000000C000000000000000C0000000", +FC00FF80FFFFFFFFFFFFFFFF0000030003000000FFFFFFE00000FF0000000000000000000000FFF8FFFFFC00FFFFFFFF +00000000FC00FFFC00000200008000000000FFC00000E00000030000FF800100000004804B800000FC00FF0000000240 +FE048000FFFFFC00FFFFFFFFFE0000000002000038000000F8000000FFFFFFFFFFFFFFFFFFFEFFFF000000007FFC0000 +00000000FFE08000FFFFFFF0FFFFFFFF0000FFFF00000000FFC00000000000008000000000003C000000FC00FFC0C000 +0400FFC01F000004FFFF0000FFFFFFFF000078000000000000007F00FFFFFFFFFFFFFFFFFFFCFFE0FFC000007FFFFFFF +FFFFFFFF9010FFFF00000000FFFBFFF8FFD8FFFF0000FF0F00000000E000F8000C00FE00FFFFFFF00000000000000180 +00000000FFFFF800FFFFFFC0FFFFFFFFFFF00000FFF00000FF800000FE0000000020000000000000200000001400219B +00000010000000002020184084000000000203A00000000000000000000000C0000030000000000007FFF000FFFF0001 +80000000FFFFF81F060000800000F82400000000FFFFC000FFFF7FFFFFFFFFFF00000000C000E000FFFF3C00FFFFFFFF +0000FFFFFFFF8000000000007C0000000000FFFFFC0000000000FFFF78000000FFFFFFFF80009080FF800060FFFFFFFF +3C00F000FFFFFFFFFFFFFFFF0001FFFF00000000FFE0000000000001C000000000000010F50801695569157BA1080869 +F0000400F0000411FFFFFFFFFFFCFFFFFFF000000001800000010001FFC00000FFFFFFFF0000003F0000FFF8F0000000 +FFFCFE00FFFFFFC00F000000E000E0000000000007800000FC000000FFFEF000FC00FF00000000000000FF00F000C000 +FFF00000E000C00000007C000000000060003F80FE00FC000008000000000000C000000000000000000000000000FFFC +000000000000FFFE0000F8000000000000000000FFFF0000FFFFFFFD0000000000000000C000000000000000C0000000", ); -enum MAX_SIMPLE_LOWER = 1433; -enum MAX_SIMPLE_UPPER = 1450; -enum MAX_SIMPLE_TITLE = 1454; -//10496 bytes +enum MAX_SIMPLE_LOWER = 1460; +enum MAX_SIMPLE_UPPER = 1477; +enum MAX_SIMPLE_TITLE = 1481; +//10752 bytes enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -000001000000048000000F80", +000001000000048000001000", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -3591,17 +3666,17 @@ x" 000000000000000000000032000000000000000000000000000000000000000000000000000000000033000000000000 000000000000000000000000000000000000000000000000000000000000000000350034003600000000000000000037 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000380000003900000000003A0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000039000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000003B000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000003A0000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000003C0000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000003C003B000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003E003D000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -3619,169 +3694,174 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00020001000400030006000500080007000A0009 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AAFFFF001C001B001E001D0020001F00220021 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C5FFFF001C001B001E001D0020001F00220021 002400230026002500280027002A0029002C002B002E002D0030002FFFFF003100330032003500340037003600390038 003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003FFFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF 0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004BFFFF004CFFFF004DFFFF004EFFFF004FFFFF0050FFFF0051FFFF -005205AC0053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C -05C9005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF +005205C70053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C +05E4005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF 0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF -FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF -FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF -FFFFFFFFFFFFFFFF008EFFFFFFFF008F009100900092FFFFFFFF0093FFFF0094FFFF0095FFFF0096FFFF0097FFFF0098 -FFFF0099FFFF009A009C009B009DFFFF009EFFFF009FFFFF00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF -FFFF05D100A700A600A8FFFFFFFFFFFF00A9FFFF00AAFFFF00ABFFFF00ACFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF -00B1FFFF00B2FFFF00B3FFFF00B4FFFF00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF -FFFFFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00C600C7FFFFFFFF00C8FFFF00C9FFFFFFFF00CAFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF -00D000CF00D200D1FFFF00D300D500D400D6FFFF00D7FFFFFFFF00D8FFFFFFFF00DA00D900DBFFFF00DCFFFFFFFF00DD -00DF00DE00E100E0FFFF00E200E3FFFF00E4FFFFFFFF00E500E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFFFFFFFFFF -FFFF00E800EA00E9FFFFFFFF00EBFFFF00ED00EC00EF00EEFFFF00F0FFFFFFFFFFFFFFFFFFFF00F1FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00F2FFFFFFFF00F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F5FFFF00F6FFFFFFFFFFFF00F7FFFF -FFFFFFFF00F8FFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF05CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00FC00FB00FE00FD00FF05CE0101010001030102010501040107010601090108010B010A010D010C -010F010E0111011001130112011501140117011601190118011B011AFFFF011C011E011DFFFFFFFF011FFFFF01210120 -0122FFFF0123FFFF0124FFFF0125FFFF0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF -012F012E013101300132FFFFFFFFFFFFFFFF01330134FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0136013501380137013A0139013C013B -013E013D0140013F01420141014401430146014501480147014A0149014C014B014E014D0150014F0152015101540153 -0156015501580157015A0159015C015B015E015D0160015F01620161016401630165FFFF0166FFFF0167FFFF0168FFFF -0169FFFF016AFFFF016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF -0175FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0176FFFF0177FFFF0178FFFF0179FFFF017AFFFF017BFFFF017CFFFF -017DFFFF017EFFFF017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF -0189FFFF018AFFFF018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFFFFFFFFFFFFFF0191FFFF0192FFFF0193 -FFFF0194FFFF0195FFFF0196019801970199FFFF019AFFFF019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF -01A1FFFF01A2FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF -01ADFFFF01AEFFFF01AFFFFF01B0FFFF01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF -01B9FFFF01BAFFFF01BBFFFF01BCFFFF01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF -01C5FFFF01C6FFFF01C7FFFF01C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01C9FFFF01CB01CA01CD01CC01CF01CE01D101D001D301D201D501D401D701D6 -01D901D801DB01DA01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC05BD01EE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F001EF01F201F101F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF020202010204020302060205 -02080207020A0209020C020B020E020D0210020F02120211021402130216021502180217FFFF0219021AFFFF021C021B -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF021E021D0220021F02220221FFFFFFFF022402230226022502280227022A0229 -FFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFF0230FFFF0231FFFF0232FFFF -0233FFFF0234FFFF0235FFFF0236FFFF0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF -023FFFFF0240FFFF0241FFFF0242FFFF0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF -024BFFFF024CFFFF024DFFFF024EFFFF024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF -0257FFFF0258FFFF0259FFFF025AFFFF025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF -0263FFFF0264FFFF0265FFFF0266FFFF0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF -026FFFFF0270FFFF0271FFFF0272FFFF0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF05D505D3 -05D905D7027A05DBFFFFFFFFFFFFFFFF027BFFFF027CFFFF027DFFFF027EFFFF027FFFFF0280FFFF0281FFFF0282FFFF -0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF -028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF -029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF -02A7FFFF02A8FFFF02A9FFFF02AAFFFF02AC02AB02AE02AD02B002AF02B202B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02B402B302B602B502B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BA02B902BC02BB02BE02BD02C002BF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C202C102C402C302C602C502C802C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02CA02C902CC02CB02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02CF05DD02D005DF02D105E202D205E5 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D402D302D602D502D802D702DA02D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02DC02DB02DE02DD02E002DF02E202E102E402E302E602E502E802E7FFFFFFFF06080606060C060A0610060E06140612 -06180616061C061A0620061E0624062206280626062C062A0630062E0634063206380636063C063A0640063E06440642 -06480646064C064A0650064E0654065206580656065C065A0660065E066406620302030106660672FFFF0674067E05E8 -FFFFFFFFFFFFFFFFFFFF0668FFFF0304FFFFFFFF066A0676FFFF0678068105EAFFFFFFFFFFFFFFFFFFFF066CFFFFFFFF -0307030605EF05ECFFFFFFFF05F405F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0309030805FA05F7030A05FD060105FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF066E067AFFFF067C06840604FFFFFFFFFFFFFFFFFFFF0670FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -030E030D0310030F03120311031403130316031503180317031A0319031C031BFFFFFFFFFFFFFFFFFFFF031DFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -031F031E0321032003230322032503240327032603290328032B032A032D032C032F032E033103300333033203350334 -03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03390338033B033A033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E -0351035003530352035503540357035603590358035B035A035D035C035F035E03610360036303620365036403670366 -0368FFFFFFFFFFFF0369FFFFFFFF036AFFFF036BFFFF036CFFFF036DFFFFFFFFFFFFFFFF036EFFFFFFFFFFFFFFFF036F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0370FFFF0371FFFF0372FFFF0373FFFF0374FFFF0375FFFF0376FFFF0377FFFF -0378FFFF0379FFFF037AFFFF037BFFFF037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF -0384FFFF0385FFFF0386FFFF0387FFFF0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF -0390FFFF0391FFFF0392FFFF0393FFFF0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF -039CFFFF039DFFFF039EFFFF039FFFFF03A0FFFF03A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A2FFFF03A3 -FFFFFFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A603A503A803A703AA03A903AC03AB -03AE03AD03B003AF03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C3 -03C603C503C803C703CA03C903CBFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CDFFFF03CEFFFF03CFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF -03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF -03E1FFFF03E2FFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E4FFFF03E5FFFF03E6FFFF03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF -03F0FFFF03F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFFFFFFFFFF03F9FFFF03FAFFFF03FBFFFF -03FCFFFF03FDFFFF03FEFFFF03FFFFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF -0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF -0414FFFF0415FFFF0416FFFF0417FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0419041AFFFF -041BFFFF041CFFFF041DFFFF041EFFFFFFFFFFFFFFFFFFFFFFFF041FFFFFFFFF0420FFFF0421FFFFFFFF04220423FFFF -0424FFFF0425FFFF0426FFFF0427FFFF0428FFFF0429FFFF042AFFFF042BFFFF042CFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFFFFFFFFFFFFFFFFFF -FFFF0435FFFF0436FFFFFFFFFFFFFFFF0437FFFFFFFFFFFFFFFFFFFF0438FFFF0439FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043D043C043F043E0441044004430442044504440447044604490448044B044A -044D044C044F044E0451045004530452045504540457045604590458045B045A045D045C045F045E0461046004630462 -046504640467046604690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A -047D047C047F047E0481048004830482048504840487048604890488048B048A05AF05AD05B305B105B905B6FFFF05BB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BFFFFF05C305C105C705C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFF00820081FFFFFFFFFFFF00830084FFFF0085FFFF0086FFFFFFFFFFFF +FFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFFFFFFFFFF008AFFFF008B008CFFFFFFFFFFFF008DFFFF008EFFFF +FFFFFFFFFFFFFFFF008FFFFFFFFF0090009200910093FFFFFFFF0094FFFF0095FFFF0096FFFF0097FFFF0098FFFF0099 +FFFF009AFFFF009B009D009C009EFFFF009FFFFF00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF +FFFF05EC00A800A700A9FFFFFFFFFFFF00AAFFFF00ABFFFF00ACFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF +00B2FFFF00B3FFFF00B4FFFF00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF +FFFFFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00C700C8FFFFFFFF00C9FFFF00CAFFFFFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF00CFFFFF +00D100D000D300D2FFFF00D400D600D500D7FFFF00D8FFFFFFFF00D9FFFFFFFF00DB00DA00DCFFFF00DE00DDFFFF00DF +00E100E000E300E2FFFF00E400E5FFFF00E6FFFFFFFF00E700E8FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E9FFFFFFFFFFFF +FFFF00EA00EC00EBFFFFFFFF00EDFFFF00EF00EE00F100F0FFFF00F2FFFFFFFFFFFFFFFFFFFF00F3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F4FFFFFFFF00F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F7FFFF00F8FFFFFFFFFFFF00F9FFFF +FFFFFFFF00FAFFFF00FC00FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF05E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00FE00FD010000FF010105E901030102010501040107010601090108010B010A010D010C010F010E +0111011001130112011501140117011601190118011B011A011D011CFFFF011E0120011FFFFFFFFF0121FFFF01230122 +0124FFFF0125FFFF0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF +01310130013301320134FFFFFFFFFFFFFFFF01350136FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01380137013A0139013C013B013E013D +0140013F01420141014401430146014501480147014A0149014C014B014E014D0150014F015201510154015301560155 +01580157015A0159015C015B015E015D0160015F0162016101640163016601650167FFFF0168FFFF0169FFFF016AFFFF +016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF +0177FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0178FFFF0179FFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFF +017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF +018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFFFFFFFFFFFFFF0193FFFF0194FFFF0195 +FFFF0196FFFF0197FFFF0198019A0199019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2FFFF +01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF +01AFFFFF01B0FFFF01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF +01BBFFFF01BCFFFF01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF +01C7FFFF01C8FFFF01C9FFFF01CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CBFFFF01CD01CC01CF01CE01D101D001D301D201D501D401D701D601D901D8 +01DB01DA01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EE05D801F0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F201F101F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207 +020A0209020C020B020E020D0210020F02120211021402130216021502180217021A0219FFFF021B021CFFFF021E021D +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0220021F0222022102240223FFFFFFFF0226022502280227022A0229022C022B +FFFF022DFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFFFFFFFFFF0230FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0231FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFF0233FFFF0234FFFF0235FFFF +0236FFFF0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF +0242FFFF0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF +024EFFFF024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF +025AFFFF025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF +0266FFFF0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF +0272FFFF0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFF05F005EE +05F405F2027D05F6FFFFFFFFFFFFFFFF027EFFFF027FFFFF0280FFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF +0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF +0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF +029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF +02AAFFFF02ABFFFF02ACFFFF02ADFFFF02AF02AE02B102B002B302B202B502B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B702B602B902B802BB02BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BD02BC02BF02BE02C102C002C302C2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C502C402C702C602C902C802CB02CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CD02CC02CF02CE02D102D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D205F802D305FA02D405FD02D50600 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D702D602D902D802DB02DA02DD02DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02DF02DE02E102E002E302E202E502E402E702E602E902E802EB02EAFFFFFFFF0623062106270625062B0629062F062D +0633063106370635063B0639063F063D0643064106470645064B0649064F064D0653065106570655065B0659065F065D +0663066106670665066B0669066F066D0673067106770675067B0679067F067D030503040681068DFFFF068F06990603 +FFFFFFFFFFFFFFFFFFFF0683FFFF0307FFFFFFFF06850691FFFF0693069C0605FFFFFFFFFFFFFFFFFFFF0687FFFFFFFF +030A0309060A0607FFFFFFFF060F060DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030C030B06150612030D0618061C061A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06890695FFFF0697069F061FFFFFFFFFFFFFFFFFFFFF068BFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0311031003130312031503140317031603190318031B031A031D031C031F031EFFFFFFFFFFFFFFFFFFFF0320FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03220321032403230326032503280327032A0329032C032B032E032D0330032F03320331033403330336033503380337 +033A0339FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033C033B033E033D0340033F03420341034403430346034503480347034A0349034C034B034E034D0350034F03520351 +035403530356035503580357035A0359035C035B035E035D0360035F03620361036403630366036503680367036A0369 +036BFFFFFFFFFFFF036CFFFFFFFF036DFFFF036EFFFF036FFFFF0370FFFFFFFFFFFFFFFF0371FFFFFFFFFFFFFFFF0372 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0373FFFF0374FFFF0375FFFF0376FFFF0377FFFF0378FFFF0379FFFF037AFFFF +037BFFFF037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF +0387FFFF0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF +0393FFFF0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF +039FFFFF03A0FFFF03A1FFFF03A2FFFF03A3FFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A5FFFF03A6 +FFFFFFFF03A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A903A803AB03AA03AD03AC03AF03AE +03B103B003B303B203B503B403B703B603B903B803BB03BA03BD03BC03BF03BE03C103C003C303C203C503C403C703C6 +03C903C803CB03CA03CD03CC03CEFFFFFFFFFFFFFFFFFFFF03CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF +03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF +03E4FFFF03E5FFFF03E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF +03F3FFFF03F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFFFFFFFFFF03FCFFFF03FDFFFF03FEFFFF +03FFFFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF +040BFFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF +0417FFFF0418FFFF0419FFFF041AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041BFFFF041C041DFFFF +041EFFFF041FFFFF0420FFFF0421FFFFFFFFFFFFFFFFFFFFFFFF0422FFFFFFFF0423FFFF0424FFFFFFFF04250426FFFF +0427FFFF0428FFFF0429FFFF042AFFFF042BFFFF042CFFFF042DFFFF042EFFFF042FFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFFFFFFFFFFFFFFFFFF +FFFF0438FFFF0439043AFFFFFFFFFFFF043BFFFFFFFFFFFFFFFFFFFF043CFFFF043DFFFF043EFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04420441044404430446044504480447044A0449044C044B044E044D0450044F +04520451045404530456045504580457045A0459045C045B045E045D0460045F04620461046404630466046504680467 +046A0469046C046B046E046D0470046F04720471047404730476047504780477047A0479047C047B047E047D0480047F +04820481048404830486048504880487048A0489048C048B048E048D0490048F05CA05C805CE05CC05D405D1FFFF05D6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05DAFFFF05DE05DC05E205E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0491FFFF04930492049504940497049604990498049B049A049D049C049F049E +04A104A004A304A204A504A404A704A604A904A8FFFF04AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF048CFFFF048E048D0490048F04920491049404930496049504980497049A0499 -049C049B049E049D04A0049F04A204A104A404A3FFFF04A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04AC04AB04AE04AD04B004AF04B204B1 +04B404B304B604B504B804B704BA04B904BC04BB04BE04BD04C004BF04C204C104C404C304C604C504C804C704CA04C9 +04CC04CB04CE04CD04D004CF04D204D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04A704A604A904A804AB04AA04AD04AC -04AF04AE04B104B004B304B204B504B404B704B604B904B804BB04BA04BD04BC04BF04BE04C104C004C304C204C504C4 -04C704C604C904C804CB04CA04CD04CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D404D304D604D504D804D704DA04D904DC04DB04DE04DD04E004DF04E204E1 +04E404E304E604E504E804E704EA04E904EC04EB04EE04ED04F004EF04F204F104F404F304F604F5FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F7FFFF +04F904F804FB04FA04FD04FC04FF04FE050105000502FFFF050405030506050505080507050A0509050C050B050E050D +0510050F0511FFFF0513051205150514051705160518FFFFFFFF0519FFFFFFFF051B051A051D051C051F051E05210520 +05230522052505240527052605290528052B052A052D052C052F052E0531053005330532053505340537053605390538 +053B053A053D053C053F053E0541054005430542054505440547054605490548054B054AFFFF054CFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04CF04CE04D104D004D304D204D504D404D704D604D904D804DB04DA04DD04DC -04DF04DE04E104E004E304E204E504E404E704E604E904E804EB04EA04ED04EC04EF04EE04F104F0FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F2FFFF -04F404F304F604F504F804F704FA04F904FC04FB04FDFFFF04FF04FE0501050005030502050505040507050605090508 -050B050A050CFFFF050E050D0510050F051205110513FFFFFFFF0514FFFFFFFF0516051505180517051A0519051C051B -051E051D0520051F05220521052405230526052505280527052A0529052C052B052E052D0530052F0532053105340533 -0536053505380537053A0539053C053B053E053D0540053F054205410544054305460545FFFF0547FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05490548054B054A054D054C054F054E05510550055305520555055405570556 -05590558055B055A055D055C055F055E05610560056305620565056405670566FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054E054D0550054F05520551055405530556055505580557055A0559055C055B +055E055D0560055F05620561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05690568056B056A056D056C056F056E05710570057305720575057405770576 -05790578057B057A057D057C057F057E05810580058305820585058405870586FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF05890588058B058A058D058C058F058E0591059005930592059505940597059605990598059B059A059D059C -059F059E05A105A005A305A205A505A405A705A605A905A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056405630566056505680567056A0569 +056C056B056E056D0570056F05720571057405730576057505780577057A0579057C057B057E057D0580057F05820581 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF058405830586058505880587058A0589 +058C058B058E058D0590058F05920591059405930596059505980597059A0599059C059B059E059D05A0059F05A205A1 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A405A305A605A505A805A705AA05A905AC05AB05AE05AD05B005AF +05B205B105B405B305B605B505B805B705BA05B905BC05BB05BE05BD05C005BF05C205C105C405C3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10112 bytes +//10240 bytes enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -000001000000048000000EC0", +000001000000048000000F00", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -3817,17 +3897,17 @@ x" 00000000000000000000002F000000000000000000000000000000000000000000000000000000000000003000000000 000000000000000000000000000000000000000000000000000000000000000000000031003300320034000000000035 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000003600000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003600370000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000003700000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003800000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000380000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000039000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000003A000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -3842,19 +3922,19 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFF00020001000400030006000500080007000A0009000C000B000E000D0010000F001200110014001300160015 00180017FFFF0019FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001B001A001D001C001F001E00210020 -00230022002500240027002600290028002B002A002D002C002F002EFFFF003000320031003400330036003505990037 +00230022002500240027002600290028002B002A002D002C002F002EFFFF003000320031003400330036003505B40037 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0038FFFF0039FFFF003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003F FFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004B -FFFF004CFFFF004DFFFF004EFFFF004FFFFF059AFFFF0051FFFF0052FFFF00530054FFFF0055FFFF0056FFFF0057FFFF -0058FFFF0059FFFF005AFFFF005BFFFF05A9FFFFFFFF005CFFFF005DFFFF005EFFFF005FFFFF0060FFFF0061FFFF0062 +FFFF004CFFFF004DFFFF004EFFFF004FFFFF05B5FFFF0051FFFF0052FFFF00530054FFFF0055FFFF0056FFFF0057FFFF +0058FFFF0059FFFF005AFFFF005BFFFF05C4FFFFFFFF005CFFFF005DFFFF005EFFFF005FFFFF0060FFFF0061FFFF0062 FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006E FFFF006FFFFF0070FFFF0071FFFF0072007400730075FFFF0076FFFFFFFFFFFF0077FFFFFFFF0078FFFF0079007B007A 007CFFFF007E007DFFFFFFFF0080007F008200810083FFFFFFFF008400860085FFFF0087FFFFFFFF00890088008AFFFF FFFF008BFFFF008CFFFF008D008F008E0090FFFFFFFFFFFFFFFF0091009300920094FFFF009600950097FFFF0098FFFF FFFF0099FFFFFFFFFFFF009AFFFFFFFFFFFFFFFFFFFFFFFF009C009B009DFFFFFFFF009E00A0009F00A1FFFF00A2FFFF 00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFFFFFFFFFFFFFF00A9FFFF00AAFFFF00ABFFFF00ACFFFF00AD -FFFF00AEFFFF00AFFFFF00B0FFFF00B100B205ACFFFF00B3FFFF00B400B600B5FFFF00B7FFFF00B8FFFF00B9FFFF00BA +FFFF00AEFFFF00AFFFFF00B0FFFF00B100B205C7FFFF00B3FFFF00B400B600B5FFFF00B7FFFF00B8FFFF00B9FFFF00BA FFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6 FFFF00C7FFFF00C8FFFF00C9FFFF00CAFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF00CFFFFF00D0FFFF00D1FFFF00D2 FFFF00D3FFFF00D4FFFFFFFFFFFFFFFFFFFFFFFF00D600D500D7FFFFFFFF00D800D9FFFF00DAFFFF00DC00DBFFFF00DD @@ -3863,9 +3943,9 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00E2FFFF00E3FFFFFFFFFFFF00E4FFFFFFFFFFFFFFFFFFFFFFFF00E5FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E600E800E7FFFF00E9FFFF00EA00EC00EB00ED05AA00EF00EE00F100F000F300F2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E600E800E7FFFF00E9FFFF00EA00EC00EB00ED05C500EF00EE00F100F000F300F2 00F500F400F700F600F900F800FB00FA00FD00FC00FEFFFF010000FF010201010104010301060105FFFFFFFFFFFFFFFF -FFFF05ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF05C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF0107FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0108FFFF0109FFFF010AFFFF010B FFFF010CFFFF010DFFFF010EFFFF010FFFFF0110FFFF0111FFFF0112FFFF0113FFFFFFFFFFFFFFFFFFFF01140115FFFF 0116FFFFFFFF01170118FFFF011A0119011C011B011E011D0120011F01220121012401230126012501280127012A0129 @@ -3884,7 +3964,7 @@ FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01AC 01AFFFFF01B101B001B301B201B501B401B701B601B901B801BB01BA01BD01BC01BF01BE01C101C001C301C201C501C4 01C701C601C901C801CB01CA01CD01CC01CF01CE01D101D001D301D2FFFF01D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -3898,108 +3978,111 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01FE01FD020001FF 021E021D0220021F02220221022402230226022502280227022A0229022C022B022E022D0230022F0232023102340233 0236023502380237023A0239023C023B023E023D0240023F02420241024402430246024502480247024A0249024C024B 024E024D0250024F02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF025402530256025502580257025A0259025C025B025E025D0260025F02620261 -026402630266026502680267026A0269026C026B026E026D0270026F02720271027402730276027502780277027A0279 -027C027BFFFF027D027EFFFF0280027FFFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288 -FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294 -FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0 -FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF02ABFFFF02AC -FFFF02ADFFFF02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B2FFFF02B3FFFF02B4FFFF02B5FFFF02B6FFFF02B7FFFF02B8 -FFFF02B9FFFF02BAFFFF02BBFFFF02BCFFFF02BDFFFF02BEFFFF02BFFFFF02C0FFFF02C1FFFF02C2FFFF02C3FFFF02C4 -FFFF02C5FFFF02C6FFFF02C7FFFF02C8FFFF02C9FFFF02CAFFFF02CB05AE05AD05B005AFFFFF05B1FFFFFFFFFFFF02CC -FFFF02CDFFFF02CEFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF02D3FFFF02D4FFFF02D5FFFF02D6FFFF02D7FFFF02D8 -FFFF02D9FFFF02DAFFFF02DBFFFF02DCFFFF02DDFFFF02DEFFFF02DFFFFF02E0FFFF02E1FFFF02E2FFFF02E3FFFF02E4 -FFFF02E5FFFF02E6FFFF02E7FFFF02E8FFFF02E9FFFF02EAFFFF02EBFFFF02ECFFFF02EDFFFF02EEFFFF02EFFFFF02F0 -FFFF02F1FFFF02F2FFFF02F3FFFF02F4FFFF02F5FFFF02F6FFFF02F7FFFF02F8FFFF02F9FFFF02FAFFFF02FBFFFF02FC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02FE02FD030002FF0302030103040303FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0306030503080307030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030C030B030E030D0310030F03120311 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031403130316031503180317031A0319FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -031C031B031E031D0320031FFFFFFFFFFFFF05B2FFFF05B3FFFF05B4FFFF05B50321FFFF0322FFFF0323FFFF0324FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0326032503280327032A0329032C032BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C305C205C505C405C705C605C905C805CB05CA05CD05CC05CF05CE05D105D0 -05D305D205D505D405D705D605D905D805DB05DA05DD05DC05DF05DE05E105E005E305E205E505E405E705E605E905E8 -05EB05EA05ED05EC05EF05EE05F105F0FFFFFFFF05F205F8FFFF05F905FE05B60346034503480347FFFF05F3FFFFFFFF -FFFFFFFF05F405FAFFFF05FB05FF05B7034B034A034D034CFFFF05F5FFFFFFFFFFFFFFFF05B905B8FFFFFFFF05BB05BA -0350034F03520351FFFFFFFFFFFFFFFFFFFFFFFF05BD05BCFFFF05BE05C005BF0354035303560355FFFF0357FFFFFFFF -FFFFFFFF05F605FCFFFF05FD060005C103590358035B035AFFFF05F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFFFFFFFFFFFFFF0360FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03620361036403630366036503680367 -036A0369036C036B036E036D0370036FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03730372 -037503740377037603790378037B037A037D037C037F037E0381038003830382038503840387038603890388038B038A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -038D038C038F038E0391039003930392039503940397039603990398039B039A039D039C039F039E03A103A003A303A2 -03A503A403A703A603A903A803AB03AA03AD03AC03AF03AE03B103B003B303B203B503B403B703B603B903B803BB03BA -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF03BC03BE03BDFFFF03BF03C0FFFF03C1FFFF03C2FFFF03C3FFFF03C503C4FFFF03C6FFFF03C703C8FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF03CA03C9FFFF03CBFFFF03CCFFFF03CDFFFF03CEFFFF03CFFFFF03D0FFFF03D1FFFF03D2 -FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DE -FFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6FFFF03E7FFFF03E8FFFF03E9FFFF03EA -FFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6 -FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFFFFFFFFFFFFFF03FDFFFF03FEFFFFFFFFFFFF -FFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0400FFFF0401FFFF0402FFFF0403 -FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF040F -FFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0417FFFF0418FFFF0419FFFF041AFFFF041BFFFF041CFFFF041DFFFF041E -FFFF041FFFFF0420FFFF0421FFFF0422FFFF0423FFFF0424FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFF0426FFFF0427FFFF0428FFFF0429FFFF042AFFFF042B -FFFFFFFFFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436 -FFFF0437FFFF0438FFFF0439FFFF043AFFFF043BFFFF043CFFFF043DFFFF043EFFFF043FFFFF0440FFFF0441FFFF0442 -FFFF0443FFFF0444FFFF0445FFFF0446FFFF0447FFFF0448FFFF0449FFFF044AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -044BFFFF044CFFFF044DFFFFFFFF044EFFFF044FFFFF0450FFFF0451FFFF0452FFFFFFFF0453FFFF0454FFFFFFFFFFFF -FFFF0455FFFF0456FFFFFFFFFFFF0457FFFF0458FFFF0459FFFF045AFFFF045BFFFF045CFFFF045DFFFF045EFFFF045F -FFFF04600462046104640463FFFF04650467046604690468FFFF046AFFFF046BFFFF046CFFFF046DFFFF046EFFFF046F -FFFF0470FFFF047104730472047504740476FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0477FFFFFFFFFFFFFFFFFFFF0478 -FFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF059D059C059F059E05A105A0FFFF05A2 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A4FFFF05A605A505A805A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047BFFFF047D047C047F047E04810480 -04830482048504840487048604890488048B048A048D048C048F048E0491049004930492FFFF0494FFFFFFFFFFFFFFFF -0496049504980497049A0499049C049B049E049D04A0049F04A204A104A404A304A604A504A804A704AA04A904AC04AB -04AE04AD04B004AF04B204B104B404B304B604B504B804B704BA04B904BC04BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04BE04BD04C004BF04C204C104C404C3 -04C604C504C804C704CA04C904CC04CB04CE04CD04D004CF04D204D104D404D304D604D504D804D704DA04D904DC04DB -04DE04DD04E004DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04E204E104E404E304E604E504E804E704EA04E9FFFF04EB04ED04EC04EF04EE04F104F004F304F204F504F404F704F6 -04F904F8FFFF04FA04FC04FB04FE04FD050004FFFFFF050105030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0253FFFFFFFFFFFFFFFFFFFFFFFFFFFF025502540257025602590258025B025A025D025C025F025E0261026002630262 +026502640267026602690268026B026A026D026C026F026E0271027002730272027502740277027602790278027B027A +027D027CFFFF027E027FFFFF02810280FFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289 +FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295 +FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1 +FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF02ABFFFF02ACFFFF02AD +FFFF02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B2FFFF02B3FFFF02B4FFFF02B5FFFF02B6FFFF02B7FFFF02B8FFFF02B9 +FFFF02BAFFFF02BBFFFF02BCFFFF02BDFFFF02BEFFFF02BFFFFF02C0FFFF02C1FFFF02C2FFFF02C3FFFF02C4FFFF02C5 +FFFF02C6FFFF02C7FFFF02C8FFFF02C9FFFF02CAFFFF02CBFFFF02CC05C905C805CB05CAFFFF05CCFFFFFFFFFFFF02CD +FFFF02CEFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF02D3FFFF02D4FFFF02D5FFFF02D6FFFF02D7FFFF02D8FFFF02D9 +FFFF02DAFFFF02DBFFFF02DCFFFF02DDFFFF02DEFFFF02DFFFFF02E0FFFF02E1FFFF02E2FFFF02E3FFFF02E4FFFF02E5 +FFFF02E6FFFF02E7FFFF02E8FFFF02E9FFFF02EAFFFF02EBFFFF02ECFFFF02EDFFFF02EEFFFF02EFFFFF02F0FFFF02F1 +FFFF02F2FFFF02F3FFFF02F4FFFF02F5FFFF02F6FFFF02F7FFFF02F8FFFF02F9FFFF02FAFFFF02FBFFFF02FCFFFF02FD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02FF02FE030103000303030203050304FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0307030603090308030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030D030C030F030E0311031003130312 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031503140317031603190318031B031AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031D031C031F031E03210320FFFFFFFFFFFF05CDFFFF05CEFFFF05CFFFFF05D00322FFFF0323FFFF0324FFFF0325FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0327032603290328032B032A032D032CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05DE05DD05E005DF05E205E105E405E305E605E505E805E705EA05E905EC05EB +05EE05ED05F005EF05F205F105F405F305F605F505F805F705FA05F905FC05FB05FE05FD060005FF0602060106040603 +0606060506080607060A0609060C060BFFFFFFFF060D0613FFFF0614061905D10347034603490348FFFF060EFFFFFFFF +FFFFFFFF060F0615FFFF0616061A05D2034C034B034E034DFFFF0610FFFFFFFFFFFFFFFF05D405D3FFFFFFFF05D605D5 +0351035003530352FFFFFFFFFFFFFFFFFFFFFFFF05D805D7FFFF05D905DB05DA0355035403570356FFFF0358FFFFFFFF +FFFFFFFF06110617FFFF0618061B05DC035A0359035C035BFFFF0612FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF035EFFFFFFFF0360035FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0361FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03630362036503640367036603690368 +036B036A036D036C036F036E03710370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0372FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03740373 +0376037503780377037A0379037C037B037E037D0380037F03820381038403830386038503880387038A0389038C038B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +038E038D0390038F03920391039403930396039503980397039A0399039C039B039E039D03A0039F03A203A103A403A3 +03A603A503A803A703AA03A903AC03AB03AE03AD03B003AF03B203B103B403B303B603B503B803B703BA03B903BC03BB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF03BD03BF03BEFFFF03C003C1FFFF03C2FFFF03C3FFFF03C4FFFF03C603C5FFFF03C7FFFF03C803C9FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF03CB03CAFFFF03CCFFFF03CDFFFF03CEFFFF03CFFFFF03D0FFFF03D1FFFF03D2FFFF03D3 +FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DF +FFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6FFFF03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EB +FFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF03F7 +FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFF03FDFFFFFFFFFFFFFFFFFFFFFFFF03FEFFFF03FFFFFFFFFFFFFF +FFFFFFFFFFFF0400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0401FFFF0402FFFF0403FFFF0404 +FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF040FFFFF0410 +FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0419FFFF041AFFFF041BFFFF041CFFFF041DFFFF041EFFFF041F +FFFF0420FFFF0421FFFF0422FFFF0423FFFF0424FFFF0425FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0426FFFF0427FFFF0428FFFF0429FFFF042AFFFF042BFFFF042C +FFFFFFFFFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437 +FFFF0438FFFF0439FFFF043AFFFF043BFFFF043CFFFF043DFFFF043EFFFF043FFFFF0440FFFF0441FFFF0442FFFF0443 +FFFF0444FFFF0445FFFF0446FFFF0447FFFF0448FFFF0449FFFF044AFFFF044BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +044CFFFF044DFFFF044EFFFFFFFF044FFFFF0450FFFF0451FFFF0452FFFF0453FFFFFFFF0454FFFF0455FFFFFFFFFFFF +FFFF0456FFFF0457FFFFFFFFFFFF0458FFFF0459FFFF045AFFFF045BFFFF045CFFFF045DFFFF045EFFFF045FFFFF0460 +FFFF04610463046204650464FFFF046604680467046A0469FFFF046BFFFF046CFFFF046DFFFF046EFFFF046FFFFF0470 +FFFF0471FFFF047204740473047604750477FFFF0478FFFFFFFF0479FFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFF047B +FFFF047CFFFF047DFFFF047EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05B805B705BA05B905BC05BBFFFF05BD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BFFFFF05C105C005C305C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0480FFFF048204810484048304860485 +04880487048A0489048C048B048E048D0490048F04920491049404930496049504980497FFFF0499FFFFFFFFFFFFFFFF +049B049A049D049C049F049E04A104A004A304A204A504A404A704A604A904A804AB04AA04AD04AC04AF04AE04B104B0 +04B304B204B504B404B704B604B904B804BB04BA04BD04BC04BF04BE04C104C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C304C204C504C404C704C604C904C8 +04CB04CA04CD04CC04CF04CE04D104D004D304D204D504D404D704D604D904D804DB04DA04DD04DC04DF04DE04E104E0 +04E304E204E504E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04E704E604E904E804EB04EA04ED04EC04EF04EEFFFF04F004F204F104F404F304F604F504F804F704FA04F904FC04FB +04FE04FDFFFF04FF050105000503050205050504FFFF050605080507FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050A0509050C050B050E050D0510050F05120511051405130516051505180517 +051A0519051C051B051E051D0520051F05220521052405230526052505280527052A0529052C052B052E052D0530052F +05320531053405330536053505380537053A0539FFFF053BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF053D053C053F053E0541054005430542 +054505440547054605490548054B054A054D054C054F054E05510550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050505040507050605090508050B050A050D050C050F050E0511051005130512 -051505140517051605190518051B051A051D051C051F051E0521052005230522052505240527052605290528052B052A -052D052C052F052E053105300533053205350534FFFF0536FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05380537053A0539053C053B053E053D0540053F054205410544054305460545 -05480547054A0549054C054B054E054D0550054F05520551055405530556055505580557055A0559055C055B055E055D -0560055F05620561056405630566056505680567056A0569056C056B056E056D0570056F057205710574057305760575 +05530552055505540557055605590558055B055A055D055C055F055E0561056005630562056505640567056605690568 +056B056A056D056C056F056E0571057005730572057505740577057605790578057B057A057D057C057F057E05810580 +05830582058505840587058605890588058B058A058D058C058F058E05910590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05780577057A0579057C057B057E057D0580057F058205810584058305860585 -05880587058A0589058C058B058E058D0590058F05920591059405930596059505980597FFFFFFFFFFFFFFFFFFFFFFFF +05930592059505940597059605990598059B059A059D059C059F059E05A105A005A305A205A505A405A705A605A905A8 +05AB05AA05AD05AC05AF05AE05B105B005B305B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10496 bytes +//10752 bytes enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -000001000000048000000F80", +000001000000048000001000", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4035,17 +4118,17 @@ x" 000000000000000000000032000000000000000000000000000000000000000000000000000000000033000000000000 000000000000000000000000000000000000000000000000000000000000000000350034003600000000000000000037 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000380000003900000000003A0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000039000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000003B000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000000000000000000000003A0000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000003C0000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000003C003B000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003E003D000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -4063,169 +4146,174 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00020001000400030006000500080007000A0009 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AEFFFF001C001B001E001D0020001F00220021 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C9FFFF001C001B001E001D0020001F00220021 002400230026002500280027002A0029002C002B002E002D0030002FFFFF003100330032003500340037003600390038 003AFFFF003BFFFF003CFFFF003DFFFF003EFFFF003FFFFF0040FFFF0041FFFF0042FFFF0043FFFF0044FFFF0045FFFF 0046FFFF0047FFFF0048FFFF0049FFFF004AFFFF004BFFFF004CFFFF004DFFFF004EFFFF004FFFFF0050FFFF0051FFFF -005205B00053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C -05CD005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF +005205CB0053FFFF0054FFFF0055FFFFFFFFFFFFFFFF0056FFFF0057FFFF0058FFFF0059FFFF005AFFFF005BFFFF005C +05E8005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF 0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF -FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF -FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF -FFFFFFFFFFFFFFFF008F008E009100900093009200950094FFFF0096FFFF0097FFFF0098FFFF0099FFFF009AFFFF009B -FFFF009CFFFF009D009F009E00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFF -00A905D500AB00AA00ACFFFFFFFFFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF00B2FFFF00B3FFFF00B4FFFF -00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF -FFFFFFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFF00C7FFFF00C8FFFF00C9FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00CA00CBFFFFFFFF00CCFFFF00CDFFFFFFFF00CEFFFF00CFFFFF00D0FFFF00D1FFFF00D2FFFF -00D400D300D600D5FFFF00D700D900D800DAFFFF00DBFFFFFFFF00DCFFFFFFFF00DE00DD00DFFFFF00E0FFFFFFFF00E1 -00E300E200E500E4FFFF00E600E7FFFF00E8FFFFFFFF00E900EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFFFFFFFFFF -FFFF00EC00EE00EDFFFFFFFF00EFFFFF00F100F000F300F2FFFF00F4FFFFFFFFFFFFFFFFFFFF00F5FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00F6FFFFFFFF00F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F9FFFF00FAFFFFFFFFFFFF00FBFFFF -FFFFFFFF00FCFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF05CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF010000FF01020101010305D2010501040107010601090108010B010A010D010C010F010E01110110 -01130112011501140117011601190118011B011A011D011C011F011EFFFF012001220121FFFFFFFF0123FFFF01250124 -0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF0130FFFF0131FFFF -01330132013501340136FFFFFFFFFFFFFFFF01370138FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013A0139013C013B013E013D0140013F -01420141014401430146014501480147014A0149014C014B014E014D0150014F01520151015401530156015501580157 -015A0159015C015B015E015D0160015F016201610164016301660165016801670169FFFF016AFFFF016BFFFF016CFFFF -016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF0177FFFF0178FFFF -0179FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFF017FFFFF0180FFFF -0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF018BFFFF018CFFFF -018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFFFFFFFFFFFFFF0195FFFF0196FFFF0197 -FFFF0198FFFF0199FFFF019A019C019B019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2FFFF01A3FFFF01A4FFFF -01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF01AFFFFF01B0FFFF -01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF01BBFFFF01BCFFFF -01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF01C7FFFF01C8FFFF -01C9FFFF01CAFFFF01CBFFFF01CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CDFFFF01CF01CE01D101D001D301D201D501D401D701D601D901D801DB01DA -01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EE01F101F005C101F2 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207020A0209 -020C020B020E020D0210020F02120211021402130216021502180217021A0219021C021BFFFF021D021EFFFF0220021F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022202210224022302260225FFFFFFFF02280227022A0229022C022B022E022D -FFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFF0234FFFF0235FFFF0236FFFF -0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF0242FFFF -0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF024EFFFF -024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF025AFFFF -025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF0266FFFF -0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF0272FFFF -0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFF027DFFFF05D905D7 -05DD05DB027E05DFFFFFFFFFFFFFFFFF027FFFFF0280FFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF -0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF -0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF -029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF -02ABFFFF02ACFFFF02ADFFFF02AEFFFF02B002AF02B202B102B402B302B602B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02B802B702BA02B902BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BE02BD02C002BF02C202C102C402C3 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C602C502C802C702CA02C902CC02CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02CE02CD02D002CF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D305E102D405E302D505E602D605E9 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D802D702DA02D902DC02DB02DE02DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02E002DF02E202E102E402E302E602E502E802E702EA02E902EC02EBFFFFFFFF060B060A060D060C060F060E06110610 -06130612061506140617061606190618061B061A061D061C061F061E0621062006230622062506240627062606290628 -062B062A062D062C062F062E063106300633063206350634063706360639063803060305063A0640FFFF0642064C05EC -FFFFFFFFFFFFFFFFFFFF063BFFFF0308FFFFFFFF063C0644FFFF0646064F05EEFFFFFFFFFFFFFFFFFFFF063DFFFFFFFF -030B030A05F305F0FFFFFFFF05F805F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030D030C05FE05FB030E060106050603 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF063E0648FFFF064A06520608FFFFFFFFFFFFFFFFFFFF063FFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03120311031403130316031503180317031A0319031C031B031E031D0320031FFFFFFFFFFFFFFFFFFFFF0321FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03230322032503240327032603290328032B032A032D032C032F032E0331033003330332033503340337033603390338 -033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E0351035003530352 -035503540357035603590358035B035A035D035C035F035E0361036003630362036503640367036603690368036B036A -036CFFFFFFFFFFFF036DFFFFFFFF036EFFFF036FFFFF0370FFFF0371FFFFFFFFFFFFFFFF0372FFFFFFFFFFFFFFFF0373 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0374FFFF0375FFFF0376FFFF0377FFFF0378FFFF0379FFFF037AFFFF037BFFFF -037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF0387FFFF -0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF0393FFFF -0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF039FFFFF -03A0FFFF03A1FFFF03A2FFFF03A3FFFF03A4FFFF03A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A6FFFF03A7 -FFFFFFFF03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AA03A903AC03AB03AE03AD03B003AF -03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C303C603C503C803C7 -03CA03C903CC03CB03CE03CD03CFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF -03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF -03E5FFFF03E6FFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF -03F4FFFF03F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFF03FDFFFF03FEFFFF03FFFFFF -0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF -040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFF -0418FFFF0419FFFF041AFFFF041BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFF041D041EFFFF -041FFFFF0420FFFF0421FFFF0422FFFFFFFFFFFFFFFFFFFFFFFF0423FFFFFFFF0424FFFF0425FFFFFFFF04260427FFFF -0428FFFF0429FFFF042AFFFF042BFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF -FFFF0439FFFF043AFFFFFFFFFFFFFFFF043BFFFFFFFFFFFFFFFFFFFF043CFFFF043DFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043E -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0441044004430442044504440447044604490448044B044A044D044C044F044E -0451045004530452045504540457045604590458045B045A045D045C045F045E04610460046304620465046404670466 -04690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A047D047C047F047E -0481048004830482048504840487048604890488048B048A048D048C048F048E05B305B105B705B505BD05BAFFFF05BF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C3FFFF05C705C505CB05C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0490FFFF04920491049404930496049504980497049A0499049C049B049E049D -04A0049F04A204A104A404A304A604A504A804A7FFFF04A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04AB04AA04AD04AC04AF04AE04B104B0 -04B304B204B504B404B704B604B904B804BB04BA04BD04BC04BF04BE04C104C004C304C204C504C404C704C604C904C8 -04CB04CA04CD04CC04CF04CE04D104D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D304D204D504D404D704D604D904D804DB04DA04DD04DC04DF04DE04E104E0 -04E304E204E504E404E704E604E904E804EB04EA04ED04EC04EF04EE04F104F004F304F204F504F4FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F6FFFF -04F804F704FA04F904FC04FB04FE04FD050004FF0501FFFF05030502050505040507050605090508050B050A050D050C -050F050E0510FFFF0512051105140513051605150517FFFFFFFF0518FFFFFFFF051A0519051C051B051E051D0520051F -05220521052405230526052505280527052A0529052C052B052E052D0530052F05320531053405330536053505380537 -053A0539053C053B053E053D0540053F05420541054405430546054505480547054A0549FFFF054BFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054D054C054F054E0551055005530552055505540557055605590558055B055A -055D055C055F055E0561056005630562056505640567056605690568056B056AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFF00820081FFFFFFFFFFFF00830084FFFF0085FFFF0086FFFFFFFFFFFF +FFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFFFFFFFFFF008AFFFF008B008CFFFFFFFFFFFF008DFFFF008EFFFF +FFFFFFFFFFFFFFFF0090008F009200910094009300960095FFFF0097FFFF0098FFFF0099FFFF009AFFFF009BFFFF009C +FFFF009DFFFF009E00A0009F00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFF00A9FFFF +00AA05F000AC00AB00ADFFFFFFFFFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF00B2FFFF00B3FFFF00B4FFFF00B5FFFF +00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF +FFFFFFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFF00C7FFFF00C8FFFF00C9FFFF00CAFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00CB00CCFFFFFFFF00CDFFFF00CEFFFFFFFF00CFFFFF00D0FFFF00D1FFFF00D2FFFF00D3FFFF +00D500D400D700D6FFFF00D800DA00D900DBFFFF00DCFFFFFFFF00DDFFFFFFFF00DF00DE00E0FFFF00E200E1FFFF00E3 +00E500E400E700E6FFFF00E800E9FFFF00EAFFFFFFFF00EB00ECFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EDFFFFFFFFFFFF +FFFF00EE00F000EFFFFFFFFF00F1FFFF00F300F200F500F4FFFF00F6FFFFFFFFFFFFFFFFFFFF00F7FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F8FFFFFFFF00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FBFFFF00FCFFFFFFFFFFFF00FDFFFF +FFFFFFFF00FEFFFF010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF05EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0102010101040103010505ED0107010601090108010B010A010D010C010F010E0111011001130112 +011501140117011601190118011B011A011D011C011F011E01210120FFFF012201240123FFFFFFFF0125FFFF01270126 +0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF0130FFFF0131FFFF0132FFFF0133FFFF +01350134013701360138FFFFFFFFFFFFFFFF0139013AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013C013B013E013D0140013F01420141 +014401430146014501480147014A0149014C014B014E014D0150014F01520151015401530156015501580157015A0159 +015C015B015E015D0160015F01620161016401630166016501680167016A0169016BFFFF016CFFFF016DFFFF016EFFFF +016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF0177FFFF0178FFFF0179FFFF017AFFFF +017BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF017CFFFF017DFFFF017EFFFF017FFFFF0180FFFF0181FFFF0182FFFF +0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF018BFFFF018CFFFF018DFFFF018EFFFF +018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFF0195FFFF0196FFFFFFFFFFFFFFFF0197FFFF0198FFFF0199 +FFFF019AFFFF019BFFFF019C019E019D019FFFFF01A0FFFF01A1FFFF01A2FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF +01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF01AFFFFF01B0FFFF01B1FFFF01B2FFFF +01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF01BBFFFF01BCFFFF01BDFFFF01BEFFFF +01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF01C7FFFF01C8FFFF01C9FFFF01CAFFFF +01CBFFFF01CCFFFF01CDFFFF01CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CFFFFF01D101D001D301D201D501D401D701D601D901D801DB01DA01DD01DC +01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EE01F101F001F301F205DC01F4 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207020A0209020C020B +020E020D0210020F02120211021402130216021502180217021A0219021C021B021E021DFFFF021F0220FFFF02220221 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022402230226022502280227FFFFFFFF022A0229022C022B022E022D0230022F +FFFF0231FFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFFFFFFFFFF0234FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0235FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0236FFFF0237FFFF0238FFFF0239FFFF +023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF0242FFFF0243FFFF0244FFFF0245FFFF +0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF024EFFFF024FFFFF0250FFFF0251FFFF +0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF025AFFFF025BFFFF025CFFFF025DFFFF +025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF0266FFFF0267FFFF0268FFFF0269FFFF +026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF0272FFFF0273FFFF0274FFFF0275FFFF +0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFF027DFFFF027EFFFF027FFFFF0280FFFF05F405F2 +05F805F6028105FAFFFFFFFFFFFFFFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF +028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF +0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF +02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF02ABFFFF02ACFFFF02ADFFFF +02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B302B202B502B402B702B602B902B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02BB02BA02BD02BC02BF02BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C102C002C302C202C502C402C702C6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C902C802CB02CA02CD02CC02CF02CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02D102D002D302D202D502D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D605FC02D705FE02D8060102D90604 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DB02DA02DD02DC02DF02DE02E102E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E302E202E502E402E702E602E902E802EB02EA02ED02EC02EF02EEFFFFFFFF0626062506280627062A0629062C062B +062E062D0630062F06320631063406330636063506380637063A0639063C063B063E063D0640063F0642064106440643 +0646064506480647064A0649064C064B064E064D0650064F0652065106540653030903080655065BFFFF065D06670607 +FFFFFFFFFFFFFFFFFFFF0656FFFF030BFFFFFFFF0657065FFFFF0661066A0609FFFFFFFFFFFFFFFFFFFF0658FFFFFFFF +030E030D060E060BFFFFFFFF06130611FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310030F061906160311061C0620061E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06590663FFFF0665066D0623FFFFFFFFFFFFFFFFFFFF065AFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0313FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031503140317031603190318031B031A031D031C031F031E0321032003230322FFFFFFFFFFFFFFFFFFFF0324FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0326032503280327032A0329032C032B032E032D0330032F03320331033403330336033503380337033A0339033C033B +033E033DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0340033F03420341034403430346034503480347034A0349034C034B034E034D0350034F035203510354035303560355 +03580357035A0359035C035B035E035D0360035F03620361036403630366036503680367036A0369036C036B036E036D +036FFFFFFFFFFFFF0370FFFFFFFF0371FFFF0372FFFF0373FFFF0374FFFFFFFFFFFFFFFF0375FFFFFFFFFFFFFFFF0376 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0377FFFF0378FFFF0379FFFF037AFFFF037BFFFF037CFFFF037DFFFF037EFFFF +037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF0387FFFF0388FFFF0389FFFF038AFFFF +038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF0393FFFF0394FFFF0395FFFF0396FFFF +0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF039FFFFF03A0FFFF03A1FFFF03A2FFFF +03A3FFFF03A4FFFF03A5FFFF03A6FFFF03A7FFFF03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A9FFFF03AA +FFFFFFFF03ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AD03AC03AF03AE03B103B003B303B2 +03B503B403B703B603B903B803BB03BA03BD03BC03BF03BE03C103C003C303C203C503C403C703C603C903C803CB03CA +03CD03CC03CF03CE03D103D003D2FFFFFFFFFFFFFFFFFFFF03D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF +03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6FFFF03E7FFFF +03E8FFFF03E9FFFF03EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF +03F7FFFF03F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFF03FDFFFF03FEFFFF03FFFFFFFFFFFFFF0400FFFF0401FFFF0402FFFF +0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF +040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFF0418FFFF0419FFFF041AFFFF +041BFFFF041CFFFF041DFFFF041EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041FFFFF04200421FFFF +0422FFFF0423FFFF0424FFFF0425FFFFFFFFFFFFFFFFFFFFFFFF0426FFFFFFFF0427FFFF0428FFFFFFFF0429042AFFFF +042BFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFF0439FFFF043AFFFF043BFFFFFFFFFFFFFFFFFFFF +FFFF043CFFFF043D043EFFFFFFFFFFFF043FFFFFFFFFFFFFFFFFFFFF0440FFFF0441FFFF0442FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0443 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0446044504480447044A0449044C044B044E044D0450044F0452045104540453 +0456045504580457045A0459045C045B045E045D0460045F04620461046404630466046504680467046A0469046C046B +046E046D0470046F04720471047404730476047504780477047A0479047C047B047E047D0480047F0482048104840483 +0486048504880487048A0489048C048B048E048D0490048F049204910494049305CE05CC05D205D005D805D5FFFF05DA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05DEFFFF05E205E005E605E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0495FFFF0497049604990498049B049A049D049C049F049E04A104A004A304A2 +04A504A404A704A604A904A804AB04AA04AD04ACFFFF04AEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04B004AF04B204B104B404B304B604B5 +04B804B704BA04B904BC04BB04BE04BD04C004BF04C204C104C404C304C604C504C804C704CA04C904CC04CB04CE04CD +04D004CF04D204D104D404D304D604D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D804D704DA04D904DC04DB04DE04DD04E004DF04E204E104E404E304E604E5 +04E804E704EA04E904EC04EB04EE04ED04F004EF04F204F104F404F304F604F504F804F704FA04F9FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04FBFFFF +04FD04FC04FF04FE0501050005030502050505040506FFFF05080507050A0509050C050B050E050D0510050F05120511 +051405130515FFFF0517051605190518051B051A051CFFFFFFFF051DFFFFFFFF051F051E052105200523052205250524 +0527052605290528052B052A052D052C052F052E0531053005330532053505340537053605390538053B053A053D053C +053F053E0541054005430542054505440547054605490548054B054A054D054C054F054EFFFF0550FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056D056C056F056E0571057005730572057505740577057605790578057B057A -057D057C057F057E0581058005830582058505840587058605890588058B058AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05520551055405530556055505580557055A0559055C055B055E055D0560055F +056205610564056305660565FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF058D058C058F058E0591059005930592059505940597059605990598059B059A059D059C059F059E05A105A0 -05A305A205A505A405A705A605A905A805AB05AA05AD05ACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05680567056A0569056C056B056E056D +0570056F05720571057405730576057505780577057A0579057C057B057E057D0580057F058205810584058305860585 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05880587058A0589058C058B058E058D +0590058F05920591059405930596059505980597059A0599059C059B059E059D05A0059F05A205A105A405A305A605A5 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A805A705AA05A905AC05AB05AE05AD05B005AF05B205B105B405B3 +05B605B505B805B705BA05B905BC05BB05BE05BD05C005BF05C205C105C405C305C605C505C805C7FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10368 bytes +//10624 bytes enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -000001000000048000000F40", +000001000000048000000FC0", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4261,17 +4349,17 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000032000000000000 000000000000000000000000000000000000000000000000000000000000000000340033003500000000000000000036 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000037000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000037000000380000000000390000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000003A000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000003B0000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000003B003A000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003D003C000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -4297,158 +4385,164 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001C001B001E001D FFFF005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF 0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF -FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF -FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF -FFFFFFFFFFFFFFFF008EFFFFFFFF008F009100900092FFFFFFFF0093FFFF0094FFFF0095FFFF0096FFFF0097FFFF0098 -FFFF0099FFFF009A009C009B009DFFFF009EFFFF009FFFFF00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF -FFFFFFFF00A700A600A8FFFFFFFFFFFF00A9FFFF00AAFFFF00ABFFFF00ACFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF -00B1FFFF00B2FFFF00B3FFFF00B4FFFF00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF -FFFFFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00C600C7FFFFFFFF00C8FFFF00C9FFFFFFFF00CAFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF -00D000CF00D200D1FFFF00D300D500D400D6FFFF00D7FFFFFFFF00D8FFFFFFFF00DA00D900DBFFFF00DCFFFFFFFF00DD -00DF00DE00E100E0FFFF00E200E3FFFF00E4FFFFFFFF00E500E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFFFFFFFFFF -FFFF00E800EA00E9FFFFFFFF00EBFFFF00ED00EC00EF00EEFFFF00F0FFFFFFFFFFFFFFFFFFFF00F1FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00F2FFFFFFFF00F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F5FFFF00F6FFFFFFFFFFFF00F7FFFF -FFFFFFFF00F8FFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00FC00FB00FE00FD00FFFFFF0101010001030102010501040107010601090108010B010A010D010C -010F010E0111011001130112011501140117011601190118011B011AFFFF011C011E011DFFFFFFFF011FFFFF01210120 -0122FFFF0123FFFF0124FFFF0125FFFF0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF -012F012E013101300132FFFFFFFFFFFFFFFF01330134FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0136013501380137013A0139013C013B -013E013D0140013F01420141014401430146014501480147014A0149014C014B014E014D0150014F0152015101540153 -0156015501580157015A0159015C015B015E015D0160015F01620161016401630165FFFF0166FFFF0167FFFF0168FFFF -0169FFFF016AFFFF016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF -0175FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0176FFFF0177FFFF0178FFFF0179FFFF017AFFFF017BFFFF017CFFFF -017DFFFF017EFFFF017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF -0189FFFF018AFFFF018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFFFFFFFFFFFFFF0191FFFF0192FFFF0193 -FFFF0194FFFF0195FFFF0196019801970199FFFF019AFFFF019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF -01A1FFFF01A2FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF -01ADFFFF01AEFFFF01AFFFFF01B0FFFF01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF -01B9FFFF01BAFFFF01BBFFFF01BCFFFF01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF -01C5FFFF01C6FFFF01C7FFFF01C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01C9FFFF01CB01CA01CD01CC01CF01CE01D101D001D301D201D501D401D701D6 -01D901D801DB01DA01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01ECFFFF01EE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F001EF01F201F101F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF020202010204020302060205 -02080207020A0209020C020B020E020D0210020F02120211021402130216021502180217FFFF0219021AFFFF021C021B -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF021E021D0220021F02220221FFFFFFFF022402230226022502280227022A0229 -FFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFF0230FFFF0231FFFF0232FFFF -0233FFFF0234FFFF0235FFFF0236FFFF0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF -023FFFFF0240FFFF0241FFFF0242FFFF0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF -024BFFFF024CFFFF024DFFFF024EFFFF024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF -0257FFFF0258FFFF0259FFFF025AFFFF025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF -0263FFFF0264FFFF0265FFFF0266FFFF0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF -026FFFFF0270FFFF0271FFFF0272FFFF0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFFFFFFFFFF -FFFFFFFF027AFFFFFFFFFFFFFFFFFFFF027BFFFF027CFFFF027DFFFF027EFFFF027FFFFF0280FFFF0281FFFF0282FFFF -0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF -028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF -029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF -02A7FFFF02A8FFFF02A9FFFF02AAFFFF02AC02AB02AE02AD02B002AF02B202B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02B402B302B602B502B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BA02B902BC02BB02BE02BD02C002BF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C202C102C402C302C602C502C802C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02CA02C902CC02CB02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D402D302D602D502D802D702DA02D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02DC02DB02DE02DD02E002DF02E202E102E402E302E602E502E802E7FFFFFFFF02EA02E902EC02EB02EE02ED02F002EF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F202F102F402F302F602F502F802F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02FA02F902FC02FB02FE02FD030002FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030203010303FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF0304FFFFFFFF0305FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03070306FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03090308FFFFFFFF030AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -030E030D0310030F03120311031403130316031503180317031A0319031C031BFFFFFFFFFFFFFFFFFFFF031DFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -031F031E0321032003230322032503240327032603290328032B032A032D032C032F032E033103300333033203350334 -03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03390338033B033A033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E -0351035003530352035503540357035603590358035B035A035D035C035F035E03610360036303620365036403670366 -0368FFFFFFFFFFFF0369FFFFFFFF036AFFFF036BFFFF036CFFFF036DFFFFFFFFFFFFFFFF036EFFFFFFFFFFFFFFFF036F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0370FFFF0371FFFF0372FFFF0373FFFF0374FFFF0375FFFF0376FFFF0377FFFF -0378FFFF0379FFFF037AFFFF037BFFFF037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF -0384FFFF0385FFFF0386FFFF0387FFFF0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF -0390FFFF0391FFFF0392FFFF0393FFFF0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF -039CFFFF039DFFFF039EFFFF039FFFFF03A0FFFF03A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A2FFFF03A3 -FFFFFFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A603A503A803A703AA03A903AC03AB -03AE03AD03B003AF03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C3 -03C603C503C803C703CA03C903CBFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CDFFFF03CEFFFF03CFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF -03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF -03E1FFFF03E2FFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E4FFFF03E5FFFF03E6FFFF03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF -03F0FFFF03F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFFFFFFFFFF03F9FFFF03FAFFFF03FBFFFF -03FCFFFF03FDFFFF03FEFFFF03FFFFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF -0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF -0414FFFF0415FFFF0416FFFF0417FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0419041AFFFF -041BFFFF041CFFFF041DFFFF041EFFFFFFFFFFFFFFFFFFFFFFFF041FFFFFFFFF0420FFFF0421FFFFFFFF04220423FFFF -0424FFFF0425FFFF0426FFFF0427FFFF0428FFFF0429FFFF042AFFFF042BFFFF042CFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFFFFFFFFFFFFFFFFFF -FFFF0435FFFF0436FFFFFFFFFFFFFFFF0437FFFFFFFFFFFFFFFFFFFF0438FFFF0439FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043A +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFF00820081FFFFFFFFFFFF00830084FFFF0085FFFF0086FFFFFFFFFFFF +FFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFFFFFFFFFF008AFFFF008B008CFFFFFFFFFFFF008DFFFF008EFFFF +FFFFFFFFFFFFFFFF008FFFFFFFFF0090009200910093FFFFFFFF0094FFFF0095FFFF0096FFFF0097FFFF0098FFFF0099 +FFFF009AFFFF009B009D009C009EFFFF009FFFFF00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF +FFFFFFFF00A800A700A9FFFFFFFFFFFF00AAFFFF00ABFFFF00ACFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF +00B2FFFF00B3FFFF00B4FFFF00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF +FFFFFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00C700C8FFFFFFFF00C9FFFF00CAFFFFFFFF00CBFFFF00CCFFFF00CDFFFF00CEFFFF00CFFFFF +00D100D000D300D2FFFF00D400D600D500D7FFFF00D8FFFFFFFF00D9FFFFFFFF00DB00DA00DCFFFF00DE00DDFFFF00DF +00E100E000E300E2FFFF00E400E5FFFF00E6FFFFFFFF00E700E8FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E9FFFFFFFFFFFF +FFFF00EA00EC00EBFFFFFFFF00EDFFFF00EF00EE00F100F0FFFF00F2FFFFFFFFFFFFFFFFFFFF00F3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F4FFFFFFFF00F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F7FFFF00F8FFFFFFFFFFFF00F9FFFF +FFFFFFFF00FAFFFF00FC00FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00FE00FD010000FF0101FFFF01030102010501040107010601090108010B010A010D010C010F010E +0111011001130112011501140117011601190118011B011A011D011CFFFF011E0120011FFFFFFFFF0121FFFF01230122 +0124FFFF0125FFFF0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF +01310130013301320134FFFFFFFFFFFFFFFF01350136FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01380137013A0139013C013B013E013D +0140013F01420141014401430146014501480147014A0149014C014B014E014D0150014F015201510154015301560155 +01580157015A0159015C015B015E015D0160015F0162016101640163016601650167FFFF0168FFFF0169FFFF016AFFFF +016BFFFF016CFFFF016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF +0177FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0178FFFF0179FFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFF +017FFFFF0180FFFF0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF +018BFFFF018CFFFF018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFFFFFFFFFFFFFF0193FFFF0194FFFF0195 +FFFF0196FFFF0197FFFF0198019A0199019BFFFF019CFFFF019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2FFFF +01A3FFFF01A4FFFF01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF +01AFFFFF01B0FFFF01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF +01BBFFFF01BCFFFF01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF +01C7FFFF01C8FFFF01C9FFFF01CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CBFFFF01CD01CC01CF01CE01D101D001D301D201D501D401D701D601D901D8 +01DB01DA01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EEFFFF01F0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F201F101F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207 +020A0209020C020B020E020D0210020F02120211021402130216021502180217021A0219FFFF021B021CFFFF021E021D +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0220021F0222022102240223FFFFFFFF0226022502280227022A0229022C022B +FFFF022DFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFFFFFFFFFF0230FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0231FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFF0233FFFF0234FFFF0235FFFF +0236FFFF0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF +0242FFFF0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF +024EFFFF024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF +025AFFFF025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF +0266FFFF0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF +0272FFFF0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFFFFFFFFFF +FFFFFFFF027DFFFFFFFFFFFFFFFFFFFF027EFFFF027FFFFF0280FFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF +0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF +0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF +029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF +02AAFFFF02ABFFFF02ACFFFF02ADFFFF02AF02AE02B102B002B302B202B502B4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B702B602B902B802BB02BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BD02BC02BF02BE02C102C002C302C2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C502C402C702C602C902C802CB02CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CD02CC02CF02CE02D102D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D2FFFF02D3FFFF02D4FFFF02D5FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D702D602D902D802DB02DA02DD02DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02DF02DE02E102E002E302E202E502E402E702E602E902E802EB02EAFFFFFFFF02ED02EC02EF02EE02F102F002F302F2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F502F402F702F602F902F802FB02FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02FD02FC02FF02FE0301030003030302FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030503040306FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF0307FFFFFFFF0308FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030C030BFFFFFFFF030DFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0311031003130312031503140317031603190318031B031A031D031C031F031EFFFFFFFFFFFFFFFFFFFF0320FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03220321032403230326032503280327032A0329032C032B032E032D0330032F03320331033403330336033503380337 +033A0339FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033C033B033E033D0340033F03420341034403430346034503480347034A0349034C034B034E034D0350034F03520351 +035403530356035503580357035A0359035C035B035E035D0360035F03620361036403630366036503680367036A0369 +036BFFFFFFFFFFFF036CFFFFFFFF036DFFFF036EFFFF036FFFFF0370FFFFFFFFFFFFFFFF0371FFFFFFFFFFFFFFFF0372 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0373FFFF0374FFFF0375FFFF0376FFFF0377FFFF0378FFFF0379FFFF037AFFFF +037BFFFF037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF +0387FFFF0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF +0393FFFF0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF +039FFFFF03A0FFFF03A1FFFF03A2FFFF03A3FFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A5FFFF03A6 +FFFFFFFF03A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A903A803AB03AA03AD03AC03AF03AE +03B103B003B303B203B503B403B703B603B903B803BB03BA03BD03BC03BF03BE03C103C003C303C203C503C403C703C6 +03C903C803CB03CA03CD03CC03CEFFFFFFFFFFFFFFFFFFFF03CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF +03D8FFFF03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF +03E4FFFF03E5FFFF03E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF +03F3FFFF03F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFFFFFFFFFF03FCFFFF03FDFFFF03FEFFFF +03FFFFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF +040BFFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF +0417FFFF0418FFFF0419FFFF041AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041BFFFF041C041DFFFF +041EFFFF041FFFFF0420FFFF0421FFFFFFFFFFFFFFFFFFFFFFFF0422FFFFFFFF0423FFFF0424FFFFFFFF04250426FFFF +0427FFFF0428FFFF0429FFFF042AFFFF042BFFFF042CFFFF042DFFFF042EFFFF042FFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0430FFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFFFFFFFFFFFFFFFFFF +FFFF0438FFFF0439043AFFFFFFFFFFFF043BFFFFFFFFFFFFFFFFFFFF043CFFFF043DFFFF043EFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043D043C043F043E0441044004430442044504440447044604490448044B044A -044D044C044F044E0451045004530452045504540457045604590458045B045A045D045C045F045E0461046004630462 -046504640467046604690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A -047D047C047F047E0481048004830482048504840487048604890488048B048A048CFFFF048E048D0490048F04920491 -049404930496049504980497049A0499049C049B049E049D04A0049F04A204A104A404A3FFFF04A5FFFFFFFFFFFFFFFF +FFFFFFFF0440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04420441044404430446044504480447044A0449044C044B044E044D0450044F +04520451045404530456045504580457045A0459045C045B045E045D0460045F04620461046404630466046504680467 +046A0469046C046B046E046D0470046F04720471047404730476047504780477047A0479047C047B047E047D0480047F +04820481048404830486048504880487048A0489048C048B048E048D0490048F0491FFFF049304920495049404970496 +04990498049B049A049D049C049F049E04A104A004A304A204A504A404A704A604A904A8FFFF04AAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04A704A604A904A804AB04AA04AD04AC04AF04AE04B104B004B304B204B504B404B704B604B904B804BB04BA04BD04BC -04BF04BE04C104C004C304C204C504C404C704C604C904C804CB04CA04CD04CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04AC04AB04AE04AD04B004AF04B204B104B404B304B604B504B804B704BA04B904BC04BB04BE04BD04C004BF04C204C1 +04C404C304C604C504C804C704CA04C904CC04CB04CE04CD04D004CF04D204D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04CF04CE04D104D004D304D204D504D4 -04D704D604D904D804DB04DA04DD04DC04DF04DE04E104E004E304E204E504E404E704E604E904E804EB04EA04ED04EC -04EF04EE04F104F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF04F2FFFF04F404F304F604F504F804F704FA04F904FC04FB04FDFFFF04FF04FE05010500 -05030502050505040507050605090508050B050A050CFFFF050E050D0510050F051205110513FFFFFFFF0514FFFFFFFF -0516051505180517051A0519051C051B051E051D0520051F05220521052405230526052505280527052A0529052C052B -052E052D0530052F05320531053405330536053505380537053A0539053C053B053E053D0540053F0542054105440543 -05460545FFFF0547FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05490548054B054A054D054C054F054E -0551055005530552055505540557055605590558055B055A055D055C055F055E05610560056305620565056405670566 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D404D304D604D504D804D704DA04D9 +04DC04DB04DE04DD04E004DF04E204E104E404E304E604E504E804E704EA04E904EC04EB04EE04ED04F004EF04F204F1 +04F404F304F604F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF04F7FFFF04F904F804FB04FA04FD04FC04FF04FE050105000502FFFF0504050305060505 +05080507050A0509050C050B050E050D0510050F0511FFFF0513051205150514051705160518FFFFFFFF0519FFFFFFFF +051B051A051D051C051F051E0521052005230522052505240527052605290528052B052A052D052C052F052E05310530 +05330532053505340537053605390538053B053A053D053C053F053E0541054005430542054505440547054605490548 +054B054AFFFF054CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054E054D0550054F0552055105540553 +0556055505580557055A0559055C055B055E055D0560055F05620561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05690568056B056A056D056C056F056E -0571057005730572057505740577057605790578057B057A057D057C057F057E05810580058305820585058405870586 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05890588058B058A058D058C058F058E059105900593059205950594 -0597059605990598059B059A059D059C059F059E05A105A005A305A205A505A405A705A605A905A8FFFFFFFFFFFFFFFF +056405630566056505680567056A0569056C056B056E056D0570056F05720571057405730576057505780577057A0579 +057C057B057E057D0580057F05820581FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +058405830586058505880587058A0589058C058B058E058D0590058F05920591059405930596059505980597059A0599 +059C059B059E059D05A0059F05A205A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A405A305A605A505A805A7 +05AA05A905AC05AB05AE05AD05B005AF05B205B105B405B305B605B505B805B705BA05B905BC05BB05BE05BD05C005BF +05C205C105C405C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//9856 bytes +//9984 bytes enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -000001000000048000000E40", +000001000000048000000E80", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4484,17 +4578,17 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E00000000 00000000000000000000000000000000000000000000000000000000000000000000002F003100300032000000000033 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000003400000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003400350000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000003500000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000003600000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000370000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000037000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000038000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -4562,106 +4656,108 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0216021502180217021A0219021C021B021E021D0220021F02220221022402230226022502280227022A0229022C022B 022E022D0230022F02320231023402330236023502380237023A0239023C023B023E023D0240023F0242024102440243 0246024502480247024A0249024C024B024E024D0250024F02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF025402530256025502580257025A0259 -025C025B025E025D0260025F02620261026402630266026502680267026A0269026C026B026E026D0270026F02720271 -027402730276027502780277027A0279027C027BFFFF027D027EFFFF0280027FFFFF0281FFFF0282FFFF0283FFFF0284 -FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290 -FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029C -FFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8 -FFFF02A9FFFF02AAFFFF02ABFFFF02ACFFFF02ADFFFF02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B2FFFF02B3FFFF02B4 -FFFF02B5FFFF02B6FFFF02B7FFFF02B8FFFF02B9FFFF02BAFFFF02BBFFFF02BCFFFF02BDFFFF02BEFFFF02BFFFFF02C0 -FFFF02C1FFFF02C2FFFF02C3FFFF02C4FFFF02C5FFFF02C6FFFF02C7FFFF02C8FFFF02C9FFFF02CAFFFF02CBFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF02CCFFFF02CDFFFF02CEFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF02D3FFFF02D4 -FFFF02D5FFFF02D6FFFF02D7FFFF02D8FFFF02D9FFFF02DAFFFF02DBFFFF02DCFFFF02DDFFFF02DEFFFF02DFFFFF02E0 -FFFF02E1FFFF02E2FFFF02E3FFFF02E4FFFF02E5FFFF02E6FFFF02E7FFFF02E8FFFF02E9FFFF02EAFFFF02EBFFFF02EC -FFFF02EDFFFF02EEFFFF02EFFFFF02F0FFFF02F1FFFF02F2FFFF02F3FFFF02F4FFFF02F5FFFF02F6FFFF02F7FFFF02F8 -FFFF02F9FFFF02FAFFFF02FBFFFF02FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02FE02FD030002FF0302030103040303 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0306030503080307030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -030C030B030E030D0310030F03120311FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031403130316031503180317031A0319 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031C031B031E031D0320031FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0321FFFF0322FFFF0323FFFF0324FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0326032503280327032A0329032C032B -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -032E032D0330032F0332033103340333FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0336033503380337033A0339033C033B -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF033E033D0340033F0342034103440343FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0346034503480347FFFF0349FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF034B034A034D034CFFFF034EFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0350034F03520351FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0354035303560355FFFF0357FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03590358035B035AFFFF035CFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFF -FFFFFFFFFFFF0360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03620361036403630366036503680367036A0369036C036B036E036D0370036FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF03730372037503740377037603790378037B037A037D037C037F037E0381038003830382 -038503840387038603890388038B038AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF038D038C038F038E0391039003930392039503940397039603990398039B039A -039D039C039F039E03A103A003A303A203A503A403A703A603A903A803AB03AA03AD03AC03AF03AE03B103B003B303B2 -03B503B403B703B603B903B803BB03BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03BC03BE03BDFFFF03BF03C0FFFF03C1FFFF03C2FFFF03C3FFFF03C503C4 -FFFF03C6FFFF03C703C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CA03C9FFFF03CBFFFF03CCFFFF03CDFFFF03CE -FFFF03CFFFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DA -FFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6 -FFFF03E7FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2 -FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFFFFFF -FFFFFFFF03FDFFFF03FEFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040B -FFFF040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0417FFFF0418FFFF0419FFFF041A -FFFF041BFFFF041CFFFF041DFFFF041EFFFF041FFFFF0420FFFF0421FFFF0422FFFF0423FFFF0424FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFF0426FFFF0427 -FFFF0428FFFF0429FFFF042AFFFF042BFFFFFFFFFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432 -FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFF0439FFFF043AFFFF043BFFFF043CFFFF043DFFFF043E -FFFF043FFFFF0440FFFF0441FFFF0442FFFF0443FFFF0444FFFF0445FFFF0446FFFF0447FFFF0448FFFF0449FFFF044A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF044BFFFF044CFFFF044DFFFFFFFF044EFFFF044FFFFF0450FFFF0451FFFF0452 -FFFFFFFF0453FFFF0454FFFFFFFFFFFFFFFF0455FFFF0456FFFFFFFFFFFF0457FFFF0458FFFF0459FFFF045AFFFF045B -FFFF045CFFFF045DFFFF045EFFFF045FFFFF04600462046104640463FFFF04650467046604690468FFFF046AFFFF046B -FFFF046CFFFF046DFFFF046EFFFF046FFFFF0470FFFF047104730472047504740476FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF0477FFFFFFFFFFFFFFFFFFFF0478FFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047BFFFF047D047C047F047E0481048004830482048504840487048604890488 -048B048A048D048C048F048E0491049004930492FFFF0494FFFFFFFFFFFFFFFF0496049504980497049A0499049C049B -049E049D04A0049F04A204A104A404A304A604A504A804A704AA04A904AC04AB04AE04AD04B004AF04B204B104B404B3 -04B604B504B804B704BA04B904BC04BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04BE04BD04C004BF04C204C104C404C304C604C504C804C704CA04C904CC04CB -04CE04CD04D004CF04D204D104D404D304D604D504D804D704DA04D904DC04DB04DE04DD04E004DFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E204E104E404E304E604E504E804E7 -04EA04E9FFFF04EB04ED04EC04EF04EE04F104F004F304F204F504F404F704F604F904F8FFFF04FA04FC04FB04FE04FD -050004FFFFFF050105030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -050505040507050605090508050B050A050D050C050F050E0511051005130512051505140517051605190518051B051A -051D051C051F051E0521052005230522052505240527052605290528052B052A052D052C052F052E0531053005330532 -05350534FFFF0536FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -05380537053A0539053C053B053E053D0540053F05420541054405430546054505480547054A0549054C054B054E054D -0550054F05520551055405530556055505580557055A0559055C055B055E055D0560055F056205610564056305660565 -05680567056A0569056C056B056E056D0570056F057205710574057305760575FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -05780577057A0579057C057B057E057D0580057F05820581058405830586058505880587058A0589058C058B058E058D -0590058F05920591059405930596059505980597FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0253FFFFFFFFFFFFFFFFFFFFFFFFFFFF025502540257025602590258025B025A +025D025C025F025E0261026002630262026502640267026602690268026B026A026D026C026F026E0271027002730272 +027502740277027602790278027B027A027D027CFFFF027E027FFFFF02810280FFFF0282FFFF0283FFFF0284FFFF0285 +FFFF0286FFFF0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291 +FFFF0292FFFF0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029D +FFFF029EFFFF029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9 +FFFF02AAFFFF02ABFFFF02ACFFFF02ADFFFF02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B2FFFF02B3FFFF02B4FFFF02B5 +FFFF02B6FFFF02B7FFFF02B8FFFF02B9FFFF02BAFFFF02BBFFFF02BCFFFF02BDFFFF02BEFFFF02BFFFFF02C0FFFF02C1 +FFFF02C2FFFF02C3FFFF02C4FFFF02C5FFFF02C6FFFF02C7FFFF02C8FFFF02C9FFFF02CAFFFF02CBFFFF02CCFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF02CDFFFF02CEFFFF02CFFFFF02D0FFFF02D1FFFF02D2FFFF02D3FFFF02D4FFFF02D5 +FFFF02D6FFFF02D7FFFF02D8FFFF02D9FFFF02DAFFFF02DBFFFF02DCFFFF02DDFFFF02DEFFFF02DFFFFF02E0FFFF02E1 +FFFF02E2FFFF02E3FFFF02E4FFFF02E5FFFF02E6FFFF02E7FFFF02E8FFFF02E9FFFF02EAFFFF02EBFFFF02ECFFFF02ED +FFFF02EEFFFF02EFFFFF02F0FFFF02F1FFFF02F2FFFF02F3FFFF02F4FFFF02F5FFFF02F6FFFF02F7FFFF02F8FFFF02F9 +FFFF02FAFFFF02FBFFFF02FCFFFF02FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02FF02FE030103000303030203050304 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0307030603090308030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030D030C030F030E0311031003130312FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031503140317031603190318031B031A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031D031C031F031E03210320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0322FFFF0323FFFF0324FFFF0325FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0327032603290328032B032A032D032C +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +032F032E033103300333033203350334FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0337033603390338033B033A033D033C +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF033F033E034103400343034203450344FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0347034603490348FFFF034AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF034C034B034E034DFFFF034FFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0351035003530352FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0355035403570356FFFF0358FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035A0359035C035BFFFF035DFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035EFFFFFFFF0360035FFFFFFFFFFFFFFFFF +FFFFFFFFFFFF0361FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03630362036503640367036603690368036B036A036D036C036F036E03710370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0372FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF037403730376037503780377037A0379037C037B037E037D0380037F0382038103840383 +0386038503880387038A0389038C038BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF038E038D0390038F03920391039403930396039503980397039A0399039C039B +039E039D03A0039F03A203A103A403A303A603A503A803A703AA03A903AC03AB03AE03AD03B003AF03B203B103B403B3 +03B603B503B803B703BA03B903BC03BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03BD03BF03BEFFFF03C003C1FFFF03C2FFFF03C3FFFF03C4FFFF03C603C5 +FFFF03C7FFFF03C803C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CB03CAFFFF03CCFFFF03CDFFFF03CEFFFF03CF +FFFF03D0FFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DB +FFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6FFFF03E7 +FFFF03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3 +FFFF03F4FFFF03F5FFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFF03FDFFFFFFFFFFFFFFFF +FFFFFFFF03FEFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFF0400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF040C +FFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0419FFFF041AFFFF041B +FFFF041CFFFF041DFFFF041EFFFF041FFFFF0420FFFF0421FFFF0422FFFF0423FFFF0424FFFF0425FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0426FFFF0427FFFF0428 +FFFF0429FFFF042AFFFF042BFFFF042CFFFFFFFFFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433 +FFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFF0439FFFF043AFFFF043BFFFF043CFFFF043DFFFF043EFFFF043F +FFFF0440FFFF0441FFFF0442FFFF0443FFFF0444FFFF0445FFFF0446FFFF0447FFFF0448FFFF0449FFFF044AFFFF044B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF044CFFFF044DFFFF044EFFFFFFFF044FFFFF0450FFFF0451FFFF0452FFFF0453 +FFFFFFFF0454FFFF0455FFFFFFFFFFFFFFFF0456FFFF0457FFFFFFFFFFFF0458FFFF0459FFFF045AFFFF045BFFFF045C +FFFF045DFFFF045EFFFF045FFFFF0460FFFF04610463046204650464FFFF046604680467046A0469FFFF046BFFFF046C +FFFF046DFFFF046EFFFF046FFFFF0470FFFF0471FFFF047204740473047604750477FFFF0478FFFFFFFF0479FFFFFFFF +FFFF047AFFFFFFFFFFFFFFFFFFFF047BFFFF047CFFFF047DFFFF047EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0480FFFF04820481048404830486048504880487048A0489048C048B048E048D +0490048F04920491049404930496049504980497FFFF0499FFFFFFFFFFFFFFFF049B049A049D049C049F049E04A104A0 +04A304A204A504A404A704A604A904A804AB04AA04AD04AC04AF04AE04B104B004B304B204B504B404B704B604B904B8 +04BB04BA04BD04BC04BF04BE04C104C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C304C204C504C404C704C604C904C804CB04CA04CD04CC04CF04CE04D104D0 +04D304D204D504D404D704D604D904D804DB04DA04DD04DC04DF04DE04E104E004E304E204E504E4FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E704E604E904E804EB04EA04ED04EC +04EF04EEFFFF04F004F204F104F404F304F604F504F804F704FA04F904FC04FB04FE04FDFFFF04FF0501050005030502 +05050504FFFF050605080507FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +050A0509050C050B050E050D0510050F05120511051405130516051505180517051A0519051C051B051E051D0520051F +05220521052405230526052505280527052A0529052C052B052E052D0530052F05320531053405330536053505380537 +053A0539FFFF053BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF053D053C053F053E0541054005430542054505440547054605490548054B054A +054D054C054F054E05510550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05530552055505540557055605590558 +055B055A055D055C055F055E0561056005630562056505640567056605690568056B056A056D056C056F056E05710570 +05730572057505740577057605790578057B057A057D057C057F057E0581058005830582058505840587058605890588 +058B058A058D058C058F058E05910590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05930592059505940597059605990598 +059B059A059D059C059F059E05A105A005A305A205A505A405A705A605A905A805AB05AA05AD05AC05AF05AE05B105B0 +05B305B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10368 bytes +//10624 bytes enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000004000000280", x" -000001000000048000000F40", +000001000000048000000FC0", x" 020201000402030206020205070202020202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -4697,17 +4793,17 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000032000000000000 000000000000000000000000000000000000000000000000000000000000000000340033003500000000000000000036 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000037000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000037000000380000000000390000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000038000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000003A000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000390000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000003B0000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000003B003A000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000003D003C000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -4733,152 +4829,158 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001C001B001E001D FFFF005D005EFFFF005FFFFF0060FFFF0061FFFF0062FFFF0063FFFF0064FFFF0065FFFF0066FFFF0067FFFF0068FFFF 0069FFFF006AFFFF006BFFFF006CFFFF006DFFFF006EFFFF006FFFFF0070FFFF0071FFFF0072FFFF0073FFFF0074FFFF FFFFFFFFFFFF0075FFFF007600780077FFFF0079007AFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007DFFFFFFFF -FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFFFFFF0081FFFFFFFFFFFF00820083FFFF0084FFFF0085FFFFFFFFFFFF -FFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFFFFFFFFFF0089FFFF008A008BFFFFFFFFFFFF008CFFFF008DFFFF -FFFFFFFFFFFFFFFF008F008E009100900093009200950094FFFF0096FFFF0097FFFF0098FFFF0099FFFF009AFFFF009B -FFFF009CFFFF009D009F009E00A0FFFF00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFF -00A9FFFF00AB00AA00ACFFFFFFFFFFFF00ADFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF00B2FFFF00B3FFFF00B4FFFF -00B5FFFF00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF -FFFFFFFF00C1FFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFF00C7FFFF00C8FFFF00C9FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00CA00CBFFFFFFFF00CCFFFF00CDFFFFFFFF00CEFFFF00CFFFFF00D0FFFF00D1FFFF00D2FFFF -00D400D300D600D5FFFF00D700D900D800DAFFFF00DBFFFFFFFF00DCFFFFFFFF00DE00DD00DFFFFF00E0FFFFFFFF00E1 -00E300E200E500E4FFFF00E600E7FFFF00E8FFFFFFFF00E900EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFFFFFFFFFF -FFFF00EC00EE00EDFFFFFFFF00EFFFFF00F100F000F300F2FFFF00F4FFFFFFFFFFFFFFFFFFFF00F5FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00F6FFFFFFFF00F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F9FFFF00FAFFFFFFFFFFFF00FBFFFF -FFFFFFFF00FCFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF010000FF010201010103FFFF010501040107010601090108010B010A010D010C010F010E01110110 -01130112011501140117011601190118011B011A011D011C011F011EFFFF012001220121FFFFFFFF0123FFFF01250124 -0126FFFF0127FFFF0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF0130FFFF0131FFFF -01330132013501340136FFFFFFFFFFFFFFFF01370138FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013A0139013C013B013E013D0140013F -01420141014401430146014501480147014A0149014C014B014E014D0150014F01520151015401530156015501580157 -015A0159015C015B015E015D0160015F016201610164016301660165016801670169FFFF016AFFFF016BFFFF016CFFFF -016DFFFF016EFFFF016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF0177FFFF0178FFFF -0179FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF017AFFFF017BFFFF017CFFFF017DFFFF017EFFFF017FFFFF0180FFFF -0181FFFF0182FFFF0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF018BFFFF018CFFFF -018DFFFF018EFFFF018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFFFFFFFFFFFFFF0195FFFF0196FFFF0197 -FFFF0198FFFF0199FFFF019A019C019B019DFFFF019EFFFF019FFFFF01A0FFFF01A1FFFF01A2FFFF01A3FFFF01A4FFFF -01A5FFFF01A6FFFF01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF01AFFFFF01B0FFFF -01B1FFFF01B2FFFF01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF01BBFFFF01BCFFFF -01BDFFFF01BEFFFF01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF01C7FFFF01C8FFFF -01C9FFFF01CAFFFF01CBFFFF01CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CDFFFF01CF01CE01D101D001D301D201D501D401D701D601D901D801DB01DA -01DD01DC01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EE01F101F0FFFF01F2 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F401F301F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207020A0209 -020C020B020E020D0210020F02120211021402130216021502180217021A0219021C021BFFFF021D021EFFFF0220021F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022202210224022302260225FFFFFFFF02280227022A0229022C022B022E022D -FFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFF0234FFFF0235FFFF0236FFFF -0237FFFF0238FFFF0239FFFF023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF0242FFFF -0243FFFF0244FFFF0245FFFF0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF024EFFFF -024FFFFF0250FFFF0251FFFF0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF025AFFFF -025BFFFF025CFFFF025DFFFF025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF0266FFFF -0267FFFF0268FFFF0269FFFF026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF0272FFFF -0273FFFF0274FFFF0275FFFF0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFF027DFFFFFFFFFFFF -FFFFFFFF027EFFFFFFFFFFFFFFFFFFFF027FFFFF0280FFFF0281FFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF -0287FFFF0288FFFF0289FFFF028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF -0293FFFF0294FFFF0295FFFF0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF -029FFFFF02A0FFFF02A1FFFF02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF -02ABFFFF02ACFFFF02ADFFFF02AEFFFF02B002AF02B202B102B402B302B602B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02B802B702BA02B902BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BE02BD02C002BF02C202C102C402C3 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C602C502C802C702CA02C902CC02CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02CE02CD02D002CF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D3FFFF02D4FFFF02D5FFFF02D6FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D802D702DA02D902DC02DB02DE02DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02E002DF02E202E102E402E302E602E502E802E702EA02E902EC02EBFFFFFFFF02EE02ED02F002EF02F202F102F402F3 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F602F502F802F702FA02F902FC02FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02FE02FD030002FF0302030103040303FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030603050307FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFF0308FFFFFFFF0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030D030CFFFFFFFF030EFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03120311031403130316031503180317031A0319031C031B031E031D0320031FFFFFFFFFFFFFFFFFFFFF0321FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03230322032503240327032603290328032B032A032D032C032F032E0331033003330332033503340337033603390338 -033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -033D033C033F033E0341034003430342034503440347034603490348034B034A034D034C034F034E0351035003530352 -035503540357035603590358035B035A035D035C035F035E0361036003630362036503640367036603690368036B036A -036CFFFFFFFFFFFF036DFFFFFFFF036EFFFF036FFFFF0370FFFF0371FFFFFFFFFFFFFFFF0372FFFFFFFFFFFFFFFF0373 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0374FFFF0375FFFF0376FFFF0377FFFF0378FFFF0379FFFF037AFFFF037BFFFF -037CFFFF037DFFFF037EFFFF037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF0387FFFF -0388FFFF0389FFFF038AFFFF038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF0393FFFF -0394FFFF0395FFFF0396FFFF0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF039FFFFF -03A0FFFF03A1FFFF03A2FFFF03A3FFFF03A4FFFF03A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A6FFFF03A7 -FFFFFFFF03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AA03A903AC03AB03AE03AD03B003AF -03B203B103B403B303B603B503B803B703BA03B903BC03BB03BE03BD03C003BF03C203C103C403C303C603C503C803C7 -03CA03C903CC03CB03CE03CD03CFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D1FFFF03D2FFFF03D3FFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF -03D9FFFF03DAFFFF03DBFFFF03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF -03E5FFFF03E6FFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E8FFFF03E9FFFF03EAFFFF03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF -03F4FFFF03F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF03F6FFFF03F7FFFF03F8FFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFFFFFFFFFF03FDFFFF03FEFFFF03FFFFFF -0400FFFF0401FFFF0402FFFF0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF -040CFFFF040DFFFF040EFFFF040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFF -0418FFFF0419FFFF041AFFFF041BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFF041D041EFFFF -041FFFFF0420FFFF0421FFFF0422FFFFFFFFFFFFFFFFFFFFFFFF0423FFFFFFFF0424FFFF0425FFFFFFFF04260427FFFF -0428FFFF0429FFFF042AFFFF042BFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF0431FFFF0432FFFF0433FFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF -FFFF0439FFFF043AFFFFFFFFFFFFFFFF043BFFFFFFFFFFFFFFFFFFFF043CFFFF043DFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043E -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0441044004430442044504440447044604490448044B044A044D044C044F044E -0451045004530452045504540457045604590458045B045A045D045C045F045E04610460046304620465046404670466 -04690468046B046A046D046C046F046E0471047004730472047504740477047604790478047B047A047D047C047F047E -0481048004830482048504840487048604890488048B048A048D048C048F048E0490FFFF049204910494049304960495 -04980497049A0499049C049B049E049D04A0049F04A204A104A404A304A604A504A804A7FFFF04A9FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04AB04AA04AD04AC04AF04AE04B104B004B304B204B504B404B704B604B904B804BB04BA04BD04BC04BF04BE04C104C0 -04C304C204C504C404C704C604C904C804CB04CA04CD04CC04CF04CE04D104D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D304D204D504D404D704D604D904D8 -04DB04DA04DD04DC04DF04DE04E104E004E304E204E504E404E704E604E904E804EB04EA04ED04EC04EF04EE04F104F0 -04F304F204F504F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF04F6FFFF04F804F704FA04F904FC04FB04FE04FD050004FF0501FFFF0503050205050504 -0507050605090508050B050A050D050C050F050E0510FFFF0512051105140513051605150517FFFFFFFF0518FFFFFFFF -051A0519051C051B051E051D0520051F05220521052405230526052505280527052A0529052C052B052E052D0530052F -05320531053405330536053505380537053A0539053C053B053E053D0540053F05420541054405430546054505480547 -054A0549FFFF054BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054D054C054F054E0551055005530552 -055505540557055605590558055B055A055D055C055F055E0561056005630562056505640567056605690568056B056A +FFFFFFFFFFFF007E007FFFFFFFFFFFFF0080FFFF00820081FFFFFFFFFFFF00830084FFFF0085FFFF0086FFFFFFFFFFFF +FFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFFFFFFFFFF008AFFFF008B008CFFFFFFFFFFFF008DFFFF008EFFFF +FFFFFFFFFFFFFFFF0090008F009200910094009300960095FFFF0097FFFF0098FFFF0099FFFF009AFFFF009BFFFF009C +FFFF009DFFFF009E00A0009F00A1FFFF00A2FFFF00A3FFFF00A4FFFF00A5FFFF00A6FFFF00A7FFFF00A8FFFF00A9FFFF +00AAFFFF00AC00AB00ADFFFFFFFFFFFF00AEFFFF00AFFFFF00B0FFFF00B1FFFF00B2FFFF00B3FFFF00B4FFFF00B5FFFF +00B6FFFF00B7FFFF00B8FFFF00B9FFFF00BAFFFF00BBFFFF00BCFFFF00BDFFFF00BEFFFF00BFFFFF00C0FFFF00C1FFFF +FFFFFFFF00C2FFFF00C3FFFF00C4FFFF00C5FFFF00C6FFFF00C7FFFF00C8FFFF00C9FFFF00CAFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00CB00CCFFFFFFFF00CDFFFF00CEFFFFFFFF00CFFFFF00D0FFFF00D1FFFF00D2FFFF00D3FFFF +00D500D400D700D6FFFF00D800DA00D900DBFFFF00DCFFFFFFFF00DDFFFFFFFF00DF00DE00E0FFFF00E200E1FFFF00E3 +00E500E400E700E6FFFF00E800E9FFFF00EAFFFFFFFF00EB00ECFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EDFFFFFFFFFFFF +FFFF00EE00F000EFFFFFFFFF00F1FFFF00F300F200F500F4FFFF00F6FFFFFFFFFFFFFFFFFFFF00F7FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00F8FFFFFFFF00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FBFFFF00FCFFFFFFFFFFFF00FDFFFF +FFFFFFFF00FEFFFF010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF01020101010401030105FFFF0107010601090108010B010A010D010C010F010E0111011001130112 +011501140117011601190118011B011A011D011C011F011E01210120FFFF012201240123FFFFFFFF0125FFFF01270126 +0128FFFF0129FFFF012AFFFF012BFFFF012CFFFF012DFFFF012EFFFF012FFFFF0130FFFF0131FFFF0132FFFF0133FFFF +01350134013701360138FFFFFFFFFFFFFFFF0139013AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013C013B013E013D0140013F01420141 +014401430146014501480147014A0149014C014B014E014D0150014F01520151015401530156015501580157015A0159 +015C015B015E015D0160015F01620161016401630166016501680167016A0169016BFFFF016CFFFF016DFFFF016EFFFF +016FFFFF0170FFFF0171FFFF0172FFFF0173FFFF0174FFFF0175FFFF0176FFFF0177FFFF0178FFFF0179FFFF017AFFFF +017BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF017CFFFF017DFFFF017EFFFF017FFFFF0180FFFF0181FFFF0182FFFF +0183FFFF0184FFFF0185FFFF0186FFFF0187FFFF0188FFFF0189FFFF018AFFFF018BFFFF018CFFFF018DFFFF018EFFFF +018FFFFF0190FFFF0191FFFF0192FFFF0193FFFF0194FFFF0195FFFF0196FFFFFFFFFFFFFFFF0197FFFF0198FFFF0199 +FFFF019AFFFF019BFFFF019C019E019D019FFFFF01A0FFFF01A1FFFF01A2FFFF01A3FFFF01A4FFFF01A5FFFF01A6FFFF +01A7FFFF01A8FFFF01A9FFFF01AAFFFF01ABFFFF01ACFFFF01ADFFFF01AEFFFF01AFFFFF01B0FFFF01B1FFFF01B2FFFF +01B3FFFF01B4FFFF01B5FFFF01B6FFFF01B7FFFF01B8FFFF01B9FFFF01BAFFFF01BBFFFF01BCFFFF01BDFFFF01BEFFFF +01BFFFFF01C0FFFF01C1FFFF01C2FFFF01C3FFFF01C4FFFF01C5FFFF01C6FFFF01C7FFFF01C8FFFF01C9FFFF01CAFFFF +01CBFFFF01CCFFFF01CDFFFF01CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CFFFFF01D101D001D301D201D501D401D701D601D901D801DB01DA01DD01DC +01DF01DE01E101E001E301E201E501E401E701E601E901E801EB01EA01ED01EC01EF01EE01F101F001F301F2FFFF01F4 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F601F501F801F701FA01F901FC01FB01FE01FD020001FF02020201020402030206020502080207020A0209020C020B +020E020D0210020F02120211021402130216021502180217021A0219021C021B021E021DFFFF021F0220FFFF02220221 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022402230226022502280227FFFFFFFF022A0229022C022B022E022D0230022F +FFFF0231FFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFFFFFFFFFF0234FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0235FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0236FFFF0237FFFF0238FFFF0239FFFF +023AFFFF023BFFFF023CFFFF023DFFFF023EFFFF023FFFFF0240FFFF0241FFFF0242FFFF0243FFFF0244FFFF0245FFFF +0246FFFF0247FFFF0248FFFF0249FFFF024AFFFF024BFFFF024CFFFF024DFFFF024EFFFF024FFFFF0250FFFF0251FFFF +0252FFFF0253FFFF0254FFFF0255FFFF0256FFFF0257FFFF0258FFFF0259FFFF025AFFFF025BFFFF025CFFFF025DFFFF +025EFFFF025FFFFF0260FFFF0261FFFF0262FFFF0263FFFF0264FFFF0265FFFF0266FFFF0267FFFF0268FFFF0269FFFF +026AFFFF026BFFFF026CFFFF026DFFFF026EFFFF026FFFFF0270FFFF0271FFFF0272FFFF0273FFFF0274FFFF0275FFFF +0276FFFF0277FFFF0278FFFF0279FFFF027AFFFF027BFFFF027CFFFF027DFFFF027EFFFF027FFFFF0280FFFFFFFFFFFF +FFFFFFFF0281FFFFFFFFFFFFFFFFFFFF0282FFFF0283FFFF0284FFFF0285FFFF0286FFFF0287FFFF0288FFFF0289FFFF +028AFFFF028BFFFF028CFFFF028DFFFF028EFFFF028FFFFF0290FFFF0291FFFF0292FFFF0293FFFF0294FFFF0295FFFF +0296FFFF0297FFFF0298FFFF0299FFFF029AFFFF029BFFFF029CFFFF029DFFFF029EFFFF029FFFFF02A0FFFF02A1FFFF +02A2FFFF02A3FFFF02A4FFFF02A5FFFF02A6FFFF02A7FFFF02A8FFFF02A9FFFF02AAFFFF02ABFFFF02ACFFFF02ADFFFF +02AEFFFF02AFFFFF02B0FFFF02B1FFFF02B302B202B502B402B702B602B902B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02BB02BA02BD02BC02BF02BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C102C002C302C202C502C402C702C6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C902C802CB02CA02CD02CC02CF02CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02D102D002D302D202D502D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D6FFFF02D7FFFF02D8FFFF02D9FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DB02DA02DD02DC02DF02DE02E102E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E302E202E502E402E702E602E902E802EB02EA02ED02EC02EF02EEFFFFFFFF02F102F002F302F202F502F402F702F6 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F902F802FB02FA02FD02FC02FF02FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03010300030303020305030403070306FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03090308030AFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFF030BFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030E030DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310030FFFFFFFFF0311FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0312FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0313FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031503140317031603190318031B031A031D031C031F031E0321032003230322FFFFFFFFFFFFFFFFFFFF0324FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0326032503280327032A0329032C032B032E032D0330032F03320331033403330336033503380337033A0339033C033B +033E033DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0340033F03420341034403430346034503480347034A0349034C034B034E034D0350034F035203510354035303560355 +03580357035A0359035C035B035E035D0360035F03620361036403630366036503680367036A0369036C036B036E036D +036FFFFFFFFFFFFF0370FFFFFFFF0371FFFF0372FFFF0373FFFF0374FFFFFFFFFFFFFFFF0375FFFFFFFFFFFFFFFF0376 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0377FFFF0378FFFF0379FFFF037AFFFF037BFFFF037CFFFF037DFFFF037EFFFF +037FFFFF0380FFFF0381FFFF0382FFFF0383FFFF0384FFFF0385FFFF0386FFFF0387FFFF0388FFFF0389FFFF038AFFFF +038BFFFF038CFFFF038DFFFF038EFFFF038FFFFF0390FFFF0391FFFF0392FFFF0393FFFF0394FFFF0395FFFF0396FFFF +0397FFFF0398FFFF0399FFFF039AFFFF039BFFFF039CFFFF039DFFFF039EFFFF039FFFFF03A0FFFF03A1FFFF03A2FFFF +03A3FFFF03A4FFFF03A5FFFF03A6FFFF03A7FFFF03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A9FFFF03AA +FFFFFFFF03ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AD03AC03AF03AE03B103B003B303B2 +03B503B403B703B603B903B803BB03BA03BD03BC03BF03BE03C103C003C303C203C503C403C703C603C903C803CB03CA +03CD03CC03CF03CE03D103D003D2FFFFFFFFFFFFFFFFFFFF03D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D4FFFF03D5FFFF03D6FFFF03D7FFFF03D8FFFF03D9FFFF03DAFFFF03DBFFFF +03DCFFFF03DDFFFF03DEFFFF03DFFFFF03E0FFFF03E1FFFF03E2FFFF03E3FFFF03E4FFFF03E5FFFF03E6FFFF03E7FFFF +03E8FFFF03E9FFFF03EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03EBFFFF03ECFFFF03EDFFFF03EEFFFF03EFFFFF03F0FFFF03F1FFFF03F2FFFF03F3FFFF03F4FFFF03F5FFFF03F6FFFF +03F7FFFF03F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF03F9FFFF03FAFFFF03FBFFFF03FCFFFF03FDFFFF03FEFFFF03FFFFFFFFFFFFFF0400FFFF0401FFFF0402FFFF +0403FFFF0404FFFF0405FFFF0406FFFF0407FFFF0408FFFF0409FFFF040AFFFF040BFFFF040CFFFF040DFFFF040EFFFF +040FFFFF0410FFFF0411FFFF0412FFFF0413FFFF0414FFFF0415FFFF0416FFFF0417FFFF0418FFFF0419FFFF041AFFFF +041BFFFF041CFFFF041DFFFF041EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041FFFFF04200421FFFF +0422FFFF0423FFFF0424FFFF0425FFFFFFFFFFFFFFFFFFFFFFFF0426FFFFFFFF0427FFFF0428FFFFFFFF0429042AFFFF +042BFFFF042CFFFF042DFFFF042EFFFF042FFFFF0430FFFF0431FFFF0432FFFF0433FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0434FFFF0435FFFF0436FFFF0437FFFF0438FFFF0439FFFF043AFFFF043BFFFFFFFFFFFFFFFFFFFF +FFFF043CFFFF043D043EFFFFFFFFFFFF043FFFFFFFFFFFFFFFFFFFFF0440FFFF0441FFFF0442FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0443 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0446044504480447044A0449044C044B044E044D0450044F0452045104540453 +0456045504580457045A0459045C045B045E045D0460045F04620461046404630466046504680467046A0469046C046B +046E046D0470046F04720471047404730476047504780477047A0479047C047B047E047D0480047F0482048104840483 +0486048504880487048A0489048C048B048E048D0490048F04920491049404930495FFFF0497049604990498049B049A +049D049C049F049E04A104A004A304A204A504A404A704A604A904A804AB04AA04AD04ACFFFF04AEFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056D056C056F056E0571057005730572 -057505740577057605790578057B057A057D057C057F057E0581058005830582058505840587058605890588058B058A FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF058D058C058F058E0591059005930592059505940597059605990598 -059B059A059D059C059F059E05A105A005A305A205A505A405A705A605A905A805AB05AA05AD05ACFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04B004AF04B204B104B404B304B604B504B804B704BA04B904BC04BB04BE04BD04C004BF04C204C104C404C304C604C5 +04C804C704CA04C904CC04CB04CE04CD04D004CF04D204D104D404D304D604D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D804D704DA04D904DC04DB04DE04DD +04E004DF04E204E104E404E304E604E504E804E704EA04E904EC04EB04EE04ED04F004EF04F204F104F404F304F604F5 +04F804F704FA04F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF04FBFFFF04FD04FC04FF04FE0501050005030502050505040506FFFF05080507050A0509 +050C050B050E050D0510050F05120511051405130515FFFF0517051605190518051B051A051CFFFFFFFF051DFFFFFFFF +051F051E0521052005230522052505240527052605290528052B052A052D052C052F052E053105300533053205350534 +0537053605390538053B053A053D053C053F053E0541054005430542054505440547054605490548054B054A054D054C +054F054EFFFF0550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05520551055405530556055505580557 +055A0559055C055B055E055D0560055F056205610564056305660565FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +05680567056A0569056C056B056E056D0570056F05720571057405730576057505780577057A0579057C057B057E057D +0580057F058205810584058305860585FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +05880587058A0589058C058B058E058D0590058F05920591059405930596059505980597059A0599059C059B059E059D +05A0059F05A205A105A405A305A605A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A805A705AA05A905AC05AB +05AE05AD05B005AF05B205B105B405B305B605B505B805B705BA05B905BC05BB05BE05BD05C005BF05C205C105C405C3 +05C605C505C805C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); immutable(uint)[] toUpperTable() nothrow @nogc pure @safe { static immutable uint[] t = @@ -4893,136 +4995,138 @@ x" 0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C 0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D -00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 -000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C4000001C4 -000001C7000001C7000001CA000001CA000001CD000001CF000001D1000001D3000001D5000001D7000001D9000001DB -0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC000001EE000001F1000001F1 -000001F4000001F8000001FA000001FC000001FE00000200000002020000020400000206000002080000020A0000020C -0000020E00000210000002120000021400000216000002180000021A0000021C0000021E000002220000022400000226 -000002280000022A0000022C0000022E00000230000002320000023B00002C7E00002C7F000002410000024600000248 -0000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186000001890000018A0000018F00000190 -0000A7AB000001930000A7AC000001940000A78D0000A7AA00000197000001960000A7AE00002C620000A7AD0000019C -00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1000001AE00000244000001B1000001B2 -00000245000001B70000A7B20000A7B000000399000003700000037200000376000003FD000003FE000003FF00000386 -00000388000003890000038A000003910000039200000393000003940000039500000396000003970000039800000399 -0000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1000003A3000003A3000003A4000003A5 -000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E0000038F0000039200000398000003A6 -000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2000003E4000003E6000003E8000003EA -000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7000003FA000004100000041100000412 -000004130000041400000415000004160000041700000418000004190000041A0000041B0000041C0000041D0000041E -0000041F000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A -0000042B0000042C0000042D0000042E0000042F00000400000004010000040200000403000004040000040500000406 -0000040700000408000004090000040A0000040B0000040C0000040D0000040E0000040F000004600000046200000464 -00000466000004680000046A0000046C0000046E00000470000004720000047400000476000004780000047A0000047C -0000047E000004800000048A0000048C0000048E00000490000004920000049400000496000004980000049A0000049C -0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC000004AE000004B0000004B2000004B4 -000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5000004C7000004C9000004CB000004CD -000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC000004DE000004E0000004E2000004E4 -000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4000004F6000004F8000004FA000004FC -000004FE00000500000005020000050400000506000005080000050A0000050C0000050E000005100000051200000514 -00000516000005180000051A0000051C0000051E00000520000005220000052400000526000005280000052A0000052C -0000052E0000053100000532000005330000053400000535000005360000053700000538000005390000053A0000053B -0000053C0000053D0000053E0000053F0000054000000541000005420000054300000544000005450000054600000547 -00000548000005490000054A0000054B0000054C0000054D0000054E0000054F00000550000005510000055200000553 -00000554000005550000055600001C9000001C9100001C9200001C9300001C9400001C9500001C9600001C9700001C98 -00001C9900001C9A00001C9B00001C9C00001C9D00001C9E00001C9F00001CA000001CA100001CA200001CA300001CA4 -00001CA500001CA600001CA700001CA800001CA900001CAA00001CAB00001CAC00001CAD00001CAE00001CAF00001CB0 -00001CB100001CB200001CB300001CB400001CB500001CB600001CB700001CB800001CB900001CBA00001CBD00001CBE -00001CBF000013F0000013F1000013F2000013F3000013F4000013F500000412000004140000041E0000042100000422 -000004220000042A000004620000A64A0000A77D00002C630000A7C600001E0000001E0200001E0400001E0600001E08 -00001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E1800001E1A00001E1C00001E1E00001E20 -00001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E3000001E3200001E3400001E3600001E38 -00001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E4800001E4A00001E4C00001E4E00001E50 -00001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E6000001E6200001E6400001E6600001E68 -00001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E7800001E7A00001E7C00001E7E00001E80 -00001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E9000001E9200001E9400001E6000001EA0 -00001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB000001EB200001EB400001EB600001EB8 -00001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC800001ECA00001ECC00001ECE00001ED0 -00001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE000001EE200001EE400001EE600001EE8 -00001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF800001EFA00001EFC00001EFE00001F08 -00001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F1800001F1900001F1A00001F1B00001F1C -00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E00001F2F00001F3800001F3900001F3A -00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A00001F4B00001F4C00001F4D00001F59 -00001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C00001F6D00001F6E00001F6F00001FBA -00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF800001FF900001FEA00001FEB00001FFA -00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A -00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE -00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD900001FE800001FE900001FEC00001FFC -00002132000021600000216100002162000021630000216400002165000021660000216700002168000021690000216A -0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7000024B8000024B9000024BA000024BB -000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3000024C4000024C5000024C6000024C7 -000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF00002C0000002C0100002C0200002C03 -00002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B00002C0C00002C0D00002C0E00002C0F -00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C1700002C1800002C1900002C1A00002C1B -00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C2300002C2400002C2500002C2600002C27 -00002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F00002C600000023A0000023E00002C67 -00002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C8600002C8800002C8A00002C8C00002C8E -00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E00002CA000002CA200002CA400002CA6 -00002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB600002CB800002CBA00002CBC00002CBE -00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE00002CD000002CD200002CD400002CD6 -00002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED00002CF2000010A0000010A1000010A2 -000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA000010AB000010AC000010AD000010AE -000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6000010B7000010B8000010B9000010BA -000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2000010C3000010C4000010C5000010C7 -000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C0000A64E0000A6500000A6520000A654 -0000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A6640000A6660000A6680000A66A0000A66C -0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E0000A6900000A6920000A6940000A696 -0000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C0000A72E0000A7320000A7340000A736 -0000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A7460000A7480000A74A0000A74C0000A74E -0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E0000A7600000A7620000A7640000A766 -0000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A7800000A7820000A7840000A7860000A78B -0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E0000A7A00000A7A20000A7A40000A7A6 -0000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C00000A7C20000A7C70000A7C90000A7D0 -0000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3000013A4000013A5000013A6000013A7 -000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF000013B0000013B1000013B2000013B3 -000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB000013BC000013BD000013BE000013BF -000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7000013C8000013C9000013CA000013CB -000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3000013D4000013D5000013D6000013D7 -000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF000013E0000013E1000013E2000013E3 -000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB000013EC000013ED000013EE000013EF -0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF280000FF290000FF2A0000FF2B0000FF2C -0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF340000FF350000FF360000FF370000FF38 -0000FF390000FF3A00010400000104010001040200010403000104040001040500010406000104070001040800010409 -0001040A0001040B0001040C0001040D0001040E0001040F000104100001041100010412000104130001041400010415 -000104160001041700010418000104190001041A0001041B0001041C0001041D0001041E0001041F0001042000010421 -000104220001042300010424000104250001042600010427000104B0000104B1000104B2000104B3000104B4000104B5 -000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD000104BE000104BF000104C0000104C1 -000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9000104CA000104CB000104CC000104CD -000104CE000104CF000104D0000104D1000104D2000104D3000105700001057100010572000105730001057400010575 -000105760001057700010578000105790001057A0001057C0001057D0001057E0001057F000105800001058100010582 -000105830001058400010585000105860001058700010588000105890001058A0001058C0001058D0001058E0001058F -000105900001059100010592000105940001059500010C8000010C8100010C8200010C8300010C8400010C8500010C86 -00010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E00010C8F00010C9000010C9100010C92 -00010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A00010C9B00010C9C00010C9D00010C9E -00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA600010CA700010CA800010CA900010CAA -00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2000118A0000118A1000118A2000118A3 -000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB000118AC000118AD000118AE000118AF -000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7000118B8000118B9000118BA000118BB -000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E4300016E4400016E4500016E4600016E47 -00016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F00016E5000016E5100016E5200016E53 -00016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B00016E5C00016E5D00016E5E00016E5F -0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E9070001E9080001E9090001E90A0001E90B -0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E9130001E9140001E9150001E9160001E917 -0001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F0001E9200001E9210200005300000053 -0000013002000046000000460200004600000049020000460000004C0300004600000046000000490300004600000046 -0000004C0200005300000054020000530000005402000535000005520200054400000546020005440000053502000544 -0000053B0200054E00000546020005440000053D020002BC0000004E030003990000030800000301030003A500000308 -000003010200004A0000030C02000048000003310200005400000308020000570000030A020000590000030A02000041 -000002BE020003A500000313030003A50000031300000300030003A50000031300000301030003A50000031300000342 -020003910000034202000397000003420300039900000308000003000300039900000308000003010200039900000342 -030003990000030800000342030003A50000030800000300030003A50000030800000301020003A100000313020003A5 -00000342030003A50000030800000342020003A90000034202001F080000039902001F090000039902001F0A00000399 -02001F0B0000039902001F0C0000039902001F0D0000039902001F0E0000039902001F0F0000039902001F0800000399 -02001F090000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D0000039902001F0E00000399 -02001F0F0000039902001F280000039902001F290000039902001F2A0000039902001F2B0000039902001F2C00000399 -02001F2D0000039902001F2E0000039902001F2F0000039902001F280000039902001F290000039902001F2A00000399 -02001F2B0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F0000039902001F6800000399 -02001F690000039902001F6A0000039902001F6B0000039902001F6C0000039902001F6D0000039902001F6E00000399 -02001F6F0000039902001F680000039902001F690000039902001F6A0000039902001F6B0000039902001F6C00000399 -02001F6D0000039902001F6E0000039902001F6F00000399020003910000039902000391000003990200039700000399 -0200039700000399020003A900000399020003A90000039902001FBA00000399020003860000039902001FCA00000399 -020003890000039902001FFA000003990200038F00000399030003910000034200000399030003970000034200000399 -030003A90000034200000399"; +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D0000A7DC00000220 +000001A0000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C4 +000001C4000001C7000001C7000001CA000001CA000001CD000001CF000001D1000001D3000001D5000001D7000001D9 +000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC000001EE000001F1 +000001F1000001F4000001F8000001FA000001FC000001FE00000200000002020000020400000206000002080000020A +0000020C0000020E00000210000002120000021400000216000002180000021A0000021C0000021E0000022200000224 +00000226000002280000022A0000022C0000022E00000230000002320000023B00002C7E00002C7F0000024100000246 +000002480000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186000001890000018A0000018F +000001900000A7AB000001930000A7AC000001940000A7CB0000A78D0000A7AA00000197000001960000A7AE00002C62 +0000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1000001AE00000244 +000001B1000001B200000245000001B70000A7B20000A7B000000399000003700000037200000376000003FD000003FE +000003FF0000038600000388000003890000038A00000391000003920000039300000394000003950000039600000397 +00000398000003990000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1000003A3000003A3 +000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E0000038F00000392 +00000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2000003E4000003E6 +000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7000003FA00000410 +0000041100000412000004130000041400000415000004160000041700000418000004190000041A0000041B0000041C +0000041D0000041E0000041F000004200000042100000422000004230000042400000425000004260000042700000428 +000004290000042A0000042B0000042C0000042D0000042E0000042F0000040000000401000004020000040300000404 +00000405000004060000040700000408000004090000040A0000040B0000040C0000040D0000040E0000040F00000460 +000004620000046400000466000004680000046A0000046C0000046E0000047000000472000004740000047600000478 +0000047A0000047C0000047E000004800000048A0000048C0000048E0000049000000492000004940000049600000498 +0000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC000004AE000004B0 +000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5000004C7000004C9 +000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC000004DE000004E0 +000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4000004F6000004F8 +000004FA000004FC000004FE00000500000005020000050400000506000005080000050A0000050C0000050E00000510 +000005120000051400000516000005180000051A0000051C0000051E0000052000000522000005240000052600000528 +0000052A0000052C0000052E000005310000053200000533000005340000053500000536000005370000053800000539 +0000053A0000053B0000053C0000053D0000053E0000053F000005400000054100000542000005430000054400000545 +000005460000054700000548000005490000054A0000054B0000054C0000054D0000054E0000054F0000055000000551 +000005520000055300000554000005550000055600001C9000001C9100001C9200001C9300001C9400001C9500001C96 +00001C9700001C9800001C9900001C9A00001C9B00001C9C00001C9D00001C9E00001C9F00001CA000001CA100001CA2 +00001CA300001CA400001CA500001CA600001CA700001CA800001CA900001CAA00001CAB00001CAC00001CAD00001CAE +00001CAF00001CB000001CB100001CB200001CB300001CB400001CB500001CB600001CB700001CB800001CB900001CBA +00001CBD00001CBE00001CBF000013F0000013F1000013F2000013F3000013F4000013F500000412000004140000041E +0000042100000422000004220000042A000004620000A64A00001C890000A77D00002C630000A7C600001E0000001E02 +00001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E1800001E1A +00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E3000001E32 +00001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E4800001E4A +00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E6000001E62 +00001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E7800001E7A +00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E9000001E92 +00001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB000001EB2 +00001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC800001ECA +00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE000001EE2 +00001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF800001EFA +00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F1800001F19 +00001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E00001F2F +00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A00001F4B +00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C00001F6D +00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF800001FF9 +00001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F +00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB +00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD900001FE8 +00001FE900001FEC00001FFC000021320000216000002161000021620000216300002164000021650000216600002167 +00002168000021690000216A0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7000024B8 +000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3000024C4 +000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF00002C00 +00002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B00002C0C +00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C1700002C18 +00002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C2300002C24 +00002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F00002C60 +0000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C8600002C88 +00002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E00002CA0 +00002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB600002CB8 +00002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE00002CD0 +00002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED00002CF2 +000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA000010AB +000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6000010B7 +000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2000010C3 +000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C0000A64E +0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A6640000A666 +0000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E0000A690 +0000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C0000A72E +0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A7460000A748 +0000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E0000A760 +0000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A7800000A782 +0000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E0000A7A0 +0000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C00000A7C2 +0000A7C70000A7C90000A7CC0000A7D00000A7D60000A7D80000A7DA0000A7F50000A7B3000013A0000013A1000013A2 +000013A3000013A4000013A5000013A6000013A7000013A8000013A9000013AA000013AB000013AC000013AD000013AE +000013AF000013B0000013B1000013B2000013B3000013B4000013B5000013B6000013B7000013B8000013B9000013BA +000013BB000013BC000013BD000013BE000013BF000013C0000013C1000013C2000013C3000013C4000013C5000013C6 +000013C7000013C8000013C9000013CA000013CB000013CC000013CD000013CE000013CF000013D0000013D1000013D2 +000013D3000013D4000013D5000013D6000013D7000013D8000013D9000013DA000013DB000013DC000013DD000013DE +000013DF000013E0000013E1000013E2000013E3000013E4000013E5000013E6000013E7000013E8000013E9000013EA +000013EB000013EC000013ED000013EE000013EF0000FF210000FF220000FF230000FF240000FF250000FF260000FF27 +0000FF280000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF33 +0000FF340000FF350000FF360000FF370000FF380000FF390000FF3A0001040000010401000104020001040300010404 +00010405000104060001040700010408000104090001040A0001040B0001040C0001040D0001040E0001040F00010410 +0001041100010412000104130001041400010415000104160001041700010418000104190001041A0001041B0001041C +0001041D0001041E0001041F0001042000010421000104220001042300010424000104250001042600010427000104B0 +000104B1000104B2000104B3000104B4000104B5000104B6000104B7000104B8000104B9000104BA000104BB000104BC +000104BD000104BE000104BF000104C0000104C1000104C2000104C3000104C4000104C5000104C6000104C7000104C8 +000104C9000104CA000104CB000104CC000104CD000104CE000104CF000104D0000104D1000104D2000104D300010570 +0001057100010572000105730001057400010575000105760001057700010578000105790001057A0001057C0001057D +0001057E0001057F00010580000105810001058200010583000105840001058500010586000105870001058800010589 +0001058A0001058C0001058D0001058E0001058F000105900001059100010592000105940001059500010C8000010C81 +00010C8200010C8300010C8400010C8500010C8600010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D +00010C8E00010C8F00010C9000010C9100010C9200010C9300010C9400010C9500010C9600010C9700010C9800010C99 +00010C9A00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA100010CA200010CA300010CA400010CA5 +00010CA600010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB1 +00010CB200010D5000010D5100010D5200010D5300010D5400010D5500010D5600010D5700010D5800010D5900010D5A +00010D5B00010D5C00010D5D00010D5E00010D5F00010D6000010D6100010D6200010D6300010D6400010D65000118A0 +000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB000118AC +000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7000118B8 +000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E4300016E44 +00016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F00016E50 +00016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B00016E5C +00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E9070001E908 +0001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E9130001E914 +0001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F0001E920 +0001E92102000053000000530000013002000046000000460200004600000049020000460000004C0300004600000046 +0000004903000046000000460000004C0200005300000054020000530000005402000535000005520200054400000546 +0200054400000535020005440000053B0200054E00000546020005440000053D020002BC0000004E0300039900000308 +00000301030003A500000308000003010200004A0000030C02000048000003310200005400000308020000570000030A +020000590000030A02000041000002BE020003A500000313030003A50000031300000300030003A50000031300000301 +030003A50000031300000342020003910000034202000397000003420300039900000308000003000300039900000308 +000003010200039900000342030003990000030800000342030003A50000030800000300030003A50000030800000301 +020003A100000313020003A500000342030003A50000030800000342020003A90000034202001F080000039902001F09 +0000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D0000039902001F0E0000039902001F0F +0000039902001F080000039902001F090000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D +0000039902001F0E0000039902001F0F0000039902001F280000039902001F290000039902001F2A0000039902001F2B +0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F0000039902001F280000039902001F29 +0000039902001F2A0000039902001F2B0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F +0000039902001F680000039902001F690000039902001F6A0000039902001F6B0000039902001F6C0000039902001F6D +0000039902001F6E0000039902001F6F0000039902001F680000039902001F690000039902001F6A0000039902001F6B +0000039902001F6C0000039902001F6D0000039902001F6E0000039902001F6F00000399020003910000039902000391 +0000039902000397000003990200039700000399020003A900000399020003A90000039902001FBA0000039902000386 +0000039902001FCA00000399020003890000039902001FFA000003990200038F00000399030003910000034200000399 +030003970000034200000399030003A90000034200000399"; return t; } immutable(uint)[] toLowerTable() nothrow @nogc pure @safe { @@ -5077,86 +5181,88 @@ x" 0000AB9B0000AB9C0000AB9D0000AB9E0000AB9F0000ABA00000ABA10000ABA20000ABA30000ABA40000ABA50000ABA6 0000ABA70000ABA80000ABA90000ABAA0000ABAB0000ABAC0000ABAD0000ABAE0000ABAF0000ABB00000ABB10000ABB2 0000ABB30000ABB40000ABB50000ABB60000ABB70000ABB80000ABB90000ABBA0000ABBB0000ABBC0000ABBD0000ABBE -0000ABBF000013F8000013F9000013FA000013FB000013FC000013FD000010D0000010D1000010D2000010D3000010D4 -000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 -000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC -000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 -000010F9000010FA000010FD000010FE000010FF00001E0100001E0300001E0500001E0700001E0900001E0B00001E0D -00001E0F00001E1100001E1300001E1500001E1700001E1900001E1B00001E1D00001E1F00001E2100001E2300001E25 -00001E2700001E2900001E2B00001E2D00001E2F00001E3100001E3300001E3500001E3700001E3900001E3B00001E3D -00001E3F00001E4100001E4300001E4500001E4700001E4900001E4B00001E4D00001E4F00001E5100001E5300001E55 -00001E5700001E5900001E5B00001E5D00001E5F00001E6100001E6300001E6500001E6700001E6900001E6B00001E6D -00001E6F00001E7100001E7300001E7500001E7700001E7900001E7B00001E7D00001E7F00001E8100001E8300001E85 -00001E8700001E8900001E8B00001E8D00001E8F00001E9100001E9300001E95000000DF00001EA100001EA300001EA5 -00001EA700001EA900001EAB00001EAD00001EAF00001EB100001EB300001EB500001EB700001EB900001EBB00001EBD -00001EBF00001EC100001EC300001EC500001EC700001EC900001ECB00001ECD00001ECF00001ED100001ED300001ED5 -00001ED700001ED900001EDB00001EDD00001EDF00001EE100001EE300001EE500001EE700001EE900001EEB00001EED -00001EEF00001EF100001EF300001EF500001EF700001EF900001EFB00001EFD00001EFF00001F0000001F0100001F02 -00001F0300001F0400001F0500001F0600001F0700001F1000001F1100001F1200001F1300001F1400001F1500001F20 -00001F2100001F2200001F2300001F2400001F2500001F2600001F2700001F3000001F3100001F3200001F3300001F34 -00001F3500001F3600001F3700001F4000001F4100001F4200001F4300001F4400001F4500001F5100001F5300001F55 -00001F5700001F6000001F6100001F6200001F6300001F6400001F6500001F6600001F6700001F8000001F8100001F82 +0000ABBF000013F8000013F9000013FA000013FB000013FC000013FD00001C8A000010D0000010D1000010D2000010D3 +000010D4000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF +000010E0000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB +000010EC000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7 +000010F8000010F9000010FA000010FD000010FE000010FF00001E0100001E0300001E0500001E0700001E0900001E0B +00001E0D00001E0F00001E1100001E1300001E1500001E1700001E1900001E1B00001E1D00001E1F00001E2100001E23 +00001E2500001E2700001E2900001E2B00001E2D00001E2F00001E3100001E3300001E3500001E3700001E3900001E3B +00001E3D00001E3F00001E4100001E4300001E4500001E4700001E4900001E4B00001E4D00001E4F00001E5100001E53 +00001E5500001E5700001E5900001E5B00001E5D00001E5F00001E6100001E6300001E6500001E6700001E6900001E6B +00001E6D00001E6F00001E7100001E7300001E7500001E7700001E7900001E7B00001E7D00001E7F00001E8100001E83 +00001E8500001E8700001E8900001E8B00001E8D00001E8F00001E9100001E9300001E95000000DF00001EA100001EA3 +00001EA500001EA700001EA900001EAB00001EAD00001EAF00001EB100001EB300001EB500001EB700001EB900001EBB +00001EBD00001EBF00001EC100001EC300001EC500001EC700001EC900001ECB00001ECD00001ECF00001ED100001ED3 +00001ED500001ED700001ED900001EDB00001EDD00001EDF00001EE100001EE300001EE500001EE700001EE900001EEB +00001EED00001EEF00001EF100001EF300001EF500001EF700001EF900001EFB00001EFD00001EFF00001F0000001F01 +00001F0200001F0300001F0400001F0500001F0600001F0700001F1000001F1100001F1200001F1300001F1400001F15 +00001F2000001F2100001F2200001F2300001F2400001F2500001F2600001F2700001F3000001F3100001F3200001F33 +00001F3400001F3500001F3600001F3700001F4000001F4100001F4200001F4300001F4400001F4500001F5100001F53 +00001F5500001F5700001F6000001F6100001F6200001F6300001F6400001F6500001F6600001F6700001F8000001F81 +00001F8200001F8300001F8400001F8500001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F95 +00001F9600001F9700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB000001FB1 +00001F7000001F7100001FB300001F7200001F7300001F7400001F7500001FC300001FD000001FD100001F7600001F77 +00001FE000001FE100001F7A00001F7B00001FE500001F7800001F7900001F7C00001F7D00001FF3000003C90000006B +000000E50000214E00002170000021710000217200002173000021740000217500002176000021770000217800002179 +0000217A0000217B0000217C0000217D0000217E0000217F00002184000024D0000024D1000024D2000024D3000024D4 +000024D5000024D6000024D7000024D8000024D9000024DA000024DB000024DC000024DD000024DE000024DF000024E0 +000024E1000024E2000024E3000024E4000024E5000024E6000024E7000024E8000024E900002C3000002C3100002C32 +00002C3300002C3400002C3500002C3600002C3700002C3800002C3900002C3A00002C3B00002C3C00002C3D00002C3E +00002C3F00002C4000002C4100002C4200002C4300002C4400002C4500002C4600002C4700002C4800002C4900002C4A +00002C4B00002C4C00002C4D00002C4E00002C4F00002C5000002C5100002C5200002C5300002C5400002C5500002C56 +00002C5700002C5800002C5900002C5A00002C5B00002C5C00002C5D00002C5E00002C5F00002C610000026B00001D7D +0000027D00002C6800002C6A00002C6C0000025100000271000002500000025200002C7300002C760000023F00000240 +00002C8100002C8300002C8500002C8700002C8900002C8B00002C8D00002C8F00002C9100002C9300002C9500002C97 +00002C9900002C9B00002C9D00002C9F00002CA100002CA300002CA500002CA700002CA900002CAB00002CAD00002CAF +00002CB100002CB300002CB500002CB700002CB900002CBB00002CBD00002CBF00002CC100002CC300002CC500002CC7 +00002CC900002CCB00002CCD00002CCF00002CD100002CD300002CD500002CD700002CD900002CDB00002CDD00002CDF +00002CE100002CE300002CEC00002CEE00002CF30000A6410000A6430000A6450000A6470000A6490000A64B0000A64D +0000A64F0000A6510000A6530000A6550000A6570000A6590000A65B0000A65D0000A65F0000A6610000A6630000A665 +0000A6670000A6690000A66B0000A66D0000A6810000A6830000A6850000A6870000A6890000A68B0000A68D0000A68F +0000A6910000A6930000A6950000A6970000A6990000A69B0000A7230000A7250000A7270000A7290000A72B0000A72D +0000A72F0000A7330000A7350000A7370000A7390000A73B0000A73D0000A73F0000A7410000A7430000A7450000A747 +0000A7490000A74B0000A74D0000A74F0000A7510000A7530000A7550000A7570000A7590000A75B0000A75D0000A75F +0000A7610000A7630000A7650000A7670000A7690000A76B0000A76D0000A76F0000A77A0000A77C00001D790000A77F +0000A7810000A7830000A7850000A7870000A78C000002650000A7910000A7930000A7970000A7990000A79B0000A79D +0000A79F0000A7A10000A7A30000A7A50000A7A70000A7A9000002660000025C000002610000026C0000026A0000029E +000002870000029D0000AB530000A7B50000A7B70000A7B90000A7BB0000A7BD0000A7BF0000A7C10000A7C30000A794 +0000028200001D8E0000A7C80000A7CA000002640000A7CD0000A7D10000A7D70000A7D90000A7DB0000019B0000A7F6 +0000FF410000FF420000FF430000FF440000FF450000FF460000FF470000FF480000FF490000FF4A0000FF4B0000FF4C +0000FF4D0000FF4E0000FF4F0000FF500000FF510000FF520000FF530000FF540000FF550000FF560000FF570000FF58 +0000FF590000FF5A00010428000104290001042A0001042B0001042C0001042D0001042E0001042F0001043000010431 +00010432000104330001043400010435000104360001043700010438000104390001043A0001043B0001043C0001043D +0001043E0001043F00010440000104410001044200010443000104440001044500010446000104470001044800010449 +0001044A0001044B0001044C0001044D0001044E0001044F000104D8000104D9000104DA000104DB000104DC000104DD +000104DE000104DF000104E0000104E1000104E2000104E3000104E4000104E5000104E6000104E7000104E8000104E9 +000104EA000104EB000104EC000104ED000104EE000104EF000104F0000104F1000104F2000104F3000104F4000104F5 +000104F6000104F7000104F8000104F9000104FA000104FB0001059700010598000105990001059A0001059B0001059C +0001059D0001059E0001059F000105A0000105A1000105A3000105A4000105A5000105A6000105A7000105A8000105A9 +000105AA000105AB000105AC000105AD000105AE000105AF000105B0000105B1000105B3000105B4000105B5000105B6 +000105B7000105B8000105B9000105BB000105BC00010CC000010CC100010CC200010CC300010CC400010CC500010CC6 +00010CC700010CC800010CC900010CCA00010CCB00010CCC00010CCD00010CCE00010CCF00010CD000010CD100010CD2 +00010CD300010CD400010CD500010CD600010CD700010CD800010CD900010CDA00010CDB00010CDC00010CDD00010CDE +00010CDF00010CE000010CE100010CE200010CE300010CE400010CE500010CE600010CE700010CE800010CE900010CEA +00010CEB00010CEC00010CED00010CEE00010CEF00010CF000010CF100010CF200010D7000010D7100010D7200010D73 +00010D7400010D7500010D7600010D7700010D7800010D7900010D7A00010D7B00010D7C00010D7D00010D7E00010D7F +00010D8000010D8100010D8200010D8300010D8400010D85000118C0000118C1000118C2000118C3000118C4000118C5 +000118C6000118C7000118C8000118C9000118CA000118CB000118CC000118CD000118CE000118CF000118D0000118D1 +000118D2000118D3000118D4000118D5000118D6000118D7000118D8000118D9000118DA000118DB000118DC000118DD +000118DE000118DF00016E6000016E6100016E6200016E6300016E6400016E6500016E6600016E6700016E6800016E69 +00016E6A00016E6B00016E6C00016E6D00016E6E00016E6F00016E7000016E7100016E7200016E7300016E7400016E75 +00016E7600016E7700016E7800016E7900016E7A00016E7B00016E7C00016E7D00016E7E00016E7F0001E9220001E923 +0001E9240001E9250001E9260001E9270001E9280001E9290001E92A0001E92B0001E92C0001E92D0001E92E0001E92F +0001E9300001E9310001E9320001E9330001E9340001E9350001E9360001E9370001E9380001E9390001E93A0001E93B +0001E93C0001E93D0001E93E0001E93F0001E9400001E9410001E9420001E943000000DF02000069000003070000FB00 +0000FB010000FB020000FB030000FB040000FB050000FB06000005870000FB130000FB140000FB150000FB160000FB17 +0000014900000390000003B0000001F000001E9600001E9700001E9800001E9900001E9A00001F5000001F5200001F54 +00001F5600001FB600001FC600001FD200001FD300001FD600001FD700001FE200001FE300001FE400001FE600001FE7 +00001FF600001F8000001F8100001F8200001F8300001F8400001F8500001F8600001F8700001F8000001F8100001F82 00001F8300001F8400001F8500001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F96 -00001F9700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB000001FB100001F70 -00001F7100001FB300001F7200001F7300001F7400001F7500001FC300001FD000001FD100001F7600001F7700001FE0 -00001FE100001F7A00001F7B00001FE500001F7800001F7900001F7C00001F7D00001FF3000003C90000006B000000E5 -0000214E000021700000217100002172000021730000217400002175000021760000217700002178000021790000217A -0000217B0000217C0000217D0000217E0000217F00002184000024D0000024D1000024D2000024D3000024D4000024D5 -000024D6000024D7000024D8000024D9000024DA000024DB000024DC000024DD000024DE000024DF000024E0000024E1 -000024E2000024E3000024E4000024E5000024E6000024E7000024E8000024E900002C3000002C3100002C3200002C33 -00002C3400002C3500002C3600002C3700002C3800002C3900002C3A00002C3B00002C3C00002C3D00002C3E00002C3F -00002C4000002C4100002C4200002C4300002C4400002C4500002C4600002C4700002C4800002C4900002C4A00002C4B -00002C4C00002C4D00002C4E00002C4F00002C5000002C5100002C5200002C5300002C5400002C5500002C5600002C57 -00002C5800002C5900002C5A00002C5B00002C5C00002C5D00002C5E00002C5F00002C610000026B00001D7D0000027D -00002C6800002C6A00002C6C0000025100000271000002500000025200002C7300002C760000023F0000024000002C81 -00002C8300002C8500002C8700002C8900002C8B00002C8D00002C8F00002C9100002C9300002C9500002C9700002C99 -00002C9B00002C9D00002C9F00002CA100002CA300002CA500002CA700002CA900002CAB00002CAD00002CAF00002CB1 -00002CB300002CB500002CB700002CB900002CBB00002CBD00002CBF00002CC100002CC300002CC500002CC700002CC9 -00002CCB00002CCD00002CCF00002CD100002CD300002CD500002CD700002CD900002CDB00002CDD00002CDF00002CE1 -00002CE300002CEC00002CEE00002CF30000A6410000A6430000A6450000A6470000A6490000A64B0000A64D0000A64F -0000A6510000A6530000A6550000A6570000A6590000A65B0000A65D0000A65F0000A6610000A6630000A6650000A667 -0000A6690000A66B0000A66D0000A6810000A6830000A6850000A6870000A6890000A68B0000A68D0000A68F0000A691 -0000A6930000A6950000A6970000A6990000A69B0000A7230000A7250000A7270000A7290000A72B0000A72D0000A72F -0000A7330000A7350000A7370000A7390000A73B0000A73D0000A73F0000A7410000A7430000A7450000A7470000A749 -0000A74B0000A74D0000A74F0000A7510000A7530000A7550000A7570000A7590000A75B0000A75D0000A75F0000A761 -0000A7630000A7650000A7670000A7690000A76B0000A76D0000A76F0000A77A0000A77C00001D790000A77F0000A781 -0000A7830000A7850000A7870000A78C000002650000A7910000A7930000A7970000A7990000A79B0000A79D0000A79F -0000A7A10000A7A30000A7A50000A7A70000A7A9000002660000025C000002610000026C0000026A0000029E00000287 -0000029D0000AB530000A7B50000A7B70000A7B90000A7BB0000A7BD0000A7BF0000A7C10000A7C30000A79400000282 -00001D8E0000A7C80000A7CA0000A7D10000A7D70000A7D90000A7F60000FF410000FF420000FF430000FF440000FF45 -0000FF460000FF470000FF480000FF490000FF4A0000FF4B0000FF4C0000FF4D0000FF4E0000FF4F0000FF500000FF51 -0000FF520000FF530000FF540000FF550000FF560000FF570000FF580000FF590000FF5A00010428000104290001042A -0001042B0001042C0001042D0001042E0001042F00010430000104310001043200010433000104340001043500010436 -0001043700010438000104390001043A0001043B0001043C0001043D0001043E0001043F000104400001044100010442 -000104430001044400010445000104460001044700010448000104490001044A0001044B0001044C0001044D0001044E -0001044F000104D8000104D9000104DA000104DB000104DC000104DD000104DE000104DF000104E0000104E1000104E2 -000104E3000104E4000104E5000104E6000104E7000104E8000104E9000104EA000104EB000104EC000104ED000104EE -000104EF000104F0000104F1000104F2000104F3000104F4000104F5000104F6000104F7000104F8000104F9000104FA -000104FB0001059700010598000105990001059A0001059B0001059C0001059D0001059E0001059F000105A0000105A1 -000105A3000105A4000105A5000105A6000105A7000105A8000105A9000105AA000105AB000105AC000105AD000105AE -000105AF000105B0000105B1000105B3000105B4000105B5000105B6000105B7000105B8000105B9000105BB000105BC -00010CC000010CC100010CC200010CC300010CC400010CC500010CC600010CC700010CC800010CC900010CCA00010CCB -00010CCC00010CCD00010CCE00010CCF00010CD000010CD100010CD200010CD300010CD400010CD500010CD600010CD7 -00010CD800010CD900010CDA00010CDB00010CDC00010CDD00010CDE00010CDF00010CE000010CE100010CE200010CE3 -00010CE400010CE500010CE600010CE700010CE800010CE900010CEA00010CEB00010CEC00010CED00010CEE00010CEF -00010CF000010CF100010CF2000118C0000118C1000118C2000118C3000118C4000118C5000118C6000118C7000118C8 -000118C9000118CA000118CB000118CC000118CD000118CE000118CF000118D0000118D1000118D2000118D3000118D4 -000118D5000118D6000118D7000118D8000118D9000118DA000118DB000118DC000118DD000118DE000118DF00016E60 -00016E6100016E6200016E6300016E6400016E6500016E6600016E6700016E6800016E6900016E6A00016E6B00016E6C -00016E6D00016E6E00016E6F00016E7000016E7100016E7200016E7300016E7400016E7500016E7600016E7700016E78 -00016E7900016E7A00016E7B00016E7C00016E7D00016E7E00016E7F0001E9220001E9230001E9240001E9250001E926 -0001E9270001E9280001E9290001E92A0001E92B0001E92C0001E92D0001E92E0001E92F0001E9300001E9310001E932 -0001E9330001E9340001E9350001E9360001E9370001E9380001E9390001E93A0001E93B0001E93C0001E93D0001E93E -0001E93F0001E9400001E9410001E9420001E943000000DF02000069000003070000FB000000FB010000FB020000FB03 -0000FB040000FB050000FB06000005870000FB130000FB140000FB150000FB160000FB170000014900000390000003B0 -000001F000001E9600001E9700001E9800001E9900001E9A00001F5000001F5200001F5400001F5600001FB600001FC6 -00001FD200001FD300001FD600001FD700001FE200001FE300001FE400001FE600001FE700001FF600001F8000001F81 -00001F8200001F8300001F8400001F8500001F8600001F8700001F8000001F8100001F8200001F8300001F8400001F85 -00001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F9600001F9700001F9000001F91 -00001F9200001F9300001F9400001F9500001F9600001F9700001FA000001FA100001FA200001FA300001FA400001FA5 -00001FA600001FA700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB300001FB3 -00001FC300001FC300001FF300001FF300001FB200001FB400001FC200001FC400001FF200001FF400001FB700001FC7 -00001FF7"; +00001F9700001F9000001F9100001F9200001F9300001F9400001F9500001F9600001F9700001FA000001FA100001FA2 +00001FA300001FA400001FA500001FA600001FA700001FA000001FA100001FA200001FA300001FA400001FA500001FA6 +00001FA700001FB300001FB300001FC300001FC300001FF300001FF300001FB200001FB400001FC200001FC400001FF2 +00001FF400001FB700001FC700001FF7"; return t; } immutable(uint)[] toTitleTable() nothrow @nogc pure @safe { @@ -5172,132 +5278,134 @@ x" 0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C 0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D -00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 -000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C5000001C5 -000001C5000001C8000001C8000001C8000001CB000001CB000001CB000001CD000001CF000001D1000001D3000001D5 -000001D7000001D9000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC -000001EE000001F2000001F2000001F2000001F4000001F8000001FA000001FC000001FE000002000000020200000204 -00000206000002080000020A0000020C0000020E00000210000002120000021400000216000002180000021A0000021C -0000021E000002220000022400000226000002280000022A0000022C0000022E00000230000002320000023B00002C7E -00002C7F0000024100000246000002480000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186 -000001890000018A0000018F000001900000A7AB000001930000A7AC000001940000A78D0000A7AA0000019700000196 -0000A7AE00002C620000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1 -000001AE00000244000001B1000001B200000245000001B70000A7B20000A7B000000399000003700000037200000376 -000003FD000003FE000003FF0000038600000388000003890000038A0000039100000392000003930000039400000395 -000003960000039700000398000003990000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1 -000003A3000003A3000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E -0000038F0000039200000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2 -000003E4000003E6000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7 -000003FA000004100000041100000412000004130000041400000415000004160000041700000418000004190000041A -0000041B0000041C0000041D0000041E0000041F00000420000004210000042200000423000004240000042500000426 -0000042700000428000004290000042A0000042B0000042C0000042D0000042E0000042F000004000000040100000402 -000004030000040400000405000004060000040700000408000004090000040A0000040B0000040C0000040D0000040E -0000040F00000460000004620000046400000466000004680000046A0000046C0000046E000004700000047200000474 -00000476000004780000047A0000047C0000047E000004800000048A0000048C0000048E000004900000049200000494 -00000496000004980000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC -000004AE000004B0000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5 -000004C7000004C9000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC -000004DE000004E0000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4 -000004F6000004F8000004FA000004FC000004FE00000500000005020000050400000506000005080000050A0000050C -0000050E00000510000005120000051400000516000005180000051A0000051C0000051E000005200000052200000524 -00000526000005280000052A0000052C0000052E00000531000005320000053300000534000005350000053600000537 -00000538000005390000053A0000053B0000053C0000053D0000053E0000053F00000540000005410000054200000543 -0000054400000545000005460000054700000548000005490000054A0000054B0000054C0000054D0000054E0000054F -00000550000005510000055200000553000005540000055500000556000010D0000010D1000010D2000010D3000010D4 -000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 -000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC -000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 -000010F9000010FA000010FD000010FE000010FF000013F0000013F1000013F2000013F3000013F4000013F500000412 -000004140000041E0000042100000422000004220000042A000004620000A64A0000A77D00002C630000A7C600001E00 -00001E0200001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E18 -00001E1A00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E30 -00001E3200001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E48 -00001E4A00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E60 -00001E6200001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E78 -00001E7A00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E90 -00001E9200001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB0 -00001EB200001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC8 -00001ECA00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE0 -00001EE200001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF8 -00001EFA00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F18 -00001F1900001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E -00001F2F00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A -00001F4B00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C -00001F6D00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF8 -00001FF900001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E -00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA -00001FAB00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD9 -00001FE800001FE900001FEC00001FFC0000213200002160000021610000216200002163000021640000216500002166 -0000216700002168000021690000216A0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7 -000024B8000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3 -000024C4000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF -00002C0000002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B -00002C0C00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C17 -00002C1800002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C23 -00002C2400002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F -00002C600000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C86 -00002C8800002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E -00002CA000002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB6 -00002CB800002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE -00002CD000002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED -00002CF2000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA -000010AB000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6 -000010B7000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2 -000010C3000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C -0000A64E0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A664 -0000A6660000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E -0000A6900000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C -0000A72E0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A746 -0000A7480000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E -0000A7600000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A780 -0000A7820000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E -0000A7A00000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C0 -0000A7C20000A7C70000A7C90000A7D00000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3 -000013A4000013A5000013A6000013A7000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF -000013B0000013B1000013B2000013B3000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB -000013BC000013BD000013BE000013BF000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7 -000013C8000013C9000013CA000013CB000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3 -000013D4000013D5000013D6000013D7000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF -000013E0000013E1000013E2000013E3000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB -000013EC000013ED000013EE000013EF0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF28 -0000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF34 -0000FF350000FF360000FF370000FF380000FF390000FF3A000104000001040100010402000104030001040400010405 -000104060001040700010408000104090001040A0001040B0001040C0001040D0001040E0001040F0001041000010411 -00010412000104130001041400010415000104160001041700010418000104190001041A0001041B0001041C0001041D -0001041E0001041F0001042000010421000104220001042300010424000104250001042600010427000104B0000104B1 -000104B2000104B3000104B4000104B5000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD -000104BE000104BF000104C0000104C1000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9 -000104CA000104CB000104CC000104CD000104CE000104CF000104D0000104D1000104D2000104D30001057000010571 -00010572000105730001057400010575000105760001057700010578000105790001057A0001057C0001057D0001057E -0001057F000105800001058100010582000105830001058400010585000105860001058700010588000105890001058A -0001058C0001058D0001058E0001058F000105900001059100010592000105940001059500010C8000010C8100010C82 -00010C8300010C8400010C8500010C8600010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E -00010C8F00010C9000010C9100010C9200010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A -00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA6 -00010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2 -000118A0000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB -000118AC000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7 -000118B8000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E43 -00016E4400016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F -00016E5000016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B -00016E5C00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E907 -0001E9080001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E913 -0001E9140001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F -0001E9200001E92102000053000000730000013002000046000000660200004600000069020000460000006C03000046 -000000660000006903000046000000660000006C02000053000000740200005300000074020005350000058202000544 -000005760200054400000565020005440000056B0200054E00000576020005440000056D020002BC0000004E03000399 -0000030800000301030003A500000308000003010200004A0000030C0200004800000331020000540000030802000057 -0000030A020000590000030A02000041000002BE020003A500000313030003A50000031300000300030003A500000313 -00000301030003A500000313000003420200039100000342020003970000034203000399000003080000030003000399 -00000308000003010200039900000342030003990000030800000342030003A50000030800000300030003A500000308 -00000301020003A100000313020003A500000342030003A50000030800000342020003A90000034200001F8800001F89 -00001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F8800001F8900001F8A00001F8B00001F8C00001F8D -00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001F9800001F99 -00001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD -00001FAE00001FAF00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE00001FAF00001FBC00001FBC -00001FCC00001FCC00001FFC00001FFC02001FBA00000345020003860000034502001FCA000003450200038900000345 -02001FFA000003450200038F00000345030003910000034200000345030003970000034200000345030003A900000342 -00000345"; +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D0000A7DC00000220 +000001A0000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C5 +000001C5000001C5000001C8000001C8000001C8000001CB000001CB000001CB000001CD000001CF000001D1000001D3 +000001D5000001D7000001D9000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA +000001EC000001EE000001F2000001F2000001F2000001F4000001F8000001FA000001FC000001FE0000020000000202 +0000020400000206000002080000020A0000020C0000020E00000210000002120000021400000216000002180000021A +0000021C0000021E000002220000022400000226000002280000022A0000022C0000022E00000230000002320000023B +00002C7E00002C7F0000024100000246000002480000024A0000024C0000024E00002C6F00002C6D00002C7000000181 +00000186000001890000018A0000018F000001900000A7AB000001930000A7AC000001940000A7CB0000A78D0000A7AA +00000197000001960000A7AE00002C620000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5 +000001A90000A7B1000001AE00000244000001B1000001B200000245000001B70000A7B20000A7B00000039900000370 +0000037200000376000003FD000003FE000003FF0000038600000388000003890000038A000003910000039200000393 +0000039400000395000003960000039700000398000003990000039A0000039B0000039C0000039D0000039E0000039F +000003A0000003A1000003A3000003A3000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB +0000038C0000038E0000038F0000039200000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE +000003E0000003E2000003E4000003E6000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F +00000395000003F7000003FA000004100000041100000412000004130000041400000415000004160000041700000418 +000004190000041A0000041B0000041C0000041D0000041E0000041F0000042000000421000004220000042300000424 +00000425000004260000042700000428000004290000042A0000042B0000042C0000042D0000042E0000042F00000400 +0000040100000402000004030000040400000405000004060000040700000408000004090000040A0000040B0000040C +0000040D0000040E0000040F00000460000004620000046400000466000004680000046A0000046C0000046E00000470 +000004720000047400000476000004780000047A0000047C0000047E000004800000048A0000048C0000048E00000490 +000004920000049400000496000004980000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8 +000004AA000004AC000004AE000004B0000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1 +000004C3000004C5000004C7000004C9000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8 +000004DA000004DC000004DE000004E0000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0 +000004F2000004F4000004F6000004F8000004FA000004FC000004FE0000050000000502000005040000050600000508 +0000050A0000050C0000050E00000510000005120000051400000516000005180000051A0000051C0000051E00000520 +000005220000052400000526000005280000052A0000052C0000052E0000053100000532000005330000053400000535 +000005360000053700000538000005390000053A0000053B0000053C0000053D0000053E0000053F0000054000000541 +00000542000005430000054400000545000005460000054700000548000005490000054A0000054B0000054C0000054D +0000054E0000054F00000550000005510000055200000553000005540000055500000556000010D0000010D1000010D2 +000010D3000010D4000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE +000010DF000010E0000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA +000010EB000010EC000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6 +000010F7000010F8000010F9000010FA000010FD000010FE000010FF000013F0000013F1000013F2000013F3000013F4 +000013F500000412000004140000041E0000042100000422000004220000042A000004620000A64A00001C890000A77D +00002C630000A7C600001E0000001E0200001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E12 +00001E1400001E1600001E1800001E1A00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A +00001E2C00001E2E00001E3000001E3200001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E42 +00001E4400001E4600001E4800001E4A00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A +00001E5C00001E5E00001E6000001E6200001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E72 +00001E7400001E7600001E7800001E7A00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A +00001E8C00001E8E00001E9000001E9200001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA +00001EAC00001EAE00001EB000001EB200001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC2 +00001EC400001EC600001EC800001ECA00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA +00001EDC00001EDE00001EE000001EE200001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF2 +00001EF400001EF600001EF800001EFA00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D +00001F0E00001F0F00001F1800001F1900001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B +00001F2C00001F2D00001F2E00001F2F00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F +00001F4800001F4900001F4A00001F4B00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F69 +00001F6A00001F6B00001F6C00001F6D00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB +00001FDA00001FDB00001FF800001FF900001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B +00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F +00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC00000399 +00001FCC00001FD800001FD900001FE800001FE900001FEC00001FFC0000213200002160000021610000216200002163 +0000216400002165000021660000216700002168000021690000216A0000216B0000216C0000216D0000216E0000216F +00002183000024B6000024B7000024B8000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0 +000024C1000024C2000024C3000024C4000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC +000024CD000024CE000024CF00002C0000002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C08 +00002C0900002C0A00002C0B00002C0C00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C14 +00002C1500002C1600002C1700002C1800002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C20 +00002C2100002C2200002C2300002C2400002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C +00002C2D00002C2E00002C2F00002C600000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C80 +00002C8200002C8400002C8600002C8800002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C98 +00002C9A00002C9C00002C9E00002CA000002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB0 +00002CB200002CB400002CB600002CB800002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC8 +00002CCA00002CCC00002CCE00002CD000002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE0 +00002CE200002CEB00002CED00002CF2000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7 +000010A8000010A9000010AA000010AB000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3 +000010B4000010B5000010B6000010B7000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF +000010C0000010C1000010C2000010C3000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A646 +0000A6480000A64A0000A64C0000A64E0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E +0000A6600000A6620000A6640000A6660000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A688 +0000A68A0000A68C0000A68E0000A6900000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A726 +0000A7280000A72A0000A72C0000A72E0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A740 +0000A7420000A7440000A7460000A7480000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A758 +0000A75A0000A75C0000A75E0000A7600000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A779 +0000A77B0000A77E0000A7800000A7820000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A798 +0000A79A0000A79C0000A79E0000A7A00000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA +0000A7BC0000A7BE0000A7C00000A7C20000A7C70000A7C90000A7CC0000A7D00000A7D60000A7D80000A7DA0000A7F5 +0000A7B3000013A0000013A1000013A2000013A3000013A4000013A5000013A6000013A7000013A8000013A9000013AA +000013AB000013AC000013AD000013AE000013AF000013B0000013B1000013B2000013B3000013B4000013B5000013B6 +000013B7000013B8000013B9000013BA000013BB000013BC000013BD000013BE000013BF000013C0000013C1000013C2 +000013C3000013C4000013C5000013C6000013C7000013C8000013C9000013CA000013CB000013CC000013CD000013CE +000013CF000013D0000013D1000013D2000013D3000013D4000013D5000013D6000013D7000013D8000013D9000013DA +000013DB000013DC000013DD000013DE000013DF000013E0000013E1000013E2000013E3000013E4000013E5000013E6 +000013E7000013E8000013E9000013EA000013EB000013EC000013ED000013EE000013EF0000FF210000FF220000FF23 +0000FF240000FF250000FF260000FF270000FF280000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F +0000FF300000FF310000FF320000FF330000FF340000FF350000FF360000FF370000FF380000FF390000FF3A00010400 +0001040100010402000104030001040400010405000104060001040700010408000104090001040A0001040B0001040C +0001040D0001040E0001040F000104100001041100010412000104130001041400010415000104160001041700010418 +000104190001041A0001041B0001041C0001041D0001041E0001041F0001042000010421000104220001042300010424 +000104250001042600010427000104B0000104B1000104B2000104B3000104B4000104B5000104B6000104B7000104B8 +000104B9000104BA000104BB000104BC000104BD000104BE000104BF000104C0000104C1000104C2000104C3000104C4 +000104C5000104C6000104C7000104C8000104C9000104CA000104CB000104CC000104CD000104CE000104CF000104D0 +000104D1000104D2000104D3000105700001057100010572000105730001057400010575000105760001057700010578 +000105790001057A0001057C0001057D0001057E0001057F000105800001058100010582000105830001058400010585 +000105860001058700010588000105890001058A0001058C0001058D0001058E0001058F000105900001059100010592 +000105940001059500010C8000010C8100010C8200010C8300010C8400010C8500010C8600010C8700010C8800010C89 +00010C8A00010C8B00010C8C00010C8D00010C8E00010C8F00010C9000010C9100010C9200010C9300010C9400010C95 +00010C9600010C9700010C9800010C9900010C9A00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA1 +00010CA200010CA300010CA400010CA500010CA600010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD +00010CAE00010CAF00010CB000010CB100010CB200010D5000010D5100010D5200010D5300010D5400010D5500010D56 +00010D5700010D5800010D5900010D5A00010D5B00010D5C00010D5D00010D5E00010D5F00010D6000010D6100010D62 +00010D6300010D6400010D65000118A0000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8 +000118A9000118AA000118AB000118AC000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4 +000118B5000118B6000118B7000118B8000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E40 +00016E4100016E4200016E4300016E4400016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C +00016E4D00016E4E00016E4F00016E5000016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E58 +00016E5900016E5A00016E5B00016E5C00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E904 +0001E9050001E9060001E9070001E9080001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E910 +0001E9110001E9120001E9130001E9140001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C +0001E91D0001E91E0001E91F0001E9200001E92102000053000000730000013002000046000000660200004600000069 +020000460000006C03000046000000660000006903000046000000660000006C02000053000000740200005300000074 +020005350000058202000544000005760200054400000565020005440000056B0200054E00000576020005440000056D +020002BC0000004E030003990000030800000301030003A500000308000003010200004A0000030C0200004800000331 +0200005400000308020000570000030A020000590000030A02000041000002BE020003A500000313030003A500000313 +00000300030003A50000031300000301030003A500000313000003420200039100000342020003970000034203000399 +00000308000003000300039900000308000003010200039900000342030003990000030800000342030003A500000308 +00000300030003A50000030800000301020003A100000313020003A500000342030003A50000030800000342020003A9 +0000034200001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F8800001F8900001F8A +00001F8B00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E +00001F9F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA +00001FAB00001FAC00001FAD00001FAE00001FAF00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE +00001FAF00001FBC00001FBC00001FCC00001FCC00001FFC00001FFC02001FBA00000345020003860000034502001FCA +00000345020003890000034502001FFA000003450200038F000003450300039100000342000003450300039700000342 +00000345030003A90000034200000345"; return t; } @@ -5306,11 +5414,11 @@ return t; static if (size_t.sizeof == 8) { -//2080 bytes +//2112 bytes enum lowerCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000070", x" -000000000000010000000000000001400000000000002500", +000000000000010000000000000001400000000000002600", x" 040203020202010008070202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -5324,11 +5432,11 @@ x" 000600060006000600060006000600060006000600060006001300120006000600140006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600150006000600060016000600060006 -000600060006000600190006001800170006000600060006000600060006001A00060006000600060006000600060006 -000600060006001B00060006000600060006000600060006000600060006000600060006000600060006001C00060006 +00060006000600060019000600180017000600060006000600060006001B001A00060006000600060006000600060006 +000600060006001C00060006000600060006000600060006000600060006000600060006000600060006001D00060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 -0006000600060006000600060006000600060006000600060020001F001E001D00060006000600060021000600060006 -000600060006002200060006000600060006000600230006000600060006000600060006000600060006000600060006 +00060006000600060006000600060006000600060006000600210020001F001E00060006000600060022000600060006 +000600060006002300060006000600060006000600240006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 0006000600060006000600060006000600060006000600060006000600060006000000000000000007FFFFFE00000000 0420040000000000FF7FFFFF8000000055AAAAAAAAAAAAAAD4AAAAAAAAAAAB55E6512D2A4E243129AA29AAAAB5555240 @@ -5337,31 +5445,31 @@ FFFFF00000010000192FAAAAAAE37FFFFFFF000000000000AAAAAAAAFFFFFFFFAAAAAAAAAAAAA802 0000AAAAAAAAAAAAFFFFFFFF0000000000000000000001FF000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000F7FFFFFFFFFF0000 0000000000000000000000000000000000000000000000003F0000000000000000000000000000000000000000000000 -00000000000001FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 +00000000000005FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFEAAAAAAAAAAAAAAAAAAAAA00FF00FF003F00FF3FFF00FF00FF003F 40DF00FF00FF00FF00DC00FF00CF00DC00000000000000008002000000000000000000001FFF00000000000000000000 321080000008C400FFFF0000000043C00000000000000010000000000000000000000000000000000000000000000000 0000000000000000000003FFFFFF0000FFFF0000000000003FDA1562FFFFFFFFAAAAAAAAAAAAAAAA0008501AAAAAAAAA 000020BFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000002AAAAAAAAAAA -000000003AAAAAAA0000000000000000AAABAAA80000000095FFAAAAAAAAAAAAAAA082AAAABA50AA075C000002AA050A +000000003AAAAAAA0000000000000000AAABAAA80000000095FFAAAAAAAAAAAAAAA082AAAABA50AA075C00000AAA250A FFFF000000000000FFFF03FFF7FFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000F8007F0000000000000000 0000000000000000000000000000000000000000000000000000000007FFFFFE00000000000000000000000000000000 FFFFFF0000000000000000000000FFFF00000000000000000FFFFFFFFF00000000000000000000000000000000000000 1BFBFFFBFF80000000000000000000000000000000000000000000000000000007FDFFFFFFFFFFB90000000000000000 -0000000000000000000000000000000000000000000000000007FFFFFFFFFFFF00000000000000000000000000000000 -000000000000000000000000FFFFFFFF0000000000000000FFFFFFFF0000000000000000000000000000000000000000 -000FFFFFFC000000000000FFFFDFC000EBC000000FFFFFFCFFFFFC000000FFEF00FFFFFFC000000F00000FFFFFFC0000 -FC000000FFFFFFC0FFFFC000000FFFFF0FFFFFFC000000FF0000FFFFFFC000000000003FFFFFFC00F0000003F7FFFFFC -FFC000000FDFFFFFFFFF0000003F7FFFFFFFFC000000FDFF0000000000000BF7000007E07FFFFBFF0000000000000000 -00000000000000000000000000000000FFFF00000000000000003FFFFFFFFFFF00000000000000000000000000000000 -FFFFFFFC00000000000000000000000F0000000000000000000000000000000000000000000000000000000000000000 -00000000000000000000000000000000", +0000000000000000000000000000000000000000000000000007FFFFFFFFFFFF0000000000000000FFFF000000000000 +000000000000003F000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFF +0000000000000000FFFFFFFF0000000000000000000000000000000000000000000FFFFFFC000000000000FFFFDFC000 +EBC000000FFFFFFCFFFFFC000000FFEF00FFFFFFC000000F00000FFFFFFC0000FC000000FFFFFFC0FFFFC000000FFFFF +0FFFFFFC000000FF0000FFFFFFC000000000003FFFFFFC00F0000003F7FFFFFCFFC000000FDFFFFFFFFF0000003F7FFF +FFFFFC000000FDFF0000000000000BF7000007E07FFFFBFF000000000000000000000000000000000000000000000000 +FFFF00000000000000003FFFFFFFFFFF00000000000000000000000000000000FFFFFFFC00000000000000000000000F +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", ); -//1856 bytes +//1888 bytes enum upperCaseTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000070", x" -000000000000010000000000000001400000000000001E00", +000000000000010000000000000001400000000000001F00", x" 040203020202010008070202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -5375,11 +5483,11 @@ x" 0006000600060006000600060006000600060006000600060010000F0006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060011000600060006 -000600060006000600060006001300120006000600060006000600060006001400060006000600060006000600060006 -000600060006001500060006000600060006000600060006000600060006000600060006000600060006001600060006 +000600060006000600060006001300120006000600060006000600060015001400060006000600060006000600060006 +000600060006001600060006000600060006000600060006000600060006000600060006000600060006001700060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 -000600060006000600060006000600060006000600060006001A00190018001700060006000600060006000600060006 -0006000600060006000600060006000600060006001B0006000600060006000600060006001C00060006000600060006 +000600060006000600060006000600060006000600060006001B001A0019001800060006000600060006000600060006 +0006000600060006000600060006000600060006001C0006000600060006000600060006001D00060006000600060006 000600060006000600060006000600060006000600060006000600060006000600060006000600060006000600060006 000600060006000600060006000600060006000600060006000600060006000600000000000000000000000007FFFFFE 0000000000000000000000007F7FFFFFAA555555555555552B555555555554AA11AED2D5B1DBCED655D255554AAAA490 @@ -5388,26 +5496,27 @@ x" FFFE55555555555500000000007FFFFF0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000FFFFFFFF0000000000000000000020BF 00000000000000000000000000000000FFFFFFFF00000000003FFFFFFFFFFFFF00000000000000000000000000000000 -E7FFFFFFFFFF000000000000000000005555555555555555555555555555555555555555401555555555555555555555 +E7FFFFFFFFFF020000000000000000005555555555555555555555555555555555555555401555555555555555555555 FF00FF003F00FF000000FF00AA003F000F000000000000000F001F000F000F00C00F3D503E2738840000FFFF00000020 0000000000000008000000000000000000000000000000000000000000000000FFC0000000000000000000000000FFFF 0000FFFFFFFFFFFFC025EA9D000000005555555555555555000428055555555500000000000000000000155555555555 -0000000005555555000000000000000055545554000000006A00555555555555555F7D555545285500200000014102F5 +0000000005555555000000000000000055545554000000006A00555555555555555F7D55554528550020000015411AF5 07FFFFFE00000000000000000000000000000000000000000000000000000000000000FFFFFFFFFF0000000000000000 FFFF00000000000000000000000FFFFF0000000000000000F7FF000000000000000000000037F7FF0000000000000000 -000000000000000000000000000000000007FFFFFFFFFFFF000000000000000000000000000000000000000000000000 -FFFFFFFF000000000000000000000000000000000000000000000000FFFFFFFF00000000000000000000000000000000 -FFF0000003FFFFFFFFFFFF0000003FFF003FDE64D0000003000003FFFFFF00007B0000001FDFE7B0FFFFF0000001FC5F -03FFFFFF0000003F00003FFFFFF00000F0000003FFFFFF00FFFF0000003FFFFFFFFFFF00000003FF07FFFFFC00000001 -001FFFFFF000000000007FFFFFC00000000001FFFFFF0000000000000000040000000003FFFFFFFF0000000000000000 -00000000000000000000000000000000FFFF000000000000FFFF03FFFFFF03FF00000000000003FF0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +000000000000000000000000000000000007FFFFFFFFFFFF000000000000000000000000000000000000003FFFFF0000 +0000000000000000000000000000000000000000000000000000000000000000FFFFFFFF000000000000000000000000 +000000000000000000000000FFFFFFFF00000000000000000000000000000000FFF0000003FFFFFFFFFFFF0000003FFF +003FDE64D0000003000003FFFFFF00007B0000001FDFE7B0FFFFF0000001FC5F03FFFFFF0000003F00003FFFFFF00000 +F0000003FFFFFF00FFFF0000003FFFFFFFFFFF00000003FF07FFFFFC00000001001FFFFFF000000000007FFFFFC00000 +000001FFFFFF0000000000000000040000000003FFFFFFFF000000000000000000000000000000000000000000000000 +FFFF000000000000FFFF03FFFFFF03FF00000000000003FF000000000000000000000000000000000000000000000000 +00000000000000000000000000000000", ); -//11648 bytes +//11904 bytes enum simpleCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -0000000000000100000000000000048000000000000011C0", +000000000000010000000000000004800000000000001240", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -5443,17 +5552,17 @@ x" 000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000380037 0000000000000000000000000000000000000000000000000000000000000000003C003B003A00390000003E003D0000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0040003F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0040003F0000000000000042004100000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -004200410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +004400430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000004300000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000004500000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000004500440000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000004700460000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -5465,199 +5574,204 @@ x" 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -08E50080091DFFFF090B00BD031905FB0B2B006B09D00B9A0AD200E0082606C705D1059404670838019301800A330785 -FFFF02F904D9051EFFFFFFFFFFFFFFFF08E60081091EFFFF090C00BE031A05FC0B2C006C09D10B9B0AD300E1082706C8 -05D2059504680839019401810A340786FFFF02FA04DA051FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0965FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0856011805AE077B03DB025709BB0AD80B4D0128038F0559031500470397062B -029F008608DD05F3FFFF00CB058B071104FB021309820AE208EF0A45088007010857011905AF077C03DC025809BC0AD9 -0B4E01290390055A031600480398062C02A0008708DE05F4FFFF00CC058C071204FC021409830AE3036A0A4608810702 -04CC04CB09DD09DC0B580B5701CD01CC07320731020001FF08AF08AE00CE00CD06140613005C005B0620061F00520051 -0663066202B202B108010800015A015907E707E60B890B880A620A6104BE04BD0593059201B401B3096D096C021C021B -08790878FFFFFFFF031C031B0939093806FD00950094FFFF081C008F008E06FE07CA0B310B30081D0A230121012007CB -04DC04DBFFFF0A240B660B6507C507C40162016106BD06BC02AA02A906830682000D000C060A06090070006F06410640 -00D200D1083B083A01DF01DE0728072701A201A10B810B800A520A5104C604C50566056507CF07CE09FB09FA09770976 -002106260625036B05D305FE05FD00220B180B170688069102750526026A026901AF07FA0B3902760AC20769FFFF01B0 -052008B508B40A4709900B090229027BFFFF04C900970096032B00D308EB00AA062E062D0019001803CF055301050104 -FFFFFFFF09A603D0075907EE01690168052C077F01A7075A0AC003020301052DFFFFFFFF0256025501ADFFFF0920091F -FFFFFFFFFFFFFFFF05E0092B092A09290AE50AE405E205E1079804FE04FD0AE6076B0A5E0A5D07990A8004420441076C -055102FE02FD0A810B540B53076A0552016B016A0655065402C002BF05FA05F900F200F1064706460570056F06A906A8 -0ABC0ABB0ABAFFFF01AE022A0748074701EB01EA0B6E0B6D09710970041A0419059F059E0841084008BE08BD0940093F -0898089703AE03AD041C041B0B120B110A8F0A8E040B040A0531053002B402B307F107F0016D016C084B084A05B705B6 -06CE06CDFFFF00D40B830B8200640063073E073D00C200C1088A08890079007806F506F4057A0579FFFFFFFFFFFFFFFF -07960A0EFFFFFFFF095D07BE04CA07970692014C014B028B09D509D402D3041D032403230926092509F709F609540953 -0689021D0B1F040207FB0B3AFFFF05270A48FFFF0AC3FFFFFFFFFFFFFFFF0941027CFFFF0B2E0521FFFF00B50B76FFFF -063C00F90B0A099100ABFFFFFFFF098AFFFF08EC05A0FFFFFFFFFFFF032CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0031FFFF -09A70516FFFF05540350FFFFFFFFFFFF078001A8041E07EFFFFFFFFFFFFF02D4FFFF0AC1FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF070F0092FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0972FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CF01CE04A504A401F601F5FFFFFFFF -0A37FFFFFFFFFFFF0382FFFF086E0122FFFFFFFFFFFFFFFFFFFF0299FFFFFFFFFFFF00EB082806D709CA0BA0FFFF07F2 -017C04AE04B30386016601D20ABD0A170B070B320973059A0106039B081E0966068AFFFF062F0B7300AC03450607032D -009A084C06FA08FD00EC082906D8029A017D04AF04B409CE016701D30ABE0A180B080B330974059B0107039C081F0967 -068C068B06300B7400AD03460608032E009B084D06FB08FE097809CB0BA107F3FFFFFFFF059C04B009790B750347FFFF -04A904A8018C018B085F085E0A890A88098909880582058103BC03BB09DF09DE08C208C102F602F503630362044A0449 -038301D606310B340A84FFFF0ABF059D05DB05DA01D70A85086F01230A38FFFF096E0291051A04F105AC0090098E0AF5 -08F700A008F906FF0391009C031D05EF03C105400B45071F0AB6027D03D306E704B70126086A0A8C01B90A1407AA080A -02DF0A73051107EC015B02450ACE09A40B5B093A0664057B005303C3062109F003C205410B4607200AB7027E03D406E8 -04B80127086B0A8D01BA0A1507AB080B02E00A74051207ED015C02460ACF09A50B5C093B0665057C005403C4062209F1 -096F0292051B04F205AD0091098F0AF608F800A108FA07000392009D031E05F005CD05CC0AA30AA20B4A0B4902440243 -03E603E501FA01F90859085809B609B508E008DF05A305A2039A039908C608C509370936088808870418041703DE03DD -FFFFFFFF0B220B21FFFFFFFFFFFFFFFF05A705A6FFFFFFFF00E600E5082B082A005E005D06D006CF00050004061C061B -00CA00C90730072F0568056708AD08AC010B010A06B506B401A0019F04F004EF045804570A110A100B700B6F07BB07BA -040704060831083008EE08ED09BF09BE08DA08D90326032503B803B709F909F8021F06C306C202DB023705D905D80220 -04A00A220A21023802DC0793079204A1055C055B023C023B06E406E302620261062806270058005706790678001E001D -0677067601130112056A05690248024707A907A8011B011A07780777049B049A046A04690A910A900B000AFF02360235 -042C042B038C038B08CA08C9090E090D092409230338033703D803D70A010A000A950A940825082401CB01CA079B079A -02C402C30A1C0A1B0171017004EC04EB05BB05BA06A506A4002C002B064D064C003800370639063800B400B30B6A0B69 -0ACD0ACC0738073704EE04ED088E088D0227017E0BA2FFFF0A9A0293071904B50589047D08520AC401330B6306D503A7 -03030352067C03840135092C067E09030B27094906D905B405010524085A0A06022F0A3D07150295FFFF078705DC0184 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0228017F0BA3FFFF0A9B0294071A04B6058A047E08530AC501340B6406D603A8 -03040353067D03850136092D067F09040B28094A06DA05B505020525085B0A0702300A3E07160296FFFF078805DD0185 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050D03EB082209B701B10B8E06F601F0 -01B7049804850241046D087C0A9E0A9C0AF706A007FE056B04310648039300F708C3068F090902D909170672033B014F -03D1084E09EA0B4F0AA8FFFF02E10108FFFFFFFFFFFFFFFFFFFFFFFF0A55FFFF03FC06990AE7015309320668042D05C4 -03C905F10317002D09270B3B09F20025085C06B0055D008C0429088209AB0AE00A0A0761021504FF071304D3024901DA -081809980AAE02A106EC03CB058703E1FFFF039F011E0B3506950905000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -036000C3043305D60934006D081606C009FC0B29037408930335007E08BB06030A5B02CD01F70A6D055F0137095506B8 -07C805750B7E07DA075D09EE04DF048B064E037802E7044F06A209A001410850089B09190041045D0634031300450B9C -0B6709E0023309B10739054300820271077D07170A0C0ADE04B908B601E4052803AF06DB09FE028908060B2305B801FB -035A067A034C05DE092E068602AD0139038D06230B84004BFFFFFFFF04390061038E06240B85004CFFFFFFFF043A0062 -05130A1606E9054205CE093C0A760A75FFFFFFFFFFFF069DFFFFFFFFFFFFFFFF03FD069A0AE8015409330669042E05C5 -03CA05F20318002E09280B3C09F30026085D06B1055E008D042A088309AC0AE10A0B076202160500071404D4024A01DB -081909990AAF02A206ED03CC058803E2FFFF03A0011F0B3606960906000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF0507FFFFFFFFFFFF030DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B92FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04C804C706F306F20B870B860776077504740473080308020260025F0985098409080907057805770334033308F408F3 -0914091302CC02CB03D603D5045C045B07C707C60B040B030A1E0A1D04DE04DD05CB05CA01AC01AB072C072B0240023F -083F083E00DB00DA061606150060005F060E060D001300120694069302A402A306B706B6015E015D079F079E05B105B0 -049304920A640A630B5A0B590208020703E003DF020E020D087B087A09460945090008FF03550354037D037C08D208D1 -09620961088508840204020303DA03D901B601B50B3E0B3D0A420A410480047F05C305C207DD07DC014E014D08110810 -02AC02AB065D065C004A00490633063200890088061E061D053F053E08A308A2020602050736073501D101D004C204C1 -0440043F0A5A0A59FFFFFFFF07D107D00886FFFFFFFFFFFFFFFF08F0FFFFFFFF08E808E70308030703A403A309C909C8 -0ADD0ADC0254025307E507E40430042F07B107B00A260A250722072104C404C305460545021A02190704070300990098 -05F805F700A300A206530652004E004D0AFA0AF9012501240533053202F402F3077207710117011607B507B404970496 -03F703F60A700A6F0B7D0B7C024E024D043C043B03BE03BD08F608F508D408D309220921035F035E054C054B09950994 -0A780A7708A508A4019A01990452045101D501D40A4A0A4900EE00ED06E006DF0A02003503A90605055500F3094F0B41 -0A03003603AA0606055600F409500B42022B019D0A35076DFFFFFFFF06F804CD022C019E0A36076EFFFFFFFF06F904CE -0016030505FF039D01720870068008E9001703060600039E01730871068108EA01820AC80A3902E501E0078E04AA01A3 -01830AC90A3A02E601E1078F04AB01A4035605E3034E0074FFFFFFFF08BF000A035705E4034F0075FFFFFFFF08C0000B -0A5FFFFF01E6FFFF076FFFFF04D5FFFF0A60FFFF01E7FFFF0770FFFF04D6FFFF0656043D02C5099205E50B8C002903B3 -0657043E02C6099305E60B8D002A03B409D602D502ED0447041F05CF02090A710A570AB0000808E3FFFFFFFF06190321 -03A5028509680B1B08F1012A02C1066603A6028609690B1C08F2012B02C2066709F4028F03B906E105B201FD07F40B13 -09F5029003BA06E205B301FE07F50B1400DC09B30B7A09E4007C0281073F059000DD09B40B7B09E5007D028207400591 -097CFFFF066A0370FFFFFFFFFFFFFFFF02EE0448066B0371FFFF0975FFFF097D00F5FFFFFFFFFFFFFFFFFFFFFFFFFFFF -020A0A7209D702D6FFFFFFFFFFFF00F60387FFFF035C00BBFFFFFFFFFFFFFFFF042005D0035D00BCFFFFFFFFFFFFFFFF -09CFFFFF01C30176FFFFFFFF029BFFFF0A580AB101C40177FFFFFFFFFFFF029C03BFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -061A0322000908E4FFFFFFFFFFFF03C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06FCFFFFFFFF -09BD0B2DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0951FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0952FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF045904940A7907B20A4309DA01780767070902F101EC0534082E044D00DE0AEB -045A04950A7A07B30A4409DB01790768070A02F201ED0535082F044E00DF0AEC0874FFFFFFFFFFFFFFFFFFFFFFFF0875 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0596037AFFFFFFFF0745081A00A60B25089909CC052A03FE -07B604870A92020F0AA0071D018D022105180860029D01020943065E097A0B1D00A70B260597037B052B03FF0746081B -0A930210089A09CD018E022207B70488029E01030AA1071E097B0B1E05190861FFFFFFFF0944065FFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF010C0AED065803C7050B044306B2082C -0AB201C8086C0A4F0225020B0753049C027705380B5F070B098600A8040C081205A4002F093D070508CF003B095B063A -0876015103A1067003E705D40B0B06840AA40114040407D2053A01BB02E304BB010D0AEE065903C8050C044406B3082D -0AB301C9086D0A500226020C0754049D027805390B60070C098700A9040D081305A50030093E070608D0003C095C063B -0877015203A2067103E805D50B0C06850AA50115040507D3053B01BC02E404BC030E063D003A003909D807BF0A0F0032 -0265037F037E09D9040305A10B2002660A1A0A19FFFF021EFFFF074E074DFFFFFFFFFFFFFFFFFFFF028C095EFFFFFFFF -033A033902A602A50912091108CC08CB02B902B8037303720470046F099709960B560B5507FD07FC04B204B1077A0779 -01E901E80A660A6500D600D5056E056D00660065072A07290020001F08A908A8005A0059062A0629026402630B1A0B19 -0190018F06BF06BE05BD05BC07C107C00A3C0A3B0750074F0280027F04E204E103AC03AB0B020B010958095704720471 -0328032708D608D509C109C00931093008330832057E057D042204210AAD0AAC0A130A1202180217070E070D01A601A5 -08210820010F010EFFFFFFFFFFFFFFFF0358FFFFFFFFFFFFFFFF032A0329035906D206D1FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050E03EC082309B801B20B8F06F701F101B8049904860242046E087D0A9F0A9D -0AF806A107FF056C04320649039400F808C40690090A02DA09180673033C015003D2084F09EB0B500AA9FFFF02E20109 -FFFFFFFFFFFFFFFFFFFFFFFF0A56FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0A200A1F01D901D8079D079C0A990A98069F069E0140013F04F604F502BB02BA06430642003E003D064B064A05BF05BE -073C073B007700760B6C0B6B0040003F0784078304EA04E9089208910AD50AD40AC70AC602C802C7FFFFFFFF017B017A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02980297051505140A050A04094C094B -0A830A8207AF07AE018A01890A400A3F00AF00AE074A0749052F052E088C088B0034003305EC05EBFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00070006FFFFFFFF00C600C508AB08AA -00E800E706F106F0006800670610060F01580157FFFFFFFF0B4C0B4B0835083409C309C20504050302B002AF0A2C0A2B -0960095F087F087E0396039509810980085508540B5E0B5D0330032F0312031105A905A802120211098D098C04110410 -08690868051D051C0A280A27023E023D066D066C00FF00FE06A706A60B100B0F0661066001560155069C069B02EA02E9 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D707A307A2FFFF0B720B71050804D809BA09B905860585084508440AD10AD0 -004FFFFFFFFFFFFFFFFFFFFF0B770050024C024B0B0E0B0D03B203B1FFFF0790049F049E07D907D809E309E203FB03FA -027A02790510050F011D011C080F080E094200B607080707FFFF00FA098B0B2F0B61009303510710009F009E05EA05E9 -013E013D06E606E5028E028D0550054F0436043508050804075B0B9305170791FFFF01750174075CFFFFFFFFFFFFFFFF -FFFFFFFF02F802F70310030FFFFFFFFFFFFFFFFF0AF20AF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09ED09ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B62FFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -036100C4043405D70935006E081706C109FD0B2A037508940336007F08BC06040A5C02CE01F80A6E05600138095606B9 -07C905760B7F07DB075E09EF04E0048C064F037902E8045006A309A101420851089C091A0042045E0635031400460B9D -0B6809E1023409B2073A054400830272077E07180A0D0ADF04BA08B701E5052903B006DC09FF028A08070B2405B901FC -035B067B034D05DF092F068702AE013AFFFFFFFFFFFFFFFFFFFF080D080CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02670AF309C4FFFF094D064405AA01430B780773074B04CF040004F707C2013B -02EF03ED054D0259019707A40A860AB4FFFF0453060108C7FFFFFFFFFFFFFFFF02680AF409C5FFFF094E064505AB0144 -0B790774074C04D0040104F807C3013C02F003EE054E025A019807A50A870AB5FFFF0454060208C8FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C0075F07510A6709AF0AAA07EA012F02DD099E0AFB0959014507D404E304F9 -08CD0636047900E9036C072302CF0043025D0549040802D1038006740B8A0147047B078C0ACA0A7B0B51078102310483 -05C1076007520A6809B00AAB07EB013002DE099F0AFC095A014607D504E404FA08CE0637047A00EA036D072402D00044 -025E054A040902D2038106750B8B0148047C078D0ACB0A7C0B52078202320484FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF074107D60AD60A4B0B05099A02230571 -07940B3F09C6022D0763048104A2024F06AA034305C6033106C9028301BF0B37065003C5028709AD060B08D7002702EB -08B00A2F0A2D0755FFFFFFFFFFFFFFFF074207D70AD70A4C0B06099B0224057207950B4009C7022E0764048204A30250 -06AB034405C7033206CA028401C00B38065103C6028809AE060C08D8002802EC08B10A300A2E0756FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -026B00A40463088F025101100AE906ACFFFF00B709470B43090100B908FB05E701310B4707CC080802FF03E305610836 -FFFF02A70423058304E5047707650A29FFFF03B5063E0A310890FFFF06D302C906AD026C00A504640B44025201110AEA -05E8FFFF00B809480809090200BA08FC083701320B4807CD0584030003E405620A2AFFFF02A804240A3204E604780766 -02CAFFFF03B6063FFFFFFFFFFFFF06D401490191048904D1057301E207E20B94044505C803E9069703090A4D0A8A07E8 -00C7090F0B900915008A0895072D03410100096A08660461007A0366071B089D033F04BF05220201046507A00ADA0A69 -053C046B083C096301BD0B9606EA0239FFFF066E09E602FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -014A0192048A04D2057401E307E30B95044605C903EA0698030A0A4E0A8B07E900C809100B910916008B0896072E0342 -0101096B08670462007B0367071C089E034004C005230202046607A10ADB0A6A053D046C083D096401BE0B9706EB023A -FFFF066F09E702FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0B9807A601DC057F04E7049001C101A908420733036E00CF045F0848097E00EF068D0872015F0B15061108E102D7034A -08460AB80A6B036406BA03CD055704550B9907A701DD058004E8049101C201AA08430734036F00D004600849097F00F0 -068E087301600B16061208E202D8034B08470AB90A6C036506BB03CE05580456FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -031F072509A20084040E05F50412025B056306DD091B00690A08061703480010019507AC04AC047501EE0AA606EE030B -0AEF06CB08A604F3050507B809E80A530320072609A30085040F05F60413025C056406DE091C006A0A09061803490011 -019607AD04AD047601EF0AA706EF030C0AF006CC08A704F4050607B909E90A5408B2005503F8065A0437002308DB05ED -000000BF0376059805090536081407430757019B000207BC0A96033D044B04A60547016E02730AFD09D20B9E099C06AE -03F9065B0014036808DC05EE08B30056037705990438002408150744000100C0000307BD050A0537044C04A70758019C -02740AFE0A97033E099D06AF0548016F0015036909D30B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +090D00820947FFFF093500BF032506110B61006D09FE0BD00B0400E2084606E105E705AA04750858019501820A6307A3 +FFFF030304EB0534FFFFFFFFFFFFFFFF090E00830948FFFF093600C0032606120B62006E09FF0BD10B0500E3084706E2 +05E805AB04760859019601830A6407A4FFFF030404EC0535FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF098FFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0876011A05C4079903E7026109E70B0A0B83012A039B056F0321004903A30641 +02A9008809050609FFFF00CD05A1072B0511021D09AC0B1609190A7508A0071B0877011B05C5079A03E8026209E80B0B +0B84012B039C05700322004A03A4064202AA00890906060AFFFF00CE05A2072C0512021E09AD0B1703760A7608A1071C +04DE04DD0A0D0A0C0B8E0B8D01D501D4074E074D020A020908D708D600D000CF062A0629005E005D0636063500540053 +067B067A02BC02BB081F081E015C015B080508040BBF0BBE0A940A9304D004CF05A905A801BA01B90997099602260225 +08990898FFFFFFFF0328032709630962071700970096FFFF083C00910090071807E80B670B66083D0A530123012207E9 +04EE04EDFFFF0A540B9C0B9B07E307E20164016306D706D602B402B3069B069A000D000C0620061F0072007106590658 +00D400D3085B085A01E901E80744074301A601A50BB70BB60A840A8304D804D7057C057B07ED07EC0A2B0A2A09A109A0 +0023063C063B037705E90614061300240B4E0B4D06A006A9027F053C0274027301B308180B6F02800AF40787FFFF01B4 +053608DD08DC0A7709BA0B3F02330285044704DB00990098033700D5091500AC06440643001B001A03DB056901070106 +FFFFFFFF09D203DC0777080C016B016A0542079D01AB07780AF2030C030B0543FFFFFFFF0260025F01B1FFFF094A0949 +FFFFFFFFFFFFFFFF05F60955095409530B190B1805F805F707B6051405130B1A07890A900A8F07B70AB20450044F078A +0567030803070AB30B8A0B8907880568016D016C066D066C02CA02C90610060F00F400F3065F065E0586058506C106C0 +0AEE0AED0AECFFFF01B202340766076501F501F40BA40BA3099B099A0426042505B505B40861086008E608E5096A0969 +08BC08BB03BA03B9042804270B480B470AC10AC0041704160547054602BE02BD080F080E016F016E086B086A05CD05CC +06E806E7FFFF00D60BB90BB800660065075C075B00C400C308AA08A9007B007A070F070E0590058FFFFFFFFFFFFFFFFF +07B40A3EFFFFFFFF098707DC04DC07B506AA014E014D02950A030A0202DD04290330032F0950094F0A270A26097E097D +06A102270B55040E08190B70FFFF053D0A78FFFF0AF5FFFFFFFFFFFFFFFF096B0286FFFF0B640537FFFF00B70BAC069E +065400FB0B4009BB00ADFFFFFFFF09B4FFFF091605B6FFFFFFFFFFFF0338FFFFFFFFFFFFFFFFFFFFFFFFFFFF0033FFFF +09D3052CFFFF056A035CFFFFFFFFFFFF079E01AC042A080DFFFFFFFFFFFF02DEFFFF0AF3FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF07290094FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF099CFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01D701D604B504B4020001FFFFFFFFFF +0A67FFFFFFFFFFFF038EFFFF088E0124FFFFFFFFFFFFFFFFFFFF02A3FFFFFFFFFFFF00ED084806F109F80BD6FFFF0810 +017E04BE04C50392016801DA0AEF0A470B3D0B68099D05B0010803A7083E099006A2FFFF06450BA900AE0351061D0339 +009C086C0714092700EE084906F202A4017F04BF04C609FC016901DB0AF00A480B3E0B69099E05B1010903A8083F0991 +06A406A306460BAA00AF0352061E033A009D086D0715092809A209F90BD70811FFFFFFFF05B204C009A30BAB0353FFFF +04B904B8018E018D087F087E0ABB0ABA09B309B20598059703C803C70A0F0A0E08EA08E9030002FF036F036E04580457 +038F01DE06470B6A0AB6FFFF0AF105B305F105F001DF0AB7088F01250A68FFFF0998029B0530050505C2009209B80B2B +092100A209230719039D009E0329060503CD05560B7B07390AE8028703DF070104C90128088A0ABE01BF0A4407C80828 +02E90AA50527080A015D024F0B0009D00B910964067C0591005503CF06370A2003CE05570B7C073A0AE9028803E00702 +04CA0129088B0ABF01C00A4507C9082902EA0AA60528080B015E02500B0109D10B920965067D0592005603D006380A21 +0999029C0531050605C3009309B90B2C092200A30924071A039E009F032A060605E305E20AD50AD40B800B7F024E024D +03F203F1020402030879087809E209E10908090705B905B803A603A508EE08ED0961096008A808A70424042303EA03E9 +FFFFFFFF0B580B57FFFFFFFFFFFFFFFF05BD05BCFFFFFFFF00E800E7084B084A0060005F06EA06E90005000406320631 +00CC00CB074C074B057E057D08D508D4010D010C06CF06CE01A401A305040503046604650A410A400BA60BA507D907D8 +04130412085108500918091709EB09EA090209010332033103C403C30A290A28022906DD06DC02E5024105EF05EE022A +04B00A520A51024202E607B107B004B1057205710246024506FE06FD026C026B063E063D005A0059069106900020001F +068F068E011501140580057F0252025107C707C6011D011C0796079504AB04AA047804770AC30AC20B360B350240023F +043804370398039708F208F109380937094E094D0344034303E403E30A310A300AC70AC60845084401D101D007B907B8 +02CE02CD0A4C0A4B01730172050004FF05D105D006BD06BC002E002D06650664003A00390651065000B600B50BA00B9F +0AFF0AFE075607550502050108AE08AD023101800BD8FFFF0ACC029D073304C7059F048D08720AF601350B9906EF03B3 +030D035E06940390013709560696092D0B5D097306F305CA0517053A087A0A3602390A6D072F029FFFFF07A505F20186 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF023201810BD9FFFF0ACD029E073404C805A0048E08730AF701360B9A06F003B4 +030E035F06950391013809570697092E0B5E097406F405CB0518053B087B0A37023A0A6E073002A0FFFF07A605F30187 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF052303F7084209E301B50BC4071001FA +01BD04A80495024B047B089C0AD00ACE0B2D06B8081C0581043D0660039F00F908EB06A7093302E30941068A03470151 +03DD086E0A1A0B850ADAFFFF02EB010AFFFFFFFFFFFFFFFFFFFFFFFF0A87FFFF040806B10B1B0155095C0680043905DA +03D506070323002F09510B710A220027087C06CA0573008E043508A209D70B140A3A077F021F0515072D04E5025301E4 +083809C20AE002AB070603D7059D03EDFFFF03AB01200B6B06AD092F000EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +036C00C5043F05EC095E006F083606DA0A2C0B5F038008B30341008008E306190A8D02D702010A9F05750139097F06D2 +07E6058B0BB407F8077B0A1E04F1049B0666038402F1045D06BA09CA0143087008BF09430043046B064C031F00470BD2 +0B9D0A10023D09DD075705590084027B079B07310A3C0B1004CB08DE01EE053E03BB06F50A2E029308320B5905CE0205 +03660692035805F4095806C602B7013B039906390BBA004DFFFFFFFF04450063039A063A0BBB004EFFFFFFFF04460064 +05290A460703055805E409660AA80AA7FFFF0825082406B5FFFFFFFFFFFFFFFF040906B20B1C0156095D0681043A05DB +03D606080324003009520B720A230028087D06CB0574008F043608A309D80B150A3B078002200516072E04E6025401E5 +083909C30AE102AC070703D8059E03EEFFFF03AC01210B6C06AE0930000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF051DFFFFFFFFFFFF0319FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BC8FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04DA04D9070D070C0BBD0BBC079407930482048108210820026A026909AF09AE09320931058E058D0340033F091E091D +093E093D02D602D503E203E1046A046907E507E40B3A0B390A4E0A4D04F004EF05E105E001B001AF07480747024A0249 +085F085E00DD00DC062C062B00620061062406230013001206AC06AB02AE02AD06D106D00160015F07BD07BC05C705C6 +04A304A20A960A950B900B8F0212021103EC03EB02180217089B089A0970096F092A0929036103600389038808FA08F9 +098C098B08A508A4020E020D03E603E501BC01BB0B740B730A720A710490048F05D905D807FB07FA0150014F082F082E +02B602B506750674004C004B06490648008B008A063406330555055408C708C60210020F0754075301D901D804D404D3 +044E044D0A8C0A8BFFFFFFFF07EF07EE08A6FFFFFFFFFFFFFFFF091AFFFFFFFF0910090F0312031103B003AF09F709F6 +0B0F0B0E025E025D08030802043C043B07CF07CE0A560A55073C073B04D604D5055C055B02240223071E071D009B009A +060E060D00A500A4066B066A0050004F0B300B2F012701260549054802FE02FD0790078F0119011807D307D204A704A6 +040304020AA20AA10BB30BB202580257044A044903CA03C90920091F08FC08FB094C094B036B036A0562056109BF09BE +0AAA0AA908C908C8019C019B0460045F01DD01DC0A7A0A7900F000EF06FA06F90A32003703B5061B056B00F509790B77 +0A33003803B6061C056C00F6097A0B780235019F0A65078BFFFFFFFF071204DF023601A00A66078CFFFFFFFF071304E0 +0018030F061503A9017408900698091300190310061603AA017508910699091401840AFA0A6902EF01EA07AC04BA01A7 +01850AFB0A6A02F001EB07AD04BB01A8036205F9035A0076FFFFFFFF08E7000A036305FA035B0077FFFFFFFF08E8000B +0A91FFFF01F0FFFF078DFFFF04E7FFFF0A92FFFF01F1FFFF078EFFFF04E8FFFF066E044B02CF09BC05FB0BC2002B03BF +066F044C02D009BD05FC0BC3002C03C00A0602DF02F70455042B05E502130AA30A890AE20008090BFFFFFFFF062F032D +03B1028F09920B51091B012C02CB067E03B2029009930B52091C012D02CC067F0A24029903C506FB05C8020708120B49 +0A25029A03C606FC05C9020808130B4A00DE09DF0BB00A14007E028B075D05A600DF09E00BB10A15007F028C075E05A7 +09A6FFFF0682037CFFFFFFFFFFFFFFFF02F804560683037DFFFF099FFFFF09A700F7FFFFFFFFFFFFFFFFFFFFFFFFFFFF +02140AA40A0702E0FFFFFFFFFFFF00F80393FFFF036800BDFFFFFFFFFFFFFFFF042C05E6036900BEFFFFFFFFFFFFFFFF +09FDFFFF01C90178FFFFFFFF02A5FFFF0A8A0AE301CA0179FFFFFFFFFFFF02A603CBFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0630032E0009090CFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0716FFFFFFFF +09E90B63FFFFFFFFFFFFFFFFFFFFFFFFFFFF097BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF097CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF046704A40AAB07D00A730A0A017A0785072302FB01F6054A084E045B00E00B1F +046804A50AAC07D10A740A0B017B0786072402FC01F7054B084F045C00E10B200894FFFFFFFFFFFFFFFFFFFFFFFF0895 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AC0386FFFFFFFF0763083A00A80B5B08BD09FA0540040A +07D404970AC402190AD20737018F022B052E088002A70104096D067609A40B5300A90B5C05AD03870541040B0764083B +0AC5021A08BE09FB0190022C07D5049802A801050AD3073809A50B54052F0881FFFFFFFF096E0677FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF010E0B21067003D30521045106CC084C +0AE401CE088C0A81022F0215077104AC0281054E0B95072509B000AA0418083005BA00310967071F08F7003D09850652 +0896015303AD068803F305EA0B41069C0AD60116041007F0055001C102ED04CD010F0B22067103D40522045206CD084D +0AE501CF088D0A8202300216077204AD0282054F0B96072609B100AB0419083105BB00320968072008F8003E09860653 +0897015403AE068903F405EB0B42069D0AD70117041107F1055101C202EE04CE031A0655003C003B0A0807DD0A3F0034 +026F038B038A0A09040F05B70B5602700A4A0A49FFFF0228FFFF076C076BFFFFFFFFFFFFFFFFFFFF02960988FFFFFFFF +0346034502B002AF093C093B08F408F302C302C2037F037E047E047D09C109C00B8C0B8B081B081A04C204C107980797 +01F301F20A980A9700D800D70584058300680067074607450022002108D108D0005C005B0640063F026E026D0B500B4F +0192019106D906D805D305D207DF07DE0A6C0A6B076E076D028A028904F404F303B803B70B380B37098209810480047F +0334033308FE08FD09ED09EC095B095A0853085205940593042E042D0ADF0ADE0A430A42022202210728072701AA01A9 +0841084001110110FFFFFFFFFFFFFFFF0364FFFFFFFFFFFFFFFF03360335036506EC06EBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF052403F8084309E401B60BC5071101FB01BE04A90496024C047C089D0AD10ACF +0B2E06B9081D0582043E066103A000FA08EC06A8093402E40942068B0348015203DE086F0A1B0B860ADBFFFF02EC010B +FFFFFFFFFFFFFFFFFFFFFFFF0A88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0A500A4F01E101E007BB07BA0ACB0ACA06B706B601420141050A050902C502C4065B065A0040003F0663066205D505D4 +075A0759007900780BA20BA10042004107A207A104FE04FD08B208B10B070B060AF90AF802D202D1FFFFFFFF017D017C +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02A202A1052B052A0A350A3409760975 +0AB50AB407CD07CC018C018B0A700A6F00B100B0076807670545054408AC08AB0036003506020601FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00070006FFFFFFFF00C800C708D308D2 +00EA00E9070B070A006A006906260625015A0159FFFFFFFF0B820B810855085409EF09EE051A051902BA02B90A5C0A5B +098A0989089F089E03A203A109AB09AA087508740B940B93033C033B031E031D05BF05BE021C021B09B709B6041D041C +08890888053305320A580A5702480247068506840101010006BF06BE0B460B45067906780158015706B406B302F402F3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E907C107C0FFFF0BA80BA7051E04EA09E609E5059C059B086508640B030B02 +0051FFFFFFFFFFFFFFFFFFFF0BAD0052025602550B440B4303BE03BDFFFF07AE04AF04AE07F707F60A130A1204070406 +0284028305260525011F011E082D082C096C00B807220721FFFF00FC09B50B650B970095035D072A00A100A0060005FF +0140013F070006FF0298029705660565044204410823082207790BC9052D07AF069F01770176077AFFFFFFFF09C509C4 +FFFFFFFF03020301031C031BFFFFFFFF088708860B260B25FFFFFFFFFFFF0448FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A1D0A1CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B98FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +036D00C6044005ED095F0070083706DB0A2D0B60038108B40342008108E4061A0A8E02D802020AA00576013A098006D3 +07E7058C0BB507F9077C0A1F04F2049C0667038502F2045E06BB09CB0144087108C009440044046C064D032000480BD3 +0B9E0A11023E09DE0758055A0085027C079C07320A3D0B1104CC08DF01EF053F03BC06F60A2F029408330B5A05CF0206 +03670693035905F5095906C702B8013CFFFFFFFFFFFFFFFFFFFF082B082AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02710B2709F0FFFF0977065C05C001450BAE0791076904E1040C050B07E0013D +02F903F905630263019907C20AB80AE6FFFF0461061708EFFFFFFFFFFFFFFFFF02720B2809F1FFFF0978065D05C10146 +0BAF0792076A04E2040D050C07E1013E02FA03FA05640264019A07C30AB90AE7FFFF0462061808F0FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05D6077D076F0A9909DB0ADC0808013102E709C80B310983014707F204F5050F +08F5064E048900EB0378073D02D900450267055F041402DB038C068C0BC00149048B07AA0AFC0AAD0B87079F023B0493 +05D7077E07700A9A09DC0ADD0809013202E809C90B320984014807F304F6051008F6064F048A00EC0379073E02DA0046 +02680560041502DC038D068D0BC1014A048C07AB0AFD0AAE0B8807A0023C0494FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF075F07F40B080A7D0B3B09CE022D0587 +07B20B7509F402370781049104B2025906C2034F05DC033D06E3028D01C50B6D066803D1029109D9062108FF002902F5 +08D80A5F0A5D0773FFFFFFFFFFFFFFFF076007F50B090A7E0B3C09CF022E058807B30B7609F502380782049204B3025A +06C3035005DD033E06E4028E01C60B6E066903D2029209DA06220900002A02F608D90A600A5E0774FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +027500A6047108AF025B01120B1D06C4FFFF00B909710B79092B00BB092505FD01330B7D07EA0826030903EF05770856 +FFFF02B1042F059904F9048707830A59FFFF03C106560A6108B0FFFF06ED02D306C5027600A704720B7A025C01130B1E +05FEFFFF00BA09720827092C00BC0926085701340B7E07EB059A030A03F005780A5AFFFF02B204300A6204FA04880784 +02D4FFFF03C20657FFFFFFFFFFFF06EE014B0193049904E3058901EC08000BCA045305DE03F506AF03130A7F0ABC0806 +00C909390BC6093F008C08B50749034D010209940892046F007C0372073508C1034B04D10538020B047307BE0B0C0A9B +05520479085C098D01C30BCC07040243FFFF06860A160305FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +014C0194049A04E4058A01ED08010BCB045405DF03F606B003140A800ABD080700CA093A0BC70940008D08B6074A034E +0103099508930470007D0373073608C2034C04D20539020C047407BF0B0D0A9C0553047A085D098E01C40BCD07050244 +FFFF06870A170306FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF075104BC01C7019708CA09F20B1201F8050D08CC09C60B230A7B074101D204F7 +0627090300100483FFFFFFFF01B708B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF075204BD01C8019808CB09F30B1301F9 +050E08CD09C70B240A7C074201D304F80628090400110484FFFFFFFF01B808BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BCE07C401E6059504FB04A001E201AD0862074F037A00D1046D086809A800F1 +06A508B701610B4B064A090902E1035608660AEA0A9D037006D403D9056D04630BCF07C501E7059604FC04A101E301AE +08630750037B00D2046E086909A900F206A608B801620B4C064B090A02E2035708670AEB0A9E037106D503DA056E0464 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF032B073F0A000086041A060B041E0265057906F70945006B0A38062D03540016 +01A107CA04C3048503170AD8070803150B2906E508CE0507051B07D60A180A85032C07400A010087041B060C041F0266 +057A06F80946006C0A39062E0355001701A207CB04C4048603180AD9070903160B2A06E608CF0508051C07D70A190A86 +08DA0057040406720443002509110603000000C1038205AE051F054C083407610775019D000207DA0AC80349045904B6 +055D0170027D0B330A040BD409CC06C804050673001403740912060408DB0058038305AF0444002608350762000100C2 +000307DB0520054D045A04B70776019E027E0B340AC9034A09CD06C9055E0171001503750A050BD5FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//11648 bytes +//11904 bytes enum fullCaseTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -0000000000000100000000000000048000000000000011C0", +000000000000010000000000000004800000000000001240", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -5693,17 +5807,17 @@ x" 000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000380037 0000000000000000000000000000000000000000000000000000000000000000003C003B003A00390000003E003D0000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0040003F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0040003F0000000000000042004100000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -004200410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +004400430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000004300000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000004500000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000004500440000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000004700460000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -5715,199 +5829,204 @@ x" 00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0984008A09BEFFFF09AC00C7034406580BF400740A7C0C6A0B9100EF08B10736062905E604A608C301AC01990AE607FE -FFFF032005210569FFFFFFFFFFFFFFFF0985008B09BFFFFF09AD00C8034506590BF500750A7D0C6B0B9200F008B20737 -062A05E704A708C401AD019A0AE707FFFFFF03210522056AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0BFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08E3012E060507F2041202770A640B9A0C18013E03C105A60340004E03C9068A -02C20090097C0650FFFF00D505DA0781054302300A2A0BA70BA20AF90911077108E4012F060607F3041302780A650B9B -0C19013F03C205A70341004F03CA068B02C30091097D0651FFFF00D605DB0782054402310A2B0BA8039B0AFA09120772 -051205110A890A880C230C2201E601E507A607A5021D021C0946094500D800D70673067200650064067F067E005B005A -06C406C302D802D70889088801730172086808670C550C540B180B170504050305E505E401CD01CC0A140A1302390238 -090A0909FFFF03F60347034609DD09DC076D009F009EFFFF08A700990098076E08440BFA0BF908A80AD6013701360845 -05240523031A0AD70C310C30083F083E017B017A072A072902D002CF06EB06EA000F000E066906680079007806A0069F -00DC00DB08C608C501FB01FA079C079B01BB01BA0C4D0C4C0B080B07050C050B05B305B2084B084A0AAB0AAA0A1E0A1D -002506850684039C062B065B065A00260BE00BDF06F006F902950571028A028901C808810C0202960B8107E0FFFF01C9 -056B094F094E0AFB0A380BD00247029BFFFF050F00A100A0035600DD098A00B4068D068C001D001C040605A001180117 -FFFFFFFF0A4E040707D0087401820181057707F801C007D10B7F032903280578FFFFFFFF0276027501C6FFFF09C109C0 -FFFFFFFFFFFFFFFF063B09CF09CE09CD0BAA0BA9063D063C0812054605450BAB07E20B140B1308130B39047D047C07E3 -059E032503240B3A0C1F0C1E07E1059F0184018306B606B502E602E5065706560101010006A606A505BD05BC07140713 -0B7B0B7A0B79092801C7024807BF07BE020702060C390C380A180A170455045405F105F008CE08CD095B095A09E409E3 -092D092C03E103E0045704560BD90BD80B480B4704460445057C057B02DA02D9087708760186018508D808D7060F060E -073D073CFFFF00DE0C4F0C4E006D006C07B407B300CC00CB091B091A008200810765076405C905C8FFFFFFFFFFFFFFFF -08100ABEFFFFFFFF0A0308380510081106FA0165016402AD0A810A8002FA0458034F034E09C709C60AA70AA609FA09F9 -06F1023A0BE8043B08820C03FFFF05720AFCFFFF0B82FFFFFFFFFFFFFFFF09E5029CFFFF0BF7056CFFFF00BF0C41FFFF -069B01090BD10A3900B5FFFFFFFF0A32FFFF098B05F7FFFFFFFFFFFF0357FFFFFFFFFFFFFFFFFFFFFFFFFFFF0035FFFF -0A4F055FFFFF05A10380FFFFFFFFFFFF07F901C104590875FFFFFFFFFFFF02FBFFFF0B80FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF077F009CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A19FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01E801E704E604E502120211FFFFFFFF -0AEAFFFFFFFFFFFF03B3FFFF08FF0138FFFFFFFFFFFFFFFFFFFF02BCFFFFFFFFFFFF00FA08B307460A750C70FFFF0878 -019504F104F90883017F01EB0B7C0ACA0BCE0BFB0A1A05EC011903CD08A90A0C06F2FFFF068E0C3E00B6037206660358 -00A408D9076A099E00FB08B4074702BD019604F204FA0A79018001EC0B7D0ACB0BCF0BFC0A1B05ED011A03CE08AA0A0D -06F406F3068F0C3F00B703730667035900A508DA076B099F0A1F0A760C710879FFFFFFFF05EE04F30A200C400374FFFF -04EC04EB01A501A408F008EF0B420B410A310A3005D105D003F003EF0A8B0A8A095F095E031D031C0394039304850484 -03B401EF06900BFD0B3DFFFF0B7E05EF0631063001F00B3E090001390AEBFFFF0A1502B4056505390603009A0A360BBA -099800AA099A076F03C300A60348064A03F8058D0C0E07900B72029D040A075704FD013C08FB0B4501D20AC408240894 -03060B2C055A0872017402650B8D0A4C0C2609DE06C505CA005C03FC06800A9D03F9058E0C0F07910B73029E040B0758 -04FE013D08FC0B4601D30AC50825089503070B2D055B0873017502660B8E0A4D0C2709DF06C605CB005D03FD06810A9E -0A1602B50566053A0604009B0A370BBB099900AB099B077003C400A70349064B062506240B5C0B5B0C130C1202640263 -041D041C0216021508E608E50A5F0A5E097F097E05F605F503CC03CB0963096209DB09DA091909180453045204150414 -FFFFFFFF0BEB0BEAFFFFFFFFFFFFFFFF05FE05FDFFFFFFFF00F500F408B608B500670066073F073E00050004067B067A -00D400D307A407A305B505B409440943011E011D0722072101B901B805380537049504940AC10AC00C3B0C3A08350834 -0442044108BC08BB098D098C0A680A67097709760351035003EB03EA0AA90AA8023C073207310302025506330632023D -04E10AD50AD402560303080D080C04E205A905A8025A02590754075302820281068706860061006006E006DF00220021 -06DB06DA0129012805B705B602680267082308220131013007EF07EE04DC04DB04A904A80B4A0B490BC50BC402540253 -0467046603BE03BD0967096609AF09AE09C509C403650364040F040E0AB10AB00B4E0B4D08B008AF01E401E308150814 -02EB02EA0ACF0ACE018A018905340533061306120710070F0030002F06AC06AB003C003B0698069700BE00BD0C350C34 -0B8C0B8B07AE07AD0536053509230922024501970C72FFFF0B5302B6078904FB05D804BE08DF0B83014A0C2E074403DA -032A038206E403B5014C09D006E609A40BF009ED0748060C0549056F08E70AB6024D0AF0078502B8FFFF08000637019D -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF024601980C73FFFF0B5402B7078A04FC05D904BF08E00B84014B0C2F074503DB -032B038306E503B6014D09D106E709A50BF109EE0749060D054A057008E80AB7024E0AF1078602B9066208010638019E -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0556042208AD0A6001CA0C5E0766020C -01D004D904C6026104AC090D0B570B550BBC070B088605B8046C06A703C50107096006F709AA030009B806D403680168 -040808DB0A970C1A0B61FFFF0308011BFFFFFFFFFFFFFFFFFFFFFFFF0B0BFFFF043507020BAC016C09D606CA0468061C -03FE064C0342003109CB0C040AA1002908EB071D05AA0096046409130A530BA50ABA07D80232054707830519026901F3 -08A30A400B6802C4075C040005D60418FFFF03D101340BFE06FD09A60010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -039100CD046E062E09D8007608A1072F0AAC0BF203A5093B0362008C095806600B1102F402130B2405AC014E09FB0725 -084205C40C4A085B07D40A9B052704CC06AD03A9030E048A070D0A48015808DD093009BA004A049A0693033E004C0C6C -0C320A8C02510A5907AF05900094029107F607870ABC0BA004FF09530200057303E2074A0AAE02AB08900C0806100217 -039906EE037A063909D2071902D3015003BF06820C500054FFFFFFFF0474006A03C006830C510055FFFFFFFF0475006B -055C0AC60759058F062609E00B2F0B2EFFFFFFFFFFFF0708FFFFFFFFFFFFFFFF043607030BAD016D09D706CB0469061D -03FF064D0343003209CC0C050AA2002A08EC071E05AB0097046509140A540BA60ABB07D9023305480784051A026A01F4 -08A40A410B6902C5075D040105D70419FFFF03D201350BFF06FE09A70011FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF0561FFFFFFFFFFFF0338FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C62FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -050E050D076307620C530C5207ED07EC04B304B2088B088A0280027F0A2D0A2C09A909A805C705C60361036009950994 -09B509B402F302F2040D040C04990498084108400BC90BC80AD10AD0052605250623062201C501C407A0079F0260025F -08CA08C900E500E40675067400690068066D066C0015001406FC06FB02C702C607240723017701760819081806080607 -04D404D30B1A0B190C250C240225022404170416022B022A090C090B09EA09E909A109A00385038403AE03AD096F096E -0A080A0709160915022102200411041001CF01CE0C070C060AF60AF504C104C0061B061A085E085D01670166089C089B -02D202D106BE06BD005100500692069100930092067D067C058C058B093809370223022207AC07AB01EA01E905080507 -047B047A0B100B0F00DF0C5C084D084C0917049E05BA03FAFFFF0BA3FFFFFFFF098709860331033003D603D50A740A73 -0B9F0B9E0274027308660865046B046A082B082A0AD90AD807930792050A050905930592023702360774077300A300A2 -0655065400AD00AC06B406B3005700560BBF0BBE013B013A057E057D0327032607E907E8012D012C082F082E04D804D7 -0430042F0B270B260C490C48026E026D0477047603F203F1099709960971097009C309C20390038F059905980A3D0A3C -0B310B30093A093901B301B2048D048C01EE01ED0B000AFF00FD00FC074F074E0AB2003903DC066405A2010209F30C0A -0AB3003A03DD066505A3010309F40C0B024901B60AE807E4FFFFFFFF07680513024A01B70AE907E5FFFFFFFF07690514 -001A032C065C03CF018B090106E80988001B032D065D03D0018C090206E90989019B0B870AEC030C01FC080704ED01BC -019C0B880AED030D01FD080804EE01BD0386063E037E007DFFFFFFFF095C000C0387063F037F007EFFFFFFFF095D000D -0B1508ED0202008507E6072B051B0BEC0B16FFFF0203FFFF07E7FFFF051CFFFF06B7047802EC0A3A06400C5A002D03E6 -06B8047902ED0A3B06410C5B002E03E70A8202FC03140482045A062702260B2A0B0D0B6A000A0982FFFFFFFF0678034C -08560B760AC70BE30991014005F2079408570B770AC80BE40992014105F307950AA3063403EC07500609021909C80BDA -0AA4063503ED0751060A021A09C90BDB0B1F0B950C450A9001F7054F07B509470B200B960C460A9101F8055007B60948 -0A23048E06CC03A1003F0C43FFFF03360315048306CD03A2FFFF0A1CFFFF0A240AF2084EFFFFFFFF051F0581FFFF0A9F -02270B2B0A8302FDFFFFFFFFFFFF0AF30884091E038D00C5096C064EFFFFFFFF045B0628038E00C6FFFFFFFFFFFFFFFF -0A7A08E901DC018F04E707F402BE0C160B0E0B6B01DD0190FFFFFFFFFFFF02BF06FF0A6BFFFFFFFF06D8091CFFFF05D2 -0679034D000B0983FFFFFFFFFFFF0700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF076CFFFFFFFF -0A660BF6FFFFFFFFFFFFFFFFFFFFFFFFFFFF09F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF049604D50B32082C0AF70A86019107DE077903180208057F08B9048800EB0BB0 -049704D60B33082D0AF80A87019207DF077A03190209058008BA048900EC0BB10905FFFFFFFFFFFFFFFFFFFFFFFF0906 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05E803ABFFFFFFFF07BC08A500B00BEE092E0A7705750437 -083004C80B4B022C0B59078E01A60241056308F102C0011509E706BF0A210BE600B10BEF05E903AC0576043807BD08A6 -0B4C022D092F0A7801A70242083104C902C101160B5A078F0A220BE7056408F2FFFFFFFF09E806C0FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF011F0BB206B904020554047E071F08B7 -0B6C01E108FD0B050243022807CA04DD029705830C2A077B0A2E00B20447089D05F9003309E10775097400450A010699 -0907016A03D306D2041E062C0BD206EC0B5D012A043D0850058501D4030A050101200BB306BA04030555047F072008B8 -0B6D01E208FE0B060244022907CB04DE029805840C2B077C0A2F00B30448089E05FA003409E20776097500460A02069A -0908016B03D406D3041F062D0BD306ED0B5E012B043E0851058601D5030B05020339069C003E003D0A8408390ABF0036 -028503B003AF0A85043C05F80BE902860ACD0ACCFFFF023BFFFF07C507C4FFFFFFFFFFFFFFFFFFFF02AE0A04FFFFFFFF -0367036602C902C809B309B20969096802DF02DE03A403A304AF04AE0A3F0A3E0C210C20088D088C04F504F407F107F0 -020502040B1C0B1B00EE00ED05BF05BE006F006E079E079D002400230940093F0063006206890688028402830BE20BE1 -01A901A8072E072D06150614083B083A0AEF0AEE07C707C602A0029F052A052903DF03DE0BC70BC609FE09FD04B104B0 -03530352097309720A6A0A6909D509D408BE08BD05CD05CC045D045C0B670B660AC30AC202350234077E077D01BF01BE -08AC08AB01220121FFFFFFFFFFFFFFFF038BFFFFFFFFFFFFFFFF03550354038C07410740FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0557042308AE0A6101CB0C5F0767020D01D104DA04C7026204AD090E0B580B56 -0BBD070C088705B9046D06A803C60108096106F809AB030109B906D503690169040908DC0A980C1B0B62FFFF0309011C -FFFFFFFFFFFFFFFFFFFFFFFF0B0CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0AD30AD201F201F1081708160B520B51070A070901570156053E053D02E102E006A206A10042004106AA06A906170616 -07B207B10080007F0C370C360044004307FD07FC05320531092709260B940B930B860B8502EF02EEFFFFFFFF01940193 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BB02BA055E055D0AB50AB409F009EF -0B3C0B3B0829082801A301A20AFE0AFD00B900B807C107C0057A0579092109200038003706470646FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00090008FFFFFFFF00D000CF09420941 -00F700F60761076000710070066F066E01710170FFFFFFFF0C150C1408C008BF0A700A6F054C054B02D602D50ADF0ADE -0A060A050910090F03C803C70A290A2808E208E10C290C28035D035C033D033C060005FF022F022E0A350A34044C044B -08FA08F9056805670ADB0ADA025C025B06CF06CE01140113071207110BD70BD606C206C1016F016E0705070403110310 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF051D081D081CFFFF0C3D0C3C0562051E0A630A6205D505D408D208D10B900B8F -0058FFFFFFFFFFFFFFFFFFFF0C420059026C026B0BD50BD403E503E4FFFF082604E004DF085A08590A8F0A8E04340433 -029A02990559055801330132089A089909E600C007780777FFFF010A0A330BF80C2C009D0381078000A900A806450644 -015501540756075502B002AF059D059C04710470088F088E07D20C6305600827FFFF018E018D07D3FFFFFFFFFFFFFFFF -FFFFFFFF031F031E033B033AFFFFFFFFFFFFFFFF0BB70BB6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A9A0A99FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C2DFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -039200CE046F062F09D9007708A207300AAD0BF303A6093C0363008D095906610B1202F502140B2505AD014F09FC0726 -084305C50C4B085C07D50A9C052804CD06AE03AA030F048B070E0A49015908DE093109BB004B049B0694033F004D0C6D -0C330A8D02520A5A07B005910095029207F707880ABD0BA1050009540201057403E3074B0AAF02AC08910C0906110218 -039A06EF037B063A09D3071A02D4015105FB014808C10BCAFFFF0B640B630846FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -09F5FFFFFFFFFFFF035A001604B4069DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02870BB80A6DFFFF09F106A30601015A0C6607EA07C205150439053F083C0152 -03160426059A027901B0081E0B3F0B6EFFFF0490065E0964FFFFFFFFFFFFFFFF02880BB90A6EFFFF09F206A40602015B -0C6707EB07C30516043A0540083D015303170427059B027A01B1081F0B400B6FFFFF0491065F0965FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF061807D607C80B1D0A570B70086D014603040A460BC009FF015C0854052B0541 -096A069504BA00F8039D079702F60052027D0596044302F803B106D60C56015E04BC08050B890B340C1C07FA024F04C4 -061907D707C90B1E0A580B71086E014703050A470BC10A00015D0855052C0542096B069604BB00F9039E079802F70053 -027E0597044402F903B206D70C57015F04BD08060B8A0B350C1D07FB025004C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07B808690B980B010BCC0A42025705C0 -080E0C100A71024B07DA04C204E3026F07150370061E035E073802A401D80C0006B1042002A90A55066A0978002B0312 -094A0AE20AE007CCFFFFFFFFFFFFFFFF07B9086A0B990B020BCD0A43025805C1080F0C110A72024C07DB04C304E40270 -07160371061F035F073902A501D90C0106B2042102AA0A56066B0979002C0313094B0AE30AE107CDFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -028B00AE04A00924027101230BAE0717FFFF00C109EB0C0C09A200C3099C064201600C5808480892032E041A05AE08C7 -FFFF02CD045E05DC052D04B807DC0ADCFFFF03E806AF0AE40925FFFF074202F00718028C00AF04A10C0D027201240BAF -0643FFFF00C209EC089309A300C4099D08C801610C59084905DD032F041B05AF0ADDFFFF02CE045F0AE5052E04B907DD -02F1FFFF03E906B0FFFFFFFFFFFF0743016201AA04CA051705C201FE08630C64048006200424070603320B030B43086B -00D109B00C6009B600D9092A07A1036E01110A1108F704A40083039707A70932036C0505056D021E04A2081A0B9C0B28 -058904AA08CB0A0901D60002075A025DFFFF06D00A930322FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -016301AB04CB051805C301FF08640C65048106210425070703330B040B44086C00D209B10C6109B700DA092B07A2036F -01120A1208F804A50084039807A80933036D0506056E021F04A3081B0B9D0B29058A04AB08CC0A0A01D70003075B025E -FFFF06D10A940323FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0C68082001F505CE052F04D101DA01C208CF07A9039F00E9049C08D50A2600FE06F5090301780BDD0670098002FE0378 -08D30B740B2203950727040405A404920C69082101F605CF053004D201DB01C308D007AA03A000EA049D08D60A2700FF -06F6090401790BDE0671098102FF037908D40B750B2303960728040505A50493FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -034A07990A4A008E04490652044D027B05B0074C09BC00720AB80676037C001201AE083604EF04B6020A0B5F075E0334 -0BB4073A093D053B054D08320A950B09034B079A0A4B008F044A0653044E027C05B1074D09BD00730AB90677037D0013 -01AF083704F004B7020B0B60075F03350BB5073B093E053C054E08330A960B0A094C005E043106BB04720027097A0648 -000000C903A705EA05520587089F07BA07CE01B4000608520B4F036A048604E90594018702930BC20A7E0C6E0A44071B -043206BC0018043F097B0649094D005F03A805EB0473002808A007BB000100CA0007085305530588048704EA07CF01B5 -02940BC30B50036B0A45071C05950188001904400A7F0C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +09AC008C09E8FFFF09D600C90350066E0C2A00760AAA0CA00BC300F108D10750063F05FC04B408E301AE019B0B16081C +FFFF032A0533057FFFFFFFFFFFFFFFFF09AD008D09E9FFFF09D700CA0351066F0C2B00770AAB0CA10BC400F208D20751 +064005FD04B508E401AF019C0B17081DFFFF032B05340580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A35FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09030130061B0810041E02810A900BCC0C4E014003CD05BC034C005003D506A0 +02CC009209A40666FFFF00D705F0079B0559023A0A540BDB0BD60B290931078B09040131061C0811041F02820A910BCD +0C4F014103CE05BD034D005103D606A102CD009309A50667FFFF00D805F1079C055A023B0A550BDC03A70B2A0932078C +052405230AB90AB80C590C5801EE01ED07C207C102270226096C096B00DA00D9068906880067006606950694005D005C +06DC06DB02E202E108A708A601750174088608850C8B0C8A0B4A0B490516051505FB05FA01D301D20A3E0A3D02430242 +092A0929FFFF0402035303520A070A06078700A100A0FFFF08C7009B009A078808620C300C2F08C80B06013901380863 +0536053503240B070C670C66085D085C017D017C0744074302DA02D907030702000F000E067F067E007B007A06B806B7 +00DE00DD08E608E50205020407B807B701BF01BE0C830C820B3A0B39051E051D05C905C8086908680ADB0ADA0A480A47 +0027069B069A03A806410671067000280C160C1507080711029F05870294029301CC089F0C3802A00BB307FEFFFF01CD +0581097709760B2B0A620C06025102A50482052100A300A2036200DF09B400B606A306A2001F001E041205B6011A0119 +FFFFFFFF0A7A041307EE089201840183058D081601C407EF0BB103330332058EFFFFFFFF0280027F01CAFFFF09EB09EA +FFFFFFFFFFFFFFFF065109F909F809F70BDE0BDD065306520830055C055B0BDF08000B460B4508310B6B048B048A0801 +05B4032F032E0B6C0C550C5407FF05B50186018506CE06CD02F002EF066D066C0103010206BE06BD05D305D2072C072B +0BAD0BAC0BAB094801CB025207DD07DC021102100C6F0C6E0A420A41046104600607060608EE08ED098309820A0E0A0D +0951095003ED03EC046304620C0F0C0E0B7A0B79045204510592059102E402E3089508940188018708F808F706250624 +07570756FFFF00E00C850C84006F006E07D207D100CE00CD093B093A00840083077F077E05DF05DEFFFFFFFFFFFFFFFF +082E0AEEFFFFFFFF0A2D08560522082F07120167016602B70AAF0AAE03040464035B035A09F109F00AD70AD60A240A23 +070902440C1E044708A00C39FFFF05880B2CFFFF0BB4FFFFFFFFFFFFFFFF0A0F02A6FFFF0C2D0582FFFF00C10C770706 +06B3010B0C070A6300B7FFFFFFFF0A5CFFFF09B5060DFFFFFFFFFFFF0363FFFFFFFFFFFFFFFFFFFFFFFFFFFF0037FFFF +0A7B0575FFFF05B7038CFFFFFFFFFFFF081701C504650893FFFFFFFFFFFF0305FFFF0BB2FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0799009EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A43FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01F001EF04F404F3021C021BFFFFFFFF +0B1AFFFFFFFFFFFF03BFFFFF091F013AFFFFFFFFFFFFFFFFFFFF02C6FFFFFFFFFFFF00FC08D307600AA30CA6FFFF0896 +01970501050B08A1018101F30BAE0AFA0C040C310A440602011B03D908C90A36070AFFFF06A40C7400B8037E067C0364 +00A608F9078409C800FD08D4076102C701980502050C0AA7018201F40BAF0AFB0C050C320A450603011C03DA08CA0A37 +070C070B06A50C7500B9037F067D036500A708FA078509C90A490AA40CA70897FFFFFFFF060405030A4A0C760380FFFF +04FC04FB01A701A60910090F0B740B730A5B0A5A05E705E603FC03FB0ABB0ABA098709860327032603A0039F04930492 +03C001F706A60C330B6FFFFF0BB006050647064601F80B700920013B0B1BFFFF0A3F02BE057B054D0619009C0A600BF0 +09C200AC09C4078903CF00A803540660040405A30C4407AA0BA402A704160771050F013E091B0B7701D80AF4084208B2 +03100B5E057008900176026F0BBF0A780C5C0A0806DD05E0005E040806960ACD040505A40C4507AB0BA502A804170772 +0510013F091C0B7801D90AF5084308B303110B5F05710891017702700BC00A790C5D0A0906DE05E1005F040906970ACE +0A4002BF057C054E061A009D0A610BF109C300AD09C5078A03D000A903550661063B063A0B8E0B8D0C490C48026E026D +042904280220021F090609050A8B0A8A09A709A6060C060B03D803D7098B098A0A050A0409390938045F045E04210420 +FFFFFFFF0C210C20FFFFFFFFFFFFFFFF06140613FFFFFFFF00F700F608D608D500690068075907580005000406910690 +00D600D507C007BF05CB05CA096A09690120011F073C073B01BD01BC054C054B04A304A20AF10AF00C710C7008530852 +044E044D08DC08DB09B709B60A940A93099F099E035D035C03F703F60AD90AD80246074C074B030C025F064906480247 +04EF0B050B040260030D082B082A04F005BF05BE02640263076E076D028C028B069D069C0063006206F806F700240023 +06F306F2012B012A05CD05CC027202710841084001330132080D080C04EA04E904B704B60B7C0B7B0BFB0BFA025E025D +0473047203CA03C9098F098E09D909D809EF09EE03710370041B041A0AE10AE00B800B7F08D008CF01EA01E908330832 +02F502F40AFF0AFE018C018B0548054706290628072807270032003106C406C3003E003D06B006AF00C000BF0C6B0C6A +0BBE0BBD07CA07C9054A054909430942024F01990CA8FFFF0B8502C007A3050D05EE04CC08FF0BB5014C0C64075E03E6 +0334038E06FC03C1014E09FA06FE09CE0C260A1707620622055F058509070AE602570B20079F02C2FFFF081E064D019F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0250019A0CA9FFFF0B8602C107A4050E05EF04CD09000BB6014D0C65075F03E7 +0335038F06FD03C2014F09FB06FF09CF0C270A18076306230560058609080AE702580B2107A002C30678081F064E01A0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056C042E08CD0A8C01CE0C9407800216 +01D604E704D4026B04BA092D0B890B870BF2072308A405CE047806BF03D101090988070F09D4030A09E206EC0374016A +041408FB0AC70C500B93FFFF0312011DFFFFFFFFFFFFFFFFFFFFFFFF0B3DFFFF0441071A0BE0016E0A0006E204740632 +040A0662034E003309F50C3A0AD1002B090B073705C00098047009330A7F0BD90AEA07F6023C055D079D052B027301FD +08C30A6A0B9A02CE0776040C05EC0424FFFF03DD01360C34071509D00010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +039D00CF047A06440A02007808C107490ADC0C2803B1095F036E008E098006760B4302FE021D0B5605C201500A25073F +086005DA0C80087907F20ACB053904DA06C503B50318049807250A72015A08FD095409E4004C04A806AB034A004E0CA2 +0C680ABC025B0A8507CD05A60096029B081407A10AEC0BD20511097B020A058903EE07640ADE02B508BD0C3E06260221 +03A5072F0386064F09FC073302DD015203CB06980C860056FFFFFFFF0480006C03CC06990C870057FFFFFFFF0481006D +05720AF6077305A5063C0A0A0B610B60FFFF08AF08AE0720FFFFFFFFFFFFFFFF0442071B0BE1016F0A0106E304750633 +040B0663034F003409F60C3B0AD2002C090C073805C10099047109340A800BDA0AEB07F7023D055E079E052C027401FE +08C40A6B0B9B02CF0777040D05ED0425FFFF03DE01370C35071609D10011FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0577FFFFFFFFFFFF0344FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C98FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0520051F077D077C0C890C88080B080A04C104C008A908A8028A02890A570A5609D309D205DD05DC036D036C09BF09BE +09DF09DE02FD02FC0419041804A704A6085F085E0BFF0BFE0B010B00053805370639063801C901C807BC07BB026A0269 +08EA08E900E700E6068B068A006B006A06830682001500140714071302D102D0073E073D0179017808370836061E061D +04E204E10B4C0B4B0C5B0C5A022F022E0423042202350234092C092B0A140A1309CB09CA0391039003BA03B909970996 +0A320A3109360935022B022A041D041C01D501D40C3D0C3C0B260B2504CF04CE06310630087C087B0169016808BA08B9 +02DC02DB06D606D50053005206A806A7009500940693069205A205A1095C095B022D022C07C807C701F201F1051A0519 +048904880B420B4100E10C92086B086A093704AC05D00406FFFF0BD7FFFFFFFF09AF09AE033B033A03E203E10AA20AA1 +0BD10BD0027E027D0884088304770476084908480B090B0807AD07AC051C051B05A905A802410240078E078D00A500A4 +066B066A00AF00AE06CC06CB005900580BF50BF4013D013C059405930331033008070806012F012E084D084C04E604E5 +043C043B0B590B580C7F0C7E027802770485048403FE03FD09C109C00999099809ED09EC039C039B05AF05AE0A670A66 +0B630B62095E095D01B501B4049B049A01F601F50B300B2F00FF00FE076907680AE2003B03E8067A05B801040A1D0C40 +0AE3003C03E9067B05B901050A1E0C41025301B80B180802FFFFFFFF07820525025401B90B190803FFFFFFFF07830526 +001A0336067203DB018D0921070009B2001B0337067303DC018E0922070109B3019D0BB90B1C03160206082504FD01C0 +019E0BBA0B1D03170207082604FE01C103920654038A007FFFFFFFFF0984000C03930655038B0080FFFFFFFF0985000D +0B47090D020C008708040745052D0C220B48FFFF020DFFFF0805FFFF052EFFFF06CF048602F60A6406560C90002F03F2 +06D0048702F70A6506570C91003003F30AB20306031E04900466063D02300B5C0B3F0B9C000A09AAFFFFFFFF068E0358 +08740BA80AF70C1909BB0142060807AE08750BA90AF80C1A09BC0143060907AF0AD3064A03F8076A061F022309F20C10 +0AD4064B03F9076B0620022409F30C110B510BC70C7B0AC00201056507D3096F0B520BC80C7C0AC10202056607D40970 +0A4D049C06E403AD00410C79FFFF0340031F049106E503AEFFFF0A46FFFF0A4E0B22086CFFFFFFFF05310597FFFF0ACF +02310B5D0AB30307FFFFFFFFFFFF0B2308A2093E039900C709940664FFFFFFFF0467063E039A00C8FFFFFFFFFFFFFFFF +0AA8090901E2019104F5081202C80C4C0B400B9D01E30192FFFFFFFFFFFF02C907170A97FFFFFFFF06F0093CFFFF05E8 +068F0359000B09ABFFFFFFFFFFFF0718FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0786FFFFFFFF +0A920C2CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A22FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04A404E30B64084A0B270AB6019307FC079303220212059508D9049600ED0BE4 +04A504E40B65084B0B280AB7019407FD079403230213059608DA049700EE0BE50925FFFFFFFFFFFFFFFFFFFFFFFF0926 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FE03B7FFFFFFFF07DA08C500B20C2409520AA5058B0443 +084E04D60B7D02360B8B07A801A8024B0579091102CA01170A1106D70A4B0C1C00B30C2505FF03B8058C044407DB08C6 +0B7E023709530AA601A9024C084F04D702CB01180B8C07A90A4C0C1D057A0912FFFFFFFF0A1206D8FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01210BE606D1040E056A048C073908D7 +0B9E01E7091D0B37024D023207E804EB02A105990C6007950A5800B4045308BB060F00350A0B078F099C00470A2B06B1 +0927016C03DF06EA042A06420C0807040B8F012C0449086E059B01DA0314051301220BE706D2040F056B048D073A08D8 +0B9F01E8091E0B38024E023307E904EC02A2059A0C6107960A5900B5045408BC061000360A0C0790099D00480A2C06B2 +0928016D03E006EB042B06430C0907050B90012D044A086F059C01DB03150514034506B40040003F0AB408570AEF0038 +028F03BC03BB0AB50448060E0C1F02900AFD0AFCFFFF0245FFFF07E307E2FFFFFFFFFFFFFFFFFFFF02B80A2EFFFFFFFF +0373037202D302D209DD09DC0991099002E902E803B003AF04BD04BC0A690A680C570C5608AB08AA05050504080F080E +020F020E0B4E0B4D00F000EF05D505D40071007007BA07B9002600250966096500650064069F069E028E028D0C180C17 +01AB01AA07480747062B062A085908580B1F0B1E07E507E402AA02A9053C053B03EB03EA0BFD0BFC0A280A2704BF04BE +035F035E099B099A0A960A9509FF09FE08DE08DD05E305E2046904680B990B980AF30AF2023F023E0798079701C301C2 +08CC08CB01240123FFFFFFFFFFFFFFFF0397FFFFFFFFFFFFFFFF036103600398075B075AFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056D042F08CE0A8D01CF0C950781021701D704E804D5026C04BB092E0B8A0B88 +0BF3072408A505CF047906C003D2010A0989071009D5030B09E306ED0375016B041508FC0AC80C510B94FFFF0313011E +FFFFFFFFFFFFFFFFFFFFFFFF0B3EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0B030B0201FA01F9083508340B840B8307220721015901580552055102EB02EA06BA06B90044004306C206C1062D062C +07D007CF008200810C6D0C6C00460045081B081A05460545094709460BC60BC50BB80BB702F902F8FFFFFFFF01960195 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C502C4057405730AE50AE40A1A0A19 +0B6E0B6D0847084601A501A40B2E0B2D00BB00BA07DF07DE0590058F09410940003A0039065D065CFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00090008FFFFFFFF00D200D109680967 +00F900F8077B077A007300720685068401730172FFFFFFFF0C4B0C4A08E008DF0A9C0A9B0562056102E002DF0B0F0B0E +0A300A2F0930092F03D403D30A530A52090209010C5F0C5E036903680349034806160615023902380A5F0A5E04580457 +091A0919057E057D0B0B0B0A0266026506E706E601160115072A07290C0D0C0C06DA06D901710170071D071C031B031A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF052F083B083AFFFF0C730C72057805300A8F0A8E05EB05EA08F208F10BC20BC1 +005AFFFFFFFFFFFFFFFFFFFF0C78005B027602750C0B0C0A03F103F0FFFF084404EE04ED087808770ABF0ABE0440043F +02A402A3056F056E0135013408B808B70A1000C207920791FFFF010C0A5D0C2E0C62009F038D079A00AB00AA065B065A +015701560770076F02BA02B905B305B2047D047C08AD08AC07F00C990576084507070190018F07F1FFFFFFFF0A6D0A6C +FFFFFFFF0329032803470346FFFFFFFF091809170BEB0BEAFFFFFFFFFFFF0483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0ACA0AC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C63FFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +039E00D0047B06450A03007908C2074A0ADD0C2903B20960036F008F098106770B4402FF021E0B5705C301510A260740 +086105DB0C81087A07F30ACC053A04DB06C603B60319049907260A73015B08FE095509E5004D04A906AC034B004F0CA3 +0C690ABD025C0A8607CE05A70097029C081507A20AED0BD30512097C020B058A03EF07650ADF02B608BE0C3F06270222 +03A607300387065009FD073402DE01530611014A08E10C00FFFF0B960B950864FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0A1FFFFFFFFFFFFF0366001604C206B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02910BEC0A99FFFF0A1B06BB0617015C0C9C080807E0052704450553085A0154 +0320043205B0028301B2083C0B710BA0FFFF049E0674098CFFFFFFFFFFFFFFFF02920BED0A9AFFFF0A1C06BC0618015D +0C9D080907E1052804460554085B01550321043305B1028401B3083D0B720BA1FFFF049F0675098DFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF062E07F407E60B4F0A830BA2088B0148030E0A700BF60A29015E0872053D0557 +099206AD04C800FA03A907B103000054028705AC044F030203BD06EE0C8C016004CA08230BBB0B660C520818025904D2 +062F07F507E70B500A840BA3088C0149030F0A710BF70A2A015F0873053E0558099306AE04C900FB03AA07B203010055 +028805AD0450030303BE06EF0C8D016104CB08240BBC0B670C530819025A04D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07D608870BCA0B330C020A76026105D6 +082C0C460A9D025507F804D004F10279072D037C0634036A075202AE01DE0C3606C9042C02B30A81068009A0002D031C +09720B120B1007EAFFFFFFFFFFFFFFFF07D708880BCB0B340C030A77026205D7082D0C470A9E025607F904D104F2027A +072E037D0635036B075302AF01DF0C3706CA042D02B40A82068109A1002E031D09730B130B1107EBFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +029500B004AE0944027B01250BE20731FFFF00C30A150C4209CC00C509C6065801620C8E086608B00338042605C408E7 +FFFF02D7046A05F2054104C607FA0B0CFFFF03F406C70B140945FFFF075C02FA0732029600B104AF0C43027C01260BE3 +0659FFFF00C40A1608B109CD00C609C708E801630C8F086705F30339042705C50B0DFFFF02D8046B0B15054204C707FB +02FBFFFF03F506C8FFFFFFFFFFFF075D016401AC04D8052905D8020808810C9A048E06360430071E033C0B350B750889 +00D309DA0C9609E000DB094A07BD037A01130A3B092304B2008503A307C30956037805170583022804B008380BCE0B5A +059F04B808EB0A3301DC000207740267FFFF06E80AC3032CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +016501AD04D9052A05D9020908820C9B048F06370431071F033D0B360B76088A00D409DB0C9709E100DC094B07BE037B +01140A3C092404B3008603A407C40957037905180584022904B108390BCF0B5B05A004B908EC0A3401DD000307750268 +FFFF06E90AC4032DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07C504FF01E001B009630A9F0BD40214055509610A6E0BE80B3107B501EB053F +068609A2001204C4FFFFFFFF01D0094EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07C6050001E101B109640AA00BD50215 +055609620A6F0BE90B3207B601EC0540068709A3001304C5FFFFFFFF01D1094FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C9E083E01FF05E4054304DF01FB01C608EF07CB03AB00EB04AA08F50A500100 +070D094C017A0C1306A909A80308038408F30BA60B5403A10741041005BA04A00C9F083F020005E5054404E001FC01C7 +08F007CC03AC00EC04AB08F60A510101070E094D017B0C1406AA09A90309038508F40BA70B5503A20742041105BB04A1 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035607B30AAC0090045506680459028505C6076609E600740AE8068C03880018 +01BA0854050604F703420B910778033E0BEE0754096D054F056308500AC50B3B035707B40AAD009104560669045A0286 +05C7076709E700750AE9068D0389001901BB0855050704F803430B920779033F0BEF0755096E0550056408510AC60B3C +09740060043D06D3047E002909B0065E000000CB03B306000568059D08BF07D807EC01B6000608700B810376049404F9 +05AA0189029D0BF80AB00CA40A740735043E06D4001C044B09B1065F0975006103B40601047F002A08C007D9000100CC +000708710569059E049504FA07ED01B7029E0BF90B8203770A75073605AB018A001D044C0AB10CA5FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//5600 bytes +//5760 bytes enum alphaTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000000000000000000002000000000000000D0", x" -000000000000010000000000000002C00000000000007B00", +000000000000010000000000000002C00000000000008000", x" 06050403030201000E0D0C0B0A09080711100F0303030303141414141414131214141414141414141414141414141414 141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414 @@ -5924,32 +6043,32 @@ x" 00010001000100010001000100010001000100010001000100010001000100010001000100010001002E000100010001 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F0030002F0001001F00330032003100010037003600350034003A000100390038 -003E003D003C003B004200410040003F0046004500440043004A004900480047001F004D004C004B00510050004F004E -0052000100010001001F001F00540053001F001F001F001F0055001F001F001F0001000100010001001F001F001F0056 -001F001F001F001F001F001F001F001F001F001F001F001F001F005700010001001F001F001F001F001F001F001F001F -001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F -0059005800010001005B005A001F001F0001000100010001000100010001000100010001000100010001000100010001 -0001000100010001005C0001000100010001000100010001001F001F005E005D001F001F001F001F001F001F001F001F -001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F005F001F001F001F -001F006100600001001F001F001F001F001F001F001F001F001F001F001F0062001F001F001F001F001F001F001F001F -001F001F001F001F001F001F001F001F001F001F001F001F0066006500640063001F001F001F001F0067001F001F001F -001F006A00690068006C001F001F006B001F001F006E006D001F006F001F001F001F001F0070001F001F001F001F001F -001F001F001F001F001F001F001F001F0001000100010001000100710001000100010001000100010001000100010001 -000100010001000100720001000100010001000100010073000100010001000100010001000100010001000100010001 -000100010001000100010074000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010075000100010001001F007600010001001F001F001F001F001F001F001F001F -001F007700010001001F001F001F001F0001000100010001000100010001000100010001000100010001000100010001 -00780001000100010001000100010001000100010001000100010001000100010079000100010001001F001F001F001F +003E003D003C003B004200410040003F0046004500440043004A004900480047004E004D004C004B005200510050004F +0053000100010001001F001F00550054001F001F001F001F0056001F001F001F00010001000100010001000100010057 +000100010001000100010001000100010058000100010001001F005900010001001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F005A001F001F001F001F001F +005C005B00010001005F005E005D001F0001000100010001000100010001000100010001000100010001000100010001 +000100010001000100600001000100010001000100010001001F001F00620061001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F0063001F001F001F +001F006500640001001F001F001F001F001F001F001F001F001F001F001F0066001F001F001F001F001F001F001F001F +001F001F001F001F001F001F001F001F001F001F001F001F006A006900680067001F001F001F001F006B001F001F001F +001F006E006D006C0071001F0070006F001F001F00730072001F0074001F001F001F001F0075001F001F001F001F001F +001F001F001F001F001F001F001F001F0001000100010001000100760001000100010001000100010001000100010001 +000100010001000100770001000100010001000100010078000100010001000100010001000100010001000100010001 +000100010001000100010079000100010001000100010001000100010001000100010001000100010001000100010001 +00010001000100010001000100010001007A000100010001001F007B00010001001F001F001F001F001F001F001F001F +001F007C00010001001F001F001F001F0001000100010001000100010001000100010001000100010001000100010001 +007D000100010001000100010001000100010001000100010001000100010001007E000100010001001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F000000000000000007FFFFFE07FFFFFE 0420040000000000FF7FFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000501F0003FFC30000000000000000BCDF000000000020 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000501F0003FFC30000000000000000BCDFFFF800000020 FFFFFFFBFFFFD740FFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC03FFFFFFFFFFFFFFFF FFFEFFFFFFFFFFFFFFFFFFFF027FFFFFBFFF0000000001FF000787FFFFFF00B6FFFFFFFF07FF0000FFFFC000FEFFFFFF FFFFFFFFFFFFFFFF9C00E1FE1FEFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFE0000003FFFFFFFFFFFF043007FFFFFFFC00 -00001FFFFCFFFFFFFFFF07FF01FFFFFFFFFFFFFF00007EFFFFFF03F8FFF003FFEFFFFFFFFFFFFFFFFFFE000FFFE1DFFF +00001FFFFCFFFFFFFFFF07FF01FFFFFFFFFFFFFF00807EFFFFFF03F8FFF003FFEFFFFFFFFFFFFFFFFFFE000FFFE1DFFF E3C5FDFFFFF99FEF1003000FB080599FC36DFDFFFFF987EE003F00005E021987E3EDFDFFFFFBBFEE1E00000F00011BBF E3EDFDFFFFF99FEE0002000FB0C0199FC3FFC718D63DC7EC0000000000811DC7E3FFFDFFFFFDDFFF0000000F27601DDF E3EFFDFFFFFDDFEF000E000F60601DDFE7FFFFFFFFFDDFFFFC00000F80F05DDF2FFBFFFFFC7FFFEE000C0000FF5F807F @@ -5961,8 +6080,8 @@ FFFFFFFFFFFFFFFFFFFF9FFFFFFFFFFFFFFFFFFF07FFFFFE01FFC7FFFFFFFFFF000FFFFF800FFFFF FFCFFFFFFFFFFFFF00000000108001FFFFFFFFFF0000000001FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFFFFFFFFFF 01FF0FFF7FFFFFFF001F3FFFFFFF0000FFFF0FFFFFFFFFFF00000000000003FFFFFFFFFF0FFFFFFF001FFFFE7FFFFFFF 80000080000000000000000000007001FFEFFFFFFFFFFFFF0000000000001FEFFC00F3FFFFFFFFFF0003FFBFFFFFFFFF -007FFFFFFFFFFFFF3FFFFFFFFC00E000E7FFFFFFFFFF01FF046FDE0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF001FFF8000000000FFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F5FDFFFFFFFFFFFFF1FDC1FFF0FCF1FDC +007FFFFFFFFFFFFF3FFFFFFFFC00E000E7FFFFFFFFFF07FF046FDE0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF001FFFFFFFF80000FFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F5FDFFFFFFFFFFFFF1FDC1FFF0FCF1FDC 00000000000000008002000000000000000000001FFF00000000000000000000F3FFBD503E2FFC84FFFFFFFF000043E0 00000000000001FF00000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000FFC0000000000000000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -5971,7 +6090,7 @@ FFFFFFFFFFFFFFFF000C781FFFFFFFFFFFFF20BFFFFFFFFF000080FFFFFFFFFF7F7F7F7F007FFFFF FFFFFFFEE07FFFFFF7FFFFFFFFFFFFFFFFFEFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFF00007FFFFFFF000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000000001FFF3FFFFFFFFFFF000000000C00FFFF1FFF8FF07FFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF -FFFFFFFCFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFC000003EB07FF000000FFFFFFFFBF000FFFFFFFFFFFFF +FFFFFFFCFF800000FFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFC00001FEB3FFF000000FFFFFFFFBF000FFFFFFFFFFFFF FFFFFFFFFFFFFFFFE8FC00000000002FFFFF07FFFFFFFC001FFFFFFF0007FFFFFFF7FFFFFFFFFFFF7C00FFFF00008000 007FFFFFFFFFFFFFFC7FFFFF00003FFF7FFFFFFFFFFFFFFF003CFFFF38000005FFFF7F7F007E7E7EFFFF03FFF7FFFFFF FFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF0FFFFFFFFFFFF87F @@ -5982,56 +6101,59 @@ FFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF5F7FFDFFE0F8007F 0000000000000000001FFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000 FFFFFFFF1FFFFFFF000000000001FFFFFFFFE000FFFFFFFF07FFFFFFFFFF07FFFFFFFFFF3FFFFFFF00000000003EFF0F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00003FFFFFFF0FFFFFFFFF0FFFFFFFFF00FFFFFFFFFFF7FF000FFFFFFFFF -1BFBFFFBFFB7F7FF0000000000000000007FFFFFFFFFFFFF000000FF003FFFFF07FDFFFFFFFFFFBF0000000000000000 +1BFBFFFBFFB7F7FF000FFFFFFFFFFFFF007FFFFFFFFFFFFF000000FF003FFFFF07FDFFFFFFFFFFBF0000000000000000 91BFFFFFFFFFFD3F007FFFFF003FFFFF000000007FFFFFFF0037FFFF0000000003FFFFFF003FFFFF0000000000000000 C0FFFFFFFFFFFFFF0000000000000000003FFFFFFEEFF06F1FFFFFFF00000000000000001FFFFFFF0000001FFFFFFEFF 003FFFFFFFFFFFFF0007FFFF003FFFFF000000000003FFFF0000000000000000FFFFFFFFFFFFFFFF00000000000001FF -0007FFFFFFFFFFFF0007FFFFFFFFFFFF000000FFFFFFFFFF000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000031BFFFFFFFFFF0000000000000000FFFF00801FFFFFFFFFFF00000000003F +0007FFFFFFFFFFFF0007FFFFFFFFFFFF000000FFFFFFFFFFFFFF823FFFFFFC00000000000000003F0000000000000000 +0000000000000000000000000000000000031BFFFFFFFFFF100000000000001CFFFF00801FFFFFFFFFFF00000000003F FFFF000000000003007FFFFF0000001FFFFFFFFFFFFFFFFF003E00000000003F01FFFFFFFFFFFFFF000001FFFFFF0004 0007FFFFFFFFFFFF0047FFFFFFFF00F0FFFFFFFFFFFFFFFF000000001400C01EC09FFFFFFFFBFFFF0000000000000003 -FFFF01FFBFFFBD7F000001FFFFFFFFFFE3EDFDFFFFF99FEF0000000FE081199F00000000000000000000000000000000 +FFFF01FFBFFFBD7F000001FFFFFFFFFFE3EDFDFFFFF99FEF0000000FE081199FFFBFFFFFFFFF4BFF00000000000A37A5 FFFFFFFFFFFFFFFF00000003800007BBFFFFFFFFFFFFFFFF00000000000000B300000000000000000000000000000000 7F3FFFFFFFFFFFFF000000003F0000007FFFFFFFFFFFFFFF0000000000000011013FFFFFFFFFFFFF0000000000000000 000007FFE7FFFFFF000000000000007F0000000000000000000000000000000001FFFFFFFFFFFFFF0000000000000000 FFFFFFFF0000000080000000FFFFFFFF99BFFFFFFF6FF27F0000000000000007FFFFFCFF000000000000001AFCFFFFFF -7FE7FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF000020FFFFFF01FFFFFFFFFFFFFF7F7FFFFFFFFFFDFFFFFC000000000001 -007FFEFFFFFCFFFF0000000000000000B47FFFFFFFFFFB7FFFFFFDBF000000CB00000000017B7FFF0000000000000000 -000000000000000000000000000000000000000000000000007FFFFF00000000C7FFFFFFFFFDFFFF0000000000000001 -00010000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF0000000000000000 -FFFFFFFFFFFFFFFF00007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000F -0000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFF00000001FFFFFFFFFFFF -0000FFFFFFFFFFFF000000000000007E00000000000000000000000000000000FFFFFFFFFFFFFFFF000000000000007F +7FE7FFFFFFFFFFFFFFFFFFFFFFFF0000FFFF000020FFFFFF01FFFFFFFFFFFFFF00000000000000000000000000000000 +000000000000000000000001FFFFFFFF7F7FFFFFFFFFFDFFFFFC000000000001007FFEFFFFFCFFFF0000000000000000 +B47FFFFFFFFFFB7FFFFFFDBF000000CB00000000017B7FFF000000000000000000000000000000000000000000000000 +0000000000000000007FFFFF00000000C7FFFFFFFFFDFFFF000000000000000100010000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000003FFFFFF0000000000000000FFFFFFFFFFFFFFFF00007FFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000F00000000000000000000000000000000 +00000000000000000000000000000000FFFFFFFFFFFF00000001FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000007E +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF000000000000007F0000000000000000000000000000000000007FFFFFFFFFFF0000000000000000 0000000000000000000000000000000001FFFFFFFFFFFFFFFFFF00007FFFFFFF7FFFFFFFFFFFFFFF00003FFFFFFF0000 -0000FFFFFFFFFFFFE0FFFFF80000000F000000000000FFFF00000000000000000000000000000000FFFFFFFFFFFFFFFF -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FF00000000FFFF80FF0003000B00000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00000000003FFFFF00000000000001FF000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000000000000000006FEF00000000000000040007FFFFFFFFFFFF00F000270000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF1FFF07FFFFFFFFFF0000000043FF01FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFF -EBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFF7FFFFFFF7FFFFFDFFDFFFFFFFDFFFFFFFFF7FFFFFFF7FFF -FFFFFDFFFFFFFDFF0000000000000FF7000007E07FFFFFFF000000000000000000000000000000000000000000000000 -FFFF07DBF9FFFF7F00003FFFFFFFFFFF000000000000800000000000000000003F801FFFFFFFFFFF0000000000004000 -000000000000000000000000000000000000000000000000000000000000000000003FFFFFFF000000000FFFFFFFFFFF -00000000000000000000000000000000000000000000000000000FFFFFFF000000000000000000000000000000000000 -00000000000000007FFF6F7F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000001F -FFFFFFFFFFFFFFFF000000000000088F000000000000000000000000000000000AF7FE96FFFFFFEF5EF7F796AA96EA84 -0FFFFBEE0FFFFBFF0000000000000000FFFF000000000000FFFF03FFFFFF03FF00000000000003FF0000000000000000 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFF000000003FFFFFFF00000000000000000000000000000000 -000000003FFFFFFF000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF07FF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000000000000000 -0000000000000000000000000000000000000000000000000000000000000000", +0000FFFFFFFFFFFFE0FFFFF80000000F000000000000FFFF0000000000000000000000000000000000001FFFFFFFFFFF +000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FF00000000FFFF80FF0003000B00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000003FFFFF +00000000000001FF00000000000000000000000000000000000000000000000000000000000000000000000000000000 +00000000000000006FEF00000000000000040007FFFFFFFFFFFF00F000270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF07FFFFFFFFFF +0000000043FF01FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF +7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFF3FFFFFFFFFF7FFFFFFF7FFFFFDFFDFFFFFFFDFFFFFFFFF7FFFFFFF7FFFFFFFFDFFFFFFFDFF0000000000000FF7 +000007E07FFFFFFF000000000000000000000000000000000000000000000000FFFF07DBF9FFFF7F00003FFFFFFFFFFF +000000000000800000000000000000003F801FFFFFFFFFFF000000000000400000000000000000000000000000000000 +0000000000000000000000000000000000003FFFFFFF000000000FFFFFFFFFFF00000000000000000000000000000000 +000000000000000000000FFFFFFF000000000000000000000000000000000000000000000000000000013FFFFFFF0000 +0000000000000000000000000000000000000000000000007FFF6F7F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF000000000000001FFFFFFFFFFFFFFFFF000000000000088F00000000000000000000000000000000 +0AF7FE96FFFFFFEF5EF7F796AA96EA840FFFFBEE0FFFFBFF0000000000000000FFFF000000000000FFFF03FFFFFF03FF +00000000000003FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF +03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFF000000003FFFFFFF +00000000000000000000000000000000000000003FFFFFFF000000000000000000000000000000000000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0000FFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000", ); -//3392 bytes +//3456 bytes enum markTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000088", x" -000000000000010000000000000001A00000000000004800", +000000000000010000000000000001A00000000000004A00", x" 04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -6047,20 +6169,20 @@ x" 000000000000000000000000000000000000000000000000000000000000000000200000000000000000002100000000 0024002300220000000000000000000000000025000000000028002700260000002C002B002A00290030002F002E002D 000000330032003100370036003500340000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000 -003A003900000000003B0000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000380000000000000000000000000000000000000000003900000000000000000000 +003B003A00000000003C0000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000003C000000000000000000000000000000000000000000000000003D000000000000 -0000003F003E000000000000000000000000004000000000000000000000000000000042003A00410000000000000043 -000000000045004400000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000046000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000003D000000000000000000000000000000000000000000000000003E000000000000 +00000040003F000000000000000000000000004100000000000000000000000000000043003B00420000000000450044 +000000000047004600000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000000048000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF00000000000000000000000000000000 0000000000000000000000000000000000000000000003F8000000000000000000000000000000000000000000000000 BFFFFFFFFFFE000000000000000000B60000000007FF000000010000FFFFF800000000000000000000003D9F9FC00000 FFFF00000002000000000000000007FF0001FFC000000000200FF8000000000000003EEFFBC00000000000000E000000 -00000000FF000000FFFFFFFBFFFFFC00DC0000000000000F0000000C00FEFFFFD00000000000000E4000000C0080399F +00000000FF800000FFFFFFFBFFFFFC00DC0000000000000F0000000C00FEFFFFD00000000000000E4000000C0080399F D00000000000000E0023000000023987D00000000000000EFC00000C00003BBFD00000000000000E0000000C00E0399F C0000000000000040000000000803DC7D00000000000001F0000000C00603DDFD00000000000000E0008000C00603DDF D80000000000000F0000000C00803DDF000000000000000E000C0000FF5F840007F20000000000000000000000007F80 @@ -6081,35 +6203,36 @@ C19D0000000000000060F80000000002000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000 0000000000000000000000000000000000000000000000000000000100000000000000000000000007C0000000000000 00000000000000000000000000000000870000000000F06E000000000000000000000000000000000000006000000000 -000000F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000180000000000E0000000000000000000000000000000000000000001FFC0000000000000003C0000000000000000 +000000F00000000000003E00000000000000000000000000000000000000000000000000000000000000000000000000 +0000180000000000F0000000000000000000000000000000000000000001FFC0000000000000003C0000000000000000 FF00000000000007801900000000007F07FF0000000000070000000000000004001FFF80000000070008000000000060 FFF8000000000007000000000000DE0140FFF0000000000000000000000000020000000000000000000007FF80000000 -D80000000000000F001F1FCC0080399F00000000000000000000000000000000FFE0000000000000000000004000007F +D80000000000000F001F1FCC0080399FFF00000000000000000000060005F7A5FFE0000000000000000000004000007F FFFF000000000000000000000000000F00000000000000000000000000000000FF3F8000000000000000000030000001 FFFF000000000000000000000000000100FFF80000000000000000000000000000000FFFE00000000000000000000000 0000000000000000000000000000000007FFF00000000000000000000000000000000000000000000000000000000000 79BF000000000000000000000000000D000000000000000000000011FCFE00007BF80000000007FE000000000FFE0080 0000000003FFFC000000000000000000FF7F8000000000000000000000000000007FFEFFFFFC00000000000000000000 B47E00000000000000000000000000BF0000000000FB7C00000000000000000000000000000000000000000000000000 -00000000000000000078000000000000C7F000000000000B000000000000000700000000000000000000000000000000 -000000000000000000000000003FFF810000000000000000000000000000000000000000000000000000000000000000 -0000000000000000001F000000000000007F000000000000000000000000000000000000000000000000000000000000 -0000000000000000FFFFFFFFFFFE800000000000000780FF000300100000000000000000000000000000000000000000 -00000000600000000000000000000000FFFF3FFFFFFFFFFF000000000000007F00000000000000000000000000000000 -0000000000000000F807E3E00000000000003C0000000FE700000000000000000000000000000000000000000000001C -00000000000000000000000000000000F87FFFFFFFFFFFFF00201FFFFFFFFFFF0000FFFEF80000100000000000000000 -000007DBF9FFFF7F00000000000000000000000000008000000000000000000000000000000000000000000000000000 -00004000000000000000F000000000000000000000000000000000000000000000000000000000000000F00000000000 -00000000000000000000000000000000000000000000000000000000007F0000000000000000000000000000000007F0 -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF -0000000000000000000000000000000000000000000000000000000000000000", +00000000000000000078000000000000C7F000000000000B000000000400000700000000000000000000000000000000 +000000000000000000000000003FFF81000000000000000000000000000000000000FFFFC00000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000001F000000000000 +007F0000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFE8000 +00000000000780FF00030010000000000000000000000000000000000000000000000000600000000000000000000000 +FFFF3FFFFFFFFFFF000000000000007F000000000000000000000000000000000000000000000000F807E3E000000000 +00003C0000000FE700000000000000000000000000000000000000000000001C00000000000000000000000000000000 +F87FFFFFFFFFFFFF00201FFFFFFFFFFF0000FFFEF80000100000000000000000000007DBF9FFFF7F0000000000000000 +000000000000800000000000000000000000000000000000000000000000000000004000000000000000F00000000000 +0000000000000000000000000000000000000000000000000000F0000000000000000000000000000000000000000000 +00000000000000000000C0000000000000000000000000000000000000000000000000000000000000000000007F0000 +000000000000000000000000000007F000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000", ); -//2848 bytes +//2896 bytes enum numberTrieEntries = TrieEntry!(bool, 8, 6, 7)(x" 0000000000000000000000000000002000000000000000D0", x" -000000000000010000000000000002C00000000000002500", +000000000000010000000000000002C00000000000002680", x" 040203020202010009080202070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -6130,18 +6253,18 @@ x" 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 0002000200020002000200020002000200020002000200020002000E000200020027002600020002002A002900280002 -00020002002300020002000200020002002E002D002C002B003200310030002F00020000003300020036003500020034 -0039003800040037000200020004000200020002000C000C0002003A0005000C0002000C003B00020002000200020002 -0023000C0002003C003D000C0002000200020002000200020002000200020002000200020002003E0002000200020002 +00020002002300020002000200020002002E002D002C002B003200310030002F00020034003300020037003600020035 +003A003900040038000200020004000200020002000C000C0002003C003B000C0002000C003D00020004000200020002 +0023000C0002003E003F000C000200020002000200020002000200020002000200020002000200400002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 -000200020002000200020002000200020002000200020002000200020002000200020002000200020002003F00050003 -000200020002000200020002004000020002000200020002000200020002000200020002000200020002000200020002 +000200000002000200020002000200020002000200020002000200020002000200020002000200020002004100050003 +000200040002000200020002004200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 -000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 -000200020002000200020042004100020002000200020002004300020002000200020002000200020002000200020002 -000200020002000200020002000200020002000500020002000200020004000200020002000400020002000200020002 -0002000C0044000200020002000200020002004700460045000200020002000200020048000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000400020002000200020002 +000200020002000200020044004300020002000200020002004500020002000200020002000200020002000200020002 +000200020002000200020002000200020002000500020002000200020004000200460002000400020002000200020002 +0002000C0047000200020002000200020002004A0049004800020002000200020002004B000200020002000200020002 000200020002000200020002000200020002000200020002000400020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 @@ -6163,20 +6286,21 @@ FFFE0000000003FF0000000000000000000003FF000000000000000000000000003F000000000000 0000000000000000FE000000FF0000000000FF8000000000F800000000000000000000000FC000000000000000000000 3000000000000000FFFFFFFFFFFCFFFF000000000000000060000000000001FF00000000E00000000000F80000000000 0000000000000000FF000000FF0000000000FE000000000000000000000000000000000000000000FC00000000000000 -00000000000000007FFFFFFF000000000000007FE000000000000000001E000000000000000000000000000000000FE0 -00000000000000000000FFFFFFFC0000FFC000000000000000000000000000000000000000000000001FFFFE03FF0000 -0FFF000000000000000000000000000000000000000000000007FFFF00000000000000000000000000001FFFFFFF0000 -000000000000000000000000001FFFFFFFFFFFFFFFFFFFFF00007FFFFFFFFFFF000000000000000000000003FBFF0000 -00000000007FFFFF00000000000000000000000000000000000FFFFF000FFFFF000000000000000001FFFFFF00000000 -0000000000000000FFFFFFFFFFFFC0000000000000000000000000000000FF800000000000000000FFFE000000000000 +03FF00000000000000000000000003FF00000000000000007FFFFFFF000000000000007FE000000000000000001E0000 +00000000000000000000000000000FE000000000000000000000FFFFFFFC0000FFC00000000000000000000000000000 +0000000000000000001FFFFE03FF000000000000000000000000000FFFFF03FF0FFF0000000000000000000000000000 +00000000000000000007FFFF00000000000000000000000000001FFFFFFF0000000000000000000000000000001FFFFF +FFFFFFFFFFFFFFFF00007FFFFFFFFFFF000000000000000000000003FBFF000000000000007FFFFF0000000000000000 +0000000000000000000FFFFF000FFFFF000000000000000001FFFFFF000000000000000000000000FFFFFFFFFFFFC000 +000000000000000007FE0000000000000000000000000000000000000000FF800000000000000000FFFE000000000000 001EEFFFFFFFFFFF00000000000000003FFFBFFFFFFFFFFE00000000000000000000000000001FFF0000000000000000 000000000000000003FF000000000000", ); -//3360 bytes +//3488 bytes enum punctuationTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 000000000000000000000000000000200000000000000080", x" -000000000000010000000000000001800000000000004900", +000000000000010000000000000001800000000000004D00", x" 04020302020201000A090802070206050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -6190,14 +6314,14 @@ x" 000100010001000100010001000100010001000100010001000100200001001F00240023002200210001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010027002600250001 -002900010028000100010001002A0001002E002D002C002B0030002F0001000100010033003200310037003600350034 -003B003A00390038003E003D0001003C0001000100010001000100010001003F00010001000100010040000100010001 +002900010028000100010001002A0001002E002D002C002B00310030002F000100350034003300320039003800370036 +003D003C003B003A0040003F0001003E0001000100010001000100010001004100010001000100010042000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -004200410001000100440043000100010001000100010001000100010001000100010001000100010001000100010001 +004400430001000100470046004500010001000100010001000100010001000100010001000100010001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100450001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001004600010001000100010001000100010001000100010001000100010001 -000100010047000100010001000100010001000100010001000100010001000100010001000100010001000100010001 +000100010001000100010001000100480001000100010001000100010001000100010001000100010001000100010001 +0001000100010001000100010001000100010049000100010001000100010001000100010001000100010001004A0001 +00010001004B000100010001000100010001000100010001000100010001000100010001000100010001000100010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 000100010001000100010001000100018C00F7EE0000000028000000B800000188C00882000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000 @@ -6213,7 +6337,7 @@ x" 000000000000000000004000000000000000000018000000000038000000000000600000000000000000000000000000 0000000000000000000000000770000000000000000007FF000000000000000000000000000000000000000000000000 000000000000000000000000000000300000000000000000000000000000000000000000C00000000000000000000000 -00003F7F000000000000000000000000000000000000000060000001FC0000000000000000000000F000000000000000 +00003F7F0000000000000000000000000000000000000000E0000001FC00C0000000000000000000F000000000000000 F800000000000000C000000000000000000000000000000000000000000800FFFFFF00FFFFFF0000600000007FFBFFEF 000000000000600000000000000000000000060000000F00000000000000000000000000000000000000000000000000 0000000000000000003FFF000000000000000000000000000000FFC00000006000000000000000000000000000000000 @@ -6230,109 +6354,113 @@ C000000000000000000000000000000000000000000000000000000000000000FFFF000003FF0000 000000008000000000000000000100000000000000000000000080000000000000000000000000000000000000000000 000000000000000000000000008000000000000000000000000000000000000080000000800000000000000000000000 0000000000000000000000000000000000000000000000008000000001FF00000000000000000000007F000000000000 -FE000000000000000000000000000000000000001E000000000000000000000000000000000000000000000000000000 -0000200000000000000000000000000000000000000000000000000003E0000000000000000003C00000000000000000 -00000000000000000000000000003F80D80000000000000000000000000000030000000000000000003000000000000F -000000000000000000000000E80021E03F00000000000000000000000000000000000200000000000000000000000000 -0000000000000000000000002C00F8000000000000000000000000000000004000000000000000000000000000000000 -00000000000000000000000000FFFFFE000000000000000000001FFF0000000E02000000000000000000000000000000 -700000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000007000000000000000000000000400000000 -8000000000000000000000000000007F00000007DC000000000000000000000000000000000003FF0000000000000000 -000000000000000000000000000000000000000000000000000300000000003E00000000000000000000000000000000 -00000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000FFF8 -000000000000000080000000000000000000000000000000001F00000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000600000000000000000000000000000000C00000000000 -000000000000000000200000000000000F80000000000000000000000000001000000000000000000000000000000000 +FE000000000000000000000000000000000000001E000000000000000000000000000000000000000000400000000000 +000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000 +00000000000000000000000003E0000000000000000003C0000000000000000000000000000000000000000000003F80 +D80000000000000000000000000000030000000000000000003000000000000F000000000000000000000000E80021E0 +3F0000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000 +00000000000000000000000001B000000000000000000000000000002C00F80000000000000000000000000000000040 +0000000000000000000000000000000000000000000000000000000000FFFFFE000000000000000000001FFF0000000E +020000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000 +080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070 +000000000000000000000004000000008000000000000000000000000000007F00000007DC0000000000000000000000 +00000000000003FF0000000000000000000000000000000000000002000000000000000000000000000300000000003E +000000000000000000000000000000000000000000000000000000000000000000000000000000000180000000000000 +0000000000000000000000000000FFF8000000000000000080000000000000000000000000000000001F000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000 +00000000000000000000C00000000000000000000000000000200000000000000F800000000000000000000000000010 +0000000000000000000000000000000000000000000000000000E0000000000000000000000000000000000000000000 000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000 000000000000000000000004000000000000000000000000000000000000000000000000800000000000000000000000 -000000000000000000000000000000000000000000000F800000000000000000000000000000000000000000C0000000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", +000000000000000000000000000000000000000000000F80000000000000000000000000000000000000000000000000 +00000000000000008000000000000000000000000000000000000000C000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000", ); -//3424 bytes -enum symbolTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" -000000000000000000000000000000200000000000000080", +//3472 bytes +enum symbolTrieEntries = TrieEntry!(bool, 8, 6, 7)(x" +0000000000000000000000000000002000000000000000E0", x" -000000000000010000000000000001800000000000004B00", +000000000000010000000000000003000000000000003480", x" 05030403030201000A090803070303060303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303 030303030303030303030303030303030303030303030303030303030303030303030303030303030000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000000000000000000000030002000100000007000600050004000B000A00090008000F000E000D000C -0011000100010010001300120001000100150001001400010016000100010001001A001900180017001C00190019001B -001E0019001D0019002100200001001F0019002400230022000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010025000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010027000100010026 -002A00290001002800010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -002B000100010001002E002D002C000100010001002F0001000100010001000100010031000100300001000100010001 -0001000100010001000E0001000100010001000100010001003200010001000100010001000100010001000100010001 -003300010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -000100010001000100010001000100340001000100010001000100010001000100010001000100010035000100010001 -0039003800370036003B003A000100010001003C0019001900010001000100010001003E003D00010001000100010001 -0001000100010001000100410040003F0019004400430042004600450019001900490048001900470001000100010001 -000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -00010001000100010001000100010001700008100000000050000001400000000113D37C000000000080000000800000 -000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -0000000000000000FFFFAFE0FFFC003C0000000000000000002000000000000000000000000000300040000000000000 -000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000 -000000000000E0000000000000000000000000000000C9C0000000000000000000000000000000006000020040000000 -000000000000000000000000000000000000000000000000C04000000000000000000000000000000000000000000000 -000000000000010000000000000000000000000000000000000000000000000000000000000000000C0C000000000000 -000000000000000000000000000000000000000000000000000200000000000000000000000000000001000000000000 -000000000000000007F80000000000000000000000000000800000000000000000000000000000000000000000000000 -000000000000000002000000000080000000000000000000000000000000000080000000000000000000000000000000 -0000000000000000000000000000000001500000FCE8000E0000000000000000C0000000000000000000000001E0DFBF -0000000000000000000000000000000000000000C0000000000000000000000000000000000000000000000000000000 -0000000003FF000000000000000000000000000000000000000020000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000001 -0000000000000000FFFFFFFFC000000000000000000000001FF007FE0000000000000000000000000000000000000000 -00000000000000000000000000000000A0000000000000006000E000E000E00300000000000000001C00000000040010 -FFFFFFFF00001C0000000000000000010C0042AFC1D0037B000000000000BC1FFFFFFFFFFFFF0C00FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFF0FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000007FFFFFFFFF00000000000007FFFFFFFFFFF0000000000003FFFFFFFFFF -FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFF00000FFFF003FFFFFFF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFE000007CFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF -000000000000000000000000000000000000000000000000000007E00000000000000000000000000000000000030000 -FFFFFFFFFBFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000003FFFFF -C0C00001000C001000000000000000000000000018000000000000000000000000000000000000000000000000000000 -00000000FFC300000000800FFFFFFFFFFFFFFC007FFFFFFFFFFFFFFF000100FF0001FFFFFFFFFC00FFFFFFFFFFFFFFFF -000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000000000000 -FFFFFFFFFFFF0000000000000000007F00000003007FFFFF000000000000000000000000000006000000000000000000 -03C00F000000000000000000000000000000000000000000000000000000000000000000000000000380000000000000 -00000000000000000000000000000000000000000000000000000C000800000000000000000000000000000000000000 -00000200000000000000000000000000FFFC00000000000000000000000000070000000000000000000000000000FFFF -0000000000000000F0000000000080000000000000000000000002740000000000000000000000000000000000000000 -40000000700008100000000050000001000000000000000030007F7F00000000FF80000000000000FE00000000000000 -000000011FFF73FF1FFFFFFFFFFF00000000000000000000018000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000 -00000000000000000003FFFFFFE00000F000000000000000000000000000002000000000000000000000000000000000 -00000000000000000000000000000000000000001000000000000000000000000000000000000000FFFFFFFFFFFF0000 -FFFFFFFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFF -FFFFFE7FFFFFFFFF00001C1FFFFFFFFFFFFFC3FFFFFFF018000007FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000023 -00000000000000000000000000000000FFFFFFFFFFFFFFFF00000000007FFFFF00000000000000000000000000000000 -000000000000000000000000000000000000000000000000080000000800000200200000002000000000800000008000 -000002000000020000000000000000080780000000000000FFDFE00000000000000000000000006F0000000000000000 -000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000 -000000000000000080000000000000000000000000000000000000000000000000011000000000000000000000000000 -000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -00000000000000000003000000000000FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFF000FFFFF003FFFFFFFFEFFFE -FFFFFFFFFFFFE000FFFFFFFFFFFFFFFF00003FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFF00070000003F000301FF -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF1FFFF0FFFFFF -FFFFFFFFFFFFFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFFFFF00010FFF03FFFFFFFFFFFFFFFFFF0FFFFFFFFFFF03FF00FF -00033FFFFFFF00FF0000000000000000FFFFFFFFFFFFFFFF1FFF3FFF000FFFFFBFFFFFFFFFFF01FF01FF01FF0FFFC03F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFF00000000000007FF00000000000000000000000000000000 +00000000000000000000000000000000000200020001000000050004000300020007000200060002000A000200090008 +000C0002000B0002000F000E000D00020002001100020010001400130002001200020002001500020016000200020002 +00020002000200020018000200020017001A0019000200020002001B000200020002000200020002001C000200020002 +0020001F001E001D00210022002100210021002100240023002600250021002100270021002100210029002800210021 +00020002002A0002002D0021002C002B00300002002F002E002100210032003100020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200330002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200340002003600350002000200020002000200370002003900020038 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +00020002000200020002000200020002000200020002000200020002000200020002000200020002003B003A00020002 +003D003C000200020040003F0002003E0042004100020002000200020002000200020002000200020002000200020002 +000200020002004300020002004400020045000200020002000200020002000200020002000200020002000200020002 +000200020002000200020012000200020002000200020002000200020002000200020002000200020046000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002004700020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020048000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020021002100490021004C004B004A0021004F004E004D00210002005100020050 +000200020002000200540053005200020021002100210021000200020056005500020002000200020002000200020002 +000200570002000200020002001000020002000200020002000200020002000200020002000200020002000200020002 +000200590058000200020002005A0002005E005D005C005B002100210002005F00210021002100210062006100600021 +002100210064006300670021006600650002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +000200020002000200020002000200020002000200020002000200020002000200020002000200020002000200020002 +00020002000200020002000200020002700008100000000050000001400000000113D37C000000000080000000800000 +000000000000000000000000000000000000000000000000FFFFAFE0FFFC003C00000000000000000020000000000000 +0000000000000030004000000000000000000000000000040000000000000000000000000000E0000000000000000000 +000000000000C9C00000000000000000000000000000000060000200400000000000000000000000C040000000000000 +0000000000000100000000000000000000000000000000000C0C00000000000000000000000000000002000000000000 +00000000000000000001000000000000000000000000000007F800000000000000000000000000008000000000000000 +000000000000000002000000000080008000000000000000000000000000000001500000FCE8000E0000000000000000 +C0000000000000000000000001E0DFBF00000000C000000000000000000000000000000003FF00000000000000000000 +000000000000000000002000000000000000000000000000000000000800000000000000000000000000000000000001 +0000000000000000FFFFFFFFC000000000000000000000001FF007FE00000000A0000000000000006000E000E000E003 +00000000000000001C00000000040010FFFFFFFF00001C0000000000000000010C0042AFC1D0037B000000000000BC1F +FFFFFFFFFFFF0C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9FFFFFFF0FFFFFFFFFFFFFFFFFF +000003FFFFFFFFFF00000000000007FFFFFFFFFFF0000000000003FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFF +FFFFFFFFFFF00000FFFF003FFFFFFF9FFFFFFFFFFE000007CFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFF +FFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF0000000000000000000007E00000000000000000000000000000000000030000 +FFFFFFFFFBFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000003FFFFFC0C00001000C00100000000000000000 +0000000018000000000000000000000000000000FFC300000000803FFFFFFFFFFFFFFC007FFFFFFFFFFFFFFF000100FF +0001FFFFFFFFFC00FFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000007F +00000003007FFFFF00000000000000000000000000000600000000000000000003C00F00000000000000000000000000 +00000000000000000380000000000000000000000000000000000C000800000000000200000000000000000000000000 +FFFC00000000000000000000000000070000000000000000000000000000FFFF0000000000000000F000000000008000 +0000000000000000000002740000000040000000700008100000000050000001000000000000000030007F7F00000000 +FF80000000000000FE00000000000000000000011FFF73FF1FFFFFFFFFFF000000000000000000000180000000000000 +00000000000000000000000000000100000000000000C000000000000000000000000000000000000003FFFFFFE00000 +F000000000000000000000000000002000000000100000000000000000000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFF +000FFFFFFFFFFFFF00000000000000000000000000000000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFF000000000000000F +FFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFF00001C1FFFFFFFFFFFFFC3FFFFFFF018000007FFFFFFFFFF +FFFFFFFFFFFFFFFF0000000000000023FFFFFFFFFFFFFFFF00000000007FFFFF00000000000000000800000008000002 +00200000002000000000800000008000000002000000020000000000000000080780000000000000FFDFE00000000000 +000000000000006F00000000000000000000000000000000000000000000800000011000000000000000000000000000 +0000400000000000000000000000000000000000000000000003000000000000FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFE7FFF000FFFFF003FFFFFFFFEFFFEFFFFFFFFFFFFE000FFFFFFFFFFFFFFFF00003FFFFFFFFFFFFFFFFFC000000000 +0FFFFFFFFFFF00070000003F000301FFFFFFFFFFFFFFFFFF1FFF1FFFF0FFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00010FFF03FFFFFFFFFFFFFFFFFF0FFFFFFFFFFF03FF00FF0FFF3FFFFFFF00FF0000000000000003 +FFFFFFFFFFFFFFFF1FFF3FFF000FFFFFFFFFFFFFFFFF83FF01FF03FF9FFFC07FFFFFFFFFFFF7FFFF0000FFFFFFFFFFFF 00000000000000000000000000000000", ); -//6080 bytes +//6272 bytes enum graphicalTrieEntries = TrieEntry!(bool, 8, 5, 8)(x" 0000000000000000000000000000002000000000000000D0", x" -000000000000010000000000000002C00000000000008A00", +000000000000010000000000000002C00000000000009000", x" 05040302020201000D0C0B0A09080706100F0E0202020202131313131313121113131313131313131313131313131313 131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313 @@ -6349,31 +6477,31 @@ x" 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 002E002D0001002C00310030002F000100350034003300320038000100370036003C003B003A00390040003F003E003D 00440043004200410048004700460045004C004B004A00490050004F004E004D0051000100010001002C002C00530052 -002C002C002C002C0054002C002C002C0001000100010001002C002C002C0055002C002C002C002C002C002C002C002C -002C002C002C002C002C005600010001002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C -002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C0058005700010001005A0059002C002C -00010001000100010001000100010001000100010001000100010001000100010001000100010001005B000100010001 -0001000100010001002C002C005D005C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C -002C002C002C002C002C002C002C002C002C002C002C002C005E002C002C002C002C0060005F0001002C002C002C002C -002C002C002C002C002C002C002C0061002C002C002C002C002C002C002C002C002C002C002C002C0062002C002C002C -0066006500640063006A006900680067002C006B00010001006C002C002C002C002C006F006E006D0071002C002C0070 -002C002C00730072002C0076007500740001007900780077007B007A00010001007E007D0001007C002C002C002C002C -00010001000100010001007F000100010001000100010001000100010001000100010001000100010080000100010001 -000100010001008100010001000100010001000100010001000100010001000100010001000100010001008200010001 +002C002C002C002C0054002C002C002C0001000100010001000100010001005500010001000100010001000100010001 +0056000100010001002C005700010001002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C0058002C002C002C002C002C005A005900010001005D005C005B002C +00010001000100010001000100010001000100010001000100010001000100010001000100010001005E000100010001 +0001000100010001002C002C0060005F002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C002C002C002C002C002C002C002C002C002C002C0061002C002C002C002C006300620001002C002C002C002C +002C002C002C002C002C002C002C0064002C002C002C002C002C002C002C002C002C002C002C002C0067006600010065 +006B006A00690068006F006E006D006C002C0070000100010071002C002C002C002C0074007300720077002C00760075 +002C002C00790078002C007C007B007A0001007F007E007D00810080000100010084008300010082002C002C002C002C +000100010001000100010085000100010001000100010001000100010001000100010001000100010086000100010001 +000100010001008700010001000100010001000100010001000100010001000100010001000100010001008800010001 000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001 -0083000100010001002C008400010001002C002C002C002C002C002C002C002C002C008500010001002C002C002C002C -000100010001000100010001000100010001000100010001000100010001000100860001000100010001000100010001 -000100010001000100010001000100010087000100010001002C002C002C002C002C002C002C002C002C002C002C002C +0089000100010001002C008A00010001002C002C002C002C002C002C002C002C002C008B00010001002C002C002C002C +0001000100010001000100010001000100010001000100010001000100010001008C0001000100010001000100010001 +00010001000100010001000100010001008D000100010001002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C -002C002C0088002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C +002C002C008E002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C 002C002C002C002C002C002C002C002C002C002C002C002C002C002C002C002CFFFFFFFF000000007FFFFFFFFFFFFFFF FFFFDFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFBFFFFD7F0FFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFE7FFFFF FFFFFFFFFFFEE7FF001F87FFFFFF00FFFFFFFFFFEFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFF FFFFFFFFFFFF3FFFFFFFFFFFFFFFE7FF0003FFFFFFFFFFFFE7FFFFFFFFFFFFFF7FFF3FFFFFFFFFFFFFFF07FF4FFFFFFF -FFFFFFFFFF007FFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C5FDFFFFF99FEF7FFFFFCFB080799F +FFFFFFFFFF807FFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C5FDFFFFF99FEF7FFFFFCFB080799F D36DFDFFFFF987EE007FFFC05E023987F3EDFDFFFFFBBFEEFE03FFCF00013BBFF3EDFDFFFFF99FEE00FFFFCFB0E0399F C3FFC718D63DC7EC07FFFFC000813DC7F3FFFDFFFFFDDFFFFF80FFCF27603DDFF3EFFDFFFFFDDFFF000EFFCF60603DDF FFFFFFFFFFFDDFFFFFFFFFCFFFF0FDDF2FFBFFFFFC7FFFEE001CFFC0FF5F847F87FFFFFFFFFFFFFE000000000FFFFFFF @@ -6383,18 +6511,18 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20BFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFFFFFF01FFFFFFFFFFFFFF007FFFFF803FFFFF000DDFFF000FFFFF FFFFFFFFFFFFFFFF03FF03FF3FFFFFFFFFFFFFFF03FFBFFF01FFFFFFFFFFFFFFFFFF07FFFFFFFFFF003FFFFFFFFFFFFF 0FFF0FFF7FFFFFFF001F3FFFFFFFFFF1FFFF0FFFFFFFFFFFFFFFFFFFC7FF03FFFFFFFFFFCFFFFFFF9FFFFFFF7FFFFFFF -FFFF3FFF03FF03FF0000000000007FFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFF -F8FFFFFFFFFFFFFFFFFFFFFFFFFFE3FFE7FFFFFFFFFF01FF07FFFFFFFFFF00FFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F +FFFF3FFF03FF03FF0000000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFF +F8FFFFFFFFFFFFFFFFFFFFFFFFFFE3FFE7FFFFFFFFFF07FF07FFFFFFFFFF00FFFFFFFFFF3F3FFFFF3FFFFFFFAAFF3F3F FFDFFFFFFFFFFFFF7FDCFFFFEFCFFFDFFFFF80FFFFFF07FFFFF30000FFFFFFFFFFFFFFFF1FFF7FFF0001FFFFFFFF0001 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF0000007FFFFFFFFFFFFFFFFF000007FF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF000003FFFFFFFFFFFFFFFFFF000007FF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFBFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFF20BFFFFFFFFF800180FFFFFFFFFF 7F7F7F7F007FFFFFFFFFFFFF7F7F7F7FFFFFFFFFFFFFFFFF000000003FFFFFFFFFFFFFFFFBFFFFFF000FFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE -FFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF800FFFFFFFFF +FFFFFFFFFE7FFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF803FFFFFFFFF FFFFFFFF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFF1FFFFFFFFFFFFFFF007F00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC000003EB07FF03FF1FFFFFFFFFFF00FFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC00001FEB3FFF03FF1FFFFFFFFFFF00FFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF03FFC03FFFFFFFFFFFFFFFFF1FFFFFFF800FFFFFFFFFFFFFFFFFFFFF7FFFFFFFC3FFBFFF 007FFFFFFFFFFFFFFFFFFFFFF3FF3FFFFFFFFFFFFFFFFFFF007FFFFFF8000007FFFF7F7F007E7E7EFFFF0FFFFFFFFFFF FFFFFFFFFFFFFFFF03FF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000FFFFFFFFF0FFFFFFFFFFFF87F @@ -6405,45 +6533,49 @@ FFFFFFFFFFFFFFFF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF7FFFFFFFFFFFFFFF B7FFFF7FFFFFEFFF000000003FFF3FFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFF8FFFFFFFFFFF87FFFFFFFFFFFFFFFF 000000011FFF7FFF3FFFFFFFFFFF000000000000000000000000000000000000FFFFFFFF1FFFFFFF0FFFFFFF0001FFFF FFFFE00FFFFFFFFF07FFFFFFFFFF07FFFFFFFFFFBFFFFFFF00000000003FFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF03FF3FFFFFFF0FFFFFFFFF0FFFFFFFFF00FFFFFFFFFFF7FF800FFFFFFFFF1BFBFFFBFFB7F7FF0000000000000000 +FFFF03FF3FFFFFFF0FFFFFFFFF0FFFFFFFFF00FFFFFFFFFFF7FF800FFFFFFFFF1BFBFFFBFFB7F7FF000FFFFFFFFFFFFF 007FFFFFFFFFFFFF000000FF003FFFFF07FDFFFFFFFFFFBF000000000000000091BFFFFFFFFFFD3FFFFFFFFFFFBFFFFF 0000FF807FFFFFFFF837FFFF0000000083FFFFFF8FFFFFFF0000000000000000F0FFFFFFFFFFFFFFFFFFFFFFFFFCFFFF 873FFFFFFEEFF06FFFFFFFFF01FF01FF00000000FFFFFFFF007FF87FFFFFFFFFFE3FFFFFFFFFFFFFFF07FFFFFF3FFFFF 0000FE001E03FFFF0000000000000000FFFFFFFFFFFFFFFF00000000000001FF0007FFFFFFFFFFFFFC07FFFFFFFFFFFF -03FF00FFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000007FFFFFFF00000000 -00033BFFFFFFFFFFE000000000000000FFFF00FFFFFFFFFFFFFF000003FFFFFFFFFF0000000003FF007FFFFF00000FFF +03FF00FFFFFFFFFFFFFFFE3FFFFFFFFF000000000000C03F000000000000000000000000000000007FFFFFFF00000000 +00033BFFFFFFFFFFF00000000000001CFFFF00FFFFFFFFFFFFFF000003FFFFFFFFFF0000000003FF007FFFFF00000FFF FFFFFFFFFFFFFFFF803FFFFFFFFC3FFFDFFFFFFFFFFFFFFF03FF01FFFFFF0007FFDFFFFFFFFFFFFF007FFFFFFFFF00FF FFFFFFFFFFFFFFFF001FFFFEFFFFFFFFFFFFFFFFFFFBFFFF0000000000000003FFFF03FFBFFFBD7F03FF07FFFFFFFFFF -FBEDFDFFFFF99FEF001F1FCFE081399F00000000000000000000000000000000FFFFFFFFFFFFFFFF00000003EFFFFFFF +FBEDFDFFFFF99FEF001F1FCFE081399FFFBFFFFFFFFF4BFF0000000601BFF7A5FFFFFFFFFFFFFFFF00000003EFFFFFFF FFFFFFFFFFFFFFFF0000000003FF00FF00000000000000000000000000000000FF3FFFFFFFFFFFFF000000003FFFFFFF -FFFFFFFFFFFFFFFF00001FFF03FF001F03FFFFFFFFFFFFFF00000000000003FFFFFF0FFFE7FFFFFF000000000000007F +FFFFFFFFFFFFFFFF00001FFF03FF001F03FFFFFFFFFFFFFF0000000FFFFF03FFFFFF0FFFE7FFFFFF000000000000007F 000000000000000000000000000000000FFFFFFFFFFFFFFF0000000000000000FFFFFFFF000000008007FFFFFFFFFFFF F9BFFFFFFF6FF27F0000000003FF007FFFFFFCFF000000000000001FFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF -FFFF0007FFFFFFFF01FFFFFFFFFFFFFF00000000000003FF000000000000000000000000000000000000000000000000 +FFFF0007FFFFFFFF01FFFFFFFFFFFFFF00000000000003FF0000000000000000000000000000000003FF0003FFFFFFFF FF7FFFFFFFFFFDFFFFFF1FFFFFFF003F007FFEFFFFFCFFFF0000000000000000B47FFFFFFFFFFB7FFFFFFDBF03FF00FF 000003FF01FB7FFF000000000000000000000000000000000000000000000000000000000000000001FFFFFF00000000 -C7FFFFFFFFFDFFFF0000000003FFFFFF00010000000000008003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +C7FFFFFFFFFDFFFF0000000007FFFFFF00010000000000008003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000000003FFFFFF0000000000000000FFFFFFFFFFFFFFFF001F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF000000000000000F0000000000000000000000000000000000000000000000000000000000000000 -FFFFFFFFFFFF00000007FFFFFFFFFFFF0000FFFFFFFFFFFF00000000003FFFFF00000000000000000000000000000000 -FFFFFFFFFFFFFFFF000000000000007F0000000000000000000000000000000001FFFFFFFFFFFFFFFFFFC3FF7FFFFFFF -7FFFFFFFFFFFFFFF003F3FFFFFFF03FFFFFFFFFFFFFFFFFFE0FFFFFBFBFF003F000000000000FFFF0000000000000000 +FFFFFFFFFFFF00000007FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000007F +0000000000000000000000000000000003FFFFFFFFFFFFFF000000000000000000000000000000000000000000000000 +01FFFFFFFFFFFFFFFFFFC3FF7FFFFFFF7FFFFFFFFFFFFFFF003F3FFFFFFF03FFFFFFFFFFFFFFFFFFE0FFFFFBFBFF003F +000000000000FFFF0000000000000000000000000000000003FFFFFFFFFFFFFF00000000000000000000000000000000 0000000000000000FFFFFFFFFFFFFFFF0000000007FFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF87FF 00000000FFFF80FF0003001F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000003FFFFF00000000000001FF0000000000000000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80000000003FFFFF00000000000001FF0000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000006FEF000000000000 00040007FFFFFFFFFFFF00F000270000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF07FFFFFFFFFF00000000F3FF01FF0000000000000000 -FFFF3FFFFFFFFFFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFF000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFFF807FFFFFFFFFFFFFFFFFFFFFFFFFFFF000007FFFFFFFFFF -FFFFFFFFFFFFFFFF000000000000003F0000000000000000000FFFFF000FFFFFFFFFFFFFFFFFFFFF01FFFFFF007FFFFF -00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFFEBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF -7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFEF8000FFF0000000000000000000007E07FFFFFFF0000000000000000 -00000000000000000000000000000000FFFF07DBF9FFFF7F00003FFFFFFFFFFF00000000000080000000000000000000 -3FFF1FFFFFFFFFFF000000000000C3FF0000000000000000000000000000000000000000000000000000000000000000 -00007FFFFFFF000083FFFFFFFFFFFFFF00000000000000000000000000000000000000000000000003FFFFFFFFFF0000 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +000FFFFFFFFFFFFF0000000000000000FFFF3FFFFFFFFFFFFFFFFFFFFFFF007FFFFFFFFFFFFFFFFF000000000000000F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFFFE7FFFFFFFFFF807FFFFFFFFFFFF +FFFFFFFFFFFFFFFF000007FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000003F0000000000000000000FFFFF000FFFFF +FFFFFFFFFFFFFFFF01FFFFFF007FFFFF00000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFDFFFFF +EBFFDE64DFFFFFFFFFFFFFFFFFFFFFEF7BFFFFFFDFDFE7BFFFFFFFFFFFFDFC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFEF8000FFF0000000000000000 +000007E07FFFFFFF000000000000000000000000000000000000000000000000FFFF07DBF9FFFF7F00003FFFFFFFFFFF +000000000000800000000000000000003FFF1FFFFFFFFFFF000000000000C3FF00000000000000000000000000000000 +0000000000000000000000000000000000007FFFFFFF000083FFFFFFFFFFFFFF00000000000000000000000000000000 +000000000000000003FFFFFFFFFF000000000000000000000000000000000000000000000000000087FFFFFFFFFF0000 0000000000000000000000000000000000000000000000007FFF6F7F00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF00000000007FFF9FFFFFFFFFFFFFFFFF00000000C3FF0FFF00000000000000000000000000000000 0000000000000000FFFE000000000000001FFFFFFFFFFFFF00000000000000003FFFFFFFFFFFFFFE0000000000000000 @@ -6451,9 +6583,9 @@ FFFFFFFFFFFFFFFF00000000007FFF9FFFFFFFFFFFFFFFFF00000000C3FF0FFF0000000000000000 FFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7FFF000FFFFF003FFFFFFFFEFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 00003FFFFFFFFFFFFFFFFFC0000000000FFFFFFFFFFF00070000003F000301FF00000000000000000000000000000000 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1FFF1FFFF0FFFFFFFFFFFFFFFFFFFFFFF87FFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00010FFF03FFFFFFFFFFFFFFFFFF0FFFFFFFFFFF03FF00FF00033FFFFFFF00FF0000000000000000 -FFFFFFFFFFFFFFFF1FFF3FFF000FFFFFBFFFFFFFFFFF01FF01FF01FF0FFFC03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFF7FFFF03FF0000000007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF +FFFFFFFFFFFFFFFF00010FFF03FFFFFFFFFFFFFFFFFF0FFFFFFFFFFF03FF00FF0FFF3FFFFFFF00FF0000000000000003 +FFFFFFFFFFFFFFFF1FFF3FFF000FFFFFFFFFFFFFFFFF83FF01FF03FF9FFFC07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFF7FFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF 03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0003FFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFF000000003FFFFFFF @@ -6462,25 +6594,25 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0000FFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF 0000000000000000000000000000000000000000000000000000000000000000", ); -//4824 bytes +//4944 bytes enum nonCharacterTrieEntries = TrieEntry!(bool, 7, 4, 4, 6)(x" -00000000000000000000000000000010000000000000004C000000000000014C", +00000000000000000000000000000010000000000000004C0000000000000154", x" -000000000000008000000000000000F0000000000000040000000000000043C0", +000000000000008000000000000000F000000000000004200000000000004580", x" 07060504030201000B0B0B0A090801010B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B 0B0B0B0B0B0B0B0B0D0101010B0B0B0C000000000D010101000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000030002000100000007000600050004 000B000A00090008000D000D000D000C000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D000D 000D000D000D000D000D000D000D000D000D000F000E000D000D000D000D000D000D000D000D000D000D000D0010000D -000D000D000D000D00120011000D000D0016001500140013001A001900180017001E001D001C001B001D001D001F000D -001D001D0020001D001D001D001D001D00220021001D001D000D000D000D000D0024000D0023000D001D001D001D001D -0025001D001D001D0027001D001D00260028001D001D001D002C002B002A00290030002F002E002D001D003300320031 -000D000D000D000D000D000D000D000D000D000D0034000D000D00360035000D0037000D000D000D000D000D000D000D -00390038000D000D001D003A001D001D000D000D000D000D000D000D000D003B001D001D001D003C001D001D001D001D -001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D003D001D001D001D001D -001D001D001D001D001D001D001D001D000D000D000D000D000D000D000D000D000D000D000D000D003E000D000D000D -000D000D000D000D000D000D000D000D000D000D000D000D003E000D000D000D00000000000000000000000000000000 +000D000D000D000D00120011000D000D0016001500140013001A001900180017001E001D001C001B000D000D001F000D +001D001D00210020001D001D001D001D00240023001D0022000D000D000D000D0026000D0025000D001D001D001D001D +0027001D001D001D0029001D001D0028002A001D001D001D002E002D002C002B003200310030002F001D003500340033 +000D000D000D000D000D000D000D000D000D000D0036000D000D00380037000D0039000D000D000D000D000D000D000D +003B003A000D000D001D003C001D001D000D000D000D000D000D000D000D003D001D001D001D003E001D001D001D001D +001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D001D003F001D001D001D001D +001D001D001D001D001D001D001D001D000D000D000D000D000D000D000D000D000D000D000D000D0040000D000D000D +000D000D000D000D000D000D000D000D000D000D000D000D0040000D000D000D00000000000000000000000000000000 00000000000000000000000200010000000000000000000000060005000400030000000000000000000A000900080007 0000000D000C000B000F000E0000000000130012001100100017001600150014001B001A00190018001F001E001D001C 0023002200210020002600250024000000270000000000000000000000000000002A002900280000002E002D002C002B @@ -6494,90 +6626,92 @@ x" 0069000000680067006B00000038006A000000000000000000000000000000000000000000000000006D006C00000000 00000000000000000000000000000000006F0000006E0000007200000071007000000000000000000074007300000000 007600000075002D0078007700000059007B0000007A0079007E007D0000007C0080002F007F007F0084008300820081 -0086008500000000007F0089008800870000000000000000007F008B008A0067008E008D004F008C00730090007F008F -0094009300920091007F009700960095009A009900980000007F007F007F009B009E009D009C007F00A100A0009F0087 -00A3000000A2000000A5000000A4004600A900A800A700A6007F007F00AB00AA00AD000000AC0000005500AE007F007F -00B100B000AF0000007F007F00B300B200B600B5007F00B400BA00B900B800B7003000BC00BB0000007F007F007F00B1 -007F00BF00BE00BD007F00C200C100C000C3007F007F007F00C600C5006F00C400000000000000000000000000000000 -0000000000000000007F006F000000000000000000C70000007F007F00C80000007F007F007F007F007F007F007F007F +008600850000000000570089008800870000000000000000007F008B008A0067008E008D004F008C00730090007F008F +0094009300920091007F009700960095009A009900980000007F009D009C009B00A0009F009E007F00A300A200A10087 +00A5000000A4000000A7000000A6004600AB00AA00A900A800AF00AE00AD00AC00B1000000B00000005500B2007F007F +00B500B400B30000007F007F00B700B600BA00B9007F00B800BE00BD00BC00BB003000C000BF000000C2007F007F00C1 +007F00C500C400C3007F00C800C700C600C9007F007F007F00CD00CC00CB00CA00000000000000000000000000000000 +0000000000000000007F006F000000000000000000CE0000007F007F00CF0000007F007F007F007F007F007F007F007F 007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F -007F007F007F007F009900C9007F007F007F007F00CA0000007F007F007F007F007F007F007F007F007F007F007F007F -00000000000000000000000000000000007F007F00B30000007F007F007F007F00000000000000000000000000000000 -00CC007700CB0030007F00CE00CD0000007F007F007F007F007F007F007F007F007F00CF0000007F00D200D100D00000 -000000000000000000000000000000000000000000000000006100000000000000CA000000000000007F007F007F0098 -007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00D3007F007F007F -00000000000000000000000000D500D400B4000000000000007F007F007F007F007F00D700D60000007F007F007F007F -007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00C80000005F006E -003500000000000000D90000000000D800DB007F00DA0000007F007F00DC000000DF00DE00DD00000000000000E100E0 -000000E20000000000E300000000000000000000000000000000000000000000007F00E400000000007F007F007F007F -007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00E5007F00E800E700E6007F007F00EA00E9 -00EC00EB007F007F007F007F007F007F00ED007F007F007F007F007F007F007F007F007F007F007F00EE007F007F007F -00EF000000000000007F007F00F00000007F007F007F007F007F007F007F007F007F00F200F1007F007F007F007F00F3 -00F700F600F500F4007F007F007F007F00F900F80000003800FA00E700000000007F007F00FC00FB0000000000000000 -0000000000000000000000000000000000FD00000000000000FF000000FE0000007F01010100004B0000000000000000 -010401030102000001060105000000000000000000000000000000000000000000930000000000000000000000000000 -00000000000000000000000000000000000000000000000000000000000000B000000000000001070000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000108000000000000000000000000 -000000000000000000000000000000000000000000000000010900000000000000000000000000000000000000000000 -007F007F00550000007F007F007F007F00000000000000000000000000000000007F007F007F0055007F007F007F007F -00000000000000000000000000000000000000000000000000000000010A000000000000000000000000000000000000 -0000000000000000007F010B00000000007F007F0000010C010B000000000000007F007F007F007F007F007F007F007F -000000000000000000000000000000000000000000000000010D00000000000000000000000000000000000000000000 -0000000000000000010D00000000000000000000000000000300000000000000000000040000280F0001000000000000 -00000000018000000000000000011800FFE078000000FF0000000000000040000000000000001800FFFC000000000000 -18000000000000008000C000000000000000F800B00000000000000000FC80000C3A020000066010800000304F7F8660 -2C92020000067811FF80003FA1FDC6780C1202000004401101FC0030FFFEC4400C12020000066011FF0000304F1FC660 -3C0038E729C23813F800003FFF7EC2380C00020000022000007F0030D89FC2200C10020000022000FFF100309F9FC220 -000000000002200000000030000F0220D004000003800011FFE3003F00A07B807800000000000001FFFFFFFFF0000000 -C000005000000829FFFFFFFF0C0080A00001E000000001002000000001000000FFFFFFFFF8002000000000000000DF40 -00000000C280C20080C200000000C20000000000008000C20000000000C20000E00000001800000000000000FC000000 -C0C000000000000000000000E0000000FE00000000000000FF8000007FC00000FFF22000FFF00000FC00FC00C0000000 -0000F80000000000FFC0000000000000F000F00080000000FFE0C0000000000E0000F00000000000000000003800FC00 -000000003000000060000000800000000000C000FC00FC00FFFFFFFFFFFF8000800000000000E0000FF0000000000000 -07000000000000000000000000001C00180000000000FE00F80000000000FF0000000000C0C00000C00000005500C0C0 -00200000000000008023000010300020000C00200000000000000000E0008000FFFE00000000FFFE000000000000F000 -FFFFFF800000000000000000FFFFF8000030000000000000000000000040000001F00000000000000000DF4000000000 -7FFE7F000000000080808080FF8000000000000080808080FFFFFFFFC00000000000000004000000FFF0000000000000 -0000FFFFFFC000000000000000000001000100000000001F000000000000800000007FF0000000000000000080000000 -000000000000E000000000000000FF80FFFFF00000000000FF000000000000000003FFFFFC14F800FC00E00000000000 -00000000FC003FC0E00000007FF00000800000003C004000FF80000000000000000000000C00C000FF80000007FFFFF8 -00008080FF818181FC00C000000000000000FFF000000000F0000000000007800000C00000000000FFFFFFFFFC000000 -A08000001F07FF800000000000000024000000000007FFF800000000000300000000FFFFFFFF7F000020F08000080000 -60000000000000008000000000000000C1FF8080E30303034800008000001000FFFFFFFFC000C000F800000000000000 -0070000000000078FFFFFFFEE0008000C00000000000FFFFFFFFFFFFFFFFFFFFF0000000FFFE000000001FF000000000 -F80000000000F8000000000040000000FFFFFFFFFFC000F00000FC00C0000000F000000000F000000000FF0000000000 -08007FF000000000E404000400480800FFFFFF00FFC00000F8020000000000406E400000000002C0FFFF007F80000000 -07C80000FFFFFFFF7C000000700000000F0000000000000078C0000001100F9000000000FE00FE00FFFFFFFF00000000 -FF8007800000000001C000000000000000F8000000C00000FFFF01FFE1FC0000FFFFFFFFFFFFFE00FFF8000000000000 -03F8000000000000FC00FF000000000080000000FFFFFFFFFFFCC400000000001FFFFFFFFFFFFFFF0000FFFFFC000000 -0000FFFFFFFFFC00FF800000FFFFF0007FC000000003C000FC00FE000000DFF8FF8000000000FF00FFE0000100000000 -0000000000040000FFFFFFFFFFFFFFFC0000FC0040004280FC00F800000000000412020000066010FFE0E0301F7EC660 -FFFFFFFC10000000FFFFFFFFFC00FF0000C0000000000000FFFFE000FC00FFE0FC00000000000000FFFFFFFFFFFFFC00 +007F007F007F007F009900D0007F007F0000000000D10000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000007B00000000000000000000000000000000000000000000 +007F007F00B70000007F007F007F007F007F007F007F007F007F007F007F00B4007F007F007F007F007F007F007F007F +0000000000000000000000000000000000D3007700D20030007F00D500D40000007F007F007F007F007F007F00B4007F +007F00CB0000007F00D800D700D600000000000000000000000000000000000000000000000000000061000000000000 +00D9000000000000007F007F007F0098007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F +007F007F007F007F00DA007F007F007F00000000000000000000000000DC00DB00B8000000000000007F007F007F007F +007F00DE00DD0000007F007F007F007F007F007F007F007F007F007F007F007F00B40000000000000000000000000000 +007F00570000000000CF0000005F006E003500000000000000E00000000000DF00E2007F00E10000007F007F00E30000 +00E600E500E400000000000000E800E7000000E90000000000EA00000000000000000000000000000000000000000000 +007F00EB00000000007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F007F00EC +007F00EF00EE00ED007F007F00F100F000F300F2007F007F007F007F007F007F00F4007F007F007F00F5007F007F007F +007F007F007F007F00F6007F007F007F00F7000000000000007F007F00F80000007F007F007F007F007F007F007F007F +007F00FA00F9007F007F007F007F00FB00FF00FE00FD00FC007F007F007F007F0101010000000038010200EE00000000 +007F007F0104010300000000000000000000000000000000000000000000000001050000000000000107000001060000 +00A901090108004B0000000000000000010C010B010A000000B4010D0000000000000000000000000000000000000000 +0093000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4 +000000000000010E00000000000000000000000000000000000000000000000000000000000000000000000000000000 +0000010F0000000000000000000000000000000000000000000000000000000000000000000000000110000000000000 +00000000000000000000000000000000007F007F00550000007F007F007F007F00000000000000000000000000000000 +007F007F007F0055007F007F007F007F0000000000000000000000000000000000000000000000000000000001110000 +000000000000000000000000000000000000000000000000007F011200000000007F007F000001130112000000000000 +007F007F007F007F007F007F007F007F0000000000000000000000000000000000000000000000000114000000000000 +000000000000000000000000000000000000000000000000011400000000000000000000000000000300000000000000 +000000040000280F000100000000000000000000018000000000000000011800FFE078000000FF000000000000004000 +0000000000001800FFFC00000000000018000000000000008000C000000000000000F800B000000000000000007C8000 +0C3A020000066010800000304F7F86602C92020000067811FF80003FA1FDC6780C1202000004401101FC0030FFFEC440 +0C12020000066011FF0000304F1FC6603C0038E729C23813F800003FFF7EC2380C00020000022000007F0030D89FC220 +0C10020000022000FFF100309F9FC220000000000002200000000030000F0220D004000003800011FFE3003F00A07B80 +7800000000000001FFFFFFFFF0000000C000005000000829FFFFFFFF0C0080A00001E000000001002000000001000000 +FFFFFFFFF8002000000000000000DF4000000000C280C20080C200000000C20000000000008000C20000000000C20000 +E00000001800000000000000FC000000C0C000000000000000000000E0000000FE00000000000000FF8000007FC00000 +FFF22000FFF00000FC00FC00C00000000000F80000000000FFC0000000000000F000F00080000000FFE0C0000000000E +0000F00000000000000000003800FC00000000003000000060000000800000000000C000FC00FC00FFFFFFFFFFFF8000 +00000000000020000FF000000000000007000000000000000000000000001C00180000000000F800F80000000000FF00 +00000000C0C00000C00000005500C0C000200000000000008023000010300020000C00200000000000000000E0008000 +FFFE00000000FFFE000000000000F000FFFFFC000000000000000000FFFFF80000300000000000000000000000400000 +01F00000000000000000DF40000000007FFE7F000000000080808080FF8000000000000080808080FFFFFFFFC0000000 +0000000004000000FFF00000000000000000FFFFFFC000000000000000000001000100000000001F0000000000008000 +00007FC0000000000000000080000000000000000000E000000000000000FF80FFFFF00000000000FF00000000000000 +0003FFFFE014C000FC00E0000000000000000000FC003FC0E00000007FF00000800000003C004000FF80000000000000 +000000000C00C000FF80000007FFFFF800008080FF818181FC00C000000000000000FFF000000000F000000000000780 +0000C00000000000FFFFFFFFFC000000A08000001F07FF800000000000000024000000000007FFF80000000000030000 +0000FFFFFFFF7F000020F0800008000060000000000000008000000000000000C1FF8080E30303034800008000001000 +FFFFFFFFC000C000F8000000000000000070000000000078FFFFFFFEE0008000C00000000000FFFFFFFFFFFFFFFFFFFF +F0000000FFFE000000001FF000000000F80000000000F8000000000040000000FFFFFFFFFFC000F00000FC00C0000000 +F000000000F000000000FF000000000008007FF000000000E404000400480800FFFFFF00FFC00000F802000000000040 +6E400000000002C0FFFF007F8000000007C80000FFFFFFFF7C000000700000000F0000000000000078C0000001100F90 +00000000FE00FE00FFFFFFFF00000000FF8007800000000001C000000000000000F8000000C00000FFFF01FFE1FC0000 +FFFFFFFFFFFFFE00FFF800000000000003F8000000000000FC00FF0000000000000001C000000000FFFFFFFFFFFF3FC0 +80000000FFFFFFFFFFFCC400000000000FFFFFFFFFFFFFE30000FFFFFC0000000000FFFFFFFFFC00FF800000FFFFF000 +7FC000000003C000FC00FE000000DFF8FF8000000000FF00FFE00001000000000000000000040000FFFFFFFFFFFFFFFC +0000FC0040004280FC00F800000000000412020000066010FFE0E0301F7EC660004000000000B400FFFFFFF9FE40085A +FFFFFFFC10000000FFFFFFFFFC00FF0000C0000000000000FFFFE000FC00FFE0FC00000000000000FFFFFFF00000FC00 0000F00018000000FFFFFFFFFFFFFF80F00000000000000000000000FFFFFFFF7FF80000000000000640000000900D80 -FFFFFFFFFC00FF8000000300FFFFFFFFFFFFFFE003000000000000000000FF000000FFF8000000000080000000000200 -0000E0000000FFC0FF800100000300004B8000000000048000000240FC00FF00FFFFFC00FE048000FE000000FFFFFFFF -3800000000020000FFFEFFFFFFFFFFFF7FFC000000000000FFE0800000000000FFFFFFFFFFFFFFF0000000000000FFFF -FFFFFFFFFFC0000000003C0080000000FFC0C0000000FC001F0000040400FFC0FFFFFFFFFFFF0000FFFFFFFFF8000000 -0000000000007800FFFFFFFF00007F00FFFCFFE0FFFFFFFF9010FFFFFFFFFFFFFFFBFFF8000000000000FF0FFFD8FFFF -E000F80000000000FFFFFFF00C00FE000000018000000000FFFFF80000000000FFFFFFFFFFFFFFC0FFF00000FFF00000 -FE000000FF80000000000000002000001400219B200000000000000000000010840000002020184000000000000203A0 -000000C0000000000000000000003000FFFF000107FFF000FFFFF81F800000000000F82406000080FFFFC00000000000 -FFFFFFFFFFFF7FFFC000E00000000000FFFFFFFFFFFF3C00FFFF80000000FFFF7C00000000000000FC0000000000FFFF -80009080FFFFFFFFFFFFFFFFFF800060FFFFFFFF3C00F0000001FFFFFFFFFFFFFFE0000000000000C000000000000001 -F508016900000010A10808695569157BF0000411F0000400FFFCFFFFFFFFFFFF00018000FFF00000FFC0000000010001 -0000003FFFFFFFFFF00000000000FFF8FFFFFFC0FFFCFE00E000E0000F0000000780000000000000FFFEF000FC000000 -00000000FC00FF00FFFCC0000000FF00E000C000FFF00000400000000000FE00FE00FE00F0003FC00000000000080000 -FC00FFFFFFFFF80000000000C00000000000FFFC000000000000FFFE00000000000000000000F800FFFF000000000000 -00000000FFFFFFFDC000000000000000C000000000000000", +FFFFFFFFFC00FF8000000300FFFFFFFFFFFFFFE003000000000000000000FF000000FFF800000000FFFFFFFFFFFFFC00 +FC00FFFC0000000000800000000002000000E0000000FFC0FF800100000300004B8000000000048000000240FC00FF00 +FFFFFC00FE048000FE000000FFFFFFFF3800000000020000FFFFFFFFF8000000FFFEFFFFFFFFFFFF7FFC000000000000 +FFE0800000000000FFFFFFFFFFFFFFF0000000000000FFFF00000000FFC0000000003C0080000000FFC0C0000000FC00 +1F0000040400FFC0FFFFFFFFFFFF00000000000000007800FFFFFFFF00007F00FFFCFFE0FFFFFFFF7FFFFFFFFFC00000 +9010FFFFFFFFFFFFFFFBFFF8000000000000FF0FFFD8FFFFE000F80000000000FFFFFFF00C00FE000000018000000000 +FFFFF80000000000FFFFFFFFFFFFFFC0FFF00000FFF00000FE000000FF80000000000000002000001400219B20000000 +0000000000000010840000002020184000000000000203A0000000C0000000000000000000003000FFFF000107FFF000 +FFFFF81F800000000000F82406000080FFFFC00000000000FFFFFFFFFFFF7FFFC000E00000000000FFFFFFFFFFFF3C00 +FFFF80000000FFFF7C00000000000000FC0000000000FFFF780000000000FFFF80009080FFFFFFFFFFFFFFFFFF800060 +FFFFFFFF3C00F0000001FFFFFFFFFFFFFFE0000000000000C000000000000001F508016900000010A10808695569157B +F0000411F0000400FFFCFFFFFFFFFFFF00018000FFF00000FFC00000000100010000003FFFFFFFFFF00000000000FFF8 +FFFFFFC0FFFCFE00E000E0000F0000000780000000000000FFFEF000FC00000000000000FC00FF00F000C0000000FF00 +E000C000FFF000000000000000007C00FE00FC0060003F80000000000008000000000000C00000000000FFFC00000000 +0000FFFE00000000000000000000F800FFFF00000000000000000000FFFFFFFDC000000000000000C000000000000000", ); -enum MAX_SIMPLE_LOWER = 1433; -enum MAX_SIMPLE_UPPER = 1450; -enum MAX_SIMPLE_TITLE = 1454; -//10496 bytes +enum MAX_SIMPLE_LOWER = 1460; +enum MAX_SIMPLE_UPPER = 1477; +enum MAX_SIMPLE_TITLE = 1481; +//10752 bytes enum toUpperIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -000000000000010000000000000004800000000000000F80", +000000000000010000000000000004800000000000001000", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -6613,17 +6747,17 @@ x" 000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000330000 000000000000000000000000000000000000000000000000000000000000000000360000003500340000003700000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00380000000000000000003A003900000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000003A00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003C00000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000003C003B0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003E003D0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -6641,169 +6775,174 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000200010000FFFF0006000500040003000A000900080007 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AAFFFFFFFFFFFF001E001D001C001B002200210020001F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C5FFFFFFFFFFFF001E001D001C001B002200210020001F 0026002500240023002A002900280027002E002D002C002BFFFF00310030002F00350034003300320039003800370036 003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003EFFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF 0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004AFFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF0050FFFF -0053FFFF005205AC0055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B -005EFFFF05C9005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF +0053FFFF005205C70055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B +005EFFFF05E4005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF 006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D -FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF -FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF -FFFFFFFFFFFFFFFFFFFF008F008EFFFF0092FFFF00910090FFFF0094FFFF0093FFFF0096FFFF0095FFFF0098FFFF0097 -FFFF009AFFFF0099009DFFFF009C009B009FFFFF009EFFFF00A1FFFF00A0FFFF00A3FFFF00A2FFFF00A5FFFF00A4FFFF -00A700A6FFFF05D1FFFFFFFF00A8FFFF00AAFFFF00A9FFFF00ACFFFF00ABFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF -00B2FFFF00B1FFFF00B4FFFF00B3FFFF00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF -00BDFFFFFFFFFFFF00BFFFFF00BEFFFF00C1FFFF00C0FFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00C7FFFFFFFF00C6FFFF00C9FFFF00C800CAFFFFFFFFFFFF00CCFFFF00CBFFFF00CEFFFF00CDFFFF -00D200D100D000CF00D500D4FFFF00D300D7FFFF00D6FFFFFFFFFFFFFFFF00D800DBFFFF00DA00D9FFFF00DD00DCFFFF -00E100E000DF00DE00E3FFFFFFFF00E2FFFF00E500E4FFFFFFFFFFFF00E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFF -00EA00E9FFFF00E800EBFFFFFFFFFFFF00EF00EE00ED00ECFFFFFFFFFFFF00F0FFFF00F1FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00F300F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFF00F5FFFF00F7FFFFFFFFFFFF -00F8FFFFFFFFFFFFFFFFFFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF05CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00FE00FD00FC00FB0101010000FF05CE01050104010301020109010801070106010D010C010B010A -01110110010F010E01150114011301120119011801170116FFFF011C011B011AFFFFFFFF011E011D01210120011FFFFF -0123FFFF0122FFFF0125FFFF0124FFFF0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF -01310130012F012EFFFFFFFF0132FFFF0134FFFFFFFF0133FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0138013701360135013C013B013A0139 -0140013F013E013D01440143014201410148014701460145014C014B014A01490150014F014E014D0154015301520151 -0158015701560155015C015B015A01590160015F015E015D01640163016201610166FFFF0165FFFF0168FFFF0167FFFF -016AFFFF0169FFFF016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF -FFFFFFFF0175FFFFFFFFFFFFFFFFFFFF0176FFFFFFFFFFFF0178FFFF0177FFFF017AFFFF0179FFFF017CFFFF017BFFFF -017EFFFF017DFFFF0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF -018AFFFF0189FFFF018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFFFFFF0191FFFFFFFFFFFF0193FFFF0192 -FFFF0195FFFF019401980197FFFF0196019AFFFF0199FFFF019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF -01A2FFFF01A1FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF -01AEFFFF01ADFFFF01B0FFFF01AFFFFF01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF -01BAFFFF01B9FFFF01BCFFFF01BBFFFF01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF -01C6FFFF01C5FFFF01C8FFFF01C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CB01CA01C9FFFF01CF01CE01CD01CC01D301D201D101D001D701D601D501D4 -01DB01DA01D901D801DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E805BD01EE01ED01EC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F201F101F001EF01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203 -020A020902080207020E020D020C020B021202110210020F0216021502140213FFFF021902180217021C021B021AFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0220021F021E021DFFFFFFFF022202210226022502240223022A022902280227 -FFFFFFFFFFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFF022FFFFF0232FFFF0231FFFF -0234FFFF0233FFFF0236FFFF0235FFFF0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF -0240FFFF023FFFFF0242FFFF0241FFFF0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF -024CFFFF024BFFFF024EFFFF024DFFFF0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF -0258FFFF0257FFFF025AFFFF0259FFFF025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF -0264FFFF0263FFFF0266FFFF0265FFFF0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF -0270FFFF026FFFFF0272FFFF0271FFFF0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFF05D505D30279FFFF -027A05DB05D905D7FFFFFFFFFFFFFFFF027CFFFF027BFFFF027EFFFF027DFFFF0280FFFF027FFFFF0282FFFF0281FFFF -0284FFFF0283FFFF0286FFFF0285FFFF0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF -0290FFFF028FFFFF0292FFFF0291FFFF0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF -029CFFFF029BFFFF029EFFFF029DFFFF02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF -02A8FFFF02A7FFFF02AAFFFF02A9FFFF02AE02AD02AC02AB02B202B102B002AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02B602B502B402B3FFFFFFFF02B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BC02BB02BA02B902C002BF02BE02BD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C402C302C202C102C802C702C602C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02CC02CB02CA02C9FFFFFFFF02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D005DF02CF05DD02D205E502D105E2 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D602D502D402D302DA02D902D802D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02DE02DD02DC02DB02E202E102E002DF02E602E502E402E3FFFFFFFF02E802E7060C060A06080606061406120610060E -061C061A06180616062406220620061E062C062A06280626063406320630062E063C063A06380636064406420640063E -064C064A06480646065406520650064E065C065A06580656066406620660065E0666067203020301067E05E8FFFF0674 -FFFFFFFFFFFFFFFFFFFF0304FFFF0668066A0676FFFFFFFF068105EAFFFF0678FFFFFFFFFFFFFFFFFFFFFFFFFFFF066C -05EF05EC0307030605F405F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FA05F703090308060105FF030A05FD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF066E067AFFFFFFFF06840604FFFF067CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0670 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0310030F030E030D03140313031203110318031703160315031C031B031A0319FFFFFFFFFFFFFFFFFFFFFFFFFFFF031D -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03210320031F031E03250324032303220329032803270326032D032C032B032A03310330032F032E0335033403330332 -FFFFFFFF03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -033B033A03390338033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C -03530352035103500357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364 -FFFFFFFF0368FFFFFFFF036A0369FFFFFFFF036CFFFF036BFFFFFFFFFFFF036D036EFFFFFFFFFFFFFFFF036FFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFF0370FFFF0373FFFF0372FFFF0375FFFF0374FFFF0377FFFF0376FFFF -0379FFFF0378FFFF037BFFFF037AFFFF037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF -0385FFFF0384FFFF0387FFFF0386FFFF0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF -0391FFFF0390FFFF0393FFFF0392FFFF0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF -039DFFFF039CFFFF039FFFFF039EFFFF03A1FFFF03A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A3FFFF03A2 -03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A803A703A603A503AC03AB03AA03A9 -03B003AF03AE03AD03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C1 -03C803C703C603C503CBFFFF03CA03C9FFFFFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CEFFFF03CDFFFF03D0FFFF03CFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF -03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF -03E2FFFF03E1FFFFFFFFFFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E5FFFF03E4FFFF03E7FFFF03E6FFFF03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF -03F1FFFF03F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03F2FFFFFFFFFFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF03F8FFFF03F7FFFF03F9FFFFFFFFFFFF03FBFFFF03FAFFFF -03FDFFFF03FCFFFF03FFFFFF03FEFFFF0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF -0409FFFF0408FFFF040BFFFF040AFFFF040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF -0415FFFF0414FFFF0417FFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFFFFFF041AFFFFFFFF0419 -041CFFFF041BFFFF041EFFFF041DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041F0421FFFF0420FFFF0423FFFFFFFF0422 -0425FFFF0424FFFF0427FFFF0426FFFF0429FFFF0428FFFF042BFFFF042AFFFFFFFFFFFF042CFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFF0434FFFF0433FFFFFFFFFFFFFFFFFFFF -FFFF0436FFFF0435FFFFFFFFFFFFFFFFFFFFFFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF0439FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043AFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043F043E043D043C04430442044104400447044604450444044B044A04490448 -044F044E044D044C04530452045104500457045604550454045B045A04590458045F045E045D045C0463046204610460 -0467046604650464046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478 -047F047E047D047C04830482048104800487048604850484048B048A0489048805B305B105AF05ADFFFF05BB05B905B6 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BFFFFFFFFFFFFF05C705C505C305C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF007EFFFFFFFFFFFFFFFF007FFFFF008200810080FFFFFFFF0083FFFFFFFF0085FFFF0084FFFFFFFFFFFF0086FFFF +FFFFFFFFFFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFF008BFFFF008AFFFFFFFF008CFFFF008EFFFF008DFFFF +FFFFFFFFFFFFFFFFFFFF0090008FFFFF0093FFFF00920091FFFF0095FFFF0094FFFF0097FFFF0096FFFF0099FFFF0098 +FFFF009BFFFF009A009EFFFF009D009C00A0FFFF009FFFFF00A2FFFF00A1FFFF00A4FFFF00A3FFFF00A6FFFF00A5FFFF +00A800A7FFFF05ECFFFFFFFF00A9FFFF00ABFFFF00AAFFFF00ADFFFF00ACFFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF +00B3FFFF00B2FFFF00B5FFFF00B4FFFF00B7FFFF00B6FFFF00B9FFFF00B8FFFF00BBFFFF00BAFFFF00BDFFFF00BCFFFF +00BEFFFFFFFFFFFF00C0FFFF00BFFFFF00C2FFFF00C1FFFF00C4FFFF00C3FFFF00C6FFFF00C5FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00C8FFFFFFFF00C7FFFF00CAFFFF00C900CBFFFFFFFFFFFF00CDFFFF00CCFFFF00CFFFFF00CEFFFF +00D300D200D100D000D600D5FFFF00D400D8FFFF00D7FFFFFFFFFFFFFFFF00D900DCFFFF00DB00DAFFFF00DF00DE00DD +00E300E200E100E000E5FFFFFFFF00E4FFFF00E700E6FFFFFFFFFFFF00E8FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E9FFFF +00EC00EBFFFF00EA00EDFFFFFFFFFFFF00F100F000EF00EEFFFFFFFFFFFF00F2FFFF00F3FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F500F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFF00F7FFFF00F9FFFFFFFFFFFF +00FAFFFFFFFFFFFFFFFFFFFF00FC00FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF05E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF010000FF00FE00FD01030102010105E90107010601050104010B010A01090108010F010E010D010C +01130112011101100117011601150114011B011A01190118FFFF011E011D011CFFFFFFFF0120011F012301220121FFFF +0125FFFF0124FFFF0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF +0133013201310130FFFFFFFF0134FFFF0136FFFFFFFF0135FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013A013901380137013E013D013C013B +014201410140013F0146014501440143014A014901480147014E014D014C014B015201510150014F0156015501540153 +015A015901580157015E015D015C015B016201610160015F01660165016401630168FFFF0167FFFF016AFFFF0169FFFF +016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF +FFFFFFFF0177FFFFFFFFFFFFFFFFFFFF0178FFFFFFFFFFFF017AFFFF0179FFFF017CFFFF017BFFFF017EFFFF017DFFFF +0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF +018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFFFFFF0193FFFFFFFFFFFF0195FFFF0194 +FFFF0197FFFF0196019A0199FFFF0198019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1FFFF +01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF +01B0FFFF01AFFFFF01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF +01BCFFFF01BBFFFF01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF +01C8FFFF01C7FFFF01CAFFFF01C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CD01CC01CBFFFF01D101D001CF01CE01D501D401D301D201D901D801D701D6 +01DD01DC01DB01DA01E101E001DF01DE01E501E401E301E201E901E801E701E601ED01EC01EB01EA05D801F001EF01EE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F401F301F201F101F801F701F601F501FC01FB01FA01F9020001FF01FE01FD02040203020202010208020702060205 +020C020B020A02090210020F020E020D02140213021202110218021702160215FFFF021B021A0219021E021D021CFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022202210220021FFFFFFFFF022402230228022702260225022C022B022A0229 +FFFF022EFFFF022DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFFFFFFFFFF0230FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0231FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFF0232FFFF0235FFFF0234FFFF +0237FFFF0236FFFF0239FFFF0238FFFF023BFFFF023AFFFF023DFFFF023CFFFF023FFFFF023EFFFF0241FFFF0240FFFF +0243FFFF0242FFFF0245FFFF0244FFFF0247FFFF0246FFFF0249FFFF0248FFFF024BFFFF024AFFFF024DFFFF024CFFFF +024FFFFF024EFFFF0251FFFF0250FFFF0253FFFF0252FFFF0255FFFF0254FFFF0257FFFF0256FFFF0259FFFF0258FFFF +025BFFFF025AFFFF025DFFFF025CFFFF025FFFFF025EFFFF0261FFFF0260FFFF0263FFFF0262FFFF0265FFFF0264FFFF +0267FFFF0266FFFF0269FFFF0268FFFF026BFFFF026AFFFF026DFFFF026CFFFF026FFFFF026EFFFF0271FFFF0270FFFF +0273FFFF0272FFFF0275FFFF0274FFFF0277FFFF0276FFFF0279FFFF0278FFFF027BFFFF027AFFFF05F005EE027CFFFF +027D05F605F405F2FFFFFFFFFFFFFFFF027FFFFF027EFFFF0281FFFF0280FFFF0283FFFF0282FFFF0285FFFF0284FFFF +0287FFFF0286FFFF0289FFFF0288FFFF028BFFFF028AFFFF028DFFFF028CFFFF028FFFFF028EFFFF0291FFFF0290FFFF +0293FFFF0292FFFF0295FFFF0294FFFF0297FFFF0296FFFF0299FFFF0298FFFF029BFFFF029AFFFF029DFFFF029CFFFF +029FFFFF029EFFFF02A1FFFF02A0FFFF02A3FFFF02A2FFFF02A5FFFF02A4FFFF02A7FFFF02A6FFFF02A9FFFF02A8FFFF +02ABFFFF02AAFFFF02ADFFFF02ACFFFF02B102B002AF02AE02B502B402B302B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B902B802B702B6FFFFFFFF02BB02BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BF02BE02BD02BC02C302C202C102C0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C702C602C502C402CB02CA02C902C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CF02CE02CD02CCFFFFFFFF02D102D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D305FA02D205F802D5060002D405FD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D902D802D702D602DD02DC02DB02DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E102E002DF02DE02E502E402E302E202E902E802E702E6FFFFFFFF02EB02EA0627062506230621062F062D062B0629 +0637063506330631063F063D063B06390647064506430641064F064D064B06490657065506530651065F065D065B0659 +0667066506630661066F066D066B06690677067506730671067F067D067B06790681068D0305030406990603FFFF068F +FFFFFFFFFFFFFFFFFFFF0307FFFF068306850691FFFFFFFF069C0605FFFF0693FFFFFFFFFFFFFFFFFFFFFFFFFFFF0687 +060A0607030A0309060F060DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06150612030C030B061C061A030D0618 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06890695FFFFFFFF069F061FFFFF0697FFFFFFFFFFFFFFFFFFFFFFFFFFFF068B +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03130312031103100317031603150314031B031A03190318031F031E031D031CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0320 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03240323032203210328032703260325032C032B032A03290330032F032E032D03340333033203310338033703360335 +FFFFFFFF033A0339FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033E033D033C033B034203410340033F0346034503440343034A034903480347034E034D034C034B035203510350034F +0356035503540353035A035903580357035E035D035C035B036203610360035F0366036503640363036A036903680367 +FFFFFFFF036BFFFFFFFF036D036CFFFFFFFF036FFFFF036EFFFFFFFFFFFF03700371FFFFFFFFFFFFFFFF0372FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0374FFFF0373FFFF0376FFFF0375FFFF0378FFFF0377FFFF037AFFFF0379FFFF +037CFFFF037BFFFF037EFFFF037DFFFF0380FFFF037FFFFF0382FFFF0381FFFF0384FFFF0383FFFF0386FFFF0385FFFF +0388FFFF0387FFFF038AFFFF0389FFFF038CFFFF038BFFFF038EFFFF038DFFFF0390FFFF038FFFFF0392FFFF0391FFFF +0394FFFF0393FFFF0396FFFF0395FFFF0398FFFF0397FFFF039AFFFF0399FFFF039CFFFF039BFFFF039EFFFF039DFFFF +03A0FFFF039FFFFF03A2FFFF03A1FFFF03A4FFFF03A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A6FFFF03A5 +03A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AB03AA03A903A803AF03AE03AD03AC +03B303B203B103B003B703B603B503B403BB03BA03B903B803BF03BE03BD03BC03C303C203C103C003C703C603C503C4 +03CB03CA03C903C803CEFFFF03CD03CCFFFFFFFFFFFFFFFFFFFFFFFF03CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D1FFFF03D0FFFF03D3FFFF03D2FFFF03D5FFFF03D4FFFF03D7FFFF03D6FFFF +03D9FFFF03D8FFFF03DBFFFF03DAFFFF03DDFFFF03DCFFFF03DFFFFF03DEFFFF03E1FFFF03E0FFFF03E3FFFF03E2FFFF +03E5FFFF03E4FFFFFFFFFFFF03E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E8FFFF03E7FFFF03EAFFFF03E9FFFF03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1FFFF +03F4FFFF03F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F5FFFFFFFFFFFF03F7FFFF03F6FFFF03F9FFFF03F8FFFF03FBFFFF03FAFFFF03FCFFFFFFFFFFFF03FEFFFF03FDFFFF +0400FFFF03FFFFFF0402FFFF0401FFFF0404FFFF0403FFFF0406FFFF0405FFFF0408FFFF0407FFFF040AFFFF0409FFFF +040CFFFF040BFFFF040EFFFF040DFFFF0410FFFF040FFFFF0412FFFF0411FFFF0414FFFF0413FFFF0416FFFF0415FFFF +0418FFFF0417FFFF041AFFFF0419FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041BFFFFFFFF041DFFFFFFFF041C +041FFFFF041EFFFF0421FFFF0420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04220424FFFF0423FFFF0426FFFFFFFF0425 +0428FFFF0427FFFF042AFFFF0429FFFF042CFFFF042BFFFF042EFFFF042DFFFFFFFFFFFF042FFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0431FFFF0430FFFF0433FFFF0432FFFF0435FFFF0434FFFF0437FFFF0436FFFFFFFFFFFFFFFFFFFF +FFFF0439FFFF0438FFFFFFFF043AFFFFFFFFFFFF043BFFFF043CFFFFFFFFFFFF043EFFFF043DFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043FFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04440443044204410448044704460445044C044B044A04490450044F044E044D +04540453045204510458045704560455045C045B045A04590460045F045E045D04640463046204610468046704660465 +046C046B046A04690470046F046E046D04740473047204710478047704760475047C047B047A04790480047F047E047D +04840483048204810488048704860485048C048B048A04890490048F048E048D05CE05CC05CA05C8FFFF05D605D405D1 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05DAFFFFFFFFFFFF05E205E005DE05DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF049304920491FFFF0497049604950494049B049A04990498049F049E049D049C +04A304A204A104A004A704A604A504A4FFFF04AA04A904A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04AE04AD04AC04AB04B204B104B004AF +04B604B504B404B304BA04B904B804B704BE04BD04BC04BB04C204C104C004BF04C604C504C404C304CA04C904C804C7 +04CE04CD04CC04CB04D204D104D004CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF048E048D048CFFFF049204910490048F0496049504940493049A049904980497 -049E049D049C049B04A204A104A0049FFFFF04A504A404A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D604D504D404D304DA04D904D804D704DE04DD04DC04DB04E204E104E004DF +04E604E504E404E304EA04E904E804E704EE04ED04EC04EB04F204F104F004EF04F604F504F404F3FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F7FFFFFFFFFFFF +04FB04FA04F904F804FF04FE04FD04FC0502FFFF050105000506050505040503050A050905080507050E050D050C050B +0511FFFF0510050F05150514051305120518FFFF05170516FFFFFFFFFFFF0519051D051C051B051A05210520051F051E +05250524052305220529052805270526052D052C052B052A05310530052F052E05350534053305320539053805370536 +053D053C053B053A05410540053F053E05450544054305420549054805470546FFFF054C054B054AFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04A904A804A704A604AD04AC04AB04AA -04B104B004AF04AE04B504B404B304B204B904B804B704B604BD04BC04BB04BA04C104C004BF04BE04C504C404C304C2 -04C904C804C704C604CD04CC04CB04CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0550054F054E054D05540553055205510558055705560555055C055B055A0559 +0560055F055E055DFFFFFFFF05620561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0566056505640563056A056905680567 +056E056D056C056B057205710570056F0576057505740573057A057905780577057E057D057C057B058205810580057F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D104D004CF04CE04D504D404D304D204D904D804D704D604DD04DC04DB04DA -04E104E004DF04DE04E504E404E304E204E904E804E704E604ED04EC04EB04EA04F104F004EF04EEFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F2FFFFFFFFFFFF -04F604F504F404F304FA04F904F804F704FDFFFF04FC04FB0501050004FF04FE05050504050305020509050805070506 -050CFFFF050B050A0510050F050E050D0513FFFF05120511FFFFFFFFFFFF05140518051705160515051C051B051A0519 -0520051F051E051D05240523052205210528052705260525052C052B052A05290530052F052E052D0534053305320531 -0538053705360535053C053B053A05390540053F053E053D0544054305420541FFFF054705460545FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054B054A05490548054F054E054D054C05530552055105500557055605550554 -055B055A05590558055F055E055D055C05630562056105600567056605650564FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0586058505840583058A058905880587 +058E058D058C058B059205910590058F0596059505940593059A059905980597059E059D059C059B05A205A105A0059F FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056B056A05690568056F056E056D056C05730572057105700577057605750574 -057B057A05790578057F057E057D057C05830582058105800587058605850584FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -05890588FFFFFFFF058D058C058B058A05910590058F058E05950594059305920599059805970596059D059C059B059A -05A105A0059F059E05A505A405A305A205A905A805A705A6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A405A3FFFFFFFF05A805A705A605A505AC05AB05AA05A905B005AF05AE05AD +05B405B305B205B105B805B705B605B505BC05BB05BA05B905C005BF05BE05BD05C405C305C205C1FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10112 bytes +//10240 bytes enum toLowerIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -000000000000010000000000000004800000000000000EC0", +000000000000010000000000000004800000000000000F00", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -6839,17 +6978,17 @@ x" 0000000000000000000000000000002F0000000000000000000000000000000000000000000000000000000000000030 000000000000000000000000000000000000000000000000000000000000000000330032000000310000003500340000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000360000000000000000003700000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000003800000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003900000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000390000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000003A0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -6864,19 +7003,19 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 000200010000FFFF0006000500040003000A000900080007000E000D000C000B001200110010000F0016001500140013 FFFF001900180017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001D001C001B001A00210020001F001E -00250024002300220029002800270026002D002C002B002AFFFF0030002F002E00340033003200310599003700360035 +00250024002300220029002800270026002D002C002B002AFFFF0030002F002E003400330032003105B4003700360035 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0039FFFF0038FFFF003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003E FFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004A -FFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF059AFFFF0053FFFF00520055FFFF0054FFFF0057FFFF0056FFFF -0059FFFF0058FFFF005BFFFF005AFFFFFFFF005C05A9FFFFFFFF005EFFFF005DFFFF0060FFFF005FFFFF0062FFFF0061 +FFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF05B5FFFF0053FFFF00520055FFFF0054FFFF0057FFFF0056FFFF +0059FFFF0058FFFF005BFFFF005AFFFFFFFF005C05C4FFFFFFFF005EFFFF005DFFFF0060FFFF005FFFFF0062FFFF0061 FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006D FFFF0070FFFF006FFFFF0072FFFF00710075FFFF00740073FFFFFFFF0076FFFFFFFF00780077FFFF007B007AFFFF0079 007E007D007CFFFF0080007FFFFFFFFF0083FFFF0082008100860085FFFF0084FFFFFFFFFFFF0087008AFFFF00890088 FFFF008CFFFF008B008F008EFFFF008DFFFFFFFF0090FFFF00930092FFFF0091009600950094FFFF0098FFFF0097FFFF FFFFFFFFFFFF0099FFFFFFFFFFFF009AFFFFFFFFFFFFFFFF009DFFFF009C009B00A0009FFFFF009E00A2FFFF00A1FFFF 00A4FFFF00A3FFFF00A6FFFF00A5FFFF00A8FFFF00A7FFFFFFFF00A9FFFFFFFFFFFF00ABFFFF00AAFFFF00ADFFFF00AC -FFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF00B300B205AC00B600B5FFFF00B4FFFF00B8FFFF00B7FFFF00BAFFFF00B9 +FFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF00B300B205C700B600B5FFFF00B4FFFF00B8FFFF00B7FFFF00BAFFFF00B9 FFFF00BCFFFF00BBFFFF00BEFFFF00BDFFFF00C0FFFF00BFFFFF00C2FFFF00C1FFFF00C4FFFF00C3FFFF00C6FFFF00C5 FFFF00C8FFFF00C7FFFF00CAFFFF00C9FFFF00CCFFFF00CBFFFF00CEFFFF00CDFFFF00D0FFFF00CFFFFF00D2FFFF00D1 FFFF00D4FFFF00D3FFFFFFFFFFFFFFFF00D600D5FFFFFFFFFFFF00D800D7FFFF00DAFFFF00D9FFFFFFFF00DD00DC00DB @@ -6885,9 +7024,9 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00E3FFFF00E2FFFF00E4FFFFFFFFFFFFFFFFFFFFFFFF00E5FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00E6FFFFFFFFFFFF00E900E800E700EC00EBFFFF00EA00EF00EE00ED05AA00F300F200F100F0 +FFFFFFFFFFFFFFFFFFFF00E6FFFFFFFFFFFF00E900E800E700EC00EBFFFF00EA00EF00EE00ED05C500F300F200F100F0 00F700F600F500F400FB00FA00F900F800FEFFFF00FD00FC01020101010000FF0106010501040103FFFFFFFFFFFFFFFF -FFFFFFFFFFFF05ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF05C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF0107FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0109FFFF0108FFFF010BFFFF010A FFFF010DFFFF010CFFFF010FFFFF010EFFFF0111FFFF0110FFFF0113FFFF0112FFFFFFFFFFFFFFFF0115FFFFFFFF0114 FFFF01170116FFFF011A01190118FFFF011E011D011C011B012201210120011F0126012501240123012A012901280127 @@ -6906,7 +7045,7 @@ FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01AB 01B101B001AFFFFF01B501B401B301B201B901B801B701B601BD01BC01BB01BA01C101C001BF01BE01C501C401C301C2 01C901C801C701C601CD01CC01CB01CA01D101D001CF01CEFFFF01D401D301D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF @@ -6920,108 +7059,111 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF020001FF01FE01FD 0220021F021E021D02240223022202210228022702260225022C022B022A02290230022F022E022D0234023302320231 0238023702360235023C023B023A02390240023F023E023D02440243024202410248024702460245024C024B024A0249 0250024F024E024DFFFFFFFF02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0256025502540253025A025902580257025E025D025C025B026202610260025F -0266026502640263026A026902680267026E026D026C026B027202710270026F0276027502740273027A027902780277 -FFFF027D027C027B0280027F027EFFFFFFFF0282FFFF0281FFFF0284FFFF0283FFFF0286FFFF0285FFFF0288FFFF0287 -FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028FFFFF0292FFFF0291FFFF0294FFFF0293 -FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029BFFFF029EFFFF029DFFFF02A0FFFF029F -FFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7FFFF02AAFFFF02A9FFFF02ACFFFF02AB -FFFF02AEFFFF02ADFFFF02B0FFFF02AFFFFF02B2FFFF02B1FFFF02B4FFFF02B3FFFF02B6FFFF02B5FFFF02B8FFFF02B7 -FFFF02BAFFFF02B9FFFF02BCFFFF02BBFFFF02BEFFFF02BDFFFF02C0FFFF02BFFFFF02C2FFFF02C1FFFF02C4FFFF02C3 -FFFF02C6FFFF02C5FFFF02C8FFFF02C7FFFF02CAFFFF02C905AE05ADFFFF02CBFFFF05B105B005AFFFFF02CCFFFFFFFF -FFFF02CEFFFF02CDFFFF02D0FFFF02CFFFFF02D2FFFF02D1FFFF02D4FFFF02D3FFFF02D6FFFF02D5FFFF02D8FFFF02D7 -FFFF02DAFFFF02D9FFFF02DCFFFF02DBFFFF02DEFFFF02DDFFFF02E0FFFF02DFFFFF02E2FFFF02E1FFFF02E4FFFF02E3 -FFFF02E6FFFF02E5FFFF02E8FFFF02E7FFFF02EAFFFF02E9FFFF02ECFFFF02EBFFFF02EEFFFF02EDFFFF02F0FFFF02EF -FFFF02F2FFFF02F1FFFF02F4FFFF02F3FFFF02F6FFFF02F5FFFF02F8FFFF02F7FFFF02FAFFFF02F9FFFF02FCFFFF02FB -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030002FF02FE02FD0304030303020301FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0308030703060305FFFFFFFF030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030E030D030C030B031203110310030F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0316031503140313031A031903180317FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -031E031D031C031BFFFFFFFF0320031FFFFF05B3FFFF05B2FFFF05B5FFFF05B40322FFFF0321FFFF0324FFFF0323FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0328032703260325032C032B032A0329FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C505C405C305C205C905C805C705C605CD05CC05CB05CA05D105D005CF05CE -05D505D405D305D205D905D805D705D605DD05DC05DB05DA05E105E005DF05DE05E505E405E305E205E905E805E705E6 -05ED05EC05EB05EA05F105F005EF05EE05F205F8FFFFFFFF05FE05B6FFFF05F90348034703460345FFFFFFFFFFFF05F3 -05F405FAFFFFFFFF05FF05B7FFFF05FB034D034C034B034AFFFFFFFFFFFF05F505B905B8FFFFFFFF05BB05BAFFFFFFFF -035203510350034FFFFFFFFFFFFFFFFF05BD05BCFFFFFFFF05C005BFFFFF05BE0356035503540353FFFFFFFFFFFF0357 -05F605FCFFFFFFFF060005C1FFFF05FD035B035A03590358FFFFFFFFFFFF05F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFFFFFFFFFFFFFF0360FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03640363036203610368036703660365 -036C036B036A03690370036F036E036DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03730372FFFFFFFF -0377037603750374037B037A03790378037F037E037D037C03830382038103800387038603850384038B038A03890388 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -038F038E038D038C03930392039103900397039603950394039B039A03990398039F039E039D039C03A303A203A103A0 -03A703A603A503A403AB03AA03A903A803AF03AE03AD03AC03B303B203B103B003B703B603B503B403BB03BA03B903B8 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03BE03BDFFFF03BC03C0FFFFFFFF03BF03C2FFFF03C1FFFF03C503C403C3FFFFFFFF03C7FFFF03C6FFFFFFFF03C8FFFF -FFFFFFFFFFFFFFFF03CA03C9FFFFFFFFFFFF03CCFFFF03CBFFFF03CEFFFF03CDFFFF03D0FFFF03CFFFFF03D2FFFF03D1 -FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DD -FFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF03E6FFFF03E5FFFF03E8FFFF03E7FFFF03EAFFFF03E9 -FFFF03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1FFFF03F4FFFF03F3FFFF03F6FFFF03F5 -FFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFFFFFFFFFFFFFF03FDFFFFFFFFFFFFFFFFFFFF03FEFFFF -FFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0401FFFF0400FFFF0403FFFF0402 -FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040AFFFF040DFFFF040CFFFF040FFFFF040E -FFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFFFFFFFFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0417FFFF041AFFFF0419FFFF041CFFFF041BFFFF041EFFFF041D -FFFF0420FFFF041FFFFF0422FFFF0421FFFF0424FFFF0423FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFFFFFFFFFF0427FFFF0426FFFF0429FFFF0428FFFF042BFFFF042A -FFFF042CFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFF0434FFFF0433FFFF0436FFFF0435 -FFFF0438FFFF0437FFFF043AFFFF0439FFFF043CFFFF043BFFFF043EFFFF043DFFFF0440FFFF043FFFFF0442FFFF0441 -FFFF0444FFFF0443FFFF0446FFFF0445FFFF0448FFFF0447FFFF044AFFFF0449FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -044CFFFF044BFFFFFFFF044E044DFFFFFFFF0450FFFF044FFFFF0452FFFF04510453FFFFFFFFFFFFFFFFFFFF0454FFFF -FFFF0456FFFF0455FFFF0457FFFFFFFFFFFF0459FFFF0458FFFF045BFFFF045AFFFF045DFFFF045CFFFF045FFFFF045E -04620461FFFF0460FFFF0465046404630469046804670466FFFF046BFFFF046AFFFF046DFFFF046CFFFF046FFFFF046E -FFFF0471FFFF04700475047404730472FFFFFFFF0476FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0477FFFF0478FFFFFFFF -FFFFFFFFFFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF059F059E059D059CFFFF05A205A105A0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A4FFFFFFFFFFFF05A805A705A605A5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047D047C047BFFFF04810480047F047E -04850484048304820489048804870486048D048C048B048A04910490048F048EFFFF049404930492FFFFFFFFFFFFFFFF -0498049704960495049C049B049A049904A0049F049E049D04A404A304A204A104A804A704A604A504AC04AB04AA04A9 -04B004AF04AE04AD04B404B304B204B104B804B704B604B504BC04BB04BA04B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C004BF04BE04BD04C404C304C204C1 -04C804C704C604C504CC04CB04CA04C904D004CF04CE04CD04D404D304D204D104D804D704D604D504DC04DB04DA04D9 -04E004DF04DE04DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04E404E304E204E104E804E704E604E5FFFF04EB04EA04E904EF04EE04ED04EC04F304F204F104F004F704F604F504F4 -FFFF04FA04F904F804FE04FD04FC04FBFFFF0501050004FFFFFFFFFF05030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF0253FFFFFFFFFFFFFFFFFFFF0257025602550254025B025A02590258025F025E025D025C0263026202610260 +0267026602650264026B026A02690268026F026E026D026C02730272027102700277027602750274027B027A02790278 +FFFF027E027D027C02810280027FFFFFFFFF0283FFFF0282FFFF0285FFFF0284FFFF0287FFFF0286FFFF0289FFFF0288 +FFFF028BFFFF028AFFFF028DFFFF028CFFFF028FFFFF028EFFFF0291FFFF0290FFFF0293FFFF0292FFFF0295FFFF0294 +FFFF0297FFFF0296FFFF0299FFFF0298FFFF029BFFFF029AFFFF029DFFFF029CFFFF029FFFFF029EFFFF02A1FFFF02A0 +FFFF02A3FFFF02A2FFFF02A5FFFF02A4FFFF02A7FFFF02A6FFFF02A9FFFF02A8FFFF02ABFFFF02AAFFFF02ADFFFF02AC +FFFF02AFFFFF02AEFFFF02B1FFFF02B0FFFF02B3FFFF02B2FFFF02B5FFFF02B4FFFF02B7FFFF02B6FFFF02B9FFFF02B8 +FFFF02BBFFFF02BAFFFF02BDFFFF02BCFFFF02BFFFFF02BEFFFF02C1FFFF02C0FFFF02C3FFFF02C2FFFF02C5FFFF02C4 +FFFF02C7FFFF02C6FFFF02C9FFFF02C8FFFF02CBFFFF02CA05C905C8FFFF02CCFFFF05CC05CB05CAFFFF02CDFFFFFFFF +FFFF02CFFFFF02CEFFFF02D1FFFF02D0FFFF02D3FFFF02D2FFFF02D5FFFF02D4FFFF02D7FFFF02D6FFFF02D9FFFF02D8 +FFFF02DBFFFF02DAFFFF02DDFFFF02DCFFFF02DFFFFF02DEFFFF02E1FFFF02E0FFFF02E3FFFF02E2FFFF02E5FFFF02E4 +FFFF02E7FFFF02E6FFFF02E9FFFF02E8FFFF02EBFFFF02EAFFFF02EDFFFF02ECFFFF02EFFFFF02EEFFFF02F1FFFF02F0 +FFFF02F3FFFF02F2FFFF02F5FFFF02F4FFFF02F7FFFF02F6FFFF02F9FFFF02F8FFFF02FBFFFF02FAFFFF02FDFFFF02FC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0301030002FF02FE0305030403030302FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0309030803070306FFFFFFFF030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030F030E030D030C0313031203110310 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0317031603150314031B031A03190318FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +031F031E031D031CFFFFFFFF03210320FFFF05CEFFFF05CDFFFF05D0FFFF05CF0323FFFF0322FFFF0325FFFF0324FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0329032803270326032D032C032B032AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05E005DF05DE05DD05E405E305E205E105E805E705E605E505EC05EB05EA05E9 +05F005EF05EE05ED05F405F305F205F105F805F705F605F505FC05FB05FA05F9060005FF05FE05FD0604060306020601 +0608060706060605060C060B060A0609060D0613FFFFFFFF061905D1FFFF06140349034803470346FFFFFFFFFFFF060E +060F0615FFFFFFFF061A05D2FFFF0616034E034D034C034BFFFFFFFFFFFF061005D405D3FFFFFFFF05D605D5FFFFFFFF +0353035203510350FFFFFFFFFFFFFFFF05D805D7FFFFFFFF05DB05DAFFFF05D90357035603550354FFFFFFFFFFFF0358 +06110617FFFFFFFF061B05DCFFFF0618035C035B035A0359FFFFFFFFFFFF0612FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF035EFFFFFFFF0360035FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0361FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03650364036303620369036803670366 +036D036C036B036A03710370036F036EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0372FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03740373FFFFFFFF +0378037703760375037C037B037A03790380037F037E037D03840383038203810388038703860385038C038B038A0389 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0390038F038E038D03940393039203910398039703960395039C039B039A039903A0039F039E039D03A403A303A203A1 +03A803A703A603A503AC03AB03AA03A903B003AF03AE03AD03B403B303B203B103B803B703B603B503BC03BB03BA03B9 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03BF03BEFFFF03BD03C1FFFFFFFF03C003C3FFFF03C2FFFF03C603C503C4FFFFFFFF03C8FFFF03C7FFFFFFFF03C9FFFF +FFFFFFFFFFFFFFFF03CB03CAFFFFFFFFFFFF03CDFFFF03CCFFFF03CFFFFF03CEFFFF03D1FFFF03D0FFFF03D3FFFF03D2 +FFFF03D5FFFF03D4FFFF03D7FFFF03D6FFFF03D9FFFF03D8FFFF03DBFFFF03DAFFFF03DDFFFF03DCFFFF03DFFFFF03DE +FFFF03E1FFFF03E0FFFF03E3FFFF03E2FFFF03E5FFFF03E4FFFF03E7FFFF03E6FFFF03E9FFFF03E8FFFF03EBFFFF03EA +FFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF03F1FFFF03F0FFFF03F3FFFF03F2FFFF03F5FFFF03F4FFFF03F7FFFF03F6 +FFFF03F9FFFF03F8FFFF03FBFFFF03FAFFFF03FDFFFF03FCFFFFFFFFFFFFFFFF03FEFFFFFFFFFFFFFFFFFFFF03FFFFFF +FFFF0400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0402FFFF0401FFFF0404FFFF0403 +FFFF0406FFFF0405FFFF0408FFFF0407FFFF040AFFFF0409FFFF040CFFFF040BFFFF040EFFFF040DFFFF0410FFFF040F +FFFF0412FFFF0411FFFF0414FFFF0413FFFF0416FFFF0415FFFFFFFFFFFF0417FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0419FFFF0418FFFF041BFFFF041AFFFF041DFFFF041CFFFF041FFFFF041E +FFFF0421FFFF0420FFFF0423FFFF0422FFFF0425FFFF0424FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0426FFFFFFFFFFFF0428FFFF0427FFFF042AFFFF0429FFFF042CFFFF042B +FFFF042DFFFFFFFFFFFF042FFFFF042EFFFF0431FFFF0430FFFF0433FFFF0432FFFF0435FFFF0434FFFF0437FFFF0436 +FFFF0439FFFF0438FFFF043BFFFF043AFFFF043DFFFF043CFFFF043FFFFF043EFFFF0441FFFF0440FFFF0443FFFF0442 +FFFF0445FFFF0444FFFF0447FFFF0446FFFF0449FFFF0448FFFF044BFFFF044AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +044DFFFF044CFFFFFFFF044F044EFFFFFFFF0451FFFF0450FFFF0453FFFF04520454FFFFFFFFFFFFFFFFFFFF0455FFFF +FFFF0457FFFF0456FFFF0458FFFFFFFFFFFF045AFFFF0459FFFF045CFFFF045BFFFF045EFFFF045DFFFF0460FFFF045F +04630462FFFF0461FFFF046604650464046A046904680467FFFF046CFFFF046BFFFF046EFFFF046DFFFF0470FFFF046F +FFFF0472FFFF047104760475047404730478FFFF0477FFFFFFFFFFFFFFFF0479FFFFFFFFFFFF047AFFFF047BFFFFFFFF +FFFF047DFFFF047CFFFFFFFFFFFF047EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFF047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BA05B905B805B7FFFF05BD05BC05BB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05BFFFFFFFFFFFFF05C305C205C105C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF048204810480FFFF0486048504840483 +048A048904880487048E048D048C048B049204910490048F0496049504940493FFFF049904980497FFFFFFFFFFFFFFFF +049D049C049B049A04A104A0049F049E04A504A404A304A204A904A804A704A604AD04AC04AB04AA04B104B004AF04AE +04B504B404B304B204B904B804B704B604BD04BC04BB04BA04C104C004BF04BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C504C404C304C204C904C804C704C6 +04CD04CC04CB04CA04D104D004CF04CE04D504D404D304D204D904D804D704D604DD04DC04DB04DA04E104E004DF04DE +04E504E404E304E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04E904E804E704E604ED04EC04EB04EAFFFF04F004EF04EE04F404F304F204F104F804F704F604F504FC04FB04FA04F9 +FFFF04FF04FE04FD0503050205010500FFFF050605050504FFFFFFFF05080507FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF050C050B050A05090510050F050E050D05140513051205110518051705160515 +051C051B051A05190520051F051E051D05240523052205210528052705260525052C052B052A05290530052F052E052D +05340533053205310538053705360535FFFF053B053A0539FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF053F053E053D053C0543054205410540 +0547054605450544054B054A05490548054F054E054D054CFFFFFFFF05510550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0507050605050504050B050A05090508050F050E050D050C0513051205110510 -0517051605150514051B051A05190518051F051E051D051C05230522052105200527052605250524052B052A05290528 -052F052E052D052C0533053205310530FFFF053605350534FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF053A053905380537053E053D053C053B054205410540053F0546054505440543 -054A054905480547054E054D054C054B055205510550054F0556055505540553055A055905580557055E055D055C055B -056205610560055F0566056505640563056A056905680567056E056D056C056B057205710570056F0576057505740573 +05550554055305520559055805570556055D055C055B055A05610560055F055E05650564056305620569056805670566 +056D056C056B056A05710570056F056E05750574057305720579057805770576057D057C057B057A05810580057F057E +05850584058305820589058805870586058D058C058B058A05910590058F058EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF057A057905780577057E057D057C057B058205810580057F0586058505840583 -058A058905880587058E058D058C058B059205910590058F0596059505940593FFFFFFFF05980597FFFFFFFFFFFFFFFF +05950594059305920599059805970596059D059C059B059A05A105A0059F059E05A505A405A305A205A905A805A705A6 +05AD05AC05AB05AA05B105B005AF05AEFFFFFFFF05B305B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10496 bytes +//10752 bytes enum toTitleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -000000000000010000000000000004800000000000000F80", +000000000000010000000000000004800000000000001000", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7057,17 +7199,17 @@ x" 000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000330000 000000000000000000000000000000000000000000000000000000000000000000360000003500340000003700000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +00380000000000000000003A003900000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000003A00000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003C00000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000003C003B0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003E003D0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -7085,169 +7227,174 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000200010000FFFF0006000500040003000A000900080007 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001AFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05AEFFFFFFFFFFFF001E001D001C001B002200210020001F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C9FFFFFFFFFFFF001E001D001C001B002200210020001F 0026002500240023002A002900280027002E002D002C002BFFFF00310030002F00350034003300320039003800370036 003BFFFF003AFFFF003DFFFF003CFFFF003FFFFF003EFFFF0041FFFF0040FFFF0043FFFF0042FFFF0045FFFF0044FFFF 0047FFFF0046FFFF0049FFFF0048FFFF004BFFFF004AFFFF004DFFFF004CFFFF004FFFFF004EFFFF0051FFFF0050FFFF -0053FFFF005205B00055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B -005EFFFF05CD005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF +0053FFFF005205CB0055FFFF0054FFFFFFFF0056FFFFFFFFFFFF0058FFFF0057FFFF005AFFFF0059FFFF005CFFFF005B +005EFFFF05E8005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF 006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D -FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF -FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF -FFFFFFFFFFFFFFFF00910090008F008E0095009400930092FFFF0097FFFF0096FFFF0099FFFF0098FFFF009BFFFF009A -FFFF009DFFFF009C00A0FFFF009F009E00A2FFFF00A1FFFF00A4FFFF00A3FFFF00A6FFFF00A5FFFF00A8FFFF00A7FFFF -00AB00AA00A905D5FFFFFFFF00ACFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF00B2FFFF00B1FFFF00B4FFFF00B3FFFF -00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF00BEFFFF00BDFFFF00C0FFFF00BFFFFF -00C1FFFFFFFFFFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFF00C7FFFF00C6FFFF00C9FFFF00C8FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00CBFFFFFFFF00CAFFFF00CDFFFF00CC00CEFFFFFFFFFFFF00D0FFFF00CFFFFF00D2FFFF00D1FFFF -00D600D500D400D300D900D8FFFF00D700DBFFFF00DAFFFFFFFFFFFFFFFF00DC00DFFFFF00DE00DDFFFF00E100E0FFFF -00E500E400E300E200E7FFFFFFFF00E6FFFF00E900E8FFFFFFFFFFFF00EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFF -00EE00EDFFFF00EC00EFFFFFFFFFFFFF00F300F200F100F0FFFFFFFFFFFF00F4FFFF00F5FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00F700F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFF00F9FFFF00FBFFFFFFFFFFFF -00FCFFFFFFFFFFFFFFFFFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF05CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF01020101010000FF01050104010305D20109010801070106010D010C010B010A01110110010F010E -01150114011301120119011801170116011D011C011B011AFFFF0120011F011EFFFFFFFF01220121012501240123FFFF -0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF0131FFFF0130FFFF -0135013401330132FFFFFFFF0136FFFF0138FFFFFFFF0137FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013C013B013A01390140013F013E013D -01440143014201410148014701460145014C014B014A01490150014F014E014D01540153015201510158015701560155 -015C015B015A01590160015F015E015D01640163016201610168016701660165016AFFFF0169FFFF016CFFFF016BFFFF -016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF0178FFFF0177FFFF -FFFFFFFF0179FFFFFFFFFFFFFFFFFFFF017AFFFFFFFFFFFF017CFFFF017BFFFF017EFFFF017DFFFF0180FFFF017FFFFF -0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF018CFFFF018BFFFF -018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFFFFFF0195FFFFFFFFFFFF0197FFFF0196 -FFFF0199FFFF0198019C019BFFFF019A019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1FFFF01A4FFFF01A3FFFF -01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF01B0FFFF01AFFFFF -01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF01BCFFFF01BBFFFF -01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF01C8FFFF01C7FFFF -01CAFFFF01C9FFFF01CCFFFF01CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CF01CE01CDFFFF01D301D201D101D001D701D601D501D401DB01DA01D901D8 -01DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E801EF01EE01ED01EC05C101F201F101F0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203020A020902080207 -020E020D020C020B021202110210020F0216021502140213021A021902180217FFFF021D021C021B0220021F021EFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0224022302220221FFFFFFFF02260225022A022902280227022E022D022C022B -FFFFFFFFFFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0234FFFF0233FFFF0236FFFF0235FFFF -0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF0240FFFF023FFFFF0242FFFF0241FFFF -0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF024CFFFF024BFFFF024EFFFF024DFFFF -0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF0258FFFF0257FFFF025AFFFF0259FFFF -025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF0264FFFF0263FFFF0266FFFF0265FFFF -0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF0270FFFF026FFFFF0272FFFF0271FFFF -0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFF027AFFFF0279FFFF027CFFFF027BFFFF05D905D7027DFFFF -027E05DF05DD05DBFFFFFFFFFFFFFFFF0280FFFF027FFFFF0282FFFF0281FFFF0284FFFF0283FFFF0286FFFF0285FFFF -0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028FFFFF0292FFFF0291FFFF -0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029BFFFF029EFFFF029DFFFF -02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7FFFF02AAFFFF02A9FFFF -02ACFFFF02ABFFFF02AEFFFF02ADFFFF02B202B102B002AF02B602B502B402B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02BA02B902B802B7FFFFFFFF02BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C002BF02BE02BD02C402C302C202C1 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C802C702C602C502CC02CB02CA02C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02D002CF02CE02CDFFFFFFFF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D405E302D305E102D605E902D505E6 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DA02D902D802D702DE02DD02DC02DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02E202E102E002DF02E602E502E402E302EA02E902E802E7FFFFFFFF02EC02EB060D060C060B060A06110610060F060E -06150614061306120619061806170616061D061C061B061A06210620061F061E06250624062306220629062806270626 -062D062C062B062A06310630062F062E06350634063306320639063806370636063A064003060305064C05ECFFFF0642 -FFFFFFFFFFFFFFFFFFFF0308FFFF063B063C0644FFFFFFFF064F05EEFFFF0646FFFFFFFFFFFFFFFFFFFFFFFFFFFF063D -05F305F0030B030A05F805F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05FE05FB030D030C06050603030E0601 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF063E0648FFFFFFFF06520608FFFF064AFFFFFFFFFFFFFFFFFFFFFFFFFFFF063F -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03140313031203110318031703160315031C031B031A03190320031F031E031DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0321 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03250324032303220329032803270326032D032C032B032A03310330032F032E03350334033303320339033803370336 -FFFFFFFF033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C0353035203510350 -0357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364036B036A03690368 -FFFFFFFF036CFFFFFFFF036E036DFFFFFFFF0370FFFF036FFFFFFFFFFFFF03710372FFFFFFFFFFFFFFFF0373FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0375FFFF0374FFFF0377FFFF0376FFFF0379FFFF0378FFFF037BFFFF037AFFFF -037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF0385FFFF0384FFFF0387FFFF0386FFFF -0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF0391FFFF0390FFFF0393FFFF0392FFFF -0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF039DFFFF039CFFFF039FFFFF039EFFFF -03A1FFFF03A0FFFF03A3FFFF03A2FFFF03A5FFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A7FFFF03A6 -03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AC03AB03AA03A903B003AF03AE03AD -03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C103C803C703C603C5 -03CC03CB03CA03C903CFFFFF03CE03CDFFFFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF -03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF -03E6FFFF03E5FFFFFFFFFFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF03F1FFFF03F0FFFF03F3FFFF03F2FFFF -03F5FFFF03F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03F6FFFFFFFFFFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFF03FDFFFFFFFFFFFF03FFFFFF03FEFFFF -0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040AFFFF -040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFF0417FFFF0416FFFF -0419FFFF0418FFFF041BFFFF041AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFFFFFF041EFFFFFFFF041D -0420FFFF041FFFFF0422FFFF0421FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04230425FFFF0424FFFF0427FFFFFFFF0426 -0429FFFF0428FFFF042BFFFF042AFFFF042DFFFF042CFFFF042FFFFF042EFFFFFFFFFFFF0430FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF0432FFFF0431FFFF0434FFFF0433FFFF0436FFFF0435FFFF0438FFFF0437FFFFFFFFFFFFFFFFFFFF -FFFF043AFFFF0439FFFFFFFFFFFFFFFFFFFFFFFF043BFFFF043CFFFFFFFFFFFFFFFFFFFF043DFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043EFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04430442044104400447044604450444044B044A04490448044F044E044D044C -04530452045104500457045604550454045B045A04590458045F045E045D045C04630462046104600467046604650464 -046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478047F047E047D047C -04830482048104800487048604850484048B048A04890488048F048E048D048C05B705B505B305B1FFFF05BF05BD05BA -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05C3FFFFFFFFFFFF05CB05C905C705C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF049204910490FFFF0496049504940493049A049904980497049E049D049C049B -04A204A104A0049F04A604A504A404A3FFFF04A904A804A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04AD04AC04AB04AA04B104B004AF04AE -04B504B404B304B204B904B804B704B604BD04BC04BB04BA04C104C004BF04BE04C504C404C304C204C904C804C704C6 -04CD04CC04CB04CA04D104D004CF04CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D504D404D304D204D904D804D704D604DD04DC04DB04DA04E104E004DF04DE -04E504E404E304E204E904E804E704E604ED04EC04EB04EA04F104F004EF04EE04F504F404F304F2FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04F6FFFFFFFFFFFF -04FA04F904F804F704FE04FD04FC04FB0501FFFF050004FF05050504050305020509050805070506050D050C050B050A -0510FFFF050F050E05140513051205110517FFFF05160515FFFFFFFFFFFF0518051C051B051A05190520051F051E051D -05240523052205210528052705260525052C052B052A05290530052F052E052D05340533053205310538053705360535 -053C053B053A05390540053F053E053D05440543054205410548054705460545FFFF054B054A0549FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054F054E054D054C05530552055105500557055605550554055B055A05590558 -055F055E055D055C05630562056105600567056605650564056B056A05690568FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF007EFFFFFFFFFFFFFFFF007FFFFF008200810080FFFFFFFF0083FFFFFFFF0085FFFF0084FFFFFFFFFFFF0086FFFF +FFFFFFFFFFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFF008BFFFF008AFFFFFFFF008CFFFF008EFFFF008DFFFF +FFFFFFFFFFFFFFFF009200910090008F0096009500940093FFFF0098FFFF0097FFFF009AFFFF0099FFFF009CFFFF009B +FFFF009EFFFF009D00A1FFFF00A0009F00A3FFFF00A2FFFF00A5FFFF00A4FFFF00A7FFFF00A6FFFF00A9FFFF00A8FFFF +00AC00AB00AA05F0FFFFFFFF00ADFFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF00B3FFFF00B2FFFF00B5FFFF00B4FFFF +00B7FFFF00B6FFFF00B9FFFF00B8FFFF00BBFFFF00BAFFFF00BDFFFF00BCFFFF00BFFFFF00BEFFFF00C1FFFF00C0FFFF +00C2FFFFFFFFFFFF00C4FFFF00C3FFFF00C6FFFF00C5FFFF00C8FFFF00C7FFFF00CAFFFF00C9FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00CCFFFFFFFF00CBFFFF00CEFFFF00CD00CFFFFFFFFFFFFF00D1FFFF00D0FFFF00D3FFFF00D2FFFF +00D700D600D500D400DA00D9FFFF00D800DCFFFF00DBFFFFFFFFFFFFFFFF00DD00E0FFFF00DF00DEFFFF00E300E200E1 +00E700E600E500E400E9FFFFFFFF00E8FFFF00EB00EAFFFFFFFFFFFF00ECFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EDFFFF +00F000EFFFFF00EE00F1FFFFFFFFFFFF00F500F400F300F2FFFFFFFFFFFF00F6FFFF00F7FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F900F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FCFFFF00FBFFFF00FDFFFFFFFFFFFF +00FEFFFFFFFFFFFFFFFFFFFF010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFF05EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF010401030102010101070106010505ED010B010A01090108010F010E010D010C0113011201110110 +0117011601150114011B011A01190118011F011E011D011CFFFF012201210120FFFFFFFF01240123012701260125FFFF +0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF0131FFFF0130FFFF0133FFFF0132FFFF +0137013601350134FFFFFFFF0138FFFF013AFFFFFFFF0139FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013E013D013C013B014201410140013F +0146014501440143014A014901480147014E014D014C014B015201510150014F0156015501540153015A015901580157 +015E015D015C015B016201610160015F0166016501640163016A016901680167016CFFFF016BFFFF016EFFFF016DFFFF +0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF0178FFFF0177FFFF017AFFFF0179FFFF +FFFFFFFF017BFFFFFFFFFFFFFFFFFFFF017CFFFFFFFFFFFF017EFFFF017DFFFF0180FFFF017FFFFF0182FFFF0181FFFF +0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF018CFFFF018BFFFF018EFFFF018DFFFF +0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFF0196FFFF0195FFFFFFFF0197FFFFFFFFFFFF0199FFFF0198 +FFFF019BFFFF019A019E019DFFFF019C01A0FFFF019FFFFF01A2FFFF01A1FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF +01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF01B0FFFF01AFFFFF01B2FFFF01B1FFFF +01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF01BCFFFF01BBFFFF01BEFFFF01BDFFFF +01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF01C8FFFF01C7FFFF01CAFFFF01C9FFFF +01CCFFFF01CBFFFF01CEFFFF01CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01D101D001CFFFFF01D501D401D301D201D901D801D701D601DD01DC01DB01DA +01E101E001DF01DE01E501E401E301E201E901E801E701E601ED01EC01EB01EA01F101F001EF01EE05DC01F401F301F2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F801F701F601F501FC01FB01FA01F9020001FF01FE01FD02040203020202010208020702060205020C020B020A0209 +0210020F020E020D02140213021202110218021702160215021C021B021A0219FFFF021F021E021D022202210220FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0226022502240223FFFFFFFF02280227022C022B022A02290230022F022E022D +FFFF0232FFFF0231FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFFFFFFFFFF0234FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0235FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0237FFFF0236FFFF0239FFFF0238FFFF +023BFFFF023AFFFF023DFFFF023CFFFF023FFFFF023EFFFF0241FFFF0240FFFF0243FFFF0242FFFF0245FFFF0244FFFF +0247FFFF0246FFFF0249FFFF0248FFFF024BFFFF024AFFFF024DFFFF024CFFFF024FFFFF024EFFFF0251FFFF0250FFFF +0253FFFF0252FFFF0255FFFF0254FFFF0257FFFF0256FFFF0259FFFF0258FFFF025BFFFF025AFFFF025DFFFF025CFFFF +025FFFFF025EFFFF0261FFFF0260FFFF0263FFFF0262FFFF0265FFFF0264FFFF0267FFFF0266FFFF0269FFFF0268FFFF +026BFFFF026AFFFF026DFFFF026CFFFF026FFFFF026EFFFF0271FFFF0270FFFF0273FFFF0272FFFF0275FFFF0274FFFF +0277FFFF0276FFFF0279FFFF0278FFFF027BFFFF027AFFFF027DFFFF027CFFFF027FFFFF027EFFFF05F405F20280FFFF +028105FA05F805F6FFFFFFFFFFFFFFFF0283FFFF0282FFFF0285FFFF0284FFFF0287FFFF0286FFFF0289FFFF0288FFFF +028BFFFF028AFFFF028DFFFF028CFFFF028FFFFF028EFFFF0291FFFF0290FFFF0293FFFF0292FFFF0295FFFF0294FFFF +0297FFFF0296FFFF0299FFFF0298FFFF029BFFFF029AFFFF029DFFFF029CFFFF029FFFFF029EFFFF02A1FFFF02A0FFFF +02A3FFFF02A2FFFF02A5FFFF02A4FFFF02A7FFFF02A6FFFF02A9FFFF02A8FFFF02ABFFFF02AAFFFF02ADFFFF02ACFFFF +02AFFFFF02AEFFFF02B1FFFF02B0FFFF02B502B402B302B202B902B802B702B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02BD02BC02BB02BAFFFFFFFF02BF02BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C302C202C102C002C702C602C502C4 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02CB02CA02C902C802CF02CE02CD02CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02D302D202D102D0FFFFFFFF02D502D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D705FE02D605FC02D9060402D80601 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DD02DC02DB02DA02E102E002DF02DEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E502E402E302E202E902E802E702E602ED02EC02EB02EAFFFFFFFF02EF02EE0628062706260625062C062B062A0629 +0630062F062E062D06340633063206310638063706360635063C063B063A06390640063F063E063D0644064306420641 +0648064706460645064C064B064A06490650064F064E064D06540653065206510655065B0309030806670607FFFF065D +FFFFFFFFFFFFFFFFFFFF030BFFFF06560657065FFFFFFFFF066A0609FFFF0661FFFFFFFFFFFFFFFFFFFFFFFFFFFF0658 +060E060B030E030D06130611FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF061906160310030F0620061E0311061C +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06590663FFFFFFFF066D0623FFFF0665FFFFFFFFFFFFFFFFFFFFFFFFFFFF065A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0313FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0317031603150314031B031A03190318031F031E031D031C0323032203210320FFFFFFFFFFFFFFFFFFFFFFFFFFFF0324 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0328032703260325032C032B032A03290330032F032E032D03340333033203310338033703360335033C033B033A0339 +FFFFFFFF033E033DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +034203410340033F0346034503440343034A034903480347034E034D034C034B035203510350034F0356035503540353 +035A035903580357035E035D035C035B036203610360035F0366036503640363036A036903680367036E036D036C036B +FFFFFFFF036FFFFFFFFF03710370FFFFFFFF0373FFFF0372FFFFFFFFFFFF03740375FFFFFFFFFFFFFFFF0376FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0378FFFF0377FFFF037AFFFF0379FFFF037CFFFF037BFFFF037EFFFF037DFFFF +0380FFFF037FFFFF0382FFFF0381FFFF0384FFFF0383FFFF0386FFFF0385FFFF0388FFFF0387FFFF038AFFFF0389FFFF +038CFFFF038BFFFF038EFFFF038DFFFF0390FFFF038FFFFF0392FFFF0391FFFF0394FFFF0393FFFF0396FFFF0395FFFF +0398FFFF0397FFFF039AFFFF0399FFFF039CFFFF039BFFFF039EFFFF039DFFFF03A0FFFF039FFFFF03A2FFFF03A1FFFF +03A4FFFF03A3FFFF03A6FFFF03A5FFFF03A8FFFF03A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AAFFFF03A9 +03ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AF03AE03AD03AC03B303B203B103B0 +03B703B603B503B403BB03BA03B903B803BF03BE03BD03BC03C303C203C103C003C703C603C503C403CB03CA03C903C8 +03CF03CE03CD03CC03D2FFFF03D103D0FFFFFFFFFFFFFFFFFFFFFFFF03D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D5FFFF03D4FFFF03D7FFFF03D6FFFF03D9FFFF03D8FFFF03DBFFFF03DAFFFF +03DDFFFF03DCFFFF03DFFFFF03DEFFFF03E1FFFF03E0FFFF03E3FFFF03E2FFFF03E5FFFF03E4FFFF03E7FFFF03E6FFFF +03E9FFFF03E8FFFFFFFFFFFF03EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1FFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF +03F8FFFF03F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F9FFFFFFFFFFFF03FBFFFF03FAFFFF03FDFFFF03FCFFFF03FFFFFF03FEFFFF0400FFFFFFFFFFFF0402FFFF0401FFFF +0404FFFF0403FFFF0406FFFF0405FFFF0408FFFF0407FFFF040AFFFF0409FFFF040CFFFF040BFFFF040EFFFF040DFFFF +0410FFFF040FFFFF0412FFFF0411FFFF0414FFFF0413FFFF0416FFFF0415FFFF0418FFFF0417FFFF041AFFFF0419FFFF +041CFFFF041BFFFF041EFFFF041DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041FFFFFFFFF0421FFFFFFFF0420 +0423FFFF0422FFFF0425FFFF0424FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04260428FFFF0427FFFF042AFFFFFFFF0429 +042CFFFF042BFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFFFFFFFFFF0433FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0435FFFF0434FFFF0437FFFF0436FFFF0439FFFF0438FFFF043BFFFF043AFFFFFFFFFFFFFFFFFFFF +FFFF043DFFFF043CFFFFFFFF043EFFFFFFFFFFFF043FFFFF0440FFFFFFFFFFFF0442FFFF0441FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0443FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0448044704460445044C044B044A04490450044F044E044D0454045304520451 +0458045704560455045C045B045A04590460045F045E045D04640463046204610468046704660465046C046B046A0469 +0470046F046E046D04740473047204710478047704760475047C047B047A04790480047F047E047D0484048304820481 +0488048704860485048C048B048A04890490048F048E048D049404930492049105D205D005CE05CCFFFF05DA05D805D5 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05DEFFFFFFFFFFFF05E605E405E205E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056F056E056D056C05730572057105700577057605750574057B057A05790578 -057F057E057D057C05830582058105800587058605850584058B058A05890588FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF049704960495FFFF049B049A04990498049F049E049D049C04A304A204A104A0 +04A704A604A504A404AB04AA04A904A8FFFF04AE04AD04ACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -058D058CFFFFFFFF05910590058F058E05950594059305920599059805970596059D059C059B059A05A105A0059F059E -05A505A405A305A205A905A805A705A605AD05AC05AB05AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04B204B104B004AF04B604B504B404B3 +04BA04B904B804B704BE04BD04BC04BB04C204C104C004BF04C604C504C404C304CA04C904C804C704CE04CD04CC04CB +04D204D104D004CF04D604D504D404D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04DA04D904D804D704DE04DD04DC04DB04E204E104E004DF04E604E504E404E3 +04EA04E904E804E704EE04ED04EC04EB04F204F104F004EF04F604F504F404F304FA04F904F804F7FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04FBFFFFFFFFFFFF +04FF04FE04FD04FC05030502050105000506FFFF05050504050A050905080507050E050D050C050B051205110510050F +0515FFFF051405130519051805170516051CFFFF051B051AFFFFFFFFFFFF051D05210520051F051E0525052405230522 +0529052805270526052D052C052B052A05310530052F052E05350534053305320539053805370536053D053C053B053A +05410540053F053E05450544054305420549054805470546054D054C054B054AFFFF0550054F054EFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05540553055205510558055705560555055C055B055A05590560055F055E055D +0564056305620561FFFFFFFF05660565FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056A056905680567056E056D056C056B +057205710570056F0576057505740573057A057905780577057E057D057C057B058205810580057F0586058505840583 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF058A058905880587058E058D058C058B +059205910590058F0596059505940593059A059905980597059E059D059C059B05A205A105A0059F05A605A505A405A3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A805A7FFFFFFFF05AC05AB05AA05A905B005AF05AE05AD05B405B305B205B1 +05B805B705B605B505BC05BB05BA05B905C005BF05BE05BD05C405C305C205C105C805C705C605C5FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10368 bytes +//10624 bytes enum toUpperSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -000000000000010000000000000004800000000000000F40", +000000000000010000000000000004800000000000000FC0", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7283,17 +7430,17 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000320000 000000000000000000000000000000000000000000000000000000000000000000350000003400330000003600000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003700000000000000000039003800000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000003900000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003B00000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000003B003A0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003D003C0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -7319,158 +7466,164 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001E001D001C001B 005EFFFFFFFF005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF 006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D -FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF -FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF -FFFFFFFFFFFFFFFFFFFF008F008EFFFF0092FFFF00910090FFFF0094FFFF0093FFFF0096FFFF0095FFFF0098FFFF0097 -FFFF009AFFFF0099009DFFFF009C009B009FFFFF009EFFFF00A1FFFF00A0FFFF00A3FFFF00A2FFFF00A5FFFF00A4FFFF -00A700A6FFFFFFFFFFFFFFFF00A8FFFF00AAFFFF00A9FFFF00ACFFFF00ABFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF -00B2FFFF00B1FFFF00B4FFFF00B3FFFF00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF -00BDFFFFFFFFFFFF00BFFFFF00BEFFFF00C1FFFF00C0FFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00C7FFFFFFFF00C6FFFF00C9FFFF00C800CAFFFFFFFFFFFF00CCFFFF00CBFFFF00CEFFFF00CDFFFF -00D200D100D000CF00D500D4FFFF00D300D7FFFF00D6FFFFFFFFFFFFFFFF00D800DBFFFF00DA00D9FFFF00DD00DCFFFF -00E100E000DF00DE00E3FFFFFFFF00E2FFFF00E500E4FFFFFFFFFFFF00E6FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E7FFFF -00EA00E9FFFF00E800EBFFFFFFFFFFFF00EF00EE00ED00ECFFFFFFFFFFFF00F0FFFF00F1FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00F300F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F4FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFF00F5FFFF00F7FFFFFFFFFFFF -00F8FFFFFFFFFFFFFFFFFFFF00FA00F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00FE00FD00FC00FB0101010000FFFFFF01050104010301020109010801070106010D010C010B010A -01110110010F010E01150114011301120119011801170116FFFF011C011B011AFFFFFFFF011E011D01210120011FFFFF -0123FFFF0122FFFF0125FFFF0124FFFF0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF -01310130012F012EFFFFFFFF0132FFFF0134FFFFFFFF0133FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0138013701360135013C013B013A0139 -0140013F013E013D01440143014201410148014701460145014C014B014A01490150014F014E014D0154015301520151 -0158015701560155015C015B015A01590160015F015E015D01640163016201610166FFFF0165FFFF0168FFFF0167FFFF -016AFFFF0169FFFF016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF -FFFFFFFF0175FFFFFFFFFFFFFFFFFFFF0176FFFFFFFFFFFF0178FFFF0177FFFF017AFFFF0179FFFF017CFFFF017BFFFF -017EFFFF017DFFFF0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF -018AFFFF0189FFFF018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFFFFFF0191FFFFFFFFFFFF0193FFFF0192 -FFFF0195FFFF019401980197FFFF0196019AFFFF0199FFFF019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF -01A2FFFF01A1FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF -01AEFFFF01ADFFFF01B0FFFF01AFFFFF01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF -01BAFFFF01B9FFFF01BCFFFF01BBFFFF01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF -01C6FFFF01C5FFFF01C8FFFF01C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CB01CA01C9FFFF01CF01CE01CD01CC01D301D201D101D001D701D601D501D4 -01DB01DA01D901D801DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E8FFFF01EE01ED01EC -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F201F101F001EF01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203 -020A020902080207020E020D020C020B021202110210020F0216021502140213FFFF021902180217021C021B021AFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0220021F021E021DFFFFFFFF022202210226022502240223022A022902280227 -FFFFFFFFFFFF022BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022CFFFFFFFFFFFF022DFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFF022FFFFF0232FFFF0231FFFF -0234FFFF0233FFFF0236FFFF0235FFFF0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF -0240FFFF023FFFFF0242FFFF0241FFFF0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF -024CFFFF024BFFFF024EFFFF024DFFFF0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF -0258FFFF0257FFFF025AFFFF0259FFFF025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF -0264FFFF0263FFFF0266FFFF0265FFFF0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF -0270FFFF026FFFFF0272FFFF0271FFFF0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFFFFFFFFFF0279FFFF -027AFFFFFFFFFFFFFFFFFFFFFFFFFFFF027CFFFF027BFFFF027EFFFF027DFFFF0280FFFF027FFFFF0282FFFF0281FFFF -0284FFFF0283FFFF0286FFFF0285FFFF0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF -0290FFFF028FFFFF0292FFFF0291FFFF0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF -029CFFFF029BFFFF029EFFFF029DFFFF02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF -02A8FFFF02A7FFFF02AAFFFF02A9FFFF02AE02AD02AC02AB02B202B102B002AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02B602B502B402B3FFFFFFFF02B802B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BC02BB02BA02B902C002BF02BE02BD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C402C302C202C102C802C702C602C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02CC02CB02CA02C9FFFFFFFF02CE02CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D0FFFF02CFFFFF02D2FFFF02D1FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D602D502D402D302DA02D902D802D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02DE02DD02DC02DB02E202E102E002DF02E602E502E402E3FFFFFFFF02E802E702EC02EB02EA02E902F002EF02EE02ED -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F402F302F202F102F802F702F602F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02FC02FB02FA02F9030002FF02FE02FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0303FFFF03020301FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF0304FFFFFFFF0305FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF03070306FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03090308FFFFFFFF030AFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0310030F030E030D03140313031203110318031703160315031C031B031A0319FFFFFFFFFFFFFFFFFFFFFFFFFFFF031D -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03210320031F031E03250324032303220329032803270326032D032C032B032A03310330032F032E0335033403330332 -FFFFFFFF03370336FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -033B033A03390338033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C -03530352035103500357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364 -FFFFFFFF0368FFFFFFFF036A0369FFFFFFFF036CFFFF036BFFFFFFFFFFFF036D036EFFFFFFFFFFFFFFFF036FFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFF0370FFFF0373FFFF0372FFFF0375FFFF0374FFFF0377FFFF0376FFFF -0379FFFF0378FFFF037BFFFF037AFFFF037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF -0385FFFF0384FFFF0387FFFF0386FFFF0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF -0391FFFF0390FFFF0393FFFF0392FFFF0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF -039DFFFF039CFFFF039FFFFF039EFFFF03A1FFFF03A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A3FFFF03A2 -03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A803A703A603A503AC03AB03AA03A9 -03B003AF03AE03AD03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C1 -03C803C703C603C503CBFFFF03CA03C9FFFFFFFFFFFFFFFFFFFFFFFF03CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03CEFFFF03CDFFFF03D0FFFF03CFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF -03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF -03E2FFFF03E1FFFFFFFFFFFF03E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E5FFFF03E4FFFF03E7FFFF03E6FFFF03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF -03F1FFFF03F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03F2FFFFFFFFFFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF03F8FFFF03F7FFFF03F9FFFFFFFFFFFF03FBFFFF03FAFFFF -03FDFFFF03FCFFFF03FFFFFF03FEFFFF0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF -0409FFFF0408FFFF040BFFFF040AFFFF040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF -0415FFFF0414FFFF0417FFFF0416FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFFFFFF041AFFFFFFFF0419 -041CFFFF041BFFFF041EFFFF041DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041F0421FFFF0420FFFF0423FFFFFFFF0422 -0425FFFF0424FFFF0427FFFF0426FFFF0429FFFF0428FFFF042BFFFF042AFFFFFFFFFFFF042CFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFF0434FFFF0433FFFFFFFFFFFFFFFFFFFF -FFFF0436FFFF0435FFFFFFFFFFFFFFFFFFFFFFFF0437FFFF0438FFFFFFFFFFFFFFFFFFFF0439FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043AFFFFFFFF +FFFF007EFFFFFFFFFFFFFFFF007FFFFF008200810080FFFFFFFF0083FFFFFFFF0085FFFF0084FFFFFFFFFFFF0086FFFF +FFFFFFFFFFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFF008BFFFF008AFFFFFFFF008CFFFF008EFFFF008DFFFF +FFFFFFFFFFFFFFFFFFFF0090008FFFFF0093FFFF00920091FFFF0095FFFF0094FFFF0097FFFF0096FFFF0099FFFF0098 +FFFF009BFFFF009A009EFFFF009D009C00A0FFFF009FFFFF00A2FFFF00A1FFFF00A4FFFF00A3FFFF00A6FFFF00A5FFFF +00A800A7FFFFFFFFFFFFFFFF00A9FFFF00ABFFFF00AAFFFF00ADFFFF00ACFFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF +00B3FFFF00B2FFFF00B5FFFF00B4FFFF00B7FFFF00B6FFFF00B9FFFF00B8FFFF00BBFFFF00BAFFFF00BDFFFF00BCFFFF +00BEFFFFFFFFFFFF00C0FFFF00BFFFFF00C2FFFF00C1FFFF00C4FFFF00C3FFFF00C6FFFF00C5FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00C8FFFFFFFF00C7FFFF00CAFFFF00C900CBFFFFFFFFFFFF00CDFFFF00CCFFFF00CFFFFF00CEFFFF +00D300D200D100D000D600D5FFFF00D400D8FFFF00D7FFFFFFFFFFFFFFFF00D900DCFFFF00DB00DAFFFF00DF00DE00DD +00E300E200E100E000E5FFFFFFFF00E4FFFF00E700E6FFFFFFFFFFFF00E8FFFFFFFFFFFFFFFFFFFFFFFFFFFF00E9FFFF +00EC00EBFFFF00EA00EDFFFFFFFFFFFF00F100F000EF00EEFFFFFFFFFFFF00F2FFFF00F3FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F500F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F6FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFF00F7FFFF00F9FFFFFFFFFFFF +00FAFFFFFFFFFFFFFFFFFFFF00FC00FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF010000FF00FE00FD010301020101FFFF0107010601050104010B010A01090108010F010E010D010C +01130112011101100117011601150114011B011A01190118FFFF011E011D011CFFFFFFFF0120011F012301220121FFFF +0125FFFF0124FFFF0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF +0133013201310130FFFFFFFF0134FFFF0136FFFFFFFF0135FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013A013901380137013E013D013C013B +014201410140013F0146014501440143014A014901480147014E014D014C014B015201510150014F0156015501540153 +015A015901580157015E015D015C015B016201610160015F01660165016401630168FFFF0167FFFF016AFFFF0169FFFF +016CFFFF016BFFFF016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF +FFFFFFFF0177FFFFFFFFFFFFFFFFFFFF0178FFFFFFFFFFFF017AFFFF0179FFFF017CFFFF017BFFFF017EFFFF017DFFFF +0180FFFF017FFFFF0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF +018CFFFF018BFFFF018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFFFFFF0193FFFFFFFFFFFF0195FFFF0194 +FFFF0197FFFF0196019A0199FFFF0198019CFFFF019BFFFF019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1FFFF +01A4FFFF01A3FFFF01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF +01B0FFFF01AFFFFF01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF +01BCFFFF01BBFFFF01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF +01C8FFFF01C7FFFF01CAFFFF01C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CD01CC01CBFFFF01D101D001CF01CE01D501D401D301D201D901D801D701D6 +01DD01DC01DB01DA01E101E001DF01DE01E501E401E301E201E901E801E701E601ED01EC01EB01EAFFFF01F001EF01EE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F401F301F201F101F801F701F601F501FC01FB01FA01F9020001FF01FE01FD02040203020202010208020702060205 +020C020B020A02090210020F020E020D02140213021202110218021702160215FFFF021B021A0219021E021D021CFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022202210220021FFFFFFFFF022402230228022702260225022C022B022A0229 +FFFF022EFFFF022DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF022FFFFFFFFFFFFF0230FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0231FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFF0232FFFF0235FFFF0234FFFF +0237FFFF0236FFFF0239FFFF0238FFFF023BFFFF023AFFFF023DFFFF023CFFFF023FFFFF023EFFFF0241FFFF0240FFFF +0243FFFF0242FFFF0245FFFF0244FFFF0247FFFF0246FFFF0249FFFF0248FFFF024BFFFF024AFFFF024DFFFF024CFFFF +024FFFFF024EFFFF0251FFFF0250FFFF0253FFFF0252FFFF0255FFFF0254FFFF0257FFFF0256FFFF0259FFFF0258FFFF +025BFFFF025AFFFF025DFFFF025CFFFF025FFFFF025EFFFF0261FFFF0260FFFF0263FFFF0262FFFF0265FFFF0264FFFF +0267FFFF0266FFFF0269FFFF0268FFFF026BFFFF026AFFFF026DFFFF026CFFFF026FFFFF026EFFFF0271FFFF0270FFFF +0273FFFF0272FFFF0275FFFF0274FFFF0277FFFF0276FFFF0279FFFF0278FFFF027BFFFF027AFFFFFFFFFFFF027CFFFF +027DFFFFFFFFFFFFFFFFFFFFFFFFFFFF027FFFFF027EFFFF0281FFFF0280FFFF0283FFFF0282FFFF0285FFFF0284FFFF +0287FFFF0286FFFF0289FFFF0288FFFF028BFFFF028AFFFF028DFFFF028CFFFF028FFFFF028EFFFF0291FFFF0290FFFF +0293FFFF0292FFFF0295FFFF0294FFFF0297FFFF0296FFFF0299FFFF0298FFFF029BFFFF029AFFFF029DFFFF029CFFFF +029FFFFF029EFFFF02A1FFFF02A0FFFF02A3FFFF02A2FFFF02A5FFFF02A4FFFF02A7FFFF02A6FFFF02A9FFFF02A8FFFF +02ABFFFF02AAFFFF02ADFFFF02ACFFFF02B102B002AF02AE02B502B402B302B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02B902B802B702B6FFFFFFFF02BB02BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02BF02BE02BD02BC02C302C202C102C0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C702C602C502C402CB02CA02C902C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02CF02CE02CD02CCFFFFFFFF02D102D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D3FFFF02D2FFFF02D5FFFF02D4FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D902D802D702D602DD02DC02DB02DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E102E002DF02DE02E502E402E302E202E902E802E702E6FFFFFFFF02EB02EA02EF02EE02ED02EC02F302F202F102F0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F702F602F502F402FB02FA02F902F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02FF02FE02FD02FC0303030203010300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0306FFFF03050304FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF0307FFFFFFFF0308FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030C030BFFFFFFFF030DFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03130312031103100317031603150314031B031A03190318031F031E031D031CFFFFFFFFFFFFFFFFFFFFFFFFFFFF0320 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03240323032203210328032703260325032C032B032A03290330032F032E032D03340333033203310338033703360335 +FFFFFFFF033A0339FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +033E033D033C033B034203410340033F0346034503440343034A034903480347034E034D034C034B035203510350034F +0356035503540353035A035903580357035E035D035C035B036203610360035F0366036503640363036A036903680367 +FFFFFFFF036BFFFFFFFF036D036CFFFFFFFF036FFFFF036EFFFFFFFFFFFF03700371FFFFFFFFFFFFFFFF0372FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0374FFFF0373FFFF0376FFFF0375FFFF0378FFFF0377FFFF037AFFFF0379FFFF +037CFFFF037BFFFF037EFFFF037DFFFF0380FFFF037FFFFF0382FFFF0381FFFF0384FFFF0383FFFF0386FFFF0385FFFF +0388FFFF0387FFFF038AFFFF0389FFFF038CFFFF038BFFFF038EFFFF038DFFFF0390FFFF038FFFFF0392FFFF0391FFFF +0394FFFF0393FFFF0396FFFF0395FFFF0398FFFF0397FFFF039AFFFF0399FFFF039CFFFF039BFFFF039EFFFF039DFFFF +03A0FFFF039FFFFF03A2FFFF03A1FFFF03A4FFFF03A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A6FFFF03A5 +03A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AB03AA03A903A803AF03AE03AD03AC +03B303B203B103B003B703B603B503B403BB03BA03B903B803BF03BE03BD03BC03C303C203C103C003C703C603C503C4 +03CB03CA03C903C803CEFFFF03CD03CCFFFFFFFFFFFFFFFFFFFFFFFF03CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D1FFFF03D0FFFF03D3FFFF03D2FFFF03D5FFFF03D4FFFF03D7FFFF03D6FFFF +03D9FFFF03D8FFFF03DBFFFF03DAFFFF03DDFFFF03DCFFFF03DFFFFF03DEFFFF03E1FFFF03E0FFFF03E3FFFF03E2FFFF +03E5FFFF03E4FFFFFFFFFFFF03E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03E8FFFF03E7FFFF03EAFFFF03E9FFFF03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1FFFF +03F4FFFF03F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F5FFFFFFFFFFFF03F7FFFF03F6FFFF03F9FFFF03F8FFFF03FBFFFF03FAFFFF03FCFFFFFFFFFFFF03FEFFFF03FDFFFF +0400FFFF03FFFFFF0402FFFF0401FFFF0404FFFF0403FFFF0406FFFF0405FFFF0408FFFF0407FFFF040AFFFF0409FFFF +040CFFFF040BFFFF040EFFFF040DFFFF0410FFFF040FFFFF0412FFFF0411FFFF0414FFFF0413FFFF0416FFFF0415FFFF +0418FFFF0417FFFF041AFFFF0419FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041BFFFFFFFF041DFFFFFFFF041C +041FFFFF041EFFFF0421FFFF0420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04220424FFFF0423FFFF0426FFFFFFFF0425 +0428FFFF0427FFFF042AFFFF0429FFFF042CFFFF042BFFFF042EFFFF042DFFFFFFFFFFFF042FFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0431FFFF0430FFFF0433FFFF0432FFFF0435FFFF0434FFFF0437FFFF0436FFFFFFFFFFFFFFFFFFFF +FFFF0439FFFF0438FFFFFFFF043AFFFFFFFFFFFF043BFFFF043CFFFFFFFFFFFF043EFFFF043DFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043FFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -043BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043F043E043D043C04430442044104400447044604450444044B044A04490448 -044F044E044D044C04530452045104500457045604550454045B045A04590458045F045E045D045C0463046204610460 -0467046604650464046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478 -047F047E047D047C04830482048104800487048604850484048B048A04890488048E048D048CFFFF049204910490048F -0496049504940493049A049904980497049E049D049C049B04A204A104A0049FFFFF04A504A404A3FFFFFFFFFFFFFFFF +0440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04440443044204410448044704460445044C044B044A04490450044F044E044D +04540453045204510458045704560455045C045B045A04590460045F045E045D04640463046204610468046704660465 +046C046B046A04690470046F046E046D04740473047204710478047704760475047C047B047A04790480047F047E047D +04840483048204810488048704860485048C048B048A04890490048F048E048D049304920491FFFF0497049604950494 +049B049A04990498049F049E049D049C04A304A204A104A004A704A604A504A4FFFF04AA04A904A8FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04A904A804A704A604AD04AC04AB04AA04B104B004AF04AE04B504B404B304B204B904B804B704B604BD04BC04BB04BA -04C104C004BF04BE04C504C404C304C204C904C804C704C604CD04CC04CB04CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04AE04AD04AC04AB04B204B104B004AF04B604B504B404B304BA04B904B804B704BE04BD04BC04BB04C204C104C004BF +04C604C504C404C304CA04C904C804C704CE04CD04CC04CB04D204D104D004CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D104D004CF04CE04D504D404D304D2 -04D904D804D704D604DD04DC04DB04DA04E104E004DF04DE04E504E404E304E204E904E804E704E604ED04EC04EB04EA -04F104F004EF04EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF04F2FFFFFFFFFFFF04F604F504F404F304FA04F904F804F704FDFFFF04FC04FB0501050004FF04FE -05050504050305020509050805070506050CFFFF050B050A0510050F050E050D0513FFFF05120511FFFFFFFFFFFF0514 -0518051705160515051C051B051A05190520051F051E051D05240523052205210528052705260525052C052B052A0529 -0530052F052E052D05340533053205310538053705360535053C053B053A05390540053F053E053D0544054305420541 -FFFF054705460545FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054B054A05490548054F054E054D054C -05530552055105500557055605550554055B055A05590558055F055E055D055C05630562056105600567056605650564 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D604D504D404D304DA04D904D804D7 +04DE04DD04DC04DB04E204E104E004DF04E604E504E404E304EA04E904E804E704EE04ED04EC04EB04F204F104F004EF +04F604F504F404F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF04F7FFFFFFFFFFFF04FB04FA04F904F804FF04FE04FD04FC0502FFFF050105000506050505040503 +050A050905080507050E050D050C050B0511FFFF0510050F05150514051305120518FFFF05170516FFFFFFFFFFFF0519 +051D051C051B051A05210520051F051E05250524052305220529052805270526052D052C052B052A05310530052F052E +05350534053305320539053805370536053D053C053B053A05410540053F053E05450544054305420549054805470546 +FFFF054C054B054AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0550054F054E054D0554055305520551 +0558055705560555055C055B055A05590560055F055E055DFFFFFFFF05620561FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056B056A05690568056F056E056D056C -05730572057105700577057605750574057B057A05790578057F057E057D057C05830582058105800587058605850584 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05890588FFFFFFFF058D058C058B058A05910590058F058E0595059405930592 -0599059805970596059D059C059B059A05A105A0059F059E05A505A405A305A205A905A805A705A6FFFFFFFFFFFFFFFF +0566056505640563056A056905680567056E056D056C056B057205710570056F0576057505740573057A057905780577 +057E057D057C057B058205810580057FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0586058505840583058A058905880587058E058D058C058B059205910590058F0596059505940593059A059905980597 +059E059D059C059B05A205A105A0059FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A405A3FFFFFFFF05A805A705A605A5 +05AC05AB05AA05A905B005AF05AE05AD05B405B305B205B105B805B705B605B505BC05BB05BA05B905C005BF05BE05BD +05C405C305C205C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//9856 bytes +//9984 bytes enum toLowerSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -000000000000010000000000000004800000000000000E40", +000000000000010000000000000004800000000000000E80", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7506,17 +7659,17 @@ x" 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E 0000000000000000000000000000000000000000000000000000000000000000003100300000002F0000003300320000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000340000000000000000003500000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000350000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +000000360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000003600000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003700000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000370000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000380000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -7584,106 +7737,108 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0218021702160215021C021B021A02190220021F021E021D02240223022202210228022702260225022C022B022A0229 0230022F022E022D02340233023202310238023702360235023C023B023A02390240023F023E023D0244024302420241 0248024702460245024C024B024A02490250024F024E024DFFFFFFFF02520251FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0256025502540253025A025902580257 -025E025D025C025B026202610260025F0266026502640263026A026902680267026E026D026C026B027202710270026F -0276027502740273027A027902780277FFFF027D027C027B0280027F027EFFFFFFFF0282FFFF0281FFFF0284FFFF0283 -FFFF0286FFFF0285FFFF0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028F -FFFF0292FFFF0291FFFF0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029B -FFFF029EFFFF029DFFFF02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7 -FFFF02AAFFFF02A9FFFF02ACFFFF02ABFFFF02AEFFFF02ADFFFF02B0FFFF02AFFFFF02B2FFFF02B1FFFF02B4FFFF02B3 -FFFF02B6FFFF02B5FFFF02B8FFFF02B7FFFF02BAFFFF02B9FFFF02BCFFFF02BBFFFF02BEFFFF02BDFFFF02C0FFFF02BF -FFFF02C2FFFF02C1FFFF02C4FFFF02C3FFFF02C6FFFF02C5FFFF02C8FFFF02C7FFFF02CAFFFF02C9FFFFFFFFFFFF02CB -FFFFFFFFFFFFFFFFFFFF02CCFFFFFFFFFFFF02CEFFFF02CDFFFF02D0FFFF02CFFFFF02D2FFFF02D1FFFF02D4FFFF02D3 -FFFF02D6FFFF02D5FFFF02D8FFFF02D7FFFF02DAFFFF02D9FFFF02DCFFFF02DBFFFF02DEFFFF02DDFFFF02E0FFFF02DF -FFFF02E2FFFF02E1FFFF02E4FFFF02E3FFFF02E6FFFF02E5FFFF02E8FFFF02E7FFFF02EAFFFF02E9FFFF02ECFFFF02EB -FFFF02EEFFFF02EDFFFF02F0FFFF02EFFFFF02F2FFFF02F1FFFF02F4FFFF02F3FFFF02F6FFFF02F5FFFF02F8FFFF02F7 -FFFF02FAFFFF02F9FFFF02FCFFFF02FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030002FF02FE02FD0304030303020301 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0308030703060305FFFFFFFF030A0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -030E030D030C030B031203110310030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0316031503140313031A031903180317 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031E031D031C031BFFFFFFFF0320031FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0322FFFF0321FFFF0324FFFF0323FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0328032703260325032C032B032A0329 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0330032F032E032D0334033303320331FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0338033703360335033C033B033A0339 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0340033F033E033D0344034303420341FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0348034703460345FFFFFFFFFFFF0349FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF034D034C034B034AFFFFFFFFFFFF034E -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035203510350034FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0356035503540353FFFFFFFFFFFF0357FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035B035A03590358FFFFFFFFFFFF035C -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035DFFFFFFFF035F035EFFFFFFFFFFFFFFFFFFFFFFFF -FFFF0360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03640363036203610368036703660365036C036B036A03690370036F036E036DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0371FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF03730372FFFFFFFF0377037603750374037B037A03790378037F037E037D037C0383038203810380 -0387038603850384038B038A03890388FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF038F038E038D038C03930392039103900397039603950394039B039A03990398 -039F039E039D039C03A303A203A103A003A703A603A503A403AB03AA03A903A803AF03AE03AD03AC03B303B203B103B0 -03B703B603B503B403BB03BA03B903B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03BE03BDFFFF03BC03C0FFFFFFFF03BF03C2FFFF03C1FFFF03C503C403C3FFFF -FFFF03C7FFFF03C6FFFFFFFF03C8FFFFFFFFFFFFFFFFFFFF03CA03C9FFFFFFFFFFFF03CCFFFF03CBFFFF03CEFFFF03CD -FFFF03D0FFFF03CFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF03DAFFFF03D9 -FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF03E6FFFF03E5 -FFFF03E8FFFF03E7FFFF03EAFFFF03E9FFFF03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1 -FFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFFFFFFFFFFFFFF -03FDFFFFFFFFFFFFFFFFFFFF03FEFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFF0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040A -FFFF040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFFFFFFFFFF0416 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0418FFFF0417FFFF041AFFFF0419 -FFFF041CFFFF041BFFFF041EFFFF041DFFFF0420FFFF041FFFFF0422FFFF0421FFFF0424FFFF0423FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0425FFFFFFFFFFFF0427FFFF0426 -FFFF0429FFFF0428FFFF042BFFFF042AFFFF042CFFFFFFFFFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431 -FFFF0434FFFF0433FFFF0436FFFF0435FFFF0438FFFF0437FFFF043AFFFF0439FFFF043CFFFF043BFFFF043EFFFF043D -FFFF0440FFFF043FFFFF0442FFFF0441FFFF0444FFFF0443FFFF0446FFFF0445FFFF0448FFFF0447FFFF044AFFFF0449 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF044CFFFF044BFFFFFFFF044E044DFFFFFFFF0450FFFF044FFFFF0452FFFF0451 -0453FFFFFFFFFFFFFFFFFFFF0454FFFFFFFF0456FFFF0455FFFF0457FFFFFFFFFFFF0459FFFF0458FFFF045BFFFF045A -FFFF045DFFFF045CFFFF045FFFFF045E04620461FFFF0460FFFF0465046404630469046804670466FFFF046BFFFF046A -FFFF046DFFFF046CFFFF046FFFFF046EFFFF0471FFFF04700475047404730472FFFFFFFF0476FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF0477FFFF0478FFFFFFFFFFFFFFFFFFFF0479FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047D047C047BFFFF04810480047F047E04850484048304820489048804870486 -048D048C048B048A04910490048F048EFFFF049404930492FFFFFFFFFFFFFFFF0498049704960495049C049B049A0499 -04A0049F049E049D04A404A304A204A104A804A704A604A504AC04AB04AA04A904B004AF04AE04AD04B404B304B204B1 -04B804B704B604B504BC04BB04BA04B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C004BF04BE04BD04C404C304C204C104C804C704C604C504CC04CB04CA04C9 -04D004CF04CE04CD04D404D304D204D104D804D704D604D504DC04DB04DA04D904E004DF04DE04DDFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E404E304E204E104E804E704E604E5 -FFFF04EB04EA04E904EF04EE04ED04EC04F304F204F104F004F704F604F504F4FFFF04FA04F904F804FE04FD04FC04FB -FFFF0501050004FFFFFFFFFF05030502FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -0507050605050504050B050A05090508050F050E050D050C05130512051105100517051605150514051B051A05190518 -051F051E051D051C05230522052105200527052605250524052B052A05290528052F052E052D052C0533053205310530 -FFFF053605350534FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -053A053905380537053E053D053C053B054205410540053F0546054505440543054A054905480547054E054D054C054B -055205510550054F0556055505540553055A055905580557055E055D055C055B056205610560055F0566056505640563 -056A056905680567056E056D056C056B057205710570056F0576057505740573FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -057A057905780577057E057D057C057B058205810580057F0586058505840583058A058905880587058E058D058C058B -059205910590058F0596059505940593FFFFFFFF05980597FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0253FFFFFFFFFFFFFFFFFFFF0257025602550254025B025A02590258 +025F025E025D025C02630262026102600267026602650264026B026A02690268026F026E026D026C0273027202710270 +0277027602750274027B027A02790278FFFF027E027D027C02810280027FFFFFFFFF0283FFFF0282FFFF0285FFFF0284 +FFFF0287FFFF0286FFFF0289FFFF0288FFFF028BFFFF028AFFFF028DFFFF028CFFFF028FFFFF028EFFFF0291FFFF0290 +FFFF0293FFFF0292FFFF0295FFFF0294FFFF0297FFFF0296FFFF0299FFFF0298FFFF029BFFFF029AFFFF029DFFFF029C +FFFF029FFFFF029EFFFF02A1FFFF02A0FFFF02A3FFFF02A2FFFF02A5FFFF02A4FFFF02A7FFFF02A6FFFF02A9FFFF02A8 +FFFF02ABFFFF02AAFFFF02ADFFFF02ACFFFF02AFFFFF02AEFFFF02B1FFFF02B0FFFF02B3FFFF02B2FFFF02B5FFFF02B4 +FFFF02B7FFFF02B6FFFF02B9FFFF02B8FFFF02BBFFFF02BAFFFF02BDFFFF02BCFFFF02BFFFFF02BEFFFF02C1FFFF02C0 +FFFF02C3FFFF02C2FFFF02C5FFFF02C4FFFF02C7FFFF02C6FFFF02C9FFFF02C8FFFF02CBFFFF02CAFFFFFFFFFFFF02CC +FFFFFFFFFFFFFFFFFFFF02CDFFFFFFFFFFFF02CFFFFF02CEFFFF02D1FFFF02D0FFFF02D3FFFF02D2FFFF02D5FFFF02D4 +FFFF02D7FFFF02D6FFFF02D9FFFF02D8FFFF02DBFFFF02DAFFFF02DDFFFF02DCFFFF02DFFFFF02DEFFFF02E1FFFF02E0 +FFFF02E3FFFF02E2FFFF02E5FFFF02E4FFFF02E7FFFF02E6FFFF02E9FFFF02E8FFFF02EBFFFF02EAFFFF02EDFFFF02EC +FFFF02EFFFFF02EEFFFF02F1FFFF02F0FFFF02F3FFFF02F2FFFF02F5FFFF02F4FFFF02F7FFFF02F6FFFF02F9FFFF02F8 +FFFF02FBFFFF02FAFFFF02FDFFFF02FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0301030002FF02FE0305030403030302 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0309030803070306FFFFFFFF030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +030F030E030D030C0313031203110310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0317031603150314031B031A03190318 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF031F031E031D031CFFFFFFFF03210320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0323FFFF0322FFFF0325FFFF0324FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0329032803270326032D032C032B032A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03310330032F032E0335033403330332FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0339033803370336033D033C033B033A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03410340033F033E0345034403430342FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0349034803470346FFFFFFFFFFFF034AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF034E034D034C034BFFFFFFFFFFFF034F +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0353035203510350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0357035603550354FFFFFFFFFFFF0358FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035C035B035A0359FFFFFFFFFFFF035D +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF035EFFFFFFFF0360035FFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0361FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03650364036303620369036803670366036D036C036B036A03710370036F036EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0372FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF03740373FFFFFFFF0378037703760375037C037B037A03790380037F037E037D0384038303820381 +0388038703860385038C038B038A0389FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0390038F038E038D03940393039203910398039703960395039C039B039A0399 +03A0039F039E039D03A403A303A203A103A803A703A603A503AC03AB03AA03A903B003AF03AE03AD03B403B303B203B1 +03B803B703B603B503BC03BB03BA03B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03BF03BEFFFF03BD03C1FFFFFFFF03C003C3FFFF03C2FFFF03C603C503C4FFFF +FFFF03C8FFFF03C7FFFFFFFF03C9FFFFFFFFFFFFFFFFFFFF03CB03CAFFFFFFFFFFFF03CDFFFF03CCFFFF03CFFFFF03CE +FFFF03D1FFFF03D0FFFF03D3FFFF03D2FFFF03D5FFFF03D4FFFF03D7FFFF03D6FFFF03D9FFFF03D8FFFF03DBFFFF03DA +FFFF03DDFFFF03DCFFFF03DFFFFF03DEFFFF03E1FFFF03E0FFFF03E3FFFF03E2FFFF03E5FFFF03E4FFFF03E7FFFF03E6 +FFFF03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF03F1FFFF03F0FFFF03F3FFFF03F2 +FFFF03F5FFFF03F4FFFF03F7FFFF03F6FFFF03F9FFFF03F8FFFF03FBFFFF03FAFFFF03FDFFFF03FCFFFFFFFFFFFFFFFF +03FEFFFFFFFFFFFFFFFFFFFF03FFFFFFFFFF0400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFF0402FFFF0401FFFF0404FFFF0403FFFF0406FFFF0405FFFF0408FFFF0407FFFF040AFFFF0409FFFF040CFFFF040B +FFFF040EFFFF040DFFFF0410FFFF040FFFFF0412FFFF0411FFFF0414FFFF0413FFFF0416FFFF0415FFFFFFFFFFFF0417 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0419FFFF0418FFFF041BFFFF041A +FFFF041DFFFF041CFFFF041FFFFF041EFFFF0421FFFF0420FFFF0423FFFF0422FFFF0425FFFF0424FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0426FFFFFFFFFFFF0428FFFF0427 +FFFF042AFFFF0429FFFF042CFFFF042BFFFF042DFFFFFFFFFFFF042FFFFF042EFFFF0431FFFF0430FFFF0433FFFF0432 +FFFF0435FFFF0434FFFF0437FFFF0436FFFF0439FFFF0438FFFF043BFFFF043AFFFF043DFFFF043CFFFF043FFFFF043E +FFFF0441FFFF0440FFFF0443FFFF0442FFFF0445FFFF0444FFFF0447FFFF0446FFFF0449FFFF0448FFFF044BFFFF044A +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF044DFFFF044CFFFFFFFF044F044EFFFFFFFF0451FFFF0450FFFF0453FFFF0452 +0454FFFFFFFFFFFFFFFFFFFF0455FFFFFFFF0457FFFF0456FFFF0458FFFFFFFFFFFF045AFFFF0459FFFF045CFFFF045B +FFFF045EFFFF045DFFFF0460FFFF045F04630462FFFF0461FFFF046604650464046A046904680467FFFF046CFFFF046B +FFFF046EFFFF046DFFFF0470FFFF046FFFFF0472FFFF047104760475047404730478FFFF0477FFFFFFFFFFFFFFFF0479 +FFFFFFFFFFFF047AFFFF047BFFFFFFFFFFFF047DFFFF047CFFFFFFFFFFFF047EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF047FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF048204810480FFFF0486048504840483048A048904880487048E048D048C048B +049204910490048F0496049504940493FFFF049904980497FFFFFFFFFFFFFFFF049D049C049B049A04A104A0049F049E +04A504A404A304A204A904A804A704A604AD04AC04AB04AA04B104B004AF04AE04B504B404B304B204B904B804B704B6 +04BD04BC04BB04BA04C104C004BF04BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04C504C404C304C204C904C804C704C604CD04CC04CB04CA04D104D004CF04CE +04D504D404D304D204D904D804D704D604DD04DC04DB04DA04E104E004DF04DE04E504E404E304E2FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04E904E804E704E604ED04EC04EB04EA +FFFF04F004EF04EE04F404F304F204F104F804F704F604F504FC04FB04FA04F9FFFF04FF04FE04FD0503050205010500 +FFFF050605050504FFFFFFFF05080507FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +050C050B050A05090510050F050E050D05140513051205110518051705160515051C051B051A05190520051F051E051D +05240523052205210528052705260525052C052B052A05290530052F052E052D05340533053205310538053705360535 +FFFF053B053A0539FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF053F053E053D053C05430542054105400547054605450544054B054A05490548 +054F054E054D054CFFFFFFFF05510550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05550554055305520559055805570556 +055D055C055B055A05610560055F055E05650564056305620569056805670566056D056C056B056A05710570056F056E +05750574057305720579057805770576057D057C057B057A05810580057F057E05850584058305820589058805870586 +058D058C058B058A05910590058F058EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05950594059305920599059805970596 +059D059C059B059A05A105A0059F059E05A505A405A305A205A905A805A705A605AD05AC05AB05AA05B105B005AF05AE +FFFFFFFF05B305B2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); -//10368 bytes +//10624 bytes enum toTitleSimpleIndexTrieEntries = TrieEntry!(ushort, 8, 7, 6)(x" 000000000000000000000000000000200000000000000140", x" -000000000000010000000000000004800000000000000F40", +000000000000010000000000000004800000000000000FC0", x" 040203020202010007020202060202050202020202020202020202020202020202020202020202020202020202020202 020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202 @@ -7719,17 +7874,17 @@ x" 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000320000 000000000000000000000000000000000000000000000000000000000000000000350000003400330000003600000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003700000000000000000039003800000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -003800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +003A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000003900000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000003B00000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000003B003A0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000003D003C0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 @@ -7755,152 +7910,158 @@ FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF001E001D001C001B 005EFFFFFFFF005D0060FFFF005FFFFF0062FFFF0061FFFF0064FFFF0063FFFF0066FFFF0065FFFF0068FFFF0067FFFF 006AFFFF0069FFFF006CFFFF006BFFFF006EFFFF006DFFFF0070FFFF006FFFFF0072FFFF0071FFFF0074FFFF0073FFFF FFFF0075FFFFFFFF00780077FFFF0076007AFFFFFFFF0079FFFFFFFF007BFFFFFFFFFFFFFFFF007CFFFFFFFFFFFF007D -FFFF007EFFFFFFFFFFFFFFFF007FFFFFFFFF00810080FFFFFFFF0082FFFFFFFF0084FFFF0083FFFFFFFFFFFF0085FFFF -FFFFFFFFFFFF0086FFFFFFFF0087FFFFFFFFFFFFFFFF0088FFFF008AFFFF0089FFFFFFFF008BFFFF008DFFFF008CFFFF -FFFFFFFFFFFFFFFF00910090008F008E0095009400930092FFFF0097FFFF0096FFFF0099FFFF0098FFFF009BFFFF009A -FFFF009DFFFF009C00A0FFFF009F009E00A2FFFF00A1FFFF00A4FFFF00A3FFFF00A6FFFF00A5FFFF00A8FFFF00A7FFFF -00AB00AA00A9FFFFFFFFFFFF00ACFFFF00AEFFFF00ADFFFF00B0FFFF00AFFFFF00B2FFFF00B1FFFF00B4FFFF00B3FFFF -00B6FFFF00B5FFFF00B8FFFF00B7FFFF00BAFFFF00B9FFFF00BCFFFF00BBFFFF00BEFFFF00BDFFFF00C0FFFF00BFFFFF -00C1FFFFFFFFFFFF00C3FFFF00C2FFFF00C5FFFF00C4FFFF00C7FFFF00C6FFFF00C9FFFF00C8FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF00CBFFFFFFFF00CAFFFF00CDFFFF00CC00CEFFFFFFFFFFFF00D0FFFF00CFFFFF00D2FFFF00D1FFFF -00D600D500D400D300D900D8FFFF00D700DBFFFF00DAFFFFFFFFFFFFFFFF00DC00DFFFFF00DE00DDFFFF00E100E0FFFF -00E500E400E300E200E7FFFFFFFF00E6FFFF00E900E8FFFFFFFFFFFF00EAFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EBFFFF -00EE00EDFFFF00EC00EFFFFFFFFFFFFF00F300F200F100F0FFFFFFFFFFFF00F4FFFF00F5FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF00F700F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F8FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFF00F9FFFF00FBFFFFFFFFFFFF -00FCFFFFFFFFFFFFFFFFFFFF00FE00FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF01020101010000FF010501040103FFFF0109010801070106010D010C010B010A01110110010F010E -01150114011301120119011801170116011D011C011B011AFFFF0120011F011EFFFFFFFF01220121012501240123FFFF -0127FFFF0126FFFF0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF0131FFFF0130FFFF -0135013401330132FFFFFFFF0136FFFF0138FFFFFFFF0137FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013C013B013A01390140013F013E013D -01440143014201410148014701460145014C014B014A01490150014F014E014D01540153015201510158015701560155 -015C015B015A01590160015F015E015D01640163016201610168016701660165016AFFFF0169FFFF016CFFFF016BFFFF -016EFFFF016DFFFF0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF0178FFFF0177FFFF -FFFFFFFF0179FFFFFFFFFFFFFFFFFFFF017AFFFFFFFFFFFF017CFFFF017BFFFF017EFFFF017DFFFF0180FFFF017FFFFF -0182FFFF0181FFFF0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF018CFFFF018BFFFF -018EFFFF018DFFFF0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFFFFFF0195FFFFFFFFFFFF0197FFFF0196 -FFFF0199FFFF0198019C019BFFFF019A019EFFFF019DFFFF01A0FFFF019FFFFF01A2FFFF01A1FFFF01A4FFFF01A3FFFF -01A6FFFF01A5FFFF01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF01B0FFFF01AFFFFF -01B2FFFF01B1FFFF01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF01BCFFFF01BBFFFF -01BEFFFF01BDFFFF01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF01C8FFFF01C7FFFF -01CAFFFF01C9FFFF01CCFFFF01CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01CF01CE01CDFFFF01D301D201D101D001D701D601D501D401DB01DA01D901D8 -01DF01DE01DD01DC01E301E201E101E001E701E601E501E401EB01EA01E901E801EF01EE01ED01ECFFFF01F201F101F0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -01F601F501F401F301FA01F901F801F701FE01FD01FC01FB02020201020001FF0206020502040203020A020902080207 -020E020D020C020B021202110210020F0216021502140213021A021902180217FFFF021D021C021B0220021F021EFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0224022302220221FFFFFFFF02260225022A022902280227022E022D022C022B -FFFFFFFFFFFF022FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0230FFFFFFFFFFFF0231FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0232FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0234FFFF0233FFFF0236FFFF0235FFFF -0238FFFF0237FFFF023AFFFF0239FFFF023CFFFF023BFFFF023EFFFF023DFFFF0240FFFF023FFFFF0242FFFF0241FFFF -0244FFFF0243FFFF0246FFFF0245FFFF0248FFFF0247FFFF024AFFFF0249FFFF024CFFFF024BFFFF024EFFFF024DFFFF -0250FFFF024FFFFF0252FFFF0251FFFF0254FFFF0253FFFF0256FFFF0255FFFF0258FFFF0257FFFF025AFFFF0259FFFF -025CFFFF025BFFFF025EFFFF025DFFFF0260FFFF025FFFFF0262FFFF0261FFFF0264FFFF0263FFFF0266FFFF0265FFFF -0268FFFF0267FFFF026AFFFF0269FFFF026CFFFF026BFFFF026EFFFF026DFFFF0270FFFF026FFFFF0272FFFF0271FFFF -0274FFFF0273FFFF0276FFFF0275FFFF0278FFFF0277FFFF027AFFFF0279FFFF027CFFFF027BFFFFFFFFFFFF027DFFFF -027EFFFFFFFFFFFFFFFFFFFFFFFFFFFF0280FFFF027FFFFF0282FFFF0281FFFF0284FFFF0283FFFF0286FFFF0285FFFF -0288FFFF0287FFFF028AFFFF0289FFFF028CFFFF028BFFFF028EFFFF028DFFFF0290FFFF028FFFFF0292FFFF0291FFFF -0294FFFF0293FFFF0296FFFF0295FFFF0298FFFF0297FFFF029AFFFF0299FFFF029CFFFF029BFFFF029EFFFF029DFFFF -02A0FFFF029FFFFF02A2FFFF02A1FFFF02A4FFFF02A3FFFF02A6FFFF02A5FFFF02A8FFFF02A7FFFF02AAFFFF02A9FFFF -02ACFFFF02ABFFFF02AEFFFF02ADFFFF02B202B102B002AF02B602B502B402B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02BA02B902B802B7FFFFFFFF02BC02BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C002BF02BE02BD02C402C302C202C1 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C802C702C602C502CC02CB02CA02C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02D002CF02CE02CDFFFFFFFF02D202D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D4FFFF02D3FFFF02D6FFFF02D5FFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DA02D902D802D702DE02DD02DC02DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -02E202E102E002DF02E602E502E402E302EA02E902E802E7FFFFFFFF02EC02EB02F002EF02EE02ED02F402F302F202F1 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02F802F702F602F502FC02FB02FA02F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -030002FF02FE02FD0304030303020301FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0307FFFF03060305FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFF0308FFFFFFFF0309FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFF030B030AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030D030CFFFFFFFF030EFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03140313031203110318031703160315031C031B031A03190320031F031E031DFFFFFFFFFFFFFFFFFFFFFFFFFFFF0321 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03250324032303220329032803270326032D032C032B032A03310330032F032E03350334033303320339033803370336 -FFFFFFFF033B033AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -033F033E033D033C03430342034103400347034603450344034B034A03490348034F034E034D034C0353035203510350 -0357035603550354035B035A03590358035F035E035D035C03630362036103600367036603650364036B036A03690368 -FFFFFFFF036CFFFFFFFF036E036DFFFFFFFF0370FFFF036FFFFFFFFFFFFF03710372FFFFFFFFFFFFFFFF0373FFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0375FFFF0374FFFF0377FFFF0376FFFF0379FFFF0378FFFF037BFFFF037AFFFF -037DFFFF037CFFFF037FFFFF037EFFFF0381FFFF0380FFFF0383FFFF0382FFFF0385FFFF0384FFFF0387FFFF0386FFFF -0389FFFF0388FFFF038BFFFF038AFFFF038DFFFF038CFFFF038FFFFF038EFFFF0391FFFF0390FFFF0393FFFF0392FFFF -0395FFFF0394FFFF0397FFFF0396FFFF0399FFFF0398FFFF039BFFFF039AFFFF039DFFFF039CFFFF039FFFFF039EFFFF -03A1FFFF03A0FFFF03A3FFFF03A2FFFF03A5FFFF03A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03A7FFFF03A6 -03A8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AC03AB03AA03A903B003AF03AE03AD -03B403B303B203B103B803B703B603B503BC03BB03BA03B903C003BF03BE03BD03C403C303C203C103C803C703C603C5 -03CC03CB03CA03C903CFFFFF03CE03CDFFFFFFFFFFFFFFFFFFFFFFFF03D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D2FFFF03D1FFFF03D4FFFF03D3FFFF03D6FFFF03D5FFFF03D8FFFF03D7FFFF -03DAFFFF03D9FFFF03DCFFFF03DBFFFF03DEFFFF03DDFFFF03E0FFFF03DFFFFF03E2FFFF03E1FFFF03E4FFFF03E3FFFF -03E6FFFF03E5FFFFFFFFFFFF03E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03E9FFFF03E8FFFF03EBFFFF03EAFFFF03EDFFFF03ECFFFF03EFFFFF03EEFFFF03F1FFFF03F0FFFF03F3FFFF03F2FFFF -03F5FFFF03F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -03F6FFFFFFFFFFFF03F8FFFF03F7FFFF03FAFFFF03F9FFFF03FCFFFF03FBFFFF03FDFFFFFFFFFFFF03FFFFFF03FEFFFF -0401FFFF0400FFFF0403FFFF0402FFFF0405FFFF0404FFFF0407FFFF0406FFFF0409FFFF0408FFFF040BFFFF040AFFFF -040DFFFF040CFFFF040FFFFF040EFFFF0411FFFF0410FFFF0413FFFF0412FFFF0415FFFF0414FFFF0417FFFF0416FFFF -0419FFFF0418FFFF041BFFFF041AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041CFFFFFFFF041EFFFFFFFF041D -0420FFFF041FFFFF0422FFFF0421FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04230425FFFF0424FFFF0427FFFFFFFF0426 -0429FFFF0428FFFF042BFFFF042AFFFF042DFFFF042CFFFF042FFFFF042EFFFFFFFFFFFF0430FFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF0432FFFF0431FFFF0434FFFF0433FFFF0436FFFF0435FFFF0438FFFF0437FFFFFFFFFFFFFFFFFFFF -FFFF043AFFFF0439FFFFFFFFFFFFFFFFFFFFFFFF043BFFFF043CFFFFFFFFFFFFFFFFFFFF043DFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF043EFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -043FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04430442044104400447044604450444044B044A04490448044F044E044D044C -04530452045104500457045604550454045B045A04590458045F045E045D045C04630462046104600467046604650464 -046B046A04690468046F046E046D046C04730472047104700477047604750474047B047A04790478047F047E047D047C -04830482048104800487048604850484048B048A04890488048F048E048D048C049204910490FFFF0496049504940493 -049A049904980497049E049D049C049B04A204A104A0049F04A604A504A404A3FFFF04A904A804A7FFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -04AD04AC04AB04AA04B104B004AF04AE04B504B404B304B204B904B804B704B604BD04BC04BB04BA04C104C004BF04BE -04C504C404C304C204C904C804C704C604CD04CC04CB04CA04D104D004CF04CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04D504D404D304D204D904D804D704D6 -04DD04DC04DB04DA04E104E004DF04DE04E504E404E304E204E904E804E704E604ED04EC04EB04EA04F104F004EF04EE -04F504F404F304F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFF04F6FFFFFFFFFFFF04FA04F904F804F704FE04FD04FC04FB0501FFFF050004FF0505050405030502 -0509050805070506050D050C050B050A0510FFFF050F050E05140513051205110517FFFF05160515FFFFFFFFFFFF0518 -051C051B051A05190520051F051E051D05240523052205210528052705260525052C052B052A05290530052F052E052D -05340533053205310538053705360535053C053B053A05390540053F053E053D05440543054205410548054705460545 -FFFF054B054A0549FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF054F054E054D054C0553055205510550 -0557055605550554055B055A05590558055F055E055D055C05630562056105600567056605650564056B056A05690568 +FFFF007EFFFFFFFFFFFFFFFF007FFFFF008200810080FFFFFFFF0083FFFFFFFF0085FFFF0084FFFFFFFFFFFF0086FFFF +FFFFFFFFFFFF0087FFFFFFFF0088FFFFFFFFFFFFFFFF0089FFFF008BFFFF008AFFFFFFFF008CFFFF008EFFFF008DFFFF +FFFFFFFFFFFFFFFF009200910090008F0096009500940093FFFF0098FFFF0097FFFF009AFFFF0099FFFF009CFFFF009B +FFFF009EFFFF009D00A1FFFF00A0009F00A3FFFF00A2FFFF00A5FFFF00A4FFFF00A7FFFF00A6FFFF00A9FFFF00A8FFFF +00AC00AB00AAFFFFFFFFFFFF00ADFFFF00AFFFFF00AEFFFF00B1FFFF00B0FFFF00B3FFFF00B2FFFF00B5FFFF00B4FFFF +00B7FFFF00B6FFFF00B9FFFF00B8FFFF00BBFFFF00BAFFFF00BDFFFF00BCFFFF00BFFFFF00BEFFFF00C1FFFF00C0FFFF +00C2FFFFFFFFFFFF00C4FFFF00C3FFFF00C6FFFF00C5FFFF00C8FFFF00C7FFFF00CAFFFF00C9FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF00CCFFFFFFFF00CBFFFF00CEFFFF00CD00CFFFFFFFFFFFFF00D1FFFF00D0FFFF00D3FFFF00D2FFFF +00D700D600D500D400DA00D9FFFF00D800DCFFFF00DBFFFFFFFFFFFFFFFF00DD00E0FFFF00DF00DEFFFF00E300E200E1 +00E700E600E500E400E9FFFFFFFF00E8FFFF00EB00EAFFFFFFFFFFFF00ECFFFFFFFFFFFFFFFFFFFFFFFFFFFF00EDFFFF +00F000EFFFFF00EE00F1FFFFFFFFFFFF00F500F400F300F2FFFFFFFFFFFF00F6FFFF00F7FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF00F900F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FAFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FCFFFF00FBFFFF00FDFFFFFFFFFFFF +00FEFFFFFFFFFFFFFFFFFFFF010000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0104010301020101010701060105FFFF010B010A01090108010F010E010D010C0113011201110110 +0117011601150114011B011A01190118011F011E011D011CFFFF012201210120FFFFFFFF01240123012701260125FFFF +0129FFFF0128FFFF012BFFFF012AFFFF012DFFFF012CFFFF012FFFFF012EFFFF0131FFFF0130FFFF0133FFFF0132FFFF +0137013601350134FFFFFFFF0138FFFF013AFFFFFFFF0139FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF013E013D013C013B014201410140013F +0146014501440143014A014901480147014E014D014C014B015201510150014F0156015501540153015A015901580157 +015E015D015C015B016201610160015F0166016501640163016A016901680167016CFFFF016BFFFF016EFFFF016DFFFF +0170FFFF016FFFFF0172FFFF0171FFFF0174FFFF0173FFFF0176FFFF0175FFFF0178FFFF0177FFFF017AFFFF0179FFFF +FFFFFFFF017BFFFFFFFFFFFFFFFFFFFF017CFFFFFFFFFFFF017EFFFF017DFFFF0180FFFF017FFFFF0182FFFF0181FFFF +0184FFFF0183FFFF0186FFFF0185FFFF0188FFFF0187FFFF018AFFFF0189FFFF018CFFFF018BFFFF018EFFFF018DFFFF +0190FFFF018FFFFF0192FFFF0191FFFF0194FFFF0193FFFF0196FFFF0195FFFFFFFF0197FFFFFFFFFFFF0199FFFF0198 +FFFF019BFFFF019A019E019DFFFF019C01A0FFFF019FFFFF01A2FFFF01A1FFFF01A4FFFF01A3FFFF01A6FFFF01A5FFFF +01A8FFFF01A7FFFF01AAFFFF01A9FFFF01ACFFFF01ABFFFF01AEFFFF01ADFFFF01B0FFFF01AFFFFF01B2FFFF01B1FFFF +01B4FFFF01B3FFFF01B6FFFF01B5FFFF01B8FFFF01B7FFFF01BAFFFF01B9FFFF01BCFFFF01BBFFFF01BEFFFF01BDFFFF +01C0FFFF01BFFFFF01C2FFFF01C1FFFF01C4FFFF01C3FFFF01C6FFFF01C5FFFF01C8FFFF01C7FFFF01CAFFFF01C9FFFF +01CCFFFF01CBFFFF01CEFFFF01CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01D101D001CFFFFF01D501D401D301D201D901D801D701D601DD01DC01DB01DA +01E101E001DF01DE01E501E401E301E201E901E801E701E601ED01EC01EB01EA01F101F001EF01EEFFFF01F401F301F2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +01F801F701F601F501FC01FB01FA01F9020001FF01FE01FD02040203020202010208020702060205020C020B020A0209 +0210020F020E020D02140213021202110218021702160215021C021B021A0219FFFF021F021E021D022202210220FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0226022502240223FFFFFFFF02280227022C022B022A02290230022F022E022D +FFFF0232FFFF0231FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0233FFFFFFFFFFFF0234FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0235FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0237FFFF0236FFFF0239FFFF0238FFFF +023BFFFF023AFFFF023DFFFF023CFFFF023FFFFF023EFFFF0241FFFF0240FFFF0243FFFF0242FFFF0245FFFF0244FFFF +0247FFFF0246FFFF0249FFFF0248FFFF024BFFFF024AFFFF024DFFFF024CFFFF024FFFFF024EFFFF0251FFFF0250FFFF +0253FFFF0252FFFF0255FFFF0254FFFF0257FFFF0256FFFF0259FFFF0258FFFF025BFFFF025AFFFF025DFFFF025CFFFF +025FFFFF025EFFFF0261FFFF0260FFFF0263FFFF0262FFFF0265FFFF0264FFFF0267FFFF0266FFFF0269FFFF0268FFFF +026BFFFF026AFFFF026DFFFF026CFFFF026FFFFF026EFFFF0271FFFF0270FFFF0273FFFF0272FFFF0275FFFF0274FFFF +0277FFFF0276FFFF0279FFFF0278FFFF027BFFFF027AFFFF027DFFFF027CFFFF027FFFFF027EFFFFFFFFFFFF0280FFFF +0281FFFFFFFFFFFFFFFFFFFFFFFFFFFF0283FFFF0282FFFF0285FFFF0284FFFF0287FFFF0286FFFF0289FFFF0288FFFF +028BFFFF028AFFFF028DFFFF028CFFFF028FFFFF028EFFFF0291FFFF0290FFFF0293FFFF0292FFFF0295FFFF0294FFFF +0297FFFF0296FFFF0299FFFF0298FFFF029BFFFF029AFFFF029DFFFF029CFFFF029FFFFF029EFFFF02A1FFFF02A0FFFF +02A3FFFF02A2FFFF02A5FFFF02A4FFFF02A7FFFF02A6FFFF02A9FFFF02A8FFFF02ABFFFF02AAFFFF02ADFFFF02ACFFFF +02AFFFFF02AEFFFF02B1FFFF02B0FFFF02B502B402B302B202B902B802B702B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02BD02BC02BB02BAFFFFFFFF02BF02BEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02C302C202C102C002C702C602C502C4 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02CB02CA02C902C802CF02CE02CD02CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02D302D202D102D0FFFFFFFF02D502D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02D7FFFF02D6FFFF02D9FFFF02D8FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02DD02DC02DB02DA02E102E002DF02DEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +02E502E402E302E202E902E802E702E602ED02EC02EB02EAFFFFFFFF02EF02EE02F302F202F102F002F702F602F502F4 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02FB02FA02F902F802FF02FE02FD02FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03030302030103000307030603050304FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF030AFFFF03090308FFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFF030BFFFFFFFF030CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFF030E030DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0310030FFFFFFFFF0311FFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0312FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0313FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0317031603150314031B031A03190318031F031E031D031C0323032203210320FFFFFFFFFFFFFFFFFFFFFFFFFFFF0324 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0328032703260325032C032B032A03290330032F032E032D03340333033203310338033703360335033C033B033A0339 +FFFFFFFF033E033DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +034203410340033F0346034503440343034A034903480347034E034D034C034B035203510350034F0356035503540353 +035A035903580357035E035D035C035B036203610360035F0366036503640363036A036903680367036E036D036C036B +FFFFFFFF036FFFFFFFFF03710370FFFFFFFF0373FFFF0372FFFFFFFFFFFF03740375FFFFFFFFFFFFFFFF0376FFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0378FFFF0377FFFF037AFFFF0379FFFF037CFFFF037BFFFF037EFFFF037DFFFF +0380FFFF037FFFFF0382FFFF0381FFFF0384FFFF0383FFFF0386FFFF0385FFFF0388FFFF0387FFFF038AFFFF0389FFFF +038CFFFF038BFFFF038EFFFF038DFFFF0390FFFF038FFFFF0392FFFF0391FFFF0394FFFF0393FFFF0396FFFF0395FFFF +0398FFFF0397FFFF039AFFFF0399FFFF039CFFFF039BFFFF039EFFFF039DFFFF03A0FFFF039FFFFF03A2FFFF03A1FFFF +03A4FFFF03A3FFFF03A6FFFF03A5FFFF03A8FFFF03A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AAFFFF03A9 +03ABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03AF03AE03AD03AC03B303B203B103B0 +03B703B603B503B403BB03BA03B903B803BF03BE03BD03BC03C303C203C103C003C703C603C503C403CB03CA03C903C8 +03CF03CE03CD03CC03D2FFFF03D103D0FFFFFFFFFFFFFFFFFFFFFFFF03D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03D5FFFF03D4FFFF03D7FFFF03D6FFFF03D9FFFF03D8FFFF03DBFFFF03DAFFFF +03DDFFFF03DCFFFF03DFFFFF03DEFFFF03E1FFFF03E0FFFF03E3FFFF03E2FFFF03E5FFFF03E4FFFF03E7FFFF03E6FFFF +03E9FFFF03E8FFFFFFFFFFFF03EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03ECFFFF03EBFFFF03EEFFFF03EDFFFF03F0FFFF03EFFFFF03F2FFFF03F1FFFF03F4FFFF03F3FFFF03F6FFFF03F5FFFF +03F8FFFF03F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +03F9FFFFFFFFFFFF03FBFFFF03FAFFFF03FDFFFF03FCFFFF03FFFFFF03FEFFFF0400FFFFFFFFFFFF0402FFFF0401FFFF +0404FFFF0403FFFF0406FFFF0405FFFF0408FFFF0407FFFF040AFFFF0409FFFF040CFFFF040BFFFF040EFFFF040DFFFF +0410FFFF040FFFFF0412FFFF0411FFFF0414FFFF0413FFFF0416FFFF0415FFFF0418FFFF0417FFFF041AFFFF0419FFFF +041CFFFF041BFFFF041EFFFF041DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041FFFFFFFFF0421FFFFFFFF0420 +0423FFFF0422FFFF0425FFFF0424FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04260428FFFF0427FFFF042AFFFFFFFF0429 +042CFFFF042BFFFF042EFFFF042DFFFF0430FFFF042FFFFF0432FFFF0431FFFFFFFFFFFF0433FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF0435FFFF0434FFFF0437FFFF0436FFFF0439FFFF0438FFFF043BFFFF043AFFFFFFFFFFFFFFFFFFFF +FFFF043DFFFF043CFFFFFFFF043EFFFFFFFFFFFF043FFFFF0440FFFFFFFFFFFF0442FFFF0441FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0443FFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +0444FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0448044704460445044C044B044A04490450044F044E044D0454045304520451 +0458045704560455045C045B045A04590460045F045E045D04640463046204610468046704660465046C046B046A0469 +0470046F046E046D04740473047204710478047704760475047C047B047A04790480047F047E047D0484048304820481 +0488048704860485048C048B048A04890490048F048E048D0494049304920491049704960495FFFF049B049A04990498 +049F049E049D049C04A304A204A104A004A704A604A504A404AB04AA04A904A8FFFF04AE04AD04ACFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF056F056E056D056C0573057205710570 -0577057605750574057B057A05790578057F057E057D057C05830582058105800587058605850584058B058A05890588 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF058D058CFFFFFFFF05910590058F058E05950594059305920599059805970596 -059D059C059B059A05A105A0059F059E05A505A405A305A205A905A805A705A605AD05AC05AB05AAFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +04B204B104B004AF04B604B504B404B304BA04B904B804B704BE04BD04BC04BB04C204C104C004BF04C604C504C404C3 +04CA04C904C804C704CE04CD04CC04CB04D204D104D004CF04D604D504D404D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04DA04D904D804D704DE04DD04DC04DB +04E204E104E004DF04E604E504E404E304EA04E904E804E704EE04ED04EC04EB04F204F104F004EF04F604F504F404F3 +04FA04F904F804F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFF04FBFFFFFFFFFFFF04FF04FE04FD04FC05030502050105000506FFFF05050504050A050905080507 +050E050D050C050B051205110510050F0515FFFF051405130519051805170516051CFFFF051B051AFFFFFFFFFFFF051D +05210520051F051E05250524052305220529052805270526052D052C052B052A05310530052F052E0535053405330532 +0539053805370536053D053C053B053A05410540053F053E05450544054305420549054805470546054D054C054B054A +FFFF0550054F054EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05540553055205510558055705560555 +055C055B055A05590560055F055E055D0564056305620561FFFFFFFF05660565FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +056A056905680567056E056D056C056B057205710570056F0576057505740573057A057905780577057E057D057C057B +058205810580057F0586058505840583FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +058A058905880587058E058D058C058B059205910590058F0596059505940593059A059905980597059E059D059C059B +05A205A105A0059F05A605A505A405A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05A805A7FFFFFFFF05AC05AB05AA05A9 +05B005AF05AE05AD05B405B305B205B105B805B705B605B505BC05BB05BA05B905C005BF05BE05BD05C405C305C205C1 +05C805C705C605C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", ); immutable(uint)[] toUpperTable() nothrow @nogc pure @safe { static immutable uint[] t = @@ -7915,136 +8076,138 @@ x" 0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C 0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D -00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 -000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C4000001C4 -000001C7000001C7000001CA000001CA000001CD000001CF000001D1000001D3000001D5000001D7000001D9000001DB -0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC000001EE000001F1000001F1 -000001F4000001F8000001FA000001FC000001FE00000200000002020000020400000206000002080000020A0000020C -0000020E00000210000002120000021400000216000002180000021A0000021C0000021E000002220000022400000226 -000002280000022A0000022C0000022E00000230000002320000023B00002C7E00002C7F000002410000024600000248 -0000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186000001890000018A0000018F00000190 -0000A7AB000001930000A7AC000001940000A78D0000A7AA00000197000001960000A7AE00002C620000A7AD0000019C -00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1000001AE00000244000001B1000001B2 -00000245000001B70000A7B20000A7B000000399000003700000037200000376000003FD000003FE000003FF00000386 -00000388000003890000038A000003910000039200000393000003940000039500000396000003970000039800000399 -0000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1000003A3000003A3000003A4000003A5 -000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E0000038F0000039200000398000003A6 -000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2000003E4000003E6000003E8000003EA -000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7000003FA000004100000041100000412 -000004130000041400000415000004160000041700000418000004190000041A0000041B0000041C0000041D0000041E -0000041F000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A -0000042B0000042C0000042D0000042E0000042F00000400000004010000040200000403000004040000040500000406 -0000040700000408000004090000040A0000040B0000040C0000040D0000040E0000040F000004600000046200000464 -00000466000004680000046A0000046C0000046E00000470000004720000047400000476000004780000047A0000047C -0000047E000004800000048A0000048C0000048E00000490000004920000049400000496000004980000049A0000049C -0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC000004AE000004B0000004B2000004B4 -000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5000004C7000004C9000004CB000004CD -000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC000004DE000004E0000004E2000004E4 -000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4000004F6000004F8000004FA000004FC -000004FE00000500000005020000050400000506000005080000050A0000050C0000050E000005100000051200000514 -00000516000005180000051A0000051C0000051E00000520000005220000052400000526000005280000052A0000052C -0000052E0000053100000532000005330000053400000535000005360000053700000538000005390000053A0000053B -0000053C0000053D0000053E0000053F0000054000000541000005420000054300000544000005450000054600000547 -00000548000005490000054A0000054B0000054C0000054D0000054E0000054F00000550000005510000055200000553 -00000554000005550000055600001C9000001C9100001C9200001C9300001C9400001C9500001C9600001C9700001C98 -00001C9900001C9A00001C9B00001C9C00001C9D00001C9E00001C9F00001CA000001CA100001CA200001CA300001CA4 -00001CA500001CA600001CA700001CA800001CA900001CAA00001CAB00001CAC00001CAD00001CAE00001CAF00001CB0 -00001CB100001CB200001CB300001CB400001CB500001CB600001CB700001CB800001CB900001CBA00001CBD00001CBE -00001CBF000013F0000013F1000013F2000013F3000013F4000013F500000412000004140000041E0000042100000422 -000004220000042A000004620000A64A0000A77D00002C630000A7C600001E0000001E0200001E0400001E0600001E08 -00001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E1800001E1A00001E1C00001E1E00001E20 -00001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E3000001E3200001E3400001E3600001E38 -00001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E4800001E4A00001E4C00001E4E00001E50 -00001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E6000001E6200001E6400001E6600001E68 -00001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E7800001E7A00001E7C00001E7E00001E80 -00001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E9000001E9200001E9400001E6000001EA0 -00001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB000001EB200001EB400001EB600001EB8 -00001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC800001ECA00001ECC00001ECE00001ED0 -00001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE000001EE200001EE400001EE600001EE8 -00001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF800001EFA00001EFC00001EFE00001F08 -00001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F1800001F1900001F1A00001F1B00001F1C -00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E00001F2F00001F3800001F3900001F3A -00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A00001F4B00001F4C00001F4D00001F59 -00001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C00001F6D00001F6E00001F6F00001FBA -00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF800001FF900001FEA00001FEB00001FFA -00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A -00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE -00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD900001FE800001FE900001FEC00001FFC -00002132000021600000216100002162000021630000216400002165000021660000216700002168000021690000216A -0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7000024B8000024B9000024BA000024BB -000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3000024C4000024C5000024C6000024C7 -000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF00002C0000002C0100002C0200002C03 -00002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B00002C0C00002C0D00002C0E00002C0F -00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C1700002C1800002C1900002C1A00002C1B -00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C2300002C2400002C2500002C2600002C27 -00002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F00002C600000023A0000023E00002C67 -00002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C8600002C8800002C8A00002C8C00002C8E -00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E00002CA000002CA200002CA400002CA6 -00002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB600002CB800002CBA00002CBC00002CBE -00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE00002CD000002CD200002CD400002CD6 -00002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED00002CF2000010A0000010A1000010A2 -000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA000010AB000010AC000010AD000010AE -000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6000010B7000010B8000010B9000010BA -000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2000010C3000010C4000010C5000010C7 -000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C0000A64E0000A6500000A6520000A654 -0000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A6640000A6660000A6680000A66A0000A66C -0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E0000A6900000A6920000A6940000A696 -0000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C0000A72E0000A7320000A7340000A736 -0000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A7460000A7480000A74A0000A74C0000A74E -0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E0000A7600000A7620000A7640000A766 -0000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A7800000A7820000A7840000A7860000A78B -0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E0000A7A00000A7A20000A7A40000A7A6 -0000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C00000A7C20000A7C70000A7C90000A7D0 -0000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3000013A4000013A5000013A6000013A7 -000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF000013B0000013B1000013B2000013B3 -000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB000013BC000013BD000013BE000013BF -000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7000013C8000013C9000013CA000013CB -000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3000013D4000013D5000013D6000013D7 -000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF000013E0000013E1000013E2000013E3 -000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB000013EC000013ED000013EE000013EF -0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF280000FF290000FF2A0000FF2B0000FF2C -0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF340000FF350000FF360000FF370000FF38 -0000FF390000FF3A00010400000104010001040200010403000104040001040500010406000104070001040800010409 -0001040A0001040B0001040C0001040D0001040E0001040F000104100001041100010412000104130001041400010415 -000104160001041700010418000104190001041A0001041B0001041C0001041D0001041E0001041F0001042000010421 -000104220001042300010424000104250001042600010427000104B0000104B1000104B2000104B3000104B4000104B5 -000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD000104BE000104BF000104C0000104C1 -000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9000104CA000104CB000104CC000104CD -000104CE000104CF000104D0000104D1000104D2000104D3000105700001057100010572000105730001057400010575 -000105760001057700010578000105790001057A0001057C0001057D0001057E0001057F000105800001058100010582 -000105830001058400010585000105860001058700010588000105890001058A0001058C0001058D0001058E0001058F -000105900001059100010592000105940001059500010C8000010C8100010C8200010C8300010C8400010C8500010C86 -00010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E00010C8F00010C9000010C9100010C92 -00010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A00010C9B00010C9C00010C9D00010C9E -00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA600010CA700010CA800010CA900010CAA -00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2000118A0000118A1000118A2000118A3 -000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB000118AC000118AD000118AE000118AF -000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7000118B8000118B9000118BA000118BB -000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E4300016E4400016E4500016E4600016E47 -00016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F00016E5000016E5100016E5200016E53 -00016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B00016E5C00016E5D00016E5E00016E5F -0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E9070001E9080001E9090001E90A0001E90B -0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E9130001E9140001E9150001E9160001E917 -0001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F0001E9200001E9210200005300000053 -0000013002000046000000460200004600000049020000460000004C0300004600000046000000490300004600000046 -0000004C0200005300000054020000530000005402000535000005520200054400000546020005440000053502000544 -0000053B0200054E00000546020005440000053D020002BC0000004E030003990000030800000301030003A500000308 -000003010200004A0000030C02000048000003310200005400000308020000570000030A020000590000030A02000041 -000002BE020003A500000313030003A50000031300000300030003A50000031300000301030003A50000031300000342 -020003910000034202000397000003420300039900000308000003000300039900000308000003010200039900000342 -030003990000030800000342030003A50000030800000300030003A50000030800000301020003A100000313020003A5 -00000342030003A50000030800000342020003A90000034202001F080000039902001F090000039902001F0A00000399 -02001F0B0000039902001F0C0000039902001F0D0000039902001F0E0000039902001F0F0000039902001F0800000399 -02001F090000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D0000039902001F0E00000399 -02001F0F0000039902001F280000039902001F290000039902001F2A0000039902001F2B0000039902001F2C00000399 -02001F2D0000039902001F2E0000039902001F2F0000039902001F280000039902001F290000039902001F2A00000399 -02001F2B0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F0000039902001F6800000399 -02001F690000039902001F6A0000039902001F6B0000039902001F6C0000039902001F6D0000039902001F6E00000399 -02001F6F0000039902001F680000039902001F690000039902001F6A0000039902001F6B0000039902001F6C00000399 -02001F6D0000039902001F6E0000039902001F6F00000399020003910000039902000391000003990200039700000399 -0200039700000399020003A900000399020003A90000039902001FBA00000399020003860000039902001FCA00000399 -020003890000039902001FFA000003990200038F00000399030003910000034200000399030003970000034200000399 -030003A90000034200000399"; +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D0000A7DC00000220 +000001A0000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C4 +000001C4000001C7000001C7000001CA000001CA000001CD000001CF000001D1000001D3000001D5000001D7000001D9 +000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC000001EE000001F1 +000001F1000001F4000001F8000001FA000001FC000001FE00000200000002020000020400000206000002080000020A +0000020C0000020E00000210000002120000021400000216000002180000021A0000021C0000021E0000022200000224 +00000226000002280000022A0000022C0000022E00000230000002320000023B00002C7E00002C7F0000024100000246 +000002480000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186000001890000018A0000018F +000001900000A7AB000001930000A7AC000001940000A7CB0000A78D0000A7AA00000197000001960000A7AE00002C62 +0000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1000001AE00000244 +000001B1000001B200000245000001B70000A7B20000A7B000000399000003700000037200000376000003FD000003FE +000003FF0000038600000388000003890000038A00000391000003920000039300000394000003950000039600000397 +00000398000003990000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1000003A3000003A3 +000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E0000038F00000392 +00000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2000003E4000003E6 +000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7000003FA00000410 +0000041100000412000004130000041400000415000004160000041700000418000004190000041A0000041B0000041C +0000041D0000041E0000041F000004200000042100000422000004230000042400000425000004260000042700000428 +000004290000042A0000042B0000042C0000042D0000042E0000042F0000040000000401000004020000040300000404 +00000405000004060000040700000408000004090000040A0000040B0000040C0000040D0000040E0000040F00000460 +000004620000046400000466000004680000046A0000046C0000046E0000047000000472000004740000047600000478 +0000047A0000047C0000047E000004800000048A0000048C0000048E0000049000000492000004940000049600000498 +0000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC000004AE000004B0 +000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5000004C7000004C9 +000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC000004DE000004E0 +000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4000004F6000004F8 +000004FA000004FC000004FE00000500000005020000050400000506000005080000050A0000050C0000050E00000510 +000005120000051400000516000005180000051A0000051C0000051E0000052000000522000005240000052600000528 +0000052A0000052C0000052E000005310000053200000533000005340000053500000536000005370000053800000539 +0000053A0000053B0000053C0000053D0000053E0000053F000005400000054100000542000005430000054400000545 +000005460000054700000548000005490000054A0000054B0000054C0000054D0000054E0000054F0000055000000551 +000005520000055300000554000005550000055600001C9000001C9100001C9200001C9300001C9400001C9500001C96 +00001C9700001C9800001C9900001C9A00001C9B00001C9C00001C9D00001C9E00001C9F00001CA000001CA100001CA2 +00001CA300001CA400001CA500001CA600001CA700001CA800001CA900001CAA00001CAB00001CAC00001CAD00001CAE +00001CAF00001CB000001CB100001CB200001CB300001CB400001CB500001CB600001CB700001CB800001CB900001CBA +00001CBD00001CBE00001CBF000013F0000013F1000013F2000013F3000013F4000013F500000412000004140000041E +0000042100000422000004220000042A000004620000A64A00001C890000A77D00002C630000A7C600001E0000001E02 +00001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E1800001E1A +00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E3000001E32 +00001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E4800001E4A +00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E6000001E62 +00001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E7800001E7A +00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E9000001E92 +00001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB000001EB2 +00001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC800001ECA +00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE000001EE2 +00001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF800001EFA +00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F1800001F19 +00001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E00001F2F +00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A00001F4B +00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C00001F6D +00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF800001FF9 +00001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F +00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB +00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD900001FE8 +00001FE900001FEC00001FFC000021320000216000002161000021620000216300002164000021650000216600002167 +00002168000021690000216A0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7000024B8 +000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3000024C4 +000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF00002C00 +00002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B00002C0C +00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C1700002C18 +00002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C2300002C24 +00002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F00002C60 +0000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C8600002C88 +00002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E00002CA0 +00002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB600002CB8 +00002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE00002CD0 +00002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED00002CF2 +000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA000010AB +000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6000010B7 +000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2000010C3 +000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C0000A64E +0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A6640000A666 +0000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E0000A690 +0000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C0000A72E +0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A7460000A748 +0000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E0000A760 +0000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A7800000A782 +0000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E0000A7A0 +0000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C00000A7C2 +0000A7C70000A7C90000A7CC0000A7D00000A7D60000A7D80000A7DA0000A7F50000A7B3000013A0000013A1000013A2 +000013A3000013A4000013A5000013A6000013A7000013A8000013A9000013AA000013AB000013AC000013AD000013AE +000013AF000013B0000013B1000013B2000013B3000013B4000013B5000013B6000013B7000013B8000013B9000013BA +000013BB000013BC000013BD000013BE000013BF000013C0000013C1000013C2000013C3000013C4000013C5000013C6 +000013C7000013C8000013C9000013CA000013CB000013CC000013CD000013CE000013CF000013D0000013D1000013D2 +000013D3000013D4000013D5000013D6000013D7000013D8000013D9000013DA000013DB000013DC000013DD000013DE +000013DF000013E0000013E1000013E2000013E3000013E4000013E5000013E6000013E7000013E8000013E9000013EA +000013EB000013EC000013ED000013EE000013EF0000FF210000FF220000FF230000FF240000FF250000FF260000FF27 +0000FF280000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF33 +0000FF340000FF350000FF360000FF370000FF380000FF390000FF3A0001040000010401000104020001040300010404 +00010405000104060001040700010408000104090001040A0001040B0001040C0001040D0001040E0001040F00010410 +0001041100010412000104130001041400010415000104160001041700010418000104190001041A0001041B0001041C +0001041D0001041E0001041F0001042000010421000104220001042300010424000104250001042600010427000104B0 +000104B1000104B2000104B3000104B4000104B5000104B6000104B7000104B8000104B9000104BA000104BB000104BC +000104BD000104BE000104BF000104C0000104C1000104C2000104C3000104C4000104C5000104C6000104C7000104C8 +000104C9000104CA000104CB000104CC000104CD000104CE000104CF000104D0000104D1000104D2000104D300010570 +0001057100010572000105730001057400010575000105760001057700010578000105790001057A0001057C0001057D +0001057E0001057F00010580000105810001058200010583000105840001058500010586000105870001058800010589 +0001058A0001058C0001058D0001058E0001058F000105900001059100010592000105940001059500010C8000010C81 +00010C8200010C8300010C8400010C8500010C8600010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D +00010C8E00010C8F00010C9000010C9100010C9200010C9300010C9400010C9500010C9600010C9700010C9800010C99 +00010C9A00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA100010CA200010CA300010CA400010CA5 +00010CA600010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB1 +00010CB200010D5000010D5100010D5200010D5300010D5400010D5500010D5600010D5700010D5800010D5900010D5A +00010D5B00010D5C00010D5D00010D5E00010D5F00010D6000010D6100010D6200010D6300010D6400010D65000118A0 +000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB000118AC +000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7000118B8 +000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E4300016E44 +00016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F00016E50 +00016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B00016E5C +00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E9070001E908 +0001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E9130001E914 +0001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F0001E920 +0001E92102000053000000530000013002000046000000460200004600000049020000460000004C0300004600000046 +0000004903000046000000460000004C0200005300000054020000530000005402000535000005520200054400000546 +0200054400000535020005440000053B0200054E00000546020005440000053D020002BC0000004E0300039900000308 +00000301030003A500000308000003010200004A0000030C02000048000003310200005400000308020000570000030A +020000590000030A02000041000002BE020003A500000313030003A50000031300000300030003A50000031300000301 +030003A50000031300000342020003910000034202000397000003420300039900000308000003000300039900000308 +000003010200039900000342030003990000030800000342030003A50000030800000300030003A50000030800000301 +020003A100000313020003A500000342030003A50000030800000342020003A90000034202001F080000039902001F09 +0000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D0000039902001F0E0000039902001F0F +0000039902001F080000039902001F090000039902001F0A0000039902001F0B0000039902001F0C0000039902001F0D +0000039902001F0E0000039902001F0F0000039902001F280000039902001F290000039902001F2A0000039902001F2B +0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F0000039902001F280000039902001F29 +0000039902001F2A0000039902001F2B0000039902001F2C0000039902001F2D0000039902001F2E0000039902001F2F +0000039902001F680000039902001F690000039902001F6A0000039902001F6B0000039902001F6C0000039902001F6D +0000039902001F6E0000039902001F6F0000039902001F680000039902001F690000039902001F6A0000039902001F6B +0000039902001F6C0000039902001F6D0000039902001F6E0000039902001F6F00000399020003910000039902000391 +0000039902000397000003990200039700000399020003A900000399020003A90000039902001FBA0000039902000386 +0000039902001FCA00000399020003890000039902001FFA000003990200038F00000399030003910000034200000399 +030003970000034200000399030003A90000034200000399"; return t; } immutable(uint)[] toLowerTable() nothrow @nogc pure @safe { @@ -8099,86 +8262,88 @@ x" 0000AB9B0000AB9C0000AB9D0000AB9E0000AB9F0000ABA00000ABA10000ABA20000ABA30000ABA40000ABA50000ABA6 0000ABA70000ABA80000ABA90000ABAA0000ABAB0000ABAC0000ABAD0000ABAE0000ABAF0000ABB00000ABB10000ABB2 0000ABB30000ABB40000ABB50000ABB60000ABB70000ABB80000ABB90000ABBA0000ABBB0000ABBC0000ABBD0000ABBE -0000ABBF000013F8000013F9000013FA000013FB000013FC000013FD000010D0000010D1000010D2000010D3000010D4 -000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 -000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC -000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 -000010F9000010FA000010FD000010FE000010FF00001E0100001E0300001E0500001E0700001E0900001E0B00001E0D -00001E0F00001E1100001E1300001E1500001E1700001E1900001E1B00001E1D00001E1F00001E2100001E2300001E25 -00001E2700001E2900001E2B00001E2D00001E2F00001E3100001E3300001E3500001E3700001E3900001E3B00001E3D -00001E3F00001E4100001E4300001E4500001E4700001E4900001E4B00001E4D00001E4F00001E5100001E5300001E55 -00001E5700001E5900001E5B00001E5D00001E5F00001E6100001E6300001E6500001E6700001E6900001E6B00001E6D -00001E6F00001E7100001E7300001E7500001E7700001E7900001E7B00001E7D00001E7F00001E8100001E8300001E85 -00001E8700001E8900001E8B00001E8D00001E8F00001E9100001E9300001E95000000DF00001EA100001EA300001EA5 -00001EA700001EA900001EAB00001EAD00001EAF00001EB100001EB300001EB500001EB700001EB900001EBB00001EBD -00001EBF00001EC100001EC300001EC500001EC700001EC900001ECB00001ECD00001ECF00001ED100001ED300001ED5 -00001ED700001ED900001EDB00001EDD00001EDF00001EE100001EE300001EE500001EE700001EE900001EEB00001EED -00001EEF00001EF100001EF300001EF500001EF700001EF900001EFB00001EFD00001EFF00001F0000001F0100001F02 -00001F0300001F0400001F0500001F0600001F0700001F1000001F1100001F1200001F1300001F1400001F1500001F20 -00001F2100001F2200001F2300001F2400001F2500001F2600001F2700001F3000001F3100001F3200001F3300001F34 -00001F3500001F3600001F3700001F4000001F4100001F4200001F4300001F4400001F4500001F5100001F5300001F55 -00001F5700001F6000001F6100001F6200001F6300001F6400001F6500001F6600001F6700001F8000001F8100001F82 +0000ABBF000013F8000013F9000013FA000013FB000013FC000013FD00001C8A000010D0000010D1000010D2000010D3 +000010D4000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF +000010E0000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB +000010EC000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7 +000010F8000010F9000010FA000010FD000010FE000010FF00001E0100001E0300001E0500001E0700001E0900001E0B +00001E0D00001E0F00001E1100001E1300001E1500001E1700001E1900001E1B00001E1D00001E1F00001E2100001E23 +00001E2500001E2700001E2900001E2B00001E2D00001E2F00001E3100001E3300001E3500001E3700001E3900001E3B +00001E3D00001E3F00001E4100001E4300001E4500001E4700001E4900001E4B00001E4D00001E4F00001E5100001E53 +00001E5500001E5700001E5900001E5B00001E5D00001E5F00001E6100001E6300001E6500001E6700001E6900001E6B +00001E6D00001E6F00001E7100001E7300001E7500001E7700001E7900001E7B00001E7D00001E7F00001E8100001E83 +00001E8500001E8700001E8900001E8B00001E8D00001E8F00001E9100001E9300001E95000000DF00001EA100001EA3 +00001EA500001EA700001EA900001EAB00001EAD00001EAF00001EB100001EB300001EB500001EB700001EB900001EBB +00001EBD00001EBF00001EC100001EC300001EC500001EC700001EC900001ECB00001ECD00001ECF00001ED100001ED3 +00001ED500001ED700001ED900001EDB00001EDD00001EDF00001EE100001EE300001EE500001EE700001EE900001EEB +00001EED00001EEF00001EF100001EF300001EF500001EF700001EF900001EFB00001EFD00001EFF00001F0000001F01 +00001F0200001F0300001F0400001F0500001F0600001F0700001F1000001F1100001F1200001F1300001F1400001F15 +00001F2000001F2100001F2200001F2300001F2400001F2500001F2600001F2700001F3000001F3100001F3200001F33 +00001F3400001F3500001F3600001F3700001F4000001F4100001F4200001F4300001F4400001F4500001F5100001F53 +00001F5500001F5700001F6000001F6100001F6200001F6300001F6400001F6500001F6600001F6700001F8000001F81 +00001F8200001F8300001F8400001F8500001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F95 +00001F9600001F9700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB000001FB1 +00001F7000001F7100001FB300001F7200001F7300001F7400001F7500001FC300001FD000001FD100001F7600001F77 +00001FE000001FE100001F7A00001F7B00001FE500001F7800001F7900001F7C00001F7D00001FF3000003C90000006B +000000E50000214E00002170000021710000217200002173000021740000217500002176000021770000217800002179 +0000217A0000217B0000217C0000217D0000217E0000217F00002184000024D0000024D1000024D2000024D3000024D4 +000024D5000024D6000024D7000024D8000024D9000024DA000024DB000024DC000024DD000024DE000024DF000024E0 +000024E1000024E2000024E3000024E4000024E5000024E6000024E7000024E8000024E900002C3000002C3100002C32 +00002C3300002C3400002C3500002C3600002C3700002C3800002C3900002C3A00002C3B00002C3C00002C3D00002C3E +00002C3F00002C4000002C4100002C4200002C4300002C4400002C4500002C4600002C4700002C4800002C4900002C4A +00002C4B00002C4C00002C4D00002C4E00002C4F00002C5000002C5100002C5200002C5300002C5400002C5500002C56 +00002C5700002C5800002C5900002C5A00002C5B00002C5C00002C5D00002C5E00002C5F00002C610000026B00001D7D +0000027D00002C6800002C6A00002C6C0000025100000271000002500000025200002C7300002C760000023F00000240 +00002C8100002C8300002C8500002C8700002C8900002C8B00002C8D00002C8F00002C9100002C9300002C9500002C97 +00002C9900002C9B00002C9D00002C9F00002CA100002CA300002CA500002CA700002CA900002CAB00002CAD00002CAF +00002CB100002CB300002CB500002CB700002CB900002CBB00002CBD00002CBF00002CC100002CC300002CC500002CC7 +00002CC900002CCB00002CCD00002CCF00002CD100002CD300002CD500002CD700002CD900002CDB00002CDD00002CDF +00002CE100002CE300002CEC00002CEE00002CF30000A6410000A6430000A6450000A6470000A6490000A64B0000A64D +0000A64F0000A6510000A6530000A6550000A6570000A6590000A65B0000A65D0000A65F0000A6610000A6630000A665 +0000A6670000A6690000A66B0000A66D0000A6810000A6830000A6850000A6870000A6890000A68B0000A68D0000A68F +0000A6910000A6930000A6950000A6970000A6990000A69B0000A7230000A7250000A7270000A7290000A72B0000A72D +0000A72F0000A7330000A7350000A7370000A7390000A73B0000A73D0000A73F0000A7410000A7430000A7450000A747 +0000A7490000A74B0000A74D0000A74F0000A7510000A7530000A7550000A7570000A7590000A75B0000A75D0000A75F +0000A7610000A7630000A7650000A7670000A7690000A76B0000A76D0000A76F0000A77A0000A77C00001D790000A77F +0000A7810000A7830000A7850000A7870000A78C000002650000A7910000A7930000A7970000A7990000A79B0000A79D +0000A79F0000A7A10000A7A30000A7A50000A7A70000A7A9000002660000025C000002610000026C0000026A0000029E +000002870000029D0000AB530000A7B50000A7B70000A7B90000A7BB0000A7BD0000A7BF0000A7C10000A7C30000A794 +0000028200001D8E0000A7C80000A7CA000002640000A7CD0000A7D10000A7D70000A7D90000A7DB0000019B0000A7F6 +0000FF410000FF420000FF430000FF440000FF450000FF460000FF470000FF480000FF490000FF4A0000FF4B0000FF4C +0000FF4D0000FF4E0000FF4F0000FF500000FF510000FF520000FF530000FF540000FF550000FF560000FF570000FF58 +0000FF590000FF5A00010428000104290001042A0001042B0001042C0001042D0001042E0001042F0001043000010431 +00010432000104330001043400010435000104360001043700010438000104390001043A0001043B0001043C0001043D +0001043E0001043F00010440000104410001044200010443000104440001044500010446000104470001044800010449 +0001044A0001044B0001044C0001044D0001044E0001044F000104D8000104D9000104DA000104DB000104DC000104DD +000104DE000104DF000104E0000104E1000104E2000104E3000104E4000104E5000104E6000104E7000104E8000104E9 +000104EA000104EB000104EC000104ED000104EE000104EF000104F0000104F1000104F2000104F3000104F4000104F5 +000104F6000104F7000104F8000104F9000104FA000104FB0001059700010598000105990001059A0001059B0001059C +0001059D0001059E0001059F000105A0000105A1000105A3000105A4000105A5000105A6000105A7000105A8000105A9 +000105AA000105AB000105AC000105AD000105AE000105AF000105B0000105B1000105B3000105B4000105B5000105B6 +000105B7000105B8000105B9000105BB000105BC00010CC000010CC100010CC200010CC300010CC400010CC500010CC6 +00010CC700010CC800010CC900010CCA00010CCB00010CCC00010CCD00010CCE00010CCF00010CD000010CD100010CD2 +00010CD300010CD400010CD500010CD600010CD700010CD800010CD900010CDA00010CDB00010CDC00010CDD00010CDE +00010CDF00010CE000010CE100010CE200010CE300010CE400010CE500010CE600010CE700010CE800010CE900010CEA +00010CEB00010CEC00010CED00010CEE00010CEF00010CF000010CF100010CF200010D7000010D7100010D7200010D73 +00010D7400010D7500010D7600010D7700010D7800010D7900010D7A00010D7B00010D7C00010D7D00010D7E00010D7F +00010D8000010D8100010D8200010D8300010D8400010D85000118C0000118C1000118C2000118C3000118C4000118C5 +000118C6000118C7000118C8000118C9000118CA000118CB000118CC000118CD000118CE000118CF000118D0000118D1 +000118D2000118D3000118D4000118D5000118D6000118D7000118D8000118D9000118DA000118DB000118DC000118DD +000118DE000118DF00016E6000016E6100016E6200016E6300016E6400016E6500016E6600016E6700016E6800016E69 +00016E6A00016E6B00016E6C00016E6D00016E6E00016E6F00016E7000016E7100016E7200016E7300016E7400016E75 +00016E7600016E7700016E7800016E7900016E7A00016E7B00016E7C00016E7D00016E7E00016E7F0001E9220001E923 +0001E9240001E9250001E9260001E9270001E9280001E9290001E92A0001E92B0001E92C0001E92D0001E92E0001E92F +0001E9300001E9310001E9320001E9330001E9340001E9350001E9360001E9370001E9380001E9390001E93A0001E93B +0001E93C0001E93D0001E93E0001E93F0001E9400001E9410001E9420001E943000000DF02000069000003070000FB00 +0000FB010000FB020000FB030000FB040000FB050000FB06000005870000FB130000FB140000FB150000FB160000FB17 +0000014900000390000003B0000001F000001E9600001E9700001E9800001E9900001E9A00001F5000001F5200001F54 +00001F5600001FB600001FC600001FD200001FD300001FD600001FD700001FE200001FE300001FE400001FE600001FE7 +00001FF600001F8000001F8100001F8200001F8300001F8400001F8500001F8600001F8700001F8000001F8100001F82 00001F8300001F8400001F8500001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F96 -00001F9700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB000001FB100001F70 -00001F7100001FB300001F7200001F7300001F7400001F7500001FC300001FD000001FD100001F7600001F7700001FE0 -00001FE100001F7A00001F7B00001FE500001F7800001F7900001F7C00001F7D00001FF3000003C90000006B000000E5 -0000214E000021700000217100002172000021730000217400002175000021760000217700002178000021790000217A -0000217B0000217C0000217D0000217E0000217F00002184000024D0000024D1000024D2000024D3000024D4000024D5 -000024D6000024D7000024D8000024D9000024DA000024DB000024DC000024DD000024DE000024DF000024E0000024E1 -000024E2000024E3000024E4000024E5000024E6000024E7000024E8000024E900002C3000002C3100002C3200002C33 -00002C3400002C3500002C3600002C3700002C3800002C3900002C3A00002C3B00002C3C00002C3D00002C3E00002C3F -00002C4000002C4100002C4200002C4300002C4400002C4500002C4600002C4700002C4800002C4900002C4A00002C4B -00002C4C00002C4D00002C4E00002C4F00002C5000002C5100002C5200002C5300002C5400002C5500002C5600002C57 -00002C5800002C5900002C5A00002C5B00002C5C00002C5D00002C5E00002C5F00002C610000026B00001D7D0000027D -00002C6800002C6A00002C6C0000025100000271000002500000025200002C7300002C760000023F0000024000002C81 -00002C8300002C8500002C8700002C8900002C8B00002C8D00002C8F00002C9100002C9300002C9500002C9700002C99 -00002C9B00002C9D00002C9F00002CA100002CA300002CA500002CA700002CA900002CAB00002CAD00002CAF00002CB1 -00002CB300002CB500002CB700002CB900002CBB00002CBD00002CBF00002CC100002CC300002CC500002CC700002CC9 -00002CCB00002CCD00002CCF00002CD100002CD300002CD500002CD700002CD900002CDB00002CDD00002CDF00002CE1 -00002CE300002CEC00002CEE00002CF30000A6410000A6430000A6450000A6470000A6490000A64B0000A64D0000A64F -0000A6510000A6530000A6550000A6570000A6590000A65B0000A65D0000A65F0000A6610000A6630000A6650000A667 -0000A6690000A66B0000A66D0000A6810000A6830000A6850000A6870000A6890000A68B0000A68D0000A68F0000A691 -0000A6930000A6950000A6970000A6990000A69B0000A7230000A7250000A7270000A7290000A72B0000A72D0000A72F -0000A7330000A7350000A7370000A7390000A73B0000A73D0000A73F0000A7410000A7430000A7450000A7470000A749 -0000A74B0000A74D0000A74F0000A7510000A7530000A7550000A7570000A7590000A75B0000A75D0000A75F0000A761 -0000A7630000A7650000A7670000A7690000A76B0000A76D0000A76F0000A77A0000A77C00001D790000A77F0000A781 -0000A7830000A7850000A7870000A78C000002650000A7910000A7930000A7970000A7990000A79B0000A79D0000A79F -0000A7A10000A7A30000A7A50000A7A70000A7A9000002660000025C000002610000026C0000026A0000029E00000287 -0000029D0000AB530000A7B50000A7B70000A7B90000A7BB0000A7BD0000A7BF0000A7C10000A7C30000A79400000282 -00001D8E0000A7C80000A7CA0000A7D10000A7D70000A7D90000A7F60000FF410000FF420000FF430000FF440000FF45 -0000FF460000FF470000FF480000FF490000FF4A0000FF4B0000FF4C0000FF4D0000FF4E0000FF4F0000FF500000FF51 -0000FF520000FF530000FF540000FF550000FF560000FF570000FF580000FF590000FF5A00010428000104290001042A -0001042B0001042C0001042D0001042E0001042F00010430000104310001043200010433000104340001043500010436 -0001043700010438000104390001043A0001043B0001043C0001043D0001043E0001043F000104400001044100010442 -000104430001044400010445000104460001044700010448000104490001044A0001044B0001044C0001044D0001044E -0001044F000104D8000104D9000104DA000104DB000104DC000104DD000104DE000104DF000104E0000104E1000104E2 -000104E3000104E4000104E5000104E6000104E7000104E8000104E9000104EA000104EB000104EC000104ED000104EE -000104EF000104F0000104F1000104F2000104F3000104F4000104F5000104F6000104F7000104F8000104F9000104FA -000104FB0001059700010598000105990001059A0001059B0001059C0001059D0001059E0001059F000105A0000105A1 -000105A3000105A4000105A5000105A6000105A7000105A8000105A9000105AA000105AB000105AC000105AD000105AE -000105AF000105B0000105B1000105B3000105B4000105B5000105B6000105B7000105B8000105B9000105BB000105BC -00010CC000010CC100010CC200010CC300010CC400010CC500010CC600010CC700010CC800010CC900010CCA00010CCB -00010CCC00010CCD00010CCE00010CCF00010CD000010CD100010CD200010CD300010CD400010CD500010CD600010CD7 -00010CD800010CD900010CDA00010CDB00010CDC00010CDD00010CDE00010CDF00010CE000010CE100010CE200010CE3 -00010CE400010CE500010CE600010CE700010CE800010CE900010CEA00010CEB00010CEC00010CED00010CEE00010CEF -00010CF000010CF100010CF2000118C0000118C1000118C2000118C3000118C4000118C5000118C6000118C7000118C8 -000118C9000118CA000118CB000118CC000118CD000118CE000118CF000118D0000118D1000118D2000118D3000118D4 -000118D5000118D6000118D7000118D8000118D9000118DA000118DB000118DC000118DD000118DE000118DF00016E60 -00016E6100016E6200016E6300016E6400016E6500016E6600016E6700016E6800016E6900016E6A00016E6B00016E6C -00016E6D00016E6E00016E6F00016E7000016E7100016E7200016E7300016E7400016E7500016E7600016E7700016E78 -00016E7900016E7A00016E7B00016E7C00016E7D00016E7E00016E7F0001E9220001E9230001E9240001E9250001E926 -0001E9270001E9280001E9290001E92A0001E92B0001E92C0001E92D0001E92E0001E92F0001E9300001E9310001E932 -0001E9330001E9340001E9350001E9360001E9370001E9380001E9390001E93A0001E93B0001E93C0001E93D0001E93E -0001E93F0001E9400001E9410001E9420001E943000000DF02000069000003070000FB000000FB010000FB020000FB03 -0000FB040000FB050000FB06000005870000FB130000FB140000FB150000FB160000FB170000014900000390000003B0 -000001F000001E9600001E9700001E9800001E9900001E9A00001F5000001F5200001F5400001F5600001FB600001FC6 -00001FD200001FD300001FD600001FD700001FE200001FE300001FE400001FE600001FE700001FF600001F8000001F81 -00001F8200001F8300001F8400001F8500001F8600001F8700001F8000001F8100001F8200001F8300001F8400001F85 -00001F8600001F8700001F9000001F9100001F9200001F9300001F9400001F9500001F9600001F9700001F9000001F91 -00001F9200001F9300001F9400001F9500001F9600001F9700001FA000001FA100001FA200001FA300001FA400001FA5 -00001FA600001FA700001FA000001FA100001FA200001FA300001FA400001FA500001FA600001FA700001FB300001FB3 -00001FC300001FC300001FF300001FF300001FB200001FB400001FC200001FC400001FF200001FF400001FB700001FC7 -00001FF7"; +00001F9700001F9000001F9100001F9200001F9300001F9400001F9500001F9600001F9700001FA000001FA100001FA2 +00001FA300001FA400001FA500001FA600001FA700001FA000001FA100001FA200001FA300001FA400001FA500001FA6 +00001FA700001FB300001FB300001FC300001FC300001FF300001FF300001FB200001FB400001FC200001FC400001FF2 +00001FF400001FB700001FC700001FF7"; return t; } immutable(uint)[] toTitleTable() nothrow @nogc pure @safe { @@ -8194,132 +8359,134 @@ x" 0000013400000136000001390000013B0000013D0000013F000001410000014300000145000001470000014A0000014C 0000014E00000150000001520000015400000156000001580000015A0000015C0000015E000001600000016200000164 00000166000001680000016A0000016C0000016E00000170000001720000017400000176000001790000017B0000017D -00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D00000220000001A0 -000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C5000001C5 -000001C5000001C8000001C8000001C8000001CB000001CB000001CB000001CD000001CF000001D1000001D3000001D5 -000001D7000001D9000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA000001EC -000001EE000001F2000001F2000001F2000001F4000001F8000001FA000001FC000001FE000002000000020200000204 -00000206000002080000020A0000020C0000020E00000210000002120000021400000216000002180000021A0000021C -0000021E000002220000022400000226000002280000022A0000022C0000022E00000230000002320000023B00002C7E -00002C7F0000024100000246000002480000024A0000024C0000024E00002C6F00002C6D00002C700000018100000186 -000001890000018A0000018F000001900000A7AB000001930000A7AC000001940000A78D0000A7AA0000019700000196 -0000A7AE00002C620000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5000001A90000A7B1 -000001AE00000244000001B1000001B200000245000001B70000A7B20000A7B000000399000003700000037200000376 -000003FD000003FE000003FF0000038600000388000003890000038A0000039100000392000003930000039400000395 -000003960000039700000398000003990000039A0000039B0000039C0000039D0000039E0000039F000003A0000003A1 -000003A3000003A3000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB0000038C0000038E -0000038F0000039200000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE000003E0000003E2 -000003E4000003E6000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F00000395000003F7 -000003FA000004100000041100000412000004130000041400000415000004160000041700000418000004190000041A -0000041B0000041C0000041D0000041E0000041F00000420000004210000042200000423000004240000042500000426 -0000042700000428000004290000042A0000042B0000042C0000042D0000042E0000042F000004000000040100000402 -000004030000040400000405000004060000040700000408000004090000040A0000040B0000040C0000040D0000040E -0000040F00000460000004620000046400000466000004680000046A0000046C0000046E000004700000047200000474 -00000476000004780000047A0000047C0000047E000004800000048A0000048C0000048E000004900000049200000494 -00000496000004980000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8000004AA000004AC -000004AE000004B0000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1000004C3000004C5 -000004C7000004C9000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8000004DA000004DC -000004DE000004E0000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0000004F2000004F4 -000004F6000004F8000004FA000004FC000004FE00000500000005020000050400000506000005080000050A0000050C -0000050E00000510000005120000051400000516000005180000051A0000051C0000051E000005200000052200000524 -00000526000005280000052A0000052C0000052E00000531000005320000053300000534000005350000053600000537 -00000538000005390000053A0000053B0000053C0000053D0000053E0000053F00000540000005410000054200000543 -0000054400000545000005460000054700000548000005490000054A0000054B0000054C0000054D0000054E0000054F -00000550000005510000055200000553000005540000055500000556000010D0000010D1000010D2000010D3000010D4 -000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE000010DF000010E0 -000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA000010EB000010EC -000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6000010F7000010F8 -000010F9000010FA000010FD000010FE000010FF000013F0000013F1000013F2000013F3000013F4000013F500000412 -000004140000041E0000042100000422000004220000042A000004620000A64A0000A77D00002C630000A7C600001E00 -00001E0200001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E1200001E1400001E1600001E18 -00001E1A00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A00001E2C00001E2E00001E30 -00001E3200001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E4200001E4400001E4600001E48 -00001E4A00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A00001E5C00001E5E00001E60 -00001E6200001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E7200001E7400001E7600001E78 -00001E7A00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A00001E8C00001E8E00001E90 -00001E9200001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA00001EAC00001EAE00001EB0 -00001EB200001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC200001EC400001EC600001EC8 -00001ECA00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA00001EDC00001EDE00001EE0 -00001EE200001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF200001EF400001EF600001EF8 -00001EFA00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D00001F0E00001F0F00001F18 -00001F1900001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B00001F2C00001F2D00001F2E -00001F2F00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F00001F4800001F4900001F4A -00001F4B00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F6900001F6A00001F6B00001F6C -00001F6D00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB00001FDA00001FDB00001FF8 -00001FF900001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E -00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA -00001FAB00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC0000039900001FCC00001FD800001FD9 -00001FE800001FE900001FEC00001FFC0000213200002160000021610000216200002163000021640000216500002166 -0000216700002168000021690000216A0000216B0000216C0000216D0000216E0000216F00002183000024B6000024B7 -000024B8000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0000024C1000024C2000024C3 -000024C4000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC000024CD000024CE000024CF -00002C0000002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C0800002C0900002C0A00002C0B -00002C0C00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C1400002C1500002C1600002C17 -00002C1800002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C2000002C2100002C2200002C23 -00002C2400002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C00002C2D00002C2E00002C2F -00002C600000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C8000002C8200002C8400002C86 -00002C8800002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C9800002C9A00002C9C00002C9E -00002CA000002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB000002CB200002CB400002CB6 -00002CB800002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC800002CCA00002CCC00002CCE -00002CD000002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE000002CE200002CEB00002CED -00002CF2000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7000010A8000010A9000010AA -000010AB000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3000010B4000010B5000010B6 -000010B7000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF000010C0000010C1000010C2 -000010C3000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A6460000A6480000A64A0000A64C -0000A64E0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E0000A6600000A6620000A664 -0000A6660000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A6880000A68A0000A68C0000A68E -0000A6900000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A7260000A7280000A72A0000A72C -0000A72E0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A7400000A7420000A7440000A746 -0000A7480000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A7580000A75A0000A75C0000A75E -0000A7600000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A7790000A77B0000A77E0000A780 -0000A7820000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A7980000A79A0000A79C0000A79E -0000A7A00000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA0000A7BC0000A7BE0000A7C0 -0000A7C20000A7C70000A7C90000A7D00000A7D60000A7D80000A7F50000A7B3000013A0000013A1000013A2000013A3 -000013A4000013A5000013A6000013A7000013A8000013A9000013AA000013AB000013AC000013AD000013AE000013AF -000013B0000013B1000013B2000013B3000013B4000013B5000013B6000013B7000013B8000013B9000013BA000013BB -000013BC000013BD000013BE000013BF000013C0000013C1000013C2000013C3000013C4000013C5000013C6000013C7 -000013C8000013C9000013CA000013CB000013CC000013CD000013CE000013CF000013D0000013D1000013D2000013D3 -000013D4000013D5000013D6000013D7000013D8000013D9000013DA000013DB000013DC000013DD000013DE000013DF -000013E0000013E1000013E2000013E3000013E4000013E5000013E6000013E7000013E8000013E9000013EA000013EB -000013EC000013ED000013EE000013EF0000FF210000FF220000FF230000FF240000FF250000FF260000FF270000FF28 -0000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F0000FF300000FF310000FF320000FF330000FF34 -0000FF350000FF360000FF370000FF380000FF390000FF3A000104000001040100010402000104030001040400010405 -000104060001040700010408000104090001040A0001040B0001040C0001040D0001040E0001040F0001041000010411 -00010412000104130001041400010415000104160001041700010418000104190001041A0001041B0001041C0001041D -0001041E0001041F0001042000010421000104220001042300010424000104250001042600010427000104B0000104B1 -000104B2000104B3000104B4000104B5000104B6000104B7000104B8000104B9000104BA000104BB000104BC000104BD -000104BE000104BF000104C0000104C1000104C2000104C3000104C4000104C5000104C6000104C7000104C8000104C9 -000104CA000104CB000104CC000104CD000104CE000104CF000104D0000104D1000104D2000104D30001057000010571 -00010572000105730001057400010575000105760001057700010578000105790001057A0001057C0001057D0001057E -0001057F000105800001058100010582000105830001058400010585000105860001058700010588000105890001058A -0001058C0001058D0001058E0001058F000105900001059100010592000105940001059500010C8000010C8100010C82 -00010C8300010C8400010C8500010C8600010C8700010C8800010C8900010C8A00010C8B00010C8C00010C8D00010C8E -00010C8F00010C9000010C9100010C9200010C9300010C9400010C9500010C9600010C9700010C9800010C9900010C9A -00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA100010CA200010CA300010CA400010CA500010CA6 -00010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD00010CAE00010CAF00010CB000010CB100010CB2 -000118A0000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8000118A9000118AA000118AB -000118AC000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4000118B5000118B6000118B7 -000118B8000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E4000016E4100016E4200016E43 -00016E4400016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C00016E4D00016E4E00016E4F -00016E5000016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E5800016E5900016E5A00016E5B -00016E5C00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E9040001E9050001E9060001E907 -0001E9080001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E9100001E9110001E9120001E913 -0001E9140001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C0001E91D0001E91E0001E91F -0001E9200001E92102000053000000730000013002000046000000660200004600000069020000460000006C03000046 -000000660000006903000046000000660000006C02000053000000740200005300000074020005350000058202000544 -000005760200054400000565020005440000056B0200054E00000576020005440000056D020002BC0000004E03000399 -0000030800000301030003A500000308000003010200004A0000030C0200004800000331020000540000030802000057 -0000030A020000590000030A02000041000002BE020003A500000313030003A50000031300000300030003A500000313 -00000301030003A500000313000003420200039100000342020003970000034203000399000003080000030003000399 -00000308000003010200039900000342030003990000030800000342030003A50000030800000300030003A500000308 -00000301020003A100000313020003A500000342030003A50000030800000342020003A90000034200001F8800001F89 -00001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F8800001F8900001F8A00001F8B00001F8C00001F8D -00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001F9800001F99 -00001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA00001FAB00001FAC00001FAD -00001FAE00001FAF00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE00001FAF00001FBC00001FBC -00001FCC00001FCC00001FFC00001FFC02001FBA00000345020003860000034502001FCA000003450200038900000345 -02001FFA000003450200038F00000345030003910000034200000345030003970000034200000345030003A900000342 -00000345"; +00000053000002430000018200000184000001870000018B00000191000001F6000001980000023D0000A7DC00000220 +000001A0000001A2000001A4000001A7000001AC000001AF000001B3000001B5000001B8000001BC000001F7000001C5 +000001C5000001C5000001C8000001C8000001C8000001CB000001CB000001CB000001CD000001CF000001D1000001D3 +000001D5000001D7000001D9000001DB0000018E000001DE000001E0000001E2000001E4000001E6000001E8000001EA +000001EC000001EE000001F2000001F2000001F2000001F4000001F8000001FA000001FC000001FE0000020000000202 +0000020400000206000002080000020A0000020C0000020E00000210000002120000021400000216000002180000021A +0000021C0000021E000002220000022400000226000002280000022A0000022C0000022E00000230000002320000023B +00002C7E00002C7F0000024100000246000002480000024A0000024C0000024E00002C6F00002C6D00002C7000000181 +00000186000001890000018A0000018F000001900000A7AB000001930000A7AC000001940000A7CB0000A78D0000A7AA +00000197000001960000A7AE00002C620000A7AD0000019C00002C6E0000019D0000019F00002C64000001A60000A7C5 +000001A90000A7B1000001AE00000244000001B1000001B200000245000001B70000A7B20000A7B00000039900000370 +0000037200000376000003FD000003FE000003FF0000038600000388000003890000038A000003910000039200000393 +0000039400000395000003960000039700000398000003990000039A0000039B0000039C0000039D0000039E0000039F +000003A0000003A1000003A3000003A3000003A4000003A5000003A6000003A7000003A8000003A9000003AA000003AB +0000038C0000038E0000038F0000039200000398000003A6000003A0000003CF000003D8000003DA000003DC000003DE +000003E0000003E2000003E4000003E6000003E8000003EA000003EC000003EE0000039A000003A1000003F90000037F +00000395000003F7000003FA000004100000041100000412000004130000041400000415000004160000041700000418 +000004190000041A0000041B0000041C0000041D0000041E0000041F0000042000000421000004220000042300000424 +00000425000004260000042700000428000004290000042A0000042B0000042C0000042D0000042E0000042F00000400 +0000040100000402000004030000040400000405000004060000040700000408000004090000040A0000040B0000040C +0000040D0000040E0000040F00000460000004620000046400000466000004680000046A0000046C0000046E00000470 +000004720000047400000476000004780000047A0000047C0000047E000004800000048A0000048C0000048E00000490 +000004920000049400000496000004980000049A0000049C0000049E000004A0000004A2000004A4000004A6000004A8 +000004AA000004AC000004AE000004B0000004B2000004B4000004B6000004B8000004BA000004BC000004BE000004C1 +000004C3000004C5000004C7000004C9000004CB000004CD000004C0000004D0000004D2000004D4000004D6000004D8 +000004DA000004DC000004DE000004E0000004E2000004E4000004E6000004E8000004EA000004EC000004EE000004F0 +000004F2000004F4000004F6000004F8000004FA000004FC000004FE0000050000000502000005040000050600000508 +0000050A0000050C0000050E00000510000005120000051400000516000005180000051A0000051C0000051E00000520 +000005220000052400000526000005280000052A0000052C0000052E0000053100000532000005330000053400000535 +000005360000053700000538000005390000053A0000053B0000053C0000053D0000053E0000053F0000054000000541 +00000542000005430000054400000545000005460000054700000548000005490000054A0000054B0000054C0000054D +0000054E0000054F00000550000005510000055200000553000005540000055500000556000010D0000010D1000010D2 +000010D3000010D4000010D5000010D6000010D7000010D8000010D9000010DA000010DB000010DC000010DD000010DE +000010DF000010E0000010E1000010E2000010E3000010E4000010E5000010E6000010E7000010E8000010E9000010EA +000010EB000010EC000010ED000010EE000010EF000010F0000010F1000010F2000010F3000010F4000010F5000010F6 +000010F7000010F8000010F9000010FA000010FD000010FE000010FF000013F0000013F1000013F2000013F3000013F4 +000013F500000412000004140000041E0000042100000422000004220000042A000004620000A64A00001C890000A77D +00002C630000A7C600001E0000001E0200001E0400001E0600001E0800001E0A00001E0C00001E0E00001E1000001E12 +00001E1400001E1600001E1800001E1A00001E1C00001E1E00001E2000001E2200001E2400001E2600001E2800001E2A +00001E2C00001E2E00001E3000001E3200001E3400001E3600001E3800001E3A00001E3C00001E3E00001E4000001E42 +00001E4400001E4600001E4800001E4A00001E4C00001E4E00001E5000001E5200001E5400001E5600001E5800001E5A +00001E5C00001E5E00001E6000001E6200001E6400001E6600001E6800001E6A00001E6C00001E6E00001E7000001E72 +00001E7400001E7600001E7800001E7A00001E7C00001E7E00001E8000001E8200001E8400001E8600001E8800001E8A +00001E8C00001E8E00001E9000001E9200001E9400001E6000001EA000001EA200001EA400001EA600001EA800001EAA +00001EAC00001EAE00001EB000001EB200001EB400001EB600001EB800001EBA00001EBC00001EBE00001EC000001EC2 +00001EC400001EC600001EC800001ECA00001ECC00001ECE00001ED000001ED200001ED400001ED600001ED800001EDA +00001EDC00001EDE00001EE000001EE200001EE400001EE600001EE800001EEA00001EEC00001EEE00001EF000001EF2 +00001EF400001EF600001EF800001EFA00001EFC00001EFE00001F0800001F0900001F0A00001F0B00001F0C00001F0D +00001F0E00001F0F00001F1800001F1900001F1A00001F1B00001F1C00001F1D00001F2800001F2900001F2A00001F2B +00001F2C00001F2D00001F2E00001F2F00001F3800001F3900001F3A00001F3B00001F3C00001F3D00001F3E00001F3F +00001F4800001F4900001F4A00001F4B00001F4C00001F4D00001F5900001F5B00001F5D00001F5F00001F6800001F69 +00001F6A00001F6B00001F6C00001F6D00001F6E00001F6F00001FBA00001FBB00001FC800001FC900001FCA00001FCB +00001FDA00001FDB00001FF800001FF900001FEA00001FEB00001FFA00001FFB00001F8800001F8900001F8A00001F8B +00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F +00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE00001FAF00001FB800001FB900001FBC00000399 +00001FCC00001FD800001FD900001FE800001FE900001FEC00001FFC0000213200002160000021610000216200002163 +0000216400002165000021660000216700002168000021690000216A0000216B0000216C0000216D0000216E0000216F +00002183000024B6000024B7000024B8000024B9000024BA000024BB000024BC000024BD000024BE000024BF000024C0 +000024C1000024C2000024C3000024C4000024C5000024C6000024C7000024C8000024C9000024CA000024CB000024CC +000024CD000024CE000024CF00002C0000002C0100002C0200002C0300002C0400002C0500002C0600002C0700002C08 +00002C0900002C0A00002C0B00002C0C00002C0D00002C0E00002C0F00002C1000002C1100002C1200002C1300002C14 +00002C1500002C1600002C1700002C1800002C1900002C1A00002C1B00002C1C00002C1D00002C1E00002C1F00002C20 +00002C2100002C2200002C2300002C2400002C2500002C2600002C2700002C2800002C2900002C2A00002C2B00002C2C +00002C2D00002C2E00002C2F00002C600000023A0000023E00002C6700002C6900002C6B00002C7200002C7500002C80 +00002C8200002C8400002C8600002C8800002C8A00002C8C00002C8E00002C9000002C9200002C9400002C9600002C98 +00002C9A00002C9C00002C9E00002CA000002CA200002CA400002CA600002CA800002CAA00002CAC00002CAE00002CB0 +00002CB200002CB400002CB600002CB800002CBA00002CBC00002CBE00002CC000002CC200002CC400002CC600002CC8 +00002CCA00002CCC00002CCE00002CD000002CD200002CD400002CD600002CD800002CDA00002CDC00002CDE00002CE0 +00002CE200002CEB00002CED00002CF2000010A0000010A1000010A2000010A3000010A4000010A5000010A6000010A7 +000010A8000010A9000010AA000010AB000010AC000010AD000010AE000010AF000010B0000010B1000010B2000010B3 +000010B4000010B5000010B6000010B7000010B8000010B9000010BA000010BB000010BC000010BD000010BE000010BF +000010C0000010C1000010C2000010C3000010C4000010C5000010C7000010CD0000A6400000A6420000A6440000A646 +0000A6480000A64A0000A64C0000A64E0000A6500000A6520000A6540000A6560000A6580000A65A0000A65C0000A65E +0000A6600000A6620000A6640000A6660000A6680000A66A0000A66C0000A6800000A6820000A6840000A6860000A688 +0000A68A0000A68C0000A68E0000A6900000A6920000A6940000A6960000A6980000A69A0000A7220000A7240000A726 +0000A7280000A72A0000A72C0000A72E0000A7320000A7340000A7360000A7380000A73A0000A73C0000A73E0000A740 +0000A7420000A7440000A7460000A7480000A74A0000A74C0000A74E0000A7500000A7520000A7540000A7560000A758 +0000A75A0000A75C0000A75E0000A7600000A7620000A7640000A7660000A7680000A76A0000A76C0000A76E0000A779 +0000A77B0000A77E0000A7800000A7820000A7840000A7860000A78B0000A7900000A7920000A7C40000A7960000A798 +0000A79A0000A79C0000A79E0000A7A00000A7A20000A7A40000A7A60000A7A80000A7B40000A7B60000A7B80000A7BA +0000A7BC0000A7BE0000A7C00000A7C20000A7C70000A7C90000A7CC0000A7D00000A7D60000A7D80000A7DA0000A7F5 +0000A7B3000013A0000013A1000013A2000013A3000013A4000013A5000013A6000013A7000013A8000013A9000013AA +000013AB000013AC000013AD000013AE000013AF000013B0000013B1000013B2000013B3000013B4000013B5000013B6 +000013B7000013B8000013B9000013BA000013BB000013BC000013BD000013BE000013BF000013C0000013C1000013C2 +000013C3000013C4000013C5000013C6000013C7000013C8000013C9000013CA000013CB000013CC000013CD000013CE +000013CF000013D0000013D1000013D2000013D3000013D4000013D5000013D6000013D7000013D8000013D9000013DA +000013DB000013DC000013DD000013DE000013DF000013E0000013E1000013E2000013E3000013E4000013E5000013E6 +000013E7000013E8000013E9000013EA000013EB000013EC000013ED000013EE000013EF0000FF210000FF220000FF23 +0000FF240000FF250000FF260000FF270000FF280000FF290000FF2A0000FF2B0000FF2C0000FF2D0000FF2E0000FF2F +0000FF300000FF310000FF320000FF330000FF340000FF350000FF360000FF370000FF380000FF390000FF3A00010400 +0001040100010402000104030001040400010405000104060001040700010408000104090001040A0001040B0001040C +0001040D0001040E0001040F000104100001041100010412000104130001041400010415000104160001041700010418 +000104190001041A0001041B0001041C0001041D0001041E0001041F0001042000010421000104220001042300010424 +000104250001042600010427000104B0000104B1000104B2000104B3000104B4000104B5000104B6000104B7000104B8 +000104B9000104BA000104BB000104BC000104BD000104BE000104BF000104C0000104C1000104C2000104C3000104C4 +000104C5000104C6000104C7000104C8000104C9000104CA000104CB000104CC000104CD000104CE000104CF000104D0 +000104D1000104D2000104D3000105700001057100010572000105730001057400010575000105760001057700010578 +000105790001057A0001057C0001057D0001057E0001057F000105800001058100010582000105830001058400010585 +000105860001058700010588000105890001058A0001058C0001058D0001058E0001058F000105900001059100010592 +000105940001059500010C8000010C8100010C8200010C8300010C8400010C8500010C8600010C8700010C8800010C89 +00010C8A00010C8B00010C8C00010C8D00010C8E00010C8F00010C9000010C9100010C9200010C9300010C9400010C95 +00010C9600010C9700010C9800010C9900010C9A00010C9B00010C9C00010C9D00010C9E00010C9F00010CA000010CA1 +00010CA200010CA300010CA400010CA500010CA600010CA700010CA800010CA900010CAA00010CAB00010CAC00010CAD +00010CAE00010CAF00010CB000010CB100010CB200010D5000010D5100010D5200010D5300010D5400010D5500010D56 +00010D5700010D5800010D5900010D5A00010D5B00010D5C00010D5D00010D5E00010D5F00010D6000010D6100010D62 +00010D6300010D6400010D65000118A0000118A1000118A2000118A3000118A4000118A5000118A6000118A7000118A8 +000118A9000118AA000118AB000118AC000118AD000118AE000118AF000118B0000118B1000118B2000118B3000118B4 +000118B5000118B6000118B7000118B8000118B9000118BA000118BB000118BC000118BD000118BE000118BF00016E40 +00016E4100016E4200016E4300016E4400016E4500016E4600016E4700016E4800016E4900016E4A00016E4B00016E4C +00016E4D00016E4E00016E4F00016E5000016E5100016E5200016E5300016E5400016E5500016E5600016E5700016E58 +00016E5900016E5A00016E5B00016E5C00016E5D00016E5E00016E5F0001E9000001E9010001E9020001E9030001E904 +0001E9050001E9060001E9070001E9080001E9090001E90A0001E90B0001E90C0001E90D0001E90E0001E90F0001E910 +0001E9110001E9120001E9130001E9140001E9150001E9160001E9170001E9180001E9190001E91A0001E91B0001E91C +0001E91D0001E91E0001E91F0001E9200001E92102000053000000730000013002000046000000660200004600000069 +020000460000006C03000046000000660000006903000046000000660000006C02000053000000740200005300000074 +020005350000058202000544000005760200054400000565020005440000056B0200054E00000576020005440000056D +020002BC0000004E030003990000030800000301030003A500000308000003010200004A0000030C0200004800000331 +0200005400000308020000570000030A020000590000030A02000041000002BE020003A500000313030003A500000313 +00000300030003A50000031300000301030003A500000313000003420200039100000342020003970000034203000399 +00000308000003000300039900000308000003010200039900000342030003990000030800000342030003A500000308 +00000300030003A50000030800000301020003A100000313020003A500000342030003A50000030800000342020003A9 +0000034200001F8800001F8900001F8A00001F8B00001F8C00001F8D00001F8E00001F8F00001F8800001F8900001F8A +00001F8B00001F8C00001F8D00001F8E00001F8F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E +00001F9F00001F9800001F9900001F9A00001F9B00001F9C00001F9D00001F9E00001F9F00001FA800001FA900001FAA +00001FAB00001FAC00001FAD00001FAE00001FAF00001FA800001FA900001FAA00001FAB00001FAC00001FAD00001FAE +00001FAF00001FBC00001FBC00001FCC00001FCC00001FFC00001FFC02001FBA00000345020003860000034502001FCA +00000345020003890000034502001FFA000003450200038F000003450300039100000342000003450300039700000342 +00000345030003A90000034200000345"; return t; } diff --git a/tools/unicode_table_generator.d b/tools/unicode_table_generator.d index 0bbe80f608d..ec75d9a1ce3 100644 --- a/tools/unicode_table_generator.d +++ b/tools/unicode_table_generator.d @@ -31,10 +31,10 @@ module std.unicode_table_generator; // this shouldn't be in std package, but stuff is package'd as that in std.uni. /// Directory in which unicode files are downloaded -enum unicodeDir = "ucd-15-1-0/"; +enum unicodeDir = "ucd-16-0-0/"; /// Url from which unicode files are downloaded -enum unicodeBaseUrl = "https://www.unicode.org/Public/15.1.0/ucd/"; +enum unicodeBaseUrl = "https://www.unicode.org/Public/16.0.0/ucd/"; /// Where to put generated files enum outputDir = "../std/internal/"; From 706d97171c2cde30ce4f9f06bef47156101be999 Mon Sep 17 00:00:00 2001 From: Georgy Markov <33967013+Ogi-kun@users.noreply.github.com> Date: Fri, 18 Oct 2024 05:59:31 +0300 Subject: [PATCH 313/327] =?UTF-8?q?Fix=20issue=2024801=20-=20`RefRange`=20?= =?UTF-8?q?doesn=E2=80=99t=20work=20if=20range=20primitives=20are=20not=20?= =?UTF-8?q?`const`=20(#9056)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix Bugzilla issue 24801 - `RefRange` doesn’t work if range primitives are not `const` * Remove trailing whitespaces --- std/range/package.d | 59 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 10 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index e2a2d7d2564..3edeef1f277 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -12444,7 +12444,7 @@ public: return (*_range).front; } - static if (is(typeof((*(cast(const R*)_range)).front))) @property auto front() const + static if (is(typeof(((const R* r) => (*r).front)(null)))) @property auto front() const { return (*_range).front; } @@ -12470,7 +12470,7 @@ public: return (*_range).empty; } - static if (is(typeof((*cast(const R*)_range).empty))) @property bool empty() const + static if (is(typeof(((const R* r) => (*r).empty)(null)))) @property bool empty() const { return (*_range).empty; } @@ -12500,10 +12500,11 @@ public: else static if (isForwardRange!R) { import std.traits : isSafe; - private alias S = typeof((*_range).save); + private alias S = typeof((() => (*_range).save)()); + + static if (is(typeof(((const R* r) => (*r).save)(null)))) + private alias CS = typeof(((const R* r) => (*r).save)(null)); - static if (is(typeof((*cast(const R*)_range).save))) - private alias CS = typeof((*cast(const R*)_range).save); static if (isSafe!((R* r) => (*r).save)) { @@ -12512,7 +12513,7 @@ public: mixin(_genSave()); } - static if (is(typeof((*cast(const R*)_range).save))) @property RefRange!CS save() @trusted const + static if (is(typeof(((const R* r) => (*r).save)(null)))) @property RefRange!CS save() @trusted const { mixin(_genSave()); } @@ -12524,7 +12525,7 @@ public: mixin(_genSave()); } - static if (is(typeof((*cast(const R*)_range).save))) @property RefRange!CS save() const + static if (is(typeof(((const R* r) => (*r).save)(null)))) @property RefRange!CS save() const { mixin(_genSave()); } @@ -12543,7 +12544,7 @@ public: private static string _genSave() @safe pure nothrow { return `import core.lifetime : emplace;` ~ - `alias S = typeof((*_range).save);` ~ + `alias S = typeof((() => (*_range).save)());` ~ `static assert(isForwardRange!S, S.stringof ~ " is not a forward range.");` ~ `auto mem = new void[S.sizeof];` ~ `emplace!S(mem, cast(S)(*_range).save);` ~ @@ -12572,7 +12573,7 @@ public: return (*_range).back; } - static if (is(typeof((*(cast(const R*)_range)).back))) @property auto back() const + static if (is(typeof(((const R* r) => (*r).back)(null)))) @property auto back() const { return (*_range).back; } @@ -12662,7 +12663,7 @@ public: { return (*_range).length; } - static if (is(typeof((*cast(const R*)_range).length))) @property auto length() const + static if (is(typeof(((const R* r) => (*r).length)(null)))) @property auto length() const { return (*_range).length; } @@ -13105,6 +13106,44 @@ private: auto rr2 = refRange(&r2); } +// https://issues.dlang.org/show_bug.cgi?id=24801 +@safe unittest +{ + + { + static struct R + { + int front() => 0; + void popFront() {} + bool empty() => false; + } + R range; + auto r = RefRange!R(&range); + } + + { + static struct R + { + size_t start, end; + size_t length() => end - start; + int opIndex(size_t i) => 0; + + + int front() => this[0]; + int back() => this[length-1]; + void popFront() { start++; } + void popBack() { end--; } + bool empty() => length == 0; + R save() const => R(); + } + + R range; + auto r = RefRange!R(&range); + } + + +} + /// ditto auto refRange(R)(R* range) if (isInputRange!R) From 913ef46bca09e9794d802335db80d6a053a0126b Mon Sep 17 00:00:00 2001 From: Jonathan M Davis Date: Thu, 17 Oct 2024 21:00:02 -0600 Subject: [PATCH 314/327] Fix bugzilla issue 24809: In some cases, stable sort assigns to unininitialized elements (#9057) --- std/algorithm/sorting.d | 73 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 71 insertions(+), 2 deletions(-) diff --git a/std/algorithm/sorting.d b/std/algorithm/sorting.d index cb471532872..29839d18091 100644 --- a/std/algorithm/sorting.d +++ b/std/algorithm/sorting.d @@ -2625,11 +2625,21 @@ private template TimSortImpl(alias pred, R) // can't use `temp.length` if there's no default constructor static if (__traits(compiles, { T defaultConstructed; cast(void) defaultConstructed; })) { - if (__ctfe) temp.length = newSize; - else temp = () @trusted { return uninitializedArray!(T[])(newSize); }(); + + static if (hasElaborateAssign!T) + temp.length = newSize; + else + { + if (__ctfe) temp.length = newSize; + else temp = () @trusted { return uninitializedArray!(T[])(newSize); }(); + } } else { + static assert(!hasElaborateAssign!T, + "Structs which have opAssign but cannot be default-initialized " ~ + "do not currently work with stable sort: " ~ + "https://issues.dlang.org/show_bug.cgi?id=24810"); temp = () @trusted { return uninitializedArray!(T[])(newSize); }(); } } @@ -3093,6 +3103,65 @@ private template TimSortImpl(alias pred, R) array.sort!((a, b) => false, SwapStrategy.stable); } +// https://issues.dlang.org/show_bug.cgi?id=24809 +@safe unittest +{ + static struct E + { + int value; + int valid = 42; + + ~this() + { + assert(valid == 42); + } + } + + import std.array : array; + import std.range : chain, only, repeat; + auto arr = chain(repeat(E(41), 18), + only(E(39)), + repeat(E(41), 16), + only(E(1)), + repeat(E(42), 33), + only(E(33)), + repeat(E(42), 16), + repeat(E(43), 27), + only(E(33)), + repeat(E(43), 34), + only(E(34)), + only(E(43)), + only(E(63)), + repeat(E(44), 42), + only(E(27)), + repeat(E(44), 11), + repeat(E(45), 64), + repeat(E(46), 3), + only(E(11)), + repeat(E(46), 7), + only(E(4)), + repeat(E(46), 34), + only(E(36)), + repeat(E(46), 17), + repeat(E(47), 36), + only(E(39)), + repeat(E(47), 26), + repeat(E(48), 17), + only(E(21)), + repeat(E(48), 5), + only(E(39)), + repeat(E(48), 14), + only(E(58)), + repeat(E(48), 24), + repeat(E(49), 13), + only(E(40)), + repeat(E(49), 38), + only(E(18)), + repeat(E(49), 11), + repeat(E(50), 6)).array(); + + arr.sort!((a, b) => a.value < b.value, SwapStrategy.stable)(); +} // schwartzSort /** From 1ea91e66740ca68eca6fd06300e895b7b4a8e2ae Mon Sep 17 00:00:00 2001 From: "Quirin F. Schroll" Date: Fri, 18 Oct 2024 07:15:34 +0200 Subject: [PATCH 315/327] Fix lockstep error message (#9029) --- std/range/package.d | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/std/range/package.d b/std/range/package.d index 3edeef1f277..3b86e07ddf6 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -6095,8 +6095,9 @@ private struct LockstepMixin(Ranges...) { indexDef = q{ size_t index = ranges[0].length - 1; - enforce(this.stoppingPolicy == StoppingPolicy.requireSameLength, - "lockstep can only be used with foreach_reverse when stoppingPolicy == requireSameLength"); + enforce( + this.stoppingPolicy == StoppingPolicy.requireSameLength, + "Indexed lockstep can only be used with foreach_reverse when stoppingPolicy == requireSameLength"); foreach (range; ranges[1 .. $]) enforce(range.length == ranges[0].length); From a51c0eada6728705cbb4e919f28b6ada5c8e45fc Mon Sep 17 00:00:00 2001 From: Walter Bright Date: Thu, 17 Oct 2024 22:18:04 -0700 Subject: [PATCH 316/327] co-locate overloads of std.algorithm.mutation.swap() (#8951) --- std/algorithm/mutation.d | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/std/algorithm/mutation.d b/std/algorithm/mutation.d index e434d248edb..ea1a1b290dc 100644 --- a/std/algorithm/mutation.d +++ b/std/algorithm/mutation.d @@ -2860,6 +2860,13 @@ Params: lhs = Data to be swapped with `rhs`. rhs = Data to be swapped with `lhs`. */ +void swap(T)(ref T lhs, ref T rhs) +if (is(typeof(lhs.proxySwap(rhs)))) +{ + lhs.proxySwap(rhs); +} + +/// ditto void swap(T)(ref T lhs, ref T rhs) @trusted pure nothrow @nogc if (isBlitAssignable!T && !is(typeof(lhs.proxySwap(rhs)))) { @@ -3121,13 +3128,6 @@ if (isBlitAssignable!T && !is(typeof(lhs.proxySwap(rhs)))) swap(a3, a4); } -/// ditto -void swap(T)(ref T lhs, ref T rhs) -if (is(typeof(lhs.proxySwap(rhs)))) -{ - lhs.proxySwap(rhs); -} - /** Swaps two elements in-place of a range `r`, specified by their indices `i1` and `i2`. From 30a054b31db962ae54978dc763647eba84a4422a Mon Sep 17 00:00:00 2001 From: Feldwor Date: Mon, 21 Oct 2024 07:31:11 +0300 Subject: [PATCH 317/327] Add .byLine Windows Example: Update stdio.d (#8860) --- std/stdio.d | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/std/stdio.d b/std/stdio.d index b4744600cd5..19f1740651c 100644 --- a/std/stdio.d +++ b/std/stdio.d @@ -2340,6 +2340,24 @@ void main() Notice that neither example accesses the line data returned by `front` after the corresponding `popFront` call is made (because the contents may well have changed). +---- + +Windows specific Example: +---- +import std.stdio; + +version (Windows) +void main() +{ + + foreach (line; File("file.txt").byLine(No.keepTerminator, "\r\n")) + { + writeln("|"~line~"|"); + if (line == "HelloWorld") + writeln("^This Line is here."); + } + +} */ auto byLine(Terminator = char, Char = char) (KeepTerminator keepTerminator = No.keepTerminator, From ab46287e18f1f694390fbde3c62fff65c612579b Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Mon, 21 Oct 2024 14:44:57 +0800 Subject: [PATCH 318/327] fix long line linter error (#9060) * fix long line linter error * Update package.d --- std/range/package.d | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/std/range/package.d b/std/range/package.d index 3b86e07ddf6..e8532cd0b72 100644 --- a/std/range/package.d +++ b/std/range/package.d @@ -6097,7 +6097,8 @@ private struct LockstepMixin(Ranges...) size_t index = ranges[0].length - 1; enforce( this.stoppingPolicy == StoppingPolicy.requireSameLength, - "Indexed lockstep can only be used with foreach_reverse when stoppingPolicy == requireSameLength"); + "Indexed lockstep can only be used with foreach_reverse when " ~ + "stoppingPolicy == requireSameLength"); foreach (range; ranges[1 .. $]) enforce(range.length == ranges[0].length); From fb602efdc420c6f136cda52e264fb3f04798a6a5 Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Mon, 21 Oct 2024 14:50:11 +0800 Subject: [PATCH 319/327] remove uses of `classinfo`, rebases part of #7445 (#9062) --- std/exception.d | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/std/exception.d b/std/exception.d index c3024d79968..9b1a7c8a62c 100644 --- a/std/exception.d +++ b/std/exception.d @@ -1801,7 +1801,7 @@ expression. @system unittest { import std.format : format; - assert("%s".format.ifThrown!Exception(e => e.classinfo.name) == "std.format.FormatException"); + assert("%s".format.ifThrown!Exception(e => typeid(e).name) == "std.format.FormatException"); } //Verify Examples @@ -1834,7 +1834,7 @@ expression. static assert(!__traits(compiles, (new Object()).ifThrown(1))); //Use a lambda to get the thrown object. - assert("%s".format().ifThrown(e => e.classinfo.name) == "std.format.FormatException"); + assert("%s".format().ifThrown(e => typeid(e).name) == "std.format.FormatException"); } @system unittest From 44296a1a9b262b9076036e050eb6034304fdc3bd Mon Sep 17 00:00:00 2001 From: Nicholas Wilson Date: Mon, 21 Oct 2024 15:05:32 +0800 Subject: [PATCH 320/327] remove `classinfo` uses, rebases part of #7445 (#9061) --- std/socket.d | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/std/socket.d b/std/socket.d index e86a51fe2df..52fd33b1dd1 100644 --- a/std/socket.d +++ b/std/socket.d @@ -702,7 +702,7 @@ class InternetHost // must synchronize across all threads private bool getHost(string opMixin, T)(T param) @system { - synchronized(this.classinfo) + synchronized(typeid(this)) return getHostNoSync!(opMixin, T)(param); } } From dfb9db4004aba46a7d8af1728bd31b6c6bac094d Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 21 Oct 2024 11:30:19 +0000 Subject: [PATCH 321/327] Fix Bugzilla 24823 - std.json: Allow optionally preserving the order of fields in JSON objects --- std/json.d | 316 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 274 insertions(+), 42 deletions(-) diff --git a/std/json.d b/std/json.d index 9dcec89b2ce..7a10aed9e82 100644 --- a/std/json.d +++ b/std/json.d @@ -85,6 +85,7 @@ enum JSONOptions escapeNonAsciiChars = 0x2, /// Encode non-ASCII characters with a Unicode escape sequence doNotEscapeSlashes = 0x4, /// Do not escape slashes ('/') strictParsing = 0x8, /// Strictly follow RFC-8259 grammar when parsing + preserveObjectOrder = 0x16, /// Preserve order of object keys when parsing } /** @@ -100,6 +101,7 @@ enum JSONType : byte float_, /// ditto array, /// ditto object, /// ditto + orderedObject, /// ditto true_, /// ditto false_, /// ditto // FIXME: Find some way to deprecate the enum members below, which does NOT @@ -126,6 +128,13 @@ struct JSONValue { import std.exception : enforce; + import std.typecons : Tuple; + + alias OrderedObjectMember = Tuple!( + string, "key", + JSONValue, "value", + ); + union Store { string str; @@ -133,6 +142,7 @@ struct JSONValue ulong uinteger; double floating; JSONValue[string] object; + OrderedObjectMember[] orderedObject; JSONValue[] array; } private Store store; @@ -310,13 +320,58 @@ struct JSONValue * --- * * Throws: `JSONException` for read access if `type` is not - * `JSONType.object`. + * `JSONType.object` or `JSONType.orderedObject`. */ @property inout(JSONValue[string]) objectNoRef() inout pure @trusted { - enforce!JSONException(type == JSONType.object, - "JSONValue is not an object"); - return store.object; + switch (type) + { + case JSONType.object: + return store.object; + case JSONType.orderedObject: + JSONValue[string] result; + foreach (pair; store.orderedObject) + result[pair.key] = pair.value; + return cast(inout) result; + default: + throw new JSONException("JSONValue is not an object or ordered object"); + } + } + + /*** + * Value getter/setter for `JSONType.orderedObject`. + * Throws: `JSONException` for read access if `type` is not + * `JSONType.orderedObject`. + * Note: This is @system because of the following pattern: + --- + auto a = &(json.orderedObject()); + json.uinteger = 0; // overwrite AA pointer + (*a)["hello"] = "world"; // segmentation fault + --- + */ + @property ref inout(OrderedObjectMember[]) orderedObject() inout pure @system return + { + enforce!JSONException(type == JSONType.orderedObject, + "JSONValue is not an orderedObject"); + return store.orderedObject; + } + /// ditto + @property OrderedObjectMember[] orderedObject(return scope OrderedObjectMember[] v) pure nothrow @nogc @trusted // TODO make @safe + { + assign(v); + return v; + } + + /*** + * Value getter for `JSONType.orderedObject`. + * Unlike `orderedObject`, this retrieves the object by value + * and can be used in @safe code. + */ + @property inout(OrderedObjectMember[]) orderedObjectNoRef() inout pure @trusted + { + enforce!JSONException(type == JSONType.orderedObject, + "JSONValue is not an orderedObject"); + return store.orderedObject; } /*** @@ -527,6 +582,11 @@ struct JSONValue () @trusted { store.object = aa; }(); } } + else static if (is(T : OrderedObjectMember[])) + { + type_tag = JSONType.orderedObject; + () @trusted { store.orderedObject = arg; }(); + } else static if (isArray!T) { type_tag = JSONType.array; @@ -629,6 +689,32 @@ struct JSONValue assert(obj1 != obj2); } + /** + * An enum value that can be used to obtain a `JSONValue` representing + * an empty JSON object. + * Unlike `emptyObject`, the order of inserted keys is preserved. + */ + enum emptyOrderedObject = { + JSONValue v; + v.orderedObject = null; + return v; + }(); + /// + @system unittest + { + JSONValue obj = JSONValue.emptyOrderedObject; + assert(obj.type == JSONType.orderedObject); + obj["b"] = JSONValue(2); + obj["a"] = JSONValue(1); + assert(obj["a"] == JSONValue(1)); + assert(obj["b"] == JSONValue(2)); + + string[] keys; + foreach (string k, JSONValue v; obj) + keys ~= k; + assert(keys == ["b", "a"]); + } + /** * An enum value that can be used to obtain a `JSONValue` representing * an empty JSON array. @@ -703,21 +789,39 @@ struct JSONValue * initializes it with a JSON object and then performs * the index assignment. * - * Throws: `JSONException` if `type` is not `JSONType.object` - * or `JSONType.null_`. + * Throws: `JSONException` if `type` is not `JSONType.object`, + * `JSONType.orderedObject`, or `JSONType.null_`. */ void opIndexAssign(T)(auto ref T value, string key) { - enforce!JSONException(type == JSONType.object || type == JSONType.null_, - "JSONValue must be object or null"); - JSONValue[string] aa = null; - if (type == JSONType.object) + enforce!JSONException( + type == JSONType.object || + type == JSONType.orderedObject || + type == JSONType.null_, + "JSONValue must be object or null"); + if (type == JSONType.orderedObject) { - aa = this.objectNoRef; + auto arr = this.orderedObjectNoRef; + foreach (ref pair; arr) + if (pair.key == key) + { + pair.value = value; + return; + } + arr ~= OrderedObjectMember(key, JSONValue(value)); + this.orderedObject = arr; } + else + { + JSONValue[string] aa = null; + if (type == JSONType.object) + { + aa = this.objectNoRef; + } - aa[key] = value; - this.object = aa; + aa[key] = value; + this.object = aa; + } } /// @safe unittest @@ -828,6 +932,8 @@ struct JSONValue /// ditto bool opEquals(ref const JSONValue rhs) const @nogc nothrow pure @trusted { + import std.algorithm.searching : canFind; + // Default doesn't work well since store is a union. Compare only // what should be in store. // This is @trusted to remain nogc, nothrow, fast, and usable from @safe code. @@ -873,7 +979,40 @@ struct JSONValue case JSONType.string: return type_tag == rhs.type_tag && store.str == rhs.store.str; case JSONType.object: - return type_tag == rhs.type_tag && store.object == rhs.store.object; + switch (rhs.type_tag) + { + case JSONType.object: + return store.object == rhs.store.object; + case JSONType.orderedObject: + if (store.object.length != rhs.store.orderedObject.length) + return false; + foreach (ref pair; rhs.store.orderedObject) + if (pair.key !in store.object || store.object[pair.key] != pair.value) + return false; + return true; + default: + return false; + } + case JSONType.orderedObject: + switch (rhs.type_tag) + { + case JSONType.object: + if (store.orderedObject.length != rhs.store.object.length) + return false; + foreach (ref pair; store.orderedObject) + if (pair.key !in rhs.store.object || rhs.store.object[pair.key] != pair.value) + return false; + return true; + case JSONType.orderedObject: + if (store.orderedObject.length != rhs.store.orderedObject.length) + return false; + foreach (ref pair; store.orderedObject) + if (!rhs.store.orderedObject.canFind(pair)) + return false; + return true; + default: + return false; + } case JSONType.array: return type_tag == rhs.type_tag && store.array == rhs.store.array; case JSONType.true_: @@ -913,18 +1052,35 @@ struct JSONValue /// Implements the foreach `opApply` interface for json objects. int opApply(scope int delegate(string key, ref JSONValue) dg) @system { - enforce!JSONException(type == JSONType.object, - "JSONValue is not an object"); - int result; - - foreach (string key, ref value; object) + switch (type) { - result = dg(key, value); - if (result) - break; - } + case JSONType.object: + int result; - return result; + foreach (string key, ref value; object) + { + result = dg(key, value); + if (result) + break; + } + + return result; + + case JSONType.orderedObject: + int result; + + foreach (ref pair; orderedObject) + { + result = dg(pair.key, pair.value); + if (result) + break; + } + + return result; + + default: + throw new JSONException("JSONValue is not an object or orderedObject"); + } } /*** @@ -1018,6 +1174,7 @@ if (isSomeFiniteCharInputRange!T) Nullable!Char next; int line = 1, pos = 0; immutable bool strict = (options & JSONOptions.strictParsing) != 0; + immutable bool ordered = (options & JSONOptions.preserveObjectOrder) != 0; void error(string msg) { @@ -1258,31 +1415,62 @@ if (isSomeFiniteCharInputRange!T) switch (c) { case '{': - if (testChar('}')) + if (ordered) { - value.object = null; - break; - } + if (testChar('}')) + { + value.orderedObject = null; + break; + } - JSONValue[string] obj; - do + JSONValue.OrderedObjectMember[] obj; + do + { + skipWhitespace(); + if (!strict && peekChar() == '}') + { + break; + } + checkChar('"'); + string name = parseString(); + checkChar(':'); + JSONValue member; + parseValue(member); + obj ~= JSONValue.OrderedObjectMember(name, member); + } + while (testChar(',')); + value.orderedObject = obj; + + checkChar('}'); + } + else { - skipWhitespace(); - if (!strict && peekChar() == '}') + if (testChar('}')) { + value.object = null; break; } - checkChar('"'); - string name = parseString(); - checkChar(':'); - JSONValue member; - parseValue(member); - obj[name] = member; - } - while (testChar(',')); - value.object = obj; - checkChar('}'); + JSONValue[string] obj; + do + { + skipWhitespace(); + if (!strict && peekChar() == '}') + { + break; + } + checkChar('"'); + string name = parseString(); + checkChar(':'); + JSONValue member; + parseValue(member); + obj[name] = member; + } + while (testChar(',')); + value.object = obj; + + checkChar('}'); + } break; case '[': @@ -1684,6 +1872,36 @@ if (isOutputRange!(Out,char)) } break; + case JSONType.orderedObject: + auto obj = value.orderedObjectNoRef; + if (!obj.length) + { + json.put("{}"); + } + else + { + putCharAndEOL('{'); + bool first = true; + + foreach (pair; obj) + { + if (!first) + putCharAndEOL(','); + first = false; + putTabs(1); + toString(pair.key); + json.put(':'); + if (pretty) + json.put(' '); + toValueImpl(pair.value, indentLevel + 1); + } + + putEOL(); + putTabs(); + json.put('}'); + } + break; + case JSONType.array: auto arr = value.arrayNoRef; if (arr.empty) @@ -2469,3 +2687,17 @@ pure nothrow @safe unittest assert(app.data == s, app.data); } + +// https://issues.dlang.org/show_bug.cgi?id=24823 - JSONOptions.preserveObjectOrder +@safe unittest +{ + import std.array : appender; + + string s = `{"b":2,"a":1}`; + JSONValue j = parseJSON(s, -1, JSONOptions.preserveObjectOrder); + + auto app = appender!string(); + j.toString(app); + + assert(app.data == s, app.data); +} From 800dd75234b8a64cc8fe9ee1948771bfad49e4d2 Mon Sep 17 00:00:00 2001 From: Vladimir Panteleev Date: Mon, 21 Oct 2024 12:08:34 +0000 Subject: [PATCH 322/327] Move ordered object indication into a new bool Avoid breaking code that do "final switch" oven JSONType. --- std/json.d | 320 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 181 insertions(+), 139 deletions(-) diff --git a/std/json.d b/std/json.d index 7a10aed9e82..a1b1e245c2d 100644 --- a/std/json.d +++ b/std/json.d @@ -101,7 +101,6 @@ enum JSONType : byte float_, /// ditto array, /// ditto object, /// ditto - orderedObject, /// ditto true_, /// ditto false_, /// ditto // FIXME: Find some way to deprecate the enum members below, which does NOT @@ -137,12 +136,21 @@ struct JSONValue union Store { + struct Object + { + bool isOrdered; + union + { + JSONValue[string] unordered; + OrderedObjectMember[] ordered; + } + } + string str; long integer; ulong uinteger; double floating; - JSONValue[string] object; - OrderedObjectMember[] orderedObject; + Object object; JSONValue[] array; } private Store store; @@ -282,9 +290,9 @@ struct JSONValue } /*** - * Value getter/setter for `JSONType.object`. + * Value getter/setter for unordered `JSONType.object`. * Throws: `JSONException` for read access if `type` is not - * `JSONType.object`. + * `JSONType.object` or the object is ordered. * Note: This is @system because of the following pattern: --- auto a = &(json.object()); @@ -296,7 +304,9 @@ struct JSONValue { enforce!JSONException(type == JSONType.object, "JSONValue is not an object"); - return store.object; + enforce!JSONException(!store.object.isOrdered, + "JSONValue object is ordered, cannot return by ref"); + return store.object.unordered; } /// ditto @property JSONValue[string] object(return scope JSONValue[string] v) pure nothrow @nogc @trusted // TODO make @safe @@ -306,7 +316,7 @@ struct JSONValue } /*** - * Value getter for `JSONType.object`. + * Value getter for unordered `JSONType.object`. * Unlike `object`, this retrieves the object by value * and can be used in @safe code. * @@ -320,28 +330,28 @@ struct JSONValue * --- * * Throws: `JSONException` for read access if `type` is not - * `JSONType.object` or `JSONType.orderedObject`. + * `JSONType.object`. */ @property inout(JSONValue[string]) objectNoRef() inout pure @trusted { - switch (type) + enforce!JSONException(type == JSONType.object, + "JSONValue is not an object"); + if (store.object.isOrdered) { - case JSONType.object: - return store.object; - case JSONType.orderedObject: - JSONValue[string] result; - foreach (pair; store.orderedObject) - result[pair.key] = pair.value; - return cast(inout) result; - default: - throw new JSONException("JSONValue is not an object or ordered object"); + // Convert to unordered + JSONValue[string] result; + foreach (pair; store.object.ordered) + result[pair.key] = pair.value; + return cast(inout) result; } + else + return store.object.unordered; } /*** - * Value getter/setter for `JSONType.orderedObject`. + * Value getter/setter for ordered `JSONType.object`. * Throws: `JSONException` for read access if `type` is not - * `JSONType.orderedObject`. + * `JSONType.object` or the object is unordered. * Note: This is @system because of the following pattern: --- auto a = &(json.orderedObject()); @@ -351,9 +361,11 @@ struct JSONValue */ @property ref inout(OrderedObjectMember[]) orderedObject() inout pure @system return { - enforce!JSONException(type == JSONType.orderedObject, - "JSONValue is not an orderedObject"); - return store.orderedObject; + enforce!JSONException(type == JSONType.object, + "JSONValue is not an object"); + enforce!JSONException(store.object.isOrdered, + "JSONValue object is unordered, cannot return by ref"); + return store.object.ordered; } /// ditto @property OrderedObjectMember[] orderedObject(return scope OrderedObjectMember[] v) pure nothrow @nogc @trusted // TODO make @safe @@ -363,15 +375,32 @@ struct JSONValue } /*** - * Value getter for `JSONType.orderedObject`. + * Value getter for ordered `JSONType.object`. * Unlike `orderedObject`, this retrieves the object by value * and can be used in @safe code. */ @property inout(OrderedObjectMember[]) orderedObjectNoRef() inout pure @trusted { - enforce!JSONException(type == JSONType.orderedObject, - "JSONValue is not an orderedObject"); - return store.orderedObject; + enforce!JSONException(type == JSONType.object, + "JSONValue is not an object"); + if (store.object.isOrdered) + return store.object.ordered; + else + { + // Convert to ordered + OrderedObjectMember[] result; + foreach (key, value; store.object.unordered) + result ~= OrderedObjectMember(key, value); + return cast(inout) result; + } + } + + /// Returns `true` if the order of keys of the represented object is being preserved. + @property bool isOrdered() const pure @trusted + { + enforce!JSONException(type == JSONType.object, + "JSONValue is not an object"); + return store.object.isOrdered; } /*** @@ -572,20 +601,29 @@ struct JSONValue static if (is(Value : JSONValue)) { JSONValue[string] t = arg; - () @trusted { store.object = t; }(); + () @trusted { + store.object.isOrdered = false; + store.object.unordered = t; + }(); } else { JSONValue[string] aa; foreach (key, value; arg) aa[key] = JSONValue(value); - () @trusted { store.object = aa; }(); + () @trusted { + store.object.isOrdered = false; + store.object.unordered = aa; + }(); } } else static if (is(T : OrderedObjectMember[])) { - type_tag = JSONType.orderedObject; - () @trusted { store.orderedObject = arg; }(); + type_tag = JSONType.object; + () @trusted { + store.object.isOrdered = true; + store.object.ordered = arg; + }(); } else static if (isArray!T) { @@ -703,7 +741,8 @@ struct JSONValue @system unittest { JSONValue obj = JSONValue.emptyOrderedObject; - assert(obj.type == JSONType.orderedObject); + assert(obj.type == JSONType.object); + assert(obj.isOrdered); obj["b"] = JSONValue(2); obj["a"] = JSONValue(1); assert(obj["a"] == JSONValue(1)); @@ -789,17 +828,16 @@ struct JSONValue * initializes it with a JSON object and then performs * the index assignment. * - * Throws: `JSONException` if `type` is not `JSONType.object`, - * `JSONType.orderedObject`, or `JSONType.null_`. + * Throws: `JSONException` if `type` is not `JSONType.object` + * or `JSONType.null_`. */ void opIndexAssign(T)(auto ref T value, string key) { enforce!JSONException( type == JSONType.object || - type == JSONType.orderedObject || type == JSONType.null_, "JSONValue must be object or null"); - if (type == JSONType.orderedObject) + if (type == JSONType.object && isOrdered) { auto arr = this.orderedObjectNoRef; foreach (ref pair; arr) @@ -979,39 +1017,44 @@ struct JSONValue case JSONType.string: return type_tag == rhs.type_tag && store.str == rhs.store.str; case JSONType.object: - switch (rhs.type_tag) + if (rhs.type_tag != JSONType.object) + return false; + if (store.object.isOrdered) { - case JSONType.object: - return store.object == rhs.store.object; - case JSONType.orderedObject: - if (store.object.length != rhs.store.orderedObject.length) + if (rhs.store.object.isOrdered) + { + if (store.object.ordered.length != rhs.store.object.ordered.length) return false; - foreach (ref pair; rhs.store.orderedObject) - if (pair.key !in store.object || store.object[pair.key] != pair.value) + foreach (ref pair; store.object.ordered) + if (!rhs.store.object.ordered.canFind(pair)) return false; return true; - default: - return false; - } - case JSONType.orderedObject: - switch (rhs.type_tag) - { - case JSONType.object: - if (store.orderedObject.length != rhs.store.object.length) + } + else + { + if (store.object.ordered.length != rhs.store.object.unordered.length) return false; - foreach (ref pair; store.orderedObject) - if (pair.key !in rhs.store.object || rhs.store.object[pair.key] != pair.value) + foreach (ref pair; store.object.ordered) + if (pair.key !in rhs.store.object.unordered || + rhs.store.object.unordered[pair.key] != pair.value) return false; return true; - case JSONType.orderedObject: - if (store.orderedObject.length != rhs.store.orderedObject.length) + } + } + else + { + if (rhs.store.object.isOrdered) + { + if (store.object.unordered.length != rhs.store.object.ordered.length) return false; - foreach (ref pair; store.orderedObject) - if (!rhs.store.orderedObject.canFind(pair)) + foreach (ref pair; rhs.store.object.ordered) + if (pair.key !in store.object.unordered || + store.object.unordered[pair.key] != pair.value) return false; return true; - default: - return false; + } + else + return store.object.unordered == rhs.store.object.unordered; } case JSONType.array: return type_tag == rhs.type_tag && store.array == rhs.store.array; @@ -1052,35 +1095,31 @@ struct JSONValue /// Implements the foreach `opApply` interface for json objects. int opApply(scope int delegate(string key, ref JSONValue) dg) @system { - switch (type) - { - case JSONType.object: - int result; - - foreach (string key, ref value; object) - { - result = dg(key, value); - if (result) - break; - } - - return result; - - case JSONType.orderedObject: - int result; - - foreach (ref pair; orderedObject) - { - result = dg(pair.key, pair.value); - if (result) - break; - } + enforce!JSONException(type == JSONType.object, + "JSONValue is not an object"); - return result; + int result; - default: - throw new JSONException("JSONValue is not an object or orderedObject"); + if (isOrdered) + { + foreach (ref pair; orderedObject) + { + result = dg(pair.key, pair.value); + if (result) + break; + } } + else + { + foreach (string key, ref value; object) + { + result = dg(key, value); + if (result) + break; + } + } + + return result; } /*** @@ -1826,79 +1865,82 @@ if (isOutputRange!(Out,char)) final switch (value.type) { case JSONType.object: - auto obj = value.objectNoRef; - if (!obj.length) + if (value.isOrdered) { - json.put("{}"); - } - else - { - putCharAndEOL('{'); - bool first = true; - - void emit(R)(R names) + auto obj = value.orderedObjectNoRef; + if (!obj.length) + { + json.put("{}"); + } + else { - foreach (name; names) + putCharAndEOL('{'); + bool first = true; + + foreach (pair; obj) { - auto member = obj[name]; if (!first) putCharAndEOL(','); first = false; putTabs(1); - toString(name); + toString(pair.key); json.put(':'); if (pretty) json.put(' '); - toValueImpl(member, indentLevel + 1); + toValueImpl(pair.value, indentLevel + 1); } - } - import std.algorithm.sorting : sort; - // https://issues.dlang.org/show_bug.cgi?id=14439 - // auto names = obj.keys; // aa.keys can't be called in @safe code - auto names = new string[obj.length]; - size_t i = 0; - foreach (k, v; obj) - { - names[i] = k; - i++; + putEOL(); + putTabs(); + json.put('}'); } - sort(names); - emit(names); - - putEOL(); - putTabs(); - json.put('}'); - } - break; - - case JSONType.orderedObject: - auto obj = value.orderedObjectNoRef; - if (!obj.length) - { - json.put("{}"); } else { - putCharAndEOL('{'); - bool first = true; - - foreach (pair; obj) + auto obj = value.objectNoRef; + if (!obj.length) { - if (!first) - putCharAndEOL(','); - first = false; - putTabs(1); - toString(pair.key); - json.put(':'); - if (pretty) - json.put(' '); - toValueImpl(pair.value, indentLevel + 1); + json.put("{}"); } + else + { + putCharAndEOL('{'); + bool first = true; - putEOL(); - putTabs(); - json.put('}'); + void emit(R)(R names) + { + foreach (name; names) + { + auto member = obj[name]; + if (!first) + putCharAndEOL(','); + first = false; + putTabs(1); + toString(name); + json.put(':'); + if (pretty) + json.put(' '); + toValueImpl(member, indentLevel + 1); + } + } + + import std.algorithm.sorting : sort; + // https://issues.dlang.org/show_bug.cgi?id=14439 + // auto names = obj.keys; // aa.keys can't be called in @safe code + auto names = new string[obj.length]; + size_t i = 0; + foreach (k, v; obj) + { + names[i] = k; + i++; + } + sort(names); + emit(names); + + putEOL(); + putTabs(); + json.put('}'); + } } break; From 76a70abd2c15d701f6150b936e54a77129e0acf8 Mon Sep 17 00:00:00 2001 From: Cyrodwd Date: Mon, 21 Oct 2024 20:29:06 -0700 Subject: [PATCH 323/327] Added Haiku and Solaris on OS enum and version --- phobos/sys/system.d | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phobos/sys/system.d b/phobos/sys/system.d index 538db6d70c8..16fdd00c42f 100644 --- a/phobos/sys/system.d +++ b/phobos/sys/system.d @@ -39,6 +39,7 @@ immutable openBSD, /// OpenBSD dragonFlyBSD, /// DragonFlyBSD solaris, /// Solaris + haiku, /// HaikuOS android, /// Android otherPosix, /// Other Posix Systems unknown, /// Unknown @@ -57,6 +58,8 @@ immutable else version (NetBSD) OS os = OS.netBSD; else version (OpenBSD) OS os = OS.openBSD; else version (DragonFlyBSD) OS os = OS.dragonFlyBSD; + else version (Solaris) OS os = OS.solaris; + else version (Haiku) OS os = OS.haiku; else version (Posix) OS os = OS.otherPosix; else OS os = OS.unknown; From 00d56d07a72fa01f0d7ba96139271e714fd07d63 Mon Sep 17 00:00:00 2001 From: Cyrodwd Date: Mon, 21 Oct 2024 20:41:19 -0700 Subject: [PATCH 324/327] Added Haiku and Solaris on OS enum and version --- phobos/sys/system.d | 1 - 1 file changed, 1 deletion(-) diff --git a/phobos/sys/system.d b/phobos/sys/system.d index 16fdd00c42f..1c8f22a2d2f 100644 --- a/phobos/sys/system.d +++ b/phobos/sys/system.d @@ -158,4 +158,3 @@ immutable else version (Alpha) ISA instructionSetArchitecture = ISA.alpha; else ISA instructionSetArchitecture = ISA.unknown; } - From 03c4998e851e2781058c5653b3e60658bfd96fb7 Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Fri, 25 Oct 2024 01:42:49 -0700 Subject: [PATCH 325/327] Add Phobos 3 Documentation (#9068) * Add documentation from the Phobos 3 Design repo. Add section on Template Reduction by request of Walter. Split up documents for clarity. * Add README.md. Update documents using documents from the V3 Design Repo. * Move numeric to the math package. --- phobos/CONTRIBUTING.md | 23 ++++++++ phobos/Design.md | 116 +++++++++++++++++++++++++++++++++++++++++ phobos/PackageMap.md | 87 +++++++++++++++++++++++++++++++ phobos/README.md | 21 ++++++++ 4 files changed, 247 insertions(+) create mode 100644 phobos/CONTRIBUTING.md create mode 100644 phobos/Design.md create mode 100644 phobos/PackageMap.md create mode 100644 phobos/README.md diff --git a/phobos/CONTRIBUTING.md b/phobos/CONTRIBUTING.md new file mode 100644 index 00000000000..3cbac0b7f7b --- /dev/null +++ b/phobos/CONTRIBUTING.md @@ -0,0 +1,23 @@ +# Phobos 3 Contributors Guide + +This document refers to contributions specific to Phobos 3. For the full documentation on contributing please see the guide here: [D Contributors Guide](https://github.com/dlang/phobos/blob/master/CONTRIBUTING.md). + +## Naming and Style Guidelines + +Names should follow the existing naming guidelines here: [D Style Guide](https://dlang.org/dstyle.html) + +When selecting a name for a type or method, a quick survey of how other popular languages name the equivalent type/method should be performed. For example, in .NET and Java, the `currTime()` method would be named `now()`. Using the same names as popular languages reduces the friction experienced by the engineer when migrating to D. Be prepared to provide examples from your survey in the Pull Request. In cases where there is no clear agreement or two examples are equally represented an alias *may* be appropriate for the purposes of moving past the block. + +Prefer whole words over abbreviations and dropped letters. For example, prefer `writeLine` over `writeln`. Choose the shortest name that accurately describes the feature. Abbreviations are acceptable where the abbreviation is in common usage and/or would result in a cumbersome name. Furthermore, non-standard abbreviations make it more difficult for non-English speakers to adopt the library. + +Phobos will use a 100 soft and 120 hard character column limit. This will be enforced via `dfmt` and `.editorconfig` files provided with the distribution. + +## Guidelines for Reviewers + +### Silence is Approval + +One of the complaints the community has made about D in general and Phobos in particular is that many PRs go un-reviewed and are left to rot. Therefore, in Phobos 3, if you are listed as a reviewer on a PR and you do not respond to a within 7 days to a pull request, your silence will be considered an approval. If the required reviewer is unavailable for any reason (ex: vacation, emergency, etc.), another reviewer can bypass them. Once they return they can provide comments and submit PR's to address any feedback on the PR's assigned to them that they missed. + +### Disagreement Without Providing a Fix or Alternative is Approval + +Another major community complaint is that PR's are routinely abandoned because somebody disagrees with how the PR does something, or believes that it will cause a problem, causing the PR to stall out. While the reviewer may be correct, simple disagreement cannot be sufficient reason to block a PR without providing any alternative implementation. Therefore, the disagreeing reviewer must either provide a PR/patch to the primary PR or provide an alternative implementation in a new PR that addresses their concern. The disagreeing reviewer must ensure that their PR references the original PR. If no alternatives are provided, the PR will be merged and the disagreeing reviewer is welcome to base their future alternative implementation on the merged work. diff --git a/phobos/Design.md b/phobos/Design.md new file mode 100644 index 00000000000..c7c23ff557b --- /dev/null +++ b/phobos/Design.md @@ -0,0 +1,116 @@ +# Phobos 3 Design Goals + +## Rationale + +Phobos v2 is well over a decade old. As time goes by, best practices have evolved, mistakes have become apparent, needs have changed, and better ideas have appeared. + +Phobos must also evolve. + +## History + +* Phobos v1 was for D1 +* Phobos v2 was for D2 + +## Phobos 2 + +When Phobos v2 was developed, Phobos v1 was obsoleted. This broke a lot of existing code and was a wrenching change for the entire community. Old code needed to be rewritten to use Phobos v2. Some of the discarded v1 modules were restored in the unDead library for the convenience of older code, but the damage had been done. + +The existing roots of `core` for the Runtime, `etc` for C Interfaces, and `std` for the v2 Standard Library are to remain reserved for the foreseeable future. Both v2 and v3 will share usage of the `core` and `etc` roots. The `std` root is to be maintained for compatibility but no new features will be added. + +Therefore, v2 will continue to be supported following these rules moving forward: + +- Will continue to be supported for compatibility purposes. +- Will receive bug fixes and enhancements to adapt to new operating systems and new D Compiler Editions. +- Will not add new functionality. +- Existing Phobos v2 roots remain reserved indefinitely. +- User code must be able to use v2 and v3 capabilities in the same project, however, there may be instances of incompatibility as v2 types are not support in v3 and vice versa. + +## Phobos 3 + +This section is a list of design principles and goals that we have established for Phobos 3. + +### Hybrid single-root/multi-trunk package design + +Phobos v3 will use a single package root `phobos.` with multiple 'trunk' packages. This allows us to keep the old `std` package root while splitting up the new library into smaller, more manageable, components. Splitting the library into multiple packages provides the following benefits: + +1. Only pay for what you use. Different roots can be compiled as separate static/shared libraries and linked as needed, reducing the overall weight of executables. This offers some relief to the long standing community request to break Phobos into individual packages. While we do not agree with atomizing Phobos to the extreme degree of one package per module, multiple package roots allow us to achieve some of that goal in a logical manner. +2. Multiple trunks allow for layering components. The core roots form a foundation upon which to build higher-level packages. +3. Multiple trunks allow for an expanded feature set without adding to package depth. +4. Not all trunks need to be implemented for a given platform to be considered "supported". If only the core roots are required for a platform to be considered supported it becomes significantly less complicated to port D to new platforms. +5. Rules can be applied differently to core vs. non-core roots/trunks. For example, a possible rule could be that core roots/trunks may not throw exceptions under any circumstance, but non-core roots/trunks can. This is not intended to imply that throwing exceptions is encouraged, merely made available to allow more implementation flexibility for more complex constructs. +6. The old `std` root can continue to be maintained and built independently of the new Phobos root. +7. Multiple trunk packages allows Phobos to expand normally without running into the 64k DLL symbol limit on Windows. + +Currently the core roots/trunks for Phobos v3 are `core`, `etc`, and `phobos.sys`. As a rule, the `phobos.sys` trunk is not allowed to import from non-core trunks. + +[Proposed Package Structure for Phobos 3](PackageMap.md) + +### Strings + +#### No Autodecoding + +Autodecoding turned out to be a mistake because it is pervasive and impractical to disable. The user will need to specifically ask for decoding using a filter such as `utf.byDchar`. + +#### No Support For wchar And dchar + +Since v2 was designed, the programming world has more or less standardized on UTF-8. The internals of algorithms, ranges, and functions will only work with UTF-8. Support for `wchar` and `dchar` will come in the form of algorithms `utf.byChar`, `utf.byWchar` and `utf.byDchar`. + +#### Invalid Unicode + +v2 throws an Exception when encountering invalid Unicode. Throwing an Exception entails using the GC, meaning string code cannot be `@nogc` nor `nothrow`. Besides, common processing of strings means being tolerant of invalid Unicode rather than failing. For example, invalid Unicode is commonplace in web pages, and throwing an Exception when rendering such pages is unacceptable. + +Removal of autodecoding will in itself address most of the problem. When decoding code units into code points is needed, APIs should allow callers to specify the desired behavior, such as returning an "error" result, or replacing invalid sequences with the Unicode substitution character. Applications which need to handle untrusted data should be encouraged to use functions such as `std.utf.validate` (which return a `string` from `ubyte[]` only when it is valid UTF-8), or by-code-point decoding which reports errors for individual decoding operations. + +### Memory Management + +#### Minimize Memory Allocation + +Enormous troubles and inefficiencies stem from general purpose library code allocating memory as the library sees fit. This makes the library code far less usable. Memory allocation strategies should be decided upon by the user of the library, not the library. + +The easiest way to achieve this is to design the library to not use memory allocation at all. For example, std.path assembles paths from parts without doing allocations - it returns Voldemort ranges that the user can then use to emit the result into a buffer of the user's choosing. + +Library routines may allocate memory internally, but not in a way that affects the user. + +#### Minimize Exceptions + +Exceptions are inefficient, use the GC, and they cannot be used in `nothrow` code. Examine each use of an Exception to see if it can be designed out of existence, like the Replacement Character method above. Design the return value such that an error is not necessary - for example, a string search function can return an empty string if not found rather than throw an Exception. + +Investigate the use of Option/Sum types for error returns. + +#### Split-Level Design + +To achieve the twin goals of minimizing allocations and exceptions we will pursue a "split-level" design. The low-level function will take in a buffer instead of allocating and will return an error code instead of throwing exceptions. Then the high-level function can then call the low-level function with the appropriate buffers and can convert the error codes into exceptions. This allows us to maintain the simplicity of the high-level API while offering a low-level API those who need the additional performance. + +### Additional Goals + +#### Reduce Template Layering + +Phobos 2 frequently over-uses templates resulting in situations such as `std.conv.to`, which has over 10 layers of templates before the actual implementation is reached. This makes the code virtually impossible to comprehend and significantly increases compile times. Templates in Phobos 2 were often used as a way to add in new functionality without breaking existing code or as premature optimizations, this led to haphazard and frequently unnecessary layering of templates. When porting code from Phobos 2 into Phobos 3, care should be taken to audit the usage of template and determine where reductions can be made. + +#### Source Only + +Currently, Phobos is distributed as a separately compiled library with "header" files that contain only the necessary Template implementations. The net result is that Phobos is primarily a source-only library in practice. By formalizing the library as a source only library, it becomes inured against variations in compiler flags. Whether it's a static or dynamic library becomes irrelevant, and there won't be impedance mismatches. DRuntime will remain a separately compiled library. + +#### Single Script Builds + +The current Phobos build process is convoluted and relies on old or niche tools. This makes the process of building Phobos tedious and discourages active community participation. Phobos 3 will use a single build script written in D. For example, running unittests would be accomplished with the command: `dmd -run build_v3.d unittests`. + +### Versioning and Release Schedule + +Phobos3 versions will be versioned and distributed on the same schedule as the corresponding Compiler Edition. This allows Phobos to adopt the latest features from the in-development edition during the development of that edition. However, while Phobos will follow the same release schedule as the compiler editions, Phobos itself will not use the 'edition' terminology and will instead retain the use of the term 'version'. + +Phobos will use a slightly modified SemVer. The major version will increment with each Phobos release that is tied to a compiler edition, the minor version will increment with the monthly compiler releases, and the patch version will be incremented on any out-of-band bugfix releases that occur. + +## Specific Issues + +### std.stdio + +This module merges file I/O with formatting. Those should be split apart. File I/O should be done with ranges, and the formatting should work with any ranges. `stdin`, `stdout`, and `stderr` match the `stdin`, `stdout` and `stderr` of `core.stdc.stdio`. This causes terrible confusion and will be renamed to `stdIn`, `stdOut`, and `stdErr`. + +#### std.stdio.File + +Does way, way too much. It's incomprehensible. Should be redesigned using building blocks. + +### isXXXX templates + +Are generally very hard to figure out what they do, such as `isSomeChar`. What the heck does that mean? The string ones are even worse. diff --git a/phobos/PackageMap.md b/phobos/PackageMap.md new file mode 100644 index 00000000000..39008ec4661 --- /dev/null +++ b/phobos/PackageMap.md @@ -0,0 +1,87 @@ +## Phobos 3 Package Map + +### Open Questions + +1. `std.container`: Does it belong in `sys` or it's own root? This likely hinges on the status of [DIP1000](https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1000.md) and whether or not it needs a ground up rewrite. +2. `std.concurrency`: It is possible that not all platforms support Concurrency mechanics. Should `std.concurrency` be required in the core roots or moved to a non-core root? +3. `std.parallelism`: It is possible that not all platforms support Task Parallelism mechanics. Should `std.parallelism` be required in the core roots or moved to a non-core root? +4. `std.digest`: Cryptography routines have unique requirements that would be best served by providing them in their own root. But in all cases providing bespoke implementations of cryptography routines is never recommended. Third-party trusted implementations should be used instead. This could be from OpenSSL/LibreSSL (POSIX), SChannel/BCrypt (Windows), or CryptoKit (MacOS/IOS). It is acceptable to provide implementations of Non-Cryptographic routines such as CRC and Murmur. This would entail removing all the digests except CRC and Murmur from this package and building a separate cryptography package. +5. Which, if any, modules should be removed? This could be either a permanent removal or pending replacement with ground-up rewrites. + +### Proposed Package Structure (Existing Modules Only) + +``` +core.* +etc.* +std.* +phobos.sys + | algorithm + | comparison + | iteration + | mutation + | searching + | setops + | sorting + | array + | bigint + | bitmanip + | checkedint + | compiler + | complex + | conv + | datetime + | date + | interval + | stopwatch + | systime + | timezone + | demangle + | exception + | functional + | getopt + | int128 + | io + | console (stdio) + | file + | mmfile + | path + | math + | algebraic + | constants + | exponential + | hardware + | operations + | remainder + | rounding + | traits + | trigonometry + | special + | numeric + | meta + | outbuffer + | process + | random + | range + | signals + | stdint + | string + | sumtype + | system + | traits + | typecons + | uuid + | variant +phobos.data + | base64 + | csv + | json + | zip +phobos.text + | ascii + | encoding + | uni + | utf +phobos.net + | socket + | uri +``` \ No newline at end of file diff --git a/phobos/README.md b/phobos/README.md new file mode 100644 index 00000000000..cbedd061835 --- /dev/null +++ b/phobos/README.md @@ -0,0 +1,21 @@ +# Phobos 3 + +This repo contains all the code required to build the Phobos Standard Library. This library will supersede the Phobos 2 library contained in the `std` folder when completed. + +## Goals + +Phobos 3 is currently under active development and is not ready for use at any level. Aside from the DLang forums, the Phobos goals +* [Design Goals](Design.md) This document discusses what the established goals are for Phobos 3. +* [Phobos V3 Discussions](https://github.com/dlang/PhobosV3-Design/discussions) Visit the GitHub Discussions to discuss additional design goals as well as specific feature ideas for V3 and beyond. + +## How can I contribute? + +We welcome contributions! Many people all over the world have helped make this project better. + +* [D Lanaguage Contributors Guide](https://github.com/dlang/phobos/blob/master/CONTRIBUTING.md) explains the general guidelines for contributing to the D Programming Language. +* [Phobos 3 Contributors Guide](CONTRIBUTING.md) explains the specific guidelines for contributing to Phobos 3. + + +## License + +Phobos is licensed under the [Boost](https://github.com/dlang/phobos/blob/master/LICENSE_1_0.txt) license. \ No newline at end of file From 2852e84aa9c1521b9164150f22e103a3c6d88c49 Mon Sep 17 00:00:00 2001 From: Adam Wilson Date: Fri, 25 Oct 2024 17:49:41 -0700 Subject: [PATCH 326/327] Remove Phobos 3 dub.sdl and replace it with the build_v3.d build script. (#9069) * Remove Phobos 3 dub.sdl and replace it with the build_v3.d buid script. * Add environment bang to the build script. * Fix the Phobos v3 build script so that unit tests work on POSIX. --------- Co-authored-by: Jonathan M Davis --- .gitignore | 7 +++ build_v3.d | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++ dub.sdl | 20 -------- 3 files changed, 147 insertions(+), 20 deletions(-) create mode 100755 build_v3.d delete mode 100644 dub.sdl diff --git a/.gitignore b/.gitignore index 35ba21fcb30..23c73906d3b 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,10 @@ libphobos_* source/ tools/ucd* + +# Build specific exclusions +*.o +*.a +*.obj +*.exe +unittest \ No newline at end of file diff --git a/build_v3.d b/build_v3.d new file mode 100755 index 00000000000..83c9be57bcd --- /dev/null +++ b/build_v3.d @@ -0,0 +1,140 @@ +#!/usr/bin/env rdmd +/** +Phobos V3 Build Script + +Usage: + ./build_v3.d [debug,release,unittest] +*/ + +import std.conv; +import std.datetime; +import std.file; +import std.path; +import std.process; +import std.stdio; +import std.string; + +int main(string[] args) +{ + int result = 0; + + bool buildUnittest = false; + bool buildRelease = false; + if (args.length > 1) + { + buildUnittest = args[1] == "unittest"; + buildRelease = args[1] == "release"; + } + + string argFilePath = buildNormalizedPath(getcwd(), "phobosbuildargs.txt"); + auto dFiles = dirEntries(buildNormalizedPath(getcwd(), "phobos"), "*.d", SpanMode.breadth); + auto argFile = File(argFilePath, "w"); + + version(Windows) + { + string unittestExecutable = buildNormalizedPath(getcwd(), "unittest.exe"); + } + else + { + string unittestExecutable = buildNormalizedPath(getcwd(), "unittest"); + } + + scope(exit) + { + argFile.close(); + remove(argFilePath); + + if (exists(unittestExecutable)) remove(unittestExecutable); + } + + result = runCommand("dmd --version", getcwd()); + if (result != 0) + { + writeln("Compiler Failure."); + return result; + } + + writeln("Source files:"); + //Add source file list to args file. + foreach(dFile; dFiles) + { + if (dFile.isDir()) continue; + argFile.writeln(dFile.name); + writeln(dFile.name); + } + + //Add appropriate DMD arguments to the args file. + argFile.writeln("-od=./lib"); + if (buildUnittest) + { + argFile.writeln("-main"); + argFile.writeln("-unittest"); + argFile.writeln("-debug"); + + version(Windows) + { + argFile.writeln("-of=unittest.exe"); + } + else + { + argFile.writeln("-of=unittest"); + } + } + else if (buildRelease) + { + argFile.writeln("-release -O"); + argFile.writeln("-lib"); + argFile.writeln("-of=libphobos3"); + } + else + { + argFile.writeln("-debug"); + argFile.writeln("-lib"); + argFile.writeln("-of=libphobos3-debug"); + } + + argFile.flush(); + argFile.close(); + + //Run the build. + result = runCommand("dmd @\"" ~ argFilePath ~ "\"", getcwd()); + if (result != 0) + { + writeln("Build failed."); + return result; + } + else + { + writeln("Build successful."); + writeln(); + } + + //Run unittests if built. + if (buildUnittest) + { + writeln("Running tests..."); + result = runCommand(unittestExecutable, getcwd()); + + if (result != 0) + { + writeln("Tests failed."); + return result; + } + else + { + writeln("Tests successful."); + } + } + + return result; +} + +private int runCommand(string command, string workDir) +{ + auto pid = pipeShell(command, Redirect.all, null, Config.none, workDir); + int result = wait(pid.pid); + foreach (line; pid.stdout.byLine) writeln(line); + foreach (line; pid.stderr.byLine) writeln(line); + writeln(); + return result; +} diff --git a/dub.sdl b/dub.sdl deleted file mode 100644 index 516e5968293..00000000000 --- a/dub.sdl +++ /dev/null @@ -1,20 +0,0 @@ -name "phobos" -license "BSL-1.0" -description "D Standard Library" -authors "DLang Community" -copyright "Copyright © 1999-2024, The D Language Foundation" - -configuration "library" { - targetType "staticLibrary" - sourcePaths "phobos" - targetPath "generated-lib" - #excludedSourceFiles "unittest.d" "test/**" "std/**" "tools/**" "etc/**" -} - -configuration "unittest" { - dflags "-main" - targetType "executable" - sourcePaths "phobos" - targetPath "generated-lib" - #excludedSourceFiles "unittest.d" "test/**" "std/**" "tools/**" "etc/**" -} From 54cfc22c7322e3046c601156e32c8af7045815b6 Mon Sep 17 00:00:00 2001 From: wolframw Date: Sun, 27 Oct 2024 07:32:06 +0100 Subject: [PATCH 327/327] overhaul documentation of std.string indexOf-like functions (#8560) --- std/string.d | 228 +++++++++++++++++++++++++++++---------------------- 1 file changed, 131 insertions(+), 97 deletions(-) diff --git a/std/string.d b/std/string.d index 21e1ca356f8..bcc9d7c13af 100644 --- a/std/string.d +++ b/std/string.d @@ -457,26 +457,26 @@ pure nothrow @system unittest // https://issues.dlang.org/show_bug.cgi?id=15136 alias CaseSensitive = Flag!"caseSensitive"; /++ - Searches for character in range. + Searches for a character in a string or range. Params: - s = string or InputRange of characters to search in correct UTF format - c = character to search for - startIdx = starting index to a well-formed code point - cs = `Yes.caseSensitive` or `No.caseSensitive` + s = string or InputRange of characters to search for `c` in + c = character to search for in `s` + startIdx = index to a well-formed code point in `s` to start + searching from; defaults to 0 + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`). Returns: - the index of the first occurrence of `c` in `s` with - respect to the start index `startIdx`. If `c` - is not found, then `-1` is returned. - If `c` is found the value of the returned index is at least - `startIdx`. - If the parameters are not valid UTF, the result will still - be in the range [-1 .. s.length], but will not be reliable otherwise. + If `c` is found in `s`, then the index of its first occurrence is + returned. If `c` is not found or `startIdx` is greater than or equal to + `s.length`, then -1 is returned. If the parameters are not valid UTF, + the result will still be either -1 or in the range [`startIdx` .. + `s.length`], but will not be reliable otherwise. Throws: - If the sequence starting at `startIdx` does not represent a well - formed codepoint, then a $(REF UTFException, std,utf) may be thrown. + If the sequence starting at `startIdx` does not represent a well-formed + code point, then a $(REF UTFException, std,utf) may be thrown. See_Also: $(REF countUntil, std,algorithm,searching) +/ @@ -901,30 +901,30 @@ private template _indexOfStr(CaseSensitive cs) } /++ - Searches for substring in `s`. + Searches for a substring in a string or range. Params: - s = string or ForwardRange of characters to search in correct UTF format - sub = substring to search for - startIdx = the index into s to start searching from - cs = `Yes.caseSensitive` (default) or `No.caseSensitive` + s = string or ForwardRange of characters to search for `sub` in + sub = substring to search for in `s` + startIdx = index to a well-formed code point in `s` to start + searching from; defaults to 0 + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`) Returns: - the index of the first occurrence of `sub` in `s` with - respect to the start index `startIdx`. If `sub` is not found, - then `-1` is returned. - If the arguments are not valid UTF, the result will still - be in the range [-1 .. s.length], but will not be reliable otherwise. - If `sub` is found the value of the returned index is at least - `startIdx`. + The index of the first occurrence of `sub` in `s`. If `sub` is not found + or `startIdx` is greater than or equal to `s.length`, then -1 is + returned. If the arguments are not valid UTF, the result will still be + either -1 or in the range [`startIdx` .. `s.length`], but will not be + reliable otherwise. Throws: - If the sequence starting at `startIdx` does not represent a well - formed codepoint, then a $(REF UTFException, std,utf) may be thrown. + If the sequence starting at `startIdx` does not represent a well-formed + code point, then a $(REF UTFException, std,utf) may be thrown. Bugs: - Does not work with case insensitive strings where the mapping of - tolower and toupper is not 1:1. + Does not work with case-insensitive strings where the mapping of + $(REF toLower, std,uni) and $(REF toUpper, std,uni) is not 1:1. +/ ptrdiff_t indexOf(Range, Char)(Range s, const(Char)[] sub) if (isForwardRange!Range && isSomeChar!(ElementEncodingType!Range) && @@ -1156,23 +1156,26 @@ unittest } /++ + Searches for the last occurrence of a character in a string. + Params: - s = string to search - c = character to search for - startIdx = the index into s to start searching from - cs = `Yes.caseSensitive` or `No.caseSensitive` + s = string to search for `c` in + c = character to search for in `s` + startIdx = index of a well-formed code point in `s` to start searching + from; defaults to 0 + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`) Returns: - The index of the last occurrence of `c` in `s`. If `c` is not - found, then `-1` is returned. The `startIdx` slices `s` in - the following way $(D s[0 .. startIdx]). `startIdx` represents a - codeunit index in `s`. + If `c` is found in `s`, then the index of its last occurrence is + returned. If `c` is not found or `startIdx` is greater than or equal to + `s.length`, then -1 is returned. If the parameters are not valid UTF, + the result will still be either -1 or in the range [`startIdx` .. + `s.length`], but will not be reliable otherwise. Throws: - If the sequence ending at `startIdx` does not represent a well - formed codepoint, then a $(REF UTFException, std,utf) may be thrown. - - `cs` indicates whether the comparisons are case sensitive. + If the sequence ending at `startIdx` does not represent a well-formed + code point, then a $(REF UTFException, std,utf) may be thrown. +/ ptrdiff_t lastIndexOf(Char)(const(Char)[] s, in dchar c, in CaseSensitive cs = Yes.caseSensitive) @safe pure @@ -1345,23 +1348,30 @@ if (isSomeChar!Char) } /++ + Searches for the last occurrence of a substring in a string. + Params: - s = string to search - sub = substring to search for - startIdx = the index into s to start searching from - cs = `Yes.caseSensitive` or `No.caseSensitive` + s = string to search for `sub` in + sub = substring to search for in `s` + startIdx = index to a well-formed code point in `s` to start + searching from; defaults to 0 + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`) Returns: - the index of the last occurrence of `sub` in `s`. If `sub` is - not found, then `-1` is returned. The `startIdx` slices `s` - in the following way $(D s[0 .. startIdx]). `startIdx` represents a - codeunit index in `s`. + The index of the last occurrence of `sub` in `s`. If `sub` is not found + or `startIdx` is greater than or equal to `s.length`, then -1 is + returned. If the parameters are not valid UTF, the result will still be + either -1 or in the range [`startIdx` .. `s.length`], but will not be + reliable otherwise. Throws: - If the sequence ending at `startIdx` does not represent a well - formed codepoint, then a $(REF UTFException, std,utf) may be thrown. + If the sequence starting at `startIdx` does not represent a well-formed + code point, then a $(REF UTFException, std,utf) may be thrown. - `cs` indicates whether the comparisons are case sensitive. + Bugs: + Does not work with case-insensitive strings where the mapping of + $(REF toLower, std,uni) and $(REF toUpper, std,uni) is not 1:1. +/ ptrdiff_t lastIndexOf(Char1, Char2)(const(Char1)[] s, const(Char2)[] sub, in CaseSensitive cs = Yes.caseSensitive) @safe pure @@ -1747,21 +1757,28 @@ if (isSomeChar!Char && isSomeChar!Char2) } /** - Returns the index of the first occurrence of any of the elements in $(D - needles) in `haystack`. If no element of `needles` is found, - then `-1` is returned. The `startIdx` slices `haystack` in the - following way $(D haystack[startIdx .. $]). `startIdx` represents a - codeunit index in `haystack`. If the sequence ending at `startIdx` - does not represent a well formed codepoint, then a $(REF UTFException, std,utf) - may be thrown. + Searches the string `haystack` for one of the characters in `needles` + starting at index `startIdx`. If `startIdx` is not given, it defaults to 0. Params: - haystack = String to search for needles in. - needles = Strings to search for in haystack. - startIdx = slices haystack like this $(D haystack[startIdx .. $]). If - the startIdx is greater than or equal to the length of haystack the - functions returns `-1`. - cs = Indicates whether the comparisons are case sensitive. + haystack = string to search for needles in + needles = characters to search for in `haystack` + startIdx = index of a well-formed code point in `haystack` to start + searching from; defaults to 0 + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`) + + Returns: + The index of the first occurrence of any of the elements of `needles` in + `haystack`. If no element of `needles` is found or `startIdx` is greater + than or equal to `haystack.length`, then -1 is returned. If the + parameters are not valid UTF, the result will still be either -1 or in + the range [`startIdx` .. `haystack.length`], but will not be reliable + otherwise. + + Throws: + If the sequence starting at `startIdx` does not represent a well-formed + code point, then a $(REF UTFException, std,utf) may be thrown. */ ptrdiff_t indexOfAny(Char,Char2)(const(Char)[] haystack, const(Char2)[] needles, in CaseSensitive cs = Yes.caseSensitive) @safe pure @@ -1914,21 +1931,23 @@ if (isSomeChar!Char && isSomeChar!Char2) } /** - Returns the index of the last occurrence of any of the elements in $(D - needles) in `haystack`. If no element of `needles` is found, - then `-1` is returned. The `stopIdx` slices `haystack` in the - following way $(D s[0 .. stopIdx]). `stopIdx` represents a codeunit - index in `haystack`. If the sequence ending at `startIdx` does not - represent a well formed codepoint, then a $(REF UTFException, std,utf) may be - thrown. + Searches `haystack` for the last occurrence of any of the + characters in `needles`. Params: - haystack = String to search for needles in. - needles = Strings to search for in haystack. - stopIdx = slices haystack like this $(D haystack[0 .. stopIdx]). If - the stopIdx is greater than or equal to the length of haystack the - functions returns `-1`. - cs = Indicates whether the comparisons are case sensitive. + haystack = string to search needles in + needles = characters to search for in `haystack` + stopIdx = index in `haystack` to stop searching at (exclusive); defaults + to `haystack.length` + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`) + + Returns: + The index of the last occurrence of any of the characters of `needles` + in `haystack`. If no character of `needles` is found or `stopIdx` is 0, + then -1 is returned. If the parameters are not valid UTF, the result + will still be in the range [-1 .. `stopIdx`], but will not be reliable + otherwise. */ ptrdiff_t lastIndexOfAny(Char,Char2)(const(Char)[] haystack, const(Char2)[] needles, in CaseSensitive cs = Yes.caseSensitive) @@ -2097,17 +2116,27 @@ if (isSomeChar!Char && isSomeChar!Char2) } /** - Returns the index of the first occurrence of any character not an elements - in `needles` in `haystack`. If all element of `haystack` are - element of `needles` `-1` is returned. + Searches `haystack` for a character not in `needles`. Params: - haystack = String to search for needles in. - needles = Strings to search for in haystack. - startIdx = slices haystack like this $(D haystack[startIdx .. $]). If - the startIdx is greater than or equal to the length of haystack the - functions returns `-1`. - cs = Indicates whether the comparisons are case sensitive. + haystack = string to search for needles in + needles = characters to search for in `haystack` + startIdx = index of a well-formed code point in `haystack` to start + searching from; defaults to 0 + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`) + + Returns: + The index of the first character in `haystack` that is not an element of + `needles`. If all characters of `haystack` are elements of `needles` or + `startIdx` is greater than or equal to `haystack.length`, then -1 is + returned. If the parameters are not valid UTF, the result will still be + either -1 or in the range [`startIdx` .. `haystack.length`], but will + not be reliable otherwise. + + Throws: + If the sequence starting at `startIdx` does not represent a well-formed + code point, then a $(REF UTFException, std,utf) may be thrown. */ ptrdiff_t indexOfNeither(Char,Char2)(const(Char)[] haystack, const(Char2)[] needles, in CaseSensitive cs = Yes.caseSensitive) @@ -2257,17 +2286,22 @@ if (isSomeChar!Char && isSomeChar!Char2) } /** - Returns the last index of the first occurence of any character that is not - an elements in `needles` in `haystack`. If all element of - `haystack` are element of `needles` `-1` is returned. + Searches for the last character in `haystack` that is not in `needles`. Params: - haystack = String to search for needles in. - needles = Strings to search for in haystack. - stopIdx = slices haystack like this $(D haystack[0 .. stopIdx]) If - the stopIdx is greater than or equal to the length of haystack the - functions returns `-1`. - cs = Indicates whether the comparisons are case sensitive. + haystack = string to search for needles in + needles = characters to search for in `haystack` + stopIdx = index in `haystack` to stop searching at (exclusive); + defaults to `haystack.length` + cs = specifies whether comparisons are case-sensitive + (`Yes.caseSensitive`) or not (`No.caseSensitive`) + + Returns: + The index of the last character in `haystack` that is not an element of + `needles`. If all characters of `haystack` are in `needles` or `stopIdx` + is 0, then -1 is returned. If the parameters are not valid UTF, the + result will still be in the range [-1 .. `stopIdx`], but will not be + reliable otherwise. */ ptrdiff_t lastIndexOfNeither(Char,Char2)(const(Char)[] haystack, const(Char2)[] needles, in CaseSensitive cs = Yes.caseSensitive)