aboutsummaryrefslogtreecommitdiffstats
path: root/src/constant.rs
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-08 15:52:16 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-08 15:52:16 +0200
commit4c06c8554c35887f8f5147783953b2b7e7c2327f (patch)
tree1b2463848a3ae4c645f7f1a325877ee829ab65c5 /src/constant.rs
downloadmarkdown-rs-4c06c8554c35887f8f5147783953b2b7e7c2327f.tar.gz
markdown-rs-4c06c8554c35887f8f5147783953b2b7e7c2327f.tar.bz2
markdown-rs-4c06c8554c35887f8f5147783953b2b7e7c2327f.zip
.
Diffstat (limited to 'src/constant.rs')
-rw-r--r--src/constant.rs2561
1 files changed, 2561 insertions, 0 deletions
diff --git a/src/constant.rs b/src/constant.rs
new file mode 100644
index 0000000..332fdaf
--- /dev/null
+++ b/src/constant.rs
@@ -0,0 +1,2561 @@
+//! Constants needed to parse markdown.
+//!
+//! Most of these constants are magic numbers, such as the number of markers
+//! needed to parse [code (fenced)][code_fenced]
+//! ([`CODE_FENCED_SEQUENCE_SIZE_MIN`][]) or the max number of allowed markers
+//! in a [heading (atx)][heading_atx]
+//! ([`HEADING_ATX_OPENING_FENCE_SIZE_MAX`][]).
+//!
+//! Some constants are instead lists of things, such as the list of tag names
+//! considered in the **raw** production of [HTML (flow)][html_flow]
+//! ([`HTML_RAW_NAMES`][]), or the list of allowed named character references
+//! ([`CHARACTER_REFERENCE_NAMES`][]).
+//!
+//! [code_fenced]: crate::construct::code_fenced
+//! [heading_atx]: crate::construct::heading_atx
+//! [html_flow]: crate::construct::html_flow
+
+/// The number of characters that form a tab stop.
+///
+/// This relates to the number of whitespace characters needed to form certain
+/// constructs in markdown, most notable the whitespace required to form
+/// [code (indented)][code_indented].
+///
+/// <!-- To do: link to somewhere that discusses virtual spaces. -->
+/// <!-- Ref: https://github.com/syntax-tree/mdast-util-to-markdown/issues/51 -->
+///
+/// [code_indented]: crate::construct::code_indented
+pub const TAB_SIZE: usize = 4;
+
+/// The number of markers needed for a [thematic break][thematic_break] to form.
+///
+/// Like many things in markdown, the number is `3`.
+///
+/// [thematic_break]: crate::construct::thematic_break
+pub const THEMATIC_BREAK_MARKER_COUNT_MIN: usize = 3;
+
+/// The max number of markers allowed to form a [heading (atx)][heading_atx].
+///
+/// This limitation is imposed by HTML, which imposes a max heading rank of
+/// `6`.
+///
+/// [heading_atx]: crate::construct::heading_atx
+pub const HEADING_ATX_OPENING_FENCE_SIZE_MAX: usize = 6;
+
+/// The number of markers needed for [code (fenced)][code_fenced] to form.
+///
+/// Like many things in markdown, the number is `3`.
+///
+/// [code_fenced]: crate::construct::code_fenced
+pub const CODE_FENCED_SEQUENCE_SIZE_MIN: usize = 3;
+
+/// List of HTML tag names that form the **raw** production of
+/// [HTML (flow)][html_flow].
+///
+/// The **raw** production allows blank lines and thus no interleaving with
+/// markdown.
+/// Tag name matching must be performed insensitive to case, and thus this list
+/// includes lowercase tag names.
+///
+/// The number of the longest tag name is also stored as a constant in
+/// [`HTML_RAW_SIZE_MAX`][].
+///
+/// > 👉 **Note**: `textarea` was added in `CommonMark@0.30`.
+///
+/// ## References
+///
+/// * [*§ 4.6 HTML blocks* in `CommonMark`](https://spec.commonmark.org/0.30/#html-blocks)
+///
+/// [html_flow]: crate::construct::html_flow
+pub const HTML_RAW_NAMES: [&str; 4] = ["pre", "script", "style", "textarea"];
+
+/// The number of the longest tag name in [`HTML_RAW_NAMES`][].
+///
+/// This is currently the size of `textarea`.
+pub const HTML_RAW_SIZE_MAX: usize = 8;
+
+/// List of HTML tag names that form the **basic** production of
+/// [HTML (flow)][html_flow].
+///
+/// The **basic** production allows interleaving HTML and markdown with blank lines
+/// and allows flow (block) elements to interrupt content.
+/// Tag name matching must be performed insensitive to case, and thus this list
+/// includes lowercase tag names.
+///
+/// Tag names not on this list result in the **complete** production.
+///
+/// > 👉 **Note**: `source` was removed on `main` of the `CommonMark` spec and
+/// > is slated to be released in `CommonMark@0.31`.
+///
+/// ## References
+///
+/// * [*§ 4.6 HTML blocks* in `CommonMark`](https://spec.commonmark.org/0.30/#html-blocks)
+/// * [*Remove source element as HTML block start condition* as `commonmark/commonmark-spec#710`](https://github.com/commonmark/commonmark-spec/pull/710)
+///
+/// [html_flow]: crate::construct::html_flow
+pub const HTML_BLOCK_NAMES: [&str; 61] = [
+ "address",
+ "article",
+ "aside",
+ "base",
+ "basefont",
+ "blockquote",
+ "body",
+ "caption",
+ "center",
+ "col",
+ "colgroup",
+ "dd",
+ "details",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "footer",
+ "form",
+ "frame",
+ "frameset",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hr",
+ "html",
+ "iframe",
+ "legend",
+ "li",
+ "link",
+ "main",
+ "menu",
+ "menuitem",
+ "nav",
+ "noframes",
+ "ol",
+ "optgroup",
+ "option",
+ "p",
+ "param",
+ "section",
+ "summary",
+ "table",
+ "tbody",
+ "td",
+ "tfoot",
+ "th",
+ "thead",
+ "title",
+ "tr",
+ "track",
+ "ul",
+];
+
+/// The max number of characters in a hexadecimal numeric
+/// [character reference][character_reference].
+///
+/// To illustrate, this allows `&#xff9999;` and disallows `&#xff99990;`.
+/// This limit is imposed because all bigger numbers are invalid.
+///
+/// [character_reference]: crate::construct::character_reference
+pub const CHARACTER_REFERENCE_HEXADECIMAL_SIZE_MAX: usize = 6;
+
+/// The max number of characters in a decimal numeric
+/// [character reference][character_reference].
+///
+/// To illustrate, this allows `&#9999999;` and disallows `&#99999990;`.
+/// This limit is imposed because all bigger numbers are invalid.
+///
+/// [character_reference]: crate::construct::character_reference
+pub const CHARACTER_REFERENCE_DECIMAL_SIZE_MAX: usize = 7;
+
+/// The max number of characters in a named
+/// [character reference][character_reference].
+///
+/// This is the number of the longest name in [`CHARACTER_REFERENCE_NAMES`][].
+/// It allows `&CounterClockwiseContourIntegral;` and prevents the parser from
+/// continuing for eons.
+///
+/// [character_reference]: crate::construct::character_reference
+pub const CHARACTER_REFERENCE_NAMED_SIZE_MAX: usize = 31;
+
+/// List of names that can form a named
+/// [character reference][character_reference].
+///
+/// This list is sensitive to casing.
+///
+/// The number of the longest name (`CounterClockwiseContourIntegral`) is also
+/// stored as a constant in [`CHARACTER_REFERENCE_NAMED_SIZE_MAX`][].
+///
+/// The corresponding values of this list are stored in
+/// [`CHARACTER_REFERENCE_VALUES`][].
+/// They correspond through their index.
+///
+/// ## References
+///
+/// * [*§ 2.5 Entity and numeric character references* in `CommonMark`](https://spec.commonmark.org/0.30/#entity-and-numeric-character-references)
+///
+/// [character_reference]: crate::construct::character_reference
+pub const CHARACTER_REFERENCE_NAMES: [&str; 2222] = [
+ "AEli",
+ "AElig",
+ "AM",
+ "AMP",
+ "Aacut",
+ "Aacute",
+ "Abreve",
+ "Acir",
+ "Acirc",
+ "Acy",
+ "Afr",
+ "Agrav",
+ "Agrave",
+ "Alpha",
+ "Amacr",
+ "And",
+ "Aogon",
+ "Aopf",
+ "ApplyFunction",
+ "Arin",
+ "Aring",
+ "Ascr",
+ "Assign",
+ "Atild",
+ "Atilde",
+ "Aum",
+ "Auml",
+ "Backslash",
+ "Barv",
+ "Barwed",
+ "Bcy",
+ "Because",
+ "Bernoullis",
+ "Beta",
+ "Bfr",
+ "Bopf",
+ "Breve",
+ "Bscr",
+ "Bumpeq",
+ "CHcy",
+ "COP",
+ "COPY",
+ "Cacute",
+ "Cap",
+ "CapitalDifferentialD",
+ "Cayleys",
+ "Ccaron",
+ "Ccedi",
+ "Ccedil",
+ "Ccirc",
+ "Cconint",
+ "Cdot",
+ "Cedilla",
+ "CenterDot",
+ "Cfr",
+ "Chi",
+ "CircleDot",
+ "CircleMinus",
+ "CirclePlus",
+ "CircleTimes",
+ "ClockwiseContourIntegral",
+ "CloseCurlyDoubleQuote",
+ "CloseCurlyQuote",
+ "Colon",
+ "Colone",
+ "Congruent",
+ "Conint",
+ "ContourIntegral",
+ "Copf",
+ "Coproduct",
+ "CounterClockwiseContourIntegral",
+ "Cross",
+ "Cscr",
+ "Cup",
+ "CupCap",
+ "DD",
+ "DDotrahd",
+ "DJcy",
+ "DScy",
+ "DZcy",
+ "Dagger",
+ "Darr",
+ "Dashv",
+ "Dcaron",
+ "Dcy",
+ "Del",
+ "Delta",
+ "Dfr",
+ "DiacriticalAcute",
+ "DiacriticalDot",
+ "DiacriticalDoubleAcute",
+ "DiacriticalGrave",
+ "DiacriticalTilde",
+ "Diamond",
+ "DifferentialD",
+ "Dopf",
+ "Dot",
+ "DotDot",
+ "DotEqual",
+ "DoubleContourIntegral",
+ "DoubleDot",
+ "DoubleDownArrow",
+ "DoubleLeftArrow",
+ "DoubleLeftRightArrow",
+ "DoubleLeftTee",
+ "DoubleLongLeftArrow",
+ "DoubleLongLeftRightArrow",
+ "DoubleLongRightArrow",
+ "DoubleRightArrow",
+ "DoubleRightTee",
+ "DoubleUpArrow",
+ "DoubleUpDownArrow",
+ "DoubleVerticalBar",
+ "DownArrow",
+ "DownArrowBar",
+ "DownArrowUpArrow",
+ "DownBreve",
+ "DownLeftRightVector",
+ "DownLeftTeeVector",
+ "DownLeftVector",
+ "DownLeftVectorBar",
+ "DownRightTeeVector",
+ "DownRightVector",
+ "DownRightVectorBar",
+ "DownTee",
+ "DownTeeArrow",
+ "Downarrow",
+ "Dscr",
+ "Dstrok",
+ "ENG",
+ "ET",
+ "ETH",
+ "Eacut",
+ "Eacute",
+ "Ecaron",
+ "Ecir",
+ "Ecirc",
+ "Ecy",
+ "Edot",
+ "Efr",
+ "Egrav",
+ "Egrave",
+ "Element",
+ "Emacr",
+ "EmptySmallSquare",
+ "EmptyVerySmallSquare",
+ "Eogon",
+ "Eopf",
+ "Epsilon",
+ "Equal",
+ "EqualTilde",
+ "Equilibrium",
+ "Escr",
+ "Esim",
+ "Eta",
+ "Eum",
+ "Euml",
+ "Exists",
+ "ExponentialE",
+ "Fcy",
+ "Ffr",
+ "FilledSmallSquare",
+ "FilledVerySmallSquare",
+ "Fopf",
+ "ForAll",
+ "Fouriertrf",
+ "Fscr",
+ "GJcy",
+ "G",
+ "GT",
+ "Gamma",
+ "Gammad",
+ "Gbreve",
+ "Gcedil",
+ "Gcirc",
+ "Gcy",
+ "Gdot",
+ "Gfr",
+ "Gg",
+ "Gopf",
+ "GreaterEqual",
+ "GreaterEqualLess",
+ "GreaterFullEqual",
+ "GreaterGreater",
+ "GreaterLess",
+ "GreaterSlantEqual",
+ "GreaterTilde",
+ "Gscr",
+ "Gt",
+ "HARDcy",
+ "Hacek",
+ "Hat",
+ "Hcirc",
+ "Hfr",
+ "HilbertSpace",
+ "Hopf",
+ "HorizontalLine",
+ "Hscr",
+ "Hstrok",
+ "HumpDownHump",
+ "HumpEqual",
+ "IEcy",
+ "IJlig",
+ "IOcy",
+ "Iacut",
+ "Iacute",
+ "Icir",
+ "Icirc",
+ "Icy",
+ "Idot",
+ "Ifr",
+ "Igrav",
+ "Igrave",
+ "Im",
+ "Imacr",
+ "ImaginaryI",
+ "Implies",
+ "Int",
+ "Integral",
+ "Intersection",
+ "InvisibleComma",
+ "InvisibleTimes",
+ "Iogon",
+ "Iopf",
+ "Iota",
+ "Iscr",
+ "Itilde",
+ "Iukcy",
+ "Ium",
+ "Iuml",
+ "Jcirc",
+ "Jcy",
+ "Jfr",
+ "Jopf",
+ "Jscr",
+ "Jsercy",
+ "Jukcy",
+ "KHcy",
+ "KJcy",
+ "Kappa",
+ "Kcedil",
+ "Kcy",
+ "Kfr",
+ "Kopf",
+ "Kscr",
+ "LJcy",
+ "L",
+ "LT",
+ "Lacute",
+ "Lambda",
+ "Lang",
+ "Laplacetrf",
+ "Larr",
+ "Lcaron",
+ "Lcedil",
+ "Lcy",
+ "LeftAngleBracket",
+ "LeftArrow",
+ "LeftArrowBar",
+ "LeftArrowRightArrow",
+ "LeftCeiling",
+ "LeftDoubleBracket",
+ "LeftDownTeeVector",
+ "LeftDownVector",
+ "LeftDownVectorBar",
+ "LeftFloor",
+ "LeftRightArrow",
+ "LeftRightVector",
+ "LeftTee",
+ "LeftTeeArrow",
+ "LeftTeeVector",
+ "LeftTriangle",
+ "LeftTriangleBar",
+ "LeftTriangleEqual",
+ "LeftUpDownVector",
+ "LeftUpTeeVector",
+ "LeftUpVector",
+ "LeftUpVectorBar",
+ "LeftVector",
+ "LeftVectorBar",
+ "Leftarrow",
+ "Leftrightarrow",
+ "LessEqualGreater",
+ "LessFullEqual",
+ "LessGreater",
+ "LessLess",
+ "LessSlantEqual",
+ "LessTilde",
+ "Lfr",
+ "Ll",
+ "Lleftarrow",
+ "Lmidot",
+ "LongLeftArrow",
+ "LongLeftRightArrow",
+ "LongRightArrow",
+ "Longleftarrow",
+ "Longleftrightarrow",
+ "Longrightarrow",
+ "Lopf",
+ "LowerLeftArrow",
+ "LowerRightArrow",
+ "Lscr",
+ "Lsh",
+ "Lstrok",
+ "Lt",
+ "Map",
+ "Mcy",
+ "MediumSpace",
+ "Mellintrf",
+ "Mfr",
+ "MinusPlus",
+ "Mopf",
+ "Mscr",
+ "Mu",
+ "NJcy",
+ "Nacute",
+ "Ncaron",
+ "Ncedil",
+ "Ncy",
+ "NegativeMediumSpace",
+ "NegativeThickSpace",
+ "NegativeThinSpace",
+ "NegativeVeryThinSpace",
+ "NestedGreaterGreater",
+ "NestedLessLess",
+ "NewLine",
+ "Nfr",
+ "NoBreak",
+ "NonBreakingSpace",
+ "Nopf",
+ "Not",
+ "NotCongruent",
+ "NotCupCap",
+ "NotDoubleVerticalBar",
+ "NotElement",
+ "NotEqual",
+ "NotEqualTilde",
+ "NotExists",
+ "NotGreater",
+ "NotGreaterEqual",
+ "NotGreaterFullEqual",
+ "NotGreaterGreater",
+ "NotGreaterLess",
+ "NotGreaterSlantEqual",
+ "NotGreaterTilde",
+ "NotHumpDownHump",
+ "NotHumpEqual",
+ "NotLeftTriangle",
+ "NotLeftTriangleBar",
+ "NotLeftTriangleEqual",
+ "NotLess",
+ "NotLessEqual",
+ "NotLessGreater",
+ "NotLessLess",
+ "NotLessSlantEqual",
+ "NotLessTilde",
+ "NotNestedGreaterGreater",
+ "NotNestedLessLess",
+ "NotPrecedes",
+ "NotPrecedesEqual",
+ "NotPrecedesSlantEqual",
+ "NotReverseElement",
+ "NotRightTriangle",
+ "NotRightTriangleBar",
+ "NotRightTriangleEqual",
+ "NotSquareSubset",
+ "NotSquareSubsetEqual",
+ "NotSquareSuperset",
+ "NotSquareSupersetEqual",
+ "NotSubset",
+ "NotSubsetEqual",
+ "NotSucceeds",
+ "NotSucceedsEqual",
+ "NotSucceedsSlantEqual",
+ "NotSucceedsTilde",
+ "NotSuperset",
+ "NotSupersetEqual",
+ "NotTilde",
+ "NotTildeEqual",
+ "NotTildeFullEqual",
+ "NotTildeTilde",
+ "NotVerticalBar",
+ "Nscr",
+ "Ntild",
+ "Ntilde",
+ "Nu",
+ "OElig",
+ "Oacut",
+ "Oacute",
+ "Ocir",
+ "Ocirc",
+ "Ocy",
+ "Odblac",
+ "Ofr",
+ "Ograv",
+ "Ograve",
+ "Omacr",
+ "Omega",
+ "Omicron",
+ "Oopf",
+ "OpenCurlyDoubleQuote",
+ "OpenCurlyQuote",
+ "Or",
+ "Oscr",
+ "Oslas",
+ "Oslash",
+ "Otild",
+ "Otilde",
+ "Otimes",
+ "Oum",
+ "Ouml",
+ "OverBar",
+ "OverBrace",
+ "OverBracket",
+ "OverParenthesis",
+ "PartialD",
+ "Pcy",
+ "Pfr",
+ "Phi",
+ "Pi",
+ "PlusMinus",
+ "Poincareplane",
+ "Popf",
+ "Pr",
+ "Precedes",
+ "PrecedesEqual",
+ "PrecedesSlantEqual",
+ "PrecedesTilde",
+ "Prime",
+ "Product",
+ "Proportion",
+ "Proportional",
+ "Pscr",
+ "Psi",
+ "QUO",
+ "QUOT",
+ "Qfr",
+ "Qopf",
+ "Qscr",
+ "RBarr",
+ "RE",
+ "REG",
+ "Racute",
+ "Rang",
+ "Rarr",
+ "Rarrtl",
+ "Rcaron",
+ "Rcedil",
+ "Rcy",
+ "Re",
+ "ReverseElement",
+ "ReverseEquilibrium",
+ "ReverseUpEquilibrium",
+ "Rfr",
+ "Rho",
+ "RightAngleBracket",
+ "RightArrow",
+ "RightArrowBar",
+ "RightArrowLeftArrow",
+ "RightCeiling",
+ "RightDoubleBracket",
+ "RightDownTeeVector",
+ "RightDownVector",
+ "RightDownVectorBar",
+ "RightFloor",
+ "RightTee",
+ "RightTeeArrow",
+ "RightTeeVector",
+ "RightTriangle",
+ "RightTriangleBar",
+ "RightTriangleEqual",
+ "RightUpDownVector",
+ "RightUpTeeVector",
+ "RightUpVector",
+ "RightUpVectorBar",
+ "RightVector",
+ "RightVectorBar",
+ "Rightarrow",
+ "Ropf",
+ "RoundImplies",
+ "Rrightarrow",
+ "Rscr",
+ "Rsh",
+ "RuleDelayed",
+ "SHCHcy",
+ "SHcy",
+ "SOFTcy",
+ "Sacute",
+ "Sc",
+ "Scaron",
+ "Scedil",
+ "Scirc",
+ "Scy",
+ "Sfr",
+ "ShortDownArrow",
+ "ShortLeftArrow",
+ "ShortRightArrow",
+ "ShortUpArrow",
+ "Sigma",
+ "SmallCircle",
+ "Sopf",
+ "Sqrt",
+ "Square",
+ "SquareIntersection",
+ "SquareSubset",
+ "SquareSubsetEqual",
+ "SquareSuperset",
+ "SquareSupersetEqual",
+ "SquareUnion",
+ "Sscr",
+ "Star",
+ "Sub",
+ "Subset",
+ "SubsetEqual",
+ "Succeeds",
+ "SucceedsEqual",
+ "SucceedsSlantEqual",
+ "SucceedsTilde",
+ "SuchThat",
+ "Sum",
+ "Sup",
+ "Superset",
+ "SupersetEqual",
+ "Supset",
+ "THOR",
+ "THORN",
+ "TRADE",
+ "TSHcy",
+ "TScy",
+ "Tab",
+ "Tau",
+ "Tcaron",
+ "Tcedil",
+ "Tcy",
+ "Tfr",
+ "Therefore",
+ "Theta",
+ "ThickSpace",
+ "ThinSpace",
+ "Tilde",
+ "TildeEqual",
+ "TildeFullEqual",
+ "TildeTilde",
+ "Topf",
+ "TripleDot",
+ "Tscr",
+ "Tstrok",
+ "Uacut",
+ "Uacute",
+ "Uarr",
+ "Uarrocir",
+ "Ubrcy",
+ "Ubreve",
+ "Ucir",
+ "Ucirc",
+ "Ucy",
+ "Udblac",
+ "Ufr",
+ "Ugrav",
+ "Ugrave",
+ "Umacr",
+ "UnderBar",
+ "UnderBrace",
+ "UnderBracket",
+ "UnderParenthesis",
+ "Union",
+ "UnionPlus",
+ "Uogon",
+ "Uopf",
+ "UpArrow",
+ "UpArrowBar",
+ "UpArrowDownArrow",
+ "UpDownArrow",
+ "UpEquilibrium",
+ "UpTee",
+ "UpTeeArrow",
+ "Uparrow",
+ "Updownarrow",
+ "UpperLeftArrow",
+ "UpperRightArrow",
+ "Upsi",
+ "Upsilon",
+ "Uring",
+ "Uscr",
+ "Utilde",
+ "Uum",
+ "Uuml",
+ "VDash",
+ "Vbar",
+ "Vcy",
+ "Vdash",
+ "Vdashl",
+ "Vee",
+ "Verbar",
+ "Vert",
+ "VerticalBar",
+ "VerticalLine",
+ "VerticalSeparator",
+ "VerticalTilde",
+ "VeryThinSpace",
+ "Vfr",
+ "Vopf",
+ "Vscr",
+ "Vvdash",
+ "Wcirc",
+ "Wedge",
+ "Wfr",
+ "Wopf",
+ "Wscr",
+ "Xfr",
+ "Xi",
+ "Xopf",
+ "Xscr",
+ "YAcy",
+ "YIcy",
+ "YUcy",
+ "Yacut",
+ "Yacute",
+ "Ycirc",
+ "Ycy",
+ "Yfr",
+ "Yopf",
+ "Yscr",
+ "Yuml",
+ "ZHcy",
+ "Zacute",
+ "Zcaron",
+ "Zcy",
+ "Zdot",
+ "ZeroWidthSpace",
+ "Zeta",
+ "Zfr",
+ "Zopf",
+ "Zscr",
+ "aacut",
+ "aacute",
+ "abreve",
+ "ac",
+ "acE",
+ "acd",
+ "acir",
+ "acirc",
+ "acut",
+ "acute",
+ "acy",
+ "aeli",
+ "aelig",
+ "af",
+ "afr",
+ "agrav",
+ "agrave",
+ "alefsym",
+ "aleph",
+ "alpha",
+ "amacr",
+ "amalg",
+ "am",
+ "amp",
+ "and",
+ "andand",
+ "andd",
+ "andslope",
+ "andv",
+ "ang",
+ "ange",
+ "angle",
+ "angmsd",
+ "angmsdaa",
+ "angmsdab",
+ "angmsdac",
+ "angmsdad",
+ "angmsdae",
+ "angmsdaf",
+ "angmsdag",
+ "angmsdah",
+ "angrt",
+ "angrtvb",
+ "angrtvbd",
+ "angsph",
+ "angst",
+ "angzarr",
+ "aogon",
+ "aopf",
+ "ap",
+ "apE",
+ "apacir",
+ "ape",
+ "apid",
+ "apos",
+ "approx",
+ "approxeq",
+ "arin",
+ "aring",
+ "ascr",
+ "ast",
+ "asymp",
+ "asympeq",
+ "atild",
+ "atilde",
+ "aum",
+ "auml",
+ "awconint",
+ "awint",
+ "bNot",
+ "backcong",
+ "backepsilon",
+ "backprime",
+ "backsim",
+ "backsimeq",
+ "barvee",
+ "barwed",
+ "barwedge",
+ "bbrk",
+ "bbrktbrk",
+ "bcong",
+ "bcy",
+ "bdquo",
+ "becaus",
+ "because",
+ "bemptyv",
+ "bepsi",
+ "bernou",
+ "beta",
+ "beth",
+ "between",
+ "bfr",
+ "bigcap",
+ "bigcirc",
+ "bigcup",
+ "bigodot",
+ "bigoplus",
+ "bigotimes",
+ "bigsqcup",
+ "bigstar",
+ "bigtriangledown",
+ "bigtriangleup",
+ "biguplus",
+ "bigvee",
+ "bigwedge",
+ "bkarow",
+ "blacklozenge",
+ "blacksquare",
+ "blacktriangle",
+ "blacktriangledown",
+ "blacktriangleleft",
+ "blacktriangleright",
+ "blank",
+ "blk12",
+ "blk14",
+ "blk34",
+ "block",
+ "bne",
+ "bnequiv",
+ "bnot",
+ "bopf",
+ "bot",
+ "bottom",
+ "bowtie",
+ "boxDL",
+ "boxDR",
+ "boxDl",
+ "boxDr",
+ "boxH",
+ "boxHD",
+ "boxHU",
+ "boxHd",
+ "boxHu",
+ "boxUL",
+ "boxUR",
+ "boxUl",
+ "boxUr",
+ "boxV",
+ "boxVH",
+ "boxVL",
+ "boxVR",
+ "boxVh",
+ "boxVl",
+ "boxVr",
+ "boxbox",
+ "boxdL",
+ "boxdR",
+ "boxdl",
+ "boxdr",
+ "boxh",
+ "boxhD",
+ "boxhU",
+ "boxhd",
+ "boxhu",
+ "boxminus",
+ "boxplus",
+ "boxtimes",
+ "boxuL",
+ "boxuR",
+ "boxul",
+ "boxur",
+ "boxv",
+ "boxvH",
+ "boxvL",
+ "boxvR",
+ "boxvh",
+ "boxvl",
+ "boxvr",
+ "bprime",
+ "breve",
+ "brvba",
+ "brvbar",
+ "bscr",
+ "bsemi",
+ "bsim",
+ "bsime",
+ "bsol",
+ "bsolb",
+ "bsolhsub",
+ "bull",
+ "bullet",
+ "bump",
+ "bumpE",
+ "bumpe",
+ "bumpeq",
+ "cacute",
+ "cap",
+ "capand",
+ "capbrcup",
+ "capcap",
+ "capcup",
+ "capdot",
+ "caps",
+ "caret",
+ "caron",
+ "ccaps",
+ "ccaron",
+ "ccedi",
+ "ccedil",
+ "ccirc",
+ "ccups",
+ "ccupssm",
+ "cdot",
+ "cedi",
+ "cedil",
+ "cemptyv",
+ "cen",
+ "cent",
+ "centerdot",
+ "cfr",
+ "chcy",
+ "check",
+ "checkmark",
+ "chi",
+ "cir",
+ "cirE",
+ "circ",
+ "circeq",
+ "circlearrowleft",
+ "circlearrowright",
+ "circledR",
+ "circledS",
+ "circledast",
+ "circledcirc",
+ "circleddash",
+ "cire",
+ "cirfnint",
+ "cirmid",
+ "cirscir",
+ "clubs",
+ "clubsuit",
+ "colon",
+ "colone",
+ "coloneq",
+ "comma",
+ "commat",
+ "comp",
+ "compfn",
+ "complement",
+ "complexes",
+ "cong",
+ "congdot",
+ "conint",
+ "copf",
+ "coprod",
+ "cop",
+ "copy",
+ "copysr",
+ "crarr",
+ "cross",
+ "cscr",
+ "csub",
+ "csube",
+ "csup",
+ "csupe",
+ "ctdot",
+ "cudarrl",
+ "cudarrr",
+ "cuepr",
+ "cuesc",
+ "cularr",
+ "cularrp",
+ "cup",
+ "cupbrcap",
+ "cupcap",
+ "cupcup",
+ "cupdot",
+ "cupor",
+ "cups",
+ "curarr",
+ "curarrm",
+ "curlyeqprec",
+ "curlyeqsucc",
+ "curlyvee",
+ "curlywedge",
+ "curre",
+ "curren",
+ "curvearrowleft",
+ "curvearrowright",
+ "cuvee",
+ "cuwed",
+ "cwconint",
+ "cwint",
+ "cylcty",
+ "dArr",
+ "dHar",
+ "dagger",
+ "daleth",
+ "darr",
+ "dash",
+ "dashv",
+ "dbkarow",
+ "dblac",
+ "dcaron",
+ "dcy",
+ "dd",
+ "ddagger",
+ "ddarr",
+ "ddotseq",
+ "de",
+ "deg",
+ "delta",
+ "demptyv",
+ "dfisht",
+ "dfr",
+ "dharl",
+ "dharr",
+ "diam",
+ "diamond",
+ "diamondsuit",
+ "diams",
+ "die",
+ "digamma",
+ "disin",
+ "div",
+ "divid",
+ "divide",
+ "divideontimes",
+ "divonx",
+ "djcy",
+ "dlcorn",
+ "dlcrop",
+ "dollar",
+ "dopf",
+ "dot",
+ "doteq",
+ "doteqdot",
+ "dotminus",
+ "dotplus",
+ "dotsquare",
+ "doublebarwedge",
+ "downarrow",
+ "downdownarrows",
+ "downharpoonleft",
+ "downharpoonright",
+ "drbkarow",
+ "drcorn",
+ "drcrop",
+ "dscr",
+ "dscy",
+ "dsol",
+ "dstrok",
+ "dtdot",
+ "dtri",
+ "dtrif",
+ "duarr",
+ "duhar",
+ "dwangle",
+ "dzcy",
+ "dzigrarr",
+ "eDDot",
+ "eDot",
+ "eacut",
+ "eacute",
+ "easter",
+ "ecaron",
+ "ecir",
+ "ecirc",
+ "ecolon",
+ "ecy",
+ "edot",
+ "ee",
+ "efDot",
+ "efr",
+ "eg",
+ "egrav",
+ "egrave",
+ "egs",
+ "egsdot",
+ "el",
+ "elinters",
+ "ell",
+ "els",
+ "elsdot",
+ "emacr",
+ "empty",
+ "emptyset",
+ "emptyv",
+ "emsp13",
+ "emsp14",
+ "emsp",
+ "eng",
+ "ensp",
+ "eogon",
+ "eopf",
+ "epar",
+ "eparsl",
+ "eplus",
+ "epsi",
+ "epsilon",
+ "epsiv",
+ "eqcirc",
+ "eqcolon",
+ "eqsim",
+ "eqslantgtr",
+ "eqslantless",
+ "equals",
+ "equest",
+ "equiv",
+ "equivDD",
+ "eqvparsl",
+ "erDot",
+ "erarr",
+ "escr",
+ "esdot",
+ "esim",
+ "eta",
+ "et",
+ "eth",
+ "eum",
+ "euml",
+ "euro",
+ "excl",
+ "exist",
+ "expectation",
+ "exponentiale",
+ "fallingdotseq",
+ "fcy",
+ "female",
+ "ffilig",
+ "fflig",
+ "ffllig",
+ "ffr",
+ "filig",
+ "fjlig",
+ "flat",
+ "fllig",
+ "fltns",
+ "fnof",
+ "fopf",
+ "forall",
+ "fork",
+ "forkv",
+ "fpartint",
+ "frac1",
+ "frac12",
+ "frac13",
+ "frac14",
+ "frac15",
+ "frac16",
+ "frac18",
+ "frac23",
+ "frac25",
+ "frac3",
+ "frac34",
+ "frac35",
+ "frac38",
+ "frac45",
+ "frac56",
+ "frac58",
+ "frac78",
+ "frasl",
+ "frown",
+ "fscr",
+ "gE",
+ "gEl",
+ "gacute",
+ "gamma",
+ "gammad",
+ "gap",
+ "gbreve",
+ "gcirc",
+ "gcy",
+ "gdot",
+ "ge",
+ "gel",
+ "geq",
+ "geqq",
+ "geqslant",
+ "ges",
+ "gescc",
+ "gesdot",
+ "gesdoto",
+ "gesdotol",
+ "gesl",
+ "gesles",
+ "gfr",
+ "gg",
+ "ggg",
+ "gimel",
+ "gjcy",
+ "gl",
+ "glE",
+ "gla",
+ "glj",
+ "gnE",
+ "gnap",
+ "gnapprox",
+ "gne",
+ "gneq",
+ "gneqq",
+ "gnsim",
+ "gopf",
+ "grave",
+ "gscr",
+ "gsim",
+ "gsime",
+ "gsiml",
+ "g",
+ "gt",
+ "gtcc",
+ "gtcir",
+ "gtdot",
+ "gtlPar",
+ "gtquest",
+ "gtrapprox",
+ "gtrarr",
+ "gtrdot",
+ "gtreqless",
+ "gtreqqless",
+ "gtrless",
+ "gtrsim",
+ "gvertneqq",
+ "gvnE",
+ "hArr",
+ "hairsp",
+ "half",
+ "hamilt",
+ "hardcy",
+ "harr",
+ "harrcir",
+ "harrw",
+ "hbar",
+ "hcirc",
+ "hearts",
+ "heartsuit",
+ "hellip",
+ "hercon",
+ "hfr",
+ "hksearow",
+ "hkswarow",
+ "hoarr",
+ "homtht",
+ "hookleftarrow",
+ "hookrightarrow",
+ "hopf",
+ "horbar",
+ "hscr",
+ "hslash",
+ "hstrok",
+ "hybull",
+ "hyphen",
+ "iacut",
+ "iacute",
+ "ic",
+ "icir",
+ "icirc",
+ "icy",
+ "iecy",
+ "iexc",
+ "iexcl",
+ "iff",
+ "ifr",
+ "igrav",
+ "igrave",
+ "ii",
+ "iiiint",
+ "iiint",
+ "iinfin",
+ "iiota",
+ "ijlig",
+ "imacr",
+ "image",
+ "imagline",
+ "imagpart",
+ "imath",
+ "imof",
+ "imped",
+ "in",
+ "incare",
+ "infin",
+ "infintie",
+ "inodot",
+ "int",
+ "intcal",
+ "integers",
+ "intercal",
+ "intlarhk",
+ "intprod",
+ "iocy",
+ "iogon",
+ "iopf",
+ "iota",
+ "iprod",
+ "iques",
+ "iquest",
+ "iscr",
+ "isin",
+ "isinE",
+ "isindot",
+ "isins",
+ "isinsv",
+ "isinv",
+ "it",
+ "itilde",
+ "iukcy",
+ "ium",
+ "iuml",
+ "jcirc",
+ "jcy",
+ "jfr",
+ "jmath",
+ "jopf",
+ "jscr",
+ "jsercy",
+ "jukcy",
+ "kappa",
+ "kappav",
+ "kcedil",
+ "kcy",
+ "kfr",
+ "kgreen",
+ "khcy",
+ "kjcy",
+ "kopf",
+ "kscr",
+ "lAarr",
+ "lArr",
+ "lAtail",
+ "lBarr",
+ "lE",
+ "lEg",
+ "lHar",
+ "lacute",
+ "laemptyv",
+ "lagran",
+ "lambda",
+ "lang",
+ "langd",
+ "langle",
+ "lap",
+ "laqu",
+ "laquo",
+ "larr",
+ "larrb",
+ "larrbfs",
+ "larrfs",
+ "larrhk",
+ "larrlp",
+ "larrpl",
+ "larrsim",
+ "larrtl",
+ "lat",
+ "latail",
+ "late",
+ "lates",
+ "lbarr",
+ "lbbrk",
+ "lbrace",
+ "lbrack",
+ "lbrke",
+ "lbrksld",
+ "lbrkslu",
+ "lcaron",
+ "lcedil",
+ "lceil",
+ "lcub",
+ "lcy",
+ "ldca",
+ "ldquo",
+ "ldquor",
+ "ldrdhar",
+ "ldrushar",
+ "ldsh",
+ "le",
+ "leftarrow",
+ "leftarrowtail",
+ "leftharpoondown",
+ "leftharpoonup",
+ "leftleftarrows",
+ "leftrightarrow",
+ "leftrightarrows",
+ "leftrightharpoons",
+ "leftrightsquigarrow",
+ "leftthreetimes",
+ "leg",
+ "leq",
+ "leqq",
+ "leqslant",
+ "les",
+ "lescc",
+ "lesdot",
+ "lesdoto",
+ "lesdotor",
+ "lesg",
+ "lesges",
+ "lessapprox",
+ "lessdot",
+ "lesseqgtr",
+ "lesseqqgtr",
+ "lessgtr",
+ "lesssim",
+ "lfisht",
+ "lfloor",
+ "lfr",
+ "lg",
+ "lgE",
+ "lhard",
+ "lharu",
+ "lharul",
+ "lhblk",
+ "ljcy",
+ "ll",
+ "llarr",
+ "llcorner",
+ "llhard",
+ "lltri",
+ "lmidot",
+ "lmoust",
+ "lmoustache",
+ "lnE",
+ "lnap",
+ "lnapprox",
+ "lne",
+ "lneq",
+ "lneqq",
+ "lnsim",
+ "loang",
+ "loarr",
+ "lobrk",
+ "longleftarrow",
+ "longleftrightarrow",
+ "longmapsto",
+ "longrightarrow",
+ "looparrowleft",
+ "looparrowright",
+ "lopar",
+ "lopf",
+ "loplus",
+ "lotimes",
+ "lowast",
+ "lowbar",
+ "loz",
+ "lozenge",
+ "lozf",
+ "lpar",
+ "lparlt",
+ "lrarr",
+ "lrcorner",
+ "lrhar",
+ "lrhard",
+ "lrm",
+ "lrtri",
+ "lsaquo",
+ "lscr",
+ "lsh",
+ "lsim",
+ "lsime",
+ "lsimg",
+ "lsqb",
+ "lsquo",
+ "lsquor",
+ "lstrok",
+ "l",
+ "lt",
+ "ltcc",
+ "ltcir",
+ "ltdot",
+ "lthree",
+ "ltimes",
+ "ltlarr",
+ "ltquest",
+ "ltrPar",
+ "ltri",
+ "ltrie",
+ "ltrif",
+ "lurdshar",
+ "luruhar",
+ "lvertneqq",
+ "lvnE",
+ "mDDot",
+ "mac",
+ "macr",
+ "male",
+ "malt",
+ "maltese",
+ "map",
+ "mapsto",
+ "mapstodown",
+ "mapstoleft",
+ "mapstoup",
+ "marker",
+ "mcomma",
+ "mcy",
+ "mdash",
+ "measuredangle",
+ "mfr",
+ "mho",
+ "micr",
+ "micro",
+ "mid",
+ "midast",
+ "midcir",
+ "middo",
+ "middot",
+ "minus",
+ "minusb",
+ "minusd",
+ "minusdu",
+ "mlcp",
+ "mldr",
+ "mnplus",
+ "models",
+ "mopf",
+ "mp",
+ "mscr",
+ "mstpos",
+ "mu",
+ "multimap",
+ "mumap",
+ "nGg",
+ "nGt",
+ "nGtv",
+ "nLeftarrow",
+ "nLeftrightarrow",
+ "nLl",
+ "nLt",
+ "nLtv",
+ "nRightarrow",
+ "nVDash",
+ "nVdash",
+ "nabla",
+ "nacute",
+ "nang",
+ "nap",
+ "napE",
+ "napid",
+ "napos",
+ "napprox",
+ "natur",
+ "natural",
+ "naturals",
+ "nbs",
+ "nbsp",
+ "nbump",
+ "nbumpe",
+ "ncap",
+ "ncaron",
+ "ncedil",
+ "ncong",
+ "ncongdot",
+ "ncup",
+ "ncy",
+ "ndash",
+ "ne",
+ "neArr",
+ "nearhk",
+ "nearr",
+ "nearrow",
+ "nedot",
+ "nequiv",
+ "nesear",
+ "nesim",
+ "nexist",
+ "nexists",
+ "nfr",
+ "ngE",
+ "nge",
+ "ngeq",
+ "ngeqq",
+ "ngeqslant",
+ "nges",
+ "ngsim",
+ "ngt",
+ "ngtr",
+ "nhArr",
+ "nharr",
+ "nhpar",
+ "ni",
+ "nis",
+ "nisd",
+ "niv",
+ "njcy",
+ "nlArr",
+ "nlE",
+ "nlarr",
+ "nldr",
+ "nle",
+ "nleftarrow",
+ "nleftrightarrow",
+ "nleq",
+ "nleqq",
+ "nleqslant",
+ "nles",
+ "nless",
+ "nlsim",
+ "nlt",
+ "nltri",
+ "nltrie",
+ "nmid",
+ "nopf",
+ "no",
+ "not",
+ "notin",
+ "notinE",
+ "notindot",
+ "notinva",
+ "notinvb",
+ "notinvc",
+ "notni",
+ "notniva",
+ "notnivb",
+ "notnivc",
+ "npar",
+ "nparallel",
+ "nparsl",
+ "npart",
+ "npolint",
+ "npr",
+ "nprcue",
+ "npre",
+ "nprec",
+ "npreceq",
+ "nrArr",
+ "nrarr",
+ "nrarrc",
+ "nrarrw",
+ "nrightarrow",
+ "nrtri",
+ "nrtrie",
+ "nsc",
+ "nsccue",
+ "nsce",
+ "nscr",
+ "nshortmid",
+ "nshortparallel",
+ "nsim",
+ "nsime",
+ "nsimeq",
+ "nsmid",
+ "nspar",
+ "nsqsube",
+ "nsqsupe",
+ "nsub",
+ "nsubE",
+ "nsube",
+ "nsubset",
+ "nsubseteq",
+ "nsubseteqq",
+ "nsucc",
+ "nsucceq",
+ "nsup",
+ "nsupE",
+ "nsupe",
+ "nsupset",
+ "nsupseteq",
+ "nsupseteqq",
+ "ntgl",
+ "ntild",
+ "ntilde",
+ "ntlg",
+ "ntriangleleft",
+ "ntrianglelefteq",
+ "ntriangleright",
+ "ntrianglerighteq",
+ "nu",
+ "num",
+ "numero",
+ "numsp",
+ "nvDash",
+ "nvHarr",
+ "nvap",
+ "nvdash",
+ "nvge",
+ "nvgt",
+ "nvinfin",
+ "nvlArr",
+ "nvle",
+ "nvlt",
+ "nvltrie",
+ "nvrArr",
+ "nvrtrie",
+ "nvsim",
+ "nwArr",
+ "nwarhk",
+ "nwarr",
+ "nwarrow",
+ "nwnear",
+ "oS",
+ "oacut",
+ "oacute",
+ "oast",
+ "ocir",
+ "ocirc",
+ "ocy",
+ "odash",
+ "odblac",
+ "odiv",
+ "odot",
+ "odsold",
+ "oelig",
+ "ofcir",
+ "ofr",
+ "ogon",
+ "ograv",
+ "ograve",
+ "ogt",
+ "ohbar",
+ "ohm",
+ "oint",
+ "olarr",
+ "olcir",
+ "olcross",
+ "oline",
+ "olt",
+ "omacr",
+ "omega",
+ "omicron",
+ "omid",
+ "ominus",
+ "oopf",
+ "opar",
+ "operp",
+ "oplus",
+ "or",
+ "orarr",
+ "ord",
+ "order",
+ "orderof",
+ "ordf",
+ "ordm",
+ "origof",
+ "oror",
+ "orslope",
+ "orv",
+ "oscr",
+ "oslas",
+ "oslash",
+ "osol",
+ "otild",
+ "otilde",
+ "otimes",
+ "otimesas",
+ "oum",
+ "ouml",
+ "ovbar",
+ "par",
+ "para",
+ "parallel",
+ "parsim",
+ "parsl",
+ "part",
+ "pcy",
+ "percnt",
+ "period",
+ "permil",
+ "perp",
+ "pertenk",
+ "pfr",
+ "phi",
+ "phiv",
+ "phmmat",
+ "phone",
+ "pi",
+ "pitchfork",
+ "piv",
+ "planck",
+ "planckh",
+ "plankv",
+ "plus",
+ "plusacir",
+ "plusb",
+ "pluscir",
+ "plusdo",
+ "plusdu",
+ "pluse",
+ "plusm",
+ "plusmn",
+ "plussim",
+ "plustwo",
+ "pm",
+ "pointint",
+ "popf",
+ "poun",
+ "pound",
+ "pr",
+ "prE",
+ "prap",
+ "prcue",
+ "pre",
+ "prec",
+ "precapprox",
+ "preccurlyeq",
+ "preceq",
+ "precnapprox",
+ "precneqq",
+ "precnsim",
+ "precsim",
+ "prime",
+ "primes",
+ "prnE",
+ "prnap",
+ "prnsim",
+ "prod",
+ "profalar",
+ "profline",
+ "profsurf",
+ "prop",
+ "propto",
+ "prsim",
+ "prurel",
+ "pscr",
+ "psi",
+ "puncsp",
+ "qfr",
+ "qint",
+ "qopf",
+ "qprime",
+ "qscr",
+ "quaternions",
+ "quatint",
+ "quest",
+ "questeq",
+ "quo",
+ "quot",
+ "rAarr",
+ "rArr",
+ "rAtail",
+ "rBarr",
+ "rHar",
+ "race",
+ "racute",
+ "radic",
+ "raemptyv",
+ "rang",
+ "rangd",
+ "range",
+ "rangle",
+ "raqu",
+ "raquo",
+ "rarr",
+ "rarrap",
+ "rarrb",
+ "rarrbfs",
+ "rarrc",
+ "rarrfs",
+ "rarrhk",
+ "rarrlp",
+ "rarrpl",
+ "rarrsim",
+ "rarrtl",
+ "rarrw",
+ "ratail",
+ "ratio",
+ "rationals",
+ "rbarr",
+ "rbbrk",
+ "rbrace",
+ "rbrack",
+ "rbrke",
+ "rbrksld",
+ "rbrkslu",
+ "rcaron",
+ "rcedil",
+ "rceil",
+ "rcub",
+ "rcy",
+ "rdca",
+ "rdldhar",
+ "rdquo",
+ "rdquor",
+ "rdsh",
+ "real",
+ "realine",
+ "realpart",
+ "reals",
+ "rect",
+ "re",
+ "reg",
+ "rfisht",
+ "rfloor",
+ "rfr",
+ "rhard",
+ "rharu",
+ "rharul",
+ "rho",
+ "rhov",
+ "rightarrow",
+ "rightarrowtail",
+ "rightharpoondown",
+ "rightharpoonup",
+ "rightleftarrows",
+ "rightleftharpoons",
+ "rightrightarrows",
+ "rightsquigarrow",
+ "rightthreetimes",
+ "ring",
+ "risingdotseq",
+ "rlarr",
+ "rlhar",
+ "rlm",
+ "rmoust",
+ "rmoustache",
+ "rnmid",
+ "roang",
+ "roarr",
+ "robrk",
+ "ropar",
+ "ropf",
+ "roplus",
+ "rotimes",
+ "rpar",
+ "rpargt",
+ "rppolint",
+ "rrarr",
+ "rsaquo",
+ "rscr",
+ "rsh",
+ "rsqb",
+ "rsquo",
+ "rsquor",
+ "rthree",
+ "rtimes",
+ "rtri",
+ "rtrie",
+ "rtrif",
+ "rtriltri",
+ "ruluhar",
+ "rx",
+ "sacute",
+ "sbquo",
+ "sc",
+ "scE",
+ "scap",
+ "scaron",
+ "sccue",
+ "sce",
+ "scedil",
+ "scirc",
+ "scnE",
+ "scnap",
+ "scnsim",
+ "scpolint",
+ "scsim",
+ "scy",
+ "sdot",
+ "sdotb",
+ "sdote",
+ "seArr",
+ "searhk",
+ "searr",
+ "searrow",
+ "sec",
+ "sect",
+ "semi",
+ "seswar",
+ "setminus",
+ "setmn",
+ "sext",
+ "sfr",
+ "sfrown",
+ "sharp",
+ "shchcy",
+ "shcy",
+ "shortmid",
+ "shortparallel",
+ "sh",
+ "shy",
+ "sigma",
+ "sigmaf",
+ "sigmav",
+ "sim",
+ "simdot",
+ "sime",
+ "simeq",
+ "simg",
+ "simgE",
+ "siml",
+ "simlE",
+ "simne",
+ "simplus",
+ "simrarr",
+ "slarr",
+ "smallsetminus",
+ "smashp",
+ "smeparsl",
+ "smid",
+ "smile",
+ "smt",
+ "smte",
+ "smtes",
+ "softcy",
+ "sol",
+ "solb",
+ "solbar",
+ "sopf",
+ "spades",
+ "spadesuit",
+ "spar",
+ "sqcap",
+ "sqcaps",
+ "sqcup",
+ "sqcups",
+ "sqsub",
+ "sqsube",
+ "sqsubset",
+ "sqsubseteq",
+ "sqsup",
+ "sqsupe",
+ "sqsupset",
+ "sqsupseteq",
+ "squ",
+ "square",
+ "squarf",
+ "squf",
+ "srarr",
+ "sscr",
+ "ssetmn",
+ "ssmile",
+ "sstarf",
+ "star",
+ "starf",
+ "straightepsilon",
+ "straightphi",
+ "strns",
+ "sub",
+ "subE",
+ "subdot",
+ "sube",
+ "subedot",
+ "submult",
+ "subnE",
+ "subne",
+ "subplus",
+ "subrarr",
+ "subset",
+ "subseteq",
+ "subseteqq",
+ "subsetneq",
+ "subsetneqq",
+ "subsim",
+ "subsub",
+ "subsup",
+ "succ",
+ "succapprox",
+ "succcurlyeq",
+ "succeq",
+ "succnapprox",
+ "succneqq",
+ "succnsim",
+ "succsim",
+ "sum",
+ "sung",
+ "sup",
+ "sup1",
+ "sup2",
+ "sup3",
+ "supE",
+ "supdot",
+ "supdsub",
+ "supe",
+ "supedot",
+ "suphsol",
+ "suphsub",
+ "suplarr",
+ "supmult",
+ "supnE",
+ "supne",
+ "supplus",
+ "supset",
+ "supseteq",
+ "supseteqq",
+ "supsetneq",
+ "supsetneqq",
+ "supsim",
+ "supsub",
+ "supsup",
+ "swArr",
+ "swarhk",
+ "swarr",
+ "swarrow",
+ "swnwar",
+ "szli",
+ "szlig",
+ "target",
+ "tau",
+ "tbrk",
+ "tcaron",
+ "tcedil",
+ "tcy",
+ "tdot",
+ "telrec",
+ "tfr",
+ "there4",
+ "therefore",
+ "theta",
+ "thetasym",
+ "thetav",
+ "thickapprox",
+ "thicksim",
+ "thinsp",
+ "thkap",
+ "thksim",
+ "thor",
+ "thorn",
+ "tilde",
+ "time",
+ "times",
+ "timesb",
+ "timesbar",
+ "timesd",
+ "tint",
+ "toea",
+ "top",
+ "topbot",
+ "topcir",
+ "topf",
+ "topfork",
+ "tosa",
+ "tprime",
+ "trade",
+ "triangle",
+ "triangledown",
+ "triangleleft",
+ "trianglelefteq",
+ "triangleq",
+ "triangleright",
+ "trianglerighteq",
+ "tridot",
+ "trie",
+ "triminus",
+ "triplus",
+ "trisb",
+ "tritime",
+ "trpezium",
+ "tscr",
+ "tscy",
+ "tshcy",
+ "tstrok",
+ "twixt",
+ "twoheadleftarrow",
+ "twoheadrightarrow",
+ "uArr",
+ "uHar",
+ "uacut",
+ "uacute",
+ "uarr",
+ "ubrcy",
+ "ubreve",
+ "ucir",
+ "ucirc",
+ "ucy",
+ "udarr",
+ "udblac",
+ "udhar",
+ "ufisht",
+ "ufr",
+ "ugrav",
+ "ugrave",
+ "uharl",
+ "uharr",
+ "uhblk",
+ "ulcorn",
+ "ulcorner",
+ "ulcrop",
+ "ultri",
+ "umacr",
+ "um",
+ "uml",
+ "uogon",
+ "uopf",
+ "uparrow",
+ "updownarrow",
+ "upharpoonleft",
+ "upharpoonright",
+ "uplus",
+ "upsi",
+ "upsih",
+ "upsilon",
+ "upuparrows",
+ "urcorn",
+ "urcorner",
+ "urcrop",
+ "uring",
+ "urtri",
+ "uscr",
+ "utdot",
+ "utilde",
+ "utri",
+ "utrif",
+ "uuarr",
+ "uum",
+ "uuml",
+ "uwangle",
+ "vArr",
+ "vBar",
+ "vBarv",
+ "vDash",
+ "vangrt",
+ "varepsilon",
+ "varkappa",
+ "varnothing",
+ "varphi",
+ "varpi",
+ "varpropto",
+ "varr",
+ "varrho",
+ "varsigma",
+ "varsubsetneq",
+ "varsubsetneqq",
+ "varsupsetneq",
+ "varsupsetneqq",
+ "vartheta",
+ "vartriangleleft",
+ "vartriangleright",
+ "vcy",
+ "vdash",
+ "vee",
+ "veebar",
+ "veeeq",
+ "vellip",
+ "verbar",
+ "vert",
+ "vfr",
+ "vltri",
+ "vnsub",
+ "vnsup",
+ "vopf",
+ "vprop",
+ "vrtri",
+ "vscr",
+ "vsubnE",
+ "vsubne",
+ "vsupnE",
+ "vsupne",
+ "vzigzag",
+ "wcirc",
+ "wedbar",
+ "wedge",
+ "wedgeq",
+ "weierp",
+ "wfr",
+ "wopf",
+ "wp",
+ "wr",
+ "wreath",
+ "wscr",
+ "xcap",
+ "xcirc",
+ "xcup",
+ "xdtri",
+ "xfr",
+ "xhArr",
+ "xharr",
+ "xi",
+ "xlArr",
+ "xlarr",
+ "xmap",
+ "xnis",
+ "xodot",
+ "xopf",
+ "xoplus",
+ "xotime",
+ "xrArr",
+ "xrarr",
+ "xscr",
+ "xsqcup",
+ "xuplus",
+ "xutri",
+ "xvee",
+ "xwedge",
+ "yacut",
+ "yacute",
+ "yacy",
+ "ycirc",
+ "ycy",
+ "ye",
+ "yen",
+ "yfr",
+ "yicy",
+ "yopf",
+ "yscr",
+ "yucy",
+ "yum",
+ "yuml",
+ "zacute",
+ "zcaron",
+ "zcy",
+ "zdot",
+ "zeetrf",
+ "zeta",
+ "zfr",
+ "zhcy",
+ "zigrarr",
+ "zopf",
+ "zscr",
+ "zwj",
+ "zwnj",
+];
+
+/// List of values corresponding to names of named
+/// [character references][character_reference].
+///
+/// The corresponding names of this list are stored in
+/// [`CHARACTER_REFERENCE_NAMES`][].
+/// They correspond through their index.
+///
+/// ## References
+///
+/// * [*§ 2.5 Entity and numeric character references* in `CommonMark`](https://spec.commonmark.org/0.30/#entity-and-numeric-character-references)
+///
+/// [character_reference]: crate::construct::character_reference
+pub const CHARACTER_REFERENCE_VALUES: [&str; 2222] = [
+ "Æ", "Æ", "&", "&", "Á", "Á", "Ă", "Â", "Â", "А", "𝔄", "À", "À", "Α", "Ā", "⩓", "Ą", "𝔸", "⁡",
+ "Å", "Å", "𝒜", "≔", "Ã", "Ã", "Ä", "Ä", "∖", "⫧", "⌆", "Б", "∵", "ℬ", "Β", "𝔅", "𝔹", "˘", "ℬ",
+ "≎", "Ч", "©", "©", "Ć", "⋒", "ⅅ", "ℭ", "Č", "Ç", "Ç", "Ĉ", "∰", "Ċ", "¸", "·", "ℭ", "Χ", "⊙",
+ "⊖", "⊕", "⊗", "∲", "”", "’", "∷", "⩴", "≡", "∯", "∮", "ℂ", "∐", "∳", "⨯", "𝒞", "⋓", "≍", "ⅅ",
+ "⤑", "Ђ", "Ѕ", "Џ", "‡", "↡", "⫤", "Ď", "Д", "∇", "Δ", "𝔇", "´", "˙", "˝", "`", "˜", "⋄", "ⅆ",
+ "𝔻", "¨", "⃜", "≐", "∯", "¨", "⇓", "⇐", "⇔", "⫤", "⟸", "⟺", "⟹", "⇒", "⊨", "⇑", "⇕", "∥", "↓",
+ "⤓", "⇵", "̑", "⥐", "⥞", "↽", "⥖", "⥟", "⇁", "⥗", "⊤", "↧", "⇓", "𝒟", "Đ", "Ŋ", "Ð", "Ð", "É",
+ "É", "Ě", "Ê", "Ê", "Э", "Ė", "𝔈", "È", "È", "∈", "Ē", "◻", "▫", "Ę", "𝔼", "Ε", "⩵", "≂", "⇌",
+ "ℰ", "⩳", "Η", "Ë", "Ë", "∃", "ⅇ", "Ф", "𝔉", "◼", "▪", "𝔽", "∀", "ℱ", "ℱ", "Ѓ", ">", ">", "Γ",
+ "Ϝ", "Ğ", "Ģ", "Ĝ", "Г", "Ġ", "𝔊", "⋙", "𝔾", "≥", "⋛", "≧", "⪢", "≷", "⩾", "≳", "𝒢", "≫", "Ъ",
+ "ˇ", "^", "Ĥ", "ℌ", "ℋ", "ℍ", "─", "ℋ", "Ħ", "≎", "≏", "Е", "IJ", "Ё", "Í", "Í", "Î", "Î", "И",
+ "İ", "ℑ", "Ì", "Ì", "ℑ", "Ī", "ⅈ", "⇒", "∬", "∫", "⋂", "⁣", "⁢", "Į", "𝕀", "Ι", "ℐ", "Ĩ", "І",
+ "Ï", "Ï", "Ĵ", "Й", "𝔍", "𝕁", "𝒥", "Ј", "Є", "Х", "Ќ", "Κ", "Ķ", "К", "𝔎", "𝕂", "𝒦", "Љ", "<",
+ "<", "Ĺ", "Λ", "⟪", "ℒ", "↞", "Ľ", "Ļ", "Л", "⟨", "←", "⇤", "⇆", "⌈", "⟦", "⥡", "⇃", "⥙", "⌊",
+ "↔", "⥎", "⊣", "↤", "⥚", "⊲", "⧏", "⊴", "⥑", "⥠", "↿", "⥘", "↼", "⥒", "⇐", "⇔", "⋚", "≦", "≶",
+ "⪡", "⩽", "≲", "𝔏", "⋘", "⇚", "Ŀ", "⟵", "⟷", "⟶", "⟸", "⟺", "⟹", "𝕃", "↙", "↘", "ℒ", "↰", "Ł",
+ "≪", "⤅", "М", " ", "ℳ", "𝔐", "∓", "𝕄", "ℳ", "Μ", "Њ", "Ń", "Ň", "Ņ", "Н", "\u{200B}",
+ "\u{200B}", "\u{200B}", "\u{200B}", "≫", "≪", "\n", "𝔑", "\u{2060}", " ", "ℕ", "⫬", "≢", "≭",
+ "∦", "∉", "≠", "≂̸", "∄", "≯", "≱", "≧̸", "≫̸", "≹", "⩾̸", "≵", "≎̸", "≏̸", "⋪", "⧏̸", "⋬", "≮", "≰",
+ "≸", "≪̸", "⩽̸", "≴", "⪢̸", "⪡̸", "⊀", "⪯̸", "⋠", "∌", "⋫", "⧐̸", "⋭", "⊏̸", "⋢", "⊐̸", "⋣", "⊂⃒", "⊈",
+ "⊁", "⪰̸", "⋡", "≿̸", "⊃⃒", "⊉", "≁", "≄", "≇", "≉", "∤", "𝒩", "Ñ", "Ñ", "Ν", "Œ", "Ó", "Ó", "Ô",
+ "Ô", "О", "Ő", "𝔒", "Ò", "Ò", "Ō", "Ω", "Ο", "𝕆", "“", "‘", "⩔", "𝒪", "Ø", "Ø", "Õ", "Õ", "⨷",
+ "Ö", "Ö", "‾", "⏞", "⎴", "⏜", "∂", "П", "𝔓", "Φ", "Π", "±", "ℌ", "ℙ", "⪻", "≺", "⪯", "≼", "≾",
+ "″", "∏", "∷", "∝", "𝒫", "Ψ", "\"", "\"", "𝔔", "ℚ", "𝒬", "⤐", "®", "®", "Ŕ", "⟫", "↠", "⤖",
+ "Ř", "Ŗ", "Р", "ℜ", "∋", "⇋", "⥯", "ℜ", "Ρ", "⟩", "→", "⇥", "⇄", "⌉", "⟧", "⥝", "⇂", "⥕", "⌋",
+ "⊢", "↦", "⥛", "⊳", "⧐", "⊵", "⥏", "⥜", "↾", "⥔", "⇀", "⥓", "⇒", "ℝ", "⥰", "⇛", "ℛ", "↱", "⧴",
+ "Щ", "Ш", "Ь", "Ś", "⪼", "Š", "Ş", "Ŝ", "С", "𝔖", "↓", "←", "→", "↑", "Σ", "∘", "𝕊", "√", "□",
+ "⊓", "⊏", "⊑", "⊐", "⊒", "⊔", "𝒮", "⋆", "⋐", "⋐", "⊆", "≻", "⪰", "≽", "≿", "∋", "∑", "⋑", "⊃",
+ "⊇", "⋑", "Þ", "Þ", "™", "Ћ", "Ц", "\t", "Τ", "Ť", "Ţ", "Т", "𝔗", "∴", "Θ", "  ", " ", "∼",
+ "≃", "≅", "≈", "𝕋", "⃛", "𝒯", "Ŧ", "Ú", "Ú", "↟", "⥉", "Ў", "Ŭ", "Û", "Û", "У", "Ű", "𝔘", "Ù",
+ "Ù", "Ū", "_", "⏟", "⎵", "⏝", "⋃", "⊎", "Ų", "𝕌", "↑", "⤒", "⇅", "↕", "⥮", "⊥", "↥", "⇑", "⇕",
+ "↖", "↗", "ϒ", "Υ", "Ů", "𝒰", "Ũ", "Ü", "Ü", "⊫", "⫫", "В", "⊩", "⫦", "⋁", "‖", "‖", "∣", "|",
+ "❘", "≀", " ", "𝔙", "𝕍", "𝒱", "⊪", "Ŵ", "⋀", "𝔚", "𝕎", "𝒲", "𝔛", "Ξ", "𝕏", "𝒳", "Я", "Ї", "Ю",
+ "Ý", "Ý", "Ŷ", "Ы", "𝔜", "𝕐", "𝒴", "Ÿ", "Ж", "Ź", "Ž", "З", "Ż", "\u{200B}", "Ζ", "ℨ", "ℤ",
+ "𝒵", "á", "á", "ă", "∾", "∾̳", "∿", "â", "â", "´", "´", "а", "æ", "æ", "⁡", "𝔞", "à", "à", "ℵ",
+ "ℵ", "α", "ā", "⨿", "&", "&", "∧", "⩕", "⩜", "⩘", "⩚", "∠", "⦤", "∠", "∡", "⦨", "⦩", "⦪", "⦫",
+ "⦬", "⦭", "⦮", "⦯", "∟", "⊾", "⦝", "∢", "Å", "⍼", "ą", "𝕒", "≈", "⩰", "⩯", "≊", "≋", "'", "≈",
+ "≊", "å", "å", "𝒶", "*", "≈", "≍", "ã", "ã", "ä", "ä", "∳", "⨑", "⫭", "≌", "϶", "‵", "∽", "⋍",
+ "⊽", "⌅", "⌅", "⎵", "⎶", "≌", "б", "„", "∵", "∵", "⦰", "϶", "ℬ", "β", "ℶ", "≬", "𝔟", "⋂", "◯",
+ "⋃", "⨀", "⨁", "⨂", "⨆", "★", "▽", "△", "⨄", "⋁", "⋀", "⤍", "⧫", "▪", "▴", "▾", "◂", "▸", "␣",
+ "▒", "░", "▓", "█", "=⃥", "≡⃥", "⌐", "𝕓", "⊥", "⊥", "⋈", "╗", "╔", "╖", "╓", "═", "╦", "╩", "╤",
+ "╧", "╝", "╚", "╜", "╙", "║", "╬", "╣", "╠", "╫", "╢", "╟", "⧉", "╕", "╒", "┐", "┌", "─", "╥",
+ "╨", "┬", "┴", "⊟", "⊞", "⊠", "╛", "╘", "┘", "└", "│", "╪", "╡", "╞", "┼", "┤", "├", "‵", "˘",
+ "¦", "¦", "𝒷", "⁏", "∽", "⋍", "\\", "⧅", "⟈", "•", "•", "≎", "⪮", "≏", "≏", "ć", "∩", "⩄", "⩉",
+ "⩋", "⩇", "⩀", "∩︀", "⁁", "ˇ", "⩍", "č", "ç", "ç", "ĉ", "⩌", "⩐", "ċ", "¸", "¸", "⦲", "¢", "¢",
+ "·", "𝔠", "ч", "✓", "✓", "χ", "○", "⧃", "ˆ", "≗", "↺", "↻", "®", "Ⓢ", "⊛", "⊚", "⊝", "≗", "⨐",
+ "⫯", "⧂", "♣", "♣", ":", "≔", "≔", ",", "@", "∁", "∘", "∁", "ℂ", "≅", "⩭", "∮", "𝕔", "∐", "©",
+ "©", "℗", "↵", "✗", "𝒸", "⫏", "⫑", "⫐", "⫒", "⋯", "⤸", "⤵", "⋞", "⋟", "↶", "⤽", "∪", "⩈", "⩆",
+ "⩊", "⊍", "⩅", "∪︀", "↷", "⤼", "⋞", "⋟", "⋎", "⋏", "¤", "¤", "↶", "↷", "⋎", "⋏", "∲", "∱", "⌭",
+ "⇓", "⥥", "†", "ℸ", "↓", "‐", "⊣", "⤏", "˝", "ď", "д", "ⅆ", "‡", "⇊", "⩷", "°", "°", "δ", "⦱",
+ "⥿", "𝔡", "⇃", "⇂", "⋄", "⋄", "♦", "♦", "¨", "ϝ", "⋲", "÷", "÷", "÷", "⋇", "⋇", "ђ", "⌞", "⌍",
+ "$", "𝕕", "˙", "≐", "≑", "∸", "∔", "⊡", "⌆", "↓", "⇊", "⇃", "⇂", "⤐", "⌟", "⌌", "𝒹", "ѕ", "⧶",
+ "đ", "⋱", "▿", "▾", "⇵", "⥯", "⦦", "џ", "⟿", "⩷", "≑", "é", "é", "⩮", "ě", "ê", "ê", "≕", "э",
+ "ė", "ⅇ", "≒", "𝔢", "⪚", "è", "è", "⪖", "⪘", "⪙", "⏧", "ℓ", "⪕", "⪗", "ē", "∅", "∅", "∅", " ",
+ " ", " ", "ŋ", " ", "ę", "𝕖", "⋕", "⧣", "⩱", "ε", "ε", "ϵ", "≖", "≕", "≂", "⪖", "⪕", "=", "≟",
+ "≡", "⩸", "⧥", "≓", "⥱", "ℯ", "≐", "≂", "η", "ð", "ð", "ë", "ë", "€", "!", "∃", "ℰ", "ⅇ", "≒",
+ "ф", "♀", "ffi", "ff", "ffl", "𝔣", "fi", "fj", "♭", "fl", "▱", "ƒ", "𝕗", "∀", "⋔", "⫙", "⨍", "¼", "½",
+ "⅓", "¼", "⅕", "⅙", "⅛", "⅔", "⅖", "¾", "¾", "⅗", "⅜", "⅘", "⅚", "⅝", "⅞", "⁄", "⌢", "𝒻", "≧",
+ "⪌", "ǵ", "γ", "ϝ", "⪆", "ğ", "ĝ", "г", "ġ", "≥", "⋛", "≥", "≧", "⩾", "⩾", "⪩", "⪀", "⪂", "⪄",
+ "⋛︀", "⪔", "𝔤", "≫", "⋙", "ℷ", "ѓ", "≷", "⪒", "⪥", "⪤", "≩", "⪊", "⪊", "⪈", "⪈", "≩", "⋧", "𝕘",
+ "`", "ℊ", "≳", "⪎", "⪐", ">", ">", "⪧", "⩺", "⋗", "⦕", "⩼", "⪆", "⥸", "⋗", "⋛", "⪌", "≷", "≳",
+ "≩︀", "≩︀", "⇔", " ", "½", "ℋ", "ъ", "↔", "⥈", "↭", "ℏ", "ĥ", "♥", "♥", "…", "⊹", "𝔥", "⤥", "⤦",
+ "⇿", "∻", "↩", "↪", "𝕙", "―", "𝒽", "ℏ", "ħ", "⁃", "‐", "í", "í", "⁣", "î", "î", "и", "е", "¡",
+ "¡", "⇔", "𝔦", "ì", "ì", "ⅈ", "⨌", "∭", "⧜", "℩", "ij", "ī", "ℑ", "ℐ", "ℑ", "ı", "⊷", "Ƶ", "∈",
+ "℅", "∞", "⧝", "ı", "∫", "⊺", "ℤ", "⊺", "⨗", "⨼", "ё", "į", "𝕚", "ι", "⨼", "¿", "¿", "𝒾", "∈",
+ "⋹", "⋵", "⋴", "⋳", "∈", "⁢", "ĩ", "і", "ï", "ï", "ĵ", "й", "𝔧", "ȷ", "𝕛", "𝒿", "ј", "є", "κ",
+ "ϰ", "ķ", "к", "𝔨", "ĸ", "х", "ќ", "𝕜", "𝓀", "⇚", "⇐", "⤛", "⤎", "≦", "⪋", "⥢", "ĺ", "⦴", "ℒ",
+ "λ", "⟨", "⦑", "⟨", "⪅", "«", "«", "←", "⇤", "⤟", "⤝", "↩", "↫", "⤹", "⥳", "↢", "⪫", "⤙", "⪭",
+ "⪭︀", "⤌", "❲", "{", "[", "⦋", "⦏", "⦍", "ľ", "ļ", "⌈", "{", "л", "⤶", "“", "„", "⥧", "⥋", "↲",
+ "≤", "←", "↢", "↽", "↼", "⇇", "↔", "⇆", "⇋", "↭", "⋋", "⋚", "≤", "≦", "⩽", "⩽", "⪨", "⩿", "⪁",
+ "⪃", "⋚︀", "⪓", "⪅", "⋖", "⋚", "⪋", "≶", "≲", "⥼", "⌊", "𝔩", "≶", "⪑", "↽", "↼", "⥪", "▄", "љ",
+ "≪", "⇇", "⌞", "⥫", "◺", "ŀ", "⎰", "⎰", "≨", "⪉", "⪉", "⪇", "⪇", "≨", "⋦", "⟬", "⇽", "⟦", "⟵",
+ "⟷", "⟼", "⟶", "↫", "↬", "⦅", "𝕝", "⨭", "⨴", "∗", "_", "◊", "◊", "⧫", "(", "⦓", "⇆", "⌟", "⇋",
+ "⥭", "‎", "⊿", "‹", "𝓁", "↰", "≲", "⪍", "⪏", "[", "‘", "‚", "ł", "<", "<", "⪦", "⩹", "⋖", "⋋",
+ "⋉", "⥶", "⩻", "⦖", "◃", "⊴", "◂", "⥊", "⥦", "≨︀", "≨︀", "∺", "¯", "¯", "♂", "✠", "✠", "↦", "↦",
+ "↧", "↤", "↥", "▮", "⨩", "м", "—", "∡", "𝔪", "℧", "µ", "µ", "∣", "*", "⫰", "·", "·", "−", "⊟",
+ "∸", "⨪", "⫛", "…", "∓", "⊧", "𝕞", "∓", "𝓂", "∾", "μ", "⊸", "⊸", "⋙̸", "≫⃒", "≫̸", "⇍", "⇎", "⋘̸",
+ "≪⃒", "≪̸", "⇏", "⊯", "⊮", "∇", "ń", "∠⃒", "≉", "⩰̸", "≋̸", "ʼn", "≉", "♮", "♮", "ℕ", " ", " ", "≎̸",
+ "≏̸", "⩃", "ň", "ņ", "≇", "⩭̸", "⩂", "н", "–", "≠", "⇗", "⤤", "↗", "↗", "≐̸", "≢", "⤨", "≂̸", "∄",
+ "∄", "𝔫", "≧̸", "≱", "≱", "≧̸", "⩾̸", "⩾̸", "≵", "≯", "≯", "⇎", "↮", "⫲", "∋", "⋼", "⋺", "∋", "њ",
+ "⇍", "≦̸", "↚", "‥", "≰", "↚", "↮", "≰", "≦̸", "⩽̸", "⩽̸", "≮", "≴", "≮", "⋪", "⋬", "∤", "𝕟", "¬",
+ "¬", "∉", "⋹̸", "⋵̸", "∉", "⋷", "⋶", "∌", "∌", "⋾", "⋽", "∦", "∦", "⫽⃥", "∂̸", "⨔", "⊀", "⋠", "⪯̸",
+ "⊀", "⪯̸", "⇏", "↛", "⤳̸", "↝̸", "↛", "⋫", "⋭", "⊁", "⋡", "⪰̸", "𝓃", "∤", "∦", "≁", "≄", "≄", "∤",
+ "∦", "⋢", "⋣", "⊄", "⫅̸", "⊈", "⊂⃒", "⊈", "⫅̸", "⊁", "⪰̸", "⊅", "⫆̸", "⊉", "⊃⃒", "⊉", "⫆̸", "≹", "ñ",
+ "ñ", "≸", "⋪", "⋬", "⋫", "⋭", "ν", "#", "№", " ", "⊭", "⤄", "≍⃒", "⊬", "≥⃒", ">⃒", "⧞", "⤂", "≤⃒",
+ "<⃒", "⊴⃒", "⤃", "⊵⃒", "∼⃒", "⇖", "⤣", "↖", "↖", "⤧", "Ⓢ", "ó", "ó", "⊛", "ô", "ô", "о", "⊝", "ő",
+ "⨸", "⊙", "⦼", "œ", "⦿", "𝔬", "˛", "ò", "ò", "⧁", "⦵", "Ω", "∮", "↺", "⦾", "⦻", "‾", "⧀", "ō",
+ "ω", "ο", "⦶", "⊖", "𝕠", "⦷", "⦹", "⊕", "∨", "↻", "º", "ℴ", "ℴ", "ª", "º", "⊶", "⩖", "⩗", "⩛",
+ "ℴ", "ø", "ø", "⊘", "õ", "õ", "⊗", "⨶", "ö", "ö", "⌽", "¶", "¶", "∥", "⫳", "⫽", "∂", "п", "%",
+ ".", "‰", "⊥", "‱", "𝔭", "φ", "ϕ", "ℳ", "☎", "π", "⋔", "ϖ", "ℏ", "ℎ", "ℏ", "+", "⨣", "⊞", "⨢",
+ "∔", "⨥", "⩲", "±", "±", "⨦", "⨧", "±", "⨕", "𝕡", "£", "£", "≺", "⪳", "⪷", "≼", "⪯", "≺", "⪷",
+ "≼", "⪯", "⪹", "⪵", "⋨", "≾", "′", "ℙ", "⪵", "⪹", "⋨", "∏", "⌮", "⌒", "⌓", "∝", "∝", "≾", "⊰",
+ "𝓅", "ψ", " ", "𝔮", "⨌", "𝕢", "⁗", "𝓆", "ℍ", "⨖", "?", "≟", "\"", "\"", "⇛", "⇒", "⤜", "⤏",
+ "⥤", "∽̱", "ŕ", "√", "⦳", "⟩", "⦒", "⦥", "⟩", "»", "»", "→", "⥵", "⇥", "⤠", "⤳", "⤞", "↪", "↬",
+ "⥅", "⥴", "↣", "↝", "⤚", "∶", "ℚ", "⤍", "❳", "}", "]", "⦌", "⦎", "⦐", "ř", "ŗ", "⌉", "}", "р",
+ "⤷", "⥩", "”", "”", "↳", "ℜ", "ℛ", "ℜ", "ℝ", "▭", "®", "®", "⥽", "⌋", "𝔯", "⇁", "⇀", "⥬", "ρ",
+ "ϱ", "→", "↣", "⇁", "⇀", "⇄", "⇌", "⇉", "↝", "⋌", "˚", "≓", "⇄", "⇌", "‏", "⎱", "⎱", "⫮", "⟭",
+ "⇾", "⟧", "⦆", "𝕣", "⨮", "⨵", ")", "⦔", "⨒", "⇉", "›", "𝓇", "↱", "]", "’", "’", "⋌", "⋊", "▹",
+ "⊵", "▸", "⧎", "⥨", "℞", "ś", "‚", "≻", "⪴", "⪸", "š", "≽", "⪰", "ş", "ŝ", "⪶", "⪺", "⋩", "⨓",
+ "≿", "с", "⋅", "⊡", "⩦", "⇘", "⤥", "↘", "↘", "§", "§", ";", "⤩", "∖", "∖", "✶", "𝔰", "⌢", "♯",
+ "щ", "ш", "∣", "∥", "\u{AD}", "\u{AD}", "σ", "ς", "ς", "∼", "⩪", "≃", "≃", "⪞", "⪠", "⪝", "⪟",
+ "≆", "⨤", "⥲", "←", "∖", "⨳", "⧤", "∣", "⌣", "⪪", "⪬", "⪬︀", "ь", "/", "⧄", "⌿", "𝕤", "♠", "♠",
+ "∥", "⊓", "⊓︀", "⊔", "⊔︀", "⊏", "⊑", "⊏", "⊑", "⊐", "⊒", "⊐", "⊒", "□", "□", "▪", "▪", "→", "𝓈",
+ "∖", "⌣", "⋆", "☆", "★", "ϵ", "ϕ", "¯", "⊂", "⫅", "⪽", "⊆", "⫃", "⫁", "⫋", "⊊", "⪿", "⥹", "⊂",
+ "⊆", "⫅", "⊊", "⫋", "⫇", "⫕", "⫓", "≻", "⪸", "≽", "⪰", "⪺", "⪶", "⋩", "≿", "∑", "♪", "⊃", "¹",
+ "²", "³", "⫆", "⪾", "⫘", "⊇", "⫄", "⟉", "⫗", "⥻", "⫂", "⫌", "⊋", "⫀", "⊃", "⊇", "⫆", "⊋", "⫌",
+ "⫈", "⫔", "⫖", "⇙", "⤦", "↙", "↙", "⤪", "ß", "ß", "⌖", "τ", "⎴", "ť", "ţ", "т", "⃛", "⌕", "𝔱",
+ "∴", "∴", "θ", "ϑ", "ϑ", "≈", "∼", " ", "≈", "∼", "þ", "þ", "˜", "×", "×", "⊠", "⨱", "⨰", "∭",
+ "⤨", "⊤", "⌶", "⫱", "𝕥", "⫚", "⤩", "‴", "™", "▵", "▿", "◃", "⊴", "≜", "▹", "⊵", "◬", "≜", "⨺",
+ "⨹", "⧍", "⨻", "⏢", "𝓉", "ц", "ћ", "ŧ", "≬", "↞", "↠", "⇑", "⥣", "ú", "ú", "↑", "ў", "ŭ", "û",
+ "û", "у", "⇅", "ű", "⥮", "⥾", "𝔲", "ù", "ù", "↿", "↾", "▀", "⌜", "⌜", "⌏", "◸", "ū", "¨", "¨",
+ "ų", "𝕦", "↑", "↕", "↿", "↾", "⊎", "υ", "ϒ", "υ", "⇈", "⌝", "⌝", "⌎", "ů", "◹", "𝓊", "⋰", "ũ",
+ "▵", "▴", "⇈", "ü", "ü", "⦧", "⇕", "⫨", "⫩", "⊨", "⦜", "ϵ", "ϰ", "∅", "ϕ", "ϖ", "∝", "↕", "ϱ",
+ "ς", "⊊︀", "⫋︀", "⊋︀", "⫌︀", "ϑ", "⊲", "⊳", "в", "⊢", "∨", "⊻", "≚", "⋮", "|", "|", "𝔳", "⊲", "⊂⃒",
+ "⊃⃒", "𝕧", "∝", "⊳", "𝓋", "⫋︀", "⊊︀", "⫌︀", "⊋︀", "⦚", "ŵ", "⩟", "∧", "≙", "℘", "𝔴", "𝕨", "℘", "≀",
+ "≀", "𝓌", "⋂", "◯", "⋃", "▽", "𝔵", "⟺", "⟷", "ξ", "⟸", "⟵", "⟼", "⋻", "⨀", "𝕩", "⨁", "⨂", "⟹",
+ "⟶", "𝓍", "⨆", "⨄", "△", "⋁", "⋀", "ý", "ý", "я", "ŷ", "ы", "¥", "¥", "𝔶", "ї", "𝕪", "𝓎", "ю",
+ "ÿ", "ÿ", "ź", "ž", "з", "ż", "ℨ", "ζ", "𝔷", "ж", "⇝", "𝕫", "𝓏", "‍", "‌",
+];