]> git.lizzy.rs Git - rust.git/commitdiff
Update Unicode data to version 6.3
authorFlorian Zeitz <florob@babelmonkeys.de>
Sat, 23 Nov 2013 17:57:13 +0000 (18:57 +0100)
committerFlorian Zeitz <florob@babelmonkeys.de>
Wed, 27 Nov 2013 22:25:19 +0000 (23:25 +0100)
src/libstd/unicode.rs
src/test/pretty/block-comment-wchar.pp
src/test/pretty/block-comment-wchar.rs

index ac4bc5754fb18ff271631a43cd2c4a88267caf2b..397bf8ae549dcbe536323b0bfbff4ef99aba61b7 100644 (file)
@@ -19,11 +19,11 @@ fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool {
         use cmp::{Equal, Less, Greater};
         use vec::ImmutableVector;
         use option::None;
-        (r.bsearch(|&(lo,hi)| {
+        r.bsearch(|&(lo,hi)| {
             if lo <= c && c <= hi { Equal }
             else if hi < c { Less }
             else { Greater }
-        })) != None
+        }) != None
     }
 
 
@@ -37,7 +37,8 @@ pub fn Cc(c: char) -> bool {
 
     static Cf_table : &'static [(char,char)] = &[
         ('\xad', '\xad'), ('\u0600', '\u0604'),
-        ('\u06dd', '\u06dd'), ('\u070f', '\u070f'),
+        ('\u061c', '\u061c'), ('\u06dd', '\u06dd'),
+        ('\u070f', '\u070f'), ('\u180e', '\u180e'),
         ('\u200b', '\u200f'), ('\u202a', '\u202e'),
         ('\u2060', '\u206f'), ('\ufeff', '\ufeff'),
         ('\ufff9', '\ufffb'), ('\U000110bd', '\U000110bd'),
@@ -841,7 +842,7 @@ pub fn Lu(c: char) -> bool {
         ('\u17be', '\u17c5'), ('\u17c7', '\u17c8'),
         ('\u1923', '\u1926'), ('\u1929', '\u1931'),
         ('\u1933', '\u1938'), ('\u19b0', '\u19c0'),
-        ('\u19c8', '\u19c9'), ('\u1a19', '\u1a1b'),
+        ('\u19c8', '\u19c9'), ('\u1a19', '\u1a1a'),
         ('\u1a55', '\u1a55'), ('\u1a57', '\u1a57'),
         ('\u1a61', '\u1a61'), ('\u1a63', '\u1a64'),
         ('\u1a6d', '\u1a72'), ('\u1b04', '\u1b04'),
@@ -942,53 +943,54 @@ pub fn Me(c: char) -> bool {
         ('\u180b', '\u180d'), ('\u18a9', '\u18a9'),
         ('\u1920', '\u1922'), ('\u1927', '\u1928'),
         ('\u1932', '\u1932'), ('\u1939', '\u193b'),
-        ('\u1a17', '\u1a18'), ('\u1a56', '\u1a56'),
-        ('\u1a58', '\u1a60'), ('\u1a62', '\u1a62'),
-        ('\u1a65', '\u1a6c'), ('\u1a73', '\u1a7f'),
-        ('\u1b00', '\u1b03'), ('\u1b34', '\u1b34'),
-        ('\u1b36', '\u1b3a'), ('\u1b3c', '\u1b3c'),
-        ('\u1b42', '\u1b42'), ('\u1b6b', '\u1b73'),
-        ('\u1b80', '\u1b81'), ('\u1ba2', '\u1ba5'),
-        ('\u1ba8', '\u1ba9'), ('\u1bab', '\u1bab'),
-        ('\u1be6', '\u1be6'), ('\u1be8', '\u1be9'),
-        ('\u1bed', '\u1bed'), ('\u1bef', '\u1bf1'),
-        ('\u1c2c', '\u1c33'), ('\u1c36', '\u1c37'),
-        ('\u1cd0', '\u1cd2'), ('\u1cd4', '\u1ce0'),
-        ('\u1ce2', '\u1ce8'), ('\u1ced', '\u1ced'),
-        ('\u1cf4', '\u1cf4'), ('\u1dc0', '\u1dff'),
-        ('\u20d0', '\u20dc'), ('\u20e1', '\u20e1'),
-        ('\u20e5', '\u20f0'), ('\u2cef', '\u2cf1'),
-        ('\u2d7f', '\u2d7f'), ('\u2de0', '\u2dff'),
-        ('\u302a', '\u302d'), ('\u3099', '\u309a'),
-        ('\ua66f', '\ua66f'), ('\ua674', '\ua67d'),
-        ('\ua69f', '\ua69f'), ('\ua6f0', '\ua6f1'),
-        ('\ua802', '\ua802'), ('\ua806', '\ua806'),
-        ('\ua80b', '\ua80b'), ('\ua825', '\ua826'),
-        ('\ua8c4', '\ua8c4'), ('\ua8e0', '\ua8f1'),
-        ('\ua926', '\ua92d'), ('\ua947', '\ua951'),
-        ('\ua980', '\ua982'), ('\ua9b3', '\ua9b3'),
-        ('\ua9b6', '\ua9b9'), ('\ua9bc', '\ua9bc'),
-        ('\uaa29', '\uaa2e'), ('\uaa31', '\uaa32'),
-        ('\uaa35', '\uaa36'), ('\uaa43', '\uaa43'),
-        ('\uaa4c', '\uaa4c'), ('\uaab0', '\uaab0'),
-        ('\uaab2', '\uaab4'), ('\uaab7', '\uaab8'),
-        ('\uaabe', '\uaabf'), ('\uaac1', '\uaac1'),
-        ('\uaaec', '\uaaed'), ('\uaaf6', '\uaaf6'),
-        ('\uabe5', '\uabe5'), ('\uabe8', '\uabe8'),
-        ('\uabed', '\uabed'), ('\ufb1e', '\ufb1e'),
-        ('\ufe00', '\ufe0f'), ('\ufe20', '\ufe26'),
-        ('\U000101fd', '\U000101fd'), ('\U00010a01', '\U00010a0f'),
-        ('\U00010a38', '\U00010a3f'), ('\U00011001', '\U00011001'),
-        ('\U00011038', '\U00011046'), ('\U00011080', '\U00011081'),
-        ('\U000110b3', '\U000110b6'), ('\U000110b9', '\U000110ba'),
-        ('\U00011100', '\U00011102'), ('\U00011127', '\U0001112b'),
-        ('\U0001112d', '\U00011134'), ('\U00011180', '\U00011181'),
-        ('\U000111b6', '\U000111be'), ('\U000116ab', '\U000116ab'),
-        ('\U000116ad', '\U000116ad'), ('\U000116b0', '\U000116b5'),
-        ('\U000116b7', '\U000116b7'), ('\U00016f8f', '\U00016f92'),
-        ('\U0001d167', '\U0001d169'), ('\U0001d17b', '\U0001d182'),
-        ('\U0001d185', '\U0001d18b'), ('\U0001d1aa', '\U0001d1ad'),
-        ('\U0001d242', '\U0001d244'), ('\U000e0100', '\U000e01ef')
+        ('\u1a17', '\u1a18'), ('\u1a1b', '\u1a1b'),
+        ('\u1a56', '\u1a56'), ('\u1a58', '\u1a60'),
+        ('\u1a62', '\u1a62'), ('\u1a65', '\u1a6c'),
+        ('\u1a73', '\u1a7f'), ('\u1b00', '\u1b03'),
+        ('\u1b34', '\u1b34'), ('\u1b36', '\u1b3a'),
+        ('\u1b3c', '\u1b3c'), ('\u1b42', '\u1b42'),
+        ('\u1b6b', '\u1b73'), ('\u1b80', '\u1b81'),
+        ('\u1ba2', '\u1ba5'), ('\u1ba8', '\u1ba9'),
+        ('\u1bab', '\u1bab'), ('\u1be6', '\u1be6'),
+        ('\u1be8', '\u1be9'), ('\u1bed', '\u1bed'),
+        ('\u1bef', '\u1bf1'), ('\u1c2c', '\u1c33'),
+        ('\u1c36', '\u1c37'), ('\u1cd0', '\u1cd2'),
+        ('\u1cd4', '\u1ce0'), ('\u1ce2', '\u1ce8'),
+        ('\u1ced', '\u1ced'), ('\u1cf4', '\u1cf4'),
+        ('\u1dc0', '\u1dff'), ('\u20d0', '\u20dc'),
+        ('\u20e1', '\u20e1'), ('\u20e5', '\u20f0'),
+        ('\u2cef', '\u2cf1'), ('\u2d7f', '\u2d7f'),
+        ('\u2de0', '\u2dff'), ('\u302a', '\u302d'),
+        ('\u3099', '\u309a'), ('\ua66f', '\ua66f'),
+        ('\ua674', '\ua67d'), ('\ua69f', '\ua69f'),
+        ('\ua6f0', '\ua6f1'), ('\ua802', '\ua802'),
+        ('\ua806', '\ua806'), ('\ua80b', '\ua80b'),
+        ('\ua825', '\ua826'), ('\ua8c4', '\ua8c4'),
+        ('\ua8e0', '\ua8f1'), ('\ua926', '\ua92d'),
+        ('\ua947', '\ua951'), ('\ua980', '\ua982'),
+        ('\ua9b3', '\ua9b3'), ('\ua9b6', '\ua9b9'),
+        ('\ua9bc', '\ua9bc'), ('\uaa29', '\uaa2e'),
+        ('\uaa31', '\uaa32'), ('\uaa35', '\uaa36'),
+        ('\uaa43', '\uaa43'), ('\uaa4c', '\uaa4c'),
+        ('\uaab0', '\uaab0'), ('\uaab2', '\uaab4'),
+        ('\uaab7', '\uaab8'), ('\uaabe', '\uaabf'),
+        ('\uaac1', '\uaac1'), ('\uaaec', '\uaaed'),
+        ('\uaaf6', '\uaaf6'), ('\uabe5', '\uabe5'),
+        ('\uabe8', '\uabe8'), ('\uabed', '\uabed'),
+        ('\ufb1e', '\ufb1e'), ('\ufe00', '\ufe0f'),
+        ('\ufe20', '\ufe26'), ('\U000101fd', '\U000101fd'),
+        ('\U00010a01', '\U00010a0f'), ('\U00010a38', '\U00010a3f'),
+        ('\U00011001', '\U00011001'), ('\U00011038', '\U00011046'),
+        ('\U00011080', '\U00011081'), ('\U000110b3', '\U000110b6'),
+        ('\U000110b9', '\U000110ba'), ('\U00011100', '\U00011102'),
+        ('\U00011127', '\U0001112b'), ('\U0001112d', '\U00011134'),
+        ('\U00011180', '\U00011181'), ('\U000111b6', '\U000111be'),
+        ('\U000116ab', '\U000116ab'), ('\U000116ad', '\U000116ad'),
+        ('\U000116b0', '\U000116b5'), ('\U000116b7', '\U000116b7'),
+        ('\U00016f8f', '\U00016f92'), ('\U0001d167', '\U0001d169'),
+        ('\U0001d17b', '\U0001d182'), ('\U0001d185', '\U0001d18b'),
+        ('\U0001d1aa', '\U0001d1ad'), ('\U0001d242', '\U0001d244'),
+        ('\U000e0100', '\U000e01ef')
     ];
 
     pub fn Mn(c: char) -> bool {
@@ -1094,7 +1096,8 @@ pub fn Pd(c: char) -> bool {
         ('\x7d', '\x7d'), ('\u0f3b', '\u0f3b'),
         ('\u0f3d', '\u0f3d'), ('\u169c', '\u169c'),
         ('\u2046', '\u2046'), ('\u207e', '\u207e'),
-        ('\u208e', '\u208e'), ('\u232a', '\u232a'),
+        ('\u208e', '\u208e'), ('\u2309', '\u2309'),
+        ('\u230b', '\u230b'), ('\u232a', '\u232a'),
         ('\u2769', '\u2769'), ('\u276b', '\u276b'),
         ('\u276d', '\u276d'), ('\u276f', '\u276f'),
         ('\u2771', '\u2771'), ('\u2773', '\u2773'),
@@ -1168,61 +1171,62 @@ pub fn Pi(c: char) -> bool {
         ('\u05c0', '\u05c0'), ('\u05c3', '\u05c3'),
         ('\u05c6', '\u05c6'), ('\u05f3', '\u05f4'),
         ('\u0609', '\u060a'), ('\u060c', '\u060d'),
-        ('\u061b', '\u061f'), ('\u066a', '\u066d'),
-        ('\u06d4', '\u06d4'), ('\u0700', '\u070d'),
-        ('\u07f7', '\u07f9'), ('\u0830', '\u083e'),
-        ('\u085e', '\u085e'), ('\u0964', '\u0965'),
-        ('\u0970', '\u0970'), ('\u0af0', '\u0af0'),
-        ('\u0df4', '\u0df4'), ('\u0e4f', '\u0e4f'),
-        ('\u0e5a', '\u0e5b'), ('\u0f04', '\u0f12'),
-        ('\u0f14', '\u0f14'), ('\u0f85', '\u0f85'),
-        ('\u0fd0', '\u0fd4'), ('\u0fd9', '\u0fda'),
-        ('\u104a', '\u104f'), ('\u10fb', '\u10fb'),
-        ('\u1360', '\u1368'), ('\u166d', '\u166e'),
-        ('\u16eb', '\u16ed'), ('\u1735', '\u1736'),
-        ('\u17d4', '\u17d6'), ('\u17d8', '\u17da'),
-        ('\u1800', '\u1805'), ('\u1807', '\u180a'),
-        ('\u1944', '\u1945'), ('\u1a1e', '\u1a1f'),
-        ('\u1aa0', '\u1aa6'), ('\u1aa8', '\u1aad'),
-        ('\u1b5a', '\u1b60'), ('\u1bfc', '\u1bff'),
-        ('\u1c3b', '\u1c3f'), ('\u1c7e', '\u1cc7'),
-        ('\u1cd3', '\u1cd3'), ('\u2016', '\u2017'),
-        ('\u2020', '\u2027'), ('\u2030', '\u2038'),
-        ('\u203b', '\u203e'), ('\u2041', '\u2043'),
-        ('\u2047', '\u2051'), ('\u2053', '\u2053'),
-        ('\u2055', '\u205e'), ('\u2cf9', '\u2cfc'),
-        ('\u2cfe', '\u2cff'), ('\u2d70', '\u2d70'),
-        ('\u2e00', '\u2e01'), ('\u2e06', '\u2e08'),
-        ('\u2e0b', '\u2e0b'), ('\u2e0e', '\u2e16'),
-        ('\u2e18', '\u2e19'), ('\u2e1b', '\u2e1b'),
-        ('\u2e1e', '\u2e1f'), ('\u2e2a', '\u2e2e'),
-        ('\u2e30', '\u2e39'), ('\u3001', '\u3003'),
-        ('\u303d', '\u303d'), ('\u30fb', '\u30fb'),
-        ('\ua4fe', '\ua4ff'), ('\ua60d', '\ua60f'),
-        ('\ua673', '\ua673'), ('\ua67e', '\ua67e'),
-        ('\ua6f2', '\ua6f7'), ('\ua874', '\ua877'),
-        ('\ua8ce', '\ua8cf'), ('\ua8f8', '\ua8fa'),
-        ('\ua92e', '\ua92f'), ('\ua95f', '\ua95f'),
-        ('\ua9c1', '\ua9cd'), ('\ua9de', '\ua9df'),
-        ('\uaa5c', '\uaa5f'), ('\uaade', '\uaadf'),
-        ('\uaaf0', '\uaaf1'), ('\uabeb', '\uabeb'),
-        ('\ufe10', '\ufe16'), ('\ufe19', '\ufe19'),
-        ('\ufe30', '\ufe30'), ('\ufe45', '\ufe46'),
-        ('\ufe49', '\ufe4c'), ('\ufe50', '\ufe57'),
-        ('\ufe5f', '\ufe61'), ('\ufe68', '\ufe68'),
-        ('\ufe6a', '\ufe6b'), ('\uff01', '\uff03'),
-        ('\uff05', '\uff07'), ('\uff0a', '\uff0a'),
-        ('\uff0c', '\uff0c'), ('\uff0e', '\uff0f'),
-        ('\uff1a', '\uff1b'), ('\uff1f', '\uff20'),
-        ('\uff3c', '\uff3c'), ('\uff61', '\uff61'),
-        ('\uff64', '\uff65'), ('\U00010100', '\U00010102'),
-        ('\U0001039f', '\U0001039f'), ('\U000103d0', '\U000103d0'),
-        ('\U00010857', '\U00010857'), ('\U0001091f', '\U0001091f'),
-        ('\U0001093f', '\U0001093f'), ('\U00010a50', '\U00010a58'),
-        ('\U00010a7f', '\U00010a7f'), ('\U00010b39', '\U00010b3f'),
-        ('\U00011047', '\U0001104d'), ('\U000110bb', '\U000110bc'),
-        ('\U000110be', '\U000110c1'), ('\U00011140', '\U00011143'),
-        ('\U000111c5', '\U000111c8'), ('\U00012470', '\U00012473')
+        ('\u061b', '\u061b'), ('\u061e', '\u061f'),
+        ('\u066a', '\u066d'), ('\u06d4', '\u06d4'),
+        ('\u0700', '\u070d'), ('\u07f7', '\u07f9'),
+        ('\u0830', '\u083e'), ('\u085e', '\u085e'),
+        ('\u0964', '\u0965'), ('\u0970', '\u0970'),
+        ('\u0af0', '\u0af0'), ('\u0df4', '\u0df4'),
+        ('\u0e4f', '\u0e4f'), ('\u0e5a', '\u0e5b'),
+        ('\u0f04', '\u0f12'), ('\u0f14', '\u0f14'),
+        ('\u0f85', '\u0f85'), ('\u0fd0', '\u0fd4'),
+        ('\u0fd9', '\u0fda'), ('\u104a', '\u104f'),
+        ('\u10fb', '\u10fb'), ('\u1360', '\u1368'),
+        ('\u166d', '\u166e'), ('\u16eb', '\u16ed'),
+        ('\u1735', '\u1736'), ('\u17d4', '\u17d6'),
+        ('\u17d8', '\u17da'), ('\u1800', '\u1805'),
+        ('\u1807', '\u180a'), ('\u1944', '\u1945'),
+        ('\u1a1e', '\u1a1f'), ('\u1aa0', '\u1aa6'),
+        ('\u1aa8', '\u1aad'), ('\u1b5a', '\u1b60'),
+        ('\u1bfc', '\u1bff'), ('\u1c3b', '\u1c3f'),
+        ('\u1c7e', '\u1cc7'), ('\u1cd3', '\u1cd3'),
+        ('\u2016', '\u2017'), ('\u2020', '\u2027'),
+        ('\u2030', '\u2038'), ('\u203b', '\u203e'),
+        ('\u2041', '\u2043'), ('\u2047', '\u2051'),
+        ('\u2053', '\u2053'), ('\u2055', '\u205e'),
+        ('\u2cf9', '\u2cfc'), ('\u2cfe', '\u2cff'),
+        ('\u2d70', '\u2d70'), ('\u2e00', '\u2e01'),
+        ('\u2e06', '\u2e08'), ('\u2e0b', '\u2e0b'),
+        ('\u2e0e', '\u2e16'), ('\u2e18', '\u2e19'),
+        ('\u2e1b', '\u2e1b'), ('\u2e1e', '\u2e1f'),
+        ('\u2e2a', '\u2e2e'), ('\u2e30', '\u2e39'),
+        ('\u3001', '\u3003'), ('\u303d', '\u303d'),
+        ('\u30fb', '\u30fb'), ('\ua4fe', '\ua4ff'),
+        ('\ua60d', '\ua60f'), ('\ua673', '\ua673'),
+        ('\ua67e', '\ua67e'), ('\ua6f2', '\ua6f7'),
+        ('\ua874', '\ua877'), ('\ua8ce', '\ua8cf'),
+        ('\ua8f8', '\ua8fa'), ('\ua92e', '\ua92f'),
+        ('\ua95f', '\ua95f'), ('\ua9c1', '\ua9cd'),
+        ('\ua9de', '\ua9df'), ('\uaa5c', '\uaa5f'),
+        ('\uaade', '\uaadf'), ('\uaaf0', '\uaaf1'),
+        ('\uabeb', '\uabeb'), ('\ufe10', '\ufe16'),
+        ('\ufe19', '\ufe19'), ('\ufe30', '\ufe30'),
+        ('\ufe45', '\ufe46'), ('\ufe49', '\ufe4c'),
+        ('\ufe50', '\ufe57'), ('\ufe5f', '\ufe61'),
+        ('\ufe68', '\ufe68'), ('\ufe6a', '\ufe6b'),
+        ('\uff01', '\uff03'), ('\uff05', '\uff07'),
+        ('\uff0a', '\uff0a'), ('\uff0c', '\uff0c'),
+        ('\uff0e', '\uff0f'), ('\uff1a', '\uff1b'),
+        ('\uff1f', '\uff20'), ('\uff3c', '\uff3c'),
+        ('\uff61', '\uff61'), ('\uff64', '\uff65'),
+        ('\U00010100', '\U00010102'), ('\U0001039f', '\U0001039f'),
+        ('\U000103d0', '\U000103d0'), ('\U00010857', '\U00010857'),
+        ('\U0001091f', '\U0001091f'), ('\U0001093f', '\U0001093f'),
+        ('\U00010a50', '\U00010a58'), ('\U00010a7f', '\U00010a7f'),
+        ('\U00010b39', '\U00010b3f'), ('\U00011047', '\U0001104d'),
+        ('\U000110bb', '\U000110bc'), ('\U000110be', '\U000110c1'),
+        ('\U00011140', '\U00011143'), ('\U000111c5', '\U000111c8'),
+        ('\U00012470', '\U00012473')
     ];
 
     pub fn Po(c: char) -> bool {
@@ -1235,7 +1239,8 @@ pub fn Po(c: char) -> bool {
         ('\u0f3c', '\u0f3c'), ('\u169b', '\u169b'),
         ('\u201a', '\u201a'), ('\u201e', '\u201e'),
         ('\u2045', '\u2045'), ('\u207d', '\u207d'),
-        ('\u208d', '\u208d'), ('\u2329', '\u2329'),
+        ('\u208d', '\u208d'), ('\u2308', '\u2308'),
+        ('\u230a', '\u230a'), ('\u2329', '\u2329'),
         ('\u2768', '\u2768'), ('\u276a', '\u276a'),
         ('\u276c', '\u276c'), ('\u276e', '\u276e'),
         ('\u2770', '\u2770'), ('\u2772', '\u2772'),
@@ -1323,26 +1328,25 @@ pub fn Sk(c: char) -> bool {
         ('\u21a3', '\u21a3'), ('\u21a6', '\u21a6'),
         ('\u21ae', '\u21ae'), ('\u21ce', '\u21cf'),
         ('\u21d2', '\u21d2'), ('\u21d4', '\u21d4'),
-        ('\u21f4', '\u22ff'), ('\u2308', '\u230b'),
-        ('\u2320', '\u2321'), ('\u237c', '\u237c'),
-        ('\u239b', '\u23b3'), ('\u23dc', '\u23e1'),
-        ('\u25b7', '\u25b7'), ('\u25c1', '\u25c1'),
-        ('\u25f8', '\u25ff'), ('\u266f', '\u266f'),
-        ('\u27c0', '\u27c4'), ('\u27c7', '\u27e5'),
-        ('\u27f0', '\u27ff'), ('\u2900', '\u2982'),
-        ('\u2999', '\u29d7'), ('\u29dc', '\u29fb'),
-        ('\u29fe', '\u2aff'), ('\u2b30', '\u2b44'),
-        ('\u2b47', '\u2b4c'), ('\ufb29', '\ufb29'),
-        ('\ufe62', '\ufe62'), ('\ufe64', '\ufe66'),
-        ('\uff0b', '\uff0b'), ('\uff1c', '\uff1e'),
-        ('\uff5c', '\uff5c'), ('\uff5e', '\uff5e'),
-        ('\uffe2', '\uffe2'), ('\uffe9', '\uffec'),
-        ('\U0001d6c1', '\U0001d6c1'), ('\U0001d6db', '\U0001d6db'),
-        ('\U0001d6fb', '\U0001d6fb'), ('\U0001d715', '\U0001d715'),
-        ('\U0001d735', '\U0001d735'), ('\U0001d74f', '\U0001d74f'),
-        ('\U0001d76f', '\U0001d76f'), ('\U0001d789', '\U0001d789'),
-        ('\U0001d7a9', '\U0001d7a9'), ('\U0001d7c3', '\U0001d7c3'),
-        ('\U0001eef0', '\U0001eef1')
+        ('\u21f4', '\u22ff'), ('\u2320', '\u2321'),
+        ('\u237c', '\u237c'), ('\u239b', '\u23b3'),
+        ('\u23dc', '\u23e1'), ('\u25b7', '\u25b7'),
+        ('\u25c1', '\u25c1'), ('\u25f8', '\u25ff'),
+        ('\u266f', '\u266f'), ('\u27c0', '\u27c4'),
+        ('\u27c7', '\u27e5'), ('\u27f0', '\u27ff'),
+        ('\u2900', '\u2982'), ('\u2999', '\u29d7'),
+        ('\u29dc', '\u29fb'), ('\u29fe', '\u2aff'),
+        ('\u2b30', '\u2b44'), ('\u2b47', '\u2b4c'),
+        ('\ufb29', '\ufb29'), ('\ufe62', '\ufe62'),
+        ('\ufe64', '\ufe66'), ('\uff0b', '\uff0b'),
+        ('\uff1c', '\uff1e'), ('\uff5c', '\uff5c'),
+        ('\uff5e', '\uff5e'), ('\uffe2', '\uffe2'),
+        ('\uffe9', '\uffec'), ('\U0001d6c1', '\U0001d6c1'),
+        ('\U0001d6db', '\U0001d6db'), ('\U0001d6fb', '\U0001d6fb'),
+        ('\U0001d715', '\U0001d715'), ('\U0001d735', '\U0001d735'),
+        ('\U0001d74f', '\U0001d74f'), ('\U0001d76f', '\U0001d76f'),
+        ('\U0001d789', '\U0001d789'), ('\U0001d7a9', '\U0001d7a9'),
+        ('\U0001d7c3', '\U0001d7c3'), ('\U0001eef0', '\U0001eef1')
     ];
 
     pub fn Sm(c: char) -> bool {
@@ -1430,9 +1434,9 @@ pub fn Zp(c: char) -> bool {
 
     static Zs_table : &'static [(char,char)] = &[
         ('\x20', '\x20'), ('\xa0', '\xa0'),
-        ('\u1680', '\u1680'), ('\u180e', '\u180e'),
-        ('\u2000', '\u200a'), ('\u202f', '\u202f'),
-        ('\u205f', '\u205f'), ('\u3000', '\u3000')
+        ('\u1680', '\u1680'), ('\u2000', '\u200a'),
+        ('\u202f', '\u202f'), ('\u205f', '\u205f'),
+        ('\u3000', '\u3000')
     ];
 
     pub fn Zs(c: char) -> bool {
@@ -3663,11 +3667,11 @@ fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool {
         use cmp::{Equal, Less, Greater};
         use vec::ImmutableVector;
         use option::None;
-        (r.bsearch(|&(lo,hi)| {
+        r.bsearch(|&(lo,hi)| {
             if lo <= c && c <= hi { Equal }
             else if hi < c { Less }
             else { Greater }
-        })) != None
+        }) != None
     }
 
 
@@ -3865,323 +3869,323 @@ fn bsearch_range_table(c: char, r: &'static [(char,char)]) -> bool {
         ('\u1970', '\u1974'), ('\u1980', '\u19ab'),
         ('\u19b0', '\u19c0'), ('\u19c1', '\u19c7'),
         ('\u19c8', '\u19c9'), ('\u1a00', '\u1a16'),
-        ('\u1a17', '\u1a18'), ('\u1a19', '\u1a1b'),
-        ('\u1a20', '\u1a54'), ('\u1a55', '\u1a55'),
-        ('\u1a56', '\u1a56'), ('\u1a57', '\u1a57'),
-        ('\u1a58', '\u1a5e'), ('\u1a61', '\u1a61'),
-        ('\u1a62', '\u1a62'), ('\u1a63', '\u1a64'),
-        ('\u1a65', '\u1a6c'), ('\u1a6d', '\u1a72'),
-        ('\u1a73', '\u1a74'), ('\u1aa7', '\u1aa7'),
-        ('\u1b00', '\u1b03'), ('\u1b04', '\u1b04'),
-        ('\u1b05', '\u1b33'), ('\u1b35', '\u1b35'),
-        ('\u1b36', '\u1b3a'), ('\u1b3b', '\u1b3b'),
-        ('\u1b3c', '\u1b3c'), ('\u1b3d', '\u1b41'),
-        ('\u1b42', '\u1b42'), ('\u1b43', '\u1b43'),
-        ('\u1b45', '\u1b4b'), ('\u1b80', '\u1b81'),
-        ('\u1b82', '\u1b82'), ('\u1b83', '\u1ba0'),
-        ('\u1ba1', '\u1ba1'), ('\u1ba2', '\u1ba5'),
-        ('\u1ba6', '\u1ba7'), ('\u1ba8', '\u1ba9'),
-        ('\u1bac', '\u1bad'), ('\u1bae', '\u1baf'),
-        ('\u1bba', '\u1be5'), ('\u1be7', '\u1be7'),
-        ('\u1be8', '\u1be9'), ('\u1bea', '\u1bec'),
-        ('\u1bed', '\u1bed'), ('\u1bee', '\u1bee'),
-        ('\u1bef', '\u1bf1'), ('\u1c00', '\u1c23'),
-        ('\u1c24', '\u1c2b'), ('\u1c2c', '\u1c33'),
-        ('\u1c34', '\u1c35'), ('\u1c4d', '\u1c4f'),
-        ('\u1c5a', '\u1c77'), ('\u1c78', '\u1c7d'),
-        ('\u1ce9', '\u1cec'), ('\u1cee', '\u1cf1'),
-        ('\u1cf2', '\u1cf3'), ('\u1cf5', '\u1cf6'),
-        ('\u1d00', '\u1d2b'), ('\u1d2c', '\u1d6a'),
-        ('\u1d6b', '\u1d77'), ('\u1d78', '\u1d78'),
-        ('\u1d79', '\u1d9a'), ('\u1d9b', '\u1dbf'),
-        ('\u1e00', '\u1f15'), ('\u1f18', '\u1f1d'),
-        ('\u1f20', '\u1f45'), ('\u1f48', '\u1f4d'),
-        ('\u1f50', '\u1f57'), ('\u1f59', '\u1f59'),
-        ('\u1f5b', '\u1f5b'), ('\u1f5d', '\u1f5d'),
-        ('\u1f5f', '\u1f7d'), ('\u1f80', '\u1fb4'),
-        ('\u1fb6', '\u1fbc'), ('\u1fbe', '\u1fbe'),
-        ('\u1fc2', '\u1fc4'), ('\u1fc6', '\u1fcc'),
-        ('\u1fd0', '\u1fd3'), ('\u1fd6', '\u1fdb'),
-        ('\u1fe0', '\u1fec'), ('\u1ff2', '\u1ff4'),
-        ('\u1ff6', '\u1ffc'), ('\u2071', '\u2071'),
-        ('\u207f', '\u207f'), ('\u2090', '\u209c'),
-        ('\u2102', '\u2102'), ('\u2107', '\u2107'),
-        ('\u210a', '\u2113'), ('\u2115', '\u2115'),
-        ('\u2119', '\u211d'), ('\u2124', '\u2124'),
-        ('\u2126', '\u2126'), ('\u2128', '\u2128'),
-        ('\u212a', '\u212d'), ('\u212f', '\u2134'),
-        ('\u2135', '\u2138'), ('\u2139', '\u2139'),
-        ('\u213c', '\u213f'), ('\u2145', '\u2149'),
-        ('\u214e', '\u214e'), ('\u2160', '\u2182'),
-        ('\u2183', '\u2184'), ('\u2185', '\u2188'),
-        ('\u24b6', '\u24e9'), ('\u2c00', '\u2c2e'),
-        ('\u2c30', '\u2c5e'), ('\u2c60', '\u2c7b'),
-        ('\u2c7c', '\u2c7d'), ('\u2c7e', '\u2ce4'),
-        ('\u2ceb', '\u2cee'), ('\u2cf2', '\u2cf3'),
-        ('\u2d00', '\u2d25'), ('\u2d27', '\u2d27'),
-        ('\u2d2d', '\u2d2d'), ('\u2d30', '\u2d67'),
-        ('\u2d6f', '\u2d6f'), ('\u2d80', '\u2d96'),
-        ('\u2da0', '\u2da6'), ('\u2da8', '\u2dae'),
-        ('\u2db0', '\u2db6'), ('\u2db8', '\u2dbe'),
-        ('\u2dc0', '\u2dc6'), ('\u2dc8', '\u2dce'),
-        ('\u2dd0', '\u2dd6'), ('\u2dd8', '\u2dde'),
-        ('\u2de0', '\u2dff'), ('\u2e2f', '\u2e2f'),
-        ('\u3005', '\u3005'), ('\u3006', '\u3006'),
-        ('\u3007', '\u3007'), ('\u3021', '\u3029'),
-        ('\u3031', '\u3035'), ('\u3038', '\u303a'),
-        ('\u303b', '\u303b'), ('\u303c', '\u303c'),
-        ('\u3041', '\u3096'), ('\u309d', '\u309e'),
-        ('\u309f', '\u309f'), ('\u30a1', '\u30fa'),
-        ('\u30fc', '\u30fe'), ('\u30ff', '\u30ff'),
-        ('\u3105', '\u312d'), ('\u3131', '\u318e'),
-        ('\u31a0', '\u31ba'), ('\u31f0', '\u31ff'),
-        ('\u3400', '\u4db5'), ('\u4e00', '\u9fcc'),
-        ('\ua000', '\ua014'), ('\ua015', '\ua015'),
-        ('\ua016', '\ua48c'), ('\ua4d0', '\ua4f7'),
-        ('\ua4f8', '\ua4fd'), ('\ua500', '\ua60b'),
-        ('\ua60c', '\ua60c'), ('\ua610', '\ua61f'),
-        ('\ua62a', '\ua62b'), ('\ua640', '\ua66d'),
-        ('\ua66e', '\ua66e'), ('\ua674', '\ua67b'),
-        ('\ua67f', '\ua67f'), ('\ua680', '\ua697'),
-        ('\ua69f', '\ua69f'), ('\ua6a0', '\ua6e5'),
-        ('\ua6e6', '\ua6ef'), ('\ua717', '\ua71f'),
-        ('\ua722', '\ua76f'), ('\ua770', '\ua770'),
-        ('\ua771', '\ua787'), ('\ua788', '\ua788'),
-        ('\ua78b', '\ua78e'), ('\ua790', '\ua793'),
-        ('\ua7a0', '\ua7aa'), ('\ua7f8', '\ua7f9'),
-        ('\ua7fa', '\ua7fa'), ('\ua7fb', '\ua801'),
-        ('\ua803', '\ua805'), ('\ua807', '\ua80a'),
-        ('\ua80c', '\ua822'), ('\ua823', '\ua824'),
-        ('\ua825', '\ua826'), ('\ua827', '\ua827'),
-        ('\ua840', '\ua873'), ('\ua880', '\ua881'),
-        ('\ua882', '\ua8b3'), ('\ua8b4', '\ua8c3'),
-        ('\ua8f2', '\ua8f7'), ('\ua8fb', '\ua8fb'),
-        ('\ua90a', '\ua925'), ('\ua926', '\ua92a'),
-        ('\ua930', '\ua946'), ('\ua947', '\ua951'),
-        ('\ua952', '\ua952'), ('\ua960', '\ua97c'),
-        ('\ua980', '\ua982'), ('\ua983', '\ua983'),
-        ('\ua984', '\ua9b2'), ('\ua9b4', '\ua9b5'),
-        ('\ua9b6', '\ua9b9'), ('\ua9ba', '\ua9bb'),
-        ('\ua9bc', '\ua9bc'), ('\ua9bd', '\ua9bf'),
-        ('\ua9cf', '\ua9cf'), ('\uaa00', '\uaa28'),
-        ('\uaa29', '\uaa2e'), ('\uaa2f', '\uaa30'),
-        ('\uaa31', '\uaa32'), ('\uaa33', '\uaa34'),
-        ('\uaa35', '\uaa36'), ('\uaa40', '\uaa42'),
-        ('\uaa43', '\uaa43'), ('\uaa44', '\uaa4b'),
-        ('\uaa4c', '\uaa4c'), ('\uaa4d', '\uaa4d'),
-        ('\uaa60', '\uaa6f'), ('\uaa70', '\uaa70'),
-        ('\uaa71', '\uaa76'), ('\uaa7a', '\uaa7a'),
-        ('\uaa80', '\uaaaf'), ('\uaab0', '\uaab0'),
-        ('\uaab1', '\uaab1'), ('\uaab2', '\uaab4'),
-        ('\uaab5', '\uaab6'), ('\uaab7', '\uaab8'),
-        ('\uaab9', '\uaabd'), ('\uaabe', '\uaabe'),
-        ('\uaac0', '\uaac0'), ('\uaac2', '\uaac2'),
-        ('\uaadb', '\uaadc'), ('\uaadd', '\uaadd'),
-        ('\uaae0', '\uaaea'), ('\uaaeb', '\uaaeb'),
-        ('\uaaec', '\uaaed'), ('\uaaee', '\uaaef'),
-        ('\uaaf2', '\uaaf2'), ('\uaaf3', '\uaaf4'),
-        ('\uaaf5', '\uaaf5'), ('\uab01', '\uab06'),
-        ('\uab09', '\uab0e'), ('\uab11', '\uab16'),
-        ('\uab20', '\uab26'), ('\uab28', '\uab2e'),
-        ('\uabc0', '\uabe2'), ('\uabe3', '\uabe4'),
-        ('\uabe5', '\uabe5'), ('\uabe6', '\uabe7'),
-        ('\uabe8', '\uabe8'), ('\uabe9', '\uabea'),
-        ('\uac00', '\ud7a3'), ('\ud7b0', '\ud7c6'),
-        ('\ud7cb', '\ud7fb'), ('\uf900', '\ufa6d'),
-        ('\ufa70', '\ufad9'), ('\ufb00', '\ufb06'),
-        ('\ufb13', '\ufb17'), ('\ufb1d', '\ufb1d'),
-        ('\ufb1e', '\ufb1e'), ('\ufb1f', '\ufb28'),
-        ('\ufb2a', '\ufb36'), ('\ufb38', '\ufb3c'),
-        ('\ufb3e', '\ufb3e'), ('\ufb40', '\ufb41'),
-        ('\ufb43', '\ufb44'), ('\ufb46', '\ufbb1'),
-        ('\ufbd3', '\ufd3d'), ('\ufd50', '\ufd8f'),
-        ('\ufd92', '\ufdc7'), ('\ufdf0', '\ufdfb'),
-        ('\ufe70', '\ufe74'), ('\ufe76', '\ufefc'),
-        ('\uff21', '\uff3a'), ('\uff41', '\uff5a'),
-        ('\uff66', '\uff6f'), ('\uff70', '\uff70'),
-        ('\uff71', '\uff9d'), ('\uff9e', '\uff9f'),
-        ('\uffa0', '\uffbe'), ('\uffc2', '\uffc7'),
-        ('\uffca', '\uffcf'), ('\uffd2', '\uffd7'),
-        ('\uffda', '\uffdc'), ('\U00010000', '\U0001000b'),
-        ('\U0001000d', '\U00010026'), ('\U00010028', '\U0001003a'),
-        ('\U0001003c', '\U0001003d'), ('\U0001003f', '\U0001004d'),
-        ('\U00010050', '\U0001005d'), ('\U00010080', '\U000100fa'),
-        ('\U00010140', '\U00010174'), ('\U00010280', '\U0001029c'),
-        ('\U000102a0', '\U000102d0'), ('\U00010300', '\U0001031e'),
-        ('\U00010330', '\U00010340'), ('\U00010341', '\U00010341'),
-        ('\U00010342', '\U00010349'), ('\U0001034a', '\U0001034a'),
-        ('\U00010380', '\U0001039d'), ('\U000103a0', '\U000103c3'),
-        ('\U000103c8', '\U000103cf'), ('\U000103d1', '\U000103d5'),
-        ('\U00010400', '\U0001044f'), ('\U00010450', '\U0001049d'),
-        ('\U00010800', '\U00010805'), ('\U00010808', '\U00010808'),
-        ('\U0001080a', '\U00010835'), ('\U00010837', '\U00010838'),
-        ('\U0001083c', '\U0001083c'), ('\U0001083f', '\U00010855'),
-        ('\U00010900', '\U00010915'), ('\U00010920', '\U00010939'),
-        ('\U00010980', '\U000109b7'), ('\U000109be', '\U000109bf'),
-        ('\U00010a00', '\U00010a00'), ('\U00010a01', '\U00010a03'),
-        ('\U00010a05', '\U00010a06'), ('\U00010a0c', '\U00010a0f'),
-        ('\U00010a10', '\U00010a13'), ('\U00010a15', '\U00010a17'),
-        ('\U00010a19', '\U00010a33'), ('\U00010a60', '\U00010a7c'),
-        ('\U00010b00', '\U00010b35'), ('\U00010b40', '\U00010b55'),
-        ('\U00010b60', '\U00010b72'), ('\U00010c00', '\U00010c48'),
-        ('\U00011000', '\U00011000'), ('\U00011001', '\U00011001'),
-        ('\U00011002', '\U00011002'), ('\U00011003', '\U00011037'),
-        ('\U00011038', '\U00011045'), ('\U00011082', '\U00011082'),
-        ('\U00011083', '\U000110af'), ('\U000110b0', '\U000110b2'),
-        ('\U000110b3', '\U000110b6'), ('\U000110b7', '\U000110b8'),
-        ('\U000110d0', '\U000110e8'), ('\U00011100', '\U00011102'),
-        ('\U00011103', '\U00011126'), ('\U00011127', '\U0001112b'),
-        ('\U0001112c', '\U0001112c'), ('\U0001112d', '\U00011132'),
-        ('\U00011180', '\U00011181'), ('\U00011182', '\U00011182'),
-        ('\U00011183', '\U000111b2'), ('\U000111b3', '\U000111b5'),
-        ('\U000111b6', '\U000111be'), ('\U000111bf', '\U000111bf'),
-        ('\U000111c1', '\U000111c4'), ('\U00011680', '\U000116aa'),
-        ('\U000116ab', '\U000116ab'), ('\U000116ac', '\U000116ac'),
-        ('\U000116ad', '\U000116ad'), ('\U000116ae', '\U000116af'),
-        ('\U000116b0', '\U000116b5'), ('\U00012000', '\U0001236e'),
-        ('\U00012400', '\U00012462'), ('\U00013000', '\U0001342e'),
-        ('\U00016800', '\U00016a38'), ('\U00016f00', '\U00016f44'),
-        ('\U00016f50', '\U00016f50'), ('\U00016f51', '\U00016f7e'),
-        ('\U00016f93', '\U00016f9f'), ('\U0001b000', '\U0001b001'),
-        ('\U0001d400', '\U0001d454'), ('\U0001d456', '\U0001d49c'),
-        ('\U0001d49e', '\U0001d49f'), ('\U0001d4a2', '\U0001d4a2'),
-        ('\U0001d4a5', '\U0001d4a6'), ('\U0001d4a9', '\U0001d4ac'),
-        ('\U0001d4ae', '\U0001d4b9'), ('\U0001d4bb', '\U0001d4bb'),
-        ('\U0001d4bd', '\U0001d4c3'), ('\U0001d4c5', '\U0001d505'),
-        ('\U0001d507', '\U0001d50a'), ('\U0001d50d', '\U0001d514'),
-        ('\U0001d516', '\U0001d51c'), ('\U0001d51e', '\U0001d539'),
-        ('\U0001d53b', '\U0001d53e'), ('\U0001d540', '\U0001d544'),
-        ('\U0001d546', '\U0001d546'), ('\U0001d54a', '\U0001d550'),
-        ('\U0001d552', '\U0001d6a5'), ('\U0001d6a8', '\U0001d6c0'),
-        ('\U0001d6c2', '\U0001d6da'), ('\U0001d6dc', '\U0001d6fa'),
-        ('\U0001d6fc', '\U0001d714'), ('\U0001d716', '\U0001d734'),
-        ('\U0001d736', '\U0001d74e'), ('\U0001d750', '\U0001d76e'),
-        ('\U0001d770', '\U0001d788'), ('\U0001d78a', '\U0001d7a8'),
-        ('\U0001d7aa', '\U0001d7c2'), ('\U0001d7c4', '\U0001d7cb'),
-        ('\U0001ee00', '\U0001ee03'), ('\U0001ee05', '\U0001ee1f'),
-        ('\U0001ee21', '\U0001ee22'), ('\U0001ee24', '\U0001ee24'),
-        ('\U0001ee27', '\U0001ee27'), ('\U0001ee29', '\U0001ee32'),
-        ('\U0001ee34', '\U0001ee37'), ('\U0001ee39', '\U0001ee39'),
-        ('\U0001ee3b', '\U0001ee3b'), ('\U0001ee42', '\U0001ee42'),
-        ('\U0001ee47', '\U0001ee47'), ('\U0001ee49', '\U0001ee49'),
-        ('\U0001ee4b', '\U0001ee4b'), ('\U0001ee4d', '\U0001ee4f'),
-        ('\U0001ee51', '\U0001ee52'), ('\U0001ee54', '\U0001ee54'),
-        ('\U0001ee57', '\U0001ee57'), ('\U0001ee59', '\U0001ee59'),
-        ('\U0001ee5b', '\U0001ee5b'), ('\U0001ee5d', '\U0001ee5d'),
-        ('\U0001ee5f', '\U0001ee5f'), ('\U0001ee61', '\U0001ee62'),
-        ('\U0001ee64', '\U0001ee64'), ('\U0001ee67', '\U0001ee6a'),
-        ('\U0001ee6c', '\U0001ee72'), ('\U0001ee74', '\U0001ee77'),
-        ('\U0001ee79', '\U0001ee7c'), ('\U0001ee7e', '\U0001ee7e'),
-        ('\U0001ee80', '\U0001ee89'), ('\U0001ee8b', '\U0001ee9b'),
-        ('\U0001eea1', '\U0001eea3'), ('\U0001eea5', '\U0001eea9'),
-        ('\U0001eeab', '\U0001eebb'), ('\U00020000', '\U0002a6d6'),
-        ('\U0002a700', '\U0002b734'), ('\U0002b740', '\U0002b81d'),
-        ('\U0002f800', '\U0002fa1d')
-    ];
-
-    pub fn Alphabetic(c: char) -> bool {
-        bsearch_range_table(c, Alphabetic_table)
-    }
-
-    static XID_Continue_table : &'static [(char,char)] = &[
-        ('\x30', '\x39'), ('\x41', '\x5a'),
-        ('\x5f', '\x5f'), ('\x61', '\x7a'),
-        ('\xaa', '\xaa'), ('\xb5', '\xb5'),
-        ('\xb7', '\xb7'), ('\xba', '\xba'),
-        ('\xc0', '\xd6'), ('\xd8', '\xf6'),
-        ('\xf8', '\u01ba'), ('\u01bb', '\u01bb'),
-        ('\u01bc', '\u01bf'), ('\u01c0', '\u01c3'),
-        ('\u01c4', '\u0293'), ('\u0294', '\u0294'),
-        ('\u0295', '\u02af'), ('\u02b0', '\u02c1'),
-        ('\u02c6', '\u02d1'), ('\u02e0', '\u02e4'),
-        ('\u02ec', '\u02ec'), ('\u02ee', '\u02ee'),
-        ('\u0300', '\u036f'), ('\u0370', '\u0373'),
-        ('\u0374', '\u0374'), ('\u0376', '\u0377'),
-        ('\u037b', '\u037d'), ('\u0386', '\u0386'),
-        ('\u0387', '\u0387'), ('\u0388', '\u038a'),
-        ('\u038c', '\u038c'), ('\u038e', '\u03a1'),
-        ('\u03a3', '\u03f5'), ('\u03f7', '\u0481'),
-        ('\u0483', '\u0487'), ('\u048a', '\u0527'),
-        ('\u0531', '\u0556'), ('\u0559', '\u0559'),
-        ('\u0561', '\u0587'), ('\u0591', '\u05bd'),
-        ('\u05bf', '\u05bf'), ('\u05c1', '\u05c2'),
-        ('\u05c4', '\u05c5'), ('\u05c7', '\u05c7'),
-        ('\u05d0', '\u05ea'), ('\u05f0', '\u05f2'),
-        ('\u0610', '\u061a'), ('\u0620', '\u063f'),
-        ('\u0640', '\u0640'), ('\u0641', '\u064a'),
-        ('\u064b', '\u065f'), ('\u0660', '\u0669'),
-        ('\u066e', '\u066f'), ('\u0670', '\u0670'),
-        ('\u0671', '\u06d3'), ('\u06d5', '\u06d5'),
-        ('\u06d6', '\u06dc'), ('\u06df', '\u06e4'),
-        ('\u06e5', '\u06e6'), ('\u06e7', '\u06e8'),
-        ('\u06ea', '\u06ed'), ('\u06ee', '\u06ef'),
-        ('\u06f0', '\u06f9'), ('\u06fa', '\u06fc'),
-        ('\u06ff', '\u06ff'), ('\u0710', '\u0710'),
-        ('\u0711', '\u0711'), ('\u0712', '\u072f'),
-        ('\u0730', '\u074a'), ('\u074d', '\u07a5'),
-        ('\u07a6', '\u07b0'), ('\u07b1', '\u07b1'),
-        ('\u07c0', '\u07c9'), ('\u07ca', '\u07ea'),
-        ('\u07eb', '\u07f3'), ('\u07f4', '\u07f5'),
-        ('\u07fa', '\u07fa'), ('\u0800', '\u0815'),
-        ('\u0816', '\u0819'), ('\u081a', '\u081a'),
-        ('\u081b', '\u0823'), ('\u0824', '\u0824'),
-        ('\u0825', '\u0827'), ('\u0828', '\u0828'),
-        ('\u0829', '\u082d'), ('\u0840', '\u0858'),
-        ('\u0859', '\u085b'), ('\u08a0', '\u08a0'),
-        ('\u08a2', '\u08ac'), ('\u08e4', '\u08fe'),
-        ('\u0900', '\u0902'), ('\u0903', '\u0903'),
-        ('\u0904', '\u0939'), ('\u093a', '\u093a'),
-        ('\u093b', '\u093b'), ('\u093c', '\u093c'),
-        ('\u093d', '\u093d'), ('\u093e', '\u0940'),
-        ('\u0941', '\u0948'), ('\u0949', '\u094c'),
-        ('\u094d', '\u094d'), ('\u094e', '\u094f'),
-        ('\u0950', '\u0950'), ('\u0951', '\u0957'),
-        ('\u0958', '\u0961'), ('\u0962', '\u0963'),
-        ('\u0966', '\u096f'), ('\u0971', '\u0971'),
-        ('\u0972', '\u0977'), ('\u0979', '\u097f'),
-        ('\u0981', '\u0981'), ('\u0982', '\u0983'),
-        ('\u0985', '\u098c'), ('\u098f', '\u0990'),
-        ('\u0993', '\u09a8'), ('\u09aa', '\u09b0'),
-        ('\u09b2', '\u09b2'), ('\u09b6', '\u09b9'),
-        ('\u09bc', '\u09bc'), ('\u09bd', '\u09bd'),
-        ('\u09be', '\u09c0'), ('\u09c1', '\u09c4'),
-        ('\u09c7', '\u09c8'), ('\u09cb', '\u09cc'),
-        ('\u09cd', '\u09cd'), ('\u09ce', '\u09ce'),
-        ('\u09d7', '\u09d7'), ('\u09dc', '\u09dd'),
-        ('\u09df', '\u09e1'), ('\u09e2', '\u09e3'),
-        ('\u09e6', '\u09ef'), ('\u09f0', '\u09f1'),
-        ('\u0a01', '\u0a02'), ('\u0a03', '\u0a03'),
-        ('\u0a05', '\u0a0a'), ('\u0a0f', '\u0a10'),
-        ('\u0a13', '\u0a28'), ('\u0a2a', '\u0a30'),
-        ('\u0a32', '\u0a33'), ('\u0a35', '\u0a36'),
-        ('\u0a38', '\u0a39'), ('\u0a3c', '\u0a3c'),
-        ('\u0a3e', '\u0a40'), ('\u0a41', '\u0a42'),
-        ('\u0a47', '\u0a48'), ('\u0a4b', '\u0a4d'),
-        ('\u0a51', '\u0a51'), ('\u0a59', '\u0a5c'),
-        ('\u0a5e', '\u0a5e'), ('\u0a66', '\u0a6f'),
-        ('\u0a70', '\u0a71'), ('\u0a72', '\u0a74'),
-        ('\u0a75', '\u0a75'), ('\u0a81', '\u0a82'),
-        ('\u0a83', '\u0a83'), ('\u0a85', '\u0a8d'),
-        ('\u0a8f', '\u0a91'), ('\u0a93', '\u0aa8'),
-        ('\u0aaa', '\u0ab0'), ('\u0ab2', '\u0ab3'),
-        ('\u0ab5', '\u0ab9'), ('\u0abc', '\u0abc'),
-        ('\u0abd', '\u0abd'), ('\u0abe', '\u0ac0'),
-        ('\u0ac1', '\u0ac5'), ('\u0ac7', '\u0ac8'),
-        ('\u0ac9', '\u0ac9'), ('\u0acb', '\u0acc'),
-        ('\u0acd', '\u0acd'), ('\u0ad0', '\u0ad0'),
-        ('\u0ae0', '\u0ae1'), ('\u0ae2', '\u0ae3'),
-        ('\u0ae6', '\u0aef'), ('\u0b01', '\u0b01'),
-        ('\u0b02', '\u0b03'), ('\u0b05', '\u0b0c'),
-        ('\u0b0f', '\u0b10'), ('\u0b13', '\u0b28'),
-        ('\u0b2a', '\u0b30'), ('\u0b32', '\u0b33'),
-        ('\u0b35', '\u0b39'), ('\u0b3c', '\u0b3c'),
-        ('\u0b3d', '\u0b3d'), ('\u0b3e', '\u0b3e'),
-        ('\u0b3f', '\u0b3f'), ('\u0b40', '\u0b40'),
-        ('\u0b41', '\u0b44'), ('\u0b47', '\u0b48'),
-        ('\u0b4b', '\u0b4c'), ('\u0b4d', '\u0b4d'),
-        ('\u0b56', '\u0b56'), ('\u0b57', '\u0b57'),
-        ('\u0b5c', '\u0b5d'), ('\u0b5f', '\u0b61'),
-        ('\u0b62', '\u0b63'), ('\u0b66', '\u0b6f'),
+        ('\u1a17', '\u1a18'), ('\u1a19', '\u1a1a'),
+        ('\u1a1b', '\u1a1b'), ('\u1a20', '\u1a54'),
+        ('\u1a55', '\u1a55'), ('\u1a56', '\u1a56'),
+        ('\u1a57', '\u1a57'), ('\u1a58', '\u1a5e'),
+        ('\u1a61', '\u1a61'), ('\u1a62', '\u1a62'),
+        ('\u1a63', '\u1a64'), ('\u1a65', '\u1a6c'),
+        ('\u1a6d', '\u1a72'), ('\u1a73', '\u1a74'),
+        ('\u1aa7', '\u1aa7'), ('\u1b00', '\u1b03'),
+        ('\u1b04', '\u1b04'), ('\u1b05', '\u1b33'),
+        ('\u1b35', '\u1b35'), ('\u1b36', '\u1b3a'),
+        ('\u1b3b', '\u1b3b'), ('\u1b3c', '\u1b3c'),
+        ('\u1b3d', '\u1b41'), ('\u1b42', '\u1b42'),
+        ('\u1b43', '\u1b43'), ('\u1b45', '\u1b4b'),
+        ('\u1b80', '\u1b81'), ('\u1b82', '\u1b82'),
+        ('\u1b83', '\u1ba0'), ('\u1ba1', '\u1ba1'),
+        ('\u1ba2', '\u1ba5'), ('\u1ba6', '\u1ba7'),
+        ('\u1ba8', '\u1ba9'), ('\u1bac', '\u1bad'),
+        ('\u1bae', '\u1baf'), ('\u1bba', '\u1be5'),
+        ('\u1be7', '\u1be7'), ('\u1be8', '\u1be9'),
+        ('\u1bea', '\u1bec'), ('\u1bed', '\u1bed'),
+        ('\u1bee', '\u1bee'), ('\u1bef', '\u1bf1'),
+        ('\u1c00', '\u1c23'), ('\u1c24', '\u1c2b'),
+        ('\u1c2c', '\u1c33'), ('\u1c34', '\u1c35'),
+        ('\u1c4d', '\u1c4f'), ('\u1c5a', '\u1c77'),
+        ('\u1c78', '\u1c7d'), ('\u1ce9', '\u1cec'),
+        ('\u1cee', '\u1cf1'), ('\u1cf2', '\u1cf3'),
+        ('\u1cf5', '\u1cf6'), ('\u1d00', '\u1d2b'),
+        ('\u1d2c', '\u1d6a'), ('\u1d6b', '\u1d77'),
+        ('\u1d78', '\u1d78'), ('\u1d79', '\u1d9a'),
+        ('\u1d9b', '\u1dbf'), ('\u1e00', '\u1f15'),
+        ('\u1f18', '\u1f1d'), ('\u1f20', '\u1f45'),
+        ('\u1f48', '\u1f4d'), ('\u1f50', '\u1f57'),
+        ('\u1f59', '\u1f59'), ('\u1f5b', '\u1f5b'),
+        ('\u1f5d', '\u1f5d'), ('\u1f5f', '\u1f7d'),
+        ('\u1f80', '\u1fb4'), ('\u1fb6', '\u1fbc'),
+        ('\u1fbe', '\u1fbe'), ('\u1fc2', '\u1fc4'),
+        ('\u1fc6', '\u1fcc'), ('\u1fd0', '\u1fd3'),
+        ('\u1fd6', '\u1fdb'), ('\u1fe0', '\u1fec'),
+        ('\u1ff2', '\u1ff4'), ('\u1ff6', '\u1ffc'),
+        ('\u2071', '\u2071'), ('\u207f', '\u207f'),
+        ('\u2090', '\u209c'), ('\u2102', '\u2102'),
+        ('\u2107', '\u2107'), ('\u210a', '\u2113'),
+        ('\u2115', '\u2115'), ('\u2119', '\u211d'),
+        ('\u2124', '\u2124'), ('\u2126', '\u2126'),
+        ('\u2128', '\u2128'), ('\u212a', '\u212d'),
+        ('\u212f', '\u2134'), ('\u2135', '\u2138'),
+        ('\u2139', '\u2139'), ('\u213c', '\u213f'),
+        ('\u2145', '\u2149'), ('\u214e', '\u214e'),
+        ('\u2160', '\u2182'), ('\u2183', '\u2184'),
+        ('\u2185', '\u2188'), ('\u24b6', '\u24e9'),
+        ('\u2c00', '\u2c2e'), ('\u2c30', '\u2c5e'),
+        ('\u2c60', '\u2c7b'), ('\u2c7c', '\u2c7d'),
+        ('\u2c7e', '\u2ce4'), ('\u2ceb', '\u2cee'),
+        ('\u2cf2', '\u2cf3'), ('\u2d00', '\u2d25'),
+        ('\u2d27', '\u2d27'), ('\u2d2d', '\u2d2d'),
+        ('\u2d30', '\u2d67'), ('\u2d6f', '\u2d6f'),
+        ('\u2d80', '\u2d96'), ('\u2da0', '\u2da6'),
+        ('\u2da8', '\u2dae'), ('\u2db0', '\u2db6'),
+        ('\u2db8', '\u2dbe'), ('\u2dc0', '\u2dc6'),
+        ('\u2dc8', '\u2dce'), ('\u2dd0', '\u2dd6'),
+        ('\u2dd8', '\u2dde'), ('\u2de0', '\u2dff'),
+        ('\u2e2f', '\u2e2f'), ('\u3005', '\u3005'),
+        ('\u3006', '\u3006'), ('\u3007', '\u3007'),
+        ('\u3021', '\u3029'), ('\u3031', '\u3035'),
+        ('\u3038', '\u303a'), ('\u303b', '\u303b'),
+        ('\u303c', '\u303c'), ('\u3041', '\u3096'),
+        ('\u309d', '\u309e'), ('\u309f', '\u309f'),
+        ('\u30a1', '\u30fa'), ('\u30fc', '\u30fe'),
+        ('\u30ff', '\u30ff'), ('\u3105', '\u312d'),
+        ('\u3131', '\u318e'), ('\u31a0', '\u31ba'),
+        ('\u31f0', '\u31ff'), ('\u3400', '\u4db5'),
+        ('\u4e00', '\u9fcc'), ('\ua000', '\ua014'),
+        ('\ua015', '\ua015'), ('\ua016', '\ua48c'),
+        ('\ua4d0', '\ua4f7'), ('\ua4f8', '\ua4fd'),
+        ('\ua500', '\ua60b'), ('\ua60c', '\ua60c'),
+        ('\ua610', '\ua61f'), ('\ua62a', '\ua62b'),
+        ('\ua640', '\ua66d'), ('\ua66e', '\ua66e'),
+        ('\ua674', '\ua67b'), ('\ua67f', '\ua67f'),
+        ('\ua680', '\ua697'), ('\ua69f', '\ua69f'),
+        ('\ua6a0', '\ua6e5'), ('\ua6e6', '\ua6ef'),
+        ('\ua717', '\ua71f'), ('\ua722', '\ua76f'),
+        ('\ua770', '\ua770'), ('\ua771', '\ua787'),
+        ('\ua788', '\ua788'), ('\ua78b', '\ua78e'),
+        ('\ua790', '\ua793'), ('\ua7a0', '\ua7aa'),
+        ('\ua7f8', '\ua7f9'), ('\ua7fa', '\ua7fa'),
+        ('\ua7fb', '\ua801'), ('\ua803', '\ua805'),
+        ('\ua807', '\ua80a'), ('\ua80c', '\ua822'),
+        ('\ua823', '\ua824'), ('\ua825', '\ua826'),
+        ('\ua827', '\ua827'), ('\ua840', '\ua873'),
+        ('\ua880', '\ua881'), ('\ua882', '\ua8b3'),
+        ('\ua8b4', '\ua8c3'), ('\ua8f2', '\ua8f7'),
+        ('\ua8fb', '\ua8fb'), ('\ua90a', '\ua925'),
+        ('\ua926', '\ua92a'), ('\ua930', '\ua946'),
+        ('\ua947', '\ua951'), ('\ua952', '\ua952'),
+        ('\ua960', '\ua97c'), ('\ua980', '\ua982'),
+        ('\ua983', '\ua983'), ('\ua984', '\ua9b2'),
+        ('\ua9b4', '\ua9b5'), ('\ua9b6', '\ua9b9'),
+        ('\ua9ba', '\ua9bb'), ('\ua9bc', '\ua9bc'),
+        ('\ua9bd', '\ua9bf'), ('\ua9cf', '\ua9cf'),
+        ('\uaa00', '\uaa28'), ('\uaa29', '\uaa2e'),
+        ('\uaa2f', '\uaa30'), ('\uaa31', '\uaa32'),
+        ('\uaa33', '\uaa34'), ('\uaa35', '\uaa36'),
+        ('\uaa40', '\uaa42'), ('\uaa43', '\uaa43'),
+        ('\uaa44', '\uaa4b'), ('\uaa4c', '\uaa4c'),
+        ('\uaa4d', '\uaa4d'), ('\uaa60', '\uaa6f'),
+        ('\uaa70', '\uaa70'), ('\uaa71', '\uaa76'),
+        ('\uaa7a', '\uaa7a'), ('\uaa80', '\uaaaf'),
+        ('\uaab0', '\uaab0'), ('\uaab1', '\uaab1'),
+        ('\uaab2', '\uaab4'), ('\uaab5', '\uaab6'),
+        ('\uaab7', '\uaab8'), ('\uaab9', '\uaabd'),
+        ('\uaabe', '\uaabe'), ('\uaac0', '\uaac0'),
+        ('\uaac2', '\uaac2'), ('\uaadb', '\uaadc'),
+        ('\uaadd', '\uaadd'), ('\uaae0', '\uaaea'),
+        ('\uaaeb', '\uaaeb'), ('\uaaec', '\uaaed'),
+        ('\uaaee', '\uaaef'), ('\uaaf2', '\uaaf2'),
+        ('\uaaf3', '\uaaf4'), ('\uaaf5', '\uaaf5'),
+        ('\uab01', '\uab06'), ('\uab09', '\uab0e'),
+        ('\uab11', '\uab16'), ('\uab20', '\uab26'),
+        ('\uab28', '\uab2e'), ('\uabc0', '\uabe2'),
+        ('\uabe3', '\uabe4'), ('\uabe5', '\uabe5'),
+        ('\uabe6', '\uabe7'), ('\uabe8', '\uabe8'),
+        ('\uabe9', '\uabea'), ('\uac00', '\ud7a3'),
+        ('\ud7b0', '\ud7c6'), ('\ud7cb', '\ud7fb'),
+        ('\uf900', '\ufa6d'), ('\ufa70', '\ufad9'),
+        ('\ufb00', '\ufb06'), ('\ufb13', '\ufb17'),
+        ('\ufb1d', '\ufb1d'), ('\ufb1e', '\ufb1e'),
+        ('\ufb1f', '\ufb28'), ('\ufb2a', '\ufb36'),
+        ('\ufb38', '\ufb3c'), ('\ufb3e', '\ufb3e'),
+        ('\ufb40', '\ufb41'), ('\ufb43', '\ufb44'),
+        ('\ufb46', '\ufbb1'), ('\ufbd3', '\ufd3d'),
+        ('\ufd50', '\ufd8f'), ('\ufd92', '\ufdc7'),
+        ('\ufdf0', '\ufdfb'), ('\ufe70', '\ufe74'),
+        ('\ufe76', '\ufefc'), ('\uff21', '\uff3a'),
+        ('\uff41', '\uff5a'), ('\uff66', '\uff6f'),
+        ('\uff70', '\uff70'), ('\uff71', '\uff9d'),
+        ('\uff9e', '\uff9f'), ('\uffa0', '\uffbe'),
+        ('\uffc2', '\uffc7'), ('\uffca', '\uffcf'),
+        ('\uffd2', '\uffd7'), ('\uffda', '\uffdc'),
+        ('\U00010000', '\U0001000b'), ('\U0001000d', '\U00010026'),
+        ('\U00010028', '\U0001003a'), ('\U0001003c', '\U0001003d'),
+        ('\U0001003f', '\U0001004d'), ('\U00010050', '\U0001005d'),
+        ('\U00010080', '\U000100fa'), ('\U00010140', '\U00010174'),
+        ('\U00010280', '\U0001029c'), ('\U000102a0', '\U000102d0'),
+        ('\U00010300', '\U0001031e'), ('\U00010330', '\U00010340'),
+        ('\U00010341', '\U00010341'), ('\U00010342', '\U00010349'),
+        ('\U0001034a', '\U0001034a'), ('\U00010380', '\U0001039d'),
+        ('\U000103a0', '\U000103c3'), ('\U000103c8', '\U000103cf'),
+        ('\U000103d1', '\U000103d5'), ('\U00010400', '\U0001044f'),
+        ('\U00010450', '\U0001049d'), ('\U00010800', '\U00010805'),
+        ('\U00010808', '\U00010808'), ('\U0001080a', '\U00010835'),
+        ('\U00010837', '\U00010838'), ('\U0001083c', '\U0001083c'),
+        ('\U0001083f', '\U00010855'), ('\U00010900', '\U00010915'),
+        ('\U00010920', '\U00010939'), ('\U00010980', '\U000109b7'),
+        ('\U000109be', '\U000109bf'), ('\U00010a00', '\U00010a00'),
+        ('\U00010a01', '\U00010a03'), ('\U00010a05', '\U00010a06'),
+        ('\U00010a0c', '\U00010a0f'), ('\U00010a10', '\U00010a13'),
+        ('\U00010a15', '\U00010a17'), ('\U00010a19', '\U00010a33'),
+        ('\U00010a60', '\U00010a7c'), ('\U00010b00', '\U00010b35'),
+        ('\U00010b40', '\U00010b55'), ('\U00010b60', '\U00010b72'),
+        ('\U00010c00', '\U00010c48'), ('\U00011000', '\U00011000'),
+        ('\U00011001', '\U00011001'), ('\U00011002', '\U00011002'),
+        ('\U00011003', '\U00011037'), ('\U00011038', '\U00011045'),
+        ('\U00011082', '\U00011082'), ('\U00011083', '\U000110af'),
+        ('\U000110b0', '\U000110b2'), ('\U000110b3', '\U000110b6'),
+        ('\U000110b7', '\U000110b8'), ('\U000110d0', '\U000110e8'),
+        ('\U00011100', '\U00011102'), ('\U00011103', '\U00011126'),
+        ('\U00011127', '\U0001112b'), ('\U0001112c', '\U0001112c'),
+        ('\U0001112d', '\U00011132'), ('\U00011180', '\U00011181'),
+        ('\U00011182', '\U00011182'), ('\U00011183', '\U000111b2'),
+        ('\U000111b3', '\U000111b5'), ('\U000111b6', '\U000111be'),
+        ('\U000111bf', '\U000111bf'), ('\U000111c1', '\U000111c4'),
+        ('\U00011680', '\U000116aa'), ('\U000116ab', '\U000116ab'),
+        ('\U000116ac', '\U000116ac'), ('\U000116ad', '\U000116ad'),
+        ('\U000116ae', '\U000116af'), ('\U000116b0', '\U000116b5'),
+        ('\U00012000', '\U0001236e'), ('\U00012400', '\U00012462'),
+        ('\U00013000', '\U0001342e'), ('\U00016800', '\U00016a38'),
+        ('\U00016f00', '\U00016f44'), ('\U00016f50', '\U00016f50'),
+        ('\U00016f51', '\U00016f7e'), ('\U00016f93', '\U00016f9f'),
+        ('\U0001b000', '\U0001b001'), ('\U0001d400', '\U0001d454'),
+        ('\U0001d456', '\U0001d49c'), ('\U0001d49e', '\U0001d49f'),
+        ('\U0001d4a2', '\U0001d4a2'), ('\U0001d4a5', '\U0001d4a6'),
+        ('\U0001d4a9', '\U0001d4ac'), ('\U0001d4ae', '\U0001d4b9'),
+        ('\U0001d4bb', '\U0001d4bb'), ('\U0001d4bd', '\U0001d4c3'),
+        ('\U0001d4c5', '\U0001d505'), ('\U0001d507', '\U0001d50a'),
+        ('\U0001d50d', '\U0001d514'), ('\U0001d516', '\U0001d51c'),
+        ('\U0001d51e', '\U0001d539'), ('\U0001d53b', '\U0001d53e'),
+        ('\U0001d540', '\U0001d544'), ('\U0001d546', '\U0001d546'),
+        ('\U0001d54a', '\U0001d550'), ('\U0001d552', '\U0001d6a5'),
+        ('\U0001d6a8', '\U0001d6c0'), ('\U0001d6c2', '\U0001d6da'),
+        ('\U0001d6dc', '\U0001d6fa'), ('\U0001d6fc', '\U0001d714'),
+        ('\U0001d716', '\U0001d734'), ('\U0001d736', '\U0001d74e'),
+        ('\U0001d750', '\U0001d76e'), ('\U0001d770', '\U0001d788'),
+        ('\U0001d78a', '\U0001d7a8'), ('\U0001d7aa', '\U0001d7c2'),
+        ('\U0001d7c4', '\U0001d7cb'), ('\U0001ee00', '\U0001ee03'),
+        ('\U0001ee05', '\U0001ee1f'), ('\U0001ee21', '\U0001ee22'),
+        ('\U0001ee24', '\U0001ee24'), ('\U0001ee27', '\U0001ee27'),
+        ('\U0001ee29', '\U0001ee32'), ('\U0001ee34', '\U0001ee37'),
+        ('\U0001ee39', '\U0001ee39'), ('\U0001ee3b', '\U0001ee3b'),
+        ('\U0001ee42', '\U0001ee42'), ('\U0001ee47', '\U0001ee47'),
+        ('\U0001ee49', '\U0001ee49'), ('\U0001ee4b', '\U0001ee4b'),
+        ('\U0001ee4d', '\U0001ee4f'), ('\U0001ee51', '\U0001ee52'),
+        ('\U0001ee54', '\U0001ee54'), ('\U0001ee57', '\U0001ee57'),
+        ('\U0001ee59', '\U0001ee59'), ('\U0001ee5b', '\U0001ee5b'),
+        ('\U0001ee5d', '\U0001ee5d'), ('\U0001ee5f', '\U0001ee5f'),
+        ('\U0001ee61', '\U0001ee62'), ('\U0001ee64', '\U0001ee64'),
+        ('\U0001ee67', '\U0001ee6a'), ('\U0001ee6c', '\U0001ee72'),
+        ('\U0001ee74', '\U0001ee77'), ('\U0001ee79', '\U0001ee7c'),
+        ('\U0001ee7e', '\U0001ee7e'), ('\U0001ee80', '\U0001ee89'),
+        ('\U0001ee8b', '\U0001ee9b'), ('\U0001eea1', '\U0001eea3'),
+        ('\U0001eea5', '\U0001eea9'), ('\U0001eeab', '\U0001eebb'),
+        ('\U00020000', '\U0002a6d6'), ('\U0002a700', '\U0002b734'),
+        ('\U0002b740', '\U0002b81d'), ('\U0002f800', '\U0002fa1d')
+    ];
+
+    pub fn Alphabetic(c: char) -> bool {
+        bsearch_range_table(c, Alphabetic_table)
+    }
+
+    static XID_Continue_table : &'static [(char,char)] = &[
+        ('\x30', '\x39'), ('\x41', '\x5a'),
+        ('\x5f', '\x5f'), ('\x61', '\x7a'),
+        ('\xaa', '\xaa'), ('\xb5', '\xb5'),
+        ('\xb7', '\xb7'), ('\xba', '\xba'),
+        ('\xc0', '\xd6'), ('\xd8', '\xf6'),
+        ('\xf8', '\u01ba'), ('\u01bb', '\u01bb'),
+        ('\u01bc', '\u01bf'), ('\u01c0', '\u01c3'),
+        ('\u01c4', '\u0293'), ('\u0294', '\u0294'),
+        ('\u0295', '\u02af'), ('\u02b0', '\u02c1'),
+        ('\u02c6', '\u02d1'), ('\u02e0', '\u02e4'),
+        ('\u02ec', '\u02ec'), ('\u02ee', '\u02ee'),
+        ('\u0300', '\u036f'), ('\u0370', '\u0373'),
+        ('\u0374', '\u0374'), ('\u0376', '\u0377'),
+        ('\u037b', '\u037d'), ('\u0386', '\u0386'),
+        ('\u0387', '\u0387'), ('\u0388', '\u038a'),
+        ('\u038c', '\u038c'), ('\u038e', '\u03a1'),
+        ('\u03a3', '\u03f5'), ('\u03f7', '\u0481'),
+        ('\u0483', '\u0487'), ('\u048a', '\u0527'),
+        ('\u0531', '\u0556'), ('\u0559', '\u0559'),
+        ('\u0561', '\u0587'), ('\u0591', '\u05bd'),
+        ('\u05bf', '\u05bf'), ('\u05c1', '\u05c2'),
+        ('\u05c4', '\u05c5'), ('\u05c7', '\u05c7'),
+        ('\u05d0', '\u05ea'), ('\u05f0', '\u05f2'),
+        ('\u0610', '\u061a'), ('\u0620', '\u063f'),
+        ('\u0640', '\u0640'), ('\u0641', '\u064a'),
+        ('\u064b', '\u065f'), ('\u0660', '\u0669'),
+        ('\u066e', '\u066f'), ('\u0670', '\u0670'),
+        ('\u0671', '\u06d3'), ('\u06d5', '\u06d5'),
+        ('\u06d6', '\u06dc'), ('\u06df', '\u06e4'),
+        ('\u06e5', '\u06e6'), ('\u06e7', '\u06e8'),
+        ('\u06ea', '\u06ed'), ('\u06ee', '\u06ef'),
+        ('\u06f0', '\u06f9'), ('\u06fa', '\u06fc'),
+        ('\u06ff', '\u06ff'), ('\u0710', '\u0710'),
+        ('\u0711', '\u0711'), ('\u0712', '\u072f'),
+        ('\u0730', '\u074a'), ('\u074d', '\u07a5'),
+        ('\u07a6', '\u07b0'), ('\u07b1', '\u07b1'),
+        ('\u07c0', '\u07c9'), ('\u07ca', '\u07ea'),
+        ('\u07eb', '\u07f3'), ('\u07f4', '\u07f5'),
+        ('\u07fa', '\u07fa'), ('\u0800', '\u0815'),
+        ('\u0816', '\u0819'), ('\u081a', '\u081a'),
+        ('\u081b', '\u0823'), ('\u0824', '\u0824'),
+        ('\u0825', '\u0827'), ('\u0828', '\u0828'),
+        ('\u0829', '\u082d'), ('\u0840', '\u0858'),
+        ('\u0859', '\u085b'), ('\u08a0', '\u08a0'),
+        ('\u08a2', '\u08ac'), ('\u08e4', '\u08fe'),
+        ('\u0900', '\u0902'), ('\u0903', '\u0903'),
+        ('\u0904', '\u0939'), ('\u093a', '\u093a'),
+        ('\u093b', '\u093b'), ('\u093c', '\u093c'),
+        ('\u093d', '\u093d'), ('\u093e', '\u0940'),
+        ('\u0941', '\u0948'), ('\u0949', '\u094c'),
+        ('\u094d', '\u094d'), ('\u094e', '\u094f'),
+        ('\u0950', '\u0950'), ('\u0951', '\u0957'),
+        ('\u0958', '\u0961'), ('\u0962', '\u0963'),
+        ('\u0966', '\u096f'), ('\u0971', '\u0971'),
+        ('\u0972', '\u0977'), ('\u0979', '\u097f'),
+        ('\u0981', '\u0981'), ('\u0982', '\u0983'),
+        ('\u0985', '\u098c'), ('\u098f', '\u0990'),
+        ('\u0993', '\u09a8'), ('\u09aa', '\u09b0'),
+        ('\u09b2', '\u09b2'), ('\u09b6', '\u09b9'),
+        ('\u09bc', '\u09bc'), ('\u09bd', '\u09bd'),
+        ('\u09be', '\u09c0'), ('\u09c1', '\u09c4'),
+        ('\u09c7', '\u09c8'), ('\u09cb', '\u09cc'),
+        ('\u09cd', '\u09cd'), ('\u09ce', '\u09ce'),
+        ('\u09d7', '\u09d7'), ('\u09dc', '\u09dd'),
+        ('\u09df', '\u09e1'), ('\u09e2', '\u09e3'),
+        ('\u09e6', '\u09ef'), ('\u09f0', '\u09f1'),
+        ('\u0a01', '\u0a02'), ('\u0a03', '\u0a03'),
+        ('\u0a05', '\u0a0a'), ('\u0a0f', '\u0a10'),
+        ('\u0a13', '\u0a28'), ('\u0a2a', '\u0a30'),
+        ('\u0a32', '\u0a33'), ('\u0a35', '\u0a36'),
+        ('\u0a38', '\u0a39'), ('\u0a3c', '\u0a3c'),
+        ('\u0a3e', '\u0a40'), ('\u0a41', '\u0a42'),
+        ('\u0a47', '\u0a48'), ('\u0a4b', '\u0a4d'),
+        ('\u0a51', '\u0a51'), ('\u0a59', '\u0a5c'),
+        ('\u0a5e', '\u0a5e'), ('\u0a66', '\u0a6f'),
+        ('\u0a70', '\u0a71'), ('\u0a72', '\u0a74'),
+        ('\u0a75', '\u0a75'), ('\u0a81', '\u0a82'),
+        ('\u0a83', '\u0a83'), ('\u0a85', '\u0a8d'),
+        ('\u0a8f', '\u0a91'), ('\u0a93', '\u0aa8'),
+        ('\u0aaa', '\u0ab0'), ('\u0ab2', '\u0ab3'),
+        ('\u0ab5', '\u0ab9'), ('\u0abc', '\u0abc'),
+        ('\u0abd', '\u0abd'), ('\u0abe', '\u0ac0'),
+        ('\u0ac1', '\u0ac5'), ('\u0ac7', '\u0ac8'),
+        ('\u0ac9', '\u0ac9'), ('\u0acb', '\u0acc'),
+        ('\u0acd', '\u0acd'), ('\u0ad0', '\u0ad0'),
+        ('\u0ae0', '\u0ae1'), ('\u0ae2', '\u0ae3'),
+        ('\u0ae6', '\u0aef'), ('\u0b01', '\u0b01'),
+        ('\u0b02', '\u0b03'), ('\u0b05', '\u0b0c'),
+        ('\u0b0f', '\u0b10'), ('\u0b13', '\u0b28'),
+        ('\u0b2a', '\u0b30'), ('\u0b32', '\u0b33'),
+        ('\u0b35', '\u0b39'), ('\u0b3c', '\u0b3c'),
+        ('\u0b3d', '\u0b3d'), ('\u0b3e', '\u0b3e'),
+        ('\u0b3f', '\u0b3f'), ('\u0b40', '\u0b40'),
+        ('\u0b41', '\u0b44'), ('\u0b47', '\u0b48'),
+        ('\u0b4b', '\u0b4c'), ('\u0b4d', '\u0b4d'),
+        ('\u0b56', '\u0b56'), ('\u0b57', '\u0b57'),
+        ('\u0b5c', '\u0b5d'), ('\u0b5f', '\u0b61'),
+        ('\u0b62', '\u0b63'), ('\u0b66', '\u0b6f'),
         ('\u0b71', '\u0b71'), ('\u0b82', '\u0b82'),
         ('\u0b83', '\u0b83'), ('\u0b85', '\u0b8a'),
         ('\u0b8e', '\u0b90'), ('\u0b92', '\u0b95'),
@@ -4305,261 +4309,262 @@ pub fn Alphabetic(c: char) -> bool {
         ('\u19b0', '\u19c0'), ('\u19c1', '\u19c7'),
         ('\u19c8', '\u19c9'), ('\u19d0', '\u19d9'),
         ('\u19da', '\u19da'), ('\u1a00', '\u1a16'),
-        ('\u1a17', '\u1a18'), ('\u1a19', '\u1a1b'),
-        ('\u1a20', '\u1a54'), ('\u1a55', '\u1a55'),
-        ('\u1a56', '\u1a56'), ('\u1a57', '\u1a57'),
-        ('\u1a58', '\u1a5e'), ('\u1a60', '\u1a60'),
-        ('\u1a61', '\u1a61'), ('\u1a62', '\u1a62'),
-        ('\u1a63', '\u1a64'), ('\u1a65', '\u1a6c'),
-        ('\u1a6d', '\u1a72'), ('\u1a73', '\u1a7c'),
-        ('\u1a7f', '\u1a7f'), ('\u1a80', '\u1a89'),
-        ('\u1a90', '\u1a99'), ('\u1aa7', '\u1aa7'),
-        ('\u1b00', '\u1b03'), ('\u1b04', '\u1b04'),
-        ('\u1b05', '\u1b33'), ('\u1b34', '\u1b34'),
-        ('\u1b35', '\u1b35'), ('\u1b36', '\u1b3a'),
-        ('\u1b3b', '\u1b3b'), ('\u1b3c', '\u1b3c'),
-        ('\u1b3d', '\u1b41'), ('\u1b42', '\u1b42'),
-        ('\u1b43', '\u1b44'), ('\u1b45', '\u1b4b'),
-        ('\u1b50', '\u1b59'), ('\u1b6b', '\u1b73'),
-        ('\u1b80', '\u1b81'), ('\u1b82', '\u1b82'),
-        ('\u1b83', '\u1ba0'), ('\u1ba1', '\u1ba1'),
-        ('\u1ba2', '\u1ba5'), ('\u1ba6', '\u1ba7'),
-        ('\u1ba8', '\u1ba9'), ('\u1baa', '\u1baa'),
-        ('\u1bab', '\u1bab'), ('\u1bac', '\u1bad'),
-        ('\u1bae', '\u1baf'), ('\u1bb0', '\u1bb9'),
-        ('\u1bba', '\u1be5'), ('\u1be6', '\u1be6'),
-        ('\u1be7', '\u1be7'), ('\u1be8', '\u1be9'),
-        ('\u1bea', '\u1bec'), ('\u1bed', '\u1bed'),
-        ('\u1bee', '\u1bee'), ('\u1bef', '\u1bf1'),
-        ('\u1bf2', '\u1bf3'), ('\u1c00', '\u1c23'),
-        ('\u1c24', '\u1c2b'), ('\u1c2c', '\u1c33'),
-        ('\u1c34', '\u1c35'), ('\u1c36', '\u1c37'),
-        ('\u1c40', '\u1c49'), ('\u1c4d', '\u1c4f'),
-        ('\u1c50', '\u1c59'), ('\u1c5a', '\u1c77'),
-        ('\u1c78', '\u1c7d'), ('\u1cd0', '\u1cd2'),
-        ('\u1cd4', '\u1ce0'), ('\u1ce1', '\u1ce1'),
-        ('\u1ce2', '\u1ce8'), ('\u1ce9', '\u1cec'),
-        ('\u1ced', '\u1ced'), ('\u1cee', '\u1cf1'),
-        ('\u1cf2', '\u1cf3'), ('\u1cf4', '\u1cf4'),
-        ('\u1cf5', '\u1cf6'), ('\u1d00', '\u1d2b'),
-        ('\u1d2c', '\u1d6a'), ('\u1d6b', '\u1d77'),
-        ('\u1d78', '\u1d78'), ('\u1d79', '\u1d9a'),
-        ('\u1d9b', '\u1dbf'), ('\u1dc0', '\u1de6'),
-        ('\u1dfc', '\u1dff'), ('\u1e00', '\u1f15'),
-        ('\u1f18', '\u1f1d'), ('\u1f20', '\u1f45'),
-        ('\u1f48', '\u1f4d'), ('\u1f50', '\u1f57'),
-        ('\u1f59', '\u1f59'), ('\u1f5b', '\u1f5b'),
-        ('\u1f5d', '\u1f5d'), ('\u1f5f', '\u1f7d'),
-        ('\u1f80', '\u1fb4'), ('\u1fb6', '\u1fbc'),
-        ('\u1fbe', '\u1fbe'), ('\u1fc2', '\u1fc4'),
-        ('\u1fc6', '\u1fcc'), ('\u1fd0', '\u1fd3'),
-        ('\u1fd6', '\u1fdb'), ('\u1fe0', '\u1fec'),
-        ('\u1ff2', '\u1ff4'), ('\u1ff6', '\u1ffc'),
-        ('\u203f', '\u2040'), ('\u2054', '\u2054'),
-        ('\u2071', '\u2071'), ('\u207f', '\u207f'),
-        ('\u2090', '\u209c'), ('\u20d0', '\u20dc'),
-        ('\u20e1', '\u20e1'), ('\u20e5', '\u20f0'),
-        ('\u2102', '\u2102'), ('\u2107', '\u2107'),
-        ('\u210a', '\u2113'), ('\u2115', '\u2115'),
-        ('\u2118', '\u2118'), ('\u2119', '\u211d'),
-        ('\u2124', '\u2124'), ('\u2126', '\u2126'),
-        ('\u2128', '\u2128'), ('\u212a', '\u212d'),
-        ('\u212e', '\u212e'), ('\u212f', '\u2134'),
-        ('\u2135', '\u2138'), ('\u2139', '\u2139'),
-        ('\u213c', '\u213f'), ('\u2145', '\u2149'),
-        ('\u214e', '\u214e'), ('\u2160', '\u2182'),
-        ('\u2183', '\u2184'), ('\u2185', '\u2188'),
-        ('\u2c00', '\u2c2e'), ('\u2c30', '\u2c5e'),
-        ('\u2c60', '\u2c7b'), ('\u2c7c', '\u2c7d'),
-        ('\u2c7e', '\u2ce4'), ('\u2ceb', '\u2cee'),
-        ('\u2cef', '\u2cf1'), ('\u2cf2', '\u2cf3'),
-        ('\u2d00', '\u2d25'), ('\u2d27', '\u2d27'),
-        ('\u2d2d', '\u2d2d'), ('\u2d30', '\u2d67'),
-        ('\u2d6f', '\u2d6f'), ('\u2d7f', '\u2d7f'),
-        ('\u2d80', '\u2d96'), ('\u2da0', '\u2da6'),
-        ('\u2da8', '\u2dae'), ('\u2db0', '\u2db6'),
-        ('\u2db8', '\u2dbe'), ('\u2dc0', '\u2dc6'),
-        ('\u2dc8', '\u2dce'), ('\u2dd0', '\u2dd6'),
-        ('\u2dd8', '\u2dde'), ('\u2de0', '\u2dff'),
-        ('\u3005', '\u3005'), ('\u3006', '\u3006'),
-        ('\u3007', '\u3007'), ('\u3021', '\u3029'),
-        ('\u302a', '\u302d'), ('\u302e', '\u302f'),
-        ('\u3031', '\u3035'), ('\u3038', '\u303a'),
-        ('\u303b', '\u303b'), ('\u303c', '\u303c'),
-        ('\u3041', '\u3096'), ('\u3099', '\u309a'),
-        ('\u309d', '\u309e'), ('\u309f', '\u309f'),
-        ('\u30a1', '\u30fa'), ('\u30fc', '\u30fe'),
-        ('\u30ff', '\u30ff'), ('\u3105', '\u312d'),
-        ('\u3131', '\u318e'), ('\u31a0', '\u31ba'),
-        ('\u31f0', '\u31ff'), ('\u3400', '\u4db5'),
-        ('\u4e00', '\u9fcc'), ('\ua000', '\ua014'),
-        ('\ua015', '\ua015'), ('\ua016', '\ua48c'),
-        ('\ua4d0', '\ua4f7'), ('\ua4f8', '\ua4fd'),
-        ('\ua500', '\ua60b'), ('\ua60c', '\ua60c'),
-        ('\ua610', '\ua61f'), ('\ua620', '\ua629'),
-        ('\ua62a', '\ua62b'), ('\ua640', '\ua66d'),
-        ('\ua66e', '\ua66e'), ('\ua66f', '\ua66f'),
-        ('\ua674', '\ua67d'), ('\ua67f', '\ua67f'),
-        ('\ua680', '\ua697'), ('\ua69f', '\ua69f'),
-        ('\ua6a0', '\ua6e5'), ('\ua6e6', '\ua6ef'),
-        ('\ua6f0', '\ua6f1'), ('\ua717', '\ua71f'),
-        ('\ua722', '\ua76f'), ('\ua770', '\ua770'),
-        ('\ua771', '\ua787'), ('\ua788', '\ua788'),
-        ('\ua78b', '\ua78e'), ('\ua790', '\ua793'),
-        ('\ua7a0', '\ua7aa'), ('\ua7f8', '\ua7f9'),
-        ('\ua7fa', '\ua7fa'), ('\ua7fb', '\ua801'),
-        ('\ua802', '\ua802'), ('\ua803', '\ua805'),
-        ('\ua806', '\ua806'), ('\ua807', '\ua80a'),
-        ('\ua80b', '\ua80b'), ('\ua80c', '\ua822'),
-        ('\ua823', '\ua824'), ('\ua825', '\ua826'),
-        ('\ua827', '\ua827'), ('\ua840', '\ua873'),
-        ('\ua880', '\ua881'), ('\ua882', '\ua8b3'),
-        ('\ua8b4', '\ua8c3'), ('\ua8c4', '\ua8c4'),
-        ('\ua8d0', '\ua8d9'), ('\ua8e0', '\ua8f1'),
-        ('\ua8f2', '\ua8f7'), ('\ua8fb', '\ua8fb'),
-        ('\ua900', '\ua909'), ('\ua90a', '\ua925'),
-        ('\ua926', '\ua92d'), ('\ua930', '\ua946'),
-        ('\ua947', '\ua951'), ('\ua952', '\ua953'),
-        ('\ua960', '\ua97c'), ('\ua980', '\ua982'),
-        ('\ua983', '\ua983'), ('\ua984', '\ua9b2'),
-        ('\ua9b3', '\ua9b3'), ('\ua9b4', '\ua9b5'),
-        ('\ua9b6', '\ua9b9'), ('\ua9ba', '\ua9bb'),
-        ('\ua9bc', '\ua9bc'), ('\ua9bd', '\ua9c0'),
-        ('\ua9cf', '\ua9cf'), ('\ua9d0', '\ua9d9'),
-        ('\uaa00', '\uaa28'), ('\uaa29', '\uaa2e'),
-        ('\uaa2f', '\uaa30'), ('\uaa31', '\uaa32'),
-        ('\uaa33', '\uaa34'), ('\uaa35', '\uaa36'),
-        ('\uaa40', '\uaa42'), ('\uaa43', '\uaa43'),
-        ('\uaa44', '\uaa4b'), ('\uaa4c', '\uaa4c'),
-        ('\uaa4d', '\uaa4d'), ('\uaa50', '\uaa59'),
-        ('\uaa60', '\uaa6f'), ('\uaa70', '\uaa70'),
-        ('\uaa71', '\uaa76'), ('\uaa7a', '\uaa7a'),
-        ('\uaa7b', '\uaa7b'), ('\uaa80', '\uaaaf'),
-        ('\uaab0', '\uaab0'), ('\uaab1', '\uaab1'),
-        ('\uaab2', '\uaab4'), ('\uaab5', '\uaab6'),
-        ('\uaab7', '\uaab8'), ('\uaab9', '\uaabd'),
-        ('\uaabe', '\uaabf'), ('\uaac0', '\uaac0'),
-        ('\uaac1', '\uaac1'), ('\uaac2', '\uaac2'),
-        ('\uaadb', '\uaadc'), ('\uaadd', '\uaadd'),
-        ('\uaae0', '\uaaea'), ('\uaaeb', '\uaaeb'),
-        ('\uaaec', '\uaaed'), ('\uaaee', '\uaaef'),
-        ('\uaaf2', '\uaaf2'), ('\uaaf3', '\uaaf4'),
-        ('\uaaf5', '\uaaf5'), ('\uaaf6', '\uaaf6'),
-        ('\uab01', '\uab06'), ('\uab09', '\uab0e'),
-        ('\uab11', '\uab16'), ('\uab20', '\uab26'),
-        ('\uab28', '\uab2e'), ('\uabc0', '\uabe2'),
-        ('\uabe3', '\uabe4'), ('\uabe5', '\uabe5'),
-        ('\uabe6', '\uabe7'), ('\uabe8', '\uabe8'),
-        ('\uabe9', '\uabea'), ('\uabec', '\uabec'),
-        ('\uabed', '\uabed'), ('\uabf0', '\uabf9'),
-        ('\uac00', '\ud7a3'), ('\ud7b0', '\ud7c6'),
-        ('\ud7cb', '\ud7fb'), ('\uf900', '\ufa6d'),
-        ('\ufa70', '\ufad9'), ('\ufb00', '\ufb06'),
-        ('\ufb13', '\ufb17'), ('\ufb1d', '\ufb1d'),
-        ('\ufb1e', '\ufb1e'), ('\ufb1f', '\ufb28'),
-        ('\ufb2a', '\ufb36'), ('\ufb38', '\ufb3c'),
-        ('\ufb3e', '\ufb3e'), ('\ufb40', '\ufb41'),
-        ('\ufb43', '\ufb44'), ('\ufb46', '\ufbb1'),
-        ('\ufbd3', '\ufc5d'), ('\ufc64', '\ufd3d'),
-        ('\ufd50', '\ufd8f'), ('\ufd92', '\ufdc7'),
-        ('\ufdf0', '\ufdf9'), ('\ufe00', '\ufe0f'),
-        ('\ufe20', '\ufe26'), ('\ufe33', '\ufe34'),
-        ('\ufe4d', '\ufe4f'), ('\ufe71', '\ufe71'),
-        ('\ufe73', '\ufe73'), ('\ufe77', '\ufe77'),
-        ('\ufe79', '\ufe79'), ('\ufe7b', '\ufe7b'),
-        ('\ufe7d', '\ufe7d'), ('\ufe7f', '\ufefc'),
-        ('\uff10', '\uff19'), ('\uff21', '\uff3a'),
-        ('\uff3f', '\uff3f'), ('\uff41', '\uff5a'),
-        ('\uff66', '\uff6f'), ('\uff70', '\uff70'),
-        ('\uff71', '\uff9d'), ('\uff9e', '\uff9f'),
-        ('\uffa0', '\uffbe'), ('\uffc2', '\uffc7'),
-        ('\uffca', '\uffcf'), ('\uffd2', '\uffd7'),
-        ('\uffda', '\uffdc'), ('\U00010000', '\U0001000b'),
-        ('\U0001000d', '\U00010026'), ('\U00010028', '\U0001003a'),
-        ('\U0001003c', '\U0001003d'), ('\U0001003f', '\U0001004d'),
-        ('\U00010050', '\U0001005d'), ('\U00010080', '\U000100fa'),
-        ('\U00010140', '\U00010174'), ('\U000101fd', '\U000101fd'),
-        ('\U00010280', '\U0001029c'), ('\U000102a0', '\U000102d0'),
-        ('\U00010300', '\U0001031e'), ('\U00010330', '\U00010340'),
-        ('\U00010341', '\U00010341'), ('\U00010342', '\U00010349'),
-        ('\U0001034a', '\U0001034a'), ('\U00010380', '\U0001039d'),
-        ('\U000103a0', '\U000103c3'), ('\U000103c8', '\U000103cf'),
-        ('\U000103d1', '\U000103d5'), ('\U00010400', '\U0001044f'),
-        ('\U00010450', '\U0001049d'), ('\U000104a0', '\U000104a9'),
-        ('\U00010800', '\U00010805'), ('\U00010808', '\U00010808'),
-        ('\U0001080a', '\U00010835'), ('\U00010837', '\U00010838'),
-        ('\U0001083c', '\U0001083c'), ('\U0001083f', '\U00010855'),
-        ('\U00010900', '\U00010915'), ('\U00010920', '\U00010939'),
-        ('\U00010980', '\U000109b7'), ('\U000109be', '\U000109bf'),
-        ('\U00010a00', '\U00010a00'), ('\U00010a01', '\U00010a03'),
-        ('\U00010a05', '\U00010a06'), ('\U00010a0c', '\U00010a0f'),
-        ('\U00010a10', '\U00010a13'), ('\U00010a15', '\U00010a17'),
-        ('\U00010a19', '\U00010a33'), ('\U00010a38', '\U00010a3a'),
-        ('\U00010a3f', '\U00010a3f'), ('\U00010a60', '\U00010a7c'),
-        ('\U00010b00', '\U00010b35'), ('\U00010b40', '\U00010b55'),
-        ('\U00010b60', '\U00010b72'), ('\U00010c00', '\U00010c48'),
-        ('\U00011000', '\U00011000'), ('\U00011001', '\U00011001'),
-        ('\U00011002', '\U00011002'), ('\U00011003', '\U00011037'),
-        ('\U00011038', '\U00011046'), ('\U00011066', '\U0001106f'),
-        ('\U00011080', '\U00011081'), ('\U00011082', '\U00011082'),
-        ('\U00011083', '\U000110af'), ('\U000110b0', '\U000110b2'),
-        ('\U000110b3', '\U000110b6'), ('\U000110b7', '\U000110b8'),
-        ('\U000110b9', '\U000110ba'), ('\U000110d0', '\U000110e8'),
-        ('\U000110f0', '\U000110f9'), ('\U00011100', '\U00011102'),
-        ('\U00011103', '\U00011126'), ('\U00011127', '\U0001112b'),
-        ('\U0001112c', '\U0001112c'), ('\U0001112d', '\U00011134'),
-        ('\U00011136', '\U0001113f'), ('\U00011180', '\U00011181'),
-        ('\U00011182', '\U00011182'), ('\U00011183', '\U000111b2'),
-        ('\U000111b3', '\U000111b5'), ('\U000111b6', '\U000111be'),
-        ('\U000111bf', '\U000111c0'), ('\U000111c1', '\U000111c4'),
-        ('\U000111d0', '\U000111d9'), ('\U00011680', '\U000116aa'),
-        ('\U000116ab', '\U000116ab'), ('\U000116ac', '\U000116ac'),
-        ('\U000116ad', '\U000116ad'), ('\U000116ae', '\U000116af'),
-        ('\U000116b0', '\U000116b5'), ('\U000116b6', '\U000116b6'),
-        ('\U000116b7', '\U000116b7'), ('\U000116c0', '\U000116c9'),
-        ('\U00012000', '\U0001236e'), ('\U00012400', '\U00012462'),
-        ('\U00013000', '\U0001342e'), ('\U00016800', '\U00016a38'),
-        ('\U00016f00', '\U00016f44'), ('\U00016f50', '\U00016f50'),
-        ('\U00016f51', '\U00016f7e'), ('\U00016f8f', '\U00016f92'),
-        ('\U00016f93', '\U00016f9f'), ('\U0001b000', '\U0001b001'),
-        ('\U0001d165', '\U0001d166'), ('\U0001d167', '\U0001d169'),
-        ('\U0001d16d', '\U0001d172'), ('\U0001d17b', '\U0001d182'),
-        ('\U0001d185', '\U0001d18b'), ('\U0001d1aa', '\U0001d1ad'),
-        ('\U0001d242', '\U0001d244'), ('\U0001d400', '\U0001d454'),
-        ('\U0001d456', '\U0001d49c'), ('\U0001d49e', '\U0001d49f'),
-        ('\U0001d4a2', '\U0001d4a2'), ('\U0001d4a5', '\U0001d4a6'),
-        ('\U0001d4a9', '\U0001d4ac'), ('\U0001d4ae', '\U0001d4b9'),
-        ('\U0001d4bb', '\U0001d4bb'), ('\U0001d4bd', '\U0001d4c3'),
-        ('\U0001d4c5', '\U0001d505'), ('\U0001d507', '\U0001d50a'),
-        ('\U0001d50d', '\U0001d514'), ('\U0001d516', '\U0001d51c'),
-        ('\U0001d51e', '\U0001d539'), ('\U0001d53b', '\U0001d53e'),
-        ('\U0001d540', '\U0001d544'), ('\U0001d546', '\U0001d546'),
-        ('\U0001d54a', '\U0001d550'), ('\U0001d552', '\U0001d6a5'),
-        ('\U0001d6a8', '\U0001d6c0'), ('\U0001d6c2', '\U0001d6da'),
-        ('\U0001d6dc', '\U0001d6fa'), ('\U0001d6fc', '\U0001d714'),
-        ('\U0001d716', '\U0001d734'), ('\U0001d736', '\U0001d74e'),
-        ('\U0001d750', '\U0001d76e'), ('\U0001d770', '\U0001d788'),
-        ('\U0001d78a', '\U0001d7a8'), ('\U0001d7aa', '\U0001d7c2'),
-        ('\U0001d7c4', '\U0001d7cb'), ('\U0001d7ce', '\U0001d7ff'),
-        ('\U0001ee00', '\U0001ee03'), ('\U0001ee05', '\U0001ee1f'),
-        ('\U0001ee21', '\U0001ee22'), ('\U0001ee24', '\U0001ee24'),
-        ('\U0001ee27', '\U0001ee27'), ('\U0001ee29', '\U0001ee32'),
-        ('\U0001ee34', '\U0001ee37'), ('\U0001ee39', '\U0001ee39'),
-        ('\U0001ee3b', '\U0001ee3b'), ('\U0001ee42', '\U0001ee42'),
-        ('\U0001ee47', '\U0001ee47'), ('\U0001ee49', '\U0001ee49'),
-        ('\U0001ee4b', '\U0001ee4b'), ('\U0001ee4d', '\U0001ee4f'),
-        ('\U0001ee51', '\U0001ee52'), ('\U0001ee54', '\U0001ee54'),
-        ('\U0001ee57', '\U0001ee57'), ('\U0001ee59', '\U0001ee59'),
-        ('\U0001ee5b', '\U0001ee5b'), ('\U0001ee5d', '\U0001ee5d'),
-        ('\U0001ee5f', '\U0001ee5f'), ('\U0001ee61', '\U0001ee62'),
-        ('\U0001ee64', '\U0001ee64'), ('\U0001ee67', '\U0001ee6a'),
-        ('\U0001ee6c', '\U0001ee72'), ('\U0001ee74', '\U0001ee77'),
-        ('\U0001ee79', '\U0001ee7c'), ('\U0001ee7e', '\U0001ee7e'),
-        ('\U0001ee80', '\U0001ee89'), ('\U0001ee8b', '\U0001ee9b'),
-        ('\U0001eea1', '\U0001eea3'), ('\U0001eea5', '\U0001eea9'),
-        ('\U0001eeab', '\U0001eebb'), ('\U00020000', '\U0002a6d6'),
-        ('\U0002a700', '\U0002b734'), ('\U0002b740', '\U0002b81d'),
-        ('\U0002f800', '\U0002fa1d'), ('\U000e0100', '\U000e01ef')
+        ('\u1a17', '\u1a18'), ('\u1a19', '\u1a1a'),
+        ('\u1a1b', '\u1a1b'), ('\u1a20', '\u1a54'),
+        ('\u1a55', '\u1a55'), ('\u1a56', '\u1a56'),
+        ('\u1a57', '\u1a57'), ('\u1a58', '\u1a5e'),
+        ('\u1a60', '\u1a60'), ('\u1a61', '\u1a61'),
+        ('\u1a62', '\u1a62'), ('\u1a63', '\u1a64'),
+        ('\u1a65', '\u1a6c'), ('\u1a6d', '\u1a72'),
+        ('\u1a73', '\u1a7c'), ('\u1a7f', '\u1a7f'),
+        ('\u1a80', '\u1a89'), ('\u1a90', '\u1a99'),
+        ('\u1aa7', '\u1aa7'), ('\u1b00', '\u1b03'),
+        ('\u1b04', '\u1b04'), ('\u1b05', '\u1b33'),
+        ('\u1b34', '\u1b34'), ('\u1b35', '\u1b35'),
+        ('\u1b36', '\u1b3a'), ('\u1b3b', '\u1b3b'),
+        ('\u1b3c', '\u1b3c'), ('\u1b3d', '\u1b41'),
+        ('\u1b42', '\u1b42'), ('\u1b43', '\u1b44'),
+        ('\u1b45', '\u1b4b'), ('\u1b50', '\u1b59'),
+        ('\u1b6b', '\u1b73'), ('\u1b80', '\u1b81'),
+        ('\u1b82', '\u1b82'), ('\u1b83', '\u1ba0'),
+        ('\u1ba1', '\u1ba1'), ('\u1ba2', '\u1ba5'),
+        ('\u1ba6', '\u1ba7'), ('\u1ba8', '\u1ba9'),
+        ('\u1baa', '\u1baa'), ('\u1bab', '\u1bab'),
+        ('\u1bac', '\u1bad'), ('\u1bae', '\u1baf'),
+        ('\u1bb0', '\u1bb9'), ('\u1bba', '\u1be5'),
+        ('\u1be6', '\u1be6'), ('\u1be7', '\u1be7'),
+        ('\u1be8', '\u1be9'), ('\u1bea', '\u1bec'),
+        ('\u1bed', '\u1bed'), ('\u1bee', '\u1bee'),
+        ('\u1bef', '\u1bf1'), ('\u1bf2', '\u1bf3'),
+        ('\u1c00', '\u1c23'), ('\u1c24', '\u1c2b'),
+        ('\u1c2c', '\u1c33'), ('\u1c34', '\u1c35'),
+        ('\u1c36', '\u1c37'), ('\u1c40', '\u1c49'),
+        ('\u1c4d', '\u1c4f'), ('\u1c50', '\u1c59'),
+        ('\u1c5a', '\u1c77'), ('\u1c78', '\u1c7d'),
+        ('\u1cd0', '\u1cd2'), ('\u1cd4', '\u1ce0'),
+        ('\u1ce1', '\u1ce1'), ('\u1ce2', '\u1ce8'),
+        ('\u1ce9', '\u1cec'), ('\u1ced', '\u1ced'),
+        ('\u1cee', '\u1cf1'), ('\u1cf2', '\u1cf3'),
+        ('\u1cf4', '\u1cf4'), ('\u1cf5', '\u1cf6'),
+        ('\u1d00', '\u1d2b'), ('\u1d2c', '\u1d6a'),
+        ('\u1d6b', '\u1d77'), ('\u1d78', '\u1d78'),
+        ('\u1d79', '\u1d9a'), ('\u1d9b', '\u1dbf'),
+        ('\u1dc0', '\u1de6'), ('\u1dfc', '\u1dff'),
+        ('\u1e00', '\u1f15'), ('\u1f18', '\u1f1d'),
+        ('\u1f20', '\u1f45'), ('\u1f48', '\u1f4d'),
+        ('\u1f50', '\u1f57'), ('\u1f59', '\u1f59'),
+        ('\u1f5b', '\u1f5b'), ('\u1f5d', '\u1f5d'),
+        ('\u1f5f', '\u1f7d'), ('\u1f80', '\u1fb4'),
+        ('\u1fb6', '\u1fbc'), ('\u1fbe', '\u1fbe'),
+        ('\u1fc2', '\u1fc4'), ('\u1fc6', '\u1fcc'),
+        ('\u1fd0', '\u1fd3'), ('\u1fd6', '\u1fdb'),
+        ('\u1fe0', '\u1fec'), ('\u1ff2', '\u1ff4'),
+        ('\u1ff6', '\u1ffc'), ('\u203f', '\u2040'),
+        ('\u2054', '\u2054'), ('\u2071', '\u2071'),
+        ('\u207f', '\u207f'), ('\u2090', '\u209c'),
+        ('\u20d0', '\u20dc'), ('\u20e1', '\u20e1'),
+        ('\u20e5', '\u20f0'), ('\u2102', '\u2102'),
+        ('\u2107', '\u2107'), ('\u210a', '\u2113'),
+        ('\u2115', '\u2115'), ('\u2118', '\u2118'),
+        ('\u2119', '\u211d'), ('\u2124', '\u2124'),
+        ('\u2126', '\u2126'), ('\u2128', '\u2128'),
+        ('\u212a', '\u212d'), ('\u212e', '\u212e'),
+        ('\u212f', '\u2134'), ('\u2135', '\u2138'),
+        ('\u2139', '\u2139'), ('\u213c', '\u213f'),
+        ('\u2145', '\u2149'), ('\u214e', '\u214e'),
+        ('\u2160', '\u2182'), ('\u2183', '\u2184'),
+        ('\u2185', '\u2188'), ('\u2c00', '\u2c2e'),
+        ('\u2c30', '\u2c5e'), ('\u2c60', '\u2c7b'),
+        ('\u2c7c', '\u2c7d'), ('\u2c7e', '\u2ce4'),
+        ('\u2ceb', '\u2cee'), ('\u2cef', '\u2cf1'),
+        ('\u2cf2', '\u2cf3'), ('\u2d00', '\u2d25'),
+        ('\u2d27', '\u2d27'), ('\u2d2d', '\u2d2d'),
+        ('\u2d30', '\u2d67'), ('\u2d6f', '\u2d6f'),
+        ('\u2d7f', '\u2d7f'), ('\u2d80', '\u2d96'),
+        ('\u2da0', '\u2da6'), ('\u2da8', '\u2dae'),
+        ('\u2db0', '\u2db6'), ('\u2db8', '\u2dbe'),
+        ('\u2dc0', '\u2dc6'), ('\u2dc8', '\u2dce'),
+        ('\u2dd0', '\u2dd6'), ('\u2dd8', '\u2dde'),
+        ('\u2de0', '\u2dff'), ('\u3005', '\u3005'),
+        ('\u3006', '\u3006'), ('\u3007', '\u3007'),
+        ('\u3021', '\u3029'), ('\u302a', '\u302d'),
+        ('\u302e', '\u302f'), ('\u3031', '\u3035'),
+        ('\u3038', '\u303a'), ('\u303b', '\u303b'),
+        ('\u303c', '\u303c'), ('\u3041', '\u3096'),
+        ('\u3099', '\u309a'), ('\u309d', '\u309e'),
+        ('\u309f', '\u309f'), ('\u30a1', '\u30fa'),
+        ('\u30fc', '\u30fe'), ('\u30ff', '\u30ff'),
+        ('\u3105', '\u312d'), ('\u3131', '\u318e'),
+        ('\u31a0', '\u31ba'), ('\u31f0', '\u31ff'),
+        ('\u3400', '\u4db5'), ('\u4e00', '\u9fcc'),
+        ('\ua000', '\ua014'), ('\ua015', '\ua015'),
+        ('\ua016', '\ua48c'), ('\ua4d0', '\ua4f7'),
+        ('\ua4f8', '\ua4fd'), ('\ua500', '\ua60b'),
+        ('\ua60c', '\ua60c'), ('\ua610', '\ua61f'),
+        ('\ua620', '\ua629'), ('\ua62a', '\ua62b'),
+        ('\ua640', '\ua66d'), ('\ua66e', '\ua66e'),
+        ('\ua66f', '\ua66f'), ('\ua674', '\ua67d'),
+        ('\ua67f', '\ua67f'), ('\ua680', '\ua697'),
+        ('\ua69f', '\ua69f'), ('\ua6a0', '\ua6e5'),
+        ('\ua6e6', '\ua6ef'), ('\ua6f0', '\ua6f1'),
+        ('\ua717', '\ua71f'), ('\ua722', '\ua76f'),
+        ('\ua770', '\ua770'), ('\ua771', '\ua787'),
+        ('\ua788', '\ua788'), ('\ua78b', '\ua78e'),
+        ('\ua790', '\ua793'), ('\ua7a0', '\ua7aa'),
+        ('\ua7f8', '\ua7f9'), ('\ua7fa', '\ua7fa'),
+        ('\ua7fb', '\ua801'), ('\ua802', '\ua802'),
+        ('\ua803', '\ua805'), ('\ua806', '\ua806'),
+        ('\ua807', '\ua80a'), ('\ua80b', '\ua80b'),
+        ('\ua80c', '\ua822'), ('\ua823', '\ua824'),
+        ('\ua825', '\ua826'), ('\ua827', '\ua827'),
+        ('\ua840', '\ua873'), ('\ua880', '\ua881'),
+        ('\ua882', '\ua8b3'), ('\ua8b4', '\ua8c3'),
+        ('\ua8c4', '\ua8c4'), ('\ua8d0', '\ua8d9'),
+        ('\ua8e0', '\ua8f1'), ('\ua8f2', '\ua8f7'),
+        ('\ua8fb', '\ua8fb'), ('\ua900', '\ua909'),
+        ('\ua90a', '\ua925'), ('\ua926', '\ua92d'),
+        ('\ua930', '\ua946'), ('\ua947', '\ua951'),
+        ('\ua952', '\ua953'), ('\ua960', '\ua97c'),
+        ('\ua980', '\ua982'), ('\ua983', '\ua983'),
+        ('\ua984', '\ua9b2'), ('\ua9b3', '\ua9b3'),
+        ('\ua9b4', '\ua9b5'), ('\ua9b6', '\ua9b9'),
+        ('\ua9ba', '\ua9bb'), ('\ua9bc', '\ua9bc'),
+        ('\ua9bd', '\ua9c0'), ('\ua9cf', '\ua9cf'),
+        ('\ua9d0', '\ua9d9'), ('\uaa00', '\uaa28'),
+        ('\uaa29', '\uaa2e'), ('\uaa2f', '\uaa30'),
+        ('\uaa31', '\uaa32'), ('\uaa33', '\uaa34'),
+        ('\uaa35', '\uaa36'), ('\uaa40', '\uaa42'),
+        ('\uaa43', '\uaa43'), ('\uaa44', '\uaa4b'),
+        ('\uaa4c', '\uaa4c'), ('\uaa4d', '\uaa4d'),
+        ('\uaa50', '\uaa59'), ('\uaa60', '\uaa6f'),
+        ('\uaa70', '\uaa70'), ('\uaa71', '\uaa76'),
+        ('\uaa7a', '\uaa7a'), ('\uaa7b', '\uaa7b'),
+        ('\uaa80', '\uaaaf'), ('\uaab0', '\uaab0'),
+        ('\uaab1', '\uaab1'), ('\uaab2', '\uaab4'),
+        ('\uaab5', '\uaab6'), ('\uaab7', '\uaab8'),
+        ('\uaab9', '\uaabd'), ('\uaabe', '\uaabf'),
+        ('\uaac0', '\uaac0'), ('\uaac1', '\uaac1'),
+        ('\uaac2', '\uaac2'), ('\uaadb', '\uaadc'),
+        ('\uaadd', '\uaadd'), ('\uaae0', '\uaaea'),
+        ('\uaaeb', '\uaaeb'), ('\uaaec', '\uaaed'),
+        ('\uaaee', '\uaaef'), ('\uaaf2', '\uaaf2'),
+        ('\uaaf3', '\uaaf4'), ('\uaaf5', '\uaaf5'),
+        ('\uaaf6', '\uaaf6'), ('\uab01', '\uab06'),
+        ('\uab09', '\uab0e'), ('\uab11', '\uab16'),
+        ('\uab20', '\uab26'), ('\uab28', '\uab2e'),
+        ('\uabc0', '\uabe2'), ('\uabe3', '\uabe4'),
+        ('\uabe5', '\uabe5'), ('\uabe6', '\uabe7'),
+        ('\uabe8', '\uabe8'), ('\uabe9', '\uabea'),
+        ('\uabec', '\uabec'), ('\uabed', '\uabed'),
+        ('\uabf0', '\uabf9'), ('\uac00', '\ud7a3'),
+        ('\ud7b0', '\ud7c6'), ('\ud7cb', '\ud7fb'),
+        ('\uf900', '\ufa6d'), ('\ufa70', '\ufad9'),
+        ('\ufb00', '\ufb06'), ('\ufb13', '\ufb17'),
+        ('\ufb1d', '\ufb1d'), ('\ufb1e', '\ufb1e'),
+        ('\ufb1f', '\ufb28'), ('\ufb2a', '\ufb36'),
+        ('\ufb38', '\ufb3c'), ('\ufb3e', '\ufb3e'),
+        ('\ufb40', '\ufb41'), ('\ufb43', '\ufb44'),
+        ('\ufb46', '\ufbb1'), ('\ufbd3', '\ufc5d'),
+        ('\ufc64', '\ufd3d'), ('\ufd50', '\ufd8f'),
+        ('\ufd92', '\ufdc7'), ('\ufdf0', '\ufdf9'),
+        ('\ufe00', '\ufe0f'), ('\ufe20', '\ufe26'),
+        ('\ufe33', '\ufe34'), ('\ufe4d', '\ufe4f'),
+        ('\ufe71', '\ufe71'), ('\ufe73', '\ufe73'),
+        ('\ufe77', '\ufe77'), ('\ufe79', '\ufe79'),
+        ('\ufe7b', '\ufe7b'), ('\ufe7d', '\ufe7d'),
+        ('\ufe7f', '\ufefc'), ('\uff10', '\uff19'),
+        ('\uff21', '\uff3a'), ('\uff3f', '\uff3f'),
+        ('\uff41', '\uff5a'), ('\uff66', '\uff6f'),
+        ('\uff70', '\uff70'), ('\uff71', '\uff9d'),
+        ('\uff9e', '\uff9f'), ('\uffa0', '\uffbe'),
+        ('\uffc2', '\uffc7'), ('\uffca', '\uffcf'),
+        ('\uffd2', '\uffd7'), ('\uffda', '\uffdc'),
+        ('\U00010000', '\U0001000b'), ('\U0001000d', '\U00010026'),
+        ('\U00010028', '\U0001003a'), ('\U0001003c', '\U0001003d'),
+        ('\U0001003f', '\U0001004d'), ('\U00010050', '\U0001005d'),
+        ('\U00010080', '\U000100fa'), ('\U00010140', '\U00010174'),
+        ('\U000101fd', '\U000101fd'), ('\U00010280', '\U0001029c'),
+        ('\U000102a0', '\U000102d0'), ('\U00010300', '\U0001031e'),
+        ('\U00010330', '\U00010340'), ('\U00010341', '\U00010341'),
+        ('\U00010342', '\U00010349'), ('\U0001034a', '\U0001034a'),
+        ('\U00010380', '\U0001039d'), ('\U000103a0', '\U000103c3'),
+        ('\U000103c8', '\U000103cf'), ('\U000103d1', '\U000103d5'),
+        ('\U00010400', '\U0001044f'), ('\U00010450', '\U0001049d'),
+        ('\U000104a0', '\U000104a9'), ('\U00010800', '\U00010805'),
+        ('\U00010808', '\U00010808'), ('\U0001080a', '\U00010835'),
+        ('\U00010837', '\U00010838'), ('\U0001083c', '\U0001083c'),
+        ('\U0001083f', '\U00010855'), ('\U00010900', '\U00010915'),
+        ('\U00010920', '\U00010939'), ('\U00010980', '\U000109b7'),
+        ('\U000109be', '\U000109bf'), ('\U00010a00', '\U00010a00'),
+        ('\U00010a01', '\U00010a03'), ('\U00010a05', '\U00010a06'),
+        ('\U00010a0c', '\U00010a0f'), ('\U00010a10', '\U00010a13'),
+        ('\U00010a15', '\U00010a17'), ('\U00010a19', '\U00010a33'),
+        ('\U00010a38', '\U00010a3a'), ('\U00010a3f', '\U00010a3f'),
+        ('\U00010a60', '\U00010a7c'), ('\U00010b00', '\U00010b35'),
+        ('\U00010b40', '\U00010b55'), ('\U00010b60', '\U00010b72'),
+        ('\U00010c00', '\U00010c48'), ('\U00011000', '\U00011000'),
+        ('\U00011001', '\U00011001'), ('\U00011002', '\U00011002'),
+        ('\U00011003', '\U00011037'), ('\U00011038', '\U00011046'),
+        ('\U00011066', '\U0001106f'), ('\U00011080', '\U00011081'),
+        ('\U00011082', '\U00011082'), ('\U00011083', '\U000110af'),
+        ('\U000110b0', '\U000110b2'), ('\U000110b3', '\U000110b6'),
+        ('\U000110b7', '\U000110b8'), ('\U000110b9', '\U000110ba'),
+        ('\U000110d0', '\U000110e8'), ('\U000110f0', '\U000110f9'),
+        ('\U00011100', '\U00011102'), ('\U00011103', '\U00011126'),
+        ('\U00011127', '\U0001112b'), ('\U0001112c', '\U0001112c'),
+        ('\U0001112d', '\U00011134'), ('\U00011136', '\U0001113f'),
+        ('\U00011180', '\U00011181'), ('\U00011182', '\U00011182'),
+        ('\U00011183', '\U000111b2'), ('\U000111b3', '\U000111b5'),
+        ('\U000111b6', '\U000111be'), ('\U000111bf', '\U000111c0'),
+        ('\U000111c1', '\U000111c4'), ('\U000111d0', '\U000111d9'),
+        ('\U00011680', '\U000116aa'), ('\U000116ab', '\U000116ab'),
+        ('\U000116ac', '\U000116ac'), ('\U000116ad', '\U000116ad'),
+        ('\U000116ae', '\U000116af'), ('\U000116b0', '\U000116b5'),
+        ('\U000116b6', '\U000116b6'), ('\U000116b7', '\U000116b7'),
+        ('\U000116c0', '\U000116c9'), ('\U00012000', '\U0001236e'),
+        ('\U00012400', '\U00012462'), ('\U00013000', '\U0001342e'),
+        ('\U00016800', '\U00016a38'), ('\U00016f00', '\U00016f44'),
+        ('\U00016f50', '\U00016f50'), ('\U00016f51', '\U00016f7e'),
+        ('\U00016f8f', '\U00016f92'), ('\U00016f93', '\U00016f9f'),
+        ('\U0001b000', '\U0001b001'), ('\U0001d165', '\U0001d166'),
+        ('\U0001d167', '\U0001d169'), ('\U0001d16d', '\U0001d172'),
+        ('\U0001d17b', '\U0001d182'), ('\U0001d185', '\U0001d18b'),
+        ('\U0001d1aa', '\U0001d1ad'), ('\U0001d242', '\U0001d244'),
+        ('\U0001d400', '\U0001d454'), ('\U0001d456', '\U0001d49c'),
+        ('\U0001d49e', '\U0001d49f'), ('\U0001d4a2', '\U0001d4a2'),
+        ('\U0001d4a5', '\U0001d4a6'), ('\U0001d4a9', '\U0001d4ac'),
+        ('\U0001d4ae', '\U0001d4b9'), ('\U0001d4bb', '\U0001d4bb'),
+        ('\U0001d4bd', '\U0001d4c3'), ('\U0001d4c5', '\U0001d505'),
+        ('\U0001d507', '\U0001d50a'), ('\U0001d50d', '\U0001d514'),
+        ('\U0001d516', '\U0001d51c'), ('\U0001d51e', '\U0001d539'),
+        ('\U0001d53b', '\U0001d53e'), ('\U0001d540', '\U0001d544'),
+        ('\U0001d546', '\U0001d546'), ('\U0001d54a', '\U0001d550'),
+        ('\U0001d552', '\U0001d6a5'), ('\U0001d6a8', '\U0001d6c0'),
+        ('\U0001d6c2', '\U0001d6da'), ('\U0001d6dc', '\U0001d6fa'),
+        ('\U0001d6fc', '\U0001d714'), ('\U0001d716', '\U0001d734'),
+        ('\U0001d736', '\U0001d74e'), ('\U0001d750', '\U0001d76e'),
+        ('\U0001d770', '\U0001d788'), ('\U0001d78a', '\U0001d7a8'),
+        ('\U0001d7aa', '\U0001d7c2'), ('\U0001d7c4', '\U0001d7cb'),
+        ('\U0001d7ce', '\U0001d7ff'), ('\U0001ee00', '\U0001ee03'),
+        ('\U0001ee05', '\U0001ee1f'), ('\U0001ee21', '\U0001ee22'),
+        ('\U0001ee24', '\U0001ee24'), ('\U0001ee27', '\U0001ee27'),
+        ('\U0001ee29', '\U0001ee32'), ('\U0001ee34', '\U0001ee37'),
+        ('\U0001ee39', '\U0001ee39'), ('\U0001ee3b', '\U0001ee3b'),
+        ('\U0001ee42', '\U0001ee42'), ('\U0001ee47', '\U0001ee47'),
+        ('\U0001ee49', '\U0001ee49'), ('\U0001ee4b', '\U0001ee4b'),
+        ('\U0001ee4d', '\U0001ee4f'), ('\U0001ee51', '\U0001ee52'),
+        ('\U0001ee54', '\U0001ee54'), ('\U0001ee57', '\U0001ee57'),
+        ('\U0001ee59', '\U0001ee59'), ('\U0001ee5b', '\U0001ee5b'),
+        ('\U0001ee5d', '\U0001ee5d'), ('\U0001ee5f', '\U0001ee5f'),
+        ('\U0001ee61', '\U0001ee62'), ('\U0001ee64', '\U0001ee64'),
+        ('\U0001ee67', '\U0001ee6a'), ('\U0001ee6c', '\U0001ee72'),
+        ('\U0001ee74', '\U0001ee77'), ('\U0001ee79', '\U0001ee7c'),
+        ('\U0001ee7e', '\U0001ee7e'), ('\U0001ee80', '\U0001ee89'),
+        ('\U0001ee8b', '\U0001ee9b'), ('\U0001eea1', '\U0001eea3'),
+        ('\U0001eea5', '\U0001eea9'), ('\U0001eeab', '\U0001eebb'),
+        ('\U00020000', '\U0002a6d6'), ('\U0002a700', '\U0002b734'),
+        ('\U0002b740', '\U0002b81d'), ('\U0002f800', '\U0002fa1d'),
+        ('\U000e0100', '\U000e01ef')
     ];
 
     pub fn XID_Continue(c: char) -> bool {
index d727f45e316bbd8cac2998cdf784902c4b6d21a5..c60cc1a36cabae2e902cb4cf949ea17129f11033 100644 (file)
@@ -57,28 +57,28 @@ fn f() {
       Ogham Space Mark 4+2:          (should align)
     */
     /*
-      Mongolian Vowel Separator 4+2: (should align)
+      Ogham Space Mark 4+2: (should align)
     */
     /*
       Four-per-em space 4+2:         (should align)
     */
 
     /*
-      Mongolian Vowel Sep   count 1: (should align)
-      Mongolian Vowel Sep   count 2: (should align)
-      Mongolian Vowel Sep   count 3: (should align)
-      Mongolian Vowel Sep   count 4: (should align)
-      Mongolian Vowel Sep   count 5: (should align)
-      Mongolian Vowel Sep   count 6: (should align)
-      Mongolian Vowel Sep   count 7: (should align)
-      Mongolian Vowel Sep   count 8: (should align)
-      Mongolian Vowel Sep   count 9: (should align)
-      Mongolian Vowel Sep   count A: (should align)
-      Mongolian Vowel Sep   count B: (should align)
-      Mongolian Vowel Sep   count C: (should align)
-      Mongolian Vowel Sep   count D: (should align)
-      Mongolian Vowel Sep   count E: (should align)
-      Mongolian Vowel Sep   count F: (should align)
+      Ogham Space Mark   count 1: (should align)
+      Ogham Space Mark   count 2: (should align)
+      Ogham Space Mark   count 3: (should align)
+      Ogham Space Mark   count 4: (should align)
+      Ogham Space Mark   count 5: (should align)
+      Ogham Space Mark   count 6: (should align)
+      Ogham Space Mark   count 7: (should align)
+      Ogham Space Mark   count 8: (should align)
+      Ogham Space Mark   count 9: (should align)
+      Ogham Space Mark   count A: (should align)
+      Ogham Space Mark   count B: (should align)
+      Ogham Space Mark   count C: (should align)
+      Ogham Space Mark   count D: (should align)
+      Ogham Space Mark   count E: (should align)
+      Ogham Space Mark   count F: (should align)
     */
 
 
@@ -88,26 +88,26 @@ fn f() {
     /*
       Hello from offset 6
       Space 6+2:                     compare A
-      Mongolian Vowel Separator 6+2: compare B
+      Ogham Space Mark 6+2: compare B
     */
 
-    /*á \8e*/
+    /*á\9a\80*/
 
     /*
       Hello from another offset 6 with wchars establishing column offset
       Space 6+2:                     compare C
-      Mongolian Vowel Separator 6+2: compare D
+      Ogham Space Mark 6+2: compare D
     */
 }
 
 fn main() {
-    // Taken from http://en.wikipedia.org/wiki/Whitespace_character
+    // Taken from http://www.unicode.org/Public/UNIDATA/PropList.txt
     let chars =
         ['\x0A', '\x0B', '\x0C', '\x0D', '\x20',
          // '\x85', // for some reason Rust thinks NEL isn't whitespace
-         '\xA0', '\u1680', '\u180E', '\u2000', '\u2001', '\u2002', '\u2003',
-         '\u2004', '\u2005', '\u2006', '\u2007', '\u2008', '\u2009', '\u200A',
-         '\u2028', '\u2029', '\u202F', '\u205F', '\u3000'];
+         '\xA0', '\u1680', '\u2000', '\u2001', '\u2002', '\u2003', '\u2004',
+         '\u2005', '\u2006', '\u2007', '\u2008', '\u2009', '\u200A', '\u2028',
+         '\u2029', '\u202F', '\u205F', '\u3000'];
     for c in chars.iter() {
         let ws = c.is_whitespace();
         println!("{:?} {:?}" , c , ws);
index abe4546d69fecd43a04c7405aba9e5baa2b830eb..52936da41b29f88548efd0510bd68816c6cf6c80 100644 (file)
@@ -57,49 +57,49 @@ fn nested() {
       Ogham Space Mark 4+2:          (should align)
     */
     /*
 \8eá \8eá \8eá \8e  Mongolian Vowel Separator 4+2: (should align)
\9a\80á\9a\80á\9a\80á\9a\80  Ogham Space Mark 4+2: (should align)
     */
     /*
       Four-per-em space 4+2:         (should align)
     */
 
     /*
-   á \8e  Mongolian Vowel Sep   count 1: (should align)
-  á \8e   Mongolian Vowel Sep   count 2: (should align)
-  á \8eá \8e  Mongolian Vowel Sep   count 3: (should align)
- á \8e    Mongolian Vowel Sep   count 4: (should align)
- á \8e á \8e  Mongolian Vowel Sep   count 5: (should align)
- á \8eá \8e   Mongolian Vowel Sep   count 6: (should align)
- á \8eá \8eá \8e  Mongolian Vowel Sep   count 7: (should align)
 \8e     Mongolian Vowel Sep   count 8: (should align)
 \8e  á \8e  Mongolian Vowel Sep   count 9: (should align)
 \8e á \8e   Mongolian Vowel Sep   count A: (should align)
 \8e á \8eá \8e  Mongolian Vowel Sep   count B: (should align)
 \8eá \8e    Mongolian Vowel Sep   count C: (should align)
 \8eá \8e á \8e  Mongolian Vowel Sep   count D: (should align)
 \8eá \8eá \8e   Mongolian Vowel Sep   count E: (should align)
 \8eá \8eá \8eá \8e  Mongolian Vowel Sep   count F: (should align)
+   á\9a\80  Ogham Space Mark   count 1: (should align)
+  á\9a\80   Ogham Space Mark   count 2: (should align)
+  á\9a\80á\9a\80  Ogham Space Mark   count 3: (should align)
+ á\9a\80    Ogham Space Mark   count 4: (should align)
+ á\9a\80 á\9a\80  Ogham Space Mark   count 5: (should align)
+ á\9a\80á\9a\80   Ogham Space Mark   count 6: (should align)
+ á\9a\80á\9a\80á\9a\80  Ogham Space Mark   count 7: (should align)
\9a\80     Ogham Space Mark   count 8: (should align)
\9a\80  á\9a\80  Ogham Space Mark   count 9: (should align)
\9a\80 á\9a\80   Ogham Space Mark   count A: (should align)
\9a\80 á\9a\80á\9a\80  Ogham Space Mark   count B: (should align)
\9a\80á\9a\80    Ogham Space Mark   count C: (should align)
\9a\80á\9a\80 á\9a\80  Ogham Space Mark   count D: (should align)
\9a\80á\9a\80á\9a\80   Ogham Space Mark   count E: (should align)
\9a\80á\9a\80á\9a\80á\9a\80  Ogham Space Mark   count F: (should align)
     */
 
 
 /* */ /*
         Hello from offset 6
         Space 6+2:                     compare A
 \8eá \8eá \8eá \8eá \8eá \8e  Mongolian Vowel Separator 6+2: compare B
\9a\80á\9a\80á\9a\80á\9a\80á\9a\80á\9a\80  Ogham Space Mark 6+2: compare B
       */
-/*á \8e*/ /*
+/*á\9a\80*/ /*
         Hello from another offset 6 with wchars establishing column offset
         Space 6+2:                     compare C
 \8eá \8eá \8eá \8eá \8eá \8e  Mongolian Vowel Separator 6+2: compare D
\9a\80á\9a\80á\9a\80á\9a\80á\9a\80á\9a\80  Ogham Space Mark 6+2: compare D
       */
 }
 
 fn main() {
-    // Taken from http://en.wikipedia.org/wiki/Whitespace_character
+    // Taken from http://www.unicode.org/Public/UNIDATA/PropList.txt
     let chars =
         ['\x0A', '\x0B', '\x0C', '\x0D', '\x20',
          // '\x85', // for some reason Rust thinks NEL isn't whitespace
-         '\xA0', '\u1680', '\u180E', '\u2000', '\u2001', '\u2002', '\u2003',
+         '\xA0', '\u1680', '\u2000', '\u2001', '\u2002', '\u2003',
          '\u2004', '\u2005', '\u2006', '\u2007', '\u2008', '\u2009', '\u200A',
          '\u2028', '\u2029', '\u202F', '\u205F', '\u3000'];
     for c in chars.iter() {