diff --git a/gen/src/writer/ucd/mod.rs b/gen/src/writer/ucd/mod.rs index e831db58..70a2c7f4 100644 --- a/gen/src/writer/ucd/mod.rs +++ b/gen/src/writer/ucd/mod.rs @@ -20,6 +20,7 @@ mod ident; mod name; mod name_aliases; mod normal; +mod numeric; mod segment; mod segment_tests; @@ -38,6 +39,7 @@ pub fn generate() { name::generate(&clean_dir("unic/ucd/name/tables")); name_aliases::generate(&clean_dir("unic/ucd/name_aliases/tables")); normal::generate(&clean_dir("unic/ucd/normal/tables")); + numeric::generate(&clean_dir("unic/ucd/numeric/tables")); segment::generate(&clean_dir("unic/ucd/segment/tables")); segment_tests::generate(&clean_dir("unic/ucd/segment/tests/tables")); } diff --git a/gen/src/writer/ucd/numeric.rs b/gen/src/writer/ucd/numeric.rs new file mode 100644 index 00000000..c1eb78cb --- /dev/null +++ b/gen/src/writer/ucd/numeric.rs @@ -0,0 +1,57 @@ +use std::collections::BTreeMap; +use std::convert::TryInto; +use std::path::Path; + +use crate::source::ucd::readme::UNICODE_VERSION; +use crate::source::ucd::unicode_data::UNICODE_DATA; + +use crate::writer::common::emit_unicode_version; +use crate::writer::utils::tables::ToDirectCharTable; +use crate::writer::utils::write; + +pub fn generate(dir: &Path) { + emit_unicode_version(dir, &UNICODE_VERSION); + emit_digit_decimal_numeric(dir); +} + +fn emit_digit_decimal_numeric(dir: &Path) { + let mut str_reprs = String::new(); + // we pack as much info as possible into a u32, since due to char's alignment we get 32 bits of + // info for "free" - even with V=u8, size_of::<[(char, u8); N]>() = 64 * N + let map: BTreeMap = UNICODE_DATA + .entries + .iter() + .filter_map(|x| { + let num_str = x.numeric_numeric_value.as_deref()?; + let i = match x.digit_numeric_value { + Some(d) => { + assert!(matches!(d, 0..=9)); + let is_decimal = x.decimal_numeric_value.is_some(); + (1u32 << 31) | ((is_decimal as u32) << 30) | (d as u32) + } + None => { + // if we made V something with `&'static str`, it would almost double the size + // of the table in static memory. instead keep the string data separate, which + // allows packing a short idx/len into a u32, and also lets us deduplicate data + let idx = str_reprs.find(num_str).unwrap_or_else(|| { + let i = str_reprs.len(); + str_reprs.push_str(num_str); + i + }); + let idx: u16 = idx.try_into().unwrap(); + let len: u16 = num_str.len().try_into().unwrap(); + assert_eq!(len >> 15, 0); + ((len as u32) << 16) | (idx as u32) + } + }; + Some((x.character, i)) + }) + .collect(); + + write(dir, "numeric_strs.rsv", &format!("{:?}", str_reprs)); + write( + dir, + "numeric_values.rsv", + &map.to_direct_char_table(|val, f| write!(f, "{:#x?}", val)), + ); +} diff --git a/unic/ucd/Cargo.toml b/unic/ucd/Cargo.toml index ba397878..5ab01e2c 100644 --- a/unic/ucd/Cargo.toml +++ b/unic/ucd/Cargo.toml @@ -25,6 +25,7 @@ unic-ucd-ident = { path = "ident/", version = "0.9.0" } unic-ucd-name = { path = "name/", version = "0.9.0" } unic-ucd-name_aliases = { path = "name_aliases/", version = "0.9.0" } unic-ucd-normal = { path = "normal/", version = "0.9.0", features = ["unic-ucd-category"] } +unic-ucd-numeric = { path = "numeric/", version = "0.9.0" } unic-ucd-segment = { path = "segment/", version = "0.9.0" } unic-ucd-version = { path = "version/", version = "0.9.0" } diff --git a/unic/ucd/numeric/Cargo.toml b/unic/ucd/numeric/Cargo.toml new file mode 100644 index 00000000..f7141850 --- /dev/null +++ b/unic/ucd/numeric/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "unic-ucd-numeric" +version = "0.9.0" +edition = "2018" +authors = ["The UNIC Project Developers"] +repository = "https://github.com/open-i18n/rust-unic/" +license = "MIT/Apache-2.0" +description = "UNIC — Unicode Character Database — Numeric" +keywords = ["text", "unicode", "numeric", "digit", "decimal"] +categories = ["internationalization", "text-processing", "parsing", "rendering"] + +# No tests/benches that depends on /data/ +exclude = [] + +[dependencies] +unic-char-property = { path = "../../char/property/", version = "0.9.0" } +unic-ucd-version = { path = "../version/", version = "0.9.0" } + +[badges] +maintenance = { status = "actively-developed" } +is-it-maintained-issue-resolution = { repository = "open-i18n/rust-unic" } +is-it-maintained-open-issues = { repository = "open-i18n/rust-unic" } diff --git a/unic/ucd/numeric/src/lib.rs b/unic/ucd/numeric/src/lib.rs new file mode 100644 index 00000000..b3829327 --- /dev/null +++ b/unic/ucd/numeric/src/lib.rs @@ -0,0 +1,20 @@ +// Copyright 2017 The UNIC Project Developers. +// +// See the COPYRIGHT file at the top-level directory of this distribution. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +mod pkg_info; +pub use crate::pkg_info::{PKG_DESCRIPTION, PKG_NAME, PKG_VERSION}; + +mod numeric; +pub use crate::numeric::NumericValue; + +use unic_ucd_version::UnicodeVersion; + +/// The [Unicode version](https://www.unicode.org/versions/) of data +pub const UNICODE_VERSION: UnicodeVersion = include!("../tables/unicode_version.rsv"); diff --git a/unic/ucd/numeric/src/numeric.rs b/unic/ucd/numeric/src/numeric.rs new file mode 100644 index 00000000..13177648 --- /dev/null +++ b/unic/ucd/numeric/src/numeric.rs @@ -0,0 +1,103 @@ +// Copyright 2017 The UNIC Project Developers. +// +// See the COPYRIGHT file at the top-level directory of this distribution. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +use std::fmt; +use unic_char_property::PartialCharProperty; + +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum NumericValue { + /// A decimal digit in the range `0..=9`, corresponding to `Numeric_Type=Decimal` + Decimal(u8), + /// A digit in the range `0..=9`, corresponding to `Numeric_Type=Digit` + Digit(u8), + /// A string representing an integer or a rational number, corresponding to `Numeric_Type=Numeric` + Numeric(&'static str), +} + +mod data { + use unic_char_property::tables::CharDataTable; + pub const NUMERIC_VALUES: CharDataTable = include!("../tables/numeric_values.rsv"); + pub const NUMERIC_STRS: &'static str = include!("../tables/numeric_strs.rsv"); +} + +impl NumericValue { + pub fn of(ch: char) -> Option { + data::NUMERIC_VALUES.find(ch).map(|i| { + if (i >> 31) == 0 { + let idx = (i & 0xffff) as usize; + let len = (i >> 16) as usize; + // SAFETY: these bounds are always valid, as they're generated based on + // NUMERIC_STRS itself in gen/src/writer/ucd/numeric.rs + let s = unsafe { data::NUMERIC_STRS.get_unchecked(idx..).get_unchecked(..len) }; + NumericValue::Numeric(s) + } else { + let is_decimal = i & (1 << 30) != 0; + let d = (i & 0xff) as u8; + if is_decimal { + NumericValue::Decimal(d) + } else { + NumericValue::Digit(d) + } + } + }) + } + + pub fn as_str(&self) -> &'static str { + match *self { + NumericValue::Decimal(d) | NumericValue::Digit(d) => { + let digits = "0123456789"; + // SAFETY: d is always in range 0..=9, both according to the + // spec and verified in gen/src/writer/ucd/numeric.rs + unsafe { digits.get_unchecked(d as usize..).get_unchecked(..1) } + } + NumericValue::Numeric(s) => s, + } + } +} + +impl PartialCharProperty for NumericValue { + fn of(ch: char) -> Option { + Self::of(ch) + } +} + +impl fmt::Display for NumericValue { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + f.write_str(self.as_str()) + } +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_decimal() { + assert_eq!(NumericValue::of('7').unwrap(), NumericValue::Decimal(7)); + // ARABIC-INDIC DIGIT THREE + assert_eq!(NumericValue::of('٣').unwrap(), NumericValue::Decimal(3)); + } + + #[test] + fn test_digit() { + // CIRCLED DIGIT EIGHT + assert_eq!(NumericValue::of('⑧').unwrap(), NumericValue::Digit(8)); + // DIGIT THREE FULL STOP + assert_eq!(NumericValue::of('⒊').unwrap(), NumericValue::Digit(3)); + } + + #[test] + fn test_numeric() { + // VULGAR FRACTION ONE HALF + assert_eq!(NumericValue::of('½').unwrap(), NumericValue::Numeric("1/2")); + // ROMAN NUMERAL TWELVE + assert_eq!(NumericValue::of('Ⅻ').unwrap(), NumericValue::Numeric("12")); + } +} diff --git a/unic/ucd/numeric/src/pkg_info.rs b/unic/ucd/numeric/src/pkg_info.rs new file mode 100644 index 00000000..a1ab2853 --- /dev/null +++ b/unic/ucd/numeric/src/pkg_info.rs @@ -0,0 +1,20 @@ +// Copyright 2017 The UNIC Project Developers. +// +// See the COPYRIGHT file at the top-level directory of this distribution. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +//! Package information + +/// UNIC component version. +pub const PKG_VERSION: &str = env!("CARGO_PKG_VERSION"); + +/// UNIC component name. +pub const PKG_NAME: &str = env!("CARGO_PKG_NAME"); + +/// UNIC component description. +pub const PKG_DESCRIPTION: &str = env!("CARGO_PKG_DESCRIPTION"); diff --git a/unic/ucd/numeric/tables/numeric_strs.rsv b/unic/ucd/numeric/tables/numeric_strs.rsv new file mode 100644 index 00000000..d2066920 --- /dev/null +++ b/unic/ucd/numeric/tables/numeric_strs.rsv @@ -0,0 +1,3 @@ +// WARNING: Auto-generated by the `unic-gen` crate. +// WARNING: DO NOT EDIT MANUALLY! +"1/41/23/41/161/83/161010010001/1601/403/801/201/103/201/55/27/29/211/213/215/217/2-1/2305070901000018191/71/91/32/32/53/54/51/65/65/87/8125005000500001000001422242628313334353637383944454647484920030040060070080090020003000400060007000800090002000030000400006000070000800009000011/122000003000004000005000006000007000008000009000002/123/124/125/126/127/128/129/1210/122160004320001000000100000000100000000001000000000000" diff --git a/unic/ucd/numeric/tables/numeric_values.rsv b/unic/ucd/numeric/tables/numeric_values.rsv new file mode 100644 index 00000000..09c36c05 --- /dev/null +++ b/unic/ucd/numeric/tables/numeric_values.rsv @@ -0,0 +1,1514 @@ +// WARNING: Auto-generated by the `unic-gen` crate. +// WARNING: DO NOT EDIT MANUALLY! +CharDataTable::Direct(&[ + ('\u{30}', 0xc0000000), + ('\u{31}', 0xc0000001), + ('\u{32}', 0xc0000002), + ('\u{33}', 0xc0000003), + ('\u{34}', 0xc0000004), + ('\u{35}', 0xc0000005), + ('\u{36}', 0xc0000006), + ('\u{37}', 0xc0000007), + ('\u{38}', 0xc0000008), + ('\u{39}', 0xc0000009), + ('\u{b2}', 0x80000002), + ('\u{b3}', 0x80000003), + ('\u{b9}', 0x80000001), + ('\u{bc}', 0x30000), + ('\u{bd}', 0x30003), + ('\u{be}', 0x30006), + ('\u{660}', 0xc0000000), + ('\u{661}', 0xc0000001), + ('\u{662}', 0xc0000002), + ('\u{663}', 0xc0000003), + ('\u{664}', 0xc0000004), + ('\u{665}', 0xc0000005), + ('\u{666}', 0xc0000006), + ('\u{667}', 0xc0000007), + ('\u{668}', 0xc0000008), + ('\u{669}', 0xc0000009), + ('\u{6f0}', 0xc0000000), + ('\u{6f1}', 0xc0000001), + ('\u{6f2}', 0xc0000002), + ('\u{6f3}', 0xc0000003), + ('\u{6f4}', 0xc0000004), + ('\u{6f5}', 0xc0000005), + ('\u{6f6}', 0xc0000006), + ('\u{6f7}', 0xc0000007), + ('\u{6f8}', 0xc0000008), + ('\u{6f9}', 0xc0000009), + ('\u{7c0}', 0xc0000000), + ('\u{7c1}', 0xc0000001), + ('\u{7c2}', 0xc0000002), + ('\u{7c3}', 0xc0000003), + ('\u{7c4}', 0xc0000004), + ('\u{7c5}', 0xc0000005), + ('\u{7c6}', 0xc0000006), + ('\u{7c7}', 0xc0000007), + ('\u{7c8}', 0xc0000008), + ('\u{7c9}', 0xc0000009), + ('\u{966}', 0xc0000000), + ('\u{967}', 0xc0000001), + ('\u{968}', 0xc0000002), + ('\u{969}', 0xc0000003), + ('\u{96a}', 0xc0000004), + ('\u{96b}', 0xc0000005), + ('\u{96c}', 0xc0000006), + ('\u{96d}', 0xc0000007), + ('\u{96e}', 0xc0000008), + ('\u{96f}', 0xc0000009), + ('\u{9e6}', 0xc0000000), + ('\u{9e7}', 0xc0000001), + ('\u{9e8}', 0xc0000002), + ('\u{9e9}', 0xc0000003), + ('\u{9ea}', 0xc0000004), + ('\u{9eb}', 0xc0000005), + ('\u{9ec}', 0xc0000006), + ('\u{9ed}', 0xc0000007), + ('\u{9ee}', 0xc0000008), + ('\u{9ef}', 0xc0000009), + ('\u{9f4}', 0x40009), + ('\u{9f5}', 0x3000d), + ('\u{9f6}', 0x40010), + ('\u{9f7}', 0x30000), + ('\u{9f8}', 0x30006), + ('\u{9f9}', 0x2000b), + ('\u{a66}', 0xc0000000), + ('\u{a67}', 0xc0000001), + ('\u{a68}', 0xc0000002), + ('\u{a69}', 0xc0000003), + ('\u{a6a}', 0xc0000004), + ('\u{a6b}', 0xc0000005), + ('\u{a6c}', 0xc0000006), + ('\u{a6d}', 0xc0000007), + ('\u{a6e}', 0xc0000008), + ('\u{a6f}', 0xc0000009), + ('\u{ae6}', 0xc0000000), + ('\u{ae7}', 0xc0000001), + ('\u{ae8}', 0xc0000002), + ('\u{ae9}', 0xc0000003), + ('\u{aea}', 0xc0000004), + ('\u{aeb}', 0xc0000005), + ('\u{aec}', 0xc0000006), + ('\u{aed}', 0xc0000007), + ('\u{aee}', 0xc0000008), + ('\u{aef}', 0xc0000009), + ('\u{b66}', 0xc0000000), + ('\u{b67}', 0xc0000001), + ('\u{b68}', 0xc0000002), + ('\u{b69}', 0xc0000003), + ('\u{b6a}', 0xc0000004), + ('\u{b6b}', 0xc0000005), + ('\u{b6c}', 0xc0000006), + ('\u{b6d}', 0xc0000007), + ('\u{b6e}', 0xc0000008), + ('\u{b6f}', 0xc0000009), + ('\u{b72}', 0x30000), + ('\u{b73}', 0x30003), + ('\u{b74}', 0x30006), + ('\u{b75}', 0x40009), + ('\u{b76}', 0x3000d), + ('\u{b77}', 0x40010), + ('\u{be6}', 0xc0000000), + ('\u{be7}', 0xc0000001), + ('\u{be8}', 0xc0000002), + ('\u{be9}', 0xc0000003), + ('\u{bea}', 0xc0000004), + ('\u{beb}', 0xc0000005), + ('\u{bec}', 0xc0000006), + ('\u{bed}', 0xc0000007), + ('\u{bee}', 0xc0000008), + ('\u{bef}', 0xc0000009), + ('\u{bf0}', 0x20014), + ('\u{bf1}', 0x30016), + ('\u{bf2}', 0x40019), + ('\u{c66}', 0xc0000000), + ('\u{c67}', 0xc0000001), + ('\u{c68}', 0xc0000002), + ('\u{c69}', 0xc0000003), + ('\u{c6a}', 0xc0000004), + ('\u{c6b}', 0xc0000005), + ('\u{c6c}', 0xc0000006), + ('\u{c6d}', 0xc0000007), + ('\u{c6e}', 0xc0000008), + ('\u{c6f}', 0xc0000009), + ('\u{c78}', 0x10015), + ('\u{c79}', 0x10000), + ('\u{c7a}', 0x10005), + ('\u{c7b}', 0x10006), + ('\u{c7c}', 0x10000), + ('\u{c7d}', 0x10005), + ('\u{c7e}', 0x10006), + ('\u{ce6}', 0xc0000000), + ('\u{ce7}', 0xc0000001), + ('\u{ce8}', 0xc0000002), + ('\u{ce9}', 0xc0000003), + ('\u{cea}', 0xc0000004), + ('\u{ceb}', 0xc0000005), + ('\u{cec}', 0xc0000006), + ('\u{ced}', 0xc0000007), + ('\u{cee}', 0xc0000008), + ('\u{cef}', 0xc0000009), + ('\u{d58}', 0x5001d), + ('\u{d59}', 0x40022), + ('\u{d5a}', 0x40026), + ('\u{d5b}', 0x4002a), + ('\u{d5c}', 0x4002e), + ('\u{d5d}', 0x40032), + ('\u{d5e}', 0x30036), + ('\u{d66}', 0xc0000000), + ('\u{d67}', 0xc0000001), + ('\u{d68}', 0xc0000002), + ('\u{d69}', 0xc0000003), + ('\u{d6a}', 0xc0000004), + ('\u{d6b}', 0xc0000005), + ('\u{d6c}', 0xc0000006), + ('\u{d6d}', 0xc0000007), + ('\u{d6e}', 0xc0000008), + ('\u{d6f}', 0xc0000009), + ('\u{d70}', 0x20014), + ('\u{d71}', 0x30016), + ('\u{d72}', 0x40019), + ('\u{d73}', 0x30000), + ('\u{d74}', 0x30003), + ('\u{d75}', 0x30006), + ('\u{d76}', 0x40009), + ('\u{d77}', 0x3000d), + ('\u{d78}', 0x40010), + ('\u{de6}', 0xc0000000), + ('\u{de7}', 0xc0000001), + ('\u{de8}', 0xc0000002), + ('\u{de9}', 0xc0000003), + ('\u{dea}', 0xc0000004), + ('\u{deb}', 0xc0000005), + ('\u{dec}', 0xc0000006), + ('\u{ded}', 0xc0000007), + ('\u{dee}', 0xc0000008), + ('\u{def}', 0xc0000009), + ('\u{e50}', 0xc0000000), + ('\u{e51}', 0xc0000001), + ('\u{e52}', 0xc0000002), + ('\u{e53}', 0xc0000003), + ('\u{e54}', 0xc0000004), + ('\u{e55}', 0xc0000005), + ('\u{e56}', 0xc0000006), + ('\u{e57}', 0xc0000007), + ('\u{e58}', 0xc0000008), + ('\u{e59}', 0xc0000009), + ('\u{ed0}', 0xc0000000), + ('\u{ed1}', 0xc0000001), + ('\u{ed2}', 0xc0000002), + ('\u{ed3}', 0xc0000003), + ('\u{ed4}', 0xc0000004), + ('\u{ed5}', 0xc0000005), + ('\u{ed6}', 0xc0000006), + ('\u{ed7}', 0xc0000007), + ('\u{ed8}', 0xc0000008), + ('\u{ed9}', 0xc0000009), + ('\u{f20}', 0xc0000000), + ('\u{f21}', 0xc0000001), + ('\u{f22}', 0xc0000002), + ('\u{f23}', 0xc0000003), + ('\u{f24}', 0xc0000004), + ('\u{f25}', 0xc0000005), + ('\u{f26}', 0xc0000006), + ('\u{f27}', 0xc0000007), + ('\u{f28}', 0xc0000008), + ('\u{f29}', 0xc0000009), + ('\u{f2a}', 0x30003), + ('\u{f2b}', 0x30032), + ('\u{f2c}', 0x30039), + ('\u{f2d}', 0x3003c), + ('\u{f2e}', 0x3003f), + ('\u{f2f}', 0x40042), + ('\u{f30}', 0x40046), + ('\u{f31}', 0x4004a), + ('\u{f32}', 0x4004e), + ('\u{f33}', 0x40052), + ('\u{1040}', 0xc0000000), + ('\u{1041}', 0xc0000001), + ('\u{1042}', 0xc0000002), + ('\u{1043}', 0xc0000003), + ('\u{1044}', 0xc0000004), + ('\u{1045}', 0xc0000005), + ('\u{1046}', 0xc0000006), + ('\u{1047}', 0xc0000007), + ('\u{1048}', 0xc0000008), + ('\u{1049}', 0xc0000009), + ('\u{1090}', 0xc0000000), + ('\u{1091}', 0xc0000001), + ('\u{1092}', 0xc0000002), + ('\u{1093}', 0xc0000003), + ('\u{1094}', 0xc0000004), + ('\u{1095}', 0xc0000005), + ('\u{1096}', 0xc0000006), + ('\u{1097}', 0xc0000007), + ('\u{1098}', 0xc0000008), + ('\u{1099}', 0xc0000009), + ('\u{1369}', 0x80000001), + ('\u{136a}', 0x80000002), + ('\u{136b}', 0x80000003), + ('\u{136c}', 0x80000004), + ('\u{136d}', 0x80000005), + ('\u{136e}', 0x80000006), + ('\u{136f}', 0x80000007), + ('\u{1370}', 0x80000008), + ('\u{1371}', 0x80000009), + ('\u{1372}', 0x20014), + ('\u{1373}', 0x2002c), + ('\u{1374}', 0x20056), + ('\u{1375}', 0x20024), + ('\u{1376}', 0x20058), + ('\u{1377}', 0x20020), + ('\u{1378}', 0x2005a), + ('\u{1379}', 0x20028), + ('\u{137a}', 0x2005c), + ('\u{137b}', 0x30016), + ('\u{137c}', 0x5005e), + ('\u{16ee}', 0x2004e), + ('\u{16ef}', 0x20063), + ('\u{16f0}', 0x20065), + ('\u{17e0}', 0xc0000000), + ('\u{17e1}', 0xc0000001), + ('\u{17e2}', 0xc0000002), + ('\u{17e3}', 0xc0000003), + ('\u{17e4}', 0xc0000004), + ('\u{17e5}', 0xc0000005), + ('\u{17e6}', 0xc0000006), + ('\u{17e7}', 0xc0000007), + ('\u{17e8}', 0xc0000008), + ('\u{17e9}', 0xc0000009), + ('\u{17f0}', 0x10015), + ('\u{17f1}', 0x10000), + ('\u{17f2}', 0x10005), + ('\u{17f3}', 0x10006), + ('\u{17f4}', 0x10002), + ('\u{17f5}', 0x10038), + ('\u{17f6}', 0x1000c), + ('\u{17f7}', 0x1003c), + ('\u{17f8}', 0x1000f), + ('\u{17f9}', 0x1003f), + ('\u{1810}', 0xc0000000), + ('\u{1811}', 0xc0000001), + ('\u{1812}', 0xc0000002), + ('\u{1813}', 0xc0000003), + ('\u{1814}', 0xc0000004), + ('\u{1815}', 0xc0000005), + ('\u{1816}', 0xc0000006), + ('\u{1817}', 0xc0000007), + ('\u{1818}', 0xc0000008), + ('\u{1819}', 0xc0000009), + ('\u{1946}', 0xc0000000), + ('\u{1947}', 0xc0000001), + ('\u{1948}', 0xc0000002), + ('\u{1949}', 0xc0000003), + ('\u{194a}', 0xc0000004), + ('\u{194b}', 0xc0000005), + ('\u{194c}', 0xc0000006), + ('\u{194d}', 0xc0000007), + ('\u{194e}', 0xc0000008), + ('\u{194f}', 0xc0000009), + ('\u{19d0}', 0xc0000000), + ('\u{19d1}', 0xc0000001), + ('\u{19d2}', 0xc0000002), + ('\u{19d3}', 0xc0000003), + ('\u{19d4}', 0xc0000004), + ('\u{19d5}', 0xc0000005), + ('\u{19d6}', 0xc0000006), + ('\u{19d7}', 0xc0000007), + ('\u{19d8}', 0xc0000008), + ('\u{19d9}', 0xc0000009), + ('\u{19da}', 0x80000001), + ('\u{1a80}', 0xc0000000), + ('\u{1a81}', 0xc0000001), + ('\u{1a82}', 0xc0000002), + ('\u{1a83}', 0xc0000003), + ('\u{1a84}', 0xc0000004), + ('\u{1a85}', 0xc0000005), + ('\u{1a86}', 0xc0000006), + ('\u{1a87}', 0xc0000007), + ('\u{1a88}', 0xc0000008), + ('\u{1a89}', 0xc0000009), + ('\u{1a90}', 0xc0000000), + ('\u{1a91}', 0xc0000001), + ('\u{1a92}', 0xc0000002), + ('\u{1a93}', 0xc0000003), + ('\u{1a94}', 0xc0000004), + ('\u{1a95}', 0xc0000005), + ('\u{1a96}', 0xc0000006), + ('\u{1a97}', 0xc0000007), + ('\u{1a98}', 0xc0000008), + ('\u{1a99}', 0xc0000009), + ('\u{1b50}', 0xc0000000), + ('\u{1b51}', 0xc0000001), + ('\u{1b52}', 0xc0000002), + ('\u{1b53}', 0xc0000003), + ('\u{1b54}', 0xc0000004), + ('\u{1b55}', 0xc0000005), + ('\u{1b56}', 0xc0000006), + ('\u{1b57}', 0xc0000007), + ('\u{1b58}', 0xc0000008), + ('\u{1b59}', 0xc0000009), + ('\u{1bb0}', 0xc0000000), + ('\u{1bb1}', 0xc0000001), + ('\u{1bb2}', 0xc0000002), + ('\u{1bb3}', 0xc0000003), + ('\u{1bb4}', 0xc0000004), + ('\u{1bb5}', 0xc0000005), + ('\u{1bb6}', 0xc0000006), + ('\u{1bb7}', 0xc0000007), + ('\u{1bb8}', 0xc0000008), + ('\u{1bb9}', 0xc0000009), + ('\u{1c40}', 0xc0000000), + ('\u{1c41}', 0xc0000001), + ('\u{1c42}', 0xc0000002), + ('\u{1c43}', 0xc0000003), + ('\u{1c44}', 0xc0000004), + ('\u{1c45}', 0xc0000005), + ('\u{1c46}', 0xc0000006), + ('\u{1c47}', 0xc0000007), + ('\u{1c48}', 0xc0000008), + ('\u{1c49}', 0xc0000009), + ('\u{1c50}', 0xc0000000), + ('\u{1c51}', 0xc0000001), + ('\u{1c52}', 0xc0000002), + ('\u{1c53}', 0xc0000003), + ('\u{1c54}', 0xc0000004), + ('\u{1c55}', 0xc0000005), + ('\u{1c56}', 0xc0000006), + ('\u{1c57}', 0xc0000007), + ('\u{1c58}', 0xc0000008), + ('\u{1c59}', 0xc0000009), + ('\u{2070}', 0x80000000), + ('\u{2074}', 0x80000004), + ('\u{2075}', 0x80000005), + ('\u{2076}', 0x80000006), + ('\u{2077}', 0x80000007), + ('\u{2078}', 0x80000008), + ('\u{2079}', 0x80000009), + ('\u{2080}', 0x80000000), + ('\u{2081}', 0x80000001), + ('\u{2082}', 0x80000002), + ('\u{2083}', 0x80000003), + ('\u{2084}', 0x80000004), + ('\u{2085}', 0x80000005), + ('\u{2086}', 0x80000006), + ('\u{2087}', 0x80000007), + ('\u{2088}', 0x80000008), + ('\u{2089}', 0x80000009), + ('\u{2150}', 0x30067), + ('\u{2151}', 0x3006a), + ('\u{2152}', 0x4002e), + ('\u{2153}', 0x3006d), + ('\u{2154}', 0x30070), + ('\u{2155}', 0x30036), + ('\u{2156}', 0x30073), + ('\u{2157}', 0x30076), + ('\u{2158}', 0x30079), + ('\u{2159}', 0x3007c), + ('\u{215a}', 0x3007f), + ('\u{215b}', 0x3000d), + ('\u{215c}', 0x30026), + ('\u{215d}', 0x30082), + ('\u{215e}', 0x30085), + ('\u{215f}', 0x10000), + ('\u{2160}', 0x10000), + ('\u{2161}', 0x10005), + ('\u{2162}', 0x10006), + ('\u{2163}', 0x10002), + ('\u{2164}', 0x10038), + ('\u{2165}', 0x1000c), + ('\u{2166}', 0x1003c), + ('\u{2167}', 0x1000f), + ('\u{2168}', 0x1003f), + ('\u{2169}', 0x20014), + ('\u{216a}', 0x20042), + ('\u{216b}', 0x20088), + ('\u{216c}', 0x20058), + ('\u{216d}', 0x30016), + ('\u{216e}', 0x3008a), + ('\u{216f}', 0x40019), + ('\u{2170}', 0x10000), + ('\u{2171}', 0x10005), + ('\u{2172}', 0x10006), + ('\u{2173}', 0x10002), + ('\u{2174}', 0x10038), + ('\u{2175}', 0x1000c), + ('\u{2176}', 0x1003c), + ('\u{2177}', 0x1000f), + ('\u{2178}', 0x1003f), + ('\u{2179}', 0x20014), + ('\u{217a}', 0x20042), + ('\u{217b}', 0x20088), + ('\u{217c}', 0x20058), + ('\u{217d}', 0x30016), + ('\u{217e}', 0x3008a), + ('\u{217f}', 0x40019), + ('\u{2180}', 0x40019), + ('\u{2181}', 0x4008d), + ('\u{2182}', 0x5005e), + ('\u{2185}', 0x1000c), + ('\u{2186}', 0x20058), + ('\u{2187}', 0x50091), + ('\u{2188}', 0x60096), + ('\u{2189}', 0x10015), + ('\u{2460}', 0x80000001), + ('\u{2461}', 0x80000002), + ('\u{2462}', 0x80000003), + ('\u{2463}', 0x80000004), + ('\u{2464}', 0x80000005), + ('\u{2465}', 0x80000006), + ('\u{2466}', 0x80000007), + ('\u{2467}', 0x80000008), + ('\u{2468}', 0x80000009), + ('\u{2469}', 0x20014), + ('\u{246a}', 0x20042), + ('\u{246b}', 0x20088), + ('\u{246c}', 0x20046), + ('\u{246d}', 0x2009c), + ('\u{246e}', 0x2004a), + ('\u{246f}', 0x2000b), + ('\u{2470}', 0x2004e), + ('\u{2471}', 0x20063), + ('\u{2472}', 0x20065), + ('\u{2473}', 0x2002c), + ('\u{2474}', 0x80000001), + ('\u{2475}', 0x80000002), + ('\u{2476}', 0x80000003), + ('\u{2477}', 0x80000004), + ('\u{2478}', 0x80000005), + ('\u{2479}', 0x80000006), + ('\u{247a}', 0x80000007), + ('\u{247b}', 0x80000008), + ('\u{247c}', 0x80000009), + ('\u{247d}', 0x20014), + ('\u{247e}', 0x20042), + ('\u{247f}', 0x20088), + ('\u{2480}', 0x20046), + ('\u{2481}', 0x2009c), + ('\u{2482}', 0x2004a), + ('\u{2483}', 0x2000b), + ('\u{2484}', 0x2004e), + ('\u{2485}', 0x20063), + ('\u{2486}', 0x20065), + ('\u{2487}', 0x2002c), + ('\u{2488}', 0x80000001), + ('\u{2489}', 0x80000002), + ('\u{248a}', 0x80000003), + ('\u{248b}', 0x80000004), + ('\u{248c}', 0x80000005), + ('\u{248d}', 0x80000006), + ('\u{248e}', 0x80000007), + ('\u{248f}', 0x80000008), + ('\u{2490}', 0x80000009), + ('\u{2491}', 0x20014), + ('\u{2492}', 0x20042), + ('\u{2493}', 0x20088), + ('\u{2494}', 0x20046), + ('\u{2495}', 0x2009c), + ('\u{2496}', 0x2004a), + ('\u{2497}', 0x2000b), + ('\u{2498}', 0x2004e), + ('\u{2499}', 0x20063), + ('\u{249a}', 0x20065), + ('\u{249b}', 0x2002c), + ('\u{24ea}', 0x80000000), + ('\u{24eb}', 0x20042), + ('\u{24ec}', 0x20088), + ('\u{24ed}', 0x20046), + ('\u{24ee}', 0x2009c), + ('\u{24ef}', 0x2004a), + ('\u{24f0}', 0x2000b), + ('\u{24f1}', 0x2004e), + ('\u{24f2}', 0x20063), + ('\u{24f3}', 0x20065), + ('\u{24f4}', 0x2002c), + ('\u{24f5}', 0x80000001), + ('\u{24f6}', 0x80000002), + ('\u{24f7}', 0x80000003), + ('\u{24f8}', 0x80000004), + ('\u{24f9}', 0x80000005), + ('\u{24fa}', 0x80000006), + ('\u{24fb}', 0x80000007), + ('\u{24fc}', 0x80000008), + ('\u{24fd}', 0x80000009), + ('\u{24fe}', 0x20014), + ('\u{24ff}', 0x80000000), + ('\u{2776}', 0x80000001), + ('\u{2777}', 0x80000002), + ('\u{2778}', 0x80000003), + ('\u{2779}', 0x80000004), + ('\u{277a}', 0x80000005), + ('\u{277b}', 0x80000006), + ('\u{277c}', 0x80000007), + ('\u{277d}', 0x80000008), + ('\u{277e}', 0x80000009), + ('\u{277f}', 0x20014), + ('\u{2780}', 0x80000001), + ('\u{2781}', 0x80000002), + ('\u{2782}', 0x80000003), + ('\u{2783}', 0x80000004), + ('\u{2784}', 0x80000005), + ('\u{2785}', 0x80000006), + ('\u{2786}', 0x80000007), + ('\u{2787}', 0x80000008), + ('\u{2788}', 0x80000009), + ('\u{2789}', 0x20014), + ('\u{278a}', 0x80000001), + ('\u{278b}', 0x80000002), + ('\u{278c}', 0x80000003), + ('\u{278d}', 0x80000004), + ('\u{278e}', 0x80000005), + ('\u{278f}', 0x80000006), + ('\u{2790}', 0x80000007), + ('\u{2791}', 0x80000008), + ('\u{2792}', 0x80000009), + ('\u{2793}', 0x20014), + ('\u{2cfd}', 0x30003), + ('\u{3007}', 0x10015), + ('\u{3021}', 0x10000), + ('\u{3022}', 0x10005), + ('\u{3023}', 0x10006), + ('\u{3024}', 0x10002), + ('\u{3025}', 0x10038), + ('\u{3026}', 0x1000c), + ('\u{3027}', 0x1003c), + ('\u{3028}', 0x1000f), + ('\u{3029}', 0x1003f), + ('\u{3038}', 0x20014), + ('\u{3039}', 0x2002c), + ('\u{303a}', 0x20056), + ('\u{3192}', 0x10000), + ('\u{3193}', 0x10005), + ('\u{3194}', 0x10006), + ('\u{3195}', 0x10002), + ('\u{3220}', 0x10000), + ('\u{3221}', 0x10005), + ('\u{3222}', 0x10006), + ('\u{3223}', 0x10002), + ('\u{3224}', 0x10038), + ('\u{3225}', 0x1000c), + ('\u{3226}', 0x1003c), + ('\u{3227}', 0x1000f), + ('\u{3228}', 0x1003f), + ('\u{3229}', 0x20014), + ('\u{3248}', 0x20014), + ('\u{3249}', 0x2002c), + ('\u{324a}', 0x20056), + ('\u{324b}', 0x20024), + ('\u{324c}', 0x20058), + ('\u{324d}', 0x20020), + ('\u{324e}', 0x2005a), + ('\u{324f}', 0x20028), + ('\u{3251}', 0x20041), + ('\u{3252}', 0x2009e), + ('\u{3253}', 0x20005), + ('\u{3254}', 0x200a0), + ('\u{3255}', 0x20089), + ('\u{3256}', 0x200a2), + ('\u{3257}', 0x2003b), + ('\u{3258}', 0x200a4), + ('\u{3259}', 0x2003e), + ('\u{325a}', 0x20056), + ('\u{325b}', 0x200a6), + ('\u{325c}', 0x2006f), + ('\u{325d}', 0x200a8), + ('\u{325e}', 0x200aa), + ('\u{325f}', 0x200ac), + ('\u{3280}', 0x10000), + ('\u{3281}', 0x10005), + ('\u{3282}', 0x10006), + ('\u{3283}', 0x10002), + ('\u{3284}', 0x10038), + ('\u{3285}', 0x1000c), + ('\u{3286}', 0x1003c), + ('\u{3287}', 0x1000f), + ('\u{3288}', 0x1003f), + ('\u{3289}', 0x20014), + ('\u{32b1}', 0x200ae), + ('\u{32b2}', 0x200b0), + ('\u{32b3}', 0x200b2), + ('\u{32b4}', 0x200b4), + ('\u{32b5}', 0x20024), + ('\u{32b6}', 0x20002), + ('\u{32b7}', 0x2009d), + ('\u{32b8}', 0x200ab), + ('\u{32b9}', 0x200b6), + ('\u{32ba}', 0x200b8), + ('\u{32bb}', 0x200ba), + ('\u{32bc}', 0x200bc), + ('\u{32bd}', 0x200be), + ('\u{32be}', 0x200c0), + ('\u{32bf}', 0x20058), + ('\u{a620}', 0xc0000000), + ('\u{a621}', 0xc0000001), + ('\u{a622}', 0xc0000002), + ('\u{a623}', 0xc0000003), + ('\u{a624}', 0xc0000004), + ('\u{a625}', 0xc0000005), + ('\u{a626}', 0xc0000006), + ('\u{a627}', 0xc0000007), + ('\u{a628}', 0xc0000008), + ('\u{a629}', 0xc0000009), + ('\u{a6e6}', 0x10000), + ('\u{a6e7}', 0x10005), + ('\u{a6e8}', 0x10006), + ('\u{a6e9}', 0x10002), + ('\u{a6ea}', 0x10038), + ('\u{a6eb}', 0x1000c), + ('\u{a6ec}', 0x1003c), + ('\u{a6ed}', 0x1000f), + ('\u{a6ee}', 0x1003f), + ('\u{a6ef}', 0x10015), + ('\u{a830}', 0x30000), + ('\u{a831}', 0x30003), + ('\u{a832}', 0x30006), + ('\u{a833}', 0x40009), + ('\u{a834}', 0x3000d), + ('\u{a835}', 0x40010), + ('\u{a8d0}', 0xc0000000), + ('\u{a8d1}', 0xc0000001), + ('\u{a8d2}', 0xc0000002), + ('\u{a8d3}', 0xc0000003), + ('\u{a8d4}', 0xc0000004), + ('\u{a8d5}', 0xc0000005), + ('\u{a8d6}', 0xc0000006), + ('\u{a8d7}', 0xc0000007), + ('\u{a8d8}', 0xc0000008), + ('\u{a8d9}', 0xc0000009), + ('\u{a900}', 0xc0000000), + ('\u{a901}', 0xc0000001), + ('\u{a902}', 0xc0000002), + ('\u{a903}', 0xc0000003), + ('\u{a904}', 0xc0000004), + ('\u{a905}', 0xc0000005), + ('\u{a906}', 0xc0000006), + ('\u{a907}', 0xc0000007), + ('\u{a908}', 0xc0000008), + ('\u{a909}', 0xc0000009), + ('\u{a9d0}', 0xc0000000), + ('\u{a9d1}', 0xc0000001), + ('\u{a9d2}', 0xc0000002), + ('\u{a9d3}', 0xc0000003), + ('\u{a9d4}', 0xc0000004), + ('\u{a9d5}', 0xc0000005), + ('\u{a9d6}', 0xc0000006), + ('\u{a9d7}', 0xc0000007), + ('\u{a9d8}', 0xc0000008), + ('\u{a9d9}', 0xc0000009), + ('\u{a9f0}', 0xc0000000), + ('\u{a9f1}', 0xc0000001), + ('\u{a9f2}', 0xc0000002), + ('\u{a9f3}', 0xc0000003), + ('\u{a9f4}', 0xc0000004), + ('\u{a9f5}', 0xc0000005), + ('\u{a9f6}', 0xc0000006), + ('\u{a9f7}', 0xc0000007), + ('\u{a9f8}', 0xc0000008), + ('\u{a9f9}', 0xc0000009), + ('\u{aa50}', 0xc0000000), + ('\u{aa51}', 0xc0000001), + ('\u{aa52}', 0xc0000002), + ('\u{aa53}', 0xc0000003), + ('\u{aa54}', 0xc0000004), + ('\u{aa55}', 0xc0000005), + ('\u{aa56}', 0xc0000006), + ('\u{aa57}', 0xc0000007), + ('\u{aa58}', 0xc0000008), + ('\u{aa59}', 0xc0000009), + ('\u{abf0}', 0xc0000000), + ('\u{abf1}', 0xc0000001), + ('\u{abf2}', 0xc0000002), + ('\u{abf3}', 0xc0000003), + ('\u{abf4}', 0xc0000004), + ('\u{abf5}', 0xc0000005), + ('\u{abf6}', 0xc0000006), + ('\u{abf7}', 0xc0000007), + ('\u{abf8}', 0xc0000008), + ('\u{abf9}', 0xc0000009), + ('\u{f96b}', 0x10006), + ('\u{f973}', 0x20014), + ('\u{f978}', 0x10005), + ('\u{f9b2}', 0x10015), + ('\u{f9d1}', 0x1000c), + ('\u{f9d3}', 0x1000c), + ('\u{f9fd}', 0x20014), + ('\u{ff10}', 0xc0000000), + ('\u{ff11}', 0xc0000001), + ('\u{ff12}', 0xc0000002), + ('\u{ff13}', 0xc0000003), + ('\u{ff14}', 0xc0000004), + ('\u{ff15}', 0xc0000005), + ('\u{ff16}', 0xc0000006), + ('\u{ff17}', 0xc0000007), + ('\u{ff18}', 0xc0000008), + ('\u{ff19}', 0xc0000009), + ('\u{10107}', 0x10000), + ('\u{10108}', 0x10005), + ('\u{10109}', 0x10006), + ('\u{1010a}', 0x10002), + ('\u{1010b}', 0x10038), + ('\u{1010c}', 0x1000c), + ('\u{1010d}', 0x1003c), + ('\u{1010e}', 0x1000f), + ('\u{1010f}', 0x1003f), + ('\u{10110}', 0x20014), + ('\u{10111}', 0x2002c), + ('\u{10112}', 0x20056), + ('\u{10113}', 0x20024), + ('\u{10114}', 0x20058), + ('\u{10115}', 0x20020), + ('\u{10116}', 0x2005a), + ('\u{10117}', 0x20028), + ('\u{10118}', 0x2005c), + ('\u{10119}', 0x30016), + ('\u{1011a}', 0x300c2), + ('\u{1011b}', 0x300c5), + ('\u{1011c}', 0x300c8), + ('\u{1011d}', 0x3008a), + ('\u{1011e}', 0x300cb), + ('\u{1011f}', 0x300ce), + ('\u{10120}', 0x300d1), + ('\u{10121}', 0x300d4), + ('\u{10122}', 0x40019), + ('\u{10123}', 0x400d7), + ('\u{10124}', 0x400db), + ('\u{10125}', 0x400df), + ('\u{10126}', 0x4008d), + ('\u{10127}', 0x400e3), + ('\u{10128}', 0x400e7), + ('\u{10129}', 0x400eb), + ('\u{1012a}', 0x400ef), + ('\u{1012b}', 0x5005e), + ('\u{1012c}', 0x500f3), + ('\u{1012d}', 0x500f8), + ('\u{1012e}', 0x500fd), + ('\u{1012f}', 0x50091), + ('\u{10130}', 0x50102), + ('\u{10131}', 0x50107), + ('\u{10132}', 0x5010c), + ('\u{10133}', 0x50111), + ('\u{10140}', 0x30000), + ('\u{10141}', 0x30003), + ('\u{10142}', 0x10000), + ('\u{10143}', 0x10038), + ('\u{10144}', 0x20058), + ('\u{10145}', 0x3008a), + ('\u{10146}', 0x4008d), + ('\u{10147}', 0x50091), + ('\u{10148}', 0x10038), + ('\u{10149}', 0x20014), + ('\u{1014a}', 0x20058), + ('\u{1014b}', 0x30016), + ('\u{1014c}', 0x3008a), + ('\u{1014d}', 0x40019), + ('\u{1014e}', 0x4008d), + ('\u{1014f}', 0x10038), + ('\u{10150}', 0x20014), + ('\u{10151}', 0x20058), + ('\u{10152}', 0x30016), + ('\u{10153}', 0x3008a), + ('\u{10154}', 0x40019), + ('\u{10155}', 0x5005e), + ('\u{10156}', 0x50091), + ('\u{10157}', 0x20014), + ('\u{10158}', 0x10000), + ('\u{10159}', 0x10000), + ('\u{1015a}', 0x10000), + ('\u{1015b}', 0x10005), + ('\u{1015c}', 0x10005), + ('\u{1015d}', 0x10005), + ('\u{1015e}', 0x10005), + ('\u{1015f}', 0x10038), + ('\u{10160}', 0x20014), + ('\u{10161}', 0x20014), + ('\u{10162}', 0x20014), + ('\u{10163}', 0x20014), + ('\u{10164}', 0x20014), + ('\u{10165}', 0x20056), + ('\u{10166}', 0x20058), + ('\u{10167}', 0x20058), + ('\u{10168}', 0x20058), + ('\u{10169}', 0x20058), + ('\u{1016a}', 0x30016), + ('\u{1016b}', 0x300c5), + ('\u{1016c}', 0x3008a), + ('\u{1016d}', 0x3008a), + ('\u{1016e}', 0x3008a), + ('\u{1016f}', 0x3008a), + ('\u{10170}', 0x3008a), + ('\u{10171}', 0x40019), + ('\u{10172}', 0x4008d), + ('\u{10173}', 0x10038), + ('\u{10174}', 0x20058), + ('\u{10175}', 0x30003), + ('\u{10176}', 0x30003), + ('\u{10177}', 0x30070), + ('\u{10178}', 0x30006), + ('\u{1018a}', 0x10015), + ('\u{1018b}', 0x30000), + ('\u{102e1}', 0x10000), + ('\u{102e2}', 0x10005), + ('\u{102e3}', 0x10006), + ('\u{102e4}', 0x10002), + ('\u{102e5}', 0x10038), + ('\u{102e6}', 0x1000c), + ('\u{102e7}', 0x1003c), + ('\u{102e8}', 0x1000f), + ('\u{102e9}', 0x1003f), + ('\u{102ea}', 0x20014), + ('\u{102eb}', 0x2002c), + ('\u{102ec}', 0x20056), + ('\u{102ed}', 0x20024), + ('\u{102ee}', 0x20058), + ('\u{102ef}', 0x20020), + ('\u{102f0}', 0x2005a), + ('\u{102f1}', 0x20028), + ('\u{102f2}', 0x2005c), + ('\u{102f3}', 0x30016), + ('\u{102f4}', 0x300c2), + ('\u{102f5}', 0x300c5), + ('\u{102f6}', 0x300c8), + ('\u{102f7}', 0x3008a), + ('\u{102f8}', 0x300cb), + ('\u{102f9}', 0x300ce), + ('\u{102fa}', 0x300d1), + ('\u{102fb}', 0x300d4), + ('\u{10320}', 0x10000), + ('\u{10321}', 0x10038), + ('\u{10322}', 0x20014), + ('\u{10323}', 0x20058), + ('\u{10341}', 0x2005c), + ('\u{1034a}', 0x300d4), + ('\u{103d1}', 0x10000), + ('\u{103d2}', 0x10005), + ('\u{103d3}', 0x20014), + ('\u{103d4}', 0x2002c), + ('\u{103d5}', 0x30016), + ('\u{104a0}', 0xc0000000), + ('\u{104a1}', 0xc0000001), + ('\u{104a2}', 0xc0000002), + ('\u{104a3}', 0xc0000003), + ('\u{104a4}', 0xc0000004), + ('\u{104a5}', 0xc0000005), + ('\u{104a6}', 0xc0000006), + ('\u{104a7}', 0xc0000007), + ('\u{104a8}', 0xc0000008), + ('\u{104a9}', 0xc0000009), + ('\u{10858}', 0x10000), + ('\u{10859}', 0x10005), + ('\u{1085a}', 0x10006), + ('\u{1085b}', 0x20014), + ('\u{1085c}', 0x2002c), + ('\u{1085d}', 0x30016), + ('\u{1085e}', 0x40019), + ('\u{1085f}', 0x5005e), + ('\u{10879}', 0x10000), + ('\u{1087a}', 0x10005), + ('\u{1087b}', 0x10006), + ('\u{1087c}', 0x10002), + ('\u{1087d}', 0x10038), + ('\u{1087e}', 0x20014), + ('\u{1087f}', 0x2002c), + ('\u{108a7}', 0x10000), + ('\u{108a8}', 0x10005), + ('\u{108a9}', 0x10006), + ('\u{108aa}', 0x10002), + ('\u{108ab}', 0x10002), + ('\u{108ac}', 0x10038), + ('\u{108ad}', 0x20014), + ('\u{108ae}', 0x2002c), + ('\u{108af}', 0x30016), + ('\u{108fb}', 0x10000), + ('\u{108fc}', 0x10038), + ('\u{108fd}', 0x20014), + ('\u{108fe}', 0x2002c), + ('\u{108ff}', 0x30016), + ('\u{10916}', 0x10000), + ('\u{10917}', 0x20014), + ('\u{10918}', 0x2002c), + ('\u{10919}', 0x30016), + ('\u{1091a}', 0x10005), + ('\u{1091b}', 0x10006), + ('\u{109bc}', 0x50116), + ('\u{109bd}', 0x30003), + ('\u{109c0}', 0x10000), + ('\u{109c1}', 0x10005), + ('\u{109c2}', 0x10006), + ('\u{109c3}', 0x10002), + ('\u{109c4}', 0x10038), + ('\u{109c5}', 0x1000c), + ('\u{109c6}', 0x1003c), + ('\u{109c7}', 0x1000f), + ('\u{109c8}', 0x1003f), + ('\u{109c9}', 0x20014), + ('\u{109ca}', 0x2002c), + ('\u{109cb}', 0x20056), + ('\u{109cc}', 0x20024), + ('\u{109cd}', 0x20058), + ('\u{109ce}', 0x20020), + ('\u{109cf}', 0x2005a), + ('\u{109d2}', 0x30016), + ('\u{109d3}', 0x300c2), + ('\u{109d4}', 0x300c5), + ('\u{109d5}', 0x300c8), + ('\u{109d6}', 0x3008a), + ('\u{109d7}', 0x300cb), + ('\u{109d8}', 0x300ce), + ('\u{109d9}', 0x300d1), + ('\u{109da}', 0x300d4), + ('\u{109db}', 0x40019), + ('\u{109dc}', 0x400d7), + ('\u{109dd}', 0x400db), + ('\u{109de}', 0x400df), + ('\u{109df}', 0x4008d), + ('\u{109e0}', 0x400e3), + ('\u{109e1}', 0x400e7), + ('\u{109e2}', 0x400eb), + ('\u{109e3}', 0x400ef), + ('\u{109e4}', 0x5005e), + ('\u{109e5}', 0x500f3), + ('\u{109e6}', 0x500f8), + ('\u{109e7}', 0x500fd), + ('\u{109e8}', 0x50091), + ('\u{109e9}', 0x50102), + ('\u{109ea}', 0x50107), + ('\u{109eb}', 0x5010c), + ('\u{109ec}', 0x50111), + ('\u{109ed}', 0x60096), + ('\u{109ee}', 0x6011b), + ('\u{109ef}', 0x60121), + ('\u{109f0}', 0x60127), + ('\u{109f1}', 0x6012d), + ('\u{109f2}', 0x60133), + ('\u{109f3}', 0x60139), + ('\u{109f4}', 0x6013f), + ('\u{109f5}', 0x60145), + ('\u{109f6}', 0x40117), + ('\u{109f7}', 0x4014b), + ('\u{109f8}', 0x4014f), + ('\u{109f9}', 0x40153), + ('\u{109fa}', 0x40157), + ('\u{109fb}', 0x4015b), + ('\u{109fc}', 0x4015f), + ('\u{109fd}', 0x40163), + ('\u{109fe}', 0x40167), + ('\u{109ff}', 0x5016b), + ('\u{10a40}', 0x80000001), + ('\u{10a41}', 0x80000002), + ('\u{10a42}', 0x80000003), + ('\u{10a43}', 0x80000004), + ('\u{10a44}', 0x20014), + ('\u{10a45}', 0x2002c), + ('\u{10a46}', 0x30016), + ('\u{10a47}', 0x40019), + ('\u{10a7d}', 0x10000), + ('\u{10a7e}', 0x20058), + ('\u{10a9d}', 0x10000), + ('\u{10a9e}', 0x20014), + ('\u{10a9f}', 0x2002c), + ('\u{10aeb}', 0x10000), + ('\u{10aec}', 0x10038), + ('\u{10aed}', 0x20014), + ('\u{10aee}', 0x2002c), + ('\u{10aef}', 0x30016), + ('\u{10b58}', 0x10000), + ('\u{10b59}', 0x10005), + ('\u{10b5a}', 0x10006), + ('\u{10b5b}', 0x10002), + ('\u{10b5c}', 0x20014), + ('\u{10b5d}', 0x2002c), + ('\u{10b5e}', 0x30016), + ('\u{10b5f}', 0x40019), + ('\u{10b78}', 0x10000), + ('\u{10b79}', 0x10005), + ('\u{10b7a}', 0x10006), + ('\u{10b7b}', 0x10002), + ('\u{10b7c}', 0x20014), + ('\u{10b7d}', 0x2002c), + ('\u{10b7e}', 0x30016), + ('\u{10b7f}', 0x40019), + ('\u{10ba9}', 0x10000), + ('\u{10baa}', 0x10005), + ('\u{10bab}', 0x10006), + ('\u{10bac}', 0x10002), + ('\u{10bad}', 0x20014), + ('\u{10bae}', 0x2002c), + ('\u{10baf}', 0x30016), + ('\u{10cfa}', 0x10000), + ('\u{10cfb}', 0x10038), + ('\u{10cfc}', 0x20014), + ('\u{10cfd}', 0x20058), + ('\u{10cfe}', 0x30016), + ('\u{10cff}', 0x40019), + ('\u{10e60}', 0x80000001), + ('\u{10e61}', 0x80000002), + ('\u{10e62}', 0x80000003), + ('\u{10e63}', 0x80000004), + ('\u{10e64}', 0x80000005), + ('\u{10e65}', 0x80000006), + ('\u{10e66}', 0x80000007), + ('\u{10e67}', 0x80000008), + ('\u{10e68}', 0x80000009), + ('\u{10e69}', 0x20014), + ('\u{10e6a}', 0x2002c), + ('\u{10e6b}', 0x20056), + ('\u{10e6c}', 0x20024), + ('\u{10e6d}', 0x20058), + ('\u{10e6e}', 0x20020), + ('\u{10e6f}', 0x2005a), + ('\u{10e70}', 0x20028), + ('\u{10e71}', 0x2005c), + ('\u{10e72}', 0x30016), + ('\u{10e73}', 0x300c2), + ('\u{10e74}', 0x300c5), + ('\u{10e75}', 0x300c8), + ('\u{10e76}', 0x3008a), + ('\u{10e77}', 0x300cb), + ('\u{10e78}', 0x300ce), + ('\u{10e79}', 0x300d1), + ('\u{10e7a}', 0x300d4), + ('\u{10e7b}', 0x30003), + ('\u{10e7c}', 0x30000), + ('\u{10e7d}', 0x3006d), + ('\u{10e7e}', 0x30070), + ('\u{11052}', 0x80000001), + ('\u{11053}', 0x80000002), + ('\u{11054}', 0x80000003), + ('\u{11055}', 0x80000004), + ('\u{11056}', 0x80000005), + ('\u{11057}', 0x80000006), + ('\u{11058}', 0x80000007), + ('\u{11059}', 0x80000008), + ('\u{1105a}', 0x80000009), + ('\u{1105b}', 0x20014), + ('\u{1105c}', 0x2002c), + ('\u{1105d}', 0x20056), + ('\u{1105e}', 0x20024), + ('\u{1105f}', 0x20058), + ('\u{11060}', 0x20020), + ('\u{11061}', 0x2005a), + ('\u{11062}', 0x20028), + ('\u{11063}', 0x2005c), + ('\u{11064}', 0x30016), + ('\u{11065}', 0x40019), + ('\u{11066}', 0xc0000000), + ('\u{11067}', 0xc0000001), + ('\u{11068}', 0xc0000002), + ('\u{11069}', 0xc0000003), + ('\u{1106a}', 0xc0000004), + ('\u{1106b}', 0xc0000005), + ('\u{1106c}', 0xc0000006), + ('\u{1106d}', 0xc0000007), + ('\u{1106e}', 0xc0000008), + ('\u{1106f}', 0xc0000009), + ('\u{110f0}', 0xc0000000), + ('\u{110f1}', 0xc0000001), + ('\u{110f2}', 0xc0000002), + ('\u{110f3}', 0xc0000003), + ('\u{110f4}', 0xc0000004), + ('\u{110f5}', 0xc0000005), + ('\u{110f6}', 0xc0000006), + ('\u{110f7}', 0xc0000007), + ('\u{110f8}', 0xc0000008), + ('\u{110f9}', 0xc0000009), + ('\u{11136}', 0xc0000000), + ('\u{11137}', 0xc0000001), + ('\u{11138}', 0xc0000002), + ('\u{11139}', 0xc0000003), + ('\u{1113a}', 0xc0000004), + ('\u{1113b}', 0xc0000005), + ('\u{1113c}', 0xc0000006), + ('\u{1113d}', 0xc0000007), + ('\u{1113e}', 0xc0000008), + ('\u{1113f}', 0xc0000009), + ('\u{111d0}', 0xc0000000), + ('\u{111d1}', 0xc0000001), + ('\u{111d2}', 0xc0000002), + ('\u{111d3}', 0xc0000003), + ('\u{111d4}', 0xc0000004), + ('\u{111d5}', 0xc0000005), + ('\u{111d6}', 0xc0000006), + ('\u{111d7}', 0xc0000007), + ('\u{111d8}', 0xc0000008), + ('\u{111d9}', 0xc0000009), + ('\u{111e1}', 0x10000), + ('\u{111e2}', 0x10005), + ('\u{111e3}', 0x10006), + ('\u{111e4}', 0x10002), + ('\u{111e5}', 0x10038), + ('\u{111e6}', 0x1000c), + ('\u{111e7}', 0x1003c), + ('\u{111e8}', 0x1000f), + ('\u{111e9}', 0x1003f), + ('\u{111ea}', 0x20014), + ('\u{111eb}', 0x2002c), + ('\u{111ec}', 0x20056), + ('\u{111ed}', 0x20024), + ('\u{111ee}', 0x20058), + ('\u{111ef}', 0x20020), + ('\u{111f0}', 0x2005a), + ('\u{111f1}', 0x20028), + ('\u{111f2}', 0x2005c), + ('\u{111f3}', 0x30016), + ('\u{111f4}', 0x40019), + ('\u{112f0}', 0xc0000000), + ('\u{112f1}', 0xc0000001), + ('\u{112f2}', 0xc0000002), + ('\u{112f3}', 0xc0000003), + ('\u{112f4}', 0xc0000004), + ('\u{112f5}', 0xc0000005), + ('\u{112f6}', 0xc0000006), + ('\u{112f7}', 0xc0000007), + ('\u{112f8}', 0xc0000008), + ('\u{112f9}', 0xc0000009), + ('\u{11450}', 0xc0000000), + ('\u{11451}', 0xc0000001), + ('\u{11452}', 0xc0000002), + ('\u{11453}', 0xc0000003), + ('\u{11454}', 0xc0000004), + ('\u{11455}', 0xc0000005), + ('\u{11456}', 0xc0000006), + ('\u{11457}', 0xc0000007), + ('\u{11458}', 0xc0000008), + ('\u{11459}', 0xc0000009), + ('\u{114d0}', 0xc0000000), + ('\u{114d1}', 0xc0000001), + ('\u{114d2}', 0xc0000002), + ('\u{114d3}', 0xc0000003), + ('\u{114d4}', 0xc0000004), + ('\u{114d5}', 0xc0000005), + ('\u{114d6}', 0xc0000006), + ('\u{114d7}', 0xc0000007), + ('\u{114d8}', 0xc0000008), + ('\u{114d9}', 0xc0000009), + ('\u{11650}', 0xc0000000), + ('\u{11651}', 0xc0000001), + ('\u{11652}', 0xc0000002), + ('\u{11653}', 0xc0000003), + ('\u{11654}', 0xc0000004), + ('\u{11655}', 0xc0000005), + ('\u{11656}', 0xc0000006), + ('\u{11657}', 0xc0000007), + ('\u{11658}', 0xc0000008), + ('\u{11659}', 0xc0000009), + ('\u{116c0}', 0xc0000000), + ('\u{116c1}', 0xc0000001), + ('\u{116c2}', 0xc0000002), + ('\u{116c3}', 0xc0000003), + ('\u{116c4}', 0xc0000004), + ('\u{116c5}', 0xc0000005), + ('\u{116c6}', 0xc0000006), + ('\u{116c7}', 0xc0000007), + ('\u{116c8}', 0xc0000008), + ('\u{116c9}', 0xc0000009), + ('\u{11730}', 0xc0000000), + ('\u{11731}', 0xc0000001), + ('\u{11732}', 0xc0000002), + ('\u{11733}', 0xc0000003), + ('\u{11734}', 0xc0000004), + ('\u{11735}', 0xc0000005), + ('\u{11736}', 0xc0000006), + ('\u{11737}', 0xc0000007), + ('\u{11738}', 0xc0000008), + ('\u{11739}', 0xc0000009), + ('\u{1173a}', 0x20014), + ('\u{1173b}', 0x2002c), + ('\u{118e0}', 0xc0000000), + ('\u{118e1}', 0xc0000001), + ('\u{118e2}', 0xc0000002), + ('\u{118e3}', 0xc0000003), + ('\u{118e4}', 0xc0000004), + ('\u{118e5}', 0xc0000005), + ('\u{118e6}', 0xc0000006), + ('\u{118e7}', 0xc0000007), + ('\u{118e8}', 0xc0000008), + ('\u{118e9}', 0xc0000009), + ('\u{118ea}', 0x20014), + ('\u{118eb}', 0x2002c), + ('\u{118ec}', 0x20056), + ('\u{118ed}', 0x20024), + ('\u{118ee}', 0x20058), + ('\u{118ef}', 0x20020), + ('\u{118f0}', 0x2005a), + ('\u{118f1}', 0x20028), + ('\u{118f2}', 0x2005c), + ('\u{11c50}', 0xc0000000), + ('\u{11c51}', 0xc0000001), + ('\u{11c52}', 0xc0000002), + ('\u{11c53}', 0xc0000003), + ('\u{11c54}', 0xc0000004), + ('\u{11c55}', 0xc0000005), + ('\u{11c56}', 0xc0000006), + ('\u{11c57}', 0xc0000007), + ('\u{11c58}', 0xc0000008), + ('\u{11c59}', 0xc0000009), + ('\u{11c5a}', 0x10000), + ('\u{11c5b}', 0x10005), + ('\u{11c5c}', 0x10006), + ('\u{11c5d}', 0x10002), + ('\u{11c5e}', 0x10038), + ('\u{11c5f}', 0x1000c), + ('\u{11c60}', 0x1003c), + ('\u{11c61}', 0x1000f), + ('\u{11c62}', 0x1003f), + ('\u{11c63}', 0x20014), + ('\u{11c64}', 0x2002c), + ('\u{11c65}', 0x20056), + ('\u{11c66}', 0x20024), + ('\u{11c67}', 0x20058), + ('\u{11c68}', 0x20020), + ('\u{11c69}', 0x2005a), + ('\u{11c6a}', 0x20028), + ('\u{11c6b}', 0x2005c), + ('\u{11c6c}', 0x30016), + ('\u{11d50}', 0xc0000000), + ('\u{11d51}', 0xc0000001), + ('\u{11d52}', 0xc0000002), + ('\u{11d53}', 0xc0000003), + ('\u{11d54}', 0xc0000004), + ('\u{11d55}', 0xc0000005), + ('\u{11d56}', 0xc0000006), + ('\u{11d57}', 0xc0000007), + ('\u{11d58}', 0xc0000008), + ('\u{11d59}', 0xc0000009), + ('\u{12400}', 0x10005), + ('\u{12401}', 0x10006), + ('\u{12402}', 0x10002), + ('\u{12403}', 0x10038), + ('\u{12404}', 0x1000c), + ('\u{12405}', 0x1003c), + ('\u{12406}', 0x1000f), + ('\u{12407}', 0x1003f), + ('\u{12408}', 0x10006), + ('\u{12409}', 0x10002), + ('\u{1240a}', 0x10038), + ('\u{1240b}', 0x1000c), + ('\u{1240c}', 0x1003c), + ('\u{1240d}', 0x1000f), + ('\u{1240e}', 0x1003f), + ('\u{1240f}', 0x10002), + ('\u{12410}', 0x10038), + ('\u{12411}', 0x1000c), + ('\u{12412}', 0x1003c), + ('\u{12413}', 0x1000f), + ('\u{12414}', 0x1003f), + ('\u{12415}', 0x10000), + ('\u{12416}', 0x10005), + ('\u{12417}', 0x10006), + ('\u{12418}', 0x10002), + ('\u{12419}', 0x10038), + ('\u{1241a}', 0x1000c), + ('\u{1241b}', 0x1003c), + ('\u{1241c}', 0x1000f), + ('\u{1241d}', 0x1003f), + ('\u{1241e}', 0x10000), + ('\u{1241f}', 0x10005), + ('\u{12420}', 0x10006), + ('\u{12421}', 0x10002), + ('\u{12422}', 0x10038), + ('\u{12423}', 0x10005), + ('\u{12424}', 0x10006), + ('\u{12425}', 0x10006), + ('\u{12426}', 0x10002), + ('\u{12427}', 0x10038), + ('\u{12428}', 0x1000c), + ('\u{12429}', 0x1003c), + ('\u{1242a}', 0x1000f), + ('\u{1242b}', 0x1003f), + ('\u{1242c}', 0x10000), + ('\u{1242d}', 0x10005), + ('\u{1242e}', 0x10006), + ('\u{1242f}', 0x10006), + ('\u{12430}', 0x10002), + ('\u{12431}', 0x10038), + ('\u{12432}', 0x60170), + ('\u{12433}', 0x60176), + ('\u{12434}', 0x10000), + ('\u{12435}', 0x10005), + ('\u{12436}', 0x10006), + ('\u{12437}', 0x10006), + ('\u{12438}', 0x10002), + ('\u{12439}', 0x10038), + ('\u{1243a}', 0x10006), + ('\u{1243b}', 0x10006), + ('\u{1243c}', 0x10002), + ('\u{1243d}', 0x10002), + ('\u{1243e}', 0x10002), + ('\u{1243f}', 0x10002), + ('\u{12440}', 0x1000c), + ('\u{12441}', 0x1003c), + ('\u{12442}', 0x1003c), + ('\u{12443}', 0x1003c), + ('\u{12444}', 0x1000f), + ('\u{12445}', 0x1000f), + ('\u{12446}', 0x1003f), + ('\u{12447}', 0x1003f), + ('\u{12448}', 0x1003f), + ('\u{12449}', 0x1003f), + ('\u{1244a}', 0x10005), + ('\u{1244b}', 0x10006), + ('\u{1244c}', 0x10002), + ('\u{1244d}', 0x10038), + ('\u{1244e}', 0x1000c), + ('\u{1244f}', 0x10000), + ('\u{12450}', 0x10005), + ('\u{12451}', 0x10006), + ('\u{12452}', 0x10002), + ('\u{12453}', 0x10002), + ('\u{12454}', 0x10038), + ('\u{12455}', 0x10038), + ('\u{12456}', 0x10005), + ('\u{12457}', 0x10006), + ('\u{12458}', 0x10000), + ('\u{12459}', 0x10005), + ('\u{1245a}', 0x3006d), + ('\u{1245b}', 0x30070), + ('\u{1245c}', 0x3007f), + ('\u{1245d}', 0x3006d), + ('\u{1245e}', 0x30070), + ('\u{1245f}', 0x3000d), + ('\u{12460}', 0x30000), + ('\u{12461}', 0x3007c), + ('\u{12462}', 0x30000), + ('\u{12463}', 0x30000), + ('\u{12464}', 0x30003), + ('\u{12465}', 0x3006d), + ('\u{12466}', 0x30070), + ('\u{12467}', 0x20024), + ('\u{12468}', 0x20058), + ('\u{12469}', 0x10002), + ('\u{1246a}', 0x10038), + ('\u{1246b}', 0x1000c), + ('\u{1246c}', 0x1003c), + ('\u{1246d}', 0x1000f), + ('\u{1246e}', 0x1003f), + ('\u{16a60}', 0xc0000000), + ('\u{16a61}', 0xc0000001), + ('\u{16a62}', 0xc0000002), + ('\u{16a63}', 0xc0000003), + ('\u{16a64}', 0xc0000004), + ('\u{16a65}', 0xc0000005), + ('\u{16a66}', 0xc0000006), + ('\u{16a67}', 0xc0000007), + ('\u{16a68}', 0xc0000008), + ('\u{16a69}', 0xc0000009), + ('\u{16b50}', 0xc0000000), + ('\u{16b51}', 0xc0000001), + ('\u{16b52}', 0xc0000002), + ('\u{16b53}', 0xc0000003), + ('\u{16b54}', 0xc0000004), + ('\u{16b55}', 0xc0000005), + ('\u{16b56}', 0xc0000006), + ('\u{16b57}', 0xc0000007), + ('\u{16b58}', 0xc0000008), + ('\u{16b59}', 0xc0000009), + ('\u{16b5b}', 0x20014), + ('\u{16b5c}', 0x30016), + ('\u{16b5d}', 0x5005e), + ('\u{16b5e}', 0x7017c), + ('\u{16b5f}', 0x90183), + ('\u{16b60}', 0xb018c), + ('\u{16b61}', 0xd0197), + ('\u{1d360}', 0x10000), + ('\u{1d361}', 0x10005), + ('\u{1d362}', 0x10006), + ('\u{1d363}', 0x10002), + ('\u{1d364}', 0x10038), + ('\u{1d365}', 0x1000c), + ('\u{1d366}', 0x1003c), + ('\u{1d367}', 0x1000f), + ('\u{1d368}', 0x1003f), + ('\u{1d369}', 0x20014), + ('\u{1d36a}', 0x2002c), + ('\u{1d36b}', 0x20056), + ('\u{1d36c}', 0x20024), + ('\u{1d36d}', 0x20058), + ('\u{1d36e}', 0x20020), + ('\u{1d36f}', 0x2005a), + ('\u{1d370}', 0x20028), + ('\u{1d371}', 0x2005c), + ('\u{1d7ce}', 0xc0000000), + ('\u{1d7cf}', 0xc0000001), + ('\u{1d7d0}', 0xc0000002), + ('\u{1d7d1}', 0xc0000003), + ('\u{1d7d2}', 0xc0000004), + ('\u{1d7d3}', 0xc0000005), + ('\u{1d7d4}', 0xc0000006), + ('\u{1d7d5}', 0xc0000007), + ('\u{1d7d6}', 0xc0000008), + ('\u{1d7d7}', 0xc0000009), + ('\u{1d7d8}', 0xc0000000), + ('\u{1d7d9}', 0xc0000001), + ('\u{1d7da}', 0xc0000002), + ('\u{1d7db}', 0xc0000003), + ('\u{1d7dc}', 0xc0000004), + ('\u{1d7dd}', 0xc0000005), + ('\u{1d7de}', 0xc0000006), + ('\u{1d7df}', 0xc0000007), + ('\u{1d7e0}', 0xc0000008), + ('\u{1d7e1}', 0xc0000009), + ('\u{1d7e2}', 0xc0000000), + ('\u{1d7e3}', 0xc0000001), + ('\u{1d7e4}', 0xc0000002), + ('\u{1d7e5}', 0xc0000003), + ('\u{1d7e6}', 0xc0000004), + ('\u{1d7e7}', 0xc0000005), + ('\u{1d7e8}', 0xc0000006), + ('\u{1d7e9}', 0xc0000007), + ('\u{1d7ea}', 0xc0000008), + ('\u{1d7eb}', 0xc0000009), + ('\u{1d7ec}', 0xc0000000), + ('\u{1d7ed}', 0xc0000001), + ('\u{1d7ee}', 0xc0000002), + ('\u{1d7ef}', 0xc0000003), + ('\u{1d7f0}', 0xc0000004), + ('\u{1d7f1}', 0xc0000005), + ('\u{1d7f2}', 0xc0000006), + ('\u{1d7f3}', 0xc0000007), + ('\u{1d7f4}', 0xc0000008), + ('\u{1d7f5}', 0xc0000009), + ('\u{1d7f6}', 0xc0000000), + ('\u{1d7f7}', 0xc0000001), + ('\u{1d7f8}', 0xc0000002), + ('\u{1d7f9}', 0xc0000003), + ('\u{1d7fa}', 0xc0000004), + ('\u{1d7fb}', 0xc0000005), + ('\u{1d7fc}', 0xc0000006), + ('\u{1d7fd}', 0xc0000007), + ('\u{1d7fe}', 0xc0000008), + ('\u{1d7ff}', 0xc0000009), + ('\u{1e8c7}', 0x10000), + ('\u{1e8c8}', 0x10005), + ('\u{1e8c9}', 0x10006), + ('\u{1e8ca}', 0x10002), + ('\u{1e8cb}', 0x10038), + ('\u{1e8cc}', 0x1000c), + ('\u{1e8cd}', 0x1003c), + ('\u{1e8ce}', 0x1000f), + ('\u{1e8cf}', 0x1003f), + ('\u{1e950}', 0xc0000000), + ('\u{1e951}', 0xc0000001), + ('\u{1e952}', 0xc0000002), + ('\u{1e953}', 0xc0000003), + ('\u{1e954}', 0xc0000004), + ('\u{1e955}', 0xc0000005), + ('\u{1e956}', 0xc0000006), + ('\u{1e957}', 0xc0000007), + ('\u{1e958}', 0xc0000008), + ('\u{1e959}', 0xc0000009), + ('\u{1f100}', 0x80000000), + ('\u{1f101}', 0x80000000), + ('\u{1f102}', 0x80000001), + ('\u{1f103}', 0x80000002), + ('\u{1f104}', 0x80000003), + ('\u{1f105}', 0x80000004), + ('\u{1f106}', 0x80000005), + ('\u{1f107}', 0x80000006), + ('\u{1f108}', 0x80000007), + ('\u{1f109}', 0x80000008), + ('\u{1f10a}', 0x80000009), + ('\u{1f10b}', 0x10015), + ('\u{1f10c}', 0x10015), + ('\u{2f890}', 0x1003f), +]) diff --git a/unic/ucd/numeric/tables/unicode_version.rsv b/unic/ucd/numeric/tables/unicode_version.rsv new file mode 100644 index 00000000..63d0ef15 --- /dev/null +++ b/unic/ucd/numeric/tables/unicode_version.rsv @@ -0,0 +1,3 @@ +// WARNING: Auto-generated by the `unic-gen` crate. +// WARNING: DO NOT EDIT MANUALLY! +UnicodeVersion { major: 10, minor: 0, micro: 0 } diff --git a/unic/ucd/src/lib.rs b/unic/ucd/src/lib.rs index 90432b1d..f3423bea 100644 --- a/unic/ucd/src/lib.rs +++ b/unic/ucd/src/lib.rs @@ -37,6 +37,7 @@ pub use unic_ucd_ident as ident; pub use unic_ucd_name as name; pub use unic_ucd_name_aliases as name_aliases; pub use unic_ucd_normal as normal; +pub use unic_ucd_numeric as numeric; pub use unic_ucd_segment as segment; pub use crate::version::UnicodeVersion; @@ -81,6 +82,8 @@ pub use crate::normal::CanonicalCombiningClass; pub use crate::name_aliases::{name_aliases_of, NameAliasType}; +pub use crate::numeric::NumericValue; + pub use crate::segment::{GraphemeClusterBreak, SentenceBreak, WordBreak}; mod pkg_info;