---
-- Library mapping for handling codepoints according to IDNA standard.
--
-- All the mappings are imported from Version 10.0.0 of UTS #46, Unicode IDNA
-- Compatibility Processing.
-- References:
-- * http://www.unicode.org/Public/idna/10.0.0/
--
-- @author Rewanth Cool
-- @copyright Same as Nmap--See https://nmap.org/book/man-legal.html

local stdnse = require "stdnse"

_ENV = stdnse.module("idnaMappings", stdnse.seeall)

-- The Unicode Consortium approved the mappings below.
tbl = {
 [0x002F] = {status="disallowed"}, -- SOLIDUS
 -- HYPHEN-MINUS..FULL STOP
 [0x002D] = {status="valid"},
 [0x002E] = {status="valid"},
 [0x0041] = 0x0061, -- LATIN CAPITAL LETTER A
 [0x0042] = 0x0062, -- LATIN CAPITAL LETTER B
 [0x0043] = 0x0063, -- LATIN CAPITAL LETTER C
 [0x0044] = 0x0064, -- LATIN CAPITAL LETTER D
 [0x0045] = 0x0065, -- LATIN CAPITAL LETTER E
 [0x0046] = 0x0066, -- LATIN CAPITAL LETTER F
 [0x0047] = 0x0067, -- LATIN CAPITAL LETTER G
 [0x0048] = 0x0068, -- LATIN CAPITAL LETTER H
 [0x0049] = 0x0069, -- LATIN CAPITAL LETTER I
 [0x004A] = 0x006A, -- LATIN CAPITAL LETTER J
 [0x004B] = 0x006B, -- LATIN CAPITAL LETTER K
 [0x004C] = 0x006C, -- LATIN CAPITAL LETTER L
 [0x004D] = 0x006D, -- LATIN CAPITAL LETTER M
 [0x004E] = 0x006E, -- LATIN CAPITAL LETTER N
 [0x004F] = 0x006F, -- LATIN CAPITAL LETTER O
 [0x0050] = 0x0070, -- LATIN CAPITAL LETTER P
 [0x0051] = 0x0071, -- LATIN CAPITAL LETTER Q
 [0x0052] = 0x0072, -- LATIN CAPITAL LETTER R
 [0x0053] = 0x0073, -- LATIN CAPITAL LETTER S
 [0x0054] = 0x0074, -- LATIN CAPITAL LETTER T
 [0x0055] = 0x0075, -- LATIN CAPITAL LETTER U
 [0x0056] = 0x0076, -- LATIN CAPITAL LETTER V
 [0x0057] = 0x0077, -- LATIN CAPITAL LETTER W
 [0x0058] = 0x0078, -- LATIN CAPITAL LETTER X
 [0x0059] = 0x0079, -- LATIN CAPITAL LETTER Y
 [0x005A] = 0x007A, -- LATIN CAPITAL LETTER Z
 -- LEFT CURLY BRACKET..<control-007F>
 [0x007B] = {status="disallowed"},
 [0x007C] = {status="disallowed"},
 [0x007D] = {status="disallowed"},
 [0x007E] = {status="disallowed"},
 [0x007F] = {status="disallowed"},
 [0x00A0] = {status="disallowed"}, -- NO-BREAK SPACE
 [0x00A8] = {status="disallowed"}, -- DIAERESIS
 [0x00A9] = {status="disallowed"}, -- COPYRIGHT SIGN
 [0x00AA] = 0x0061, -- FEMININE ORDINAL INDICATOR
 [0x00AD] = {status='ignored'}, -- SOFT HYPHEN
 [0x00AE] = {status="disallowed"}, -- REGISTERED SIGN
 [0x00AF] = {status="disallowed"}, -- MACRON
 -- LEFT-POINTING DOUBLE ANGLE QUOTATION MARK..NOT SIGN
 [0x00AB] = {status="disallowed"},
 [0x00AC] = {status="disallowed"},
 [0x00B2] = 0x0032, -- SUPERSCRIPT TWO
 [0x00B3] = 0x0033, -- SUPERSCRIPT THREE
 [0x00B4] = {status="disallowed"}, -- ACUTE ACCENT
 [0x00B5] = 0x03BC, -- MICRO SIGN
 [0x00B6] = {status="disallowed"}, -- PILCROW SIGN
 [0x00B7] = {status="valid"}, -- MIDDLE DOT
 [0x00B8] = {status="disallowed"}, -- CEDILLA
 [0x00B9] = 0x0031, -- SUPERSCRIPT ONE
 [0x00BA] = 0x006F, -- MASCULINE ORDINAL INDICATOR
 [0x00BB] = {status="disallowed"}, -- RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
 [0x00BC] = {0x0031, 0x2044, 0x0034}, -- VULGAR FRACTION ONE QUARTER
 [0x00BD] = {0x0031, 0x2044, 0x0032}, -- VULGAR FRACTION ONE HALF
 [0x00BE] = {0x0033, 0x2044, 0x0034}, -- VULGAR FRACTION THREE QUARTERS
 [0x00BF] = {status="disallowed"}, -- INVERTED QUESTION MARK
 [0x00C0] = 0x00E0, -- LATIN CAPITAL LETTER A WITH GRAVE
 [0x00C1] = 0x00E1, -- LATIN CAPITAL LETTER A WITH ACUTE
 [0x00C2] = 0x00E2, -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX
 [0x00C3] = 0x00E3, -- LATIN CAPITAL LETTER A WITH TILDE
 [0x00C4] = 0x00E4, -- LATIN CAPITAL LETTER A WITH DIAERESIS
 [0x00C5] = 0x00E5, -- LATIN CAPITAL LETTER A WITH RING ABOVE
 [0x00C6] = 0x00E6, -- LATIN CAPITAL LETTER AE
 [0x00C7] = 0x00E7, -- LATIN CAPITAL LETTER C WITH CEDILLA
 [0x00C8] = 0x00E8, -- LATIN CAPITAL LETTER E WITH GRAVE
 [0x00C9] = 0x00E9, -- LATIN CAPITAL LETTER E WITH ACUTE
 [0x00CA] = 0x00EA, -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX
 [0x00CB] = 0x00EB, -- LATIN CAPITAL LETTER E WITH DIAERESIS
 [0x00CC] = 0x00EC, -- LATIN CAPITAL LETTER I WITH GRAVE
 [0x00CD] = 0x00ED, -- LATIN CAPITAL LETTER I WITH ACUTE
 [0x00CE] = 0x00EE, -- LATIN CAPITAL LETTER I WITH CIRCUMFLEX
 [0x00CF] = 0x00EF, -- LATIN CAPITAL LETTER I WITH DIAERESIS
 [0x00D0] = 0x00F0, -- LATIN CAPITAL LETTER ETH
 [0x00D1] = 0x00F1, -- LATIN CAPITAL LETTER N WITH TILDE
 [0x00D2] = 0x00F2, -- LATIN CAPITAL LETTER O WITH GRAVE
 [0x00D3] = 0x00F3, -- LATIN CAPITAL LETTER O WITH ACUTE
 [0x00D4] = 0x00F4, -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX
 [0x00D5] = 0x00F5, -- LATIN CAPITAL LETTER O WITH TILDE
 [0x00D6] = 0x00F6, -- LATIN CAPITAL LETTER O WITH DIAERESIS
 [0x00D7] = {status="disallowed"}, -- MULTIPLICATION SIGN
 [0x00D8] = 0x00F8, -- LATIN CAPITAL LETTER O WITH STROKE
 [0x00D9] = 0x00F9, -- LATIN CAPITAL LETTER U WITH GRAVE
 [0x00DA] = 0x00FA, -- LATIN CAPITAL LETTER U WITH ACUTE
 [0x00DB] = 0x00FB, -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX
 [0x00DC] = 0x00FC, -- LATIN CAPITAL LETTER U WITH DIAERESIS
 [0x00DD] = 0x00FD, -- LATIN CAPITAL LETTER Y WITH ACUTE
 [0x00DE] = 0x00FE, -- LATIN CAPITAL LETTER THORN
 [0x00DF] = {status='deviation', {0x0073, 0x0073}}, -- LATIN SMALL LETTER SHARP S
 -- DEGREE SIGN..PLUS-MINUS SIGN
 [0x00B0] = {status="disallowed"},
 [0x00B1] = {status="disallowed"},
 [0x00F7] = {status="disallowed"}, -- DIVISION SIGN
 [0x0100] = 0x0101, -- LATIN CAPITAL LETTER A WITH MACRON
 [0x0101] = {status="valid"}, -- LATIN SMALL LETTER A WITH MACRON
 [0x0102] = 0x0103, -- LATIN CAPITAL LETTER A WITH BREVE
 [0x0103] = {status="valid"}, -- LATIN SMALL LETTER A WITH BREVE
 [0x0104] = 0x0105, -- LATIN CAPITAL LETTER A WITH OGONEK
 [0x0105] = {status="valid"}, -- LATIN SMALL LETTER A WITH OGONEK
 [0x0106] = 0x0107, -- LATIN CAPITAL LETTER C WITH ACUTE
 [0x0107] = {status="valid"}, -- LATIN SMALL LETTER C WITH ACUTE
 [0x0108] = 0x0109, -- LATIN CAPITAL LETTER C WITH CIRCUMFLEX
 [0x0109] = {status="valid"}, -- LATIN SMALL LETTER C WITH CIRCUMFLEX
 [0x010A] = 0x010B, -- LATIN CAPITAL LETTER C WITH DOT ABOVE
 [0x010B] = {status="valid"}, -- LATIN SMALL LETTER C WITH DOT ABOVE
 [0x010C] = 0x010D, -- LATIN CAPITAL LETTER C WITH CARON
 [0x010D] = {status="valid"}, -- LATIN SMALL LETTER C WITH CARON
 [0x010E] = 0x010F, -- LATIN CAPITAL LETTER D WITH CARON
 [0x010F] = {status="valid"}, -- LATIN SMALL LETTER D WITH CARON
 [0x0110] = 0x0111, -- LATIN CAPITAL LETTER D WITH STROKE
 [0x0111] = {status="valid"}, -- LATIN SMALL LETTER D WITH STROKE
 [0x0112] = 0x0113, -- LATIN CAPITAL LETTER E WITH MACRON
 [0x0113] = {status="valid"}, -- LATIN SMALL LETTER E WITH MACRON
 [0x0114] = 0x0115, -- LATIN CAPITAL LETTER E WITH BREVE
 [0x0115] = {status="valid"}, -- LATIN SMALL LETTER E WITH BREVE
 [0x0116] = 0x0117, -- LATIN CAPITAL LETTER E WITH DOT ABOVE
 [0x0117] = {status="valid"}, -- LATIN SMALL LETTER E WITH DOT ABOVE
 [0x0118] = 0x0119, -- LATIN CAPITAL LETTER E WITH OGONEK
 [0x0119] = {status="valid"}, -- LATIN SMALL LETTER E WITH OGONEK
 [0x011A] = 0x011B, -- LATIN CAPITAL LETTER E WITH CARON
 [0x011B] = {status="valid"}, -- LATIN SMALL LETTER E WITH CARON
 [0x011C] = 0x011D, -- LATIN CAPITAL LETTER G WITH CIRCUMFLEX
 [0x011D] = {status="valid"}, -- LATIN SMALL LETTER G WITH CIRCUMFLEX
 [0x011E] = 0x011F, -- LATIN CAPITAL LETTER G WITH BREVE
 [0x011F] = {status="valid"}, -- LATIN SMALL LETTER G WITH BREVE
 [0x0120] = 0x0121, -- LATIN CAPITAL LETTER G WITH DOT ABOVE
 [0x0121] = {status="valid"}, -- LATIN SMALL LETTER G WITH DOT ABOVE
 [0x0122] = 0x0123, -- LATIN CAPITAL LETTER G WITH CEDILLA
 [0x0123] = {status="valid"}, -- LATIN SMALL LETTER G WITH CEDILLA
 [0x0124] = 0x0125, -- LATIN CAPITAL LETTER H WITH CIRCUMFLEX
 [0x0125] = {status="valid"}, -- LATIN SMALL LETTER H WITH CIRCUMFLEX
 [0x0126] = 0x0127, -- LATIN CAPITAL LETTER H WITH STROKE
 [0x0127] = {status="valid"}, -- LATIN SMALL LETTER H WITH STROKE
 [0x0128] = 0x0129, -- LATIN CAPITAL LETTER I WITH TILDE
 [0x0129] = {status="valid"}, -- LATIN SMALL LETTER I WITH TILDE
 [0x012A] = 0x012B, -- LATIN CAPITAL LETTER I WITH MACRON
 [0x012B] = {status="valid"}, -- LATIN SMALL LETTER I WITH MACRON
 [0x012C] = 0x012D, -- LATIN CAPITAL LETTER I WITH BREVE
 [0x012D] = {status="valid"}, -- LATIN SMALL LETTER I WITH BREVE
 [0x012E] = 0x012F, -- LATIN CAPITAL LETTER I WITH OGONEK
 [0x012F] = {status="valid"}, -- LATIN SMALL LETTER I WITH OGONEK
 [0x0130] = {0x0069, 0x0307}, -- LATIN CAPITAL LETTER I WITH DOT ABOVE
 [0x0131] = {status="valid"}, -- LATIN SMALL LETTER DOTLESS I
 [0x0134] = 0x0135, -- LATIN CAPITAL LETTER J WITH CIRCUMFLEX
 [0x0135] = {status="valid"}, -- LATIN SMALL LETTER J WITH CIRCUMFLEX
 [0x0136] = 0x0137, -- LATIN CAPITAL LETTER K WITH CEDILLA
 -- LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
 [0x0132] = {0x0069, 0x006A},
 [0x0133] = {0x0069, 0x006A},
 [0x0139] = 0x013A, -- LATIN CAPITAL LETTER L WITH ACUTE
 [0x013A] = {status="valid"}, -- LATIN SMALL LETTER L WITH ACUTE
 [0x013B] = 0x013C, -- LATIN CAPITAL LETTER L WITH CEDILLA
 [0x013C] = {status="valid"}, -- LATIN SMALL LETTER L WITH CEDILLA
 [0x013D] = 0x013E, -- LATIN CAPITAL LETTER L WITH CARON
 [0x013E] = {status="valid"}, -- LATIN SMALL LETTER L WITH CARON
 -- LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA
 [0x0137] = {status="valid"},
 [0x0138] = {status="valid"},
 [0x0141] = 0x0142, -- LATIN CAPITAL LETTER L WITH STROKE
 [0x0142] = {status="valid"}, -- LATIN SMALL LETTER L WITH STROKE
 [0x0143] = 0x0144, -- LATIN CAPITAL LETTER N WITH ACUTE
 [0x0144] = {status="valid"}, -- LATIN SMALL LETTER N WITH ACUTE
 [0x0145] = 0x0146, -- LATIN CAPITAL LETTER N WITH CEDILLA
 [0x0146] = {status="valid"}, -- LATIN SMALL LETTER N WITH CEDILLA
 [0x0147] = 0x0148, -- LATIN CAPITAL LETTER N WITH CARON
 [0x0148] = {status="valid"}, -- LATIN SMALL LETTER N WITH CARON
 [0x0149] = {0x02BC, 0x006E}, -- LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
 [0x014A] = 0x014B, -- LATIN CAPITAL LETTER ENG
 [0x014B] = {status="valid"}, -- LATIN SMALL LETTER ENG
 [0x014C] = 0x014D, -- LATIN CAPITAL LETTER O WITH MACRON
 [0x014D] = {status="valid"}, -- LATIN SMALL LETTER O WITH MACRON
 [0x014E] = 0x014F, -- LATIN CAPITAL LETTER O WITH BREVE
 [0x014F] = {status="valid"}, -- LATIN SMALL LETTER O WITH BREVE
 [0x0150] = 0x0151, -- LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
 [0x0151] = {status="valid"}, -- LATIN SMALL LETTER O WITH DOUBLE ACUTE
 [0x0152] = 0x0153, -- LATIN CAPITAL LIGATURE OE
 [0x0153] = {status="valid"}, -- LATIN SMALL LIGATURE OE
 [0x0154] = 0x0155, -- LATIN CAPITAL LETTER R WITH ACUTE
 [0x0155] = {status="valid"}, -- LATIN SMALL LETTER R WITH ACUTE
 [0x0156] = 0x0157, -- LATIN CAPITAL LETTER R WITH CEDILLA
 [0x0157] = {status="valid"}, -- LATIN SMALL LETTER R WITH CEDILLA
 [0x0158] = 0x0159, -- LATIN CAPITAL LETTER R WITH CARON
 [0x0159] = {status="valid"}, -- LATIN SMALL LETTER R WITH CARON
 [0x015A] = 0x015B, -- LATIN CAPITAL LETTER S WITH ACUTE
 [0x015B] = {status="valid"}, -- LATIN SMALL LETTER S WITH ACUTE
 [0x015C] = 0x015D, -- LATIN CAPITAL LETTER S WITH CIRCUMFLEX
 [0x015D] = {status="valid"}, -- LATIN SMALL LETTER S WITH CIRCUMFLEX
 [0x015E] = 0x015F, -- LATIN CAPITAL LETTER S WITH CEDILLA
 [0x015F] = {status="valid"}, -- LATIN SMALL LETTER S WITH CEDILLA
 [0x0160] = 0x0161, -- LATIN CAPITAL LETTER S WITH CARON
 [0x0161] = {status="valid"}, -- LATIN SMALL LETTER S WITH CARON
 [0x0162] = 0x0163, -- LATIN CAPITAL LETTER T WITH CEDILLA
 [0x0163] = {status="valid"}, -- LATIN SMALL LETTER T WITH CEDILLA
 [0x0164] = 0x0165, -- LATIN CAPITAL LETTER T WITH CARON
 [0x0165] = {status="valid"}, -- LATIN SMALL LETTER T WITH CARON
 [0x0166] = 0x0167, -- LATIN CAPITAL LETTER T WITH STROKE
 [0x0167] = {status="valid"}, -- LATIN SMALL LETTER T WITH STROKE
 [0x0168] = 0x0169, -- LATIN CAPITAL LETTER U WITH TILDE
 [0x0169] = {status="valid"}, -- LATIN SMALL LETTER U WITH TILDE
 [0x016A] = 0x016B, -- LATIN CAPITAL LETTER U WITH MACRON
 [0x016B] = {status="valid"}, -- LATIN SMALL LETTER U WITH MACRON
 [0x016C] = 0x016D, -- LATIN CAPITAL LETTER U WITH BREVE
 [0x016D] = {status="valid"}, -- LATIN SMALL LETTER U WITH BREVE
 [0x016E] = 0x016F, -- LATIN CAPITAL LETTER U WITH RING ABOVE
 [0x016F] = {status="valid"}, -- LATIN SMALL LETTER U WITH RING ABOVE
 [0x0170] = 0x0171, -- LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
 [0x0171] = {status="valid"}, -- LATIN SMALL LETTER U WITH DOUBLE ACUTE
 [0x0172] = 0x0173, -- LATIN CAPITAL LETTER U WITH OGONEK
 [0x0173] = {status="valid"}, -- LATIN SMALL LETTER U WITH OGONEK
 [0x0174] = 0x0175, -- LATIN CAPITAL LETTER W WITH CIRCUMFLEX
 [0x0175] = {status="valid"}, -- LATIN SMALL LETTER W WITH CIRCUMFLEX
 [0x0176] = 0x0177, -- LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
 [0x0177] = {status="valid"}, -- LATIN SMALL LETTER Y WITH CIRCUMFLEX
 [0x0178] = 0x00FF, -- LATIN CAPITAL LETTER Y WITH DIAERESIS
 [0x0179] = 0x017A, -- LATIN CAPITAL LETTER Z WITH ACUTE
 [0x017A] = {status="valid"}, -- LATIN SMALL LETTER Z WITH ACUTE
 [0x017B] = 0x017C, -- LATIN CAPITAL LETTER Z WITH DOT ABOVE
 [0x017C] = {status="valid"}, -- LATIN SMALL LETTER Z WITH DOT ABOVE
 [0x017D] = 0x017E, -- LATIN CAPITAL LETTER Z WITH CARON
 [0x017E] = {status="valid"}, -- LATIN SMALL LETTER Z WITH CARON
 [0x017F] = 0x0073, -- LATIN SMALL LETTER LONG S
 [0x0180] = {status="valid"}, -- LATIN SMALL LETTER B WITH STROKE
 [0x0181] = 0x0253, -- LATIN CAPITAL LETTER B WITH HOOK
 [0x0182] = 0x0183, -- LATIN CAPITAL LETTER B WITH TOPBAR
 [0x0183] = {status="valid"}, -- LATIN SMALL LETTER B WITH TOPBAR
 [0x0184] = 0x0185, -- LATIN CAPITAL LETTER TONE SIX
 [0x0185] = {status="valid"}, -- LATIN SMALL LETTER TONE SIX
 [0x0186] = 0x0254, -- LATIN CAPITAL LETTER OPEN O
 [0x0187] = 0x0188, -- LATIN CAPITAL LETTER C WITH HOOK
 [0x0188] = {status="valid"}, -- LATIN SMALL LETTER C WITH HOOK
 [0x0189] = 0x0256, -- LATIN CAPITAL LETTER AFRICAN D
 [0x018A] = 0x0257, -- LATIN CAPITAL LETTER D WITH HOOK
 [0x018B] = 0x018C, -- LATIN CAPITAL LETTER D WITH TOPBAR
 -- LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
 [0x013F] = {0x006C, 0x00B7},
 [0x0140] = {0x006C, 0x00B7},
 [0x018E] = 0x01DD, -- LATIN CAPITAL LETTER REVERSED E
 [0x018F] = 0x0259, -- LATIN CAPITAL LETTER SCHWA
 [0x0190] = 0x025B, -- LATIN CAPITAL LETTER OPEN E
 [0x0191] = 0x0192, -- LATIN CAPITAL LETTER F WITH HOOK
 [0x0192] = {status="valid"}, -- LATIN SMALL LETTER F WITH HOOK
 [0x0193] = 0x0260, -- LATIN CAPITAL LETTER G WITH HOOK
 [0x0194] = 0x0263, -- LATIN CAPITAL LETTER GAMMA
 [0x0195] = {status="valid"}, -- LATIN SMALL LETTER HV
 [0x0196] = 0x0269, -- LATIN CAPITAL LETTER IOTA
 [0x0197] = 0x0268, -- LATIN CAPITAL LETTER I WITH STROKE
 [0x0198] = 0x0199, -- LATIN CAPITAL LETTER K WITH HOOK
 -- LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA
 [0x018C] = {status="valid"},
 [0x018D] = {status="valid"},
 [0x019C] = 0x026F, -- LATIN CAPITAL LETTER TURNED M
 [0x019D] = 0x0272, -- LATIN CAPITAL LETTER N WITH LEFT HOOK
 [0x019E] = {status="valid"}, -- LATIN SMALL LETTER N WITH LONG RIGHT LEG
 [0x019F] = 0x0275, -- LATIN CAPITAL LETTER O WITH MIDDLE TILDE
 [0x01A0] = 0x01A1, -- LATIN CAPITAL LETTER O WITH HORN
 [0x01A1] = {status="valid"}, -- LATIN SMALL LETTER O WITH HORN
 [0x01A2] = 0x01A3, -- LATIN CAPITAL LETTER OI
 [0x01A3] = {status="valid"}, -- LATIN SMALL LETTER OI
 [0x01A4] = 0x01A5, -- LATIN CAPITAL LETTER P WITH HOOK
 [0x01A5] = {status="valid"}, -- LATIN SMALL LETTER P WITH HOOK
 [0x01A6] = 0x0280, -- LATIN LETTER YR
 [0x01A7] = 0x01A8, -- LATIN CAPITAL LETTER TONE TWO
 [0x01A8] = {status="valid"}, -- LATIN SMALL LETTER TONE TWO
 [0x01A9] = 0x0283, -- LATIN CAPITAL LETTER ESH
 -- LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
 [0x0199] = {status="valid"},
 [0x019A] = {status="valid"},
 [0x019B] = {status="valid"},
 [0x01AC] = 0x01AD, -- LATIN CAPITAL LETTER T WITH HOOK
 [0x01AD] = {status="valid"}, -- LATIN SMALL LETTER T WITH HOOK
 [0x01AE] = 0x0288, -- LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
 [0x01AF] = 0x01B0, -- LATIN CAPITAL LETTER U WITH HORN
 [0x01B0] = {status="valid"}, -- LATIN SMALL LETTER U WITH HORN
 [0x01B1] = 0x028A, -- LATIN CAPITAL LETTER UPSILON
 [0x01B2] = 0x028B, -- LATIN CAPITAL LETTER V WITH HOOK
 [0x01B3] = 0x01B4, -- LATIN CAPITAL LETTER Y WITH HOOK
 [0x01B4] = {status="valid"}, -- LATIN SMALL LETTER Y WITH HOOK
 [0x01B5] = 0x01B6, -- LATIN CAPITAL LETTER Z WITH STROKE
 [0x01B6] = {status="valid"}, -- LATIN SMALL LETTER Z WITH STROKE
 [0x01B7] = 0x0292, -- LATIN CAPITAL LETTER EZH
 [0x01B8] = 0x01B9, -- LATIN CAPITAL LETTER EZH REVERSED
 -- LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK
 [0x01AA] = {status="valid"},
 [0x01AB] = {status="valid"},
 [0x01BC] = 0x01BD, -- LATIN CAPITAL LETTER TONE FIVE
 -- LATIN SMALL LETTER EZH REVERSED..LATIN LETTER TWO WITH STROKE
 [0x01B9] = {status="valid"},
 [0x01BA] = {status="valid"},
 [0x01BB] = {status="valid"},
 -- LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER DZ WITH CARON
 [0x01C4] = {0x0064, 0x017E},
 [0x01C5] = {0x0064, 0x017E},
 [0x01C6] = {0x0064, 0x017E},
 -- LATIN CAPITAL LETTER LJ..LATIN SMALL LETTER LJ
 [0x01C7] = {0x006C, 0x006A},
 [0x01C8] = {0x006C, 0x006A},
 [0x01C9] = {0x006C, 0x006A},
 [0x01CD] = 0x01CE, -- LATIN CAPITAL LETTER A WITH CARON
 [0x01CE] = {status="valid"}, -- LATIN SMALL LETTER A WITH CARON
 [0x01CF] = 0x01D0, -- LATIN CAPITAL LETTER I WITH CARON
 [0x01D0] = {status="valid"}, -- LATIN SMALL LETTER I WITH CARON
 [0x01D1] = 0x01D2, -- LATIN CAPITAL LETTER O WITH CARON
 [0x01D2] = {status="valid"}, -- LATIN SMALL LETTER O WITH CARON
 [0x01D3] = 0x01D4, -- LATIN CAPITAL LETTER U WITH CARON
 [0x01D4] = {status="valid"}, -- LATIN SMALL LETTER U WITH CARON
 [0x01D5] = 0x01D6, -- LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
 [0x01D6] = {status="valid"}, -- LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
 [0x01D7] = 0x01D8, -- LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
 [0x01D8] = {status="valid"}, -- LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
 [0x01D9] = 0x01DA, -- LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
 [0x01DA] = {status="valid"}, -- LATIN SMALL LETTER U WITH DIAERESIS AND CARON
 [0x01DB] = 0x01DC, -- LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
 -- LATIN CAPITAL LETTER NJ..LATIN SMALL LETTER NJ
 [0x01CA] = {0x006E, 0x006A},
 [0x01CB] = {0x006E, 0x006A},
 [0x01CC] = {0x006E, 0x006A},
 [0x01DE] = 0x01DF, -- LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
 [0x01DF] = {status="valid"}, -- LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
 [0x01E0] = 0x01E1, -- LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
 [0x01E1] = {status="valid"}, -- LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
 [0x01E2] = 0x01E3, -- LATIN CAPITAL LETTER AE WITH MACRON
 [0x01E3] = {status="valid"}, -- LATIN SMALL LETTER AE WITH MACRON
 [0x01E4] = 0x01E5, -- LATIN CAPITAL LETTER G WITH STROKE
 [0x01E5] = {status="valid"}, -- LATIN SMALL LETTER G WITH STROKE
 [0x01E6] = 0x01E7, -- LATIN CAPITAL LETTER G WITH CARON
 [0x01E7] = {status="valid"}, -- LATIN SMALL LETTER G WITH CARON
 [0x01E8] = 0x01E9, -- LATIN CAPITAL LETTER K WITH CARON
 [0x01E9] = {status="valid"}, -- LATIN SMALL LETTER K WITH CARON
 [0x01EA] = 0x01EB, -- LATIN CAPITAL LETTER O WITH OGONEK
 [0x01EB] = {status="valid"}, -- LATIN SMALL LETTER O WITH OGONEK
 [0x01EC] = 0x01ED, -- LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
 [0x01ED] = {status="valid"}, -- LATIN SMALL LETTER O WITH OGONEK AND MACRON
 [0x01EE] = 0x01EF, -- LATIN CAPITAL LETTER EZH WITH CARON
 -- LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
 [0x01DC] = {status="valid"},
 [0x01DD] = {status="valid"},
 -- LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
 [0x01EF] = {status="valid"},
 [0x01F0] = {status="valid"},
 [0x01F4] = 0x01F5, -- LATIN CAPITAL LETTER G WITH ACUTE
 [0x01F5] = {status="valid"}, -- LATIN SMALL LETTER G WITH ACUTE
 [0x01F6] = 0x0195, -- LATIN CAPITAL LETTER HWAIR
 [0x01F7] = 0x01BF, -- LATIN CAPITAL LETTER WYNN
 [0x01F8] = 0x01F9, -- LATIN CAPITAL LETTER N WITH GRAVE
 [0x01F9] = {status="valid"}, -- LATIN SMALL LETTER N WITH GRAVE
 [0x01FA] = 0x01FB, -- LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
 [0x01FB] = {status="valid"}, -- LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
 [0x01FC] = 0x01FD, -- LATIN CAPITAL LETTER AE WITH ACUTE
 [0x01FD] = {status="valid"}, -- LATIN SMALL LETTER AE WITH ACUTE
 [0x01FE] = 0x01FF, -- LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
 [0x01FF] = {status="valid"}, -- LATIN SMALL LETTER O WITH STROKE AND ACUTE
 [0x0200] = 0x0201, -- LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
 [0x0201] = {status="valid"}, -- LATIN SMALL LETTER A WITH DOUBLE GRAVE
 [0x0202] = 0x0203, -- LATIN CAPITAL LETTER A WITH INVERTED BREVE
 [0x0203] = {status="valid"}, -- LATIN SMALL LETTER A WITH INVERTED BREVE
 [0x0204] = 0x0205, -- LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
 [0x0205] = {status="valid"}, -- LATIN SMALL LETTER E WITH DOUBLE GRAVE
 [0x0206] = 0x0207, -- LATIN CAPITAL LETTER E WITH INVERTED BREVE
 [0x0207] = {status="valid"}, -- LATIN SMALL LETTER E WITH INVERTED BREVE
 [0x0208] = 0x0209, -- LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
 [0x0209] = {status="valid"}, -- LATIN SMALL LETTER I WITH DOUBLE GRAVE
 [0x020A] = 0x020B, -- LATIN CAPITAL LETTER I WITH INVERTED BREVE
 [0x020B] = {status="valid"}, -- LATIN SMALL LETTER I WITH INVERTED BREVE
 [0x020C] = 0x020D, -- LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
 [0x020D] = {status="valid"}, -- LATIN SMALL LETTER O WITH DOUBLE GRAVE
 [0x020E] = 0x020F, -- LATIN CAPITAL LETTER O WITH INVERTED BREVE
 [0x020F] = {status="valid"}, -- LATIN SMALL LETTER O WITH INVERTED BREVE
 [0x0210] = 0x0211, -- LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
 [0x0211] = {status="valid"}, -- LATIN SMALL LETTER R WITH DOUBLE GRAVE
 [0x0212] = 0x0213, -- LATIN CAPITAL LETTER R WITH INVERTED BREVE
 [0x0213] = {status="valid"}, -- LATIN SMALL LETTER R WITH INVERTED BREVE
 [0x0214] = 0x0215, -- LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
 [0x0215] = {status="valid"}, -- LATIN SMALL LETTER U WITH DOUBLE GRAVE
 [0x0216] = 0x0217, -- LATIN CAPITAL LETTER U WITH INVERTED BREVE
 [0x0217] = {status="valid"}, -- LATIN SMALL LETTER U WITH INVERTED BREVE
 [0x0218] = 0x0219, -- LATIN CAPITAL LETTER S WITH COMMA BELOW
 [0x0219] = {status="valid"}, -- LATIN SMALL LETTER S WITH COMMA BELOW
 [0x021A] = 0x021B, -- LATIN CAPITAL LETTER T WITH COMMA BELOW
 [0x021B] = {status="valid"}, -- LATIN SMALL LETTER T WITH COMMA BELOW
 [0x021C] = 0x021D, -- LATIN CAPITAL LETTER YOGH
 [0x021D] = {status="valid"}, -- LATIN SMALL LETTER YOGH
 [0x021E] = 0x021F, -- LATIN CAPITAL LETTER H WITH CARON
 [0x021F] = {status="valid"}, -- LATIN SMALL LETTER H WITH CARON
 [0x0220] = 0x019E, -- LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
 [0x0221] = {status="valid"}, -- LATIN SMALL LETTER D WITH CURL
 [0x0222] = 0x0223, -- LATIN CAPITAL LETTER OU
 [0x0223] = {status="valid"}, -- LATIN SMALL LETTER OU
 [0x0224] = 0x0225, -- LATIN CAPITAL LETTER Z WITH HOOK
 [0x0225] = {status="valid"}, -- LATIN SMALL LETTER Z WITH HOOK
 [0x0226] = 0x0227, -- LATIN CAPITAL LETTER A WITH DOT ABOVE
 [0x0227] = {status="valid"}, -- LATIN SMALL LETTER A WITH DOT ABOVE
 [0x0228] = 0x0229, -- LATIN CAPITAL LETTER E WITH CEDILLA
 [0x0229] = {status="valid"}, -- LATIN SMALL LETTER E WITH CEDILLA
 [0x022A] = 0x022B, -- LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
 [0x022B] = {status="valid"}, -- LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
 [0x022C] = 0x022D, -- LATIN CAPITAL LETTER O WITH TILDE AND MACRON
 [0x022D] = {status="valid"}, -- LATIN SMALL LETTER O WITH TILDE AND MACRON
 [0x022E] = 0x022F, -- LATIN CAPITAL LETTER O WITH DOT ABOVE
 [0x022F] = {status="valid"}, -- LATIN SMALL LETTER O WITH DOT ABOVE
 [0x0230] = 0x0231, -- LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
 [0x0231] = {status="valid"}, -- LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
 [0x0232] = 0x0233, -- LATIN CAPITAL LETTER Y WITH MACRON
 [0x0233] = {status="valid"}, -- LATIN SMALL LETTER Y WITH MACRON
 -- LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
 [0x01F1] = {0x0064, 0x007A},
 [0x01F2] = {0x0064, 0x007A},
 [0x01F3] = {0x0064, 0x007A},
 [0x023A] = 0x2C65, -- LATIN CAPITAL LETTER A WITH STROKE
 [0x023B] = 0x023C, -- LATIN CAPITAL LETTER C WITH STROKE
 [0x023C] = {status="valid"}, -- LATIN SMALL LETTER C WITH STROKE
 [0x023D] = 0x019A, -- LATIN CAPITAL LETTER L WITH BAR
 [0x023E] = 0x2C66, -- LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
 [0x0241] = 0x0242, -- LATIN CAPITAL LETTER GLOTTAL STOP
 [0x0242] = {status="valid"}, -- LATIN SMALL LETTER GLOTTAL STOP
 [0x0243] = 0x0180, -- LATIN CAPITAL LETTER B WITH STROKE
 [0x0244] = 0x0289, -- LATIN CAPITAL LETTER U BAR
 [0x0245] = 0x028C, -- LATIN CAPITAL LETTER TURNED V
 [0x0246] = 0x0247, -- LATIN CAPITAL LETTER E WITH STROKE
 [0x0247] = {status="valid"}, -- LATIN SMALL LETTER E WITH STROKE
 [0x0248] = 0x0249, -- LATIN CAPITAL LETTER J WITH STROKE
 [0x0249] = {status="valid"}, -- LATIN SMALL LETTER J WITH STROKE
 [0x024A] = 0x024B, -- LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
 [0x024B] = {status="valid"}, -- LATIN SMALL LETTER Q WITH HOOK TAIL
 [0x024C] = 0x024D, -- LATIN CAPITAL LETTER R WITH STROKE
 [0x024D] = {status="valid"}, -- LATIN SMALL LETTER R WITH STROKE
 [0x024E] = 0x024F, -- LATIN CAPITAL LETTER Y WITH STROKE
 [0x024F] = {status="valid"}, -- LATIN SMALL LETTER Y WITH STROKE
 -- LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
 [0x023F] = {status="valid"},
 [0x0240] = {status="valid"},
 [0x02B0] = 0x0068, -- MODIFIER LETTER SMALL H
 [0x02B1] = 0x0266, -- MODIFIER LETTER SMALL H WITH HOOK
 [0x02B2] = 0x006A, -- MODIFIER LETTER SMALL J
 [0x02B3] = 0x0072, -- MODIFIER LETTER SMALL R
 [0x02B4] = 0x0279, -- MODIFIER LETTER SMALL TURNED R
 [0x02B5] = 0x027B, -- MODIFIER LETTER SMALL TURNED R WITH HOOK
 [0x02B6] = 0x0281, -- MODIFIER LETTER SMALL CAPITAL INVERTED R
 [0x02B7] = 0x0077, -- MODIFIER LETTER SMALL W
 [0x02B8] = 0x0079, -- MODIFIER LETTER SMALL Y
 -- MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
 [0x02C2] = {status="disallowed"},
 [0x02C3] = {status="disallowed"},
 [0x02C4] = {status="disallowed"},
 [0x02C5] = {status="disallowed"},
 [0x02D8] = {status="disallowed"}, -- BREVE
 [0x02D9] = {status="disallowed"}, -- DOT ABOVE
 [0x02DA] = {status="disallowed"}, -- RING ABOVE
 [0x02DB] = {status="disallowed"}, -- OGONEK
 [0x02DC] = {status="disallowed"}, -- SMALL TILDE
 [0x02DD] = {status="disallowed"}, -- DOUBLE ACUTE ACCENT
 [0x02DE] = {status="disallowed"}, -- MODIFIER LETTER RHOTIC HOOK
 [0x02DF] = {status="disallowed"}, -- MODIFIER LETTER CROSS ACCENT
 [0x02E0] = 0x0263, -- MODIFIER LETTER SMALL GAMMA
 [0x02E1] = 0x006C, -- MODIFIER LETTER SMALL L
 [0x02E2] = 0x0073, -- MODIFIER LETTER SMALL S
 [0x02E3] = 0x0078, -- MODIFIER LETTER SMALL X
 [0x02E4] = 0x0295, -- MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
 [0x02EC] = {status="valid"}, -- MODIFIER LETTER VOICING
 [0x02ED] = {status="disallowed"}, -- MODIFIER LETTER UNASPIRATED
 [0x02EE] = {status="valid"}, -- MODIFIER LETTER DOUBLE APOSTROPHE
 [0x0340] = 0x0300, -- COMBINING GRAVE TONE MARK
 [0x0341] = 0x0301, -- COMBINING ACUTE TONE MARK
 [0x0342] = {status="valid"}, -- COMBINING GREEK PERISPOMENI
 [0x0343] = 0x0313, -- COMBINING GREEK KORONIS
 [0x0344] = {0x0308, 0x0301}, -- COMBINING GREEK DIALYTIKA TONOS
 [0x0345] = 0x03B9, -- COMBINING GREEK YPOGEGRAMMENI
 [0x034F] = {status='ignored'}, -- COMBINING GRAPHEME JOINER
 [0x0362] = {status="valid"}, -- COMBINING DOUBLE RIGHTWARDS ARROW BELOW
 [0x0370] = 0x0371, -- GREEK CAPITAL LETTER HETA
 [0x0371] = {status="valid"}, -- GREEK SMALL LETTER HETA
 [0x0372] = 0x0373, -- GREEK CAPITAL LETTER ARCHAIC SAMPI
 [0x0373] = {status="valid"}, -- GREEK SMALL LETTER ARCHAIC SAMPI
 [0x0374] = 0x02B9, -- GREEK NUMERAL SIGN
 [0x0375] = {status="valid"}, -- GREEK LOWER NUMERAL SIGN
 [0x0376] = 0x0377, -- GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
 [0x0377] = {status="valid"}, -- GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
 [0x037A] = {status="disallowed"}, -- GREEK YPOGEGRAMMENI
 -- NA   <reserved-0378>..<reserved-0379>
 [0x0378] = {status="disallowed"},
 [0x0379] = {status="disallowed"},
 [0x037E] = {status="disallowed"}, -- GREEK QUESTION MARK
 [0x037F] = 0x03F3, -- GREEK CAPITAL LETTER YOT
 -- GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
 [0x037B] = {status="valid"},
 [0x037C] = {status="valid"},
 [0x037D] = {status="valid"},
 [0x0384] = {status="disallowed"}, -- GREEK TONOS
 [0x0385] = {status="disallowed"}, -- GREEK DIALYTIKA TONOS
 [0x0386] = 0x03AC, -- GREEK CAPITAL LETTER ALPHA WITH TONOS
 [0x0387] = 0x00B7, -- GREEK ANO TELEIA
 [0x0388] = 0x03AD, -- GREEK CAPITAL LETTER EPSILON WITH TONOS
 [0x0389] = 0x03AE, -- GREEK CAPITAL LETTER ETA WITH TONOS
 [0x038A] = 0x03AF, -- GREEK CAPITAL LETTER IOTA WITH TONOS
 [0x038B] = {status="disallowed"}, -- NA   <reserved-038B>
 [0x038C] = 0x03CC, -- GREEK CAPITAL LETTER OMICRON WITH TONOS
 [0x038D] = {status="disallowed"}, -- NA   <reserved-038D>
 [0x038E] = 0x03CD, -- GREEK CAPITAL LETTER UPSILON WITH TONOS
 [0x038F] = 0x03CE, -- GREEK CAPITAL LETTER OMEGA WITH TONOS
 [0x0390] = {status="valid"}, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
 [0x0391] = 0x03B1, -- GREEK CAPITAL LETTER ALPHA
 [0x0392] = 0x03B2, -- GREEK CAPITAL LETTER BETA
 [0x0393] = 0x03B3, -- GREEK CAPITAL LETTER GAMMA
 [0x0394] = 0x03B4, -- GREEK CAPITAL LETTER DELTA
 [0x0395] = 0x03B5, -- GREEK CAPITAL LETTER EPSILON
 [0x0396] = 0x03B6, -- GREEK CAPITAL LETTER ZETA
 [0x0397] = 0x03B7, -- GREEK CAPITAL LETTER ETA
 [0x0398] = 0x03B8, -- GREEK CAPITAL LETTER THETA
 [0x0399] = 0x03B9, -- GREEK CAPITAL LETTER IOTA
 [0x039A] = 0x03BA, -- GREEK CAPITAL LETTER KAPPA
 [0x039B] = 0x03BB, -- GREEK CAPITAL LETTER LAMDA
 [0x039C] = 0x03BC, -- GREEK CAPITAL LETTER MU
 [0x039D] = 0x03BD, -- GREEK CAPITAL LETTER NU
 [0x039E] = 0x03BE, -- GREEK CAPITAL LETTER XI
 [0x039F] = 0x03BF, -- GREEK CAPITAL LETTER OMICRON
 [0x03A0] = 0x03C0, -- GREEK CAPITAL LETTER PI
 [0x03A1] = 0x03C1, -- GREEK CAPITAL LETTER RHO
 [0x03A2] = {status="disallowed"}, -- NA   <reserved-03A2>
 [0x03A3] = 0x03C3, -- GREEK CAPITAL LETTER SIGMA
 [0x03A4] = 0x03C4, -- GREEK CAPITAL LETTER TAU
 [0x03A5] = 0x03C5, -- GREEK CAPITAL LETTER UPSILON
 [0x03A6] = 0x03C6, -- GREEK CAPITAL LETTER PHI
 [0x03A7] = 0x03C7, -- GREEK CAPITAL LETTER CHI
 [0x03A8] = 0x03C8, -- GREEK CAPITAL LETTER PSI
 [0x03A9] = 0x03C9, -- GREEK CAPITAL LETTER OMEGA
 [0x03AA] = 0x03CA, -- GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
 [0x03AB] = 0x03CB, -- GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
 -- NA   <reserved-0380>..<reserved-0383>
 [0x0380] = {status="disallowed"},
 [0x0381] = {status="disallowed"},
 [0x0382] = {status="disallowed"},
 [0x0383] = {status="disallowed"},
 [0x03C2] = {status='deviation', 0x03C3}, -- GREEK SMALL LETTER FINAL SIGMA
 [0x03CF] = 0x03D7, -- GREEK CAPITAL KAI SYMBOL
 [0x03D0] = 0x03B2, -- GREEK BETA SYMBOL
 [0x03D1] = 0x03B8, -- GREEK THETA SYMBOL
 [0x03D2] = 0x03C5, -- GREEK UPSILON WITH HOOK SYMBOL
 [0x03D3] = 0x03CD, -- GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
 [0x03D4] = 0x03CB, -- GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
 [0x03D5] = 0x03C6, -- GREEK PHI SYMBOL
 [0x03D6] = 0x03C0, -- GREEK PI SYMBOL
 [0x03D7] = {status="valid"}, -- GREEK KAI SYMBOL
 [0x03D8] = 0x03D9, -- GREEK LETTER ARCHAIC KOPPA
 [0x03D9] = {status="valid"}, -- GREEK SMALL LETTER ARCHAIC KOPPA
 [0x03DA] = 0x03DB, -- GREEK LETTER STIGMA
 [0x03DB] = {status="valid"}, -- GREEK SMALL LETTER STIGMA
 [0x03DC] = 0x03DD, -- GREEK LETTER DIGAMMA
 [0x03DD] = {status="valid"}, -- GREEK SMALL LETTER DIGAMMA
 [0x03DE] = 0x03DF, -- GREEK LETTER KOPPA
 [0x03DF] = {status="valid"}, -- GREEK SMALL LETTER KOPPA
 [0x03E0] = 0x03E1, -- GREEK LETTER SAMPI
 [0x03E1] = {status="valid"}, -- GREEK SMALL LETTER SAMPI
 [0x03E2] = 0x03E3, -- COPTIC CAPITAL LETTER SHEI
 [0x03E3] = {status="valid"}, -- COPTIC SMALL LETTER SHEI
 [0x03E4] = 0x03E5, -- COPTIC CAPITAL LETTER FEI
 [0x03E5] = {status="valid"}, -- COPTIC SMALL LETTER FEI
 [0x03E6] = 0x03E7, -- COPTIC CAPITAL LETTER KHEI
 [0x03E7] = {status="valid"}, -- COPTIC SMALL LETTER KHEI
 [0x03E8] = 0x03E9, -- COPTIC CAPITAL LETTER HORI
 [0x03E9] = {status="valid"}, -- COPTIC SMALL LETTER HORI
 [0x03EA] = 0x03EB, -- COPTIC CAPITAL LETTER GANGIA
 [0x03EB] = {status="valid"}, -- COPTIC SMALL LETTER GANGIA
 [0x03EC] = 0x03ED, -- COPTIC CAPITAL LETTER SHIMA
 [0x03ED] = {status="valid"}, -- COPTIC SMALL LETTER SHIMA
 [0x03EE] = 0x03EF, -- COPTIC CAPITAL LETTER DEI
 [0x03EF] = {status="valid"}, -- COPTIC SMALL LETTER DEI
 [0x03F0] = 0x03BA, -- GREEK KAPPA SYMBOL
 [0x03F1] = 0x03C1, -- GREEK RHO SYMBOL
 [0x03F2] = 0x03C3, -- GREEK LUNATE SIGMA SYMBOL
 [0x03F3] = {status="valid"}, -- GREEK LETTER YOT
 [0x03F4] = 0x03B8, -- GREEK CAPITAL THETA SYMBOL
 [0x03F5] = 0x03B5, -- GREEK LUNATE EPSILON SYMBOL
 [0x03F6] = {status="disallowed"}, -- GREEK REVERSED LUNATE EPSILON SYMBOL
 [0x03F7] = 0x03F8, -- GREEK CAPITAL LETTER SHO
 [0x03F8] = {status="valid"}, -- GREEK SMALL LETTER SHO
 [0x03F9] = 0x03C3, -- GREEK CAPITAL LUNATE SIGMA SYMBOL
 [0x03FA] = 0x03FB, -- GREEK CAPITAL LETTER SAN
 [0x03FB] = {status="valid"}, -- GREEK SMALL LETTER SAN
 [0x03FC] = {status="valid"}, -- GREEK RHO WITH STROKE SYMBOL
 [0x03FD] = 0x037B, -- GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
 [0x03FE] = 0x037C, -- GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
 [0x03FF] = 0x037D, -- GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
 [0x0400] = 0x0450, -- CYRILLIC CAPITAL LETTER IE WITH GRAVE
 [0x0401] = 0x0451, -- CYRILLIC CAPITAL LETTER IO
 [0x0402] = 0x0452, -- CYRILLIC CAPITAL LETTER DJE
 [0x0403] = 0x0453, -- CYRILLIC CAPITAL LETTER GJE
 [0x0404] = 0x0454, -- CYRILLIC CAPITAL LETTER UKRAINIAN IE
 [0x0405] = 0x0455, -- CYRILLIC CAPITAL LETTER DZE
 [0x0406] = 0x0456, -- CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
 [0x0407] = 0x0457, -- CYRILLIC CAPITAL LETTER YI
 [0x0408] = 0x0458, -- CYRILLIC CAPITAL LETTER JE
 [0x0409] = 0x0459, -- CYRILLIC CAPITAL LETTER LJE
 [0x040A] = 0x045A, -- CYRILLIC CAPITAL LETTER NJE
 [0x040B] = 0x045B, -- CYRILLIC CAPITAL LETTER TSHE
 [0x040C] = 0x045C, -- CYRILLIC CAPITAL LETTER KJE
 [0x040D] = 0x045D, -- CYRILLIC CAPITAL LETTER I WITH GRAVE
 [0x040E] = 0x045E, -- CYRILLIC CAPITAL LETTER SHORT U
 [0x040F] = 0x045F, -- CYRILLIC CAPITAL LETTER DZHE
 [0x0410] = 0x0430, -- CYRILLIC CAPITAL LETTER A
 [0x0411] = 0x0431, -- CYRILLIC CAPITAL LETTER BE
 [0x0412] = 0x0432, -- CYRILLIC CAPITAL LETTER VE
 [0x0413] = 0x0433, -- CYRILLIC CAPITAL LETTER GHE
 [0x0414] = 0x0434, -- CYRILLIC CAPITAL LETTER DE
 [0x0415] = 0x0435, -- CYRILLIC CAPITAL LETTER IE
 [0x0416] = 0x0436, -- CYRILLIC CAPITAL LETTER ZHE
 [0x0417] = 0x0437, -- CYRILLIC CAPITAL LETTER ZE
 [0x0418] = 0x0438, -- CYRILLIC CAPITAL LETTER I
 [0x0419] = 0x0439, -- CYRILLIC CAPITAL LETTER SHORT I
 [0x041A] = 0x043A, -- CYRILLIC CAPITAL LETTER KA
 [0x041B] = 0x043B, -- CYRILLIC CAPITAL LETTER EL
 [0x041C] = 0x043C, -- CYRILLIC CAPITAL LETTER EM
 [0x041D] = 0x043D, -- CYRILLIC CAPITAL LETTER EN
 [0x041E] = 0x043E, -- CYRILLIC CAPITAL LETTER O
 [0x041F] = 0x043F, -- CYRILLIC CAPITAL LETTER PE
 [0x0420] = 0x0440, -- CYRILLIC CAPITAL LETTER ER
 [0x0421] = 0x0441, -- CYRILLIC CAPITAL LETTER ES
 [0x0422] = 0x0442, -- CYRILLIC CAPITAL LETTER TE
 [0x0423] = 0x0443, -- CYRILLIC CAPITAL LETTER U
 [0x0424] = 0x0444, -- CYRILLIC CAPITAL LETTER EF
 [0x0425] = 0x0445, -- CYRILLIC CAPITAL LETTER HA
 [0x0426] = 0x0446, -- CYRILLIC CAPITAL LETTER TSE
 [0x0427] = 0x0447, -- CYRILLIC CAPITAL LETTER CHE
 [0x0428] = 0x0448, -- CYRILLIC CAPITAL LETTER SHA
 [0x0429] = 0x0449, -- CYRILLIC CAPITAL LETTER SHCHA
 [0x042A] = 0x044A, -- CYRILLIC CAPITAL LETTER HARD SIGN
 [0x042B] = 0x044B, -- CYRILLIC CAPITAL LETTER YERU
 [0x042C] = 0x044C, -- CYRILLIC CAPITAL LETTER SOFT SIGN
 [0x042D] = 0x044D, -- CYRILLIC CAPITAL LETTER E
 [0x042E] = 0x044E, -- CYRILLIC CAPITAL LETTER YU
 [0x042F] = 0x044F, -- CYRILLIC CAPITAL LETTER YA
 [0x0450] = {status="valid"}, -- CYRILLIC SMALL LETTER IE WITH GRAVE
 [0x045D] = {status="valid"}, -- CYRILLIC SMALL LETTER I WITH GRAVE
 [0x0460] = 0x0461, -- CYRILLIC CAPITAL LETTER OMEGA
 [0x0461] = {status="valid"}, -- CYRILLIC SMALL LETTER OMEGA
 [0x0462] = 0x0463, -- CYRILLIC CAPITAL LETTER YAT
 [0x0463] = {status="valid"}, -- CYRILLIC SMALL LETTER YAT
 [0x0464] = 0x0465, -- CYRILLIC CAPITAL LETTER IOTIFIED E
 [0x0465] = {status="valid"}, -- CYRILLIC SMALL LETTER IOTIFIED E
 [0x0466] = 0x0467, -- CYRILLIC CAPITAL LETTER LITTLE YUS
 [0x0467] = {status="valid"}, -- CYRILLIC SMALL LETTER LITTLE YUS
 [0x0468] = 0x0469, -- CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
 [0x0469] = {status="valid"}, -- CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
 [0x046A] = 0x046B, -- CYRILLIC CAPITAL LETTER BIG YUS
 [0x046B] = {status="valid"}, -- CYRILLIC SMALL LETTER BIG YUS
 [0x046C] = 0x046D, -- CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
 [0x046D] = {status="valid"}, -- CYRILLIC SMALL LETTER IOTIFIED BIG YUS
 [0x046E] = 0x046F, -- CYRILLIC CAPITAL LETTER KSI
 [0x046F] = {status="valid"}, -- CYRILLIC SMALL LETTER KSI
 [0x0470] = 0x0471, -- CYRILLIC CAPITAL LETTER PSI
 [0x0471] = {status="valid"}, -- CYRILLIC SMALL LETTER PSI
 [0x0472] = 0x0473, -- CYRILLIC CAPITAL LETTER FITA
 [0x0473] = {status="valid"}, -- CYRILLIC SMALL LETTER FITA
 [0x0474] = 0x0475, -- CYRILLIC CAPITAL LETTER IZHITSA
 [0x0475] = {status="valid"}, -- CYRILLIC SMALL LETTER IZHITSA
 [0x0476] = 0x0477, -- CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
 [0x0477] = {status="valid"}, -- CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
 [0x0478] = 0x0479, -- CYRILLIC CAPITAL LETTER UK
 [0x0479] = {status="valid"}, -- CYRILLIC SMALL LETTER UK
 [0x047A] = 0x047B, -- CYRILLIC CAPITAL LETTER ROUND OMEGA
 [0x047B] = {status="valid"}, -- CYRILLIC SMALL LETTER ROUND OMEGA
 [0x047C] = 0x047D, -- CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
 [0x047D] = {status="valid"}, -- CYRILLIC SMALL LETTER OMEGA WITH TITLO
 [0x047E] = 0x047F, -- CYRILLIC CAPITAL LETTER OT
 [0x047F] = {status="valid"}, -- CYRILLIC SMALL LETTER OT
 [0x0480] = 0x0481, -- CYRILLIC CAPITAL LETTER KOPPA
 [0x0481] = {status="valid"}, -- CYRILLIC SMALL LETTER KOPPA
 [0x0482] = {status="disallowed"}, -- CYRILLIC THOUSANDS SIGN
 -- CYRILLIC SMALL LETTER SHORT U..CYRILLIC SMALL LETTER DZHE
 [0x045E] = {status="valid"},
 [0x045F] = {status="valid"},
 [0x0487] = {status="valid"}, -- COMBINING CYRILLIC POKRYTIE
 -- COMBINING CYRILLIC TITLO..COMBINING CYRILLIC PSILI PNEUMATA
 [0x0483] = {status="valid"},
 [0x0484] = {status="valid"},
 [0x0485] = {status="valid"},
 [0x0486] = {status="valid"},
 [0x048A] = 0x048B, -- CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
 [0x048B] = {status="valid"}, -- CYRILLIC SMALL LETTER SHORT I WITH TAIL
 [0x048C] = 0x048D, -- CYRILLIC CAPITAL LETTER SEMISOFT SIGN
 [0x048D] = {status="valid"}, -- CYRILLIC SMALL LETTER SEMISOFT SIGN
 [0x048E] = 0x048F, -- CYRILLIC CAPITAL LETTER ER WITH TICK
 [0x048F] = {status="valid"}, -- CYRILLIC SMALL LETTER ER WITH TICK
 [0x0490] = 0x0491, -- CYRILLIC CAPITAL LETTER GHE WITH UPTURN
 [0x0491] = {status="valid"}, -- CYRILLIC SMALL LETTER GHE WITH UPTURN
 [0x0492] = 0x0493, -- CYRILLIC CAPITAL LETTER GHE WITH STROKE
 [0x0493] = {status="valid"}, -- CYRILLIC SMALL LETTER GHE WITH STROKE
 [0x0494] = 0x0495, -- CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
 [0x0495] = {status="valid"}, -- CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
 [0x0496] = 0x0497, -- CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
 [0x0497] = {status="valid"}, -- CYRILLIC SMALL LETTER ZHE WITH DESCENDER
 [0x0498] = 0x0499, -- CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
 [0x0499] = {status="valid"}, -- CYRILLIC SMALL LETTER ZE WITH DESCENDER
 [0x049A] = 0x049B, -- CYRILLIC CAPITAL LETTER KA WITH DESCENDER
 [0x049B] = {status="valid"}, -- CYRILLIC SMALL LETTER KA WITH DESCENDER
 [0x049C] = 0x049D, -- CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
 [0x049D] = {status="valid"}, -- CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
 [0x049E] = 0x049F, -- CYRILLIC CAPITAL LETTER KA WITH STROKE
 [0x049F] = {status="valid"}, -- CYRILLIC SMALL LETTER KA WITH STROKE
 [0x04A0] = 0x04A1, -- CYRILLIC CAPITAL LETTER BASHKIR KA
 [0x04A1] = {status="valid"}, -- CYRILLIC SMALL LETTER BASHKIR KA
 [0x04A2] = 0x04A3, -- CYRILLIC CAPITAL LETTER EN WITH DESCENDER
 [0x04A3] = {status="valid"}, -- CYRILLIC SMALL LETTER EN WITH DESCENDER
 [0x04A4] = 0x04A5, -- CYRILLIC CAPITAL LIGATURE EN GHE
 [0x04A5] = {status="valid"}, -- CYRILLIC SMALL LIGATURE EN GHE
 [0x04A6] = 0x04A7, -- CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
 [0x04A7] = {status="valid"}, -- CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
 [0x04A8] = 0x04A9, -- CYRILLIC CAPITAL LETTER ABKHASIAN HA
 [0x04A9] = {status="valid"}, -- CYRILLIC SMALL LETTER ABKHASIAN HA
 [0x04AA] = 0x04AB, -- CYRILLIC CAPITAL LETTER ES WITH DESCENDER
 [0x04AB] = {status="valid"}, -- CYRILLIC SMALL LETTER ES WITH DESCENDER
 [0x04AC] = 0x04AD, -- CYRILLIC CAPITAL LETTER TE WITH DESCENDER
 [0x04AD] = {status="valid"}, -- CYRILLIC SMALL LETTER TE WITH DESCENDER
 [0x04AE] = 0x04AF, -- CYRILLIC CAPITAL LETTER STRAIGHT U
 [0x04AF] = {status="valid"}, -- CYRILLIC SMALL LETTER STRAIGHT U
 [0x04B0] = 0x04B1, -- CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
 [0x04B1] = {status="valid"}, -- CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
 [0x04B2] = 0x04B3, -- CYRILLIC CAPITAL LETTER HA WITH DESCENDER
 [0x04B3] = {status="valid"}, -- CYRILLIC SMALL LETTER HA WITH DESCENDER
 [0x04B4] = 0x04B5, -- CYRILLIC CAPITAL LIGATURE TE TSE
 [0x04B5] = {status="valid"}, -- CYRILLIC SMALL LIGATURE TE TSE
 [0x04B6] = 0x04B7, -- CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
 [0x04B7] = {status="valid"}, -- CYRILLIC SMALL LETTER CHE WITH DESCENDER
 [0x04B8] = 0x04B9, -- CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
 [0x04B9] = {status="valid"}, -- CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
 [0x04BA] = 0x04BB, -- CYRILLIC CAPITAL LETTER SHHA
 [0x04BB] = {status="valid"}, -- CYRILLIC SMALL LETTER SHHA
 [0x04BC] = 0x04BD, -- CYRILLIC CAPITAL LETTER ABKHASIAN CHE
 [0x04BD] = {status="valid"}, -- CYRILLIC SMALL LETTER ABKHASIAN CHE
 [0x04BE] = 0x04BF, -- CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
 [0x04BF] = {status="valid"}, -- CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
 [0x04C0] = {status="disallowed"}, -- CYRILLIC LETTER PALOCHKA
 [0x04C1] = 0x04C2, -- CYRILLIC CAPITAL LETTER ZHE WITH BREVE
 [0x04C2] = {status="valid"}, -- CYRILLIC SMALL LETTER ZHE WITH BREVE
 [0x04C3] = 0x04C4, -- CYRILLIC CAPITAL LETTER KA WITH HOOK
 [0x04C4] = {status="valid"}, -- CYRILLIC SMALL LETTER KA WITH HOOK
 [0x04C5] = 0x04C6, -- CYRILLIC CAPITAL LETTER EL WITH TAIL
 [0x04C6] = {status="valid"}, -- CYRILLIC SMALL LETTER EL WITH TAIL
 [0x04C7] = 0x04C8, -- CYRILLIC CAPITAL LETTER EN WITH HOOK
 [0x04C8] = {status="valid"}, -- CYRILLIC SMALL LETTER EN WITH HOOK
 [0x04C9] = 0x04CA, -- CYRILLIC CAPITAL LETTER EN WITH TAIL
 [0x04CA] = {status="valid"}, -- CYRILLIC SMALL LETTER EN WITH TAIL
 [0x04CB] = 0x04CC, -- CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
 [0x04CC] = {status="valid"}, -- CYRILLIC SMALL LETTER KHAKASSIAN CHE
 [0x04CD] = 0x04CE, -- CYRILLIC CAPITAL LETTER EM WITH TAIL
 [0x04CE] = {status="valid"}, -- CYRILLIC SMALL LETTER EM WITH TAIL
 [0x04CF] = {status="valid"}, -- CYRILLIC SMALL LETTER PALOCHKA
 [0x04D0] = 0x04D1, -- CYRILLIC CAPITAL LETTER A WITH BREVE
 [0x04D1] = {status="valid"}, -- CYRILLIC SMALL LETTER A WITH BREVE
 [0x04D2] = 0x04D3, -- CYRILLIC CAPITAL LETTER A WITH DIAERESIS
 [0x04D3] = {status="valid"}, -- CYRILLIC SMALL LETTER A WITH DIAERESIS
 [0x04D4] = 0x04D5, -- CYRILLIC CAPITAL LIGATURE A IE
 [0x04D5] = {status="valid"}, -- CYRILLIC SMALL LIGATURE A IE
 [0x04D6] = 0x04D7, -- CYRILLIC CAPITAL LETTER IE WITH BREVE
 [0x04D7] = {status="valid"}, -- CYRILLIC SMALL LETTER IE WITH BREVE
 [0x04D8] = 0x04D9, -- CYRILLIC CAPITAL LETTER SCHWA
 [0x04D9] = {status="valid"}, -- CYRILLIC SMALL LETTER SCHWA
 [0x04DA] = 0x04DB, -- CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
 [0x04DB] = {status="valid"}, -- CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
 [0x04DC] = 0x04DD, -- CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
 [0x04DD] = {status="valid"}, -- CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
 [0x04DE] = 0x04DF, -- CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
 [0x04DF] = {status="valid"}, -- CYRILLIC SMALL LETTER ZE WITH DIAERESIS
 [0x04E0] = 0x04E1, -- CYRILLIC CAPITAL LETTER ABKHASIAN DZE
 [0x04E1] = {status="valid"}, -- CYRILLIC SMALL LETTER ABKHASIAN DZE
 [0x04E2] = 0x04E3, -- CYRILLIC CAPITAL LETTER I WITH MACRON
 [0x04E3] = {status="valid"}, -- CYRILLIC SMALL LETTER I WITH MACRON
 [0x04E4] = 0x04E5, -- CYRILLIC CAPITAL LETTER I WITH DIAERESIS
 [0x04E5] = {status="valid"}, -- CYRILLIC SMALL LETTER I WITH DIAERESIS
 [0x04E6] = 0x04E7, -- CYRILLIC CAPITAL LETTER O WITH DIAERESIS
 [0x04E7] = {status="valid"}, -- CYRILLIC SMALL LETTER O WITH DIAERESIS
 [0x04E8] = 0x04E9, -- CYRILLIC CAPITAL LETTER BARRED O
 [0x04E9] = {status="valid"}, -- CYRILLIC SMALL LETTER BARRED O
 [0x04EA] = 0x04EB, -- CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
 [0x04EB] = {status="valid"}, -- CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
 [0x04EC] = 0x04ED, -- CYRILLIC CAPITAL LETTER E WITH DIAERESIS
 [0x04ED] = {status="valid"}, -- CYRILLIC SMALL LETTER E WITH DIAERESIS
 [0x04EE] = 0x04EF, -- CYRILLIC CAPITAL LETTER U WITH MACRON
 [0x04EF] = {status="valid"}, -- CYRILLIC SMALL LETTER U WITH MACRON
 [0x04F0] = 0x04F1, -- CYRILLIC CAPITAL LETTER U WITH DIAERESIS
 [0x04F1] = {status="valid"}, -- CYRILLIC SMALL LETTER U WITH DIAERESIS
 [0x04F2] = 0x04F3, -- CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
 [0x04F3] = {status="valid"}, -- CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
 [0x04F4] = 0x04F5, -- CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
 [0x04F5] = {status="valid"}, -- CYRILLIC SMALL LETTER CHE WITH DIAERESIS
 [0x04F6] = 0x04F7, -- CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
 [0x04F7] = {status="valid"}, -- CYRILLIC SMALL LETTER GHE WITH DESCENDER
 [0x04F8] = 0x04F9, -- CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
 [0x04F9] = {status="valid"}, -- CYRILLIC SMALL LETTER YERU WITH DIAERESIS
 [0x04FA] = 0x04FB, -- CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
 [0x04FB] = {status="valid"}, -- CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
 [0x04FC] = 0x04FD, -- CYRILLIC CAPITAL LETTER HA WITH HOOK
 [0x04FD] = {status="valid"}, -- CYRILLIC SMALL LETTER HA WITH HOOK
 [0x04FE] = 0x04FF, -- CYRILLIC CAPITAL LETTER HA WITH STROKE
 [0x04FF] = {status="valid"}, -- CYRILLIC SMALL LETTER HA WITH STROKE
 [0x0500] = 0x0501, -- CYRILLIC CAPITAL LETTER KOMI DE
 [0x0501] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI DE
 [0x0502] = 0x0503, -- CYRILLIC CAPITAL LETTER KOMI DJE
 [0x0503] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI DJE
 [0x0504] = 0x0505, -- CYRILLIC CAPITAL LETTER KOMI ZJE
 [0x0505] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI ZJE
 [0x0506] = 0x0507, -- CYRILLIC CAPITAL LETTER KOMI DZJE
 [0x0507] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI DZJE
 [0x0508] = 0x0509, -- CYRILLIC CAPITAL LETTER KOMI LJE
 [0x0509] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI LJE
 [0x050A] = 0x050B, -- CYRILLIC CAPITAL LETTER KOMI NJE
 [0x050B] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI NJE
 [0x050C] = 0x050D, -- CYRILLIC CAPITAL LETTER KOMI SJE
 [0x050D] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI SJE
 [0x050E] = 0x050F, -- CYRILLIC CAPITAL LETTER KOMI TJE
 [0x050F] = {status="valid"}, -- CYRILLIC SMALL LETTER KOMI TJE
 [0x0510] = 0x0511, -- CYRILLIC CAPITAL LETTER REVERSED ZE
 [0x0511] = {status="valid"}, -- CYRILLIC SMALL LETTER REVERSED ZE
 [0x0512] = 0x0513, -- CYRILLIC CAPITAL LETTER EL WITH HOOK
 [0x0513] = {status="valid"}, -- CYRILLIC SMALL LETTER EL WITH HOOK
 [0x0514] = 0x0515, -- CYRILLIC CAPITAL LETTER LHA
 [0x0515] = {status="valid"}, -- CYRILLIC SMALL LETTER LHA
 [0x0516] = 0x0517, -- CYRILLIC CAPITAL LETTER RHA
 [0x0517] = {status="valid"}, -- CYRILLIC SMALL LETTER RHA
 [0x0518] = 0x0519, -- CYRILLIC CAPITAL LETTER YAE
 [0x0519] = {status="valid"}, -- CYRILLIC SMALL LETTER YAE
 [0x051A] = 0x051B, -- CYRILLIC CAPITAL LETTER QA
 [0x051B] = {status="valid"}, -- CYRILLIC SMALL LETTER QA
 [0x051C] = 0x051D, -- CYRILLIC CAPITAL LETTER WE
 [0x051D] = {status="valid"}, -- CYRILLIC SMALL LETTER WE
 [0x051E] = 0x051F, -- CYRILLIC CAPITAL LETTER ALEUT KA
 [0x051F] = {status="valid"}, -- CYRILLIC SMALL LETTER ALEUT KA
 [0x0520] = 0x0521, -- CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
 [0x0521] = {status="valid"}, -- CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
 [0x0522] = 0x0523, -- CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
 [0x0523] = {status="valid"}, -- CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
 [0x0524] = 0x0525, -- CYRILLIC CAPITAL LETTER PE WITH DESCENDER
 [0x0525] = {status="valid"}, -- CYRILLIC SMALL LETTER PE WITH DESCENDER
 [0x0526] = 0x0527, -- CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
 [0x0527] = {status="valid"}, -- CYRILLIC SMALL LETTER SHHA WITH DESCENDER
 [0x0528] = 0x0529, -- CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
 [0x0529] = {status="valid"}, -- CYRILLIC SMALL LETTER EN WITH LEFT HOOK
 [0x052A] = 0x052B, -- CYRILLIC CAPITAL LETTER DZZHE
 [0x052B] = {status="valid"}, -- CYRILLIC SMALL LETTER DZZHE
 [0x052C] = 0x052D, -- CYRILLIC CAPITAL LETTER DCHE
 [0x052D] = {status="valid"}, -- CYRILLIC SMALL LETTER DCHE
 [0x052E] = 0x052F, -- CYRILLIC CAPITAL LETTER EL WITH DESCENDER
 [0x052F] = {status="valid"}, -- CYRILLIC SMALL LETTER EL WITH DESCENDER
 [0x0530] = {status="disallowed"}, -- NA   <reserved-0530>
 [0x0531] = 0x0561, -- ARMENIAN CAPITAL LETTER AYB
 [0x0532] = 0x0562, -- ARMENIAN CAPITAL LETTER BEN
 [0x0533] = 0x0563, -- ARMENIAN CAPITAL LETTER GIM
 [0x0534] = 0x0564, -- ARMENIAN CAPITAL LETTER DA
 [0x0535] = 0x0565, -- ARMENIAN CAPITAL LETTER ECH
 [0x0536] = 0x0566, -- ARMENIAN CAPITAL LETTER ZA
 [0x0537] = 0x0567, -- ARMENIAN CAPITAL LETTER EH
 [0x0538] = 0x0568, -- ARMENIAN CAPITAL LETTER ET
 [0x0539] = 0x0569, -- ARMENIAN CAPITAL LETTER TO
 [0x053A] = 0x056A, -- ARMENIAN CAPITAL LETTER ZHE
 [0x053B] = 0x056B, -- ARMENIAN CAPITAL LETTER INI
 [0x053C] = 0x056C, -- ARMENIAN CAPITAL LETTER LIWN
 [0x053D] = 0x056D, -- ARMENIAN CAPITAL LETTER XEH
 [0x053E] = 0x056E, -- ARMENIAN CAPITAL LETTER CA
 [0x053F] = 0x056F, -- ARMENIAN CAPITAL LETTER KEN
 [0x0540] = 0x0570, -- ARMENIAN CAPITAL LETTER HO
 [0x0541] = 0x0571, -- ARMENIAN CAPITAL LETTER JA
 [0x0542] = 0x0572, -- ARMENIAN CAPITAL LETTER GHAD
 [0x0543] = 0x0573, -- ARMENIAN CAPITAL LETTER CHEH
 [0x0544] = 0x0574, -- ARMENIAN CAPITAL LETTER MEN
 [0x0545] = 0x0575, -- ARMENIAN CAPITAL LETTER YI
 [0x0546] = 0x0576, -- ARMENIAN CAPITAL LETTER NOW
 [0x0547] = 0x0577, -- ARMENIAN CAPITAL LETTER SHA
 [0x0548] = 0x0578, -- ARMENIAN CAPITAL LETTER VO
 [0x0549] = 0x0579, -- ARMENIAN CAPITAL LETTER CHA
 [0x054A] = 0x057A, -- ARMENIAN CAPITAL LETTER PEH
 [0x054B] = 0x057B, -- ARMENIAN CAPITAL LETTER JHEH
 [0x054C] = 0x057C, -- ARMENIAN CAPITAL LETTER RA
 [0x054D] = 0x057D, -- ARMENIAN CAPITAL LETTER SEH
 [0x054E] = 0x057E, -- ARMENIAN CAPITAL LETTER VEW
 [0x054F] = 0x057F, -- ARMENIAN CAPITAL LETTER TIWN
 [0x0550] = 0x0580, -- ARMENIAN CAPITAL LETTER REH
 [0x0551] = 0x0581, -- ARMENIAN CAPITAL LETTER CO
 [0x0552] = 0x0582, -- ARMENIAN CAPITAL LETTER YIWN
 [0x0553] = 0x0583, -- ARMENIAN CAPITAL LETTER PIWR
 [0x0554] = 0x0584, -- ARMENIAN CAPITAL LETTER KEH
 [0x0555] = 0x0585, -- ARMENIAN CAPITAL LETTER OH
 [0x0556] = 0x0586, -- ARMENIAN CAPITAL LETTER FEH
 -- COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
 [0x0488] = {status="disallowed"},
 [0x0489] = {status="disallowed"},
 [0x0559] = {status="valid"}, -- ARMENIAN MODIFIER LETTER LEFT HALF RING
 -- NA   <reserved-0557>..<reserved-0558>
 [0x0557] = {status="disallowed"},
 [0x0558] = {status="disallowed"},
 [0x0560] = {status="disallowed"}, -- NA   <reserved-0560>
 [0x0587] = {0x0565, 0x0582}, -- ARMENIAN SMALL LIGATURE ECH YIWN
 [0x0588] = {status="disallowed"}, -- NA   <reserved-0588>
 [0x0589] = {status="disallowed"}, -- ARMENIAN FULL STOP
 [0x058A] = {status="disallowed"}, -- ARMENIAN HYPHEN
 -- NA   <reserved-058B>..<reserved-058C>
 [0x058B] = {status="disallowed"},
 [0x058C] = {status="disallowed"},
 [0x058F] = {status="disallowed"}, -- ARMENIAN DRAM SIGN
 [0x0590] = {status="disallowed"}, -- NA   <reserved-0590>
 -- RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN
 [0x058D] = {status="disallowed"},
 [0x058E] = {status="disallowed"},
 [0x05A2] = {status="valid"}, -- HEBREW ACCENT ATNAH HAFUKH
 [0x05BA] = {status="valid"}, -- HEBREW POINT HOLAM HASER FOR VAV
 [0x05BE] = {status="disallowed"}, -- HEBREW PUNCTUATION MAQAF
 [0x05BF] = {status="valid"}, -- HEBREW POINT RAFE
 [0x05C0] = {status="disallowed"}, -- HEBREW PUNCTUATION PASEQ
 -- HEBREW POINT QUBUTS..HEBREW POINT METEG
 [0x05BB] = {status="valid"},
 [0x05BC] = {status="valid"},
 [0x05BD] = {status="valid"},
 [0x05C3] = {status="disallowed"}, -- HEBREW PUNCTUATION SOF PASUQ
 [0x05C4] = {status="valid"}, -- HEBREW MARK UPPER DOT
 [0x05C5] = {status="valid"}, -- HEBREW MARK LOWER DOT
 [0x05C6] = {status="disallowed"}, -- HEBREW PUNCTUATION NUN HAFUKHA
 [0x05C7] = {status="valid"}, -- HEBREW POINT QAMATS QATAN
 -- HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
 [0x05C1] = {status="valid"},
 [0x05C2] = {status="valid"},
 -- NA   <reserved-05EB>..<reserved-05EF>
 [0x05EB] = {status="disallowed"},
 [0x05EC] = {status="disallowed"},
 [0x05ED] = {status="disallowed"},
 [0x05EE] = {status="disallowed"},
 [0x05EF] = {status="disallowed"},
 -- HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW PUNCTUATION GERSHAYIM
 [0x05F0] = {status="valid"},
 [0x05F1] = {status="valid"},
 [0x05F2] = {status="valid"},
 [0x05F3] = {status="valid"},
 [0x05F4] = {status="valid"},
 [0x0604] = {status="disallowed"}, -- ARABIC SIGN SAMVAT
 [0x0605] = {status="disallowed"}, -- ARABIC NUMBER MARK ABOVE
 [0x060B] = {status="disallowed"}, -- AFGHANI SIGN
 [0x060C] = {status="disallowed"}, -- ARABIC COMMA
 -- ARABIC-INDIC CUBE ROOT..ARABIC-INDIC PER TEN THOUSAND SIGN
 [0x0606] = {status="disallowed"},
 [0x0607] = {status="disallowed"},
 [0x0608] = {status="disallowed"},
 [0x0609] = {status="disallowed"},
 [0x060A] = {status="disallowed"},
 -- ARABIC DATE SEPARATOR..ARABIC SIGN MISRA
 [0x060D] = {status="disallowed"},
 [0x060E] = {status="disallowed"},
 [0x060F] = {status="disallowed"},
 [0x061B] = {status="disallowed"}, -- ARABIC SEMICOLON
 [0x061C] = {status="disallowed"}, -- ARABIC LETTER MARK
 [0x061D] = {status="disallowed"}, -- NA   <reserved-061D>
 [0x061E] = {status="disallowed"}, -- ARABIC TRIPLE DOT PUNCTUATION MARK
 [0x061F] = {status="disallowed"}, -- ARABIC QUESTION MARK
 [0x0620] = {status="valid"}, -- ARABIC LETTER KASHMIRI YEH
 [0x0640] = {status="disallowed"}, -- ARABIC TATWEEL
 [0x065F] = {status="valid"}, -- ARABIC WAVY HAMZA BELOW
 -- ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
 [0x066A] = {status="disallowed"},
 [0x066B] = {status="disallowed"},
 [0x066C] = {status="disallowed"},
 [0x066D] = {status="disallowed"},
 [0x0675] = {0x0627, 0x0674}, -- ARABIC LETTER HIGH HAMZA ALEF
 [0x0676] = {0x0648, 0x0674}, -- ARABIC LETTER HIGH HAMZA WAW
 [0x0677] = {0x06C7, 0x0674}, -- ARABIC LETTER U WITH HAMZA ABOVE
 [0x0678] = {0x064A, 0x0674}, -- ARABIC LETTER HIGH HAMZA YEH
 [0x06BF] = {status="valid"}, -- ARABIC LETTER TCHEH WITH DOT ABOVE
 [0x06CF] = {status="valid"}, -- ARABIC LETTER WAW WITH DOT ABOVE
 [0x06D4] = {status="disallowed"}, -- ARABIC FULL STOP
 -- ARABIC LETTER E..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
 [0x06D0] = {status="valid"},
 [0x06D1] = {status="valid"},
 [0x06D2] = {status="valid"},
 [0x06D3] = {status="valid"},
 [0x06DD] = {status="disallowed"}, -- ARABIC END OF AYAH
 [0x06DE] = {status="disallowed"}, -- ARABIC START OF RUB EL HIZB
 [0x06E9] = {status="disallowed"}, -- ARABIC PLACE OF SAJDAH
 [0x06FF] = {status="valid"}, -- ARABIC LETTER HEH WITH INVERTED V
 [0x070E] = {status="disallowed"}, -- NA   <reserved-070E>
 [0x070F] = {status="disallowed"}, -- SYRIAC ABBREVIATION MARK
 -- NA   <reserved-074B>..<reserved-074C>
 [0x074B] = {status="disallowed"},
 [0x074C] = {status="disallowed"},
 [0x07B1] = {status="valid"}, -- THAANA LETTER NAA
 -- NKO SYMBOL OO DENNEN..NKO LAJANYALAN
 [0x07F6] = {status="disallowed"},
 [0x07F7] = {status="disallowed"},
 [0x07F8] = {status="disallowed"},
 [0x07F9] = {status="disallowed"},
 [0x07FA] = {status="disallowed"},
 -- NA   <reserved-07FB>..<reserved-07FF>
 [0x07FB] = {status="disallowed"},
 [0x07FC] = {status="disallowed"},
 [0x07FD] = {status="disallowed"},
 [0x07FE] = {status="disallowed"},
 [0x07FF] = {status="disallowed"},
 -- NA   <reserved-082E>..<reserved-082F>
 [0x082E] = {status="disallowed"},
 [0x082F] = {status="disallowed"},
 [0x083F] = {status="disallowed"}, -- NA   <reserved-083F>
 [0x085E] = {status="disallowed"}, -- MANDAIC PUNCTUATION
 [0x085F] = {status="disallowed"}, -- NA   <reserved-085F>
 -- NA   <reserved-085C>..<reserved-085D>
 [0x085C] = {status="disallowed"},
 [0x085D] = {status="disallowed"},
 [0x08A0] = {status="valid"}, -- ARABIC LETTER BEH WITH SMALL V BELOW
 [0x08A1] = {status="valid"}, -- ARABIC LETTER BEH WITH HAMZA ABOVE
 [0x08B5] = {status="disallowed"}, -- NA   <reserved-08B5>
 [0x08E2] = {status="disallowed"}, -- ARABIC DISPUTED END OF AYAH
 [0x08E3] = {status="valid"}, -- ARABIC TURNED DAMMA BELOW
 [0x08FF] = {status="valid"}, -- ARABIC MARK SIDEWAYS NOON GHUNNA
 [0x0900] = {status="valid"}, -- DEVANAGARI SIGN INVERTED CANDRABINDU
 [0x0904] = {status="valid"}, -- DEVANAGARI LETTER SHORT A
 -- DEVANAGARI SIGN CANDRABINDU..DEVANAGARI SIGN VISARGA
 [0x0901] = {status="valid"},
 [0x0902] = {status="valid"},
 [0x0903] = {status="valid"},
 [0x094E] = {status="valid"}, -- DEVANAGARI VOWEL SIGN PRISHTHAMATRA E
 [0x094F] = {status="valid"}, -- DEVANAGARI VOWEL SIGN AW
 [0x0955] = {status="valid"}, -- DEVANAGARI VOWEL SIGN CANDRA LONG E
 -- DEVANAGARI OM..DEVANAGARI ACUTE ACCENT
 [0x0950] = {status="valid"},
 [0x0951] = {status="valid"},
 [0x0952] = {status="valid"},
 [0x0953] = {status="valid"},
 [0x0954] = {status="valid"},
 [0x0958] = {0x0915, 0x093C}, -- DEVANAGARI LETTER QA
 [0x0959] = {0x0916, 0x093C}, -- DEVANAGARI LETTER KHHA
 [0x095A] = {0x0917, 0x093C}, -- DEVANAGARI LETTER GHHA
 [0x095B] = {0x091C, 0x093C}, -- DEVANAGARI LETTER ZA
 [0x095C] = {0x0921, 0x093C}, -- DEVANAGARI LETTER DDDHA
 [0x095D] = {0x0922, 0x093C}, -- DEVANAGARI LETTER RHA
 [0x095E] = {0x092B, 0x093C}, -- DEVANAGARI LETTER FA
 [0x095F] = {0x092F, 0x093C}, -- DEVANAGARI LETTER YYA
 -- DEVANAGARI VOWEL SIGN UE..DEVANAGARI VOWEL SIGN UUE
 [0x0956] = {status="valid"},
 [0x0957] = {status="valid"},
 -- DEVANAGARI LETTER VOCALIC RR..DEVANAGARI VOWEL SIGN VOCALIC LL
 [0x0960] = {status="valid"},
 [0x0961] = {status="valid"},
 [0x0962] = {status="valid"},
 [0x0963] = {status="valid"},
 -- DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
 [0x0964] = {status="disallowed"},
 [0x0965] = {status="disallowed"},
 [0x0970] = {status="disallowed"}, -- DEVANAGARI ABBREVIATION SIGN
 [0x0978] = {status="valid"}, -- DEVANAGARI LETTER MARWARI DDA
 [0x097D] = {status="valid"}, -- DEVANAGARI LETTER GLOTTAL STOP
 -- DEVANAGARI LETTER ZHA..DEVANAGARI LETTER HEAVY YA
      -- DEVANAGARI LETTER GGA..DEVANAGARI LETTER JJA
 [0x0979] = {status="valid"},
 [0x097A] = {status="valid"},
 [0x097B] = {status="valid"},
 [0x097C] = {status="valid"},
 [0x0980] = {status="valid"}, -- BENGALI ANJI
 -- DEVANAGARI LETTER DDDA..DEVANAGARI LETTER BBA
 [0x097E] = {status="valid"},
 [0x097F] = {status="valid"},
 [0x0984] = {status="disallowed"}, -- NA   <reserved-0984>
 -- BENGALI SIGN CANDRABINDU..BENGALI SIGN VISARGA
 [0x0981] = {status="valid"},
 [0x0982] = {status="valid"},
 [0x0983] = {status="valid"},
 -- NA   <reserved-098D>..<reserved-098E>
 [0x098D] = {status="disallowed"},
 [0x098E] = {status="disallowed"},
 -- BENGALI LETTER E..BENGALI LETTER AI
 [0x098F] = {status="valid"},
 [0x0990] = {status="valid"},
 -- NA   <reserved-0991>..<reserved-0992>
 [0x0991] = {status="disallowed"},
 [0x0992] = {status="disallowed"},
 [0x09A9] = {status="disallowed"}, -- NA   <reserved-09A9>
 [0x09B1] = {status="disallowed"}, -- NA   <reserved-09B1>
 [0x09B2] = {status="valid"}, -- BENGALI LETTER LA
 -- NA   <reserved-09B3>..<reserved-09B5>
 [0x09B3] = {status="disallowed"},
 [0x09B4] = {status="disallowed"},
 [0x09B5] = {status="disallowed"},
 -- BENGALI LETTER SHA..BENGALI LETTER HA
 [0x09B6] = {status="valid"},
 [0x09B7] = {status="valid"},
 [0x09B8] = {status="valid"},
 [0x09B9] = {status="valid"},
 [0x09BC] = {status="valid"}, -- BENGALI SIGN NUKTA
 [0x09BD] = {status="valid"}, -- BENGALI SIGN AVAGRAHA
 -- NA   <reserved-09BA>..<reserved-09BB>
 [0x09BA] = {status="disallowed"},
 [0x09BB] = {status="disallowed"},
 -- NA   <reserved-09C5>..<reserved-09C6>
 [0x09C5] = {status="disallowed"},
 [0x09C6] = {status="disallowed"},
 -- BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
 [0x09C7] = {status="valid"},
 [0x09C8] = {status="valid"},
 -- NA   <reserved-09C9>..<reserved-09CA>
 [0x09C9] = {status="disallowed"},
 [0x09CA] = {status="disallowed"},
 [0x09CE] = {status="valid"}, -- BENGALI LETTER KHANDA TA
 -- BENGALI VOWEL SIGN O..BENGALI SIGN VIRAMA
 [0x09CB] = {status="valid"},
 [0x09CC] = {status="valid"},
 [0x09CD] = {status="valid"},
 [0x09D7] = {status="valid"}, -- BENGALI AU LENGTH MARK
 [0x09DC] = {0x09A1, 0x09BC}, -- BENGALI LETTER RRA
 [0x09DD] = {0x09A2, 0x09BC}, -- BENGALI LETTER RHA
 [0x09DE] = {status="disallowed"}, -- NA   <reserved-09DE>
 [0x09DF] = {0x09AF, 0x09BC}, -- BENGALI LETTER YYA
 -- NA   <reserved-09D8>..<reserved-09DB>
 [0x09D8] = {status="disallowed"},
 [0x09D9] = {status="disallowed"},
 [0x09DA] = {status="disallowed"},
 [0x09DB] = {status="disallowed"},
 -- BENGALI LETTER VOCALIC RR..BENGALI VOWEL SIGN VOCALIC LL
 [0x09E0] = {status="valid"},
 [0x09E1] = {status="valid"},
 [0x09E2] = {status="valid"},
 [0x09E3] = {status="valid"},
 -- NA   <reserved-09E4>..<reserved-09E5>
 [0x09E4] = {status="disallowed"},
 [0x09E5] = {status="disallowed"},
 [0x09FB] = {status="disallowed"}, -- BENGALI GANDA MARK
 [0x09FC] = {status="valid"}, -- BENGALI LETTER VEDIC ANUSVARA
 [0x09FD] = {status="disallowed"}, -- BENGALI ABBREVIATION SIGN
 [0x0A01] = {status="valid"}, -- GURMUKHI SIGN ADAK BINDI
 [0x0A02] = {status="valid"}, -- GURMUKHI SIGN BINDI
 [0x0A03] = {status="valid"}, -- GURMUKHI SIGN VISARGA
 [0x0A04] = {status="disallowed"}, -- NA   <reserved-0A04>
 -- NA   <reserved-09FE>..<reserved-0A00>
 [0x09FE] = {status="disallowed"},
 [0x09FF] = {status="disallowed"},
 [0x0A00] = {status="disallowed"},
 -- NA   <reserved-0A0B>..<reserved-0A0E>
 [0x0A0B] = {status="disallowed"},
 [0x0A0C] = {status="disallowed"},
 [0x0A0D] = {status="disallowed"},
 [0x0A0E] = {status="disallowed"},
 -- GURMUKHI LETTER EE..GURMUKHI LETTER AI
 [0x0A0F] = {status="valid"},
 [0x0A10] = {status="valid"},
 -- NA   <reserved-0A11>..<reserved-0A12>
 [0x0A11] = {status="disallowed"},
 [0x0A12] = {status="disallowed"},
 [0x0A29] = {status="disallowed"}, -- NA   <reserved-0A29>
 [0x0A31] = {status="disallowed"}, -- NA   <reserved-0A31>
 [0x0A32] = {status="valid"}, -- GURMUKHI LETTER LA
 [0x0A33] = {0x0A32, 0x0A3C}, -- GURMUKHI LETTER LLA
 [0x0A34] = {status="disallowed"}, -- NA   <reserved-0A34>
 [0x0A35] = {status="valid"}, -- GURMUKHI LETTER VA
 [0x0A36] = {0x0A38, 0x0A3C}, -- GURMUKHI LETTER SHA
 [0x0A37] = {status="disallowed"}, -- NA   <reserved-0A37>
 -- GURMUKHI LETTER SA..GURMUKHI LETTER HA
 [0x0A38] = {status="valid"},
 [0x0A39] = {status="valid"},
 [0x0A3C] = {status="valid"}, -- GURMUKHI SIGN NUKTA
 [0x0A3D] = {status="disallowed"}, -- NA   <reserved-0A3D>
 -- NA   <reserved-0A3A>..<reserved-0A3B>
 [0x0A3A] = {status="disallowed"},
 [0x0A3B] = {status="disallowed"},
 -- GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN UU
 [0x0A3E] = {status="valid"},
 [0x0A3F] = {status="valid"},
 [0x0A40] = {status="valid"},
 [0x0A41] = {status="valid"},
 [0x0A42] = {status="valid"},
 -- NA   <reserved-0A43>..<reserved-0A46>
 [0x0A43] = {status="disallowed"},
 [0x0A44] = {status="disallowed"},
 [0x0A45] = {status="disallowed"},
 [0x0A46] = {status="disallowed"},
 -- GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
 [0x0A47] = {status="valid"},
 [0x0A48] = {status="valid"},
 -- NA   <reserved-0A49>..<reserved-0A4A>
 [0x0A49] = {status="disallowed"},
 [0x0A4A] = {status="disallowed"},
 -- GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
 [0x0A4B] = {status="valid"},
 [0x0A4C] = {status="valid"},
 [0x0A4D] = {status="valid"},
 [0x0A51] = {status="valid"}, -- GURMUKHI SIGN UDAAT
 -- NA   <reserved-0A4E>..<reserved-0A50>
 [0x0A4E] = {status="disallowed"},
 [0x0A4F] = {status="disallowed"},
 [0x0A50] = {status="disallowed"},
 [0x0A59] = {0x0A16, 0x0A3C}, -- GURMUKHI LETTER KHHA
 [0x0A5A] = {0x0A17, 0x0A3C}, -- GURMUKHI LETTER GHHA
 [0x0A5B] = {0x0A1C, 0x0A3C}, -- GURMUKHI LETTER ZA
 [0x0A5C] = {status="valid"}, -- GURMUKHI LETTER RRA
 [0x0A5D] = {status="disallowed"}, -- NA   <reserved-0A5D>
 [0x0A5E] = {0x0A2B, 0x0A3C}, -- GURMUKHI LETTER FA
 [0x0A75] = {status="valid"}, -- GURMUKHI SIGN YAKASH
 [0x0A84] = {status="disallowed"}, -- NA   <reserved-0A84>
 -- GUJARATI SIGN CANDRABINDU..GUJARATI SIGN VISARGA
 [0x0A81] = {status="valid"},
 [0x0A82] = {status="valid"},
 [0x0A83] = {status="valid"},
 [0x0A8C] = {status="valid"}, -- GUJARATI LETTER VOCALIC L
 [0x0A8D] = {status="valid"}, -- GUJARATI VOWEL CANDRA E
 [0x0A8E] = {status="disallowed"}, -- NA   <reserved-0A8E>
 [0x0A92] = {status="disallowed"}, -- NA   <reserved-0A92>
 -- GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
 [0x0A8F] = {status="valid"},
 [0x0A90] = {status="valid"},
 [0x0A91] = {status="valid"},
 [0x0AA9] = {status="disallowed"}, -- NA   <reserved-0AA9>
 [0x0AB1] = {status="disallowed"}, -- NA   <reserved-0AB1>
 [0x0AB4] = {status="disallowed"}, -- NA   <reserved-0AB4>
 -- GUJARATI LETTER LA..GUJARATI LETTER LLA
 [0x0AB2] = {status="valid"},
 [0x0AB3] = {status="valid"},
 -- GUJARATI LETTER VA..GUJARATI LETTER HA
 [0x0AB5] = {status="valid"},
 [0x0AB6] = {status="valid"},
 [0x0AB7] = {status="valid"},
 [0x0AB8] = {status="valid"},
 [0x0AB9] = {status="valid"},
 -- NA   <reserved-0ABA>..<reserved-0ABB>
 [0x0ABA] = {status="disallowed"},
 [0x0ABB] = {status="disallowed"},
 [0x0AC6] = {status="disallowed"}, -- NA   <reserved-0AC6>
 [0x0ACA] = {status="disallowed"}, -- NA   <reserved-0ACA>
 -- GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN CANDRA O
 [0x0AC7] = {status="valid"},
 [0x0AC8] = {status="valid"},
 [0x0AC9] = {status="valid"},
 -- GUJARATI VOWEL SIGN O..GUJARATI SIGN VIRAMA
 [0x0ACB] = {status="valid"},
 [0x0ACC] = {status="valid"},
 [0x0ACD] = {status="valid"},
 [0x0AD0] = {status="valid"}, -- GUJARATI OM
 -- NA   <reserved-0ACE>..<reserved-0ACF>
 [0x0ACE] = {status="disallowed"},
 [0x0ACF] = {status="disallowed"},
 [0x0AE0] = {status="valid"}, -- GUJARATI LETTER VOCALIC RR
 -- GUJARATI LETTER VOCALIC LL..GUJARATI VOWEL SIGN VOCALIC LL
 [0x0AE1] = {status="valid"},
 [0x0AE2] = {status="valid"},
 [0x0AE3] = {status="valid"},
 -- NA   <reserved-0AE4>..<reserved-0AE5>
 [0x0AE4] = {status="disallowed"},
 [0x0AE5] = {status="disallowed"},
 [0x0AF0] = {status="disallowed"}, -- GUJARATI ABBREVIATION SIGN
 [0x0AF1] = {status="disallowed"}, -- GUJARATI RUPEE SIGN
 [0x0AF9] = {status="valid"}, -- GUJARATI LETTER ZHA
 [0x0B00] = {status="disallowed"}, -- NA   <reserved-0B00>
 [0x0B04] = {status="disallowed"}, -- NA   <reserved-0B04>
 -- ORIYA SIGN CANDRABINDU..ORIYA SIGN VISARGA
 [0x0B01] = {status="valid"},
 [0x0B02] = {status="valid"},
 [0x0B03] = {status="valid"},
 -- NA   <reserved-0B0D>..<reserved-0B0E>
 [0x0B0D] = {status="disallowed"},
 [0x0B0E] = {status="disallowed"},
 -- ORIYA LETTER E..ORIYA LETTER AI
 [0x0B0F] = {status="valid"},
 [0x0B10] = {status="valid"},
 -- NA   <reserved-0B11>..<reserved-0B12>
 [0x0B11] = {status="disallowed"},
 [0x0B12] = {status="disallowed"},
 [0x0B29] = {status="disallowed"}, -- NA   <reserved-0B29>
 [0x0B31] = {status="disallowed"}, -- NA   <reserved-0B31>
 [0x0B34] = {status="disallowed"}, -- NA   <reserved-0B34>
 [0x0B35] = {status="valid"}, -- ORIYA LETTER VA
 -- ORIYA LETTER LA..ORIYA LETTER LLA
 [0x0B32] = {status="valid"},
 [0x0B33] = {status="valid"},
 -- ORIYA LETTER SHA..ORIYA LETTER HA
 [0x0B36] = {status="valid"},
 [0x0B37] = {status="valid"},
 [0x0B38] = {status="valid"},
 [0x0B39] = {status="valid"},
 -- NA   <reserved-0B3A>..<reserved-0B3B>
 [0x0B3A] = {status="disallowed"},
 [0x0B3B] = {status="disallowed"},
 [0x0B44] = {status="valid"}, -- ORIYA VOWEL SIGN VOCALIC RR
 -- NA   <reserved-0B45>..<reserved-0B46>
 [0x0B45] = {status="disallowed"},
 [0x0B46] = {status="disallowed"},
 -- ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
 [0x0B47] = {status="valid"},
 [0x0B48] = {status="valid"},
 -- NA   <reserved-0B49>..<reserved-0B4A>
 [0x0B49] = {status="disallowed"},
 [0x0B4A] = {status="disallowed"},
 -- ORIYA VOWEL SIGN O..ORIYA SIGN VIRAMA
 [0x0B4B] = {status="valid"},
 [0x0B4C] = {status="valid"},
 [0x0B4D] = {status="valid"},
 -- ORIYA AI LENGTH MARK..ORIYA AU LENGTH MARK
 [0x0B56] = {status="valid"},
 [0x0B57] = {status="valid"},
 [0x0B5C] = {0x0B21, 0x0B3C}, -- ORIYA LETTER RRA
 [0x0B5D] = {0x0B22, 0x0B3C}, -- ORIYA LETTER RHA
 [0x0B5E] = {status="disallowed"}, -- NA   <reserved-0B5E>
 -- NA   <reserved-0B58>..<reserved-0B5B>
 [0x0B58] = {status="disallowed"},
 [0x0B59] = {status="disallowed"},
 [0x0B5A] = {status="disallowed"},
 [0x0B5B] = {status="disallowed"},
 -- ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
      -- ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
 [0x0B5F] = {status="valid"},
 [0x0B60] = {status="valid"},
 [0x0B61] = {status="valid"},
 [0x0B62] = {status="valid"},
 [0x0B63] = {status="valid"},
 -- NA   <reserved-0B64>..<reserved-0B65>
 [0x0B64] = {status="disallowed"},
 [0x0B65] = {status="disallowed"},
 [0x0B70] = {status="disallowed"}, -- ORIYA ISSHAR
 [0x0B71] = {status="valid"}, -- ORIYA LETTER WA
 [0x0B84] = {status="disallowed"}, -- NA   <reserved-0B84>
 -- TAMIL SIGN ANUSVARA..TAMIL SIGN VISARGA
 [0x0B82] = {status="valid"},
 [0x0B83] = {status="valid"},
 -- NA   <reserved-0B8B>..<reserved-0B8D>
 [0x0B8B] = {status="disallowed"},
 [0x0B8C] = {status="disallowed"},
 [0x0B8D] = {status="disallowed"},
 [0x0B91] = {status="disallowed"}, -- NA   <reserved-0B91>
 -- TAMIL LETTER E..TAMIL LETTER AI
 [0x0B8E] = {status="valid"},
 [0x0B8F] = {status="valid"},
 [0x0B90] = {status="valid"},
 -- TAMIL LETTER O..TAMIL LETTER KA
 [0x0B92] = {status="valid"},
 [0x0B93] = {status="valid"},
 [0x0B94] = {status="valid"},
 [0x0B95] = {status="valid"},
 -- NA   <reserved-0B96>..<reserved-0B98>
 [0x0B96] = {status="disallowed"},
 [0x0B97] = {status="disallowed"},
 [0x0B98] = {status="disallowed"},
 [0x0B9B] = {status="disallowed"}, -- NA   <reserved-0B9B>
 [0x0B9C] = {status="valid"}, -- TAMIL LETTER JA
 [0x0B9D] = {status="disallowed"}, -- NA   <reserved-0B9D>
 -- TAMIL LETTER NGA..TAMIL LETTER CA
 [0x0B99] = {status="valid"},
 [0x0B9A] = {status="valid"},
 -- TAMIL LETTER NYA..TAMIL LETTER TTA
 [0x0B9E] = {status="valid"},
 [0x0B9F] = {status="valid"},
 -- NA   <reserved-0BA0>..<reserved-0BA2>
 [0x0BA0] = {status="disallowed"},
 [0x0BA1] = {status="disallowed"},
 [0x0BA2] = {status="disallowed"},
 -- TAMIL LETTER NNA..TAMIL LETTER TA
 [0x0BA3] = {status="valid"},
 [0x0BA4] = {status="valid"},
 -- NA   <reserved-0BA5>..<reserved-0BA7>
 [0x0BA5] = {status="disallowed"},
 [0x0BA6] = {status="disallowed"},
 [0x0BA7] = {status="disallowed"},
 -- TAMIL LETTER NA..TAMIL LETTER PA
 [0x0BA8] = {status="valid"},
 [0x0BA9] = {status="valid"},
 [0x0BAA] = {status="valid"},
 -- NA   <reserved-0BAB>..<reserved-0BAD>
 [0x0BAB] = {status="disallowed"},
 [0x0BAC] = {status="disallowed"},
 [0x0BAD] = {status="disallowed"},
 [0x0BB6] = {status="valid"}, -- TAMIL LETTER SHA
 -- TAMIL LETTER SSA..TAMIL LETTER HA
 [0x0BB7] = {status="valid"},
 [0x0BB8] = {status="valid"},
 [0x0BB9] = {status="valid"},
 -- NA   <reserved-0BBA>..<reserved-0BBD>
 [0x0BBA] = {status="disallowed"},
 [0x0BBB] = {status="disallowed"},
 [0x0BBC] = {status="disallowed"},
 [0x0BBD] = {status="disallowed"},
 -- TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN UU
 [0x0BBE] = {status="valid"},
 [0x0BBF] = {status="valid"},
 [0x0BC0] = {status="valid"},
 [0x0BC1] = {status="valid"},
 [0x0BC2] = {status="valid"},
 -- NA   <reserved-0BC3>..<reserved-0BC5>
 [0x0BC3] = {status="disallowed"},
 [0x0BC4] = {status="disallowed"},
 [0x0BC5] = {status="disallowed"},
 [0x0BC9] = {status="disallowed"}, -- NA   <reserved-0BC9>
 -- TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
 [0x0BC6] = {status="valid"},
 [0x0BC7] = {status="valid"},
 [0x0BC8] = {status="valid"},
 -- TAMIL VOWEL SIGN O..TAMIL SIGN VIRAMA
 [0x0BCA] = {status="valid"},
 [0x0BCB] = {status="valid"},
 [0x0BCC] = {status="valid"},
 [0x0BCD] = {status="valid"},
 [0x0BD0] = {status="valid"}, -- TAMIL OM
 -- NA   <reserved-0BCE>..<reserved-0BCF>
 [0x0BCE] = {status="disallowed"},
 [0x0BCF] = {status="disallowed"},
 [0x0BD7] = {status="valid"}, -- TAMIL AU LENGTH MARK
 [0x0BE6] = {status="valid"}, -- TAMIL DIGIT ZERO
 [0x0C00] = {status="valid"}, -- TELUGU SIGN COMBINING CANDRABINDU ABOVE
 -- NA   <reserved-0BFB>..<reserved-0BFF>
 [0x0BFB] = {status="disallowed"},
 [0x0BFC] = {status="disallowed"},
 [0x0BFD] = {status="disallowed"},
 [0x0BFE] = {status="disallowed"},
 [0x0BFF] = {status="disallowed"},
 [0x0C04] = {status="disallowed"}, -- NA   <reserved-0C04>
 -- TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
 [0x0C01] = {status="valid"},
 [0x0C02] = {status="valid"},
 [0x0C03] = {status="valid"},
 [0x0C0D] = {status="disallowed"}, -- NA   <reserved-0C0D>
 [0x0C11] = {status="disallowed"}, -- NA   <reserved-0C11>
 -- TELUGU LETTER E..TELUGU LETTER AI
 [0x0C0E] = {status="valid"},
 [0x0C0F] = {status="valid"},
 [0x0C10] = {status="valid"},
 [0x0C29] = {status="disallowed"}, -- NA   <reserved-0C29>
 [0x0C34] = {status="valid"}, -- TELUGU LETTER LLLA
 -- TELUGU LETTER VA..TELUGU LETTER HA
 [0x0C35] = {status="valid"},
 [0x0C36] = {status="valid"},
 [0x0C37] = {status="valid"},
 [0x0C38] = {status="valid"},
 [0x0C39] = {status="valid"},
 [0x0C3D] = {status="valid"}, -- TELUGU SIGN AVAGRAHA
 -- NA   <reserved-0C3A>..<reserved-0C3C>
 [0x0C3A] = {status="disallowed"},
 [0x0C3B] = {status="disallowed"},
 [0x0C3C] = {status="disallowed"},
 [0x0C45] = {status="disallowed"}, -- NA   <reserved-0C45>
 [0x0C49] = {status="disallowed"}, -- NA   <reserved-0C49>
 -- TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
 [0x0C46] = {status="valid"},
 [0x0C47] = {status="valid"},
 [0x0C48] = {status="valid"},
 -- TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
 [0x0C4A] = {status="valid"},
 [0x0C4B] = {status="valid"},
 [0x0C4C] = {status="valid"},
 [0x0C4D] = {status="valid"},
 [0x0C57] = {status="disallowed"}, -- NA   <reserved-0C57>
 -- TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
 [0x0C55] = {status="valid"},
 [0x0C56] = {status="valid"},
 [0x0C5A] = {status="valid"}, -- TELUGU LETTER RRRA
 -- TELUGU LETTER TSA..TELUGU LETTER DZA
 [0x0C58] = {status="valid"},
 [0x0C59] = {status="valid"},
 -- NA   <reserved-0C5B>..<reserved-0C5F>
 [0x0C5B] = {status="disallowed"},
 [0x0C5C] = {status="disallowed"},
 [0x0C5D] = {status="disallowed"},
 [0x0C5E] = {status="disallowed"},
 [0x0C5F] = {status="disallowed"},
 -- TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
      -- TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
 [0x0C60] = {status="valid"},
 [0x0C61] = {status="valid"},
 [0x0C62] = {status="valid"},
 [0x0C63] = {status="valid"},
 -- NA   <reserved-0C64>..<reserved-0C65>
 [0x0C64] = {status="disallowed"},
 [0x0C65] = {status="disallowed"},
 [0x0C80] = {status="valid"}, -- KANNADA SIGN SPACING CANDRABINDU
 [0x0C81] = {status="valid"}, -- KANNADA SIGN CANDRABINDU
 [0x0C84] = {status="disallowed"}, -- NA   <reserved-0C84>
 -- KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
 [0x0C82] = {status="valid"},
 [0x0C83] = {status="valid"},
 [0x0C8D] = {status="disallowed"}, -- NA   <reserved-0C8D>
 [0x0C91] = {status="disallowed"}, -- NA   <reserved-0C91>
 -- KANNADA LETTER E..KANNADA LETTER AI
 [0x0C8E] = {status="valid"},
 [0x0C8F] = {status="valid"},
 [0x0C90] = {status="valid"},
 [0x0CA9] = {status="disallowed"}, -- NA   <reserved-0CA9>
 [0x0CB4] = {status="disallowed"}, -- NA   <reserved-0CB4>
 -- KANNADA LETTER VA..KANNADA LETTER HA
 [0x0CB5] = {status="valid"},
 [0x0CB6] = {status="valid"},
 [0x0CB7] = {status="valid"},
 [0x0CB8] = {status="valid"},
 [0x0CB9] = {status="valid"},
 -- NA   <reserved-0CBA>..<reserved-0CBB>
 [0x0CBA] = {status="disallowed"},
 [0x0CBB] = {status="disallowed"},
 [0x0CC5] = {status="disallowed"}, -- NA   <reserved-0CC5>
 [0x0CC9] = {status="disallowed"}, -- NA   <reserved-0CC9>
 -- KANNADA VOWEL SIGN E..KANNADA VOWEL SIGN AI
 [0x0CC6] = {status="valid"},
 [0x0CC7] = {status="valid"},
 [0x0CC8] = {status="valid"},
 -- KANNADA VOWEL SIGN O..KANNADA SIGN VIRAMA
 [0x0CCA] = {status="valid"},
 [0x0CCB] = {status="valid"},
 [0x0CCC] = {status="valid"},
 [0x0CCD] = {status="valid"},
 -- KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
 [0x0CD5] = {status="valid"},
 [0x0CD6] = {status="valid"},
 [0x0CDE] = {status="valid"}, -- KANNADA LETTER FA
 [0x0CDF] = {status="disallowed"}, -- NA   <reserved-0CDF>
 -- KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
      -- KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
 [0x0CE0] = {status="valid"},
 [0x0CE1] = {status="valid"},
 [0x0CE2] = {status="valid"},
 [0x0CE3] = {status="valid"},
 -- NA   <reserved-0CE4>..<reserved-0CE5>
 [0x0CE4] = {status="disallowed"},
 [0x0CE5] = {status="disallowed"},
 [0x0CF0] = {status="disallowed"}, -- NA   <reserved-0CF0>
 -- KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
 [0x0CF1] = {status="valid"},
 [0x0CF2] = {status="valid"},
 [0x0D00] = {status="valid"}, -- MALAYALAM SIGN COMBINING ANUSVARA ABOVE
 [0x0D01] = {status="valid"}, -- MALAYALAM SIGN CANDRABINDU
 [0x0D04] = {status="disallowed"}, -- NA   <reserved-0D04>
 -- MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
 [0x0D02] = {status="valid"},
 [0x0D03] = {status="valid"},
 [0x0D0D] = {status="disallowed"}, -- NA   <reserved-0D0D>
 [0x0D11] = {status="disallowed"}, -- NA   <reserved-0D11>
 -- MALAYALAM LETTER E..MALAYALAM LETTER AI
 [0x0D0E] = {status="valid"},
 [0x0D0F] = {status="valid"},
 [0x0D10] = {status="valid"},
 [0x0D29] = {status="valid"}, -- MALAYALAM LETTER NNNA
 [0x0D3A] = {status="valid"}, -- MALAYALAM LETTER TTTA
 [0x0D3D] = {status="valid"}, -- MALAYALAM SIGN AVAGRAHA
 -- MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
 [0x0D3B] = {status="valid"},
 [0x0D3C] = {status="valid"},
 [0x0D44] = {status="valid"}, -- MALAYALAM VOWEL SIGN VOCALIC RR
 [0x0D45] = {status="disallowed"}, -- NA   <reserved-0D45>
 [0x0D49] = {status="disallowed"}, -- NA   <reserved-0D49>
 -- MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
 [0x0D46] = {status="valid"},
 [0x0D47] = {status="valid"},
 [0x0D48] = {status="valid"},
 [0x0D4E] = {status="valid"}, -- MALAYALAM LETTER DOT REPH
 [0x0D4F] = {status="disallowed"}, -- MALAYALAM SIGN PARA
 -- MALAYALAM VOWEL SIGN O..MALAYALAM SIGN VIRAMA
 [0x0D4A] = {status="valid"},
 [0x0D4B] = {status="valid"},
 [0x0D4C] = {status="valid"},
 [0x0D4D] = {status="valid"},
 -- NA   <reserved-0D50>..<reserved-0D53>
 [0x0D50] = {status="disallowed"},
 [0x0D51] = {status="disallowed"},
 [0x0D52] = {status="disallowed"},
 [0x0D53] = {status="disallowed"},
 [0x0D57] = {status="valid"}, -- MALAYALAM AU LENGTH MARK
 -- MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
 [0x0D54] = {status="valid"},
 [0x0D55] = {status="valid"},
 [0x0D56] = {status="valid"},
 [0x0D5F] = {status="valid"}, -- MALAYALAM LETTER ARCHAIC II
 -- MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL
      -- MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
 [0x0D60] = {status="valid"},
 [0x0D61] = {status="valid"},
 [0x0D62] = {status="valid"},
 [0x0D63] = {status="valid"},
 -- NA   <reserved-0D64>..<reserved-0D65>
 [0x0D64] = {status="disallowed"},
 [0x0D65] = {status="disallowed"},
 [0x0D79] = {status="disallowed"}, -- MALAYALAM DATE MARK
 -- NA   <reserved-0D80>..<reserved-0D81>
 [0x0D80] = {status="disallowed"},
 [0x0D81] = {status="disallowed"},
 [0x0D84] = {status="disallowed"}, -- NA   <reserved-0D84>
 -- SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
 [0x0D82] = {status="valid"},
 [0x0D83] = {status="valid"},
 -- NA   <reserved-0D97>..<reserved-0D99>
 [0x0D97] = {status="disallowed"},
 [0x0D98] = {status="disallowed"},
 [0x0D99] = {status="disallowed"},
 [0x0DB2] = {status="disallowed"}, -- NA   <reserved-0DB2>
 [0x0DBC] = {status="disallowed"}, -- NA   <reserved-0DBC>
 [0x0DBD] = {status="valid"}, -- SINHALA LETTER DANTAJA LAYANNA
 -- NA   <reserved-0DBE>..<reserved-0DBF>
 [0x0DBE] = {status="disallowed"},
 [0x0DBF] = {status="disallowed"},
 [0x0DCA] = {status="valid"}, -- SINHALA SIGN AL-LAKUNA
 -- NA   <reserved-0DC7>..<reserved-0DC9>
 [0x0DC7] = {status="disallowed"},
 [0x0DC8] = {status="disallowed"},
 [0x0DC9] = {status="disallowed"},
 -- NA   <reserved-0DCB>..<reserved-0DCE>
 [0x0DCB] = {status="disallowed"},
 [0x0DCC] = {status="disallowed"},
 [0x0DCD] = {status="disallowed"},
 [0x0DCE] = {status="disallowed"},
 [0x0DD5] = {status="disallowed"}, -- NA   <reserved-0DD5>
 [0x0DD6] = {status="valid"}, -- SINHALA VOWEL SIGN DIGA PAA-PILLA
 [0x0DD7] = {status="disallowed"}, -- NA   <reserved-0DD7>
 -- NA   <reserved-0DF0>..<reserved-0DF1>
 [0x0DF0] = {status="disallowed"},
 [0x0DF1] = {status="disallowed"},
 [0x0DF4] = {status="disallowed"}, -- SINHALA PUNCTUATION KUNDDALIYA
 -- SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
 [0x0DF2] = {status="valid"},
 [0x0DF3] = {status="valid"},
 [0x0E33] = {0x0E4D, 0x0E32}, -- THAI CHARACTER SARA AM
 [0x0E3F] = {status="disallowed"}, -- THAI CURRENCY SYMBOL BAHT
 -- NA   <reserved-0E3B>..<reserved-0E3E>
 [0x0E3B] = {status="disallowed"},
 [0x0E3C] = {status="disallowed"},
 [0x0E3D] = {status="disallowed"},
 [0x0E3E] = {status="disallowed"},
 [0x0E4F] = {status="disallowed"}, -- THAI CHARACTER FONGMAN
 -- THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
 [0x0E5A] = {status="disallowed"},
 [0x0E5B] = {status="disallowed"},
 [0x0E83] = {status="disallowed"}, -- NA   <reserved-0E83>
 [0x0E84] = {status="valid"}, -- LAO LETTER KHO TAM
 -- LAO LETTER KO..LAO LETTER KHO SUNG
 [0x0E81] = {status="valid"},
 [0x0E82] = {status="valid"},
 -- NA   <reserved-0E85>..<reserved-0E86>
 [0x0E85] = {status="disallowed"},
 [0x0E86] = {status="disallowed"},
 [0x0E89] = {status="disallowed"}, -- NA   <reserved-0E89>
 [0x0E8A] = {status="valid"}, -- LAO LETTER SO TAM
 -- LAO LETTER NGO..LAO LETTER CO
 [0x0E87] = {status="valid"},
 [0x0E88] = {status="valid"},
 [0x0E8D] = {status="valid"}, -- LAO LETTER NYO
 -- NA   <reserved-0E8B>..<reserved-0E8C>
 [0x0E8B] = {status="disallowed"},
 [0x0E8C] = {status="disallowed"},
 [0x0E98] = {status="disallowed"}, -- NA   <reserved-0E98>
 -- LAO LETTER DO..LAO LETTER THO TAM
 [0x0E94] = {status="valid"},
 [0x0E95] = {status="valid"},
 [0x0E96] = {status="valid"},
 [0x0E97] = {status="valid"},
 [0x0EA0] = {status="disallowed"}, -- NA   <reserved-0EA0>
 [0x0EA4] = {status="disallowed"}, -- NA   <reserved-0EA4>
 [0x0EA5] = {status="valid"}, -- LAO LETTER LO LOOT
 [0x0EA6] = {status="disallowed"}, -- NA   <reserved-0EA6>
 [0x0EA7] = {status="valid"}, -- LAO LETTER WO
 -- LAO LETTER MO..LAO LETTER LO LING
 [0x0EA1] = {status="valid"},
 [0x0EA2] = {status="valid"},
 [0x0EA3] = {status="valid"},
 -- NA   <reserved-0EA8>..<reserved-0EA9>
 [0x0EA8] = {status="disallowed"},
 [0x0EA9] = {status="disallowed"},
 [0x0EAC] = {status="disallowed"}, -- NA   <reserved-0EAC>
 -- LAO LETTER SO SUNG..LAO LETTER HO SUNG
 [0x0EAA] = {status="valid"},
 [0x0EAB] = {status="valid"},
 [0x0EB3] = {0x0ECD, 0x0EB2}, -- LAO VOWEL SIGN AM
 [0x0EBA] = {status="disallowed"}, -- NA   <reserved-0EBA>
 -- LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN NYO
 [0x0EBB] = {status="valid"},
 [0x0EBC] = {status="valid"},
 [0x0EBD] = {status="valid"},
 -- NA   <reserved-0EBE>..<reserved-0EBF>
 [0x0EBE] = {status="disallowed"},
 [0x0EBF] = {status="disallowed"},
 [0x0EC5] = {status="disallowed"}, -- NA   <reserved-0EC5>
 [0x0EC6] = {status="valid"}, -- LAO KO LA
 [0x0EC7] = {status="disallowed"}, -- NA   <reserved-0EC7>
 -- LAO VOWEL SIGN E..LAO VOWEL SIGN AI
 [0x0EC0] = {status="valid"},
 [0x0EC1] = {status="valid"},
 [0x0EC2] = {status="valid"},
 [0x0EC3] = {status="valid"},
 [0x0EC4] = {status="valid"},
 -- NA   <reserved-0ECE>..<reserved-0ECF>
 [0x0ECE] = {status="disallowed"},
 [0x0ECF] = {status="disallowed"},
 [0x0EDC] = {0x0EAB, 0x0E99}, -- LAO HO NO
 [0x0EDD] = {0x0EAB, 0x0EA1}, -- LAO HO MO
 -- NA   <reserved-0EDA>..<reserved-0EDB>
 [0x0EDA] = {status="disallowed"},
 [0x0EDB] = {status="disallowed"},
 -- LAO LETTER KHMU GO..LAO LETTER KHMU NYO
 [0x0EDE] = {status="valid"},
 [0x0EDF] = {status="valid"},
 [0x0F00] = {status="valid"}, -- TIBETAN SYLLABLE OM
 [0x0F0B] = {status="valid"}, -- TIBETAN MARK INTERSYLLABIC TSHEG
 [0x0F0C] = 0x0F0B, -- TIBETAN MARK DELIMITER TSHEG BSTAR
 -- TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
 [0x0F18] = {status="valid"},
 [0x0F19] = {status="valid"},
 [0x0F35] = {status="valid"}, -- TIBETAN MARK NGAS BZUNG NYI ZLA
 [0x0F36] = {status="disallowed"}, -- TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
 [0x0F37] = {status="valid"}, -- TIBETAN MARK NGAS BZUNG SGOR RTAGS
 [0x0F38] = {status="disallowed"}, -- TIBETAN MARK CHE MGO
 [0x0F39] = {status="valid"}, -- TIBETAN MARK TSA -PHRU
 -- TIBETAN MARK GUG RTAGS GYON..TIBETAN MARK ANG KHANG GYAS
 [0x0F3A] = {status="disallowed"},
 [0x0F3B] = {status="disallowed"},
 [0x0F3C] = {status="disallowed"},
 [0x0F3D] = {status="disallowed"},
 [0x0F43] = {0x0F42, 0x0FB7}, -- TIBETAN LETTER GHA
 -- TIBETAN SIGN YAR TSHES..TIBETAN LETTER GA
 [0x0F3E] = {status="valid"},
 [0x0F3F] = {status="valid"},
 [0x0F40] = {status="valid"},
 [0x0F41] = {status="valid"},
 [0x0F42] = {status="valid"},
 [0x0F48] = {status="disallowed"}, -- NA   <reserved-0F48>
 -- TIBETAN LETTER NGA..TIBETAN LETTER JA
 [0x0F44] = {status="valid"},
 [0x0F45] = {status="valid"},
 [0x0F46] = {status="valid"},
 [0x0F47] = {status="valid"},
 [0x0F4D] = {0x0F4C, 0x0FB7}, -- TIBETAN LETTER DDHA
 -- TIBETAN LETTER NYA..TIBETAN LETTER DDA
 [0x0F49] = {status="valid"},
 [0x0F4A] = {status="valid"},
 [0x0F4B] = {status="valid"},
 [0x0F4C] = {status="valid"},
 [0x0F52] = {0x0F51, 0x0FB7}, -- TIBETAN LETTER DHA
 -- TIBETAN LETTER NNA..TIBETAN LETTER DA
 [0x0F4E] = {status="valid"},
 [0x0F4F] = {status="valid"},
 [0x0F50] = {status="valid"},
 [0x0F51] = {status="valid"},
 [0x0F57] = {0x0F56, 0x0FB7}, -- TIBETAN LETTER BHA
 -- TIBETAN LETTER NA..TIBETAN LETTER BA
 [0x0F53] = {status="valid"},
 [0x0F54] = {status="valid"},
 [0x0F55] = {status="valid"},
 [0x0F56] = {status="valid"},
 [0x0F5C] = {0x0F5B, 0x0FB7}, -- TIBETAN LETTER DZHA
 -- TIBETAN LETTER MA..TIBETAN LETTER DZA
 [0x0F58] = {status="valid"},
 [0x0F59] = {status="valid"},
 [0x0F5A] = {status="valid"},
 [0x0F5B] = {status="valid"},
 [0x0F69] = {0x0F40, 0x0FB5}, -- TIBETAN LETTER KSSA
 [0x0F6A] = {status="valid"}, -- TIBETAN LETTER FIXED-FORM RA
 -- TIBETAN LETTER KKA..TIBETAN LETTER RRA
 [0x0F6B] = {status="valid"},
 [0x0F6C] = {status="valid"},
 -- NA   <reserved-0F6D>..<reserved-0F70>
 [0x0F6D] = {status="disallowed"},
 [0x0F6E] = {status="disallowed"},
 [0x0F6F] = {status="disallowed"},
 [0x0F70] = {status="disallowed"},
 [0x0F73] = {0x0F71, 0x0F72}, -- TIBETAN VOWEL SIGN II
 [0x0F74] = {status="valid"}, -- TIBETAN VOWEL SIGN U
 [0x0F75] = {0x0F71, 0x0F74}, -- TIBETAN VOWEL SIGN UU
 [0x0F76] = {0x0FB2, 0x0F80}, -- TIBETAN VOWEL SIGN VOCALIC R
 [0x0F77] = {0x0FB2, 0x0F71, 0x0F80}, -- TIBETAN VOWEL SIGN VOCALIC RR
 [0x0F78] = {0x0FB3, 0x0F80}, -- TIBETAN VOWEL SIGN VOCALIC L
 [0x0F79] = {0x0FB3, 0x0F71, 0x0F80}, -- TIBETAN VOWEL SIGN VOCALIC LL
 -- TIBETAN VOWEL SIGN AA..TIBETAN VOWEL SIGN I
 [0x0F71] = {status="valid"},
 [0x0F72] = {status="valid"},
 [0x0F81] = {0x0F71, 0x0F80}, -- TIBETAN VOWEL SIGN REVERSED II
 [0x0F85] = {status="disallowed"}, -- TIBETAN MARK PALUTA
 -- TIBETAN SIGN NYI ZLA NAA DA..TIBETAN MARK HALANTA
 [0x0F82] = {status="valid"},
 [0x0F83] = {status="valid"},
 [0x0F84] = {status="valid"},
 [0x0F93] = {0x0F92, 0x0FB7}, -- TIBETAN SUBJOINED LETTER GHA
 [0x0F96] = {status="valid"}, -- TIBETAN SUBJOINED LETTER CHA
 [0x0F97] = {status="valid"}, -- TIBETAN SUBJOINED LETTER JA
 [0x0F98] = {status="disallowed"}, -- NA   <reserved-0F98>
 -- TIBETAN SUBJOINED LETTER NGA..TIBETAN SUBJOINED LETTER CA
 [0x0F94] = {status="valid"},
 [0x0F95] = {status="valid"},
 [0x0F9D] = {0x0F9C, 0x0FB7}, -- TIBETAN SUBJOINED LETTER DDHA
 -- TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER DDA
 [0x0F99] = {status="valid"},
 [0x0F9A] = {status="valid"},
 [0x0F9B] = {status="valid"},
 [0x0F9C] = {status="valid"},
 [0x0FA2] = {0x0FA1, 0x0FB7}, -- TIBETAN SUBJOINED LETTER DHA
 -- TIBETAN SUBJOINED LETTER NNA..TIBETAN SUBJOINED LETTER DA
 [0x0F9E] = {status="valid"},
 [0x0F9F] = {status="valid"},
 [0x0FA0] = {status="valid"},
 [0x0FA1] = {status="valid"},
 [0x0FA7] = {0x0FA6, 0x0FB7}, -- TIBETAN SUBJOINED LETTER BHA
 -- TIBETAN SUBJOINED LETTER NA..TIBETAN SUBJOINED LETTER BA
 [0x0FA3] = {status="valid"},
 [0x0FA4] = {status="valid"},
 [0x0FA5] = {status="valid"},
 [0x0FA6] = {status="valid"},
 [0x0FAC] = {0x0FAB, 0x0FB7}, -- TIBETAN SUBJOINED LETTER DZHA
 [0x0FAD] = {status="valid"}, -- TIBETAN SUBJOINED LETTER WA
 -- TIBETAN SUBJOINED LETTER MA..TIBETAN SUBJOINED LETTER DZA
 [0x0FA8] = {status="valid"},
 [0x0FA9] = {status="valid"},
 [0x0FAA] = {status="valid"},
 [0x0FAB] = {status="valid"},
 [0x0FB8] = {status="valid"}, -- TIBETAN SUBJOINED LETTER A
 [0x0FB9] = {0x0F90, 0x0FB5}, -- TIBETAN SUBJOINED LETTER KSSA
 [0x0FBD] = {status="disallowed"}, -- NA   <reserved-0FBD>
 -- TIBETAN SUBJOINED LETTER FIXED-FORM WA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
 [0x0FBA] = {status="valid"},
 [0x0FBB] = {status="valid"},
 [0x0FBC] = {status="valid"},
 [0x0FC6] = {status="valid"}, -- TIBETAN SYMBOL PADMA GDAN
 [0x0FCD] = {status="disallowed"}, -- NA   <reserved-0FCD>
 [0x0FCE] = {status="disallowed"}, -- TIBETAN SIGN RDEL NAG RDEL DKAR
 [0x0FCF] = {status="disallowed"}, -- TIBETAN SIGN RDEL NAG GSUM
 [0x1022] = {status="valid"}, -- MYANMAR LETTER SHAN A
 [0x1028] = {status="valid"}, -- MYANMAR LETTER MON E
 -- MYANMAR LETTER I..MYANMAR LETTER E
 [0x1023] = {status="valid"},
 [0x1024] = {status="valid"},
 [0x1025] = {status="valid"},
 [0x1026] = {status="valid"},
 [0x1027] = {status="valid"},
 [0x102B] = {status="valid"}, -- MYANMAR VOWEL SIGN TALL AA
 -- MYANMAR LETTER O..MYANMAR LETTER AU
 [0x1029] = {status="valid"},
 [0x102A] = {status="valid"},
 -- MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION
 [0x109E] = {status="disallowed"},
 [0x109F] = {status="disallowed"},
 [0x10C6] = {status="disallowed"}, -- NA   <reserved-10C6>
 [0x10C7] = 0x2D27, -- GEORGIAN CAPITAL LETTER YN
 [0x10CD] = 0x2D2D, -- GEORGIAN CAPITAL LETTER AEN
 -- NA   <reserved-10C8>..<reserved-10CC>
 [0x10C8] = {status="disallowed"},
 [0x10C9] = {status="disallowed"},
 [0x10CA] = {status="disallowed"},
 [0x10CB] = {status="disallowed"},
 [0x10CC] = {status="disallowed"},
 -- NA   <reserved-10CE>..<reserved-10CF>
 [0x10CE] = {status="disallowed"},
 [0x10CF] = {status="disallowed"},
 [0x10FB] = {status="disallowed"}, -- GEORGIAN PARAGRAPH SEPARATOR
 [0x10FC] = 0x10DC, -- MODIFIER LETTER GEORGIAN NAR
 -- GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
 [0x10FD] = {status="valid"},
 [0x10FE] = {status="valid"},
 [0x10FF] = {status="valid"},
 -- HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
 [0x115F] = {status="disallowed"},
 [0x1160] = {status="disallowed"},
 [0x1207] = {status="valid"}, -- ETHIOPIC SYLLABLE HOA
 [0x1247] = {status="valid"}, -- ETHIOPIC SYLLABLE QOA
 [0x1248] = {status="valid"}, -- ETHIOPIC SYLLABLE QWA
 [0x1249] = {status="disallowed"}, -- NA   <reserved-1249>
 -- ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
 [0x124A] = {status="valid"},
 [0x124B] = {status="valid"},
 [0x124C] = {status="valid"},
 [0x124D] = {status="valid"},
 -- NA   <reserved-124E>..<reserved-124F>
 [0x124E] = {status="disallowed"},
 [0x124F] = {status="disallowed"},
 [0x1257] = {status="disallowed"}, -- NA   <reserved-1257>
 [0x1258] = {status="valid"}, -- ETHIOPIC SYLLABLE QHWA
 [0x1259] = {status="disallowed"}, -- NA   <reserved-1259>
 -- ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
 [0x125A] = {status="valid"},
 [0x125B] = {status="valid"},
 [0x125C] = {status="valid"},
 [0x125D] = {status="valid"},
 -- NA   <reserved-125E>..<reserved-125F>
 [0x125E] = {status="disallowed"},
 [0x125F] = {status="disallowed"},
 [0x1287] = {status="valid"}, -- ETHIOPIC SYLLABLE XOA
 [0x1288] = {status="valid"}, -- ETHIOPIC SYLLABLE XWA
 [0x1289] = {status="disallowed"}, -- NA   <reserved-1289>
 -- ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
 [0x128A] = {status="valid"},
 [0x128B] = {status="valid"},
 [0x128C] = {status="valid"},
 [0x128D] = {status="valid"},
 -- NA   <reserved-128E>..<reserved-128F>
 [0x128E] = {status="disallowed"},
 [0x128F] = {status="disallowed"},
 [0x12AF] = {status="valid"}, -- ETHIOPIC SYLLABLE KOA
 [0x12B0] = {status="valid"}, -- ETHIOPIC SYLLABLE KWA
 [0x12B1] = {status="disallowed"}, -- NA   <reserved-12B1>
 -- ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
 [0x12B2] = {status="valid"},
 [0x12B3] = {status="valid"},
 [0x12B4] = {status="valid"},
 [0x12B5] = {status="valid"},
 -- NA   <reserved-12B6>..<reserved-12B7>
 [0x12B6] = {status="disallowed"},
 [0x12B7] = {status="disallowed"},
 [0x12BF] = {status="disallowed"}, -- NA   <reserved-12BF>
 [0x12C0] = {status="valid"}, -- ETHIOPIC SYLLABLE KXWA
 [0x12C1] = {status="disallowed"}, -- NA   <reserved-12C1>
 -- ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
 [0x12C2] = {status="valid"},
 [0x12C3] = {status="valid"},
 [0x12C4] = {status="valid"},
 [0x12C5] = {status="valid"},
 -- NA   <reserved-12C6>..<reserved-12C7>
 [0x12C6] = {status="disallowed"},
 [0x12C7] = {status="disallowed"},
 [0x12CF] = {status="valid"}, -- ETHIOPIC SYLLABLE WOA
 [0x12D7] = {status="disallowed"}, -- NA   <reserved-12D7>
 [0x12EF] = {status="valid"}, -- ETHIOPIC SYLLABLE YOA
 [0x130F] = {status="valid"}, -- ETHIOPIC SYLLABLE GOA
 [0x1310] = {status="valid"}, -- ETHIOPIC SYLLABLE GWA
 [0x1311] = {status="disallowed"}, -- NA   <reserved-1311>
 -- ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
 [0x1312] = {status="valid"},
 [0x1313] = {status="valid"},
 [0x1314] = {status="valid"},
 [0x1315] = {status="valid"},
 -- NA   <reserved-1316>..<reserved-1317>
 [0x1316] = {status="disallowed"},
 [0x1317] = {status="disallowed"},
 [0x131F] = {status="valid"}, -- ETHIOPIC SYLLABLE GGWAA
 [0x1347] = {status="valid"}, -- ETHIOPIC SYLLABLE TZOA
 -- NA   <reserved-135B>..<reserved-135C>
 [0x135B] = {status="disallowed"},
 [0x135C] = {status="disallowed"},
 [0x135F] = {status="valid"}, -- ETHIOPIC COMBINING GEMINATION MARK
 [0x1360] = {status="disallowed"}, -- ETHIOPIC SECTION MARK
 -- ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING VOWEL LENGTH MARK
 [0x135D] = {status="valid"},
 [0x135E] = {status="valid"},
 -- NA   <reserved-137D>..<reserved-137F>
 [0x137D] = {status="disallowed"},
 [0x137E] = {status="disallowed"},
 [0x137F] = {status="disallowed"},
 [0x13F5] = {status="valid"}, -- CHEROKEE LETTER MV
 [0x13F8] = 0x13F0, -- CHEROKEE SMALL LETTER YE
 [0x13F9] = 0x13F1, -- CHEROKEE SMALL LETTER YI
 [0x13FA] = 0x13F2, -- CHEROKEE SMALL LETTER YO
 [0x13FB] = 0x13F3, -- CHEROKEE SMALL LETTER YU
 [0x13FC] = 0x13F4, -- CHEROKEE SMALL LETTER YV
 [0x13FD] = 0x13F5, -- CHEROKEE SMALL LETTER MV
 -- NA   <reserved-13F6>..<reserved-13F7>
 [0x13F6] = {status="disallowed"},
 [0x13F7] = {status="disallowed"},
 [0x1400] = {status="disallowed"}, -- CANADIAN SYLLABICS HYPHEN
 -- NA   <reserved-13FE>..<reserved-13FF>
 [0x13FE] = {status="disallowed"},
 [0x13FF] = {status="disallowed"},
 -- CANADIAN SYLLABICS CHI SIGN..CANADIAN SYLLABICS FULL STOP
 [0x166D] = {status="disallowed"},
 [0x166E] = {status="disallowed"},
 [0x1680] = {status="disallowed"}, -- OGHAM SPACE MARK
 -- OGHAM FEATHER MARK..OGHAM REVERSED FEATHER MARK
 [0x169B] = {status="disallowed"},
 [0x169C] = {status="disallowed"},
 -- NA   <reserved-169D>..<reserved-169F>
 [0x169D] = {status="disallowed"},
 [0x169E] = {status="disallowed"},
 [0x169F] = {status="disallowed"},
 [0x170D] = {status="disallowed"}, -- NA   <reserved-170D>
 -- PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
 [0x1735] = {status="disallowed"},
 [0x1736] = {status="disallowed"},
 [0x176D] = {status="disallowed"}, -- NA   <reserved-176D>
 [0x1771] = {status="disallowed"}, -- NA   <reserved-1771>
 -- TAGBANWA LETTER LA..TAGBANWA LETTER SA
 [0x176E] = {status="valid"},
 [0x176F] = {status="valid"},
 [0x1770] = {status="valid"},
 -- TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
 [0x1772] = {status="valid"},
 [0x1773] = {status="valid"},
 -- KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
 [0x17B4] = {status="disallowed"},
 [0x17B5] = {status="disallowed"},
 [0x17D7] = {status="valid"}, -- KHMER SIGN LEK TOO
 -- KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
 [0x17D4] = {status="disallowed"},
 [0x17D5] = {status="disallowed"},
 [0x17D6] = {status="disallowed"},
 [0x17DC] = {status="valid"}, -- KHMER SIGN AVAKRAHASANYA
 [0x17DD] = {status="valid"}, -- KHMER SIGN ATTHACAN
 -- KHMER SIGN BEYYAL..KHMER CURRENCY SYMBOL RIEL
 [0x17D8] = {status="disallowed"},
 [0x17D9] = {status="disallowed"},
 [0x17DA] = {status="disallowed"},
 [0x17DB] = {status="disallowed"},
 -- NA   <reserved-17DE>..<reserved-17DF>
 [0x17DE] = {status="disallowed"},
 [0x17DF] = {status="disallowed"},
 [0x1806] = {status="disallowed"}, -- MONGOLIAN TODO SOFT HYPHEN
 -- MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
 [0x1807] = {status="disallowed"},
 [0x1808] = {status="disallowed"},
 [0x1809] = {status="disallowed"},
 [0x180A] = {status="disallowed"},
 [0x180E] = {status="disallowed"}, -- MONGOLIAN VOWEL SEPARATOR
 [0x180F] = {status="disallowed"}, -- NA   <reserved-180F>
 -- MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
 [0x180B] = {status='ignored'},
 [0x180C] = {status='ignored'},
 [0x180D] = {status='ignored'},
 [0x18AA] = {status="valid"}, -- MONGOLIAN LETTER MANCHU ALI GALI LHA
 -- NA   <reserved-18AB>..<reserved-18AF>
 [0x18AB] = {status="disallowed"},
 [0x18AC] = {status="disallowed"},
 [0x18AD] = {status="disallowed"},
 [0x18AE] = {status="disallowed"},
 [0x18AF] = {status="disallowed"},
 [0x191F] = {status="disallowed"}, -- NA   <reserved-191F>
 -- NA   <reserved-192C>..<reserved-192F>
 [0x192C] = {status="disallowed"},
 [0x192D] = {status="disallowed"},
 [0x192E] = {status="disallowed"},
 [0x192F] = {status="disallowed"},
 [0x1940] = {status="disallowed"}, -- LIMBU SIGN LOO
 -- NA   <reserved-193C>..<reserved-193F>
 [0x193C] = {status="disallowed"},
 [0x193D] = {status="disallowed"},
 [0x193E] = {status="disallowed"},
 [0x193F] = {status="disallowed"},
 -- NA   <reserved-1941>..<reserved-1943>
 [0x1941] = {status="disallowed"},
 [0x1942] = {status="disallowed"},
 [0x1943] = {status="disallowed"},
 -- LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
 [0x1944] = {status="disallowed"},
 [0x1945] = {status="disallowed"},
 -- NA   <reserved-196E>..<reserved-196F>
 [0x196E] = {status="disallowed"},
 [0x196F] = {status="disallowed"},
 -- TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
 [0x1970] = {status="valid"},
 [0x1971] = {status="valid"},
 [0x1972] = {status="valid"},
 [0x1973] = {status="valid"},
 [0x1974] = {status="valid"},
 -- NA   <reserved-19AC>..<reserved-19AF>
 [0x19AC] = {status="disallowed"},
 [0x19AD] = {status="disallowed"},
 [0x19AE] = {status="disallowed"},
 [0x19AF] = {status="disallowed"},
 [0x19DA] = {status="disallowed"}, -- NEW TAI LUE THAM DIGIT ONE
 -- NA   <reserved-19DB>..<reserved-19DD>
 [0x19DB] = {status="disallowed"},
 [0x19DC] = {status="disallowed"},
 [0x19DD] = {status="disallowed"},
 -- NA   <reserved-1A1C>..<reserved-1A1D>
 [0x1A1C] = {status="disallowed"},
 [0x1A1D] = {status="disallowed"},
 -- BUGINESE PALLAWA..BUGINESE END OF SECTION
 [0x1A1E] = {status="disallowed"},
 [0x1A1F] = {status="disallowed"},
 [0x1A5F] = {status="disallowed"}, -- NA   <reserved-1A5F>
 -- NA   <reserved-1A7D>..<reserved-1A7E>
 [0x1A7D] = {status="disallowed"},
 [0x1A7E] = {status="disallowed"},
 [0x1AA7] = {status="valid"}, -- TAI THAM SIGN MAI YAMOK
 -- NA   <reserved-1AAE>..<reserved-1AAF>
 [0x1AAE] = {status="disallowed"},
 [0x1AAF] = {status="disallowed"},
 [0x1ABE] = {status="disallowed"}, -- COMBINING PARENTHESES OVERLAY
 -- NA   <reserved-1B4C>..<reserved-1B4F>
 [0x1B4C] = {status="disallowed"},
 [0x1B4D] = {status="disallowed"},
 [0x1B4E] = {status="disallowed"},
 [0x1B4F] = {status="disallowed"},
 -- NA   <reserved-1B7D>..<reserved-1B7F>
 [0x1B7D] = {status="disallowed"},
 [0x1B7E] = {status="disallowed"},
 [0x1B7F] = {status="disallowed"},
 -- BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT
 [0x1BFC] = {status="disallowed"},
 [0x1BFD] = {status="disallowed"},
 [0x1BFE] = {status="disallowed"},
 [0x1BFF] = {status="disallowed"},
 -- NA   <reserved-1C38>..<reserved-1C3A>
 [0x1C38] = {status="disallowed"},
 [0x1C39] = {status="disallowed"},
 [0x1C3A] = {status="disallowed"},
 -- LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
 [0x1C3B] = {status="disallowed"},
 [0x1C3C] = {status="disallowed"},
 [0x1C3D] = {status="disallowed"},
 [0x1C3E] = {status="disallowed"},
 [0x1C3F] = {status="disallowed"},
 -- NA   <reserved-1C4A>..<reserved-1C4C>
 [0x1C4A] = {status="disallowed"},
 [0x1C4B] = {status="disallowed"},
 [0x1C4C] = {status="disallowed"},
 [0x1C80] = 0x0432, -- CYRILLIC SMALL LETTER ROUNDED VE
 [0x1C81] = 0x0434, -- CYRILLIC SMALL LETTER LONG-LEGGED DE
 [0x1C82] = 0x043E, -- CYRILLIC SMALL LETTER NARROW O
 [0x1C83] = 0x0441, -- CYRILLIC SMALL LETTER WIDE ES
 -- OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
 [0x1C7E] = {status="disallowed"},
 [0x1C7F] = {status="disallowed"},
 [0x1C86] = 0x044A, -- CYRILLIC SMALL LETTER TALL HARD SIGN
 [0x1C87] = 0x0463, -- CYRILLIC SMALL LETTER TALL YAT
 [0x1C88] = 0xA64B, -- CYRILLIC SMALL LETTER UNBLENDED UK
 -- CYRILLIC SMALL LETTER TALL TE..CYRILLIC SMALL LETTER THREE-LEGGED TE
 [0x1C84] = 0x0442,
 [0x1C85] = 0x0442,
 [0x1CD3] = {status="disallowed"}, -- VEDIC SIGN NIHSHVASA
 -- VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
 [0x1CD0] = {status="valid"},
 [0x1CD1] = {status="valid"},
 [0x1CD2] = {status="valid"},
 [0x1CF7] = {status="valid"}, -- VEDIC SIGN ATIKRAMA
 -- VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
 [0x1CF8] = {status="valid"},
 [0x1CF9] = {status="valid"},
 [0x1D2C] = 0x0061, -- MODIFIER LETTER CAPITAL A
 [0x1D2D] = 0x00E6, -- MODIFIER LETTER CAPITAL AE
 [0x1D2E] = 0x0062, -- MODIFIER LETTER CAPITAL B
 [0x1D2F] = {status="valid"}, -- MODIFIER LETTER CAPITAL BARRED B
 [0x1D30] = 0x0064, -- MODIFIER LETTER CAPITAL D
 [0x1D31] = 0x0065, -- MODIFIER LETTER CAPITAL E
 [0x1D32] = 0x01DD, -- MODIFIER LETTER CAPITAL REVERSED E
 [0x1D33] = 0x0067, -- MODIFIER LETTER CAPITAL G
 [0x1D34] = 0x0068, -- MODIFIER LETTER CAPITAL H
 [0x1D35] = 0x0069, -- MODIFIER LETTER CAPITAL I
 [0x1D36] = 0x006A, -- MODIFIER LETTER CAPITAL J
 [0x1D37] = 0x006B, -- MODIFIER LETTER CAPITAL K
 [0x1D38] = 0x006C, -- MODIFIER LETTER CAPITAL L
 [0x1D39] = 0x006D, -- MODIFIER LETTER CAPITAL M
 [0x1D3A] = 0x006E, -- MODIFIER LETTER CAPITAL N
 [0x1D3B] = {status="valid"}, -- MODIFIER LETTER CAPITAL REVERSED N
 [0x1D3C] = 0x006F, -- MODIFIER LETTER CAPITAL O
 [0x1D3D] = 0x0223, -- MODIFIER LETTER CAPITAL OU
 [0x1D3E] = 0x0070, -- MODIFIER LETTER CAPITAL P
 [0x1D3F] = 0x0072, -- MODIFIER LETTER CAPITAL R
 [0x1D40] = 0x0074, -- MODIFIER LETTER CAPITAL T
 [0x1D41] = 0x0075, -- MODIFIER LETTER CAPITAL U
 [0x1D42] = 0x0077, -- MODIFIER LETTER CAPITAL W
 [0x1D43] = 0x0061, -- MODIFIER LETTER SMALL A
 [0x1D44] = 0x0250, -- MODIFIER LETTER SMALL TURNED A
 [0x1D45] = 0x0251, -- MODIFIER LETTER SMALL ALPHA
 [0x1D46] = 0x1D02, -- MODIFIER LETTER SMALL TURNED AE
 [0x1D47] = 0x0062, -- MODIFIER LETTER SMALL B
 [0x1D48] = 0x0064, -- MODIFIER LETTER SMALL D
 [0x1D49] = 0x0065, -- MODIFIER LETTER SMALL E
 [0x1D4A] = 0x0259, -- MODIFIER LETTER SMALL SCHWA
 [0x1D4B] = 0x025B, -- MODIFIER LETTER SMALL OPEN E
 [0x1D4C] = 0x025C, -- MODIFIER LETTER SMALL TURNED OPEN E
 [0x1D4D] = 0x0067, -- MODIFIER LETTER SMALL G
 [0x1D4E] = {status="valid"}, -- MODIFIER LETTER SMALL TURNED I
 [0x1D4F] = 0x006B, -- MODIFIER LETTER SMALL K
 [0x1D50] = 0x006D, -- MODIFIER LETTER SMALL M
 [0x1D51] = 0x014B, -- MODIFIER LETTER SMALL ENG
 [0x1D52] = 0x006F, -- MODIFIER LETTER SMALL O
 [0x1D53] = 0x0254, -- MODIFIER LETTER SMALL OPEN O
 [0x1D54] = 0x1D16, -- MODIFIER LETTER SMALL TOP HALF O
 [0x1D55] = 0x1D17, -- MODIFIER LETTER SMALL BOTTOM HALF O
 [0x1D56] = 0x0070, -- MODIFIER LETTER SMALL P
 [0x1D57] = 0x0074, -- MODIFIER LETTER SMALL T
 [0x1D58] = 0x0075, -- MODIFIER LETTER SMALL U
 [0x1D59] = 0x1D1D, -- MODIFIER LETTER SMALL SIDEWAYS U
 [0x1D5A] = 0x026F, -- MODIFIER LETTER SMALL TURNED M
 [0x1D5B] = 0x0076, -- MODIFIER LETTER SMALL V
 [0x1D5C] = 0x1D25, -- MODIFIER LETTER SMALL AIN
 [0x1D5D] = 0x03B2, -- MODIFIER LETTER SMALL BETA
 [0x1D5E] = 0x03B3, -- MODIFIER LETTER SMALL GREEK GAMMA
 [0x1D5F] = 0x03B4, -- MODIFIER LETTER SMALL DELTA
 [0x1D60] = 0x03C6, -- MODIFIER LETTER SMALL GREEK PHI
 [0x1D61] = 0x03C7, -- MODIFIER LETTER SMALL CHI
 [0x1D62] = 0x0069, -- LATIN SUBSCRIPT SMALL LETTER I
 [0x1D63] = 0x0072, -- LATIN SUBSCRIPT SMALL LETTER R
 [0x1D64] = 0x0075, -- LATIN SUBSCRIPT SMALL LETTER U
 [0x1D65] = 0x0076, -- LATIN SUBSCRIPT SMALL LETTER V
 [0x1D66] = 0x03B2, -- GREEK SUBSCRIPT SMALL LETTER BETA
 [0x1D67] = 0x03B3, -- GREEK SUBSCRIPT SMALL LETTER GAMMA
 [0x1D68] = 0x03C1, -- GREEK SUBSCRIPT SMALL LETTER RHO
 [0x1D69] = 0x03C6, -- GREEK SUBSCRIPT SMALL LETTER PHI
 [0x1D6A] = 0x03C7, -- GREEK SUBSCRIPT SMALL LETTER CHI
 [0x1D6B] = {status="valid"}, -- LATIN SMALL LETTER UE
 [0x1D78] = 0x043D, -- MODIFIER LETTER CYRILLIC EN
 [0x1D9B] = 0x0252, -- MODIFIER LETTER SMALL TURNED ALPHA
 [0x1D9C] = 0x0063, -- MODIFIER LETTER SMALL C
 [0x1D9D] = 0x0255, -- MODIFIER LETTER SMALL C WITH CURL
 [0x1D9E] = 0x00F0, -- MODIFIER LETTER SMALL ETH
 [0x1D9F] = 0x025C, -- MODIFIER LETTER SMALL REVERSED OPEN E
 [0x1DA0] = 0x0066, -- MODIFIER LETTER SMALL F
 [0x1DA1] = 0x025F, -- MODIFIER LETTER SMALL DOTLESS J WITH STROKE
 [0x1DA2] = 0x0261, -- MODIFIER LETTER SMALL SCRIPT G
 [0x1DA3] = 0x0265, -- MODIFIER LETTER SMALL TURNED H
 [0x1DA4] = 0x0268, -- MODIFIER LETTER SMALL I WITH STROKE
 [0x1DA5] = 0x0269, -- MODIFIER LETTER SMALL IOTA
 [0x1DA6] = 0x026A, -- MODIFIER LETTER SMALL CAPITAL I
 [0x1DA7] = 0x1D7B, -- MODIFIER LETTER SMALL CAPITAL I WITH STROKE
 [0x1DA8] = 0x029D, -- MODIFIER LETTER SMALL J WITH CROSSED-TAIL
 [0x1DA9] = 0x026D, -- MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
 [0x1DAA] = 0x1D85, -- MODIFIER LETTER SMALL L WITH PALATAL HOOK
 [0x1DAB] = 0x029F, -- MODIFIER LETTER SMALL CAPITAL L
 [0x1DAC] = 0x0271, -- MODIFIER LETTER SMALL M WITH HOOK
 [0x1DAD] = 0x0270, -- MODIFIER LETTER SMALL TURNED M WITH LONG LEG
 [0x1DAE] = 0x0272, -- MODIFIER LETTER SMALL N WITH LEFT HOOK
 [0x1DAF] = 0x0273, -- MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
 [0x1DB0] = 0x0274, -- MODIFIER LETTER SMALL CAPITAL N
 [0x1DB1] = 0x0275, -- MODIFIER LETTER SMALL BARRED O
 [0x1DB2] = 0x0278, -- MODIFIER LETTER SMALL PHI
 [0x1DB3] = 0x0282, -- MODIFIER LETTER SMALL S WITH HOOK
 [0x1DB4] = 0x0283, -- MODIFIER LETTER SMALL ESH
 [0x1DB5] = 0x01AB, -- MODIFIER LETTER SMALL T WITH PALATAL HOOK
 [0x1DB6] = 0x0289, -- MODIFIER LETTER SMALL U BAR
 [0x1DB7] = 0x028A, -- MODIFIER LETTER SMALL UPSILON
 [0x1DB8] = 0x1D1C, -- MODIFIER LETTER SMALL CAPITAL U
 [0x1DB9] = 0x028B, -- MODIFIER LETTER SMALL V WITH HOOK
 [0x1DBA] = 0x028C, -- MODIFIER LETTER SMALL TURNED V
 [0x1DBB] = 0x007A, -- MODIFIER LETTER SMALL Z
 [0x1DBC] = 0x0290, -- MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
 [0x1DBD] = 0x0291, -- MODIFIER LETTER SMALL Z WITH CURL
 [0x1DBE] = 0x0292, -- MODIFIER LETTER SMALL EZH
 [0x1DBF] = 0x03B8, -- MODIFIER LETTER SMALL THETA
 [0x1DFA] = {status="disallowed"}, -- NA   <reserved-1DFA>
 [0x1DFB] = {status="valid"}, -- COMBINING DELETION MARK
 [0x1DFC] = {status="valid"}, -- COMBINING DOUBLE INVERTED BREVE BELOW
 [0x1DFD] = {status="valid"}, -- COMBINING ALMOST EQUAL TO BELOW
 [0x1E00] = 0x1E01, -- LATIN CAPITAL LETTER A WITH RING BELOW
 [0x1E01] = {status="valid"}, -- LATIN SMALL LETTER A WITH RING BELOW
 [0x1E02] = 0x1E03, -- LATIN CAPITAL LETTER B WITH DOT ABOVE
 [0x1E03] = {status="valid"}, -- LATIN SMALL LETTER B WITH DOT ABOVE
 [0x1E04] = 0x1E05, -- LATIN CAPITAL LETTER B WITH DOT BELOW
 [0x1E05] = {status="valid"}, -- LATIN SMALL LETTER B WITH DOT BELOW
 [0x1E06] = 0x1E07, -- LATIN CAPITAL LETTER B WITH LINE BELOW
 [0x1E07] = {status="valid"}, -- LATIN SMALL LETTER B WITH LINE BELOW
 [0x1E08] = 0x1E09, -- LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
 [0x1E09] = {status="valid"}, -- LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
 [0x1E0A] = 0x1E0B, -- LATIN CAPITAL LETTER D WITH DOT ABOVE
 [0x1E0B] = {status="valid"}, -- LATIN SMALL LETTER D WITH DOT ABOVE
 [0x1E0C] = 0x1E0D, -- LATIN CAPITAL LETTER D WITH DOT BELOW
 [0x1E0D] = {status="valid"}, -- LATIN SMALL LETTER D WITH DOT BELOW
 [0x1E0E] = 0x1E0F, -- LATIN CAPITAL LETTER D WITH LINE BELOW
 [0x1E0F] = {status="valid"}, -- LATIN SMALL LETTER D WITH LINE BELOW
 [0x1E10] = 0x1E11, -- LATIN CAPITAL LETTER D WITH CEDILLA
 [0x1E11] = {status="valid"}, -- LATIN SMALL LETTER D WITH CEDILLA
 [0x1E12] = 0x1E13, -- LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
 [0x1E13] = {status="valid"}, -- LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
 [0x1E14] = 0x1E15, -- LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
 [0x1E15] = {status="valid"}, -- LATIN SMALL LETTER E WITH MACRON AND GRAVE
 [0x1E16] = 0x1E17, -- LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
 [0x1E17] = {status="valid"}, -- LATIN SMALL LETTER E WITH MACRON AND ACUTE
 [0x1E18] = 0x1E19, -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
 [0x1E19] = {status="valid"}, -- LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
 [0x1E1A] = 0x1E1B, -- LATIN CAPITAL LETTER E WITH TILDE BELOW
 [0x1E1B] = {status="valid"}, -- LATIN SMALL LETTER E WITH TILDE BELOW
 [0x1E1C] = 0x1E1D, -- LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
 [0x1E1D] = {status="valid"}, -- LATIN SMALL LETTER E WITH CEDILLA AND BREVE
 [0x1E1E] = 0x1E1F, -- LATIN CAPITAL LETTER F WITH DOT ABOVE
 [0x1E1F] = {status="valid"}, -- LATIN SMALL LETTER F WITH DOT ABOVE
 [0x1E20] = 0x1E21, -- LATIN CAPITAL LETTER G WITH MACRON
 [0x1E21] = {status="valid"}, -- LATIN SMALL LETTER G WITH MACRON
 [0x1E22] = 0x1E23, -- LATIN CAPITAL LETTER H WITH DOT ABOVE
 [0x1E23] = {status="valid"}, -- LATIN SMALL LETTER H WITH DOT ABOVE
 [0x1E24] = 0x1E25, -- LATIN CAPITAL LETTER H WITH DOT BELOW
 [0x1E25] = {status="valid"}, -- LATIN SMALL LETTER H WITH DOT BELOW
 [0x1E26] = 0x1E27, -- LATIN CAPITAL LETTER H WITH DIAERESIS
 [0x1E27] = {status="valid"}, -- LATIN SMALL LETTER H WITH DIAERESIS
 [0x1E28] = 0x1E29, -- LATIN CAPITAL LETTER H WITH CEDILLA
 [0x1E29] = {status="valid"}, -- LATIN SMALL LETTER H WITH CEDILLA
 [0x1E2A] = 0x1E2B, -- LATIN CAPITAL LETTER H WITH BREVE BELOW
 [0x1E2B] = {status="valid"}, -- LATIN SMALL LETTER H WITH BREVE BELOW
 [0x1E2C] = 0x1E2D, -- LATIN CAPITAL LETTER I WITH TILDE BELOW
 [0x1E2D] = {status="valid"}, -- LATIN SMALL LETTER I WITH TILDE BELOW
 [0x1E2E] = 0x1E2F, -- LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
 [0x1E2F] = {status="valid"}, -- LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
 [0x1E30] = 0x1E31, -- LATIN CAPITAL LETTER K WITH ACUTE
 [0x1E31] = {status="valid"}, -- LATIN SMALL LETTER K WITH ACUTE
 [0x1E32] = 0x1E33, -- LATIN CAPITAL LETTER K WITH DOT BELOW
 [0x1E33] = {status="valid"}, -- LATIN SMALL LETTER K WITH DOT BELOW
 [0x1E34] = 0x1E35, -- LATIN CAPITAL LETTER K WITH LINE BELOW
 [0x1E35] = {status="valid"}, -- LATIN SMALL LETTER K WITH LINE BELOW
 [0x1E36] = 0x1E37, -- LATIN CAPITAL LETTER L WITH DOT BELOW
 [0x1E37] = {status="valid"}, -- LATIN SMALL LETTER L WITH DOT BELOW
 [0x1E38] = 0x1E39, -- LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
 [0x1E39] = {status="valid"}, -- LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
 [0x1E3A] = 0x1E3B, -- LATIN CAPITAL LETTER L WITH LINE BELOW
 [0x1E3B] = {status="valid"}, -- LATIN SMALL LETTER L WITH LINE BELOW
 [0x1E3C] = 0x1E3D, -- LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
 [0x1E3D] = {status="valid"}, -- LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
 [0x1E3E] = 0x1E3F, -- LATIN CAPITAL LETTER M WITH ACUTE
 [0x1E3F] = {status="valid"}, -- LATIN SMALL LETTER M WITH ACUTE
 [0x1E40] = 0x1E41, -- LATIN CAPITAL LETTER M WITH DOT ABOVE
 [0x1E41] = {status="valid"}, -- LATIN SMALL LETTER M WITH DOT ABOVE
 [0x1E42] = 0x1E43, -- LATIN CAPITAL LETTER M WITH DOT BELOW
 [0x1E43] = {status="valid"}, -- LATIN SMALL LETTER M WITH DOT BELOW
 [0x1E44] = 0x1E45, -- LATIN CAPITAL LETTER N WITH DOT ABOVE
 [0x1E45] = {status="valid"}, -- LATIN SMALL LETTER N WITH DOT ABOVE
 [0x1E46] = 0x1E47, -- LATIN CAPITAL LETTER N WITH DOT BELOW
 [0x1E47] = {status="valid"}, -- LATIN SMALL LETTER N WITH DOT BELOW
 [0x1E48] = 0x1E49, -- LATIN CAPITAL LETTER N WITH LINE BELOW
 [0x1E49] = {status="valid"}, -- LATIN SMALL LETTER N WITH LINE BELOW
 [0x1E4A] = 0x1E4B, -- LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
 [0x1E4B] = {status="valid"}, -- LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
 [0x1E4C] = 0x1E4D, -- LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
 [0x1E4D] = {status="valid"}, -- LATIN SMALL LETTER O WITH TILDE AND ACUTE
 [0x1E4E] = 0x1E4F, -- LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
 [0x1E4F] = {status="valid"}, -- LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
 [0x1E50] = 0x1E51, -- LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
 [0x1E51] = {status="valid"}, -- LATIN SMALL LETTER O WITH MACRON AND GRAVE
 [0x1E52] = 0x1E53, -- LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
 [0x1E53] = {status="valid"}, -- LATIN SMALL LETTER O WITH MACRON AND ACUTE
 [0x1E54] = 0x1E55, -- LATIN CAPITAL LETTER P WITH ACUTE
 [0x1E55] = {status="valid"}, -- LATIN SMALL LETTER P WITH ACUTE
 [0x1E56] = 0x1E57, -- LATIN CAPITAL LETTER P WITH DOT ABOVE
 [0x1E57] = {status="valid"}, -- LATIN SMALL LETTER P WITH DOT ABOVE
 [0x1E58] = 0x1E59, -- LATIN CAPITAL LETTER R WITH DOT ABOVE
 [0x1E59] = {status="valid"}, -- LATIN SMALL LETTER R WITH DOT ABOVE
 [0x1E5A] = 0x1E5B, -- LATIN CAPITAL LETTER R WITH DOT BELOW
 [0x1E5B] = {status="valid"}, -- LATIN SMALL LETTER R WITH DOT BELOW
 [0x1E5C] = 0x1E5D, -- LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
 [0x1E5D] = {status="valid"}, -- LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
 [0x1E5E] = 0x1E5F, -- LATIN CAPITAL LETTER R WITH LINE BELOW
 [0x1E5F] = {status="valid"}, -- LATIN SMALL LETTER R WITH LINE BELOW
 [0x1E60] = 0x1E61, -- LATIN CAPITAL LETTER S WITH DOT ABOVE
 [0x1E61] = {status="valid"}, -- LATIN SMALL LETTER S WITH DOT ABOVE
 [0x1E62] = 0x1E63, -- LATIN CAPITAL LETTER S WITH DOT BELOW
 [0x1E63] = {status="valid"}, -- LATIN SMALL LETTER S WITH DOT BELOW
 [0x1E64] = 0x1E65, -- LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
 [0x1E65] = {status="valid"}, -- LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
 [0x1E66] = 0x1E67, -- LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
 [0x1E67] = {status="valid"}, -- LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
 [0x1E68] = 0x1E69, -- LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
 [0x1E69] = {status="valid"}, -- LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
 [0x1E6A] = 0x1E6B, -- LATIN CAPITAL LETTER T WITH DOT ABOVE
 [0x1E6B] = {status="valid"}, -- LATIN SMALL LETTER T WITH DOT ABOVE
 [0x1E6C] = 0x1E6D, -- LATIN CAPITAL LETTER T WITH DOT BELOW
 [0x1E6D] = {status="valid"}, -- LATIN SMALL LETTER T WITH DOT BELOW
 [0x1E6E] = 0x1E6F, -- LATIN CAPITAL LETTER T WITH LINE BELOW
 [0x1E6F] = {status="valid"}, -- LATIN SMALL LETTER T WITH LINE BELOW
 [0x1E70] = 0x1E71, -- LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
 [0x1E71] = {status="valid"}, -- LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
 [0x1E72] = 0x1E73, -- LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
 [0x1E73] = {status="valid"}, -- LATIN SMALL LETTER U WITH DIAERESIS BELOW
 [0x1E74] = 0x1E75, -- LATIN CAPITAL LETTER U WITH TILDE BELOW
 [0x1E75] = {status="valid"}, -- LATIN SMALL LETTER U WITH TILDE BELOW
 [0x1E76] = 0x1E77, -- LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
 [0x1E77] = {status="valid"}, -- LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
 [0x1E78] = 0x1E79, -- LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
 [0x1E79] = {status="valid"}, -- LATIN SMALL LETTER U WITH TILDE AND ACUTE
 [0x1E7A] = 0x1E7B, -- LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
 [0x1E7B] = {status="valid"}, -- LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
 [0x1E7C] = 0x1E7D, -- LATIN CAPITAL LETTER V WITH TILDE
 [0x1E7D] = {status="valid"}, -- LATIN SMALL LETTER V WITH TILDE
 [0x1E7E] = 0x1E7F, -- LATIN CAPITAL LETTER V WITH DOT BELOW
 [0x1E7F] = {status="valid"}, -- LATIN SMALL LETTER V WITH DOT BELOW
 [0x1E80] = 0x1E81, -- LATIN CAPITAL LETTER W WITH GRAVE
 [0x1E81] = {status="valid"}, -- LATIN SMALL LETTER W WITH GRAVE
 [0x1E82] = 0x1E83, -- LATIN CAPITAL LETTER W WITH ACUTE
 [0x1E83] = {status="valid"}, -- LATIN SMALL LETTER W WITH ACUTE
 [0x1E84] = 0x1E85, -- LATIN CAPITAL LETTER W WITH DIAERESIS
 [0x1E85] = {status="valid"}, -- LATIN SMALL LETTER W WITH DIAERESIS
 [0x1E86] = 0x1E87, -- LATIN CAPITAL LETTER W WITH DOT ABOVE
 [0x1E87] = {status="valid"}, -- LATIN SMALL LETTER W WITH DOT ABOVE
 [0x1E88] = 0x1E89, -- LATIN CAPITAL LETTER W WITH DOT BELOW
 [0x1E89] = {status="valid"}, -- LATIN SMALL LETTER W WITH DOT BELOW
 [0x1E8A] = 0x1E8B, -- LATIN CAPITAL LETTER X WITH DOT ABOVE
 [0x1E8B] = {status="valid"}, -- LATIN SMALL LETTER X WITH DOT ABOVE
 [0x1E8C] = 0x1E8D, -- LATIN CAPITAL LETTER X WITH DIAERESIS
 [0x1E8D] = {status="valid"}, -- LATIN SMALL LETTER X WITH DIAERESIS
 [0x1E8E] = 0x1E8F, -- LATIN CAPITAL LETTER Y WITH DOT ABOVE
 [0x1E8F] = {status="valid"}, -- LATIN SMALL LETTER Y WITH DOT ABOVE
 [0x1E90] = 0x1E91, -- LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
 [0x1E91] = {status="valid"}, -- LATIN SMALL LETTER Z WITH CIRCUMFLEX
 [0x1E92] = 0x1E93, -- LATIN CAPITAL LETTER Z WITH DOT BELOW
 [0x1E93] = {status="valid"}, -- LATIN SMALL LETTER Z WITH DOT BELOW
 [0x1E94] = 0x1E95, -- LATIN CAPITAL LETTER Z WITH LINE BELOW
 -- COMBINING LEFT ARROWHEAD ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
 [0x1DFE] = {status="valid"},
 [0x1DFF] = {status="valid"},
 [0x1E9A] = {0x0061, 0x02BE}, -- LATIN SMALL LETTER A WITH RIGHT HALF RING
 [0x1E9B] = 0x1E61, -- LATIN SMALL LETTER LONG S WITH DOT ABOVE
 -- LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
 [0x1E95] = {status="valid"},
 [0x1E96] = {status="valid"},
 [0x1E97] = {status="valid"},
 [0x1E98] = {status="valid"},
 [0x1E99] = {status="valid"},
 [0x1E9E] = {0x0073, 0x0073}, -- LATIN CAPITAL LETTER SHARP S
 [0x1E9F] = {status="valid"}, -- LATIN SMALL LETTER DELTA
 [0x1EA0] = 0x1EA1, -- LATIN CAPITAL LETTER A WITH DOT BELOW
 [0x1EA1] = {status="valid"}, -- LATIN SMALL LETTER A WITH DOT BELOW
 [0x1EA2] = 0x1EA3, -- LATIN CAPITAL LETTER A WITH HOOK ABOVE
 [0x1EA3] = {status="valid"}, -- LATIN SMALL LETTER A WITH HOOK ABOVE
 [0x1EA4] = 0x1EA5, -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
 [0x1EA5] = {status="valid"}, -- LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
 [0x1EA6] = 0x1EA7, -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
 [0x1EA7] = {status="valid"}, -- LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
 [0x1EA8] = 0x1EA9, -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
 [0x1EA9] = {status="valid"}, -- LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
 [0x1EAA] = 0x1EAB, -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
 [0x1EAB] = {status="valid"}, -- LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
 [0x1EAC] = 0x1EAD, -- LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
 [0x1EAD] = {status="valid"}, -- LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
 [0x1EAE] = 0x1EAF, -- LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
 [0x1EAF] = {status="valid"}, -- LATIN SMALL LETTER A WITH BREVE AND ACUTE
 [0x1EB0] = 0x1EB1, -- LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
 [0x1EB1] = {status="valid"}, -- LATIN SMALL LETTER A WITH BREVE AND GRAVE
 [0x1EB2] = 0x1EB3, -- LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
 [0x1EB3] = {status="valid"}, -- LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
 [0x1EB4] = 0x1EB5, -- LATIN CAPITAL LETTER A WITH BREVE AND TILDE
 [0x1EB5] = {status="valid"}, -- LATIN SMALL LETTER A WITH BREVE AND TILDE
 [0x1EB6] = 0x1EB7, -- LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
 [0x1EB7] = {status="valid"}, -- LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
 [0x1EB8] = 0x1EB9, -- LATIN CAPITAL LETTER E WITH DOT BELOW
 [0x1EB9] = {status="valid"}, -- LATIN SMALL LETTER E WITH DOT BELOW
 [0x1EBA] = 0x1EBB, -- LATIN CAPITAL LETTER E WITH HOOK ABOVE
 [0x1EBB] = {status="valid"}, -- LATIN SMALL LETTER E WITH HOOK ABOVE
 [0x1EBC] = 0x1EBD, -- LATIN CAPITAL LETTER E WITH TILDE
 [0x1EBD] = {status="valid"}, -- LATIN SMALL LETTER E WITH TILDE
 [0x1EBE] = 0x1EBF, -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
 [0x1EBF] = {status="valid"}, -- LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
 [0x1EC0] = 0x1EC1, -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
 [0x1EC1] = {status="valid"}, -- LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
 [0x1EC2] = 0x1EC3, -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
 [0x1EC3] = {status="valid"}, -- LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
 [0x1EC4] = 0x1EC5, -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
 [0x1EC5] = {status="valid"}, -- LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
 [0x1EC6] = 0x1EC7, -- LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
 [0x1EC7] = {status="valid"}, -- LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
 [0x1EC8] = 0x1EC9, -- LATIN CAPITAL LETTER I WITH HOOK ABOVE
 [0x1EC9] = {status="valid"}, -- LATIN SMALL LETTER I WITH HOOK ABOVE
 [0x1ECA] = 0x1ECB, -- LATIN CAPITAL LETTER I WITH DOT BELOW
 [0x1ECB] = {status="valid"}, -- LATIN SMALL LETTER I WITH DOT BELOW
 [0x1ECC] = 0x1ECD, -- LATIN CAPITAL LETTER O WITH DOT BELOW
 [0x1ECD] = {status="valid"}, -- LATIN SMALL LETTER O WITH DOT BELOW
 [0x1ECE] = 0x1ECF, -- LATIN CAPITAL LETTER O WITH HOOK ABOVE
 [0x1ECF] = {status="valid"}, -- LATIN SMALL LETTER O WITH HOOK ABOVE
 [0x1ED0] = 0x1ED1, -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
 [0x1ED1] = {status="valid"}, -- LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
 [0x1ED2] = 0x1ED3, -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
 [0x1ED3] = {status="valid"}, -- LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
 [0x1ED4] = 0x1ED5, -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
 [0x1ED5] = {status="valid"}, -- LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
 [0x1ED6] = 0x1ED7, -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
 [0x1ED7] = {status="valid"}, -- LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
 [0x1ED8] = 0x1ED9, -- LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
 [0x1ED9] = {status="valid"}, -- LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
 [0x1EDA] = 0x1EDB, -- LATIN CAPITAL LETTER O WITH HORN AND ACUTE
 [0x1EDB] = {status="valid"}, -- LATIN SMALL LETTER O WITH HORN AND ACUTE
 [0x1EDC] = 0x1EDD, -- LATIN CAPITAL LETTER O WITH HORN AND GRAVE
 [0x1EDD] = {status="valid"}, -- LATIN SMALL LETTER O WITH HORN AND GRAVE
 [0x1EDE] = 0x1EDF, -- LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
 [0x1EDF] = {status="valid"}, -- LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
 [0x1EE0] = 0x1EE1, -- LATIN CAPITAL LETTER O WITH HORN AND TILDE
 [0x1EE1] = {status="valid"}, -- LATIN SMALL LETTER O WITH HORN AND TILDE
 [0x1EE2] = 0x1EE3, -- LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
 [0x1EE3] = {status="valid"}, -- LATIN SMALL LETTER O WITH HORN AND DOT BELOW
 [0x1EE4] = 0x1EE5, -- LATIN CAPITAL LETTER U WITH DOT BELOW
 [0x1EE5] = {status="valid"}, -- LATIN SMALL LETTER U WITH DOT BELOW
 [0x1EE6] = 0x1EE7, -- LATIN CAPITAL LETTER U WITH HOOK ABOVE
 [0x1EE7] = {status="valid"}, -- LATIN SMALL LETTER U WITH HOOK ABOVE
 [0x1EE8] = 0x1EE9, -- LATIN CAPITAL LETTER U WITH HORN AND ACUTE
 [0x1EE9] = {status="valid"}, -- LATIN SMALL LETTER U WITH HORN AND ACUTE
 [0x1EEA] = 0x1EEB, -- LATIN CAPITAL LETTER U WITH HORN AND GRAVE
 [0x1EEB] = {status="valid"}, -- LATIN SMALL LETTER U WITH HORN AND GRAVE
 [0x1EEC] = 0x1EED, -- LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
 [0x1EED] = {status="valid"}, -- LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
 [0x1EEE] = 0x1EEF, -- LATIN CAPITAL LETTER U WITH HORN AND TILDE
 [0x1EEF] = {status="valid"}, -- LATIN SMALL LETTER U WITH HORN AND TILDE
 [0x1EF0] = 0x1EF1, -- LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
 [0x1EF1] = {status="valid"}, -- LATIN SMALL LETTER U WITH HORN AND DOT BELOW
 [0x1EF2] = 0x1EF3, -- LATIN CAPITAL LETTER Y WITH GRAVE
 [0x1EF3] = {status="valid"}, -- LATIN SMALL LETTER Y WITH GRAVE
 [0x1EF4] = 0x1EF5, -- LATIN CAPITAL LETTER Y WITH DOT BELOW
 [0x1EF5] = {status="valid"}, -- LATIN SMALL LETTER Y WITH DOT BELOW
 [0x1EF6] = 0x1EF7, -- LATIN CAPITAL LETTER Y WITH HOOK ABOVE
 [0x1EF7] = {status="valid"}, -- LATIN SMALL LETTER Y WITH HOOK ABOVE
 [0x1EF8] = 0x1EF9, -- LATIN CAPITAL LETTER Y WITH TILDE
 [0x1EF9] = {status="valid"}, -- LATIN SMALL LETTER Y WITH TILDE
 [0x1EFA] = 0x1EFB, -- LATIN CAPITAL LETTER MIDDLE-WELSH LL
 [0x1EFB] = {status="valid"}, -- LATIN SMALL LETTER MIDDLE-WELSH LL
 [0x1EFC] = 0x1EFD, -- LATIN CAPITAL LETTER MIDDLE-WELSH V
 [0x1EFD] = {status="valid"}, -- LATIN SMALL LETTER MIDDLE-WELSH V
 [0x1EFE] = 0x1EFF, -- LATIN CAPITAL LETTER Y WITH LOOP
 [0x1EFF] = {status="valid"}, -- LATIN SMALL LETTER Y WITH LOOP
 -- LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE..LATIN SMALL LETTER LONG S WITH HIGH STROKE
 [0x1E9C] = {status="valid"},
 [0x1E9D] = {status="valid"},
 [0x1F08] = 0x1F00, -- GREEK CAPITAL LETTER ALPHA WITH PSILI
 [0x1F09] = 0x1F01, -- GREEK CAPITAL LETTER ALPHA WITH DASIA
 [0x1F0A] = 0x1F02, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
 [0x1F0B] = 0x1F03, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
 [0x1F0C] = 0x1F04, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
 [0x1F0D] = 0x1F05, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
 [0x1F0E] = 0x1F06, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
 [0x1F0F] = 0x1F07, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
 [0x1F18] = 0x1F10, -- GREEK CAPITAL LETTER EPSILON WITH PSILI
 [0x1F19] = 0x1F11, -- GREEK CAPITAL LETTER EPSILON WITH DASIA
 [0x1F1A] = 0x1F12, -- GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
 [0x1F1B] = 0x1F13, -- GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
 [0x1F1C] = 0x1F14, -- GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
 [0x1F1D] = 0x1F15, -- GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
 -- NA   <reserved-1F16>..<reserved-1F17>
 [0x1F16] = {status="disallowed"},
 [0x1F17] = {status="disallowed"},
 -- NA   <reserved-1F1E>..<reserved-1F1F>
 [0x1F1E] = {status="disallowed"},
 [0x1F1F] = {status="disallowed"},
 [0x1F28] = 0x1F20, -- GREEK CAPITAL LETTER ETA WITH PSILI
 [0x1F29] = 0x1F21, -- GREEK CAPITAL LETTER ETA WITH DASIA
 [0x1F2A] = 0x1F22, -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
 [0x1F2B] = 0x1F23, -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
 [0x1F2C] = 0x1F24, -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
 [0x1F2D] = 0x1F25, -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
 [0x1F2E] = 0x1F26, -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
 [0x1F2F] = 0x1F27, -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
 [0x1F38] = 0x1F30, -- GREEK CAPITAL LETTER IOTA WITH PSILI
 [0x1F39] = 0x1F31, -- GREEK CAPITAL LETTER IOTA WITH DASIA
 [0x1F3A] = 0x1F32, -- GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
 [0x1F3B] = 0x1F33, -- GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
 [0x1F3C] = 0x1F34, -- GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
 [0x1F3D] = 0x1F35, -- GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
 [0x1F3E] = 0x1F36, -- GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
 [0x1F3F] = 0x1F37, -- GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
 [0x1F48] = 0x1F40, -- GREEK CAPITAL LETTER OMICRON WITH PSILI
 [0x1F49] = 0x1F41, -- GREEK CAPITAL LETTER OMICRON WITH DASIA
 [0x1F4A] = 0x1F42, -- GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
 [0x1F4B] = 0x1F43, -- GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
 [0x1F4C] = 0x1F44, -- GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
 [0x1F4D] = 0x1F45, -- GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
 -- NA   <reserved-1F46>..<reserved-1F47>
 [0x1F46] = {status="disallowed"},
 [0x1F47] = {status="disallowed"},
 -- NA   <reserved-1F4E>..<reserved-1F4F>
 [0x1F4E] = {status="disallowed"},
 [0x1F4F] = {status="disallowed"},
 [0x1F58] = {status="disallowed"}, -- NA   <reserved-1F58>
 [0x1F59] = 0x1F51, -- GREEK CAPITAL LETTER UPSILON WITH DASIA
 [0x1F5A] = {status="disallowed"}, -- NA   <reserved-1F5A>
 [0x1F5B] = 0x1F53, -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
 [0x1F5C] = {status="disallowed"}, -- NA   <reserved-1F5C>
 [0x1F5D] = 0x1F55, -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
 [0x1F5E] = {status="disallowed"}, -- NA   <reserved-1F5E>
 [0x1F5F] = 0x1F57, -- GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
 [0x1F68] = 0x1F60, -- GREEK CAPITAL LETTER OMEGA WITH PSILI
 [0x1F69] = 0x1F61, -- GREEK CAPITAL LETTER OMEGA WITH DASIA
 [0x1F6A] = 0x1F62, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
 [0x1F6B] = 0x1F63, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
 [0x1F6C] = 0x1F64, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
 [0x1F6D] = 0x1F65, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
 [0x1F6E] = 0x1F66, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
 [0x1F6F] = 0x1F67, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
 [0x1F70] = {status="valid"}, -- GREEK SMALL LETTER ALPHA WITH VARIA
 [0x1F71] = 0x03AC, -- GREEK SMALL LETTER ALPHA WITH OXIA
 [0x1F72] = {status="valid"}, -- GREEK SMALL LETTER EPSILON WITH VARIA
 [0x1F73] = 0x03AD, -- GREEK SMALL LETTER EPSILON WITH OXIA
 [0x1F74] = {status="valid"}, -- GREEK SMALL LETTER ETA WITH VARIA
 [0x1F75] = 0x03AE, -- GREEK SMALL LETTER ETA WITH OXIA
 [0x1F76] = {status="valid"}, -- GREEK SMALL LETTER IOTA WITH VARIA
 [0x1F77] = 0x03AF, -- GREEK SMALL LETTER IOTA WITH OXIA
 [0x1F78] = {status="valid"}, -- GREEK SMALL LETTER OMICRON WITH VARIA
 [0x1F79] = 0x03CC, -- GREEK SMALL LETTER OMICRON WITH OXIA
 [0x1F7A] = {status="valid"}, -- GREEK SMALL LETTER UPSILON WITH VARIA
 [0x1F7B] = 0x03CD, -- GREEK SMALL LETTER UPSILON WITH OXIA
 [0x1F7C] = {status="valid"}, -- GREEK SMALL LETTER OMEGA WITH VARIA
 [0x1F7D] = 0x03CE, -- GREEK SMALL LETTER OMEGA WITH OXIA
 [0x1F80] = {0x1F00, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
 [0x1F81] = {0x1F01, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
 [0x1F82] = {0x1F02, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
 [0x1F83] = {0x1F03, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
 [0x1F84] = {0x1F04, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
 [0x1F85] = {0x1F05, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
 [0x1F86] = {0x1F06, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
 [0x1F87] = {0x1F07, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
 [0x1F88] = {0x1F00, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
 [0x1F89] = {0x1F01, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
 [0x1F8A] = {0x1F02, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
 [0x1F8B] = {0x1F03, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
 [0x1F8C] = {0x1F04, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
 [0x1F8D] = {0x1F05, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
 [0x1F8E] = {0x1F06, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
 [0x1F8F] = {0x1F07, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
 [0x1F90] = {0x1F20, 0x03B9}, -- GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
 [0x1F91] = {0x1F21, 0x03B9}, -- GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
 [0x1F92] = {0x1F22, 0x03B9}, -- GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
 [0x1F93] = {0x1F23, 0x03B9}, -- GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
 [0x1F94] = {0x1F24, 0x03B9}, -- GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
 [0x1F95] = {0x1F25, 0x03B9}, -- GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
 [0x1F96] = {0x1F26, 0x03B9}, -- GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
 [0x1F97] = {0x1F27, 0x03B9}, -- GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
 [0x1F98] = {0x1F20, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
 [0x1F99] = {0x1F21, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
 [0x1F9A] = {0x1F22, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
 [0x1F9B] = {0x1F23, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
 [0x1F9C] = {0x1F24, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
 [0x1F9D] = {0x1F25, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
 [0x1F9E] = {0x1F26, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
 [0x1F9F] = {0x1F27, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
 [0x1FA0] = {0x1F60, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
 [0x1FA1] = {0x1F61, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
 [0x1FA2] = {0x1F62, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
 [0x1FA3] = {0x1F63, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
 [0x1FA4] = {0x1F64, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
 [0x1FA5] = {0x1F65, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
 [0x1FA6] = {0x1F66, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
 [0x1FA7] = {0x1F67, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
 [0x1FA8] = {0x1F60, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
 [0x1FA9] = {0x1F61, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
 [0x1FAA] = {0x1F62, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
 [0x1FAB] = {0x1F63, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
 [0x1FAC] = {0x1F64, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
 [0x1FAD] = {0x1F65, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
 [0x1FAE] = {0x1F66, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
 [0x1FAF] = {0x1F67, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
 -- NA   <reserved-1F7E>..<reserved-1F7F>
 [0x1F7E] = {status="disallowed"},
 [0x1F7F] = {status="disallowed"},
 [0x1FB2] = {0x1F70, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
 [0x1FB3] = {0x03B1, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
 [0x1FB4] = {0x03AC, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
 [0x1FB5] = {status="disallowed"}, -- NA   <reserved-1FB5>
 [0x1FB6] = {status="valid"}, -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI
 [0x1FB7] = {0x1FB6, 0x03B9}, -- GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
 [0x1FB8] = 0x1FB0, -- GREEK CAPITAL LETTER ALPHA WITH VRACHY
 [0x1FB9] = 0x1FB1, -- GREEK CAPITAL LETTER ALPHA WITH MACRON
 [0x1FBA] = 0x1F70, -- GREEK CAPITAL LETTER ALPHA WITH VARIA
 [0x1FBB] = 0x03AC, -- GREEK CAPITAL LETTER ALPHA WITH OXIA
 [0x1FBC] = {0x03B1, 0x03B9}, -- GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
 [0x1FBD] = {status="disallowed"}, -- GREEK KORONIS
 [0x1FBE] = 0x03B9, -- GREEK PROSGEGRAMMENI
 [0x1FBF] = {status="disallowed"}, -- GREEK PSILI
 [0x1FC0] = {status="disallowed"}, -- GREEK PERISPOMENI
 [0x1FC1] = {status="disallowed"}, -- GREEK DIALYTIKA AND PERISPOMENI
 [0x1FC2] = {0x1F74, 0x03B9}, -- GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
 [0x1FC3] = {0x03B7, 0x03B9}, -- GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
 [0x1FC4] = {0x03AE, 0x03B9}, -- GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
 [0x1FC5] = {status="disallowed"}, -- NA   <reserved-1FC5>
 [0x1FC6] = {status="valid"}, -- GREEK SMALL LETTER ETA WITH PERISPOMENI
 [0x1FC7] = {0x1FC6, 0x03B9}, -- GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
 [0x1FC8] = 0x1F72, -- GREEK CAPITAL LETTER EPSILON WITH VARIA
 [0x1FC9] = 0x03AD, -- GREEK CAPITAL LETTER EPSILON WITH OXIA
 [0x1FCA] = 0x1F74, -- GREEK CAPITAL LETTER ETA WITH VARIA
 [0x1FCB] = 0x03AE, -- GREEK CAPITAL LETTER ETA WITH OXIA
 [0x1FCC] = {0x03B7, 0x03B9}, -- GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
 [0x1FCD] = {status="disallowed"}, -- GREEK PSILI AND VARIA
 [0x1FCE] = {status="disallowed"}, -- GREEK PSILI AND OXIA
 [0x1FCF] = {status="disallowed"}, -- GREEK PSILI AND PERISPOMENI
 -- GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH MACRON
 [0x1FB0] = {status="valid"},
 [0x1FB1] = {status="valid"},
 [0x1FD3] = 0x0390, -- GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
 -- GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
 [0x1FD0] = {status="valid"},
 [0x1FD1] = {status="valid"},
 [0x1FD2] = {status="valid"},
 -- NA   <reserved-1FD4>..<reserved-1FD5>
 [0x1FD4] = {status="disallowed"},
 [0x1FD5] = {status="disallowed"},
 [0x1FD8] = 0x1FD0, -- GREEK CAPITAL LETTER IOTA WITH VRACHY
 [0x1FD9] = 0x1FD1, -- GREEK CAPITAL LETTER IOTA WITH MACRON
 [0x1FDA] = 0x1F76, -- GREEK CAPITAL LETTER IOTA WITH VARIA
 [0x1FDB] = 0x03AF, -- GREEK CAPITAL LETTER IOTA WITH OXIA
 [0x1FDC] = {status="disallowed"}, -- NA   <reserved-1FDC>
 [0x1FDD] = {status="disallowed"}, -- GREEK DASIA AND VARIA
 [0x1FDE] = {status="disallowed"}, -- GREEK DASIA AND OXIA
 [0x1FDF] = {status="disallowed"}, -- GREEK DASIA AND PERISPOMENI
 -- GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
 [0x1FD6] = {status="valid"},
 [0x1FD7] = {status="valid"},
 [0x1FE3] = 0x03B0, -- GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
 -- GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
 [0x1FE0] = {status="valid"},
 [0x1FE1] = {status="valid"},
 [0x1FE2] = {status="valid"},
 [0x1FE8] = 0x1FE0, -- GREEK CAPITAL LETTER UPSILON WITH VRACHY
 [0x1FE9] = 0x1FE1, -- GREEK CAPITAL LETTER UPSILON WITH MACRON
 [0x1FEA] = 0x1F7A, -- GREEK CAPITAL LETTER UPSILON WITH VARIA
 [0x1FEB] = 0x03CD, -- GREEK CAPITAL LETTER UPSILON WITH OXIA
 [0x1FEC] = 0x1FE5, -- GREEK CAPITAL LETTER RHO WITH DASIA
 [0x1FED] = {status="disallowed"}, -- GREEK DIALYTIKA AND VARIA
 [0x1FEE] = {status="disallowed"}, -- GREEK DIALYTIKA AND OXIA
 [0x1FEF] = {status="disallowed"}, -- GREEK VARIA
 -- GREEK SMALL LETTER RHO WITH PSILI..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
 [0x1FE4] = {status="valid"},
 [0x1FE5] = {status="valid"},
 [0x1FE6] = {status="valid"},
 [0x1FE7] = {status="valid"},
 [0x1FF2] = {0x1F7C, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
 [0x1FF3] = {0x03C9, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
 [0x1FF4] = {0x03CE, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
 [0x1FF5] = {status="disallowed"}, -- NA   <reserved-1FF5>
 [0x1FF6] = {status="valid"}, -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI
 [0x1FF7] = {0x1FF6, 0x03B9}, -- GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
 [0x1FF8] = 0x1F78, -- GREEK CAPITAL LETTER OMICRON WITH VARIA
 [0x1FF9] = 0x03CC, -- GREEK CAPITAL LETTER OMICRON WITH OXIA
 [0x1FFA] = 0x1F7C, -- GREEK CAPITAL LETTER OMEGA WITH VARIA
 [0x1FFB] = 0x03CE, -- GREEK CAPITAL LETTER OMEGA WITH OXIA
 [0x1FFC] = {0x03C9, 0x03B9}, -- GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
 [0x1FFD] = {status="disallowed"}, -- GREEK OXIA
 [0x1FFE] = {status="disallowed"}, -- GREEK DASIA
 [0x1FFF] = {status="disallowed"}, -- NA   <reserved-1FFF>
 -- NA   <reserved-1FF0>..<reserved-1FF1>
 [0x1FF0] = {status="disallowed"},
 [0x1FF1] = {status="disallowed"},
 [0x200B] = {status='ignored'}, -- ZERO WIDTH SPACE
 -- ZERO WIDTH NON-JOINER..ZERO WIDTH JOINER
 [0x200C] = {status='deviation', {}},
 [0x200D] = {status='deviation', {}},
 [0x2010] = {status="disallowed"}, -- HYPHEN
 [0x2011] = 0x2010, -- NON-BREAKING HYPHEN
 -- LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK
 [0x200E] = {status="disallowed"},
 [0x200F] = {status="disallowed"},
 [0x2017] = {status="disallowed"}, -- DOUBLE LOW LINE
 -- FIGURE DASH..DOUBLE VERTICAL LINE
 [0x2012] = {status="disallowed"},
 [0x2013] = {status="disallowed"},
 [0x2014] = {status="disallowed"},
 [0x2015] = {status="disallowed"},
 [0x2016] = {status="disallowed"},
 [0x2027] = {status="disallowed"}, -- HYPHENATION POINT
 -- ONE DOT LEADER..HORIZONTAL ELLIPSIS
 [0x2024] = {status="disallowed"},
 [0x2025] = {status="disallowed"},
 [0x2026] = {status="disallowed"},
 [0x202F] = {status="disallowed"}, -- NARROW NO-BREAK SPACE
 [0x2033] = {0x2032, 0x2032}, -- DOUBLE PRIME
 [0x2034] = {0x2032, 0x2032, 0x2032}, -- TRIPLE PRIME
 [0x2035] = {status="disallowed"}, -- REVERSED PRIME
 [0x2036] = {0x2035, 0x2035}, -- REVERSED DOUBLE PRIME
 [0x2037] = {0x2035, 0x2035, 0x2035}, -- REVERSED TRIPLE PRIME
 -- PER MILLE SIGN..PRIME
 [0x2030] = {status="disallowed"},
 [0x2031] = {status="disallowed"},
 [0x2032] = {status="disallowed"},
 [0x203C] = {status="disallowed"}, -- DOUBLE EXCLAMATION MARK
 [0x203D] = {status="disallowed"}, -- INTERROBANG
 [0x203E] = {status="disallowed"}, -- OVERLINE
 -- CARET..REFERENCE MARK
 [0x2038] = {status="disallowed"},
 [0x2039] = {status="disallowed"},
 [0x203A] = {status="disallowed"},
 [0x203B] = {status="disallowed"},
 [0x2047] = {status="disallowed"}, -- DOUBLE QUESTION MARK
 [0x2048] = {status="disallowed"}, -- QUESTION EXCLAMATION MARK
 [0x2049] = {status="disallowed"}, -- EXCLAMATION QUESTION MARK
 [0x2057] = {0x2032, 0x2032, 0x2032, 0x2032}, -- QUADRUPLE PRIME
 [0x205F] = {status="disallowed"}, -- MEDIUM MATHEMATICAL SPACE
 [0x2060] = {status='ignored'}, -- WORD JOINER
 [0x2064] = {status='ignored'}, -- INVISIBLE PLUS
 [0x2065] = {status="disallowed"}, -- NA   <reserved-2065>
 -- FUNCTION APPLICATION..INVISIBLE SEPARATOR
 [0x2061] = {status="disallowed"},
 [0x2062] = {status="disallowed"},
 [0x2063] = {status="disallowed"},
 [0x2070] = 0x0030, -- SUPERSCRIPT ZERO
 [0x2071] = 0x0069, -- SUPERSCRIPT LATIN SMALL LETTER I
 [0x2074] = 0x0034, -- SUPERSCRIPT FOUR
 [0x2075] = 0x0035, -- SUPERSCRIPT FIVE
 [0x2076] = 0x0036, -- SUPERSCRIPT SIX
 [0x2077] = 0x0037, -- SUPERSCRIPT SEVEN
 [0x2078] = 0x0038, -- SUPERSCRIPT EIGHT
 [0x2079] = 0x0039, -- SUPERSCRIPT NINE
 [0x207A] = {status="disallowed"}, -- SUPERSCRIPT PLUS SIGN
 [0x207B] = 0x2212, -- SUPERSCRIPT MINUS
 [0x207C] = {status="disallowed"}, -- SUPERSCRIPT EQUALS SIGN
 [0x207D] = {status="disallowed"}, -- SUPERSCRIPT LEFT PARENTHESIS
 [0x207E] = {status="disallowed"}, -- SUPERSCRIPT RIGHT PARENTHESIS
 [0x207F] = 0x006E, -- SUPERSCRIPT LATIN SMALL LETTER N
 [0x2080] = 0x0030, -- SUBSCRIPT ZERO
 [0x2081] = 0x0031, -- SUBSCRIPT ONE
 [0x2082] = 0x0032, -- SUBSCRIPT TWO
 [0x2083] = 0x0033, -- SUBSCRIPT THREE
 [0x2084] = 0x0034, -- SUBSCRIPT FOUR
 [0x2085] = 0x0035, -- SUBSCRIPT FIVE
 [0x2086] = 0x0036, -- SUBSCRIPT SIX
 [0x2087] = 0x0037, -- SUBSCRIPT SEVEN
 [0x2088] = 0x0038, -- SUBSCRIPT EIGHT
 [0x2089] = 0x0039, -- SUBSCRIPT NINE
 [0x208A] = {status="disallowed"}, -- SUBSCRIPT PLUS SIGN
 [0x208B] = 0x2212, -- SUBSCRIPT MINUS
 [0x208C] = {status="disallowed"}, -- SUBSCRIPT EQUALS SIGN
 [0x208D] = {status="disallowed"}, -- SUBSCRIPT LEFT PARENTHESIS
 [0x208E] = {status="disallowed"}, -- SUBSCRIPT RIGHT PARENTHESIS
 [0x208F] = {status="disallowed"}, -- NA   <reserved-208F>
 [0x2090] = 0x0061, -- LATIN SUBSCRIPT SMALL LETTER A
 [0x2091] = 0x0065, -- LATIN SUBSCRIPT SMALL LETTER E
 [0x2092] = 0x006F, -- LATIN SUBSCRIPT SMALL LETTER O
 [0x2093] = 0x0078, -- LATIN SUBSCRIPT SMALL LETTER X
 [0x2094] = 0x0259, -- LATIN SUBSCRIPT SMALL LETTER SCHWA
 [0x2095] = 0x0068, -- LATIN SUBSCRIPT SMALL LETTER H
 [0x2096] = 0x006B, -- LATIN SUBSCRIPT SMALL LETTER K
 [0x2097] = 0x006C, -- LATIN SUBSCRIPT SMALL LETTER L
 [0x2098] = 0x006D, -- LATIN SUBSCRIPT SMALL LETTER M
 [0x2099] = 0x006E, -- LATIN SUBSCRIPT SMALL LETTER N
 [0x209A] = 0x0070, -- LATIN SUBSCRIPT SMALL LETTER P
 [0x209B] = 0x0073, -- LATIN SUBSCRIPT SMALL LETTER S
 [0x209C] = 0x0074, -- LATIN SUBSCRIPT SMALL LETTER T
 -- NA   <reserved-2072>..<reserved-2073>
 [0x2072] = {status="disallowed"},
 [0x2073] = {status="disallowed"},
 -- NA   <reserved-209D>..<reserved-209F>
 [0x209D] = {status="disallowed"},
 [0x209E] = {status="disallowed"},
 [0x209F] = {status="disallowed"},
 [0x20A8] = {0x0072, 0x0073}, -- RUPEE SIGN
 [0x20AB] = {status="disallowed"}, -- DONG SIGN
 [0x20AC] = {status="disallowed"}, -- EURO SIGN
 -- WON SIGN..NEW SHEQEL SIGN
 [0x20A9] = {status="disallowed"},
 [0x20AA] = {status="disallowed"},
 [0x20B9] = {status="disallowed"}, -- INDIAN RUPEE SIGN
 [0x20BA] = {status="disallowed"}, -- TURKISH LIRA SIGN
 [0x20BE] = {status="disallowed"}, -- LARI SIGN
 [0x20BF] = {status="disallowed"}, -- BITCOIN SIGN
 -- NORDIC MARK SIGN..RUBLE SIGN
 [0x20BB] = {status="disallowed"},
 [0x20BC] = {status="disallowed"},
 [0x20BD] = {status="disallowed"},
 [0x20EB] = {status="disallowed"}, -- COMBINING LONG DOUBLE SOLIDUS OVERLAY
 [0x20F0] = {status="disallowed"}, -- COMBINING ASTERISK ABOVE
 -- COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS..COMBINING RIGHT ARROW BELOW
 [0x20EC] = {status="disallowed"},
 [0x20ED] = {status="disallowed"},
 [0x20EE] = {status="disallowed"},
 [0x20EF] = {status="disallowed"},
 [0x2100] = {status="disallowed"}, -- ACCOUNT OF
 [0x2101] = {status="disallowed"}, -- ADDRESSED TO THE SUBJECT
 [0x2102] = 0x0063, -- DOUBLE-STRUCK CAPITAL C
 [0x2103] = {0x00B0, 0x0063}, -- DEGREE CELSIUS
 [0x2104] = {status="disallowed"}, -- CENTRE LINE SYMBOL
 [0x2105] = {status="disallowed"}, -- CARE OF
 [0x2106] = {status="disallowed"}, -- CADA UNA
 [0x2107] = 0x025B, -- EULER CONSTANT
 [0x2108] = {status="disallowed"}, -- SCRUPLE
 [0x2109] = {0x00B0, 0x0066}, -- DEGREE FAHRENHEIT
 [0x210A] = 0x0067, -- SCRIPT SMALL G
 [0x210F] = 0x0127, -- PLANCK CONSTANT OVER TWO PI
 -- SCRIPT CAPITAL H..PLANCK CONSTANT
 [0x210B] = 0x0068,
 [0x210C] = 0x0068,
 [0x210D] = 0x0068,
 [0x210E] = 0x0068,
 -- SCRIPT CAPITAL I..BLACK-LETTER CAPITAL I
 [0x2110] = 0x0069,
 [0x2111] = 0x0069,
 [0x2114] = {status="disallowed"}, -- L B BAR SYMBOL
 [0x2115] = 0x006E, -- DOUBLE-STRUCK CAPITAL N
 [0x2116] = {0x006E, 0x006F}, -- NUMERO SIGN
 -- SCRIPT CAPITAL L..SCRIPT SMALL L
 [0x2112] = 0x006C,
 [0x2113] = 0x006C,
 [0x2119] = 0x0070, -- DOUBLE-STRUCK CAPITAL P
 [0x211A] = 0x0071, -- DOUBLE-STRUCK CAPITAL Q
 -- SOUND RECORDING COPYRIGHT..SCRIPT CAPITAL P
 [0x2117] = {status="disallowed"},
 [0x2118] = {status="disallowed"},
 -- SCRIPT CAPITAL R..DOUBLE-STRUCK CAPITAL R
 [0x211B] = 0x0072,
 [0x211C] = 0x0072,
 [0x211D] = 0x0072,
 [0x2120] = {0x0073, 0x006D}, -- SERVICE MARK
 [0x2121] = {0x0074, 0x0065, 0x006C}, -- TELEPHONE SIGN
 [0x2122] = {0x0074, 0x006D}, -- TRADE MARK SIGN
 [0x2123] = {status="disallowed"}, -- VERSICLE
 [0x2124] = 0x007A, -- DOUBLE-STRUCK CAPITAL Z
 [0x2125] = {status="disallowed"}, -- OUNCE SIGN
 [0x2126] = 0x03C9, -- OHM SIGN
 [0x2127] = {status="disallowed"}, -- INVERTED OHM SIGN
 [0x2128] = 0x007A, -- BLACK-LETTER CAPITAL Z
 [0x2129] = {status="disallowed"}, -- TURNED GREEK SMALL LETTER IOTA
 [0x212A] = 0x006B, -- KELVIN SIGN
 [0x212B] = 0x00E5, -- ANGSTROM SIGN
 [0x212C] = 0x0062, -- SCRIPT CAPITAL B
 [0x212D] = 0x0063, -- BLACK-LETTER CAPITAL C
 [0x212E] = {status="disallowed"}, -- ESTIMATED SYMBOL
 -- PRESCRIPTION TAKE..RESPONSE
 [0x211E] = {status="disallowed"},
 [0x211F] = {status="disallowed"},
 [0x2131] = 0x0066, -- SCRIPT CAPITAL F
 [0x2132] = {status="disallowed"}, -- TURNED CAPITAL F
 [0x2133] = 0x006D, -- SCRIPT CAPITAL M
 [0x2134] = 0x006F, -- SCRIPT SMALL O
 [0x2135] = 0x05D0, -- ALEF SYMBOL
 [0x2136] = 0x05D1, -- BET SYMBOL
 [0x2137] = 0x05D2, -- GIMEL SYMBOL
 [0x2138] = 0x05D3, -- DALET SYMBOL
 [0x2139] = 0x0069, -- INFORMATION SOURCE
 [0x213A] = {status="disallowed"}, -- ROTATED CAPITAL Q
 [0x213B] = {0x0066, 0x0061, 0x0078}, -- FACSIMILE SIGN
 [0x213C] = 0x03C0, -- DOUBLE-STRUCK SMALL PI
 -- SCRIPT SMALL E..SCRIPT CAPITAL E
 [0x212F] = 0x0065,
 [0x2130] = 0x0065,
 [0x213F] = 0x03C0, -- DOUBLE-STRUCK CAPITAL PI
 [0x2140] = 0x2211, -- DOUBLE-STRUCK N-ARY SUMMATION
 -- DOUBLE-STRUCK SMALL GAMMA..DOUBLE-STRUCK CAPITAL GAMMA
 [0x213D] = 0x03B3,
 [0x213E] = 0x03B3,
 -- TURNED SANS-SERIF CAPITAL G..TURNED SANS-SERIF CAPITAL Y
 [0x2141] = {status="disallowed"},
 [0x2142] = {status="disallowed"},
 [0x2143] = {status="disallowed"},
 [0x2144] = {status="disallowed"},
 [0x2147] = 0x0065, -- DOUBLE-STRUCK ITALIC SMALL E
 [0x2148] = 0x0069, -- DOUBLE-STRUCK ITALIC SMALL I
 [0x2149] = 0x006A, -- DOUBLE-STRUCK ITALIC SMALL J
 -- DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL D
 [0x2145] = 0x0064,
 [0x2146] = 0x0064,
 [0x214C] = {status="disallowed"}, -- PER SIGN
 [0x214D] = {status="disallowed"}, -- AKTIESELSKAB
 [0x214E] = {status="valid"}, -- TURNED SMALL F
 [0x214F] = {status="disallowed"}, -- SYMBOL FOR SAMARITAN SOURCE
 [0x2150] = {0x0031, 0x2044, 0x0037}, -- VULGAR FRACTION ONE SEVENTH
 [0x2151] = {0x0031, 0x2044, 0x0039}, -- VULGAR FRACTION ONE NINTH
 [0x2152] = {0x0031, 0x2044, 0x0031, 0x0030}, -- VULGAR FRACTION ONE TENTH
 [0x2153] = {0x0031, 0x2044, 0x0033}, -- VULGAR FRACTION ONE THIRD
 [0x2154] = {0x0032, 0x2044, 0x0033}, -- VULGAR FRACTION TWO THIRDS
 [0x2155] = {0x0031, 0x2044, 0x0035}, -- VULGAR FRACTION ONE FIFTH
 [0x2156] = {0x0032, 0x2044, 0x0035}, -- VULGAR FRACTION TWO FIFTHS
 [0x2157] = {0x0033, 0x2044, 0x0035}, -- VULGAR FRACTION THREE FIFTHS
 [0x2158] = {0x0034, 0x2044, 0x0035}, -- VULGAR FRACTION FOUR FIFTHS
 [0x2159] = {0x0031, 0x2044, 0x0036}, -- VULGAR FRACTION ONE SIXTH
 [0x215A] = {0x0035, 0x2044, 0x0036}, -- VULGAR FRACTION FIVE SIXTHS
 [0x215B] = {0x0031, 0x2044, 0x0038}, -- VULGAR FRACTION ONE EIGHTH
 [0x215C] = {0x0033, 0x2044, 0x0038}, -- VULGAR FRACTION THREE EIGHTHS
 [0x215D] = {0x0035, 0x2044, 0x0038}, -- VULGAR FRACTION FIVE EIGHTHS
 [0x215E] = {0x0037, 0x2044, 0x0038}, -- VULGAR FRACTION SEVEN EIGHTHS
 [0x215F] = {0x0031, 0x2044}, -- FRACTION NUMERATOR ONE
 [0x2160] = 0x0069, -- ROMAN NUMERAL ONE
 [0x2161] = {0x0069, 0x0069}, -- ROMAN NUMERAL TWO
 [0x2162] = {0x0069, 0x0069, 0x0069}, -- ROMAN NUMERAL THREE
 [0x2163] = {0x0069, 0x0076}, -- ROMAN NUMERAL FOUR
 [0x2164] = 0x0076, -- ROMAN NUMERAL FIVE
 [0x2165] = {0x0076, 0x0069}, -- ROMAN NUMERAL SIX
 [0x2166] = {0x0076, 0x0069, 0x0069}, -- ROMAN NUMERAL SEVEN
 [0x2167] = {0x0076, 0x0069, 0x0069, 0x0069}, -- ROMAN NUMERAL EIGHT
 [0x2168] = {0x0069, 0x0078}, -- ROMAN NUMERAL NINE
 [0x2169] = 0x0078, -- ROMAN NUMERAL TEN
 [0x216A] = {0x0078, 0x0069}, -- ROMAN NUMERAL ELEVEN
 [0x216B] = {0x0078, 0x0069, 0x0069}, -- ROMAN NUMERAL TWELVE
 [0x216C] = 0x006C, -- ROMAN NUMERAL FIFTY
 [0x216D] = 0x0063, -- ROMAN NUMERAL ONE HUNDRED
 [0x216E] = 0x0064, -- ROMAN NUMERAL FIVE HUNDRED
 [0x216F] = 0x006D, -- ROMAN NUMERAL ONE THOUSAND
 [0x2170] = 0x0069, -- SMALL ROMAN NUMERAL ONE
 [0x2171] = {0x0069, 0x0069}, -- SMALL ROMAN NUMERAL TWO
 [0x2172] = {0x0069, 0x0069, 0x0069}, -- SMALL ROMAN NUMERAL THREE
 [0x2173] = {0x0069, 0x0076}, -- SMALL ROMAN NUMERAL FOUR
 [0x2174] = 0x0076, -- SMALL ROMAN NUMERAL FIVE
 [0x2175] = {0x0076, 0x0069}, -- SMALL ROMAN NUMERAL SIX
 [0x2176] = {0x0076, 0x0069, 0x0069}, -- SMALL ROMAN NUMERAL SEVEN
 [0x2177] = {0x0076, 0x0069, 0x0069, 0x0069}, -- SMALL ROMAN NUMERAL EIGHT
 [0x2178] = {0x0069, 0x0078}, -- SMALL ROMAN NUMERAL NINE
 [0x2179] = 0x0078, -- SMALL ROMAN NUMERAL TEN
 [0x217A] = {0x0078, 0x0069}, -- SMALL ROMAN NUMERAL ELEVEN
 [0x217B] = {0x0078, 0x0069, 0x0069}, -- SMALL ROMAN NUMERAL TWELVE
 [0x217C] = 0x006C, -- SMALL ROMAN NUMERAL FIFTY
 [0x217D] = 0x0063, -- SMALL ROMAN NUMERAL ONE HUNDRED
 [0x217E] = 0x0064, -- SMALL ROMAN NUMERAL FIVE HUNDRED
 [0x217F] = 0x006D, -- SMALL ROMAN NUMERAL ONE THOUSAND
 -- PROPERTY LINE..TURNED AMPERSAND
 [0x214A] = {status="disallowed"},
 [0x214B] = {status="disallowed"},
 [0x2183] = {status="disallowed"}, -- ROMAN NUMERAL REVERSED ONE HUNDRED
 [0x2184] = {status="valid"}, -- LATIN SMALL LETTER REVERSED C
 -- ROMAN NUMERAL ONE THOUSAND C D..ROMAN NUMERAL TEN THOUSAND
 [0x2180] = {status="disallowed"},
 [0x2181] = {status="disallowed"},
 [0x2182] = {status="disallowed"},
 [0x2189] = {0x0030, 0x2044, 0x0033}, -- VULGAR FRACTION ZERO THIRDS
 -- ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
 [0x2185] = {status="disallowed"},
 [0x2186] = {status="disallowed"},
 [0x2187] = {status="disallowed"},
 [0x2188] = {status="disallowed"},
 -- TURNED DIGIT TWO..TURNED DIGIT THREE
 [0x218A] = {status="disallowed"},
 [0x218B] = {status="disallowed"},
 -- NA   <reserved-218C>..<reserved-218F>
 [0x218C] = {status="disallowed"},
 [0x218D] = {status="disallowed"},
 [0x218E] = {status="disallowed"},
 [0x218F] = {status="disallowed"},
 [0x222C] = {0x222B, 0x222B}, -- DOUBLE INTEGRAL
 [0x222D] = {0x222B, 0x222B, 0x222B}, -- TRIPLE INTEGRAL
 [0x222E] = {status="disallowed"}, -- CONTOUR INTEGRAL
 [0x222F] = {0x222E, 0x222E}, -- SURFACE INTEGRAL
 [0x2230] = {0x222E, 0x222E, 0x222E}, -- VOLUME INTEGRAL
 [0x2260] = {status="disallowed"}, -- NOT EQUAL TO
 -- NOT LESS-THAN..NOT GREATER-THAN
 [0x226E] = {status="disallowed"},
 [0x226F] = {status="disallowed"},
 [0x2300] = {status="disallowed"}, -- DIAMETER SIGN
 [0x2301] = {status="disallowed"}, -- ELECTRIC ARROW
 [0x2329] = 0x3008, -- LEFT-POINTING ANGLE BRACKET
 [0x232A] = 0x3009, -- RIGHT-POINTING ANGLE BRACKET
 [0x237B] = {status="disallowed"}, -- NOT CHECK MARK
 [0x237C] = {status="disallowed"}, -- RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
 [0x23E8] = {status="disallowed"}, -- DECIMAL EXPONENT SYMBOL
 [0x23FF] = {status="disallowed"}, -- OBSERVER EYE SYMBOL
 [0x2460] = 0x0031, -- CIRCLED DIGIT ONE
 [0x2461] = 0x0032, -- CIRCLED DIGIT TWO
 [0x2462] = 0x0033, -- CIRCLED DIGIT THREE
 [0x2463] = 0x0034, -- CIRCLED DIGIT FOUR
 [0x2464] = 0x0035, -- CIRCLED DIGIT FIVE
 [0x2465] = 0x0036, -- CIRCLED DIGIT SIX
 [0x2466] = 0x0037, -- CIRCLED DIGIT SEVEN
 [0x2467] = 0x0038, -- CIRCLED DIGIT EIGHT
 [0x2468] = 0x0039, -- CIRCLED DIGIT NINE
 [0x2469] = {0x0031, 0x0030}, -- CIRCLED NUMBER TEN
 [0x246A] = {0x0031, 0x0031}, -- CIRCLED NUMBER ELEVEN
 [0x246B] = {0x0031, 0x0032}, -- CIRCLED NUMBER TWELVE
 [0x246C] = {0x0031, 0x0033}, -- CIRCLED NUMBER THIRTEEN
 [0x246D] = {0x0031, 0x0034}, -- CIRCLED NUMBER FOURTEEN
 [0x246E] = {0x0031, 0x0035}, -- CIRCLED NUMBER FIFTEEN
 [0x246F] = {0x0031, 0x0036}, -- CIRCLED NUMBER SIXTEEN
 [0x2470] = {0x0031, 0x0037}, -- CIRCLED NUMBER SEVENTEEN
 [0x2471] = {0x0031, 0x0038}, -- CIRCLED NUMBER EIGHTEEN
 [0x2472] = {0x0031, 0x0039}, -- CIRCLED NUMBER NINETEEN
 [0x2473] = {0x0032, 0x0030}, -- CIRCLED NUMBER TWENTY
 [0x2474] = {status="disallowed"}, -- PARENTHESIZED DIGIT ONE
 [0x2475] = {status="disallowed"}, -- PARENTHESIZED DIGIT TWO
 [0x2476] = {status="disallowed"}, -- PARENTHESIZED DIGIT THREE
 [0x2477] = {status="disallowed"}, -- PARENTHESIZED DIGIT FOUR
 [0x2478] = {status="disallowed"}, -- PARENTHESIZED DIGIT FIVE
 [0x2479] = {status="disallowed"}, -- PARENTHESIZED DIGIT SIX
 [0x247A] = {status="disallowed"}, -- PARENTHESIZED DIGIT SEVEN
 [0x247B] = {status="disallowed"}, -- PARENTHESIZED DIGIT EIGHT
 [0x247C] = {status="disallowed"}, -- PARENTHESIZED DIGIT NINE
 [0x247D] = {status="disallowed"}, -- PARENTHESIZED NUMBER TEN
 [0x247E] = {status="disallowed"}, -- PARENTHESIZED NUMBER ELEVEN
 [0x247F] = {status="disallowed"}, -- PARENTHESIZED NUMBER TWELVE
 [0x2480] = {status="disallowed"}, -- PARENTHESIZED NUMBER THIRTEEN
 [0x2481] = {status="disallowed"}, -- PARENTHESIZED NUMBER FOURTEEN
 [0x2482] = {status="disallowed"}, -- PARENTHESIZED NUMBER FIFTEEN
 [0x2483] = {status="disallowed"}, -- PARENTHESIZED NUMBER SIXTEEN
 [0x2484] = {status="disallowed"}, -- PARENTHESIZED NUMBER SEVENTEEN
 [0x2485] = {status="disallowed"}, -- PARENTHESIZED NUMBER EIGHTEEN
 [0x2486] = {status="disallowed"}, -- PARENTHESIZED NUMBER NINETEEN
 [0x2487] = {status="disallowed"}, -- PARENTHESIZED NUMBER TWENTY
 [0x249C] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER A
 [0x249D] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER B
 [0x249E] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER C
 [0x249F] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER D
 [0x24A0] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER E
 [0x24A1] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER F
 [0x24A2] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER G
 [0x24A3] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER H
 [0x24A4] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER I
 [0x24A5] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER J
 [0x24A6] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER K
 [0x24A7] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER L
 [0x24A8] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER M
 [0x24A9] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER N
 [0x24AA] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER O
 [0x24AB] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER P
 [0x24AC] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER Q
 [0x24AD] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER R
 [0x24AE] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER S
 [0x24AF] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER T
 [0x24B0] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER U
 [0x24B1] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER V
 [0x24B2] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER W
 [0x24B3] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER X
 [0x24B4] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER Y
 [0x24B5] = {status="disallowed"}, -- PARENTHESIZED LATIN SMALL LETTER Z
 [0x24B6] = 0x0061, -- CIRCLED LATIN CAPITAL LETTER A
 [0x24B7] = 0x0062, -- CIRCLED LATIN CAPITAL LETTER B
 [0x24B8] = 0x0063, -- CIRCLED LATIN CAPITAL LETTER C
 [0x24B9] = 0x0064, -- CIRCLED LATIN CAPITAL LETTER D
 [0x24BA] = 0x0065, -- CIRCLED LATIN CAPITAL LETTER E
 [0x24BB] = 0x0066, -- CIRCLED LATIN CAPITAL LETTER F
 [0x24BC] = 0x0067, -- CIRCLED LATIN CAPITAL LETTER G
 [0x24BD] = 0x0068, -- CIRCLED LATIN CAPITAL LETTER H
 [0x24BE] = 0x0069, -- CIRCLED LATIN CAPITAL LETTER I
 [0x24BF] = 0x006A, -- CIRCLED LATIN CAPITAL LETTER J
 [0x24C0] = 0x006B, -- CIRCLED LATIN CAPITAL LETTER K
 [0x24C1] = 0x006C, -- CIRCLED LATIN CAPITAL LETTER L
 [0x24C2] = 0x006D, -- CIRCLED LATIN CAPITAL LETTER M
 [0x24C3] = 0x006E, -- CIRCLED LATIN CAPITAL LETTER N
 [0x24C4] = 0x006F, -- CIRCLED LATIN CAPITAL LETTER O
 [0x24C5] = 0x0070, -- CIRCLED LATIN CAPITAL LETTER P
 [0x24C6] = 0x0071, -- CIRCLED LATIN CAPITAL LETTER Q
 [0x24C7] = 0x0072, -- CIRCLED LATIN CAPITAL LETTER R
 [0x24C8] = 0x0073, -- CIRCLED LATIN CAPITAL LETTER S
 [0x24C9] = 0x0074, -- CIRCLED LATIN CAPITAL LETTER T
 [0x24CA] = 0x0075, -- CIRCLED LATIN CAPITAL LETTER U
 [0x24CB] = 0x0076, -- CIRCLED LATIN CAPITAL LETTER V
 [0x24CC] = 0x0077, -- CIRCLED LATIN CAPITAL LETTER W
 [0x24CD] = 0x0078, -- CIRCLED LATIN CAPITAL LETTER X
 [0x24CE] = 0x0079, -- CIRCLED LATIN CAPITAL LETTER Y
 [0x24CF] = 0x007A, -- CIRCLED LATIN CAPITAL LETTER Z
 [0x24D0] = 0x0061, -- CIRCLED LATIN SMALL LETTER A
 [0x24D1] = 0x0062, -- CIRCLED LATIN SMALL LETTER B
 [0x24D2] = 0x0063, -- CIRCLED LATIN SMALL LETTER C
 [0x24D3] = 0x0064, -- CIRCLED LATIN SMALL LETTER D
 [0x24D4] = 0x0065, -- CIRCLED LATIN SMALL LETTER E
 [0x24D5] = 0x0066, -- CIRCLED LATIN SMALL LETTER F
 [0x24D6] = 0x0067, -- CIRCLED LATIN SMALL LETTER G
 [0x24D7] = 0x0068, -- CIRCLED LATIN SMALL LETTER H
 [0x24D8] = 0x0069, -- CIRCLED LATIN SMALL LETTER I
 [0x24D9] = 0x006A, -- CIRCLED LATIN SMALL LETTER J
 [0x24DA] = 0x006B, -- CIRCLED LATIN SMALL LETTER K
 [0x24DB] = 0x006C, -- CIRCLED LATIN SMALL LETTER L
 [0x24DC] = 0x006D, -- CIRCLED LATIN SMALL LETTER M
 [0x24DD] = 0x006E, -- CIRCLED LATIN SMALL LETTER N
 [0x24DE] = 0x006F, -- CIRCLED LATIN SMALL LETTER O
 [0x24DF] = 0x0070, -- CIRCLED LATIN SMALL LETTER P
 [0x24E0] = 0x0071, -- CIRCLED LATIN SMALL LETTER Q
 [0x24E1] = 0x0072, -- CIRCLED LATIN SMALL LETTER R
 [0x24E2] = 0x0073, -- CIRCLED LATIN SMALL LETTER S
 [0x24E3] = 0x0074, -- CIRCLED LATIN SMALL LETTER T
 [0x24E4] = 0x0075, -- CIRCLED LATIN SMALL LETTER U
 [0x24E5] = 0x0076, -- CIRCLED LATIN SMALL LETTER V
 [0x24E6] = 0x0077, -- CIRCLED LATIN SMALL LETTER W
 [0x24E7] = 0x0078, -- CIRCLED LATIN SMALL LETTER X
 [0x24E8] = 0x0079, -- CIRCLED LATIN SMALL LETTER Y
 [0x24E9] = 0x007A, -- CIRCLED LATIN SMALL LETTER Z
 [0x24EA] = 0x0030, -- CIRCLED DIGIT ZERO
 [0x24FF] = {status="disallowed"}, -- NEGATIVE CIRCLED DIGIT ZERO
 [0x2618] = {status="disallowed"}, -- SHAMROCK
 [0x2619] = {status="disallowed"}, -- REVERSED ROTATED FLORAL HEART BULLET
 [0x269D] = {status="disallowed"}, -- OUTLINED WHITE STAR
 [0x26B2] = {status="disallowed"}, -- NEUTER
 [0x26CE] = {status="disallowed"}, -- OPHIUCHUS
 [0x26E2] = {status="disallowed"}, -- ASTRONOMICAL SYMBOL FOR URANUS
 [0x26E3] = {status="disallowed"}, -- HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE
 [0x2700] = {status="disallowed"}, -- BLACK SAFETY SCISSORS
 [0x2705] = {status="disallowed"}, -- WHITE HEAVY CHECK MARK
 -- UPPER BLADE SCISSORS..WHITE SCISSORS
 [0x2701] = {status="disallowed"},
 [0x2702] = {status="disallowed"},
 [0x2703] = {status="disallowed"},
 [0x2704] = {status="disallowed"},
 [0x2728] = {status="disallowed"}, -- SPARKLES
 [0x274C] = {status="disallowed"}, -- CROSS MARK
 [0x274D] = {status="disallowed"}, -- SHADOWED WHITE CIRCLE
 [0x274E] = {status="disallowed"}, -- NEGATIVE SQUARED CROSS MARK
 [0x2756] = {status="disallowed"}, -- BLACK DIAMOND MINUS WHITE X
 [0x2757] = {status="disallowed"}, -- HEAVY EXCLAMATION MARK SYMBOL
 [0x27B0] = {status="disallowed"}, -- CURLY LOOP
 [0x27BF] = {status="disallowed"}, -- DOUBLE CURLY LOOP
 [0x27CB] = {status="disallowed"}, -- MATHEMATICAL RISING DIAGONAL
 [0x27CC] = {status="disallowed"}, -- LONG DIVISION
 [0x27CD] = {status="disallowed"}, -- MATHEMATICAL FALLING DIAGONAL
 [0x2A0C] = {0x222B, 0x222B, 0x222B, 0x222B}, -- QUADRUPLE INTEGRAL OPERATOR
 [0x2A74] = {status="disallowed"}, -- DOUBLE COLON EQUAL
 [0x2A75] = {status="disallowed"}, -- TWO CONSECUTIVE EQUALS SIGNS
 [0x2A76] = {status="disallowed"}, -- THREE CONSECUTIVE EQUALS SIGNS
 [0x2ADC] = {0x2ADD, 0x0338}, -- FORKING
 -- NA   <reserved-2B74>..<reserved-2B75>
 [0x2B74] = {status="disallowed"},
 [0x2B75] = {status="disallowed"},
 -- NA   <reserved-2B96>..<reserved-2B97>
 [0x2B96] = {status="disallowed"},
 [0x2B97] = {status="disallowed"},
 -- NA   <reserved-2BBA>..<reserved-2BBC>
 [0x2BBA] = {status="disallowed"},
 [0x2BBB] = {status="disallowed"},
 [0x2BBC] = {status="disallowed"},
 [0x2BC9] = {status="disallowed"}, -- NA   <reserved-2BC9>
 [0x2BD2] = {status="disallowed"}, -- GROUP MARK
 -- LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
 [0x2BEC] = {status="disallowed"},
 [0x2BED] = {status="disallowed"},
 [0x2BEE] = {status="disallowed"},
 [0x2BEF] = {status="disallowed"},
 [0x2C00] = 0x2C30, -- GLAGOLITIC CAPITAL LETTER AZU
 [0x2C01] = 0x2C31, -- GLAGOLITIC CAPITAL LETTER BUKY
 [0x2C02] = 0x2C32, -- GLAGOLITIC CAPITAL LETTER VEDE
 [0x2C03] = 0x2C33, -- GLAGOLITIC CAPITAL LETTER GLAGOLI
 [0x2C04] = 0x2C34, -- GLAGOLITIC CAPITAL LETTER DOBRO
 [0x2C05] = 0x2C35, -- GLAGOLITIC CAPITAL LETTER YESTU
 [0x2C06] = 0x2C36, -- GLAGOLITIC CAPITAL LETTER ZHIVETE
 [0x2C07] = 0x2C37, -- GLAGOLITIC CAPITAL LETTER DZELO
 [0x2C08] = 0x2C38, -- GLAGOLITIC CAPITAL LETTER ZEMLJA
 [0x2C09] = 0x2C39, -- GLAGOLITIC CAPITAL LETTER IZHE
 [0x2C0A] = 0x2C3A, -- GLAGOLITIC CAPITAL LETTER INITIAL IZHE
 [0x2C0B] = 0x2C3B, -- GLAGOLITIC CAPITAL LETTER I
 [0x2C0C] = 0x2C3C, -- GLAGOLITIC CAPITAL LETTER DJERVI
 [0x2C0D] = 0x2C3D, -- GLAGOLITIC CAPITAL LETTER KAKO
 [0x2C0E] = 0x2C3E, -- GLAGOLITIC CAPITAL LETTER LJUDIJE
 [0x2C0F] = 0x2C3F, -- GLAGOLITIC CAPITAL LETTER MYSLITE
 [0x2C10] = 0x2C40, -- GLAGOLITIC CAPITAL LETTER NASHI
 [0x2C11] = 0x2C41, -- GLAGOLITIC CAPITAL LETTER ONU
 [0x2C12] = 0x2C42, -- GLAGOLITIC CAPITAL LETTER POKOJI
 [0x2C13] = 0x2C43, -- GLAGOLITIC CAPITAL LETTER RITSI
 [0x2C14] = 0x2C44, -- GLAGOLITIC CAPITAL LETTER SLOVO
 [0x2C15] = 0x2C45, -- GLAGOLITIC CAPITAL LETTER TVRIDO
 [0x2C16] = 0x2C46, -- GLAGOLITIC CAPITAL LETTER UKU
 [0x2C17] = 0x2C47, -- GLAGOLITIC CAPITAL LETTER FRITU
 [0x2C18] = 0x2C48, -- GLAGOLITIC CAPITAL LETTER HERU
 [0x2C19] = 0x2C49, -- GLAGOLITIC CAPITAL LETTER OTU
 [0x2C1A] = 0x2C4A, -- GLAGOLITIC CAPITAL LETTER PE
 [0x2C1B] = 0x2C4B, -- GLAGOLITIC CAPITAL LETTER SHTA
 [0x2C1C] = 0x2C4C, -- GLAGOLITIC CAPITAL LETTER TSI
 [0x2C1D] = 0x2C4D, -- GLAGOLITIC CAPITAL LETTER CHRIVI
 [0x2C1E] = 0x2C4E, -- GLAGOLITIC CAPITAL LETTER SHA
 [0x2C1F] = 0x2C4F, -- GLAGOLITIC CAPITAL LETTER YERU
 [0x2C20] = 0x2C50, -- GLAGOLITIC CAPITAL LETTER YERI
 [0x2C21] = 0x2C51, -- GLAGOLITIC CAPITAL LETTER YATI
 [0x2C22] = 0x2C52, -- GLAGOLITIC CAPITAL LETTER SPIDERY HA
 [0x2C23] = 0x2C53, -- GLAGOLITIC CAPITAL LETTER YU
 [0x2C24] = 0x2C54, -- GLAGOLITIC CAPITAL LETTER SMALL YUS
 [0x2C25] = 0x2C55, -- GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
 [0x2C26] = 0x2C56, -- GLAGOLITIC CAPITAL LETTER YO
 [0x2C27] = 0x2C57, -- GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
 [0x2C28] = 0x2C58, -- GLAGOLITIC CAPITAL LETTER BIG YUS
 [0x2C29] = 0x2C59, -- GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
 [0x2C2A] = 0x2C5A, -- GLAGOLITIC CAPITAL LETTER FITA
 [0x2C2B] = 0x2C5B, -- GLAGOLITIC CAPITAL LETTER IZHITSA
 [0x2C2C] = 0x2C5C, -- GLAGOLITIC CAPITAL LETTER SHTAPIC
 [0x2C2D] = 0x2C5D, -- GLAGOLITIC CAPITAL LETTER TROKUTASTI A
 [0x2C2E] = 0x2C5E, -- GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
 [0x2C2F] = {status="disallowed"}, -- NA   <reserved-2C2F>
 [0x2C5F] = {status="disallowed"}, -- NA   <reserved-2C5F>
 [0x2C60] = 0x2C61, -- LATIN CAPITAL LETTER L WITH DOUBLE BAR
 [0x2C61] = {status="valid"}, -- LATIN SMALL LETTER L WITH DOUBLE BAR
 [0x2C62] = 0x026B, -- LATIN CAPITAL LETTER L WITH MIDDLE TILDE
 [0x2C63] = 0x1D7D, -- LATIN CAPITAL LETTER P WITH STROKE
 [0x2C64] = 0x027D, -- LATIN CAPITAL LETTER R WITH TAIL
 [0x2C67] = 0x2C68, -- LATIN CAPITAL LETTER H WITH DESCENDER
 [0x2C68] = {status="valid"}, -- LATIN SMALL LETTER H WITH DESCENDER
 [0x2C69] = 0x2C6A, -- LATIN CAPITAL LETTER K WITH DESCENDER
 [0x2C6A] = {status="valid"}, -- LATIN SMALL LETTER K WITH DESCENDER
 [0x2C6B] = 0x2C6C, -- LATIN CAPITAL LETTER Z WITH DESCENDER
 [0x2C6C] = {status="valid"}, -- LATIN SMALL LETTER Z WITH DESCENDER
 [0x2C6D] = 0x0251, -- LATIN CAPITAL LETTER ALPHA
 [0x2C6E] = 0x0271, -- LATIN CAPITAL LETTER M WITH HOOK
 [0x2C6F] = 0x0250, -- LATIN CAPITAL LETTER TURNED A
 [0x2C70] = 0x0252, -- LATIN CAPITAL LETTER TURNED ALPHA
 [0x2C71] = {status="valid"}, -- LATIN SMALL LETTER V WITH RIGHT HOOK
 [0x2C72] = 0x2C73, -- LATIN CAPITAL LETTER W WITH HOOK
 [0x2C73] = {status="valid"}, -- LATIN SMALL LETTER W WITH HOOK
 [0x2C74] = {status="valid"}, -- LATIN SMALL LETTER V WITH CURL
 [0x2C75] = 0x2C76, -- LATIN CAPITAL LETTER HALF H
 -- LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
 [0x2C65] = {status="valid"},
 [0x2C66] = {status="valid"},
 [0x2C7C] = 0x006A, -- LATIN SUBSCRIPT SMALL LETTER J
 [0x2C7D] = 0x0076, -- MODIFIER LETTER CAPITAL V
 [0x2C7E] = 0x023F, -- LATIN CAPITAL LETTER S WITH SWASH TAIL
 [0x2C7F] = 0x0240, -- LATIN CAPITAL LETTER Z WITH SWASH TAIL
 [0x2C80] = 0x2C81, -- COPTIC CAPITAL LETTER ALFA
 [0x2C81] = {status="valid"}, -- COPTIC SMALL LETTER ALFA
 [0x2C82] = 0x2C83, -- COPTIC CAPITAL LETTER VIDA
 [0x2C83] = {status="valid"}, -- COPTIC SMALL LETTER VIDA
 [0x2C84] = 0x2C85, -- COPTIC CAPITAL LETTER GAMMA
 [0x2C85] = {status="valid"}, -- COPTIC SMALL LETTER GAMMA
 [0x2C86] = 0x2C87, -- COPTIC CAPITAL LETTER DALDA
 [0x2C87] = {status="valid"}, -- COPTIC SMALL LETTER DALDA
 [0x2C88] = 0x2C89, -- COPTIC CAPITAL LETTER EIE
 [0x2C89] = {status="valid"}, -- COPTIC SMALL LETTER EIE
 [0x2C8A] = 0x2C8B, -- COPTIC CAPITAL LETTER SOU
 [0x2C8B] = {status="valid"}, -- COPTIC SMALL LETTER SOU
 [0x2C8C] = 0x2C8D, -- COPTIC CAPITAL LETTER ZATA
 [0x2C8D] = {status="valid"}, -- COPTIC SMALL LETTER ZATA
 [0x2C8E] = 0x2C8F, -- COPTIC CAPITAL LETTER HATE
 [0x2C8F] = {status="valid"}, -- COPTIC SMALL LETTER HATE
 [0x2C90] = 0x2C91, -- COPTIC CAPITAL LETTER THETHE
 [0x2C91] = {status="valid"}, -- COPTIC SMALL LETTER THETHE
 [0x2C92] = 0x2C93, -- COPTIC CAPITAL LETTER IAUDA
 [0x2C93] = {status="valid"}, -- COPTIC SMALL LETTER IAUDA
 [0x2C94] = 0x2C95, -- COPTIC CAPITAL LETTER KAPA
 [0x2C95] = {status="valid"}, -- COPTIC SMALL LETTER KAPA
 [0x2C96] = 0x2C97, -- COPTIC CAPITAL LETTER LAULA
 [0x2C97] = {status="valid"}, -- COPTIC SMALL LETTER LAULA
 [0x2C98] = 0x2C99, -- COPTIC CAPITAL LETTER MI
 [0x2C99] = {status="valid"}, -- COPTIC SMALL LETTER MI
 [0x2C9A] = 0x2C9B, -- COPTIC CAPITAL LETTER NI
 [0x2C9B] = {status="valid"}, -- COPTIC SMALL LETTER NI
 [0x2C9C] = 0x2C9D, -- COPTIC CAPITAL LETTER KSI
 [0x2C9D] = {status="valid"}, -- COPTIC SMALL LETTER KSI
 [0x2C9E] = 0x2C9F, -- COPTIC CAPITAL LETTER O
 [0x2C9F] = {status="valid"}, -- COPTIC SMALL LETTER O
 [0x2CA0] = 0x2CA1, -- COPTIC CAPITAL LETTER PI
 [0x2CA1] = {status="valid"}, -- COPTIC SMALL LETTER PI
 [0x2CA2] = 0x2CA3, -- COPTIC CAPITAL LETTER RO
 [0x2CA3] = {status="valid"}, -- COPTIC SMALL LETTER RO
 [0x2CA4] = 0x2CA5, -- COPTIC CAPITAL LETTER SIMA
 [0x2CA5] = {status="valid"}, -- COPTIC SMALL LETTER SIMA
 [0x2CA6] = 0x2CA7, -- COPTIC CAPITAL LETTER TAU
 [0x2CA7] = {status="valid"}, -- COPTIC SMALL LETTER TAU
 [0x2CA8] = 0x2CA9, -- COPTIC CAPITAL LETTER UA
 [0x2CA9] = {status="valid"}, -- COPTIC SMALL LETTER UA
 [0x2CAA] = 0x2CAB, -- COPTIC CAPITAL LETTER FI
 [0x2CAB] = {status="valid"}, -- COPTIC SMALL LETTER FI
 [0x2CAC] = 0x2CAD, -- COPTIC CAPITAL LETTER KHI
 [0x2CAD] = {status="valid"}, -- COPTIC SMALL LETTER KHI
 [0x2CAE] = 0x2CAF, -- COPTIC CAPITAL LETTER PSI
 [0x2CAF] = {status="valid"}, -- COPTIC SMALL LETTER PSI
 [0x2CB0] = 0x2CB1, -- COPTIC CAPITAL LETTER OOU
 [0x2CB1] = {status="valid"}, -- COPTIC SMALL LETTER OOU
 [0x2CB2] = 0x2CB3, -- COPTIC CAPITAL LETTER DIALECT-P ALEF
 [0x2CB3] = {status="valid"}, -- COPTIC SMALL LETTER DIALECT-P ALEF
 [0x2CB4] = 0x2CB5, -- COPTIC CAPITAL LETTER OLD COPTIC AIN
 [0x2CB5] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC AIN
 [0x2CB6] = 0x2CB7, -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
 [0x2CB7] = {status="valid"}, -- COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
 [0x2CB8] = 0x2CB9, -- COPTIC CAPITAL LETTER DIALECT-P KAPA
 [0x2CB9] = {status="valid"}, -- COPTIC SMALL LETTER DIALECT-P KAPA
 [0x2CBA] = 0x2CBB, -- COPTIC CAPITAL LETTER DIALECT-P NI
 [0x2CBB] = {status="valid"}, -- COPTIC SMALL LETTER DIALECT-P NI
 [0x2CBC] = 0x2CBD, -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
 [0x2CBD] = {status="valid"}, -- COPTIC SMALL LETTER CRYPTOGRAMMIC NI
 [0x2CBE] = 0x2CBF, -- COPTIC CAPITAL LETTER OLD COPTIC OOU
 [0x2CBF] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC OOU
 [0x2CC0] = 0x2CC1, -- COPTIC CAPITAL LETTER SAMPI
 [0x2CC1] = {status="valid"}, -- COPTIC SMALL LETTER SAMPI
 [0x2CC2] = 0x2CC3, -- COPTIC CAPITAL LETTER CROSSED SHEI
 [0x2CC3] = {status="valid"}, -- COPTIC SMALL LETTER CROSSED SHEI
 [0x2CC4] = 0x2CC5, -- COPTIC CAPITAL LETTER OLD COPTIC SHEI
 [0x2CC5] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC SHEI
 [0x2CC6] = 0x2CC7, -- COPTIC CAPITAL LETTER OLD COPTIC ESH
 [0x2CC7] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC ESH
 [0x2CC8] = 0x2CC9, -- COPTIC CAPITAL LETTER AKHMIMIC KHEI
 [0x2CC9] = {status="valid"}, -- COPTIC SMALL LETTER AKHMIMIC KHEI
 [0x2CCA] = 0x2CCB, -- COPTIC CAPITAL LETTER DIALECT-P HORI
 [0x2CCB] = {status="valid"}, -- COPTIC SMALL LETTER DIALECT-P HORI
 [0x2CCC] = 0x2CCD, -- COPTIC CAPITAL LETTER OLD COPTIC HORI
 [0x2CCD] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC HORI
 [0x2CCE] = 0x2CCF, -- COPTIC CAPITAL LETTER OLD COPTIC HA
 [0x2CCF] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC HA
 [0x2CD0] = 0x2CD1, -- COPTIC CAPITAL LETTER L-SHAPED HA
 [0x2CD1] = {status="valid"}, -- COPTIC SMALL LETTER L-SHAPED HA
 [0x2CD2] = 0x2CD3, -- COPTIC CAPITAL LETTER OLD COPTIC HEI
 [0x2CD3] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC HEI
 [0x2CD4] = 0x2CD5, -- COPTIC CAPITAL LETTER OLD COPTIC HAT
 [0x2CD5] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC HAT
 [0x2CD6] = 0x2CD7, -- COPTIC CAPITAL LETTER OLD COPTIC GANGIA
 [0x2CD7] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC GANGIA
 [0x2CD8] = 0x2CD9, -- COPTIC CAPITAL LETTER OLD COPTIC DJA
 [0x2CD9] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC DJA
 [0x2CDA] = 0x2CDB, -- COPTIC CAPITAL LETTER OLD COPTIC SHIMA
 [0x2CDB] = {status="valid"}, -- COPTIC SMALL LETTER OLD COPTIC SHIMA
 [0x2CDC] = 0x2CDD, -- COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
 [0x2CDD] = {status="valid"}, -- COPTIC SMALL LETTER OLD NUBIAN SHIMA
 [0x2CDE] = 0x2CDF, -- COPTIC CAPITAL LETTER OLD NUBIAN NGI
 [0x2CDF] = {status="valid"}, -- COPTIC SMALL LETTER OLD NUBIAN NGI
 [0x2CE0] = 0x2CE1, -- COPTIC CAPITAL LETTER OLD NUBIAN NYI
 [0x2CE1] = {status="valid"}, -- COPTIC SMALL LETTER OLD NUBIAN NYI
 [0x2CE2] = 0x2CE3, -- COPTIC CAPITAL LETTER OLD NUBIAN WAU
 -- COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI
 [0x2CE3] = {status="valid"},
 [0x2CE4] = {status="valid"},
 [0x2CEB] = 0x2CEC, -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
 [0x2CEC] = {status="valid"}, -- COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
 [0x2CED] = 0x2CEE, -- COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
 [0x2CF2] = 0x2CF3, -- COPTIC CAPITAL LETTER BOHAIRIC KHEI
 [0x2CF3] = {status="valid"}, -- COPTIC SMALL LETTER BOHAIRIC KHEI
 -- COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA..COPTIC COMBINING SPIRITUS LENIS
 [0x2CEE] = {status="valid"},
 [0x2CEF] = {status="valid"},
 [0x2CF0] = {status="valid"},
 [0x2CF1] = {status="valid"},
 -- NA   <reserved-2CF4>..<reserved-2CF8>
 [0x2CF4] = {status="disallowed"},
 [0x2CF5] = {status="disallowed"},
 [0x2CF6] = {status="disallowed"},
 [0x2CF7] = {status="disallowed"},
 [0x2CF8] = {status="disallowed"},
 [0x2D26] = {status="disallowed"}, -- NA   <reserved-2D26>
 [0x2D27] = {status="valid"}, -- GEORGIAN SMALL LETTER YN
 [0x2D2D] = {status="valid"}, -- GEORGIAN SMALL LETTER AEN
 -- NA   <reserved-2D28>..<reserved-2D2C>
 [0x2D28] = {status="disallowed"},
 [0x2D29] = {status="disallowed"},
 [0x2D2A] = {status="disallowed"},
 [0x2D2B] = {status="disallowed"},
 [0x2D2C] = {status="disallowed"},
 -- NA   <reserved-2D2E>..<reserved-2D2F>
 [0x2D2E] = {status="disallowed"},
 [0x2D2F] = {status="disallowed"},
 [0x2D6F] = 0x2D61, -- TIFINAGH MODIFIER LETTER LABIALIZATION MARK
 [0x2D70] = {status="disallowed"}, -- TIFINAGH SEPARATOR MARK
 [0x2D7F] = {status="valid"}, -- TIFINAGH CONSONANT JOINER
 [0x2DA7] = {status="disallowed"}, -- NA   <reserved-2DA7>
 [0x2DAF] = {status="disallowed"}, -- NA   <reserved-2DAF>
 [0x2DB7] = {status="disallowed"}, -- NA   <reserved-2DB7>
 [0x2DBF] = {status="disallowed"}, -- NA   <reserved-2DBF>
 [0x2DC7] = {status="disallowed"}, -- NA   <reserved-2DC7>
 [0x2DCF] = {status="disallowed"}, -- NA   <reserved-2DCF>
 [0x2DD7] = {status="disallowed"}, -- NA   <reserved-2DD7>
 [0x2DDF] = {status="disallowed"}, -- NA   <reserved-2DDF>
 [0x2E2F] = {status="valid"}, -- VERTICAL TILDE
 [0x2E30] = {status="disallowed"}, -- RING POINT
 [0x2E31] = {status="disallowed"}, -- WORD SEPARATOR MIDDLE DOT
 [0x2E9A] = {status="disallowed"}, -- NA   <reserved-2E9A>
 [0x2E9F] = 0x6BCD, -- CJK RADICAL MOTHER
 -- CJK RADICAL CHOKE..CJK RADICAL DEATH
 [0x2E9B] = {status="disallowed"},
 [0x2E9C] = {status="disallowed"},
 [0x2E9D] = {status="disallowed"},
 [0x2E9E] = {status="disallowed"},
 [0x2EF3] = 0x9F9F, -- CJK RADICAL C-SIMPLIFIED TURTLE
 [0x2F00] = 0x4E00, -- KANGXI RADICAL ONE
 [0x2F01] = 0x4E28, -- KANGXI RADICAL LINE
 [0x2F02] = 0x4E36, -- KANGXI RADICAL DOT
 [0x2F03] = 0x4E3F, -- KANGXI RADICAL SLASH
 [0x2F04] = 0x4E59, -- KANGXI RADICAL SECOND
 [0x2F05] = 0x4E85, -- KANGXI RADICAL HOOK
 [0x2F06] = 0x4E8C, -- KANGXI RADICAL TWO
 [0x2F07] = 0x4EA0, -- KANGXI RADICAL LID
 [0x2F08] = 0x4EBA, -- KANGXI RADICAL MAN
 [0x2F09] = 0x513F, -- KANGXI RADICAL LEGS
 [0x2F0A] = 0x5165, -- KANGXI RADICAL ENTER
 [0x2F0B] = 0x516B, -- KANGXI RADICAL EIGHT
 [0x2F0C] = 0x5182, -- KANGXI RADICAL DOWN BOX
 [0x2F0D] = 0x5196, -- KANGXI RADICAL COVER
 [0x2F0E] = 0x51AB, -- KANGXI RADICAL ICE
 [0x2F0F] = 0x51E0, -- KANGXI RADICAL TABLE
 [0x2F10] = 0x51F5, -- KANGXI RADICAL OPEN BOX
 [0x2F11] = 0x5200, -- KANGXI RADICAL KNIFE
 [0x2F12] = 0x529B, -- KANGXI RADICAL POWER
 [0x2F13] = 0x52F9, -- KANGXI RADICAL WRAP
 [0x2F14] = 0x5315, -- KANGXI RADICAL SPOON
 [0x2F15] = 0x531A, -- KANGXI RADICAL RIGHT OPEN BOX
 [0x2F16] = 0x5338, -- KANGXI RADICAL HIDING ENCLOSURE
 [0x2F17] = 0x5341, -- KANGXI RADICAL TEN
 [0x2F18] = 0x535C, -- KANGXI RADICAL DIVINATION
 [0x2F19] = 0x5369, -- KANGXI RADICAL SEAL
 [0x2F1A] = 0x5382, -- KANGXI RADICAL CLIFF
 [0x2F1B] = 0x53B6, -- KANGXI RADICAL PRIVATE
 [0x2F1C] = 0x53C8, -- KANGXI RADICAL AGAIN
 [0x2F1D] = 0x53E3, -- KANGXI RADICAL MOUTH
 [0x2F1E] = 0x56D7, -- KANGXI RADICAL ENCLOSURE
 [0x2F1F] = 0x571F, -- KANGXI RADICAL EARTH
 [0x2F20] = 0x58EB, -- KANGXI RADICAL SCHOLAR
 [0x2F21] = 0x5902, -- KANGXI RADICAL GO
 [0x2F22] = 0x590A, -- KANGXI RADICAL GO SLOWLY
 [0x2F23] = 0x5915, -- KANGXI RADICAL EVENING
 [0x2F24] = 0x5927, -- KANGXI RADICAL BIG
 [0x2F25] = 0x5973, -- KANGXI RADICAL WOMAN
 [0x2F26] = 0x5B50, -- KANGXI RADICAL CHILD
 [0x2F27] = 0x5B80, -- KANGXI RADICAL ROOF
 [0x2F28] = 0x5BF8, -- KANGXI RADICAL INCH
 [0x2F29] = 0x5C0F, -- KANGXI RADICAL SMALL
 [0x2F2A] = 0x5C22, -- KANGXI RADICAL LAME
 [0x2F2B] = 0x5C38, -- KANGXI RADICAL CORPSE
 [0x2F2C] = 0x5C6E, -- KANGXI RADICAL SPROUT
 [0x2F2D] = 0x5C71, -- KANGXI RADICAL MOUNTAIN
 [0x2F2E] = 0x5DDB, -- KANGXI RADICAL RIVER
 [0x2F2F] = 0x5DE5, -- KANGXI RADICAL WORK
 [0x2F30] = 0x5DF1, -- KANGXI RADICAL ONESELF
 [0x2F31] = 0x5DFE, -- KANGXI RADICAL TURBAN
 [0x2F32] = 0x5E72, -- KANGXI RADICAL DRY
 [0x2F33] = 0x5E7A, -- KANGXI RADICAL SHORT THREAD
 [0x2F34] = 0x5E7F, -- KANGXI RADICAL DOTTED CLIFF
 [0x2F35] = 0x5EF4, -- KANGXI RADICAL LONG STRIDE
 [0x2F36] = 0x5EFE, -- KANGXI RADICAL TWO HANDS
 [0x2F37] = 0x5F0B, -- KANGXI RADICAL SHOOT
 [0x2F38] = 0x5F13, -- KANGXI RADICAL BOW
 [0x2F39] = 0x5F50, -- KANGXI RADICAL SNOUT
 [0x2F3A] = 0x5F61, -- KANGXI RADICAL BRISTLE
 [0x2F3B] = 0x5F73, -- KANGXI RADICAL STEP
 [0x2F3C] = 0x5FC3, -- KANGXI RADICAL HEART
 [0x2F3D] = 0x6208, -- KANGXI RADICAL HALBERD
 [0x2F3E] = 0x6236, -- KANGXI RADICAL DOOR
 [0x2F3F] = 0x624B, -- KANGXI RADICAL HAND
 [0x2F40] = 0x652F, -- KANGXI RADICAL BRANCH
 [0x2F41] = 0x6534, -- KANGXI RADICAL RAP
 [0x2F42] = 0x6587, -- KANGXI RADICAL SCRIPT
 [0x2F43] = 0x6597, -- KANGXI RADICAL DIPPER
 [0x2F44] = 0x65A4, -- KANGXI RADICAL AXE
 [0x2F45] = 0x65B9, -- KANGXI RADICAL SQUARE
 [0x2F46] = 0x65E0, -- KANGXI RADICAL NOT
 [0x2F47] = 0x65E5, -- KANGXI RADICAL SUN
 [0x2F48] = 0x66F0, -- KANGXI RADICAL SAY
 [0x2F49] = 0x6708, -- KANGXI RADICAL MOON
 [0x2F4A] = 0x6728, -- KANGXI RADICAL TREE
 [0x2F4B] = 0x6B20, -- KANGXI RADICAL LACK
 [0x2F4C] = 0x6B62, -- KANGXI RADICAL STOP
 [0x2F4D] = 0x6B79, -- KANGXI RADICAL DEATH
 [0x2F4E] = 0x6BB3, -- KANGXI RADICAL WEAPON
 [0x2F4F] = 0x6BCB, -- KANGXI RADICAL DO NOT
 [0x2F50] = 0x6BD4, -- KANGXI RADICAL COMPARE
 [0x2F51] = 0x6BDB, -- KANGXI RADICAL FUR
 [0x2F52] = 0x6C0F, -- KANGXI RADICAL CLAN
 [0x2F53] = 0x6C14, -- KANGXI RADICAL STEAM
 [0x2F54] = 0x6C34, -- KANGXI RADICAL WATER
 [0x2F55] = 0x706B, -- KANGXI RADICAL FIRE
 [0x2F56] = 0x722A, -- KANGXI RADICAL CLAW
 [0x2F57] = 0x7236, -- KANGXI RADICAL FATHER
 [0x2F58] = 0x723B, -- KANGXI RADICAL DOUBLE X
 [0x2F59] = 0x723F, -- KANGXI RADICAL HALF TREE TRUNK
 [0x2F5A] = 0x7247, -- KANGXI RADICAL SLICE
 [0x2F5B] = 0x7259, -- KANGXI RADICAL FANG
 [0x2F5C] = 0x725B, -- KANGXI RADICAL COW
 [0x2F5D] = 0x72AC, -- KANGXI RADICAL DOG
 [0x2F5E] = 0x7384, -- KANGXI RADICAL PROFOUND
 [0x2F5F] = 0x7389, -- KANGXI RADICAL JADE
 [0x2F60] = 0x74DC, -- KANGXI RADICAL MELON
 [0x2F61] = 0x74E6, -- KANGXI RADICAL TILE
 [0x2F62] = 0x7518, -- KANGXI RADICAL SWEET
 [0x2F63] = 0x751F, -- KANGXI RADICAL LIFE
 [0x2F64] = 0x7528, -- KANGXI RADICAL USE
 [0x2F65] = 0x7530, -- KANGXI RADICAL FIELD
 [0x2F66] = 0x758B, -- KANGXI RADICAL BOLT OF CLOTH
 [0x2F67] = 0x7592, -- KANGXI RADICAL SICKNESS
 [0x2F68] = 0x7676, -- KANGXI RADICAL DOTTED TENT
 [0x2F69] = 0x767D, -- KANGXI RADICAL WHITE
 [0x2F6A] = 0x76AE, -- KANGXI RADICAL SKIN
 [0x2F6B] = 0x76BF, -- KANGXI RADICAL DISH
 [0x2F6C] = 0x76EE, -- KANGXI RADICAL EYE
 [0x2F6D] = 0x77DB, -- KANGXI RADICAL SPEAR
 [0x2F6E] = 0x77E2, -- KANGXI RADICAL ARROW
 [0x2F6F] = 0x77F3, -- KANGXI RADICAL STONE
 [0x2F70] = 0x793A, -- KANGXI RADICAL SPIRIT
 [0x2F71] = 0x79B8, -- KANGXI RADICAL TRACK
 [0x2F72] = 0x79BE, -- KANGXI RADICAL GRAIN
 [0x2F73] = 0x7A74, -- KANGXI RADICAL CAVE
 [0x2F74] = 0x7ACB, -- KANGXI RADICAL STAND
 [0x2F75] = 0x7AF9, -- KANGXI RADICAL BAMBOO
 [0x2F76] = 0x7C73, -- KANGXI RADICAL RICE
 [0x2F77] = 0x7CF8, -- KANGXI RADICAL SILK
 [0x2F78] = 0x7F36, -- KANGXI RADICAL JAR
 [0x2F79] = 0x7F51, -- KANGXI RADICAL NET
 [0x2F7A] = 0x7F8A, -- KANGXI RADICAL SHEEP
 [0x2F7B] = 0x7FBD, -- KANGXI RADICAL FEATHER
 [0x2F7C] = 0x8001, -- KANGXI RADICAL OLD
 [0x2F7D] = 0x800C, -- KANGXI RADICAL AND
 [0x2F7E] = 0x8012, -- KANGXI RADICAL PLOW
 [0x2F7F] = 0x8033, -- KANGXI RADICAL EAR
 [0x2F80] = 0x807F, -- KANGXI RADICAL BRUSH
 [0x2F81] = 0x8089, -- KANGXI RADICAL MEAT
 [0x2F82] = 0x81E3, -- KANGXI RADICAL MINISTER
 [0x2F83] = 0x81EA, -- KANGXI RADICAL SELF
 [0x2F84] = 0x81F3, -- KANGXI RADICAL ARRIVE
 [0x2F85] = 0x81FC, -- KANGXI RADICAL MORTAR
 [0x2F86] = 0x820C, -- KANGXI RADICAL TONGUE
 [0x2F87] = 0x821B, -- KANGXI RADICAL OPPOSE
 [0x2F88] = 0x821F, -- KANGXI RADICAL BOAT
 [0x2F89] = 0x826E, -- KANGXI RADICAL STOPPING
 [0x2F8A] = 0x8272, -- KANGXI RADICAL COLOR
 [0x2F8B] = 0x8278, -- KANGXI RADICAL GRASS
 [0x2F8C] = 0x864D, -- KANGXI RADICAL TIGER
 [0x2F8D] = 0x866B, -- KANGXI RADICAL INSECT
 [0x2F8E] = 0x8840, -- KANGXI RADICAL BLOOD
 [0x2F8F] = 0x884C, -- KANGXI RADICAL WALK ENCLOSURE
 [0x2F90] = 0x8863, -- KANGXI RADICAL CLOTHES
 [0x2F91] = 0x897E, -- KANGXI RADICAL WEST
 [0x2F92] = 0x898B, -- KANGXI RADICAL SEE
 [0x2F93] = 0x89D2, -- KANGXI RADICAL HORN
 [0x2F94] = 0x8A00, -- KANGXI RADICAL SPEECH
 [0x2F95] = 0x8C37, -- KANGXI RADICAL VALLEY
 [0x2F96] = 0x8C46, -- KANGXI RADICAL BEAN
 [0x2F97] = 0x8C55, -- KANGXI RADICAL PIG
 [0x2F98] = 0x8C78, -- KANGXI RADICAL BADGER
 [0x2F99] = 0x8C9D, -- KANGXI RADICAL SHELL
 [0x2F9A] = 0x8D64, -- KANGXI RADICAL RED
 [0x2F9B] = 0x8D70, -- KANGXI RADICAL RUN
 [0x2F9C] = 0x8DB3, -- KANGXI RADICAL FOOT
 [0x2F9D] = 0x8EAB, -- KANGXI RADICAL BODY
 [0x2F9E] = 0x8ECA, -- KANGXI RADICAL CART
 [0x2F9F] = 0x8F9B, -- KANGXI RADICAL BITTER
 [0x2FA0] = 0x8FB0, -- KANGXI RADICAL MORNING
 [0x2FA1] = 0x8FB5, -- KANGXI RADICAL WALK
 [0x2FA2] = 0x9091, -- KANGXI RADICAL CITY
 [0x2FA3] = 0x9149, -- KANGXI RADICAL WINE
 [0x2FA4] = 0x91C6, -- KANGXI RADICAL DISTINGUISH
 [0x2FA5] = 0x91CC, -- KANGXI RADICAL VILLAGE
 [0x2FA6] = 0x91D1, -- KANGXI RADICAL GOLD
 [0x2FA7] = 0x9577, -- KANGXI RADICAL LONG
 [0x2FA8] = 0x9580, -- KANGXI RADICAL GATE
 [0x2FA9] = 0x961C, -- KANGXI RADICAL MOUND
 [0x2FAA] = 0x96B6, -- KANGXI RADICAL SLAVE
 [0x2FAB] = 0x96B9, -- KANGXI RADICAL SHORT TAILED BIRD
 [0x2FAC] = 0x96E8, -- KANGXI RADICAL RAIN
 [0x2FAD] = 0x9751, -- KANGXI RADICAL BLUE
 [0x2FAE] = 0x975E, -- KANGXI RADICAL WRONG
 [0x2FAF] = 0x9762, -- KANGXI RADICAL FACE
 [0x2FB0] = 0x9769, -- KANGXI RADICAL LEATHER
 [0x2FB1] = 0x97CB, -- KANGXI RADICAL TANNED LEATHER
 [0x2FB2] = 0x97ED, -- KANGXI RADICAL LEEK
 [0x2FB3] = 0x97F3, -- KANGXI RADICAL SOUND
 [0x2FB4] = 0x9801, -- KANGXI RADICAL LEAF
 [0x2FB5] = 0x98A8, -- KANGXI RADICAL WIND
 [0x2FB6] = 0x98DB, -- KANGXI RADICAL FLY
 [0x2FB7] = 0x98DF, -- KANGXI RADICAL EAT
 [0x2FB8] = 0x9996, -- KANGXI RADICAL HEAD
 [0x2FB9] = 0x9999, -- KANGXI RADICAL FRAGRANT
 [0x2FBA] = 0x99AC, -- KANGXI RADICAL HORSE
 [0x2FBB] = 0x9AA8, -- KANGXI RADICAL BONE
 [0x2FBC] = 0x9AD8, -- KANGXI RADICAL TALL
 [0x2FBD] = 0x9ADF, -- KANGXI RADICAL HAIR
 [0x2FBE] = 0x9B25, -- KANGXI RADICAL FIGHT
 [0x2FBF] = 0x9B2F, -- KANGXI RADICAL SACRIFICIAL WINE
 [0x2FC0] = 0x9B32, -- KANGXI RADICAL CAULDRON
 [0x2FC1] = 0x9B3C, -- KANGXI RADICAL GHOST
 [0x2FC2] = 0x9B5A, -- KANGXI RADICAL FISH
 [0x2FC3] = 0x9CE5, -- KANGXI RADICAL BIRD
 [0x2FC4] = 0x9E75, -- KANGXI RADICAL SALT
 [0x2FC5] = 0x9E7F, -- KANGXI RADICAL DEER
 [0x2FC6] = 0x9EA5, -- KANGXI RADICAL WHEAT
 [0x2FC7] = 0x9EBB, -- KANGXI RADICAL HEMP
 [0x2FC8] = 0x9EC3, -- KANGXI RADICAL YELLOW
 [0x2FC9] = 0x9ECD, -- KANGXI RADICAL MILLET
 [0x2FCA] = 0x9ED1, -- KANGXI RADICAL BLACK
 [0x2FCB] = 0x9EF9, -- KANGXI RADICAL EMBROIDERY
 [0x2FCC] = 0x9EFD, -- KANGXI RADICAL FROG
 [0x2FCD] = 0x9F0E, -- KANGXI RADICAL TRIPOD
 [0x2FCE] = 0x9F13, -- KANGXI RADICAL DRUM
 [0x2FCF] = 0x9F20, -- KANGXI RADICAL RAT
 [0x2FD0] = 0x9F3B, -- KANGXI RADICAL NOSE
 [0x2FD1] = 0x9F4A, -- KANGXI RADICAL EVEN
 [0x2FD2] = 0x9F52, -- KANGXI RADICAL TOOTH
 [0x2FD3] = 0x9F8D, -- KANGXI RADICAL DRAGON
 [0x2FD4] = 0x9F9C, -- KANGXI RADICAL TURTLE
 [0x2FD5] = 0x9FA0, -- KANGXI RADICAL FLUTE
 [0x3000] = {status="disallowed"}, -- IDEOGRAPHIC SPACE
 [0x3001] = {status="disallowed"}, -- IDEOGRAPHIC COMMA
 [0x3002] = 0x002E, -- IDEOGRAPHIC FULL STOP
 -- DITTO MARK..JAPANESE INDUSTRIAL STANDARD SYMBOL
 [0x3003] = {status="disallowed"},
 [0x3004] = {status="disallowed"},
 -- IDEOGRAPHIC ITERATION MARK..IDEOGRAPHIC NUMBER ZERO
 [0x3005] = {status="valid"},
 [0x3006] = {status="valid"},
 [0x3007] = {status="valid"},
 -- IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
 [0x302A] = {status="valid"},
 [0x302B] = {status="valid"},
 [0x302C] = {status="valid"},
 [0x302D] = {status="valid"},
 [0x3036] = 0x3012, -- CIRCLED POSTAL MARK
 [0x3037] = {status="disallowed"}, -- IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
 [0x3038] = 0x5341, -- HANGZHOU NUMERAL TEN
 [0x3039] = 0x5344, -- HANGZHOU NUMERAL TWENTY
 [0x303A] = 0x5345, -- HANGZHOU NUMERAL THIRTY
 [0x303B] = {status="disallowed"}, -- VERTICAL IDEOGRAPHIC ITERATION MARK
 [0x303C] = {status="valid"}, -- MASU MARK
 [0x303D] = {status="disallowed"}, -- PART ALTERNATION MARK
 [0x303E] = {status="disallowed"}, -- IDEOGRAPHIC VARIATION INDICATOR
 [0x303F] = {status="disallowed"}, -- IDEOGRAPHIC HALF FILL SPACE
 [0x3040] = {status="disallowed"}, -- NA   <reserved-3040>
 -- NA   <reserved-3097>..<reserved-3098>
 [0x3097] = {status="disallowed"},
 [0x3098] = {status="disallowed"},
 [0x309B] = {status="disallowed"}, -- KATAKANA-HIRAGANA VOICED SOUND MARK
 [0x309C] = {status="disallowed"}, -- KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
 -- COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
 [0x3099] = {status="valid"},
 [0x309A] = {status="valid"},
 [0x309F] = {0x3088, 0x308A}, -- HIRAGANA DIGRAPH YORI
 [0x30A0] = {status="disallowed"}, -- KATAKANA-HIRAGANA DOUBLE HYPHEN
 -- HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
 [0x309D] = {status="valid"},
 [0x309E] = {status="valid"},
 [0x30FF] = {0x30B3, 0x30C8}, -- KATAKANA DIGRAPH KOTO
 -- NA   <reserved-3100>..<reserved-3104>
 [0x3100] = {status="disallowed"},
 [0x3101] = {status="disallowed"},
 [0x3102] = {status="disallowed"},
 [0x3103] = {status="disallowed"},
 [0x3104] = {status="disallowed"},
 [0x312D] = {status="valid"}, -- BOPOMOFO LETTER IH
 [0x312E] = {status="valid"}, -- BOPOMOFO LETTER O WITH DOT ABOVE
 [0x3131] = 0x1100, -- HANGUL LETTER KIYEOK
 [0x3132] = 0x1101, -- HANGUL LETTER SSANGKIYEOK
 [0x3133] = 0x11AA, -- HANGUL LETTER KIYEOK-SIOS
 [0x3134] = 0x1102, -- HANGUL LETTER NIEUN
 [0x3135] = 0x11AC, -- HANGUL LETTER NIEUN-CIEUC
 [0x3136] = 0x11AD, -- HANGUL LETTER NIEUN-HIEUH
 [0x3137] = 0x1103, -- HANGUL LETTER TIKEUT
 [0x3138] = 0x1104, -- HANGUL LETTER SSANGTIKEUT
 [0x3139] = 0x1105, -- HANGUL LETTER RIEUL
 [0x313A] = 0x11B0, -- HANGUL LETTER RIEUL-KIYEOK
 [0x313B] = 0x11B1, -- HANGUL LETTER RIEUL-MIEUM
 [0x313C] = 0x11B2, -- HANGUL LETTER RIEUL-PIEUP
 [0x313D] = 0x11B3, -- HANGUL LETTER RIEUL-SIOS
 [0x313E] = 0x11B4, -- HANGUL LETTER RIEUL-THIEUTH
 [0x313F] = 0x11B5, -- HANGUL LETTER RIEUL-PHIEUPH
 [0x3140] = 0x111A, -- HANGUL LETTER RIEUL-HIEUH
 [0x3141] = 0x1106, -- HANGUL LETTER MIEUM
 [0x3142] = 0x1107, -- HANGUL LETTER PIEUP
 [0x3143] = 0x1108, -- HANGUL LETTER SSANGPIEUP
 [0x3144] = 0x1121, -- HANGUL LETTER PIEUP-SIOS
 [0x3145] = 0x1109, -- HANGUL LETTER SIOS
 [0x3146] = 0x110A, -- HANGUL LETTER SSANGSIOS
 [0x3147] = 0x110B, -- HANGUL LETTER IEUNG
 [0x3148] = 0x110C, -- HANGUL LETTER CIEUC
 [0x3149] = 0x110D, -- HANGUL LETTER SSANGCIEUC
 [0x314A] = 0x110E, -- HANGUL LETTER CHIEUCH
 [0x314B] = 0x110F, -- HANGUL LETTER KHIEUKH
 [0x314C] = 0x1110, -- HANGUL LETTER THIEUTH
 [0x314D] = 0x1111, -- HANGUL LETTER PHIEUPH
 [0x314E] = 0x1112, -- HANGUL LETTER HIEUH
 [0x314F] = 0x1161, -- HANGUL LETTER A
 [0x3150] = 0x1162, -- HANGUL LETTER AE
 [0x3151] = 0x1163, -- HANGUL LETTER YA
 [0x3152] = 0x1164, -- HANGUL LETTER YAE
 [0x3153] = 0x1165, -- HANGUL LETTER EO
 [0x3154] = 0x1166, -- HANGUL LETTER E
 [0x3155] = 0x1167, -- HANGUL LETTER YEO
 [0x3156] = 0x1168, -- HANGUL LETTER YE
 [0x3157] = 0x1169, -- HANGUL LETTER O
 [0x3158] = 0x116A, -- HANGUL LETTER WA
 [0x3159] = 0x116B, -- HANGUL LETTER WAE
 [0x315A] = 0x116C, -- HANGUL LETTER OE
 [0x315B] = 0x116D, -- HANGUL LETTER YO
 [0x315C] = 0x116E, -- HANGUL LETTER U
 [0x315D] = 0x116F, -- HANGUL LETTER WEO
 [0x315E] = 0x1170, -- HANGUL LETTER WE
 [0x315F] = 0x1171, -- HANGUL LETTER WI
 [0x3160] = 0x1172, -- HANGUL LETTER YU
 [0x3161] = 0x1173, -- HANGUL LETTER EU
 [0x3162] = 0x1174, -- HANGUL LETTER YI
 [0x3163] = 0x1175, -- HANGUL LETTER I
 [0x3164] = {status="disallowed"}, -- HANGUL FILLER
 [0x3165] = 0x1114, -- HANGUL LETTER SSANGNIEUN
 [0x3166] = 0x1115, -- HANGUL LETTER NIEUN-TIKEUT
 [0x3167] = 0x11C7, -- HANGUL LETTER NIEUN-SIOS
 [0x3168] = 0x11C8, -- HANGUL LETTER NIEUN-PANSIOS
 [0x3169] = 0x11CC, -- HANGUL LETTER RIEUL-KIYEOK-SIOS
 [0x316A] = 0x11CE, -- HANGUL LETTER RIEUL-TIKEUT
 [0x316B] = 0x11D3, -- HANGUL LETTER RIEUL-PIEUP-SIOS
 [0x316C] = 0x11D7, -- HANGUL LETTER RIEUL-PANSIOS
 [0x316D] = 0x11D9, -- HANGUL LETTER RIEUL-YEORINHIEUH
 [0x316E] = 0x111C, -- HANGUL LETTER MIEUM-PIEUP
 [0x316F] = 0x11DD, -- HANGUL LETTER MIEUM-SIOS
 [0x3170] = 0x11DF, -- HANGUL LETTER MIEUM-PANSIOS
 [0x3171] = 0x111D, -- HANGUL LETTER KAPYEOUNMIEUM
 [0x3172] = 0x111E, -- HANGUL LETTER PIEUP-KIYEOK
 [0x3173] = 0x1120, -- HANGUL LETTER PIEUP-TIKEUT
 [0x3174] = 0x1122, -- HANGUL LETTER PIEUP-SIOS-KIYEOK
 [0x3175] = 0x1123, -- HANGUL LETTER PIEUP-SIOS-TIKEUT
 [0x3176] = 0x1127, -- HANGUL LETTER PIEUP-CIEUC
 [0x3177] = 0x1129, -- HANGUL LETTER PIEUP-THIEUTH
 [0x3178] = 0x112B, -- HANGUL LETTER KAPYEOUNPIEUP
 [0x3179] = 0x112C, -- HANGUL LETTER KAPYEOUNSSANGPIEUP
 [0x317A] = 0x112D, -- HANGUL LETTER SIOS-KIYEOK
 [0x317B] = 0x112E, -- HANGUL LETTER SIOS-NIEUN
 [0x317C] = 0x112F, -- HANGUL LETTER SIOS-TIKEUT
 [0x317D] = 0x1132, -- HANGUL LETTER SIOS-PIEUP
 [0x317E] = 0x1136, -- HANGUL LETTER SIOS-CIEUC
 [0x317F] = 0x1140, -- HANGUL LETTER PANSIOS
 [0x3180] = 0x1147, -- HANGUL LETTER SSANGIEUNG
 [0x3181] = 0x114C, -- HANGUL LETTER YESIEUNG
 [0x3182] = 0x11F1, -- HANGUL LETTER YESIEUNG-SIOS
 [0x3183] = 0x11F2, -- HANGUL LETTER YESIEUNG-PANSIOS
 [0x3184] = 0x1157, -- HANGUL LETTER KAPYEOUNPHIEUPH
 [0x3185] = 0x1158, -- HANGUL LETTER SSANGHIEUH
 [0x3186] = 0x1159, -- HANGUL LETTER YEORINHIEUH
 [0x3187] = 0x1184, -- HANGUL LETTER YO-YA
 [0x3188] = 0x1185, -- HANGUL LETTER YO-YAE
 [0x3189] = 0x1188, -- HANGUL LETTER YO-I
 [0x318A] = 0x1191, -- HANGUL LETTER YU-YEO
 [0x318B] = 0x1192, -- HANGUL LETTER YU-YE
 [0x318C] = 0x1194, -- HANGUL LETTER YU-I
 [0x318D] = 0x119E, -- HANGUL LETTER ARAEA
 [0x318E] = 0x11A1, -- HANGUL LETTER ARAEAE
 [0x318F] = {status="disallowed"}, -- NA   <reserved-318F>
 -- NA   <reserved-312F>..<reserved-3130>
 [0x312F] = {status="disallowed"},
 [0x3130] = {status="disallowed"},
 [0x3192] = 0x4E00, -- IDEOGRAPHIC ANNOTATION ONE MARK
 [0x3193] = 0x4E8C, -- IDEOGRAPHIC ANNOTATION TWO MARK
 [0x3194] = 0x4E09, -- IDEOGRAPHIC ANNOTATION THREE MARK
 [0x3195] = 0x56DB, -- IDEOGRAPHIC ANNOTATION FOUR MARK
 [0x3196] = 0x4E0A, -- IDEOGRAPHIC ANNOTATION TOP MARK
 [0x3197] = 0x4E2D, -- IDEOGRAPHIC ANNOTATION MIDDLE MARK
 [0x3198] = 0x4E0B, -- IDEOGRAPHIC ANNOTATION BOTTOM MARK
 [0x3199] = 0x7532, -- IDEOGRAPHIC ANNOTATION FIRST MARK
 [0x319A] = 0x4E59, -- IDEOGRAPHIC ANNOTATION SECOND MARK
 [0x319B] = 0x4E19, -- IDEOGRAPHIC ANNOTATION THIRD MARK
 [0x319C] = 0x4E01, -- IDEOGRAPHIC ANNOTATION FOURTH MARK
 [0x319D] = 0x5929, -- IDEOGRAPHIC ANNOTATION HEAVEN MARK
 [0x319E] = 0x5730, -- IDEOGRAPHIC ANNOTATION EARTH MARK
 [0x319F] = 0x4EBA, -- IDEOGRAPHIC ANNOTATION MAN MARK
 -- IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
 [0x3190] = {status="disallowed"},
 [0x3191] = {status="disallowed"},
 -- NA   <reserved-31BB>..<reserved-31BF>
 [0x31BB] = {status="disallowed"},
 [0x31BC] = {status="disallowed"},
 [0x31BD] = {status="disallowed"},
 [0x31BE] = {status="disallowed"},
 [0x31BF] = {status="disallowed"},
 [0x3200] = {status="disallowed"}, -- PARENTHESIZED HANGUL KIYEOK
 [0x3201] = {status="disallowed"}, -- PARENTHESIZED HANGUL NIEUN
 [0x3202] = {status="disallowed"}, -- PARENTHESIZED HANGUL TIKEUT
 [0x3203] = {status="disallowed"}, -- PARENTHESIZED HANGUL RIEUL
 [0x3204] = {status="disallowed"}, -- PARENTHESIZED HANGUL MIEUM
 [0x3205] = {status="disallowed"}, -- PARENTHESIZED HANGUL PIEUP
 [0x3206] = {status="disallowed"}, -- PARENTHESIZED HANGUL SIOS
 [0x3207] = {status="disallowed"}, -- PARENTHESIZED HANGUL IEUNG
 [0x3208] = {status="disallowed"}, -- PARENTHESIZED HANGUL CIEUC
 [0x3209] = {status="disallowed"}, -- PARENTHESIZED HANGUL CHIEUCH
 [0x320A] = {status="disallowed"}, -- PARENTHESIZED HANGUL KHIEUKH
 [0x320B] = {status="disallowed"}, -- PARENTHESIZED HANGUL THIEUTH
 [0x320C] = {status="disallowed"}, -- PARENTHESIZED HANGUL PHIEUPH
 [0x320D] = {status="disallowed"}, -- PARENTHESIZED HANGUL HIEUH
 [0x320E] = {status="disallowed"}, -- PARENTHESIZED HANGUL KIYEOK A
 [0x320F] = {status="disallowed"}, -- PARENTHESIZED HANGUL NIEUN A
 [0x3210] = {status="disallowed"}, -- PARENTHESIZED HANGUL TIKEUT A
 [0x3211] = {status="disallowed"}, -- PARENTHESIZED HANGUL RIEUL A
 [0x3212] = {status="disallowed"}, -- PARENTHESIZED HANGUL MIEUM A
 [0x3213] = {status="disallowed"}, -- PARENTHESIZED HANGUL PIEUP A
 [0x3214] = {status="disallowed"}, -- PARENTHESIZED HANGUL SIOS A
 [0x3215] = {status="disallowed"}, -- PARENTHESIZED HANGUL IEUNG A
 [0x3216] = {status="disallowed"}, -- PARENTHESIZED HANGUL CIEUC A
 [0x3217] = {status="disallowed"}, -- PARENTHESIZED HANGUL CHIEUCH A
 [0x3218] = {status="disallowed"}, -- PARENTHESIZED HANGUL KHIEUKH A
 [0x3219] = {status="disallowed"}, -- PARENTHESIZED HANGUL THIEUTH A
 [0x321A] = {status="disallowed"}, -- PARENTHESIZED HANGUL PHIEUPH A
 [0x321B] = {status="disallowed"}, -- PARENTHESIZED HANGUL HIEUH A
 [0x321C] = {status="disallowed"}, -- PARENTHESIZED HANGUL CIEUC U
 [0x321D] = {status="disallowed"}, -- PARENTHESIZED KOREAN CHARACTER OJEON
 [0x321E] = {status="disallowed"}, -- PARENTHESIZED KOREAN CHARACTER O HU
 [0x321F] = {status="disallowed"}, -- NA   <reserved-321F>
 [0x3220] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH ONE
 [0x3221] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH TWO
 [0x3222] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH THREE
 [0x3223] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH FOUR
 [0x3224] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH FIVE
 [0x3225] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH SIX
 [0x3226] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH SEVEN
 [0x3227] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH EIGHT
 [0x3228] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH NINE
 [0x3229] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH TEN
 [0x322A] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH MOON
 [0x322B] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH FIRE
 [0x322C] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH WATER
 [0x322D] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH WOOD
 [0x322E] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH METAL
 [0x322F] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH EARTH
 [0x3230] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH SUN
 [0x3231] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH STOCK
 [0x3232] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH HAVE
 [0x3233] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH SOCIETY
 [0x3234] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH NAME
 [0x3235] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH SPECIAL
 [0x3236] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH FINANCIAL
 [0x3237] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH CONGRATULATION
 [0x3238] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH LABOR
 [0x3239] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH REPRESENT
 [0x323A] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH CALL
 [0x323B] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH STUDY
 [0x323C] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH SUPERVISE
 [0x323D] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH ENTERPRISE
 [0x323E] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH RESOURCE
 [0x323F] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH ALLIANCE
 [0x3240] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH FESTIVAL
 [0x3241] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH REST
 [0x3242] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH SELF
 [0x3243] = {status="disallowed"}, -- PARENTHESIZED IDEOGRAPH REACH
 [0x3244] = 0x554F, -- CIRCLED IDEOGRAPH QUESTION
 [0x3245] = 0x5E7C, -- CIRCLED IDEOGRAPH KINDERGARTEN
 [0x3246] = 0x6587, -- CIRCLED IDEOGRAPH SCHOOL
 [0x3247] = 0x7B8F, -- CIRCLED IDEOGRAPH KOTO
 [0x3250] = {0x0070, 0x0074, 0x0065}, -- PARTNERSHIP SIGN
 [0x3251] = {0x0032, 0x0031}, -- CIRCLED NUMBER TWENTY ONE
 [0x3252] = {0x0032, 0x0032}, -- CIRCLED NUMBER TWENTY TWO
 [0x3253] = {0x0032, 0x0033}, -- CIRCLED NUMBER TWENTY THREE
 [0x3254] = {0x0032, 0x0034}, -- CIRCLED NUMBER TWENTY FOUR
 [0x3255] = {0x0032, 0x0035}, -- CIRCLED NUMBER TWENTY FIVE
 [0x3256] = {0x0032, 0x0036}, -- CIRCLED NUMBER TWENTY SIX
 [0x3257] = {0x0032, 0x0037}, -- CIRCLED NUMBER TWENTY SEVEN
 [0x3258] = {0x0032, 0x0038}, -- CIRCLED NUMBER TWENTY EIGHT
 [0x3259] = {0x0032, 0x0039}, -- CIRCLED NUMBER TWENTY NINE
 [0x325A] = {0x0033, 0x0030}, -- CIRCLED NUMBER THIRTY
 [0x325B] = {0x0033, 0x0031}, -- CIRCLED NUMBER THIRTY ONE
 [0x325C] = {0x0033, 0x0032}, -- CIRCLED NUMBER THIRTY TWO
 [0x325D] = {0x0033, 0x0033}, -- CIRCLED NUMBER THIRTY THREE
 [0x325E] = {0x0033, 0x0034}, -- CIRCLED NUMBER THIRTY FOUR
 [0x325F] = {0x0033, 0x0035}, -- CIRCLED NUMBER THIRTY FIVE
 [0x3260] = 0x1100, -- CIRCLED HANGUL KIYEOK
 [0x3261] = 0x1102, -- CIRCLED HANGUL NIEUN
 [0x3262] = 0x1103, -- CIRCLED HANGUL TIKEUT
 [0x3263] = 0x1105, -- CIRCLED HANGUL RIEUL
 [0x3264] = 0x1106, -- CIRCLED HANGUL MIEUM
 [0x3265] = 0x1107, -- CIRCLED HANGUL PIEUP
 [0x3266] = 0x1109, -- CIRCLED HANGUL SIOS
 [0x3267] = 0x110B, -- CIRCLED HANGUL IEUNG
 [0x3268] = 0x110C, -- CIRCLED HANGUL CIEUC
 [0x3269] = 0x110E, -- CIRCLED HANGUL CHIEUCH
 [0x326A] = 0x110F, -- CIRCLED HANGUL KHIEUKH
 [0x326B] = 0x1110, -- CIRCLED HANGUL THIEUTH
 [0x326C] = 0x1111, -- CIRCLED HANGUL PHIEUPH
 [0x326D] = 0x1112, -- CIRCLED HANGUL HIEUH
 [0x326E] = 0xAC00, -- CIRCLED HANGUL KIYEOK A
 [0x326F] = 0xB098, -- CIRCLED HANGUL NIEUN A
 [0x3270] = 0xB2E4, -- CIRCLED HANGUL TIKEUT A
 [0x3271] = 0xB77C, -- CIRCLED HANGUL RIEUL A
 [0x3272] = 0xB9C8, -- CIRCLED HANGUL MIEUM A
 [0x3273] = 0xBC14, -- CIRCLED HANGUL PIEUP A
 [0x3274] = 0xC0AC, -- CIRCLED HANGUL SIOS A
 [0x3275] = 0xC544, -- CIRCLED HANGUL IEUNG A
 [0x3276] = 0xC790, -- CIRCLED HANGUL CIEUC A
 [0x3277] = 0xCC28, -- CIRCLED HANGUL CHIEUCH A
 [0x3278] = 0xCE74, -- CIRCLED HANGUL KHIEUKH A
 [0x3279] = 0xD0C0, -- CIRCLED HANGUL THIEUTH A
 [0x327A] = 0xD30C, -- CIRCLED HANGUL PHIEUPH A
 [0x327B] = 0xD558, -- CIRCLED HANGUL HIEUH A
 [0x327C] = {0xCC38, 0xACE0}, -- CIRCLED KOREAN CHARACTER CHAMKO
 [0x327D] = {0xC8FC, 0xC758}, -- CIRCLED KOREAN CHARACTER JUEUI
 [0x327E] = 0xC6B0, -- CIRCLED HANGUL IEUNG U
 [0x327F] = {status="disallowed"}, -- KOREAN STANDARD SYMBOL
 [0x3280] = 0x4E00, -- CIRCLED IDEOGRAPH ONE
 [0x3281] = 0x4E8C, -- CIRCLED IDEOGRAPH TWO
 [0x3282] = 0x4E09, -- CIRCLED IDEOGRAPH THREE
 [0x3283] = 0x56DB, -- CIRCLED IDEOGRAPH FOUR
 [0x3284] = 0x4E94, -- CIRCLED IDEOGRAPH FIVE
 [0x3285] = 0x516D, -- CIRCLED IDEOGRAPH SIX
 [0x3286] = 0x4E03, -- CIRCLED IDEOGRAPH SEVEN
 [0x3287] = 0x516B, -- CIRCLED IDEOGRAPH EIGHT
 [0x3288] = 0x4E5D, -- CIRCLED IDEOGRAPH NINE
 [0x3289] = 0x5341, -- CIRCLED IDEOGRAPH TEN
 [0x328A] = 0x6708, -- CIRCLED IDEOGRAPH MOON
 [0x328B] = 0x706B, -- CIRCLED IDEOGRAPH FIRE
 [0x328C] = 0x6C34, -- CIRCLED IDEOGRAPH WATER
 [0x328D] = 0x6728, -- CIRCLED IDEOGRAPH WOOD
 [0x328E] = 0x91D1, -- CIRCLED IDEOGRAPH METAL
 [0x328F] = 0x571F, -- CIRCLED IDEOGRAPH EARTH
 [0x3290] = 0x65E5, -- CIRCLED IDEOGRAPH SUN
 [0x3291] = 0x682A, -- CIRCLED IDEOGRAPH STOCK
 [0x3292] = 0x6709, -- CIRCLED IDEOGRAPH HAVE
 [0x3293] = 0x793E, -- CIRCLED IDEOGRAPH SOCIETY
 [0x3294] = 0x540D, -- CIRCLED IDEOGRAPH NAME
 [0x3295] = 0x7279, -- CIRCLED IDEOGRAPH SPECIAL
 [0x3296] = 0x8CA1, -- CIRCLED IDEOGRAPH FINANCIAL
 [0x3297] = 0x795D, -- CIRCLED IDEOGRAPH CONGRATULATION
 [0x3298] = 0x52B4, -- CIRCLED IDEOGRAPH LABOR
 [0x3299] = 0x79D8, -- CIRCLED IDEOGRAPH SECRET
 [0x329A] = 0x7537, -- CIRCLED IDEOGRAPH MALE
 [0x329B] = 0x5973, -- CIRCLED IDEOGRAPH FEMALE
 [0x329C] = 0x9069, -- CIRCLED IDEOGRAPH SUITABLE
 [0x329D] = 0x512A, -- CIRCLED IDEOGRAPH EXCELLENT
 [0x329E] = 0x5370, -- CIRCLED IDEOGRAPH PRINT
 [0x329F] = 0x6CE8, -- CIRCLED IDEOGRAPH ATTENTION
 [0x32A0] = 0x9805, -- CIRCLED IDEOGRAPH ITEM
 [0x32A1] = 0x4F11, -- CIRCLED IDEOGRAPH REST
 [0x32A2] = 0x5199, -- CIRCLED IDEOGRAPH COPY
 [0x32A3] = 0x6B63, -- CIRCLED IDEOGRAPH CORRECT
 [0x32A4] = 0x4E0A, -- CIRCLED IDEOGRAPH HIGH
 [0x32A5] = 0x4E2D, -- CIRCLED IDEOGRAPH CENTRE
 [0x32A6] = 0x4E0B, -- CIRCLED IDEOGRAPH LOW
 [0x32A7] = 0x5DE6, -- CIRCLED IDEOGRAPH LEFT
 [0x32A8] = 0x53F3, -- CIRCLED IDEOGRAPH RIGHT
 [0x32A9] = 0x533B, -- CIRCLED IDEOGRAPH MEDICINE
 [0x32AA] = 0x5B97, -- CIRCLED IDEOGRAPH RELIGION
 [0x32AB] = 0x5B66, -- CIRCLED IDEOGRAPH STUDY
 [0x32AC] = 0x76E3, -- CIRCLED IDEOGRAPH SUPERVISE
 [0x32AD] = 0x4F01, -- CIRCLED IDEOGRAPH ENTERPRISE
 [0x32AE] = 0x8CC7, -- CIRCLED IDEOGRAPH RESOURCE
 [0x32AF] = 0x5354, -- CIRCLED IDEOGRAPH ALLIANCE
 [0x32B0] = 0x591C, -- CIRCLED IDEOGRAPH NIGHT
 [0x32B1] = {0x0033, 0x0036}, -- CIRCLED NUMBER THIRTY SIX
 [0x32B2] = {0x0033, 0x0037}, -- CIRCLED NUMBER THIRTY SEVEN
 [0x32B3] = {0x0033, 0x0038}, -- CIRCLED NUMBER THIRTY EIGHT
 [0x32B4] = {0x0033, 0x0039}, -- CIRCLED NUMBER THIRTY NINE
 [0x32B5] = {0x0034, 0x0030}, -- CIRCLED NUMBER FORTY
 [0x32B6] = {0x0034, 0x0031}, -- CIRCLED NUMBER FORTY ONE
 [0x32B7] = {0x0034, 0x0032}, -- CIRCLED NUMBER FORTY TWO
 [0x32B8] = {0x0034, 0x0033}, -- CIRCLED NUMBER FORTY THREE
 [0x32B9] = {0x0034, 0x0034}, -- CIRCLED NUMBER FORTY FOUR
 [0x32BA] = {0x0034, 0x0035}, -- CIRCLED NUMBER FORTY FIVE
 [0x32BB] = {0x0034, 0x0036}, -- CIRCLED NUMBER FORTY SIX
 [0x32BC] = {0x0034, 0x0037}, -- CIRCLED NUMBER FORTY SEVEN
 [0x32BD] = {0x0034, 0x0038}, -- CIRCLED NUMBER FORTY EIGHT
 [0x32BE] = {0x0034, 0x0039}, -- CIRCLED NUMBER FORTY NINE
 [0x32BF] = {0x0035, 0x0030}, -- CIRCLED NUMBER FIFTY
 [0x32C0] = {0x0031, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
 [0x32C1] = {0x0032, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
 [0x32C2] = {0x0033, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
 [0x32C3] = {0x0034, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
 [0x32C4] = {0x0035, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
 [0x32C5] = {0x0036, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
 [0x32C6] = {0x0037, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
 [0x32C7] = {0x0038, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
 [0x32C8] = {0x0039, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
 [0x32C9] = {0x0031, 0x0030, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
 [0x32CA] = {0x0031, 0x0031, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
 [0x32CB] = {0x0031, 0x0032, 0x6708}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
 [0x32CC] = {0x0068, 0x0067}, -- SQUARE HG
 [0x32CD] = {0x0065, 0x0072, 0x0067}, -- SQUARE ERG
 [0x32CE] = {0x0065, 0x0076}, -- SQUARE EV
 [0x32CF] = {0x006C, 0x0074, 0x0064}, -- LIMITED LIABILITY SIGN
 [0x32D0] = 0x30A2, -- CIRCLED KATAKANA A
 [0x32D1] = 0x30A4, -- CIRCLED KATAKANA I
 [0x32D2] = 0x30A6, -- CIRCLED KATAKANA U
 [0x32D3] = 0x30A8, -- CIRCLED KATAKANA E
 [0x32D4] = 0x30AA, -- CIRCLED KATAKANA O
 [0x32D5] = 0x30AB, -- CIRCLED KATAKANA KA
 [0x32D6] = 0x30AD, -- CIRCLED KATAKANA KI
 [0x32D7] = 0x30AF, -- CIRCLED KATAKANA KU
 [0x32D8] = 0x30B1, -- CIRCLED KATAKANA KE
 [0x32D9] = 0x30B3, -- CIRCLED KATAKANA KO
 [0x32DA] = 0x30B5, -- CIRCLED KATAKANA SA
 [0x32DB] = 0x30B7, -- CIRCLED KATAKANA SI
 [0x32DC] = 0x30B9, -- CIRCLED KATAKANA SU
 [0x32DD] = 0x30BB, -- CIRCLED KATAKANA SE
 [0x32DE] = 0x30BD, -- CIRCLED KATAKANA SO
 [0x32DF] = 0x30BF, -- CIRCLED KATAKANA TA
 [0x32E0] = 0x30C1, -- CIRCLED KATAKANA TI
 [0x32E1] = 0x30C4, -- CIRCLED KATAKANA TU
 [0x32E2] = 0x30C6, -- CIRCLED KATAKANA TE
 [0x32E3] = 0x30C8, -- CIRCLED KATAKANA TO
 [0x32E4] = 0x30CA, -- CIRCLED KATAKANA NA
 [0x32E5] = 0x30CB, -- CIRCLED KATAKANA NI
 [0x32E6] = 0x30CC, -- CIRCLED KATAKANA NU
 [0x32E7] = 0x30CD, -- CIRCLED KATAKANA NE
 [0x32E8] = 0x30CE, -- CIRCLED KATAKANA NO
 [0x32E9] = 0x30CF, -- CIRCLED KATAKANA HA
 [0x32EA] = 0x30D2, -- CIRCLED KATAKANA HI
 [0x32EB] = 0x30D5, -- CIRCLED KATAKANA HU
 [0x32EC] = 0x30D8, -- CIRCLED KATAKANA HE
 [0x32ED] = 0x30DB, -- CIRCLED KATAKANA HO
 [0x32EE] = 0x30DE, -- CIRCLED KATAKANA MA
 [0x32EF] = 0x30DF, -- CIRCLED KATAKANA MI
 [0x32F0] = 0x30E0, -- CIRCLED KATAKANA MU
 [0x32F1] = 0x30E1, -- CIRCLED KATAKANA ME
 [0x32F2] = 0x30E2, -- CIRCLED KATAKANA MO
 [0x32F3] = 0x30E4, -- CIRCLED KATAKANA YA
 [0x32F4] = 0x30E6, -- CIRCLED KATAKANA YU
 [0x32F5] = 0x30E8, -- CIRCLED KATAKANA YO
 [0x32F6] = 0x30E9, -- CIRCLED KATAKANA RA
 [0x32F7] = 0x30EA, -- CIRCLED KATAKANA RI
 [0x32F8] = 0x30EB, -- CIRCLED KATAKANA RU
 [0x32F9] = 0x30EC, -- CIRCLED KATAKANA RE
 [0x32FA] = 0x30ED, -- CIRCLED KATAKANA RO
 [0x32FB] = 0x30EF, -- CIRCLED KATAKANA WA
 [0x32FC] = 0x30F0, -- CIRCLED KATAKANA WI
 [0x32FD] = 0x30F1, -- CIRCLED KATAKANA WE
 [0x32FE] = 0x30F2, -- CIRCLED KATAKANA WO
 [0x32FF] = {status="disallowed"}, -- NA   <reserved-32FF>
 [0x3300] = {0x30A2, 0x30D1, 0x30FC, 0x30C8}, -- SQUARE APAATO
 [0x3301] = {0x30A2, 0x30EB, 0x30D5, 0x30A1}, -- SQUARE ARUHUA
 [0x3302] = {0x30A2, 0x30F3, 0x30DA, 0x30A2}, -- SQUARE ANPEA
 [0x3303] = {0x30A2, 0x30FC, 0x30EB}, -- SQUARE AARU
 [0x3304] = {0x30A4, 0x30CB, 0x30F3, 0x30B0}, -- SQUARE ININGU
 [0x3305] = {0x30A4, 0x30F3, 0x30C1}, -- SQUARE INTI
 [0x3306] = {0x30A6, 0x30A9, 0x30F3}, -- SQUARE UON
 [0x3307] = {0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9}, -- SQUARE ESUKUUDO
 [0x3308] = {0x30A8, 0x30FC, 0x30AB, 0x30FC}, -- SQUARE EEKAA
 [0x3309] = {0x30AA, 0x30F3, 0x30B9}, -- SQUARE ONSU
 [0x330A] = {0x30AA, 0x30FC, 0x30E0}, -- SQUARE OOMU
 [0x330B] = {0x30AB, 0x30A4, 0x30EA}, -- SQUARE KAIRI
 [0x330C] = {0x30AB, 0x30E9, 0x30C3, 0x30C8}, -- SQUARE KARATTO
 [0x330D] = {0x30AB, 0x30ED, 0x30EA, 0x30FC}, -- SQUARE KARORII
 [0x330E] = {0x30AC, 0x30ED, 0x30F3}, -- SQUARE GARON
 [0x330F] = {0x30AC, 0x30F3, 0x30DE}, -- SQUARE GANMA
 [0x3310] = {0x30AE, 0x30AC}, -- SQUARE GIGA
 [0x3311] = {0x30AE, 0x30CB, 0x30FC}, -- SQUARE GINII
 [0x3312] = {0x30AD, 0x30E5, 0x30EA, 0x30FC}, -- SQUARE KYURII
 [0x3313] = {0x30AE, 0x30EB, 0x30C0, 0x30FC}, -- SQUARE GIRUDAA
 [0x3314] = {0x30AD, 0x30ED}, -- SQUARE KIRO
 [0x3315] = {0x30AD, 0x30ED, 0x30B0, 0x30E9, 0x30E0}, -- SQUARE KIROGURAMU
 [0x3316] = {0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB}, -- SQUARE KIROMEETORU
 [0x3317] = {0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8}, -- SQUARE KIROWATTO
 [0x3318] = {0x30B0, 0x30E9, 0x30E0}, -- SQUARE GURAMU
 [0x3319] = {0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3}, -- SQUARE GURAMUTON
 [0x331A] = {0x30AF, 0x30EB, 0x30BC, 0x30A4, 0x30ED}, -- SQUARE KURUZEIRO
 [0x331B] = {0x30AF, 0x30ED, 0x30FC, 0x30CD}, -- SQUARE KUROONE
 [0x331C] = {0x30B1, 0x30FC, 0x30B9}, -- SQUARE KEESU
 [0x331D] = {0x30B3, 0x30EB, 0x30CA}, -- SQUARE KORUNA
 [0x331E] = {0x30B3, 0x30FC, 0x30DD}, -- SQUARE KOOPO
 [0x331F] = {0x30B5, 0x30A4, 0x30AF, 0x30EB}, -- SQUARE SAIKURU
 [0x3320] = {0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0}, -- SQUARE SANTIIMU
 [0x3321] = {0x30B7, 0x30EA, 0x30F3, 0x30B0}, -- SQUARE SIRINGU
 [0x3322] = {0x30BB, 0x30F3, 0x30C1}, -- SQUARE SENTI
 [0x3323] = {0x30BB, 0x30F3, 0x30C8}, -- SQUARE SENTO
 [0x3324] = {0x30C0, 0x30FC, 0x30B9}, -- SQUARE DAASU
 [0x3325] = {0x30C7, 0x30B7}, -- SQUARE DESI
 [0x3326] = {0x30C9, 0x30EB}, -- SQUARE DORU
 [0x3327] = {0x30C8, 0x30F3}, -- SQUARE TON
 [0x3328] = {0x30CA, 0x30CE}, -- SQUARE NANO
 [0x3329] = {0x30CE, 0x30C3, 0x30C8}, -- SQUARE NOTTO
 [0x332A] = {0x30CF, 0x30A4, 0x30C4}, -- SQUARE HAITU
 [0x332B] = {0x30D1, 0x30FC, 0x30BB, 0x30F3, 0x30C8}, -- SQUARE PAASENTO
 [0x332C] = {0x30D1, 0x30FC, 0x30C4}, -- SQUARE PAATU
 [0x332D] = {0x30D0, 0x30FC, 0x30EC, 0x30EB}, -- SQUARE BAARERU
 [0x332E] = {0x30D4, 0x30A2, 0x30B9, 0x30C8, 0x30EB}, -- SQUARE PIASUTORU
 [0x332F] = {0x30D4, 0x30AF, 0x30EB}, -- SQUARE PIKURU
 [0x3330] = {0x30D4, 0x30B3}, -- SQUARE PIKO
 [0x3331] = {0x30D3, 0x30EB}, -- SQUARE BIRU
 [0x3332] = {0x30D5, 0x30A1, 0x30E9, 0x30C3, 0x30C9}, -- SQUARE HUARADDO
 [0x3333] = {0x30D5, 0x30A3, 0x30FC, 0x30C8}, -- SQUARE HUIITO
 [0x3334] = {0x30D6, 0x30C3, 0x30B7, 0x30A7, 0x30EB}, -- SQUARE BUSSYERU
 [0x3335] = {0x30D5, 0x30E9, 0x30F3}, -- SQUARE HURAN
 [0x3336] = {0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB}, -- SQUARE HEKUTAARU
 [0x3337] = {0x30DA, 0x30BD}, -- SQUARE PESO
 [0x3338] = {0x30DA, 0x30CB, 0x30D2}, -- SQUARE PENIHI
 [0x3339] = {0x30D8, 0x30EB, 0x30C4}, -- SQUARE HERUTU
 [0x333A] = {0x30DA, 0x30F3, 0x30B9}, -- SQUARE PENSU
 [0x333B] = {0x30DA, 0x30FC, 0x30B8}, -- SQUARE PEEZI
 [0x333C] = {0x30D9, 0x30FC, 0x30BF}, -- SQUARE BEETA
 [0x333D] = {0x30DD, 0x30A4, 0x30F3, 0x30C8}, -- SQUARE POINTO
 [0x333E] = {0x30DC, 0x30EB, 0x30C8}, -- SQUARE BORUTO
 [0x333F] = {0x30DB, 0x30F3}, -- SQUARE HON
 [0x3340] = {0x30DD, 0x30F3, 0x30C9}, -- SQUARE PONDO
 [0x3341] = {0x30DB, 0x30FC, 0x30EB}, -- SQUARE HOORU
 [0x3342] = {0x30DB, 0x30FC, 0x30F3}, -- SQUARE HOON
 [0x3343] = {0x30DE, 0x30A4, 0x30AF, 0x30ED}, -- SQUARE MAIKURO
 [0x3344] = {0x30DE, 0x30A4, 0x30EB}, -- SQUARE MAIRU
 [0x3345] = {0x30DE, 0x30C3, 0x30CF}, -- SQUARE MAHHA
 [0x3346] = {0x30DE, 0x30EB, 0x30AF}, -- SQUARE MARUKU
 [0x3347] = {0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3}, -- SQUARE MANSYON
 [0x3348] = {0x30DF, 0x30AF, 0x30ED, 0x30F3}, -- SQUARE MIKURON
 [0x3349] = {0x30DF, 0x30EA}, -- SQUARE MIRI
 [0x334A] = {0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB}, -- SQUARE MIRIBAARU
 [0x334B] = {0x30E1, 0x30AC}, -- SQUARE MEGA
 [0x334C] = {0x30E1, 0x30AC, 0x30C8, 0x30F3}, -- SQUARE MEGATON
 [0x334D] = {0x30E1, 0x30FC, 0x30C8, 0x30EB}, -- SQUARE MEETORU
 [0x334E] = {0x30E4, 0x30FC, 0x30C9}, -- SQUARE YAADO
 [0x334F] = {0x30E4, 0x30FC, 0x30EB}, -- SQUARE YAARU
 [0x3350] = {0x30E6, 0x30A2, 0x30F3}, -- SQUARE YUAN
 [0x3351] = {0x30EA, 0x30C3, 0x30C8, 0x30EB}, -- SQUARE RITTORU
 [0x3352] = {0x30EA, 0x30E9}, -- SQUARE RIRA
 [0x3353] = {0x30EB, 0x30D4, 0x30FC}, -- SQUARE RUPII
 [0x3354] = {0x30EB, 0x30FC, 0x30D6, 0x30EB}, -- SQUARE RUUBURU
 [0x3355] = {0x30EC, 0x30E0}, -- SQUARE REMU
 [0x3356] = {0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3}, -- SQUARE RENTOGEN
 [0x3357] = {0x30EF, 0x30C3, 0x30C8}, -- SQUARE WATTO
 [0x3358] = {0x0030, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
 [0x3359] = {0x0031, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
 [0x335A] = {0x0032, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
 [0x335B] = {0x0033, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
 [0x335C] = {0x0034, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
 [0x335D] = {0x0035, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
 [0x335E] = {0x0036, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
 [0x335F] = {0x0037, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
 [0x3360] = {0x0038, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
 [0x3361] = {0x0039, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
 [0x3362] = {0x0031, 0x0030, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
 [0x3363] = {0x0031, 0x0031, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
 [0x3364] = {0x0031, 0x0032, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
 [0x3365] = {0x0031, 0x0033, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
 [0x3366] = {0x0031, 0x0034, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
 [0x3367] = {0x0031, 0x0035, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
 [0x3368] = {0x0031, 0x0036, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
 [0x3369] = {0x0031, 0x0037, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
 [0x336A] = {0x0031, 0x0038, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
 [0x336B] = {0x0031, 0x0039, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
 [0x336C] = {0x0032, 0x0030, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
 [0x336D] = {0x0032, 0x0031, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
 [0x336E] = {0x0032, 0x0032, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
 [0x336F] = {0x0032, 0x0033, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
 [0x3370] = {0x0032, 0x0034, 0x70B9}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
 [0x3371] = {0x0068, 0x0070, 0x0061}, -- SQUARE HPA
 [0x3372] = {0x0064, 0x0061}, -- SQUARE DA
 [0x3373] = {0x0061, 0x0075}, -- SQUARE AU
 [0x3374] = {0x0062, 0x0061, 0x0072}, -- SQUARE BAR
 [0x3375] = {0x006F, 0x0076}, -- SQUARE OV
 [0x3376] = {0x0070, 0x0063}, -- SQUARE PC
 [0x3377] = {0x0064, 0x006D}, -- SQUARE DM
 [0x3378] = {0x0064, 0x006D, 0x0032}, -- SQUARE DM SQUARED
 [0x3379] = {0x0064, 0x006D, 0x0033}, -- SQUARE DM CUBED
 [0x337A] = {0x0069, 0x0075}, -- SQUARE IU
 [0x337B] = {0x5E73, 0x6210}, -- SQUARE ERA NAME HEISEI
 [0x337C] = {0x662D, 0x548C}, -- SQUARE ERA NAME SYOUWA
 [0x337D] = {0x5927, 0x6B63}, -- SQUARE ERA NAME TAISYOU
 [0x337E] = {0x660E, 0x6CBB}, -- SQUARE ERA NAME MEIZI
 [0x337F] = {0x682A, 0x5F0F, 0x4F1A, 0x793E}, -- SQUARE CORPORATION
 [0x3380] = {0x0070, 0x0061}, -- SQUARE PA AMPS
 [0x3381] = {0x006E, 0x0061}, -- SQUARE NA
 [0x3382] = {0x03BC, 0x0061}, -- SQUARE MU A
 [0x3383] = {0x006D, 0x0061}, -- SQUARE MA
 [0x3384] = {0x006B, 0x0061}, -- SQUARE KA
 [0x3385] = {0x006B, 0x0062}, -- SQUARE KB
 [0x3386] = {0x006D, 0x0062}, -- SQUARE MB
 [0x3387] = {0x0067, 0x0062}, -- SQUARE GB
 [0x3388] = {0x0063, 0x0061, 0x006C}, -- SQUARE CAL
 [0x3389] = {0x006B, 0x0063, 0x0061, 0x006C}, -- SQUARE KCAL
 [0x338A] = {0x0070, 0x0066}, -- SQUARE PF
 [0x338B] = {0x006E, 0x0066}, -- SQUARE NF
 [0x338C] = {0x03BC, 0x0066}, -- SQUARE MU F
 [0x338D] = {0x03BC, 0x0067}, -- SQUARE MU G
 [0x338E] = {0x006D, 0x0067}, -- SQUARE MG
 [0x338F] = {0x006B, 0x0067}, -- SQUARE KG
 [0x3390] = {0x0068, 0x007A}, -- SQUARE HZ
 [0x3391] = {0x006B, 0x0068, 0x007A}, -- SQUARE KHZ
 [0x3392] = {0x006D, 0x0068, 0x007A}, -- SQUARE MHZ
 [0x3393] = {0x0067, 0x0068, 0x007A}, -- SQUARE GHZ
 [0x3394] = {0x0074, 0x0068, 0x007A}, -- SQUARE THZ
 [0x3395] = {0x03BC, 0x006C}, -- SQUARE MU L
 [0x3396] = {0x006D, 0x006C}, -- SQUARE ML
 [0x3397] = {0x0064, 0x006C}, -- SQUARE DL
 [0x3398] = {0x006B, 0x006C}, -- SQUARE KL
 [0x3399] = {0x0066, 0x006D}, -- SQUARE FM
 [0x339A] = {0x006E, 0x006D}, -- SQUARE NM
 [0x339B] = {0x03BC, 0x006D}, -- SQUARE MU M
 [0x339C] = {0x006D, 0x006D}, -- SQUARE MM
 [0x339D] = {0x0063, 0x006D}, -- SQUARE CM
 [0x339E] = {0x006B, 0x006D}, -- SQUARE KM
 [0x339F] = {0x006D, 0x006D, 0x0032}, -- SQUARE MM SQUARED
 [0x33A0] = {0x0063, 0x006D, 0x0032}, -- SQUARE CM SQUARED
 [0x33A1] = {0x006D, 0x0032}, -- SQUARE M SQUARED
 [0x33A2] = {0x006B, 0x006D, 0x0032}, -- SQUARE KM SQUARED
 [0x33A3] = {0x006D, 0x006D, 0x0033}, -- SQUARE MM CUBED
 [0x33A4] = {0x0063, 0x006D, 0x0033}, -- SQUARE CM CUBED
 [0x33A5] = {0x006D, 0x0033}, -- SQUARE M CUBED
 [0x33A6] = {0x006B, 0x006D, 0x0033}, -- SQUARE KM CUBED
 [0x33A7] = {0x006D, 0x2215, 0x0073}, -- SQUARE M OVER S
 [0x33A8] = {0x006D, 0x2215, 0x0073, 0x0032}, -- SQUARE M OVER S SQUARED
 [0x33A9] = {0x0070, 0x0061}, -- SQUARE PA
 [0x33AA] = {0x006B, 0x0070, 0x0061}, -- SQUARE KPA
 [0x33AB] = {0x006D, 0x0070, 0x0061}, -- SQUARE MPA
 [0x33AC] = {0x0067, 0x0070, 0x0061}, -- SQUARE GPA
 [0x33AD] = {0x0072, 0x0061, 0x0064}, -- SQUARE RAD
 [0x33AE] = {0x0072, 0x0061, 0x0064, 0x2215, 0x0073}, -- SQUARE RAD OVER S
 [0x33AF] = {0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x0032}, -- SQUARE RAD OVER S SQUARED
 [0x33B0] = {0x0070, 0x0073}, -- SQUARE PS
 [0x33B1] = {0x006E, 0x0073}, -- SQUARE NS
 [0x33B2] = {0x03BC, 0x0073}, -- SQUARE MU S
 [0x33B3] = {0x006D, 0x0073}, -- SQUARE MS
 [0x33B4] = {0x0070, 0x0076}, -- SQUARE PV
 [0x33B5] = {0x006E, 0x0076}, -- SQUARE NV
 [0x33B6] = {0x03BC, 0x0076}, -- SQUARE MU V
 [0x33B7] = {0x006D, 0x0076}, -- SQUARE MV
 [0x33B8] = {0x006B, 0x0076}, -- SQUARE KV
 [0x33B9] = {0x006D, 0x0076}, -- SQUARE MV MEGA
 [0x33BA] = {0x0070, 0x0077}, -- SQUARE PW
 [0x33BB] = {0x006E, 0x0077}, -- SQUARE NW
 [0x33BC] = {0x03BC, 0x0077}, -- SQUARE MU W
 [0x33BD] = {0x006D, 0x0077}, -- SQUARE MW
 [0x33BE] = {0x006B, 0x0077}, -- SQUARE KW
 [0x33BF] = {0x006D, 0x0077}, -- SQUARE MW MEGA
 [0x33C0] = {0x006B, 0x03C9}, -- SQUARE K OHM
 [0x33C1] = {0x006D, 0x03C9}, -- SQUARE M OHM
 [0x33C2] = {status="disallowed"}, -- SQUARE AM
 [0x33C3] = {0x0062, 0x0071}, -- SQUARE BQ
 [0x33C4] = {0x0063, 0x0063}, -- SQUARE CC
 [0x33C5] = {0x0063, 0x0064}, -- SQUARE CD
 [0x33C6] = {0x0063, 0x2215, 0x006B, 0x0067}, -- SQUARE C OVER KG
 [0x33C7] = {status="disallowed"}, -- SQUARE CO
 [0x33C8] = {0x0064, 0x0062}, -- SQUARE DB
 [0x33C9] = {0x0067, 0x0079}, -- SQUARE GY
 [0x33CA] = {0x0068, 0x0061}, -- SQUARE HA
 [0x33CB] = {0x0068, 0x0070}, -- SQUARE HP
 [0x33CC] = {0x0069, 0x006E}, -- SQUARE IN
 [0x33CD] = {0x006B, 0x006B}, -- SQUARE KK
 [0x33CE] = {0x006B, 0x006D}, -- SQUARE KM CAPITAL
 [0x33CF] = {0x006B, 0x0074}, -- SQUARE KT
 [0x33D0] = {0x006C, 0x006D}, -- SQUARE LM
 [0x33D1] = {0x006C, 0x006E}, -- SQUARE LN
 [0x33D2] = {0x006C, 0x006F, 0x0067}, -- SQUARE LOG
 [0x33D3] = {0x006C, 0x0078}, -- SQUARE LX
 [0x33D4] = {0x006D, 0x0062}, -- SQUARE MB SMALL
 [0x33D5] = {0x006D, 0x0069, 0x006C}, -- SQUARE MIL
 [0x33D6] = {0x006D, 0x006F, 0x006C}, -- SQUARE MOL
 [0x33D7] = {0x0070, 0x0068}, -- SQUARE PH
 [0x33D8] = {status="disallowed"}, -- SQUARE PM
 [0x33D9] = {0x0070, 0x0070, 0x006D}, -- SQUARE PPM
 [0x33DA] = {0x0070, 0x0072}, -- SQUARE PR
 [0x33DB] = {0x0073, 0x0072}, -- SQUARE SR
 [0x33DC] = {0x0073, 0x0076}, -- SQUARE SV
 [0x33DD] = {0x0077, 0x0062}, -- SQUARE WB
 [0x33DE] = {0x0076, 0x2215, 0x006D}, -- SQUARE V OVER M
 [0x33DF] = {0x0061, 0x2215, 0x006D}, -- SQUARE A OVER M
 [0x33E0] = {0x0031, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
 [0x33E1] = {0x0032, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
 [0x33E2] = {0x0033, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
 [0x33E3] = {0x0034, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
 [0x33E4] = {0x0035, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
 [0x33E5] = {0x0036, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
 [0x33E6] = {0x0037, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
 [0x33E7] = {0x0038, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
 [0x33E8] = {0x0039, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
 [0x33E9] = {0x0031, 0x0030, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
 [0x33EA] = {0x0031, 0x0031, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
 [0x33EB] = {0x0031, 0x0032, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
 [0x33EC] = {0x0031, 0x0033, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
 [0x33ED] = {0x0031, 0x0034, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
 [0x33EE] = {0x0031, 0x0035, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
 [0x33EF] = {0x0031, 0x0036, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
 [0x33F0] = {0x0031, 0x0037, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
 [0x33F1] = {0x0031, 0x0038, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
 [0x33F2] = {0x0031, 0x0039, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
 [0x33F3] = {0x0032, 0x0030, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
 [0x33F4] = {0x0032, 0x0031, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
 [0x33F5] = {0x0032, 0x0032, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
 [0x33F6] = {0x0032, 0x0033, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
 [0x33F7] = {0x0032, 0x0034, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
 [0x33F8] = {0x0032, 0x0035, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
 [0x33F9] = {0x0032, 0x0036, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
 [0x33FA] = {0x0032, 0x0037, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
 [0x33FB] = {0x0032, 0x0038, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
 [0x33FC] = {0x0032, 0x0039, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
 [0x33FD] = {0x0033, 0x0030, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
 [0x33FE] = {0x0033, 0x0031, 0x65E5}, -- IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
 [0x33FF] = {0x0067, 0x0061, 0x006C}, -- SQUARE GAL
 [0x9FCC] = {status="valid"}, -- CJK UNIFIED IDEOGRAPH-9FCC
 -- NA   <reserved-A48D>..<reserved-A48F>
 [0xA48D] = {status="disallowed"},
 [0xA48E] = {status="disallowed"},
 [0xA48F] = {status="disallowed"},
 [0xA4B4] = {status="disallowed"}, -- YI RADICAL NZUP
 [0xA4C1] = {status="disallowed"}, -- YI RADICAL ZUR
 [0xA4C5] = {status="disallowed"}, -- YI RADICAL NBIE
 [0xA4C6] = {status="disallowed"}, -- YI RADICAL KE
 -- YI RADICAL SHOP..YI RADICAL ZZIET
 [0xA4C2] = {status="disallowed"},
 [0xA4C3] = {status="disallowed"},
 [0xA4C4] = {status="disallowed"},
 -- LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
 [0xA4FE] = {status="disallowed"},
 [0xA4FF] = {status="disallowed"},
 -- VAI COMMA..VAI QUESTION MARK
 [0xA60D] = {status="disallowed"},
 [0xA60E] = {status="disallowed"},
 [0xA60F] = {status="disallowed"},
 [0xA640] = 0xA641, -- CYRILLIC CAPITAL LETTER ZEMLYA
 [0xA641] = {status="valid"}, -- CYRILLIC SMALL LETTER ZEMLYA
 [0xA642] = 0xA643, -- CYRILLIC CAPITAL LETTER DZELO
 [0xA643] = {status="valid"}, -- CYRILLIC SMALL LETTER DZELO
 [0xA644] = 0xA645, -- CYRILLIC CAPITAL LETTER REVERSED DZE
 [0xA645] = {status="valid"}, -- CYRILLIC SMALL LETTER REVERSED DZE
 [0xA646] = 0xA647, -- CYRILLIC CAPITAL LETTER IOTA
 [0xA647] = {status="valid"}, -- CYRILLIC SMALL LETTER IOTA
 [0xA648] = 0xA649, -- CYRILLIC CAPITAL LETTER DJERV
 [0xA649] = {status="valid"}, -- CYRILLIC SMALL LETTER DJERV
 [0xA64A] = 0xA64B, -- CYRILLIC CAPITAL LETTER MONOGRAPH UK
 [0xA64B] = {status="valid"}, -- CYRILLIC SMALL LETTER MONOGRAPH UK
 [0xA64C] = 0xA64D, -- CYRILLIC CAPITAL LETTER BROAD OMEGA
 [0xA64D] = {status="valid"}, -- CYRILLIC SMALL LETTER BROAD OMEGA
 [0xA64E] = 0xA64F, -- CYRILLIC CAPITAL LETTER NEUTRAL YER
 [0xA64F] = {status="valid"}, -- CYRILLIC SMALL LETTER NEUTRAL YER
 [0xA650] = 0xA651, -- CYRILLIC CAPITAL LETTER YERU WITH BACK YER
 [0xA651] = {status="valid"}, -- CYRILLIC SMALL LETTER YERU WITH BACK YER
 [0xA652] = 0xA653, -- CYRILLIC CAPITAL LETTER IOTIFIED YAT
 [0xA653] = {status="valid"}, -- CYRILLIC SMALL LETTER IOTIFIED YAT
 [0xA654] = 0xA655, -- CYRILLIC CAPITAL LETTER REVERSED YU
 [0xA655] = {status="valid"}, -- CYRILLIC SMALL LETTER REVERSED YU
 [0xA656] = 0xA657, -- CYRILLIC CAPITAL LETTER IOTIFIED A
 [0xA657] = {status="valid"}, -- CYRILLIC SMALL LETTER IOTIFIED A
 [0xA658] = 0xA659, -- CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
 [0xA659] = {status="valid"}, -- CYRILLIC SMALL LETTER CLOSED LITTLE YUS
 [0xA65A] = 0xA65B, -- CYRILLIC CAPITAL LETTER BLENDED YUS
 [0xA65B] = {status="valid"}, -- CYRILLIC SMALL LETTER BLENDED YUS
 [0xA65C] = 0xA65D, -- CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
 [0xA65D] = {status="valid"}, -- CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
 [0xA65E] = 0xA65F, -- CYRILLIC CAPITAL LETTER YN
 [0xA65F] = {status="valid"}, -- CYRILLIC SMALL LETTER YN
 [0xA660] = 0xA661, -- CYRILLIC CAPITAL LETTER REVERSED TSE
 [0xA661] = {status="valid"}, -- CYRILLIC SMALL LETTER REVERSED TSE
 [0xA662] = 0xA663, -- CYRILLIC CAPITAL LETTER SOFT DE
 [0xA663] = {status="valid"}, -- CYRILLIC SMALL LETTER SOFT DE
 [0xA664] = 0xA665, -- CYRILLIC CAPITAL LETTER SOFT EL
 [0xA665] = {status="valid"}, -- CYRILLIC SMALL LETTER SOFT EL
 [0xA666] = 0xA667, -- CYRILLIC CAPITAL LETTER SOFT EM
 [0xA667] = {status="valid"}, -- CYRILLIC SMALL LETTER SOFT EM
 [0xA668] = 0xA669, -- CYRILLIC CAPITAL LETTER MONOCULAR O
 [0xA669] = {status="valid"}, -- CYRILLIC SMALL LETTER MONOCULAR O
 [0xA66A] = 0xA66B, -- CYRILLIC CAPITAL LETTER BINOCULAR O
 [0xA66B] = {status="valid"}, -- CYRILLIC SMALL LETTER BINOCULAR O
 [0xA66C] = 0xA66D, -- CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
 -- CYRILLIC SMALL LETTER DOUBLE MONOCULAR O..COMBINING CYRILLIC VZMET
 [0xA66D] = {status="valid"},
 [0xA66E] = {status="valid"},
 [0xA66F] = {status="valid"},
 -- COMBINING CYRILLIC TEN MILLIONS SIGN..SLAVONIC ASTERISK
 [0xA670] = {status="disallowed"},
 [0xA671] = {status="disallowed"},
 [0xA672] = {status="disallowed"},
 [0xA673] = {status="disallowed"},
 [0xA67E] = {status="disallowed"}, -- CYRILLIC KAVYKA
 [0xA67F] = {status="valid"}, -- CYRILLIC PAYEROK
 [0xA680] = 0xA681, -- CYRILLIC CAPITAL LETTER DWE
 [0xA681] = {status="valid"}, -- CYRILLIC SMALL LETTER DWE
 [0xA682] = 0xA683, -- CYRILLIC CAPITAL LETTER DZWE
 [0xA683] = {status="valid"}, -- CYRILLIC SMALL LETTER DZWE
 [0xA684] = 0xA685, -- CYRILLIC CAPITAL LETTER ZHWE
 [0xA685] = {status="valid"}, -- CYRILLIC SMALL LETTER ZHWE
 [0xA686] = 0xA687, -- CYRILLIC CAPITAL LETTER CCHE
 [0xA687] = {status="valid"}, -- CYRILLIC SMALL LETTER CCHE
 [0xA688] = 0xA689, -- CYRILLIC CAPITAL LETTER DZZE
 [0xA689] = {status="valid"}, -- CYRILLIC SMALL LETTER DZZE
 [0xA68A] = 0xA68B, -- CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
 [0xA68B] = {status="valid"}, -- CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
 [0xA68C] = 0xA68D, -- CYRILLIC CAPITAL LETTER TWE
 [0xA68D] = {status="valid"}, -- CYRILLIC SMALL LETTER TWE
 [0xA68E] = 0xA68F, -- CYRILLIC CAPITAL LETTER TSWE
 [0xA68F] = {status="valid"}, -- CYRILLIC SMALL LETTER TSWE
 [0xA690] = 0xA691, -- CYRILLIC CAPITAL LETTER TSSE
 [0xA691] = {status="valid"}, -- CYRILLIC SMALL LETTER TSSE
 [0xA692] = 0xA693, -- CYRILLIC CAPITAL LETTER TCHE
 [0xA693] = {status="valid"}, -- CYRILLIC SMALL LETTER TCHE
 [0xA694] = 0xA695, -- CYRILLIC CAPITAL LETTER HWE
 [0xA695] = {status="valid"}, -- CYRILLIC SMALL LETTER HWE
 [0xA696] = 0xA697, -- CYRILLIC CAPITAL LETTER SHWE
 [0xA697] = {status="valid"}, -- CYRILLIC SMALL LETTER SHWE
 [0xA698] = 0xA699, -- CYRILLIC CAPITAL LETTER DOUBLE O
 [0xA699] = {status="valid"}, -- CYRILLIC SMALL LETTER DOUBLE O
 [0xA69A] = 0xA69B, -- CYRILLIC CAPITAL LETTER CROSSED O
 [0xA69B] = {status="valid"}, -- CYRILLIC SMALL LETTER CROSSED O
 [0xA69C] = 0x044A, -- MODIFIER LETTER CYRILLIC HARD SIGN
 [0xA69D] = 0x044C, -- MODIFIER LETTER CYRILLIC SOFT SIGN
 [0xA69E] = {status="valid"}, -- COMBINING CYRILLIC LETTER EF
 [0xA69F] = {status="valid"}, -- COMBINING CYRILLIC LETTER IOTIFIED E
 -- BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
 [0xA6F0] = {status="valid"},
 [0xA6F1] = {status="valid"},
 [0xA722] = 0xA723, -- LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
 [0xA723] = {status="valid"}, -- LATIN SMALL LETTER EGYPTOLOGICAL ALEF
 [0xA724] = 0xA725, -- LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
 [0xA725] = {status="valid"}, -- LATIN SMALL LETTER EGYPTOLOGICAL AIN
 [0xA726] = 0xA727, -- LATIN CAPITAL LETTER HENG
 [0xA727] = {status="valid"}, -- LATIN SMALL LETTER HENG
 [0xA728] = 0xA729, -- LATIN CAPITAL LETTER TZ
 [0xA729] = {status="valid"}, -- LATIN SMALL LETTER TZ
 [0xA72A] = 0xA72B, -- LATIN CAPITAL LETTER TRESILLO
 [0xA72B] = {status="valid"}, -- LATIN SMALL LETTER TRESILLO
 [0xA72C] = 0xA72D, -- LATIN CAPITAL LETTER CUATRILLO
 [0xA72D] = {status="valid"}, -- LATIN SMALL LETTER CUATRILLO
 [0xA72E] = 0xA72F, -- LATIN CAPITAL LETTER CUATRILLO WITH COMMA
 -- MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
 [0xA720] = {status="disallowed"},
 [0xA721] = {status="disallowed"},
 [0xA732] = 0xA733, -- LATIN CAPITAL LETTER AA
 [0xA733] = {status="valid"}, -- LATIN SMALL LETTER AA
 [0xA734] = 0xA735, -- LATIN CAPITAL LETTER AO
 [0xA735] = {status="valid"}, -- LATIN SMALL LETTER AO
 [0xA736] = 0xA737, -- LATIN CAPITAL LETTER AU
 [0xA737] = {status="valid"}, -- LATIN SMALL LETTER AU
 [0xA738] = 0xA739, -- LATIN CAPITAL LETTER AV
 [0xA739] = {status="valid"}, -- LATIN SMALL LETTER AV
 [0xA73A] = 0xA73B, -- LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
 [0xA73B] = {status="valid"}, -- LATIN SMALL LETTER AV WITH HORIZONTAL BAR
 [0xA73C] = 0xA73D, -- LATIN CAPITAL LETTER AY
 [0xA73D] = {status="valid"}, -- LATIN SMALL LETTER AY
 [0xA73E] = 0xA73F, -- LATIN CAPITAL LETTER REVERSED C WITH DOT
 [0xA73F] = {status="valid"}, -- LATIN SMALL LETTER REVERSED C WITH DOT
 [0xA740] = 0xA741, -- LATIN CAPITAL LETTER K WITH STROKE
 [0xA741] = {status="valid"}, -- LATIN SMALL LETTER K WITH STROKE
 [0xA742] = 0xA743, -- LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
 [0xA743] = {status="valid"}, -- LATIN SMALL LETTER K WITH DIAGONAL STROKE
 [0xA744] = 0xA745, -- LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
 [0xA745] = {status="valid"}, -- LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
 [0xA746] = 0xA747, -- LATIN CAPITAL LETTER BROKEN L
 [0xA747] = {status="valid"}, -- LATIN SMALL LETTER BROKEN L
 [0xA748] = 0xA749, -- LATIN CAPITAL LETTER L WITH HIGH STROKE
 [0xA749] = {status="valid"}, -- LATIN SMALL LETTER L WITH HIGH STROKE
 [0xA74A] = 0xA74B, -- LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
 [0xA74B] = {status="valid"}, -- LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
 [0xA74C] = 0xA74D, -- LATIN CAPITAL LETTER O WITH LOOP
 [0xA74D] = {status="valid"}, -- LATIN SMALL LETTER O WITH LOOP
 [0xA74E] = 0xA74F, -- LATIN CAPITAL LETTER OO
 [0xA74F] = {status="valid"}, -- LATIN SMALL LETTER OO
 [0xA750] = 0xA751, -- LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
 [0xA751] = {status="valid"}, -- LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
 [0xA752] = 0xA753, -- LATIN CAPITAL LETTER P WITH FLOURISH
 [0xA753] = {status="valid"}, -- LATIN SMALL LETTER P WITH FLOURISH
 [0xA754] = 0xA755, -- LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
 [0xA755] = {status="valid"}, -- LATIN SMALL LETTER P WITH SQUIRREL TAIL
 [0xA756] = 0xA757, -- LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
 [0xA757] = {status="valid"}, -- LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
 [0xA758] = 0xA759, -- LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
 [0xA759] = {status="valid"}, -- LATIN SMALL LETTER Q WITH DIAGONAL STROKE
 [0xA75A] = 0xA75B, -- LATIN CAPITAL LETTER R ROTUNDA
 [0xA75B] = {status="valid"}, -- LATIN SMALL LETTER R ROTUNDA
 [0xA75C] = 0xA75D, -- LATIN CAPITAL LETTER RUM ROTUNDA
 [0xA75D] = {status="valid"}, -- LATIN SMALL LETTER RUM ROTUNDA
 [0xA75E] = 0xA75F, -- LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
 [0xA75F] = {status="valid"}, -- LATIN SMALL LETTER V WITH DIAGONAL STROKE
 [0xA760] = 0xA761, -- LATIN CAPITAL LETTER VY
 [0xA761] = {status="valid"}, -- LATIN SMALL LETTER VY
 [0xA762] = 0xA763, -- LATIN CAPITAL LETTER VISIGOTHIC Z
 [0xA763] = {status="valid"}, -- LATIN SMALL LETTER VISIGOTHIC Z
 [0xA764] = 0xA765, -- LATIN CAPITAL LETTER THORN WITH STROKE
 [0xA765] = {status="valid"}, -- LATIN SMALL LETTER THORN WITH STROKE
 [0xA766] = 0xA767, -- LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
 [0xA767] = {status="valid"}, -- LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
 [0xA768] = 0xA769, -- LATIN CAPITAL LETTER VEND
 [0xA769] = {status="valid"}, -- LATIN SMALL LETTER VEND
 [0xA76A] = 0xA76B, -- LATIN CAPITAL LETTER ET
 [0xA76B] = {status="valid"}, -- LATIN SMALL LETTER ET
 [0xA76C] = 0xA76D, -- LATIN CAPITAL LETTER IS
 [0xA76D] = {status="valid"}, -- LATIN SMALL LETTER IS
 [0xA76E] = 0xA76F, -- LATIN CAPITAL LETTER CON
 [0xA76F] = {status="valid"}, -- LATIN SMALL LETTER CON
 [0xA770] = 0xA76F, -- MODIFIER LETTER US
 -- LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S
 [0xA72F] = {status="valid"},
 [0xA730] = {status="valid"},
 [0xA731] = {status="valid"},
 [0xA779] = 0xA77A, -- LATIN CAPITAL LETTER INSULAR D
 [0xA77A] = {status="valid"}, -- LATIN SMALL LETTER INSULAR D
 [0xA77B] = 0xA77C, -- LATIN CAPITAL LETTER INSULAR F
 [0xA77C] = {status="valid"}, -- LATIN SMALL LETTER INSULAR F
 [0xA77D] = 0x1D79, -- LATIN CAPITAL LETTER INSULAR G
 [0xA77E] = 0xA77F, -- LATIN CAPITAL LETTER TURNED INSULAR G
 [0xA77F] = {status="valid"}, -- LATIN SMALL LETTER TURNED INSULAR G
 [0xA780] = 0xA781, -- LATIN CAPITAL LETTER TURNED L
 [0xA781] = {status="valid"}, -- LATIN SMALL LETTER TURNED L
 [0xA782] = 0xA783, -- LATIN CAPITAL LETTER INSULAR R
 [0xA783] = {status="valid"}, -- LATIN SMALL LETTER INSULAR R
 [0xA784] = 0xA785, -- LATIN CAPITAL LETTER INSULAR S
 [0xA785] = {status="valid"}, -- LATIN SMALL LETTER INSULAR S
 [0xA786] = 0xA787, -- LATIN CAPITAL LETTER INSULAR T
 -- LATIN SMALL LETTER INSULAR T..MODIFIER LETTER LOW CIRCUMFLEX ACCENT
 [0xA787] = {status="valid"},
 [0xA788] = {status="valid"},
 [0xA78B] = 0xA78C, -- LATIN CAPITAL LETTER SALTILLO
 [0xA78C] = {status="valid"}, -- LATIN SMALL LETTER SALTILLO
 [0xA78D] = 0x0265, -- LATIN CAPITAL LETTER TURNED H
 [0xA78E] = {status="valid"}, -- LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
 [0xA78F] = {status="valid"}, -- LATIN LETTER SINOLOGICAL DOT
 [0xA790] = 0xA791, -- LATIN CAPITAL LETTER N WITH DESCENDER
 [0xA791] = {status="valid"}, -- LATIN SMALL LETTER N WITH DESCENDER
 [0xA792] = 0xA793, -- LATIN CAPITAL LETTER C WITH BAR
 [0xA793] = {status="valid"}, -- LATIN SMALL LETTER C WITH BAR
 -- MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
 [0xA789] = {status="disallowed"},
 [0xA78A] = {status="disallowed"},
 [0xA796] = 0xA797, -- LATIN CAPITAL LETTER B WITH FLOURISH
 [0xA797] = {status="valid"}, -- LATIN SMALL LETTER B WITH FLOURISH
 [0xA798] = 0xA799, -- LATIN CAPITAL LETTER F WITH STROKE
 [0xA799] = {status="valid"}, -- LATIN SMALL LETTER F WITH STROKE
 [0xA79A] = 0xA79B, -- LATIN CAPITAL LETTER VOLAPUK AE
 [0xA79B] = {status="valid"}, -- LATIN SMALL LETTER VOLAPUK AE
 [0xA79C] = 0xA79D, -- LATIN CAPITAL LETTER VOLAPUK OE
 [0xA79D] = {status="valid"}, -- LATIN SMALL LETTER VOLAPUK OE
 [0xA79E] = 0xA79F, -- LATIN CAPITAL LETTER VOLAPUK UE
 [0xA79F] = {status="valid"}, -- LATIN SMALL LETTER VOLAPUK UE
 [0xA7A0] = 0xA7A1, -- LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
 [0xA7A1] = {status="valid"}, -- LATIN SMALL LETTER G WITH OBLIQUE STROKE
 [0xA7A2] = 0xA7A3, -- LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
 [0xA7A3] = {status="valid"}, -- LATIN SMALL LETTER K WITH OBLIQUE STROKE
 [0xA7A4] = 0xA7A5, -- LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
 [0xA7A5] = {status="valid"}, -- LATIN SMALL LETTER N WITH OBLIQUE STROKE
 [0xA7A6] = 0xA7A7, -- LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
 [0xA7A7] = {status="valid"}, -- LATIN SMALL LETTER R WITH OBLIQUE STROKE
 [0xA7A8] = 0xA7A9, -- LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
 [0xA7A9] = {status="valid"}, -- LATIN SMALL LETTER S WITH OBLIQUE STROKE
 [0xA7AA] = 0x0266, -- LATIN CAPITAL LETTER H WITH HOOK
 [0xA7AB] = 0x025C, -- LATIN CAPITAL LETTER REVERSED OPEN E
 [0xA7AC] = 0x0261, -- LATIN CAPITAL LETTER SCRIPT G
 [0xA7AD] = 0x026C, -- LATIN CAPITAL LETTER L WITH BELT
 [0xA7AE] = 0x026A, -- LATIN CAPITAL LETTER SMALL CAPITAL I
 [0xA7AF] = {status="disallowed"}, -- NA   <reserved-A7AF>
 [0xA7B0] = 0x029E, -- LATIN CAPITAL LETTER TURNED K
 [0xA7B1] = 0x0287, -- LATIN CAPITAL LETTER TURNED T
 [0xA7B2] = 0x029D, -- LATIN CAPITAL LETTER J WITH CROSSED-TAIL
 [0xA7B3] = 0xAB53, -- LATIN CAPITAL LETTER CHI
 [0xA7B4] = 0xA7B5, -- LATIN CAPITAL LETTER BETA
 [0xA7B5] = {status="valid"}, -- LATIN SMALL LETTER BETA
 [0xA7B6] = 0xA7B7, -- LATIN CAPITAL LETTER OMEGA
 [0xA7B7] = {status="valid"}, -- LATIN SMALL LETTER OMEGA
 -- LATIN SMALL LETTER C WITH PALATAL HOOK..LATIN SMALL LETTER H WITH PALATAL HOOK
 [0xA794] = {status="valid"},
 [0xA795] = {status="valid"},
 [0xA7F7] = {status="valid"}, -- LATIN EPIGRAPHIC LETTER SIDEWAYS I
 [0xA7F8] = 0x0127, -- MODIFIER LETTER CAPITAL H WITH STROKE
 [0xA7F9] = 0x0153, -- MODIFIER LETTER SMALL LIGATURE OE
 [0xA7FA] = {status="valid"}, -- LATIN LETTER SMALL CAPITAL TURNED M
 -- SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
 [0xA828] = {status="disallowed"},
 [0xA829] = {status="disallowed"},
 [0xA82A] = {status="disallowed"},
 [0xA82B] = {status="disallowed"},
 -- NA   <reserved-A82C>..<reserved-A82F>
 [0xA82C] = {status="disallowed"},
 [0xA82D] = {status="disallowed"},
 [0xA82E] = {status="disallowed"},
 [0xA82F] = {status="disallowed"},
 -- PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
 [0xA874] = {status="disallowed"},
 [0xA875] = {status="disallowed"},
 [0xA876] = {status="disallowed"},
 [0xA877] = {status="disallowed"},
 [0xA8C5] = {status="valid"}, -- SAURASHTRA SIGN CANDRABINDU
 -- SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
 [0xA8CE] = {status="disallowed"},
 [0xA8CF] = {status="disallowed"},
 [0xA8FB] = {status="valid"}, -- DEVANAGARI HEADSTROKE
 [0xA8FC] = {status="disallowed"}, -- DEVANAGARI SIGN SIDDHAM
 [0xA8FD] = {status="valid"}, -- DEVANAGARI JAIN OM
 -- DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
 [0xA8F8] = {status="disallowed"},
 [0xA8F9] = {status="disallowed"},
 [0xA8FA] = {status="disallowed"},
 -- NA   <reserved-A8FE>..<reserved-A8FF>
 [0xA8FE] = {status="disallowed"},
 [0xA8FF] = {status="disallowed"},
 -- KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
 [0xA92E] = {status="disallowed"},
 [0xA92F] = {status="disallowed"},
 [0xA95F] = {status="disallowed"}, -- REJANG SECTION MARK
 -- NA   <reserved-A97D>..<reserved-A97F>
 [0xA97D] = {status="disallowed"},
 [0xA97E] = {status="disallowed"},
 [0xA97F] = {status="disallowed"},
 [0xA9CE] = {status="disallowed"}, -- NA   <reserved-A9CE>
 -- NA   <reserved-A9DA>..<reserved-A9DD>
 [0xA9DA] = {status="disallowed"},
 [0xA9DB] = {status="disallowed"},
 [0xA9DC] = {status="disallowed"},
 [0xA9DD] = {status="disallowed"},
 -- JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN
 [0xA9DE] = {status="disallowed"},
 [0xA9DF] = {status="disallowed"},
 [0xA9FF] = {status="disallowed"}, -- NA   <reserved-A9FF>
 -- NA   <reserved-AA4E>..<reserved-AA4F>
 [0xAA4E] = {status="disallowed"},
 [0xAA4F] = {status="disallowed"},
 -- NA   <reserved-AA5A>..<reserved-AA5B>
 [0xAA5A] = {status="disallowed"},
 [0xAA5B] = {status="disallowed"},
 -- CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA
 [0xAA5C] = {status="disallowed"},
 [0xAA5D] = {status="disallowed"},
 [0xAA5E] = {status="disallowed"},
 [0xAA5F] = {status="disallowed"},
 -- MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO
 [0xAA77] = {status="disallowed"},
 [0xAA78] = {status="disallowed"},
 [0xAA79] = {status="disallowed"},
 -- TAI VIET SYMBOL KON..TAI VIET SYMBOL SAM
 [0xAADB] = {status="valid"},
 [0xAADC] = {status="valid"},
 [0xAADD] = {status="valid"},
 -- TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI
 [0xAADE] = {status="disallowed"},
 [0xAADF] = {status="disallowed"},
 -- MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
 [0xAAF0] = {status="disallowed"},
 [0xAAF1] = {status="disallowed"},
 -- MEETEI MAYEK ANJI..MEETEI MAYEK VIRAMA
 [0xAAF2] = {status="valid"},
 [0xAAF3] = {status="valid"},
 [0xAAF4] = {status="valid"},
 [0xAAF5] = {status="valid"},
 [0xAAF6] = {status="valid"},
 -- NA   <reserved-AB07>..<reserved-AB08>
 [0xAB07] = {status="disallowed"},
 [0xAB08] = {status="disallowed"},
 -- NA   <reserved-AB0F>..<reserved-AB10>
 [0xAB0F] = {status="disallowed"},
 [0xAB10] = {status="disallowed"},
 [0xAB27] = {status="disallowed"}, -- NA   <reserved-AB27>
 [0xAB2F] = {status="disallowed"}, -- NA   <reserved-AB2F>
 [0xAB5B] = {status="disallowed"}, -- MODIFIER BREVE WITH INVERTED BREVE
 [0xAB5C] = 0xA727, -- MODIFIER LETTER SMALL HENG
 [0xAB5D] = 0xAB37, -- MODIFIER LETTER SMALL L WITH INVERTED LAZY S
 [0xAB5E] = 0x026B, -- MODIFIER LETTER SMALL L WITH MIDDLE TILDE
 [0xAB5F] = 0xAB52, -- MODIFIER LETTER SMALL U WITH LEFT HOOK
 [0xAB70] = 0x13A0, -- CHEROKEE SMALL LETTER A
 [0xAB71] = 0x13A1, -- CHEROKEE SMALL LETTER E
 [0xAB72] = 0x13A2, -- CHEROKEE SMALL LETTER I
 [0xAB73] = 0x13A3, -- CHEROKEE SMALL LETTER O
 [0xAB74] = 0x13A4, -- CHEROKEE SMALL LETTER U
 [0xAB75] = 0x13A5, -- CHEROKEE SMALL LETTER V
 [0xAB76] = 0x13A6, -- CHEROKEE SMALL LETTER GA
 [0xAB77] = 0x13A7, -- CHEROKEE SMALL LETTER KA
 [0xAB78] = 0x13A8, -- CHEROKEE SMALL LETTER GE
 [0xAB79] = 0x13A9, -- CHEROKEE SMALL LETTER GI
 [0xAB7A] = 0x13AA, -- CHEROKEE SMALL LETTER GO
 [0xAB7B] = 0x13AB, -- CHEROKEE SMALL LETTER GU
 [0xAB7C] = 0x13AC, -- CHEROKEE SMALL LETTER GV
 [0xAB7D] = 0x13AD, -- CHEROKEE SMALL LETTER HA
 [0xAB7E] = 0x13AE, -- CHEROKEE SMALL LETTER HE
 [0xAB7F] = 0x13AF, -- CHEROKEE SMALL LETTER HI
 [0xAB80] = 0x13B0, -- CHEROKEE SMALL LETTER HO
 [0xAB81] = 0x13B1, -- CHEROKEE SMALL LETTER HU
 [0xAB82] = 0x13B2, -- CHEROKEE SMALL LETTER HV
 [0xAB83] = 0x13B3, -- CHEROKEE SMALL LETTER LA
 [0xAB84] = 0x13B4, -- CHEROKEE SMALL LETTER LE
 [0xAB85] = 0x13B5, -- CHEROKEE SMALL LETTER LI
 [0xAB86] = 0x13B6, -- CHEROKEE SMALL LETTER LO
 [0xAB87] = 0x13B7, -- CHEROKEE SMALL LETTER LU
 [0xAB88] = 0x13B8, -- CHEROKEE SMALL LETTER LV
 [0xAB89] = 0x13B9, -- CHEROKEE SMALL LETTER MA
 [0xAB8A] = 0x13BA, -- CHEROKEE SMALL LETTER ME
 [0xAB8B] = 0x13BB, -- CHEROKEE SMALL LETTER MI
 [0xAB8C] = 0x13BC, -- CHEROKEE SMALL LETTER MO
 [0xAB8D] = 0x13BD, -- CHEROKEE SMALL LETTER MU
 [0xAB8E] = 0x13BE, -- CHEROKEE SMALL LETTER NA
 [0xAB8F] = 0x13BF, -- CHEROKEE SMALL LETTER HNA
 [0xAB90] = 0x13C0, -- CHEROKEE SMALL LETTER NAH
 [0xAB91] = 0x13C1, -- CHEROKEE SMALL LETTER NE
 [0xAB92] = 0x13C2, -- CHEROKEE SMALL LETTER NI
 [0xAB93] = 0x13C3, -- CHEROKEE SMALL LETTER NO
 [0xAB94] = 0x13C4, -- CHEROKEE SMALL LETTER NU
 [0xAB95] = 0x13C5, -- CHEROKEE SMALL LETTER NV
 [0xAB96] = 0x13C6, -- CHEROKEE SMALL LETTER QUA
 [0xAB97] = 0x13C7, -- CHEROKEE SMALL LETTER QUE
 [0xAB98] = 0x13C8, -- CHEROKEE SMALL LETTER QUI
 [0xAB99] = 0x13C9, -- CHEROKEE SMALL LETTER QUO
 [0xAB9A] = 0x13CA, -- CHEROKEE SMALL LETTER QUU
 [0xAB9B] = 0x13CB, -- CHEROKEE SMALL LETTER QUV
 [0xAB9C] = 0x13CC, -- CHEROKEE SMALL LETTER SA
 [0xAB9D] = 0x13CD, -- CHEROKEE SMALL LETTER S
 [0xAB9E] = 0x13CE, -- CHEROKEE SMALL LETTER SE
 [0xAB9F] = 0x13CF, -- CHEROKEE SMALL LETTER SI
 [0xABA0] = 0x13D0, -- CHEROKEE SMALL LETTER SO
 [0xABA1] = 0x13D1, -- CHEROKEE SMALL LETTER SU
 [0xABA2] = 0x13D2, -- CHEROKEE SMALL LETTER SV
 [0xABA3] = 0x13D3, -- CHEROKEE SMALL LETTER DA
 [0xABA4] = 0x13D4, -- CHEROKEE SMALL LETTER TA
 [0xABA5] = 0x13D5, -- CHEROKEE SMALL LETTER DE
 [0xABA6] = 0x13D6, -- CHEROKEE SMALL LETTER TE
 [0xABA7] = 0x13D7, -- CHEROKEE SMALL LETTER DI
 [0xABA8] = 0x13D8, -- CHEROKEE SMALL LETTER TI
 [0xABA9] = 0x13D9, -- CHEROKEE SMALL LETTER DO
 [0xABAA] = 0x13DA, -- CHEROKEE SMALL LETTER DU
 [0xABAB] = 0x13DB, -- CHEROKEE SMALL LETTER DV
 [0xABAC] = 0x13DC, -- CHEROKEE SMALL LETTER DLA
 [0xABAD] = 0x13DD, -- CHEROKEE SMALL LETTER TLA
 [0xABAE] = 0x13DE, -- CHEROKEE SMALL LETTER TLE
 [0xABAF] = 0x13DF, -- CHEROKEE SMALL LETTER TLI
 [0xABB0] = 0x13E0, -- CHEROKEE SMALL LETTER TLO
 [0xABB1] = 0x13E1, -- CHEROKEE SMALL LETTER TLU
 [0xABB2] = 0x13E2, -- CHEROKEE SMALL LETTER TLV
 [0xABB3] = 0x13E3, -- CHEROKEE SMALL LETTER TSA
 [0xABB4] = 0x13E4, -- CHEROKEE SMALL LETTER TSE
 [0xABB5] = 0x13E5, -- CHEROKEE SMALL LETTER TSI
 [0xABB6] = 0x13E6, -- CHEROKEE SMALL LETTER TSO
 [0xABB7] = 0x13E7, -- CHEROKEE SMALL LETTER TSU
 [0xABB8] = 0x13E8, -- CHEROKEE SMALL LETTER TSV
 [0xABB9] = 0x13E9, -- CHEROKEE SMALL LETTER WA
 [0xABBA] = 0x13EA, -- CHEROKEE SMALL LETTER WE
 [0xABBB] = 0x13EB, -- CHEROKEE SMALL LETTER WI
 [0xABBC] = 0x13EC, -- CHEROKEE SMALL LETTER WO
 [0xABBD] = 0x13ED, -- CHEROKEE SMALL LETTER WU
 [0xABBE] = 0x13EE, -- CHEROKEE SMALL LETTER WV
 [0xABBF] = 0x13EF, -- CHEROKEE SMALL LETTER YA
 [0xABEB] = {status="disallowed"}, -- MEETEI MAYEK CHEIKHEI
 -- MEETEI MAYEK LUM IYEK..MEETEI MAYEK APUN IYEK
 [0xABEC] = {status="valid"},
 [0xABED] = {status="valid"},
 -- NA   <reserved-ABEE>..<reserved-ABEF>
 [0xABEE] = {status="disallowed"},
 [0xABEF] = {status="disallowed"},
 -- NA   <reserved-D7C7>..<reserved-D7CA>
 [0xD7C7] = {status="disallowed"},
 [0xD7C8] = {status="disallowed"},
 [0xD7C9] = {status="disallowed"},
 [0xD7CA] = {status="disallowed"},
 [0xF900] = 0x8C48, -- CJK COMPATIBILITY IDEOGRAPH-F900
 [0xF901] = 0x66F4, -- CJK COMPATIBILITY IDEOGRAPH-F901
 [0xF902] = 0x8ECA, -- CJK COMPATIBILITY IDEOGRAPH-F902
 [0xF903] = 0x8CC8, -- CJK COMPATIBILITY IDEOGRAPH-F903
 [0xF904] = 0x6ED1, -- CJK COMPATIBILITY IDEOGRAPH-F904
 [0xF905] = 0x4E32, -- CJK COMPATIBILITY IDEOGRAPH-F905
 [0xF906] = 0x53E5, -- CJK COMPATIBILITY IDEOGRAPH-F906
 [0xF909] = 0x5951, -- CJK COMPATIBILITY IDEOGRAPH-F909
 [0xF90A] = 0x91D1, -- CJK COMPATIBILITY IDEOGRAPH-F90A
 [0xF90B] = 0x5587, -- CJK COMPATIBILITY IDEOGRAPH-F90B
 [0xF90C] = 0x5948, -- CJK COMPATIBILITY IDEOGRAPH-F90C
 [0xF90D] = 0x61F6, -- CJK COMPATIBILITY IDEOGRAPH-F90D
 [0xF90E] = 0x7669, -- CJK COMPATIBILITY IDEOGRAPH-F90E
 [0xF90F] = 0x7F85, -- CJK COMPATIBILITY IDEOGRAPH-F90F
 [0xF910] = 0x863F, -- CJK COMPATIBILITY IDEOGRAPH-F910
 [0xF911] = 0x87BA, -- CJK COMPATIBILITY IDEOGRAPH-F911
 [0xF912] = 0x88F8, -- CJK COMPATIBILITY IDEOGRAPH-F912
 [0xF913] = 0x908F, -- CJK COMPATIBILITY IDEOGRAPH-F913
 [0xF914] = 0x6A02, -- CJK COMPATIBILITY IDEOGRAPH-F914
 [0xF915] = 0x6D1B, -- CJK COMPATIBILITY IDEOGRAPH-F915
 [0xF916] = 0x70D9, -- CJK COMPATIBILITY IDEOGRAPH-F916
 [0xF917] = 0x73DE, -- CJK COMPATIBILITY IDEOGRAPH-F917
 [0xF918] = 0x843D, -- CJK COMPATIBILITY IDEOGRAPH-F918
 [0xF919] = 0x916A, -- CJK COMPATIBILITY IDEOGRAPH-F919
 [0xF91A] = 0x99F1, -- CJK COMPATIBILITY IDEOGRAPH-F91A
 [0xF91B] = 0x4E82, -- CJK COMPATIBILITY IDEOGRAPH-F91B
 [0xF91C] = 0x5375, -- CJK COMPATIBILITY IDEOGRAPH-F91C
 [0xF91D] = 0x6B04, -- CJK COMPATIBILITY IDEOGRAPH-F91D
 [0xF91E] = 0x721B, -- CJK COMPATIBILITY IDEOGRAPH-F91E
 [0xF91F] = 0x862D, -- CJK COMPATIBILITY IDEOGRAPH-F91F
 [0xF920] = 0x9E1E, -- CJK COMPATIBILITY IDEOGRAPH-F920
 [0xF921] = 0x5D50, -- CJK COMPATIBILITY IDEOGRAPH-F921
 [0xF922] = 0x6FEB, -- CJK COMPATIBILITY IDEOGRAPH-F922
 [0xF923] = 0x85CD, -- CJK COMPATIBILITY IDEOGRAPH-F923
 [0xF924] = 0x8964, -- CJK COMPATIBILITY IDEOGRAPH-F924
 [0xF925] = 0x62C9, -- CJK COMPATIBILITY IDEOGRAPH-F925
 [0xF926] = 0x81D8, -- CJK COMPATIBILITY IDEOGRAPH-F926
 [0xF927] = 0x881F, -- CJK COMPATIBILITY IDEOGRAPH-F927
 [0xF928] = 0x5ECA, -- CJK COMPATIBILITY IDEOGRAPH-F928
 [0xF929] = 0x6717, -- CJK COMPATIBILITY IDEOGRAPH-F929
 [0xF92A] = 0x6D6A, -- CJK COMPATIBILITY IDEOGRAPH-F92A
 [0xF92B] = 0x72FC, -- CJK COMPATIBILITY IDEOGRAPH-F92B
 [0xF92C] = 0x90CE, -- CJK COMPATIBILITY IDEOGRAPH-F92C
 [0xF92D] = 0x4F86, -- CJK COMPATIBILITY IDEOGRAPH-F92D
 [0xF92E] = 0x51B7, -- CJK COMPATIBILITY IDEOGRAPH-F92E
 [0xF92F] = 0x52DE, -- CJK COMPATIBILITY IDEOGRAPH-F92F
 [0xF930] = 0x64C4, -- CJK COMPATIBILITY IDEOGRAPH-F930
 [0xF931] = 0x6AD3, -- CJK COMPATIBILITY IDEOGRAPH-F931
 [0xF932] = 0x7210, -- CJK COMPATIBILITY IDEOGRAPH-F932
 [0xF933] = 0x76E7, -- CJK COMPATIBILITY IDEOGRAPH-F933
 [0xF934] = 0x8001, -- CJK COMPATIBILITY IDEOGRAPH-F934
 [0xF935] = 0x8606, -- CJK COMPATIBILITY IDEOGRAPH-F935
 [0xF936] = 0x865C, -- CJK COMPATIBILITY IDEOGRAPH-F936
 [0xF937] = 0x8DEF, -- CJK COMPATIBILITY IDEOGRAPH-F937
 [0xF938] = 0x9732, -- CJK COMPATIBILITY IDEOGRAPH-F938
 [0xF939] = 0x9B6F, -- CJK COMPATIBILITY IDEOGRAPH-F939
 [0xF93A] = 0x9DFA, -- CJK COMPATIBILITY IDEOGRAPH-F93A
 [0xF93B] = 0x788C, -- CJK COMPATIBILITY IDEOGRAPH-F93B
 [0xF93C] = 0x797F, -- CJK COMPATIBILITY IDEOGRAPH-F93C
 [0xF93D] = 0x7DA0, -- CJK COMPATIBILITY IDEOGRAPH-F93D
 [0xF93E] = 0x83C9, -- CJK COMPATIBILITY IDEOGRAPH-F93E
 [0xF93F] = 0x9304, -- CJK COMPATIBILITY IDEOGRAPH-F93F
 [0xF940] = 0x9E7F, -- CJK COMPATIBILITY IDEOGRAPH-F940
 [0xF941] = 0x8AD6, -- CJK COMPATIBILITY IDEOGRAPH-F941
 [0xF942] = 0x58DF, -- CJK COMPATIBILITY IDEOGRAPH-F942
 [0xF943] = 0x5F04, -- CJK COMPATIBILITY IDEOGRAPH-F943
 [0xF944] = 0x7C60, -- CJK COMPATIBILITY IDEOGRAPH-F944
 [0xF945] = 0x807E, -- CJK COMPATIBILITY IDEOGRAPH-F945
 [0xF946] = 0x7262, -- CJK COMPATIBILITY IDEOGRAPH-F946
 [0xF947] = 0x78CA, -- CJK COMPATIBILITY IDEOGRAPH-F947
 [0xF948] = 0x8CC2, -- CJK COMPATIBILITY IDEOGRAPH-F948
 [0xF949] = 0x96F7, -- CJK COMPATIBILITY IDEOGRAPH-F949
 [0xF94A] = 0x58D8, -- CJK COMPATIBILITY IDEOGRAPH-F94A
 [0xF94B] = 0x5C62, -- CJK COMPATIBILITY IDEOGRAPH-F94B
 [0xF94C] = 0x6A13, -- CJK COMPATIBILITY IDEOGRAPH-F94C
 [0xF94D] = 0x6DDA, -- CJK COMPATIBILITY IDEOGRAPH-F94D
 [0xF94E] = 0x6F0F, -- CJK COMPATIBILITY IDEOGRAPH-F94E
 [0xF94F] = 0x7D2F, -- CJK COMPATIBILITY IDEOGRAPH-F94F
 [0xF950] = 0x7E37, -- CJK COMPATIBILITY IDEOGRAPH-F950
 [0xF951] = 0x964B, -- CJK COMPATIBILITY IDEOGRAPH-F951
 [0xF952] = 0x52D2, -- CJK COMPATIBILITY IDEOGRAPH-F952
 [0xF953] = 0x808B, -- CJK COMPATIBILITY IDEOGRAPH-F953
 [0xF954] = 0x51DC, -- CJK COMPATIBILITY IDEOGRAPH-F954
 [0xF955] = 0x51CC, -- CJK COMPATIBILITY IDEOGRAPH-F955
 [0xF956] = 0x7A1C, -- CJK COMPATIBILITY IDEOGRAPH-F956
 [0xF957] = 0x7DBE, -- CJK COMPATIBILITY IDEOGRAPH-F957
 [0xF958] = 0x83F1, -- CJK COMPATIBILITY IDEOGRAPH-F958
 [0xF959] = 0x9675, -- CJK COMPATIBILITY IDEOGRAPH-F959
 [0xF95A] = 0x8B80, -- CJK COMPATIBILITY IDEOGRAPH-F95A
 [0xF95B] = 0x62CF, -- CJK COMPATIBILITY IDEOGRAPH-F95B
 [0xF95C] = 0x6A02, -- CJK COMPATIBILITY IDEOGRAPH-F95C
 [0xF95D] = 0x8AFE, -- CJK COMPATIBILITY IDEOGRAPH-F95D
 [0xF95E] = 0x4E39, -- CJK COMPATIBILITY IDEOGRAPH-F95E
 [0xF95F] = 0x5BE7, -- CJK COMPATIBILITY IDEOGRAPH-F95F
 [0xF960] = 0x6012, -- CJK COMPATIBILITY IDEOGRAPH-F960
 [0xF961] = 0x7387, -- CJK COMPATIBILITY IDEOGRAPH-F961
 [0xF962] = 0x7570, -- CJK COMPATIBILITY IDEOGRAPH-F962
 [0xF963] = 0x5317, -- CJK COMPATIBILITY IDEOGRAPH-F963
 [0xF964] = 0x78FB, -- CJK COMPATIBILITY IDEOGRAPH-F964
 [0xF965] = 0x4FBF, -- CJK COMPATIBILITY IDEOGRAPH-F965
 [0xF966] = 0x5FA9, -- CJK COMPATIBILITY IDEOGRAPH-F966
 [0xF967] = 0x4E0D, -- CJK COMPATIBILITY IDEOGRAPH-F967
 [0xF968] = 0x6CCC, -- CJK COMPATIBILITY IDEOGRAPH-F968
 [0xF969] = 0x6578, -- CJK COMPATIBILITY IDEOGRAPH-F969
 [0xF96A] = 0x7D22, -- CJK COMPATIBILITY IDEOGRAPH-F96A
 [0xF96B] = 0x53C3, -- CJK COMPATIBILITY IDEOGRAPH-F96B
 [0xF96C] = 0x585E, -- CJK COMPATIBILITY IDEOGRAPH-F96C
 [0xF96D] = 0x7701, -- CJK COMPATIBILITY IDEOGRAPH-F96D
 [0xF96E] = 0x8449, -- CJK COMPATIBILITY IDEOGRAPH-F96E
 [0xF96F] = 0x8AAA, -- CJK COMPATIBILITY IDEOGRAPH-F96F
 [0xF970] = 0x6BBA, -- CJK COMPATIBILITY IDEOGRAPH-F970
 [0xF971] = 0x8FB0, -- CJK COMPATIBILITY IDEOGRAPH-F971
 [0xF972] = 0x6C88, -- CJK COMPATIBILITY IDEOGRAPH-F972
 [0xF973] = 0x62FE, -- CJK COMPATIBILITY IDEOGRAPH-F973
 [0xF974] = 0x82E5, -- CJK COMPATIBILITY IDEOGRAPH-F974
 [0xF975] = 0x63A0, -- CJK COMPATIBILITY IDEOGRAPH-F975
 [0xF976] = 0x7565, -- CJK COMPATIBILITY IDEOGRAPH-F976
 [0xF977] = 0x4EAE, -- CJK COMPATIBILITY IDEOGRAPH-F977
 [0xF978] = 0x5169, -- CJK COMPATIBILITY IDEOGRAPH-F978
 [0xF979] = 0x51C9, -- CJK COMPATIBILITY IDEOGRAPH-F979
 [0xF97A] = 0x6881, -- CJK COMPATIBILITY IDEOGRAPH-F97A
 [0xF97B] = 0x7CE7, -- CJK COMPATIBILITY IDEOGRAPH-F97B
 [0xF97C] = 0x826F, -- CJK COMPATIBILITY IDEOGRAPH-F97C
 [0xF97D] = 0x8AD2, -- CJK COMPATIBILITY IDEOGRAPH-F97D
 [0xF97E] = 0x91CF, -- CJK COMPATIBILITY IDEOGRAPH-F97E
 [0xF97F] = 0x52F5, -- CJK COMPATIBILITY IDEOGRAPH-F97F
 [0xF980] = 0x5442, -- CJK COMPATIBILITY IDEOGRAPH-F980
 [0xF981] = 0x5973, -- CJK COMPATIBILITY IDEOGRAPH-F981
 [0xF982] = 0x5EEC, -- CJK COMPATIBILITY IDEOGRAPH-F982
 [0xF983] = 0x65C5, -- CJK COMPATIBILITY IDEOGRAPH-F983
 [0xF984] = 0x6FFE, -- CJK COMPATIBILITY IDEOGRAPH-F984
 [0xF985] = 0x792A, -- CJK COMPATIBILITY IDEOGRAPH-F985
 [0xF986] = 0x95AD, -- CJK COMPATIBILITY IDEOGRAPH-F986
 [0xF987] = 0x9A6A, -- CJK COMPATIBILITY IDEOGRAPH-F987
 [0xF988] = 0x9E97, -- CJK COMPATIBILITY IDEOGRAPH-F988
 [0xF989] = 0x9ECE, -- CJK COMPATIBILITY IDEOGRAPH-F989
 [0xF98A] = 0x529B, -- CJK COMPATIBILITY IDEOGRAPH-F98A
 [0xF98B] = 0x66C6, -- CJK COMPATIBILITY IDEOGRAPH-F98B
 [0xF98C] = 0x6B77, -- CJK COMPATIBILITY IDEOGRAPH-F98C
 [0xF98D] = 0x8F62, -- CJK COMPATIBILITY IDEOGRAPH-F98D
 [0xF98E] = 0x5E74, -- CJK COMPATIBILITY IDEOGRAPH-F98E
 [0xF98F] = 0x6190, -- CJK COMPATIBILITY IDEOGRAPH-F98F
 [0xF990] = 0x6200, -- CJK COMPATIBILITY IDEOGRAPH-F990
 [0xF991] = 0x649A, -- CJK COMPATIBILITY IDEOGRAPH-F991
 [0xF992] = 0x6F23, -- CJK COMPATIBILITY IDEOGRAPH-F992
 [0xF993] = 0x7149, -- CJK COMPATIBILITY IDEOGRAPH-F993
 [0xF994] = 0x7489, -- CJK COMPATIBILITY IDEOGRAPH-F994
 [0xF995] = 0x79CA, -- CJK COMPATIBILITY IDEOGRAPH-F995
 [0xF996] = 0x7DF4, -- CJK COMPATIBILITY IDEOGRAPH-F996
 [0xF997] = 0x806F, -- CJK COMPATIBILITY IDEOGRAPH-F997
 [0xF998] = 0x8F26, -- CJK COMPATIBILITY IDEOGRAPH-F998
 [0xF999] = 0x84EE, -- CJK COMPATIBILITY IDEOGRAPH-F999
 [0xF99A] = 0x9023, -- CJK COMPATIBILITY IDEOGRAPH-F99A
 [0xF99B] = 0x934A, -- CJK COMPATIBILITY IDEOGRAPH-F99B
 [0xF99C] = 0x5217, -- CJK COMPATIBILITY IDEOGRAPH-F99C
 [0xF99D] = 0x52A3, -- CJK COMPATIBILITY IDEOGRAPH-F99D
 [0xF99E] = 0x54BD, -- CJK COMPATIBILITY IDEOGRAPH-F99E
 [0xF99F] = 0x70C8, -- CJK COMPATIBILITY IDEOGRAPH-F99F
 [0xF9A0] = 0x88C2, -- CJK COMPATIBILITY IDEOGRAPH-F9A0
 [0xF9A1] = 0x8AAA, -- CJK COMPATIBILITY IDEOGRAPH-F9A1
 [0xF9A2] = 0x5EC9, -- CJK COMPATIBILITY IDEOGRAPH-F9A2
 [0xF9A3] = 0x5FF5, -- CJK COMPATIBILITY IDEOGRAPH-F9A3
 [0xF9A4] = 0x637B, -- CJK COMPATIBILITY IDEOGRAPH-F9A4
 [0xF9A5] = 0x6BAE, -- CJK COMPATIBILITY IDEOGRAPH-F9A5
 [0xF9A6] = 0x7C3E, -- CJK COMPATIBILITY IDEOGRAPH-F9A6
 [0xF9A7] = 0x7375, -- CJK COMPATIBILITY IDEOGRAPH-F9A7
 [0xF9A8] = 0x4EE4, -- CJK COMPATIBILITY IDEOGRAPH-F9A8
 [0xF9A9] = 0x56F9, -- CJK COMPATIBILITY IDEOGRAPH-F9A9
 [0xF9AA] = 0x5BE7, -- CJK COMPATIBILITY IDEOGRAPH-F9AA
 [0xF9AB] = 0x5DBA, -- CJK COMPATIBILITY IDEOGRAPH-F9AB
 [0xF9AC] = 0x601C, -- CJK COMPATIBILITY IDEOGRAPH-F9AC
 [0xF9AD] = 0x73B2, -- CJK COMPATIBILITY IDEOGRAPH-F9AD
 [0xF9AE] = 0x7469, -- CJK COMPATIBILITY IDEOGRAPH-F9AE
 [0xF9AF] = 0x7F9A, -- CJK COMPATIBILITY IDEOGRAPH-F9AF
 [0xF9B0] = 0x8046, -- CJK COMPATIBILITY IDEOGRAPH-F9B0
 [0xF9B1] = 0x9234, -- CJK COMPATIBILITY IDEOGRAPH-F9B1
 [0xF9B2] = 0x96F6, -- CJK COMPATIBILITY IDEOGRAPH-F9B2
 [0xF9B3] = 0x9748, -- CJK COMPATIBILITY IDEOGRAPH-F9B3
 [0xF9B4] = 0x9818, -- CJK COMPATIBILITY IDEOGRAPH-F9B4
 [0xF9B5] = 0x4F8B, -- CJK COMPATIBILITY IDEOGRAPH-F9B5
 [0xF9B6] = 0x79AE, -- CJK COMPATIBILITY IDEOGRAPH-F9B6
 [0xF9B7] = 0x91B4, -- CJK COMPATIBILITY IDEOGRAPH-F9B7
 [0xF9B8] = 0x96B8, -- CJK COMPATIBILITY IDEOGRAPH-F9B8
 [0xF9B9] = 0x60E1, -- CJK COMPATIBILITY IDEOGRAPH-F9B9
 [0xF9BA] = 0x4E86, -- CJK COMPATIBILITY IDEOGRAPH-F9BA
 [0xF9BB] = 0x50DA, -- CJK COMPATIBILITY IDEOGRAPH-F9BB
 [0xF9BC] = 0x5BEE, -- CJK COMPATIBILITY IDEOGRAPH-F9BC
 [0xF9BD] = 0x5C3F, -- CJK COMPATIBILITY IDEOGRAPH-F9BD
 [0xF9BE] = 0x6599, -- CJK COMPATIBILITY IDEOGRAPH-F9BE
 [0xF9BF] = 0x6A02, -- CJK COMPATIBILITY IDEOGRAPH-F9BF
 [0xF9C0] = 0x71CE, -- CJK COMPATIBILITY IDEOGRAPH-F9C0
 [0xF9C1] = 0x7642, -- CJK COMPATIBILITY IDEOGRAPH-F9C1
 [0xF9C2] = 0x84FC, -- CJK COMPATIBILITY IDEOGRAPH-F9C2
 [0xF9C3] = 0x907C, -- CJK COMPATIBILITY IDEOGRAPH-F9C3
 [0xF9C4] = 0x9F8D, -- CJK COMPATIBILITY IDEOGRAPH-F9C4
 [0xF9C5] = 0x6688, -- CJK COMPATIBILITY IDEOGRAPH-F9C5
 [0xF9C6] = 0x962E, -- CJK COMPATIBILITY IDEOGRAPH-F9C6
 [0xF9C7] = 0x5289, -- CJK COMPATIBILITY IDEOGRAPH-F9C7
 [0xF9C8] = 0x677B, -- CJK COMPATIBILITY IDEOGRAPH-F9C8
 [0xF9C9] = 0x67F3, -- CJK COMPATIBILITY IDEOGRAPH-F9C9
 [0xF9CA] = 0x6D41, -- CJK COMPATIBILITY IDEOGRAPH-F9CA
 [0xF9CB] = 0x6E9C, -- CJK COMPATIBILITY IDEOGRAPH-F9CB
 [0xF9CC] = 0x7409, -- CJK COMPATIBILITY IDEOGRAPH-F9CC
 [0xF9CD] = 0x7559, -- CJK COMPATIBILITY IDEOGRAPH-F9CD
 [0xF9CE] = 0x786B, -- CJK COMPATIBILITY IDEOGRAPH-F9CE
 [0xF9CF] = 0x7D10, -- CJK COMPATIBILITY IDEOGRAPH-F9CF
 [0xF9D0] = 0x985E, -- CJK COMPATIBILITY IDEOGRAPH-F9D0
 [0xF9D1] = 0x516D, -- CJK COMPATIBILITY IDEOGRAPH-F9D1
 [0xF9D2] = 0x622E, -- CJK COMPATIBILITY IDEOGRAPH-F9D2
 [0xF9D3] = 0x9678, -- CJK COMPATIBILITY IDEOGRAPH-F9D3
 [0xF9D4] = 0x502B, -- CJK COMPATIBILITY IDEOGRAPH-F9D4
 [0xF9D5] = 0x5D19, -- CJK COMPATIBILITY IDEOGRAPH-F9D5
 [0xF9D6] = 0x6DEA, -- CJK COMPATIBILITY IDEOGRAPH-F9D6
 [0xF9D7] = 0x8F2A, -- CJK COMPATIBILITY IDEOGRAPH-F9D7
 [0xF9D8] = 0x5F8B, -- CJK COMPATIBILITY IDEOGRAPH-F9D8
 [0xF9D9] = 0x6144, -- CJK COMPATIBILITY IDEOGRAPH-F9D9
 [0xF9DA] = 0x6817, -- CJK COMPATIBILITY IDEOGRAPH-F9DA
 [0xF9DB] = 0x7387, -- CJK COMPATIBILITY IDEOGRAPH-F9DB
 [0xF9DC] = 0x9686, -- CJK COMPATIBILITY IDEOGRAPH-F9DC
 [0xF9DD] = 0x5229, -- CJK COMPATIBILITY IDEOGRAPH-F9DD
 [0xF9DE] = 0x540F, -- CJK COMPATIBILITY IDEOGRAPH-F9DE
 [0xF9DF] = 0x5C65, -- CJK COMPATIBILITY IDEOGRAPH-F9DF
 [0xF9E0] = 0x6613, -- CJK COMPATIBILITY IDEOGRAPH-F9E0
 [0xF9E1] = 0x674E, -- CJK COMPATIBILITY IDEOGRAPH-F9E1
 [0xF9E2] = 0x68A8, -- CJK COMPATIBILITY IDEOGRAPH-F9E2
 [0xF9E3] = 0x6CE5, -- CJK COMPATIBILITY IDEOGRAPH-F9E3
 [0xF9E4] = 0x7406, -- CJK COMPATIBILITY IDEOGRAPH-F9E4
 [0xF9E5] = 0x75E2, -- CJK COMPATIBILITY IDEOGRAPH-F9E5
 [0xF9E6] = 0x7F79, -- CJK COMPATIBILITY IDEOGRAPH-F9E6
 [0xF9E7] = 0x88CF, -- CJK COMPATIBILITY IDEOGRAPH-F9E7
 [0xF9E8] = 0x88E1, -- CJK COMPATIBILITY IDEOGRAPH-F9E8
 [0xF9E9] = 0x91CC, -- CJK COMPATIBILITY IDEOGRAPH-F9E9
 [0xF9EA] = 0x96E2, -- CJK COMPATIBILITY IDEOGRAPH-F9EA
 [0xF9EB] = 0x533F, -- CJK COMPATIBILITY IDEOGRAPH-F9EB
 [0xF9EC] = 0x6EBA, -- CJK COMPATIBILITY IDEOGRAPH-F9EC
 [0xF9ED] = 0x541D, -- CJK COMPATIBILITY IDEOGRAPH-F9ED
 [0xF9EE] = 0x71D0, -- CJK COMPATIBILITY IDEOGRAPH-F9EE
 [0xF9EF] = 0x7498, -- CJK COMPATIBILITY IDEOGRAPH-F9EF
 [0xF9F0] = 0x85FA, -- CJK COMPATIBILITY IDEOGRAPH-F9F0
 [0xF9F1] = 0x96A3, -- CJK COMPATIBILITY IDEOGRAPH-F9F1
 [0xF9F2] = 0x9C57, -- CJK COMPATIBILITY IDEOGRAPH-F9F2
 [0xF9F3] = 0x9E9F, -- CJK COMPATIBILITY IDEOGRAPH-F9F3
 [0xF9F4] = 0x6797, -- CJK COMPATIBILITY IDEOGRAPH-F9F4
 [0xF9F5] = 0x6DCB, -- CJK COMPATIBILITY IDEOGRAPH-F9F5
 [0xF9F6] = 0x81E8, -- CJK COMPATIBILITY IDEOGRAPH-F9F6
 [0xF9F7] = 0x7ACB, -- CJK COMPATIBILITY IDEOGRAPH-F9F7
 [0xF9F8] = 0x7B20, -- CJK COMPATIBILITY IDEOGRAPH-F9F8
 [0xF9F9] = 0x7C92, -- CJK COMPATIBILITY IDEOGRAPH-F9F9
 [0xF9FA] = 0x72C0, -- CJK COMPATIBILITY IDEOGRAPH-F9FA
 [0xF9FB] = 0x7099, -- CJK COMPATIBILITY IDEOGRAPH-F9FB
 [0xF9FC] = 0x8B58, -- CJK COMPATIBILITY IDEOGRAPH-F9FC
 [0xF9FD] = 0x4EC0, -- CJK COMPATIBILITY IDEOGRAPH-F9FD
 [0xF9FE] = 0x8336, -- CJK COMPATIBILITY IDEOGRAPH-F9FE
 [0xF9FF] = 0x523A, -- CJK COMPATIBILITY IDEOGRAPH-F9FF
 [0xFA00] = 0x5207, -- CJK COMPATIBILITY IDEOGRAPH-FA00
 [0xFA01] = 0x5EA6, -- CJK COMPATIBILITY IDEOGRAPH-FA01
 [0xFA02] = 0x62D3, -- CJK COMPATIBILITY IDEOGRAPH-FA02
 [0xFA03] = 0x7CD6, -- CJK COMPATIBILITY IDEOGRAPH-FA03
 [0xFA04] = 0x5B85, -- CJK COMPATIBILITY IDEOGRAPH-FA04
 [0xFA05] = 0x6D1E, -- CJK COMPATIBILITY IDEOGRAPH-FA05
 [0xFA06] = 0x66B4, -- CJK COMPATIBILITY IDEOGRAPH-FA06
 [0xFA07] = 0x8F3B, -- CJK COMPATIBILITY IDEOGRAPH-FA07
 [0xFA08] = 0x884C, -- CJK COMPATIBILITY IDEOGRAPH-FA08
 [0xFA09] = 0x964D, -- CJK COMPATIBILITY IDEOGRAPH-FA09
 [0xFA0A] = 0x898B, -- CJK COMPATIBILITY IDEOGRAPH-FA0A
 [0xFA0B] = 0x5ED3, -- CJK COMPATIBILITY IDEOGRAPH-FA0B
 [0xFA0C] = 0x5140, -- CJK COMPATIBILITY IDEOGRAPH-FA0C
 [0xFA0D] = 0x55C0, -- CJK COMPATIBILITY IDEOGRAPH-FA0D
 -- CJK COMPATIBILITY IDEOGRAPH-F907..CJK COMPATIBILITY IDEOGRAPH-F908
 [0xF907] = 0x9F9C,
 [0xF908] = 0x9F9C,
 [0xFA10] = 0x585A, -- CJK COMPATIBILITY IDEOGRAPH-FA10
 [0xFA11] = {status="valid"}, -- CJK COMPATIBILITY IDEOGRAPH-FA11
 [0xFA12] = 0x6674, -- CJK COMPATIBILITY IDEOGRAPH-FA12
 -- CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
 [0xFA0E] = {status="valid"},
 [0xFA0F] = {status="valid"},
 [0xFA15] = 0x51DE, -- CJK COMPATIBILITY IDEOGRAPH-FA15
 [0xFA16] = 0x732A, -- CJK COMPATIBILITY IDEOGRAPH-FA16
 [0xFA17] = 0x76CA, -- CJK COMPATIBILITY IDEOGRAPH-FA17
 [0xFA18] = 0x793C, -- CJK COMPATIBILITY IDEOGRAPH-FA18
 [0xFA19] = 0x795E, -- CJK COMPATIBILITY IDEOGRAPH-FA19
 [0xFA1A] = 0x7965, -- CJK COMPATIBILITY IDEOGRAPH-FA1A
 [0xFA1B] = 0x798F, -- CJK COMPATIBILITY IDEOGRAPH-FA1B
 [0xFA1C] = 0x9756, -- CJK COMPATIBILITY IDEOGRAPH-FA1C
 [0xFA1D] = 0x7CBE, -- CJK COMPATIBILITY IDEOGRAPH-FA1D
 [0xFA1E] = 0x7FBD, -- CJK COMPATIBILITY IDEOGRAPH-FA1E
 [0xFA1F] = {status="valid"}, -- CJK COMPATIBILITY IDEOGRAPH-FA1F
 [0xFA20] = 0x8612, -- CJK COMPATIBILITY IDEOGRAPH-FA20
 [0xFA21] = {status="valid"}, -- CJK COMPATIBILITY IDEOGRAPH-FA21
 [0xFA22] = 0x8AF8, -- CJK COMPATIBILITY IDEOGRAPH-FA22
 -- CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
 [0xFA13] = {status="valid"},
 [0xFA14] = {status="valid"},
 [0xFA25] = 0x9038, -- CJK COMPATIBILITY IDEOGRAPH-FA25
 [0xFA26] = 0x90FD, -- CJK COMPATIBILITY IDEOGRAPH-FA26
 -- CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
 [0xFA23] = {status="valid"},
 [0xFA24] = {status="valid"},
 [0xFA2A] = 0x98EF, -- CJK COMPATIBILITY IDEOGRAPH-FA2A
 [0xFA2B] = 0x98FC, -- CJK COMPATIBILITY IDEOGRAPH-FA2B
 [0xFA2C] = 0x9928, -- CJK COMPATIBILITY IDEOGRAPH-FA2C
 [0xFA2D] = 0x9DB4, -- CJK COMPATIBILITY IDEOGRAPH-FA2D
 [0xFA2E] = 0x90DE, -- CJK COMPATIBILITY IDEOGRAPH-FA2E
 [0xFA2F] = 0x96B7, -- CJK COMPATIBILITY IDEOGRAPH-FA2F
 [0xFA30] = 0x4FAE, -- CJK COMPATIBILITY IDEOGRAPH-FA30
 [0xFA31] = 0x50E7, -- CJK COMPATIBILITY IDEOGRAPH-FA31
 [0xFA32] = 0x514D, -- CJK COMPATIBILITY IDEOGRAPH-FA32
 [0xFA33] = 0x52C9, -- CJK COMPATIBILITY IDEOGRAPH-FA33
 [0xFA34] = 0x52E4, -- CJK COMPATIBILITY IDEOGRAPH-FA34
 [0xFA35] = 0x5351, -- CJK COMPATIBILITY IDEOGRAPH-FA35
 [0xFA36] = 0x559D, -- CJK COMPATIBILITY IDEOGRAPH-FA36
 [0xFA37] = 0x5606, -- CJK COMPATIBILITY IDEOGRAPH-FA37
 [0xFA38] = 0x5668, -- CJK COMPATIBILITY IDEOGRAPH-FA38
 [0xFA39] = 0x5840, -- CJK COMPATIBILITY IDEOGRAPH-FA39
 [0xFA3A] = 0x58A8, -- CJK COMPATIBILITY IDEOGRAPH-FA3A
 [0xFA3B] = 0x5C64, -- CJK COMPATIBILITY IDEOGRAPH-FA3B
 [0xFA3C] = 0x5C6E, -- CJK COMPATIBILITY IDEOGRAPH-FA3C
 [0xFA3D] = 0x6094, -- CJK COMPATIBILITY IDEOGRAPH-FA3D
 [0xFA3E] = 0x6168, -- CJK COMPATIBILITY IDEOGRAPH-FA3E
 [0xFA3F] = 0x618E, -- CJK COMPATIBILITY IDEOGRAPH-FA3F
 [0xFA40] = 0x61F2, -- CJK COMPATIBILITY IDEOGRAPH-FA40
 [0xFA41] = 0x654F, -- CJK COMPATIBILITY IDEOGRAPH-FA41
 [0xFA42] = 0x65E2, -- CJK COMPATIBILITY IDEOGRAPH-FA42
 [0xFA43] = 0x6691, -- CJK COMPATIBILITY IDEOGRAPH-FA43
 [0xFA44] = 0x6885, -- CJK COMPATIBILITY IDEOGRAPH-FA44
 [0xFA45] = 0x6D77, -- CJK COMPATIBILITY IDEOGRAPH-FA45
 [0xFA46] = 0x6E1A, -- CJK COMPATIBILITY IDEOGRAPH-FA46
 [0xFA47] = 0x6F22, -- CJK COMPATIBILITY IDEOGRAPH-FA47
 [0xFA48] = 0x716E, -- CJK COMPATIBILITY IDEOGRAPH-FA48
 [0xFA49] = 0x722B, -- CJK COMPATIBILITY IDEOGRAPH-FA49
 [0xFA4A] = 0x7422, -- CJK COMPATIBILITY IDEOGRAPH-FA4A
 [0xFA4B] = 0x7891, -- CJK COMPATIBILITY IDEOGRAPH-FA4B
 [0xFA4C] = 0x793E, -- CJK COMPATIBILITY IDEOGRAPH-FA4C
 [0xFA4D] = 0x7949, -- CJK COMPATIBILITY IDEOGRAPH-FA4D
 [0xFA4E] = 0x7948, -- CJK COMPATIBILITY IDEOGRAPH-FA4E
 [0xFA4F] = 0x7950, -- CJK COMPATIBILITY IDEOGRAPH-FA4F
 [0xFA50] = 0x7956, -- CJK COMPATIBILITY IDEOGRAPH-FA50
 [0xFA51] = 0x795D, -- CJK COMPATIBILITY IDEOGRAPH-FA51
 [0xFA52] = 0x798D, -- CJK COMPATIBILITY IDEOGRAPH-FA52
 [0xFA53] = 0x798E, -- CJK COMPATIBILITY IDEOGRAPH-FA53
 [0xFA54] = 0x7A40, -- CJK COMPATIBILITY IDEOGRAPH-FA54
 [0xFA55] = 0x7A81, -- CJK COMPATIBILITY IDEOGRAPH-FA55
 [0xFA56] = 0x7BC0, -- CJK COMPATIBILITY IDEOGRAPH-FA56
 [0xFA57] = 0x7DF4, -- CJK COMPATIBILITY IDEOGRAPH-FA57
 [0xFA58] = 0x7E09, -- CJK COMPATIBILITY IDEOGRAPH-FA58
 [0xFA59] = 0x7E41, -- CJK COMPATIBILITY IDEOGRAPH-FA59
 [0xFA5A] = 0x7F72, -- CJK COMPATIBILITY IDEOGRAPH-FA5A
 [0xFA5B] = 0x8005, -- CJK COMPATIBILITY IDEOGRAPH-FA5B
 [0xFA5C] = 0x81ED, -- CJK COMPATIBILITY IDEOGRAPH-FA5C
 -- CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
 [0xFA27] = {status="valid"},
 [0xFA28] = {status="valid"},
 [0xFA29] = {status="valid"},
 [0xFA5F] = 0x8457, -- CJK COMPATIBILITY IDEOGRAPH-FA5F
 [0xFA60] = 0x8910, -- CJK COMPATIBILITY IDEOGRAPH-FA60
 [0xFA61] = 0x8996, -- CJK COMPATIBILITY IDEOGRAPH-FA61
 [0xFA62] = 0x8B01, -- CJK COMPATIBILITY IDEOGRAPH-FA62
 [0xFA63] = 0x8B39, -- CJK COMPATIBILITY IDEOGRAPH-FA63
 [0xFA64] = 0x8CD3, -- CJK COMPATIBILITY IDEOGRAPH-FA64
 [0xFA65] = 0x8D08, -- CJK COMPATIBILITY IDEOGRAPH-FA65
 [0xFA66] = 0x8FB6, -- CJK COMPATIBILITY IDEOGRAPH-FA66
 [0xFA67] = 0x9038, -- CJK COMPATIBILITY IDEOGRAPH-FA67
 [0xFA68] = 0x96E3, -- CJK COMPATIBILITY IDEOGRAPH-FA68
 [0xFA69] = 0x97FF, -- CJK COMPATIBILITY IDEOGRAPH-FA69
 [0xFA6A] = 0x983B, -- CJK COMPATIBILITY IDEOGRAPH-FA6A
 [0xFA6B] = 0x6075, -- CJK COMPATIBILITY IDEOGRAPH-FA6B
 [0xFA6C] = 0x242EE, -- CJK COMPATIBILITY IDEOGRAPH-FA6C
 [0xFA6D] = 0x8218, -- CJK COMPATIBILITY IDEOGRAPH-FA6D
 -- CJK COMPATIBILITY IDEOGRAPH-FA5D..CJK COMPATIBILITY IDEOGRAPH-FA5E
 [0xFA5D] = 0x8279,
 [0xFA5E] = 0x8279,
 [0xFA70] = 0x4E26, -- CJK COMPATIBILITY IDEOGRAPH-FA70
 [0xFA71] = 0x51B5, -- CJK COMPATIBILITY IDEOGRAPH-FA71
 [0xFA72] = 0x5168, -- CJK COMPATIBILITY IDEOGRAPH-FA72
 [0xFA73] = 0x4F80, -- CJK COMPATIBILITY IDEOGRAPH-FA73
 [0xFA74] = 0x5145, -- CJK COMPATIBILITY IDEOGRAPH-FA74
 [0xFA75] = 0x5180, -- CJK COMPATIBILITY IDEOGRAPH-FA75
 [0xFA76] = 0x52C7, -- CJK COMPATIBILITY IDEOGRAPH-FA76
 [0xFA77] = 0x52FA, -- CJK COMPATIBILITY IDEOGRAPH-FA77
 [0xFA78] = 0x559D, -- CJK COMPATIBILITY IDEOGRAPH-FA78
 [0xFA79] = 0x5555, -- CJK COMPATIBILITY IDEOGRAPH-FA79
 [0xFA7A] = 0x5599, -- CJK COMPATIBILITY IDEOGRAPH-FA7A
 [0xFA7B] = 0x55E2, -- CJK COMPATIBILITY IDEOGRAPH-FA7B
 [0xFA7C] = 0x585A, -- CJK COMPATIBILITY IDEOGRAPH-FA7C
 [0xFA7D] = 0x58B3, -- CJK COMPATIBILITY IDEOGRAPH-FA7D
 [0xFA7E] = 0x5944, -- CJK COMPATIBILITY IDEOGRAPH-FA7E
 [0xFA7F] = 0x5954, -- CJK COMPATIBILITY IDEOGRAPH-FA7F
 [0xFA80] = 0x5A62, -- CJK COMPATIBILITY IDEOGRAPH-FA80
 [0xFA81] = 0x5B28, -- CJK COMPATIBILITY IDEOGRAPH-FA81
 [0xFA82] = 0x5ED2, -- CJK COMPATIBILITY IDEOGRAPH-FA82
 [0xFA83] = 0x5ED9, -- CJK COMPATIBILITY IDEOGRAPH-FA83
 [0xFA84] = 0x5F69, -- CJK COMPATIBILITY IDEOGRAPH-FA84
 [0xFA85] = 0x5FAD, -- CJK COMPATIBILITY IDEOGRAPH-FA85
 [0xFA86] = 0x60D8, -- CJK COMPATIBILITY IDEOGRAPH-FA86
 [0xFA87] = 0x614E, -- CJK COMPATIBILITY IDEOGRAPH-FA87
 [0xFA88] = 0x6108, -- CJK COMPATIBILITY IDEOGRAPH-FA88
 [0xFA89] = 0x618E, -- CJK COMPATIBILITY IDEOGRAPH-FA89
 [0xFA8A] = 0x6160, -- CJK COMPATIBILITY IDEOGRAPH-FA8A
 [0xFA8B] = 0x61F2, -- CJK COMPATIBILITY IDEOGRAPH-FA8B
 [0xFA8C] = 0x6234, -- CJK COMPATIBILITY IDEOGRAPH-FA8C
 [0xFA8D] = 0x63C4, -- CJK COMPATIBILITY IDEOGRAPH-FA8D
 [0xFA8E] = 0x641C, -- CJK COMPATIBILITY IDEOGRAPH-FA8E
 [0xFA8F] = 0x6452, -- CJK COMPATIBILITY IDEOGRAPH-FA8F
 [0xFA90] = 0x6556, -- CJK COMPATIBILITY IDEOGRAPH-FA90
 [0xFA91] = 0x6674, -- CJK COMPATIBILITY IDEOGRAPH-FA91
 [0xFA92] = 0x6717, -- CJK COMPATIBILITY IDEOGRAPH-FA92
 [0xFA93] = 0x671B, -- CJK COMPATIBILITY IDEOGRAPH-FA93
 [0xFA94] = 0x6756, -- CJK COMPATIBILITY IDEOGRAPH-FA94
 [0xFA95] = 0x6B79, -- CJK COMPATIBILITY IDEOGRAPH-FA95
 [0xFA96] = 0x6BBA, -- CJK COMPATIBILITY IDEOGRAPH-FA96
 [0xFA97] = 0x6D41, -- CJK COMPATIBILITY IDEOGRAPH-FA97
 [0xFA98] = 0x6EDB, -- CJK COMPATIBILITY IDEOGRAPH-FA98
 [0xFA99] = 0x6ECB, -- CJK COMPATIBILITY IDEOGRAPH-FA99
 [0xFA9A] = 0x6F22, -- CJK COMPATIBILITY IDEOGRAPH-FA9A
 [0xFA9B] = 0x701E, -- CJK COMPATIBILITY IDEOGRAPH-FA9B
 [0xFA9C] = 0x716E, -- CJK COMPATIBILITY IDEOGRAPH-FA9C
 [0xFA9D] = 0x77A7, -- CJK COMPATIBILITY IDEOGRAPH-FA9D
 [0xFA9E] = 0x7235, -- CJK COMPATIBILITY IDEOGRAPH-FA9E
 [0xFA9F] = 0x72AF, -- CJK COMPATIBILITY IDEOGRAPH-FA9F
 [0xFAA0] = 0x732A, -- CJK COMPATIBILITY IDEOGRAPH-FAA0
 [0xFAA1] = 0x7471, -- CJK COMPATIBILITY IDEOGRAPH-FAA1
 [0xFAA2] = 0x7506, -- CJK COMPATIBILITY IDEOGRAPH-FAA2
 [0xFAA3] = 0x753B, -- CJK COMPATIBILITY IDEOGRAPH-FAA3
 [0xFAA4] = 0x761D, -- CJK COMPATIBILITY IDEOGRAPH-FAA4
 [0xFAA5] = 0x761F, -- CJK COMPATIBILITY IDEOGRAPH-FAA5
 [0xFAA6] = 0x76CA, -- CJK COMPATIBILITY IDEOGRAPH-FAA6
 [0xFAA7] = 0x76DB, -- CJK COMPATIBILITY IDEOGRAPH-FAA7
 [0xFAA8] = 0x76F4, -- CJK COMPATIBILITY IDEOGRAPH-FAA8
 [0xFAA9] = 0x774A, -- CJK COMPATIBILITY IDEOGRAPH-FAA9
 [0xFAAA] = 0x7740, -- CJK COMPATIBILITY IDEOGRAPH-FAAA
 [0xFAAB] = 0x78CC, -- CJK COMPATIBILITY IDEOGRAPH-FAAB
 [0xFAAC] = 0x7AB1, -- CJK COMPATIBILITY IDEOGRAPH-FAAC
 [0xFAAD] = 0x7BC0, -- CJK COMPATIBILITY IDEOGRAPH-FAAD
 [0xFAAE] = 0x7C7B, -- CJK COMPATIBILITY IDEOGRAPH-FAAE
 [0xFAAF] = 0x7D5B, -- CJK COMPATIBILITY IDEOGRAPH-FAAF
 [0xFAB0] = 0x7DF4, -- CJK COMPATIBILITY IDEOGRAPH-FAB0
 [0xFAB1] = 0x7F3E, -- CJK COMPATIBILITY IDEOGRAPH-FAB1
 [0xFAB2] = 0x8005, -- CJK COMPATIBILITY IDEOGRAPH-FAB2
 [0xFAB3] = 0x8352, -- CJK COMPATIBILITY IDEOGRAPH-FAB3
 [0xFAB4] = 0x83EF, -- CJK COMPATIBILITY IDEOGRAPH-FAB4
 [0xFAB5] = 0x8779, -- CJK COMPATIBILITY IDEOGRAPH-FAB5
 [0xFAB6] = 0x8941, -- CJK COMPATIBILITY IDEOGRAPH-FAB6
 [0xFAB7] = 0x8986, -- CJK COMPATIBILITY IDEOGRAPH-FAB7
 [0xFAB8] = 0x8996, -- CJK COMPATIBILITY IDEOGRAPH-FAB8
 [0xFAB9] = 0x8ABF, -- CJK COMPATIBILITY IDEOGRAPH-FAB9
 [0xFABA] = 0x8AF8, -- CJK COMPATIBILITY IDEOGRAPH-FABA
 [0xFABB] = 0x8ACB, -- CJK COMPATIBILITY IDEOGRAPH-FABB
 [0xFABC] = 0x8B01, -- CJK COMPATIBILITY IDEOGRAPH-FABC
 [0xFABD] = 0x8AFE, -- CJK COMPATIBILITY IDEOGRAPH-FABD
 [0xFABE] = 0x8AED, -- CJK COMPATIBILITY IDEOGRAPH-FABE
 [0xFABF] = 0x8B39, -- CJK COMPATIBILITY IDEOGRAPH-FABF
 [0xFAC0] = 0x8B8A, -- CJK COMPATIBILITY IDEOGRAPH-FAC0
 [0xFAC1] = 0x8D08, -- CJK COMPATIBILITY IDEOGRAPH-FAC1
 [0xFAC2] = 0x8F38, -- CJK COMPATIBILITY IDEOGRAPH-FAC2
 [0xFAC3] = 0x9072, -- CJK COMPATIBILITY IDEOGRAPH-FAC3
 [0xFAC4] = 0x9199, -- CJK COMPATIBILITY IDEOGRAPH-FAC4
 [0xFAC5] = 0x9276, -- CJK COMPATIBILITY IDEOGRAPH-FAC5
 [0xFAC6] = 0x967C, -- CJK COMPATIBILITY IDEOGRAPH-FAC6
 [0xFAC7] = 0x96E3, -- CJK COMPATIBILITY IDEOGRAPH-FAC7
 [0xFAC8] = 0x9756, -- CJK COMPATIBILITY IDEOGRAPH-FAC8
 [0xFAC9] = 0x97DB, -- CJK COMPATIBILITY IDEOGRAPH-FAC9
 [0xFACA] = 0x97FF, -- CJK COMPATIBILITY IDEOGRAPH-FACA
 [0xFACB] = 0x980B, -- CJK COMPATIBILITY IDEOGRAPH-FACB
 [0xFACC] = 0x983B, -- CJK COMPATIBILITY IDEOGRAPH-FACC
 [0xFACD] = 0x9B12, -- CJK COMPATIBILITY IDEOGRAPH-FACD
 [0xFACE] = 0x9F9C, -- CJK COMPATIBILITY IDEOGRAPH-FACE
 [0xFACF] = 0x2284A, -- CJK COMPATIBILITY IDEOGRAPH-FACF
 [0xFAD0] = 0x22844, -- CJK COMPATIBILITY IDEOGRAPH-FAD0
 [0xFAD1] = 0x233D5, -- CJK COMPATIBILITY IDEOGRAPH-FAD1
 [0xFAD2] = 0x3B9D, -- CJK COMPATIBILITY IDEOGRAPH-FAD2
 [0xFAD3] = 0x4018, -- CJK COMPATIBILITY IDEOGRAPH-FAD3
 [0xFAD4] = 0x4039, -- CJK COMPATIBILITY IDEOGRAPH-FAD4
 [0xFAD5] = 0x25249, -- CJK COMPATIBILITY IDEOGRAPH-FAD5
 [0xFAD6] = 0x25CD0, -- CJK COMPATIBILITY IDEOGRAPH-FAD6
 [0xFAD7] = 0x27ED3, -- CJK COMPATIBILITY IDEOGRAPH-FAD7
 [0xFAD8] = 0x9F43, -- CJK COMPATIBILITY IDEOGRAPH-FAD8
 [0xFAD9] = 0x9F8E, -- CJK COMPATIBILITY IDEOGRAPH-FAD9
 -- NA   <reserved-FA6E>..<reserved-FA6F>
 [0xFA6E] = {status="disallowed"},
 [0xFA6F] = {status="disallowed"},
 [0xFB00] = {0x0066, 0x0066}, -- LATIN SMALL LIGATURE FF
 [0xFB01] = {0x0066, 0x0069}, -- LATIN SMALL LIGATURE FI
 [0xFB02] = {0x0066, 0x006C}, -- LATIN SMALL LIGATURE FL
 [0xFB03] = {0x0066, 0x0066, 0x0069}, -- LATIN SMALL LIGATURE FFI
 [0xFB04] = {0x0066, 0x0066, 0x006C}, -- LATIN SMALL LIGATURE FFL
 -- LATIN SMALL LIGATURE LONG S T..LATIN SMALL LIGATURE ST
 [0xFB05] = {0x0073, 0x0074},
 [0xFB06] = {0x0073, 0x0074},
 [0xFB13] = {0x0574, 0x0576}, -- ARMENIAN SMALL LIGATURE MEN NOW
 [0xFB14] = {0x0574, 0x0565}, -- ARMENIAN SMALL LIGATURE MEN ECH
 [0xFB15] = {0x0574, 0x056B}, -- ARMENIAN SMALL LIGATURE MEN INI
 [0xFB16] = {0x057E, 0x0576}, -- ARMENIAN SMALL LIGATURE VEW NOW
 [0xFB17] = {0x0574, 0x056D}, -- ARMENIAN SMALL LIGATURE MEN XEH
 [0xFB1D] = {0x05D9, 0x05B4}, -- HEBREW LETTER YOD WITH HIRIQ
 [0xFB1E] = {status="valid"}, -- HEBREW POINT JUDEO-SPANISH VARIKA
 [0xFB1F] = {0x05F2, 0x05B7}, -- HEBREW LIGATURE YIDDISH YOD YOD PATAH
 [0xFB20] = 0x05E2, -- HEBREW LETTER ALTERNATIVE AYIN
 [0xFB21] = 0x05D0, -- HEBREW LETTER WIDE ALEF
 [0xFB22] = 0x05D3, -- HEBREW LETTER WIDE DALET
 [0xFB23] = 0x05D4, -- HEBREW LETTER WIDE HE
 [0xFB24] = 0x05DB, -- HEBREW LETTER WIDE KAF
 [0xFB25] = 0x05DC, -- HEBREW LETTER WIDE LAMED
 [0xFB26] = 0x05DD, -- HEBREW LETTER WIDE FINAL MEM
 [0xFB27] = 0x05E8, -- HEBREW LETTER WIDE RESH
 [0xFB28] = 0x05EA, -- HEBREW LETTER WIDE TAV
 [0xFB29] = {status="disallowed"}, -- HEBREW LETTER ALTERNATIVE PLUS SIGN
 [0xFB2A] = {0x05E9, 0x05C1}, -- HEBREW LETTER SHIN WITH SHIN DOT
 [0xFB2B] = {0x05E9, 0x05C2}, -- HEBREW LETTER SHIN WITH SIN DOT
 [0xFB2C] = {0x05E9, 0x05BC, 0x05C1}, -- HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
 [0xFB2D] = {0x05E9, 0x05BC, 0x05C2}, -- HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
 [0xFB2E] = {0x05D0, 0x05B7}, -- HEBREW LETTER ALEF WITH PATAH
 [0xFB2F] = {0x05D0, 0x05B8}, -- HEBREW LETTER ALEF WITH QAMATS
 [0xFB30] = {0x05D0, 0x05BC}, -- HEBREW LETTER ALEF WITH MAPIQ
 [0xFB31] = {0x05D1, 0x05BC}, -- HEBREW LETTER BET WITH DAGESH
 [0xFB32] = {0x05D2, 0x05BC}, -- HEBREW LETTER GIMEL WITH DAGESH
 [0xFB33] = {0x05D3, 0x05BC}, -- HEBREW LETTER DALET WITH DAGESH
 [0xFB34] = {0x05D4, 0x05BC}, -- HEBREW LETTER HE WITH MAPIQ
 [0xFB35] = {0x05D5, 0x05BC}, -- HEBREW LETTER VAV WITH DAGESH
 [0xFB36] = {0x05D6, 0x05BC}, -- HEBREW LETTER ZAYIN WITH DAGESH
 [0xFB37] = {status="disallowed"}, -- NA   <reserved-FB37>
 [0xFB38] = {0x05D8, 0x05BC}, -- HEBREW LETTER TET WITH DAGESH
 [0xFB39] = {0x05D9, 0x05BC}, -- HEBREW LETTER YOD WITH DAGESH
 [0xFB3A] = {0x05DA, 0x05BC}, -- HEBREW LETTER FINAL KAF WITH DAGESH
 [0xFB3B] = {0x05DB, 0x05BC}, -- HEBREW LETTER KAF WITH DAGESH
 [0xFB3C] = {0x05DC, 0x05BC}, -- HEBREW LETTER LAMED WITH DAGESH
 [0xFB3D] = {status="disallowed"}, -- NA   <reserved-FB3D>
 [0xFB3E] = {0x05DE, 0x05BC}, -- HEBREW LETTER MEM WITH DAGESH
 [0xFB3F] = {status="disallowed"}, -- NA   <reserved-FB3F>
 [0xFB40] = {0x05E0, 0x05BC}, -- HEBREW LETTER NUN WITH DAGESH
 [0xFB41] = {0x05E1, 0x05BC}, -- HEBREW LETTER SAMEKH WITH DAGESH
 [0xFB42] = {status="disallowed"}, -- NA   <reserved-FB42>
 [0xFB43] = {0x05E3, 0x05BC}, -- HEBREW LETTER FINAL PE WITH DAGESH
 [0xFB44] = {0x05E4, 0x05BC}, -- HEBREW LETTER PE WITH DAGESH
 [0xFB45] = {status="disallowed"}, -- NA   <reserved-FB45>
 [0xFB46] = {0x05E6, 0x05BC}, -- HEBREW LETTER TSADI WITH DAGESH
 [0xFB47] = {0x05E7, 0x05BC}, -- HEBREW LETTER QOF WITH DAGESH
 [0xFB48] = {0x05E8, 0x05BC}, -- HEBREW LETTER RESH WITH DAGESH
 [0xFB49] = {0x05E9, 0x05BC}, -- HEBREW LETTER SHIN WITH DAGESH
 [0xFB4A] = {0x05EA, 0x05BC}, -- HEBREW LETTER TAV WITH DAGESH
 [0xFB4B] = {0x05D5, 0x05B9}, -- HEBREW LETTER VAV WITH HOLAM
 [0xFB4C] = {0x05D1, 0x05BF}, -- HEBREW LETTER BET WITH RAFE
 [0xFB4D] = {0x05DB, 0x05BF}, -- HEBREW LETTER KAF WITH RAFE
 [0xFB4E] = {0x05E4, 0x05BF}, -- HEBREW LETTER PE WITH RAFE
 [0xFB4F] = {0x05D0, 0x05DC}, -- HEBREW LIGATURE ALEF LAMED
 -- NA   <reserved-FB18>..<reserved-FB1C>
 [0xFB18] = {status="disallowed"},
 [0xFB19] = {status="disallowed"},
 [0xFB1A] = {status="disallowed"},
 [0xFB1B] = {status="disallowed"},
 [0xFB1C] = {status="disallowed"},
 -- ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER ALEF WASLA FINAL FORM
 [0xFB50] = 0x0671,
 [0xFB51] = 0x0671,
 -- ARABIC LETTER BEEH ISOLATED FORM..ARABIC LETTER BEEH MEDIAL FORM
 [0xFB52] = 0x067B,
 [0xFB53] = 0x067B,
 [0xFB54] = 0x067B,
 [0xFB55] = 0x067B,
 -- ARABIC LETTER PEH ISOLATED FORM..ARABIC LETTER PEH MEDIAL FORM
 [0xFB56] = 0x067E,
 [0xFB57] = 0x067E,
 [0xFB58] = 0x067E,
 [0xFB59] = 0x067E,
 -- ARABIC LETTER BEHEH ISOLATED FORM..ARABIC LETTER BEHEH MEDIAL FORM
 [0xFB5A] = 0x0680,
 [0xFB5B] = 0x0680,
 [0xFB5C] = 0x0680,
 [0xFB5D] = 0x0680,
 -- ARABIC LETTER TTEHEH ISOLATED FORM..ARABIC LETTER TTEHEH MEDIAL FORM
 [0xFB5E] = 0x067A,
 [0xFB5F] = 0x067A,
 [0xFB60] = 0x067A,
 [0xFB61] = 0x067A,
 -- ARABIC LETTER TEHEH ISOLATED FORM..ARABIC LETTER TEHEH MEDIAL FORM
 [0xFB62] = 0x067F,
 [0xFB63] = 0x067F,
 [0xFB64] = 0x067F,
 [0xFB65] = 0x067F,
 -- ARABIC LETTER TTEH ISOLATED FORM..ARABIC LETTER TTEH MEDIAL FORM
 [0xFB66] = 0x0679,
 [0xFB67] = 0x0679,
 [0xFB68] = 0x0679,
 [0xFB69] = 0x0679,
 -- ARABIC LETTER VEH ISOLATED FORM..ARABIC LETTER VEH MEDIAL FORM
 [0xFB6A] = 0x06A4,
 [0xFB6B] = 0x06A4,
 [0xFB6C] = 0x06A4,
 [0xFB6D] = 0x06A4,
 -- ARABIC LETTER PEHEH ISOLATED FORM..ARABIC LETTER PEHEH MEDIAL FORM
 [0xFB6E] = 0x06A6,
 [0xFB6F] = 0x06A6,
 [0xFB70] = 0x06A6,
 [0xFB71] = 0x06A6,
 -- ARABIC LETTER DYEH ISOLATED FORM..ARABIC LETTER DYEH MEDIAL FORM
 [0xFB72] = 0x0684,
 [0xFB73] = 0x0684,
 [0xFB74] = 0x0684,
 [0xFB75] = 0x0684,
 -- ARABIC LETTER NYEH ISOLATED FORM..ARABIC LETTER NYEH MEDIAL FORM
 [0xFB76] = 0x0683,
 [0xFB77] = 0x0683,
 [0xFB78] = 0x0683,
 [0xFB79] = 0x0683,
 -- ARABIC LETTER TCHEH ISOLATED FORM..ARABIC LETTER TCHEH MEDIAL FORM
 [0xFB7A] = 0x0686,
 [0xFB7B] = 0x0686,
 [0xFB7C] = 0x0686,
 [0xFB7D] = 0x0686,
 -- ARABIC LETTER TCHEHEH ISOLATED FORM..ARABIC LETTER TCHEHEH MEDIAL FORM
 [0xFB7E] = 0x0687,
 [0xFB7F] = 0x0687,
 [0xFB80] = 0x0687,
 [0xFB81] = 0x0687,
 -- ARABIC LETTER DDAHAL ISOLATED FORM..ARABIC LETTER DDAHAL FINAL FORM
 [0xFB82] = 0x068D,
 [0xFB83] = 0x068D,
 -- ARABIC LETTER DAHAL ISOLATED FORM..ARABIC LETTER DAHAL FINAL FORM
 [0xFB84] = 0x068C,
 [0xFB85] = 0x068C,
 -- ARABIC LETTER DUL ISOLATED FORM..ARABIC LETTER DUL FINAL FORM
 [0xFB86] = 0x068E,
 [0xFB87] = 0x068E,
 -- ARABIC LETTER DDAL ISOLATED FORM..ARABIC LETTER DDAL FINAL FORM
 [0xFB88] = 0x0688,
 [0xFB89] = 0x0688,
 -- ARABIC LETTER JEH ISOLATED FORM..ARABIC LETTER JEH FINAL FORM
 [0xFB8A] = 0x0698,
 [0xFB8B] = 0x0698,
 -- ARABIC LETTER RREH ISOLATED FORM..ARABIC LETTER RREH FINAL FORM
 [0xFB8C] = 0x0691,
 [0xFB8D] = 0x0691,
 -- ARABIC LETTER KEHEH ISOLATED FORM..ARABIC LETTER KEHEH MEDIAL FORM
 [0xFB8E] = 0x06A9,
 [0xFB8F] = 0x06A9,
 [0xFB90] = 0x06A9,
 [0xFB91] = 0x06A9,
 -- ARABIC LETTER GAF ISOLATED FORM..ARABIC LETTER GAF MEDIAL FORM
 [0xFB92] = 0x06AF,
 [0xFB93] = 0x06AF,
 [0xFB94] = 0x06AF,
 [0xFB95] = 0x06AF,
 -- ARABIC LETTER GUEH ISOLATED FORM..ARABIC LETTER GUEH MEDIAL FORM
 [0xFB96] = 0x06B3,
 [0xFB97] = 0x06B3,
 [0xFB98] = 0x06B3,
 [0xFB99] = 0x06B3,
 -- ARABIC LETTER NGOEH ISOLATED FORM..ARABIC LETTER NGOEH MEDIAL FORM
 [0xFB9A] = 0x06B1,
 [0xFB9B] = 0x06B1,
 [0xFB9C] = 0x06B1,
 [0xFB9D] = 0x06B1,
 -- ARABIC LETTER NOON GHUNNA ISOLATED FORM..ARABIC LETTER NOON GHUNNA FINAL FORM
 [0xFB9E] = 0x06BA,
 [0xFB9F] = 0x06BA,
 -- ARABIC LETTER RNOON ISOLATED FORM..ARABIC LETTER RNOON MEDIAL FORM
 [0xFBA0] = 0x06BB,
 [0xFBA1] = 0x06BB,
 [0xFBA2] = 0x06BB,
 [0xFBA3] = 0x06BB,
 -- ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
 [0xFBA4] = 0x06C0,
 [0xFBA5] = 0x06C0,
 -- ARABIC LETTER HEH GOAL ISOLATED FORM..ARABIC LETTER HEH GOAL MEDIAL FORM
 [0xFBA6] = 0x06C1,
 [0xFBA7] = 0x06C1,
 [0xFBA8] = 0x06C1,
 [0xFBA9] = 0x06C1,
 -- ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM..ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
 [0xFBAA] = 0x06BE,
 [0xFBAB] = 0x06BE,
 [0xFBAC] = 0x06BE,
 [0xFBAD] = 0x06BE,
 -- ARABIC LETTER YEH BARREE ISOLATED FORM..ARABIC LETTER YEH BARREE FINAL FORM
 [0xFBAE] = 0x06D2,
 [0xFBAF] = 0x06D2,
 -- ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
 [0xFBB0] = 0x06D3,
 [0xFBB1] = 0x06D3,
 -- ARABIC LETTER NG ISOLATED FORM..ARABIC LETTER NG MEDIAL FORM
 [0xFBD3] = 0x06AD,
 [0xFBD4] = 0x06AD,
 [0xFBD5] = 0x06AD,
 [0xFBD6] = 0x06AD,
 -- ARABIC LETTER U ISOLATED FORM..ARABIC LETTER U FINAL FORM
 [0xFBD7] = 0x06C7,
 [0xFBD8] = 0x06C7,
 -- ARABIC LETTER OE ISOLATED FORM..ARABIC LETTER OE FINAL FORM
 [0xFBD9] = 0x06C6,
 [0xFBDA] = 0x06C6,
 [0xFBDD] = {0x06C7, 0x0674}, -- ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
 -- ARABIC LETTER YU ISOLATED FORM..ARABIC LETTER YU FINAL FORM
 [0xFBDB] = 0x06C8,
 [0xFBDC] = 0x06C8,
 -- ARABIC LETTER VE ISOLATED FORM..ARABIC LETTER VE FINAL FORM
 [0xFBDE] = 0x06CB,
 [0xFBDF] = 0x06CB,
 -- ARABIC LETTER KIRGHIZ OE ISOLATED FORM..ARABIC LETTER KIRGHIZ OE FINAL FORM
 [0xFBE0] = 0x06C5,
 [0xFBE1] = 0x06C5,
 -- ARABIC LETTER KIRGHIZ YU ISOLATED FORM..ARABIC LETTER KIRGHIZ YU FINAL FORM
 [0xFBE2] = 0x06C9,
 [0xFBE3] = 0x06C9,
 -- ARABIC LETTER E ISOLATED FORM..ARABIC LETTER E MEDIAL FORM
 [0xFBE4] = 0x06D0,
 [0xFBE5] = 0x06D0,
 [0xFBE6] = 0x06D0,
 [0xFBE7] = 0x06D0,
 -- ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM..ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
 [0xFBE8] = 0x0649,
 [0xFBE9] = 0x0649,
 -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
 [0xFBEA] = {0x0626, 0x0627},
 [0xFBEB] = {0x0626, 0x0627},
 -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
 [0xFBEC] = {0x0626, 0x06D5},
 [0xFBED] = {0x0626, 0x06D5},
 -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
 [0xFBEE] = {0x0626, 0x0648},
 [0xFBEF] = {0x0626, 0x0648},
 -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
 [0xFBF0] = {0x0626, 0x06C7},
 [0xFBF1] = {0x0626, 0x06C7},
 -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
 [0xFBF2] = {0x0626, 0x06C6},
 [0xFBF3] = {0x0626, 0x06C6},
 -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
 [0xFBF4] = {0x0626, 0x06C8},
 [0xFBF5] = {0x0626, 0x06C8},
 -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
 [0xFBF6] = {0x0626, 0x06D0},
 [0xFBF7] = {0x0626, 0x06D0},
 [0xFBF8] = {0x0626, 0x06D0},
 -- ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
 [0xFBF9] = {0x0626, 0x0649},
 [0xFBFA] = {0x0626, 0x0649},
 [0xFBFB] = {0x0626, 0x0649},
 [0xFC00] = {0x0626, 0x062C}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
 [0xFC01] = {0x0626, 0x062D}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
 [0xFC02] = {0x0626, 0x0645}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
 [0xFC03] = {0x0626, 0x0649}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
 [0xFC04] = {0x0626, 0x064A}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
 [0xFC05] = {0x0628, 0x062C}, -- ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
 [0xFC06] = {0x0628, 0x062D}, -- ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
 [0xFC07] = {0x0628, 0x062E}, -- ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
 [0xFC08] = {0x0628, 0x0645}, -- ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
 [0xFC09] = {0x0628, 0x0649}, -- ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
 [0xFC0A] = {0x0628, 0x064A}, -- ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
 [0xFC0B] = {0x062A, 0x062C}, -- ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
 [0xFC0C] = {0x062A, 0x062D}, -- ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
 [0xFC0D] = {0x062A, 0x062E}, -- ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
 [0xFC0E] = {0x062A, 0x0645}, -- ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
 [0xFC0F] = {0x062A, 0x0649}, -- ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
 [0xFC10] = {0x062A, 0x064A}, -- ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
 [0xFC11] = {0x062B, 0x062C}, -- ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
 [0xFC12] = {0x062B, 0x0645}, -- ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
 [0xFC13] = {0x062B, 0x0649}, -- ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
 [0xFC14] = {0x062B, 0x064A}, -- ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
 [0xFC15] = {0x062C, 0x062D}, -- ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
 [0xFC16] = {0x062C, 0x0645}, -- ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
 [0xFC17] = {0x062D, 0x062C}, -- ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
 [0xFC18] = {0x062D, 0x0645}, -- ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
 [0xFC19] = {0x062E, 0x062C}, -- ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
 [0xFC1A] = {0x062E, 0x062D}, -- ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
 [0xFC1B] = {0x062E, 0x0645}, -- ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
 [0xFC1C] = {0x0633, 0x062C}, -- ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
 [0xFC1D] = {0x0633, 0x062D}, -- ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
 [0xFC1E] = {0x0633, 0x062E}, -- ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
 [0xFC1F] = {0x0633, 0x0645}, -- ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
 [0xFC20] = {0x0635, 0x062D}, -- ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
 [0xFC21] = {0x0635, 0x0645}, -- ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
 [0xFC22] = {0x0636, 0x062C}, -- ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
 [0xFC23] = {0x0636, 0x062D}, -- ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
 [0xFC24] = {0x0636, 0x062E}, -- ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
 [0xFC25] = {0x0636, 0x0645}, -- ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
 [0xFC26] = {0x0637, 0x062D}, -- ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
 [0xFC27] = {0x0637, 0x0645}, -- ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
 [0xFC28] = {0x0638, 0x0645}, -- ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
 [0xFC29] = {0x0639, 0x062C}, -- ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
 [0xFC2A] = {0x0639, 0x0645}, -- ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
 [0xFC2B] = {0x063A, 0x062C}, -- ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
 [0xFC2C] = {0x063A, 0x0645}, -- ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
 [0xFC2D] = {0x0641, 0x062C}, -- ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
 [0xFC2E] = {0x0641, 0x062D}, -- ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
 [0xFC2F] = {0x0641, 0x062E}, -- ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
 [0xFC30] = {0x0641, 0x0645}, -- ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
 [0xFC31] = {0x0641, 0x0649}, -- ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
 [0xFC32] = {0x0641, 0x064A}, -- ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
 [0xFC33] = {0x0642, 0x062D}, -- ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
 [0xFC34] = {0x0642, 0x0645}, -- ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
 [0xFC35] = {0x0642, 0x0649}, -- ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
 [0xFC36] = {0x0642, 0x064A}, -- ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
 [0xFC37] = {0x0643, 0x0627}, -- ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
 [0xFC38] = {0x0643, 0x062C}, -- ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
 [0xFC39] = {0x0643, 0x062D}, -- ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
 [0xFC3A] = {0x0643, 0x062E}, -- ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
 [0xFC3B] = {0x0643, 0x0644}, -- ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
 [0xFC3C] = {0x0643, 0x0645}, -- ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
 [0xFC3D] = {0x0643, 0x0649}, -- ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
 [0xFC3E] = {0x0643, 0x064A}, -- ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
 [0xFC3F] = {0x0644, 0x062C}, -- ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
 [0xFC40] = {0x0644, 0x062D}, -- ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
 [0xFC41] = {0x0644, 0x062E}, -- ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
 [0xFC42] = {0x0644, 0x0645}, -- ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
 [0xFC43] = {0x0644, 0x0649}, -- ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
 [0xFC44] = {0x0644, 0x064A}, -- ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
 [0xFC45] = {0x0645, 0x062C}, -- ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
 [0xFC46] = {0x0645, 0x062D}, -- ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
 [0xFC47] = {0x0645, 0x062E}, -- ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
 [0xFC48] = {0x0645, 0x0645}, -- ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
 [0xFC49] = {0x0645, 0x0649}, -- ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
 [0xFC4A] = {0x0645, 0x064A}, -- ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
 [0xFC4B] = {0x0646, 0x062C}, -- ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
 [0xFC4C] = {0x0646, 0x062D}, -- ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
 [0xFC4D] = {0x0646, 0x062E}, -- ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
 [0xFC4E] = {0x0646, 0x0645}, -- ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
 [0xFC4F] = {0x0646, 0x0649}, -- ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
 [0xFC50] = {0x0646, 0x064A}, -- ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
 [0xFC51] = {0x0647, 0x062C}, -- ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
 [0xFC52] = {0x0647, 0x0645}, -- ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
 [0xFC53] = {0x0647, 0x0649}, -- ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
 [0xFC54] = {0x0647, 0x064A}, -- ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
 [0xFC55] = {0x064A, 0x062C}, -- ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
 [0xFC56] = {0x064A, 0x062D}, -- ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
 [0xFC57] = {0x064A, 0x062E}, -- ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
 [0xFC58] = {0x064A, 0x0645}, -- ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
 [0xFC59] = {0x064A, 0x0649}, -- ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
 [0xFC5A] = {0x064A, 0x064A}, -- ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
 [0xFC5B] = {0x0630, 0x0670}, -- ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
 [0xFC5C] = {0x0631, 0x0670}, -- ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
 [0xFC5D] = {0x0649, 0x0670}, -- ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
 [0xFC5E] = {status="disallowed"}, -- ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
 [0xFC5F] = {status="disallowed"}, -- ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
 [0xFC60] = {status="disallowed"}, -- ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
 [0xFC61] = {status="disallowed"}, -- ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
 [0xFC62] = {status="disallowed"}, -- ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
 [0xFC63] = {status="disallowed"}, -- ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
 [0xFC64] = {0x0626, 0x0631}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
 [0xFC65] = {0x0626, 0x0632}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
 [0xFC66] = {0x0626, 0x0645}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
 [0xFC67] = {0x0626, 0x0646}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
 [0xFC68] = {0x0626, 0x0649}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
 [0xFC69] = {0x0626, 0x064A}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
 [0xFC6A] = {0x0628, 0x0631}, -- ARABIC LIGATURE BEH WITH REH FINAL FORM
 [0xFC6B] = {0x0628, 0x0632}, -- ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
 [0xFC6C] = {0x0628, 0x0645}, -- ARABIC LIGATURE BEH WITH MEEM FINAL FORM
 [0xFC6D] = {0x0628, 0x0646}, -- ARABIC LIGATURE BEH WITH NOON FINAL FORM
 [0xFC6E] = {0x0628, 0x0649}, -- ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
 [0xFC6F] = {0x0628, 0x064A}, -- ARABIC LIGATURE BEH WITH YEH FINAL FORM
 [0xFC70] = {0x062A, 0x0631}, -- ARABIC LIGATURE TEH WITH REH FINAL FORM
 [0xFC71] = {0x062A, 0x0632}, -- ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
 [0xFC72] = {0x062A, 0x0645}, -- ARABIC LIGATURE TEH WITH MEEM FINAL FORM
 [0xFC73] = {0x062A, 0x0646}, -- ARABIC LIGATURE TEH WITH NOON FINAL FORM
 [0xFC74] = {0x062A, 0x0649}, -- ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
 [0xFC75] = {0x062A, 0x064A}, -- ARABIC LIGATURE TEH WITH YEH FINAL FORM
 [0xFC76] = {0x062B, 0x0631}, -- ARABIC LIGATURE THEH WITH REH FINAL FORM
 [0xFC77] = {0x062B, 0x0632}, -- ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
 [0xFC78] = {0x062B, 0x0645}, -- ARABIC LIGATURE THEH WITH MEEM FINAL FORM
 [0xFC79] = {0x062B, 0x0646}, -- ARABIC LIGATURE THEH WITH NOON FINAL FORM
 [0xFC7A] = {0x062B, 0x0649}, -- ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
 [0xFC7B] = {0x062B, 0x064A}, -- ARABIC LIGATURE THEH WITH YEH FINAL FORM
 [0xFC7C] = {0x0641, 0x0649}, -- ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
 [0xFC7D] = {0x0641, 0x064A}, -- ARABIC LIGATURE FEH WITH YEH FINAL FORM
 [0xFC7E] = {0x0642, 0x0649}, -- ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
 [0xFC7F] = {0x0642, 0x064A}, -- ARABIC LIGATURE QAF WITH YEH FINAL FORM
 [0xFC80] = {0x0643, 0x0627}, -- ARABIC LIGATURE KAF WITH ALEF FINAL FORM
 [0xFC81] = {0x0643, 0x0644}, -- ARABIC LIGATURE KAF WITH LAM FINAL FORM
 [0xFC82] = {0x0643, 0x0645}, -- ARABIC LIGATURE KAF WITH MEEM FINAL FORM
 [0xFC83] = {0x0643, 0x0649}, -- ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
 [0xFC84] = {0x0643, 0x064A}, -- ARABIC LIGATURE KAF WITH YEH FINAL FORM
 [0xFC85] = {0x0644, 0x0645}, -- ARABIC LIGATURE LAM WITH MEEM FINAL FORM
 [0xFC86] = {0x0644, 0x0649}, -- ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
 [0xFC87] = {0x0644, 0x064A}, -- ARABIC LIGATURE LAM WITH YEH FINAL FORM
 [0xFC88] = {0x0645, 0x0627}, -- ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
 [0xFC89] = {0x0645, 0x0645}, -- ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
 [0xFC8A] = {0x0646, 0x0631}, -- ARABIC LIGATURE NOON WITH REH FINAL FORM
 [0xFC8B] = {0x0646, 0x0632}, -- ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
 [0xFC8C] = {0x0646, 0x0645}, -- ARABIC LIGATURE NOON WITH MEEM FINAL FORM
 [0xFC8D] = {0x0646, 0x0646}, -- ARABIC LIGATURE NOON WITH NOON FINAL FORM
 [0xFC8E] = {0x0646, 0x0649}, -- ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
 [0xFC8F] = {0x0646, 0x064A}, -- ARABIC LIGATURE NOON WITH YEH FINAL FORM
 [0xFC90] = {0x0649, 0x0670}, -- ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
 [0xFC91] = {0x064A, 0x0631}, -- ARABIC LIGATURE YEH WITH REH FINAL FORM
 [0xFC92] = {0x064A, 0x0632}, -- ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
 [0xFC93] = {0x064A, 0x0645}, -- ARABIC LIGATURE YEH WITH MEEM FINAL FORM
 [0xFC94] = {0x064A, 0x0646}, -- ARABIC LIGATURE YEH WITH NOON FINAL FORM
 [0xFC95] = {0x064A, 0x0649}, -- ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
 [0xFC96] = {0x064A, 0x064A}, -- ARABIC LIGATURE YEH WITH YEH FINAL FORM
 [0xFC97] = {0x0626, 0x062C}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
 [0xFC98] = {0x0626, 0x062D}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
 [0xFC99] = {0x0626, 0x062E}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
 [0xFC9A] = {0x0626, 0x0645}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
 [0xFC9B] = {0x0626, 0x0647}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
 [0xFC9C] = {0x0628, 0x062C}, -- ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
 [0xFC9D] = {0x0628, 0x062D}, -- ARABIC LIGATURE BEH WITH HAH INITIAL FORM
 [0xFC9E] = {0x0628, 0x062E}, -- ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
 [0xFC9F] = {0x0628, 0x0645}, -- ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
 [0xFCA0] = {0x0628, 0x0647}, -- ARABIC LIGATURE BEH WITH HEH INITIAL FORM
 [0xFCA1] = {0x062A, 0x062C}, -- ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
 [0xFCA2] = {0x062A, 0x062D}, -- ARABIC LIGATURE TEH WITH HAH INITIAL FORM
 [0xFCA3] = {0x062A, 0x062E}, -- ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
 [0xFCA4] = {0x062A, 0x0645}, -- ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
 [0xFCA5] = {0x062A, 0x0647}, -- ARABIC LIGATURE TEH WITH HEH INITIAL FORM
 [0xFCA6] = {0x062B, 0x0645}, -- ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
 [0xFCA7] = {0x062C, 0x062D}, -- ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
 [0xFCA8] = {0x062C, 0x0645}, -- ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
 [0xFCA9] = {0x062D, 0x062C}, -- ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
 [0xFCAA] = {0x062D, 0x0645}, -- ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
 [0xFCAB] = {0x062E, 0x062C}, -- ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
 [0xFCAC] = {0x062E, 0x0645}, -- ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
 [0xFCAD] = {0x0633, 0x062C}, -- ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
 [0xFCAE] = {0x0633, 0x062D}, -- ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
 [0xFCAF] = {0x0633, 0x062E}, -- ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
 [0xFCB0] = {0x0633, 0x0645}, -- ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
 [0xFCB1] = {0x0635, 0x062D}, -- ARABIC LIGATURE SAD WITH HAH INITIAL FORM
 [0xFCB2] = {0x0635, 0x062E}, -- ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
 [0xFCB3] = {0x0635, 0x0645}, -- ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
 [0xFCB4] = {0x0636, 0x062C}, -- ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
 [0xFCB5] = {0x0636, 0x062D}, -- ARABIC LIGATURE DAD WITH HAH INITIAL FORM
 [0xFCB6] = {0x0636, 0x062E}, -- ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
 [0xFCB7] = {0x0636, 0x0645}, -- ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
 [0xFCB8] = {0x0637, 0x062D}, -- ARABIC LIGATURE TAH WITH HAH INITIAL FORM
 [0xFCB9] = {0x0638, 0x0645}, -- ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
 [0xFCBA] = {0x0639, 0x062C}, -- ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
 [0xFCBB] = {0x0639, 0x0645}, -- ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
 [0xFCBC] = {0x063A, 0x062C}, -- ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
 [0xFCBD] = {0x063A, 0x0645}, -- ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
 [0xFCBE] = {0x0641, 0x062C}, -- ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
 [0xFCBF] = {0x0641, 0x062D}, -- ARABIC LIGATURE FEH WITH HAH INITIAL FORM
 [0xFCC0] = {0x0641, 0x062E}, -- ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
 [0xFCC1] = {0x0641, 0x0645}, -- ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
 [0xFCC2] = {0x0642, 0x062D}, -- ARABIC LIGATURE QAF WITH HAH INITIAL FORM
 [0xFCC3] = {0x0642, 0x0645}, -- ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
 [0xFCC4] = {0x0643, 0x062C}, -- ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
 [0xFCC5] = {0x0643, 0x062D}, -- ARABIC LIGATURE KAF WITH HAH INITIAL FORM
 [0xFCC6] = {0x0643, 0x062E}, -- ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
 [0xFCC7] = {0x0643, 0x0644}, -- ARABIC LIGATURE KAF WITH LAM INITIAL FORM
 [0xFCC8] = {0x0643, 0x0645}, -- ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
 [0xFCC9] = {0x0644, 0x062C}, -- ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
 [0xFCCA] = {0x0644, 0x062D}, -- ARABIC LIGATURE LAM WITH HAH INITIAL FORM
 [0xFCCB] = {0x0644, 0x062E}, -- ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
 [0xFCCC] = {0x0644, 0x0645}, -- ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
 [0xFCCD] = {0x0644, 0x0647}, -- ARABIC LIGATURE LAM WITH HEH INITIAL FORM
 [0xFCCE] = {0x0645, 0x062C}, -- ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
 [0xFCCF] = {0x0645, 0x062D}, -- ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
 [0xFCD0] = {0x0645, 0x062E}, -- ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
 [0xFCD1] = {0x0645, 0x0645}, -- ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
 [0xFCD2] = {0x0646, 0x062C}, -- ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
 [0xFCD3] = {0x0646, 0x062D}, -- ARABIC LIGATURE NOON WITH HAH INITIAL FORM
 [0xFCD4] = {0x0646, 0x062E}, -- ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
 [0xFCD5] = {0x0646, 0x0645}, -- ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
 [0xFCD6] = {0x0646, 0x0647}, -- ARABIC LIGATURE NOON WITH HEH INITIAL FORM
 [0xFCD7] = {0x0647, 0x062C}, -- ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
 [0xFCD8] = {0x0647, 0x0645}, -- ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
 [0xFCD9] = {0x0647, 0x0670}, -- ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
 [0xFCDA] = {0x064A, 0x062C}, -- ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
 [0xFCDB] = {0x064A, 0x062D}, -- ARABIC LIGATURE YEH WITH HAH INITIAL FORM
 [0xFCDC] = {0x064A, 0x062E}, -- ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
 [0xFCDD] = {0x064A, 0x0645}, -- ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
 [0xFCDE] = {0x064A, 0x0647}, -- ARABIC LIGATURE YEH WITH HEH INITIAL FORM
 [0xFCDF] = {0x0626, 0x0645}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
 [0xFCE0] = {0x0626, 0x0647}, -- ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
 [0xFCE1] = {0x0628, 0x0645}, -- ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
 [0xFCE2] = {0x0628, 0x0647}, -- ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
 [0xFCE3] = {0x062A, 0x0645}, -- ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
 [0xFCE4] = {0x062A, 0x0647}, -- ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
 [0xFCE5] = {0x062B, 0x0645}, -- ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
 [0xFCE6] = {0x062B, 0x0647}, -- ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
 [0xFCE7] = {0x0633, 0x0645}, -- ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
 [0xFCE8] = {0x0633, 0x0647}, -- ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
 [0xFCE9] = {0x0634, 0x0645}, -- ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
 [0xFCEA] = {0x0634, 0x0647}, -- ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
 [0xFCEB] = {0x0643, 0x0644}, -- ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
 [0xFCEC] = {0x0643, 0x0645}, -- ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
 [0xFCED] = {0x0644, 0x0645}, -- ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
 [0xFCEE] = {0x0646, 0x0645}, -- ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
 [0xFCEF] = {0x0646, 0x0647}, -- ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
 [0xFCF0] = {0x064A, 0x0645}, -- ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
 [0xFCF1] = {0x064A, 0x0647}, -- ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
 [0xFCF2] = {0x0640, 0x064E, 0x0651}, -- ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
 [0xFCF3] = {0x0640, 0x064F, 0x0651}, -- ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
 [0xFCF4] = {0x0640, 0x0650, 0x0651}, -- ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
 [0xFCF5] = {0x0637, 0x0649}, -- ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
 [0xFCF6] = {0x0637, 0x064A}, -- ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
 [0xFCF7] = {0x0639, 0x0649}, -- ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
 [0xFCF8] = {0x0639, 0x064A}, -- ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
 [0xFCF9] = {0x063A, 0x0649}, -- ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
 [0xFCFA] = {0x063A, 0x064A}, -- ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
 [0xFCFB] = {0x0633, 0x0649}, -- ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
 [0xFCFC] = {0x0633, 0x064A}, -- ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
 [0xFCFD] = {0x0634, 0x0649}, -- ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
 [0xFCFE] = {0x0634, 0x064A}, -- ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
 [0xFCFF] = {0x062D, 0x0649}, -- ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
 [0xFD00] = {0x062D, 0x064A}, -- ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
 [0xFD01] = {0x062C, 0x0649}, -- ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
 [0xFD02] = {0x062C, 0x064A}, -- ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
 [0xFD03] = {0x062E, 0x0649}, -- ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
 [0xFD04] = {0x062E, 0x064A}, -- ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
 [0xFD05] = {0x0635, 0x0649}, -- ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
 [0xFD06] = {0x0635, 0x064A}, -- ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
 [0xFD07] = {0x0636, 0x0649}, -- ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
 [0xFD08] = {0x0636, 0x064A}, -- ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
 [0xFD09] = {0x0634, 0x062C}, -- ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
 [0xFD0A] = {0x0634, 0x062D}, -- ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
 [0xFD0B] = {0x0634, 0x062E}, -- ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
 [0xFD0C] = {0x0634, 0x0645}, -- ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
 [0xFD0D] = {0x0634, 0x0631}, -- ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
 [0xFD0E] = {0x0633, 0x0631}, -- ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
 [0xFD0F] = {0x0635, 0x0631}, -- ARABIC LIGATURE SAD WITH REH ISOLATED FORM
 [0xFD10] = {0x0636, 0x0631}, -- ARABIC LIGATURE DAD WITH REH ISOLATED FORM
 [0xFD11] = {0x0637, 0x0649}, -- ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
 [0xFD12] = {0x0637, 0x064A}, -- ARABIC LIGATURE TAH WITH YEH FINAL FORM
 [0xFD13] = {0x0639, 0x0649}, -- ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
 [0xFD14] = {0x0639, 0x064A}, -- ARABIC LIGATURE AIN WITH YEH FINAL FORM
 [0xFD15] = {0x063A, 0x0649}, -- ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
 [0xFD16] = {0x063A, 0x064A}, -- ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
 [0xFD17] = {0x0633, 0x0649}, -- ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
 [0xFD18] = {0x0633, 0x064A}, -- ARABIC LIGATURE SEEN WITH YEH FINAL FORM
 [0xFD19] = {0x0634, 0x0649}, -- ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
 [0xFD1A] = {0x0634, 0x064A}, -- ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
 [0xFD1B] = {0x062D, 0x0649}, -- ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
 [0xFD1C] = {0x062D, 0x064A}, -- ARABIC LIGATURE HAH WITH YEH FINAL FORM
 [0xFD1D] = {0x062C, 0x0649}, -- ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
 [0xFD1E] = {0x062C, 0x064A}, -- ARABIC LIGATURE JEEM WITH YEH FINAL FORM
 [0xFD1F] = {0x062E, 0x0649}, -- ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
 [0xFD20] = {0x062E, 0x064A}, -- ARABIC LIGATURE KHAH WITH YEH FINAL FORM
 [0xFD21] = {0x0635, 0x0649}, -- ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
 [0xFD22] = {0x0635, 0x064A}, -- ARABIC LIGATURE SAD WITH YEH FINAL FORM
 [0xFD23] = {0x0636, 0x0649}, -- ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
 [0xFD24] = {0x0636, 0x064A}, -- ARABIC LIGATURE DAD WITH YEH FINAL FORM
 [0xFD25] = {0x0634, 0x062C}, -- ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
 [0xFD26] = {0x0634, 0x062D}, -- ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
 [0xFD27] = {0x0634, 0x062E}, -- ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
 [0xFD28] = {0x0634, 0x0645}, -- ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
 [0xFD29] = {0x0634, 0x0631}, -- ARABIC LIGATURE SHEEN WITH REH FINAL FORM
 [0xFD2A] = {0x0633, 0x0631}, -- ARABIC LIGATURE SEEN WITH REH FINAL FORM
 [0xFD2B] = {0x0635, 0x0631}, -- ARABIC LIGATURE SAD WITH REH FINAL FORM
 [0xFD2C] = {0x0636, 0x0631}, -- ARABIC LIGATURE DAD WITH REH FINAL FORM
 [0xFD2D] = {0x0634, 0x062C}, -- ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
 [0xFD2E] = {0x0634, 0x062D}, -- ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
 [0xFD2F] = {0x0634, 0x062E}, -- ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
 [0xFD30] = {0x0634, 0x0645}, -- ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
 [0xFD31] = {0x0633, 0x0647}, -- ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
 [0xFD32] = {0x0634, 0x0647}, -- ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
 [0xFD33] = {0x0637, 0x0645}, -- ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
 [0xFD34] = {0x0633, 0x062C}, -- ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
 [0xFD35] = {0x0633, 0x062D}, -- ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
 [0xFD36] = {0x0633, 0x062E}, -- ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
 [0xFD37] = {0x0634, 0x062C}, -- ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
 [0xFD38] = {0x0634, 0x062D}, -- ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
 [0xFD39] = {0x0634, 0x062E}, -- ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
 [0xFD3A] = {0x0637, 0x0645}, -- ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
 [0xFD3B] = {0x0638, 0x0645}, -- ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
 -- ARABIC LETTER FARSI YEH ISOLATED FORM..ARABIC LETTER FARSI YEH MEDIAL FORM
 [0xFBFC] = 0x06CC,
 [0xFBFD] = 0x06CC,
 [0xFBFE] = 0x06CC,
 [0xFBFF] = 0x06CC,
 -- ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
 [0xFD3C] = {0x0627, 0x064B},
 [0xFD3D] = {0x0627, 0x064B},
 -- ORNATE LEFT PARENTHESIS..ORNATE RIGHT PARENTHESIS
 [0xFD3E] = {status="disallowed"},
 [0xFD3F] = {status="disallowed"},
 [0xFD50] = {0x062A, 0x062C, 0x0645}, -- ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
 [0xFD53] = {0x062A, 0x062D, 0x0645}, -- ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
 [0xFD54] = {0x062A, 0x062E, 0x0645}, -- ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
 [0xFD55] = {0x062A, 0x0645, 0x062C}, -- ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
 [0xFD56] = {0x062A, 0x0645, 0x062D}, -- ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
 [0xFD57] = {0x062A, 0x0645, 0x062E}, -- ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
 -- ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM..ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
 [0xFD51] = {0x062A, 0x062D, 0x062C},
 [0xFD52] = {0x062A, 0x062D, 0x062C},
 [0xFD5A] = {0x062D, 0x0645, 0x064A}, -- ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
 [0xFD5B] = {0x062D, 0x0645, 0x0649}, -- ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
 [0xFD5C] = {0x0633, 0x062D, 0x062C}, -- ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
 [0xFD5D] = {0x0633, 0x062C, 0x062D}, -- ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
 [0xFD5E] = {0x0633, 0x062C, 0x0649}, -- ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
 -- ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
 [0xFD58] = {0x062C, 0x0645, 0x062D},
 [0xFD59] = {0x062C, 0x0645, 0x062D},
 [0xFD61] = {0x0633, 0x0645, 0x062C}, -- ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
 -- ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
 [0xFD5F] = {0x0633, 0x0645, 0x062D},
 [0xFD60] = {0x0633, 0x0645, 0x062D},
 -- ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
 [0xFD62] = {0x0633, 0x0645, 0x0645},
 [0xFD63] = {0x0633, 0x0645, 0x0645},
 [0xFD66] = {0x0635, 0x0645, 0x0645}, -- ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
 -- ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM..ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
 [0xFD64] = {0x0635, 0x062D, 0x062D},
 [0xFD65] = {0x0635, 0x062D, 0x062D},
 [0xFD69] = {0x0634, 0x062C, 0x064A}, -- ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
 -- ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM..ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
 [0xFD67] = {0x0634, 0x062D, 0x0645},
 [0xFD68] = {0x0634, 0x062D, 0x0645},
 -- ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM..ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
 [0xFD6A] = {0x0634, 0x0645, 0x062E},
 [0xFD6B] = {0x0634, 0x0645, 0x062E},
 [0xFD6E] = {0x0636, 0x062D, 0x0649}, -- ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
 -- ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
 [0xFD6C] = {0x0634, 0x0645, 0x0645},
 [0xFD6D] = {0x0634, 0x0645, 0x0645},
 -- ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
 [0xFD6F] = {0x0636, 0x062E, 0x0645},
 [0xFD70] = {0x0636, 0x062E, 0x0645},
 [0xFD73] = {0x0637, 0x0645, 0x0645}, -- ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
 [0xFD74] = {0x0637, 0x0645, 0x064A}, -- ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
 [0xFD75] = {0x0639, 0x062C, 0x0645}, -- ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
 -- ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
 [0xFD71] = {0x0637, 0x0645, 0x062D},
 [0xFD72] = {0x0637, 0x0645, 0x062D},
 [0xFD78] = {0x0639, 0x0645, 0x0649}, -- ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
 [0xFD79] = {0x063A, 0x0645, 0x0645}, -- ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
 [0xFD7A] = {0x063A, 0x0645, 0x064A}, -- ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
 [0xFD7B] = {0x063A, 0x0645, 0x0649}, -- ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
 -- ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
 [0xFD76] = {0x0639, 0x0645, 0x0645},
 [0xFD77] = {0x0639, 0x0645, 0x0645},
 [0xFD7E] = {0x0642, 0x0645, 0x062D}, -- ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
 [0xFD7F] = {0x0642, 0x0645, 0x0645}, -- ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
 [0xFD80] = {0x0644, 0x062D, 0x0645}, -- ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
 [0xFD81] = {0x0644, 0x062D, 0x064A}, -- ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
 [0xFD82] = {0x0644, 0x062D, 0x0649}, -- ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
 -- ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
 [0xFD7C] = {0x0641, 0x062E, 0x0645},
 [0xFD7D] = {0x0641, 0x062E, 0x0645},
 -- ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM..ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
 [0xFD83] = {0x0644, 0x062C, 0x062C},
 [0xFD84] = {0x0644, 0x062C, 0x062C},
 -- ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
 [0xFD85] = {0x0644, 0x062E, 0x0645},
 [0xFD86] = {0x0644, 0x062E, 0x0645},
 [0xFD89] = {0x0645, 0x062D, 0x062C}, -- ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
 [0xFD8A] = {0x0645, 0x062D, 0x0645}, -- ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
 [0xFD8B] = {0x0645, 0x062D, 0x064A}, -- ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
 [0xFD8C] = {0x0645, 0x062C, 0x062D}, -- ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
 [0xFD8D] = {0x0645, 0x062C, 0x0645}, -- ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
 [0xFD8E] = {0x0645, 0x062E, 0x062C}, -- ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
 [0xFD8F] = {0x0645, 0x062E, 0x0645}, -- ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
 -- ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
 [0xFD87] = {0x0644, 0x0645, 0x062D},
 [0xFD88] = {0x0644, 0x0645, 0x062D},
 [0xFD92] = {0x0645, 0x062C, 0x062E}, -- ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
 [0xFD93] = {0x0647, 0x0645, 0x062C}, -- ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
 [0xFD94] = {0x0647, 0x0645, 0x0645}, -- ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
 [0xFD95] = {0x0646, 0x062D, 0x0645}, -- ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
 [0xFD96] = {0x0646, 0x062D, 0x0649}, -- ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
 -- NA   <reserved-FD90>..<reserved-FD91>
 [0xFD90] = {status="disallowed"},
 [0xFD91] = {status="disallowed"},
 [0xFD99] = {0x0646, 0x062C, 0x0649}, -- ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
 [0xFD9A] = {0x0646, 0x0645, 0x064A}, -- ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
 [0xFD9B] = {0x0646, 0x0645, 0x0649}, -- ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
 -- ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
 [0xFD97] = {0x0646, 0x062C, 0x0645},
 [0xFD98] = {0x0646, 0x062C, 0x0645},
 [0xFD9E] = {0x0628, 0x062E, 0x064A}, -- ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
 [0xFD9F] = {0x062A, 0x062C, 0x064A}, -- ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
 [0xFDA0] = {0x062A, 0x062C, 0x0649}, -- ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
 [0xFDA1] = {0x062A, 0x062E, 0x064A}, -- ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
 [0xFDA2] = {0x062A, 0x062E, 0x0649}, -- ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
 [0xFDA3] = {0x062A, 0x0645, 0x064A}, -- ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
 [0xFDA4] = {0x062A, 0x0645, 0x0649}, -- ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
 [0xFDA5] = {0x062C, 0x0645, 0x064A}, -- ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
 [0xFDA6] = {0x062C, 0x062D, 0x0649}, -- ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
 [0xFDA7] = {0x062C, 0x0645, 0x0649}, -- ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
 [0xFDA8] = {0x0633, 0x062E, 0x0649}, -- ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
 [0xFDA9] = {0x0635, 0x062D, 0x064A}, -- ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
 [0xFDAA] = {0x0634, 0x062D, 0x064A}, -- ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
 [0xFDAB] = {0x0636, 0x062D, 0x064A}, -- ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
 [0xFDAC] = {0x0644, 0x062C, 0x064A}, -- ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
 [0xFDAD] = {0x0644, 0x0645, 0x064A}, -- ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
 [0xFDAE] = {0x064A, 0x062D, 0x064A}, -- ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
 [0xFDAF] = {0x064A, 0x062C, 0x064A}, -- ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
 [0xFDB0] = {0x064A, 0x0645, 0x064A}, -- ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
 [0xFDB1] = {0x0645, 0x0645, 0x064A}, -- ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
 [0xFDB2] = {0x0642, 0x0645, 0x064A}, -- ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
 [0xFDB3] = {0x0646, 0x062D, 0x064A}, -- ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
 [0xFDB4] = {0x0642, 0x0645, 0x062D}, -- ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
 [0xFDB5] = {0x0644, 0x062D, 0x0645}, -- ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
 [0xFDB6] = {0x0639, 0x0645, 0x064A}, -- ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
 [0xFDB7] = {0x0643, 0x0645, 0x064A}, -- ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
 [0xFDB8] = {0x0646, 0x062C, 0x062D}, -- ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
 [0xFDB9] = {0x0645, 0x062E, 0x064A}, -- ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
 [0xFDBA] = {0x0644, 0x062C, 0x0645}, -- ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
 [0xFDBB] = {0x0643, 0x0645, 0x0645}, -- ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
 [0xFDBC] = {0x0644, 0x062C, 0x0645}, -- ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
 [0xFDBD] = {0x0646, 0x062C, 0x062D}, -- ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
 [0xFDBE] = {0x062C, 0x062D, 0x064A}, -- ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
 [0xFDBF] = {0x062D, 0x062C, 0x064A}, -- ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
 [0xFDC0] = {0x0645, 0x062C, 0x064A}, -- ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
 [0xFDC1] = {0x0641, 0x0645, 0x064A}, -- ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
 [0xFDC2] = {0x0628, 0x062D, 0x064A}, -- ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
 [0xFDC3] = {0x0643, 0x0645, 0x0645}, -- ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
 [0xFDC4] = {0x0639, 0x062C, 0x0645}, -- ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
 [0xFDC5] = {0x0635, 0x0645, 0x0645}, -- ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
 [0xFDC6] = {0x0633, 0x062E, 0x064A}, -- ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
 [0xFDC7] = {0x0646, 0x062C, 0x064A}, -- ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
 -- ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
 [0xFD9C] = {0x064A, 0x0645, 0x0645},
 [0xFD9D] = {0x064A, 0x0645, 0x0645},
 [0xFDF0] = {0x0635, 0x0644, 0x06D2}, -- ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
 [0xFDF1] = {0x0642, 0x0644, 0x06D2}, -- ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
 [0xFDF2] = {0x0627, 0x0644, 0x0644, 0x0647}, -- ARABIC LIGATURE ALLAH ISOLATED FORM
 [0xFDF3] = {0x0627, 0x0643, 0x0628, 0x0631}, -- ARABIC LIGATURE AKBAR ISOLATED FORM
 [0xFDF4] = {0x0645, 0x062D, 0x0645, 0x062F}, -- ARABIC LIGATURE MOHAMMAD ISOLATED FORM
 [0xFDF5] = {0x0635, 0x0644, 0x0639, 0x0645}, -- ARABIC LIGATURE SALAM ISOLATED FORM
 [0xFDF6] = {0x0631, 0x0633, 0x0648, 0x0644}, -- ARABIC LIGATURE RASOUL ISOLATED FORM
 [0xFDF7] = {0x0639, 0x0644, 0x064A, 0x0647}, -- ARABIC LIGATURE ALAYHE ISOLATED FORM
 [0xFDF8] = {0x0648, 0x0633, 0x0644, 0x0645}, -- ARABIC LIGATURE WASALLAM ISOLATED FORM
 [0xFDF9] = {0x0635, 0x0644, 0x0649}, -- ARABIC LIGATURE SALLA ISOLATED FORM
 [0xFDFA] = {status="disallowed"}, -- ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
 [0xFDFB] = {status="disallowed"}, -- ARABIC LIGATURE JALLAJALALOUHOU
 [0xFDFC] = {0x0631, 0x06CC, 0x0627, 0x0644}, -- RIAL SIGN
 [0xFDFD] = {status="disallowed"}, -- ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
 -- NA   <reserved-FDFE>..<reserved-FDFF>
 [0xFDFE] = {status="disallowed"},
 [0xFDFF] = {status="disallowed"},
 [0xFE10] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL COMMA
 [0xFE11] = 0x3001, -- PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
 [0xFE12] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
 [0xFE13] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL COLON
 [0xFE14] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL SEMICOLON
 [0xFE15] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
 [0xFE16] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL QUESTION MARK
 [0xFE17] = 0x3016, -- PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
 [0xFE18] = 0x3017, -- PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
 [0xFE19] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
 [0xFE30] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
 [0xFE31] = 0x2014, -- PRESENTATION FORM FOR VERTICAL EM DASH
 [0xFE32] = 0x2013, -- PRESENTATION FORM FOR VERTICAL EN DASH
 [0xFE35] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
 [0xFE36] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
 [0xFE37] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
 [0xFE38] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
 [0xFE39] = 0x3014, -- PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
 [0xFE3A] = 0x3015, -- PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
 [0xFE3B] = 0x3010, -- PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
 [0xFE3C] = 0x3011, -- PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
 [0xFE3D] = 0x300A, -- PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
 [0xFE3E] = 0x300B, -- PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
 [0xFE3F] = 0x3008, -- PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
 [0xFE40] = 0x3009, -- PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
 [0xFE41] = 0x300C, -- PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
 [0xFE42] = 0x300D, -- PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
 [0xFE43] = 0x300E, -- PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
 [0xFE44] = 0x300F, -- PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
 -- PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
 [0xFE33] = {status="disallowed"},
 [0xFE34] = {status="disallowed"},
 [0xFE47] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
 [0xFE48] = {status="disallowed"}, -- PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
 -- SESAME DOT..WHITE SESAME DOT
 [0xFE45] = {status="disallowed"},
 [0xFE46] = {status="disallowed"},
 -- DASHED OVERLINE..DOUBLE WAVY OVERLINE
 [0xFE49] = {status="disallowed"},
 [0xFE4A] = {status="disallowed"},
 [0xFE4B] = {status="disallowed"},
 [0xFE4C] = {status="disallowed"},
 [0xFE50] = {status="disallowed"}, -- SMALL COMMA
 [0xFE51] = 0x3001, -- SMALL IDEOGRAPHIC COMMA
 [0xFE52] = {status="disallowed"}, -- SMALL FULL STOP
 [0xFE53] = {status="disallowed"}, -- NA   <reserved-FE53>
 [0xFE54] = {status="disallowed"}, -- SMALL SEMICOLON
 [0xFE55] = {status="disallowed"}, -- SMALL COLON
 [0xFE56] = {status="disallowed"}, -- SMALL QUESTION MARK
 [0xFE57] = {status="disallowed"}, -- SMALL EXCLAMATION MARK
 [0xFE58] = 0x2014, -- SMALL EM DASH
 [0xFE59] = {status="disallowed"}, -- SMALL LEFT PARENTHESIS
 [0xFE5A] = {status="disallowed"}, -- SMALL RIGHT PARENTHESIS
 [0xFE5B] = {status="disallowed"}, -- SMALL LEFT CURLY BRACKET
 [0xFE5C] = {status="disallowed"}, -- SMALL RIGHT CURLY BRACKET
 [0xFE5D] = 0x3014, -- SMALL LEFT TORTOISE SHELL BRACKET
 [0xFE5E] = 0x3015, -- SMALL RIGHT TORTOISE SHELL BRACKET
 [0xFE5F] = {status="disallowed"}, -- SMALL NUMBER SIGN
 [0xFE60] = {status="disallowed"}, -- SMALL AMPERSAND
 [0xFE61] = {status="disallowed"}, -- SMALL ASTERISK
 [0xFE62] = {status="disallowed"}, -- SMALL PLUS SIGN
 [0xFE63] = 0x002D, -- SMALL HYPHEN-MINUS
 [0xFE64] = {status="disallowed"}, -- SMALL LESS-THAN SIGN
 [0xFE65] = {status="disallowed"}, -- SMALL GREATER-THAN SIGN
 [0xFE66] = {status="disallowed"}, -- SMALL EQUALS SIGN
 [0xFE67] = {status="disallowed"}, -- NA   <reserved-FE67>
 [0xFE68] = {status="disallowed"}, -- SMALL REVERSE SOLIDUS
 [0xFE69] = {status="disallowed"}, -- SMALL DOLLAR SIGN
 [0xFE6A] = {status="disallowed"}, -- SMALL PERCENT SIGN
 [0xFE6B] = {status="disallowed"}, -- SMALL COMMERCIAL AT
 -- DASHED LOW LINE..WAVY LOW LINE
 [0xFE4D] = {status="disallowed"},
 [0xFE4E] = {status="disallowed"},
 [0xFE4F] = {status="disallowed"},
 [0xFE70] = {status="disallowed"}, -- ARABIC FATHATAN ISOLATED FORM
 [0xFE71] = {0x0640, 0x064B}, -- ARABIC TATWEEL WITH FATHATAN ABOVE
 [0xFE72] = {status="disallowed"}, -- ARABIC DAMMATAN ISOLATED FORM
 [0xFE73] = {status="valid"}, -- ARABIC TAIL FRAGMENT
 [0xFE74] = {status="disallowed"}, -- ARABIC KASRATAN ISOLATED FORM
 [0xFE75] = {status="disallowed"}, -- NA   <reserved-FE75>
 [0xFE76] = {status="disallowed"}, -- ARABIC FATHA ISOLATED FORM
 [0xFE77] = {0x0640, 0x064E}, -- ARABIC FATHA MEDIAL FORM
 [0xFE78] = {status="disallowed"}, -- ARABIC DAMMA ISOLATED FORM
 [0xFE79] = {0x0640, 0x064F}, -- ARABIC DAMMA MEDIAL FORM
 [0xFE7A] = {status="disallowed"}, -- ARABIC KASRA ISOLATED FORM
 [0xFE7B] = {0x0640, 0x0650}, -- ARABIC KASRA MEDIAL FORM
 [0xFE7C] = {status="disallowed"}, -- ARABIC SHADDA ISOLATED FORM
 [0xFE7D] = {0x0640, 0x0651}, -- ARABIC SHADDA MEDIAL FORM
 [0xFE7E] = {status="disallowed"}, -- ARABIC SUKUN ISOLATED FORM
 [0xFE7F] = {0x0640, 0x0652}, -- ARABIC SUKUN MEDIAL FORM
 [0xFE80] = 0x0621, -- ARABIC LETTER HAMZA ISOLATED FORM
 -- NA   <reserved-FE6C>..<reserved-FE6F>
 [0xFE6C] = {status="disallowed"},
 [0xFE6D] = {status="disallowed"},
 [0xFE6E] = {status="disallowed"},
 [0xFE6F] = {status="disallowed"},
 -- ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
 [0xFE81] = 0x0622,
 [0xFE82] = 0x0622,
 -- ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
 [0xFE83] = 0x0623,
 [0xFE84] = 0x0623,
 -- ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
 [0xFE85] = 0x0624,
 [0xFE86] = 0x0624,
 -- ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM..ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
 [0xFE87] = 0x0625,
 [0xFE88] = 0x0625,
 -- ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
 [0xFE89] = 0x0626,
 [0xFE8A] = 0x0626,
 [0xFE8B] = 0x0626,
 [0xFE8C] = 0x0626,
 -- ARABIC LETTER ALEF ISOLATED FORM..ARABIC LETTER ALEF FINAL FORM
 [0xFE8D] = 0x0627,
 [0xFE8E] = 0x0627,
 -- ARABIC LETTER BEH ISOLATED FORM..ARABIC LETTER BEH MEDIAL FORM
 [0xFE8F] = 0x0628,
 [0xFE90] = 0x0628,
 [0xFE91] = 0x0628,
 [0xFE92] = 0x0628,
 -- ARABIC LETTER TEH MARBUTA ISOLATED FORM..ARABIC LETTER TEH MARBUTA FINAL FORM
 [0xFE93] = 0x0629,
 [0xFE94] = 0x0629,
 -- ARABIC LETTER TEH ISOLATED FORM..ARABIC LETTER TEH MEDIAL FORM
 [0xFE95] = 0x062A,
 [0xFE96] = 0x062A,
 [0xFE97] = 0x062A,
 [0xFE98] = 0x062A,
 -- ARABIC LETTER THEH ISOLATED FORM..ARABIC LETTER THEH MEDIAL FORM
 [0xFE99] = 0x062B,
 [0xFE9A] = 0x062B,
 [0xFE9B] = 0x062B,
 [0xFE9C] = 0x062B,
 -- ARABIC LETTER JEEM ISOLATED FORM..ARABIC LETTER JEEM MEDIAL FORM
 [0xFE9D] = 0x062C,
 [0xFE9E] = 0x062C,
 [0xFE9F] = 0x062C,
 [0xFEA0] = 0x062C,
 -- ARABIC LETTER HAH ISOLATED FORM..ARABIC LETTER HAH MEDIAL FORM
 [0xFEA1] = 0x062D,
 [0xFEA2] = 0x062D,
 [0xFEA3] = 0x062D,
 [0xFEA4] = 0x062D,
 -- ARABIC LETTER KHAH ISOLATED FORM..ARABIC LETTER KHAH MEDIAL FORM
 [0xFEA5] = 0x062E,
 [0xFEA6] = 0x062E,
 [0xFEA7] = 0x062E,
 [0xFEA8] = 0x062E,
 -- ARABIC LETTER DAL ISOLATED FORM..ARABIC LETTER DAL FINAL FORM
 [0xFEA9] = 0x062F,
 [0xFEAA] = 0x062F,
 -- ARABIC LETTER THAL ISOLATED FORM..ARABIC LETTER THAL FINAL FORM
 [0xFEAB] = 0x0630,
 [0xFEAC] = 0x0630,
 -- ARABIC LETTER REH ISOLATED FORM..ARABIC LETTER REH FINAL FORM
 [0xFEAD] = 0x0631,
 [0xFEAE] = 0x0631,
 -- ARABIC LETTER ZAIN ISOLATED FORM..ARABIC LETTER ZAIN FINAL FORM
 [0xFEAF] = 0x0632,
 [0xFEB0] = 0x0632,
 -- ARABIC LETTER SEEN ISOLATED FORM..ARABIC LETTER SEEN MEDIAL FORM
 [0xFEB1] = 0x0633,
 [0xFEB2] = 0x0633,
 [0xFEB3] = 0x0633,
 [0xFEB4] = 0x0633,
 -- ARABIC LETTER SHEEN ISOLATED FORM..ARABIC LETTER SHEEN MEDIAL FORM
 [0xFEB5] = 0x0634,
 [0xFEB6] = 0x0634,
 [0xFEB7] = 0x0634,
 [0xFEB8] = 0x0634,
 -- ARABIC LETTER SAD ISOLATED FORM..ARABIC LETTER SAD MEDIAL FORM
 [0xFEB9] = 0x0635,
 [0xFEBA] = 0x0635,
 [0xFEBB] = 0x0635,
 [0xFEBC] = 0x0635,
 -- ARABIC LETTER DAD ISOLATED FORM..ARABIC LETTER DAD MEDIAL FORM
 [0xFEBD] = 0x0636,
 [0xFEBE] = 0x0636,
 [0xFEBF] = 0x0636,
 [0xFEC0] = 0x0636,
 -- ARABIC LETTER TAH ISOLATED FORM..ARABIC LETTER TAH MEDIAL FORM
 [0xFEC1] = 0x0637,
 [0xFEC2] = 0x0637,
 [0xFEC3] = 0x0637,
 [0xFEC4] = 0x0637,
 -- ARABIC LETTER ZAH ISOLATED FORM..ARABIC LETTER ZAH MEDIAL FORM
 [0xFEC5] = 0x0638,
 [0xFEC6] = 0x0638,
 [0xFEC7] = 0x0638,
 [0xFEC8] = 0x0638,
 -- ARABIC LETTER AIN ISOLATED FORM..ARABIC LETTER AIN MEDIAL FORM
 [0xFEC9] = 0x0639,
 [0xFECA] = 0x0639,
 [0xFECB] = 0x0639,
 [0xFECC] = 0x0639,
 -- ARABIC LETTER GHAIN ISOLATED FORM..ARABIC LETTER GHAIN MEDIAL FORM
 [0xFECD] = 0x063A,
 [0xFECE] = 0x063A,
 [0xFECF] = 0x063A,
 [0xFED0] = 0x063A,
 -- ARABIC LETTER FEH ISOLATED FORM..ARABIC LETTER FEH MEDIAL FORM
 [0xFED1] = 0x0641,
 [0xFED2] = 0x0641,
 [0xFED3] = 0x0641,
 [0xFED4] = 0x0641,
 -- ARABIC LETTER QAF ISOLATED FORM..ARABIC LETTER QAF MEDIAL FORM
 [0xFED5] = 0x0642,
 [0xFED6] = 0x0642,
 [0xFED7] = 0x0642,
 [0xFED8] = 0x0642,
 -- ARABIC LETTER KAF ISOLATED FORM..ARABIC LETTER KAF MEDIAL FORM
 [0xFED9] = 0x0643,
 [0xFEDA] = 0x0643,
 [0xFEDB] = 0x0643,
 [0xFEDC] = 0x0643,
 -- ARABIC LETTER LAM ISOLATED FORM..ARABIC LETTER LAM MEDIAL FORM
 [0xFEDD] = 0x0644,
 [0xFEDE] = 0x0644,
 [0xFEDF] = 0x0644,
 [0xFEE0] = 0x0644,
 -- ARABIC LETTER MEEM ISOLATED FORM..ARABIC LETTER MEEM MEDIAL FORM
 [0xFEE1] = 0x0645,
 [0xFEE2] = 0x0645,
 [0xFEE3] = 0x0645,
 [0xFEE4] = 0x0645,
 -- ARABIC LETTER NOON ISOLATED FORM..ARABIC LETTER NOON MEDIAL FORM
 [0xFEE5] = 0x0646,
 [0xFEE6] = 0x0646,
 [0xFEE7] = 0x0646,
 [0xFEE8] = 0x0646,
 -- ARABIC LETTER HEH ISOLATED FORM..ARABIC LETTER HEH MEDIAL FORM
 [0xFEE9] = 0x0647,
 [0xFEEA] = 0x0647,
 [0xFEEB] = 0x0647,
 [0xFEEC] = 0x0647,
 -- ARABIC LETTER WAW ISOLATED FORM..ARABIC LETTER WAW FINAL FORM
 [0xFEED] = 0x0648,
 [0xFEEE] = 0x0648,
 -- ARABIC LETTER ALEF MAKSURA ISOLATED FORM..ARABIC LETTER ALEF MAKSURA FINAL FORM
 [0xFEEF] = 0x0649,
 [0xFEF0] = 0x0649,
 -- ARABIC LETTER YEH ISOLATED FORM..ARABIC LETTER YEH MEDIAL FORM
 [0xFEF1] = 0x064A,
 [0xFEF2] = 0x064A,
 [0xFEF3] = 0x064A,
 [0xFEF4] = 0x064A,
 -- ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
 [0xFEF5] = {0x0644, 0x0622},
 [0xFEF6] = {0x0644, 0x0622},
 -- ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
 [0xFEF7] = {0x0644, 0x0623},
 [0xFEF8] = {0x0644, 0x0623},
 -- ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
 [0xFEF9] = {0x0644, 0x0625},
 [0xFEFA] = {0x0644, 0x0625},
 -- ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
 [0xFEFB] = {0x0644, 0x0627},
 [0xFEFC] = {0x0644, 0x0627},
 [0xFEFF] = {status='ignored'}, -- ZERO WIDTH NO-BREAK SPACE
 [0xFF00] = {status="disallowed"}, -- NA   <reserved-FF00>
 [0xFF01] = {status="disallowed"}, -- FULLWIDTH EXCLAMATION MARK
 [0xFF02] = {status="disallowed"}, -- FULLWIDTH QUOTATION MARK
 [0xFF03] = {status="disallowed"}, -- FULLWIDTH NUMBER SIGN
 [0xFF04] = {status="disallowed"}, -- FULLWIDTH DOLLAR SIGN
 [0xFF05] = {status="disallowed"}, -- FULLWIDTH PERCENT SIGN
 [0xFF06] = {status="disallowed"}, -- FULLWIDTH AMPERSAND
 [0xFF07] = {status="disallowed"}, -- FULLWIDTH APOSTROPHE
 [0xFF08] = {status="disallowed"}, -- FULLWIDTH LEFT PARENTHESIS
 [0xFF09] = {status="disallowed"}, -- FULLWIDTH RIGHT PARENTHESIS
 [0xFF0A] = {status="disallowed"}, -- FULLWIDTH ASTERISK
 [0xFF0B] = {status="disallowed"}, -- FULLWIDTH PLUS SIGN
 [0xFF0C] = {status="disallowed"}, -- FULLWIDTH COMMA
 [0xFF0D] = 0x002D, -- FULLWIDTH HYPHEN-MINUS
 [0xFF0E] = 0x002E, -- FULLWIDTH FULL STOP
 [0xFF0F] = {status="disallowed"}, -- FULLWIDTH SOLIDUS
 [0xFF10] = 0x0030, -- FULLWIDTH DIGIT ZERO
 [0xFF11] = 0x0031, -- FULLWIDTH DIGIT ONE
 [0xFF12] = 0x0032, -- FULLWIDTH DIGIT TWO
 [0xFF13] = 0x0033, -- FULLWIDTH DIGIT THREE
 [0xFF14] = 0x0034, -- FULLWIDTH DIGIT FOUR
 [0xFF15] = 0x0035, -- FULLWIDTH DIGIT FIVE
 [0xFF16] = 0x0036, -- FULLWIDTH DIGIT SIX
 [0xFF17] = 0x0037, -- FULLWIDTH DIGIT SEVEN
 [0xFF18] = 0x0038, -- FULLWIDTH DIGIT EIGHT
 [0xFF19] = 0x0039, -- FULLWIDTH DIGIT NINE
 [0xFF1A] = {status="disallowed"}, -- FULLWIDTH COLON
 [0xFF1B] = {status="disallowed"}, -- FULLWIDTH SEMICOLON
 [0xFF1C] = {status="disallowed"}, -- FULLWIDTH LESS-THAN SIGN
 [0xFF1D] = {status="disallowed"}, -- FULLWIDTH EQUALS SIGN
 [0xFF1E] = {status="disallowed"}, -- FULLWIDTH GREATER-THAN SIGN
 [0xFF1F] = {status="disallowed"}, -- FULLWIDTH QUESTION MARK
 [0xFF20] = {status="disallowed"}, -- FULLWIDTH COMMERCIAL AT
 [0xFF21] = 0x0061, -- FULLWIDTH LATIN CAPITAL LETTER A
 [0xFF22] = 0x0062, -- FULLWIDTH LATIN CAPITAL LETTER B
 [0xFF23] = 0x0063, -- FULLWIDTH LATIN CAPITAL LETTER C
 [0xFF24] = 0x0064, -- FULLWIDTH LATIN CAPITAL LETTER D
 [0xFF25] = 0x0065, -- FULLWIDTH LATIN CAPITAL LETTER E
 [0xFF26] = 0x0066, -- FULLWIDTH LATIN CAPITAL LETTER F
 [0xFF27] = 0x0067, -- FULLWIDTH LATIN CAPITAL LETTER G
 [0xFF28] = 0x0068, -- FULLWIDTH LATIN CAPITAL LETTER H
 [0xFF29] = 0x0069, -- FULLWIDTH LATIN CAPITAL LETTER I
 [0xFF2A] = 0x006A, -- FULLWIDTH LATIN CAPITAL LETTER J
 [0xFF2B] = 0x006B, -- FULLWIDTH LATIN CAPITAL LETTER K
 [0xFF2C] = 0x006C, -- FULLWIDTH LATIN CAPITAL LETTER L
 [0xFF2D] = 0x006D, -- FULLWIDTH LATIN CAPITAL LETTER M
 [0xFF2E] = 0x006E, -- FULLWIDTH LATIN CAPITAL LETTER N
 [0xFF2F] = 0x006F, -- FULLWIDTH LATIN CAPITAL LETTER O
 [0xFF30] = 0x0070, -- FULLWIDTH LATIN CAPITAL LETTER P
 [0xFF31] = 0x0071, -- FULLWIDTH LATIN CAPITAL LETTER Q
 [0xFF32] = 0x0072, -- FULLWIDTH LATIN CAPITAL LETTER R
 [0xFF33] = 0x0073, -- FULLWIDTH LATIN CAPITAL LETTER S
 [0xFF34] = 0x0074, -- FULLWIDTH LATIN CAPITAL LETTER T
 [0xFF35] = 0x0075, -- FULLWIDTH LATIN CAPITAL LETTER U
 [0xFF36] = 0x0076, -- FULLWIDTH LATIN CAPITAL LETTER V
 [0xFF37] = 0x0077, -- FULLWIDTH LATIN CAPITAL LETTER W
 [0xFF38] = 0x0078, -- FULLWIDTH LATIN CAPITAL LETTER X
 [0xFF39] = 0x0079, -- FULLWIDTH LATIN CAPITAL LETTER Y
 [0xFF3A] = 0x007A, -- FULLWIDTH LATIN CAPITAL LETTER Z
 [0xFF3B] = {status="disallowed"}, -- FULLWIDTH LEFT SQUARE BRACKET
 [0xFF3C] = {status="disallowed"}, -- FULLWIDTH REVERSE SOLIDUS
 [0xFF3D] = {status="disallowed"}, -- FULLWIDTH RIGHT SQUARE BRACKET
 [0xFF3E] = {status="disallowed"}, -- FULLWIDTH CIRCUMFLEX ACCENT
 [0xFF3F] = {status="disallowed"}, -- FULLWIDTH LOW LINE
 [0xFF40] = {status="disallowed"}, -- FULLWIDTH GRAVE ACCENT
 [0xFF41] = 0x0061, -- FULLWIDTH LATIN SMALL LETTER A
 [0xFF42] = 0x0062, -- FULLWIDTH LATIN SMALL LETTER B
 [0xFF43] = 0x0063, -- FULLWIDTH LATIN SMALL LETTER C
 [0xFF44] = 0x0064, -- FULLWIDTH LATIN SMALL LETTER D
 [0xFF45] = 0x0065, -- FULLWIDTH LATIN SMALL LETTER E
 [0xFF46] = 0x0066, -- FULLWIDTH LATIN SMALL LETTER F
 [0xFF47] = 0x0067, -- FULLWIDTH LATIN SMALL LETTER G
 [0xFF48] = 0x0068, -- FULLWIDTH LATIN SMALL LETTER H
 [0xFF49] = 0x0069, -- FULLWIDTH LATIN SMALL LETTER I
 [0xFF4A] = 0x006A, -- FULLWIDTH LATIN SMALL LETTER J
 [0xFF4B] = 0x006B, -- FULLWIDTH LATIN SMALL LETTER K
 [0xFF4C] = 0x006C, -- FULLWIDTH LATIN SMALL LETTER L
 [0xFF4D] = 0x006D, -- FULLWIDTH LATIN SMALL LETTER M
 [0xFF4E] = 0x006E, -- FULLWIDTH LATIN SMALL LETTER N
 [0xFF4F] = 0x006F, -- FULLWIDTH LATIN SMALL LETTER O
 [0xFF50] = 0x0070, -- FULLWIDTH LATIN SMALL LETTER P
 [0xFF51] = 0x0071, -- FULLWIDTH LATIN SMALL LETTER Q
 [0xFF52] = 0x0072, -- FULLWIDTH LATIN SMALL LETTER R
 [0xFF53] = 0x0073, -- FULLWIDTH LATIN SMALL LETTER S
 [0xFF54] = 0x0074, -- FULLWIDTH LATIN SMALL LETTER T
 [0xFF55] = 0x0075, -- FULLWIDTH LATIN SMALL LETTER U
 [0xFF56] = 0x0076, -- FULLWIDTH LATIN SMALL LETTER V
 [0xFF57] = 0x0077, -- FULLWIDTH LATIN SMALL LETTER W
 [0xFF58] = 0x0078, -- FULLWIDTH LATIN SMALL LETTER X
 [0xFF59] = 0x0079, -- FULLWIDTH LATIN SMALL LETTER Y
 [0xFF5A] = 0x007A, -- FULLWIDTH LATIN SMALL LETTER Z
 [0xFF5B] = {status="disallowed"}, -- FULLWIDTH LEFT CURLY BRACKET
 [0xFF5C] = {status="disallowed"}, -- FULLWIDTH VERTICAL LINE
 [0xFF5D] = {status="disallowed"}, -- FULLWIDTH RIGHT CURLY BRACKET
 [0xFF5E] = {status="disallowed"}, -- FULLWIDTH TILDE
 [0xFF5F] = 0x2985, -- FULLWIDTH LEFT WHITE PARENTHESIS
 [0xFF60] = 0x2986, -- FULLWIDTH RIGHT WHITE PARENTHESIS
 [0xFF61] = 0x002E, -- HALFWIDTH IDEOGRAPHIC FULL STOP
 [0xFF62] = 0x300C, -- HALFWIDTH LEFT CORNER BRACKET
 [0xFF63] = 0x300D, -- HALFWIDTH RIGHT CORNER BRACKET
 [0xFF64] = 0x3001, -- HALFWIDTH IDEOGRAPHIC COMMA
 [0xFF65] = 0x30FB, -- HALFWIDTH KATAKANA MIDDLE DOT
 [0xFF66] = 0x30F2, -- HALFWIDTH KATAKANA LETTER WO
 [0xFF67] = 0x30A1, -- HALFWIDTH KATAKANA LETTER SMALL A
 [0xFF68] = 0x30A3, -- HALFWIDTH KATAKANA LETTER SMALL I
 [0xFF69] = 0x30A5, -- HALFWIDTH KATAKANA LETTER SMALL U
 [0xFF6A] = 0x30A7, -- HALFWIDTH KATAKANA LETTER SMALL E
 [0xFF6B] = 0x30A9, -- HALFWIDTH KATAKANA LETTER SMALL O
 [0xFF6C] = 0x30E3, -- HALFWIDTH KATAKANA LETTER SMALL YA
 [0xFF6D] = 0x30E5, -- HALFWIDTH KATAKANA LETTER SMALL YU
 [0xFF6E] = 0x30E7, -- HALFWIDTH KATAKANA LETTER SMALL YO
 [0xFF6F] = 0x30C3, -- HALFWIDTH KATAKANA LETTER SMALL TU
 [0xFF70] = 0x30FC, -- HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
 [0xFF71] = 0x30A2, -- HALFWIDTH KATAKANA LETTER A
 [0xFF72] = 0x30A4, -- HALFWIDTH KATAKANA LETTER I
 [0xFF73] = 0x30A6, -- HALFWIDTH KATAKANA LETTER U
 [0xFF74] = 0x30A8, -- HALFWIDTH KATAKANA LETTER E
 [0xFF75] = 0x30AA, -- HALFWIDTH KATAKANA LETTER O
 [0xFF76] = 0x30AB, -- HALFWIDTH KATAKANA LETTER KA
 [0xFF77] = 0x30AD, -- HALFWIDTH KATAKANA LETTER KI
 [0xFF78] = 0x30AF, -- HALFWIDTH KATAKANA LETTER KU
 [0xFF79] = 0x30B1, -- HALFWIDTH KATAKANA LETTER KE
 [0xFF7A] = 0x30B3, -- HALFWIDTH KATAKANA LETTER KO
 [0xFF7B] = 0x30B5, -- HALFWIDTH KATAKANA LETTER SA
 [0xFF7C] = 0x30B7, -- HALFWIDTH KATAKANA LETTER SI
 [0xFF7D] = 0x30B9, -- HALFWIDTH KATAKANA LETTER SU
 [0xFF7E] = 0x30BB, -- HALFWIDTH KATAKANA LETTER SE
 [0xFF7F] = 0x30BD, -- HALFWIDTH KATAKANA LETTER SO
 [0xFF80] = 0x30BF, -- HALFWIDTH KATAKANA LETTER TA
 [0xFF81] = 0x30C1, -- HALFWIDTH KATAKANA LETTER TI
 [0xFF82] = 0x30C4, -- HALFWIDTH KATAKANA LETTER TU
 [0xFF83] = 0x30C6, -- HALFWIDTH KATAKANA LETTER TE
 [0xFF84] = 0x30C8, -- HALFWIDTH KATAKANA LETTER TO
 [0xFF85] = 0x30CA, -- HALFWIDTH KATAKANA LETTER NA
 [0xFF86] = 0x30CB, -- HALFWIDTH KATAKANA LETTER NI
 [0xFF87] = 0x30CC, -- HALFWIDTH KATAKANA LETTER NU
 [0xFF88] = 0x30CD, -- HALFWIDTH KATAKANA LETTER NE
 [0xFF89] = 0x30CE, -- HALFWIDTH KATAKANA LETTER NO
 [0xFF8A] = 0x30CF, -- HALFWIDTH KATAKANA LETTER HA
 [0xFF8B] = 0x30D2, -- HALFWIDTH KATAKANA LETTER HI
 [0xFF8C] = 0x30D5, -- HALFWIDTH KATAKANA LETTER HU
 [0xFF8D] = 0x30D8, -- HALFWIDTH KATAKANA LETTER HE
 [0xFF8E] = 0x30DB, -- HALFWIDTH KATAKANA LETTER HO
 [0xFF8F] = 0x30DE, -- HALFWIDTH KATAKANA LETTER MA
 [0xFF90] = 0x30DF, -- HALFWIDTH KATAKANA LETTER MI
 [0xFF91] = 0x30E0, -- HALFWIDTH KATAKANA LETTER MU
 [0xFF92] = 0x30E1, -- HALFWIDTH KATAKANA LETTER ME
 [0xFF93] = 0x30E2, -- HALFWIDTH KATAKANA LETTER MO
 [0xFF94] = 0x30E4, -- HALFWIDTH KATAKANA LETTER YA
 [0xFF95] = 0x30E6, -- HALFWIDTH KATAKANA LETTER YU
 [0xFF96] = 0x30E8, -- HALFWIDTH KATAKANA LETTER YO
 [0xFF97] = 0x30E9, -- HALFWIDTH KATAKANA LETTER RA
 [0xFF98] = 0x30EA, -- HALFWIDTH KATAKANA LETTER RI
 [0xFF99] = 0x30EB, -- HALFWIDTH KATAKANA LETTER RU
 [0xFF9A] = 0x30EC, -- HALFWIDTH KATAKANA LETTER RE
 [0xFF9B] = 0x30ED, -- HALFWIDTH KATAKANA LETTER RO
 [0xFF9C] = 0x30EF, -- HALFWIDTH KATAKANA LETTER WA
 [0xFF9D] = 0x30F3, -- HALFWIDTH KATAKANA LETTER N
 [0xFF9E] = 0x3099, -- HALFWIDTH KATAKANA VOICED SOUND MARK
 [0xFF9F] = 0x309A, -- HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
 [0xFFA0] = {status="disallowed"}, -- HALFWIDTH HANGUL FILLER
 [0xFFA1] = 0x1100, -- HALFWIDTH HANGUL LETTER KIYEOK
 [0xFFA2] = 0x1101, -- HALFWIDTH HANGUL LETTER SSANGKIYEOK
 [0xFFA3] = 0x11AA, -- HALFWIDTH HANGUL LETTER KIYEOK-SIOS
 [0xFFA4] = 0x1102, -- HALFWIDTH HANGUL LETTER NIEUN
 [0xFFA5] = 0x11AC, -- HALFWIDTH HANGUL LETTER NIEUN-CIEUC
 [0xFFA6] = 0x11AD, -- HALFWIDTH HANGUL LETTER NIEUN-HIEUH
 [0xFFA7] = 0x1103, -- HALFWIDTH HANGUL LETTER TIKEUT
 [0xFFA8] = 0x1104, -- HALFWIDTH HANGUL LETTER SSANGTIKEUT
 [0xFFA9] = 0x1105, -- HALFWIDTH HANGUL LETTER RIEUL
 [0xFFAA] = 0x11B0, -- HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
 [0xFFAB] = 0x11B1, -- HALFWIDTH HANGUL LETTER RIEUL-MIEUM
 [0xFFAC] = 0x11B2, -- HALFWIDTH HANGUL LETTER RIEUL-PIEUP
 [0xFFAD] = 0x11B3, -- HALFWIDTH HANGUL LETTER RIEUL-SIOS
 [0xFFAE] = 0x11B4, -- HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
 [0xFFAF] = 0x11B5, -- HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
 [0xFFB0] = 0x111A, -- HALFWIDTH HANGUL LETTER RIEUL-HIEUH
 [0xFFB1] = 0x1106, -- HALFWIDTH HANGUL LETTER MIEUM
 [0xFFB2] = 0x1107, -- HALFWIDTH HANGUL LETTER PIEUP
 [0xFFB3] = 0x1108, -- HALFWIDTH HANGUL LETTER SSANGPIEUP
 [0xFFB4] = 0x1121, -- HALFWIDTH HANGUL LETTER PIEUP-SIOS
 [0xFFB5] = 0x1109, -- HALFWIDTH HANGUL LETTER SIOS
 [0xFFB6] = 0x110A, -- HALFWIDTH HANGUL LETTER SSANGSIOS
 [0xFFB7] = 0x110B, -- HALFWIDTH HANGUL LETTER IEUNG
 [0xFFB8] = 0x110C, -- HALFWIDTH HANGUL LETTER CIEUC
 [0xFFB9] = 0x110D, -- HALFWIDTH HANGUL LETTER SSANGCIEUC
 [0xFFBA] = 0x110E, -- HALFWIDTH HANGUL LETTER CHIEUCH
 [0xFFBB] = 0x110F, -- HALFWIDTH HANGUL LETTER KHIEUKH
 [0xFFBC] = 0x1110, -- HALFWIDTH HANGUL LETTER THIEUTH
 [0xFFBD] = 0x1111, -- HALFWIDTH HANGUL LETTER PHIEUPH
 [0xFFBE] = 0x1112, -- HALFWIDTH HANGUL LETTER HIEUH
 -- NA   <reserved-FEFD>..<reserved-FEFE>
 [0xFEFD] = {status="disallowed"},
 [0xFEFE] = {status="disallowed"},
 [0xFFC2] = 0x1161, -- HALFWIDTH HANGUL LETTER A
 [0xFFC3] = 0x1162, -- HALFWIDTH HANGUL LETTER AE
 [0xFFC4] = 0x1163, -- HALFWIDTH HANGUL LETTER YA
 [0xFFC5] = 0x1164, -- HALFWIDTH HANGUL LETTER YAE
 [0xFFC6] = 0x1165, -- HALFWIDTH HANGUL LETTER EO
 [0xFFC7] = 0x1166, -- HALFWIDTH HANGUL LETTER E
 -- NA   <reserved-FFBF>..<reserved-FFC1>
 [0xFFBF] = {status="disallowed"},
 [0xFFC0] = {status="disallowed"},
 [0xFFC1] = {status="disallowed"},
 [0xFFCA] = 0x1167, -- HALFWIDTH HANGUL LETTER YEO
 [0xFFCB] = 0x1168, -- HALFWIDTH HANGUL LETTER YE
 [0xFFCC] = 0x1169, -- HALFWIDTH HANGUL LETTER O
 [0xFFCD] = 0x116A, -- HALFWIDTH HANGUL LETTER WA
 [0xFFCE] = 0x116B, -- HALFWIDTH HANGUL LETTER WAE
 [0xFFCF] = 0x116C, -- HALFWIDTH HANGUL LETTER OE
 -- NA   <reserved-FFC8>..<reserved-FFC9>
 [0xFFC8] = {status="disallowed"},
 [0xFFC9] = {status="disallowed"},
 [0xFFD2] = 0x116D, -- HALFWIDTH HANGUL LETTER YO
 [0xFFD3] = 0x116E, -- HALFWIDTH HANGUL LETTER U
 [0xFFD4] = 0x116F, -- HALFWIDTH HANGUL LETTER WEO
 [0xFFD5] = 0x1170, -- HALFWIDTH HANGUL LETTER WE
 [0xFFD6] = 0x1171, -- HALFWIDTH HANGUL LETTER WI
 [0xFFD7] = 0x1172, -- HALFWIDTH HANGUL LETTER YU
 -- NA   <reserved-FFD0>..<reserved-FFD1>
 [0xFFD0] = {status="disallowed"},
 [0xFFD1] = {status="disallowed"},
 [0xFFDA] = 0x1173, -- HALFWIDTH HANGUL LETTER EU
 [0xFFDB] = 0x1174, -- HALFWIDTH HANGUL LETTER YI
 [0xFFDC] = 0x1175, -- HALFWIDTH HANGUL LETTER I
 -- NA   <reserved-FFD8>..<reserved-FFD9>
 [0xFFD8] = {status="disallowed"},
 [0xFFD9] = {status="disallowed"},
 [0xFFE0] = 0x00A2, -- FULLWIDTH CENT SIGN
 [0xFFE1] = 0x00A3, -- FULLWIDTH POUND SIGN
 [0xFFE2] = 0x00AC, -- FULLWIDTH NOT SIGN
 [0xFFE3] = {status="disallowed"}, -- FULLWIDTH MACRON
 [0xFFE4] = 0x00A6, -- FULLWIDTH BROKEN BAR
 [0xFFE5] = 0x00A5, -- FULLWIDTH YEN SIGN
 [0xFFE6] = 0x20A9, -- FULLWIDTH WON SIGN
 [0xFFE7] = {status="disallowed"}, -- NA   <reserved-FFE7>
 [0xFFE8] = 0x2502, -- HALFWIDTH FORMS LIGHT VERTICAL
 [0xFFE9] = 0x2190, -- HALFWIDTH LEFTWARDS ARROW
 [0xFFEA] = 0x2191, -- HALFWIDTH UPWARDS ARROW
 [0xFFEB] = 0x2192, -- HALFWIDTH RIGHTWARDS ARROW
 [0xFFEC] = 0x2193, -- HALFWIDTH DOWNWARDS ARROW
 [0xFFED] = 0x25A0, -- HALFWIDTH BLACK SQUARE
 [0xFFEE] = 0x25CB, -- HALFWIDTH WHITE CIRCLE
 -- NA   <reserved-FFDD>..<reserved-FFDF>
 [0xFFDD] = {status="disallowed"},
 [0xFFDE] = {status="disallowed"},
 [0xFFDF] = {status="disallowed"},
 [0xFFFC] = {status="disallowed"}, -- OBJECT REPLACEMENT CHARACTER
 [0xFFFD] = {status="disallowed"}, -- REPLACEMENT CHARACTER
 -- <noncharacter-FFFE>..<noncharacter-FFFF>
 [0xFFFE] = {status="disallowed"},
 [0xFFFF] = {status="disallowed"},
 [0x1000C] = {status="disallowed"}, -- NA   <reserved-1000C>
 [0x10027] = {status="disallowed"}, -- NA   <reserved-10027>
 [0x1003B] = {status="disallowed"}, -- NA   <reserved-1003B>
 [0x1003E] = {status="disallowed"}, -- NA   <reserved-1003E>
 -- LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
 [0x1003C] = {status="valid"},
 [0x1003D] = {status="valid"},
 -- NA   <reserved-1004E>..<reserved-1004F>
 [0x1004E] = {status="disallowed"},
 [0x1004F] = {status="disallowed"},
 -- NA   <reserved-100FB>..<reserved-100FF>
 [0x100FB] = {status="disallowed"},
 [0x100FC] = {status="disallowed"},
 [0x100FD] = {status="disallowed"},
 [0x100FE] = {status="disallowed"},
 [0x100FF] = {status="disallowed"},
 -- AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK
 [0x10100] = {status="disallowed"},
 [0x10101] = {status="disallowed"},
 [0x10102] = {status="disallowed"},
 -- NA   <reserved-10103>..<reserved-10106>
 [0x10103] = {status="disallowed"},
 [0x10104] = {status="disallowed"},
 [0x10105] = {status="disallowed"},
 [0x10106] = {status="disallowed"},
 -- NA   <reserved-10134>..<reserved-10136>
 [0x10134] = {status="disallowed"},
 [0x10135] = {status="disallowed"},
 [0x10136] = {status="disallowed"},
 [0x1018F] = {status="disallowed"}, -- NA   <reserved-1018F>
 [0x101A0] = {status="disallowed"}, -- GREEK SYMBOL TAU RHO
 -- NA   <reserved-1019C>..<reserved-1019F>
 [0x1019C] = {status="disallowed"},
 [0x1019D] = {status="disallowed"},
 [0x1019E] = {status="disallowed"},
 [0x1019F] = {status="disallowed"},
 [0x101FD] = {status="valid"}, -- PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
 -- NA   <reserved-1029D>..<reserved-1029F>
 [0x1029D] = {status="disallowed"},
 [0x1029E] = {status="disallowed"},
 [0x1029F] = {status="disallowed"},
 [0x102E0] = {status="valid"}, -- COPTIC EPACT THOUSANDS MARK
 -- NA   <reserved-102FC>..<reserved-102FF>
 [0x102FC] = {status="disallowed"},
 [0x102FD] = {status="disallowed"},
 [0x102FE] = {status="disallowed"},
 [0x102FF] = {status="disallowed"},
 [0x1031F] = {status="valid"}, -- OLD ITALIC LETTER ESS
 -- OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
 [0x10320] = {status="disallowed"},
 [0x10321] = {status="disallowed"},
 [0x10322] = {status="disallowed"},
 [0x10323] = {status="disallowed"},
 [0x10341] = {status="disallowed"}, -- GOTHIC LETTER NINETY
 [0x1034A] = {status="disallowed"}, -- GOTHIC LETTER NINE HUNDRED
 -- NA   <reserved-1034B>..<reserved-1034F>
 [0x1034B] = {status="disallowed"},
 [0x1034C] = {status="disallowed"},
 [0x1034D] = {status="disallowed"},
 [0x1034E] = {status="disallowed"},
 [0x1034F] = {status="disallowed"},
 -- NA   <reserved-1037B>..<reserved-1037F>
 [0x1037B] = {status="disallowed"},
 [0x1037C] = {status="disallowed"},
 [0x1037D] = {status="disallowed"},
 [0x1037E] = {status="disallowed"},
 [0x1037F] = {status="disallowed"},
 [0x1039E] = {status="disallowed"}, -- NA   <reserved-1039E>
 [0x1039F] = {status="disallowed"}, -- UGARITIC WORD DIVIDER
 -- NA   <reserved-103C4>..<reserved-103C7>
 [0x103C4] = {status="disallowed"},
 [0x103C5] = {status="disallowed"},
 [0x103C6] = {status="disallowed"},
 [0x103C7] = {status="disallowed"},
 [0x10400] = 0x10428, -- DESERET CAPITAL LETTER LONG I
 [0x10401] = 0x10429, -- DESERET CAPITAL LETTER LONG E
 [0x10402] = 0x1042A, -- DESERET CAPITAL LETTER LONG A
 [0x10403] = 0x1042B, -- DESERET CAPITAL LETTER LONG AH
 [0x10404] = 0x1042C, -- DESERET CAPITAL LETTER LONG O
 [0x10405] = 0x1042D, -- DESERET CAPITAL LETTER LONG OO
 [0x10406] = 0x1042E, -- DESERET CAPITAL LETTER SHORT I
 [0x10407] = 0x1042F, -- DESERET CAPITAL LETTER SHORT E
 [0x10408] = 0x10430, -- DESERET CAPITAL LETTER SHORT A
 [0x10409] = 0x10431, -- DESERET CAPITAL LETTER SHORT AH
 [0x1040A] = 0x10432, -- DESERET CAPITAL LETTER SHORT O
 [0x1040B] = 0x10433, -- DESERET CAPITAL LETTER SHORT OO
 [0x1040C] = 0x10434, -- DESERET CAPITAL LETTER AY
 [0x1040D] = 0x10435, -- DESERET CAPITAL LETTER OW
 [0x1040E] = 0x10436, -- DESERET CAPITAL LETTER WU
 [0x1040F] = 0x10437, -- DESERET CAPITAL LETTER YEE
 [0x10410] = 0x10438, -- DESERET CAPITAL LETTER H
 [0x10411] = 0x10439, -- DESERET CAPITAL LETTER PEE
 [0x10412] = 0x1043A, -- DESERET CAPITAL LETTER BEE
 [0x10413] = 0x1043B, -- DESERET CAPITAL LETTER TEE
 [0x10414] = 0x1043C, -- DESERET CAPITAL LETTER DEE
 [0x10415] = 0x1043D, -- DESERET CAPITAL LETTER CHEE
 [0x10416] = 0x1043E, -- DESERET CAPITAL LETTER JEE
 [0x10417] = 0x1043F, -- DESERET CAPITAL LETTER KAY
 [0x10418] = 0x10440, -- DESERET CAPITAL LETTER GAY
 [0x10419] = 0x10441, -- DESERET CAPITAL LETTER EF
 [0x1041A] = 0x10442, -- DESERET CAPITAL LETTER VEE
 [0x1041B] = 0x10443, -- DESERET CAPITAL LETTER ETH
 [0x1041C] = 0x10444, -- DESERET CAPITAL LETTER THEE
 [0x1041D] = 0x10445, -- DESERET CAPITAL LETTER ES
 [0x1041E] = 0x10446, -- DESERET CAPITAL LETTER ZEE
 [0x1041F] = 0x10447, -- DESERET CAPITAL LETTER ESH
 [0x10420] = 0x10448, -- DESERET CAPITAL LETTER ZHEE
 [0x10421] = 0x10449, -- DESERET CAPITAL LETTER ER
 [0x10422] = 0x1044A, -- DESERET CAPITAL LETTER EL
 [0x10423] = 0x1044B, -- DESERET CAPITAL LETTER EM
 [0x10424] = 0x1044C, -- DESERET CAPITAL LETTER EN
 [0x10425] = 0x1044D, -- DESERET CAPITAL LETTER ENG
 [0x10426] = 0x1044E, -- DESERET CAPITAL LETTER OI
 [0x10427] = 0x1044F, -- DESERET CAPITAL LETTER EW
 -- NA   <reserved-1049E>..<reserved-1049F>
 [0x1049E] = {status="disallowed"},
 [0x1049F] = {status="disallowed"},
 [0x104B0] = 0x104D8, -- OSAGE CAPITAL LETTER A
 [0x104B1] = 0x104D9, -- OSAGE CAPITAL LETTER AI
 [0x104B2] = 0x104DA, -- OSAGE CAPITAL LETTER AIN
 [0x104B3] = 0x104DB, -- OSAGE CAPITAL LETTER AH
 [0x104B4] = 0x104DC, -- OSAGE CAPITAL LETTER BRA
 [0x104B5] = 0x104DD, -- OSAGE CAPITAL LETTER CHA
 [0x104B6] = 0x104DE, -- OSAGE CAPITAL LETTER EHCHA
 [0x104B7] = 0x104DF, -- OSAGE CAPITAL LETTER E
 [0x104B8] = 0x104E0, -- OSAGE CAPITAL LETTER EIN
 [0x104B9] = 0x104E1, -- OSAGE CAPITAL LETTER HA
 [0x104BA] = 0x104E2, -- OSAGE CAPITAL LETTER HYA
 [0x104BB] = 0x104E3, -- OSAGE CAPITAL LETTER I
 [0x104BC] = 0x104E4, -- OSAGE CAPITAL LETTER KA
 [0x104BD] = 0x104E5, -- OSAGE CAPITAL LETTER EHKA
 [0x104BE] = 0x104E6, -- OSAGE CAPITAL LETTER KYA
 [0x104BF] = 0x104E7, -- OSAGE CAPITAL LETTER LA
 [0x104C0] = 0x104E8, -- OSAGE CAPITAL LETTER MA
 [0x104C1] = 0x104E9, -- OSAGE CAPITAL LETTER NA
 [0x104C2] = 0x104EA, -- OSAGE CAPITAL LETTER O
 [0x104C3] = 0x104EB, -- OSAGE CAPITAL LETTER OIN
 [0x104C4] = 0x104EC, -- OSAGE CAPITAL LETTER PA
 [0x104C5] = 0x104ED, -- OSAGE CAPITAL LETTER EHPA
 [0x104C6] = 0x104EE, -- OSAGE CAPITAL LETTER SA
 [0x104C7] = 0x104EF, -- OSAGE CAPITAL LETTER SHA
 [0x104C8] = 0x104F0, -- OSAGE CAPITAL LETTER TA
 [0x104C9] = 0x104F1, -- OSAGE CAPITAL LETTER EHTA
 [0x104CA] = 0x104F2, -- OSAGE CAPITAL LETTER TSA
 [0x104CB] = 0x104F3, -- OSAGE CAPITAL LETTER EHTSA
 [0x104CC] = 0x104F4, -- OSAGE CAPITAL LETTER TSHA
 [0x104CD] = 0x104F5, -- OSAGE CAPITAL LETTER DHA
 [0x104CE] = 0x104F6, -- OSAGE CAPITAL LETTER U
 [0x104CF] = 0x104F7, -- OSAGE CAPITAL LETTER WA
 [0x104D0] = 0x104F8, -- OSAGE CAPITAL LETTER KHA
 [0x104D1] = 0x104F9, -- OSAGE CAPITAL LETTER GHA
 [0x104D2] = 0x104FA, -- OSAGE CAPITAL LETTER ZA
 [0x104D3] = 0x104FB, -- OSAGE CAPITAL LETTER ZHA
 -- NA   <reserved-104D4>..<reserved-104D7>
 [0x104D4] = {status="disallowed"},
 [0x104D5] = {status="disallowed"},
 [0x104D6] = {status="disallowed"},
 [0x104D7] = {status="disallowed"},
 -- NA   <reserved-104FC>..<reserved-104FF>
 [0x104FC] = {status="disallowed"},
 [0x104FD] = {status="disallowed"},
 [0x104FE] = {status="disallowed"},
 [0x104FF] = {status="disallowed"},
 [0x1056F] = {status="disallowed"}, -- CAUCASIAN ALBANIAN CITATION MARK
 [0x10808] = {status="valid"}, -- CYPRIOT SYLLABLE JO
 [0x10809] = {status="disallowed"}, -- NA   <reserved-10809>
 -- NA   <reserved-10806>..<reserved-10807>
 [0x10806] = {status="disallowed"},
 [0x10807] = {status="disallowed"},
 [0x10836] = {status="disallowed"}, -- NA   <reserved-10836>
 -- CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
 [0x10837] = {status="valid"},
 [0x10838] = {status="valid"},
 [0x1083C] = {status="valid"}, -- CYPRIOT SYLLABLE ZA
 -- NA   <reserved-10839>..<reserved-1083B>
 [0x10839] = {status="disallowed"},
 [0x1083A] = {status="disallowed"},
 [0x1083B] = {status="disallowed"},
 [0x1083F] = {status="valid"}, -- CYPRIOT SYLLABLE ZO
 -- NA   <reserved-1083D>..<reserved-1083E>
 [0x1083D] = {status="disallowed"},
 [0x1083E] = {status="disallowed"},
 [0x10856] = {status="disallowed"}, -- NA   <reserved-10856>
 [0x108F3] = {status="disallowed"}, -- NA   <reserved-108F3>
 -- HATRAN LETTER SHIN..HATRAN LETTER TAW
 [0x108F4] = {status="valid"},
 [0x108F5] = {status="valid"},
 -- NA   <reserved-108F6>..<reserved-108FA>
 [0x108F6] = {status="disallowed"},
 [0x108F7] = {status="disallowed"},
 [0x108F8] = {status="disallowed"},
 [0x108F9] = {status="disallowed"},
 [0x108FA] = {status="disallowed"},
 -- HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED
 [0x108FB] = {status="disallowed"},
 [0x108FC] = {status="disallowed"},
 [0x108FD] = {status="disallowed"},
 [0x108FE] = {status="disallowed"},
 [0x108FF] = {status="disallowed"},
 [0x1091F] = {status="disallowed"}, -- PHOENICIAN WORD SEPARATOR
 -- NA   <reserved-1091C>..<reserved-1091E>
 [0x1091C] = {status="disallowed"},
 [0x1091D] = {status="disallowed"},
 [0x1091E] = {status="disallowed"},
 [0x1093F] = {status="disallowed"}, -- LYDIAN TRIANGULAR MARK
 -- NA   <reserved-1093A>..<reserved-1093E>
 [0x1093A] = {status="disallowed"},
 [0x1093B] = {status="disallowed"},
 [0x1093C] = {status="disallowed"},
 [0x1093D] = {status="disallowed"},
 [0x1093E] = {status="disallowed"},
 -- NA   <reserved-109B8>..<reserved-109BB>
 [0x109B8] = {status="disallowed"},
 [0x109B9] = {status="disallowed"},
 [0x109BA] = {status="disallowed"},
 [0x109BB] = {status="disallowed"},
 -- MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF
 [0x109BC] = {status="disallowed"},
 [0x109BD] = {status="disallowed"},
 -- MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
 [0x109BE] = {status="valid"},
 [0x109BF] = {status="valid"},
 -- NA   <reserved-109D0>..<reserved-109D1>
 [0x109D0] = {status="disallowed"},
 [0x109D1] = {status="disallowed"},
 [0x10A04] = {status="disallowed"}, -- NA   <reserved-10A04>
 -- KHAROSHTHI LETTER A..KHAROSHTHI VOWEL SIGN VOCALIC R
 [0x10A00] = {status="valid"},
 [0x10A01] = {status="valid"},
 [0x10A02] = {status="valid"},
 [0x10A03] = {status="valid"},
 -- KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
 [0x10A05] = {status="valid"},
 [0x10A06] = {status="valid"},
 -- NA   <reserved-10A07>..<reserved-10A0B>
 [0x10A07] = {status="disallowed"},
 [0x10A08] = {status="disallowed"},
 [0x10A09] = {status="disallowed"},
 [0x10A0A] = {status="disallowed"},
 [0x10A0B] = {status="disallowed"},
 [0x10A14] = {status="disallowed"}, -- NA   <reserved-10A14>
 [0x10A18] = {status="disallowed"}, -- NA   <reserved-10A18>
 -- KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
 [0x10A15] = {status="valid"},
 [0x10A16] = {status="valid"},
 [0x10A17] = {status="valid"},
 -- NA   <reserved-10A34>..<reserved-10A37>
 [0x10A34] = {status="disallowed"},
 [0x10A35] = {status="disallowed"},
 [0x10A36] = {status="disallowed"},
 [0x10A37] = {status="disallowed"},
 -- KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
 [0x10A38] = {status="valid"},
 [0x10A39] = {status="valid"},
 [0x10A3A] = {status="valid"},
 [0x10A3F] = {status="valid"}, -- KHAROSHTHI VIRAMA
 -- NA   <reserved-10A3B>..<reserved-10A3E>
 [0x10A3B] = {status="disallowed"},
 [0x10A3C] = {status="disallowed"},
 [0x10A3D] = {status="disallowed"},
 [0x10A3E] = {status="disallowed"},
 -- OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMERIC INDICATOR
 [0x10A7D] = {status="disallowed"},
 [0x10A7E] = {status="disallowed"},
 [0x10A7F] = {status="disallowed"},
 -- OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY
 [0x10A9D] = {status="disallowed"},
 [0x10A9E] = {status="disallowed"},
 [0x10A9F] = {status="disallowed"},
 [0x10AC8] = {status="disallowed"}, -- MANICHAEAN SIGN UD
 -- NA   <reserved-10AE7>..<reserved-10AEA>
 [0x10AE7] = {status="disallowed"},
 [0x10AE8] = {status="disallowed"},
 [0x10AE9] = {status="disallowed"},
 [0x10AEA] = {status="disallowed"},
 -- NA   <reserved-10B36>..<reserved-10B38>
 [0x10B36] = {status="disallowed"},
 [0x10B37] = {status="disallowed"},
 [0x10B38] = {status="disallowed"},
 -- NA   <reserved-10B56>..<reserved-10B57>
 [0x10B56] = {status="disallowed"},
 [0x10B57] = {status="disallowed"},
 -- NA   <reserved-10B73>..<reserved-10B77>
 [0x10B73] = {status="disallowed"},
 [0x10B74] = {status="disallowed"},
 [0x10B75] = {status="disallowed"},
 [0x10B76] = {status="disallowed"},
 [0x10B77] = {status="disallowed"},
 -- PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
 [0x10B99] = {status="disallowed"},
 [0x10B9A] = {status="disallowed"},
 [0x10B9B] = {status="disallowed"},
 [0x10B9C] = {status="disallowed"},
 [0x10C80] = 0x10CC0, -- OLD HUNGARIAN CAPITAL LETTER A
 [0x10C81] = 0x10CC1, -- OLD HUNGARIAN CAPITAL LETTER AA
 [0x10C82] = 0x10CC2, -- OLD HUNGARIAN CAPITAL LETTER EB
 [0x10C83] = 0x10CC3, -- OLD HUNGARIAN CAPITAL LETTER AMB
 [0x10C84] = 0x10CC4, -- OLD HUNGARIAN CAPITAL LETTER EC
 [0x10C85] = 0x10CC5, -- OLD HUNGARIAN CAPITAL LETTER ENC
 [0x10C86] = 0x10CC6, -- OLD HUNGARIAN CAPITAL LETTER ECS
 [0x10C87] = 0x10CC7, -- OLD HUNGARIAN CAPITAL LETTER ED
 [0x10C88] = 0x10CC8, -- OLD HUNGARIAN CAPITAL LETTER AND
 [0x10C89] = 0x10CC9, -- OLD HUNGARIAN CAPITAL LETTER E
 [0x10C8A] = 0x10CCA, -- OLD HUNGARIAN CAPITAL LETTER CLOSE E
 [0x10C8B] = 0x10CCB, -- OLD HUNGARIAN CAPITAL LETTER EE
 [0x10C8C] = 0x10CCC, -- OLD HUNGARIAN CAPITAL LETTER EF
 [0x10C8D] = 0x10CCD, -- OLD HUNGARIAN CAPITAL LETTER EG
 [0x10C8E] = 0x10CCE, -- OLD HUNGARIAN CAPITAL LETTER EGY
 [0x10C8F] = 0x10CCF, -- OLD HUNGARIAN CAPITAL LETTER EH
 [0x10C90] = 0x10CD0, -- OLD HUNGARIAN CAPITAL LETTER I
 [0x10C91] = 0x10CD1, -- OLD HUNGARIAN CAPITAL LETTER II
 [0x10C92] = 0x10CD2, -- OLD HUNGARIAN CAPITAL LETTER EJ
 [0x10C93] = 0x10CD3, -- OLD HUNGARIAN CAPITAL LETTER EK
 [0x10C94] = 0x10CD4, -- OLD HUNGARIAN CAPITAL LETTER AK
 [0x10C95] = 0x10CD5, -- OLD HUNGARIAN CAPITAL LETTER UNK
 [0x10C96] = 0x10CD6, -- OLD HUNGARIAN CAPITAL LETTER EL
 [0x10C97] = 0x10CD7, -- OLD HUNGARIAN CAPITAL LETTER ELY
 [0x10C98] = 0x10CD8, -- OLD HUNGARIAN CAPITAL LETTER EM
 [0x10C99] = 0x10CD9, -- OLD HUNGARIAN CAPITAL LETTER EN
 [0x10C9A] = 0x10CDA, -- OLD HUNGARIAN CAPITAL LETTER ENY
 [0x10C9B] = 0x10CDB, -- OLD HUNGARIAN CAPITAL LETTER O
 [0x10C9C] = 0x10CDC, -- OLD HUNGARIAN CAPITAL LETTER OO
 [0x10C9D] = 0x10CDD, -- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
 [0x10C9E] = 0x10CDE, -- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
 [0x10C9F] = 0x10CDF, -- OLD HUNGARIAN CAPITAL LETTER OEE
 [0x10CA0] = 0x10CE0, -- OLD HUNGARIAN CAPITAL LETTER EP
 [0x10CA1] = 0x10CE1, -- OLD HUNGARIAN CAPITAL LETTER EMP
 [0x10CA2] = 0x10CE2, -- OLD HUNGARIAN CAPITAL LETTER ER
 [0x10CA3] = 0x10CE3, -- OLD HUNGARIAN CAPITAL LETTER SHORT ER
 [0x10CA4] = 0x10CE4, -- OLD HUNGARIAN CAPITAL LETTER ES
 [0x10CA5] = 0x10CE5, -- OLD HUNGARIAN CAPITAL LETTER ESZ
 [0x10CA6] = 0x10CE6, -- OLD HUNGARIAN CAPITAL LETTER ET
 [0x10CA7] = 0x10CE7, -- OLD HUNGARIAN CAPITAL LETTER ENT
 [0x10CA8] = 0x10CE8, -- OLD HUNGARIAN CAPITAL LETTER ETY
 [0x10CA9] = 0x10CE9, -- OLD HUNGARIAN CAPITAL LETTER ECH
 [0x10CAA] = 0x10CEA, -- OLD HUNGARIAN CAPITAL LETTER U
 [0x10CAB] = 0x10CEB, -- OLD HUNGARIAN CAPITAL LETTER UU
 [0x10CAC] = 0x10CEC, -- OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
 [0x10CAD] = 0x10CED, -- OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
 [0x10CAE] = 0x10CEE, -- OLD HUNGARIAN CAPITAL LETTER EV
 [0x10CAF] = 0x10CEF, -- OLD HUNGARIAN CAPITAL LETTER EZ
 [0x10CB0] = 0x10CF0, -- OLD HUNGARIAN CAPITAL LETTER EZS
 [0x10CB1] = 0x10CF1, -- OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
 [0x10CB2] = 0x10CF2, -- OLD HUNGARIAN CAPITAL LETTER US
 -- NA   <reserved-1104E>..<reserved-11051>
 [0x1104E] = {status="disallowed"},
 [0x1104F] = {status="disallowed"},
 [0x11050] = {status="disallowed"},
 [0x11051] = {status="disallowed"},
 [0x1107F] = {status="valid"}, -- BRAHMI NUMBER JOINER
 [0x110BD] = {status="disallowed"}, -- KAITHI NUMBER SIGN
 -- KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
 [0x110BB] = {status="disallowed"},
 [0x110BC] = {status="disallowed"},
 -- KAITHI SECTION MARK..KAITHI DOUBLE DANDA
 [0x110BE] = {status="disallowed"},
 [0x110BF] = {status="disallowed"},
 [0x110C0] = {status="disallowed"},
 [0x110C1] = {status="disallowed"},
 [0x11135] = {status="disallowed"}, -- NA   <reserved-11135>
 -- CHAKMA SECTION MARK..CHAKMA QUESTION MARK
 [0x11140] = {status="disallowed"},
 [0x11141] = {status="disallowed"},
 [0x11142] = {status="disallowed"},
 [0x11143] = {status="disallowed"},
 [0x11176] = {status="valid"}, -- MAHAJANI LIGATURE SHRI
 -- MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK
 [0x11174] = {status="disallowed"},
 [0x11175] = {status="disallowed"},
 [0x111C9] = {status="disallowed"}, -- SHARADA SANDHI MARK
 -- SHARADA DANDA..SHARADA SEPARATOR
 [0x111C5] = {status="disallowed"},
 [0x111C6] = {status="disallowed"},
 [0x111C7] = {status="disallowed"},
 [0x111C8] = {status="disallowed"},
 [0x111CD] = {status="disallowed"}, -- SHARADA SUTRA MARK
 -- SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
 [0x111CA] = {status="valid"},
 [0x111CB] = {status="valid"},
 [0x111CC] = {status="valid"},
 -- NA   <reserved-111CE>..<reserved-111CF>
 [0x111CE] = {status="disallowed"},
 [0x111CF] = {status="disallowed"},
 [0x111DA] = {status="valid"}, -- SHARADA EKAM
 [0x111DB] = {status="disallowed"}, -- SHARADA SIGN SIDDHAM
 [0x111DC] = {status="valid"}, -- SHARADA HEADSTROKE
 [0x111E0] = {status="disallowed"}, -- NA   <reserved-111E0>
 -- SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2
 [0x111DD] = {status="disallowed"},
 [0x111DE] = {status="disallowed"},
 [0x111DF] = {status="disallowed"},
 [0x11212] = {status="disallowed"}, -- NA   <reserved-11212>
 [0x1123E] = {status="valid"}, -- KHOJKI SIGN SUKUN
 [0x11287] = {status="disallowed"}, -- NA   <reserved-11287>
 [0x11288] = {status="valid"}, -- MULTANI LETTER GHA
 [0x11289] = {status="disallowed"}, -- NA   <reserved-11289>
 [0x1128E] = {status="disallowed"}, -- NA   <reserved-1128E>
 -- MULTANI LETTER CA..MULTANI LETTER JJA
 [0x1128A] = {status="valid"},
 [0x1128B] = {status="valid"},
 [0x1128C] = {status="valid"},
 [0x1128D] = {status="valid"},
 [0x1129E] = {status="disallowed"}, -- NA   <reserved-1129E>
 [0x112A9] = {status="disallowed"}, -- MULTANI SECTION MARK
 -- NA   <reserved-112EB>..<reserved-112EF>
 [0x112EB] = {status="disallowed"},
 [0x112EC] = {status="disallowed"},
 [0x112ED] = {status="disallowed"},
 [0x112EE] = {status="disallowed"},
 [0x112EF] = {status="disallowed"},
 [0x11300] = {status="valid"}, -- GRANTHA SIGN COMBINING ANUSVARA ABOVE
 [0x11304] = {status="disallowed"}, -- NA   <reserved-11304>
 -- GRANTHA SIGN CANDRABINDU..GRANTHA SIGN VISARGA
 [0x11301] = {status="valid"},
 [0x11302] = {status="valid"},
 [0x11303] = {status="valid"},
 -- NA   <reserved-1130D>..<reserved-1130E>
 [0x1130D] = {status="disallowed"},
 [0x1130E] = {status="disallowed"},
 -- GRANTHA LETTER EE..GRANTHA LETTER AI
 [0x1130F] = {status="valid"},
 [0x11310] = {status="valid"},
 -- NA   <reserved-11311>..<reserved-11312>
 [0x11311] = {status="disallowed"},
 [0x11312] = {status="disallowed"},
 [0x11329] = {status="disallowed"}, -- NA   <reserved-11329>
 [0x11331] = {status="disallowed"}, -- NA   <reserved-11331>
 [0x11334] = {status="disallowed"}, -- NA   <reserved-11334>
 -- GRANTHA LETTER LA..GRANTHA LETTER LLA
 [0x11332] = {status="valid"},
 [0x11333] = {status="valid"},
 -- GRANTHA LETTER VA..GRANTHA LETTER HA
 [0x11335] = {status="valid"},
 [0x11336] = {status="valid"},
 [0x11337] = {status="valid"},
 [0x11338] = {status="valid"},
 [0x11339] = {status="valid"},
 -- NA   <reserved-1133A>..<reserved-1133B>
 [0x1133A] = {status="disallowed"},
 [0x1133B] = {status="disallowed"},
 -- NA   <reserved-11345>..<reserved-11346>
 [0x11345] = {status="disallowed"},
 [0x11346] = {status="disallowed"},
 -- GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
 [0x11347] = {status="valid"},
 [0x11348] = {status="valid"},
 -- NA   <reserved-11349>..<reserved-1134A>
 [0x11349] = {status="disallowed"},
 [0x1134A] = {status="disallowed"},
 -- GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
 [0x1134B] = {status="valid"},
 [0x1134C] = {status="valid"},
 [0x1134D] = {status="valid"},
 [0x11350] = {status="valid"}, -- GRANTHA OM
 -- NA   <reserved-1134E>..<reserved-1134F>
 [0x1134E] = {status="disallowed"},
 [0x1134F] = {status="disallowed"},
 [0x11357] = {status="valid"}, -- GRANTHA AU LENGTH MARK
 -- NA   <reserved-11358>..<reserved-1135C>
 [0x11358] = {status="disallowed"},
 [0x11359] = {status="disallowed"},
 [0x1135A] = {status="disallowed"},
 [0x1135B] = {status="disallowed"},
 [0x1135C] = {status="disallowed"},
 -- NA   <reserved-11364>..<reserved-11365>
 [0x11364] = {status="disallowed"},
 [0x11365] = {status="disallowed"},
 -- NA   <reserved-1136D>..<reserved-1136F>
 [0x1136D] = {status="disallowed"},
 [0x1136E] = {status="disallowed"},
 [0x1136F] = {status="disallowed"},
 -- COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
 [0x11370] = {status="valid"},
 [0x11371] = {status="valid"},
 [0x11372] = {status="valid"},
 [0x11373] = {status="valid"},
 [0x11374] = {status="valid"},
 -- NEWA DANDA..NEWA ABBREVIATION SIGN
 [0x1144B] = {status="disallowed"},
 [0x1144C] = {status="disallowed"},
 [0x1144D] = {status="disallowed"},
 [0x1144E] = {status="disallowed"},
 [0x1144F] = {status="disallowed"},
 [0x1145A] = {status="disallowed"}, -- NA   <reserved-1145A>
 [0x1145B] = {status="disallowed"}, -- NEWA PLACEHOLDER MARK
 [0x1145C] = {status="disallowed"}, -- NA   <reserved-1145C>
 [0x1145D] = {status="disallowed"}, -- NEWA INSERTION SIGN
 [0x114C6] = {status="disallowed"}, -- TIRHUTA ABBREVIATION SIGN
 [0x114C7] = {status="valid"}, -- TIRHUTA OM
 -- NA   <reserved-115B6>..<reserved-115B7>
 [0x115B6] = {status="disallowed"},
 [0x115B7] = {status="disallowed"},
 [0x11644] = {status="valid"}, -- MODI SIGN HUVA
 -- MODI DANDA..MODI ABBREVIATION SIGN
 [0x11641] = {status="disallowed"},
 [0x11642] = {status="disallowed"},
 [0x11643] = {status="disallowed"},
 -- NA   <reserved-1171A>..<reserved-1171C>
 [0x1171A] = {status="disallowed"},
 [0x1171B] = {status="disallowed"},
 [0x1171C] = {status="disallowed"},
 -- NA   <reserved-1172C>..<reserved-1172F>
 [0x1172C] = {status="disallowed"},
 [0x1172D] = {status="disallowed"},
 [0x1172E] = {status="disallowed"},
 [0x1172F] = {status="disallowed"},
 [0x118A0] = 0x118C0, -- WARANG CITI CAPITAL LETTER NGAA
 [0x118A1] = 0x118C1, -- WARANG CITI CAPITAL LETTER A
 [0x118A2] = 0x118C2, -- WARANG CITI CAPITAL LETTER WI
 [0x118A3] = 0x118C3, -- WARANG CITI CAPITAL LETTER YU
 [0x118A4] = 0x118C4, -- WARANG CITI CAPITAL LETTER YA
 [0x118A5] = 0x118C5, -- WARANG CITI CAPITAL LETTER YO
 [0x118A6] = 0x118C6, -- WARANG CITI CAPITAL LETTER II
 [0x118A7] = 0x118C7, -- WARANG CITI CAPITAL LETTER UU
 [0x118A8] = 0x118C8, -- WARANG CITI CAPITAL LETTER E
 [0x118A9] = 0x118C9, -- WARANG CITI CAPITAL LETTER O
 [0x118AA] = 0x118CA, -- WARANG CITI CAPITAL LETTER ANG
 [0x118AB] = 0x118CB, -- WARANG CITI CAPITAL LETTER GA
 [0x118AC] = 0x118CC, -- WARANG CITI CAPITAL LETTER KO
 [0x118AD] = 0x118CD, -- WARANG CITI CAPITAL LETTER ENY
 [0x118AE] = 0x118CE, -- WARANG CITI CAPITAL LETTER YUJ
 [0x118AF] = 0x118CF, -- WARANG CITI CAPITAL LETTER UC
 [0x118B0] = 0x118D0, -- WARANG CITI CAPITAL LETTER ENN
 [0x118B1] = 0x118D1, -- WARANG CITI CAPITAL LETTER ODD
 [0x118B2] = 0x118D2, -- WARANG CITI CAPITAL LETTER TTE
 [0x118B3] = 0x118D3, -- WARANG CITI CAPITAL LETTER NUNG
 [0x118B4] = 0x118D4, -- WARANG CITI CAPITAL LETTER DA
 [0x118B5] = 0x118D5, -- WARANG CITI CAPITAL LETTER AT
 [0x118B6] = 0x118D6, -- WARANG CITI CAPITAL LETTER AM
 [0x118B7] = 0x118D7, -- WARANG CITI CAPITAL LETTER BU
 [0x118B8] = 0x118D8, -- WARANG CITI CAPITAL LETTER PU
 [0x118B9] = 0x118D9, -- WARANG CITI CAPITAL LETTER HIYO
 [0x118BA] = 0x118DA, -- WARANG CITI CAPITAL LETTER HOLO
 [0x118BB] = 0x118DB, -- WARANG CITI CAPITAL LETTER HORR
 [0x118BC] = 0x118DC, -- WARANG CITI CAPITAL LETTER HAR
 [0x118BD] = 0x118DD, -- WARANG CITI CAPITAL LETTER SSUU
 [0x118BE] = 0x118DE, -- WARANG CITI CAPITAL LETTER SII
 [0x118BF] = 0x118DF, -- WARANG CITI CAPITAL LETTER VIYO
 [0x118FF] = {status="valid"}, -- WARANG CITI OM
 [0x11A47] = {status="valid"}, -- ZANABAZAR SQUARE SUBJOINER
 -- NA   <reserved-11A84>..<reserved-11A85>
 [0x11A84] = {status="disallowed"},
 [0x11A85] = {status="disallowed"},
 [0x11A9D] = {status="disallowed"}, -- NA   <reserved-11A9D>
 -- SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD
 [0x11A9A] = {status="disallowed"},
 [0x11A9B] = {status="disallowed"},
 [0x11A9C] = {status="disallowed"},
 -- SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
 [0x11A9E] = {status="disallowed"},
 [0x11A9F] = {status="disallowed"},
 [0x11AA0] = {status="disallowed"},
 [0x11AA1] = {status="disallowed"},
 [0x11AA2] = {status="disallowed"},
 [0x11C09] = {status="disallowed"}, -- NA   <reserved-11C09>
 [0x11C37] = {status="disallowed"}, -- NA   <reserved-11C37>
 -- BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
 [0x11C41] = {status="disallowed"},
 [0x11C42] = {status="disallowed"},
 [0x11C43] = {status="disallowed"},
 [0x11C44] = {status="disallowed"},
 [0x11C45] = {status="disallowed"},
 -- NA   <reserved-11C6D>..<reserved-11C6F>
 [0x11C6D] = {status="disallowed"},
 [0x11C6E] = {status="disallowed"},
 [0x11C6F] = {status="disallowed"},
 -- MARCHEN HEAD MARK..MARCHEN MARK SHAD
 [0x11C70] = {status="disallowed"},
 [0x11C71] = {status="disallowed"},
 -- NA   <reserved-11C90>..<reserved-11C91>
 [0x11C90] = {status="disallowed"},
 [0x11C91] = {status="disallowed"},
 [0x11CA8] = {status="disallowed"}, -- NA   <reserved-11CA8>
 [0x11D07] = {status="disallowed"}, -- NA   <reserved-11D07>
 [0x11D0A] = {status="disallowed"}, -- NA   <reserved-11D0A>
 -- MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
 [0x11D08] = {status="valid"},
 [0x11D09] = {status="valid"},
 [0x11D3A] = {status="valid"}, -- MASARAM GONDI VOWEL SIGN E
 [0x11D3B] = {status="disallowed"}, -- NA   <reserved-11D3B>
 -- NA   <reserved-11D37>..<reserved-11D39>
 [0x11D37] = {status="disallowed"},
 [0x11D38] = {status="disallowed"},
 [0x11D39] = {status="disallowed"},
 [0x11D3E] = {status="disallowed"}, -- NA   <reserved-11D3E>
 -- MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
 [0x11D3C] = {status="valid"},
 [0x11D3D] = {status="valid"},
 [0x12399] = {status="valid"}, -- CUNEIFORM SIGN U U
 [0x1246F] = {status="disallowed"}, -- NA   <reserved-1246F>
 [0x12474] = {status="disallowed"}, -- CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
 -- CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON
 [0x12470] = {status="disallowed"},
 [0x12471] = {status="disallowed"},
 [0x12472] = {status="disallowed"},
 [0x12473] = {status="disallowed"},
 [0x16A5F] = {status="disallowed"}, -- NA   <reserved-16A5F>
 -- NA   <reserved-16A6A>..<reserved-16A6D>
 [0x16A6A] = {status="disallowed"},
 [0x16A6B] = {status="disallowed"},
 [0x16A6C] = {status="disallowed"},
 [0x16A6D] = {status="disallowed"},
 -- MRO DANDA..MRO DOUBLE DANDA
 [0x16A6E] = {status="disallowed"},
 [0x16A6F] = {status="disallowed"},
 -- NA   <reserved-16AEE>..<reserved-16AEF>
 [0x16AEE] = {status="disallowed"},
 [0x16AEF] = {status="disallowed"},
 [0x16AF5] = {status="disallowed"}, -- BASSA VAH FULL STOP
 -- BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
 [0x16AF0] = {status="valid"},
 [0x16AF1] = {status="valid"},
 [0x16AF2] = {status="valid"},
 [0x16AF3] = {status="valid"},
 [0x16AF4] = {status="valid"},
 -- PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
 [0x16B40] = {status="valid"},
 [0x16B41] = {status="valid"},
 [0x16B42] = {status="valid"},
 [0x16B43] = {status="valid"},
 -- PAHAWH HMONG SIGN XAUS..PAHAWH HMONG SIGN CIM TSOV ROG
 [0x16B44] = {status="disallowed"},
 [0x16B45] = {status="disallowed"},
 [0x16B5A] = {status="disallowed"}, -- NA   <reserved-16B5A>
 [0x16B62] = {status="disallowed"}, -- NA   <reserved-16B62>
 -- NA   <reserved-16B78>..<reserved-16B7C>
 [0x16B78] = {status="disallowed"},
 [0x16B79] = {status="disallowed"},
 [0x16B7A] = {status="disallowed"},
 [0x16B7B] = {status="disallowed"},
 [0x16B7C] = {status="disallowed"},
 [0x16FE0] = {status="valid"}, -- TANGUT ITERATION MARK
 [0x16FE1] = {status="valid"}, -- NUSHU ITERATION MARK
 -- NA   <reserved-1BC6B>..<reserved-1BC6F>
 [0x1BC6B] = {status="disallowed"},
 [0x1BC6C] = {status="disallowed"},
 [0x1BC6D] = {status="disallowed"},
 [0x1BC6E] = {status="disallowed"},
 [0x1BC6F] = {status="disallowed"},
 -- NA   <reserved-1BC7D>..<reserved-1BC7F>
 [0x1BC7D] = {status="disallowed"},
 [0x1BC7E] = {status="disallowed"},
 [0x1BC7F] = {status="disallowed"},
 [0x1BC9C] = {status="disallowed"}, -- DUPLOYAN SIGN O WITH CROSS
 -- NA   <reserved-1BC9A>..<reserved-1BC9B>
 [0x1BC9A] = {status="disallowed"},
 [0x1BC9B] = {status="disallowed"},
 [0x1BC9F] = {status="disallowed"}, -- DUPLOYAN PUNCTUATION CHINOOK FULL STOP
 -- DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
 [0x1BC9D] = {status="valid"},
 [0x1BC9E] = {status="valid"},
 -- SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
 [0x1BCA0] = {status='ignored'},
 [0x1BCA1] = {status='ignored'},
 [0x1BCA2] = {status='ignored'},
 [0x1BCA3] = {status='ignored'},
 [0x1D129] = {status="disallowed"}, -- MUSICAL SYMBOL MULTIPLE MEASURE REST
 -- NA   <reserved-1D127>..<reserved-1D128>
 [0x1D127] = {status="disallowed"},
 [0x1D128] = {status="disallowed"},
 [0x1D15E] = {0x1D157, 0x1D165}, -- MUSICAL SYMBOL HALF NOTE
 [0x1D15F] = {0x1D158, 0x1D165}, -- MUSICAL SYMBOL QUARTER NOTE
 [0x1D160] = {0x1D158, 0x1D165, 0x1D16E}, -- MUSICAL SYMBOL EIGHTH NOTE
 [0x1D161] = {0x1D158, 0x1D165, 0x1D16F}, -- MUSICAL SYMBOL SIXTEENTH NOTE
 [0x1D162] = {0x1D158, 0x1D165, 0x1D170}, -- MUSICAL SYMBOL THIRTY-SECOND NOTE
 [0x1D163] = {0x1D158, 0x1D165, 0x1D171}, -- MUSICAL SYMBOL SIXTY-FOURTH NOTE
 [0x1D164] = {0x1D158, 0x1D165, 0x1D172}, -- MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
 [0x1D1BB] = {0x1D1B9, 0x1D165}, -- MUSICAL SYMBOL MINIMA
 [0x1D1BC] = {0x1D1BA, 0x1D165}, -- MUSICAL SYMBOL MINIMA BLACK
 [0x1D1BD] = {0x1D1B9, 0x1D165, 0x1D16E}, -- MUSICAL SYMBOL SEMIMINIMA WHITE
 [0x1D1BE] = {0x1D1BA, 0x1D165, 0x1D16E}, -- MUSICAL SYMBOL SEMIMINIMA BLACK
 [0x1D1BF] = {0x1D1B9, 0x1D165, 0x1D16F}, -- MUSICAL SYMBOL FUSA WHITE
 [0x1D1C0] = {0x1D1BA, 0x1D165, 0x1D16F}, -- MUSICAL SYMBOL FUSA BLACK
 [0x1D400] = 0x0061, -- MATHEMATICAL BOLD CAPITAL A
 [0x1D401] = 0x0062, -- MATHEMATICAL BOLD CAPITAL B
 [0x1D402] = 0x0063, -- MATHEMATICAL BOLD CAPITAL C
 [0x1D403] = 0x0064, -- MATHEMATICAL BOLD CAPITAL D
 [0x1D404] = 0x0065, -- MATHEMATICAL BOLD CAPITAL E
 [0x1D405] = 0x0066, -- MATHEMATICAL BOLD CAPITAL F
 [0x1D406] = 0x0067, -- MATHEMATICAL BOLD CAPITAL G
 [0x1D407] = 0x0068, -- MATHEMATICAL BOLD CAPITAL H
 [0x1D408] = 0x0069, -- MATHEMATICAL BOLD CAPITAL I
 [0x1D409] = 0x006A, -- MATHEMATICAL BOLD CAPITAL J
 [0x1D40A] = 0x006B, -- MATHEMATICAL BOLD CAPITAL K
 [0x1D40B] = 0x006C, -- MATHEMATICAL BOLD CAPITAL L
 [0x1D40C] = 0x006D, -- MATHEMATICAL BOLD CAPITAL M
 [0x1D40D] = 0x006E, -- MATHEMATICAL BOLD CAPITAL N
 [0x1D40E] = 0x006F, -- MATHEMATICAL BOLD CAPITAL O
 [0x1D40F] = 0x0070, -- MATHEMATICAL BOLD CAPITAL P
 [0x1D410] = 0x0071, -- MATHEMATICAL BOLD CAPITAL Q
 [0x1D411] = 0x0072, -- MATHEMATICAL BOLD CAPITAL R
 [0x1D412] = 0x0073, -- MATHEMATICAL BOLD CAPITAL S
 [0x1D413] = 0x0074, -- MATHEMATICAL BOLD CAPITAL T
 [0x1D414] = 0x0075, -- MATHEMATICAL BOLD CAPITAL U
 [0x1D415] = 0x0076, -- MATHEMATICAL BOLD CAPITAL V
 [0x1D416] = 0x0077, -- MATHEMATICAL BOLD CAPITAL W
 [0x1D417] = 0x0078, -- MATHEMATICAL BOLD CAPITAL X
 [0x1D418] = 0x0079, -- MATHEMATICAL BOLD CAPITAL Y
 [0x1D419] = 0x007A, -- MATHEMATICAL BOLD CAPITAL Z
 [0x1D41A] = 0x0061, -- MATHEMATICAL BOLD SMALL A
 [0x1D41B] = 0x0062, -- MATHEMATICAL BOLD SMALL B
 [0x1D41C] = 0x0063, -- MATHEMATICAL BOLD SMALL C
 [0x1D41D] = 0x0064, -- MATHEMATICAL BOLD SMALL D
 [0x1D41E] = 0x0065, -- MATHEMATICAL BOLD SMALL E
 [0x1D41F] = 0x0066, -- MATHEMATICAL BOLD SMALL F
 [0x1D420] = 0x0067, -- MATHEMATICAL BOLD SMALL G
 [0x1D421] = 0x0068, -- MATHEMATICAL BOLD SMALL H
 [0x1D422] = 0x0069, -- MATHEMATICAL BOLD SMALL I
 [0x1D423] = 0x006A, -- MATHEMATICAL BOLD SMALL J
 [0x1D424] = 0x006B, -- MATHEMATICAL BOLD SMALL K
 [0x1D425] = 0x006C, -- MATHEMATICAL BOLD SMALL L
 [0x1D426] = 0x006D, -- MATHEMATICAL BOLD SMALL M
 [0x1D427] = 0x006E, -- MATHEMATICAL BOLD SMALL N
 [0x1D428] = 0x006F, -- MATHEMATICAL BOLD SMALL O
 [0x1D429] = 0x0070, -- MATHEMATICAL BOLD SMALL P
 [0x1D42A] = 0x0071, -- MATHEMATICAL BOLD SMALL Q
 [0x1D42B] = 0x0072, -- MATHEMATICAL BOLD SMALL R
 [0x1D42C] = 0x0073, -- MATHEMATICAL BOLD SMALL S
 [0x1D42D] = 0x0074, -- MATHEMATICAL BOLD SMALL T
 [0x1D42E] = 0x0075, -- MATHEMATICAL BOLD SMALL U
 [0x1D42F] = 0x0076, -- MATHEMATICAL BOLD SMALL V
 [0x1D430] = 0x0077, -- MATHEMATICAL BOLD SMALL W
 [0x1D431] = 0x0078, -- MATHEMATICAL BOLD SMALL X
 [0x1D432] = 0x0079, -- MATHEMATICAL BOLD SMALL Y
 [0x1D433] = 0x007A, -- MATHEMATICAL BOLD SMALL Z
 [0x1D434] = 0x0061, -- MATHEMATICAL ITALIC CAPITAL A
 [0x1D435] = 0x0062, -- MATHEMATICAL ITALIC CAPITAL B
 [0x1D436] = 0x0063, -- MATHEMATICAL ITALIC CAPITAL C
 [0x1D437] = 0x0064, -- MATHEMATICAL ITALIC CAPITAL D
 [0x1D438] = 0x0065, -- MATHEMATICAL ITALIC CAPITAL E
 [0x1D439] = 0x0066, -- MATHEMATICAL ITALIC CAPITAL F
 [0x1D43A] = 0x0067, -- MATHEMATICAL ITALIC CAPITAL G
 [0x1D43B] = 0x0068, -- MATHEMATICAL ITALIC CAPITAL H
 [0x1D43C] = 0x0069, -- MATHEMATICAL ITALIC CAPITAL I
 [0x1D43D] = 0x006A, -- MATHEMATICAL ITALIC CAPITAL J
 [0x1D43E] = 0x006B, -- MATHEMATICAL ITALIC CAPITAL K
 [0x1D43F] = 0x006C, -- MATHEMATICAL ITALIC CAPITAL L
 [0x1D440] = 0x006D, -- MATHEMATICAL ITALIC CAPITAL M
 [0x1D441] = 0x006E, -- MATHEMATICAL ITALIC CAPITAL N
 [0x1D442] = 0x006F, -- MATHEMATICAL ITALIC CAPITAL O
 [0x1D443] = 0x0070, -- MATHEMATICAL ITALIC CAPITAL P
 [0x1D444] = 0x0071, -- MATHEMATICAL ITALIC CAPITAL Q
 [0x1D445] = 0x0072, -- MATHEMATICAL ITALIC CAPITAL R
 [0x1D446] = 0x0073, -- MATHEMATICAL ITALIC CAPITAL S
 [0x1D447] = 0x0074, -- MATHEMATICAL ITALIC CAPITAL T
 [0x1D448] = 0x0075, -- MATHEMATICAL ITALIC CAPITAL U
 [0x1D449] = 0x0076, -- MATHEMATICAL ITALIC CAPITAL V
 [0x1D44A] = 0x0077, -- MATHEMATICAL ITALIC CAPITAL W
 [0x1D44B] = 0x0078, -- MATHEMATICAL ITALIC CAPITAL X
 [0x1D44C] = 0x0079, -- MATHEMATICAL ITALIC CAPITAL Y
 [0x1D44D] = 0x007A, -- MATHEMATICAL ITALIC CAPITAL Z
 [0x1D44E] = 0x0061, -- MATHEMATICAL ITALIC SMALL A
 [0x1D44F] = 0x0062, -- MATHEMATICAL ITALIC SMALL B
 [0x1D450] = 0x0063, -- MATHEMATICAL ITALIC SMALL C
 [0x1D451] = 0x0064, -- MATHEMATICAL ITALIC SMALL D
 [0x1D452] = 0x0065, -- MATHEMATICAL ITALIC SMALL E
 [0x1D453] = 0x0066, -- MATHEMATICAL ITALIC SMALL F
 [0x1D454] = 0x0067, -- MATHEMATICAL ITALIC SMALL G
 [0x1D455] = {status="disallowed"}, -- NA   <reserved-1D455>
 [0x1D456] = 0x0069, -- MATHEMATICAL ITALIC SMALL I
 [0x1D457] = 0x006A, -- MATHEMATICAL ITALIC SMALL J
 [0x1D458] = 0x006B, -- MATHEMATICAL ITALIC SMALL K
 [0x1D459] = 0x006C, -- MATHEMATICAL ITALIC SMALL L
 [0x1D45A] = 0x006D, -- MATHEMATICAL ITALIC SMALL M
 [0x1D45B] = 0x006E, -- MATHEMATICAL ITALIC SMALL N
 [0x1D45C] = 0x006F, -- MATHEMATICAL ITALIC SMALL O
 [0x1D45D] = 0x0070, -- MATHEMATICAL ITALIC SMALL P
 [0x1D45E] = 0x0071, -- MATHEMATICAL ITALIC SMALL Q
 [0x1D45F] = 0x0072, -- MATHEMATICAL ITALIC SMALL R
 [0x1D460] = 0x0073, -- MATHEMATICAL ITALIC SMALL S
 [0x1D461] = 0x0074, -- MATHEMATICAL ITALIC SMALL T
 [0x1D462] = 0x0075, -- MATHEMATICAL ITALIC SMALL U
 [0x1D463] = 0x0076, -- MATHEMATICAL ITALIC SMALL V
 [0x1D464] = 0x0077, -- MATHEMATICAL ITALIC SMALL W
 [0x1D465] = 0x0078, -- MATHEMATICAL ITALIC SMALL X
 [0x1D466] = 0x0079, -- MATHEMATICAL ITALIC SMALL Y
 [0x1D467] = 0x007A, -- MATHEMATICAL ITALIC SMALL Z
 [0x1D468] = 0x0061, -- MATHEMATICAL BOLD ITALIC CAPITAL A
 [0x1D469] = 0x0062, -- MATHEMATICAL BOLD ITALIC CAPITAL B
 [0x1D46A] = 0x0063, -- MATHEMATICAL BOLD ITALIC CAPITAL C
 [0x1D46B] = 0x0064, -- MATHEMATICAL BOLD ITALIC CAPITAL D
 [0x1D46C] = 0x0065, -- MATHEMATICAL BOLD ITALIC CAPITAL E
 [0x1D46D] = 0x0066, -- MATHEMATICAL BOLD ITALIC CAPITAL F
 [0x1D46E] = 0x0067, -- MATHEMATICAL BOLD ITALIC CAPITAL G
 [0x1D46F] = 0x0068, -- MATHEMATICAL BOLD ITALIC CAPITAL H
 [0x1D470] = 0x0069, -- MATHEMATICAL BOLD ITALIC CAPITAL I
 [0x1D471] = 0x006A, -- MATHEMATICAL BOLD ITALIC CAPITAL J
 [0x1D472] = 0x006B, -- MATHEMATICAL BOLD ITALIC CAPITAL K
 [0x1D473] = 0x006C, -- MATHEMATICAL BOLD ITALIC CAPITAL L
 [0x1D474] = 0x006D, -- MATHEMATICAL BOLD ITALIC CAPITAL M
 [0x1D475] = 0x006E, -- MATHEMATICAL BOLD ITALIC CAPITAL N
 [0x1D476] = 0x006F, -- MATHEMATICAL BOLD ITALIC CAPITAL O
 [0x1D477] = 0x0070, -- MATHEMATICAL BOLD ITALIC CAPITAL P
 [0x1D478] = 0x0071, -- MATHEMATICAL BOLD ITALIC CAPITAL Q
 [0x1D479] = 0x0072, -- MATHEMATICAL BOLD ITALIC CAPITAL R
 [0x1D47A] = 0x0073, -- MATHEMATICAL BOLD ITALIC CAPITAL S
 [0x1D47B] = 0x0074, -- MATHEMATICAL BOLD ITALIC CAPITAL T
 [0x1D47C] = 0x0075, -- MATHEMATICAL BOLD ITALIC CAPITAL U
 [0x1D47D] = 0x0076, -- MATHEMATICAL BOLD ITALIC CAPITAL V
 [0x1D47E] = 0x0077, -- MATHEMATICAL BOLD ITALIC CAPITAL W
 [0x1D47F] = 0x0078, -- MATHEMATICAL BOLD ITALIC CAPITAL X
 [0x1D480] = 0x0079, -- MATHEMATICAL BOLD ITALIC CAPITAL Y
 [0x1D481] = 0x007A, -- MATHEMATICAL BOLD ITALIC CAPITAL Z
 [0x1D482] = 0x0061, -- MATHEMATICAL BOLD ITALIC SMALL A
 [0x1D483] = 0x0062, -- MATHEMATICAL BOLD ITALIC SMALL B
 [0x1D484] = 0x0063, -- MATHEMATICAL BOLD ITALIC SMALL C
 [0x1D485] = 0x0064, -- MATHEMATICAL BOLD ITALIC SMALL D
 [0x1D486] = 0x0065, -- MATHEMATICAL BOLD ITALIC SMALL E
 [0x1D487] = 0x0066, -- MATHEMATICAL BOLD ITALIC SMALL F
 [0x1D488] = 0x0067, -- MATHEMATICAL BOLD ITALIC SMALL G
 [0x1D489] = 0x0068, -- MATHEMATICAL BOLD ITALIC SMALL H
 [0x1D48A] = 0x0069, -- MATHEMATICAL BOLD ITALIC SMALL I
 [0x1D48B] = 0x006A, -- MATHEMATICAL BOLD ITALIC SMALL J
 [0x1D48C] = 0x006B, -- MATHEMATICAL BOLD ITALIC SMALL K
 [0x1D48D] = 0x006C, -- MATHEMATICAL BOLD ITALIC SMALL L
 [0x1D48E] = 0x006D, -- MATHEMATICAL BOLD ITALIC SMALL M
 [0x1D48F] = 0x006E, -- MATHEMATICAL BOLD ITALIC SMALL N
 [0x1D490] = 0x006F, -- MATHEMATICAL BOLD ITALIC SMALL O
 [0x1D491] = 0x0070, -- MATHEMATICAL BOLD ITALIC SMALL P
 [0x1D492] = 0x0071, -- MATHEMATICAL BOLD ITALIC SMALL Q
 [0x1D493] = 0x0072, -- MATHEMATICAL BOLD ITALIC SMALL R
 [0x1D494] = 0x0073, -- MATHEMATICAL BOLD ITALIC SMALL S
 [0x1D495] = 0x0074, -- MATHEMATICAL BOLD ITALIC SMALL T
 [0x1D496] = 0x0075, -- MATHEMATICAL BOLD ITALIC SMALL U
 [0x1D497] = 0x0076, -- MATHEMATICAL BOLD ITALIC SMALL V
 [0x1D498] = 0x0077, -- MATHEMATICAL BOLD ITALIC SMALL W
 [0x1D499] = 0x0078, -- MATHEMATICAL BOLD ITALIC SMALL X
 [0x1D49A] = 0x0079, -- MATHEMATICAL BOLD ITALIC SMALL Y
 [0x1D49B] = 0x007A, -- MATHEMATICAL BOLD ITALIC SMALL Z
 [0x1D49C] = 0x0061, -- MATHEMATICAL SCRIPT CAPITAL A
 [0x1D49D] = {status="disallowed"}, -- NA   <reserved-1D49D>
 [0x1D49E] = 0x0063, -- MATHEMATICAL SCRIPT CAPITAL C
 [0x1D49F] = 0x0064, -- MATHEMATICAL SCRIPT CAPITAL D
 [0x1D4A2] = 0x0067, -- MATHEMATICAL SCRIPT CAPITAL G
 -- NA   <reserved-1D4A0>..<reserved-1D4A1>
 [0x1D4A0] = {status="disallowed"},
 [0x1D4A1] = {status="disallowed"},
 [0x1D4A5] = 0x006A, -- MATHEMATICAL SCRIPT CAPITAL J
 [0x1D4A6] = 0x006B, -- MATHEMATICAL SCRIPT CAPITAL K
 -- NA   <reserved-1D4A3>..<reserved-1D4A4>
 [0x1D4A3] = {status="disallowed"},
 [0x1D4A4] = {status="disallowed"},
 [0x1D4A9] = 0x006E, -- MATHEMATICAL SCRIPT CAPITAL N
 [0x1D4AA] = 0x006F, -- MATHEMATICAL SCRIPT CAPITAL O
 [0x1D4AB] = 0x0070, -- MATHEMATICAL SCRIPT CAPITAL P
 [0x1D4AC] = 0x0071, -- MATHEMATICAL SCRIPT CAPITAL Q
 [0x1D4AD] = {status="disallowed"}, -- NA   <reserved-1D4AD>
 [0x1D4AE] = 0x0073, -- MATHEMATICAL SCRIPT CAPITAL S
 [0x1D4AF] = 0x0074, -- MATHEMATICAL SCRIPT CAPITAL T
 [0x1D4B0] = 0x0075, -- MATHEMATICAL SCRIPT CAPITAL U
 [0x1D4B1] = 0x0076, -- MATHEMATICAL SCRIPT CAPITAL V
 [0x1D4B2] = 0x0077, -- MATHEMATICAL SCRIPT CAPITAL W
 [0x1D4B3] = 0x0078, -- MATHEMATICAL SCRIPT CAPITAL X
 [0x1D4B4] = 0x0079, -- MATHEMATICAL SCRIPT CAPITAL Y
 [0x1D4B5] = 0x007A, -- MATHEMATICAL SCRIPT CAPITAL Z
 [0x1D4B6] = 0x0061, -- MATHEMATICAL SCRIPT SMALL A
 [0x1D4B7] = 0x0062, -- MATHEMATICAL SCRIPT SMALL B
 [0x1D4B8] = 0x0063, -- MATHEMATICAL SCRIPT SMALL C
 [0x1D4B9] = 0x0064, -- MATHEMATICAL SCRIPT SMALL D
 [0x1D4BA] = {status="disallowed"}, -- NA   <reserved-1D4BA>
 [0x1D4BB] = 0x0066, -- MATHEMATICAL SCRIPT SMALL F
 [0x1D4BC] = {status="disallowed"}, -- NA   <reserved-1D4BC>
 [0x1D4BD] = 0x0068, -- MATHEMATICAL SCRIPT SMALL H
 [0x1D4BE] = 0x0069, -- MATHEMATICAL SCRIPT SMALL I
 [0x1D4BF] = 0x006A, -- MATHEMATICAL SCRIPT SMALL J
 [0x1D4C0] = 0x006B, -- MATHEMATICAL SCRIPT SMALL K
 [0x1D4C1] = 0x006C, -- MATHEMATICAL SCRIPT SMALL L
 [0x1D4C2] = 0x006D, -- MATHEMATICAL SCRIPT SMALL M
 [0x1D4C3] = 0x006E, -- MATHEMATICAL SCRIPT SMALL N
 [0x1D4C4] = {status="disallowed"}, -- NA   <reserved-1D4C4>
 [0x1D4C5] = 0x0070, -- MATHEMATICAL SCRIPT SMALL P
 [0x1D4C6] = 0x0071, -- MATHEMATICAL SCRIPT SMALL Q
 [0x1D4C7] = 0x0072, -- MATHEMATICAL SCRIPT SMALL R
 [0x1D4C8] = 0x0073, -- MATHEMATICAL SCRIPT SMALL S
 [0x1D4C9] = 0x0074, -- MATHEMATICAL SCRIPT SMALL T
 [0x1D4CA] = 0x0075, -- MATHEMATICAL SCRIPT SMALL U
 [0x1D4CB] = 0x0076, -- MATHEMATICAL SCRIPT SMALL V
 [0x1D4CC] = 0x0077, -- MATHEMATICAL SCRIPT SMALL W
 [0x1D4CD] = 0x0078, -- MATHEMATICAL SCRIPT SMALL X
 [0x1D4CE] = 0x0079, -- MATHEMATICAL SCRIPT SMALL Y
 [0x1D4CF] = 0x007A, -- MATHEMATICAL SCRIPT SMALL Z
 [0x1D4D0] = 0x0061, -- MATHEMATICAL BOLD SCRIPT CAPITAL A
 [0x1D4D1] = 0x0062, -- MATHEMATICAL BOLD SCRIPT CAPITAL B
 [0x1D4D2] = 0x0063, -- MATHEMATICAL BOLD SCRIPT CAPITAL C
 [0x1D4D3] = 0x0064, -- MATHEMATICAL BOLD SCRIPT CAPITAL D
 [0x1D4D4] = 0x0065, -- MATHEMATICAL BOLD SCRIPT CAPITAL E
 [0x1D4D5] = 0x0066, -- MATHEMATICAL BOLD SCRIPT CAPITAL F
 [0x1D4D6] = 0x0067, -- MATHEMATICAL BOLD SCRIPT CAPITAL G
 [0x1D4D7] = 0x0068, -- MATHEMATICAL BOLD SCRIPT CAPITAL H
 [0x1D4D8] = 0x0069, -- MATHEMATICAL BOLD SCRIPT CAPITAL I
 [0x1D4D9] = 0x006A, -- MATHEMATICAL BOLD SCRIPT CAPITAL J
 [0x1D4DA] = 0x006B, -- MATHEMATICAL BOLD SCRIPT CAPITAL K
 [0x1D4DB] = 0x006C, -- MATHEMATICAL BOLD SCRIPT CAPITAL L
 [0x1D4DC] = 0x006D, -- MATHEMATICAL BOLD SCRIPT CAPITAL M
 [0x1D4DD] = 0x006E, -- MATHEMATICAL BOLD SCRIPT CAPITAL N
 [0x1D4DE] = 0x006F, -- MATHEMATICAL BOLD SCRIPT CAPITAL O
 [0x1D4DF] = 0x0070, -- MATHEMATICAL BOLD SCRIPT CAPITAL P
 [0x1D4E0] = 0x0071, -- MATHEMATICAL BOLD SCRIPT CAPITAL Q
 [0x1D4E1] = 0x0072, -- MATHEMATICAL BOLD SCRIPT CAPITAL R
 [0x1D4E2] = 0x0073, -- MATHEMATICAL BOLD SCRIPT CAPITAL S
 [0x1D4E3] = 0x0074, -- MATHEMATICAL BOLD SCRIPT CAPITAL T
 [0x1D4E4] = 0x0075, -- MATHEMATICAL BOLD SCRIPT CAPITAL U
 [0x1D4E5] = 0x0076, -- MATHEMATICAL BOLD SCRIPT CAPITAL V
 [0x1D4E6] = 0x0077, -- MATHEMATICAL BOLD SCRIPT CAPITAL W
 [0x1D4E7] = 0x0078, -- MATHEMATICAL BOLD SCRIPT CAPITAL X
 [0x1D4E8] = 0x0079, -- MATHEMATICAL BOLD SCRIPT CAPITAL Y
 [0x1D4E9] = 0x007A, -- MATHEMATICAL BOLD SCRIPT CAPITAL Z
 [0x1D4EA] = 0x0061, -- MATHEMATICAL BOLD SCRIPT SMALL A
 [0x1D4EB] = 0x0062, -- MATHEMATICAL BOLD SCRIPT SMALL B
 [0x1D4EC] = 0x0063, -- MATHEMATICAL BOLD SCRIPT SMALL C
 [0x1D4ED] = 0x0064, -- MATHEMATICAL BOLD SCRIPT SMALL D
 [0x1D4EE] = 0x0065, -- MATHEMATICAL BOLD SCRIPT SMALL E
 [0x1D4EF] = 0x0066, -- MATHEMATICAL BOLD SCRIPT SMALL F
 [0x1D4F0] = 0x0067, -- MATHEMATICAL BOLD SCRIPT SMALL G
 [0x1D4F1] = 0x0068, -- MATHEMATICAL BOLD SCRIPT SMALL H
 [0x1D4F2] = 0x0069, -- MATHEMATICAL BOLD SCRIPT SMALL I
 [0x1D4F3] = 0x006A, -- MATHEMATICAL BOLD SCRIPT SMALL J
 [0x1D4F4] = 0x006B, -- MATHEMATICAL BOLD SCRIPT SMALL K
 [0x1D4F5] = 0x006C, -- MATHEMATICAL BOLD SCRIPT SMALL L
 [0x1D4F6] = 0x006D, -- MATHEMATICAL BOLD SCRIPT SMALL M
 [0x1D4F7] = 0x006E, -- MATHEMATICAL BOLD SCRIPT SMALL N
 [0x1D4F8] = 0x006F, -- MATHEMATICAL BOLD SCRIPT SMALL O
 [0x1D4F9] = 0x0070, -- MATHEMATICAL BOLD SCRIPT SMALL P
 [0x1D4FA] = 0x0071, -- MATHEMATICAL BOLD SCRIPT SMALL Q
 [0x1D4FB] = 0x0072, -- MATHEMATICAL BOLD SCRIPT SMALL R
 [0x1D4FC] = 0x0073, -- MATHEMATICAL BOLD SCRIPT SMALL S
 [0x1D4FD] = 0x0074, -- MATHEMATICAL BOLD SCRIPT SMALL T
 [0x1D4FE] = 0x0075, -- MATHEMATICAL BOLD SCRIPT SMALL U
 [0x1D4FF] = 0x0076, -- MATHEMATICAL BOLD SCRIPT SMALL V
 [0x1D500] = 0x0077, -- MATHEMATICAL BOLD SCRIPT SMALL W
 [0x1D501] = 0x0078, -- MATHEMATICAL BOLD SCRIPT SMALL X
 [0x1D502] = 0x0079, -- MATHEMATICAL BOLD SCRIPT SMALL Y
 [0x1D503] = 0x007A, -- MATHEMATICAL BOLD SCRIPT SMALL Z
 [0x1D504] = 0x0061, -- MATHEMATICAL FRAKTUR CAPITAL A
 [0x1D505] = 0x0062, -- MATHEMATICAL FRAKTUR CAPITAL B
 [0x1D506] = {status="disallowed"}, -- NA   <reserved-1D506>
 [0x1D507] = 0x0064, -- MATHEMATICAL FRAKTUR CAPITAL D
 [0x1D508] = 0x0065, -- MATHEMATICAL FRAKTUR CAPITAL E
 [0x1D509] = 0x0066, -- MATHEMATICAL FRAKTUR CAPITAL F
 [0x1D50A] = 0x0067, -- MATHEMATICAL FRAKTUR CAPITAL G
 -- NA   <reserved-1D4A7>..<reserved-1D4A8>
 [0x1D4A7] = {status="disallowed"},
 [0x1D4A8] = {status="disallowed"},
 [0x1D50D] = 0x006A, -- MATHEMATICAL FRAKTUR CAPITAL J
 [0x1D50E] = 0x006B, -- MATHEMATICAL FRAKTUR CAPITAL K
 [0x1D50F] = 0x006C, -- MATHEMATICAL FRAKTUR CAPITAL L
 [0x1D510] = 0x006D, -- MATHEMATICAL FRAKTUR CAPITAL M
 [0x1D511] = 0x006E, -- MATHEMATICAL FRAKTUR CAPITAL N
 [0x1D512] = 0x006F, -- MATHEMATICAL FRAKTUR CAPITAL O
 [0x1D513] = 0x0070, -- MATHEMATICAL FRAKTUR CAPITAL P
 [0x1D514] = 0x0071, -- MATHEMATICAL FRAKTUR CAPITAL Q
 [0x1D515] = {status="disallowed"}, -- NA   <reserved-1D515>
 [0x1D516] = 0x0073, -- MATHEMATICAL FRAKTUR CAPITAL S
 [0x1D517] = 0x0074, -- MATHEMATICAL FRAKTUR CAPITAL T
 [0x1D518] = 0x0075, -- MATHEMATICAL FRAKTUR CAPITAL U
 [0x1D519] = 0x0076, -- MATHEMATICAL FRAKTUR CAPITAL V
 [0x1D51A] = 0x0077, -- MATHEMATICAL FRAKTUR CAPITAL W
 [0x1D51B] = 0x0078, -- MATHEMATICAL FRAKTUR CAPITAL X
 [0x1D51C] = 0x0079, -- MATHEMATICAL FRAKTUR CAPITAL Y
 [0x1D51D] = {status="disallowed"}, -- NA   <reserved-1D51D>
 [0x1D51E] = 0x0061, -- MATHEMATICAL FRAKTUR SMALL A
 [0x1D51F] = 0x0062, -- MATHEMATICAL FRAKTUR SMALL B
 [0x1D520] = 0x0063, -- MATHEMATICAL FRAKTUR SMALL C
 [0x1D521] = 0x0064, -- MATHEMATICAL FRAKTUR SMALL D
 [0x1D522] = 0x0065, -- MATHEMATICAL FRAKTUR SMALL E
 [0x1D523] = 0x0066, -- MATHEMATICAL FRAKTUR SMALL F
 [0x1D524] = 0x0067, -- MATHEMATICAL FRAKTUR SMALL G
 [0x1D525] = 0x0068, -- MATHEMATICAL FRAKTUR SMALL H
 [0x1D526] = 0x0069, -- MATHEMATICAL FRAKTUR SMALL I
 [0x1D527] = 0x006A, -- MATHEMATICAL FRAKTUR SMALL J
 [0x1D528] = 0x006B, -- MATHEMATICAL FRAKTUR SMALL K
 [0x1D529] = 0x006C, -- MATHEMATICAL FRAKTUR SMALL L
 [0x1D52A] = 0x006D, -- MATHEMATICAL FRAKTUR SMALL M
 [0x1D52B] = 0x006E, -- MATHEMATICAL FRAKTUR SMALL N
 [0x1D52C] = 0x006F, -- MATHEMATICAL FRAKTUR SMALL O
 [0x1D52D] = 0x0070, -- MATHEMATICAL FRAKTUR SMALL P
 [0x1D52E] = 0x0071, -- MATHEMATICAL FRAKTUR SMALL Q
 [0x1D52F] = 0x0072, -- MATHEMATICAL FRAKTUR SMALL R
 [0x1D530] = 0x0073, -- MATHEMATICAL FRAKTUR SMALL S
 [0x1D531] = 0x0074, -- MATHEMATICAL FRAKTUR SMALL T
 [0x1D532] = 0x0075, -- MATHEMATICAL FRAKTUR SMALL U
 [0x1D533] = 0x0076, -- MATHEMATICAL FRAKTUR SMALL V
 [0x1D534] = 0x0077, -- MATHEMATICAL FRAKTUR SMALL W
 [0x1D535] = 0x0078, -- MATHEMATICAL FRAKTUR SMALL X
 [0x1D536] = 0x0079, -- MATHEMATICAL FRAKTUR SMALL Y
 [0x1D537] = 0x007A, -- MATHEMATICAL FRAKTUR SMALL Z
 [0x1D538] = 0x0061, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL A
 [0x1D539] = 0x0062, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL B
 [0x1D53A] = {status="disallowed"}, -- NA   <reserved-1D53A>
 [0x1D53B] = 0x0064, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL D
 [0x1D53C] = 0x0065, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL E
 [0x1D53D] = 0x0066, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL F
 [0x1D53E] = 0x0067, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL G
 [0x1D53F] = {status="disallowed"}, -- NA   <reserved-1D53F>
 [0x1D540] = 0x0069, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL I
 [0x1D541] = 0x006A, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL J
 [0x1D542] = 0x006B, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL K
 [0x1D543] = 0x006C, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL L
 [0x1D544] = 0x006D, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL M
 [0x1D545] = {status="disallowed"}, -- NA   <reserved-1D545>
 [0x1D546] = 0x006F, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL O
 -- NA   <reserved-1D50B>..<reserved-1D50C>
 [0x1D50B] = {status="disallowed"},
 [0x1D50C] = {status="disallowed"},
 [0x1D54A] = 0x0073, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL S
 [0x1D54B] = 0x0074, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL T
 [0x1D54C] = 0x0075, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL U
 [0x1D54D] = 0x0076, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL V
 [0x1D54E] = 0x0077, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL W
 [0x1D54F] = 0x0078, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL X
 [0x1D550] = 0x0079, -- MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
 [0x1D551] = {status="disallowed"}, -- NA   <reserved-1D551>
 [0x1D552] = 0x0061, -- MATHEMATICAL DOUBLE-STRUCK SMALL A
 [0x1D553] = 0x0062, -- MATHEMATICAL DOUBLE-STRUCK SMALL B
 [0x1D554] = 0x0063, -- MATHEMATICAL DOUBLE-STRUCK SMALL C
 [0x1D555] = 0x0064, -- MATHEMATICAL DOUBLE-STRUCK SMALL D
 [0x1D556] = 0x0065, -- MATHEMATICAL DOUBLE-STRUCK SMALL E
 [0x1D557] = 0x0066, -- MATHEMATICAL DOUBLE-STRUCK SMALL F
 [0x1D558] = 0x0067, -- MATHEMATICAL DOUBLE-STRUCK SMALL G
 [0x1D559] = 0x0068, -- MATHEMATICAL DOUBLE-STRUCK SMALL H
 [0x1D55A] = 0x0069, -- MATHEMATICAL DOUBLE-STRUCK SMALL I
 [0x1D55B] = 0x006A, -- MATHEMATICAL DOUBLE-STRUCK SMALL J
 [0x1D55C] = 0x006B, -- MATHEMATICAL DOUBLE-STRUCK SMALL K
 [0x1D55D] = 0x006C, -- MATHEMATICAL DOUBLE-STRUCK SMALL L
 [0x1D55E] = 0x006D, -- MATHEMATICAL DOUBLE-STRUCK SMALL M
 [0x1D55F] = 0x006E, -- MATHEMATICAL DOUBLE-STRUCK SMALL N
 [0x1D560] = 0x006F, -- MATHEMATICAL DOUBLE-STRUCK SMALL O
 [0x1D561] = 0x0070, -- MATHEMATICAL DOUBLE-STRUCK SMALL P
 [0x1D562] = 0x0071, -- MATHEMATICAL DOUBLE-STRUCK SMALL Q
 [0x1D563] = 0x0072, -- MATHEMATICAL DOUBLE-STRUCK SMALL R
 [0x1D564] = 0x0073, -- MATHEMATICAL DOUBLE-STRUCK SMALL S
 [0x1D565] = 0x0074, -- MATHEMATICAL DOUBLE-STRUCK SMALL T
 [0x1D566] = 0x0075, -- MATHEMATICAL DOUBLE-STRUCK SMALL U
 [0x1D567] = 0x0076, -- MATHEMATICAL DOUBLE-STRUCK SMALL V
 [0x1D568] = 0x0077, -- MATHEMATICAL DOUBLE-STRUCK SMALL W
 [0x1D569] = 0x0078, -- MATHEMATICAL DOUBLE-STRUCK SMALL X
 [0x1D56A] = 0x0079, -- MATHEMATICAL DOUBLE-STRUCK SMALL Y
 [0x1D56B] = 0x007A, -- MATHEMATICAL DOUBLE-STRUCK SMALL Z
 [0x1D56C] = 0x0061, -- MATHEMATICAL BOLD FRAKTUR CAPITAL A
 [0x1D56D] = 0x0062, -- MATHEMATICAL BOLD FRAKTUR CAPITAL B
 [0x1D56E] = 0x0063, -- MATHEMATICAL BOLD FRAKTUR CAPITAL C
 [0x1D56F] = 0x0064, -- MATHEMATICAL BOLD FRAKTUR CAPITAL D
 [0x1D570] = 0x0065, -- MATHEMATICAL BOLD FRAKTUR CAPITAL E
 [0x1D571] = 0x0066, -- MATHEMATICAL BOLD FRAKTUR CAPITAL F
 [0x1D572] = 0x0067, -- MATHEMATICAL BOLD FRAKTUR CAPITAL G
 [0x1D573] = 0x0068, -- MATHEMATICAL BOLD FRAKTUR CAPITAL H
 [0x1D574] = 0x0069, -- MATHEMATICAL BOLD FRAKTUR CAPITAL I
 [0x1D575] = 0x006A, -- MATHEMATICAL BOLD FRAKTUR CAPITAL J
 [0x1D576] = 0x006B, -- MATHEMATICAL BOLD FRAKTUR CAPITAL K
 [0x1D577] = 0x006C, -- MATHEMATICAL BOLD FRAKTUR CAPITAL L
 [0x1D578] = 0x006D, -- MATHEMATICAL BOLD FRAKTUR CAPITAL M
 [0x1D579] = 0x006E, -- MATHEMATICAL BOLD FRAKTUR CAPITAL N
 [0x1D57A] = 0x006F, -- MATHEMATICAL BOLD FRAKTUR CAPITAL O
 [0x1D57B] = 0x0070, -- MATHEMATICAL BOLD FRAKTUR CAPITAL P
 [0x1D57C] = 0x0071, -- MATHEMATICAL BOLD FRAKTUR CAPITAL Q
 [0x1D57D] = 0x0072, -- MATHEMATICAL BOLD FRAKTUR CAPITAL R
 [0x1D57E] = 0x0073, -- MATHEMATICAL BOLD FRAKTUR CAPITAL S
 [0x1D57F] = 0x0074, -- MATHEMATICAL BOLD FRAKTUR CAPITAL T
 [0x1D580] = 0x0075, -- MATHEMATICAL BOLD FRAKTUR CAPITAL U
 [0x1D581] = 0x0076, -- MATHEMATICAL BOLD FRAKTUR CAPITAL V
 [0x1D582] = 0x0077, -- MATHEMATICAL BOLD FRAKTUR CAPITAL W
 [0x1D583] = 0x0078, -- MATHEMATICAL BOLD FRAKTUR CAPITAL X
 [0x1D584] = 0x0079, -- MATHEMATICAL BOLD FRAKTUR CAPITAL Y
 [0x1D585] = 0x007A, -- MATHEMATICAL BOLD FRAKTUR CAPITAL Z
 [0x1D586] = 0x0061, -- MATHEMATICAL BOLD FRAKTUR SMALL A
 [0x1D587] = 0x0062, -- MATHEMATICAL BOLD FRAKTUR SMALL B
 [0x1D588] = 0x0063, -- MATHEMATICAL BOLD FRAKTUR SMALL C
 [0x1D589] = 0x0064, -- MATHEMATICAL BOLD FRAKTUR SMALL D
 [0x1D58A] = 0x0065, -- MATHEMATICAL BOLD FRAKTUR SMALL E
 [0x1D58B] = 0x0066, -- MATHEMATICAL BOLD FRAKTUR SMALL F
 [0x1D58C] = 0x0067, -- MATHEMATICAL BOLD FRAKTUR SMALL G
 [0x1D58D] = 0x0068, -- MATHEMATICAL BOLD FRAKTUR SMALL H
 [0x1D58E] = 0x0069, -- MATHEMATICAL BOLD FRAKTUR SMALL I
 [0x1D58F] = 0x006A, -- MATHEMATICAL BOLD FRAKTUR SMALL J
 [0x1D590] = 0x006B, -- MATHEMATICAL BOLD FRAKTUR SMALL K
 [0x1D591] = 0x006C, -- MATHEMATICAL BOLD FRAKTUR SMALL L
 [0x1D592] = 0x006D, -- MATHEMATICAL BOLD FRAKTUR SMALL M
 [0x1D593] = 0x006E, -- MATHEMATICAL BOLD FRAKTUR SMALL N
 [0x1D594] = 0x006F, -- MATHEMATICAL BOLD FRAKTUR SMALL O
 [0x1D595] = 0x0070, -- MATHEMATICAL BOLD FRAKTUR SMALL P
 [0x1D596] = 0x0071, -- MATHEMATICAL BOLD FRAKTUR SMALL Q
 [0x1D597] = 0x0072, -- MATHEMATICAL BOLD FRAKTUR SMALL R
 [0x1D598] = 0x0073, -- MATHEMATICAL BOLD FRAKTUR SMALL S
 [0x1D599] = 0x0074, -- MATHEMATICAL BOLD FRAKTUR SMALL T
 [0x1D59A] = 0x0075, -- MATHEMATICAL BOLD FRAKTUR SMALL U
 [0x1D59B] = 0x0076, -- MATHEMATICAL BOLD FRAKTUR SMALL V
 [0x1D59C] = 0x0077, -- MATHEMATICAL BOLD FRAKTUR SMALL W
 [0x1D59D] = 0x0078, -- MATHEMATICAL BOLD FRAKTUR SMALL X
 [0x1D59E] = 0x0079, -- MATHEMATICAL BOLD FRAKTUR SMALL Y
 [0x1D59F] = 0x007A, -- MATHEMATICAL BOLD FRAKTUR SMALL Z
 [0x1D5A0] = 0x0061, -- MATHEMATICAL SANS-SERIF CAPITAL A
 [0x1D5A1] = 0x0062, -- MATHEMATICAL SANS-SERIF CAPITAL B
 [0x1D5A2] = 0x0063, -- MATHEMATICAL SANS-SERIF CAPITAL C
 [0x1D5A3] = 0x0064, -- MATHEMATICAL SANS-SERIF CAPITAL D
 [0x1D5A4] = 0x0065, -- MATHEMATICAL SANS-SERIF CAPITAL E
 [0x1D5A5] = 0x0066, -- MATHEMATICAL SANS-SERIF CAPITAL F
 [0x1D5A6] = 0x0067, -- MATHEMATICAL SANS-SERIF CAPITAL G
 [0x1D5A7] = 0x0068, -- MATHEMATICAL SANS-SERIF CAPITAL H
 [0x1D5A8] = 0x0069, -- MATHEMATICAL SANS-SERIF CAPITAL I
 [0x1D5A9] = 0x006A, -- MATHEMATICAL SANS-SERIF CAPITAL J
 [0x1D5AA] = 0x006B, -- MATHEMATICAL SANS-SERIF CAPITAL K
 [0x1D5AB] = 0x006C, -- MATHEMATICAL SANS-SERIF CAPITAL L
 [0x1D5AC] = 0x006D, -- MATHEMATICAL SANS-SERIF CAPITAL M
 [0x1D5AD] = 0x006E, -- MATHEMATICAL SANS-SERIF CAPITAL N
 [0x1D5AE] = 0x006F, -- MATHEMATICAL SANS-SERIF CAPITAL O
 [0x1D5AF] = 0x0070, -- MATHEMATICAL SANS-SERIF CAPITAL P
 [0x1D5B0] = 0x0071, -- MATHEMATICAL SANS-SERIF CAPITAL Q
 [0x1D5B1] = 0x0072, -- MATHEMATICAL SANS-SERIF CAPITAL R
 [0x1D5B2] = 0x0073, -- MATHEMATICAL SANS-SERIF CAPITAL S
 [0x1D5B3] = 0x0074, -- MATHEMATICAL SANS-SERIF CAPITAL T
 [0x1D5B4] = 0x0075, -- MATHEMATICAL SANS-SERIF CAPITAL U
 [0x1D5B5] = 0x0076, -- MATHEMATICAL SANS-SERIF CAPITAL V
 [0x1D5B6] = 0x0077, -- MATHEMATICAL SANS-SERIF CAPITAL W
 [0x1D5B7] = 0x0078, -- MATHEMATICAL SANS-SERIF CAPITAL X
 [0x1D5B8] = 0x0079, -- MATHEMATICAL SANS-SERIF CAPITAL Y
 [0x1D5B9] = 0x007A, -- MATHEMATICAL SANS-SERIF CAPITAL Z
 [0x1D5BA] = 0x0061, -- MATHEMATICAL SANS-SERIF SMALL A
 [0x1D5BB] = 0x0062, -- MATHEMATICAL SANS-SERIF SMALL B
 [0x1D5BC] = 0x0063, -- MATHEMATICAL SANS-SERIF SMALL C
 [0x1D5BD] = 0x0064, -- MATHEMATICAL SANS-SERIF SMALL D
 [0x1D5BE] = 0x0065, -- MATHEMATICAL SANS-SERIF SMALL E
 [0x1D5BF] = 0x0066, -- MATHEMATICAL SANS-SERIF SMALL F
 [0x1D5C0] = 0x0067, -- MATHEMATICAL SANS-SERIF SMALL G
 [0x1D5C1] = 0x0068, -- MATHEMATICAL SANS-SERIF SMALL H
 [0x1D5C2] = 0x0069, -- MATHEMATICAL SANS-SERIF SMALL I
 [0x1D5C3] = 0x006A, -- MATHEMATICAL SANS-SERIF SMALL J
 [0x1D5C4] = 0x006B, -- MATHEMATICAL SANS-SERIF SMALL K
 [0x1D5C5] = 0x006C, -- MATHEMATICAL SANS-SERIF SMALL L
 [0x1D5C6] = 0x006D, -- MATHEMATICAL SANS-SERIF SMALL M
 [0x1D5C7] = 0x006E, -- MATHEMATICAL SANS-SERIF SMALL N
 [0x1D5C8] = 0x006F, -- MATHEMATICAL SANS-SERIF SMALL O
 [0x1D5C9] = 0x0070, -- MATHEMATICAL SANS-SERIF SMALL P
 [0x1D5CA] = 0x0071, -- MATHEMATICAL SANS-SERIF SMALL Q
 [0x1D5CB] = 0x0072, -- MATHEMATICAL SANS-SERIF SMALL R
 [0x1D5CC] = 0x0073, -- MATHEMATICAL SANS-SERIF SMALL S
 [0x1D5CD] = 0x0074, -- MATHEMATICAL SANS-SERIF SMALL T
 [0x1D5CE] = 0x0075, -- MATHEMATICAL SANS-SERIF SMALL U
 [0x1D5CF] = 0x0076, -- MATHEMATICAL SANS-SERIF SMALL V
 [0x1D5D0] = 0x0077, -- MATHEMATICAL SANS-SERIF SMALL W
 [0x1D5D1] = 0x0078, -- MATHEMATICAL SANS-SERIF SMALL X
 [0x1D5D2] = 0x0079, -- MATHEMATICAL SANS-SERIF SMALL Y
 [0x1D5D3] = 0x007A, -- MATHEMATICAL SANS-SERIF SMALL Z
 [0x1D5D4] = 0x0061, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL A
 [0x1D5D5] = 0x0062, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL B
 [0x1D5D6] = 0x0063, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL C
 [0x1D5D7] = 0x0064, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL D
 [0x1D5D8] = 0x0065, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL E
 [0x1D5D9] = 0x0066, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL F
 [0x1D5DA] = 0x0067, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL G
 [0x1D5DB] = 0x0068, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL H
 [0x1D5DC] = 0x0069, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL I
 [0x1D5DD] = 0x006A, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL J
 [0x1D5DE] = 0x006B, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL K
 [0x1D5DF] = 0x006C, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL L
 [0x1D5E0] = 0x006D, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL M
 [0x1D5E1] = 0x006E, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL N
 [0x1D5E2] = 0x006F, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL O
 [0x1D5E3] = 0x0070, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL P
 [0x1D5E4] = 0x0071, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
 [0x1D5E5] = 0x0072, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL R
 [0x1D5E6] = 0x0073, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL S
 [0x1D5E7] = 0x0074, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL T
 [0x1D5E8] = 0x0075, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL U
 [0x1D5E9] = 0x0076, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL V
 [0x1D5EA] = 0x0077, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL W
 [0x1D5EB] = 0x0078, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL X
 [0x1D5EC] = 0x0079, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
 [0x1D5ED] = 0x007A, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
 [0x1D5EE] = 0x0061, -- MATHEMATICAL SANS-SERIF BOLD SMALL A
 [0x1D5EF] = 0x0062, -- MATHEMATICAL SANS-SERIF BOLD SMALL B
 [0x1D5F0] = 0x0063, -- MATHEMATICAL SANS-SERIF BOLD SMALL C
 [0x1D5F1] = 0x0064, -- MATHEMATICAL SANS-SERIF BOLD SMALL D
 [0x1D5F2] = 0x0065, -- MATHEMATICAL SANS-SERIF BOLD SMALL E
 [0x1D5F3] = 0x0066, -- MATHEMATICAL SANS-SERIF BOLD SMALL F
 [0x1D5F4] = 0x0067, -- MATHEMATICAL SANS-SERIF BOLD SMALL G
 [0x1D5F5] = 0x0068, -- MATHEMATICAL SANS-SERIF BOLD SMALL H
 [0x1D5F6] = 0x0069, -- MATHEMATICAL SANS-SERIF BOLD SMALL I
 [0x1D5F7] = 0x006A, -- MATHEMATICAL SANS-SERIF BOLD SMALL J
 [0x1D5F8] = 0x006B, -- MATHEMATICAL SANS-SERIF BOLD SMALL K
 [0x1D5F9] = 0x006C, -- MATHEMATICAL SANS-SERIF BOLD SMALL L
 [0x1D5FA] = 0x006D, -- MATHEMATICAL SANS-SERIF BOLD SMALL M
 [0x1D5FB] = 0x006E, -- MATHEMATICAL SANS-SERIF BOLD SMALL N
 [0x1D5FC] = 0x006F, -- MATHEMATICAL SANS-SERIF BOLD SMALL O
 [0x1D5FD] = 0x0070, -- MATHEMATICAL SANS-SERIF BOLD SMALL P
 [0x1D5FE] = 0x0071, -- MATHEMATICAL SANS-SERIF BOLD SMALL Q
 [0x1D5FF] = 0x0072, -- MATHEMATICAL SANS-SERIF BOLD SMALL R
 [0x1D600] = 0x0073, -- MATHEMATICAL SANS-SERIF BOLD SMALL S
 [0x1D601] = 0x0074, -- MATHEMATICAL SANS-SERIF BOLD SMALL T
 [0x1D602] = 0x0075, -- MATHEMATICAL SANS-SERIF BOLD SMALL U
 [0x1D603] = 0x0076, -- MATHEMATICAL SANS-SERIF BOLD SMALL V
 [0x1D604] = 0x0077, -- MATHEMATICAL SANS-SERIF BOLD SMALL W
 [0x1D605] = 0x0078, -- MATHEMATICAL SANS-SERIF BOLD SMALL X
 [0x1D606] = 0x0079, -- MATHEMATICAL SANS-SERIF BOLD SMALL Y
 [0x1D607] = 0x007A, -- MATHEMATICAL SANS-SERIF BOLD SMALL Z
 [0x1D608] = 0x0061, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
 [0x1D609] = 0x0062, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
 [0x1D60A] = 0x0063, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
 [0x1D60B] = 0x0064, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
 [0x1D60C] = 0x0065, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
 [0x1D60D] = 0x0066, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
 [0x1D60E] = 0x0067, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
 [0x1D60F] = 0x0068, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
 [0x1D610] = 0x0069, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
 [0x1D611] = 0x006A, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
 [0x1D612] = 0x006B, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
 [0x1D613] = 0x006C, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
 [0x1D614] = 0x006D, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
 [0x1D615] = 0x006E, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
 [0x1D616] = 0x006F, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
 [0x1D617] = 0x0070, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
 [0x1D618] = 0x0071, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
 [0x1D619] = 0x0072, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
 [0x1D61A] = 0x0073, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
 [0x1D61B] = 0x0074, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
 [0x1D61C] = 0x0075, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
 [0x1D61D] = 0x0076, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
 [0x1D61E] = 0x0077, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
 [0x1D61F] = 0x0078, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
 [0x1D620] = 0x0079, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
 [0x1D621] = 0x007A, -- MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
 [0x1D622] = 0x0061, -- MATHEMATICAL SANS-SERIF ITALIC SMALL A
 [0x1D623] = 0x0062, -- MATHEMATICAL SANS-SERIF ITALIC SMALL B
 [0x1D624] = 0x0063, -- MATHEMATICAL SANS-SERIF ITALIC SMALL C
 [0x1D625] = 0x0064, -- MATHEMATICAL SANS-SERIF ITALIC SMALL D
 [0x1D626] = 0x0065, -- MATHEMATICAL SANS-SERIF ITALIC SMALL E
 [0x1D627] = 0x0066, -- MATHEMATICAL SANS-SERIF ITALIC SMALL F
 [0x1D628] = 0x0067, -- MATHEMATICAL SANS-SERIF ITALIC SMALL G
 [0x1D629] = 0x0068, -- MATHEMATICAL SANS-SERIF ITALIC SMALL H
 [0x1D62A] = 0x0069, -- MATHEMATICAL SANS-SERIF ITALIC SMALL I
 [0x1D62B] = 0x006A, -- MATHEMATICAL SANS-SERIF ITALIC SMALL J
 [0x1D62C] = 0x006B, -- MATHEMATICAL SANS-SERIF ITALIC SMALL K
 [0x1D62D] = 0x006C, -- MATHEMATICAL SANS-SERIF ITALIC SMALL L
 [0x1D62E] = 0x006D, -- MATHEMATICAL SANS-SERIF ITALIC SMALL M
 [0x1D62F] = 0x006E, -- MATHEMATICAL SANS-SERIF ITALIC SMALL N
 [0x1D630] = 0x006F, -- MATHEMATICAL SANS-SERIF ITALIC SMALL O
 [0x1D631] = 0x0070, -- MATHEMATICAL SANS-SERIF ITALIC SMALL P
 [0x1D632] = 0x0071, -- MATHEMATICAL SANS-SERIF ITALIC SMALL Q
 [0x1D633] = 0x0072, -- MATHEMATICAL SANS-SERIF ITALIC SMALL R
 [0x1D634] = 0x0073, -- MATHEMATICAL SANS-SERIF ITALIC SMALL S
 [0x1D635] = 0x0074, -- MATHEMATICAL SANS-SERIF ITALIC SMALL T
 [0x1D636] = 0x0075, -- MATHEMATICAL SANS-SERIF ITALIC SMALL U
 [0x1D637] = 0x0076, -- MATHEMATICAL SANS-SERIF ITALIC SMALL V
 [0x1D638] = 0x0077, -- MATHEMATICAL SANS-SERIF ITALIC SMALL W
 [0x1D639] = 0x0078, -- MATHEMATICAL SANS-SERIF ITALIC SMALL X
 [0x1D63A] = 0x0079, -- MATHEMATICAL SANS-SERIF ITALIC SMALL Y
 [0x1D63B] = 0x007A, -- MATHEMATICAL SANS-SERIF ITALIC SMALL Z
 [0x1D63C] = 0x0061, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
 [0x1D63D] = 0x0062, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
 [0x1D63E] = 0x0063, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
 [0x1D63F] = 0x0064, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
 [0x1D640] = 0x0065, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
 [0x1D641] = 0x0066, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
 [0x1D642] = 0x0067, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
 [0x1D643] = 0x0068, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
 [0x1D644] = 0x0069, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
 [0x1D645] = 0x006A, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
 [0x1D646] = 0x006B, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
 [0x1D647] = 0x006C, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
 [0x1D648] = 0x006D, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
 [0x1D649] = 0x006E, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
 [0x1D64A] = 0x006F, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
 [0x1D64B] = 0x0070, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
 [0x1D64C] = 0x0071, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
 [0x1D64D] = 0x0072, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
 [0x1D64E] = 0x0073, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
 [0x1D64F] = 0x0074, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
 [0x1D650] = 0x0075, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
 [0x1D651] = 0x0076, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
 [0x1D652] = 0x0077, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
 [0x1D653] = 0x0078, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
 [0x1D654] = 0x0079, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
 [0x1D655] = 0x007A, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
 [0x1D656] = 0x0061, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
 [0x1D657] = 0x0062, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
 [0x1D658] = 0x0063, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
 [0x1D659] = 0x0064, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
 [0x1D65A] = 0x0065, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
 [0x1D65B] = 0x0066, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
 [0x1D65C] = 0x0067, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
 [0x1D65D] = 0x0068, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
 [0x1D65E] = 0x0069, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
 [0x1D65F] = 0x006A, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
 [0x1D660] = 0x006B, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
 [0x1D661] = 0x006C, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
 [0x1D662] = 0x006D, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
 [0x1D663] = 0x006E, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
 [0x1D664] = 0x006F, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
 [0x1D665] = 0x0070, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
 [0x1D666] = 0x0071, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
 [0x1D667] = 0x0072, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
 [0x1D668] = 0x0073, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
 [0x1D669] = 0x0074, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
 [0x1D66A] = 0x0075, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
 [0x1D66B] = 0x0076, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
 [0x1D66C] = 0x0077, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
 [0x1D66D] = 0x0078, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
 [0x1D66E] = 0x0079, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
 [0x1D66F] = 0x007A, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
 [0x1D670] = 0x0061, -- MATHEMATICAL MONOSPACE CAPITAL A
 [0x1D671] = 0x0062, -- MATHEMATICAL MONOSPACE CAPITAL B
 [0x1D672] = 0x0063, -- MATHEMATICAL MONOSPACE CAPITAL C
 [0x1D673] = 0x0064, -- MATHEMATICAL MONOSPACE CAPITAL D
 [0x1D674] = 0x0065, -- MATHEMATICAL MONOSPACE CAPITAL E
 [0x1D675] = 0x0066, -- MATHEMATICAL MONOSPACE CAPITAL F
 [0x1D676] = 0x0067, -- MATHEMATICAL MONOSPACE CAPITAL G
 [0x1D677] = 0x0068, -- MATHEMATICAL MONOSPACE CAPITAL H
 [0x1D678] = 0x0069, -- MATHEMATICAL MONOSPACE CAPITAL I
 [0x1D679] = 0x006A, -- MATHEMATICAL MONOSPACE CAPITAL J
 [0x1D67A] = 0x006B, -- MATHEMATICAL MONOSPACE CAPITAL K
 [0x1D67B] = 0x006C, -- MATHEMATICAL MONOSPACE CAPITAL L
 [0x1D67C] = 0x006D, -- MATHEMATICAL MONOSPACE CAPITAL M
 [0x1D67D] = 0x006E, -- MATHEMATICAL MONOSPACE CAPITAL N
 [0x1D67E] = 0x006F, -- MATHEMATICAL MONOSPACE CAPITAL O
 [0x1D67F] = 0x0070, -- MATHEMATICAL MONOSPACE CAPITAL P
 [0x1D680] = 0x0071, -- MATHEMATICAL MONOSPACE CAPITAL Q
 [0x1D681] = 0x0072, -- MATHEMATICAL MONOSPACE CAPITAL R
 [0x1D682] = 0x0073, -- MATHEMATICAL MONOSPACE CAPITAL S
 [0x1D683] = 0x0074, -- MATHEMATICAL MONOSPACE CAPITAL T
 [0x1D684] = 0x0075, -- MATHEMATICAL MONOSPACE CAPITAL U
 [0x1D685] = 0x0076, -- MATHEMATICAL MONOSPACE CAPITAL V
 [0x1D686] = 0x0077, -- MATHEMATICAL MONOSPACE CAPITAL W
 [0x1D687] = 0x0078, -- MATHEMATICAL MONOSPACE CAPITAL X
 [0x1D688] = 0x0079, -- MATHEMATICAL MONOSPACE CAPITAL Y
 [0x1D689] = 0x007A, -- MATHEMATICAL MONOSPACE CAPITAL Z
 [0x1D68A] = 0x0061, -- MATHEMATICAL MONOSPACE SMALL A
 [0x1D68B] = 0x0062, -- MATHEMATICAL MONOSPACE SMALL B
 [0x1D68C] = 0x0063, -- MATHEMATICAL MONOSPACE SMALL C
 [0x1D68D] = 0x0064, -- MATHEMATICAL MONOSPACE SMALL D
 [0x1D68E] = 0x0065, -- MATHEMATICAL MONOSPACE SMALL E
 [0x1D68F] = 0x0066, -- MATHEMATICAL MONOSPACE SMALL F
 [0x1D690] = 0x0067, -- MATHEMATICAL MONOSPACE SMALL G
 [0x1D691] = 0x0068, -- MATHEMATICAL MONOSPACE SMALL H
 [0x1D692] = 0x0069, -- MATHEMATICAL MONOSPACE SMALL I
 [0x1D693] = 0x006A, -- MATHEMATICAL MONOSPACE SMALL J
 [0x1D694] = 0x006B, -- MATHEMATICAL MONOSPACE SMALL K
 [0x1D695] = 0x006C, -- MATHEMATICAL MONOSPACE SMALL L
 [0x1D696] = 0x006D, -- MATHEMATICAL MONOSPACE SMALL M
 [0x1D697] = 0x006E, -- MATHEMATICAL MONOSPACE SMALL N
 [0x1D698] = 0x006F, -- MATHEMATICAL MONOSPACE SMALL O
 [0x1D699] = 0x0070, -- MATHEMATICAL MONOSPACE SMALL P
 [0x1D69A] = 0x0071, -- MATHEMATICAL MONOSPACE SMALL Q
 [0x1D69B] = 0x0072, -- MATHEMATICAL MONOSPACE SMALL R
 [0x1D69C] = 0x0073, -- MATHEMATICAL MONOSPACE SMALL S
 [0x1D69D] = 0x0074, -- MATHEMATICAL MONOSPACE SMALL T
 [0x1D69E] = 0x0075, -- MATHEMATICAL MONOSPACE SMALL U
 [0x1D69F] = 0x0076, -- MATHEMATICAL MONOSPACE SMALL V
 [0x1D6A0] = 0x0077, -- MATHEMATICAL MONOSPACE SMALL W
 [0x1D6A1] = 0x0078, -- MATHEMATICAL MONOSPACE SMALL X
 [0x1D6A2] = 0x0079, -- MATHEMATICAL MONOSPACE SMALL Y
 [0x1D6A3] = 0x007A, -- MATHEMATICAL MONOSPACE SMALL Z
 [0x1D6A4] = 0x0131, -- MATHEMATICAL ITALIC SMALL DOTLESS I
 [0x1D6A5] = 0x0237, -- MATHEMATICAL ITALIC SMALL DOTLESS J
 -- NA   <reserved-1D547>..<reserved-1D549>
 [0x1D547] = {status="disallowed"},
 [0x1D548] = {status="disallowed"},
 [0x1D549] = {status="disallowed"},
 [0x1D6A8] = 0x03B1, -- MATHEMATICAL BOLD CAPITAL ALPHA
 [0x1D6A9] = 0x03B2, -- MATHEMATICAL BOLD CAPITAL BETA
 [0x1D6AA] = 0x03B3, -- MATHEMATICAL BOLD CAPITAL GAMMA
 [0x1D6AB] = 0x03B4, -- MATHEMATICAL BOLD CAPITAL DELTA
 [0x1D6AC] = 0x03B5, -- MATHEMATICAL BOLD CAPITAL EPSILON
 [0x1D6AD] = 0x03B6, -- MATHEMATICAL BOLD CAPITAL ZETA
 [0x1D6AE] = 0x03B7, -- MATHEMATICAL BOLD CAPITAL ETA
 [0x1D6AF] = 0x03B8, -- MATHEMATICAL BOLD CAPITAL THETA
 [0x1D6B0] = 0x03B9, -- MATHEMATICAL BOLD CAPITAL IOTA
 [0x1D6B1] = 0x03BA, -- MATHEMATICAL BOLD CAPITAL KAPPA
 [0x1D6B2] = 0x03BB, -- MATHEMATICAL BOLD CAPITAL LAMDA
 [0x1D6B3] = 0x03BC, -- MATHEMATICAL BOLD CAPITAL MU
 [0x1D6B4] = 0x03BD, -- MATHEMATICAL BOLD CAPITAL NU
 [0x1D6B5] = 0x03BE, -- MATHEMATICAL BOLD CAPITAL XI
 [0x1D6B6] = 0x03BF, -- MATHEMATICAL BOLD CAPITAL OMICRON
 [0x1D6B7] = 0x03C0, -- MATHEMATICAL BOLD CAPITAL PI
 [0x1D6B8] = 0x03C1, -- MATHEMATICAL BOLD CAPITAL RHO
 [0x1D6B9] = 0x03B8, -- MATHEMATICAL BOLD CAPITAL THETA SYMBOL
 [0x1D6BA] = 0x03C3, -- MATHEMATICAL BOLD CAPITAL SIGMA
 [0x1D6BB] = 0x03C4, -- MATHEMATICAL BOLD CAPITAL TAU
 [0x1D6BC] = 0x03C5, -- MATHEMATICAL BOLD CAPITAL UPSILON
 [0x1D6BD] = 0x03C6, -- MATHEMATICAL BOLD CAPITAL PHI
 [0x1D6BE] = 0x03C7, -- MATHEMATICAL BOLD CAPITAL CHI
 [0x1D6BF] = 0x03C8, -- MATHEMATICAL BOLD CAPITAL PSI
 [0x1D6C0] = 0x03C9, -- MATHEMATICAL BOLD CAPITAL OMEGA
 [0x1D6C1] = 0x2207, -- MATHEMATICAL BOLD NABLA
 [0x1D6C2] = 0x03B1, -- MATHEMATICAL BOLD SMALL ALPHA
 [0x1D6C3] = 0x03B2, -- MATHEMATICAL BOLD SMALL BETA
 [0x1D6C4] = 0x03B3, -- MATHEMATICAL BOLD SMALL GAMMA
 [0x1D6C5] = 0x03B4, -- MATHEMATICAL BOLD SMALL DELTA
 [0x1D6C6] = 0x03B5, -- MATHEMATICAL BOLD SMALL EPSILON
 [0x1D6C7] = 0x03B6, -- MATHEMATICAL BOLD SMALL ZETA
 [0x1D6C8] = 0x03B7, -- MATHEMATICAL BOLD SMALL ETA
 [0x1D6C9] = 0x03B8, -- MATHEMATICAL BOLD SMALL THETA
 [0x1D6CA] = 0x03B9, -- MATHEMATICAL BOLD SMALL IOTA
 [0x1D6CB] = 0x03BA, -- MATHEMATICAL BOLD SMALL KAPPA
 [0x1D6CC] = 0x03BB, -- MATHEMATICAL BOLD SMALL LAMDA
 [0x1D6CD] = 0x03BC, -- MATHEMATICAL BOLD SMALL MU
 [0x1D6CE] = 0x03BD, -- MATHEMATICAL BOLD SMALL NU
 [0x1D6CF] = 0x03BE, -- MATHEMATICAL BOLD SMALL XI
 [0x1D6D0] = 0x03BF, -- MATHEMATICAL BOLD SMALL OMICRON
 [0x1D6D1] = 0x03C0, -- MATHEMATICAL BOLD SMALL PI
 [0x1D6D2] = 0x03C1, -- MATHEMATICAL BOLD SMALL RHO
 -- NA   <reserved-1D6A6>..<reserved-1D6A7>
 [0x1D6A6] = {status="disallowed"},
 [0x1D6A7] = {status="disallowed"},
 [0x1D6D5] = 0x03C4, -- MATHEMATICAL BOLD SMALL TAU
 [0x1D6D6] = 0x03C5, -- MATHEMATICAL BOLD SMALL UPSILON
 [0x1D6D7] = 0x03C6, -- MATHEMATICAL BOLD SMALL PHI
 [0x1D6D8] = 0x03C7, -- MATHEMATICAL BOLD SMALL CHI
 [0x1D6D9] = 0x03C8, -- MATHEMATICAL BOLD SMALL PSI
 [0x1D6DA] = 0x03C9, -- MATHEMATICAL BOLD SMALL OMEGA
 [0x1D6DB] = 0x2202, -- MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
 [0x1D6DC] = 0x03B5, -- MATHEMATICAL BOLD EPSILON SYMBOL
 [0x1D6DD] = 0x03B8, -- MATHEMATICAL BOLD THETA SYMBOL
 [0x1D6DE] = 0x03BA, -- MATHEMATICAL BOLD KAPPA SYMBOL
 [0x1D6DF] = 0x03C6, -- MATHEMATICAL BOLD PHI SYMBOL
 [0x1D6E0] = 0x03C1, -- MATHEMATICAL BOLD RHO SYMBOL
 [0x1D6E1] = 0x03C0, -- MATHEMATICAL BOLD PI SYMBOL
 [0x1D6E2] = 0x03B1, -- MATHEMATICAL ITALIC CAPITAL ALPHA
 [0x1D6E3] = 0x03B2, -- MATHEMATICAL ITALIC CAPITAL BETA
 [0x1D6E4] = 0x03B3, -- MATHEMATICAL ITALIC CAPITAL GAMMA
 [0x1D6E5] = 0x03B4, -- MATHEMATICAL ITALIC CAPITAL DELTA
 [0x1D6E6] = 0x03B5, -- MATHEMATICAL ITALIC CAPITAL EPSILON
 [0x1D6E7] = 0x03B6, -- MATHEMATICAL ITALIC CAPITAL ZETA
 [0x1D6E8] = 0x03B7, -- MATHEMATICAL ITALIC CAPITAL ETA
 [0x1D6E9] = 0x03B8, -- MATHEMATICAL ITALIC CAPITAL THETA
 [0x1D6EA] = 0x03B9, -- MATHEMATICAL ITALIC CAPITAL IOTA
 [0x1D6EB] = 0x03BA, -- MATHEMATICAL ITALIC CAPITAL KAPPA
 [0x1D6EC] = 0x03BB, -- MATHEMATICAL ITALIC CAPITAL LAMDA
 [0x1D6ED] = 0x03BC, -- MATHEMATICAL ITALIC CAPITAL MU
 [0x1D6EE] = 0x03BD, -- MATHEMATICAL ITALIC CAPITAL NU
 [0x1D6EF] = 0x03BE, -- MATHEMATICAL ITALIC CAPITAL XI
 [0x1D6F0] = 0x03BF, -- MATHEMATICAL ITALIC CAPITAL OMICRON
 [0x1D6F1] = 0x03C0, -- MATHEMATICAL ITALIC CAPITAL PI
 [0x1D6F2] = 0x03C1, -- MATHEMATICAL ITALIC CAPITAL RHO
 [0x1D6F3] = 0x03B8, -- MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
 [0x1D6F4] = 0x03C3, -- MATHEMATICAL ITALIC CAPITAL SIGMA
 [0x1D6F5] = 0x03C4, -- MATHEMATICAL ITALIC CAPITAL TAU
 [0x1D6F6] = 0x03C5, -- MATHEMATICAL ITALIC CAPITAL UPSILON
 [0x1D6F7] = 0x03C6, -- MATHEMATICAL ITALIC CAPITAL PHI
 [0x1D6F8] = 0x03C7, -- MATHEMATICAL ITALIC CAPITAL CHI
 [0x1D6F9] = 0x03C8, -- MATHEMATICAL ITALIC CAPITAL PSI
 [0x1D6FA] = 0x03C9, -- MATHEMATICAL ITALIC CAPITAL OMEGA
 [0x1D6FB] = 0x2207, -- MATHEMATICAL ITALIC NABLA
 [0x1D6FC] = 0x03B1, -- MATHEMATICAL ITALIC SMALL ALPHA
 [0x1D6FD] = 0x03B2, -- MATHEMATICAL ITALIC SMALL BETA
 [0x1D6FE] = 0x03B3, -- MATHEMATICAL ITALIC SMALL GAMMA
 [0x1D6FF] = 0x03B4, -- MATHEMATICAL ITALIC SMALL DELTA
 [0x1D700] = 0x03B5, -- MATHEMATICAL ITALIC SMALL EPSILON
 [0x1D701] = 0x03B6, -- MATHEMATICAL ITALIC SMALL ZETA
 [0x1D702] = 0x03B7, -- MATHEMATICAL ITALIC SMALL ETA
 [0x1D703] = 0x03B8, -- MATHEMATICAL ITALIC SMALL THETA
 [0x1D704] = 0x03B9, -- MATHEMATICAL ITALIC SMALL IOTA
 [0x1D705] = 0x03BA, -- MATHEMATICAL ITALIC SMALL KAPPA
 [0x1D706] = 0x03BB, -- MATHEMATICAL ITALIC SMALL LAMDA
 [0x1D707] = 0x03BC, -- MATHEMATICAL ITALIC SMALL MU
 [0x1D708] = 0x03BD, -- MATHEMATICAL ITALIC SMALL NU
 [0x1D709] = 0x03BE, -- MATHEMATICAL ITALIC SMALL XI
 [0x1D70A] = 0x03BF, -- MATHEMATICAL ITALIC SMALL OMICRON
 [0x1D70B] = 0x03C0, -- MATHEMATICAL ITALIC SMALL PI
 [0x1D70C] = 0x03C1, -- MATHEMATICAL ITALIC SMALL RHO
 -- MATHEMATICAL BOLD SMALL FINAL SIGMA..MATHEMATICAL BOLD SMALL SIGMA
 [0x1D6D3] = 0x03C3,
 [0x1D6D4] = 0x03C3,
 [0x1D70F] = 0x03C4, -- MATHEMATICAL ITALIC SMALL TAU
 [0x1D710] = 0x03C5, -- MATHEMATICAL ITALIC SMALL UPSILON
 [0x1D711] = 0x03C6, -- MATHEMATICAL ITALIC SMALL PHI
 [0x1D712] = 0x03C7, -- MATHEMATICAL ITALIC SMALL CHI
 [0x1D713] = 0x03C8, -- MATHEMATICAL ITALIC SMALL PSI
 [0x1D714] = 0x03C9, -- MATHEMATICAL ITALIC SMALL OMEGA
 [0x1D715] = 0x2202, -- MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
 [0x1D716] = 0x03B5, -- MATHEMATICAL ITALIC EPSILON SYMBOL
 [0x1D717] = 0x03B8, -- MATHEMATICAL ITALIC THETA SYMBOL
 [0x1D718] = 0x03BA, -- MATHEMATICAL ITALIC KAPPA SYMBOL
 [0x1D719] = 0x03C6, -- MATHEMATICAL ITALIC PHI SYMBOL
 [0x1D71A] = 0x03C1, -- MATHEMATICAL ITALIC RHO SYMBOL
 [0x1D71B] = 0x03C0, -- MATHEMATICAL ITALIC PI SYMBOL
 [0x1D71C] = 0x03B1, -- MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
 [0x1D71D] = 0x03B2, -- MATHEMATICAL BOLD ITALIC CAPITAL BETA
 [0x1D71E] = 0x03B3, -- MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
 [0x1D71F] = 0x03B4, -- MATHEMATICAL BOLD ITALIC CAPITAL DELTA
 [0x1D720] = 0x03B5, -- MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
 [0x1D721] = 0x03B6, -- MATHEMATICAL BOLD ITALIC CAPITAL ZETA
 [0x1D722] = 0x03B7, -- MATHEMATICAL BOLD ITALIC CAPITAL ETA
 [0x1D723] = 0x03B8, -- MATHEMATICAL BOLD ITALIC CAPITAL THETA
 [0x1D724] = 0x03B9, -- MATHEMATICAL BOLD ITALIC CAPITAL IOTA
 [0x1D725] = 0x03BA, -- MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
 [0x1D726] = 0x03BB, -- MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
 [0x1D727] = 0x03BC, -- MATHEMATICAL BOLD ITALIC CAPITAL MU
 [0x1D728] = 0x03BD, -- MATHEMATICAL BOLD ITALIC CAPITAL NU
 [0x1D729] = 0x03BE, -- MATHEMATICAL BOLD ITALIC CAPITAL XI
 [0x1D72A] = 0x03BF, -- MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
 [0x1D72B] = 0x03C0, -- MATHEMATICAL BOLD ITALIC CAPITAL PI
 [0x1D72C] = 0x03C1, -- MATHEMATICAL BOLD ITALIC CAPITAL RHO
 [0x1D72D] = 0x03B8, -- MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
 [0x1D72E] = 0x03C3, -- MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
 [0x1D72F] = 0x03C4, -- MATHEMATICAL BOLD ITALIC CAPITAL TAU
 [0x1D730] = 0x03C5, -- MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
 [0x1D731] = 0x03C6, -- MATHEMATICAL BOLD ITALIC CAPITAL PHI
 [0x1D732] = 0x03C7, -- MATHEMATICAL BOLD ITALIC CAPITAL CHI
 [0x1D733] = 0x03C8, -- MATHEMATICAL BOLD ITALIC CAPITAL PSI
 [0x1D734] = 0x03C9, -- MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
 [0x1D735] = 0x2207, -- MATHEMATICAL BOLD ITALIC NABLA
 [0x1D736] = 0x03B1, -- MATHEMATICAL BOLD ITALIC SMALL ALPHA
 [0x1D737] = 0x03B2, -- MATHEMATICAL BOLD ITALIC SMALL BETA
 [0x1D738] = 0x03B3, -- MATHEMATICAL BOLD ITALIC SMALL GAMMA
 [0x1D739] = 0x03B4, -- MATHEMATICAL BOLD ITALIC SMALL DELTA
 [0x1D73A] = 0x03B5, -- MATHEMATICAL BOLD ITALIC SMALL EPSILON
 [0x1D73B] = 0x03B6, -- MATHEMATICAL BOLD ITALIC SMALL ZETA
 [0x1D73C] = 0x03B7, -- MATHEMATICAL BOLD ITALIC SMALL ETA
 [0x1D73D] = 0x03B8, -- MATHEMATICAL BOLD ITALIC SMALL THETA
 [0x1D73E] = 0x03B9, -- MATHEMATICAL BOLD ITALIC SMALL IOTA
 [0x1D73F] = 0x03BA, -- MATHEMATICAL BOLD ITALIC SMALL KAPPA
 [0x1D740] = 0x03BB, -- MATHEMATICAL BOLD ITALIC SMALL LAMDA
 [0x1D741] = 0x03BC, -- MATHEMATICAL BOLD ITALIC SMALL MU
 [0x1D742] = 0x03BD, -- MATHEMATICAL BOLD ITALIC SMALL NU
 [0x1D743] = 0x03BE, -- MATHEMATICAL BOLD ITALIC SMALL XI
 [0x1D744] = 0x03BF, -- MATHEMATICAL BOLD ITALIC SMALL OMICRON
 [0x1D745] = 0x03C0, -- MATHEMATICAL BOLD ITALIC SMALL PI
 [0x1D746] = 0x03C1, -- MATHEMATICAL BOLD ITALIC SMALL RHO
 -- MATHEMATICAL ITALIC SMALL FINAL SIGMA..MATHEMATICAL ITALIC SMALL SIGMA
 [0x1D70D] = 0x03C3,
 [0x1D70E] = 0x03C3,
 [0x1D749] = 0x03C4, -- MATHEMATICAL BOLD ITALIC SMALL TAU
 [0x1D74A] = 0x03C5, -- MATHEMATICAL BOLD ITALIC SMALL UPSILON
 [0x1D74B] = 0x03C6, -- MATHEMATICAL BOLD ITALIC SMALL PHI
 [0x1D74C] = 0x03C7, -- MATHEMATICAL BOLD ITALIC SMALL CHI
 [0x1D74D] = 0x03C8, -- MATHEMATICAL BOLD ITALIC SMALL PSI
 [0x1D74E] = 0x03C9, -- MATHEMATICAL BOLD ITALIC SMALL OMEGA
 [0x1D74F] = 0x2202, -- MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
 [0x1D750] = 0x03B5, -- MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
 [0x1D751] = 0x03B8, -- MATHEMATICAL BOLD ITALIC THETA SYMBOL
 [0x1D752] = 0x03BA, -- MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
 [0x1D753] = 0x03C6, -- MATHEMATICAL BOLD ITALIC PHI SYMBOL
 [0x1D754] = 0x03C1, -- MATHEMATICAL BOLD ITALIC RHO SYMBOL
 [0x1D755] = 0x03C0, -- MATHEMATICAL BOLD ITALIC PI SYMBOL
 [0x1D756] = 0x03B1, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
 [0x1D757] = 0x03B2, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
 [0x1D758] = 0x03B3, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
 [0x1D759] = 0x03B4, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
 [0x1D75A] = 0x03B5, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
 [0x1D75B] = 0x03B6, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
 [0x1D75C] = 0x03B7, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
 [0x1D75D] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
 [0x1D75E] = 0x03B9, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
 [0x1D75F] = 0x03BA, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
 [0x1D760] = 0x03BB, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
 [0x1D761] = 0x03BC, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
 [0x1D762] = 0x03BD, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
 [0x1D763] = 0x03BE, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
 [0x1D764] = 0x03BF, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
 [0x1D765] = 0x03C0, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
 [0x1D766] = 0x03C1, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
 [0x1D767] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
 [0x1D768] = 0x03C3, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
 [0x1D769] = 0x03C4, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
 [0x1D76A] = 0x03C5, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
 [0x1D76B] = 0x03C6, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
 [0x1D76C] = 0x03C7, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
 [0x1D76D] = 0x03C8, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
 [0x1D76E] = 0x03C9, -- MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
 [0x1D76F] = 0x2207, -- MATHEMATICAL SANS-SERIF BOLD NABLA
 [0x1D770] = 0x03B1, -- MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
 [0x1D771] = 0x03B2, -- MATHEMATICAL SANS-SERIF BOLD SMALL BETA
 [0x1D772] = 0x03B3, -- MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
 [0x1D773] = 0x03B4, -- MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
 [0x1D774] = 0x03B5, -- MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
 [0x1D775] = 0x03B6, -- MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
 [0x1D776] = 0x03B7, -- MATHEMATICAL SANS-SERIF BOLD SMALL ETA
 [0x1D777] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD SMALL THETA
 [0x1D778] = 0x03B9, -- MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
 [0x1D779] = 0x03BA, -- MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
 [0x1D77A] = 0x03BB, -- MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
 [0x1D77B] = 0x03BC, -- MATHEMATICAL SANS-SERIF BOLD SMALL MU
 [0x1D77C] = 0x03BD, -- MATHEMATICAL SANS-SERIF BOLD SMALL NU
 [0x1D77D] = 0x03BE, -- MATHEMATICAL SANS-SERIF BOLD SMALL XI
 [0x1D77E] = 0x03BF, -- MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
 [0x1D77F] = 0x03C0, -- MATHEMATICAL SANS-SERIF BOLD SMALL PI
 [0x1D780] = 0x03C1, -- MATHEMATICAL SANS-SERIF BOLD SMALL RHO
 -- MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA..MATHEMATICAL BOLD ITALIC SMALL SIGMA
 [0x1D747] = 0x03C3,
 [0x1D748] = 0x03C3,
 [0x1D783] = 0x03C4, -- MATHEMATICAL SANS-SERIF BOLD SMALL TAU
 [0x1D784] = 0x03C5, -- MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
 [0x1D785] = 0x03C6, -- MATHEMATICAL SANS-SERIF BOLD SMALL PHI
 [0x1D786] = 0x03C7, -- MATHEMATICAL SANS-SERIF BOLD SMALL CHI
 [0x1D787] = 0x03C8, -- MATHEMATICAL SANS-SERIF BOLD SMALL PSI
 [0x1D788] = 0x03C9, -- MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
 [0x1D789] = 0x2202, -- MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
 [0x1D78A] = 0x03B5, -- MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
 [0x1D78B] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
 [0x1D78C] = 0x03BA, -- MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
 [0x1D78D] = 0x03C6, -- MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
 [0x1D78E] = 0x03C1, -- MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
 [0x1D78F] = 0x03C0, -- MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
 [0x1D790] = 0x03B1, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
 [0x1D791] = 0x03B2, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
 [0x1D792] = 0x03B3, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
 [0x1D793] = 0x03B4, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
 [0x1D794] = 0x03B5, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
 [0x1D795] = 0x03B6, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
 [0x1D796] = 0x03B7, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
 [0x1D797] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
 [0x1D798] = 0x03B9, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
 [0x1D799] = 0x03BA, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
 [0x1D79A] = 0x03BB, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
 [0x1D79B] = 0x03BC, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
 [0x1D79C] = 0x03BD, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
 [0x1D79D] = 0x03BE, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
 [0x1D79E] = 0x03BF, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
 [0x1D79F] = 0x03C0, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
 [0x1D7A0] = 0x03C1, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
 [0x1D7A1] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
 [0x1D7A2] = 0x03C3, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
 [0x1D7A3] = 0x03C4, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
 [0x1D7A4] = 0x03C5, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
 [0x1D7A5] = 0x03C6, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
 [0x1D7A6] = 0x03C7, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
 [0x1D7A7] = 0x03C8, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
 [0x1D7A8] = 0x03C9, -- MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
 [0x1D7A9] = 0x2207, -- MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
 [0x1D7AA] = 0x03B1, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
 [0x1D7AB] = 0x03B2, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
 [0x1D7AC] = 0x03B3, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
 [0x1D7AD] = 0x03B4, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
 [0x1D7AE] = 0x03B5, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
 [0x1D7AF] = 0x03B6, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
 [0x1D7B0] = 0x03B7, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
 [0x1D7B1] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
 [0x1D7B2] = 0x03B9, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
 [0x1D7B3] = 0x03BA, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
 [0x1D7B4] = 0x03BB, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
 [0x1D7B5] = 0x03BC, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
 [0x1D7B6] = 0x03BD, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
 [0x1D7B7] = 0x03BE, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
 [0x1D7B8] = 0x03BF, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
 [0x1D7B9] = 0x03C0, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
 [0x1D7BA] = 0x03C1, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
 -- MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA..MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
 [0x1D781] = 0x03C3,
 [0x1D782] = 0x03C3,
 [0x1D7BD] = 0x03C4, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
 [0x1D7BE] = 0x03C5, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
 [0x1D7BF] = 0x03C6, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
 [0x1D7C0] = 0x03C7, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
 [0x1D7C1] = 0x03C8, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
 [0x1D7C2] = 0x03C9, -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
 [0x1D7C3] = 0x2202, -- MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
 [0x1D7C4] = 0x03B5, -- MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
 [0x1D7C5] = 0x03B8, -- MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
 [0x1D7C6] = 0x03BA, -- MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
 [0x1D7C7] = 0x03C6, -- MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
 [0x1D7C8] = 0x03C1, -- MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
 [0x1D7C9] = 0x03C0, -- MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
 -- MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
 [0x1D7BB] = 0x03C3,
 [0x1D7BC] = 0x03C3,
 -- MATHEMATICAL BOLD CAPITAL DIGAMMA..MATHEMATICAL BOLD SMALL DIGAMMA
 [0x1D7CA] = 0x03DD,
 [0x1D7CB] = 0x03DD,
 [0x1D7CE] = 0x0030, -- MATHEMATICAL BOLD DIGIT ZERO
 [0x1D7CF] = 0x0031, -- MATHEMATICAL BOLD DIGIT ONE
 [0x1D7D0] = 0x0032, -- MATHEMATICAL BOLD DIGIT TWO
 [0x1D7D1] = 0x0033, -- MATHEMATICAL BOLD DIGIT THREE
 [0x1D7D2] = 0x0034, -- MATHEMATICAL BOLD DIGIT FOUR
 [0x1D7D3] = 0x0035, -- MATHEMATICAL BOLD DIGIT FIVE
 [0x1D7D4] = 0x0036, -- MATHEMATICAL BOLD DIGIT SIX
 [0x1D7D5] = 0x0037, -- MATHEMATICAL BOLD DIGIT SEVEN
 [0x1D7D6] = 0x0038, -- MATHEMATICAL BOLD DIGIT EIGHT
 [0x1D7D7] = 0x0039, -- MATHEMATICAL BOLD DIGIT NINE
 [0x1D7D8] = 0x0030, -- MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
 [0x1D7D9] = 0x0031, -- MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
 [0x1D7DA] = 0x0032, -- MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
 [0x1D7DB] = 0x0033, -- MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
 [0x1D7DC] = 0x0034, -- MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
 [0x1D7DD] = 0x0035, -- MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
 [0x1D7DE] = 0x0036, -- MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
 [0x1D7DF] = 0x0037, -- MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
 [0x1D7E0] = 0x0038, -- MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
 [0x1D7E1] = 0x0039, -- MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
 [0x1D7E2] = 0x0030, -- MATHEMATICAL SANS-SERIF DIGIT ZERO
 [0x1D7E3] = 0x0031, -- MATHEMATICAL SANS-SERIF DIGIT ONE
 [0x1D7E4] = 0x0032, -- MATHEMATICAL SANS-SERIF DIGIT TWO
 [0x1D7E5] = 0x0033, -- MATHEMATICAL SANS-SERIF DIGIT THREE
 [0x1D7E6] = 0x0034, -- MATHEMATICAL SANS-SERIF DIGIT FOUR
 [0x1D7E7] = 0x0035, -- MATHEMATICAL SANS-SERIF DIGIT FIVE
 [0x1D7E8] = 0x0036, -- MATHEMATICAL SANS-SERIF DIGIT SIX
 [0x1D7E9] = 0x0037, -- MATHEMATICAL SANS-SERIF DIGIT SEVEN
 [0x1D7EA] = 0x0038, -- MATHEMATICAL SANS-SERIF DIGIT EIGHT
 [0x1D7EB] = 0x0039, -- MATHEMATICAL SANS-SERIF DIGIT NINE
 [0x1D7EC] = 0x0030, -- MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
 [0x1D7ED] = 0x0031, -- MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
 [0x1D7EE] = 0x0032, -- MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
 [0x1D7EF] = 0x0033, -- MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
 [0x1D7F0] = 0x0034, -- MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
 [0x1D7F1] = 0x0035, -- MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
 [0x1D7F2] = 0x0036, -- MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
 [0x1D7F3] = 0x0037, -- MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
 [0x1D7F4] = 0x0038, -- MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
 [0x1D7F5] = 0x0039, -- MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
 [0x1D7F6] = 0x0030, -- MATHEMATICAL MONOSPACE DIGIT ZERO
 [0x1D7F7] = 0x0031, -- MATHEMATICAL MONOSPACE DIGIT ONE
 [0x1D7F8] = 0x0032, -- MATHEMATICAL MONOSPACE DIGIT TWO
 [0x1D7F9] = 0x0033, -- MATHEMATICAL MONOSPACE DIGIT THREE
 [0x1D7FA] = 0x0034, -- MATHEMATICAL MONOSPACE DIGIT FOUR
 [0x1D7FB] = 0x0035, -- MATHEMATICAL MONOSPACE DIGIT FIVE
 [0x1D7FC] = 0x0036, -- MATHEMATICAL MONOSPACE DIGIT SIX
 [0x1D7FD] = 0x0037, -- MATHEMATICAL MONOSPACE DIGIT SEVEN
 [0x1D7FE] = 0x0038, -- MATHEMATICAL MONOSPACE DIGIT EIGHT
 [0x1D7FF] = 0x0039, -- MATHEMATICAL MONOSPACE DIGIT NINE
 -- NA   <reserved-1D7CC>..<reserved-1D7CD>
 [0x1D7CC] = {status="disallowed"},
 [0x1D7CD] = {status="disallowed"},
 -- SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE
 [0x1DA37] = {status="disallowed"},
 [0x1DA38] = {status="disallowed"},
 [0x1DA39] = {status="disallowed"},
 [0x1DA3A] = {status="disallowed"},
 [0x1DA75] = {status="valid"}, -- SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
 [0x1DA84] = {status="valid"}, -- SIGNWRITING LOCATION HEAD NECK
 [0x1DAA0] = {status="disallowed"}, -- NA   <reserved-1DAA0>
 -- SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
 [0x1DA9B] = {status="valid"},
 [0x1DA9C] = {status="valid"},
 [0x1DA9D] = {status="valid"},
 [0x1DA9E] = {status="valid"},
 [0x1DA9F] = {status="valid"},
 [0x1E007] = {status="disallowed"}, -- NA   <reserved-1E007>
 -- NA   <reserved-1E019>..<reserved-1E01A>
 [0x1E019] = {status="disallowed"},
 [0x1E01A] = {status="disallowed"},
 [0x1E022] = {status="disallowed"}, -- NA   <reserved-1E022>
 [0x1E025] = {status="disallowed"}, -- NA   <reserved-1E025>
 -- COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
 [0x1E023] = {status="valid"},
 [0x1E024] = {status="valid"},
 -- COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
 [0x1E026] = {status="valid"},
 [0x1E027] = {status="valid"},
 [0x1E028] = {status="valid"},
 [0x1E029] = {status="valid"},
 [0x1E02A] = {status="valid"},
 -- NA   <reserved-1E8C5>..<reserved-1E8C6>
 [0x1E8C5] = {status="disallowed"},
 [0x1E8C6] = {status="disallowed"},
 [0x1E900] = 0x1E922, -- ADLAM CAPITAL LETTER ALIF
 [0x1E901] = 0x1E923, -- ADLAM CAPITAL LETTER DAALI
 [0x1E902] = 0x1E924, -- ADLAM CAPITAL LETTER LAAM
 [0x1E903] = 0x1E925, -- ADLAM CAPITAL LETTER MIIM
 [0x1E904] = 0x1E926, -- ADLAM CAPITAL LETTER BA
 [0x1E905] = 0x1E927, -- ADLAM CAPITAL LETTER SINNYIIYHE
 [0x1E906] = 0x1E928, -- ADLAM CAPITAL LETTER PE
 [0x1E907] = 0x1E929, -- ADLAM CAPITAL LETTER BHE
 [0x1E908] = 0x1E92A, -- ADLAM CAPITAL LETTER RA
 [0x1E909] = 0x1E92B, -- ADLAM CAPITAL LETTER E
 [0x1E90A] = 0x1E92C, -- ADLAM CAPITAL LETTER FA
 [0x1E90B] = 0x1E92D, -- ADLAM CAPITAL LETTER I
 [0x1E90C] = 0x1E92E, -- ADLAM CAPITAL LETTER O
 [0x1E90D] = 0x1E92F, -- ADLAM CAPITAL LETTER DHA
 [0x1E90E] = 0x1E930, -- ADLAM CAPITAL LETTER YHE
 [0x1E90F] = 0x1E931, -- ADLAM CAPITAL LETTER WAW
 [0x1E910] = 0x1E932, -- ADLAM CAPITAL LETTER NUN
 [0x1E911] = 0x1E933, -- ADLAM CAPITAL LETTER KAF
 [0x1E912] = 0x1E934, -- ADLAM CAPITAL LETTER YA
 [0x1E913] = 0x1E935, -- ADLAM CAPITAL LETTER U
 [0x1E914] = 0x1E936, -- ADLAM CAPITAL LETTER JIIM
 [0x1E915] = 0x1E937, -- ADLAM CAPITAL LETTER CHI
 [0x1E916] = 0x1E938, -- ADLAM CAPITAL LETTER HA
 [0x1E917] = 0x1E939, -- ADLAM CAPITAL LETTER QAAF
 [0x1E918] = 0x1E93A, -- ADLAM CAPITAL LETTER GA
 [0x1E919] = 0x1E93B, -- ADLAM CAPITAL LETTER NYA
 [0x1E91A] = 0x1E93C, -- ADLAM CAPITAL LETTER TU
 [0x1E91B] = 0x1E93D, -- ADLAM CAPITAL LETTER NHA
 [0x1E91C] = 0x1E93E, -- ADLAM CAPITAL LETTER VA
 [0x1E91D] = 0x1E93F, -- ADLAM CAPITAL LETTER KHA
 [0x1E91E] = 0x1E940, -- ADLAM CAPITAL LETTER GBE
 [0x1E91F] = 0x1E941, -- ADLAM CAPITAL LETTER ZAL
 [0x1E920] = 0x1E942, -- ADLAM CAPITAL LETTER KPO
 [0x1E921] = 0x1E943, -- ADLAM CAPITAL LETTER SHA
 -- NA   <reserved-1E94B>..<reserved-1E94F>
 [0x1E94B] = {status="disallowed"},
 [0x1E94C] = {status="disallowed"},
 [0x1E94D] = {status="disallowed"},
 [0x1E94E] = {status="disallowed"},
 [0x1E94F] = {status="disallowed"},
 -- NA   <reserved-1E95A>..<reserved-1E95D>
 [0x1E95A] = {status="disallowed"},
 [0x1E95B] = {status="disallowed"},
 [0x1E95C] = {status="disallowed"},
 [0x1E95D] = {status="disallowed"},
 -- ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
 [0x1E95E] = {status="disallowed"},
 [0x1E95F] = {status="disallowed"},
 [0x1EE00] = 0x0627, -- ARABIC MATHEMATICAL ALEF
 [0x1EE01] = 0x0628, -- ARABIC MATHEMATICAL BEH
 [0x1EE02] = 0x062C, -- ARABIC MATHEMATICAL JEEM
 [0x1EE03] = 0x062F, -- ARABIC MATHEMATICAL DAL
 [0x1EE04] = {status="disallowed"}, -- NA   <reserved-1EE04>
 [0x1EE05] = 0x0648, -- ARABIC MATHEMATICAL WAW
 [0x1EE06] = 0x0632, -- ARABIC MATHEMATICAL ZAIN
 [0x1EE07] = 0x062D, -- ARABIC MATHEMATICAL HAH
 [0x1EE08] = 0x0637, -- ARABIC MATHEMATICAL TAH
 [0x1EE09] = 0x064A, -- ARABIC MATHEMATICAL YEH
 [0x1EE0A] = 0x0643, -- ARABIC MATHEMATICAL KAF
 [0x1EE0B] = 0x0644, -- ARABIC MATHEMATICAL LAM
 [0x1EE0C] = 0x0645, -- ARABIC MATHEMATICAL MEEM
 [0x1EE0D] = 0x0646, -- ARABIC MATHEMATICAL NOON
 [0x1EE0E] = 0x0633, -- ARABIC MATHEMATICAL SEEN
 [0x1EE0F] = 0x0639, -- ARABIC MATHEMATICAL AIN
 [0x1EE10] = 0x0641, -- ARABIC MATHEMATICAL FEH
 [0x1EE11] = 0x0635, -- ARABIC MATHEMATICAL SAD
 [0x1EE12] = 0x0642, -- ARABIC MATHEMATICAL QAF
 [0x1EE13] = 0x0631, -- ARABIC MATHEMATICAL REH
 [0x1EE14] = 0x0634, -- ARABIC MATHEMATICAL SHEEN
 [0x1EE15] = 0x062A, -- ARABIC MATHEMATICAL TEH
 [0x1EE16] = 0x062B, -- ARABIC MATHEMATICAL THEH
 [0x1EE17] = 0x062E, -- ARABIC MATHEMATICAL KHAH
 [0x1EE18] = 0x0630, -- ARABIC MATHEMATICAL THAL
 [0x1EE19] = 0x0636, -- ARABIC MATHEMATICAL DAD
 [0x1EE1A] = 0x0638, -- ARABIC MATHEMATICAL ZAH
 [0x1EE1B] = 0x063A, -- ARABIC MATHEMATICAL GHAIN
 [0x1EE1C] = 0x066E, -- ARABIC MATHEMATICAL DOTLESS BEH
 [0x1EE1D] = 0x06BA, -- ARABIC MATHEMATICAL DOTLESS NOON
 [0x1EE1E] = 0x06A1, -- ARABIC MATHEMATICAL DOTLESS FEH
 [0x1EE1F] = 0x066F, -- ARABIC MATHEMATICAL DOTLESS QAF
 [0x1EE20] = {status="disallowed"}, -- NA   <reserved-1EE20>
 [0x1EE21] = 0x0628, -- ARABIC MATHEMATICAL INITIAL BEH
 [0x1EE22] = 0x062C, -- ARABIC MATHEMATICAL INITIAL JEEM
 [0x1EE23] = {status="disallowed"}, -- NA   <reserved-1EE23>
 [0x1EE24] = 0x0647, -- ARABIC MATHEMATICAL INITIAL HEH
 [0x1EE27] = 0x062D, -- ARABIC MATHEMATICAL INITIAL HAH
 [0x1EE28] = {status="disallowed"}, -- NA   <reserved-1EE28>
 [0x1EE29] = 0x064A, -- ARABIC MATHEMATICAL INITIAL YEH
 [0x1EE2A] = 0x0643, -- ARABIC MATHEMATICAL INITIAL KAF
 [0x1EE2B] = 0x0644, -- ARABIC MATHEMATICAL INITIAL LAM
 [0x1EE2C] = 0x0645, -- ARABIC MATHEMATICAL INITIAL MEEM
 [0x1EE2D] = 0x0646, -- ARABIC MATHEMATICAL INITIAL NOON
 [0x1EE2E] = 0x0633, -- ARABIC MATHEMATICAL INITIAL SEEN
 [0x1EE2F] = 0x0639, -- ARABIC MATHEMATICAL INITIAL AIN
 [0x1EE30] = 0x0641, -- ARABIC MATHEMATICAL INITIAL FEH
 [0x1EE31] = 0x0635, -- ARABIC MATHEMATICAL INITIAL SAD
 [0x1EE32] = 0x0642, -- ARABIC MATHEMATICAL INITIAL QAF
 [0x1EE33] = {status="disallowed"}, -- NA   <reserved-1EE33>
 [0x1EE34] = 0x0634, -- ARABIC MATHEMATICAL INITIAL SHEEN
 [0x1EE35] = 0x062A, -- ARABIC MATHEMATICAL INITIAL TEH
 [0x1EE36] = 0x062B, -- ARABIC MATHEMATICAL INITIAL THEH
 [0x1EE37] = 0x062E, -- ARABIC MATHEMATICAL INITIAL KHAH
 [0x1EE38] = {status="disallowed"}, -- NA   <reserved-1EE38>
 [0x1EE39] = 0x0636, -- ARABIC MATHEMATICAL INITIAL DAD
 [0x1EE3A] = {status="disallowed"}, -- NA   <reserved-1EE3A>
 [0x1EE3B] = 0x063A, -- ARABIC MATHEMATICAL INITIAL GHAIN
 -- NA   <reserved-1EE25>..<reserved-1EE26>
 [0x1EE25] = {status="disallowed"},
 [0x1EE26] = {status="disallowed"},
 [0x1EE42] = 0x062C, -- ARABIC MATHEMATICAL TAILED JEEM
 [0x1EE47] = 0x062D, -- ARABIC MATHEMATICAL TAILED HAH
 [0x1EE48] = {status="disallowed"}, -- NA   <reserved-1EE48>
 [0x1EE49] = 0x064A, -- ARABIC MATHEMATICAL TAILED YEH
 [0x1EE4A] = {status="disallowed"}, -- NA   <reserved-1EE4A>
 [0x1EE4B] = 0x0644, -- ARABIC MATHEMATICAL TAILED LAM
 [0x1EE4C] = {status="disallowed"}, -- NA   <reserved-1EE4C>
 [0x1EE4D] = 0x0646, -- ARABIC MATHEMATICAL TAILED NOON
 [0x1EE4E] = 0x0633, -- ARABIC MATHEMATICAL TAILED SEEN
 [0x1EE4F] = 0x0639, -- ARABIC MATHEMATICAL TAILED AIN
 [0x1EE50] = {status="disallowed"}, -- NA   <reserved-1EE50>
 [0x1EE51] = 0x0635, -- ARABIC MATHEMATICAL TAILED SAD
 [0x1EE52] = 0x0642, -- ARABIC MATHEMATICAL TAILED QAF
 [0x1EE53] = {status="disallowed"}, -- NA   <reserved-1EE53>
 [0x1EE54] = 0x0634, -- ARABIC MATHEMATICAL TAILED SHEEN
 -- NA   <reserved-1EE43>..<reserved-1EE46>
 [0x1EE43] = {status="disallowed"},
 [0x1EE44] = {status="disallowed"},
 [0x1EE45] = {status="disallowed"},
 [0x1EE46] = {status="disallowed"},
 [0x1EE57] = 0x062E, -- ARABIC MATHEMATICAL TAILED KHAH
 [0x1EE58] = {status="disallowed"}, -- NA   <reserved-1EE58>
 [0x1EE59] = 0x0636, -- ARABIC MATHEMATICAL TAILED DAD
 [0x1EE5A] = {status="disallowed"}, -- NA   <reserved-1EE5A>
 [0x1EE5B] = 0x063A, -- ARABIC MATHEMATICAL TAILED GHAIN
 [0x1EE5C] = {status="disallowed"}, -- NA   <reserved-1EE5C>
 [0x1EE5D] = 0x06BA, -- ARABIC MATHEMATICAL TAILED DOTLESS NOON
 [0x1EE5E] = {status="disallowed"}, -- NA   <reserved-1EE5E>
 [0x1EE5F] = 0x066F, -- ARABIC MATHEMATICAL TAILED DOTLESS QAF
 [0x1EE60] = {status="disallowed"}, -- NA   <reserved-1EE60>
 [0x1EE61] = 0x0628, -- ARABIC MATHEMATICAL STRETCHED BEH
 [0x1EE62] = 0x062C, -- ARABIC MATHEMATICAL STRETCHED JEEM
 [0x1EE63] = {status="disallowed"}, -- NA   <reserved-1EE63>
 [0x1EE64] = 0x0647, -- ARABIC MATHEMATICAL STRETCHED HEH
 -- NA   <reserved-1EE55>..<reserved-1EE56>
 [0x1EE55] = {status="disallowed"},
 [0x1EE56] = {status="disallowed"},
 [0x1EE67] = 0x062D, -- ARABIC MATHEMATICAL STRETCHED HAH
 [0x1EE68] = 0x0637, -- ARABIC MATHEMATICAL STRETCHED TAH
 [0x1EE69] = 0x064A, -- ARABIC MATHEMATICAL STRETCHED YEH
 [0x1EE6A] = 0x0643, -- ARABIC MATHEMATICAL STRETCHED KAF
 [0x1EE6B] = {status="disallowed"}, -- NA   <reserved-1EE6B>
 [0x1EE6C] = 0x0645, -- ARABIC MATHEMATICAL STRETCHED MEEM
 [0x1EE6D] = 0x0646, -- ARABIC MATHEMATICAL STRETCHED NOON
 [0x1EE6E] = 0x0633, -- ARABIC MATHEMATICAL STRETCHED SEEN
 [0x1EE6F] = 0x0639, -- ARABIC MATHEMATICAL STRETCHED AIN
 [0x1EE70] = 0x0641, -- ARABIC MATHEMATICAL STRETCHED FEH
 [0x1EE71] = 0x0635, -- ARABIC MATHEMATICAL STRETCHED SAD
 [0x1EE72] = 0x0642, -- ARABIC MATHEMATICAL STRETCHED QAF
 [0x1EE73] = {status="disallowed"}, -- NA   <reserved-1EE73>
 [0x1EE74] = 0x0634, -- ARABIC MATHEMATICAL STRETCHED SHEEN
 [0x1EE75] = 0x062A, -- ARABIC MATHEMATICAL STRETCHED TEH
 [0x1EE76] = 0x062B, -- ARABIC MATHEMATICAL STRETCHED THEH
 [0x1EE77] = 0x062E, -- ARABIC MATHEMATICAL STRETCHED KHAH
 [0x1EE78] = {status="disallowed"}, -- NA   <reserved-1EE78>
 [0x1EE79] = 0x0636, -- ARABIC MATHEMATICAL STRETCHED DAD
 [0x1EE7A] = 0x0638, -- ARABIC MATHEMATICAL STRETCHED ZAH
 [0x1EE7B] = 0x063A, -- ARABIC MATHEMATICAL STRETCHED GHAIN
 [0x1EE7C] = 0x066E, -- ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
 [0x1EE7D] = {status="disallowed"}, -- NA   <reserved-1EE7D>
 [0x1EE7E] = 0x06A1, -- ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
 [0x1EE7F] = {status="disallowed"}, -- NA   <reserved-1EE7F>
 [0x1EE80] = 0x0627, -- ARABIC MATHEMATICAL LOOPED ALEF
 [0x1EE81] = 0x0628, -- ARABIC MATHEMATICAL LOOPED BEH
 [0x1EE82] = 0x062C, -- ARABIC MATHEMATICAL LOOPED JEEM
 [0x1EE83] = 0x062F, -- ARABIC MATHEMATICAL LOOPED DAL
 [0x1EE84] = 0x0647, -- ARABIC MATHEMATICAL LOOPED HEH
 [0x1EE85] = 0x0648, -- ARABIC MATHEMATICAL LOOPED WAW
 [0x1EE86] = 0x0632, -- ARABIC MATHEMATICAL LOOPED ZAIN
 [0x1EE87] = 0x062D, -- ARABIC MATHEMATICAL LOOPED HAH
 [0x1EE88] = 0x0637, -- ARABIC MATHEMATICAL LOOPED TAH
 [0x1EE89] = 0x064A, -- ARABIC MATHEMATICAL LOOPED YEH
 [0x1EE8A] = {status="disallowed"}, -- NA   <reserved-1EE8A>
 [0x1EE8B] = 0x0644, -- ARABIC MATHEMATICAL LOOPED LAM
 [0x1EE8C] = 0x0645, -- ARABIC MATHEMATICAL LOOPED MEEM
 [0x1EE8D] = 0x0646, -- ARABIC MATHEMATICAL LOOPED NOON
 [0x1EE8E] = 0x0633, -- ARABIC MATHEMATICAL LOOPED SEEN
 [0x1EE8F] = 0x0639, -- ARABIC MATHEMATICAL LOOPED AIN
 [0x1EE90] = 0x0641, -- ARABIC MATHEMATICAL LOOPED FEH
 [0x1EE91] = 0x0635, -- ARABIC MATHEMATICAL LOOPED SAD
 [0x1EE92] = 0x0642, -- ARABIC MATHEMATICAL LOOPED QAF
 [0x1EE93] = 0x0631, -- ARABIC MATHEMATICAL LOOPED REH
 [0x1EE94] = 0x0634, -- ARABIC MATHEMATICAL LOOPED SHEEN
 [0x1EE95] = 0x062A, -- ARABIC MATHEMATICAL LOOPED TEH
 [0x1EE96] = 0x062B, -- ARABIC MATHEMATICAL LOOPED THEH
 [0x1EE97] = 0x062E, -- ARABIC MATHEMATICAL LOOPED KHAH
 [0x1EE98] = 0x0630, -- ARABIC MATHEMATICAL LOOPED THAL
 [0x1EE99] = 0x0636, -- ARABIC MATHEMATICAL LOOPED DAD
 [0x1EE9A] = 0x0638, -- ARABIC MATHEMATICAL LOOPED ZAH
 [0x1EE9B] = 0x063A, -- ARABIC MATHEMATICAL LOOPED GHAIN
 -- NA   <reserved-1EE65>..<reserved-1EE66>
 [0x1EE65] = {status="disallowed"},
 [0x1EE66] = {status="disallowed"},
 [0x1EEA1] = 0x0628, -- ARABIC MATHEMATICAL DOUBLE-STRUCK BEH
 [0x1EEA2] = 0x062C, -- ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM
 [0x1EEA3] = 0x062F, -- ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
 [0x1EEA4] = {status="disallowed"}, -- NA   <reserved-1EEA4>
 [0x1EEA5] = 0x0648, -- ARABIC MATHEMATICAL DOUBLE-STRUCK WAW
 [0x1EEA6] = 0x0632, -- ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN
 [0x1EEA7] = 0x062D, -- ARABIC MATHEMATICAL DOUBLE-STRUCK HAH
 [0x1EEA8] = 0x0637, -- ARABIC MATHEMATICAL DOUBLE-STRUCK TAH
 [0x1EEA9] = 0x064A, -- ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
 [0x1EEAA] = {status="disallowed"}, -- NA   <reserved-1EEAA>
 [0x1EEAB] = 0x0644, -- ARABIC MATHEMATICAL DOUBLE-STRUCK LAM
 [0x1EEAC] = 0x0645, -- ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM
 [0x1EEAD] = 0x0646, -- ARABIC MATHEMATICAL DOUBLE-STRUCK NOON
 [0x1EEAE] = 0x0633, -- ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN
 [0x1EEAF] = 0x0639, -- ARABIC MATHEMATICAL DOUBLE-STRUCK AIN
 [0x1EEB0] = 0x0641, -- ARABIC MATHEMATICAL DOUBLE-STRUCK FEH
 [0x1EEB1] = 0x0635, -- ARABIC MATHEMATICAL DOUBLE-STRUCK SAD
 [0x1EEB2] = 0x0642, -- ARABIC MATHEMATICAL DOUBLE-STRUCK QAF
 [0x1EEB3] = 0x0631, -- ARABIC MATHEMATICAL DOUBLE-STRUCK REH
 [0x1EEB4] = 0x0634, -- ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN
 [0x1EEB5] = 0x062A, -- ARABIC MATHEMATICAL DOUBLE-STRUCK TEH
 [0x1EEB6] = 0x062B, -- ARABIC MATHEMATICAL DOUBLE-STRUCK THEH
 [0x1EEB7] = 0x062E, -- ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH
 [0x1EEB8] = 0x0630, -- ARABIC MATHEMATICAL DOUBLE-STRUCK THAL
 [0x1EEB9] = 0x0636, -- ARABIC MATHEMATICAL DOUBLE-STRUCK DAD
 [0x1EEBA] = 0x0638, -- ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH
 [0x1EEBB] = 0x063A, -- ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
 -- NA   <reserved-1EE9C>..<reserved-1EEA0>
 [0x1EE9C] = {status="disallowed"},
 [0x1EE9D] = {status="disallowed"},
 [0x1EE9E] = {status="disallowed"},
 [0x1EE9F] = {status="disallowed"},
 [0x1EEA0] = {status="disallowed"},
 -- ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
 [0x1EEF0] = {status="disallowed"},
 [0x1EEF1] = {status="disallowed"},
 -- NA   <reserved-1F02C>..<reserved-1F02F>
 [0x1F02C] = {status="disallowed"},
 [0x1F02D] = {status="disallowed"},
 [0x1F02E] = {status="disallowed"},
 [0x1F02F] = {status="disallowed"},
 -- NA   <reserved-1F0AF>..<reserved-1F0B0>
 [0x1F0AF] = {status="disallowed"},
 [0x1F0B0] = {status="disallowed"},
 [0x1F0BF] = {status="disallowed"}, -- PLAYING CARD RED JOKER
 [0x1F0C0] = {status="disallowed"}, -- NA   <reserved-1F0C0>
 [0x1F0D0] = {status="disallowed"}, -- NA   <reserved-1F0D0>
 [0x1F100] = {status="disallowed"}, -- DIGIT ZERO FULL STOP
 [0x1F101] = {status="disallowed"}, -- DIGIT ZERO COMMA
 [0x1F102] = {status="disallowed"}, -- DIGIT ONE COMMA
 [0x1F103] = {status="disallowed"}, -- DIGIT TWO COMMA
 [0x1F104] = {status="disallowed"}, -- DIGIT THREE COMMA
 [0x1F105] = {status="disallowed"}, -- DIGIT FOUR COMMA
 [0x1F106] = {status="disallowed"}, -- DIGIT FIVE COMMA
 [0x1F107] = {status="disallowed"}, -- DIGIT SIX COMMA
 [0x1F108] = {status="disallowed"}, -- DIGIT SEVEN COMMA
 [0x1F109] = {status="disallowed"}, -- DIGIT EIGHT COMMA
 [0x1F10A] = {status="disallowed"}, -- DIGIT NINE COMMA
 -- DINGBAT CIRCLED SANS-SERIF DIGIT ZERO..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
 [0x1F10B] = {status="disallowed"},
 [0x1F10C] = {status="disallowed"},
 [0x1F110] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER A
 [0x1F111] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER B
 [0x1F112] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER C
 [0x1F113] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER D
 [0x1F114] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER E
 [0x1F115] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER F
 [0x1F116] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER G
 [0x1F117] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER H
 [0x1F118] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER I
 [0x1F119] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER J
 [0x1F11A] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER K
 [0x1F11B] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER L
 [0x1F11C] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER M
 [0x1F11D] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER N
 [0x1F11E] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER O
 [0x1F11F] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER P
 [0x1F120] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER Q
 [0x1F121] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER R
 [0x1F122] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER S
 [0x1F123] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER T
 [0x1F124] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER U
 [0x1F125] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER V
 [0x1F126] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER W
 [0x1F127] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER X
 [0x1F128] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER Y
 [0x1F129] = {status="disallowed"}, -- PARENTHESIZED LATIN CAPITAL LETTER Z
 [0x1F12A] = {0x3014, 0x0073, 0x3015}, -- TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
 [0x1F12B] = 0x0063, -- CIRCLED ITALIC LATIN CAPITAL LETTER C
 [0x1F12C] = 0x0072, -- CIRCLED ITALIC LATIN CAPITAL LETTER R
 [0x1F12D] = {0x0063, 0x0064}, -- CIRCLED CD
 [0x1F12E] = {0x0077, 0x007A}, -- CIRCLED WZ
 [0x1F12F] = {status="disallowed"}, -- NA   <reserved-1F12F>
 [0x1F130] = 0x0061, -- SQUARED LATIN CAPITAL LETTER A
 [0x1F131] = 0x0062, -- SQUARED LATIN CAPITAL LETTER B
 [0x1F132] = 0x0063, -- SQUARED LATIN CAPITAL LETTER C
 [0x1F133] = 0x0064, -- SQUARED LATIN CAPITAL LETTER D
 [0x1F134] = 0x0065, -- SQUARED LATIN CAPITAL LETTER E
 [0x1F135] = 0x0066, -- SQUARED LATIN CAPITAL LETTER F
 [0x1F136] = 0x0067, -- SQUARED LATIN CAPITAL LETTER G
 [0x1F137] = 0x0068, -- SQUARED LATIN CAPITAL LETTER H
 [0x1F138] = 0x0069, -- SQUARED LATIN CAPITAL LETTER I
 [0x1F139] = 0x006A, -- SQUARED LATIN CAPITAL LETTER J
 [0x1F13A] = 0x006B, -- SQUARED LATIN CAPITAL LETTER K
 [0x1F13B] = 0x006C, -- SQUARED LATIN CAPITAL LETTER L
 [0x1F13C] = 0x006D, -- SQUARED LATIN CAPITAL LETTER M
 [0x1F13D] = 0x006E, -- SQUARED LATIN CAPITAL LETTER N
 [0x1F13E] = 0x006F, -- SQUARED LATIN CAPITAL LETTER O
 [0x1F13F] = 0x0070, -- SQUARED LATIN CAPITAL LETTER P
 [0x1F140] = 0x0071, -- SQUARED LATIN CAPITAL LETTER Q
 [0x1F141] = 0x0072, -- SQUARED LATIN CAPITAL LETTER R
 [0x1F142] = 0x0073, -- SQUARED LATIN CAPITAL LETTER S
 [0x1F143] = 0x0074, -- SQUARED LATIN CAPITAL LETTER T
 [0x1F144] = 0x0075, -- SQUARED LATIN CAPITAL LETTER U
 [0x1F145] = 0x0076, -- SQUARED LATIN CAPITAL LETTER V
 [0x1F146] = 0x0077, -- SQUARED LATIN CAPITAL LETTER W
 [0x1F147] = 0x0078, -- SQUARED LATIN CAPITAL LETTER X
 [0x1F148] = 0x0079, -- SQUARED LATIN CAPITAL LETTER Y
 [0x1F149] = 0x007A, -- SQUARED LATIN CAPITAL LETTER Z
 [0x1F14A] = {0x0068, 0x0076}, -- SQUARED HV
 [0x1F14B] = {0x006D, 0x0076}, -- SQUARED MV
 [0x1F14C] = {0x0073, 0x0064}, -- SQUARED SD
 [0x1F14D] = {0x0073, 0x0073}, -- SQUARED SS
 [0x1F14E] = {0x0070, 0x0070, 0x0076}, -- SQUARED PPV
 [0x1F14F] = {0x0077, 0x0063}, -- SQUARED WC
 -- NA   <reserved-1F10D>..<reserved-1F10F>
 [0x1F10D] = {status="disallowed"},
 [0x1F10E] = {status="disallowed"},
 [0x1F10F] = {status="disallowed"},
 [0x1F157] = {status="disallowed"}, -- NEGATIVE CIRCLED LATIN CAPITAL LETTER H
 [0x1F15F] = {status="disallowed"}, -- NEGATIVE CIRCLED LATIN CAPITAL LETTER P
 [0x1F16A] = {0x006D, 0x0063}, -- RAISED MC SIGN
 [0x1F16B] = {0x006D, 0x0064}, -- RAISED MD SIGN
 -- NA   <reserved-1F16C>..<reserved-1F16F>
 [0x1F16C] = {status="disallowed"},
 [0x1F16D] = {status="disallowed"},
 [0x1F16E] = {status="disallowed"},
 [0x1F16F] = {status="disallowed"},
 [0x1F179] = {status="disallowed"}, -- NEGATIVE SQUARED LATIN CAPITAL LETTER J
 [0x1F17A] = {status="disallowed"}, -- NEGATIVE SQUARED LATIN CAPITAL LETTER K
 [0x1F17F] = {status="disallowed"}, -- NEGATIVE SQUARED LATIN CAPITAL LETTER P
 -- NEGATIVE SQUARED LATIN CAPITAL LETTER L..NEGATIVE SQUARED LATIN CAPITAL LETTER M
      -- NEGATIVE SQUARED LATIN CAPITAL LETTER N..NEGATIVE SQUARED LATIN CAPITAL LETTER O
 [0x1F17B] = {status="disallowed"},
 [0x1F17C] = {status="disallowed"},
 [0x1F17D] = {status="disallowed"},
 [0x1F17E] = {status="disallowed"},
 [0x1F190] = {0x0064, 0x006A}, -- SQUARE DJ
 [0x1F200] = {0x307B, 0x304B}, -- SQUARE HIRAGANA HOKA
 [0x1F201] = {0x30B3, 0x30B3}, -- SQUARED KATAKANA KOKO
 [0x1F202] = 0x30B5, -- SQUARED KATAKANA SA
 [0x1F210] = 0x624B, -- SQUARED CJK UNIFIED IDEOGRAPH-624B
 [0x1F211] = 0x5B57, -- SQUARED CJK UNIFIED IDEOGRAPH-5B57
 [0x1F212] = 0x53CC, -- SQUARED CJK UNIFIED IDEOGRAPH-53CC
 [0x1F213] = 0x30C7, -- SQUARED KATAKANA DE
 [0x1F214] = 0x4E8C, -- SQUARED CJK UNIFIED IDEOGRAPH-4E8C
 [0x1F215] = 0x591A, -- SQUARED CJK UNIFIED IDEOGRAPH-591A
 [0x1F216] = 0x89E3, -- SQUARED CJK UNIFIED IDEOGRAPH-89E3
 [0x1F217] = 0x5929, -- SQUARED CJK UNIFIED IDEOGRAPH-5929
 [0x1F218] = 0x4EA4, -- SQUARED CJK UNIFIED IDEOGRAPH-4EA4
 [0x1F219] = 0x6620, -- SQUARED CJK UNIFIED IDEOGRAPH-6620
 [0x1F21A] = 0x7121, -- SQUARED CJK UNIFIED IDEOGRAPH-7121
 [0x1F21B] = 0x6599, -- SQUARED CJK UNIFIED IDEOGRAPH-6599
 [0x1F21C] = 0x524D, -- SQUARED CJK UNIFIED IDEOGRAPH-524D
 [0x1F21D] = 0x5F8C, -- SQUARED CJK UNIFIED IDEOGRAPH-5F8C
 [0x1F21E] = 0x518D, -- SQUARED CJK UNIFIED IDEOGRAPH-518D
 [0x1F21F] = 0x65B0, -- SQUARED CJK UNIFIED IDEOGRAPH-65B0
 [0x1F220] = 0x521D, -- SQUARED CJK UNIFIED IDEOGRAPH-521D
 [0x1F221] = 0x7D42, -- SQUARED CJK UNIFIED IDEOGRAPH-7D42
 [0x1F222] = 0x751F, -- SQUARED CJK UNIFIED IDEOGRAPH-751F
 [0x1F223] = 0x8CA9, -- SQUARED CJK UNIFIED IDEOGRAPH-8CA9
 [0x1F224] = 0x58F0, -- SQUARED CJK UNIFIED IDEOGRAPH-58F0
 [0x1F225] = 0x5439, -- SQUARED CJK UNIFIED IDEOGRAPH-5439
 [0x1F226] = 0x6F14, -- SQUARED CJK UNIFIED IDEOGRAPH-6F14
 [0x1F227] = 0x6295, -- SQUARED CJK UNIFIED IDEOGRAPH-6295
 [0x1F228] = 0x6355, -- SQUARED CJK UNIFIED IDEOGRAPH-6355
 [0x1F229] = 0x4E00, -- SQUARED CJK UNIFIED IDEOGRAPH-4E00
 [0x1F22A] = 0x4E09, -- SQUARED CJK UNIFIED IDEOGRAPH-4E09
 [0x1F22B] = 0x904A, -- SQUARED CJK UNIFIED IDEOGRAPH-904A
 [0x1F22C] = 0x5DE6, -- SQUARED CJK UNIFIED IDEOGRAPH-5DE6
 [0x1F22D] = 0x4E2D, -- SQUARED CJK UNIFIED IDEOGRAPH-4E2D
 [0x1F22E] = 0x53F3, -- SQUARED CJK UNIFIED IDEOGRAPH-53F3
 [0x1F22F] = 0x6307, -- SQUARED CJK UNIFIED IDEOGRAPH-6307
 [0x1F230] = 0x8D70, -- SQUARED CJK UNIFIED IDEOGRAPH-8D70
 [0x1F231] = 0x6253, -- SQUARED CJK UNIFIED IDEOGRAPH-6253
 [0x1F232] = 0x7981, -- SQUARED CJK UNIFIED IDEOGRAPH-7981
 [0x1F233] = 0x7A7A, -- SQUARED CJK UNIFIED IDEOGRAPH-7A7A
 [0x1F234] = 0x5408, -- SQUARED CJK UNIFIED IDEOGRAPH-5408
 [0x1F235] = 0x6E80, -- SQUARED CJK UNIFIED IDEOGRAPH-6E80
 [0x1F236] = 0x6709, -- SQUARED CJK UNIFIED IDEOGRAPH-6709
 [0x1F237] = 0x6708, -- SQUARED CJK UNIFIED IDEOGRAPH-6708
 [0x1F238] = 0x7533, -- SQUARED CJK UNIFIED IDEOGRAPH-7533
 [0x1F239] = 0x5272, -- SQUARED CJK UNIFIED IDEOGRAPH-5272
 [0x1F23A] = 0x55B6, -- SQUARED CJK UNIFIED IDEOGRAPH-55B6
 [0x1F23B] = 0x914D, -- SQUARED CJK UNIFIED IDEOGRAPH-914D
 [0x1F240] = {0x3014, 0x672C, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
 [0x1F241] = {0x3014, 0x4E09, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
 [0x1F242] = {0x3014, 0x4E8C, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
 [0x1F243] = {0x3014, 0x5B89, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89
 [0x1F244] = {0x3014, 0x70B9, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
 [0x1F245] = {0x3014, 0x6253, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253
 [0x1F246] = {0x3014, 0x76D7, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7
 [0x1F247] = {0x3014, 0x52DD, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
 [0x1F248] = {0x3014, 0x6557, 0x3015}, -- TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
 -- NA   <reserved-1F23C>..<reserved-1F23F>
 [0x1F23C] = {status="disallowed"},
 [0x1F23D] = {status="disallowed"},
 [0x1F23E] = {status="disallowed"},
 [0x1F23F] = {status="disallowed"},
 [0x1F250] = 0x5F97, -- CIRCLED IDEOGRAPH ADVANTAGE
 [0x1F251] = 0x53EF, -- CIRCLED IDEOGRAPH ACCEPT
 [0x1F336] = {status="disallowed"}, -- HOT PEPPER
 [0x1F37D] = {status="disallowed"}, -- FORK AND KNIFE WITH PLATE
 [0x1F3C5] = {status="disallowed"}, -- SPORTS MEDAL
 [0x1F43F] = {status="disallowed"}, -- CHIPMUNK
 [0x1F440] = {status="disallowed"}, -- EYES
 [0x1F441] = {status="disallowed"}, -- EYE
 [0x1F4F8] = {status="disallowed"}, -- CAMERA WITH FLASH
 [0x1F4FF] = {status="disallowed"}, -- PRAYER BEADS
 [0x1F57A] = {status="disallowed"}, -- MAN DANCING
 [0x1F5A4] = {status="disallowed"}, -- BLACK HEART
 [0x1F600] = {status="disallowed"}, -- GRINNING FACE
 [0x1F611] = {status="disallowed"}, -- EXPRESSIONLESS FACE
 [0x1F615] = {status="disallowed"}, -- CONFUSED FACE
 [0x1F616] = {status="disallowed"}, -- CONFOUNDED FACE
 [0x1F617] = {status="disallowed"}, -- KISSING FACE
 [0x1F618] = {status="disallowed"}, -- FACE THROWING A KISS
 [0x1F619] = {status="disallowed"}, -- KISSING FACE WITH SMILING EYES
 [0x1F61A] = {status="disallowed"}, -- KISSING FACE WITH CLOSED EYES
 [0x1F61B] = {status="disallowed"}, -- FACE WITH STUCK-OUT TONGUE
 -- UNAMUSED FACE..PENSIVE FACE
 [0x1F612] = {status="disallowed"},
 [0x1F613] = {status="disallowed"},
 [0x1F614] = {status="disallowed"},
 [0x1F61F] = {status="disallowed"}, -- WORRIED FACE
 -- FACE WITH STUCK-OUT TONGUE AND WINKING EYE..DISAPPOINTED FACE
 [0x1F61C] = {status="disallowed"},
 [0x1F61D] = {status="disallowed"},
 [0x1F61E] = {status="disallowed"},
 [0x1F62C] = {status="disallowed"}, -- GRIMACING FACE
 [0x1F62D] = {status="disallowed"}, -- LOUDLY CRYING FACE
 [0x1F634] = {status="disallowed"}, -- SLEEPING FACE
 [0x1F6D0] = {status="disallowed"}, -- PLACE OF WORSHIP
 -- OCTAGONAL SIGN..SHOPPING TROLLEY
      -- STUPA..PAGODA
 [0x1F6D1] = {status="disallowed"},
 [0x1F6D2] = {status="disallowed"},
 [0x1F6D3] = {status="disallowed"},
 [0x1F6D4] = {status="disallowed"},
 -- NA   <reserved-1F6ED>..<reserved-1F6EF>
 [0x1F6ED] = {status="disallowed"},
 [0x1F6EE] = {status="disallowed"},
 [0x1F6EF] = {status="disallowed"},
 -- NA   <reserved-1F80C>..<reserved-1F80F>
 [0x1F80C] = {status="disallowed"},
 [0x1F80D] = {status="disallowed"},
 [0x1F80E] = {status="disallowed"},
 [0x1F80F] = {status="disallowed"},
 -- NA   <reserved-1F90C>..<reserved-1F90F>
 [0x1F90C] = {status="disallowed"},
 [0x1F90D] = {status="disallowed"},
 [0x1F90E] = {status="disallowed"},
 [0x1F90F] = {status="disallowed"},
 [0x1F91F] = {status="disallowed"}, -- I LOVE YOU HAND SIGN
 [0x1F930] = {status="disallowed"}, -- PREGNANT WOMAN
 [0x1F93F] = {status="disallowed"}, -- NA   <reserved-1F93F>
 [0x1F94C] = {status="disallowed"}, -- CURLING STONE
 -- NA   <reserved-1F94D>..<reserved-1F94F>
 [0x1F94D] = {status="disallowed"},
 [0x1F94E] = {status="disallowed"},
 [0x1F94F] = {status="disallowed"},
 [0x1F9C0] = {status="disallowed"}, -- CHEESE WEDGE
 -- NA   <reserved-2B81E>..<reserved-2B81F>
 [0x2B81E] = {status="disallowed"},
 [0x2B81F] = {status="disallowed"},
 [0x2F800] = 0x4E3D, -- CJK COMPATIBILITY IDEOGRAPH-2F800
 [0x2F801] = 0x4E38, -- CJK COMPATIBILITY IDEOGRAPH-2F801
 [0x2F802] = 0x4E41, -- CJK COMPATIBILITY IDEOGRAPH-2F802
 [0x2F803] = 0x20122, -- CJK COMPATIBILITY IDEOGRAPH-2F803
 [0x2F804] = 0x4F60, -- CJK COMPATIBILITY IDEOGRAPH-2F804
 [0x2F805] = 0x4FAE, -- CJK COMPATIBILITY IDEOGRAPH-2F805
 [0x2F806] = 0x4FBB, -- CJK COMPATIBILITY IDEOGRAPH-2F806
 [0x2F807] = 0x5002, -- CJK COMPATIBILITY IDEOGRAPH-2F807
 [0x2F808] = 0x507A, -- CJK COMPATIBILITY IDEOGRAPH-2F808
 [0x2F809] = 0x5099, -- CJK COMPATIBILITY IDEOGRAPH-2F809
 [0x2F80A] = 0x50E7, -- CJK COMPATIBILITY IDEOGRAPH-2F80A
 [0x2F80B] = 0x50CF, -- CJK COMPATIBILITY IDEOGRAPH-2F80B
 [0x2F80C] = 0x349E, -- CJK COMPATIBILITY IDEOGRAPH-2F80C
 [0x2F80D] = 0x2063A, -- CJK COMPATIBILITY IDEOGRAPH-2F80D
 [0x2F80E] = 0x514D, -- CJK COMPATIBILITY IDEOGRAPH-2F80E
 [0x2F80F] = 0x5154, -- CJK COMPATIBILITY IDEOGRAPH-2F80F
 [0x2F810] = 0x5164, -- CJK COMPATIBILITY IDEOGRAPH-2F810
 [0x2F811] = 0x5177, -- CJK COMPATIBILITY IDEOGRAPH-2F811
 [0x2F812] = 0x2051C, -- CJK COMPATIBILITY IDEOGRAPH-2F812
 [0x2F813] = 0x34B9, -- CJK COMPATIBILITY IDEOGRAPH-2F813
 [0x2F814] = 0x5167, -- CJK COMPATIBILITY IDEOGRAPH-2F814
 [0x2F815] = 0x518D, -- CJK COMPATIBILITY IDEOGRAPH-2F815
 [0x2F816] = 0x2054B, -- CJK COMPATIBILITY IDEOGRAPH-2F816
 [0x2F817] = 0x5197, -- CJK COMPATIBILITY IDEOGRAPH-2F817
 [0x2F818] = 0x51A4, -- CJK COMPATIBILITY IDEOGRAPH-2F818
 [0x2F819] = 0x4ECC, -- CJK COMPATIBILITY IDEOGRAPH-2F819
 [0x2F81A] = 0x51AC, -- CJK COMPATIBILITY IDEOGRAPH-2F81A
 [0x2F81B] = 0x51B5, -- CJK COMPATIBILITY IDEOGRAPH-2F81B
 [0x2F81C] = 0x291DF, -- CJK COMPATIBILITY IDEOGRAPH-2F81C
 [0x2F81D] = 0x51F5, -- CJK COMPATIBILITY IDEOGRAPH-2F81D
 [0x2F81E] = 0x5203, -- CJK COMPATIBILITY IDEOGRAPH-2F81E
 [0x2F81F] = 0x34DF, -- CJK COMPATIBILITY IDEOGRAPH-2F81F
 [0x2F820] = 0x523B, -- CJK COMPATIBILITY IDEOGRAPH-2F820
 [0x2F821] = 0x5246, -- CJK COMPATIBILITY IDEOGRAPH-2F821
 [0x2F822] = 0x5272, -- CJK COMPATIBILITY IDEOGRAPH-2F822
 [0x2F823] = 0x5277, -- CJK COMPATIBILITY IDEOGRAPH-2F823
 [0x2F824] = 0x3515, -- CJK COMPATIBILITY IDEOGRAPH-2F824
 [0x2F825] = 0x52C7, -- CJK COMPATIBILITY IDEOGRAPH-2F825
 [0x2F826] = 0x52C9, -- CJK COMPATIBILITY IDEOGRAPH-2F826
 [0x2F827] = 0x52E4, -- CJK COMPATIBILITY IDEOGRAPH-2F827
 [0x2F828] = 0x52FA, -- CJK COMPATIBILITY IDEOGRAPH-2F828
 [0x2F829] = 0x5305, -- CJK COMPATIBILITY IDEOGRAPH-2F829
 [0x2F82A] = 0x5306, -- CJK COMPATIBILITY IDEOGRAPH-2F82A
 [0x2F82B] = 0x5317, -- CJK COMPATIBILITY IDEOGRAPH-2F82B
 [0x2F82C] = 0x5349, -- CJK COMPATIBILITY IDEOGRAPH-2F82C
 [0x2F82D] = 0x5351, -- CJK COMPATIBILITY IDEOGRAPH-2F82D
 [0x2F82E] = 0x535A, -- CJK COMPATIBILITY IDEOGRAPH-2F82E
 [0x2F82F] = 0x5373, -- CJK COMPATIBILITY IDEOGRAPH-2F82F
 [0x2F830] = 0x537D, -- CJK COMPATIBILITY IDEOGRAPH-2F830
 [0x2F834] = 0x20A2C, -- CJK COMPATIBILITY IDEOGRAPH-2F834
 [0x2F835] = 0x7070, -- CJK COMPATIBILITY IDEOGRAPH-2F835
 [0x2F836] = 0x53CA, -- CJK COMPATIBILITY IDEOGRAPH-2F836
 [0x2F837] = 0x53DF, -- CJK COMPATIBILITY IDEOGRAPH-2F837
 [0x2F838] = 0x20B63, -- CJK COMPATIBILITY IDEOGRAPH-2F838
 [0x2F839] = 0x53EB, -- CJK COMPATIBILITY IDEOGRAPH-2F839
 [0x2F83A] = 0x53F1, -- CJK COMPATIBILITY IDEOGRAPH-2F83A
 [0x2F83B] = 0x5406, -- CJK COMPATIBILITY IDEOGRAPH-2F83B
 [0x2F83C] = 0x549E, -- CJK COMPATIBILITY IDEOGRAPH-2F83C
 [0x2F83D] = 0x5438, -- CJK COMPATIBILITY IDEOGRAPH-2F83D
 [0x2F83E] = 0x5448, -- CJK COMPATIBILITY IDEOGRAPH-2F83E
 [0x2F83F] = 0x5468, -- CJK COMPATIBILITY IDEOGRAPH-2F83F
 [0x2F840] = 0x54A2, -- CJK COMPATIBILITY IDEOGRAPH-2F840
 [0x2F841] = 0x54F6, -- CJK COMPATIBILITY IDEOGRAPH-2F841
 [0x2F842] = 0x5510, -- CJK COMPATIBILITY IDEOGRAPH-2F842
 [0x2F843] = 0x5553, -- CJK COMPATIBILITY IDEOGRAPH-2F843
 [0x2F844] = 0x5563, -- CJK COMPATIBILITY IDEOGRAPH-2F844
 -- CJK COMPATIBILITY IDEOGRAPH-2F831..CJK COMPATIBILITY IDEOGRAPH-2F833
 [0x2F831] = 0x537F,
 [0x2F832] = 0x537F,
 [0x2F833] = 0x537F,
 [0x2F847] = 0x5599, -- CJK COMPATIBILITY IDEOGRAPH-2F847
 [0x2F848] = 0x55AB, -- CJK COMPATIBILITY IDEOGRAPH-2F848
 [0x2F849] = 0x55B3, -- CJK COMPATIBILITY IDEOGRAPH-2F849
 [0x2F84A] = 0x55C2, -- CJK COMPATIBILITY IDEOGRAPH-2F84A
 [0x2F84B] = 0x5716, -- CJK COMPATIBILITY IDEOGRAPH-2F84B
 [0x2F84C] = 0x5606, -- CJK COMPATIBILITY IDEOGRAPH-2F84C
 [0x2F84D] = 0x5717, -- CJK COMPATIBILITY IDEOGRAPH-2F84D
 [0x2F84E] = 0x5651, -- CJK COMPATIBILITY IDEOGRAPH-2F84E
 [0x2F84F] = 0x5674, -- CJK COMPATIBILITY IDEOGRAPH-2F84F
 [0x2F850] = 0x5207, -- CJK COMPATIBILITY IDEOGRAPH-2F850
 [0x2F851] = 0x58EE, -- CJK COMPATIBILITY IDEOGRAPH-2F851
 [0x2F852] = 0x57CE, -- CJK COMPATIBILITY IDEOGRAPH-2F852
 [0x2F853] = 0x57F4, -- CJK COMPATIBILITY IDEOGRAPH-2F853
 [0x2F854] = 0x580D, -- CJK COMPATIBILITY IDEOGRAPH-2F854
 [0x2F855] = 0x578B, -- CJK COMPATIBILITY IDEOGRAPH-2F855
 [0x2F856] = 0x5832, -- CJK COMPATIBILITY IDEOGRAPH-2F856
 [0x2F857] = 0x5831, -- CJK COMPATIBILITY IDEOGRAPH-2F857
 [0x2F858] = 0x58AC, -- CJK COMPATIBILITY IDEOGRAPH-2F858
 [0x2F859] = 0x214E4, -- CJK COMPATIBILITY IDEOGRAPH-2F859
 [0x2F85A] = 0x58F2, -- CJK COMPATIBILITY IDEOGRAPH-2F85A
 [0x2F85B] = 0x58F7, -- CJK COMPATIBILITY IDEOGRAPH-2F85B
 [0x2F85C] = 0x5906, -- CJK COMPATIBILITY IDEOGRAPH-2F85C
 [0x2F85D] = 0x591A, -- CJK COMPATIBILITY IDEOGRAPH-2F85D
 [0x2F85E] = 0x5922, -- CJK COMPATIBILITY IDEOGRAPH-2F85E
 [0x2F85F] = 0x5962, -- CJK COMPATIBILITY IDEOGRAPH-2F85F
 [0x2F860] = 0x216A8, -- CJK COMPATIBILITY IDEOGRAPH-2F860
 [0x2F861] = 0x216EA, -- CJK COMPATIBILITY IDEOGRAPH-2F861
 [0x2F862] = 0x59EC, -- CJK COMPATIBILITY IDEOGRAPH-2F862
 [0x2F863] = 0x5A1B, -- CJK COMPATIBILITY IDEOGRAPH-2F863
 [0x2F864] = 0x5A27, -- CJK COMPATIBILITY IDEOGRAPH-2F864
 [0x2F865] = 0x59D8, -- CJK COMPATIBILITY IDEOGRAPH-2F865
 [0x2F866] = 0x5A66, -- CJK COMPATIBILITY IDEOGRAPH-2F866
 [0x2F867] = 0x36EE, -- CJK COMPATIBILITY IDEOGRAPH-2F867
 [0x2F868] = {status="disallowed"}, -- CJK COMPATIBILITY IDEOGRAPH-2F868
 [0x2F869] = 0x5B08, -- CJK COMPATIBILITY IDEOGRAPH-2F869
 -- CJK COMPATIBILITY IDEOGRAPH-2F845..CJK COMPATIBILITY IDEOGRAPH-2F846
 [0x2F845] = 0x5584,
 [0x2F846] = 0x5584,
 [0x2F86C] = 0x219C8, -- CJK COMPATIBILITY IDEOGRAPH-2F86C
 [0x2F86D] = 0x5BC3, -- CJK COMPATIBILITY IDEOGRAPH-2F86D
 [0x2F86E] = 0x5BD8, -- CJK COMPATIBILITY IDEOGRAPH-2F86E
 [0x2F86F] = 0x5BE7, -- CJK COMPATIBILITY IDEOGRAPH-2F86F
 [0x2F870] = 0x5BF3, -- CJK COMPATIBILITY IDEOGRAPH-2F870
 [0x2F871] = 0x21B18, -- CJK COMPATIBILITY IDEOGRAPH-2F871
 [0x2F872] = 0x5BFF, -- CJK COMPATIBILITY IDEOGRAPH-2F872
 [0x2F873] = 0x5C06, -- CJK COMPATIBILITY IDEOGRAPH-2F873
 [0x2F874] = {status="disallowed"}, -- CJK COMPATIBILITY IDEOGRAPH-2F874
 [0x2F875] = 0x5C22, -- CJK COMPATIBILITY IDEOGRAPH-2F875
 [0x2F876] = 0x3781, -- CJK COMPATIBILITY IDEOGRAPH-2F876
 [0x2F877] = 0x5C60, -- CJK COMPATIBILITY IDEOGRAPH-2F877
 [0x2F878] = 0x5C6E, -- CJK COMPATIBILITY IDEOGRAPH-2F878
 [0x2F879] = 0x5CC0, -- CJK COMPATIBILITY IDEOGRAPH-2F879
 [0x2F87A] = 0x5C8D, -- CJK COMPATIBILITY IDEOGRAPH-2F87A
 [0x2F87B] = 0x21DE4, -- CJK COMPATIBILITY IDEOGRAPH-2F87B
 [0x2F87C] = 0x5D43, -- CJK COMPATIBILITY IDEOGRAPH-2F87C
 [0x2F87D] = 0x21DE6, -- CJK COMPATIBILITY IDEOGRAPH-2F87D
 [0x2F87E] = 0x5D6E, -- CJK COMPATIBILITY IDEOGRAPH-2F87E
 [0x2F87F] = 0x5D6B, -- CJK COMPATIBILITY IDEOGRAPH-2F87F
 [0x2F880] = 0x5D7C, -- CJK COMPATIBILITY IDEOGRAPH-2F880
 [0x2F881] = 0x5DE1, -- CJK COMPATIBILITY IDEOGRAPH-2F881
 [0x2F882] = 0x5DE2, -- CJK COMPATIBILITY IDEOGRAPH-2F882
 [0x2F883] = 0x382F, -- CJK COMPATIBILITY IDEOGRAPH-2F883
 [0x2F884] = 0x5DFD, -- CJK COMPATIBILITY IDEOGRAPH-2F884
 [0x2F885] = 0x5E28, -- CJK COMPATIBILITY IDEOGRAPH-2F885
 [0x2F886] = 0x5E3D, -- CJK COMPATIBILITY IDEOGRAPH-2F886
 [0x2F887] = 0x5E69, -- CJK COMPATIBILITY IDEOGRAPH-2F887
 [0x2F888] = 0x3862, -- CJK COMPATIBILITY IDEOGRAPH-2F888
 [0x2F889] = 0x22183, -- CJK COMPATIBILITY IDEOGRAPH-2F889
 [0x2F88A] = 0x387C, -- CJK COMPATIBILITY IDEOGRAPH-2F88A
 [0x2F88B] = 0x5EB0, -- CJK COMPATIBILITY IDEOGRAPH-2F88B
 [0x2F88C] = 0x5EB3, -- CJK COMPATIBILITY IDEOGRAPH-2F88C
 [0x2F88D] = 0x5EB6, -- CJK COMPATIBILITY IDEOGRAPH-2F88D
 [0x2F88E] = 0x5ECA, -- CJK COMPATIBILITY IDEOGRAPH-2F88E
 [0x2F88F] = 0x2A392, -- CJK COMPATIBILITY IDEOGRAPH-2F88F
 [0x2F890] = 0x5EFE, -- CJK COMPATIBILITY IDEOGRAPH-2F890
 -- CJK COMPATIBILITY IDEOGRAPH-2F86A..CJK COMPATIBILITY IDEOGRAPH-2F86B
 [0x2F86A] = 0x5B3E,
 [0x2F86B] = 0x5B3E,
 [0x2F893] = 0x8201, -- CJK COMPATIBILITY IDEOGRAPH-2F893
 -- CJK COMPATIBILITY IDEOGRAPH-2F891..CJK COMPATIBILITY IDEOGRAPH-2F892
 [0x2F891] = 0x22331,
 [0x2F892] = 0x22331,
 [0x2F896] = 0x38C7, -- CJK COMPATIBILITY IDEOGRAPH-2F896
 [0x2F897] = 0x232B8, -- CJK COMPATIBILITY IDEOGRAPH-2F897
 [0x2F898] = 0x261DA, -- CJK COMPATIBILITY IDEOGRAPH-2F898
 [0x2F899] = 0x5F62, -- CJK COMPATIBILITY IDEOGRAPH-2F899
 [0x2F89A] = 0x5F6B, -- CJK COMPATIBILITY IDEOGRAPH-2F89A
 [0x2F89B] = 0x38E3, -- CJK COMPATIBILITY IDEOGRAPH-2F89B
 [0x2F89C] = 0x5F9A, -- CJK COMPATIBILITY IDEOGRAPH-2F89C
 [0x2F89D] = 0x5FCD, -- CJK COMPATIBILITY IDEOGRAPH-2F89D
 [0x2F89E] = 0x5FD7, -- CJK COMPATIBILITY IDEOGRAPH-2F89E
 [0x2F89F] = 0x5FF9, -- CJK COMPATIBILITY IDEOGRAPH-2F89F
 [0x2F8A0] = 0x6081, -- CJK COMPATIBILITY IDEOGRAPH-2F8A0
 [0x2F8A1] = 0x393A, -- CJK COMPATIBILITY IDEOGRAPH-2F8A1
 [0x2F8A2] = 0x391C, -- CJK COMPATIBILITY IDEOGRAPH-2F8A2
 [0x2F8A3] = 0x6094, -- CJK COMPATIBILITY IDEOGRAPH-2F8A3
 [0x2F8A4] = 0x226D4, -- CJK COMPATIBILITY IDEOGRAPH-2F8A4
 [0x2F8A5] = 0x60C7, -- CJK COMPATIBILITY IDEOGRAPH-2F8A5
 [0x2F8A6] = 0x6148, -- CJK COMPATIBILITY IDEOGRAPH-2F8A6
 [0x2F8A7] = 0x614C, -- CJK COMPATIBILITY IDEOGRAPH-2F8A7
 [0x2F8A8] = 0x614E, -- CJK COMPATIBILITY IDEOGRAPH-2F8A8
 [0x2F8A9] = 0x614C, -- CJK COMPATIBILITY IDEOGRAPH-2F8A9
 [0x2F8AA] = 0x617A, -- CJK COMPATIBILITY IDEOGRAPH-2F8AA
 [0x2F8AB] = 0x618E, -- CJK COMPATIBILITY IDEOGRAPH-2F8AB
 [0x2F8AC] = 0x61B2, -- CJK COMPATIBILITY IDEOGRAPH-2F8AC
 [0x2F8AD] = 0x61A4, -- CJK COMPATIBILITY IDEOGRAPH-2F8AD
 [0x2F8AE] = 0x61AF, -- CJK COMPATIBILITY IDEOGRAPH-2F8AE
 [0x2F8AF] = 0x61DE, -- CJK COMPATIBILITY IDEOGRAPH-2F8AF
 [0x2F8B0] = 0x61F2, -- CJK COMPATIBILITY IDEOGRAPH-2F8B0
 [0x2F8B1] = 0x61F6, -- CJK COMPATIBILITY IDEOGRAPH-2F8B1
 [0x2F8B2] = 0x6210, -- CJK COMPATIBILITY IDEOGRAPH-2F8B2
 [0x2F8B3] = 0x621B, -- CJK COMPATIBILITY IDEOGRAPH-2F8B3
 [0x2F8B4] = 0x625D, -- CJK COMPATIBILITY IDEOGRAPH-2F8B4
 [0x2F8B5] = 0x62B1, -- CJK COMPATIBILITY IDEOGRAPH-2F8B5
 [0x2F8B6] = 0x62D4, -- CJK COMPATIBILITY IDEOGRAPH-2F8B6
 [0x2F8B7] = 0x6350, -- CJK COMPATIBILITY IDEOGRAPH-2F8B7
 [0x2F8B8] = 0x22B0C, -- CJK COMPATIBILITY IDEOGRAPH-2F8B8
 [0x2F8B9] = 0x633D, -- CJK COMPATIBILITY IDEOGRAPH-2F8B9
 [0x2F8BA] = 0x62FC, -- CJK COMPATIBILITY IDEOGRAPH-2F8BA
 [0x2F8BB] = 0x6368, -- CJK COMPATIBILITY IDEOGRAPH-2F8BB
 [0x2F8BC] = 0x6383, -- CJK COMPATIBILITY IDEOGRAPH-2F8BC
 [0x2F8BD] = 0x63E4, -- CJK COMPATIBILITY IDEOGRAPH-2F8BD
 [0x2F8BE] = 0x22BF1, -- CJK COMPATIBILITY IDEOGRAPH-2F8BE
 [0x2F8BF] = 0x6422, -- CJK COMPATIBILITY IDEOGRAPH-2F8BF
 [0x2F8C0] = 0x63C5, -- CJK COMPATIBILITY IDEOGRAPH-2F8C0
 [0x2F8C1] = 0x63A9, -- CJK COMPATIBILITY IDEOGRAPH-2F8C1
 [0x2F8C2] = 0x3A2E, -- CJK COMPATIBILITY IDEOGRAPH-2F8C2
 [0x2F8C3] = 0x6469, -- CJK COMPATIBILITY IDEOGRAPH-2F8C3
 [0x2F8C4] = 0x647E, -- CJK COMPATIBILITY IDEOGRAPH-2F8C4
 [0x2F8C5] = 0x649D, -- CJK COMPATIBILITY IDEOGRAPH-2F8C5
 [0x2F8C6] = 0x6477, -- CJK COMPATIBILITY IDEOGRAPH-2F8C6
 [0x2F8C7] = 0x3A6C, -- CJK COMPATIBILITY IDEOGRAPH-2F8C7
 [0x2F8C8] = 0x654F, -- CJK COMPATIBILITY IDEOGRAPH-2F8C8
 [0x2F8C9] = 0x656C, -- CJK COMPATIBILITY IDEOGRAPH-2F8C9
 [0x2F8CA] = 0x2300A, -- CJK COMPATIBILITY IDEOGRAPH-2F8CA
 [0x2F8CB] = 0x65E3, -- CJK COMPATIBILITY IDEOGRAPH-2F8CB
 [0x2F8CC] = 0x66F8, -- CJK COMPATIBILITY IDEOGRAPH-2F8CC
 [0x2F8CD] = 0x6649, -- CJK COMPATIBILITY IDEOGRAPH-2F8CD
 [0x2F8CE] = 0x3B19, -- CJK COMPATIBILITY IDEOGRAPH-2F8CE
 [0x2F8CF] = 0x6691, -- CJK COMPATIBILITY IDEOGRAPH-2F8CF
 [0x2F8D0] = 0x3B08, -- CJK COMPATIBILITY IDEOGRAPH-2F8D0
 [0x2F8D1] = 0x3AE4, -- CJK COMPATIBILITY IDEOGRAPH-2F8D1
 [0x2F8D2] = 0x5192, -- CJK COMPATIBILITY IDEOGRAPH-2F8D2
 [0x2F8D3] = 0x5195, -- CJK COMPATIBILITY IDEOGRAPH-2F8D3
 [0x2F8D4] = 0x6700, -- CJK COMPATIBILITY IDEOGRAPH-2F8D4
 [0x2F8D5] = 0x669C, -- CJK COMPATIBILITY IDEOGRAPH-2F8D5
 [0x2F8D6] = 0x80AD, -- CJK COMPATIBILITY IDEOGRAPH-2F8D6
 [0x2F8D7] = 0x43D9, -- CJK COMPATIBILITY IDEOGRAPH-2F8D7
 [0x2F8D8] = 0x6717, -- CJK COMPATIBILITY IDEOGRAPH-2F8D8
 [0x2F8D9] = 0x671B, -- CJK COMPATIBILITY IDEOGRAPH-2F8D9
 [0x2F8DA] = 0x6721, -- CJK COMPATIBILITY IDEOGRAPH-2F8DA
 [0x2F8DB] = 0x675E, -- CJK COMPATIBILITY IDEOGRAPH-2F8DB
 [0x2F8DC] = 0x6753, -- CJK COMPATIBILITY IDEOGRAPH-2F8DC
 [0x2F8DD] = 0x233C3, -- CJK COMPATIBILITY IDEOGRAPH-2F8DD
 [0x2F8DE] = 0x3B49, -- CJK COMPATIBILITY IDEOGRAPH-2F8DE
 [0x2F8DF] = 0x67FA, -- CJK COMPATIBILITY IDEOGRAPH-2F8DF
 [0x2F8E0] = 0x6785, -- CJK COMPATIBILITY IDEOGRAPH-2F8E0
 [0x2F8E1] = 0x6852, -- CJK COMPATIBILITY IDEOGRAPH-2F8E1
 [0x2F8E2] = 0x6885, -- CJK COMPATIBILITY IDEOGRAPH-2F8E2
 [0x2F8E3] = 0x2346D, -- CJK COMPATIBILITY IDEOGRAPH-2F8E3
 [0x2F8E4] = 0x688E, -- CJK COMPATIBILITY IDEOGRAPH-2F8E4
 [0x2F8E5] = 0x681F, -- CJK COMPATIBILITY IDEOGRAPH-2F8E5
 [0x2F8E6] = 0x6914, -- CJK COMPATIBILITY IDEOGRAPH-2F8E6
 [0x2F8E7] = 0x3B9D, -- CJK COMPATIBILITY IDEOGRAPH-2F8E7
 [0x2F8E8] = 0x6942, -- CJK COMPATIBILITY IDEOGRAPH-2F8E8
 [0x2F8E9] = 0x69A3, -- CJK COMPATIBILITY IDEOGRAPH-2F8E9
 [0x2F8EA] = 0x69EA, -- CJK COMPATIBILITY IDEOGRAPH-2F8EA
 [0x2F8EB] = 0x6AA8, -- CJK COMPATIBILITY IDEOGRAPH-2F8EB
 [0x2F8EC] = 0x236A3, -- CJK COMPATIBILITY IDEOGRAPH-2F8EC
 [0x2F8ED] = 0x6ADB, -- CJK COMPATIBILITY IDEOGRAPH-2F8ED
 [0x2F8EE] = 0x3C18, -- CJK COMPATIBILITY IDEOGRAPH-2F8EE
 [0x2F8EF] = 0x6B21, -- CJK COMPATIBILITY IDEOGRAPH-2F8EF
 [0x2F8F0] = 0x238A7, -- CJK COMPATIBILITY IDEOGRAPH-2F8F0
 [0x2F8F1] = 0x6B54, -- CJK COMPATIBILITY IDEOGRAPH-2F8F1
 [0x2F8F2] = 0x3C4E, -- CJK COMPATIBILITY IDEOGRAPH-2F8F2
 [0x2F8F3] = 0x6B72, -- CJK COMPATIBILITY IDEOGRAPH-2F8F3
 [0x2F8F4] = 0x6B9F, -- CJK COMPATIBILITY IDEOGRAPH-2F8F4
 [0x2F8F5] = 0x6BBA, -- CJK COMPATIBILITY IDEOGRAPH-2F8F5
 [0x2F8F6] = 0x6BBB, -- CJK COMPATIBILITY IDEOGRAPH-2F8F6
 [0x2F8F7] = 0x23A8D, -- CJK COMPATIBILITY IDEOGRAPH-2F8F7
 [0x2F8F8] = 0x21D0B, -- CJK COMPATIBILITY IDEOGRAPH-2F8F8
 [0x2F8F9] = 0x23AFA, -- CJK COMPATIBILITY IDEOGRAPH-2F8F9
 [0x2F8FA] = 0x6C4E, -- CJK COMPATIBILITY IDEOGRAPH-2F8FA
 [0x2F8FB] = 0x23CBC, -- CJK COMPATIBILITY IDEOGRAPH-2F8FB
 [0x2F8FC] = 0x6CBF, -- CJK COMPATIBILITY IDEOGRAPH-2F8FC
 [0x2F8FD] = 0x6CCD, -- CJK COMPATIBILITY IDEOGRAPH-2F8FD
 [0x2F8FE] = 0x6C67, -- CJK COMPATIBILITY IDEOGRAPH-2F8FE
 [0x2F8FF] = 0x6D16, -- CJK COMPATIBILITY IDEOGRAPH-2F8FF
 [0x2F900] = 0x6D3E, -- CJK COMPATIBILITY IDEOGRAPH-2F900
 [0x2F901] = 0x6D77, -- CJK COMPATIBILITY IDEOGRAPH-2F901
 [0x2F902] = 0x6D41, -- CJK COMPATIBILITY IDEOGRAPH-2F902
 [0x2F903] = 0x6D69, -- CJK COMPATIBILITY IDEOGRAPH-2F903
 [0x2F904] = 0x6D78, -- CJK COMPATIBILITY IDEOGRAPH-2F904
 [0x2F905] = 0x6D85, -- CJK COMPATIBILITY IDEOGRAPH-2F905
 [0x2F906] = 0x23D1E, -- CJK COMPATIBILITY IDEOGRAPH-2F906
 [0x2F907] = 0x6D34, -- CJK COMPATIBILITY IDEOGRAPH-2F907
 [0x2F908] = 0x6E2F, -- CJK COMPATIBILITY IDEOGRAPH-2F908
 [0x2F909] = 0x6E6E, -- CJK COMPATIBILITY IDEOGRAPH-2F909
 [0x2F90A] = 0x3D33, -- CJK COMPATIBILITY IDEOGRAPH-2F90A
 [0x2F90B] = 0x6ECB, -- CJK COMPATIBILITY IDEOGRAPH-2F90B
 [0x2F90C] = 0x6EC7, -- CJK COMPATIBILITY IDEOGRAPH-2F90C
 [0x2F90D] = 0x23ED1, -- CJK COMPATIBILITY IDEOGRAPH-2F90D
 [0x2F90E] = 0x6DF9, -- CJK COMPATIBILITY IDEOGRAPH-2F90E
 [0x2F90F] = 0x6F6E, -- CJK COMPATIBILITY IDEOGRAPH-2F90F
 [0x2F910] = 0x23F5E, -- CJK COMPATIBILITY IDEOGRAPH-2F910
 [0x2F911] = 0x23F8E, -- CJK COMPATIBILITY IDEOGRAPH-2F911
 [0x2F912] = 0x6FC6, -- CJK COMPATIBILITY IDEOGRAPH-2F912
 [0x2F913] = 0x7039, -- CJK COMPATIBILITY IDEOGRAPH-2F913
 [0x2F914] = 0x701E, -- CJK COMPATIBILITY IDEOGRAPH-2F914
 [0x2F915] = 0x701B, -- CJK COMPATIBILITY IDEOGRAPH-2F915
 [0x2F916] = 0x3D96, -- CJK COMPATIBILITY IDEOGRAPH-2F916
 [0x2F917] = 0x704A, -- CJK COMPATIBILITY IDEOGRAPH-2F917
 [0x2F918] = 0x707D, -- CJK COMPATIBILITY IDEOGRAPH-2F918
 [0x2F919] = 0x7077, -- CJK COMPATIBILITY IDEOGRAPH-2F919
 [0x2F91A] = 0x70AD, -- CJK COMPATIBILITY IDEOGRAPH-2F91A
 [0x2F91B] = 0x20525, -- CJK COMPATIBILITY IDEOGRAPH-2F91B
 [0x2F91C] = 0x7145, -- CJK COMPATIBILITY IDEOGRAPH-2F91C
 [0x2F91D] = 0x24263, -- CJK COMPATIBILITY IDEOGRAPH-2F91D
 [0x2F91E] = 0x719C, -- CJK COMPATIBILITY IDEOGRAPH-2F91E
 [0x2F91F] = {status="disallowed"}, -- CJK COMPATIBILITY IDEOGRAPH-2F91F
 [0x2F920] = 0x7228, -- CJK COMPATIBILITY IDEOGRAPH-2F920
 [0x2F921] = 0x7235, -- CJK COMPATIBILITY IDEOGRAPH-2F921
 [0x2F922] = 0x7250, -- CJK COMPATIBILITY IDEOGRAPH-2F922
 [0x2F923] = 0x24608, -- CJK COMPATIBILITY IDEOGRAPH-2F923
 [0x2F924] = 0x7280, -- CJK COMPATIBILITY IDEOGRAPH-2F924
 [0x2F925] = 0x7295, -- CJK COMPATIBILITY IDEOGRAPH-2F925
 [0x2F926] = 0x24735, -- CJK COMPATIBILITY IDEOGRAPH-2F926
 [0x2F927] = 0x24814, -- CJK COMPATIBILITY IDEOGRAPH-2F927
 [0x2F928] = 0x737A, -- CJK COMPATIBILITY IDEOGRAPH-2F928
 [0x2F929] = 0x738B, -- CJK COMPATIBILITY IDEOGRAPH-2F929
 [0x2F92A] = 0x3EAC, -- CJK COMPATIBILITY IDEOGRAPH-2F92A
 [0x2F92B] = 0x73A5, -- CJK COMPATIBILITY IDEOGRAPH-2F92B
 -- CJK COMPATIBILITY IDEOGRAPH-2F894..CJK COMPATIBILITY IDEOGRAPH-2F895
 [0x2F894] = 0x5F22,
 [0x2F895] = 0x5F22,
 [0x2F92E] = 0x7447, -- CJK COMPATIBILITY IDEOGRAPH-2F92E
 [0x2F92F] = 0x745C, -- CJK COMPATIBILITY IDEOGRAPH-2F92F
 [0x2F930] = 0x7471, -- CJK COMPATIBILITY IDEOGRAPH-2F930
 [0x2F931] = 0x7485, -- CJK COMPATIBILITY IDEOGRAPH-2F931
 [0x2F932] = 0x74CA, -- CJK COMPATIBILITY IDEOGRAPH-2F932
 [0x2F933] = 0x3F1B, -- CJK COMPATIBILITY IDEOGRAPH-2F933
 [0x2F934] = 0x7524, -- CJK COMPATIBILITY IDEOGRAPH-2F934
 [0x2F935] = 0x24C36, -- CJK COMPATIBILITY IDEOGRAPH-2F935
 [0x2F936] = 0x753E, -- CJK COMPATIBILITY IDEOGRAPH-2F936
 [0x2F937] = 0x24C92, -- CJK COMPATIBILITY IDEOGRAPH-2F937
 [0x2F938] = 0x7570, -- CJK COMPATIBILITY IDEOGRAPH-2F938
 [0x2F939] = 0x2219F, -- CJK COMPATIBILITY IDEOGRAPH-2F939
 [0x2F93A] = 0x7610, -- CJK COMPATIBILITY IDEOGRAPH-2F93A
 [0x2F93B] = 0x24FA1, -- CJK COMPATIBILITY IDEOGRAPH-2F93B
 [0x2F93C] = 0x24FB8, -- CJK COMPATIBILITY IDEOGRAPH-2F93C
 [0x2F93D] = 0x25044, -- CJK COMPATIBILITY IDEOGRAPH-2F93D
 [0x2F93E] = 0x3FFC, -- CJK COMPATIBILITY IDEOGRAPH-2F93E
 [0x2F93F] = 0x4008, -- CJK COMPATIBILITY IDEOGRAPH-2F93F
 [0x2F940] = 0x76F4, -- CJK COMPATIBILITY IDEOGRAPH-2F940
 [0x2F941] = 0x250F3, -- CJK COMPATIBILITY IDEOGRAPH-2F941
 [0x2F942] = 0x250F2, -- CJK COMPATIBILITY IDEOGRAPH-2F942
 [0x2F943] = 0x25119, -- CJK COMPATIBILITY IDEOGRAPH-2F943
 [0x2F944] = 0x25133, -- CJK COMPATIBILITY IDEOGRAPH-2F944
 [0x2F945] = 0x771E, -- CJK COMPATIBILITY IDEOGRAPH-2F945
 -- CJK COMPATIBILITY IDEOGRAPH-2F92C..CJK COMPATIBILITY IDEOGRAPH-2F92D
 [0x2F92C] = 0x3EB8,
 [0x2F92D] = 0x3EB8,
 [0x2F948] = 0x774A, -- CJK COMPATIBILITY IDEOGRAPH-2F948
 [0x2F949] = 0x4039, -- CJK COMPATIBILITY IDEOGRAPH-2F949
 [0x2F94A] = 0x778B, -- CJK COMPATIBILITY IDEOGRAPH-2F94A
 [0x2F94B] = 0x4046, -- CJK COMPATIBILITY IDEOGRAPH-2F94B
 [0x2F94C] = 0x4096, -- CJK COMPATIBILITY IDEOGRAPH-2F94C
 [0x2F94D] = 0x2541D, -- CJK COMPATIBILITY IDEOGRAPH-2F94D
 [0x2F94E] = 0x784E, -- CJK COMPATIBILITY IDEOGRAPH-2F94E
 [0x2F94F] = 0x788C, -- CJK COMPATIBILITY IDEOGRAPH-2F94F
 [0x2F950] = 0x78CC, -- CJK COMPATIBILITY IDEOGRAPH-2F950
 [0x2F951] = 0x40E3, -- CJK COMPATIBILITY IDEOGRAPH-2F951
 [0x2F952] = 0x25626, -- CJK COMPATIBILITY IDEOGRAPH-2F952
 [0x2F953] = 0x7956, -- CJK COMPATIBILITY IDEOGRAPH-2F953
 [0x2F954] = 0x2569A, -- CJK COMPATIBILITY IDEOGRAPH-2F954
 [0x2F955] = 0x256C5, -- CJK COMPATIBILITY IDEOGRAPH-2F955
 [0x2F956] = 0x798F, -- CJK COMPATIBILITY IDEOGRAPH-2F956
 [0x2F957] = 0x79EB, -- CJK COMPATIBILITY IDEOGRAPH-2F957
 [0x2F958] = 0x412F, -- CJK COMPATIBILITY IDEOGRAPH-2F958
 [0x2F959] = 0x7A40, -- CJK COMPATIBILITY IDEOGRAPH-2F959
 [0x2F95A] = 0x7A4A, -- CJK COMPATIBILITY IDEOGRAPH-2F95A
 [0x2F95B] = 0x7A4F, -- CJK COMPATIBILITY IDEOGRAPH-2F95B
 [0x2F95C] = 0x2597C, -- CJK COMPATIBILITY IDEOGRAPH-2F95C
 -- CJK COMPATIBILITY IDEOGRAPH-2F946..CJK COMPATIBILITY IDEOGRAPH-2F947
 [0x2F946] = 0x771F,
 [0x2F947] = 0x771F,
 [0x2F95F] = {status="disallowed"}, -- CJK COMPATIBILITY IDEOGRAPH-2F95F
 [0x2F960] = 0x4202, -- CJK COMPATIBILITY IDEOGRAPH-2F960
 [0x2F961] = 0x25BAB, -- CJK COMPATIBILITY IDEOGRAPH-2F961
 [0x2F962] = 0x7BC6, -- CJK COMPATIBILITY IDEOGRAPH-2F962
 [0x2F963] = 0x7BC9, -- CJK COMPATIBILITY IDEOGRAPH-2F963
 [0x2F964] = 0x4227, -- CJK COMPATIBILITY IDEOGRAPH-2F964
 [0x2F965] = 0x25C80, -- CJK COMPATIBILITY IDEOGRAPH-2F965
 [0x2F966] = 0x7CD2, -- CJK COMPATIBILITY IDEOGRAPH-2F966
 [0x2F967] = 0x42A0, -- CJK COMPATIBILITY IDEOGRAPH-2F967
 [0x2F968] = 0x7CE8, -- CJK COMPATIBILITY IDEOGRAPH-2F968
 [0x2F969] = 0x7CE3, -- CJK COMPATIBILITY IDEOGRAPH-2F969
 [0x2F96A] = 0x7D00, -- CJK COMPATIBILITY IDEOGRAPH-2F96A
 [0x2F96B] = 0x25F86, -- CJK COMPATIBILITY IDEOGRAPH-2F96B
 [0x2F96C] = 0x7D63, -- CJK COMPATIBILITY IDEOGRAPH-2F96C
 [0x2F96D] = 0x4301, -- CJK COMPATIBILITY IDEOGRAPH-2F96D
 [0x2F96E] = 0x7DC7, -- CJK COMPATIBILITY IDEOGRAPH-2F96E
 [0x2F96F] = 0x7E02, -- CJK COMPATIBILITY IDEOGRAPH-2F96F
 [0x2F970] = 0x7E45, -- CJK COMPATIBILITY IDEOGRAPH-2F970
 [0x2F971] = 0x4334, -- CJK COMPATIBILITY IDEOGRAPH-2F971
 [0x2F972] = 0x26228, -- CJK COMPATIBILITY IDEOGRAPH-2F972
 [0x2F973] = 0x26247, -- CJK COMPATIBILITY IDEOGRAPH-2F973
 [0x2F974] = 0x4359, -- CJK COMPATIBILITY IDEOGRAPH-2F974
 [0x2F975] = 0x262D9, -- CJK COMPATIBILITY IDEOGRAPH-2F975
 [0x2F976] = 0x7F7A, -- CJK COMPATIBILITY IDEOGRAPH-2F976
 [0x2F977] = 0x2633E, -- CJK COMPATIBILITY IDEOGRAPH-2F977
 [0x2F978] = 0x7F95, -- CJK COMPATIBILITY IDEOGRAPH-2F978
 [0x2F979] = 0x7FFA, -- CJK COMPATIBILITY IDEOGRAPH-2F979
 [0x2F97A] = 0x8005, -- CJK COMPATIBILITY IDEOGRAPH-2F97A
 [0x2F97B] = 0x264DA, -- CJK COMPATIBILITY IDEOGRAPH-2F97B
 [0x2F97C] = 0x26523, -- CJK COMPATIBILITY IDEOGRAPH-2F97C
 [0x2F97D] = 0x8060, -- CJK COMPATIBILITY IDEOGRAPH-2F97D
 [0x2F97E] = 0x265A8, -- CJK COMPATIBILITY IDEOGRAPH-2F97E
 [0x2F97F] = 0x8070, -- CJK COMPATIBILITY IDEOGRAPH-2F97F
 [0x2F980] = 0x2335F, -- CJK COMPATIBILITY IDEOGRAPH-2F980
 [0x2F981] = 0x43D5, -- CJK COMPATIBILITY IDEOGRAPH-2F981
 [0x2F982] = 0x80B2, -- CJK COMPATIBILITY IDEOGRAPH-2F982
 [0x2F983] = 0x8103, -- CJK COMPATIBILITY IDEOGRAPH-2F983
 [0x2F984] = 0x440B, -- CJK COMPATIBILITY IDEOGRAPH-2F984
 [0x2F985] = 0x813E, -- CJK COMPATIBILITY IDEOGRAPH-2F985
 [0x2F986] = 0x5AB5, -- CJK COMPATIBILITY IDEOGRAPH-2F986
 [0x2F987] = 0x267A7, -- CJK COMPATIBILITY IDEOGRAPH-2F987
 [0x2F988] = 0x267B5, -- CJK COMPATIBILITY IDEOGRAPH-2F988
 [0x2F989] = 0x23393, -- CJK COMPATIBILITY IDEOGRAPH-2F989
 [0x2F98A] = 0x2339C, -- CJK COMPATIBILITY IDEOGRAPH-2F98A
 [0x2F98B] = 0x8201, -- CJK COMPATIBILITY IDEOGRAPH-2F98B
 [0x2F98C] = 0x8204, -- CJK COMPATIBILITY IDEOGRAPH-2F98C
 [0x2F98D] = 0x8F9E, -- CJK COMPATIBILITY IDEOGRAPH-2F98D
 [0x2F98E] = 0x446B, -- CJK COMPATIBILITY IDEOGRAPH-2F98E
 [0x2F98F] = 0x8291, -- CJK COMPATIBILITY IDEOGRAPH-2F98F
 [0x2F990] = 0x828B, -- CJK COMPATIBILITY IDEOGRAPH-2F990
 [0x2F991] = 0x829D, -- CJK COMPATIBILITY IDEOGRAPH-2F991
 [0x2F992] = 0x52B3, -- CJK COMPATIBILITY IDEOGRAPH-2F992
 [0x2F993] = 0x82B1, -- CJK COMPATIBILITY IDEOGRAPH-2F993
 [0x2F994] = 0x82B3, -- CJK COMPATIBILITY IDEOGRAPH-2F994
 [0x2F995] = 0x82BD, -- CJK COMPATIBILITY IDEOGRAPH-2F995
 [0x2F996] = 0x82E6, -- CJK COMPATIBILITY IDEOGRAPH-2F996
 [0x2F997] = 0x26B3C, -- CJK COMPATIBILITY IDEOGRAPH-2F997
 [0x2F998] = 0x82E5, -- CJK COMPATIBILITY IDEOGRAPH-2F998
 [0x2F999] = 0x831D, -- CJK COMPATIBILITY IDEOGRAPH-2F999
 [0x2F99A] = 0x8363, -- CJK COMPATIBILITY IDEOGRAPH-2F99A
 [0x2F99B] = 0x83AD, -- CJK COMPATIBILITY IDEOGRAPH-2F99B
 [0x2F99C] = 0x8323, -- CJK COMPATIBILITY IDEOGRAPH-2F99C
 [0x2F99D] = 0x83BD, -- CJK COMPATIBILITY IDEOGRAPH-2F99D
 [0x2F99E] = 0x83E7, -- CJK COMPATIBILITY IDEOGRAPH-2F99E
 [0x2F99F] = 0x8457, -- CJK COMPATIBILITY IDEOGRAPH-2F99F
 [0x2F9A0] = 0x8353, -- CJK COMPATIBILITY IDEOGRAPH-2F9A0
 [0x2F9A1] = 0x83CA, -- CJK COMPATIBILITY IDEOGRAPH-2F9A1
 [0x2F9A2] = 0x83CC, -- CJK COMPATIBILITY IDEOGRAPH-2F9A2
 [0x2F9A3] = 0x83DC, -- CJK COMPATIBILITY IDEOGRAPH-2F9A3
 [0x2F9A4] = 0x26C36, -- CJK COMPATIBILITY IDEOGRAPH-2F9A4
 [0x2F9A5] = 0x26D6B, -- CJK COMPATIBILITY IDEOGRAPH-2F9A5
 [0x2F9A6] = 0x26CD5, -- CJK COMPATIBILITY IDEOGRAPH-2F9A6
 [0x2F9A7] = 0x452B, -- CJK COMPATIBILITY IDEOGRAPH-2F9A7
 [0x2F9A8] = 0x84F1, -- CJK COMPATIBILITY IDEOGRAPH-2F9A8
 [0x2F9A9] = 0x84F3, -- CJK COMPATIBILITY IDEOGRAPH-2F9A9
 [0x2F9AA] = 0x8516, -- CJK COMPATIBILITY IDEOGRAPH-2F9AA
 [0x2F9AB] = 0x273CA, -- CJK COMPATIBILITY IDEOGRAPH-2F9AB
 [0x2F9AC] = 0x8564, -- CJK COMPATIBILITY IDEOGRAPH-2F9AC
 [0x2F9AD] = 0x26F2C, -- CJK COMPATIBILITY IDEOGRAPH-2F9AD
 [0x2F9AE] = 0x455D, -- CJK COMPATIBILITY IDEOGRAPH-2F9AE
 [0x2F9AF] = 0x4561, -- CJK COMPATIBILITY IDEOGRAPH-2F9AF
 [0x2F9B0] = 0x26FB1, -- CJK COMPATIBILITY IDEOGRAPH-2F9B0
 [0x2F9B1] = 0x270D2, -- CJK COMPATIBILITY IDEOGRAPH-2F9B1
 [0x2F9B2] = 0x456B, -- CJK COMPATIBILITY IDEOGRAPH-2F9B2
 [0x2F9B3] = 0x8650, -- CJK COMPATIBILITY IDEOGRAPH-2F9B3
 [0x2F9B4] = 0x865C, -- CJK COMPATIBILITY IDEOGRAPH-2F9B4
 [0x2F9B5] = 0x8667, -- CJK COMPATIBILITY IDEOGRAPH-2F9B5
 [0x2F9B6] = 0x8669, -- CJK COMPATIBILITY IDEOGRAPH-2F9B6
 [0x2F9B7] = 0x86A9, -- CJK COMPATIBILITY IDEOGRAPH-2F9B7
 [0x2F9B8] = 0x8688, -- CJK COMPATIBILITY IDEOGRAPH-2F9B8
 [0x2F9B9] = 0x870E, -- CJK COMPATIBILITY IDEOGRAPH-2F9B9
 [0x2F9BA] = 0x86E2, -- CJK COMPATIBILITY IDEOGRAPH-2F9BA
 [0x2F9BB] = 0x8779, -- CJK COMPATIBILITY IDEOGRAPH-2F9BB
 [0x2F9BC] = 0x8728, -- CJK COMPATIBILITY IDEOGRAPH-2F9BC
 [0x2F9BD] = 0x876B, -- CJK COMPATIBILITY IDEOGRAPH-2F9BD
 [0x2F9BE] = 0x8786, -- CJK COMPATIBILITY IDEOGRAPH-2F9BE
 [0x2F9BF] = {status="disallowed"}, -- CJK COMPATIBILITY IDEOGRAPH-2F9BF
 [0x2F9C0] = 0x87E1, -- CJK COMPATIBILITY IDEOGRAPH-2F9C0
 [0x2F9C1] = 0x8801, -- CJK COMPATIBILITY IDEOGRAPH-2F9C1
 [0x2F9C2] = 0x45F9, -- CJK COMPATIBILITY IDEOGRAPH-2F9C2
 [0x2F9C3] = 0x8860, -- CJK COMPATIBILITY IDEOGRAPH-2F9C3
 [0x2F9C4] = 0x8863, -- CJK COMPATIBILITY IDEOGRAPH-2F9C4
 [0x2F9C5] = 0x27667, -- CJK COMPATIBILITY IDEOGRAPH-2F9C5
 [0x2F9C6] = 0x88D7, -- CJK COMPATIBILITY IDEOGRAPH-2F9C6
 [0x2F9C7] = 0x88DE, -- CJK COMPATIBILITY IDEOGRAPH-2F9C7
 [0x2F9C8] = 0x4635, -- CJK COMPATIBILITY IDEOGRAPH-2F9C8
 [0x2F9C9] = 0x88FA, -- CJK COMPATIBILITY IDEOGRAPH-2F9C9
 [0x2F9CA] = 0x34BB, -- CJK COMPATIBILITY IDEOGRAPH-2F9CA
 [0x2F9CB] = 0x278AE, -- CJK COMPATIBILITY IDEOGRAPH-2F9CB
 [0x2F9CC] = 0x27966, -- CJK COMPATIBILITY IDEOGRAPH-2F9CC
 [0x2F9CD] = 0x46BE, -- CJK COMPATIBILITY IDEOGRAPH-2F9CD
 [0x2F9CE] = 0x46C7, -- CJK COMPATIBILITY IDEOGRAPH-2F9CE
 [0x2F9CF] = 0x8AA0, -- CJK COMPATIBILITY IDEOGRAPH-2F9CF
 [0x2F9D0] = 0x8AED, -- CJK COMPATIBILITY IDEOGRAPH-2F9D0
 [0x2F9D1] = 0x8B8A, -- CJK COMPATIBILITY IDEOGRAPH-2F9D1
 [0x2F9D2] = 0x8C55, -- CJK COMPATIBILITY IDEOGRAPH-2F9D2
 [0x2F9D3] = 0x27CA8, -- CJK COMPATIBILITY IDEOGRAPH-2F9D3
 [0x2F9D4] = 0x8CAB, -- CJK COMPATIBILITY IDEOGRAPH-2F9D4
 [0x2F9D5] = 0x8CC1, -- CJK COMPATIBILITY IDEOGRAPH-2F9D5
 [0x2F9D6] = 0x8D1B, -- CJK COMPATIBILITY IDEOGRAPH-2F9D6
 [0x2F9D7] = 0x8D77, -- CJK COMPATIBILITY IDEOGRAPH-2F9D7
 [0x2F9D8] = 0x27F2F, -- CJK COMPATIBILITY IDEOGRAPH-2F9D8
 [0x2F9D9] = 0x20804, -- CJK COMPATIBILITY IDEOGRAPH-2F9D9
 [0x2F9DA] = 0x8DCB, -- CJK COMPATIBILITY IDEOGRAPH-2F9DA
 [0x2F9DB] = 0x8DBC, -- CJK COMPATIBILITY IDEOGRAPH-2F9DB
 [0x2F9DC] = 0x8DF0, -- CJK COMPATIBILITY IDEOGRAPH-2F9DC
 [0x2F9DD] = 0x208DE, -- CJK COMPATIBILITY IDEOGRAPH-2F9DD
 [0x2F9DE] = 0x8ED4, -- CJK COMPATIBILITY IDEOGRAPH-2F9DE
 [0x2F9DF] = 0x8F38, -- CJK COMPATIBILITY IDEOGRAPH-2F9DF
 [0x2F9E0] = 0x285D2, -- CJK COMPATIBILITY IDEOGRAPH-2F9E0
 [0x2F9E1] = 0x285ED, -- CJK COMPATIBILITY IDEOGRAPH-2F9E1
 [0x2F9E2] = 0x9094, -- CJK COMPATIBILITY IDEOGRAPH-2F9E2
 [0x2F9E3] = 0x90F1, -- CJK COMPATIBILITY IDEOGRAPH-2F9E3
 [0x2F9E4] = 0x9111, -- CJK COMPATIBILITY IDEOGRAPH-2F9E4
 [0x2F9E5] = 0x2872E, -- CJK COMPATIBILITY IDEOGRAPH-2F9E5
 [0x2F9E6] = 0x911B, -- CJK COMPATIBILITY IDEOGRAPH-2F9E6
 [0x2F9E7] = 0x9238, -- CJK COMPATIBILITY IDEOGRAPH-2F9E7
 [0x2F9E8] = 0x92D7, -- CJK COMPATIBILITY IDEOGRAPH-2F9E8
 [0x2F9E9] = 0x92D8, -- CJK COMPATIBILITY IDEOGRAPH-2F9E9
 [0x2F9EA] = 0x927C, -- CJK COMPATIBILITY IDEOGRAPH-2F9EA
 [0x2F9EB] = 0x93F9, -- CJK COMPATIBILITY IDEOGRAPH-2F9EB
 [0x2F9EC] = 0x9415, -- CJK COMPATIBILITY IDEOGRAPH-2F9EC
 [0x2F9ED] = 0x28BFA, -- CJK COMPATIBILITY IDEOGRAPH-2F9ED
 [0x2F9EE] = 0x958B, -- CJK COMPATIBILITY IDEOGRAPH-2F9EE
 [0x2F9EF] = 0x4995, -- CJK COMPATIBILITY IDEOGRAPH-2F9EF
 [0x2F9F0] = 0x95B7, -- CJK COMPATIBILITY IDEOGRAPH-2F9F0
 [0x2F9F1] = 0x28D77, -- CJK COMPATIBILITY IDEOGRAPH-2F9F1
 [0x2F9F2] = 0x49E6, -- CJK COMPATIBILITY IDEOGRAPH-2F9F2
 [0x2F9F3] = 0x96C3, -- CJK COMPATIBILITY IDEOGRAPH-2F9F3
 [0x2F9F4] = 0x5DB2, -- CJK COMPATIBILITY IDEOGRAPH-2F9F4
 [0x2F9F5] = 0x9723, -- CJK COMPATIBILITY IDEOGRAPH-2F9F5
 [0x2F9F6] = 0x29145, -- CJK COMPATIBILITY IDEOGRAPH-2F9F6
 [0x2F9F7] = 0x2921A, -- CJK COMPATIBILITY IDEOGRAPH-2F9F7
 [0x2F9F8] = 0x4A6E, -- CJK COMPATIBILITY IDEOGRAPH-2F9F8
 [0x2F9F9] = 0x4A76, -- CJK COMPATIBILITY IDEOGRAPH-2F9F9
 [0x2F9FA] = 0x97E0, -- CJK COMPATIBILITY IDEOGRAPH-2F9FA
 [0x2F9FB] = 0x2940A, -- CJK COMPATIBILITY IDEOGRAPH-2F9FB
 [0x2F9FC] = 0x4AB2, -- CJK COMPATIBILITY IDEOGRAPH-2F9FC
 [0x2F9FD] = 0x29496, -- CJK COMPATIBILITY IDEOGRAPH-2F9FD
 -- CJK COMPATIBILITY IDEOGRAPH-2F95D..CJK COMPATIBILITY IDEOGRAPH-2F95E
 [0x2F95D] = 0x25AA7,
 [0x2F95E] = 0x25AA7,
 [0x2FA00] = 0x9829, -- CJK COMPATIBILITY IDEOGRAPH-2FA00
 [0x2FA01] = 0x295B6, -- CJK COMPATIBILITY IDEOGRAPH-2FA01
 [0x2FA02] = 0x98E2, -- CJK COMPATIBILITY IDEOGRAPH-2FA02
 [0x2FA03] = 0x4B33, -- CJK COMPATIBILITY IDEOGRAPH-2FA03
 [0x2FA04] = 0x9929, -- CJK COMPATIBILITY IDEOGRAPH-2FA04
 [0x2FA05] = 0x99A7, -- CJK COMPATIBILITY IDEOGRAPH-2FA05
 [0x2FA06] = 0x99C2, -- CJK COMPATIBILITY IDEOGRAPH-2FA06
 [0x2FA07] = 0x99FE, -- CJK COMPATIBILITY IDEOGRAPH-2FA07
 [0x2FA08] = 0x4BCE, -- CJK COMPATIBILITY IDEOGRAPH-2FA08
 [0x2FA09] = 0x29B30, -- CJK COMPATIBILITY IDEOGRAPH-2FA09
 [0x2FA0A] = 0x9B12, -- CJK COMPATIBILITY IDEOGRAPH-2FA0A
 [0x2FA0B] = 0x9C40, -- CJK COMPATIBILITY IDEOGRAPH-2FA0B
 [0x2FA0C] = 0x9CFD, -- CJK COMPATIBILITY IDEOGRAPH-2FA0C
 [0x2FA0D] = 0x4CCE, -- CJK COMPATIBILITY IDEOGRAPH-2FA0D
 [0x2FA0E] = 0x4CED, -- CJK COMPATIBILITY IDEOGRAPH-2FA0E
 [0x2FA0F] = 0x9D67, -- CJK COMPATIBILITY IDEOGRAPH-2FA0F
 [0x2FA10] = 0x2A0CE, -- CJK COMPATIBILITY IDEOGRAPH-2FA10
 [0x2FA11] = 0x4CF8, -- CJK COMPATIBILITY IDEOGRAPH-2FA11
 [0x2FA12] = 0x2A105, -- CJK COMPATIBILITY IDEOGRAPH-2FA12
 [0x2FA13] = 0x2A20E, -- CJK COMPATIBILITY IDEOGRAPH-2FA13
 [0x2FA14] = 0x2A291, -- CJK COMPATIBILITY IDEOGRAPH-2FA14
 [0x2FA15] = 0x9EBB, -- CJK COMPATIBILITY IDEOGRAPH-2FA15
 [0x2FA16] = 0x4D56, -- CJK COMPATIBILITY IDEOGRAPH-2FA16
 [0x2FA17] = 0x9EF9, -- CJK COMPATIBILITY IDEOGRAPH-2FA17
 [0x2FA18] = 0x9EFE, -- CJK COMPATIBILITY IDEOGRAPH-2FA18
 [0x2FA19] = 0x9F05, -- CJK COMPATIBILITY IDEOGRAPH-2FA19
 [0x2FA1A] = 0x9F0F, -- CJK COMPATIBILITY IDEOGRAPH-2FA1A
 [0x2FA1B] = 0x9F16, -- CJK COMPATIBILITY IDEOGRAPH-2FA1B
 [0x2FA1C] = 0x9F3B, -- CJK COMPATIBILITY IDEOGRAPH-2FA1C
 [0x2FA1D] = 0x2A600, -- CJK COMPATIBILITY IDEOGRAPH-2FA1D
 -- CJK COMPATIBILITY IDEOGRAPH-2F9FE..CJK COMPATIBILITY IDEOGRAPH-2F9FF
 [0x2F9FE] = 0x980B,
 [0x2F9FF] = 0x980B,
 [0xE0000] = {status="disallowed"}, -- NA   <reserved-E0000>
 [0xE0001] = {status="disallowed"}, -- LANGUAGE TAG
}

setmetatable(tbl, {
  __index = function (t, x)
  if x <= 0x002C then
    -- <control-0000>..COMMA
    if x >= 0x0000 then
      return {status="disallowed"}
    end
  elseif x <= 0x0039 then
    -- DIGIT ZERO..DIGIT NINE
    if x >= 0x0030 then
      return {status="valid"}
    end
  elseif x <= 0x0040 then
    -- COLON..COMMERCIAL AT
    if x >= 0x003A then
      return {status="disallowed"}
    end
  elseif x <= 0x0060 then
    -- LEFT SQUARE BRACKET..GRAVE ACCENT
    if x >= 0x005B then
      return {status="disallowed"}
    end
  elseif x <= 0x007A then
    -- LATIN SMALL LETTER A..LATIN SMALL LETTER Z
    if x >= 0x0061 then
      return {status="valid"}
    end
  elseif x <= 0x009F then
    -- <control-0080>..<control-009F>
    if x >= 0x0080 then
      return {status="disallowed"}
    end
  elseif x <= 0x00A7 then
    -- INVERTED EXCLAMATION MARK..SECTION SIGN
    if x >= 0x00A1 then
      return {status="disallowed"}
    end
  elseif x <= 0x00F6 then
    -- LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER O WITH DIAERESIS
    if x >= 0x00E0 then
      return {status="valid"}
    end
  elseif x <= 0x00FF then
    -- LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
    if x >= 0x00F8 then
      return {status="valid"}
    end
  elseif x <= 0x01C3 then
    -- LATIN SMALL LETTER TONE FIVE..LATIN LETTER RETROFLEX CLICK
    if x >= 0x01BD then
      return {status="valid"}
    end
  elseif x <= 0x0239 then
    -- LATIN SMALL LETTER L WITH CURL..LATIN SMALL LETTER T WITH CURL
    -- LATIN SMALL LETTER DOTLESS J..LATIN SMALL LETTER QP DIGRAPH
    if x >= 0x0234 then
      return {status="valid"}
    end
  elseif x <= 0x02AF then
    -- LATIN SMALL LETTER TURNED A..LATIN SMALL LETTER TC DIGRAPH WITH CURL
    -- LATIN SMALL LETTER FENG DIGRAPH..LATIN LETTER BIDENTAL PERCUSSIVE
    -- LATIN SMALL LETTER TURNED H WITH FISHHOOK..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
    if x >= 0x0250 then
      return {status="valid"}
    end
  elseif x <= 0x02C1 then
    -- MODIFIER LETTER PRIME..MODIFIER LETTER REVERSED GLOTTAL STOP
    if x >= 0x02B9 then
      return {status="valid"}
    end
  elseif x <= 0x02D1 then
    -- MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
    if x >= 0x02C6 then
      return {status="valid"}
    end
  elseif x <= 0x02D7 then
    -- MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER MINUS SIGN
    if x >= 0x02D2 then
      return {status="disallowed"}
    end
  elseif x <= 0x02EB then
    -- MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER EXTRA-LOW TONE BAR
    -- MODIFIER LETTER YIN DEPARTING TONE MARK..MODIFIER LETTER YANG DEPARTING TONE MARK
    if x >= 0x02E5 then
      return {status="disallowed"}
    end
  elseif x <= 0x02FF then
    -- MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
    if x >= 0x02EF then
      return {status="disallowed"}
    end
  elseif x <= 0x033F then
    -- COMBINING GRAVE ACCENT..COMBINING DOUBLE OVERLINE
    if x >= 0x0300 then
      return {status="valid"}
    end
  elseif x <= 0x034E then
    -- COMBINING BRIDGE ABOVE..COMBINING UPWARDS ARROW BELOW
    if x >= 0x0346 then
      return {status="valid"}
    end
  elseif x <= 0x0361 then
    -- COMBINING RIGHT ARROWHEAD ABOVE..COMBINING RIGHT HALF RING ABOVE
    -- COMBINING DOT ABOVE RIGHT..COMBINING DOUBLE BREVE BELOW
    -- COMBINING DOUBLE BREVE..COMBINING DOUBLE MACRON BELOW
    -- COMBINING DOUBLE TILDE..COMBINING DOUBLE INVERTED BREVE
    if x >= 0x0350 then
      return {status="valid"}
    end
  elseif x <= 0x036F then
    -- COMBINING LATIN SMALL LETTER A..COMBINING LATIN SMALL LETTER X
    if x >= 0x0363 then
      return {status="valid"}
    end
  elseif x <= 0x03C1 then
    -- GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER RHO
    if x >= 0x03AC then
      return {status="valid"}
    end
  elseif x <= 0x03CE then
    -- GREEK SMALL LETTER SIGMA..GREEK SMALL LETTER OMEGA WITH TONOS
    if x >= 0x03C3 then
      return {status="valid"}
    end
  elseif x <= 0x044F then
    -- CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER YA
    if x >= 0x0430 then
      return {status="valid"}
    end
  elseif x <= 0x045C then
    -- CYRILLIC SMALL LETTER IO..CYRILLIC SMALL LETTER KJE
    if x >= 0x0451 then
      return {status="valid"}
    end
  elseif x <= 0x055F then
    -- ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
    if x >= 0x055A then
      return {status="disallowed"}
    end
  elseif x <= 0x0586 then
    -- ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LETTER FEH
    if x >= 0x0561 then
      return {status="valid"}
    end
  elseif x <= 0x05A1 then
    -- HEBREW ACCENT ETNAHTA..HEBREW ACCENT PAZER
    if x >= 0x0591 then
      return {status="valid"}
    end
  elseif x <= 0x05B9 then
    -- HEBREW ACCENT MUNAH..HEBREW MARK MASORA CIRCLE
    -- HEBREW POINT SHEVA..HEBREW POINT HOLAM
    if x >= 0x05A3 then
      return {status="valid"}
    end
  elseif x <= 0x05CF then
    -- NA   <reserved-05C8>..<reserved-05CF>
    if x >= 0x05C8 then
      return {status="disallowed"}
    end
  elseif x <= 0x05EA then
    -- HEBREW LETTER ALEF..HEBREW LETTER TAV
    if x >= 0x05D0 then
      return {status="valid"}
    end
  elseif x <= 0x0603 then
    -- NA   <reserved-05F5>..<reserved-05FF>
    -- ARABIC NUMBER SIGN..ARABIC SIGN SAFHA
    if x >= 0x05F5 then
      return {status="disallowed"}
    end
  elseif x <= 0x061A then
    -- ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL HIGH TAH
    -- ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH..ARABIC SMALL KASRA
    if x >= 0x0610 then
      return {status="valid"}
    end
  elseif x <= 0x063F then
    -- ARABIC LETTER HAMZA..ARABIC LETTER GHAIN
    -- ARABIC LETTER KEHEH WITH TWO DOTS ABOVE..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
    if x >= 0x0621 then
      return {status="valid"}
    end
  elseif x <= 0x065E then
    -- ARABIC LETTER FEH..ARABIC SUKUN
    -- ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
    -- ARABIC SUBSCRIPT ALEF..ARABIC MARK NOON GHUNNA
    -- ARABIC ZWARAKAY..ARABIC FATHA WITH TWO DOTS
    if x >= 0x0641 then
      return {status="valid"}
    end
  elseif x <= 0x0669 then
    -- ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
    if x >= 0x0660 then
      return {status="valid"}
    end
  elseif x <= 0x0674 then
    -- ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
    -- ARABIC LETTER SUPERSCRIPT ALEF..ARABIC LETTER HIGH HAMZA
    if x >= 0x066E then
      return {status="valid"}
    end
  elseif x <= 0x06BE then
    -- ARABIC LETTER TTEH..ARABIC LETTER LAM WITH THREE DOTS ABOVE
    -- ARABIC LETTER LAM WITH THREE DOTS BELOW..ARABIC LETTER NOON WITH DOT BELOW
    -- ARABIC LETTER NOON GHUNNA..ARABIC LETTER HEH DOACHASHMEE
    if x >= 0x0679 then
      return {status="valid"}
    end
  elseif x <= 0x06CE then
    -- ARABIC LETTER HEH WITH YEH ABOVE..ARABIC LETTER YEH WITH SMALL V
    if x >= 0x06C0 then
      return {status="valid"}
    end
  elseif x <= 0x06DC then
    -- ARABIC LETTER AE..ARABIC SMALL HIGH SEEN
    if x >= 0x06D5 then
      return {status="valid"}
    end
  elseif x <= 0x06E8 then
    -- ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH NOON
    if x >= 0x06DF then
      return {status="valid"}
    end
  elseif x <= 0x06FE then
    -- ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
    -- ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
    -- EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
    -- ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC SIGN SINDHI POSTPOSITION MEN
    if x >= 0x06EA then
      return {status="valid"}
    end
  elseif x <= 0x070D then
    -- SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
    if x >= 0x0700 then
      return {status="disallowed"}
    end
  elseif x <= 0x074A then
    -- SYRIAC LETTER ALAPH..SYRIAC LETTER TAW
    -- SYRIAC LETTER PERSIAN BHETH..SYRIAC LETTER PERSIAN DHALATH
    -- SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
    if x >= 0x0710 then
      return {status="valid"}
    end
  elseif x <= 0x07B0 then
    -- SYRIAC LETTER SOGDIAN ZHAIN..SYRIAC LETTER SOGDIAN FE
    -- ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE
    -- ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
    -- THAANA LETTER HAA..THAANA SUKUN
    if x >= 0x074D then
      return {status="valid"}
    end
  elseif x <= 0x07BF then
    -- NA   <reserved-07B2>..<reserved-07BF>
    if x >= 0x07B2 then
      return {status="disallowed"}
    end
  elseif x <= 0x07F5 then
    -- NKO DIGIT ZERO..NKO LOW TONE APOSTROPHE
    if x >= 0x07C0 then
      return {status="valid"}
    end
  elseif x <= 0x082D then
    -- SAMARITAN LETTER ALAF..SAMARITAN MARK NEQUDAA
    if x >= 0x0800 then
      return {status="valid"}
    end
  elseif x <= 0x083E then
    -- SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU
    if x >= 0x0830 then
      return {status="disallowed"}
    end
  elseif x <= 0x085B then
    -- MANDAIC LETTER HALQA..MANDAIC GEMINATION MARK
    if x >= 0x0840 then
      return {status="valid"}
    end
  elseif x <= 0x086A then
    -- SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
    if x >= 0x0860 then
      return {status="valid"}
    end
  elseif x <= 0x089F then
    -- NA   <reserved-086B>..<reserved-089F>
    if x >= 0x086B then
      return {status="disallowed"}
    end
  elseif x <= 0x08B4 then
    -- ARABIC LETTER JEEM WITH TWO DOTS ABOVE..ARABIC LETTER ROHINGYA YEH
    -- ARABIC LETTER LOW ALEF..ARABIC LETTER ZAIN WITH INVERTED V ABOVE
    -- ARABIC LETTER AIN WITH THREE DOTS BELOW..ARABIC LETTER KAF WITH DOT BELOW
    if x >= 0x08A2 then
      return {status="valid"}
    end
  elseif x <= 0x08BD then
    -- ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER AFRICAN NOON
    if x >= 0x08B6 then
      return {status="valid"}
    end
  elseif x <= 0x08D3 then
    -- NA   <reserved-08BE>..<reserved-08D3>
    if x >= 0x08BE then
      return {status="disallowed"}
    end
  elseif x <= 0x08E1 then
    -- ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA
    if x >= 0x08D4 then
      return {status="valid"}
    end
  elseif x <= 0x08FE then
    -- ARABIC CURLY FATHA..ARABIC DAMMA WITH DOT
    if x >= 0x08E4 then
      return {status="valid"}
    end
  elseif x <= 0x094D then
    -- DEVANAGARI LETTER A..DEVANAGARI LETTER HA
    -- DEVANAGARI VOWEL SIGN OE..DEVANAGARI VOWEL SIGN OOE
    -- DEVANAGARI SIGN NUKTA..DEVANAGARI SIGN VIRAMA
    if x >= 0x0905 then
      return {status="valid"}
    end
  elseif x <= 0x096F then
    -- DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
    if x >= 0x0966 then
      return {status="valid"}
    end
  elseif x <= 0x0977 then
    -- DEVANAGARI SIGN HIGH SPACING DOT..DEVANAGARI LETTER CANDRA A
    -- DEVANAGARI LETTER OE..DEVANAGARI LETTER UUE
    if x >= 0x0971 then
      return {status="valid"}
    end
  elseif x <= 0x098C then
    -- BENGALI LETTER A..BENGALI LETTER VOCALIC L
    if x >= 0x0985 then
      return {status="valid"}
    end
  elseif x <= 0x09A8 then
    -- BENGALI LETTER O..BENGALI LETTER NA
    if x >= 0x0993 then
      return {status="valid"}
    end
  elseif x <= 0x09B0 then
    -- BENGALI LETTER PA..BENGALI LETTER RA
    if x >= 0x09AA then
      return {status="valid"}
    end
  elseif x <= 0x09C4 then
    -- BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN VOCALIC RR
    if x >= 0x09BE then
      return {status="valid"}
    end
  elseif x <= 0x09D6 then
    -- NA   <reserved-09CF>..<reserved-09D6>
    if x >= 0x09CF then
      return {status="disallowed"}
    end
  elseif x <= 0x09F1 then
    -- BENGALI DIGIT ZERO..BENGALI LETTER RA WITH LOWER DIAGONAL
    if x >= 0x09E6 then
      return {status="valid"}
    end
  elseif x <= 0x09FA then
    -- BENGALI RUPEE MARK..BENGALI ISSHAR
    if x >= 0x09F2 then
      return {status="disallowed"}
    end
  elseif x <= 0x0A0A then
    -- GURMUKHI LETTER A..GURMUKHI LETTER UU
    if x >= 0x0A05 then
      return {status="valid"}
    end
  elseif x <= 0x0A28 then
    -- GURMUKHI LETTER OO..GURMUKHI LETTER NA
    if x >= 0x0A13 then
      return {status="valid"}
    end
  elseif x <= 0x0A30 then
    -- GURMUKHI LETTER PA..GURMUKHI LETTER RA
    if x >= 0x0A2A then
      return {status="valid"}
    end
  elseif x <= 0x0A58 then
    -- NA   <reserved-0A52>..<reserved-0A58>
    if x >= 0x0A52 then
      return {status="disallowed"}
    end
  elseif x <= 0x0A65 then
    -- NA   <reserved-0A5F>..<reserved-0A65>
    if x >= 0x0A5F then
      return {status="disallowed"}
    end
  elseif x <= 0x0A74 then
    -- GURMUKHI DIGIT ZERO..GURMUKHI EK ONKAR
    if x >= 0x0A66 then
      return {status="valid"}
    end
  elseif x <= 0x0A80 then
    -- NA   <reserved-0A76>..<reserved-0A80>
    if x >= 0x0A76 then
      return {status="disallowed"}
    end
  elseif x <= 0x0A8B then
    -- GUJARATI LETTER A..GUJARATI LETTER VOCALIC R
    if x >= 0x0A85 then
      return {status="valid"}
    end
  elseif x <= 0x0AA8 then
    -- GUJARATI LETTER O..GUJARATI LETTER NA
    if x >= 0x0A93 then
      return {status="valid"}
    end
  elseif x <= 0x0AB0 then
    -- GUJARATI LETTER PA..GUJARATI LETTER RA
    if x >= 0x0AAA then
      return {status="valid"}
    end
  elseif x <= 0x0AC5 then
    -- GUJARATI SIGN NUKTA..GUJARATI VOWEL SIGN CANDRA E
    if x >= 0x0ABC then
      return {status="valid"}
    end
  elseif x <= 0x0ADF then
    -- NA   <reserved-0AD1>..<reserved-0ADF>
    if x >= 0x0AD1 then
      return {status="disallowed"}
    end
  elseif x <= 0x0AEF then
    -- GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
    if x >= 0x0AE6 then
      return {status="valid"}
    end
  elseif x <= 0x0AF8 then
    -- NA   <reserved-0AF2>..<reserved-0AF8>
    if x >= 0x0AF2 then
      return {status="disallowed"}
    end
  elseif x <= 0x0AFF then
    -- GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
    if x >= 0x0AFA then
      return {status="valid"}
    end
  elseif x <= 0x0B0C then
    -- ORIYA LETTER A..ORIYA LETTER VOCALIC L
    if x >= 0x0B05 then
      return {status="valid"}
    end
  elseif x <= 0x0B28 then
    -- ORIYA LETTER O..ORIYA LETTER NA
    if x >= 0x0B13 then
      return {status="valid"}
    end
  elseif x <= 0x0B30 then
    -- ORIYA LETTER PA..ORIYA LETTER RA
    if x >= 0x0B2A then
      return {status="valid"}
    end
  elseif x <= 0x0B43 then
    -- ORIYA SIGN NUKTA..ORIYA VOWEL SIGN VOCALIC R
    if x >= 0x0B3C then
      return {status="valid"}
    end
  elseif x <= 0x0B55 then
    -- NA   <reserved-0B4E>..<reserved-0B55>
    if x >= 0x0B4E then
      return {status="disallowed"}
    end
  elseif x <= 0x0B6F then
    -- ORIYA DIGIT ZERO..ORIYA DIGIT NINE
    if x >= 0x0B66 then
      return {status="valid"}
    end
  elseif x <= 0x0B77 then
    -- ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
    if x >= 0x0B72 then
      return {status="disallowed"}
    end
  elseif x <= 0x0B81 then
    -- NA   <reserved-0B78>..<reserved-0B81>
    if x >= 0x0B78 then
      return {status="disallowed"}
    end
  elseif x <= 0x0B8A then
    -- TAMIL LETTER A..TAMIL LETTER UU
    if x >= 0x0B85 then
      return {status="valid"}
    end
  elseif x <= 0x0BB5 then
    -- TAMIL LETTER MA..TAMIL LETTER VA
    if x >= 0x0BAE then
      return {status="valid"}
    end
  elseif x <= 0x0BD6 then
    -- NA   <reserved-0BD1>..<reserved-0BD6>
    if x >= 0x0BD1 then
      return {status="disallowed"}
    end
  elseif x <= 0x0BE5 then
    -- NA   <reserved-0BD8>..<reserved-0BE5>
    if x >= 0x0BD8 then
      return {status="disallowed"}
    end
  elseif x <= 0x0BEF then
    -- TAMIL DIGIT ONE..TAMIL DIGIT NINE
    if x >= 0x0BE7 then
      return {status="valid"}
    end
  elseif x <= 0x0BFA then
    -- TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
    -- TAMIL DAY SIGN..TAMIL NUMBER SIGN
    if x >= 0x0BF0 then
      return {status="disallowed"}
    end
  elseif x <= 0x0C0C then
    -- TELUGU LETTER A..TELUGU LETTER VOCALIC L
    if x >= 0x0C05 then
      return {status="valid"}
    end
  elseif x <= 0x0C28 then
    -- TELUGU LETTER O..TELUGU LETTER NA
    if x >= 0x0C12 then
      return {status="valid"}
    end
  elseif x <= 0x0C33 then
    -- TELUGU LETTER PA..TELUGU LETTER LLA
    if x >= 0x0C2A then
      return {status="valid"}
    end
  elseif x <= 0x0C44 then
    -- TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN VOCALIC RR
    if x >= 0x0C3E then
      return {status="valid"}
    end
  elseif x <= 0x0C54 then
    -- NA   <reserved-0C4E>..<reserved-0C54>
    if x >= 0x0C4E then
      return {status="disallowed"}
    end
  elseif x <= 0x0C6F then
    -- TELUGU DIGIT ZERO..TELUGU DIGIT NINE
    if x >= 0x0C66 then
      return {status="valid"}
    end
  elseif x <= 0x0C77 then
    -- NA   <reserved-0C70>..<reserved-0C77>
    if x >= 0x0C70 then
      return {status="disallowed"}
    end
  elseif x <= 0x0C7F then
    -- TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU SIGN TUUMU
    if x >= 0x0C78 then
      return {status="disallowed"}
    end
  elseif x <= 0x0C8C then
    -- KANNADA LETTER A..KANNADA LETTER VOCALIC L
    if x >= 0x0C85 then
      return {status="valid"}
    end
  elseif x <= 0x0CA8 then
    -- KANNADA LETTER O..KANNADA LETTER NA
    if x >= 0x0C92 then
      return {status="valid"}
    end
  elseif x <= 0x0CB3 then
    -- KANNADA LETTER PA..KANNADA LETTER LLA
    if x >= 0x0CAA then
      return {status="valid"}
    end
  elseif x <= 0x0CC4 then
    -- KANNADA SIGN NUKTA..KANNADA SIGN AVAGRAHA
    -- KANNADA VOWEL SIGN AA..KANNADA VOWEL SIGN VOCALIC RR
    if x >= 0x0CBC then
      return {status="valid"}
    end
  elseif x <= 0x0CD4 then
    -- NA   <reserved-0CCE>..<reserved-0CD4>
    if x >= 0x0CCE then
      return {status="disallowed"}
    end
  elseif x <= 0x0CDD then
    -- NA   <reserved-0CD7>..<reserved-0CDD>
    if x >= 0x0CD7 then
      return {status="disallowed"}
    end
  elseif x <= 0x0CEF then
    -- KANNADA DIGIT ZERO..KANNADA DIGIT NINE
    if x >= 0x0CE6 then
      return {status="valid"}
    end
  elseif x <= 0x0CFF then
    -- NA   <reserved-0CF3>..<reserved-0CFF>
    if x >= 0x0CF3 then
      return {status="disallowed"}
    end
  elseif x <= 0x0D0C then
    -- MALAYALAM LETTER A..MALAYALAM LETTER VOCALIC L
    if x >= 0x0D05 then
      return {status="valid"}
    end
  elseif x <= 0x0D28 then
    -- MALAYALAM LETTER O..MALAYALAM LETTER NA
    if x >= 0x0D12 then
      return {status="valid"}
    end
  elseif x <= 0x0D39 then
    -- MALAYALAM LETTER PA..MALAYALAM LETTER HA
    if x >= 0x0D2A then
      return {status="valid"}
    end
  elseif x <= 0x0D43 then
    -- MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN VOCALIC R
    if x >= 0x0D3E then
      return {status="valid"}
    end
  elseif x <= 0x0D5E then
    -- MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
    if x >= 0x0D58 then
      return {status="disallowed"}
    end
  elseif x <= 0x0D6F then
    -- MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
    if x >= 0x0D66 then
      return {status="valid"}
    end
  elseif x <= 0x0D78 then
    -- MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
    -- MALAYALAM FRACTION ONE SIXTEENTH..MALAYALAM FRACTION THREE SIXTEENTHS
    if x >= 0x0D70 then
      return {status="disallowed"}
    end
  elseif x <= 0x0D7F then
    -- MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
    if x >= 0x0D7A then
      return {status="valid"}
    end
  elseif x <= 0x0D96 then
    -- SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
    if x >= 0x0D85 then
      return {status="valid"}
    end
  elseif x <= 0x0DB1 then
    -- SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
    if x >= 0x0D9A then
      return {status="valid"}
    end
  elseif x <= 0x0DBB then
    -- SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
    if x >= 0x0DB3 then
      return {status="valid"}
    end
  elseif x <= 0x0DC6 then
    -- SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
    if x >= 0x0DC0 then
      return {status="valid"}
    end
  elseif x <= 0x0DD4 then
    -- SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
    if x >= 0x0DCF then
      return {status="valid"}
    end
  elseif x <= 0x0DDF then
    -- SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
    if x >= 0x0DD8 then
      return {status="valid"}
    end
  elseif x <= 0x0DE5 then
    -- NA   <reserved-0DE0>..<reserved-0DE5>
    if x >= 0x0DE0 then
      return {status="disallowed"}
    end
  elseif x <= 0x0DEF then
    -- SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
    if x >= 0x0DE6 then
      return {status="valid"}
    end
  elseif x <= 0x0E00 then
    -- NA   <reserved-0DF5>..<reserved-0E00>
    if x >= 0x0DF5 then
      return {status="disallowed"}
    end
  elseif x <= 0x0E32 then
    -- THAI CHARACTER KO KAI..THAI CHARACTER SARA AA
    if x >= 0x0E01 then
      return {status="valid"}
    end
  elseif x <= 0x0E3A then
    -- THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
    if x >= 0x0E34 then
      return {status="valid"}
    end
  elseif x <= 0x0E4E then
    -- THAI CHARACTER SARA E..THAI CHARACTER YAMAKKAN
    if x >= 0x0E40 then
      return {status="valid"}
    end
  elseif x <= 0x0E59 then
    -- THAI DIGIT ZERO..THAI DIGIT NINE
    if x >= 0x0E50 then
      return {status="valid"}
    end
  elseif x <= 0x0E80 then
    -- NA   <reserved-0E5C>..<reserved-0E80>
    if x >= 0x0E5C then
      return {status="disallowed"}
    end
  elseif x <= 0x0E93 then
    -- NA   <reserved-0E8E>..<reserved-0E93>
    if x >= 0x0E8E then
      return {status="disallowed"}
    end
  elseif x <= 0x0E9F then
    -- LAO LETTER NO..LAO LETTER FO SUNG
    if x >= 0x0E99 then
      return {status="valid"}
    end
  elseif x <= 0x0EB2 then
    -- LAO LETTER O..LAO VOWEL SIGN AA
    if x >= 0x0EAD then
      return {status="valid"}
    end
  elseif x <= 0x0EB9 then
    -- LAO VOWEL SIGN I..LAO VOWEL SIGN UU
    if x >= 0x0EB4 then
      return {status="valid"}
    end
  elseif x <= 0x0ECD then
    -- LAO TONE MAI EK..LAO NIGGAHITA
    if x >= 0x0EC8 then
      return {status="valid"}
    end
  elseif x <= 0x0ED9 then
    -- LAO DIGIT ZERO..LAO DIGIT NINE
    if x >= 0x0ED0 then
      return {status="valid"}
    end
  elseif x <= 0x0EFF then
    -- NA   <reserved-0EE0>..<reserved-0EFF>
    if x >= 0x0EE0 then
      return {status="disallowed"}
    end
  elseif x <= 0x0F0A then
    -- TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK BKA- SHOG YIG MGO
    if x >= 0x0F01 then
      return {status="disallowed"}
    end
  elseif x <= 0x0F17 then
    -- TIBETAN MARK SHAD..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
    if x >= 0x0F0D then
      return {status="disallowed"}
    end
  elseif x <= 0x0F1F then
    -- TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
    if x >= 0x0F1A then
      return {status="disallowed"}
    end
  elseif x <= 0x0F29 then
    -- TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
    if x >= 0x0F20 then
      return {status="valid"}
    end
  elseif x <= 0x0F34 then
    -- TIBETAN DIGIT HALF ONE..TIBETAN MARK BSDUS RTAGS
    if x >= 0x0F2A then
      return {status="disallowed"}
    end
  elseif x <= 0x0F68 then
    -- TIBETAN LETTER WA..TIBETAN LETTER A
    if x >= 0x0F5D then
      return {status="valid"}
    end
  elseif x <= 0x0F80 then
    -- TIBETAN VOWEL SIGN E..TIBETAN VOWEL SIGN REVERSED I
    if x >= 0x0F7A then
      return {status="valid"}
    end
  elseif x <= 0x0F92 then
    -- TIBETAN SIGN LCI RTAGS..TIBETAN SIGN GRU MED RGYINGS
    -- TIBETAN SIGN INVERTED MCHU CAN..TIBETAN SUBJOINED SIGN INVERTED MCHU CAN
    -- TIBETAN SUBJOINED LETTER KA..TIBETAN SUBJOINED LETTER GA
    if x >= 0x0F86 then
      return {status="valid"}
    end
  elseif x <= 0x0FB7 then
    -- TIBETAN SUBJOINED LETTER ZHA..TIBETAN SUBJOINED LETTER -A
    -- TIBETAN SUBJOINED LETTER YA..TIBETAN SUBJOINED LETTER HA
    if x >= 0x0FAE then
      return {status="valid"}
    end
  elseif x <= 0x0FC5 then
    -- TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
    if x >= 0x0FBE then
      return {status="disallowed"}
    end
  elseif x <= 0x0FCC then
    -- TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
    if x >= 0x0FC7 then
      return {status="disallowed"}
    end
  elseif x <= 0x0FDA then
    -- TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK MNYAM YIG GI MGO RGYAN
    -- TIBETAN MARK NYIS TSHEG..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
    -- RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS
    -- TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS
    if x >= 0x0FD0 then
      return {status="disallowed"}
    end
  elseif x <= 0x0FFF then
    -- NA   <reserved-0FDB>..<reserved-0FFF>
    if x >= 0x0FDB then
      return {status="disallowed"}
    end
  elseif x <= 0x1021 then
    -- MYANMAR LETTER KA..MYANMAR LETTER A
    if x >= 0x1000 then
      return {status="valid"}
    end
  elseif x <= 0x1049 then
    -- MYANMAR VOWEL SIGN AA..MYANMAR VOWEL SIGN AI
    -- MYANMAR VOWEL SIGN MON II..MYANMAR VOWEL SIGN E ABOVE
    -- MYANMAR SIGN ANUSVARA..MYANMAR SIGN VIRAMA
    -- MYANMAR SIGN ASAT..MYANMAR LETTER GREAT SA
    -- MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
    if x >= 0x102C then
      return {status="valid"}
    end
  elseif x <= 0x104F then
    -- MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
    if x >= 0x104A then
      return {status="disallowed"}
    end
  elseif x <= 0x109D then
    -- MYANMAR LETTER SHA..MYANMAR VOWEL SIGN VOCALIC LL
    -- MYANMAR LETTER MON NGA..MYANMAR SHAN DIGIT NINE
    -- MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON AI
    if x >= 0x1050 then
      return {status="valid"}
    end
  elseif x <= 0x10C5 then
    -- GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
    if x >= 0x10A0 then
      return {status="disallowed"}
    end
  elseif x <= 0x10FA then
    -- GEORGIAN LETTER AN..GEORGIAN LETTER FI
    -- GEORGIAN LETTER YN..GEORGIAN LETTER ELIFI
    -- GEORGIAN LETTER TURNED GAN..GEORGIAN LETTER AIN
    if x >= 0x10D0 then
      return {status="valid"}
    end
  elseif x <= 0x115E then
    -- HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG YEORINHIEUH
    -- HANGUL CHOSEONG KIYEOK-TIKEUT..HANGUL CHOSEONG TIKEUT-RIEUL
    if x >= 0x1100 then
      return {status="disallowed"}
    end
  elseif x <= 0x11FF then
    -- HANGUL JUNGSEONG A..HANGUL JUNGSEONG SSANGARAEA
    -- HANGUL JUNGSEONG A-EU..HANGUL JUNGSEONG O-YAE
    -- HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG YEORINHIEUH
    -- HANGUL JONGSEONG KIYEOK-NIEUN..HANGUL JONGSEONG SSANGNIEUN
    if x >= 0x1161 then
      return {status="disallowed"}
    end
  elseif x <= 0x1206 then
    -- ETHIOPIC SYLLABLE HA..ETHIOPIC SYLLABLE HO
    if x >= 0x1200 then
      return {status="valid"}
    end
  elseif x <= 0x1246 then
    -- ETHIOPIC SYLLABLE LA..ETHIOPIC SYLLABLE QO
    if x >= 0x1208 then
      return {status="valid"}
    end
  elseif x <= 0x1256 then
    -- ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
    if x >= 0x1250 then
      return {status="valid"}
    end
  elseif x <= 0x1286 then
    -- ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XO
    if x >= 0x1260 then
      return {status="valid"}
    end
  elseif x <= 0x12AE then
    -- ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KO
    if x >= 0x1290 then
      return {status="valid"}
    end
  elseif x <= 0x12BE then
    -- ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
    if x >= 0x12B8 then
      return {status="valid"}
    end
  elseif x <= 0x12CE then
    -- ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE WO
    if x >= 0x12C8 then
      return {status="valid"}
    end
  elseif x <= 0x12D6 then
    -- ETHIOPIC SYLLABLE PHARYNGEAL A..ETHIOPIC SYLLABLE PHARYNGEAL O
    if x >= 0x12D0 then
      return {status="valid"}
    end
  elseif x <= 0x12EE then
    -- ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE YO
    if x >= 0x12D8 then
      return {status="valid"}
    end
  elseif x <= 0x130E then
    -- ETHIOPIC SYLLABLE DA..ETHIOPIC SYLLABLE GO
    if x >= 0x12F0 then
      return {status="valid"}
    end
  elseif x <= 0x131E then
    -- ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE GGO
    if x >= 0x1318 then
      return {status="valid"}
    end
  elseif x <= 0x1346 then
    -- ETHIOPIC SYLLABLE THA..ETHIOPIC SYLLABLE TZO
    if x >= 0x1320 then
      return {status="valid"}
    end
  elseif x <= 0x135A then
    -- ETHIOPIC SYLLABLE FA..ETHIOPIC SYLLABLE FYA
    if x >= 0x1348 then
      return {status="valid"}
    end
  elseif x <= 0x137C then
    -- ETHIOPIC WORDSPACE..ETHIOPIC NUMBER TEN THOUSAND
    if x >= 0x1361 then
      return {status="disallowed"}
    end
  elseif x <= 0x138F then
    -- ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
    if x >= 0x1380 then
      return {status="valid"}
    end
  elseif x <= 0x1399 then
    -- ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
    if x >= 0x1390 then
      return {status="disallowed"}
    end
  elseif x <= 0x139F then
    -- NA   <reserved-139A>..<reserved-139F>
    if x >= 0x139A then
      return {status="disallowed"}
    end
  elseif x <= 0x13F4 then
    -- CHEROKEE LETTER A..CHEROKEE LETTER YV
    if x >= 0x13A0 then
      return {status="valid"}
    end
  elseif x <= 0x166C then
    -- CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
    if x >= 0x1401 then
      return {status="valid"}
    end
  elseif x <= 0x167F then
    -- CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS NNGAA
    -- CANADIAN SYLLABICS WOODS-CREE THWEE..CANADIAN SYLLABICS BLACKFOOT W
    if x >= 0x166F then
      return {status="valid"}
    end
  elseif x <= 0x169A then
    -- OGHAM LETTER BEITH..OGHAM LETTER PEITH
    if x >= 0x1681 then
      return {status="valid"}
    end
  elseif x <= 0x16EA then
    -- RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
    if x >= 0x16A0 then
      return {status="valid"}
    end
  elseif x <= 0x16F0 then
    -- RUNIC SINGLE PUNCTUATION..RUNIC BELGTHOR SYMBOL
    if x >= 0x16EB then
      return {status="disallowed"}
    end
  elseif x <= 0x16F8 then
    -- RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
    if x >= 0x16F1 then
      return {status="valid"}
    end
  elseif x <= 0x16FF then
    -- NA   <reserved-16F9>..<reserved-16FF>
    if x >= 0x16F9 then
      return {status="disallowed"}
    end
  elseif x <= 0x170C then
    -- TAGALOG LETTER A..TAGALOG LETTER YA
    if x >= 0x1700 then
      return {status="valid"}
    end
  elseif x <= 0x1714 then
    -- TAGALOG LETTER LA..TAGALOG SIGN VIRAMA
    if x >= 0x170E then
      return {status="valid"}
    end
  elseif x <= 0x171F then
    -- NA   <reserved-1715>..<reserved-171F>
    if x >= 0x1715 then
      return {status="disallowed"}
    end
  elseif x <= 0x1734 then
    -- HANUNOO LETTER A..HANUNOO SIGN PAMUDPOD
    if x >= 0x1720 then
      return {status="valid"}
    end
  elseif x <= 0x173F then
    -- NA   <reserved-1737>..<reserved-173F>
    if x >= 0x1737 then
      return {status="disallowed"}
    end
  elseif x <= 0x1753 then
    -- BUHID LETTER A..BUHID VOWEL SIGN U
    if x >= 0x1740 then
      return {status="valid"}
    end
  elseif x <= 0x175F then
    -- NA   <reserved-1754>..<reserved-175F>
    if x >= 0x1754 then
      return {status="disallowed"}
    end
  elseif x <= 0x176C then
    -- TAGBANWA LETTER A..TAGBANWA LETTER YA
    if x >= 0x1760 then
      return {status="valid"}
    end
  elseif x <= 0x177F then
    -- NA   <reserved-1774>..<reserved-177F>
    if x >= 0x1774 then
      return {status="disallowed"}
    end
  elseif x <= 0x17B3 then
    -- KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
    if x >= 0x1780 then
      return {status="valid"}
    end
  elseif x <= 0x17D3 then
    -- KHMER VOWEL SIGN AA..KHMER SIGN BATHAMASAT
    if x >= 0x17B6 then
      return {status="valid"}
    end
  elseif x <= 0x17E9 then
    -- KHMER DIGIT ZERO..KHMER DIGIT NINE
    if x >= 0x17E0 then
      return {status="valid"}
    end
  elseif x <= 0x17EF then
    -- NA   <reserved-17EA>..<reserved-17EF>
    if x >= 0x17EA then
      return {status="disallowed"}
    end
  elseif x <= 0x17F9 then
    -- KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
    if x >= 0x17F0 then
      return {status="disallowed"}
    end
  elseif x <= 0x17FF then
    -- NA   <reserved-17FA>..<reserved-17FF>
    if x >= 0x17FA then
      return {status="disallowed"}
    end
  elseif x <= 0x1805 then
    -- MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
    if x >= 0x1800 then
      return {status="disallowed"}
    end
  elseif x <= 0x1819 then
    -- MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
    if x >= 0x1810 then
      return {status="valid"}
    end
  elseif x <= 0x181F then
    -- NA   <reserved-181A>..<reserved-181F>
    if x >= 0x181A then
      return {status="disallowed"}
    end
  elseif x <= 0x1877 then
    -- MONGOLIAN LETTER A..MONGOLIAN LETTER MANCHU ZHA
    if x >= 0x1820 then
      return {status="valid"}
    end
  elseif x <= 0x187F then
    -- NA   <reserved-1878>..<reserved-187F>
    if x >= 0x1878 then
      return {status="disallowed"}
    end
  elseif x <= 0x18A9 then
    -- MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI DAGALGA
    if x >= 0x1880 then
      return {status="valid"}
    end
  elseif x <= 0x18F5 then
    -- CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
    if x >= 0x18B0 then
      return {status="valid"}
    end
  elseif x <= 0x18FF then
    -- NA   <reserved-18F6>..<reserved-18FF>
    if x >= 0x18F6 then
      return {status="disallowed"}
    end
  elseif x <= 0x191E then
    -- LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER HA
    -- LIMBU LETTER GYAN..LIMBU LETTER TRA
    if x >= 0x1900 then
      return {status="valid"}
    end
  elseif x <= 0x192B then
    -- LIMBU VOWEL SIGN A..LIMBU SUBJOINED LETTER WA
    if x >= 0x1920 then
      return {status="valid"}
    end
  elseif x <= 0x193B then
    -- LIMBU SMALL LETTER KA..LIMBU SIGN SA-I
    if x >= 0x1930 then
      return {status="valid"}
    end
  elseif x <= 0x196D then
    -- LIMBU DIGIT ZERO..TAI LE LETTER AI
    if x >= 0x1946 then
      return {status="valid"}
    end
  elseif x <= 0x197F then
    -- NA   <reserved-1975>..<reserved-197F>
    if x >= 0x1975 then
      return {status="disallowed"}
    end
  elseif x <= 0x19AB then
    -- NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW XVA
    -- NEW TAI LUE LETTER HIGH SUA..NEW TAI LUE LETTER LOW SUA
    if x >= 0x1980 then
      return {status="valid"}
    end
  elseif x <= 0x19C9 then
    -- NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
    if x >= 0x19B0 then
      return {status="valid"}
    end
  elseif x <= 0x19CF then
    -- NA   <reserved-19CA>..<reserved-19CF>
    if x >= 0x19CA then
      return {status="disallowed"}
    end
  elseif x <= 0x19D9 then
    -- NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
    if x >= 0x19D0 then
      return {status="valid"}
    end
  elseif x <= 0x19FF then
    -- NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
    -- KHMER SYMBOL PATHAMASAT..KHMER SYMBOL DAP-PRAM ROC
    if x >= 0x19DE then
      return {status="disallowed"}
    end
  elseif x <= 0x1A1B then
    -- BUGINESE LETTER KA..BUGINESE VOWEL SIGN AE
    if x >= 0x1A00 then
      return {status="valid"}
    end
  elseif x <= 0x1A5E then
    -- TAI THAM LETTER HIGH KA..TAI THAM CONSONANT SIGN SA
    if x >= 0x1A20 then
      return {status="valid"}
    end
  elseif x <= 0x1A7C then
    -- TAI THAM SIGN SAKOT..TAI THAM SIGN KHUEN-LUE KARAN
    if x >= 0x1A60 then
      return {status="valid"}
    end
  elseif x <= 0x1A89 then
    -- TAI THAM COMBINING CRYPTOGRAMMIC DOT..TAI THAM HORA DIGIT NINE
    if x >= 0x1A7F then
      return {status="valid"}
    end
  elseif x <= 0x1A8F then
    -- NA   <reserved-1A8A>..<reserved-1A8F>
    if x >= 0x1A8A then
      return {status="disallowed"}
    end
  elseif x <= 0x1A99 then
    -- TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
    if x >= 0x1A90 then
      return {status="valid"}
    end
  elseif x <= 0x1A9F then
    -- NA   <reserved-1A9A>..<reserved-1A9F>
    if x >= 0x1A9A then
      return {status="disallowed"}
    end
  elseif x <= 0x1AA6 then
    -- TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA
    if x >= 0x1AA0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1AAD then
    -- TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
    if x >= 0x1AA8 then
      return {status="disallowed"}
    end
  elseif x <= 0x1ABD then
    -- COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
    if x >= 0x1AB0 then
      return {status="valid"}
    end
  elseif x <= 0x1AFF then
    -- NA   <reserved-1ABF>..<reserved-1AFF>
    if x >= 0x1ABF then
      return {status="disallowed"}
    end
  elseif x <= 0x1B4B then
    -- BALINESE SIGN ULU RICEM..BALINESE LETTER ASYURA SASAK
    if x >= 0x1B00 then
      return {status="valid"}
    end
  elseif x <= 0x1B59 then
    -- BALINESE DIGIT ZERO..BALINESE DIGIT NINE
    if x >= 0x1B50 then
      return {status="valid"}
    end
  elseif x <= 0x1B6A then
    -- BALINESE PANTI..BALINESE MUSICAL SYMBOL DANG GEDE
    if x >= 0x1B5A then
      return {status="disallowed"}
    end
  elseif x <= 0x1B73 then
    -- BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
    if x >= 0x1B6B then
      return {status="valid"}
    end
  elseif x <= 0x1B7C then
    -- BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
    if x >= 0x1B74 then
      return {status="disallowed"}
    end
  elseif x <= 0x1BF3 then
    -- SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PAMAAEH
    -- SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
    -- SUNDANESE LETTER KHA..SUNDANESE DIGIT NINE
    -- SUNDANESE AVAGRAHA..SUNDANESE LETTER FINAL M
    -- BATAK LETTER A..BATAK PANONGONAN
    if x >= 0x1B80 then
      return {status="valid"}
    end
  elseif x <= 0x1BFB then
    -- NA   <reserved-1BF4>..<reserved-1BFB>
    if x >= 0x1BF4 then
      return {status="disallowed"}
    end
  elseif x <= 0x1C37 then
    -- LEPCHA LETTER KA..LEPCHA SIGN NUKTA
    if x >= 0x1C00 then
      return {status="valid"}
    end
  elseif x <= 0x1C49 then
    -- LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
    if x >= 0x1C40 then
      return {status="valid"}
    end
  elseif x <= 0x1C7D then
    -- LEPCHA LETTER TTA..OL CHIKI AHAD
    if x >= 0x1C4D then
      return {status="valid"}
    end
  elseif x <= 0x1CBF then
    -- NA   <reserved-1C89>..<reserved-1CBF>
    if x >= 0x1C89 then
      return {status="disallowed"}
    end
  elseif x <= 0x1CC7 then
    -- SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
    if x >= 0x1CC0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1CCF then
    -- NA   <reserved-1CC8>..<reserved-1CCF>
    if x >= 0x1CC8 then
      return {status="disallowed"}
    end
  elseif x <= 0x1CF6 then
    -- VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC SIGN ARDHAVISARGA
    -- VEDIC SIGN ROTATED ARDHAVISARGA..VEDIC SIGN UPADHMANIYA
    if x >= 0x1CD4 then
      return {status="valid"}
    end
  elseif x <= 0x1CFF then
    -- NA   <reserved-1CFA>..<reserved-1CFF>
    if x >= 0x1CFA then
      return {status="disallowed"}
    end
  elseif x <= 0x1D2B then
    -- LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
    if x >= 0x1D00 then
      return {status="valid"}
    end
  elseif x <= 0x1D77 then
    -- LATIN SMALL LETTER B WITH MIDDLE TILDE..LATIN SMALL LETTER TURNED G
    if x >= 0x1D6C then
      return {status="valid"}
    end
  elseif x <= 0x1D9A then
    -- LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
    if x >= 0x1D79 then
      return {status="valid"}
    end
  elseif x <= 0x1DF9 then
    -- COMBINING DOTTED GRAVE ACCENT..COMBINING SUSPENSION MARK
    -- COMBINING MACRON-ACUTE..COMBINING LATIN SMALL LETTER R BELOW
    -- COMBINING BREVE-MACRON..COMBINING LATIN SMALL LETTER Z
    -- COMBINING LATIN SMALL LETTER ALPHA..COMBINING UP TACK ABOVE
    -- COMBINING KAVYKA ABOVE RIGHT..COMBINING WIDE INVERTED BRIDGE BELOW
    if x >= 0x1DC0 then
      return {status="valid"}
    end
  elseif x <= 0x1F07 then
    -- GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
    if x >= 0x1F00 then
      return {status="valid"}
    end
  elseif x <= 0x1F15 then
    -- GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
    if x >= 0x1F10 then
      return {status="valid"}
    end
  elseif x <= 0x1F27 then
    -- GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
    if x >= 0x1F20 then
      return {status="valid"}
    end
  elseif x <= 0x1F37 then
    -- GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
    if x >= 0x1F30 then
      return {status="valid"}
    end
  elseif x <= 0x1F45 then
    -- GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
    if x >= 0x1F40 then
      return {status="valid"}
    end
  elseif x <= 0x1F57 then
    -- GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
    if x >= 0x1F50 then
      return {status="valid"}
    end
  elseif x <= 0x1F67 then
    -- GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
    if x >= 0x1F60 then
      return {status="valid"}
    end
  elseif x <= 0x200A then
    -- EN QUAD..HAIR SPACE
    if x >= 0x2000 then
      return {status="disallowed"}
    end
  elseif x <= 0x2023 then
    -- LEFT SINGLE QUOTATION MARK..TRIANGULAR BULLET
    if x >= 0x2018 then
      return {status="disallowed"}
    end
  elseif x <= 0x202E then
    -- LINE SEPARATOR..RIGHT-TO-LEFT OVERRIDE
    if x >= 0x2028 then
      return {status="disallowed"}
    end
  elseif x <= 0x2046 then
    -- UNDERTIE..RIGHT SQUARE BRACKET WITH QUILL
    if x >= 0x203F then
      return {status="disallowed"}
    end
  elseif x <= 0x2056 then
    -- TIRONIAN SIGN ET..BLACK RIGHTWARDS BULLET
    -- LOW ASTERISK..COMMERCIAL MINUS SIGN
    -- SWUNG DASH..INVERTED UNDERTIE
    -- FLOWER PUNCTUATION MARK..THREE DOT PUNCTUATION
    if x >= 0x204A then
      return {status="disallowed"}
    end
  elseif x <= 0x205E then
    -- FOUR DOT PUNCTUATION..VERTICAL FOUR DOTS
    if x >= 0x2058 then
      return {status="disallowed"}
    end
  elseif x <= 0x206F then
    -- LEFT-TO-RIGHT ISOLATE..POP DIRECTIONAL ISOLATE
    -- INHIBIT SYMMETRIC SWAPPING..NOMINAL DIGIT SHAPES
    if x >= 0x2066 then
      return {status="disallowed"}
    end
  elseif x <= 0x20A7 then
    -- EURO-CURRENCY SIGN..PESETA SIGN
    if x >= 0x20A0 then
      return {status="disallowed"}
    end
  elseif x <= 0x20B8 then
    -- KIP SIGN..DRACHMA SIGN
    -- GERMAN PENNY SIGN..PESO SIGN
    -- GUARANI SIGN..CEDI SIGN
    -- LIVRE TOURNOIS SIGN..TENGE SIGN
    if x >= 0x20AD then
      return {status="disallowed"}
    end
  elseif x <= 0x20CF then
    -- NA   <reserved-20C0>..<reserved-20CF>
    if x >= 0x20C0 then
      return {status="disallowed"}
    end
  elseif x <= 0x20EA then
    -- COMBINING LEFT HARPOON ABOVE..COMBINING LEFT RIGHT ARROW ABOVE
    -- COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING KEYCAP
    -- COMBINING ENCLOSING UPWARD POINTING TRIANGLE..COMBINING LEFTWARDS ARROW OVERLAY
    if x >= 0x20D0 then
      return {status="disallowed"}
    end
  elseif x <= 0x20FF then
    -- NA   <reserved-20F1>..<reserved-20FF>
    if x >= 0x20F1 then
      return {status="disallowed"}
    end
  elseif x <= 0x222B then
    -- LEFTWARDS ARROW..UPWARDS WHITE ARROW FROM BAR
    -- UPWARDS WHITE ARROW ON PEDESTAL..UP DOWN WHITE ARROW
    -- RIGHT ARROW WITH SMALL CIRCLE..LEFT RIGHT OPEN-HEADED ARROW
    -- FOR ALL..INTEGRAL
    if x >= 0x2190 then
      return {status="disallowed"}
    end
  elseif x <= 0x225F then
    -- CLOCKWISE INTEGRAL..QUESTIONED EQUAL TO
    if x >= 0x2231 then
      return {status="disallowed"}
    end
  elseif x <= 0x226D then
    -- IDENTICAL TO..NOT EQUIVALENT TO
    if x >= 0x2261 then
      return {status="disallowed"}
    end
  elseif x <= 0x22FF then
    -- NEITHER LESS-THAN NOR EQUAL TO..DOWN RIGHT DIAGONAL ELLIPSIS
    -- ELEMENT OF WITH LONG HORIZONTAL STROKE..Z NOTATION BAG MEMBERSHIP
    if x >= 0x2270 then
      return {status="disallowed"}
    end
  elseif x <= 0x2328 then
    -- HOUSE..KEYBOARD
    if x >= 0x2302 then
      return {status="disallowed"}
    end
  elseif x <= 0x237A then
    -- ERASE TO THE LEFT..APL FUNCTIONAL SYMBOL ALPHA
    if x >= 0x232B then
      return {status="disallowed"}
    end
  elseif x <= 0x23E7 then
    -- SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
    -- LEFT PARENTHESIS UPPER HOOK..return {status="SYMBOL"}
    -- EJECT SYMBOL..VERTICAL LINE EXTENSION
    -- METRICAL BREVE..FUSE
    -- TOP PARENTHESIS..ELECTRICAL INTERSECTION
    if x >= 0x237D then
      return {status="disallowed"}
    end
  elseif x <= 0x23FE then
    -- BLACK RIGHT-POINTING DOUBLE TRIANGLE..HOURGLASS WITH FLOWING SAND
    -- BLACK MEDIUM LEFT-POINTING TRIANGLE..BLACK CIRCLE FOR RECORD
    -- POWER SYMBOL..POWER SLEEP SYMBOL
    if x >= 0x23E9 then
      return {status="disallowed"}
    end
  elseif x <= 0x2426 then
    -- SYMBOL FOR NULL..SYMBOL FOR NEWLINE
    -- SYMBOL FOR DELETE FORM TWO..SYMBOL FOR SUBSTITUTE FORM TWO
    if x >= 0x2400 then
      return {status="disallowed"}
    end
  elseif x <= 0x243F then
    -- NA   <reserved-2427>..<reserved-243F>
    if x >= 0x2427 then
      return {status="disallowed"}
    end
  elseif x <= 0x244A then
    -- OCR HOOK..OCR DOUBLE BACKSLASH
    if x >= 0x2440 then
      return {status="disallowed"}
    end
  elseif x <= 0x245F then
    -- NA   <reserved-244B>..<reserved-245F>
    if x >= 0x244B then
      return {status="disallowed"}
    end
  elseif x <= 0x249B then
    -- DIGIT ONE FULL STOP..NUMBER TWENTY FULL STOP
    if x >= 0x2488 then
      return {status="disallowed"}
    end
  elseif x <= 0x24FE then
    -- NEGATIVE CIRCLED NUMBER ELEVEN..DOUBLE CIRCLED NUMBER TEN
    if x >= 0x24EB then
      return {status="disallowed"}
    end
  elseif x <= 0x2617 then
    -- BOX DRAWINGS LIGHT HORIZONTAL..RIGHT ONE EIGHTH BLOCK
    -- QUADRANT LOWER LEFT..QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT
    -- BLACK SQUARE..LARGE CIRCLE
    -- WHITE SQUARE WITH UPPER LEFT QUADRANT..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
    -- UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
    -- BLACK SUN WITH RAYS..SALTIRE
    -- UMBRELLA WITH RAIN DROPS..HOT BEVERAGE
    -- WHITE SHOGI PIECE..BLACK SHOGI PIECE
    if x >= 0x2500 then
      return {status="disallowed"}
    end
  elseif x <= 0x269C then
    -- BLACK LEFT POINTING INDEX..MUSIC SHARP SIGN
    -- WEST SYRIAC CROSS..EAST SYRIAC CROSS
    -- UNIVERSAL RECYCLING SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL
    -- PERMANENT PAPER SIGN..WHEELCHAIR SYMBOL
    -- DIE FACE-1..BLACK CIRCLE WITH TWO WHITE DOTS
    -- MONOGRAM FOR YANG..BLACK FLAG
    -- HAMMER AND PICK..FLEUR-DE-LIS
    if x >= 0x261A then
      return {status="disallowed"}
    end
  elseif x <= 0x26B1 then
    -- THREE LINES CONVERGING RIGHT..THREE LINES CONVERGING LEFT
    -- WARNING SIGN..HIGH VOLTAGE SIGN
    -- DOUBLED FEMALE SIGN..FUNERAL URN
    if x >= 0x269E then
      return {status="disallowed"}
    end
  elseif x <= 0x26CD then
    -- CERES..SESQUIQUADRATE
    -- SOCCER BALL..SQUARED KEY
    -- WHITE DRAUGHTS MAN..BLACK DRAUGHTS KING
    -- SNOWMAN WITHOUT SNOW..DISABLED CAR
    if x >= 0x26B3 then
      return {status="disallowed"}
    end
  elseif x <= 0x26E1 then
    -- PICK..RESTRICTED LEFT ENTRY-2
    if x >= 0x26CF then
      return {status="disallowed"}
    end
  elseif x <= 0x26FF then
    -- PENTAGRAM..INVERTED PENTAGRAM
    -- BLACK CROSS ON SHIELD..WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE
    if x >= 0x26E4 then
      return {status="disallowed"}
    end
  elseif x <= 0x2727 then
    -- TELEPHONE LOCATION SIGN..ENVELOPE
    -- RAISED FIST..RAISED HAND
    -- VICTORY HAND..WHITE FOUR POINTED STAR
    if x >= 0x2706 then
      return {status="disallowed"}
    end
  elseif x <= 0x274B then
    -- STRESS OUTLINED WHITE STAR..HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK
    if x >= 0x2729 then
      return {status="disallowed"}
    end
  elseif x <= 0x2755 then
    -- LOWER RIGHT DROP-SHADOWED WHITE SQUARE..UPPER RIGHT SHADOWED WHITE SQUARE
    -- BLACK QUESTION MARK ORNAMENT..WHITE EXCLAMATION MARK ORNAMENT
    if x >= 0x274F then
      return {status="disallowed"}
    end
  elseif x <= 0x27AF then
    -- LIGHT VERTICAL BAR..HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT
    -- HEAVY LOW SINGLE COMMA QUOTATION MARK ORNAMENT..HEAVY LOW DOUBLE COMMA QUOTATION MARK ORNAMENT
    -- CURVED STEM PARAGRAPH SIGN ORNAMENT..ROTATED FLORAL HEART BULLET
    -- MEDIUM LEFT PARENTHESIS ORNAMENT..MEDIUM RIGHT CURLY BRACKET ORNAMENT
    -- DINGBAT NEGATIVE CIRCLED DIGIT ONE..HEAVY WIDE-HEADED RIGHTWARDS ARROW
    -- HEAVY PLUS SIGN..HEAVY DIVISION SIGN
    -- HEAVY SOUTH EAST ARROW..NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW
    if x >= 0x2758 then
      return {status="disallowed"}
    end
  elseif x <= 0x27BE then
    -- NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW..OPEN-OUTLINED RIGHTWARDS ARROW
    if x >= 0x27B1 then
      return {status="disallowed"}
    end
  elseif x <= 0x27CA then
    -- THREE DIMENSIONAL ANGLE..RIGHT S-SHAPED BAG DELIMITER
    -- OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
    if x >= 0x27C0 then
      return {status="disallowed"}
    end
  elseif x <= 0x2A0B then
    -- SQUARED LOGICAL AND..SQUARED LOGICAL OR
    -- WHITE DIAMOND WITH CENTRED DOT..MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
    -- MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET..MATHEMATICAL RIGHT FLATTENED PARENTHESIS
    -- UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
    -- BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
    -- RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..SUMMATION WITH INTEGRAL
    if x >= 0x27CE then
      return {status="disallowed"}
    end
  elseif x <= 0x2A73 then
    -- FINITE PART INTEGRAL..EQUALS SIGN ABOVE TILDE OPERATOR
    if x >= 0x2A0D then
      return {status="disallowed"}
    end
  elseif x <= 0x2ADB then
    -- EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW..TRANSVERSAL INTERSECTION
    if x >= 0x2A77 then
      return {status="disallowed"}
    end
  elseif x <= 0x2B73 then
    -- NONFORKING..N-ARY WHITE VERTICAL BAR
    -- NORTH EAST WHITE ARROW..UP DOWN BLACK ARROW
    -- RIGHTWARDS ARROW WITH TIP DOWNWARDS..SQUARE WITH BOTTOM HALF BLACK
    -- SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK..DOTTED SQUARE
    -- BLACK LARGE SQUARE..BLACK PENTAGON
    -- WHITE PENTAGON..HORIZONTAL BLACK HEXAGON
    -- BLACK LARGE CIRCLE..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
    -- DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..SHORT BACKSLANTED SOUTH ARROW
    -- WHITE MEDIUM STAR..WHITE RIGHT-POINTING PENTAGON
    -- HEAVY LARGE CIRCLE..HEAVY CIRCLED SALTIRE
    -- SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
    if x >= 0x2ADD then
      return {status="disallowed"}
    end
  elseif x <= 0x2B95 then
    -- NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
    if x >= 0x2B76 then
      return {status="disallowed"}
    end
  elseif x <= 0x2BB9 then
    -- THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
    if x >= 0x2B98 then
      return {status="disallowed"}
    end
  elseif x <= 0x2BC8 then
    -- BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
    if x >= 0x2BBD then
      return {status="disallowed"}
    end
  elseif x <= 0x2BD1 then
    -- TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN
    if x >= 0x2BCA then
      return {status="disallowed"}
    end
  elseif x <= 0x2BEB then
    -- NA   <reserved-2BD3>..<reserved-2BEB>
    if x >= 0x2BD3 then
      return {status="disallowed"}
    end
  elseif x <= 0x2BFF then
    -- NA   <reserved-2BF0>..<reserved-2BFF>
    if x >= 0x2BF0 then
      return {status="disallowed"}
    end
  elseif x <= 0x2C5E then
    -- GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
    if x >= 0x2C30 then
      return {status="valid"}
    end
  elseif x <= 0x2C7B then
    -- LATIN SMALL LETTER HALF H..LATIN SMALL LETTER TAILLESS PHI
    -- LATIN SMALL LETTER E WITH NOTCH..LATIN LETTER SMALL CAPITAL TURNED E
    if x >= 0x2C76 then
      return {status="valid"}
    end
  elseif x <= 0x2CEA then
    -- COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
    if x >= 0x2CE5 then
      return {status="disallowed"}
    end
  elseif x <= 0x2CFF then
    -- COPTIC OLD NUBIAN FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
    if x >= 0x2CF9 then
      return {status="disallowed"}
    end
  elseif x <= 0x2D25 then
    -- GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
    if x >= 0x2D00 then
      return {status="valid"}
    end
  elseif x <= 0x2D67 then
    -- TIFINAGH LETTER YA..TIFINAGH LETTER YAZZ
    -- TIFINAGH LETTER YE..TIFINAGH LETTER YO
    if x >= 0x2D30 then
      return {status="valid"}
    end
  elseif x <= 0x2D6E then
    -- NA   <reserved-2D68>..<reserved-2D6E>
    if x >= 0x2D68 then
      return {status="disallowed"}
    end
  elseif x <= 0x2D7E then
    -- NA   <reserved-2D71>..<reserved-2D7E>
    if x >= 0x2D71 then
      return {status="disallowed"}
    end
  elseif x <= 0x2D96 then
    -- ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
    if x >= 0x2D80 then
      return {status="valid"}
    end
  elseif x <= 0x2D9F then
    -- NA   <reserved-2D97>..<reserved-2D9F>
    if x >= 0x2D97 then
      return {status="disallowed"}
    end
  elseif x <= 0x2DA6 then
    -- ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
    if x >= 0x2DA0 then
      return {status="valid"}
    end
  elseif x <= 0x2DAE then
    -- ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
    if x >= 0x2DA8 then
      return {status="valid"}
    end
  elseif x <= 0x2DB6 then
    -- ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
    if x >= 0x2DB0 then
      return {status="valid"}
    end
  elseif x <= 0x2DBE then
    -- ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
    if x >= 0x2DB8 then
      return {status="valid"}
    end
  elseif x <= 0x2DC6 then
    -- ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
    if x >= 0x2DC0 then
      return {status="valid"}
    end
  elseif x <= 0x2DCE then
    -- ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
    if x >= 0x2DC8 then
      return {status="valid"}
    end
  elseif x <= 0x2DD6 then
    -- ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
    if x >= 0x2DD0 then
      return {status="valid"}
    end
  elseif x <= 0x2DDE then
    -- ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
    if x >= 0x2DD8 then
      return {status="valid"}
    end
  elseif x <= 0x2DFF then
    -- COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
    if x >= 0x2DE0 then
      return {status="valid"}
    end
  elseif x <= 0x2E2E then
    -- RIGHT ANGLE SUBSTITUTION MARKER..DOUBLE OBLIQUE HYPHEN
    -- INVERTED INTERROBANG..TILDE WITH RING ABOVE
    -- LEFT LOW PARAPHRASE BRACKET..RIGHT LOW PARAPHRASE BRACKET
    -- TILDE WITH DOT ABOVE..REVERSED QUESTION MARK
    if x >= 0x2E00 then
      return {status="disallowed"}
    end
  elseif x <= 0x2E49 then
    -- TURNED COMMA..THREE-EM DASH
    -- STENOGRAPHIC FULL STOP..DOUBLE LOW-REVERSED-9 QUOTATION MARK
    -- DASH WITH LEFT UPTURN..DOUBLE SUSPENSION MARK
    -- INVERTED LOW KAVYKA..DOUBLE STACKED COMMA
    if x >= 0x2E32 then
      return {status="disallowed"}
    end
  elseif x <= 0x2E7F then
    -- NA   <reserved-2E4A>..<reserved-2E7F>
    if x >= 0x2E4A then
      return {status="disallowed"}
    end
  elseif x <= 0x2E99 then
    -- CJK RADICAL REPEAT..CJK RADICAL RAP
    if x >= 0x2E80 then
      return {status="disallowed"}
    end
  elseif x <= 0x2EF2 then
    -- CJK RADICAL CIVILIAN..CJK RADICAL J-SIMPLIFIED TURTLE
    if x >= 0x2EA0 then
      return {status="disallowed"}
    end
  elseif x <= 0x2EFF then
    -- NA   <reserved-2EF4>..<reserved-2EFF>
    if x >= 0x2EF4 then
      return {status="disallowed"}
    end
  elseif x <= 0x2FFF then
    -- NA   <reserved-2FD6>..<reserved-2FEF>
    -- IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
    -- NA   <reserved-2FFC>..<reserved-2FFF>
    if x >= 0x2FD6 then
      return {status="disallowed"}
    end
  elseif x <= 0x3029 then
    -- LEFT ANGLE BRACKET..HANGZHOU NUMERAL NINE
    if x >= 0x3008 then
      return {status="disallowed"}
    end
  elseif x <= 0x3035 then
    -- HANGUL SINGLE DOT TONE MARK..VERTICAL KANA REPEAT MARK LOWER HALF
    if x >= 0x302E then
      return {status="disallowed"}
    end
  elseif x <= 0x3096 then
    -- HIRAGANA LETTER SMALL A..HIRAGANA LETTER VU
    -- HIRAGANA LETTER SMALL KA..HIRAGANA LETTER SMALL KE
    if x >= 0x3041 then
      return {status="valid"}
    end
  elseif x <= 0x30FE then
    -- KATAKANA LETTER SMALL A..KATAKANA VOICED ITERATION MARK
    if x >= 0x30A1 then
      return {status="valid"}
    end
  elseif x <= 0x312C then
    -- BOPOMOFO LETTER B..BOPOMOFO LETTER GN
    if x >= 0x3105 then
      return {status="valid"}
    end
  elseif x <= 0x31BA then
    -- BOPOMOFO LETTER BU..BOPOMOFO FINAL LETTER H
    -- BOPOMOFO LETTER GH..BOPOMOFO LETTER ZY
    if x >= 0x31A0 then
      return {status="valid"}
    end
  elseif x <= 0x31E3 then
    -- CJK STROKE T..CJK STROKE N
    -- CJK STROKE H..CJK STROKE Q
    if x >= 0x31C0 then
      return {status="disallowed"}
    end
  elseif x <= 0x31EF then
    -- NA   <reserved-31E4>..<reserved-31EF>
    if x >= 0x31E4 then
      return {status="disallowed"}
    end
  elseif x <= 0x31FF then
    -- KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
    if x >= 0x31F0 then
      return {status="valid"}
    end
  elseif x <= 0x324F then
    -- CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE
    if x >= 0x3248 then
      return {status="disallowed"}
    end
  elseif x <= 0x4DB5 then
    -- CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
    if x >= 0x3400 then
      return {status="valid"}
    end
  elseif x <= 0x4DBF then
    -- NA   <reserved-4DB6>..<reserved-4DBF>
    if x >= 0x4DB6 then
      return {status="disallowed"}
    end
  elseif x <= 0x4DFF then
    -- HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
    if x >= 0x4DC0 then
      return {status="disallowed"}
    end
  elseif x <= 0x9FCB then
    -- CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FA5
    -- CJK UNIFIED IDEOGRAPH-9FA6..CJK UNIFIED IDEOGRAPH-9FBB
    -- CJK UNIFIED IDEOGRAPH-9FBC..CJK UNIFIED IDEOGRAPH-9FC3
    -- CJK UNIFIED IDEOGRAPH-9FC4..CJK UNIFIED IDEOGRAPH-9FCB
    if x >= 0x4E00 then
      return {status="valid"}
    end
  elseif x <= 0x9FEA then
    -- CJK UNIFIED IDEOGRAPH-9FCD..CJK UNIFIED IDEOGRAPH-9FD5
    -- CJK UNIFIED IDEOGRAPH-9FD6..CJK UNIFIED IDEOGRAPH-9FEA
    if x >= 0x9FCD then
      return {status="valid"}
    end
  elseif x <= 0x9FFF then
    -- NA   <reserved-9FEB>..<reserved-9FFF>
    if x >= 0x9FEB then
      return {status="disallowed"}
    end
  elseif x <= 0xA48C then
    -- YI SYLLABLE IT..YI SYLLABLE YYR
    if x >= 0xA000 then
      return {status="valid"}
    end
  elseif x <= 0xA4B3 then
    -- YI RADICAL QOT..YI RADICAL GA
    -- YI RADICAL ZUP..YI RADICAL CYT
    -- YI RADICAL DDUR..YI RADICAL JO
    if x >= 0xA490 then
      return {status="disallowed"}
    end
  elseif x <= 0xA4C0 then
    -- YI RADICAL JJY..YI RADICAL SHAT
    if x >= 0xA4B5 then
      return {status="disallowed"}
    end
  elseif x <= 0xA4CF then
    -- NA   <reserved-A4C7>..<reserved-A4CF>
    if x >= 0xA4C7 then
      return {status="disallowed"}
    end
  elseif x <= 0xA4FD then
    -- LISU LETTER BA..LISU LETTER TONE MYA JEU
    if x >= 0xA4D0 then
      return {status="valid"}
    end
  elseif x <= 0xA60C then
    -- VAI SYLLABLE EE..VAI SYLLABLE LENGTHENER
    if x >= 0xA500 then
      return {status="valid"}
    end
  elseif x <= 0xA62B then
    -- VAI SYLLABLE NDOLE FA..VAI SYLLABLE NDOLE DO
    if x >= 0xA610 then
      return {status="valid"}
    end
  elseif x <= 0xA63F then
    -- NA   <reserved-A62C>..<reserved-A63F>
    if x >= 0xA62C then
      return {status="disallowed"}
    end
  elseif x <= 0xA67D then
    -- COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA
    -- COMBINING CYRILLIC KAVYKA..COMBINING CYRILLIC PAYEROK
    if x >= 0xA674 then
      return {status="valid"}
    end
  elseif x <= 0xA6E5 then
    -- BAMUM LETTER A..BAMUM LETTER KI
    if x >= 0xA6A0 then
      return {status="valid"}
    end
  elseif x <= 0xA6EF then
    -- BAMUM LETTER MO..BAMUM LETTER KOGHOM
    if x >= 0xA6E6 then
      return {status="disallowed"}
    end
  elseif x <= 0xA6F7 then
    -- BAMUM NJAEMLI..BAMUM QUESTION MARK
    if x >= 0xA6F2 then
      return {status="disallowed"}
    end
  elseif x <= 0xA6FF then
    -- NA   <reserved-A6F8>..<reserved-A6FF>
    if x >= 0xA6F8 then
      return {status="disallowed"}
    end
  elseif x <= 0xA716 then
    -- MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
    if x >= 0xA700 then
      return {status="disallowed"}
    end
  elseif x <= 0xA71F then
    -- MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOWER RIGHT CORNER ANGLE
    -- MODIFIER LETTER RAISED UP ARROW..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
    if x >= 0xA717 then
      return {status="valid"}
    end
  elseif x <= 0xA778 then
    -- LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM
    if x >= 0xA771 then
      return {status="valid"}
    end
  elseif x <= 0xA7F6 then
    -- NA   <reserved-A7B8>..<reserved-A7F6>
    if x >= 0xA7B8 then
      return {status="disallowed"}
    end
  elseif x <= 0xA827 then
    -- LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M
    -- SYLOTI NAGRI LETTER A..SYLOTI NAGRI VOWEL SIGN OO
    if x >= 0xA7FB then
      return {status="valid"}
    end
  elseif x <= 0xA839 then
    -- NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC QUANTITY MARK
    if x >= 0xA830 then
      return {status="disallowed"}
    end
  elseif x <= 0xA83F then
    -- NA   <reserved-A83A>..<reserved-A83F>
    if x >= 0xA83A then
      return {status="disallowed"}
    end
  elseif x <= 0xA873 then
    -- PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
    if x >= 0xA840 then
      return {status="valid"}
    end
  elseif x <= 0xA87F then
    -- NA   <reserved-A878>..<reserved-A87F>
    if x >= 0xA878 then
      return {status="disallowed"}
    end
  elseif x <= 0xA8C4 then
    -- SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VIRAMA
    if x >= 0xA880 then
      return {status="valid"}
    end
  elseif x <= 0xA8CD then
    -- NA   <reserved-A8C6>..<reserved-A8CD>
    if x >= 0xA8C6 then
      return {status="disallowed"}
    end
  elseif x <= 0xA8D9 then
    -- SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
    if x >= 0xA8D0 then
      return {status="valid"}
    end
  elseif x <= 0xA8DF then
    -- NA   <reserved-A8DA>..<reserved-A8DF>
    if x >= 0xA8DA then
      return {status="disallowed"}
    end
  elseif x <= 0xA8F7 then
    -- COMBINING DEVANAGARI DIGIT ZERO..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
    if x >= 0xA8E0 then
      return {status="valid"}
    end
  elseif x <= 0xA92D then
    -- KAYAH LI DIGIT ZERO..KAYAH LI TONE CALYA PLOPHU
    if x >= 0xA900 then
      return {status="valid"}
    end
  elseif x <= 0xA953 then
    -- REJANG LETTER KA..REJANG VIRAMA
    if x >= 0xA930 then
      return {status="valid"}
    end
  elseif x <= 0xA95E then
    -- NA   <reserved-A954>..<reserved-A95E>
    if x >= 0xA954 then
      return {status="disallowed"}
    end
  elseif x <= 0xA97C then
    -- HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
    if x >= 0xA960 then
      return {status="disallowed"}
    end
  elseif x <= 0xA9C0 then
    -- JAVANESE SIGN PANYANGGA..JAVANESE PANGKON
    if x >= 0xA980 then
      return {status="valid"}
    end
  elseif x <= 0xA9CD then
    -- JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH
    if x >= 0xA9C1 then
      return {status="disallowed"}
    end
  elseif x <= 0xA9D9 then
    -- JAVANESE PANGRANGKEP..JAVANESE DIGIT NINE
    if x >= 0xA9CF then
      return {status="valid"}
    end
  elseif x <= 0xA9FE then
    -- MYANMAR LETTER SHAN GHA..MYANMAR LETTER TAI LAING BHA
    if x >= 0xA9E0 then
      return {status="valid"}
    end
  elseif x <= 0xAA36 then
    -- CHAM LETTER A..CHAM CONSONANT SIGN WA
    if x >= 0xAA00 then
      return {status="valid"}
    end
  elseif x <= 0xAA3F then
    -- NA   <reserved-AA37>..<reserved-AA3F>
    if x >= 0xAA37 then
      return {status="disallowed"}
    end
  elseif x <= 0xAA4D then
    -- CHAM LETTER FINAL K..CHAM CONSONANT SIGN FINAL H
    if x >= 0xAA40 then
      return {status="valid"}
    end
  elseif x <= 0xAA59 then
    -- CHAM DIGIT ZERO..CHAM DIGIT NINE
    if x >= 0xAA50 then
      return {status="valid"}
    end
  elseif x <= 0xAA76 then
    -- MYANMAR LETTER KHAMTI GA..MYANMAR LOGOGRAM KHAMTI HM
    if x >= 0xAA60 then
      return {status="valid"}
    end
  elseif x <= 0xAAC2 then
    -- MYANMAR LETTER AITON RA..MYANMAR SIGN PAO KAREN TONE
    -- MYANMAR SIGN TAI LAING TONE-2..MYANMAR LETTER SHWE PALAUNG SHA
    -- TAI VIET LETTER LOW KO..TAI VIET TONE MAI SONG
    if x >= 0xAA7A then
      return {status="valid"}
    end
  elseif x <= 0xAADA then
    -- NA   <reserved-AAC3>..<reserved-AADA>
    if x >= 0xAAC3 then
      return {status="disallowed"}
    end
  elseif x <= 0xAAEF then
    -- MEETEI MAYEK LETTER E..MEETEI MAYEK VOWEL SIGN AAU
    if x >= 0xAAE0 then
      return {status="valid"}
    end
  elseif x <= 0xAB00 then
    -- NA   <reserved-AAF7>..<reserved-AB00>
    if x >= 0xAAF7 then
      return {status="disallowed"}
    end
  elseif x <= 0xAB06 then
    -- ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
    if x >= 0xAB01 then
      return {status="valid"}
    end
  elseif x <= 0xAB0E then
    -- ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
    if x >= 0xAB09 then
      return {status="valid"}
    end
  elseif x <= 0xAB16 then
    -- ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
    if x >= 0xAB11 then
      return {status="valid"}
    end
  elseif x <= 0xAB1F then
    -- NA   <reserved-AB17>..<reserved-AB1F>
    if x >= 0xAB17 then
      return {status="disallowed"}
    end
  elseif x <= 0xAB26 then
    -- ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
    if x >= 0xAB20 then
      return {status="valid"}
    end
  elseif x <= 0xAB2E then
    -- ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
    if x >= 0xAB28 then
      return {status="valid"}
    end
  elseif x <= 0xAB5A then
    -- LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
    if x >= 0xAB30 then
      return {status="valid"}
    end
  elseif x <= 0xAB65 then
    -- LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER UO
    -- LATIN SMALL LETTER INVERTED ALPHA..GREEK LETTER SMALL CAPITAL OMEGA
    if x >= 0xAB60 then
      return {status="valid"}
    end
  elseif x <= 0xAB6F then
    -- NA   <reserved-AB66>..<reserved-AB6F>
    if x >= 0xAB66 then
      return {status="disallowed"}
    end
  elseif x <= 0xABEA then
    -- MEETEI MAYEK LETTER KOK..MEETEI MAYEK VOWEL SIGN NUNG
    if x >= 0xABC0 then
      return {status="valid"}
    end
  elseif x <= 0xABF9 then
    -- MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
    if x >= 0xABF0 then
      return {status="valid"}
    end
  elseif x <= 0xABFF then
    -- NA   <reserved-ABFA>..<reserved-ABFF>
    if x >= 0xABFA then
      return {status="disallowed"}
    end
  elseif x <= 0xD7A3 then
    -- HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
    if x >= 0xAC00 then
      return {status="valid"}
    end
  elseif x <= 0xD7AF then
    -- NA   <reserved-D7A4>..<reserved-D7AF>
    if x >= 0xD7A4 then
      return {status="disallowed"}
    end
  elseif x <= 0xD7C6 then
    -- HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
    if x >= 0xD7B0 then
      return {status="disallowed"}
    end
  elseif x <= 0xD7FB then
    -- HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
    if x >= 0xD7CB then
      return {status="disallowed"}
    end
  elseif x <= 0xF8FF then
    -- NA   <reserved-D7FC>..<reserved-D7FF>
    -- <surrogate-D800>..<surrogate-DFFF>
    -- <private-use-E000>..<private-use-F8FF>
    if x >= 0xD7FC then
      return {status="disallowed"}
    end
  elseif x <= 0xFAFF then
    -- NA   <reserved-FADA>..<reserved-FAFF>
    if x >= 0xFADA then
      return {status="disallowed"}
    end
  elseif x <= 0xFB12 then
    -- NA   <reserved-FB07>..<reserved-FB12>
    if x >= 0xFB07 then
      return {status="disallowed"}
    end
  elseif x <= 0xFBC1 then
    -- ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
    if x >= 0xFBB2 then
      return {status="disallowed"}
    end
  elseif x <= 0xFBD2 then
    -- NA   <reserved-FBC2>..<reserved-FBD2>
    if x >= 0xFBC2 then
      return {status="disallowed"}
    end
  elseif x <= 0xFD4F then
    -- NA   <reserved-FD40>..<reserved-FD4F>
    if x >= 0xFD40 then
      return {status="disallowed"}
    end
  elseif x <= 0xFDEF then
    -- NA   <reserved-FDC8>..<reserved-FDCF>
    -- <noncharacter-FDD0>..<noncharacter-FDEF>
    if x >= 0xFDC8 then
      return {status="disallowed"}
    end
  elseif x <= 0xFE0F then
    -- VARIATION SELECTOR-1..VARIATION SELECTOR-16
    if x >= 0xFE00 then
      return {status='ignored'}
    end
  elseif x <= 0xFE1F then
    -- NA   <reserved-FE1A>..<reserved-FE1F>
    if x >= 0xFE1A then
      return {status="disallowed"}
    end
  elseif x <= 0xFE2F then
    -- COMBINING LIGATURE LEFT HALF..COMBINING DOUBLE TILDE RIGHT HALF
    -- COMBINING MACRON LEFT HALF..COMBINING CONJOINING MACRON
    -- COMBINING LIGATURE LEFT HALF BELOW..COMBINING CONJOINING MACRON BELOW
    -- COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
    if x >= 0xFE20 then
      return {status="valid"}
    end
  elseif x <= 0xFFFB then
    -- NA   <reserved-FFEF>..<reserved-FFF8>
    -- INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
    if x >= 0xFFEF then
      return {status="disallowed"}
    end
  elseif x <= 0x1000B then
    -- LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
    if x >= 0x10000 then
      return {status="valid"}
    end
  elseif x <= 0x10026 then
    -- LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
    if x >= 0x1000D then
      return {status="valid"}
    end
  elseif x <= 0x1003A then
    -- LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
    if x >= 0x10028 then
      return {status="valid"}
    end
  elseif x <= 0x1004D then
    -- LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
    if x >= 0x1003F then
      return {status="valid"}
    end
  elseif x <= 0x1005D then
    -- LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
    if x >= 0x10050 then
      return {status="valid"}
    end
  elseif x <= 0x1007F then
    -- NA   <reserved-1005E>..<reserved-1007F>
    if x >= 0x1005E then
      return {status="disallowed"}
    end
  elseif x <= 0x100FA then
    -- LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
    if x >= 0x10080 then
      return {status="valid"}
    end
  elseif x <= 0x10133 then
    -- AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
    if x >= 0x10107 then
      return {status="disallowed"}
    end
  elseif x <= 0x1018E then
    -- AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
    -- GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ZERO SIGN
    -- GREEK ONE QUARTER SIGN..GREEK SINUSOID SIGN
    -- GREEK INDICTION SIGN..NOMISMA SIGN
    if x >= 0x10137 then
      return {status="disallowed"}
    end
  elseif x <= 0x1019B then
    -- ROMAN SEXTANS SIGN..ROMAN CENTURIAL SIGN
    if x >= 0x10190 then
      return {status="disallowed"}
    end
  elseif x <= 0x101CF then
    -- NA   <reserved-101A1>..<reserved-101CF>
    if x >= 0x101A1 then
      return {status="disallowed"}
    end
  elseif x <= 0x101FC then
    -- PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
    if x >= 0x101D0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1027F then
    -- NA   <reserved-101FE>..<reserved-1027F>
    if x >= 0x101FE then
      return {status="disallowed"}
    end
  elseif x <= 0x1029C then
    -- LYCIAN LETTER A..LYCIAN LETTER X
    if x >= 0x10280 then
      return {status="valid"}
    end
  elseif x <= 0x102D0 then
    -- CARIAN LETTER A..CARIAN LETTER UUU3
    if x >= 0x102A0 then
      return {status="valid"}
    end
  elseif x <= 0x102DF then
    -- NA   <reserved-102D1>..<reserved-102DF>
    if x >= 0x102D1 then
      return {status="disallowed"}
    end
  elseif x <= 0x102FB then
    -- COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
    if x >= 0x102E1 then
      return {status="disallowed"}
    end
  elseif x <= 0x1031E then
    -- OLD ITALIC LETTER A..OLD ITALIC LETTER UU
    if x >= 0x10300 then
      return {status="valid"}
    end
  elseif x <= 0x1032C then
    -- NA   <reserved-10324>..<reserved-1032C>
    if x >= 0x10324 then
      return {status="disallowed"}
    end
  elseif x <= 0x10340 then
    -- OLD ITALIC LETTER YE..OLD ITALIC LETTER SOUTHERN TSE
    -- GOTHIC LETTER AHSA..GOTHIC LETTER PAIRTHRA
    if x >= 0x1032D then
      return {status="valid"}
    end
  elseif x <= 0x10349 then
    -- GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
    if x >= 0x10342 then
      return {status="valid"}
    end
  elseif x <= 0x1037A then
    -- OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
    if x >= 0x10350 then
      return {status="valid"}
    end
  elseif x <= 0x1039D then
    -- UGARITIC LETTER ALPA..UGARITIC LETTER SSU
    if x >= 0x10380 then
      return {status="valid"}
    end
  elseif x <= 0x103C3 then
    -- OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
    if x >= 0x103A0 then
      return {status="valid"}
    end
  elseif x <= 0x103CF then
    -- OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
    if x >= 0x103C8 then
      return {status="valid"}
    end
  elseif x <= 0x103D5 then
    -- OLD PERSIAN WORD DIVIDER..OLD PERSIAN NUMBER HUNDRED
    if x >= 0x103D0 then
      return {status="disallowed"}
    end
  elseif x <= 0x103FF then
    -- NA   <reserved-103D6>..<reserved-103FF>
    if x >= 0x103D6 then
      return {status="disallowed"}
    end
  elseif x <= 0x1049D then
    -- DESERET SMALL LETTER LONG I..DESERET SMALL LETTER ENG
    -- DESERET SMALL LETTER OI..OSMANYA LETTER OO
    if x >= 0x10428 then
      return {status="valid"}
    end
  elseif x <= 0x104A9 then
    -- OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
    if x >= 0x104A0 then
      return {status="valid"}
    end
  elseif x <= 0x104AF then
    -- NA   <reserved-104AA>..<reserved-104AF>
    if x >= 0x104AA then
      return {status="disallowed"}
    end
  elseif x <= 0x104FB then
    -- OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
    if x >= 0x104D8 then
      return {status="valid"}
    end
  elseif x <= 0x10527 then
    -- ELBASAN LETTER A..ELBASAN LETTER KHE
    if x >= 0x10500 then
      return {status="valid"}
    end
  elseif x <= 0x1052F then
    -- NA   <reserved-10528>..<reserved-1052F>
    if x >= 0x10528 then
      return {status="disallowed"}
    end
  elseif x <= 0x10563 then
    -- CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
    if x >= 0x10530 then
      return {status="valid"}
    end
  elseif x <= 0x1056E then
    -- NA   <reserved-10564>..<reserved-1056E>
    if x >= 0x10564 then
      return {status="disallowed"}
    end
  elseif x <= 0x105FF then
    -- NA   <reserved-10570>..<reserved-105FF>
    if x >= 0x10570 then
      return {status="disallowed"}
    end
  elseif x <= 0x10736 then
    -- LINEAR A SIGN AB001..LINEAR A SIGN A664
    if x >= 0x10600 then
      return {status="valid"}
    end
  elseif x <= 0x1073F then
    -- NA   <reserved-10737>..<reserved-1073F>
    if x >= 0x10737 then
      return {status="disallowed"}
    end
  elseif x <= 0x10755 then
    -- LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
    if x >= 0x10740 then
      return {status="valid"}
    end
  elseif x <= 0x1075F then
    -- NA   <reserved-10756>..<reserved-1075F>
    if x >= 0x10756 then
      return {status="disallowed"}
    end
  elseif x <= 0x10767 then
    -- LINEAR A SIGN A800..LINEAR A SIGN A807
    if x >= 0x10760 then
      return {status="valid"}
    end
  elseif x <= 0x107FF then
    -- NA   <reserved-10768>..<reserved-107FF>
    if x >= 0x10768 then
      return {status="disallowed"}
    end
  elseif x <= 0x10805 then
    -- CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
    if x >= 0x10800 then
      return {status="valid"}
    end
  elseif x <= 0x10835 then
    -- CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
    if x >= 0x1080A then
      return {status="valid"}
    end
  elseif x <= 0x10855 then
    -- IMPERIAL ARAMAIC LETTER ALEPH..IMPERIAL ARAMAIC LETTER TAW
    if x >= 0x10840 then
      return {status="valid"}
    end
  elseif x <= 0x1085F then
    -- IMPERIAL ARAMAIC SECTION SIGN..IMPERIAL ARAMAIC NUMBER TEN THOUSAND
    if x >= 0x10857 then
      return {status="disallowed"}
    end
  elseif x <= 0x10876 then
    -- PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
    if x >= 0x10860 then
      return {status="valid"}
    end
  elseif x <= 0x1087F then
    -- PALMYRENE LEFT-POINTING FLEURON..PALMYRENE NUMBER TWENTY
    if x >= 0x10877 then
      return {status="disallowed"}
    end
  elseif x <= 0x1089E then
    -- NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
    if x >= 0x10880 then
      return {status="valid"}
    end
  elseif x <= 0x108A6 then
    -- NA   <reserved-1089F>..<reserved-108A6>
    if x >= 0x1089F then
      return {status="disallowed"}
    end
  elseif x <= 0x108AF then
    -- NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED
    if x >= 0x108A7 then
      return {status="disallowed"}
    end
  elseif x <= 0x108DF then
    -- NA   <reserved-108B0>..<reserved-108DF>
    if x >= 0x108B0 then
      return {status="disallowed"}
    end
  elseif x <= 0x108F2 then
    -- HATRAN LETTER ALEPH..HATRAN LETTER QOPH
    if x >= 0x108E0 then
      return {status="valid"}
    end
  elseif x <= 0x10915 then
    -- PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
    if x >= 0x10900 then
      return {status="valid"}
    end
  elseif x <= 0x1091B then
    -- PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER ONE HUNDRED
    -- PHOENICIAN NUMBER TWO..PHOENICIAN NUMBER THREE
    if x >= 0x10916 then
      return {status="disallowed"}
    end
  elseif x <= 0x10939 then
    -- LYDIAN LETTER A..LYDIAN LETTER C
    if x >= 0x10920 then
      return {status="valid"}
    end
  elseif x <= 0x1097F then
    -- NA   <reserved-10940>..<reserved-1097F>
    if x >= 0x10940 then
      return {status="disallowed"}
    end
  elseif x <= 0x109B7 then
    -- MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
    if x >= 0x10980 then
      return {status="valid"}
    end
  elseif x <= 0x109CF then
    -- MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY
    if x >= 0x109C0 then
      return {status="disallowed"}
    end
  elseif x <= 0x109FF then
    -- MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS
    if x >= 0x109D2 then
      return {status="disallowed"}
    end
  elseif x <= 0x10A13 then
    -- KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI LETTER GHA
    if x >= 0x10A0C then
      return {status="valid"}
    end
  elseif x <= 0x10A33 then
    -- KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER TTTHA
    if x >= 0x10A19 then
      return {status="valid"}
    end
  elseif x <= 0x10A47 then
    -- KHAROSHTHI DIGIT ONE..KHAROSHTHI NUMBER ONE THOUSAND
    if x >= 0x10A40 then
      return {status="disallowed"}
    end
  elseif x <= 0x10A4F then
    -- NA   <reserved-10A48>..<reserved-10A4F>
    if x >= 0x10A48 then
      return {status="disallowed"}
    end
  elseif x <= 0x10A58 then
    -- KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
    if x >= 0x10A50 then
      return {status="disallowed"}
    end
  elseif x <= 0x10A5F then
    -- NA   <reserved-10A59>..<reserved-10A5F>
    if x >= 0x10A59 then
      return {status="disallowed"}
    end
  elseif x <= 0x10A7C then
    -- OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
    if x >= 0x10A60 then
      return {status="valid"}
    end
  elseif x <= 0x10A9C then
    -- OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
    if x >= 0x10A80 then
      return {status="valid"}
    end
  elseif x <= 0x10ABF then
    -- NA   <reserved-10AA0>..<reserved-10ABF>
    if x >= 0x10AA0 then
      return {status="disallowed"}
    end
  elseif x <= 0x10AC7 then
    -- MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
    if x >= 0x10AC0 then
      return {status="valid"}
    end
  elseif x <= 0x10AE6 then
    -- MANICHAEAN LETTER ZAYIN..MANICHAEAN ABBREVIATION MARK BELOW
    if x >= 0x10AC9 then
      return {status="valid"}
    end
  elseif x <= 0x10AF6 then
    -- MANICHAEAN NUMBER ONE..MANICHAEAN PUNCTUATION LINE FILLER
    if x >= 0x10AEB then
      return {status="disallowed"}
    end
  elseif x <= 0x10AFF then
    -- NA   <reserved-10AF7>..<reserved-10AFF>
    if x >= 0x10AF7 then
      return {status="disallowed"}
    end
  elseif x <= 0x10B35 then
    -- AVESTAN LETTER A..AVESTAN LETTER HE
    if x >= 0x10B00 then
      return {status="valid"}
    end
  elseif x <= 0x10B3F then
    -- AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION
    if x >= 0x10B39 then
      return {status="disallowed"}
    end
  elseif x <= 0x10B55 then
    -- INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
    if x >= 0x10B40 then
      return {status="valid"}
    end
  elseif x <= 0x10B5F then
    -- INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
    if x >= 0x10B58 then
      return {status="disallowed"}
    end
  elseif x <= 0x10B72 then
    -- INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
    if x >= 0x10B60 then
      return {status="valid"}
    end
  elseif x <= 0x10B7F then
    -- INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
    if x >= 0x10B78 then
      return {status="disallowed"}
    end
  elseif x <= 0x10B91 then
    -- PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
    if x >= 0x10B80 then
      return {status="valid"}
    end
  elseif x <= 0x10B98 then
    -- NA   <reserved-10B92>..<reserved-10B98>
    if x >= 0x10B92 then
      return {status="disallowed"}
    end
  elseif x <= 0x10BA8 then
    -- NA   <reserved-10B9D>..<reserved-10BA8>
    if x >= 0x10B9D then
      return {status="disallowed"}
    end
  elseif x <= 0x10BAF then
    -- PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED
    if x >= 0x10BA9 then
      return {status="disallowed"}
    end
  elseif x <= 0x10BFF then
    -- NA   <reserved-10BB0>..<reserved-10BFF>
    if x >= 0x10BB0 then
      return {status="disallowed"}
    end
  elseif x <= 0x10C48 then
    -- OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
    if x >= 0x10C00 then
      return {status="valid"}
    end
  elseif x <= 0x10C7F then
    -- NA   <reserved-10C49>..<reserved-10C7F>
    if x >= 0x10C49 then
      return {status="disallowed"}
    end
  elseif x <= 0x10CBF then
    -- NA   <reserved-10CB3>..<reserved-10CBF>
    if x >= 0x10CB3 then
      return {status="disallowed"}
    end
  elseif x <= 0x10CF2 then
    -- OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
    if x >= 0x10CC0 then
      return {status="valid"}
    end
  elseif x <= 0x10CF9 then
    -- NA   <reserved-10CF3>..<reserved-10CF9>
    if x >= 0x10CF3 then
      return {status="disallowed"}
    end
  elseif x <= 0x10CFF then
    -- OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND
    if x >= 0x10CFA then
      return {status="disallowed"}
    end
  elseif x <= 0x10E5F then
    -- NA   <reserved-10D00>..<reserved-10E5F>
    if x >= 0x10D00 then
      return {status="disallowed"}
    end
  elseif x <= 0x10E7E then
    -- RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
    if x >= 0x10E60 then
      return {status="disallowed"}
    end
  elseif x <= 0x10FFF then
    -- NA   <reserved-10E7F>..<reserved-10FFF>
    if x >= 0x10E7F then
      return {status="disallowed"}
    end
  elseif x <= 0x11046 then
    -- BRAHMI SIGN CANDRABINDU..BRAHMI VIRAMA
    if x >= 0x11000 then
      return {status="valid"}
    end
  elseif x <= 0x1104D then
    -- BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
    if x >= 0x11047 then
      return {status="disallowed"}
    end
  elseif x <= 0x11065 then
    -- BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
    if x >= 0x11052 then
      return {status="disallowed"}
    end
  elseif x <= 0x1106F then
    -- BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
    if x >= 0x11066 then
      return {status="valid"}
    end
  elseif x <= 0x1107E then
    -- NA   <reserved-11070>..<reserved-1107E>
    if x >= 0x11070 then
      return {status="disallowed"}
    end
  elseif x <= 0x110BA then
    -- KAITHI SIGN CANDRABINDU..KAITHI SIGN NUKTA
    if x >= 0x11080 then
      return {status="valid"}
    end
  elseif x <= 0x110CF then
    -- NA   <reserved-110C2>..<reserved-110CF>
    if x >= 0x110C2 then
      return {status="disallowed"}
    end
  elseif x <= 0x110E8 then
    -- SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
    if x >= 0x110D0 then
      return {status="valid"}
    end
  elseif x <= 0x110EF then
    -- NA   <reserved-110E9>..<reserved-110EF>
    if x >= 0x110E9 then
      return {status="disallowed"}
    end
  elseif x <= 0x110F9 then
    -- SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
    if x >= 0x110F0 then
      return {status="valid"}
    end
  elseif x <= 0x110FF then
    -- NA   <reserved-110FA>..<reserved-110FF>
    if x >= 0x110FA then
      return {status="disallowed"}
    end
  elseif x <= 0x11134 then
    -- CHAKMA SIGN CANDRABINDU..CHAKMA MAAYYAA
    if x >= 0x11100 then
      return {status="valid"}
    end
  elseif x <= 0x1113F then
    -- CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
    if x >= 0x11136 then
      return {status="valid"}
    end
  elseif x <= 0x1114F then
    -- NA   <reserved-11144>..<reserved-1114F>
    if x >= 0x11144 then
      return {status="disallowed"}
    end
  elseif x <= 0x11173 then
    -- MAHAJANI LETTER A..MAHAJANI SIGN NUKTA
    if x >= 0x11150 then
      return {status="valid"}
    end
  elseif x <= 0x1117F then
    -- NA   <reserved-11177>..<reserved-1117F>
    if x >= 0x11177 then
      return {status="disallowed"}
    end
  elseif x <= 0x111C4 then
    -- SHARADA SIGN CANDRABINDU..SHARADA OM
    if x >= 0x11180 then
      return {status="valid"}
    end
  elseif x <= 0x111D9 then
    -- SHARADA DIGIT ZERO..SHARADA DIGIT NINE
    if x >= 0x111D0 then
      return {status="valid"}
    end
  elseif x <= 0x111F4 then
    -- SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
    if x >= 0x111E1 then
      return {status="disallowed"}
    end
  elseif x <= 0x111FF then
    -- NA   <reserved-111F5>..<reserved-111FF>
    if x >= 0x111F5 then
      return {status="disallowed"}
    end
  elseif x <= 0x11211 then
    -- KHOJKI LETTER A..KHOJKI LETTER JJA
    if x >= 0x11200 then
      return {status="valid"}
    end
  elseif x <= 0x11237 then
    -- KHOJKI LETTER NYA..KHOJKI SIGN SHADDA
    if x >= 0x11213 then
      return {status="valid"}
    end
  elseif x <= 0x1123D then
    -- KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
    if x >= 0x11238 then
      return {status="disallowed"}
    end
  elseif x <= 0x1127F then
    -- NA   <reserved-1123F>..<reserved-1127F>
    if x >= 0x1123F then
      return {status="disallowed"}
    end
  elseif x <= 0x11286 then
    -- MULTANI LETTER A..MULTANI LETTER GA
    if x >= 0x11280 then
      return {status="valid"}
    end
  elseif x <= 0x1129D then
    -- MULTANI LETTER NYA..MULTANI LETTER BA
    if x >= 0x1128F then
      return {status="valid"}
    end
  elseif x <= 0x112A8 then
    -- MULTANI LETTER BHA..MULTANI LETTER RHA
    if x >= 0x1129F then
      return {status="valid"}
    end
  elseif x <= 0x112AF then
    -- NA   <reserved-112AA>..<reserved-112AF>
    if x >= 0x112AA then
      return {status="disallowed"}
    end
  elseif x <= 0x112EA then
    -- KHUDAWADI LETTER A..KHUDAWADI SIGN VIRAMA
    if x >= 0x112B0 then
      return {status="valid"}
    end
  elseif x <= 0x112F9 then
    -- KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
    if x >= 0x112F0 then
      return {status="valid"}
    end
  elseif x <= 0x112FF then
    -- NA   <reserved-112FA>..<reserved-112FF>
    if x >= 0x112FA then
      return {status="disallowed"}
    end
  elseif x <= 0x1130C then
    -- GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
    if x >= 0x11305 then
      return {status="valid"}
    end
  elseif x <= 0x11328 then
    -- GRANTHA LETTER OO..GRANTHA LETTER NA
    if x >= 0x11313 then
      return {status="valid"}
    end
  elseif x <= 0x11330 then
    -- GRANTHA LETTER PA..GRANTHA LETTER RA
    if x >= 0x1132A then
      return {status="valid"}
    end
  elseif x <= 0x11344 then
    -- GRANTHA SIGN NUKTA..GRANTHA VOWEL SIGN VOCALIC RR
    if x >= 0x1133C then
      return {status="valid"}
    end
  elseif x <= 0x11356 then
    -- NA   <reserved-11351>..<reserved-11356>
    if x >= 0x11351 then
      return {status="disallowed"}
    end
  elseif x <= 0x11363 then
    -- GRANTHA SIGN PLUTA..GRANTHA VOWEL SIGN VOCALIC LL
    if x >= 0x1135D then
      return {status="valid"}
    end
  elseif x <= 0x1136C then
    -- COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
    if x >= 0x11366 then
      return {status="valid"}
    end
  elseif x <= 0x113FF then
    -- NA   <reserved-11375>..<reserved-113FF>
    if x >= 0x11375 then
      return {status="disallowed"}
    end
  elseif x <= 0x1144A then
    -- NEWA LETTER A..NEWA SIDDHI
    if x >= 0x11400 then
      return {status="valid"}
    end
  elseif x <= 0x11459 then
    -- NEWA DIGIT ZERO..NEWA DIGIT NINE
    if x >= 0x11450 then
      return {status="valid"}
    end
  elseif x <= 0x1147F then
    -- NA   <reserved-1145E>..<reserved-1147F>
    if x >= 0x1145E then
      return {status="disallowed"}
    end
  elseif x <= 0x114C5 then
    -- TIRHUTA ANJI..TIRHUTA GVANG
    if x >= 0x11480 then
      return {status="valid"}
    end
  elseif x <= 0x114CF then
    -- NA   <reserved-114C8>..<reserved-114CF>
    if x >= 0x114C8 then
      return {status="disallowed"}
    end
  elseif x <= 0x114D9 then
    -- TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
    if x >= 0x114D0 then
      return {status="valid"}
    end
  elseif x <= 0x1157F then
    -- NA   <reserved-114DA>..<reserved-1157F>
    if x >= 0x114DA then
      return {status="disallowed"}
    end
  elseif x <= 0x115B5 then
    -- SIDDHAM LETTER A..SIDDHAM VOWEL SIGN VOCALIC RR
    if x >= 0x11580 then
      return {status="valid"}
    end
  elseif x <= 0x115C0 then
    -- SIDDHAM VOWEL SIGN E..SIDDHAM SIGN NUKTA
    if x >= 0x115B8 then
      return {status="valid"}
    end
  elseif x <= 0x115D7 then
    -- SIDDHAM SIGN SIDDHAM..SIDDHAM END OF TEXT MARK
    -- SIDDHAM SECTION MARK WITH TRIDENT AND U-SHAPED ORNAMENTS..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
    if x >= 0x115C1 then
      return {status="disallowed"}
    end
  elseif x <= 0x115DD then
    -- SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM VOWEL SIGN ALTERNATE UU
    if x >= 0x115D8 then
      return {status="valid"}
    end
  elseif x <= 0x115FF then
    -- NA   <reserved-115DE>..<reserved-115FF>
    if x >= 0x115DE then
      return {status="disallowed"}
    end
  elseif x <= 0x11640 then
    -- MODI LETTER A..MODI SIGN ARDHACANDRA
    if x >= 0x11600 then
      return {status="valid"}
    end
  elseif x <= 0x1164F then
    -- NA   <reserved-11645>..<reserved-1164F>
    if x >= 0x11645 then
      return {status="disallowed"}
    end
  elseif x <= 0x11659 then
    -- MODI DIGIT ZERO..MODI DIGIT NINE
    if x >= 0x11650 then
      return {status="valid"}
    end
  elseif x <= 0x1165F then
    -- NA   <reserved-1165A>..<reserved-1165F>
    if x >= 0x1165A then
      return {status="disallowed"}
    end
  elseif x <= 0x1166C then
    -- MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
    if x >= 0x11660 then
      return {status="disallowed"}
    end
  elseif x <= 0x1167F then
    -- NA   <reserved-1166D>..<reserved-1167F>
    if x >= 0x1166D then
      return {status="disallowed"}
    end
  elseif x <= 0x116B7 then
    -- TAKRI LETTER A..TAKRI SIGN NUKTA
    if x >= 0x11680 then
      return {status="valid"}
    end
  elseif x <= 0x116BF then
    -- NA   <reserved-116B8>..<reserved-116BF>
    if x >= 0x116B8 then
      return {status="disallowed"}
    end
  elseif x <= 0x116C9 then
    -- TAKRI DIGIT ZERO..TAKRI DIGIT NINE
    if x >= 0x116C0 then
      return {status="valid"}
    end
  elseif x <= 0x116FF then
    -- NA   <reserved-116CA>..<reserved-116FF>
    if x >= 0x116CA then
      return {status="disallowed"}
    end
  elseif x <= 0x11719 then
    -- AHOM LETTER KA..AHOM LETTER JHA
    if x >= 0x11700 then
      return {status="valid"}
    end
  elseif x <= 0x1172B then
    -- AHOM CONSONANT SIGN MEDIAL LA..AHOM SIGN KILLER
    if x >= 0x1171D then
      return {status="valid"}
    end
  elseif x <= 0x11739 then
    -- AHOM DIGIT ZERO..AHOM DIGIT NINE
    if x >= 0x11730 then
      return {status="valid"}
    end
  elseif x <= 0x1173F then
    -- AHOM NUMBER TEN..AHOM SYMBOL VI
    if x >= 0x1173A then
      return {status="disallowed"}
    end
  elseif x <= 0x1189F then
    -- NA   <reserved-11740>..<reserved-1189F>
    if x >= 0x11740 then
      return {status="disallowed"}
    end
  elseif x <= 0x118E9 then
    -- WARANG CITI SMALL LETTER NGAA..WARANG CITI DIGIT NINE
    if x >= 0x118C0 then
      return {status="valid"}
    end
  elseif x <= 0x118F2 then
    -- WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
    if x >= 0x118EA then
      return {status="disallowed"}
    end
  elseif x <= 0x118FE then
    -- NA   <reserved-118F3>..<reserved-118FE>
    if x >= 0x118F3 then
      return {status="disallowed"}
    end
  elseif x <= 0x119FF then
    -- NA   <reserved-11900>..<reserved-119FF>
    if x >= 0x11900 then
      return {status="disallowed"}
    end
  elseif x <= 0x11A3E then
    -- ZANABAZAR SQUARE LETTER A..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
    if x >= 0x11A00 then
      return {status="valid"}
    end
  elseif x <= 0x11A46 then
    -- ZANABAZAR SQUARE INITIAL HEAD MARK..ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK
    if x >= 0x11A3F then
      return {status="disallowed"}
    end
  elseif x <= 0x11A4F then
    -- NA   <reserved-11A48>..<reserved-11A4F>
    if x >= 0x11A48 then
      return {status="disallowed"}
    end
  elseif x <= 0x11A83 then
    -- SOYOMBO LETTER A..SOYOMBO LETTER KSSA
    if x >= 0x11A50 then
      return {status="valid"}
    end
  elseif x <= 0x11A99 then
    -- SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO SUBJOINER
    if x >= 0x11A86 then
      return {status="valid"}
    end
  elseif x <= 0x11ABF then
    -- NA   <reserved-11AA3>..<reserved-11ABF>
    if x >= 0x11AA3 then
      return {status="disallowed"}
    end
  elseif x <= 0x11AF8 then
    -- PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
    if x >= 0x11AC0 then
      return {status="valid"}
    end
  elseif x <= 0x11BFF then
    -- NA   <reserved-11AF9>..<reserved-11BFF>
    if x >= 0x11AF9 then
      return {status="disallowed"}
    end
  elseif x <= 0x11C08 then
    -- BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
    if x >= 0x11C00 then
      return {status="valid"}
    end
  elseif x <= 0x11C36 then
    -- BHAIKSUKI LETTER E..BHAIKSUKI VOWEL SIGN VOCALIC L
    if x >= 0x11C0A then
      return {status="valid"}
    end
  elseif x <= 0x11C40 then
    -- BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN AVAGRAHA
    if x >= 0x11C38 then
      return {status="valid"}
    end
  elseif x <= 0x11C4F then
    -- NA   <reserved-11C46>..<reserved-11C4F>
    if x >= 0x11C46 then
      return {status="disallowed"}
    end
  elseif x <= 0x11C59 then
    -- BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
    if x >= 0x11C50 then
      return {status="valid"}
    end
  elseif x <= 0x11C6C then
    -- BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
    if x >= 0x11C5A then
      return {status="disallowed"}
    end
  elseif x <= 0x11C8F then
    -- MARCHEN LETTER KA..MARCHEN LETTER A
    if x >= 0x11C72 then
      return {status="valid"}
    end
  elseif x <= 0x11CA7 then
    -- MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
    if x >= 0x11C92 then
      return {status="valid"}
    end
  elseif x <= 0x11CB6 then
    -- MARCHEN SUBJOINED LETTER YA..MARCHEN SIGN CANDRABINDU
    if x >= 0x11CA9 then
      return {status="valid"}
    end
  elseif x <= 0x11CFF then
    -- NA   <reserved-11CB7>..<reserved-11CFF>
    if x >= 0x11CB7 then
      return {status="disallowed"}
    end
  elseif x <= 0x11D06 then
    -- MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
    if x >= 0x11D00 then
      return {status="valid"}
    end
  elseif x <= 0x11D36 then
    -- MASARAM GONDI LETTER AU..MASARAM GONDI VOWEL SIGN VOCALIC R
    if x >= 0x11D0B then
      return {status="valid"}
    end
  elseif x <= 0x11D47 then
    -- MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI RA-KARA
    if x >= 0x11D3F then
      return {status="valid"}
    end
  elseif x <= 0x11D4F then
    -- NA   <reserved-11D48>..<reserved-11D4F>
    if x >= 0x11D48 then
      return {status="disallowed"}
    end
  elseif x <= 0x11D59 then
    -- MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
    if x >= 0x11D50 then
      return {status="valid"}
    end
  elseif x <= 0x11FFF then
    -- NA   <reserved-11D5A>..<reserved-11FFF>
    if x >= 0x11D5A then
      return {status="disallowed"}
    end
  elseif x <= 0x12398 then
    -- CUNEIFORM SIGN A..CUNEIFORM SIGN ZUM
    -- CUNEIFORM SIGN KAP ELAMITE..CUNEIFORM SIGN UM TIMES ME
    if x >= 0x12000 then
      return {status="valid"}
    end
  elseif x <= 0x123FF then
    -- NA   <reserved-1239A>..<reserved-123FF>
    if x >= 0x1239A then
      return {status="disallowed"}
    end
  elseif x <= 0x1246E then
    -- CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER
    -- CUNEIFORM NUMERIC SIGN ONE QUARTER GUR..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
    if x >= 0x12400 then
      return {status="disallowed"}
    end
  elseif x <= 0x1247F then
    -- NA   <reserved-12475>..<reserved-1247F>
    if x >= 0x12475 then
      return {status="disallowed"}
    end
  elseif x <= 0x12543 then
    -- CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
    if x >= 0x12480 then
      return {status="valid"}
    end
  elseif x <= 0x12FFF then
    -- NA   <reserved-12544>..<reserved-12FFF>
    if x >= 0x12544 then
      return {status="disallowed"}
    end
  elseif x <= 0x1342E then
    -- EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
    if x >= 0x13000 then
      return {status="valid"}
    end
  elseif x <= 0x143FF then
    -- NA   <reserved-1342F>..<reserved-143FF>
    if x >= 0x1342F then
      return {status="disallowed"}
    end
  elseif x <= 0x14646 then
    -- ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
    if x >= 0x14400 then
      return {status="valid"}
    end
  elseif x <= 0x167FF then
    -- NA   <reserved-14647>..<reserved-167FF>
    if x >= 0x14647 then
      return {status="disallowed"}
    end
  elseif x <= 0x16A38 then
    -- BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
    if x >= 0x16800 then
      return {status="valid"}
    end
  elseif x <= 0x16A3F then
    -- NA   <reserved-16A39>..<reserved-16A3F>
    if x >= 0x16A39 then
      return {status="disallowed"}
    end
  elseif x <= 0x16A5E then
    -- MRO LETTER TA..MRO LETTER TEK
    if x >= 0x16A40 then
      return {status="valid"}
    end
  elseif x <= 0x16A69 then
    -- MRO DIGIT ZERO..MRO DIGIT NINE
    if x >= 0x16A60 then
      return {status="valid"}
    end
  elseif x <= 0x16ACF then
    -- NA   <reserved-16A70>..<reserved-16ACF>
    if x >= 0x16A70 then
      return {status="disallowed"}
    end
  elseif x <= 0x16AED then
    -- BASSA VAH LETTER ENNI..BASSA VAH LETTER I
    if x >= 0x16AD0 then
      return {status="valid"}
    end
  elseif x <= 0x16AFF then
    -- NA   <reserved-16AF6>..<reserved-16AFF>
    if x >= 0x16AF6 then
      return {status="disallowed"}
    end
  elseif x <= 0x16B36 then
    -- PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG MARK CIM TAUM
    if x >= 0x16B00 then
      return {status="valid"}
    end
  elseif x <= 0x16B3F then
    -- PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN XYEEM FAIB
    if x >= 0x16B37 then
      return {status="disallowed"}
    end
  elseif x <= 0x16B4F then
    -- NA   <reserved-16B46>..<reserved-16B4F>
    if x >= 0x16B46 then
      return {status="disallowed"}
    end
  elseif x <= 0x16B59 then
    -- PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
    if x >= 0x16B50 then
      return {status="valid"}
    end
  elseif x <= 0x16B61 then
    -- PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
    if x >= 0x16B5B then
      return {status="disallowed"}
    end
  elseif x <= 0x16B77 then
    -- PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
    if x >= 0x16B63 then
      return {status="valid"}
    end
  elseif x <= 0x16B8F then
    -- PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
    if x >= 0x16B7D then
      return {status="valid"}
    end
  elseif x <= 0x16EFF then
    -- NA   <reserved-16B90>..<reserved-16EFF>
    if x >= 0x16B90 then
      return {status="disallowed"}
    end
  elseif x <= 0x16F44 then
    -- MIAO LETTER PA..MIAO LETTER HHA
    if x >= 0x16F00 then
      return {status="valid"}
    end
  elseif x <= 0x16F4F then
    -- NA   <reserved-16F45>..<reserved-16F4F>
    if x >= 0x16F45 then
      return {status="disallowed"}
    end
  elseif x <= 0x16F7E then
    -- MIAO LETTER NASALIZATION..MIAO VOWEL SIGN NG
    if x >= 0x16F50 then
      return {status="valid"}
    end
  elseif x <= 0x16F8E then
    -- NA   <reserved-16F7F>..<reserved-16F8E>
    if x >= 0x16F7F then
      return {status="disallowed"}
    end
  elseif x <= 0x16F9F then
    -- MIAO TONE RIGHT..MIAO LETTER REFORMED TONE-8
    if x >= 0x16F8F then
      return {status="valid"}
    end
  elseif x <= 0x16FDF then
    -- NA   <reserved-16FA0>..<reserved-16FDF>
    if x >= 0x16FA0 then
      return {status="disallowed"}
    end
  elseif x <= 0x16FFF then
    -- NA   <reserved-16FE2>..<reserved-16FFF>
    if x >= 0x16FE2 then
      return {status="disallowed"}
    end
  elseif x <= 0x187EC then
    -- TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187EC
    if x >= 0x17000 then
      return {status="valid"}
    end
  elseif x <= 0x187FF then
    -- NA   <reserved-187ED>..<reserved-187FF>
    if x >= 0x187ED then
      return {status="disallowed"}
    end
  elseif x <= 0x18AF2 then
    -- TANGUT COMPONENT-001..TANGUT COMPONENT-755
    if x >= 0x18800 then
      return {status="valid"}
    end
  elseif x <= 0x1AFFF then
    -- NA   <reserved-18AF3>..<reserved-1AFFF>
    if x >= 0x18AF3 then
      return {status="disallowed"}
    end
  elseif x <= 0x1B11E then
    -- KATAKANA LETTER ARCHAIC E..HIRAGANA LETTER ARCHAIC YE
    -- HENTAIGANA LETTER A-1..HENTAIGANA LETTER N-MU-MO-2
    if x >= 0x1B000 then
      return {status="valid"}
    end
  elseif x <= 0x1B16F then
    -- NA   <reserved-1B11F>..<reserved-1B16F>
    if x >= 0x1B11F then
      return {status="disallowed"}
    end
  elseif x <= 0x1B2FB then
    -- NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
    if x >= 0x1B170 then
      return {status="valid"}
    end
  elseif x <= 0x1BBFF then
    -- NA   <reserved-1B2FC>..<reserved-1BBFF>
    if x >= 0x1B2FC then
      return {status="disallowed"}
    end
  elseif x <= 0x1BC6A then
    -- DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
    if x >= 0x1BC00 then
      return {status="valid"}
    end
  elseif x <= 0x1BC7C then
    -- DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
    if x >= 0x1BC70 then
      return {status="valid"}
    end
  elseif x <= 0x1BC88 then
    -- DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
    if x >= 0x1BC80 then
      return {status="valid"}
    end
  elseif x <= 0x1BC8F then
    -- NA   <reserved-1BC89>..<reserved-1BC8F>
    if x >= 0x1BC89 then
      return {status="disallowed"}
    end
  elseif x <= 0x1BC99 then
    -- DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
    if x >= 0x1BC90 then
      return {status="valid"}
    end
  elseif x <= 0x1CFFF then
    -- NA   <reserved-1BCA4>..<reserved-1CFFF>
    if x >= 0x1BCA4 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D0F5 then
    -- BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
    if x >= 0x1D000 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D0FF then
    -- NA   <reserved-1D0F6>..<reserved-1D0FF>
    if x >= 0x1D0F6 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D126 then
    -- MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
    if x >= 0x1D100 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D15D then
    -- MUSICAL SYMBOL DOUBLE SHARP..MUSICAL SYMBOL WHOLE NOTE
    if x >= 0x1D12A then
      return {status="disallowed"}
    end
  elseif x <= 0x1D172 then
    -- MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING FLAG-5
    if x >= 0x1D165 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D17A then
    -- MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
    if x >= 0x1D173 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D1BA then
    -- MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL SEMIBREVIS BLACK
    if x >= 0x1D17B then
      return {status="disallowed"}
    end
  elseif x <= 0x1D1E8 then
    -- MUSICAL SYMBOL LONGA PERFECTA REST..MUSICAL SYMBOL PES SUBPUNCTIS
    -- MUSICAL SYMBOL KIEVAN C CLEF..MUSICAL SYMBOL KIEVAN FLAT SIGN
    if x >= 0x1D1C1 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D1FF then
    -- NA   <reserved-1D1E9>..<reserved-1D1FF>
    if x >= 0x1D1E9 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D245 then
    -- GREEK VOCAL NOTATION SYMBOL-1..GREEK MUSICAL LEIMMA
    if x >= 0x1D200 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D2FF then
    -- NA   <reserved-1D246>..<reserved-1D2FF>
    if x >= 0x1D246 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D356 then
    -- MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
    if x >= 0x1D300 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D35F then
    -- NA   <reserved-1D357>..<reserved-1D35F>
    if x >= 0x1D357 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D371 then
    -- COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
    if x >= 0x1D360 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D3FF then
    -- NA   <reserved-1D372>..<reserved-1D3FF>
    if x >= 0x1D372 then
      return {status="disallowed"}
    end
  elseif x <= 0x1D9FF then
    -- SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD
    if x >= 0x1D800 then
      return {status="disallowed"}
    end
  elseif x <= 0x1DA36 then
    -- SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
    if x >= 0x1DA00 then
      return {status="valid"}
    end
  elseif x <= 0x1DA6C then
    -- SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
    if x >= 0x1DA3B then
      return {status="valid"}
    end
  elseif x <= 0x1DA74 then
    -- SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING
    if x >= 0x1DA6D then
      return {status="disallowed"}
    end
  elseif x <= 0x1DA83 then
    -- SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH
    if x >= 0x1DA76 then
      return {status="disallowed"}
    end
  elseif x <= 0x1DA8B then
    -- SIGNWRITING LOCATION TORSO..SIGNWRITING PARENTHESIS
    if x >= 0x1DA85 then
      return {status="disallowed"}
    end
  elseif x <= 0x1DA9A then
    -- NA   <reserved-1DA8C>..<reserved-1DA9A>
    if x >= 0x1DA8C then
      return {status="disallowed"}
    end
  elseif x <= 0x1DAAF then
    -- SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
    if x >= 0x1DAA1 then
      return {status="valid"}
    end
  elseif x <= 0x1DFFF then
    -- NA   <reserved-1DAB0>..<reserved-1DFFF>
    if x >= 0x1DAB0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1E006 then
    -- COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
    if x >= 0x1E000 then
      return {status="valid"}
    end
  elseif x <= 0x1E018 then
    -- COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
    if x >= 0x1E008 then
      return {status="valid"}
    end
  elseif x <= 0x1E021 then
    -- COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
    if x >= 0x1E01B then
      return {status="valid"}
    end
  elseif x <= 0x1E7FF then
    -- NA   <reserved-1E02B>..<reserved-1E7FF>
    if x >= 0x1E02B then
      return {status="disallowed"}
    end
  elseif x <= 0x1E8C4 then
    -- MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
    if x >= 0x1E800 then
      return {status="valid"}
    end
  elseif x <= 0x1E8CF then
    -- MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
    if x >= 0x1E8C7 then
      return {status="disallowed"}
    end
  elseif x <= 0x1E8D6 then
    -- MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
    if x >= 0x1E8D0 then
      return {status="valid"}
    end
  elseif x <= 0x1E8FF then
    -- NA   <reserved-1E8D7>..<reserved-1E8FF>
    if x >= 0x1E8D7 then
      return {status="disallowed"}
    end
  elseif x <= 0x1E94A then
    -- ADLAM SMALL LETTER ALIF..ADLAM NUKTA
    if x >= 0x1E922 then
      return {status="valid"}
    end
  elseif x <= 0x1E959 then
    -- ADLAM DIGIT ZERO..ADLAM DIGIT NINE
    if x >= 0x1E950 then
      return {status="valid"}
    end
  elseif x <= 0x1EDFF then
    -- NA   <reserved-1E960>..<reserved-1EDFF>
    if x >= 0x1E960 then
      return {status="disallowed"}
    end
  elseif x <= 0x1EE41 then
    -- NA   <reserved-1EE3C>..<reserved-1EE41>
    if x >= 0x1EE3C then
      return {status="disallowed"}
    end
  elseif x <= 0x1EEEF then
    -- NA   <reserved-1EEBC>..<reserved-1EEEF>
    if x >= 0x1EEBC then
      return {status="disallowed"}
    end
  elseif x <= 0x1EFFF then
    -- NA   <reserved-1EEF2>..<reserved-1EFFF>
    if x >= 0x1EEF2 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F02B then
    -- MAHJONG TILE EAST WIND..MAHJONG TILE BACK
    if x >= 0x1F000 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F093 then
    -- DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
    if x >= 0x1F030 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F09F then
    -- NA   <reserved-1F094>..<reserved-1F09F>
    if x >= 0x1F094 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F0AE then
    -- PLAYING CARD BACK..PLAYING CARD KING OF SPADES
    if x >= 0x1F0A0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F0BE then
    -- PLAYING CARD ACE OF HEARTS..PLAYING CARD KING OF HEARTS
    if x >= 0x1F0B1 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F0CF then
    -- PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
    if x >= 0x1F0C1 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F0F5 then
    -- PLAYING CARD ACE OF CLUBS..PLAYING CARD WHITE JOKER
    -- PLAYING CARD FOOL..PLAYING CARD TRUMP-21
    if x >= 0x1F0D1 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F0FF then
    -- NA   <reserved-1F0F6>..<reserved-1F0FF>
    if x >= 0x1F0F6 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F156 then
    -- NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER G
    if x >= 0x1F150 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F15E then
    -- NEGATIVE CIRCLED LATIN CAPITAL LETTER I..NEGATIVE CIRCLED LATIN CAPITAL LETTER O
    if x >= 0x1F158 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F169 then
    -- NEGATIVE CIRCLED LATIN CAPITAL LETTER Q..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
    if x >= 0x1F160 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F178 then
    -- NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER I
    if x >= 0x1F170 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F18F then
    -- NEGATIVE SQUARED LATIN CAPITAL LETTER Q..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
    -- CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P..NEGATIVE SQUARED SA
    -- NEGATIVE SQUARED AB..NEGATIVE SQUARED WC
    if x >= 0x1F180 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F1AC then
    -- SQUARED CL..SQUARED VS
    -- SQUARED THREE D..SQUARED VOD
    if x >= 0x1F191 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F1E5 then
    -- NA   <reserved-1F1AD>..<reserved-1F1E5>
    if x >= 0x1F1AD then
      return {status="disallowed"}
    end
  elseif x <= 0x1F1FF then
    -- REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
    if x >= 0x1F1E6 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F20F then
    -- NA   <reserved-1F203>..<reserved-1F20F>
    if x >= 0x1F203 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F24F then
    -- NA   <reserved-1F249>..<reserved-1F24F>
    if x >= 0x1F249 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F25F then
    -- NA   <reserved-1F252>..<reserved-1F25F>
    if x >= 0x1F252 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F265 then
    -- ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI
    if x >= 0x1F260 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F2FF then
    -- NA   <reserved-1F266>..<reserved-1F2FF>
    if x >= 0x1F266 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F335 then
    -- CYCLONE..SHOOTING STAR
    -- THERMOMETER..WIND BLOWING FACE
    -- HOT DOG..BURRITO
    -- CHESTNUT..CACTUS
    if x >= 0x1F300 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F37C then
    -- TULIP..BABY BOTTLE
    if x >= 0x1F337 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F3C4 then
    -- BOTTLE WITH POPPING CORK..POPCORN
    -- RIBBON..GRADUATION CAP
    -- HEART WITH TIP ON THE LEFT..ADMISSION TICKETS
    -- CAROUSEL HORSE..SURFER
    if x >= 0x1F37E then
      return {status="disallowed"}
    end
  elseif x <= 0x1F43E then
    -- TROPHY..SWIMMER
    -- WEIGHT LIFTER..RACING CAR
    -- CRICKET BAT AND BALL..TABLE TENNIS PADDLE AND BALL
    -- SNOW CAPPED MOUNTAIN..STADIUM
    -- HOUSE BUILDING..EUROPEAN CASTLE
    -- WHITE PENNANT..LABEL
    -- BADMINTON RACQUET AND SHUTTLECOCK..EMOJI MODIFIER FITZPATRICK TYPE-6
    -- RAT..PAW PRINTS
    if x >= 0x1F3C6 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F4F7 then
    -- EAR..CAMERA
    if x >= 0x1F442 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F4FE then
    -- VIDEO CAMERA..VIDEOCASSETTE
    -- FILM PROJECTOR..PORTABLE STEREO
    if x >= 0x1F4F9 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F579 then
    -- TWISTED RIGHTWARDS ARROWS..DOWN-POINTING SMALL RED TRIANGLE
    -- LOWER RIGHT SHADOWED WHITE CIRCLE..UPPER RIGHT SHADOWED WHITE CIRCLE
    -- CIRCLED CROSS POMMEE..NOTCHED LEFT SEMICIRCLE WITH THREE DOTS
    -- NOTCHED RIGHT SEMICIRCLE WITH THREE DOTS..DOVE OF PEACE
    -- KAABA..BOWL OF HYGIEIA
    -- CLOCK FACE ONE OCLOCK..CLOCK FACE TWELVE-THIRTY
    -- RIGHT SPEAKER..JOYSTICK
    if x >= 0x1F500 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F5A3 then
    -- LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
    if x >= 0x1F57B then
      return {status="disallowed"}
    end
  elseif x <= 0x1F5FF then
    -- DESKTOP COMPUTER..WORLD MAP
    -- MOUNT FUJI..MOYAI
    if x >= 0x1F5A5 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F610 then
    -- GRINNING FACE WITH SMILING EYES..NEUTRAL FACE
    if x >= 0x1F601 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F62B then
    -- ANGRY FACE..DISAPPOINTED BUT RELIEVED FACE
    -- FROWNING FACE WITH OPEN MOUTH..ANGUISHED FACE
    -- FEARFUL FACE..TIRED FACE
    if x >= 0x1F620 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F633 then
    -- FACE WITH OPEN MOUTH..HUSHED FACE
    -- FACE WITH OPEN MOUTH AND COLD SWEAT..FLUSHED FACE
    if x >= 0x1F62E then
      return {status="disallowed"}
    end
  elseif x <= 0x1F6CF then
    -- DIZZY FACE..WEARY CAT FACE
    -- SLIGHTLY FROWNING FACE..SLIGHTLY SMILING FACE
    -- UPSIDE-DOWN FACE..FACE WITH ROLLING EYES
    -- FACE WITH NO GOOD GESTURE..PERSON WITH FOLDED HANDS
    -- NORTH WEST POINTING LEAF..REVERSE CHECKER BOARD
    -- ROCKET..LEFT LUGGAGE
    -- TRIANGLE WITH ROUNDED CORNERS..BED
    if x >= 0x1F635 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F6DF then
    -- NA   <reserved-1F6D5>..<reserved-1F6DF>
    if x >= 0x1F6D5 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F6EC then
    -- HAMMER AND WRENCH..AIRPLANE ARRIVING
    if x >= 0x1F6E0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F6F8 then
    -- SATELLITE..PASSENGER SHIP
    -- SCOOTER..CANOE
    -- SLED..FLYING SAUCER
    if x >= 0x1F6F0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F6FF then
    -- NA   <reserved-1F6F9>..<reserved-1F6FF>
    if x >= 0x1F6F9 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F773 then
    -- ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
    if x >= 0x1F700 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F77F then
    -- NA   <reserved-1F774>..<reserved-1F77F>
    if x >= 0x1F774 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F7D4 then
    -- BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..HEAVY TWELVE POINTED PINWHEEL STAR
    if x >= 0x1F780 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F7FF then
    -- NA   <reserved-1F7D5>..<reserved-1F7FF>
    if x >= 0x1F7D5 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F80B then
    -- LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
    if x >= 0x1F800 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F847 then
    -- LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
    if x >= 0x1F810 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F84F then
    -- NA   <reserved-1F848>..<reserved-1F84F>
    if x >= 0x1F848 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F859 then
    -- LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
    if x >= 0x1F850 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F85F then
    -- NA   <reserved-1F85A>..<reserved-1F85F>
    if x >= 0x1F85A then
      return {status="disallowed"}
    end
  elseif x <= 0x1F887 then
    -- WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
    if x >= 0x1F860 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F88F then
    -- NA   <reserved-1F888>..<reserved-1F88F>
    if x >= 0x1F888 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F8AD then
    -- LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
    if x >= 0x1F890 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F8FF then
    -- NA   <reserved-1F8AE>..<reserved-1F8FF>
    if x >= 0x1F8AE then
      return {status="disallowed"}
    end
  elseif x <= 0x1F90B then
    -- CIRCLED CROSS FORMEE WITH FOUR DOTS..DOWNWARD FACING NOTCHED HOOK WITH DOT
    if x >= 0x1F900 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F91E then
    -- ZIPPER-MOUTH FACE..SIGN OF THE HORNS
    -- CALL ME HAND..HAND WITH INDEX AND MIDDLE FINGERS CROSSED
    if x >= 0x1F910 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F92F then
    -- FACE WITH COWBOY HAT..SNEEZING FACE
    -- FACE WITH ONE EYEBROW RAISED..SHOCKED FACE WITH EXPLODING HEAD
    if x >= 0x1F920 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F93E then
    -- BREAST-FEEDING..PALMS UP TOGETHER
    -- SELFIE..HANDBALL
    if x >= 0x1F931 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F94B then
    -- WILTED FLOWER..MARTIAL ARTS UNIFORM
    if x >= 0x1F940 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F96B then
    -- CROISSANT..PANCAKES
    -- DUMPLING..CANNED FOOD
    if x >= 0x1F950 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F97F then
    -- NA   <reserved-1F96C>..<reserved-1F97F>
    if x >= 0x1F96C then
      return {status="disallowed"}
    end
  elseif x <= 0x1F997 then
    -- CRAB..UNICORN FACE
    -- EAGLE..SQUID
    -- GIRAFFE FACE..CRICKET
    if x >= 0x1F980 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F9BF then
    -- NA   <reserved-1F998>..<reserved-1F9BF>
    if x >= 0x1F998 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F9CF then
    -- NA   <reserved-1F9C1>..<reserved-1F9CF>
    if x >= 0x1F9C1 then
      return {status="disallowed"}
    end
  elseif x <= 0x1F9E6 then
    -- FACE WITH MONOCLE..SOCKS
    if x >= 0x1F9D0 then
      return {status="disallowed"}
    end
  elseif x <= 0x1FFFF then
    -- NA   <reserved-1F9E7>..<reserved-1FFFD>
    -- <noncharacter-1FFFE>..<noncharacter-1FFFF>
    if x >= 0x1F9E7 then
      return {status="disallowed"}
    end
  elseif x <= 0x2A6D6 then
    -- CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
    if x >= 0x20000 then
      return {status="valid"}
    end
  elseif x <= 0x2A6FF then
    -- NA   <reserved-2A6D7>..<reserved-2A6FF>
    if x >= 0x2A6D7 then
      return {status="disallowed"}
    end
  elseif x <= 0x2B734 then
    -- CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
    if x >= 0x2A700 then
      return {status="valid"}
    end
  elseif x <= 0x2B73F then
    -- NA   <reserved-2B735>..<reserved-2B73F>
    if x >= 0x2B735 then
      return {status="disallowed"}
    end
  elseif x <= 0x2B81D then
    -- CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
    if x >= 0x2B740 then
      return {status="valid"}
    end
  elseif x <= 0x2CEA1 then
    -- CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
    if x >= 0x2B820 then
      return {status="valid"}
    end
  elseif x <= 0x2CEAF then
    -- NA   <reserved-2CEA2>..<reserved-2CEAF>
    if x >= 0x2CEA2 then
      return {status="disallowed"}
    end
  elseif x <= 0x2EBE0 then
    -- CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
    if x >= 0x2CEB0 then
      return {status="valid"}
    end
  elseif x <= 0x2F7FF then
    -- NA   <reserved-2EBE1>..<reserved-2F7FF>
    if x >= 0x2EBE1 then
      return {status="disallowed"}
    end
  elseif x <= 0xDFFFF then
    -- NA   <reserved-2FA1E>..<reserved-2FFFD>
    -- <noncharacter-2FFFE>..<noncharacter-2FFFF>
    -- NA   <reserved-30000>..<reserved-3FFFD>
    -- <noncharacter-3FFFE>..<noncharacter-3FFFF>
    -- NA   <reserved-40000>..<reserved-4FFFD>
    -- <noncharacter-4FFFE>..<noncharacter-4FFFF>
    -- NA   <reserved-50000>..<reserved-5FFFD>
    -- <noncharacter-5FFFE>..<noncharacter-5FFFF>
    -- NA   <reserved-60000>..<reserved-6FFFD>
    -- <noncharacter-6FFFE>..<noncharacter-6FFFF>
    -- NA   <reserved-70000>..<reserved-7FFFD>
    -- <noncharacter-7FFFE>..<noncharacter-7FFFF>
    -- NA   <reserved-80000>..<reserved-8FFFD>
    -- <noncharacter-8FFFE>..<noncharacter-8FFFF>
    -- NA   <reserved-90000>..<reserved-9FFFD>
    -- <noncharacter-9FFFE>..<noncharacter-9FFFF>
    -- NA   <reserved-A0000>..<reserved-AFFFD>
    -- <noncharacter-AFFFE>..<noncharacter-AFFFF>
    -- NA   <reserved-B0000>..<reserved-BFFFD>
    -- <noncharacter-BFFFE>..<noncharacter-BFFFF>
    -- NA   <reserved-C0000>..<reserved-CFFFD>
    -- <noncharacter-CFFFE>..<noncharacter-CFFFF>
    -- NA   <reserved-D0000>..<reserved-DFFFD>
    -- <noncharacter-DFFFE>..<noncharacter-DFFFF>
    if x >= 0x2FA1E then
      return {status="disallowed"}
    end
  elseif x <= 0xE00FF then
    -- NA   <reserved-E0002>..<reserved-E001F>
    -- TAG SPACE..CANCEL TAG
    -- NA   <reserved-E0080>..<reserved-E00FF>
    if x >= 0xE0002 then
      return {status="disallowed"}
    end
  elseif x <= 0xE01EF then
    -- VARIATION SELECTOR-17..VARIATION SELECTOR-256
    if x >= 0xE0100 then
      return {status='ignored'}
    end
  elseif x <= 0xFFFFF then
    -- NA   <reserved-E01F0>..<reserved-EFFFD>
    -- <noncharacter-EFFFE>..<noncharacter-EFFFF>
    -- <private-use-F0000>..<private-use-FFFFD>
    -- <noncharacter-FFFFE>..<noncharacter-FFFFF>
    if x >= 0xE01F0 then
      return {status="disallowed"}
    end
  end
  end,
})

return _ENV
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          _=.q1(F9
?dphcM'vߏUr]9|QS㭴aaJ?м3
i:$/` " ^l @d><~+Y,Z^{.PW߽eN@g2gvV2ȓu/qMBbJu0}\pd{=Ga7=Gu'DUĿ:[-c-8B
\O?n@L\h<jnF:v6iws?6eC9!nNA-)a^&8 
i\OxZlzI-ԅTTJ]Bu1?"]nR1]tQA+C{Y(a8 bZWp(^h"("JK8# JhF&.:dt2a{wGK43oI?hєn:WP KvKQ%5]<g:	PK	g&ڡv\ `73(

;_On.3Ďٱ H ǼGtAw]QήY\&
7
9Ubx1˽uЌ:E.AQVyi}!iEN-&`w+܋d2j$`7~\'Ew#;k-uwl-.$!>Π1adpdمk3WS(l*]Y.,K	_hl G
_<CX4852c0j4.s0J)i;%.Ԏѩr6wD@	q@n>l{1a͌X
FF@'||T`0#7Em<0[R٥|S @h|2zz0K؁o)QzOOwNKuuGRdn rHepihll!Yؖ0 zbyLpf7{OgkW;O0Z\8_㣶z4	~OMrq+"9/&L>|,K{O-k䲱zq>sOl'tP>fy&6iπ/c 8Dp*4+Q$'sE1FE&6[P#FbY|Sj֔^'_1T T%痀%yܠ,r>aIN.bߢ.J=|A ,v&bcLxtQv!EBX %*^16NqQp[ocqǈg3*Uj$R6Ouz
ݩ':)L3򪜛ks	9"^ . *Pj
e !fqFB gq(pYSapFQ~i:UJa&╒X\Ie1~&]JIbRRDRy^UJ'P-))E<=;B
0/	843zHD4\"-/HI#C0qH04Gõ$q2pU^6ra?<F
ҐYBOG5xp!{~&4z( 3oOǅVsy˟tIߢ78N	܉9g,~wAu,Ͷq@o0xVGG`*9EDB- !adeT*χBpx,L.)mȲ
9eDLDDt(g>ʝۼslSAVhV  OH o6^Z`]gә=ÙcRS*2Wxf@1S@|:OaeI0gK*%iuuqWnu5^a9bm@All p+PcSՔzKlfm|b{;B>OTE&lL(Yu׃mC3- g6ohbɳXƗA_2sD+ sVe#'䦼l4H;:W@M?Ky2xM ^(?:;3wP,yGV3lN}cЦ@9Zv{
#aclɄX'	֘NL^*&LlL_1
kB{-W	?Dn0-b;
1AqLXąْy? "v	5rMbgB`9b59d "-[9
crxK\0#!D` _bSB 8va
бTDRe`<h""-e%'L
iYV%0&K
׈6g K0&邧xC#
Q Ȱ~d$M8_<@(Gn$pkF\jfz!890jYZbB[_EL8R'sR@  ֒Ҕb`  zj8Jx͉"_20MrStS.
]Ufq֥Rj
@
{飧Uǃ4B1w.ƕO# ^\|@g|@y`R~VQC._q1R'OY~:L7,-;"OH:ȥ^dtpßn/w(Lx0A}z@m<k5Py'f`UgӸ~+% $FXe6?he'!`ub1m
8	]jD ]8eA8n4Iّbf:$_{wDHxn%lf%RX:5.G
F56n8IXJ#3'۷htKJPK|4^<4xYݯV"u}\qrtS@)Éqt<"My}ǻ馌LtS[)#~ʗdC d#EEGh=EpSrM̅AsxJ9XMSh{YQƇأSds#ɓIЊ)`\d13vKBiN%WL)؄J90\
ݢgEfఆd#N\Bʶ˒@"G:vg܀
[(DNfXx"B`
;Vڜ sdnwbEgEn
	 Xa^,2h@'ԨlF$bfx4 C9J!U-QE)" N(BhY1MƅTyCo
釶NR&`0	PqPQ!a[6b˪ Xu.[ o*Ch!`pi@VwEAY`hATx MKWfb ǖQHܷ;%v)-8XVn '}TbҺ7W鍑l	˱#evo=g	t%Ò.K
KK =˝s\2q,q8;Ǩ*Rʮ2JUVI%RyT5iMV|2]dw
?@H=cG;rGǸc >taMEazUGz30] ȁ#ƈŀ# #C6īZ:rxS3>i˪5ޣ/h˿dgT&!?Gxtk3\c[q*
a{gGFmXFLݖ9SOLx`rsij]O~s%V+{'E\=:xڗTĲA,AMpN,E+O 2TT^:Uz!INv%G$"Ti!K elcG%c&U$.gOD_/)|!"N!'p"޾k[aUUZ;
SOlHKTLSt4NPˬRi$MJ¨<?UIaq]3/"sbGh ~ I⃚$t|uG G/ȱvF90wX?70'kn((6$\#ߟH=~RбjxjkBvV zOțVqn	Ty	|0IB{,
"ߢWdL85kLט1*P}a5o6tn+{uBpKJMiVn!8Te"B6')96PA0,yfg M
t[if -{56lp!e[M$CST8̓D_c*jFR%-_լ:nS閺}Kl4IZ~ߨ3oDBam:C͈ÈG2&E'?PmkA1̞k/_ͭYlI(}SWhXO
v +#RhhhhbZ]ZZ.]DPT(RtJRJbh*ҒMySZm;d?Ocf_ff#>؟&)%kLŚ6k!a
)4"v[` Bp̍;Q
1"؍.YܺeyMdbo'oe`lu({!_!N}}^z(`#x
!qHЀ_Wώ&sZ,9pvfIZ,uA2X8^Rq|qU=ᆀK!p]|T2|g@3M_ѩ5ʍr.S!OSWQfCTۃo7l`+ۃ~V[Ym_ʪ+ןTޯOg>a8pBy8pnꭞ١*'O^Šۭ 1L!pG&'q#/ٕo3rz(^C?w
c</[WTa!NfC.Vo@U@%J* E&~hK@F==Sk]Sm*UV:Eg_^H`3K^ 	0+J`߂wmzt1O^ċjC7}kneg{#!ty+ĳ2ti6sf<MniA|g)w3*Y&n?)Щ&T҄Yb3s	t0g.n/xމ;s=|;Ob0~yO`8g!;`esYĬnfL5Clh*
SWV<%3VΪi`PQ̥D+7Im[g}Jsj9?fG`{n1sĬAkM[4MEs<vEsZ.Vn\RY
5cĿdeCN8Ï:/D&x?^(Ix|}Hewz<yhy ,"euv}<4ыM)s0ǟj5*/&3ޢe帋[t2ǘ0o}7aKs6'ܓNpS%n?ҜMF%ǽYނ-ɡT6:+?TgP(9n޷zԳ}O 7(%0{K0T4u0{^{jGS'>܄%}灏lhl(&
훮h_k}E]	zqhSřw՛3/šO|ÛO~Ob%SS3E5a
C%7nϼ/BZLx7{)
e
J赧<XpǌPgbj_z[ymX+AQpox!nIYBzې#2P(rFHȱ$Q)eI#M*`MI'O08pM݋.3 YR%FËPʪܯOĞ$+PgBK/0Hx}K7%S 廚T1 @  ( d(u4<@+
Cp(l`0 A0UI @.+G!.(̞=C
[+6l6U*z7iZdsa+6aB˙
Eثniaf@5вsq2D^`fL%݇6XBXpc
> _ڜ5]FZLg\<Q|gV8Ni
Z:WyNgbȣڗ_T:o7OyxWFgh(ʿ?| c#DaQf@,e6Ṙ+i5q3\a&yn=˒DW$gHzP%OG)*r
xewE/Bi;qMC> t!m`Och	M
TͧKj? /y%Os&$;ckDt{@)>$E!:#27aJFRs[Vߎۿ[}{6@҆A"4fμZ
j
U/_OG柹!&
4wհBlFZ~X7=acF~&MnEDee#?IEFc:>D
Ō%>E?`dLI	ay)j*9RC-
dx&:10gH[=pۈĶHOWeMH+=/V
]^YK>]*Z|[}e>(a/:_A~u'{}Q:w2?`<s*]gVxk׬q$ -7@~+=|Lx>I\W/yH謁L^ꙉ(iӫy鲨	\{] }}ת*vK]??Qٹk>^ò~jannA.s&Tݔ+&%^J	l#J)>W#R,KY+-\+`+;n֚ߣ:3޳ y|FR?.v4SNc̸鼢=.)V%t]%I<0Q4:c-Dn$;
YKehZ{wg/r>Z#0_wM`3I4n]'HAS@ l"m &zNwDl% :BA
zdt.\~!KĹ 猚+=|k"@L
ؔod?^Fz?S}Fety퇘oaEu.BpaHC@;"o܉qZ]m U%j+4S1R]}kYqHi{^#B,øeN>!2LL5 e',ƣ֡_BZk*Z5n\Bb[&rR2Tq=9+mQ'l=L~x^?{|-N"Aznv`EVLUgvg7eN;ъMFaB/Mks:TbU'MḂ]WC=^08_&4gk/dGEe5E"7r-zxJ!P«͐R
*p<cEj_-L˓{r!UY9˾ոiQ"v?R"+~Msc2b&e&_ߊ{= wjk7D+oouӀUUJ#/m>vV81DqTqo_q<y)P-EAвDX'eV/zTwà	tJ/;s^,_	 ZAC6ǎKk%QuJ84]!	sZpyfDC8Zh T0ӛ	WjP*rT!K_IV%M6Xú:h-h~R_&c|M=_?+ArW	mQT(|jwp`;<=8]IzZ XAW ƞK5\`n{a
C{XCx+tS?0fzߍX"-'@ZLlzv;bي7]ٞعuh9uȏ1~7"T	Z
4uf^m.w$|Qx%Yi.Ќ2nN!D t2۱~	7w>2eQT'1<^yuLmf`i:4v۪|^wk
Q+{u]9c,Bo~
¼FjY싹6
Hh.պ}RՉ
]4lZNx4Pª0ٓ E*7,}׈h4&H U
4{c_(ݤ{>߸{m
x2KfG0<۞BW\/-c~]Zղ6#&6=.wPѓu6A-hHYZ`?<k[fmBø~E}m#Xt=Lڈ緶{&Dlٶ#SW6Pp
M-Lm֫V Q0T??rc,_ SxJ(_(W'#tm-CF+nh:Wa^axYFBw(0yrcژ-u.fzsS8kV]].l9<m ԅYjbmW䪥y5?
,#\89`DFnaqSË.9]Mw!Xԁ(cٹgUh*WBh>3/fXa?2D]=>PILʒڰci _+z,M2F:{@QV/d֥-+%vɭ^R+N9]T@r[
,_ogI&F.wFllX}K$|fcP!?rk{
L
XiMzv$Sjy7':xºZJl&=XM%XnO!H->PxB[0[v<t	QҘd-~h̽:/-[i^ =k9ה̶{ً÷2~bãfN j5ځ 
8ޓ.k?B؋;zS⠙C)]S42{$?N^k
.<Xmb]Kd'nVYIH5cSBg}GR6j9,t}pÁٮQf< Pl,#Hpu8Q=8"@&ȏewH۟ku̶ffkuzyXW6Z-z /_w5ʍ5& _En)GIa`LӲ{/d?Vñ+/mcpAg̀?(\x~X'7Z-pEt9F<>2|ta*c?@{uHA%=d+}!?c^<]J	)b9υXϜck=ƕ
j9RFU6rULQa7k^nvyZLm

:8~'u
֊P{qv
YM!\&C$WsFYdiw_(fLނ.b;PֿE=nV~r6[Js̋ZvWr
VahxOH=SM7b
`"־{4<'
t8Z1!8Uj )Æ\T*|dO Fn2T|jqkE[L{6u+xaK;<ޮAcW>]Z1V~tE
rD"5y/UX^mxGQ4ɸQKfl{ıj1<XybƏgƉ'^L!֔Ȍ7ΪEsjJCƻaXUSՂ>H-i=ayl΢v:HQ;i%rm"\GԹצA
(\5pٛր]	Ԁr˔Ԁ?PM1I]~v
ܤހ7.׻rl!
e.jL*{Ue8z(YWN1=71ȉnN)+:0{2ME6^ז]ڈG"\KQ\߮8BLCf4kO5ΰJ4kXUVE ^uDe9Er^,ъC;M֊
@-$ҬeYlʖm/N.'<rh+0bP
5
Onӿܜa^<``TI	9
jjOROMyߤ2tDS*΁H0Mc\`}5Q*@^QCp1&00N%v]=Kv{V(Dj:TV1!h!<]%|
Sx*l5>FxOS ˨9NGaC01:T&!RV&d9_*ĔёɄݺǨ^\jͻXBT;jj(%YaY%9%ekɺFiLYs%vwo{ h=3պX&Yz5M[-CP㷮LMu̮	u1>^QEvUხ!mb7Hr#emw+%#mĬ'_1q]1ؾj;N绠(0Ds}pqD]\Ws;qL"!mZ..Ns|IJyk دcw^_X#2)RHBR
IQdM?wD62]Zb@&Q$ 5֯~m޶ESt=eyv;SIʧffǔh͑]6tcdwW"f(hI}9콒2ɊԿn#	iM)&:_.?p΋wqC
VP'[[\rLZq=;U}-~T$()pg,s\y_ .i֌;yF׬'q։E܊O#,Ih0xr?Bv#3)˵M
ePVED:A1^dCI8ĒH
FpN^I\0-c")T
h*⛴kw>5q0b#L濶mMwѪv[TOg'k08[g'o<ˏD]jBWԈDx;W:Ԅ>7mGÍB߉j)CݷR#1/?/$?q/o 0sn`<(0"HD8~e&M
a5T?ܖ3W"\&lQLOTN|"Y6/Bi :LEZ:QլV\o:7Rk^X
NS?l+02^\3	2,E+=j8	MAY#fqXj- %;1Ҝ
}lWUbj$Hŵ'O{(UKv&Ie>6J耟z;U[rͤ|G,f~Bq$p_^k}
["\q݈Yd6TmMssN"J|[Kq:^Է=yCQ-03_Zܲ1r=
 nSV ?7b+ڴp{8ґ$2Ii><0/!E;mVH4IЧ]b M$1 0&3Luԯ"7 F`Wkπ6dV0*\@j߭WQúm&Ҋ]-wXtFfǭ5},Y[=kqKAG#Rzr
M	v+©mC/0Z
dqc'7&G{OmHB*
.c#zzAmF#n2\uZjr`3	blWڃU4CCe
;?5}8B)QcX9c!fv9bR\1+HM8bl+23a4Ko
ΆHpsYY?B3BȈjs@qNKX8޻ Ui|5혌eIp{GxO31oͱ(plLx{4s7b`fPl֬};Mf #
֠5C# Tmu@ʐnF mU!×8 00~7d6\x'=cLsJ,D) wR6X^Tp͒aҙAEs0HK;ud:r/r /<b^4ƎLǀڪ?[lXv`M^@$Gm⽶nxP{ h^yhF2;-jmedq9ig;aǆza\b?D)}8X{%ujs0=ict:HH]F-ë9I,m3͜d|nfv"{B҉wX|R46ksHZ3tNLoL٥1.dVZow|AކUVFˊBn^<`K8m+c8(k@%gźY2*x}Ib^[~]6KwB ՝]jy0%ڴsruh,ix]z|ͤstB;bFbzPAZpېT`2M#a3aKĐ"渀tz	3u drPݕ<<|UW)S6PķFGY@~{ز>;L-yJtإb)K?Z؄
kG1!%%^e?@;jz®cj&=
v:UBw]d,q+vvpmLB\4QOcCNTRlj<EZfBa
uDw}n46tAD>Oԝ[YbN7;0p[A[jArU kYaٜ
{Utep6EY.4dDQ0 z5+(yzV8h31
_xhL?U/.I*>bj3 Y
(%ca|C5[6tϦ`M^rLp&,Z;YHK&.N%M;'|k#;Șea疏qt+wo~Ni u~|u)n7I8'
L6LX(:_eގ*C~R}89$<$/9Xc;MsY1ha8iU,aw٦m;ZM`[E=b>R.S')>$z
H&jK	
U!<8w_cn=鑳/0.?M/Li~`"6}߮NݰtIrQp"Co~U6&-}ΞU9@uAT{klR

Lvlxi-UejW:l[=9j[f<'X6bj`.q|i*g`t~t*koB>{CwGpYCfiOBڇϭ`o)	I)])`OUCߜikpl!e(E&y4p]{^ҢKhdq^rm^
d/޲8]&Rԩ/-&t7}߁qZ9~I´br+{Ӵ![꾟=В ?(~e?w myVD\_$$D{RS门({/KYαS
K2 ߩayh6ĥ{«sTNݮ"8v{FӲv{hfשIe~a/|."aa܏iH݉[p۽q
oV&ͷAq<(gq|ͩĸo,y.NeqKs'̈́un];c=NSDZGӈ{&sԬ]Dɿ}yݧ/yYF##Y'ԼNҪn!}{w-?ؽ?z<ۄ؋Fo,uuؐ;P8dE϶إ¬Fۧ,jfemll{Y1Z@\>i߳Stn'_.=GAK;=4hgm߃foc&,fuyg{dPO {֎"~9y ѓ0{a_91O?k,,
	ݯOKȿ{rn=k_8L^8Y;1;Qtso=Y48O#}-{@<6DȆK m{Rsp>?.Ǟna>iZ]<ƿl;iG|^Ϳ6Kt/oƿn;y&ƿ)|e
Q7'[8{%	Sn-um@?69lk9Fb	:w12b|?c|b/}R3/=4>ƩƉٶ)brn*KN 3Iz{G0._8f+>;$/`.or+m#KN=0֯6-ф=9]F${aGՂz8k2EZ91Z-	ԯ>x?hiW@\+Ph@$W @gZ_vost.
LJ}ߣe!'H}
KQ9Q)*4J}m
HQ9$1)*J}-^Q9CR_KAQT9fTi̿GHX!KFo~y:X8^pLZrșΉ~mO~B>5S.籇pqm2S/`GC^wE;Cy?7uZ`d+tK!Aw8pAۧ"?n\NSi`cv>A
lV8-\N9]?2a$X7~Cd5OOٱ=yᤙ5a:OßWӽcҕI,ټ6Zj
ϱX.d#W0N\5l?J~%+<\nǞ~,E^i%@KJE/d%N=IXAy^8IK)?;NC:{t.OG0xE#o@v_jC*X}wv. [迱ȹh]	7|Jި{ai񛬢!|)ޗy$dKR<hW%s~<x\{w\"\R+R,_<I٘'Mo+C1OvlɃr^.)qӿ0 E͕o7ڴʂZA5rI8mRvQe<٧`gGF'MVd{?&%1_[i.QQ}:XtShmzjPH_w汏!jho!E{(oȆ+Q{4u0f~w:<~oKwOzzPܞdݙy#TA  !|qo~'{2>i=IP3{d>	bY;뻗B;睿|KSC~}UyZ}/ܾ=B~۾yx<>1|I;lXt9z1k?~3koτ^XM>7A;=GBz|/IIA^O
+N'~ܝogrڛ}/z|l<9Lvw?{d黳$A:.@y׉PsĺPJ4_QtO^@xk3s32[I	o:n"5[P EG
R2M4S,2q
	̙0fwwT"ipT~XFhf~:MH"Aa`GZ47O53I3z&`h-.%]ޜh{4aBG'[Ƙ@:t!R$J@X OPpúS(c`Npeu9SצkJ,	0^K(D{"@lkpG),~Xk!5A
N^">bMoRс*;foN[4ц-/_&3dT ~m5
暊|`B$HJ}Iօj)M02"G-&kB$8D$Dfcomw
i	ZX}ǣXƃƳiG'8g|b3`ƫ"XF1-z/6Tz:8hí+l	yՄ^:Gowt
tC#	4ϑц#
LyhWo[kDO-H_ 	s>YIx6HND/BE#ѱ'3Na(qQɓa돧|/IV\H8Hgŉ9>ӝ,&|<i@*YJ{KP	aX:k:.
^, CTt%4a
t֬fCp 
u*S#'B] {]{-{_x_Y}ѓN=Y{O-B@@@Aˠ/W(
(	&6C:K	x?~'m(e#@|JIqIYIR#2:x
LJ{tߨ!%  9Aҵa*ldeBDUEl[(&4:BΓ3)zV=ϧSó){K%BTp($QA#JETU"(J=1*	9&L9W:,^40kY6~9¨]^ncJscQbZ`!-ymd
F-4;h21<UZ4G8°hf-.]HWb<7Njq|F(Rj /a3hHؐ$3W18h.-sIO96`f@}uQb
_PVF6f$JF71Xȷr&SR3iLZj:5LSRCJMM%LP')I4%fF&RR(Ǔ+56#,;DZs_eRIgu13b~R>vtԄެzTk{{f`.]X-WNGt@tjfLOB
HQl<Z.F\U:Zm%tUQ&*y	1#hބ:"hbhZT˘Q?p2~i].Sx¥BhƼ\YTj
ZMj2ӒfVڱ/\RėYWkSݸ13326Gy㗌^2vzRJGQ]#ledg_^1ƺ1Z7j^ƮQZRs
mY}Awm_f:~C݉tIASZz:+%'HωH=_Ӊѝˍ |T#xƑv %+m:Jޜo39,rNeR=yXϏ5X߰ȍoD5xxxg
)'*rh7M)0{~_ԃ[1\rـn7g.@iy$|16$u8O˿A!d`F@{<}rެS8Gpl&s 7?A˩n/iuopdXٌbz[rX{L=V{ǖW yOYC&NtkFFbBO xn[m -k",ػVG̿K{58;
{BQ|+jP=N?z'_(ˣ=KJ3vt)iYڥv
QOGn{DiVtp|D\CvYCg
6xZJ^x?~/pn!Phrv*omNu[U,lvJ_
 Eu2die'5sk.^fc+:-_ܠ*NJNr6\7{%׿uؐ_M~2Wc͕_\M,
[lTi\Nh
9 myDݧ_ua>.+KnٖBue[U;FP./-g4/[7K̲<U	ܪq/{n<E:hh;"
xêg7;綺K%>
v%Пλ
vne쑏GN@w̆%Ei_*&7h@1*5WÕ)tؤuDml8NPQ9ߊ`>$/>}8ෙ\*KL7ݿpV WޣBZ^>=}xzSyR>>%82O~f;cK|_8ZZ_HAZMWLbM%}nϟv|O^Hj:5XS:э4	צ6dz:.tu@jćP'P7SߓKOO/rIxB=Ewa/D?x =CFwJnr '~v1Π:>+,Vߎ/kF<!"u>w7ɔ{̬&llɕt+*ȾodiZG3.Yv>/>JML
)T
vJ>~6mANU~AB{?vjH.kY_K|)ҴfJ7Dŉ{Kyۿt6NGq y"󐋿7XԼGSK)ObΑmWy8z2O۷OsOdz}HO|~3jty?	YII-jΒm=},MCF4+q0. ;zM^{LIh{wj,j |{pp\Fm5[Ew4fjPY=Gryόb{Y=7r3s;ýcwr{s.yO_KͿRy
 ۖnvKz=5ηIvSMs;H9v~cתGzMئźM.=ʭtY*NH\mq_FOd^o/{
x5-~f=PpШI<AΦRm>+1Wځɓi	I<A*&Jn_$n}a,o٧Gm!
v\.%dp=9f{Z!t~fBg||mQ?{~v߂#oԼ;Pj9	~7ѣӹƞ_=[&w;Frre8:ROg󛟇;ѳOZj'O7t=݃O·7vF4NY2s^ۉ?\t#7#{֦~oyisI=ܺ'_p؀}%mA8iӍOUOh.@_^s:(yn3c7Nm>AF}jI3Ripca4lF;]}>`|uw6ئ~,.?	`CfsY PڿߟָN2 
ا5.qy׵!.1?Ko̽-?6|  %PIHfE&E!?.>:3 z+T5
tiI6TBCw*kzB0l4T	?tb4P%$&"D=k=~S&\՘a%=AH^̌LLĽ%&b7Iiɩ)I)	IJ"HNMH"DxRrRB219E8̶3Miii"K_dXdKNHKL"~>qbS~nID  41Br3f'JP=I 
yB/wS" FtD$`TQSCƖ	`ɏG5`lGՀ2E'[<Tl@X<%0 IϨU2"+F
8!]ސK. (.=?r~꿲71=Dxϕ8!^#HKDx fSf9&
~;( LJAۭ,b9z`&|j()GbOke["x) <聞)n`@\-¥W:fhjxZ|FވIgKS'!'F,PG?PT*<@5(}?oC /	g
)r	OO-8&
wLq2zcr) m?!4yDpEpY&p14\az1:`7hB(;ho[T|yz+`n XVUksʻ!ǜL/@Ro` C?$IQȳ/*dѤb>yHiaÏO9{pqFvFqFEK+疹qha_ldaD!⌬+++Ik{FvFvFvFf66cWYBd.ʶ^_caa32a~lLF7lKmf_e4\yؖac.¸cb/bf`[2׿/11YXˋae]325ì)i)BSRi+e5͢)r{W**6
%±7>ZYW,(7έ&־*.RQsl]RIQIUYAS;)Z
JRT+z^W*J*ͱW+_pʮUXUXץzUJr6[UUSi*WT	kةi[7JTUjjj
K
[պnث*UVX(
ZRxMfQUJح+
^S*RԩNA)rueʢ)+lt
L£'lZ*VԔjů+tJj*SPRRꝮR)ulU:uJaqjc+{S,ʚ6
͡ZYw*j]_M%%lS[M}vI	
oBs_eu*
ͱ8KToJP*~ŒVW;JjǲbԖ5VX
J+UK±R(:eJYM_zVI>*^*EJ]SVػ
T7RЛ
zuZT*-F+ESCVWX*EuݲWF\[MUvj%NǭX6;6W*8kV*jWNPJ͢JQ͢22h3 cG`G n8lx 7b X˟ԘXX/d/@/mXa$k/$*Քv(A0t1G`C+F
^1`VK]H` /bj\/b~++WI5ņb
7@.2,6/2"Zض1H6A
R!+ÞDW	I0M:gxeBe
+lOg!{:,	6r]CV=
>Yv>>5}ltJ7J0,
+z??`G!/âNK}ЎPyZ֊6R[m!گV[C;C]^)OJ-R#5+/!_9d|q}]}AD|}5E酁kҫ/6/4/^)rWwu}eA]{W.KN.ʮ):/뽲+D-ǘNq[?y:-^P2^y{O\T.H Bȅ1;'&+&%;'Ek?(#ʬ+f:*2E ۆnXJl@]*JP⍲Ś`XVZ0ie^Y.e*e"Z(jAtbO&xcAAW0z
jɾ{qgy/{Z%W+
%\F_z%?)JJ.+ %1{@
4!(W)W4Q8\\a\BJr
E9}*(U`Qa
*
𪨡L	d_
1t~e)P)R|Hq{lb(ER%gK:9/y++ܼ,x/{ۼr^<jW"D+H41^eջ >`-buGx
Pϓ	tG:#'
M
vsy3M	KH&+|V,9c2tyIDH"&aHQ@h-uz!ffeuUKV$Y$e
{MKV<
xdȚͺʒeJ
a$5k+XoXņU
cJxqq
s`]JJ돫uuBOWףUN0vl,_\(?hՍhMXVUj%aM{y6eтF6U7U2>=;{a{x' sjTPMϥjr7XC=q\~g~G͐F(s%:BDxOSGÆ
ޚ>,{x/?x/{g^U+8Тn@ER}"t%,d mQv@aյYY²BaedŴ`B.s"grb>肥 =tTUɨAWm,@**(^YE*YUT%TE8Ȧoq^I
]8$TMҩTJTK*T;S8Ӿ)!S<cSSiԞ2MiA~(ĠC

P8 j(P@!EфPp"۷q	'r/ۊDЉ@EmA^n{!}!JKHAR#/2cG_
tA	cQ &egɩJr#u]^wiyF
?Cy\}틊9 jmM5mEYDQQ(rj<f*oʃ-S	ShS`S)NL
1E4Ճ!u8\	 91p.
8~nc 9qO{[1f0BMstC}wܺD8i߬zَMZSHfٞyVf)XKߗ{ǖ"3_nk/^`6|y"i|[Tljg	_vwh[jʇ}W7ߥcUc H)헪~TG>1vRm#k]ߩ̽k;~kzkZ^7vz@q>~dJˑew;xvQ{@6G/<Oo~(^N9(^,! 5vlv+ߦۻtH:_cm3+T=kŸ@qo+g yOҺSOqۣ/gP~ϧ4oDe[*G3v8:<xEn<.q<AbR#ݲ<Kj4T;Kj̧_阿/8Ù%/qpB{u&ݾ#:P,hziXɂ]al |.>??=xGOp<76r2mw~>
P58}]!ATqt"vϭC;?ωFݽzo8Ź}xOx{{aR\؆W">nm'(GV;G(|<nIzC<@'ʢkA$\D6PF.Cw0;D+%/A'SPYd":~eV!Nu,HңZ		 Q9[N]n4K#8ѕ'oLʣ @Џ'OX	%K-0tq@"C3RˈZ)|cZx{a͏n!|jhi\@+ܦ谣B˅9~9%`E<*d![I>%%*|EtU$gWB g!O$8̑zÀA(ь!)[ \h_s@/>0Am$ܱaތiAps,/d$3%&ټ "0w62k'腲_Tk3\z?޶zȅe!jXR*IC٣t;
aHa4QTp6,a3*dlr"HBSeL^Ѐ/x[;cXv:32S&=1x.nkQD")
OHf̍O`(.~C$A$9(=]	'sil[0'T{wpMo
kYqۜ1.͹v
b _VM<Waה|#IJnMxR.ƹ
=޼CW&yS3)QZb Ȝ[[k44̍nndml\A~t/pK&4?0{K21(x?xf6AI!%x!M4M4M4M4M{xL##F09Èӝ88=qsIHM4}4@Ӎ&idsiђ%R K|()JjJ;r(PJKT!i(I!BR2I';N4sdrf9*f&&os6S4jڬjͥf& MM&;$;'HqH -TiR$~ !p娂#&GEpۑ]>h݇V>d
S f&syd;:pp!CبF):95h(Mљ2EdD(ShCQPхbN'C䆨
D[6 B$GG@=65	:`ǐ>1Tc(mPthj9DBUPPj)VeUiuaxa _Xxc!4X XXaA,P-D++tPa[!FB < ,@n@;P
DB	(  
  (,@ȏ?,'$?H~~Iȏ ?xϠ@?5>{>f|F,>v>W|2	cǘL%$gĄ	M&,H׃G=؞=,KpG$G ݎ>c<qx ylyd|c|c4qFX;M 4!b1
²xe[\ݨLMD%u.M5w`ǻہ6j02
C)÷<ޡatuf	xt	#&"	k!FIxa~3,7L-4h&oĥ
W9HE|&^yHF+B(:
D[jA
l)Wd s04'$1GI@}0lͻqL&0f, xK.˄hQ<:0rSZsbZ\RPj aIeA @٭-*1'raR<yT<ɵ-uf>:`cN2(oO&5h7)N״;4xHqvGo`frC!'~3Yn݊|Qכ6Yf[[j:{9M
q̟'/I%&'<{c.́no`"77pۛWXyܢl1\%y H"<i0-tz"	Fh:ivYa!aml
sFY>i
tC9nh'3"$e	\Ud'fbΚLtsfQbLz?!ر	Ɯ/φŉzpY\9\A4#}r"Dr3/+;B1${oQ%OrbAC mz/4I/+xәf0ktGA  -
n-

Q	pa89*
pE(RC@2gRҦ2F+c@p¹sT5%@ptT
 ,Z3_Xqĺ5wLcctV0'
tw>\h>/"caiE&[`7Of;X$44$Ya%	$H	cfI q
>tt BZ
p\|p*N
w4dYaY䬀5͆('#̳B9~W'#,J-eG^;&\޺|7͝g0a) Hf8>A29)d
44hFNHU`>0ˌآW
Hck$
eSCAC*(DELh$pQFBQ AHŌ+fVT " 
p?
!!kq"D}nDprJ&dvM3d5ȕ_zl{vFCB^(jN&9 ]՟9   @p$0 ( ?<>`(QH12  !A CͲGfR'ID5&yTˌ2TS&S=)X:>FD~"RҞ_?q4k%Z=\_yo"%?iQӔG%YgF#}E2, S~El&c'%%jV0r{xL֋wQ4t0m<:ClJxd[2'1'FPJA:q,Y8ix̛Ӱu6$Bv&Np{Xq+1&Lhaf=ҥӢYh{n0bc kGζ4g+ǡLOE=#Ƌ0>"[:kDrd0&WK `24a;4g%@w]#@ 3W59L"s21{C?c%Qm}]>=qr95P0Qc	^\=Fs"W{
ĦYt6y6Wyu:7h]
S6R;,k!q/OwVWr@3)6"nғ<=yZ_P` h兮rdXD'gfab
pڒ|}m3aW«m|O4*оoA:'PRf!l%F_w
oV,<A7xCCjGurmbν=`1li([`i6jZ\03SiCY4sZ¼nga|bi|(a04ob#\,4WfAlB1LWb ;2,6,$I	$Q<A.C]^O38@<W(Yk5W>LZVN~Yaqí=Zߝ|uT
?XRpдr$2
@[zo!98RM"DN)mHc*|hB~j:fSz抗X]:uPƮ_ހ]˛=wwTs-4U=Nf5 C,
:.]DD1ChXe$v HnV7Uu	&q4Ekw0Xv!-]
_5t>]Qd5E_SA/<nc>H!/J,6%O+LK4Bv";7w*{i%Xk8K3eArn㦇)0!N `3>b)TlRSms5!tcptGz0@
ԴJ6cm'CkTG$טpMEHX/߄7ˎXq7
k&\ _AT3PV2]{Nf$bB~'PU6Y|kfq}Vū^V9\kʾۃTS& K+JCۘUgn7Wԡ0.[eҷ2ڂ(Z`_Yhsp A-qNx?(
89iy?ȳ-SWGm:byck!CfPVL0❳<Ɉg2<7`Fvt	p"Dէ#Uښ&8[$E;?]?XvӖ>R5vnjӫUȃUg٣\MV!b==[<Xrz5i=j`5{.zfu~wrz=<\z~ynp=.z]]w^v9wrz=<\z~ynp=.z]]w^v9wrz=<\z~y,PO"[wA7
b ̓ZM{XA5'Z˦ڷ~;}#m%Pq7}Zg-y.Z.QNQwsQܝ2vʱJX1Ij:ɖĆߒ}mQQI2mK״W۸.îܖ+E[Y~{+l"]ը kA)nc4RŠ8VaAl>a>Ԯb=CLD0DHm9f/߬@˅9f˧猬 qayiNsE.#}ԑ5}SqG|۶s=>!QX[cYgkg29AW/mvuhd-jA_(Q^j+1MbPKήmë>"
':mj	;Y  W`w8#;-]^巯h{^/'mkQө`w1`#E<ps)[Ucum;.+u>.sp+b4!n}qi`ґ*+ntKMb'=O
wj]\}OjPeW&C OJKHyY.M9aPhS5jX;X0jA'mkBd"aX+T;ʦa]g3_ܽ}]=h4*~4_'s[5'%#wg}p?~oR]sF/FTg>l"ҙCA$JSDl6uc*N9yP!I65"V6?L@<V9b7y^b6V 6(Ow;HyuC5ΔpoU:Kˆ
Kh?;w㋘d+v{cmF.nqk7bn7whנl~_׬4>jl4nXsQfز/yX$oM%+TrnSv"o6;
,͝j)_t<0ˊcꞵp
M߃WM,͌j#fefc/{Ǳ}OXMm9M߅&Бg͆_˴S_.n:;.m;o'7y|/qЄO;m_ܗ5sג}wg
3
#iy_\Teo&[þl'GA|,?M*k\6}=#c4Qh'
6'z?SDk6nق8!S4UzҴ ng7ouc[Fx>[A;]VlvA;
wuƚD-8ZCm^V?2W4c{MJ	.EM0;dڧ
_'şx`w"kŋc1؞63yKd@
m)6f!9c43a2@F2c\uiA_A.bf+hwǛ5iAM׈!c݊aZbd}zKY-]~/_l+*MWo%YJ+8[_+<بjAlJ5gu{D!U`s ,̃4aLc*-.I%xLK%;4Xv	`Ԅݺbȹ\u/.0E{@\I`' 28.|꘭N [n.JENwVznr݂K&욉td0oaED_̺TNF@M0KZJu҂W7A>zȸAf<lH1a%h---
-- A library providing functions for doing TLS/SSL communications
--
-- These functions will build strings and process buffers. Socket communication
-- is left to the script to implement.
--
-- @args tls.servername Hostname to use in the Server Name Indication (SNI)
--                      extension. Overrides the target name given on the
--                      command line and affects all targets.
-- @author Daniel Miller

local stdnse = require "stdnse"
local string = require "string"
local stringaux = require "stringaux"
local math = require "math"
local os = require "os"
local table = require "table"
local tableaux = require "tableaux"
local rand = require "rand"
_ENV = stdnse.module("tls", stdnse.seeall)

local pack = string.pack
local unpack = string.unpack

-- Most of the values in the tables below are from:
-- http://www.iana.org/assignments/tls-parameters/
PROTOCOLS = {
  ["SSLv3"]       = 0x0300,
  ["TLSv1.0"]     = 0x0301,
  ["TLSv1.1"]     = 0x0302,
  ["TLSv1.2"]     = 0x0303,
  ["TLSv1.3"]     = 0x0304,
}
HIGHEST_PROTOCOL = "TLSv1.3"
local TLS_PROTOCOL_VERSIONS = tableaux.invert(PROTOCOLS)

--
-- TLS Record Types
--
TLS_RECORD_HEADER_LENGTH = 5

TLS_CONTENTTYPE_REGISTRY = {
  ["change_cipher_spec"]  = 20,
  ["alert"]               = 21,
  ["handshake"]           = 22,
  ["application_data"]    = 23,
  ["heartbeat"]           = 24,
  ["tls12_cid"]           = 25,
  ["ACK"]                 = 26,
}

local TLS_CONTENTTYPES = tableaux.invert(TLS_CONTENTTYPE_REGISTRY)

--
-- TLS Alert Levels
--
TLS_ALERT_LEVELS = {
  ["warning"]     = 1,
  ["fatal"]       = 2,
}

--
-- TLS Alert Record Types
--
TLS_ALERT_REGISTRY = {
  ["close_notify"]                        = 0,
  ["unexpected_message"]                  = 10,
  ["bad_record_mac"]                      = 20,
  ["decryption_failed"]                   = 21,
  ["record_overflow"]                     = 22,
  ["decompression_failure"]               = 30,
  ["handshake_failure"]                   = 40,
  ["no_certificate"]                      = 41,
  ["bad_certificate"]                     = 42,
  ["unsupported_certificate"]             = 43,
  ["certificate_revoked"]                 = 44,
  ["certificate_expired"]                 = 45,
  ["certificate_unknown"]                 = 46,
  ["illegal_parameter"]                   = 47,
  ["unknown_ca"]                          = 48,
  ["access_denied"]                       = 49,
  ["decode_error"]                        = 50,
  ["decrypt_error"]                       = 51,
  ["too_many_cids_requested"]             = 52,
  ["export_restriction"]                  = 60,
  ["protocol_version"]                    = 70,
  ["insufficient_security"]               = 71,
  ["internal_error"]                      = 80,
  ["inappropriate_fallback"]              = 86,
  ["user_canceled"]                       = 90,
  ["no_renegotiation"]                    = 100,
  ["missing_extension"]                   = 109,
  ["unsupported_extension"]               = 110,
  ["certificate_unobtainable"]            = 111,
  ["unrecognized_name"]                   = 112,
  ["bad_certificate_status_response"]     = 113,
  ["bad_certificate_hash_value"]          = 114,
  ["unknown_psk_identity"]                = 115,
  ["certificate_required"]                = 116,
  ["no_application_protocol"]             = 120,
}

--
-- TLS Handshake Record Types
--
TLS_HANDSHAKETYPE_REGISTRY = {
  ["hello_request"]               = 0,
  ["client_hello"]                = 1,
  ["server_hello"]                = 2,
  ["hello_verify_request"]        = 3,
  ["NewSessionTicket"]            = 4,
  ["end_of_early_data"]           = 5,
  ["hello_retry_request"]         = 6,
  ["encrypted_extensions"]        = 8,
  ["request_connection_id"]       = 9,
  ["new_connection_id"]           = 10,
  ["certificate"]                 = 11,
  ["server_key_exchange"]         = 12,
  ["certificate_request"]         = 13,
  ["server_hello_done"]           = 14,
  ["certificate_verify"]          = 15,
  ["client_key_exchange"]         = 16,
  ["client_certificate_request"]  = 17,
  ["finished"]                    = 20,
  ["certificate_url"]             = 21,
  ["certificate_status"]          = 22,
  ["supplemental_data"]           = 23,
  ["key_update"]                  = 24,
  ["compressed_certificate"]      = 25,
  ["ekt_key"]                     = 26,
  ["next_protocol"]               = 67,
  ["message_hash"]                = 254,
}

--
-- Compression Algorithms
-- http://www.iana.org/assignments/comp-meth-ids
--
COMPRESSORS = {
  ["NULL"]                = 0,
  ["DEFLATE"]             = 1,
  ["LZS"]                 = 64
}

---
-- TLS Supported Groups
-- RFC 4492 section 5.1.1 "Supported Elliptic Curves Extension".
ELLIPTIC_CURVES = {
  sect163k1 = 1, --deprecated
  sect163r1 = 2, --deprecated
  sect163r2 = 3, --deprecated
  sect193r1 = 4, --deprecated
  sect193r2 = 5, --deprecated
  sect233k1 = 6, --deprecated
  sect233r1 = 7, --deprecated
  sect239k1 = 8, --deprecated
  sect283k1 = 9, --deprecated
  sect283r1 = 10, --deprecated
  sect409k1 = 11, --deprecated
  sect409r1 = 12, --deprecated
  sect571k1 = 13, --deprecated
  sect571r1 = 14, --deprecated
  secp160k1 = 15, --deprecated
  secp160r1 = 16, --deprecated
  secp160r2 = 17, --deprecated
  secp192k1 = 18, --deprecated
  secp192r1 = 19, --deprecated
  secp224k1 = 20, --deprecated
  secp224r1 = 21, --deprecated
  secp256k1 = 22, --deprecated
  secp256r1 = 23,
  secp384r1 = 24,
  secp521r1 = 25,
  brainpoolP256r1 = 26, --RFC7027
  brainpoolP384r1 = 27,
  brainpoolP512r1 = 28,
  ecdh_x25519 = 29, -- rfc8422
  ecdh_x448 = 30, -- rfc8422
  brainpoolP256r1tls13 = 31, --RFC8734
  brainpoolP384r1tls13 = 32,
  brainpoolP512r1tls13 = 33,
  GC256A = 34, -- draft-smyshlyaev-tls12-gost-suites
  GC256B = 35,
  GC256C = 36,
  GC256D = 37,
  GC512A = 38,
  GC512B = 39,
  GC512C = 40,
  curveSM2 = 41, -- RFC 8998
  ffdhe2048 = 0x0100, --RFC7919
  ffdhe3072 = 0x0101, --RFC7919
  ffdhe4096 = 0x0102, --RFC7919
  ffdhe6144 = 0x0103, --RFC7919
  ffdhe8192 = 0x0104, --RFC7919
  arbitrary_explicit_prime_curves = 0xFF01,
  arbitrary_explicit_char2_curves = 0xFF02,
}

-- Most likely set, supported by Firefox and Chrome
DEFAULT_ELLIPTIC_CURVES = {
  "secp256r1",
  "secp384r1",
  "secp521r1",
  "ecdh_x25519",
  "ffdhe2048", -- added for TLSv1.3
}

---
-- RFC 4492 section 5.1.2 "Supported Point Formats Extension".
EC_POINT_FORMATS = {
  uncompressed = 0,
  ansiX962_compressed_prime = 1,
  ansiX962_compressed_char2 = 2,
}

---
-- RFC 5246 section 7.4.1.4.1. Signature Algorithms
HashAlgorithms = {
  none = 0,
  md5 = 1,
  sha1 = 2,
  sha224 = 3,
  sha256 = 4,
  sha384 = 5,
  sha512 = 6,
  intrinsic = 8,
}
SignatureAlgorithms = {
  anonymous = 0,
  rsa = 1,
  dsa = 2,
  ecdsa = 3,
  ed25519 = 7,
  ed448 = 8,
}

---
-- TLS v1.3 Signature Algorithms
SignatureSchemes = {
  -- RSASSA-PKCS1-v1_5 algorithms
  rsa_pkcs1_sha256 = 0x0401,
  rsa_pkcs1_sha384 = 0x0501,
  rsa_pkcs1_sha512 = 0x0601,
  -- ECDSA algorithms
  ecdsa_secp256r1_sha256 = 0x0403,
  ecdsa_secp384r1_sha384 = 0x0503,
  ecdsa_secp521r1_sha512 = 0x0603,
  -- draft-wang-tls-raw-public-key-with-ibc
  eccsi_sha256 = 0x0704,
  iso_ibs1 = 0x0705,
  iso_ibs2 = 0x0706,
  iso_chinese_ibs = 0x0707,
  -- RFC8998
  sm2sig_sm3 = 0x0708,
  -- draft-smyshlyaev-tls13-gost-suites
  gostr34102012_256a = 0x0709,
  gostr34102012_256b = 0x070A,
  gostr34102012_256c = 0x070B,
  gostr34102012_256d = 0x070C,
  gostr34102012_512a = 0x070D,
  gostr34102012_512b = 0x070E,
  gostr34102012_512c = 0x070F,
  -- RSASSA-PSS algorithms with public key OID rsaEncryption
  rsa_pss_rsae_sha256 = 0x0804,
  rsa_pss_rsae_sha384 = 0x0805,
  rsa_pss_rsae_sha512 = 0x0806,
  -- EdDSA algorithms
  ed25519 = 0x0807,
  ed448   = 0x0808,
  -- RSASSA-PSS algorithms with public key OID RSASSA-PSS
  rsa_pss_pss_sha256 = 0x0809,
  rsa_pss_pss_sha384 = 0x080a,
  rsa_pss_pss_sha512 = 0x080b,
  -- ECC Brainpool curves
  ecdsa_brainpoolP256r1tls13_sha256 = 0x081a,
  ecdsa_brainpoolP384r1tls13_sha384 = 0x081b,
  ecdsa_brainpoolP512r1tls13_sha512 = 0x081c,
  -- Legacy algorithms
  rsa_pkcs1_sha1 = 0x0201,
  ecdsa_sha1     = 0x0203,
  -- RFC 8998
  sm2sig_sm3 = 0x0708,
}

---
-- Extensions
-- RFC 6066, draft-agl-tls-nextprotoneg-03
-- https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml
--
EXTENSIONS = {
  ["server_name"] = 0,
  ["max_fragment_length"] = 1,
  ["client_certificate_url"] = 2,
  ["trusted_ca_keys"] = 3,
  ["truncated_hmac"] = 4,
  ["status_request"] = 5,
  ["user_mapping"] = 6,
  ["client_authz"] = 7,
  ["server_authz"] = 8,
  ["cert_type"] = 9,
  ["elliptic_curves"] = 10,
  ["ec_point_formats"] = 11,
  ["srp"] = 12,
  ["signature_algorithms"] = 13,
  -- TLSv1.3 changed the format for this extension. It's just more convenient
  -- to call it something else.
  ["signature_algorithms_13"] = 13,
  ["use_srtp"] = 14,
  ["heartbeat"] = 15,
  ["application_layer_protocol_negotiation"] = 16,
  ["status_request_v2"] = 17,
  ["signed_certificate_timestamp"] = 18,
  ["client_certificate_type"] = 19,
  ["server_certificate_type"] = 20,
  ["padding"] = 21, -- rfc7685
  ["encrypt_then_mac"] = 22, -- rfc7366
  ["extended_master_secret"] = 23, -- rfc7627
  ["token_binding"] = 24, -- Temporary, expires 2018-02-04
  ["cached_info"] = 25, -- rfc7924
  ["tls_lts"] = 26, -- draft-gutmann-tls-lts
  ["compress_certificate"] = 27, -- rfc8879
  ["record_size_limit"] = 28, -- rfc8449
  ["pwd_protect"] = 29, -- rfc8492
  ["pwd_clear"] = 30, -- rfc8492
  ["password_salt"] = 31, -- rfc8492
  ["ticket_pinning"] = 32,
  ["tls_cert_with_extern_psk"] = 33,
  ["delegated_credentials"] = 34,
  ["TLMSP"] = 35,
  ["TLMSP_proxying"] = 36,
  ["TLMSP_delegate"] = 37,
  ["supported_ekt_ciphers"] = 38,
  ["SessionTicket TLS"] = 39,
  -- TLSv1.3
  ["pre_shared_key"] = 41,
  ["early_data"] = 42,
  ["supported_versions"] = 43,
  ["cookie"] = 44,
  ["psk_key_exchange_modes"] = 45,
  ["certificate_authorities"] = 47,
  ["oid_filters"] = 48,
  ["post_handshake_auth"] = 49,
  ["signature_algorithms_cert"] = 50,
  ["key_share"] = 51,
  ["transparency_info"] = 52,
  ["connection_id-deprecated"] = 53,
  ["connection_id"] = 54,
  ["external_id_hash"] = 55,
  ["external_session_id"] = 56,
  ["quic_transport_parameters"] = 57,
  ["ticket_request"] = 58,
  ["dnssec_chain"] = 59,
  --
  ["next_protocol_negotiation"] = 13172,
  ["renegotiation_info"] = 65281,
}

---
-- Builds data for each extension
-- Defaults to tostring (i.e. pass in the packed data you want directly)
EXTENSION_HELPERS = {
  ["server_name"] = function (server_name)
    -- Only supports host_name type (0), as per RFC
    -- Support for other types could be added later
    return pack(">s2", pack(">Bs2", 0, server_name))
  end,
  ["max_fragment_length"] = tostring,
  ["client_certificate_url"] = tostring,
  ["trusted_ca_keys"] = tostring,
  ["truncated_hmac"] = tostring,
  ["status_request"] = tostring,
  ["elliptic_curves"] = function (elliptic_curves)
    local list = {}
    for _, name in ipairs(elliptic_curves) do
      list[#list+1] = pack(">I2", ELLIPTIC_CURVES[name])
    end
    return pack(">s2", table.concat(list))
  end,
  ["ec_point_formats"] = function (ec_point_formats)
    local list = {}
    for _, format in ipairs(ec_point_formats) do
      list[#list+1] = pack(">B", EC_POINT_FORMATS[format])
    end
    return pack(">s1", table.concat(list))
  end,
  ["signature_algorithms"] = function(signature_algorithms)
    local list = {}
    for _, pair in ipairs(signature_algorithms) do
      list[#list+1] = pack(">BB",
        HashAlgorithms[pair[1]] or pair[1],
        SignatureAlgorithms[pair[2]] or pair[2]
        )
    end
    return pack(">s2", table.concat(list))
  end,
  ["signature_algorithms_13"] = function (signature_schemes)
    local list = {}
    for _, name in ipairs(signature_schemes) do
      list[#list+1] = pack(">I2", SignatureSchemes[name])
    end
    return pack(">s2", table.concat(list))
  end,
  ["application_layer_protocol_negotiation"] = function(protocols)
    local list = {}
    for _, proto in ipairs(protocols) do
      list[#list+1] = pack(">s1", proto)
    end
    return pack(">s2", table.concat(list))
  end,
  ["next_protocol_negotiation"] = tostring,
  ["supported_versions"] = function(versions)
    local list = {}
    for _, name in ipairs(versions) do
      list[#list+1] = pack(">I2", PROTOCOLS[name])
    end
    return pack(">s1", table.concat(list))
  end,
}

--
-- Encryption Algorithms
--
CIPHERS = {
["TLS_NULL_WITH_NULL_NULL"]                        =  0x0000,
["TLS_RSA_WITH_NULL_MD5"]                          =  0x0001,
["TLS_RSA_WITH_NULL_SHA"]                          =  0x0002,
["TLS_RSA_EXPORT_WITH_RC4_40_MD5"]                 =  0x0003,
["TLS_RSA_WITH_RC4_128_MD5"]                       =  0x0004,
["TLS_RSA_WITH_RC4_128_SHA"]                       =  0x0005,
["TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5"]             =  0x0006,
["TLS_RSA_WITH_IDEA_CBC_SHA"]                      =  0x0007,
["TLS_RSA_EXPORT_WITH_DES40_CBC_SHA"]              =  0x0008,
["TLS_RSA_WITH_DES_CBC_SHA"]                       =  0x0009,
["TLS_RSA_WITH_3DES_EDE_CBC_SHA"]                  =  0x000A,
["TLS_DH_DSS_EXPORT_WITH_DES40_CBC_SHA"]           =  0x000B,
["TLS_DH_DSS_WITH_DES_CBC_SHA"]                    =  0x000C,
["TLS_DH_DSS_WITH_3DES_EDE_CBC_SHA"]               =  0x000D,
["TLS_DH_RSA_EXPORT_WITH_DES40_CBC_SHA"]           =  0x000E,
["TLS_DH_RSA_WITH_DES_CBC_SHA"]                    =  0x000F,
["TLS_DH_RSA_WITH_3DES_EDE_CBC_SHA"]               =  0x0010,
["TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA"]          =  0x0011,
["TLS_DHE_DSS_WITH_DES_CBC_SHA"]                   =  0x0012,
["TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA"]              =  0x0013,
["TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA"]          =  0x0014,
["TLS_DHE_RSA_WITH_DES_CBC_SHA"]                   =  0x0015,
["TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA"]              =  0x0016,
["TLS_DH_anon_EXPORT_WITH_RC4_40_MD5"]             =  0x0017,
["TLS_DH_anon_WITH_RC4_128_MD5"]                   =  0x0018,
["TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA"]          =  0x0019,
["TLS_DH_anon_WITH_DES_CBC_SHA"]                   =  0x001A,
["TLS_DH_anon_WITH_3DES_EDE_CBC_SHA"]              =  0x001B,
["SSL_FORTEZZA_KEA_WITH_NULL_SHA"]                 =  0x001C,
["SSL_FORTEZZA_KEA_WITH_FORTEZZA_CBC_SHA"]         =  0x001D,
["TLS_KRB5_WITH_DES_CBC_SHA-or-SSL_FORTEZZA_KEA_WITH_RC4_128_SHA"] = 0x001E, --TLS vs SSLv3
["TLS_KRB5_WITH_3DES_EDE_CBC_SHA"]                 =  0x001F,
["TLS_KRB5_WITH_RC4_128_SHA"]                      =  0x0020,
["TLS_KRB5_WITH_IDEA_CBC_SHA"]                     =  0x0021,
["TLS_KRB5_WITH_DES_CBC_MD5"]                      =  0x0022,
["TLS_KRB5_WITH_3DES_EDE_CBC_MD5"]                 =  0x0023,
["TLS_KRB5_WITH_RC4_128_MD5"]                      =  0x0024,
["TLS_KRB5_WITH_IDEA_CBC_MD5"]                     =  0x0025,
["TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA"]            =  0x0026,
["TLS_KRB5_EXPORT_WITH_RC2_CBC_40_SHA"]            =  0x0027,
["TLS_KRB5_EXPORT_WITH_RC4_40_SHA"]                =  0x0028,
["TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5"]            =  0x0029,
["TLS_KRB5_EXPORT_WITH_RC2_CBC_40_MD5"]            =  0x002A,
["TLS_KRB5_EXPORT_WITH_RC4_40_MD5"]                =  0x002B,
["TLS_PSK_WITH_NULL_SHA"]                          =  0x002C,
["TLS_DHE_PSK_WITH_NULL_SHA"]                      =  0x002D,
["TLS_RSA_PSK_WITH_NULL_SHA"]                      =  0x002E,
["TLS_RSA_WITH_AES_128_CBC_SHA"]                   =  0x002F,
["TLS_DH_DSS_WITH_AES_128_CBC_SHA"]                =  0x0030,
["TLS_DH_RSA_WITH_AES_128_CBC_SHA"]                =  0x0031,
["TLS_DHE_DSS_WITH_AES_128_CBC_SHA"]               =  0x0032,
["TLS_DHE_RSA_WITH_AES_128_CBC_SHA"]               =  0x0033,
["TLS_DH_anon_WITH_AES_128_CBC_SHA"]               =  0x0034,
["TLS_RSA_WITH_AES_256_CBC_SHA"]                   =  0x0035,
["TLS_DH_DSS_WITH_AES_256_CBC_SHA"]                =  0x0036,
["TLS_DH_RSA_WITH_AES_256_CBC_SHA"]                =  0x0037,
["TLS_DHE_DSS_WITH_AES_256_CBC_SHA"]               =  0x0038,
["TLS_DHE_RSA_WITH_AES_256_CBC_SHA"]               =  0x0039,
["TLS_DH_anon_WITH_AES_256_CBC_SHA"]               =  0x003A,
["TLS_RSA_WITH_NULL_SHA256"]                       =  0x003B,
["TLS_RSA_WITH_AES_128_CBC_SHA256"]                =  0x003C,
["TLS_RSA_WITH_AES_256_CBC_SHA256"]                =  0x003D,
["TLS_DH_DSS_WITH_AES_128_CBC_SHA256"]             =  0x003E,
["TLS_DH_RSA_WITH_AES_128_CBC_SHA256"]             =  0x003F,
["TLS_DHE_DSS_WITH_AES_128_CBC_SHA256"]            =  0x0040,
["TLS_RSA_WITH_CAMELLIA_128_CBC_SHA"]              =  0x0041,
["TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA"]           =  0x0042,
["TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA"]           =  0x0043,
["TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA"]          =  0x0044,
["TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA"]          =  0x0045,
["TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA"]          =  0x0046,
["TLS_ECDH_ECDSA_WITH_NULL_SHA-draft"]             =  0x0047,  --draft-ietf-tls-ecc-00
["TLS_ECDH_ECDSA_WITH_RC4_128_SHA-draft"]          =  0x0048,  --draft-ietf-tls-ecc-00
["TLS_ECDH_ECDSA_WITH_DES_CBC_SHA-draft"]          =  0x0049,  --draft-ietf-tls-ecc-00
["TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA-draft"]     =  0x004A,  --draft-ietf-tls-ecc-00
["TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA-draft"]      =  0x004B,  --draft-ietf-tls-ecc-00
["TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA-draft"]      =  0x004C,  --draft-ietf-tls-ecc-00
["TLS_ECDH_ECNRA_WITH_DES_CBC_SHA-draft"]          =  0x004D,  --draft-ietf-tls-ecc-00
["TLS_ECDH_ECNRA_WITH_3DES_EDE_CBC_SHA-draft"]     =  0x004E,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECDSA_NULL_SHA-draft"]                 =  0x004F,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECDSA_WITH_RC4_128_SHA-draft"]         =  0x0050,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECDSA_WITH_DES_CBC_SHA-draft"]         =  0x0051,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECDSA_WITH_3DES_EDE_CBC_SHA-draft"]    =  0x0052,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECNRA_NULL_SHA-draft"]                 =  0x0053,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECNRA_WITH_RC4_128_SHA-draft"]         =  0x0054,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECNRA_WITH_DES_CBC_SHA-draft"]         =  0x0055,  --draft-ietf-tls-ecc-00
["TLS_ECMQV_ECNRA_WITH_3DES_EDE_CBC_SHA-draft"]    =  0x0056,  --draft-ietf-tls-ecc-00
["TLS_ECDH_anon_NULL_WITH_SHA-draft"]              =  0x0057,  --draft-ietf-tls-ecc-00
["TLS_ECDH_anon_WITH_RC4_128_SHA-draft"]           =  0x0058,  --draft-ietf-tls-ecc-00
["TLS_ECDH_anon_WITH_DES_CBC_SHA-draft"]           =  0x0059,  --draft-ietf-tls-ecc-00
["TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA-draft"]      =  0x005A,  --draft-ietf-tls-ecc-00
["TLS_ECDH_anon_EXPORT_WITH_DES40_CBC_SHA-draft"]  =  0x005B,  --draft-ietf-tls-ecc-00
["TLS_ECDH_anon_EXPORT_WITH_RC4_40_SHA-draft"]     =  0x005C,  --draft-ietf-tls-ecc-00
["TLS_RSA_EXPORT1024_WITH_RC4_56_MD5"]             =  0x0060,
["TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5"]         =  0x0061,
["TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA"]            =  0x0062,
["TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA"]        =  0x0063,
["TLS_RSA_EXPORT1024_WITH_RC4_56_SHA"]             =  0x0064,
["TLS_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA"]         =  0x0065,
["TLS_DHE_DSS_WITH_RC4_128_SHA"]                   =  0x0066,
["TLS_DHE_RSA_WITH_AES_128_CBC_SHA256"]            =  0x0067,
["TLS_DH_DSS_WITH_AES_256_CBC_SHA256"]             =  0x0068,
["TLS_DH_RSA_WITH_AES_256_CBC_SHA256"]             =  0x0069,
["TLS_DHE_DSS_WITH_AES_256_CBC_SHA256"]            =  0x006A,
["TLS_DHE_RSA_WITH_AES_256_CBC_SHA256"]            =  0x006B,
["TLS_DH_anon_WITH_AES_128_CBC_SHA256"]            =  0x006C,
["TLS_DH_anon_WITH_AES_256_CBC_SHA256"]            =  0x006D,
["TLS_DHE_DSS_WITH_3DES_EDE_CBC_RMD-draft"]       =  0x0072,  --draft-ietf-tls-openpgp-keys-05
["TLS_DHE_DSS_WITH_AES_128_CBC_RMD-draft"]        =  0x0073,  --draft-ietf-tls-openpgp-keys-05
["TLS_DHE_DSS_WITH_AES_256_CBC_RMD-draft"]        =  0x0074,  --draft-ietf-tls-openpgp-keys-05
["TLS_DHE_RSA_WITH_3DES_EDE_CBC_RMD-draft"]       =  0x0077,  --draft-ietf-tls-openpgp-keys-05
["TLS_DHE_RSA_WITH_AES_128_CBC_RMD-draft"]        =  0x0078,  --draft-ietf-tls-openpgp-keys-05
["TLS_DHE_RSA_WITH_AES_256_CBC_RMD-draft"]        =  0x0079,  --draft-ietf-tls-openpgp-keys-05
["TLS_RSA_WITH_3DES_EDE_CBC_RMD-draft"]           =  0x007C,  --draft-ietf-tls-openpgp-keys-05
["TLS_RSA_WITH_AES_128_CBC_RMD-draft"]            =  0x007D,  --draft-ietf-tls-openpgp-keys-05
["TLS_RSA_WITH_AES_256_CBC_RMD-draft"]            =  0x007E,  --draft-ietf-tls-openpgp-keys-05
["TLS_GOSTR341094_WITH_28147_CNT_IMIT-draft"]     =  0x0080,  --draft-chudov-cryptopro-cptls-04
["TLS_GOSTR341001_WITH_28147_CNT_IMIT-draft"]     =  0x0081,  --draft-chudov-cryptopro-cptls-04
["TLS_GOSTR341094_WITH_NULL_GOSTR3411-draft"]     =  0x0082,  --draft-chudov-cryptopro-cptls-04
["TLS_GOSTR341001_WITH_NULL_GOSTR3411-draft"]     =  0x0083,  --draft-chudov-cryptopro-cptls-04
["TLS_RSA_WITH_CAMELLIA_256_CBC_SHA"]              =  0x0084,
["TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA"]           =  0x0085,
["TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA"]           =  0x0086,
["TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA"]          =  0x0087,
["TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA"]          =  0x0088,
["TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA"]          =  0x0089,
["TLS_PSK_WITH_RC4_128_SHA"]                       =  0x008A,
["TLS_PSK_WITH_3DES_EDE_CBC_SHA"]                  =  0x008B,
["TLS_PSK_WITH_AES_128_CBC_SHA"]                   =  0x008C,
["TLS_PSK_WITH_AES_256_CBC_SHA"]                   =  0x008D,
["TLS_DHE_PSK_WITH_RC4_128_SHA"]                   =  0x008E,
["TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA"]              =  0x008F,
["TLS_DHE_PSK_WITH_AES_128_CBC_SHA"]               =  0x0090,
["TLS_DHE_PSK_WITH_AES_256_CBC_SHA"]               =  0x0091,
["TLS_RSA_PSK_WITH_RC4_128_SHA"]                   =  0x0092,
["TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA"]              =  0x0093,
["TLS_RSA_PSK_WITH_AES_128_CBC_SHA"]               =  0x0094,
["TLS_RSA_PSK_WITH_AES_256_CBC_SHA"]               =  0x0095,
["TLS_RSA_WITH_SEED_CBC_SHA"]                      =  0x0096,
["TLS_DH_DSS_WITH_SEED_CBC_SHA"]                   =  0x0097,
["TLS_DH_RSA_WITH_SEED_CBC_SHA"]                   =  0x0098,
["TLS_DHE_DSS_WITH_SEED_CBC_SHA"]                  =  0x0099,
["TLS_DHE_RSA_WITH_SEED_CBC_SHA"]                  =  0x009A,
["TLS_DH_anon_WITH_SEED_CBC_SHA"]                  =  0x009B,
["TLS_RSA_WITH_AES_128_GCM_SHA256"]                =  0x009C,
["TLS_RSA_WITH_AES_256_GCM_SHA384"]                =  0x009D,
["TLS_DHE_RSA_WITH_AES_128_GCM_SHA256"]            =  0x009E,
["TLS_DHE_RSA_WITH_AES_256_GCM_SHA384"]            =  0x009F,
["TLS_DH_RSA_WITH_AES_128_GCM_SHA256"]             =  0x00A0,
["TLS_DH_RSA_WITH_AES_256_GCM_SHA384"]             =  0x00A1,
["TLS_DHE_DSS_WITH_AES_128_GCM_SHA256"]            =  0x00A2,
["TLS_DHE_DSS_WITH_AES_256_GCM_SHA384"]            =  0x00A3,
["TLS_DH_DSS_WITH_AES_128_GCM_SHA256"]             =  0x00A4,
["TLS_DH_DSS_WITH_AES_256_GCM_SHA384"]             =  0x00A5,
["TLS_DH_anon_WITH_AES_128_GCM_SHA256"]            =  0x00A6,
["TLS_DH_anon_WITH_AES_256_GCM_SHA384"]            =  0x00A7,
["TLS_PSK_WITH_AES_128_GCM_SHA256"]                =  0x00A8,
["TLS_PSK_WITH_AES_256_GCM_SHA384"]                =  0x00A9,
["TLS_DHE_PSK_WITH_AES_128_GCM_SHA256"]            =  0x00AA,
["TLS_DHE_PSK_WITH_AES_256_GCM_SHA384"]            =  0x00AB,
["TLS_RSA_PSK_WITH_AES_128_GCM_SHA256"]            =  0x00AC,
["TLS_RSA_PSK_WITH_AES_256_GCM_SHA384"]            =  0x00AD,
["TLS_PSK_WITH_AES_128_CBC_SHA256"]                =  0x00AE,
["TLS_PSK_WITH_AES_256_CBC_SHA384"]                =  0x00AF,
["TLS_PSK_WITH_NULL_SHA256"]                       =  0x00B0,
["TLS_PSK_WITH_NULL_SHA384"]                       =  0x00B1,
["TLS_DHE_PSK_WITH_AES_128_CBC_SHA256"]            =  0x00B2,
["TLS_DHE_PSK_WITH_AES_256_CBC_SHA384"]            =  0x00B3,
["TLS_DHE_PSK_WITH_NULL_SHA256"]                   =  0x00B4,
["TLS_DHE_PSK_WITH_NULL_SHA384"]                   =  0x00B5,
["TLS_RSA_PSK_WITH_AES_128_CBC_SHA256"]            =  0x00B6,
["TLS_RSA_PSK_WITH_AES_256_CBC_SHA384"]            =  0x00B7,
["TLS_RSA_PSK_WITH_NULL_SHA256"]                   =  0x00B8,
["TLS_RSA_PSK_WITH_NULL_SHA384"]                   =  0x00B9,
["TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256"]           =  0x00BA,
["TLS_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256"]        =  0x00BB,
["TLS_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256"]        =  0x00BC,
["TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256"]       =  0x00BD,
["TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"]       =  0x00BE,
["TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256"]       =  0x00BF,
["TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256"]           =  0x00C0,
["TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256"]        =  0x00C1,
["TLS_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256"]        =  0x00C2,
["TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256"]       =  0x00C3,
["TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256"]       =  0x00C4,
["TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256"]       =  0x00C5,
["TLS_ECDH_ECDSA_WITH_NULL_SHA"]                   =  0xC001,
["TLS_ECDH_ECDSA_WITH_RC4_128_SHA"]                =  0xC002,
["TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA"]           =  0xC003,
["TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA"]            =  0xC004,
["TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA"]            =  0xC005,
["TLS_ECDHE_ECDSA_WITH_NULL_SHA"]                  =  0xC006,
["TLS_ECDHE_ECDSA_WITH_RC4_128_SHA"]               =  0xC007,
["TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA"]          =  0xC008,
["TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA"]           =  0xC009,
["TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA"]           =  0xC00A,
["TLS_ECDH_RSA_WITH_NULL_SHA"]                     =  0xC00B,
["TLS_ECDH_RSA_WITH_RC4_128_SHA"]                  =  0xC00C,
["TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA"]             =  0xC00D,
["TLS_ECDH_RSA_WITH_AES_128_CBC_SHA"]              =  0xC00E,
["TLS_ECDH_RSA_WITH_AES_256_CBC_SHA"]              =  0xC00F,
["TLS_ECDHE_RSA_WITH_NULL_SHA"]                    =  0xC010,
["TLS_ECDHE_RSA_WITH_RC4_128_SHA"]                 =  0xC011,
["TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"]            =  0xC012,
["TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"]             =  0xC013,
["TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"]             =  0xC014,
["TLS_ECDH_anon_WITH_NULL_SHA"]                    =  0xC015,
["TLS_ECDH_anon_WITH_RC4_128_SHA"]                 =  0xC016,
["TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA"]            =  0xC017,
["TLS_ECDH_anon_WITH_AES_128_CBC_SHA"]             =  0xC018,
["TLS_ECDH_anon_WITH_AES_256_CBC_SHA"]             =  0xC019,
["TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA"]              =  0xC01A,
["TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA"]          =  0xC01B,
["TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA"]          =  0xC01C,
["TLS_SRP_SHA_WITH_AES_128_CBC_SHA"]               =  0xC01D,
["TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA"]           =  0xC01E,
["TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA"]           =  0xC01F,
["TLS_SRP_SHA_WITH_AES_256_CBC_SHA"]               =  0xC020,
["TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA"]           =  0xC021,
["TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA"]           =  0xC022,
["TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"]        =  0xC023,
["TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"]        =  0xC024,
["TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256"]         =  0xC025,
["TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384"]         =  0xC026,
["TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"]          =  0xC027,
["TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"]          =  0xC028,
["TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256"]           =  0xC029,
["TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384"]           =  0xC02A,
["TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"]        =  0xC02B,
["TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"]        =  0xC02C,
["TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256"]         =  0xC02D,
["TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384"]         =  0xC02E,
["TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"]          =  0xC02F,
["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"]          =  0xC030,
["TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256"]           =  0xC031,
["TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384"]           =  0xC032,
["TLS_ECDHE_PSK_WITH_RC4_128_SHA"]                 =  0xC033,
["TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA"]            =  0xC034,
["TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA"]             =  0xC035,
["TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA"]             =  0xC036,
["TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256"]          =  0xC037,
["TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384"]          =  0xC038,
["TLS_ECDHE_PSK_WITH_NULL_SHA"]                    =  0xC039,
["TLS_ECDHE_PSK_WITH_NULL_SHA256"]                 =  0xC03A,
["TLS_ECDHE_PSK_WITH_NULL_SHA384"]                 =  0xC03B,
["TLS_RSA_WITH_ARIA_128_CBC_SHA256"]               =  0xC03C,
["TLS_RSA_WITH_ARIA_256_CBC_SHA384"]               =  0xC03D,
["TLS_DH_DSS_WITH_ARIA_128_CBC_SHA256"]            =  0xC03E,
["TLS_DH_DSS_WITH_ARIA_256_CBC_SHA384"]            =  0xC03F,
["TLS_DH_RSA_WITH_ARIA_128_CBC_SHA256"]            =  0xC040,
["TLS_DH_RSA_WITH_ARIA_256_CBC_SHA384"]            =  0xC041,
["TLS_DHE_DSS_WITH_ARIA_128_CBC_SHA256"]           =  0xC042,
["TLS_DHE_DSS_WITH_ARIA_256_CBC_SHA384"]           =  0xC043,
["TLS_DHE_RSA_WITH_ARIA_128_CBC_SHA256"]           =  0xC044,
["TLS_DHE_RSA_WITH_ARIA_256_CBC_SHA384"]           =  0xC045,
["TLS_DH_anon_WITH_ARIA_128_CBC_SHA256"]           =  0xC046,
["TLS_DH_anon_WITH_ARIA_256_CBC_SHA384"]           =  0xC047,
["TLS_ECDHE_ECDSA_WITH_ARIA_128_CBC_SHA256"]       =  0xC048,
["TLS_ECDHE_ECDSA_WITH_ARIA_256_CBC_SHA384"]       =  0xC049,
["TLS_ECDH_ECDSA_WITH_ARIA_128_CBC_SHA256"]        =  0xC04A,
["TLS_ECDH_ECDSA_WITH_ARIA_256_CBC_SHA384"]        =  0xC04B,
["TLS_ECDHE_RSA_WITH_ARIA_128_CBC_SHA256"]         =  0xC04C,
["TLS_ECDHE_RSA_WITH_ARIA_256_CBC_SHA384"]         =  0xC04D,
["TLS_ECDH_RSA_WITH_ARIA_128_CBC_SHA256"]          =  0xC04E,
["TLS_ECDH_RSA_WITH_ARIA_256_CBC_SHA384"]          =  0xC04F,
["TLS_RSA_WITH_ARIA_128_GCM_SHA256"]               =  0xC050,
["TLS_RSA_WITH_ARIA_256_GCM_SHA384"]               =  0xC051,
["TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256"]           =  0xC052,
["TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384"]           =  0xC053,
["TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256"]            =  0xC054,
["TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384"]            =  0xC055,
["TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256"]           =  0xC056,
["TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384"]           =  0xC057,
["TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256"]            =  0xC058,
["TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384"]            =  0xC059,
["TLS_DH_anon_WITH_ARIA_128_GCM_SHA256"]           =  0xC05A,
["TLS_DH_anon_WITH_ARIA_256_GCM_SHA384"]           =  0xC05B,
["TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256"]       =  0xC05C,
["TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384"]       =  0xC05D,
["TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256"]        =  0xC05E,
["TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384"]        =  0xC05F,
["TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256"]         =  0xC060,
["TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384"]         =  0xC061,
["TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256"]          =  0xC062,
["TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384"]          =  0xC063,
["TLS_PSK_WITH_ARIA_128_CBC_SHA256"]               =  0xC064,
["TLS_PSK_WITH_ARIA_256_CBC_SHA384"]               =  0xC065,
["TLS_DHE_PSK_WITH_ARIA_128_CBC_SHA256"]           =  0xC066,
["TLS_DHE_PSK_WITH_ARIA_256_CBC_SHA384"]           =  0xC067,
["TLS_RSA_PSK_WITH_ARIA_128_CBC_SHA256"]           =  0xC068,
["TLS_RSA_PSK_WITH_ARIA_256_CBC_SHA384"]           =  0xC069,
["TLS_PSK_WITH_ARIA_128_GCM_SHA256"]               =  0xC06A,
["TLS_PSK_WITH_ARIA_256_GCM_SHA384"]               =  0xC06B,
["TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256"]           =  0xC06C,
["TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384"]           =  0xC06D,
["TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256"]           =  0xC06E,
["TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384"]           =  0xC06F,
["TLS_ECDHE_PSK_WITH_ARIA_128_CBC_SHA256"]         =  0xC070,
["TLS_ECDHE_PSK_WITH_ARIA_256_CBC_SHA384"]         =  0xC071,
["TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"]   =  0xC072,
["TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"]   =  0xC073,
["TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256"]    =  0xC074,
["TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384"]    =  0xC075,
["TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256"]     =  0xC076,
["TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384"]     =  0xC077,
["TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256"]      =  0xC078,
["TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384"]      =  0xC079,
["TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256"]           =  0xC07A,
["TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384"]           =  0xC07B,
["TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC07C,
["TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC07D,
["TLS_DH_RSA_WITH_CAMELLIA_128_GCM_SHA256"]        =  0xC07E,
["TLS_DH_RSA_WITH_CAMELLIA_256_GCM_SHA384"]        =  0xC07F,
["TLS_DHE_DSS_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC080,
["TLS_DHE_DSS_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC081,
["TLS_DH_DSS_WITH_CAMELLIA_128_GCM_SHA256"]        =  0xC082,
["TLS_DH_DSS_WITH_CAMELLIA_256_GCM_SHA384"]        =  0xC083,
["TLS_DH_anon_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC084,
["TLS_DH_anon_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC085,
["TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"]   =  0xC086,
["TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"]   =  0xC087,
["TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256"]    =  0xC088,
["TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384"]    =  0xC089,
["TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256"]     =  0xC08A,
["TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384"]     =  0xC08B,
["TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256"]      =  0xC08C,
["TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384"]      =  0xC08D,
["TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256"]           =  0xC08E,
["TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384"]           =  0xC08F,
["TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC090,
["TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC091,
["TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256"]       =  0xC092,
["TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384"]       =  0xC093,
["TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256"]           =  0xC094,
["TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384"]           =  0xC095,
["TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"]       =  0xC096,
["TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"]       =  0xC097,
["TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256"]       =  0xC098,
["TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384"]       =  0xC099,
["TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256"]     =  0xC09A,
["TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384"]     =  0xC09B,
["TLS_RSA_WITH_AES_128_CCM"]                       =  0xC09C,
["TLS_RSA_WITH_AES_256_CCM"]                       =  0xC09D,
["TLS_DHE_RSA_WITH_AES_128_CCM"]                   =  0xC09E,
["TLS_DHE_RSA_WITH_AES_256_CCM"]                   =  0xC09F,
["TLS_RSA_WITH_AES_128_CCM_8"]                     =  0xC0A0,
["TLS_RSA_WITH_AES_256_CCM_8"]                     =  0xC0A1,
["TLS_DHE_RSA_WITH_AES_128_CCM_8"]                 =  0xC0A2,
["TLS_DHE_RSA_WITH_AES_256_CCM_8"]                 =  0xC0A3,
["TLS_PSK_WITH_AES_128_CCM"]                       =  0xC0A4,
["TLS_PSK_WITH_AES_256_CCM"]                       =  0xC0A5,
["TLS_DHE_PSK_WITH_AES_128_CCM"]                   =  0xC0A6,
["TLS_DHE_PSK_WITH_AES_256_CCM"]                   =  0xC0A7,
["TLS_PSK_WITH_AES_128_CCM_8"]                     =  0xC0A8,
["TLS_PSK_WITH_AES_256_CCM_8"]                     =  0xC0A9,
["TLS_PSK_DHE_WITH_AES_128_CCM_8"]                 =  0xC0AA,
["TLS_PSK_DHE_WITH_AES_256_CCM_8"]                 =  0xC0AB,
["TLS_ECDHE_ECDSA_WITH_AES_128_CCM"]               =  0xC0AC,
["TLS_ECDHE_ECDSA_WITH_AES_256_CCM"]               =  0xC0AD,
["TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8"]             =  0xC0AE,
["TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8"]             =  0xC0AF,
["TLS_ECCPWD_WITH_AES_128_GCM_SHA256"]             =  0xC0B0, -- RFC8492
["TLS_ECCPWD_WITH_AES_256_GCM_SHA384"]             =  0xC0B1, -- RFC8492
["TLS_ECCPWD_WITH_AES_128_CCM_SHA256"]             =  0xC0B2, -- RFC8492
["TLS_ECCPWD_WITH_AES_256_CCM_SHA384"]             =  0xC0B3, -- RFC8492
["TLS_AKE_WITH_NULL_SHA256"]             =  0xC0B4, -- RFC9150
["TLS_AKE_WITH_NULL_SHA384"]             =  0xC0B5, -- RFC9150
["TLS_GOSTR341112_256_WITH_KUZNYECHIK_CTR_OMAC"] =  0xC100, -- RFC9189
["TLS_GOSTR341112_256_WITH_MAGMA_CTR_OMAC"]      =  0xC101, -- RFC9189
["TLS_GOSTR341112_256_WITH_28147_CNT_IMIT"]      =  0xC102, -- RFC9189
["TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_L"]    =  0xC103, -- draft-smyshlyaev-tls13-gost-suites
["TLS_GOSTR341112_256_WITH_MAGMA_MGM_L"]         =  0xC104, -- draft-smyshlyaev-tls13-gost-suites
["TLS_GOSTR341112_256_WITH_KUZNYECHIK_MGM_S"]    =  0xC105, -- draft-smyshlyaev-tls13-gost-suites
["TLS_GOSTR341112_256_WITH_MAGMA_MGM_S"]         =  0xC106, -- draft-smyshlyaev-tls13-gost-suites
["TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256-draft"]    =  0xCC13, -- RFC7905 superseded
["TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256-draft"]  =  0xCC14, -- RFC7905 superseded
["TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256-draft"]      =  0xCC15, -- RFC7905 superseded
["TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256"]    =  0xCCA8,
["TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256"]  =  0xCCA9,
["TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256"]      =  0xCCAA,
["TLS_PSK_WITH_CHACHA20_POLY1305_SHA256"]          =  0xCCAB,
["TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256"]    =  0xCCAC,
["TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256"]      =  0xCCAD,
["TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256"]      =  0xCCAE,
["TLS_ECDHE_PSK_WITH_AES_128_GCM_SHA256"]          = 0xD001, -- RFC 8442
["TLS_ECDHE_PSK_WITH_AES_256_GCM_SHA384"]          = 0xD002, -- RFC 8442
["TLS_ECDHE_PSK_WITH_AES_128_CCM_8_SHA256"]        = 0xD003, -- RFC 8442
["TLS_ECDHE_PSK_WITH_AES_128_CCM_SHA256"]          = 0xD005, -- RFC 8442
["SSL_RSA_FIPS_WITH_DES_CBC_SHA"]                  =  0xFEFE,
["SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA"]             =  0xFEFF,
-- TLSv1.3:
-- "Although TLS 1.3 uses the same cipher suite space as previous versions of
-- TLS, TLS 1.3 cipher suites are defined differently, only specifying the
-- symmetric ciphers, and cannot be used for TLS 1.2.  Similarly, TLS 1.2 and
-- lower cipher suites cannot be used with TLS 1.3."
-- We designate these as AKE (Authenticated Key Exchange) ciphersuites, in
-- order to simplify use of the cipher_info function.
TLS_AKE_WITH_AES_128_GCM_SHA256       = 0x1301,
TLS_AKE_WITH_AES_256_GCM_SHA384       = 0x1302,
TLS_AKE_WITH_CHACHA20_POLY1305_SHA256 = 0x1303,
TLS_AKE_WITH_AES_128_CCM_SHA256       = 0x1304,
TLS_AKE_WITH_AES_128_CCM_8_SHA256     = 0x1305,
TLS_AKE_WITH_SM4_GCM_SM3 = 0x00C6, -- RFC 8998
TLS_AKE_WITH_SM4_CCM_SM3 = 0x00C7, -- RFC 8998
}

-- Default ciphers sent by tls.client_hello for TLSv1.2 or earlier
DEFAULT_TLS12_CIPHERS = {
  "TLS_RSA_WITH_AES_128_CBC_SHA", -- mandatory TLSv1.2
  "TLS_RSA_WITH_3DES_EDE_CBC_SHA", -- mandatory TLSv1.1
  "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA", -- mandatory TLSv1.0
  "TLS_DHE_RSA_WITH_AES_256_CBC_SHA", -- DHE with strong AES
  "TLS_RSA_WITH_RC4_128_MD5", -- Weak and old, but likely supported on old stuff
}
-- Same, but for TLSv1.3
DEFAULT_TLS13_CIPHERS = {
  "TLS_AKE_WITH_AES_128_GCM_SHA256", -- mandatory TLSv1.3
  "TLS_AKE_WITH_AES_256_GCM_SHA384", -- stronger TLSv1.3
  "TLS_AKE_WITH_CHACHA20_POLY1305_SHA256", -- alternate TLSv1.3
}
-- Same, but for handshakes compatible with any TLS version
local DEFAULT_CIPHERS = {
  table.unpack(DEFAULT_TLS13_CIPHERS)
}
for _, c in ipairs(DEFAULT_TLS12_CIPHERS) do
  table.insert(DEFAULT_CIPHERS, c)
end

local function find_key(t, value)
  local found, v = tableaux.contains(t, value)
  return v
end

-- Keep this local to enforce use of the cipher_info function
local cipher_info_cache = {
  -- pre-populate the special cases that break the parser below
  ["TLS_ECDH_anon_NULL_WITH_SHA-draft"] = {
    kex = "ECDH", dh = true, ec = true,
    server_auth = "anon",
    cipher = "NULL",
    hash = "SHA",
    draft = true
  },
  ["TLS_ECMQV_ECDSA_NULL_SHA-draft"] = {
    kex = "ECMQV", ec = true,
    server_auth = "ECDSA",
    cipher = "NULL",
    hash = "SHA",
    draft = true
  },
  ["TLS_ECMQV_ECNRA_NULL_SHA-draft"] = {
    kex = "ECMQV", ec = true,
    server_auth = "ECNRA",
    cipher = "NULL",
    hash = "SHA",
    draft = true
  },
  ["TLS_GOSTR341094_WITH_28147_CNT_IMIT-draft"] = {
    kex = "GOSTR341094",
    server_auth = "GOSTR341094",
    cipher = "GOST28147",
    hash = "IMIT_GOST28147",
    draft = true
  },
  ["TLS_GOSTR341001_WITH_28147_CNT_IMIT-draft"] = {
    kex = "GOSTR341001",
    server_auth = "GOSTR341001",
    cipher = "GOST28147",
    hash = "IMIT_GOST28147",
    draft = true
  },
  ["TLS_GOSTR341094_WITH_NULL_GOSTR3411-draft"] = {
    kex = "GOSTR341094",
    server_auth = "GOSTR341094",
    cipher = "NULL",
    hash = "HMAC_GOSTR3411",
    draft = true
  },
  ["TLS_GOSTR341001_WITH_NULL_GOSTR3411-draft"] = {
    kex = "GOSTR341001",
    server_auth = "GOSTR341001",
    cipher = "NULL",
    hash = "HMAC_GOSTR3411",
    draft = true
  },
}


-- A couple helpers for server_key_exchange parsing
local function unpack_dhparams (blob, pos)
  local p, g, y
  p, g, y, pos = unpack(">s2s2s2", blob, pos)
  return pos, {p=p, g=g, y=y}, #p * 8
end

local function named_group_info (group)
  if group:match("^arbitrary") then
    return "ec"
  end
  local ktype, size = group:match("^(%D+)(%d+)")
  assert(ktype and size, ("Invalid named group: %s"):format(group))
  size = tonumber(size)
  if ktype == "ffdhe" then
    ktype = "dh"
  else
    if group == "ecdh_x25519" or group == "curveSM2" then
      size = 256
    end
    ktype = "ec"
  end
  return ktype, size
end

local function unpack_ecdhparams (blob, pos)
  local eccurvetype
  eccurvetype, pos = unpack("B", blob, pos)
  local ret = {}
  local strength
  if eccurvetype == 1 then
    local p, a, b, base, order, cofactor
    p, a, b, base, order, cofactor, pos = unpack("s1s1s1s1s1s1", blob, pos)
    strength = math.log(order, 2)
    ret.curve_params = {
      ec_curve_type = "explicit_prime",
      prime_p=p, curve={a=a, b=b}, base=base, order=order, cofactor=cofactor
    }
  elseif eccurvetype == 2 then
    local p = {}
    local m, basis
    m, basis, pos = unpack(">I2B", blob, pos)
    if basis == 1 then -- ec_trinomial
      p.k, pos = unpack("s1", blob, pos)
    elseif basis == 2 then -- ec_pentanomial
      p.k1, p.k2, p.k3, pos = unpack("s1s1s1", blob, pos)
    end
    local a, b, base, order, cofactor
    a, b, base, order, cofactor, pos = unpack("s1s1s1s1s1", blob, pos)
    strength = math.log(order, 2)
    ret.curve_params = {
      ec_curve_type = "explicit_char2",
      m=m, basis=basis, field=p, curve={a=a, b=b}, base=base, order=order, cofactor=cofactor
    }
  elseif eccurvetype == 3 then
    local curve
    curve, pos = unpack(">I2", blob, pos)
    ret.curve_params = {
      ec_curve_type = "namedcurve",
      curve = find_key(ELLIPTIC_CURVES, curve)
    }
    local _
    _, strength = named_group_info(ret.curve_params.curve)
  end
  ret.public, pos = unpack("s1", blob, pos)
  return pos, ret, strength
end

local function unpack_signed (blob, pos, protocol)
  if pos > #blob then -- not-signed
    return pos, nil
  end
  local hash_alg, sig_alg, sig
  -- TLSv1.2 changed to allow arbitrary hash and sig algorithms
  if protocol and PROTOCOLS[protocol] >= 0x0303 then
    hash_alg, sig_alg, sig, pos = unpack(">BBs2", blob, pos)
  else
    sig, pos = unpack(">s2", blob, pos)
  end
  return pos, {hash_algorithm=hash_alg, signature_algorithm=sig_alg, signature=sig}
end

--- Get the strength-equivalent RSA key size
--
-- Based on NIST SP800-57 part 1 rev 3
-- @param ktype Key type ("dh", "ec", "rsa", "dsa")
-- @param bits Size of key in bits
-- @return Size in bits of RSA key with equivalent strength
function rsa_equiv (ktype, bits)
  if ktype == "rsa" or ktype == "dsa" or ktype == "dh" then
    return bits
  elseif ktype == "ec" then
    if bits < 160 then
      return 512 -- Possibly down to 0, but details not published
    elseif bits < 224 then
      return 1024
    elseif bits < 256 then
      return 2048
    elseif bits < 384 then
      return 3072
    elseif bits < 512 then
      return 7680
    else -- 512+
      return 15360
    end
  end
  return nil
end

KEX_ALGORITHMS = {}

-- RFC 5246
KEX_ALGORITHMS.NULL = { anon = true }
KEX_ALGORITHMS.DH_anon = {
  anon = true,
  type = "dh",
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {}
    pos, ret.dhparams, ret.strength = unpack_dhparams(blob)
    return ret
  end
}
KEX_ALGORITHMS.DH_anon_EXPORT = {
  anon=true,
  export=true,
  type = "dh",
  server_key_exchange = KEX_ALGORITHMS.DH_anon.server_key_exchange
}
KEX_ALGORITHMS.ECDH_anon = {
  anon=true,
  type = "ec",
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {}
    pos, ret.ecdhparams, ret.strength = unpack_ecdhparams(blob)
    return ret
  end
}
KEX_ALGORITHMS.ECDH_anon_EXPORT = {
  anon=true,
  export=true,
  type = "ec",
  server_key_exchange = KEX_ALGORITHMS.ECDH_anon.server_key_exchange
}

KEX_ALGORITHMS.RSA = {
  pubkey="rsa",
}
-- http://www-archive.mozilla.org/projects/security/pki/nss/ssl/fips-ssl-ciphersuites.html
KEX_ALGORITHMS.RSA_FIPS = KEX_ALGORITHMS.RSA
KEX_ALGORITHMS.RSA_EXPORT = {
  export=true,
  pubkey="rsa",
  type = "rsa",
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {rsa={}}
    ret.rsa.modulus, ret.rsa.exponent, pos = unpack(">s2s2", blob)
    pos, ret.signed = unpack_signed(blob, pos, protocol)
    ret.strength = #ret.rsa.modulus
    return ret
  end
}
KEX_ALGORITHMS.RSA_EXPORT1024 = KEX_ALGORITHMS.RSA_EXPORT
KEX_ALGORITHMS.DHE_RSA={
  pubkey="rsa",
  type = "dh",
  pfs = true,
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {}
    pos, ret.dhparams, ret.strength = unpack_dhparams(blob)
    pos, ret.signed = unpack_signed(blob, pos, protocol)
    return ret
  end
}
KEX_ALGORITHMS.DHE_RSA_EXPORT={
  export=true,
  pubkey="rsa",
  type = "dh",
  pfs = true,
  server_key_exchange = KEX_ALGORITHMS.DHE_RSA.server_key_exchange
}
KEX_ALGORITHMS.DHE_DSS={
  pubkey="dsa",
  type = "dh",
  pfs = true,
  server_key_exchange = KEX_ALGORITHMS.DHE_RSA.server_key_exchange
}
KEX_ALGORITHMS.DHE_DSS_EXPORT={
  export=true,
  pubkey="dsa",
  type = "dh",
  pfs = true,
  server_key_exchange = KEX_ALGORITHMS.DHE_RSA.server_key_exchange
}
KEX_ALGORITHMS.DHE_DSS_EXPORT1024 = KEX_ALGORITHMS.DHE_DSS_EXPORT1024

KEX_ALGORITHMS.DH_DSS={
  pubkey="dh",
}
KEX_ALGORITHMS.DH_DSS_EXPORT={
  export=true,
  pubkey="dh",
}
KEX_ALGORITHMS.DH_RSA={
  pubkey="dh",
}
KEX_ALGORITHMS.DH_RSA_EXPORT={
  export=true,
  pubkey="dh",
}

KEX_ALGORITHMS.ECDHE_RSA={
  pubkey="rsa",
  type = "ec",
  pfs = true,
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {}
    pos, ret.ecdhparams, ret.strength = unpack_ecdhparams(blob)
    pos, ret.signed = unpack_signed(blob, pos, protocol)
    return ret
  end
}
KEX_ALGORITHMS.ECDHE_ECDSA={
  pubkey="ec",
  type = "ec",
  pfs = true,
  server_key_exchange = KEX_ALGORITHMS.ECDHE_RSA.server_key_exchange
}
KEX_ALGORITHMS.ECDH_ECDSA={
  pubkey="ec",
}
KEX_ALGORITHMS.ECDH_RSA={
  pubkey="ec",
}

-- draft-ietf-tls-ecc-00
KEX_ALGORITHMS.ECDH_ECNRA={
  pubkey="ec",
}
KEX_ALGORITHMS.ECMQV_ECDSA={
  pubkey="ec",
  type = "ecmqv",
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {}
    ret.mqvparams, pos = unpack("s1", blob)
    return ret
  end
}
KEX_ALGORITHMS.ECMQV_ECNRA={
  pubkey="ec",
}

-- rfc4279
KEX_ALGORITHMS.PSK = {
  type = "psk",
  server_key_exchange = function (blob, protocol)
    local hint, pos = unpack(">s2", blob)
    return {psk_identity_hint=hint}
  end
}
KEX_ALGORITHMS.RSA_PSK = {
  pubkey="rsa",
  type = "psk",
  server_key_exchange = KEX_ALGORITHMS.PSK.server_key_exchange
}
KEX_ALGORITHMS.DHE_PSK = {
  type = "dh",
  pfs = true,
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {}
    ret.psk_identity_hint, pos = unpack(">s2", blob)
    pos, ret.dhparams, ret.strength = unpack_dhparams(blob, pos)
    return ret
  end
}
--nomenclature change
KEX_ALGORITHMS.PSK_DHE = KEX_ALGORITHMS.DHE_PSK

--rfc5489
KEX_ALGORITHMS.ECDHE_PSK={
  type = "ec",
  pfs = true,
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {}
    ret.psk_identity_hint, pos = unpack(">s2", blob)
    pos, ret.ecdhparams, ret.strength = unpack_ecdhparams(blob, pos)
    return ret
  end
}

-- RFC 5054
KEX_ALGORITHMS.SRP_SHA = {
  type = "srp",
  pfs = true,
  server_key_exchange = function (blob, protocol)
    local pos
    local ret = {srp={}}
    ret.srp.N, ret.srp.g, ret.srp.s, ret.srp.B, pos = unpack(">s2s2s1s2", blob)
    pos, ret.signed = unpack_signed(blob, pos, protocol)
    ret.strength = #ret.srp.N
    return ret
  end
}
KEX_ALGORITHMS.SRP_SHA_DSS = {
  pubkey="dsa",
  type = "srp",
  pfs = true,
  server_key_exchange = KEX_ALGORITHMS.SRP_SHA.server_key_exchange
}
KEX_ALGORITHMS.SRP_SHA_RSA = {
  pubkey="rsa",
  type = "srp",
  pfs = true,
  server_key_exchange = KEX_ALGORITHMS.SRP_SHA.server_key_exchange
}

-- RFC 6101
KEX_ALGORITHMS.FORTEZZA_KEA={}

-- RFC 4491
KEX_ALGORITHMS.GOSTR341001={}
KEX_ALGORITHMS.GOSTR341094={}

-- RFC 2712
KEX_ALGORITHMS.KRB5={}
KEX_ALGORITHMS.KRB5_EXPORT={
  export=true,
}

-- TLSv1.3
KEX_ALGORITHMS.AKE = {
	tls13ok=true,
	tls13only=true,
	pfs=true,
	-- TLSv1.3 swaps the ServerKeyExchange message for the key_share extension.
	-- We'll just pretend that's what this is:
  server_key_exchange = function (blob, protocol)
    local named_group, pos = unpack(">I2", blob)
    stdnse.debug1("named_group = %d", named_group)
    named_group = find_key(ELLIPTIC_CURVES, named_group)
    local gtype, strength = named_group_info(named_group)
    return {
      type = gtype,
      strength = strength,
      ecdhparams={ -- Not always ECC, but reusing structure simplifies things
        curve_params={
          ec_curve_type = "namedcurve",
          curve = named_group,
        }
      }
    }
  end,
}
-- RFC 8492
KEX_ALGORITHMS.ECCPWD = {
	tls13ok=true,
	tls13only=false,
}

local algorithms = {
  ["3DES"] = {s=112, b=64}, --NIST SP 800-57
  CHACHA20 = {s=256, b=128},
  IDEA = {s=128, b=64},
  SEED = {s=128, b=128},
  FORTEZZA = {s=80, b=64},
  DES = {s=56, b=64},
  RC2 = {s=40, b=64},
  DES40 = {s=40, b=64},
  NULL = {s=0},
  CAMELLIA = {b=128},
  ARIA = {b=128},
  AES = {b=128},
  SM4 = {s=128, b=128},
}
--- Get info about a cipher suite
--
--  Returned table has "kex", "cipher", "mode", "size", and
--  "hash" keys, as well as boolean flag "draft". The "draft"
--  flag is only supported for some suites that have different enumeration
--  values in draft versus final RFC.
-- @param c The cipher suite name, e.g. TLS_RSA_WITH_AES_128_GCM_SHA256
-- @return A table of info as described above.
function cipher_info (c)
  local info = cipher_info_cache[c]
  if info then return info end
  local tokens = stringaux.strsplit("_", c)
  local i = 1
  if tokens[i] ~= "TLS" and tokens[i] ~= "SSL" then
    stdnse.debug2("cipher_info: Not a TLS ciphersuite: %s", c)
    return nil
  end
  -- kex, cipher, size, mode, hash
  i = i + 1
  while tokens[i] and tokens[i] ~= "WITH" do
    i = i + 1
  end
  local kex = table.concat(tokens, "_", 2, i-1)
  info = KEX_ALGORITHMS[kex]
  if info then
    info = tableaux.tcopy(info)
    info.kex = kex
  else
    info = {kex = kex}
  end

  if tokens[i] and tokens[i] ~= "WITH" then
    stdnse.debug2("cipher_info: Can't parse (no WITH): %s", c)
    return nil
  end

  -- cipher
  i = i + 1
  local t = tokens[i]
  info.cipher = t
  if t == "3DES" then
    i = i + 1 -- 3DES_EDE
  end

  -- key size
  local tmp = algorithms[t]
  if tmp then
    info.size = tmp.s
    info.block_size = tmp.b
  end
  if info.size == nil then
    i = i + 1
    info.size = tonumber(tokens[i])
  end

  -- stream ciphers don't have a mode
  if info.cipher == "RC4" then
    info.mode = "stream"
  elseif info.cipher == "CHACHA20" then
    i = i + 1
    info.cipher = "CHACHA20-POLY1305"
    info.mode = "stream"
  elseif info.cipher ~= "NULL" then
    i = i + 1
    info.mode = tokens[i]
  end

  -- export key size override
  if info.export and tonumber(tokens[i+1]) then
    i = i + 1
    info.size = tonumber(tokens[i])
  end

  -- Other key size overrides
  if info.cipher == "RC4" then -- RFC 7465 prohibits RC4 in TLS
    info.size = math.min(info.size or 80, 80) -- Equivalently caps to C grade?
  end

  -- hash
  if info.mode == "CCM" then
    info.hash = "SHA256"
  end
  i = i + 1
  if i <= #tokens then
    if tokens[i] == "8" and info.mode == "CCM" then
      info.mode = "CCM_8"
      i = i + 1
    elseif info.export and (tokens[i]):match("^%d+$") then
      info.size = tonumber(tokens[i])
      i = i + 1
    end
    if i <= #tokens then
      local t, w = (tokens[i]):match("(.+)%-([a-z]+)")
      if t then
        if w == "draft" then
          info.draft = true
        end
        -- else "or"
      else
        t = tokens[i]
      end
      info.hash = t
    end
  end

  cipher_info_cache[c] = info
  return info
end

SCSVS = {
["TLS_EMPTY_RENEGOTIATION_INFO_SCSV"]              =  0x00FF, -- rfc5746
["TLS_FALLBACK_SCSV"]                              =  0x5600, -- draft-ietf-tls-downgrade-scsv-00
}

handshake_parse = {
      server_hello = function (buffer, j, msg_end, protocol)
        local b = {}
        -- Parse body.
        b.protocol, b.time, b.random, b.session_id, j = unpack(">I2 I4 c28 s1", buffer, j)
        b.cipher, b.compressor, j = unpack(">I2 B", buffer, j)
        -- Optional extensions for TLS only
        if j < msg_end and protocol ~= "SSLv3" then
          local num_exts
          b["extensions"] = {}
          num_exts, j = unpack(">I2", buffer, j)
          for e = 0, num_exts do
            if j >= msg_end then break end
            local extcode, datalen
            extcode, j = unpack(">I2", buffer, j)
            extcode = find_key(EXTENSIONS, extcode) or extcode
            b["extensions"][extcode], j = unpack(">s2", buffer, j)
          end
        end

        -- Convert to human-readable form.
        b["protocol"] = find_key(PROTOCOLS, b["protocol"])
        b["cipher"] = find_key(CIPHERS, b["cipher"])
        b["compressor"] = find_key(COMPRESSORS, b["compressor"])

        -- RFC 8446: HelloRetryRequest message uses the same structure as the
        -- ServerHello, but with Random set to the special value of the SHA-256
        -- of "HelloRetryRequest"
        if b.protocol == "TLSv1.2" -- TLSv1.3 legacy version
          and b.random == "\xCF\x21\xAD\x74\xE5\x9A\x61\x11\xBE\x1D\x8C\x02\x1E\x65\xB8\x91\xC2\xA2\x11\x16\x7A\xBB\x8C\x5E\x07\x9E\x09\xE2\xC8\xA8\x33\x9C"
          then
          b.helloretry = true
        end

        -- RFC 8446: "the legacy_version field MUST be set to 0x0303,
        -- which is the version number for TLS 1.2"
        if (b.protocol == "TLSv1.2" and b.extensions
            and b.extensions.supported_versions == "\x03\x04") then
          b.protocol = "TLSv1.3"
        end

        return b, j
      end,

      certificate = function (buffer, j, msg_end, protocol)
        local cert_end
        cert_end, j = unpack(">I3", buffer, j)
        cert_end = cert_end + j
        if cert_end > msg_end then
          stdnse.debug2("server_certificate length > handshake body length!")
        end
        local b = {certificates = {}}
        while j < cert_end do
          local cert_len = unpack(">I3", buffer, j)
          if cert_len + 3 + j > cert_end then
            stdnse.debug1("server_certificate parsing error!")
            j = cert_end
            break
          end
          local cert
          cert, j = unpack(">s3", buffer, j)
          -- parse these with sslcert.parse_ssl_certificate
          table.insert(b["certificates"], cert)
        end

        return b, j
      end,

      NewSessionTicket = function (buffer, j, msg_end, protocol)
        -- Need 4 bytes for parsing.
        local have = #buffer - j + 1
        if have < 4 then
          return nil, j, 4
        end

        local b = {}
        -- Parse body.
        b.ticket_lifetime_hint, b.ticket, j = unpack(">I4 s2", buffer, j)

        return b, j
      end,
}

message_parse = {
    alert = function (buffer, j)
      local b = {}
      -- Parse body.
      b.level, b.description, j = unpack("BB", buffer, j)

      -- Convert to human-readable form.
      b["level"] = find_key(TLS_ALERT_LEVELS, b["level"])
      b["description"] = find_key(TLS_ALERT_REGISTRY, b["description"])

      return b, j
    end,

    handshake = function (buffer, j, protocol)
      -- Check for message fragmentation.
      -- Need 4 bytes for message header with length
      local have = #buffer - j + 1
      if have < 4 then
        return nil, j, 4
      end

      -- Parse body.
      local btype, len
      btype, len, j = unpack("B>I3", buffer, j)
      local msg_end = len + j

      -- Convert to human-readable form.
      btype = find_key(TLS_HANDSHAKETYPE_REGISTRY, btype)

      -- Check for message fragmentation.
      -- Need 4 bytes for header plus length of message
      if have < len + 4 then
        return nil, j - 4, len + 4
      end

      local parser = handshake_parse[btype]
      local b
      if parser then
        b, j = parser(buffer, j, msg_end, protocol)
        b.type = btype
      else
        -- TODO: implement other handshake message types
        b = { type = btype }
        stdnse.debug2("Unknown handshake message type: %s", b["type"])
        b.data, j = unpack("c" .. msg_end - j, buffer, j)
      end

      return b, j
    end,

    heartbeat = function (buffer, j)
      local b = {}
      b.type, b.payload, j = unpack(">B s2", buffer, j)
      -- Heartbeat messages are one per record; consume the rest of the record as padding.
      b.padding = buffer:sub(j)
      return b, #buffer + 1
    end,
}


--- Parse a series of TLS messages from a buffer
--@param mbuffer The buffer to parse
--@param mi The index into that buffer to begin parsing
--@param h The TLS/DTLS header. Must contain "type" and "protocol" fields
--@return A table of parsed messages
--@return The position where parsing stopped
function parse_messages (mbuffer, mi, h)
  local messages = {}
  while mi < #mbuffer do
    -- RFC 2246, 6.2.1 "multiple client messages of the same ContentType may
    -- be coalesced into a single TLSPlaintext record"
    local parser = message_parse[h.type]
    if not parser then
      stdnse.debug1("Unknown message type: %s", h["type"])
      break
    end
    local b, need
    b, mi, need = parser(mbuffer, mi, h.protocol)
    if b then
      messages[#messages+1] = b
    elseif need then
      -- Can't finish parsing this message, it'll be left in the fragment
      break
    end
  end

  return messages, mi
end

---
-- Read a SSL/TLS record
-- @param buffer   The read buffer
-- @param i        The position in the buffer to start reading (default: 1)
-- @param fragment Message fragment left over from previous record (nil if none)
-- @return The current position in the buffer
-- @return The record that was read, as a table
-- @return Whether parsing can continue if more data becomes available.
function record_read(buffer, i, fragment)
  i = i or 1

  -- Ensure we have enough data for the header.
  if #buffer - i < TLS_RECORD_HEADER_LENGTH then
    return i, nil, true
  end

  -- Parse header.
  local h = {}
  local typ, proto, rlength, j = unpack(">B I2 I2", buffer, i)
  h.length = rlength
  local name = find_key(TLS_CONTENTTYPE_REGISTRY, typ)
  if name == nil then
    stdnse.debug1("Unknown TLS ContentType: %d", typ)
    return j, nil, false
  end
  h["type"] = name
  name = find_key(PROTOCOLS, proto)
  if name == nil then
    stdnse.debug1("Unknown TLS Protocol: 0x%04x", proto)
    return j, nil, false
  end
  h["protocol"] = name

  -- Ensure we have enough data for the body.
  if #buffer < j + rlength - 1 then
    return i, nil, true
  end

  -- Adjust buffer and length to account for message fragment left over
  -- from last record.
  local mbuffer
  if fragment then
    mbuffer = fragment .. buffer:sub(j, j + rlength)
  else
    mbuffer = buffer:sub(j, j + rlength)
  end

  -- Body
  local mi = 1
  h.body, mi = parse_messages(mbuffer, mi, h)
  if mi < #mbuffer then
    -- Fragmented message
    h.fragment = mbuffer:sub(mi)
  end
  -- Skip to the end of the record. Ignore unparsed bytes.
  -- These should be handled as fragmentation above
  j = j + rlength

  return j, h, true
end

---
-- Get the record version field appropriate for the protocol version
--
-- TLSv1.3 introduced a change in the interpretation of the record version
-- field. Previously, this was an indication of the TLS protocol, but now it is
-- frozen at TLSv1.2.
-- @param proto_version The numeric value of the protocol, e.g. 0x0303 for TLSv1.2
-- @return The numeric value that should be used in the record layer version field
local function legacy_version (proto_version)
  -- TLSv1.2 was the last version where protocol version was negotiated via the
  -- record layer version. Later versions use the supported_versions extension
  return proto_version <= 0x0303 and proto_version or 0x0303
end

function record_version_ok(received_version, proto_version)
  if proto_version == "TLSv1.3" then
    return received_version == "TLSv1.2"
  end
  return proto_version == received_version
end

---
-- Build a SSL/TLS record
-- @param type The type of record ("handshake", "change_cipher_spec", etc.)
-- @param protocol The protocol and version ("SSLv3", "TLSv1.0", etc.)
-- @param b The record body
-- @return The SSL/TLS record as a string
function record_write(type, protocol, b)
  return table.concat({
    -- Set the header as a handshake.
    pack("B", TLS_CONTENTTYPE_REGISTRY[type]),
    -- Set the protocol.
    pack(">I2", legacy_version(PROTOCOLS[protocol])),
    -- Set the length of the header body.
    pack(">s2", b)
  })
end

-- Claim to support common hash and signature algorithm combinations (TLSv1.2 only)
--
local DEFAULT_SIGALGS
do
  local sigalgs = {
    -- most likely signature is rsa, so even use it for weak hashes
    {"md5","rsa"},
    {"sha1","rsa"},
    {"sha224","rsa"},
    -- most likely are sha256 and sha512.
    {"sha256","rsa"},
    {"sha256","dsa"},
    {"sha256","ecdsa"},
    {"sha256","ed25519"},
    {"sha256","ed448"},
    {"sha512","rsa"},
    {"sha512","dsa"},
    {"sha512","ecdsa"},
    {"sha512","ed25519"},
    {"sha512","ed448"},
  }
  DEFAULT_SIGALGS = EXTENSION_HELPERS["signature_algorithms"](sigalgs)
end
-- Equivalent for TLSv1.3 is SignatureScheme
-- We'll offer all the sha256 and sha512 variants, plus a few extra
local DEFAULT_SIGSCHEMES
do
  local sigalgs = {
  "rsa_pkcs1_sha256",
  "rsa_pkcs1_sha512",
  "ecdsa_secp256r1_sha256",
  "ecdsa_secp521r1_sha512",
  "rsa_pss_rsae_sha256",
  "rsa_pss_rsae_sha512",
  "ed25519",
  "ed448",
  "rsa_pss_pss_sha256",
  "rsa_pss_pss_sha512",
  "rsa_pkcs1_sha1",
  "ecdsa_sha1",
  }
  DEFAULT_SIGSCHEMES = EXTENSION_HELPERS["signature_algorithms_13"](sigalgs)
end

---
-- Build a client_hello message
--
-- The options table has the following keys:
-- * <code>"protocol"</code> - The TLS protocol version string for the client_hello. This indicates the highest protocol version supported.
-- * <code>"record_protocol"</code> - The TLS protocol version string for the TLS record. This indicates the lowest protocol version supported.
-- * <code>"ciphers"</code> - a table containing the cipher suite names. Defaults to the NULL cipher
-- * <code>"compressors"</code> - a table containing the compressor names. Default: NULL
-- * <code>"extensions"</code> - a table containing the extension names. Default: no extensions
-- @param t Table of options
-- @return The client_hello record as a string
function client_hello(t)
  local b, ciphers, compressor, compressors, h, len
  t = t or {}

  ----------
  -- Body --
  ----------

  b = {}
  -- Set the protocol.
  local protocol = t["protocol"] or HIGHEST_PROTOCOL
  table.insert(b, pack(">I2 I4",
    legacy_version(PROTOCOLS[protocol]),
    -- Set the random data.
    os.time()
  ))
  local record_proto = t.record_protocol

  -- Set the random data.
  table.insert(b, rand.random_string(28))

  -- Set the session ID.
  local sid = t["session_id"] or ""
  table.insert(b, pack(">s1", sid))

  local eccpwd = false
  local shangmi = false
  -- Cipher suites.
  ciphers = {}
  -- Add specified ciphers.
  for _, cipher in pairs(t.ciphers -- user-specified list
    or (record_proto == "TLSv1.3" and DEFAULT_TLS13_CIPHERS) -- TLSv1.3 only
    or (PROTOCOLS[protocol] < PROTOCOLS["TLSv1.3"] and DEFAULT_TLS12_CIPHERS) -- non-TLSv1.3
    or DEFAULT_CIPHERS) -- combined/compatible handshake
  do
    if type(cipher) == "string" then
      if cipher:match("^TLS_ECCPWD_") then
        -- RFC 8492 has specific requirements
        eccpwd = true
      elseif protocol == "TLSv1.3" and cipher:match("_SM3$") then
        -- RFC 8998 has specific requirements
        shangmi = true
      end
      cipher = CIPHERS[cipher] or SCSVS[cipher]
    end
    if type(cipher) == "number" and cipher >= 0 and cipher <= 0xffff then
      table.insert(ciphers, pack(">I2", cipher))
    else
      stdnse.debug1("Unknown cipher in client_hello: %s", cipher)
    end
  end
  table.insert(b, pack(">s2", table.concat(ciphers)))

  -- Compression methods.
  compressors = {}
  if t["compressors"] ~= nil then
    -- Add specified compressors.
    for _, compressor in pairs(t["compressors"]) do
      if compressor ~= "NULL" then
        table.insert(compressors, pack("B", COMPRESSORS[compressor]))
      end
    end
  end
  -- Always include NULL as last choice
  table.insert(compressors, pack("B", COMPRESSORS["NULL"]))
  table.insert(b, pack("s1", table.concat(compressors)))

  -- TLS extensions
  local proto_ver = PROTOCOLS[protocol]
  if proto_ver and protocol ~= "SSLv3" then
    local extensions = {}
    -- TLSv1.3 requires supported_versions and key_share extensions
    -- OpenSSL also appears to want supported_groups in some cases?
    local need_supported_versions = (proto_ver >= PROTOCOLS["TLSv1.3"])
    local need_key_share = need_supported_versions
    local need_elliptic_curves = need_supported_versions
    -- Do we need to add the signature_algorithms extension?
    local need_sigalg = (proto_ver >= PROTOCOLS["TLSv1.2"])
    -- Add specified extensions.
    if t.extensions then
      for extension, data in pairs(t["extensions"]) do
        if type(extension) == "number" then
          table.insert(extensions, pack(">I2", extension))
        else
          if extension == "signature_algorithms" or extension == "signature_algorithms_13" then
            need_sigalg = false
            if shangmi then
              local sm2sig_sm3 = pack(">I2", SignatureSchemes.sm2sig_sm3)
              if not data:match("^..(..)*" .. sm2sig_sm3) then
                data = pack(">s2", data:sub(3) .. sm2sig_sm3)
              end
            end
          elseif extension == "supported_versions" then
            need_supported_versions = false
          elseif extension == "key_share" then
            need_key_share = false
          elseif extension == "elliptic_curves" then
            need_elliptic_curves = false
            if shangmi then
              -- For now, RFC 8998 is the only one that enforces particular curves
              local curveSM2 = pack(">I2", ELLIPTIC_CURVES.curveSM2)
              if not data:match("^..(..)*" .. curveSM2) then
                data = pack(">s2", data:sub(3) .. curveSM2)
              end
            end
          end
          table.insert(extensions, pack(">I2", EXTENSIONS[extension]))
        end
        table.insert(extensions, pack(">s2", data))
      end
    end
    if need_supported_versions then
      table.insert(extensions, pack(">I2", EXTENSIONS["supported_versions"]))
      -- We'd prefer TLS 1.2 or 1.1, since we've tested our scripts on those.
      table.insert(extensions, pack(">s2", EXTENSION_HELPERS["supported_versions"]({"TLSv1.2", "TLSv1.1", "TLSv1.3", "SSLv3"})))
    end
    if need_sigalg then
      table.insert(extensions, pack(">I2", EXTENSIONS["signature_algorithms"]))
      local data = proto_ver >= PROTOCOLS["TLSv1.3"] and DEFAULT_SIGSCHEMES or DEFAULT_SIGALGS
      if shangmi then
        data = pack(">s2", data:sub(3) .. pack(">I2", SignatureSchemes.sm2sig_sm3))
      end
      table.insert(extensions, pack(">s2", data))
    end
    if need_key_share then
      -- RFC 8446: Clients MAY send an empty client_shares vector in order to request
      -- group selection from the server, at the cost of an additional round trip
      table.insert(extensions, pack(">I2", EXTENSIONS["key_share"]))
      table.insert(extensions, pack(">s2", "\0\0"))
    end
    if need_elliptic_curves then
      local curves = {table.unpack(DEFAULT_ELLIPTIC_CURVES)}
      if shangmi then
        curves[#curves+1] = "curveSM2"
      end
      table.insert(extensions, pack(">I2", EXTENSIONS["elliptic_curves"]))
      table.insert(extensions, pack(">s2", EXTENSION_HELPERS["elliptic_curves"](curves)))
    end
    -- Extensions are optional
    if #extensions ~= 0 then
      table.insert(b, pack(">s2", table.concat(extensions)))
    end
  end

  ------------
  -- Header --
  ------------

  b = table.concat(b)

  h = {}

  -- Set type to ClientHello.
  table.insert(h, pack("B", TLS_HANDSHAKETYPE_REGISTRY["client_hello"]))

  -- Set the length of the body.
  table.insert(h, pack(">s3", b))

  -- Record layer version should be SSLv3 (lowest compatible record version)
  -- But some implementations (OpenSSL) will not finish a handshake that could
  -- be downgraded by a MITM to SSLv3. So we use TLSv1.0 unless the caller
  -- explicitly tries to set SSLv3.0 somewhere (t.record_protocol or
  -- t.protocol)
  if not record_proto then
    record_proto = (t.protocol == "SSLv3") and "SSLv3" or "TLSv1.0"
  elseif record_proto == "TLSv1.3" then
    -- RFC 8446: "MUST be set to 0x0303 for all records generated by a TLS 1.3
    -- implementation other than an initial ClientHello (i.e., one not generated
    -- after a HelloRetryRequest), where it MAY also be 0x0301 for compatibility
    -- purposes.
    record_proto = "TLSv1.2"
  end
  return record_write("handshake", record_proto, table.concat(h))
end

local function read_atleast(s, n)
  local buf = {}
  local count = 0
  while count < n do
    local status, data = s:receive_bytes(n - count)
    if not status then
      return status, data, table.concat(buf)
    end
    buf[#buf+1] = data
    count = count + #data
  end
  return true, table.concat(buf)
end

--- Get an entire record into a buffer
--
--  Caller is responsible for closing the socket if necessary.
-- @param sock The socket to read additional data from
-- @param buffer The string buffer holding any previously-read data
--               (default: "")
-- @param i The position in the buffer where the record should start
--          (default: 1)
-- @return status Socket status
-- @return Buffer containing at least 1 record if status is true
-- @return Error text if there was an error
function record_buffer(sock, buffer, i)
  buffer = buffer or ""
  i = i or 1
  local count = #buffer:sub(i)
  local status, resp, rem
  if count < TLS_RECORD_HEADER_LENGTH then
    status, resp, rem = read_atleast(sock, TLS_RECORD_HEADER_LENGTH - count)
    if not status then
      return false, buffer .. rem, resp
    end
    buffer = buffer .. resp
    count = count + #resp
  end
  -- ContentType, ProtocolVersion, length
  local ctype, pversion, len = unpack(">BI2I2", buffer, i)
  if not TLS_PROTOCOL_VERSIONS[pversion] or not TLS_CONTENTTYPES[ctype] then
    return false, buffer, "Unknown TLS protocol version or content type"
  end
  if count < TLS_RECORD_HEADER_LENGTH + len then
    status, resp = read_atleast(sock, TLS_RECORD_HEADER_LENGTH + len - count)
    if not status then
      return false, buffer, resp
    end
    buffer = buffer .. resp
  end
  return true, buffer
end

-- Get a server_name for use with the TLS Server Name Indication extension.
--
-- This returns the value of the script argument "tls.servername" if given.  Otherwise, it
-- returns the target name of the host parameter.
--
-- @param host Host table as received by the action function
-- @return String of the selected host name
function servername(host)
    local script_arg = stdnse.get_script_args("tls.servername")
    if script_arg then
        return script_arg
    elseif type(host) == "table" then
        return host.targetname
    end
end

local unittest = require "unittest"
if not unittest.testing() then
  return _ENV
end
test_suite = unittest.TestSuite:new()
for name, code in pairs(CIPHERS) do
  test_suite:add_test(unittest.not_nil(cipher_info(name).kex), name .. ".kex")
end
return _ENV;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       gĖp$x!klx_^liqqgrukjehteBԹɡ}^Ut~]e]X]R^҄$ L<Y`oƑ$':w`a$f#w	A`KCYcOj-dNYk×+W/4,SZ
n`7*۪ҪĪU*]pK  5h呕E%FnEsq`17pNFҦzutMtshӴ+pZ}-]񊮚]Wdת-wen8ٌq3	2 Mἷϼc98]שR'ThWR=དྷ-IHEȚ'Auj *T&>PQ}QYQ)Qp%zIr}pk(hܯf35)!ܪVKۀܲيnRLݱUo[D[[-ܶ6k+]&m-m6VֈO;CB[iӴb,-֪eR6*5Y2Y.(YC쎬_/gYV*]N(:7v,ll4+&nX2l522\N2&p%rqmq-_߮d׫5F**X)V$VVi+
g=zYV&u9f
͔SS
]|c}N瀵<?{&ᔒL"(((E
Ԡ)Y*XJ
TT )fpbT
vDшJGrFnlb;[bjjr#<l/3_.'j.}b.M96JX)SVRU4FG|ea-|~SiB..n*"I~\|fTiqc99!#䎠cD[\*gtA3[*t늅v&?"N7g`}eW)1iwSFeBпC.v;؆܈^.}Xw'L󁲒
=
un4kwmʜo>G9:>`.(dcܬ(ٕsgyg[44>_ݮ$#wp7Ag=.lsn|/i;_}&+n=CilCnRF;wFKGrWw9Fhqz&Π]'ޝE2pO8٦[O:F
zh}y=[IM*K^Mi1&2	s.ĿEB0h"y{)cMg#IyXֹVM5 Z̈́6bB͆S桭t0:M&
0[(ĉV2jK{)/JA'Jw
a)t(4vM.;G A^ϷpFE,>Y1GEc't\Ou2_vR1&u5/grLNR'IJ͹igMLUT˽fLohtiqiULNR,4MN.mnkps/0b zg}9qۼ^K9q.ܡ)hs6?&^9MYls5)Rvy=Y6y
lM];>No`SGljR/9g)l1e;L9ʑ&Sl
5:93# t0SWis~A|wfl"5vkҶEaݪOػ4Kcػ
hk~ݯwڻI/Z~ݜwq/Z_+}\>[.s߳{$qtm&ȳVܸ眙w̏ܿfG)g6V֪gyVoݞݞYͺ=AY?jF-RF'fjcs*ty'Y V sAC':cY'vb`3GHeP4	݅ؗ@aP]-Xqqt&TI D2=$<!KC#C[<   ڇ8]+H|ƶAc*=)mɡЅyƛ(A Y3~ENc)0CL6@Xfc7}(UB _Sd$籀8.EqA#I(@9[V#ڋś>8`/IH^:$dI5BUB̚[pLW0\$6@8<y=!XHpdi"RiRVU_b@hBr~OP+Y	$#gZ!N$4A?HkQGT/|fgNל ԑ}`]ܹpaI(KKxT.i>GpЧK6ꨕ~i/RgyBvg.APWʑа^ҏ5S_
(Cm'ڀKd$P]bVw闸J~Bv:+tttt:Y:V:v9mri9ĢLTBQ.tl\L&$$$'HII6&$$\$DAH$dͣYpE#sje,dP" ['n=7ۘu?	 | j
<^SP<!؇RN&L$QRiGt
>zIe9XG(FD0zoծsb7-JTE}͸yE#)fv!Io c#]}ܘ!<D+ِx5dHj,D#\.b2-lB+C[s.y1qArbCK@
Z!~}`/ag2XI.>.X#T,,dJ3J1^8fh%md4D%
Hߝ(!	dD^H')v`qҰBS"0if	16m|syrVfCEkG:09
w|^_?xL\]Zzh\;F   I `4U$|L/P |VC !cA9
 
HV?r>N
Gcxq12}.]w+	$ͧdo8ҥ-!idvB-Bs`&U*5[,H0]MI(Nt_f>2,:L4~Bx$4;>6 0SڛȫѺƸ$1-9oa
"^aN,fNPWB~#mZuU}D77R
>׭z֑@(]R=еمza)vaE}Ǥw,J7v9LT᝔I)l_Q m͏g4m(f֘ߢ$Tk
+(]j
r9qφŷHT|U,G4ĴZ9Ԅ@Z_YOW"J	;MܜxK/	l񿒄 HD? Xl[fiQy-٤-<~/Ql֏Cae3v 1{Ws&$_/E_Ѵ)bHjZ;v \lC%b/vIuA, ehw2443+^=+1XQ{d*6mȲ=.c;kzÐ[q
Buv@gv+^Z#ԣTģ[֬u6ߒAM&a ރ+	z8oXE@&h\ˊ!&M).Kَ]֎SQn>vF48t72"ݺ7[_́bP;{Uu8By+$/3`.3Bha|V Ʉ@M;:*׷s4%X{{rYP,:]|)YE.
cL
brw'!p$O׳EM: W&בD3rH 1Ha `IVmo_$Z%wjWW̋uj/|?ʿ~p-_K[寫Cz[aqQ
#Y4vÚ9ClnmUY^)у%<tFZ:y.U9m>`;pCI/{۠a5+|
v7,7{_u2tsf+Y.R7«T%%`;K؆4yp}S}	3Xo27Kuٮ0pRk7H3I2'%.pS&;0g{?t'BW9Ħ/"ej,iěywA~Goe1mD2eD깄4[))%&R/a
-[a|XW!B-Xs݈=^`:4CO)))PbEdptȗ.;=z_խ̟(ϐؾSrǺxhH"l
M&8â[9XrI{\F+=aٜP&S<oϐO)b2 WeyZڣMyzeq89/`4)lOƠzKys/.昬8okbx4}asv>3.={{xF0aX{;yyԧX2HZ,X;hMl)O"dуb&Ƿ,,䖉#FMps#	MA9Lg	Xw&2puddu`V٢,\O`sO$Ţxiww܊(g;yA",y:Iu
Ƽ:	/23WڼEL5I-s^&ZLB"[k̵'n=Ijʅ.I}hJۅя
yOu>=m	$>UKY;j@k
N\tA*\q.4S8=%q_n4qc^f<&2(wG[T|7
R*R
1kbK^WA4Ua֯}*m	.HEɸG%tWJXppQN7MW;|("ZA0	$?!IF}o8[
F,s`d-޾q@JH5뫹)u#L<$X9zGv>w2<FIYn4%{z'Ė4AX4b725"}v (	-#ۺ(!I4M* SEm/ؿ=F@LQ_NC>DgR_ˣRgUҩaKdHˍWJ#(
Q̩Oٺ%.`V\z,X^߈2Jw`$-#In[gSp!py;˱Y1Z~'%63?ϟe6Aa6asm  @4q[$|W&=s,^H
K?qr:Xm~!{Ŷef֔x#j6SO$~3yW,ʩ'ӧbs4x!oQ>^ZR742}F%M#]m;jgP㜣côsuiu 8άm~;ra "Ά{4a}=;6C6Ёuo{nA+B1?Dpݏ/:<=۹eSjTr0dUܜJ"yϖ^_( y&kUB9tJCEr>ԽjxLvKę+΄pը8E(ތ-{&?7.ro$anuk)*ڴ:yqf<͛0cR~Mo6~PPO)@WգliI3h(_H
dM8V;)A+;],,̖}/"{:rѾ
}gR}̸ݗX ,N'J||
{kμ} w,38}-qyt7l(qª2t,wTaB;%]Ǆ޷\''1A5޳ДVu3ңsLfsW05ֵ7<L2Y
|M`ULxQ|_8'w`3bƉ+ilM,ʦQ
،ږM7f%}.F Uۢ̌etx]̈(o6e!?#׵ȸ}T	xfj`y6+y}L.c1)FnlvRyV\slGI/z+Hyao`
ٓ@@BS
^SOʛQ$bnluOUC9E+L4K{32eNocO0IųF9+yk
`]+5}fiw|oe4IO\ *gg` 9s(#tߖ-!aBG .#>qd@ߧ7L.T]:d&F4af>dQ>0"A?{Ó~xԟN4'H[|nŷ
Ksh}+ DfcKO}p4}aqc1a=B&O
(ʘx/LD>[KJSY42`ۇ!P=E':4
C2
#nn3UO/\տ#K,],"{E#qvq/a.8&hhOQ6F*m Ճ۷hA\P>x6jw(o8!xYlb->f~Dm1,u'F-(trHUHuPqjZGwp[έdMK=Ǟ->̷iIgFb]iO7yJ^nirq-Y<5Hp6/떉s6cboYl<flVe52n䃐Xc.&;?I/+ayG,.f*tZ
Ã6O)VxM;)~<Pn gtPhzii6ρ&|3nvH?1VdY,ʡJJ3hBWfi_,6k*jbN-V_X^#iq^w2.uxIYs/srd.}y	
z awX`QW9vDaxL .Ѫ<7eE%т#늶X3("amˌ_bXlҎ`;oB֖wicr~R8Mr_rHK1[F>	qjZq/ŭ$8(}iSfn԰KMDkV=ୁmcʡh`3=@QA'"M#
nd-?s'#ʹHdhӘ`Fc@BF(GmjhpuC._/.n-l\.xOM&CA(0&nd^(}+
A}bmXmoG|='"{ ".۸>ָEŀSEjV	@<h ^HTtg-.7h`"XXڦ=ѳۢWg,rg#u5-16
:v
P5^cF&yϖ	*42CTJB[d.;#"-410=JʰkKvC]#BtAy!q->I0]ap7<΂Sdװk/Z!yQXLR=A_]Ln]ʓ6v>inQtAgg\aӻ'uu<8i@%"_QS`}oNėl.IkC<2/m%D/ ۆy'VduOs4Vwҝ~7v:>3f,ANvR,`eP8"yGlbK{2BmYrڈv(6'СRd&%:@/aPT$}<+)lD%ld	gmݍ0ހи;&/VP1m4nHi	φNAղS|\Ԑz+m
Qˡs\!G^Q=]zV&	7b.
XoI!Юg]Ӹ(?%) mRQ'>wn䠇 .ﴚpR
epR0agkS|#N*M9`"ʶp|+f<=F[dQ
;3Y7&}o(3.6cg,g1K1mb ^L0,KEu\ݰg\9L^|"`x0=oMN-V!%yؑ,Q	dx(;@Ht<o+Hs(bĭ	)eGifnduTE~yoݶ00;kC4'H7;<\`(kf4i+UHP/mQ !7|{ְnExAω`Xx8p"|mP,=1.tqUH6=?#0/.%$pS_(!^Naҭ`<9/vYSYcPxe`7=:gY܂YVA+;V.Y=F1މ`ERAnZ#݄nvNC^GVMD;9IۼZ֘M=ЩfL Me9
 Fs
yǪH#dv4,|؆a;~4PuΟL(Nt%0~'CAxRHn5 ~РUd$ZOU(v-Jwvߜ\]FУԒՉWh㾉ҧК;/d굤`XUN7K 6,,8kb>t2a!AݏU6o)7sw:+RE
A`c
H?tgs)@8}ZPq1@j_`q)bV56:$h6&LO8SSYeoǢ$A`.nNa\+ۭYR2$B\Z(3_3@O9(']_:ޟ"MHwR@Gצ!SM	#!<yr+2F	OLT>WӶۊ 8VW_KE2
l
 /'v)1>ݛ0 эl띡Bmɿjo>]`|Iojvؙ#iei}3Ӝ~0M0wokJ\W'*K5,^ێCEĄMLCX4GC&<K;թ@[aIڱ= @m<*bd]$8d.N[>tF]i lUb5Ab?tOWX3F4넬n!mSh%`Ʌц?9Ͳ51=v/l< Vv5W{;:#E@ꜘzɇm$wj
lކ7JČemMzFd̻~d#Yw,H9qh7/fYL|<hϱ;/:t;4њue=?n7Y~AHPMMO]3Q,zd#sNb~{i46j$mFlFpY֢}cIu ,%
x0
l"6_ 'Ձʏ#@Jh~hzpAkdAÙ_#-#S`W
CS}Ǟ<>Uo,~%ԓ^zjX64%3m6yC'XC|ѫO1#aW1wRJXKJ8ð^3$\
9;̪W;YF-#"os w#a*ۇ7栎}чWPlsGM,HPv
r@O~Pqo1)͒4oy&`9"%&7"O;3k'AvVh_
o8*e؝;YwUbiiL1<0c0jLhag7vi[ְCU^%BQQ^h5kAKLl	xvK ͋eû1y_x,qT#6f$a'UJF9y1Q,AMIc%/2y騑Z
)[eO5#߯bǞl{_ ZgBW	j
P>N5HȌx(<X5K
/l@g'5d}t}=o#>]
!jX<aѿ[M7r/\sZ09d>p/؈Rd
'XֈDNeD֭}*n)ݶҤ_h"\c:$:hRMrF䨁#K6&xV$
İXvW2Xm+AƁ3=EUդnt1%|Vӑo~i"'8hzكU?m߱RPBL5jH=|JP92> ≮qXͲ4MHpA!*v+QP.Y,0#>>?Az<9b0)OpNNpgZ)sʩtOAID(݊KQ)"+c"9QD#	iԝQ]x2
!QuPocJˏ"ۨɛ@ѻ<$ M3!?d
Ja-ܿݴ$K2GC8c\VEuGXޏx*^!'!D衄:ɫKt@O6oCʒK"26OX	LBB; S590ada#Ciƴ>O(g{}1}A&~?]|D8X!©E9ߜ{~L|ٛf\JѪ5.0Gf?[фNn)F/!d٨197
ǉ-Hӱ6!L#!(>)fia	TƅjܽA~6B;ԫ*CKefwhgp(N.{SIL`!Wޔb!#Bt6)8Ҟy۔s-qunL\˲T75^AjHwWsjG7&n^8AjNأ/n*$ҍ~n>j	sT|eݘi%|A5_az-gh[b>{.8_:7AgAc=q)p;som8umǃzmF9P+fЃk
B[Aʀ6ݞѣ\A=ZU>-	D/㑣]9Y9u	}Њ|=!u8Zo"U_()k F>Z7}?Bˇ^agf_ޜ6NVP|p8ZM2[&S<D(IU</`_-ŔID%h1oO{ۧw['yh(1q>2OvN:'.׷b~:-P!L\vWKoJn,EvdoH6q*G%EmMH\(C',sZ:K	Mn}rkNw+ҍ?0 Ѝim1ʢy{&5nZQ2Vt?y 4XAٺheMB>i&rx~mrk3s­t*em5G;U7}UbzӴt(G,\dV_
C2}߽p=ǊҖ)\!{v{E
ěmMu߯~uz~iL3~MG|b=P+eM7~(k~Szބ]f)ܞr6FڊXNw@2F/ή/?9{|rs_IkAA@q[c=.FZYy֍}ZPSBdok"gzYb$&V>$:TLRɢ%N0SP9 ]]ǉ[~Ȑ6d}A#S`$Lʸ6{#n̛(42<AAĆm/+cueg5,+C!BVTB-Bt.(
No_\YC K
yIb
/}d`3{Dxߧ(( A$ey3Mj9T8Х:	)+SMM'sD҆|8 hpNmMUF*?Y8)'`Bۑ@L)aFG{x<B;@d#P^6x?,d=!2S:;tl;ogK
'
l#
!!appJ"tAoJ0J0`P90XHL  4yt6M79e:u;nZvm/zաZP0lZt
O~( Ip	<N< ~x `FpF$vYK!FoEp)D7}y,CQ |(6Fn(Zp
B\EG֖g}_@ϔ&Ӻ<᧋єm /B;1^)$PǅDO=<	qDGMR֭t'EE!4޹B0F8JJvF4c "M:W/+
4Z
:U;N3x"ү<\x_"YWE58ncsq.nԅuep`T)NDpާ9jw,
t6e&rΑTx7U13.<F4`Ypsbح- `8^}3#N|~Ld-\{4EYo4
,@=~f4%'e"fcܚ:q.L`w}>~̈́5M3?<>FlF8nGP<KGN}zYsQbesU5{k8`l]9>}nV#{1JD\zjc )DHK϶k[;wQv˶8F  |1uV+vӉ+QkلTs
$m9Em `-N20v<1scC
<lh#*L6qW1 X'A
*oPALv̵p' d|Xh&ǁo"hvrQ) l%
"5
|8Pj)Kz3E(FO#_  }b#Q`j0w(jH5FM#S$ D=	Tbe0
ΤR5[
'Ey6H{A7aa!6[2E#m^CMf;	QÑbZD!t-^*@== E5*OP(VL%%JM"4qi8W7GΏ?N~t
?<pD$BH hH¦V-RWYV"(H;0鸷˖% w#K"GD6bEp?ZótlFUH$HIhbȢ.<gڋ,TE*rĽ0pS"rA6/%f.l}PKs`NFȓ#gФS	ʓF-PƆ!6^<ARÌR:.p8O}ք1f"V-؀@@gBsFLΊM@^VVZM [\{HA=T؎[cwۃ,lۃs9霚J`^9[PXżʺJ
}6P3cs2h@IPZ(Qi )YRjU1YEZbZi3'E!*tG֟4অW8@OXiݸhD.t&.wk˩G;W!>~>rb|	bp>F4ۍ3fYs]ldu6Սv~}Ms}
=Rzh+\&o7.Ӎ \줣۸#C)!GH	CG|ʙ.ogHf2޴U$է6^PAvx58]k
}158/>^^Lkd<1r6ocю)=q"n"pxUw|!F郷}]wQgeݳnͧ|F=(@7d_SpOpxSpT76q7æ1%v/G%"àt'-G-:Dqgiju=a<UtN7?&=qߴҸkD=&9HS;rدEMw"ik.۹&Qvz{{	 ΐ^|Vwv6Q(@d9()mD(?kŪ3Aelҵ9_ע*)btysGm܋rֻŢt`
Vfl[JHH1{DŴt{og
C+ոCdۖZٍ(kSV2fXq=lU[iP7V1$NNJ3Yqگnr^pw-TzQvc/dmmm2fL(-FтsBZl
.Yڍ}3v۳aa-OTwZfۧT}זK{ܺi*O-')io?-~}tkiK!ws	{oK=fv~mmEes2A里hv&$Gۇ!M__=\Ao^b+Y<&
ng/:"P<n|Ec;_짉;e0`֓n_ܼJ`ܼmWDL5 ^/jt{.	^_6?Tx&֠J (NktSq"yIƺc9DZ|'E;WA<9'/U|tR\*z9⹈c;epFԃGp]딵b-O}re;HsCSFtO̤6EXc,˿H^Nl9%]ҲP+z9[׹->
K5e|O!&}çu<e]Fǲg Hd­3AZSz^\AoB։׌>B(#lܷq)[xոIL}xuO}qSz,^'>Gxş4]4iCnLCnǗ\CYZCn{萛?CnӐFJ)=HJ:xViԧZslo۸̶Ir)xF](6xLY>fuD]Q$^DhTܵs(|HB>BCV-OxJNJ\m4Im^䞍r} "DKHL~>[qR3ABK6&Lp#qsXK{<s~z>*Gɥi^O˲ֵuZILs9;oqG^}_7򦟠Cz3S?t#w3AN}[-OKuJo|S&ݵzbL:"[N_C)	]Sj-e̠RCmq{#ǔ'[޺	h R62g:J1!<弯AIR( J94Qok&cmGdseūqXu{-矽횱/\?Z_.Äζ{WldW\Ϗ@oţFܷ@$ڹӴ쾭sƲ!'I :`(jzrobpi79Q~˰_տ>Ѽrl/EHmMʐMH/ٜyPƷͯ	m5˹$Mv' L4zƠ3x\89.1}(\Z˒#VDfW(@8NYwqt|OX5R<pa\a^];ήż^w[X$s@MYnKh-f3Z4{CgoF)%9_K^eI\ŠDy_6Id=+%|u*Hr,t`Z̻yD6
'qdyGB.(g3-Tr6ރ\g ZuC 7 j*bɧe[ZL{n-dvM.ʀye|'¸}yAM5쮭4`y"o7ūp8T%%ͯ6>:4?
ޘqQPOJTae7s<i?;	g01OGV}ڱ1"
KR5x_\~)7iq2mbv7m̧ƙOCH7]tWݸoq~,tdsGp83f="*F'ecd<_+q'h|>m5"`_9Eۛɦvn,	)N*_?
kkE 됃΁ 	@E2L/H9^zEZQ0Eλ#A.1ιWX!(H ./0
M8@
ǋ/@bE'N
!VA<œI.0B .;HN%&k|V wYgqA]ΈElu㝎Q1@Q֔Jc@G d[d_< Rι@vBe^[c+#jc(aG*3n쬈<	kBb^Ʋb%l( P%]ں
7Q7RdJ66`v!ck,,O []`NDjwtg\KTKIY+fDop)6Wɲ ëV4e*ˊT8izXb7[^z؆mASa+ ]0 pC
;ryX%6Uŉ
66օ%m
]z3
`ޒ.0\y`38*#[
0[lEISC:֧3[)>JOa[<X7!tѢkJdEl3W<Ou}$1Ri_5OhHT%H.3EPwaj|J38ZbٱU,6NS6't:7"츝
>=ӓqyFmSȧ')L@<ByBJ*$HA:HN].GŢW2	*H($=36HhQ秝%;R^dW11NHOcǾĢ԰#]`PeS'5k	Y#05#֊n8ZL$S_Q;
AFfMÖ\L.0HbIZRL0Rj.kiC5eQƦG1챌:v\=!adGlR&^^R;jGUQ[JffYB&XkO-3f\KK$D4tbzds'.TE%
UèRXXFu.MȾl0_8x}` P֊bKG҉N6ƽHH=<\]KT]FFPɢKD-1.qtj}Em/,5YuȂJVUvEŸM]`1.4GԶ\J,JƱNN|*&sfdmWXkJAEɾl0ǕJ6.Ehd$	Y$,nWBn,We4FdcQaｾg~
3˓%t׽0X$KJP˅&\yM4.Z"[W`ח<,?|xm\%~d_P*Y|p1{[W".^o8e߿A8qSίytvfS+#}|pŬnE?:\_Y|trWފώŋCl7J/k2΃?4"FZ?.nPpaV7.Ɛ1nlb\povѐ\̃k?o=>Z|m֋F>u+S
ޭls (|8e9::'S[s+g_[]X߈X͡'>$p%|f=5~ϗS|<;j\+s'2Ki},t5_{0/='H+|ٍd`Je']wU&9y y`eC+UUG\{b?e<]xu3()K&`b.abr:YSI ?0KI⦋^ܺhC~I:^nJB.a6=#ÆK`k^plYh;NzZx<Ty8h:c@=*/Tk%f7~`^욭5P)vf92\faiol|to{[.|SsZ¥u?cmT1GY5y[y>[϶wʀ(7-'\r	ĳpFZ5
ɶw*(z>E+ i4hЛ@L/%K;Ow7=U٪t֋=UoʺUr|Y?%=WtnzM.i=_'~hQJ;+ё`ZgGO']_.&&Tײ,"ln<I-ї$Jԋ!ޭ;۟X	z vM2D;[bwI^9mù7--kd 噦1Dn3Y=Mw^O5HzIv?|>`Y>eMĭ;|"һuN}4p9,5`3Y
kt<_hq97EK>{گ?~Wq+J==JBͫ%}$qI1C4?rzz{OMi]}qG	`o$DAk]@?:>mO3	Zq!SqD_}݋X(w<JK`(D:-e9vQ_ w H xSz;HnK![)x7Y|ߍQpU1N7~3Nv^VNXWFffe[
;XV͛%ݸ֐磜<2U<fs7YfMVUaU7%*nλ&A 6Q>/q}O-7ӏ3._<Ӎg16n</ѼYYOvQ]vYM7%BANGyЎ[BGnڭs.WLsDP|Foc:-cfWGA.[z ^ö́%rkYjqrN*?ws!s^A52L2GX8II`p`Y(AFƛC>A	EWST*L
~{_J(=0wPyIHTP!;=3/ʐ!x dZߒ1!iDS+VqBdD/ҁ<ՙ#9p=N!}LyI(T~ѩHlu$u"Ĥ&1Ά)Bߡ;3,fFWD0år
$i"4K­EEm DE1@Fn
 >b Mp¾!
@ ʀej,0.%ٚ1P/?oL <rӞ
Z,"+Tx0.oN9@Ef s*1l,&y@&e.T='%öD;@@H"ud|
3L7nz
ɕ_ 5 Jpq	p"@x7	.e04aD_'kNҥnGN{j$jY%dCI t4!8t{H	[4XxpZj`)%_ }@KP*SRd4dH֥, Dp#7: q:qpY6mذ!ICVbɝ#2$a@E6oc׎=p->l)XMH8f> GPYd)F^/VEM*h:K%F¨Y~PFKai
J v!\<DeTz.(&y%r\I{H>v\ZJx">+!	M-
O:A62N&W>N5m2 c[0NX4s&sPMHD:7$
0M3<d*X@bU_BK!
CtLY0(Z[,BD)Q"NwmYƳp <	cp5ԨfAc&

@be@/2 ʝ`SHG2$ 
 Ot]yAr30E͌ktfR4=LbNb/,{	\;y	m ʁn Z2$M3`SBn`N KlhX*&s	8a#!((uKp<	4,aqGVsH}e^=פy]`X3'N85bzvaS<`$&(,ٗ
Fe@aseXlY
f^V12)5+F(vEY8FŪׯ鴋4*$nq	uJ+*\xj#7lb$ r$d(7&Xff5H7eX0) 8`PZGɤb2[Ⲁ><C1\ 8Eӛ8ć),3]%pf6*'W@ 't+` 	Z;N"L*b@,xr6"!Ly)"".BNd#;:EɿCT.Jl
ZrG_7fan]:@TR2^P~Mo	92JBB	OB0[H5څȑ$2(gi☌$ yU-`H,j ݪ{P="th)hI	qxFqd1">l ŵ`@W)) ˢ
P eZ*"7?$ "q	r$&/ucVrvϊ!?A(l07|e;YcAq6@\eQPp	Hň)ǡBSp8~3rdq
JaXNQIe8@0Ǉc@
;F[wZvXV?uFPJ2(BCb,
qQ "d,nzqđG8d謎08*j)f^A`y9Sc7)cwKA\`ˇC  ['40Ԁl8ۊ+'2t=$*T6
`@FX  0ȖSe:҇b@cE^2XuM`W(`|e^vT˨v4[v}Eb<d_)55%b|*&V]:QnaR:fSǨdQ~
늮h:^m0"QDhW7
hWGFƤXnGשWԎnU^3Y~kye:c̳3jV=1s+մrfQM1g,gK6RW/zuSOgKJu7nΘFŮe-+,JFaS;ºº2),壋lvNǊaqh-Fd_]fc;y_bf+r<º8UQF8,ʱ>WkY˸=&ӱ1~q{M%^jg8IeE;3j8*&]U#V
KˉUOe9cXVu5#jA57fpg=3fLYqYǈWS3lŭ'ǲbJƢI0	>n0gM_>4+@A+ذ5}M+e obr< <ka2p8}K= XZF!Sf$9?Øe!IUMOpANLŒK@HiIyr}y_vXyB%?3$II v$ܬ=9J?R J K5W8yP4jךl@lDkL 
.aӵ$@#(:f"[#xҤY,c^%4񸙀80 k>}Yc]5x_#6"Eז%'3ĥPk@
H"j6jueAjF ITT`ɓH2$)ιg[8_tp>b.@ǹNDlP;*"::KJr>Aޤ(^p,,8tp8zq޽2T;yG0|ssMP@(&ԨdF5  `P("A$9$i M~B(6f$$aAH    @!F s
8,]$,h<h"1Ձ-cV,yg&YX 0i՜hSm#G(#͑yrr9Os^VQ]K[;00׳}uˑTe!'͖D}je:u9,Lb0i	`DKl[ag*|мtHڄP01/
5Uhאؤ^;C<Ndjh`:/C/?+N4>gaD#Agثv)?fr)om.)̈Ig}wU%7Aʞ)e>ZvGܚ[
Ig_Gզ"-`CM:c?I y Wh&f

Z.Y
WDv3!{lÊu(HySRέ׾~qgwlXtoqvr .u%5hӲVnd26v|+v4xڤ׻5hgxJ+[ښL@㦜n?Ͼ%/=}Yy,dsԆcb\^ul?V(-aı'[fc>&x^@ۦ䛊<]Sup[7KHi0-"N\Eb8&=dp	6j$XnhM>l>7ܭa5ZD[`[1Wҟ>m52{='촌ZډP:R}x8~դ{[|ѯjZ&a6g3\[iYݸ߅.'zhB<\OraarC4?
_lNjEubDv/ݡᶎ0kC$y-Z	ըR2V	 .}Q3qI.+}=טb[gRo],6&0swJ=Vm
ÙQ"Ho+>f~Qc]!p&0ϊov]у\\yu2(4y8wDmÜ߾|BZH/+WY+T;m˷G|a(/ opB+lgE-5]ixLV`!L&odK>m4qĲiyZ&k2ѷY?g\\Yݹz,Z72w4~+7829,ϴ+,M bBkv*剻m>[Ce! LZ[+¬;/\2̂StlVD?Ĝ*,}@V+>Wu -eV橓NN8Ӯ_qțYʏ}9[T
[4V&~F/hQKsXq.WC*BT{ЛޛI-L${13Nu=e3(\E3תWq@k\0io뚬!HY&rۑQʖλpnjZC5
`nHpJpz͞(@|1aG./
f[ui2YVj^q4!]-ZGg8@d)^,RA5"(_DW'pﲅ}Qe2Wzx^uCd+k_<|`|p^cC?cV=h>d?GMOeiAٯ2~ڟ!RB\?ƹ^R-h
$L$[Ϝ=5Y[sߏC#tuߵG=޷7y_s}(="}ri7KZ"?+,ݢ
{@;mm-m
d:
0++f/j;l}5cj.8YbP31k,3ykyqaF\52̀q)叨FdqAY}_a~9e~m),kvFE0= ޙ왍gL}$.&#џ}TRM0m%bFgJ2g~S§|CR\p+ST3V3¬ykX8ufF]s3biĔx?LPqpa!'#]i~׼n"!6|~Ե_p?Lr(1Ǎ6fڂvԼ.kȯ
B
5L6˓U
Wam[KcV;^H~b,\WxOU;VyXh>AlxKq0Ow
ookxIB{ÅRZwc{j2r<vZ!q&{S'hgIgXڝtuG&	g``Ȱ\8Uouά=WD{&A(I[r3LqiLWi m2X6`fB*/ӦxY#%ho(fLыMAer8 iϽE&("/JhqV6~qd9w=y()F^*m9DV8P&"U|iotoD0[VaXa.0'珔+Y(qa vw"J6ŚMB jCxL3Ѣ%Q`xM&IX[&;9tw,ݮޅfy-N]X<yW`Ɖ!~o-%J:֒ݛg;/&\Hyu}湝|#EU$K-T]
Ǩat_6ϡ)Izkm wv9pYF2seU~avUˊmWgaXoS΅N92K~~y-Sf}M~w!CQHsXp+û A愘lkXKBW$YuV7Sd)\
~,~EV61-e#&mr@쭞a]}ubJF{Jcac-r5
B.5>٨NJzjuZtU
yjwPJP&upn=.'(0|eifSq;9N|9cC^qz	I999(3SVX₭8VծmVm1P.-⴪ 2:2;|:yCP"5Lnw
`5O=b.F|5*w
V.=:hFqXt;CLؽEɂUۖ0	d;to)DOVV9g-q$Hh?t5X|{ȸPbdBkKsh8zWN'+u_rPp="6u07PSQ<!p7m/lV+
r#؃[~ĒUh-p
Y,o]T!;9xod9NΤC]G~EQ~;޾$4}X/<(̠{5tBy j%͈EBPH
1)B'hT[Y!%c|箑rt']|dHD~pMQ9um	>Q"3F^vmj-o[D_NI<sfڒOj>wx`*ji5aͳʭCYNq5ExQ%1I7ؙ=eS%gB_RU2dUa=(< PXA)W;gjU+1IS%uh̀0mK(3[jA=t\:
dV`m<9j P/ҝZK{R<P+ٟUkY0Aҹago'9y[hQt
Fo	)0j?6Zg&WٸPĨQ*;)|YCu(b7_!P+gE^ Y h"䢱wv4!qC_)
m>I.wՏﷹϩLI
]}O<QեCiJ9SUAHs݆;[nk/i/hUO'Kۈ|Q aб^۰LHZ|t۝,1ogs-Ԧ-S-W(b7w.9.QA%ְ?ehe(SY>|ſB-Kr#seV1#IٹM!.|N߈(d`xU8zhwƬj0nM$zYxCk#eNJ=z,oHǶҲV/
s|a >0ݝyUgwƯ2s9Sf13Yǳи[WT7U>A(ҪF^]-/o,iETHR(q=$F.f6!p(llޙ><4	mz #'kgP']#z4_zs+oB.X1	#,Ovx};¼CsH8V<P٠sThtyX`ykΠ=
#/'I\Ju{.S=8KhSl7o nDXu=NoѢdť:]Ϝ`7Y"	4:mK?{2oFIN~
?StY/okŵ긆.ԞcVQDr9=iy:zO;CT[Z#R9š66jU8;8Yԍw+ʽ3;*V7`ўܚEhftg?oPu
"s(3ʒsx؅{^Ae|v$+|xT!YCW(x]Y^ZqaIZ1{
U!N3$R+H8H!\0xepB$g0!RͥB(*77GJķs˞byJٻ|[oM0xY/zLs/	kp>:.x  z1\}Pߒ"57>,`#G$1UzU"¿-] ~ⓠI|Ao	ĶD3_\ӟzAE+6פFw]͓$/: Q
q{<l!0e2R155<\@AGҡe/l,^ϊl*Yq;`%cgqɽ$M\;!÷vP/suG=gN<ܘMQ.Pum$nY'oxFO $5un)@$#4gd؆;Ûthoi6ܒ04!+9zGaJ: hXAT70+àf6
d<
āQ/&ĄxL(O
'OFugI舀
Ƨw@ ]E4^C(>'`ϸ(GIB45t+B`q'y@s0ne֕0	z096ͅ11x6_؟ȓ&;x0tg$7vjz9W4kmc0͞0SpLNک[	É&G/PFm73~A~4LJoN<5!28t2$Y2x;B(R9L΋ nDt
%~qL_En[tRav& =M0h*#M+C-h)SH2{s"տJq`Ky`(D)[n(UZLࢡN&T=LCiG?4n Lݸ uχ> oK&/?5ڰ{?
gΞ_"qKpN|X
633)k:H1Wu/\kRHfVCG@	`tݔ$]/
o)$H\-Ѷ|(?CB!r[)%Pfwi50B>v.C q%~EH|}[ }?N-_[
LL
~~Qu;Ns1@'IǛ#D7ה~iTO~ Him^?sКQebiEMEɸlKME~z 
$dhyZc`科&0ܔV.W᝝ l9Nҡ動#(Fe<rBdS[fV:nǕqunUqtJM z,s۴$Ʊ&nؗM嗀ʠ~X0d4$/91e_ jIݏM]ݙOn/- r|C,8-g6 {+V50Q3=JLA"UܖAM~K'W@vB煣,r%KƮ&⎊k+cu&|,T_g^z1>0:`эvaJ8q
>pJLKU.73081[DSѰsS<i#ܗ6ʰgG3u!<U84[U9~EU"zi'1>LK6wHw++(QqWSh|6b{@? .!{3WAHqhP/q98ܸaMFTp=M1.<f
P31^({}$8!?S=b]kRwqSJl [^L6Drw`4{:#BV́q,o6WdbӿU$;~EwBUn*JqՋJ͍Ijim`$	IS\|:i)N1݊m%Z PsiMS`j葾fd朿SkKn,ӥ@0Sf(H\y\j}-SN4CR> lt-^.ۋ弸 G/m~vʷ<ߘWJ>&.X吽W^¢碡
v7,ֺ4Ce
2$0'6٘;L8uҕv}е	휊T߆0Ͱ 8J_<`޼B_o[}ћÜ
AQ-5qL#Tmev]>bۤ$aXd4+z#]GXZ K7P}ƳIo'rӑԛmcqNQ=֖u[8W%Wwg&a<'v2U[/*75;yNwxP#tY o0SN¨i=_'UQ*hpM܌MJuARsiGwG(
J6I%mG\z+IJq%*IS|N1
:-@4.%W*>2m%Gn5rn&2(to"N8h8eϲ54+utD&e{sS\Q//WDpGG-ޚHvѠm*-Ycʯ2
c0;fyC
v2(=$uYXHxM&=]+ݻb{(&@B"CʋRVw=8~̅ZMT?8h]H<0p@kҭM	Jfz7ϒƋ=zVVeN@2vdITuT韩#XA		23D౪+s:S3/Txȣ?|"&+K/"gvM#JG&#
仧dcǸbKp5·(!Zs^V?cdP~.?Y.'TZmf
U9S!қF>m ~@t6<\?.0BMQJAZ`'G|<wX{=0))/EZ0J,P9;3"3hkayf;0eWR	¥+bpd?.Bk d2!"Fv.6(*jc3bt*Q"QXU%e)dvHkndY.xn}8?~B
u1ǯOK
9NDBټs.c=Wy%go=~y-`Aj
} ^܄!S5kd6'})}.y\e[2BqƝK@lL1<Ҟ636q6Jt ``@)̅Yu7OAkݑ?+3JT Ҵ-))9i,,1qJLU!xN8M,]gB?-ig@RUnspoW̉,6
Ru)+sT^q(g
"Z!_YLt-
$kO)
5IA
#ّ	*L9VyokfhӲ>`f5.$S|XQw09a:ja$j
8>\!̸
zE1yS	Me=$ lJ`N[T}TM6e&'B$RJ_GTUHC ( 47{V[R عz_: /EhLnAXXNqȭahN|է4-gs@@<L&@N{_C`N
دy$V}QڪO&zMY(z
<\Gh\:0< wn:DǏF.-u`~ 0m^nJ>g{.&vPVPtSb? .2jVU|VL2670(TJP7л=OQ*
pc[Ոn
U˛N$9b{P{d<
*aljYGZ()AbztxV=DʫJk:hb%Ixۦ^Պ\z;PQzS+\[TyYFi@$J5))AG`gdᬝ
eu7d扃x몪V8%кǫ*\ۻ$i)u'3qXX-GڨVdjdM*չs(/B	1FB;1ixxީ%'Q,rJs;_945U%*FkUM,)ceWJ'<Xdq$ՀT$d^}R4}MfŖ5-\w+-aVuyLitrePbuԨ%^up_Ӿro MpON.T6	TRҍkpu2Ū !DaGCRtxG`[v'	:FNgDN/lMGͩD簓"
"HJp/G,©V+&4Ň-_
\"=|Ts	7
>
xQ$vG+:cu24+2o*z"qP¶'Bx_}jcw]K9qa}*KKAe?MLf&eIP7zERQ%\>&9w䩺Y{u#|Ei,4-}+FnH*ݻ?W%A4-~M)_slI2hJGȾ1G-ϑ>(*2A`Z<.DJ#wT',q4c_yF%UˢVl\Ƙ./BU:)*52`Γ./ٻ##W0|ӈH}~I{M_#: G?\ʙ3`O39>#ڔRB	9MYyҾS՚TY@:iRn*SPVUw ac+0Ʌ@͒]]毃ۺjt7'n,n_P|=S[cYx̜@:
 |&~ĂS4T!ܟjO~YCJ_5֚Y:X ߋ̤@ɮdX+"T;:pX`:
.5"B\2:QnǊR}?V6V197kŚO$
CUʲtK(@>|ЌŷRJTLLa#Uǌ*tQ$IѬ+¨	ȸhq@)zH~*;N|\XdĥryQ&BPaX"A[eW:u:F[bOոe	
>3TxSq!?̤y`Z|Rs˔jXU4i7)sq^aݍmr'y<yvVY'/)56*C%fb$꣄3qF
ED#7ϴY@?RߠGV!&Vr{TٵÇ`B_kjN鋛=v"t&2TهQwZ)@`ԍx#B@V??=RIOSt`F#e(=Gy⃑bZT>po.0cP9AHG :PllofcO*#@abc&\?. kD&aj!=#1eM`hNZ;h/d]Q`8릏)r]hky+ugNw3ɓ2+]i_3$H/+W#g
ޣG[%{5MPs)	=RR*KWE77-Vxi|8HUjSC9mL-,
p1`])y u2Ɔ҅յ<Lk!a!7Acxt%S--;]8Ov:JH^HY`Qgq#oqKx"QHgrV}@T<iNg1S!#K\9U2wBPi9H.pR
NІ%̤
I(5#&Zr[JE>S6ǠΤ?'4(r*INfS<`9Q%kKMize=8)"]ÞHڄ+y:-,R񾧮Pd7I|xLg&2NYO_s("LM%dp_^VX#9_#Qv&iڒ<7zFqB!dCx񼗨dw˯W/RڻygGq?{\VQs<:
Ur7(l=ds؞h^\Ƴ)LLY`ENb$V(?Q.DQ=S?mA_^bTr,b=7b\B~#D+y7	
%ɾt%ňT~J͇:=}"#Kt0dXPZ	/Yiz#]B,(2[+_?1:+I4IVs@G{Cb6H^C
fn=*\^t̽>6~Od
Y:1>~VxS]sN^7ĢqRK(չg¾[UA!)9z?:<5
@Jj*twT6RjQ^"{oyrhv.D&TG®͛3
I!+t#}U#3C%XUP(iPtcuV6njEf1:uR$$7divbhhLKM
7z'_J~̠ˆپ6+s<)J{k2AU%7_"@K\F!'шK]7BOϑ>o5YWjS_:wsw|H{fw(rKbcLOƠQ>ooV]^i_04NL$
jfG',ԌNu]ӟ_:]-
0#1>V'<
ؙڀ!)8#
uÊ
jVF҈[2$X$q0O*_--s81)8IC;B/՚4Ci>Ny'D]Ry
6A+_i`q@l]NTEskUjr:{⟪N7j:ڕ,TқVސ'\'ˈH|Hv3a8Xzjd"lUhj
޾Ϗ?0j⬡GRHk\lSdnya3UCxm%٠RK^>A r!(eƆI+k.E	4閑q-:{i'\{WԞ{nÃdLz7
<oT7tGN'EE%%WFxY0mޮE&U!A͟&[({("hxş#A:YxE9?S[+)vK͍H뜽H	ԊشT܀ 
^DbjV%$pFQ$rGykIT*NNW3Q*\d^d3#}z֩Z*۟IF0%7'+r8N!(pvFކhI'HǸe~FXuI}1np
2v4x+D:.O7@U\pKǡhȈ'&Cj!p$U"`{J+=恵QOj^[,i3{B<
Lu^M\ ?uF$vߗTqKJG9xwBB~|B3e	{>6uJi*O؈uZ, vj`K^D[]:3>l4mGa5.+i`@rGB(.R Q/I]ﾆx@Psʪ:>%]OC>IҸ
4
3ѨD5Hg JoFo^fYWz>?3ؐDRLdQ4DivtdAeԋ,zſLa#q[lLZ\&)~5,PĴ2@CԑyQpB؛Вa.6GGˠM)?$?=6_A6Ǘ<
oMIi*z2z:R=$ @s+E,UKBpq,6
ĤIdB@ʆM$	n I\ѢDL74C(=,xI|*r])%t2VYN\fNx8]Dfі#ӄ>a7(*t0LbQ`uȰ,o~P3ipt l$'c3~áAt{
-9J s'<CB8(<R/`vNiOYO@&^ʃi7/`;'ay	5:fd=R/$<Gk^ar*!Ră+pA+ЍӑвOԉD;V%
dSz\s?g4{F5
mFjE L	P443_-aX
x)IcG}lUSG̈(R3Na8c+!*28U~p_㳫4F$F9eȎG0:2ޭ!6Ћ/m ijxytqqeEO
FD]T$P@ѩ=A.2~v5a$ĲHO!(!ˠ(p?~gA;xȣ(ִ\kN^U+<FJMe%
 [/;ُUZg@҄I-m/o"vǣ1]!68XUo"C]LTEݵSLVLNǬ(^`lh@Θ[yY&=onfU3a
/!oQdىV|JL;|]/ME30ǗMՓ.rȴW[nbfŝ܄8&ŗͣWHŬ2@
8Ƈ㚵-"M\V(J$:"W**<}R%
&pgzPt+cQg;'5<a#ퟝQ)_+5Z7zo҉ܫƒm@krfa~N^";DLdH(g-=B AB\P^[.5bh?I U~`L"9#%{TwW< ^6>ZZG̯o2!,ko>cў.y7K;ɨ/1w!'eA*.-^A;R_nVzm=oe #wYz(ؚM5->BOZ/xX:fD#oK֌7,~K=.)AEquŸd8)c:NX/6
wWm~P{N.2pY-4e=Ma]=#?='VUP_UK
{2Ć]uAGM{y846Law_sJ;ҍ~
oO4e n]|8}'PՏJB Lj;C[p>7x#yA.LxJ>!(᫔`]me6ޡp{b3;D?Bi8gūlB<CpQqx=uBueᐅ;̇SjtrvND~@;Xw$IXvt>ΩY1U1B1
9NOiʱ#>H7s>N<s_RoR[k՛rsEY.@W鋳"
,"i"G36`|Qꛄ(pBۍzEe(OIc9bȿv%㯑Fh9ڸsԌ*pAsJoEJFy<2%!o~b(>.=1Xֆ*1hCUY3&kg/N_VW;
H}Y@updIs<jnei#$I
)lfCI%þ0X?\Pj~$>6ITfM$BH'|rH`gCsi0r -
F2тO.=:ʒgsdO754Ɂ$֙ dfoEs(l<[)\2݇";.`LK)x8ӗm̝
fh
}zxC?11'sKQxiAҺ¾p|}V0qb<Qeʜ̭@+PKbi+:׫ibtU{
a6^;>oWS<CBj{͞vl׀lxrڊ!Bg;of1ԟ.	]
EdIUj	8vIL]릧aVثWZ_mmךAM$	#5pd`rq,w1$uZw`˚fL&v;LұaEnȗ(`3w?ަ/Ϳ^GzS_ڵ9q7
Xp\TEknZkк!vpƺN<6N.&Aklqg'CuyaXk6!AbgOzڏן	K!H2_66
u
`^9\	ZVMbͻ4eD/y/r1y: oim?ԧnlDYNP8rq),蕃))5&rz_#maۏD_҄(2ۡ?8^|ڡn?YIR>6ZgVZŃcS& KC,0N*7܁fCesQd
`#0[e\nif3[Ep}&fU;xmuk$5>
Xi1hiɁ}}YӶW͂?M\m:0+,f᯺T\FvoU]J ~Iag~yGt}ph1GGX{sr֪1Yiߛ5K2ر
R%Mˇ_m!KlyW+#jbgRY|G^\r]جX`c1Ωa'
V1U=)eRhYt⬯D҆W1*&AqGWrOf@9Xd+Ş6ξėcJ[X!O\cA۶ނlUw|>ܼm>=Kt:.ds%d[XdQg]mE;*L'O.:ROx9n0wwJ1f c)~ټ=Sk'p
gWNbVV^.D_\3O#-1Z~ Yusem
Oe?sOvq	1>`Vp WdHBIԖ[D3`sD^qQM5Ȫ__܉ZY+SewIVF\{uƒwOŁ,Yʣn7͝^+131"(\2VBM鰚xaL鰚*Pc0JA;O%vD	Ԡ%CRjMGF  ZHq4#&h a.Y =  	`pFrko(ıcd(T_"-
SԨih"fÅ	KO7vIv0fc EC$	Jx&WJ+Kn ¤5^cTG%	ltCnI)Qz&p	
YDiIl	
\F-"(@d(8ThRa< )ddT/¸d8X#7
=C@r\(Ple8%n`sh"#Cӌ*/!*Mq!#3P>} vvni2t<Ca$: a7\+ 1,I2jă7tZ|<`´=UT'Ս&O'A6ە8Uj⡫Px{\+09aI	Hl%i"a~+:\*D@6(@q0@YV 
E%U=;zz2sATύ=9=50g,U`XR@@P8][s$7HL9лZmb@v;ĖA(BPO@ă(&z'`'=8l/Thdh|[Gt
kե(P#=DPrЁr/ TtC$x hw@ 0\
`Ƕa)[x<Q}
!`a/HNΛ1.0TЂOH_V.J-~keRZ\Á>ϊ3fTn1bg)N
H=hlѺ2,M5zIF:.z=yH82hZe* dbsILA*6uv@**]-b2C :ސHX+V>XXxHǊ)+J@<DDxlP3&
4hi:s# ~-ˆ
 E4Al-
h|a@ %SG*x<u
e(lA_2-y =5jy2X ^蜛v.벥遂J	h]04A`C##
~C!Vɥ+ 1eJǛx<][Ȁ#%xX<3.n>,^`{LY Yfd-qrG%{*FXDPb=tK
3Ύ Xzj?twX%4Mچ>Pc@؎>d؀
xLm`V(4=tLY@J`?z,@!`Av ,gH DV>4rQ4b
8@B(t`T6vH0e
[:)ad=dٛ3ZkʡOOV=4@2mU(gF ;0uRe+W9p1XsˁDڊ1@-0̱PjPpi	͘_5Tg)d}w37G%8웴_26Ip<p5Xm|څ_&~(WP?D} -iǭ;a7ǇE<}a?ˬ
s])#5#y9Ϳ(ÊEJhe	.~}_Eꎃ27ɮɾG>? Զ8g]M"tr]I :qP~fxQɾ_}dfy|#+y]0QW}J߯E
Y-^+Y!@|Jy[h.-4Oic{oݤoИHuΰ'1w0 ј9ZSy+G} p<<#W/X̠ۜ_5Yǲڲ޷[C	t-ו=}c2bl3w<R?%Bxxyo[N}^2bJBnNFzjAl>}4-iHO۟^D+a-j}GF9l$Wv z	%`p
hn^&Q唃ތ S2BD
ًsY]OUB|E%tcOJ
8=:XJ㟬;<5
d4WxpmPG

`<=TT>PA"5Taro))Kb @)]CgN&ΊMyS
oقlZ(Z` 00<p 11܉stCNѵ숁-ܖS5)Mqsޔ
^hb)@ 9Dj`(2?\th0A{t\Ψp!C
0`ZZhj77\ C`Z 6LCCmĐ
xQbE s\Kz]n`\܄EB.r}1V(S!j!*ILH 3)Bx@h2Jȓe!¬qLxb%ڃ!tCFZ ؐ
ڭ A,:ryUbY⧉ER~E٫2 b@z~xH}@Hk ,`}D fu-h,!AKا鉈.u&e |F,Ǩ:5eLVABF&3

Գ)ڷ P>6l&E Biz 
+)\G($7qHQw*a3QݞfhQpmwXT!7iΠ(sz)ٕg-R^r,(?Dqxb2cIikd jT )1g'ƆTm6$$|dd@ѰK&
-D_+P5˝%Utz<i
lQ%oiM=<pĆHʕ*V-@	&#Kz[w:JNÚ)gᡴM"T}X#I9p0r*1I£BB`AL@>k[iΔ
tJ:ِDx@cʞb=Ӯo*1,'Q\0a?,AeKJ֘RKJdUԔS.Z8"Y#~X$'HMPd2VCp /jGvPƾʤ3Dʈ"yB+-YuZؗ.\\RKJXe'p`bH -:`#JfG2SaQ]r mz:qi"gX`+$E g+j<
UmBP`-g_r=:4U3tΤ4vy%
0&Ĝ<I+ɕU
fIWI%bӄ2`y]aQVICJS.DjdN$AJ;ZcDV46@e( A.-gu*U\5B'KZmHTțdZSh~xcR;\<_P]XP:<B`3["luiz1`	\Q=T1~ ʉiJ7Q
@
0*2Ð?#{NPtJܐ>@T7´h
8QV/-]|eR
	XXI\ELT,	.&U%Y٣KU)aP!N54ň%
RԌ
!! -4@0}gޞJvYBHary%Ƙ2ӄ.ͯ+-D @!zrD["@+J/C1G10BNRZȘ"	R# _Q߰KG6$
:d#khUtHC`x3&و12 Xٗ|exbe/lޓ2.(L8
t\Ê^QI>{xU05%
.@B HI?a'=z=j+5o6mZBiUhhZZ-Q@+l	z֞VHq =
ޓǅO8
`X#`|gpƕ/Јi|SAvČdR1|R߫ZI_ZtQ 	EUTࢂC
AL1JP
! z@`:t4P@S HRG?)E-K@8b A\>Z	zXU]W,${zp	٧m	Q!
kZ=޵)Y"E.vfZ|.	U]=(ps	dMWId"3
Uݣ"#
(BvPXh 7^ITH{}0*{>_*ɵ$uܽ+I(Ų#`SB#gd4}{P>|nq8:]UG!dy@J.(+cg	+n0\{g@(SvB~T@`;a+& p@@;D߯1VaVeN7l ʶ$DS(>hgrUP1z-O	Uqf8ua(vSc.`5b<q4mbUX&	X؀@-	ܧ37DC峡H"@G	ϕT
ۗ }`XIH[Hm5Xa.Zz*!v
&(44fƐ)=h% =&Jh:̪~tf1&
d&hED|zL68ieeW-/DByA &l	$Cz V37#`D/Eo(C4He`dҋ61ᱤ˧rܸ҈!6 ,-B"tnI*kIe&hҩBhT4c0z!Z@@84AĞnЛ5%*
p4L
Nq:lR -(X)sP)Dm)}Fv5j)KEªbdt
_<uXp1#l *RҸ ȩ3
KD@d
hHX^{anQ.7V&Hhr&Ii?4}jS
(MwwLv++֌ 
:hbaׁFn!	qF7OY 	DF0X)^pj{_PAsZI+/tt)eQ!`//G:yq{Hp|,N9!4k8+i]	aP!_F$HFs%TLYEUqMVٲ^7C҉~/~e?3V#OF۲hМe[Jx~_J+JoUVW_F#H8{\WA+t×h3.5 kqP,Nr^}
'5<{X4qzr)}/NT3%g/)N9Xetk!hƾIa6%pDyb/ヤP;KNH
Uߠyi]y+Z8
MvCTtCO}#4n~hD^%(>ܤT?cajT"u*SMʽg0zSV9V/PǉK6h}6,\}!@NkqM><_Hf
jq*LIHrZ.؄}@≏A-v%4yXjE?)J?qЃ/5"[XbiR@s`;Xʙ_9ȁoH~v5/;6Gx+WFIS#?ޭ엂BVee?5jej3ۦ-˶9x
a]
j.fG(\Uml0>N.90O"'
t4y]7Ǯ!m&ַŗ`JgGx |60~̕f#B]}~PiG%l=Rؕq;':72!1_-|9w(v&cGn}/ō% $ؚiL`:Bl~Śwh773/T"x!n4 Gs81>rŻm_Jq|Sdd~)@7h~fĲ0:6
mנf/fi(OTg9$f(RW#)4A$`WinTZdoeʔf?R0_,kj70E	x7K7@uۡ3c*0޼-`zm}w*7SHs"_r0#-o0AY\08LTݻ'6 iO:4"u>k,!}h|aSK>>#s2Q>ՂS9I~ D,fVAzNDgsnY,f>@Yql x;'C a
_0<zvP)<L1s)o+f<x}3<l"	LJQpà+PE#QvkAI`
HupF^<a!&&o3vj%ib@JۻBh{W>٧!JG?1u%9BνYm,t[̼b{T5
wLށIZSpy-sƏm`.P}$Q{_Xы[6c*ĥuu}	,RqM5uN3-.57J-Cd]JT"࠱j^
	81c|u5
RGЙ;LڌF4#ᶿG
^kn&?	g3HZ#,%ξo5N­Vͼ|S]LkrN,ts.E:
FZ'A;fQ^:rB;ьWhA*^F揥fAZ٭rqݣ&= xż9kT$!3ա^>p-ƨp-l絎("GIWaew]VWc73.2WTfRяr
 9֠@B[
Nue4glՆ, 7%b`oDa_`SC&K6sb
4g..h
y(vLA쵗q^F"2O4ާ1\NʷVp|
&=\ƓxoDXF0r
^΋yqa+thY71l*mt`0~ͯOm _(W_iN0p<yڌFMbs'NH;I]!'<d4ftî,u3lZeX;e#W\4-?N5=O0PkF=9cՉRPUxt r99s@0{ѹR!S`aJD(ӊt¾
-;z$pa;7*Pl0o<҄'ןDWJwo]V0^e:Li]"7:KB'ԃ?Ca=LP>6@8b}
|ĽPtKr5P-b3>+lh^<bHu3DSנRZtО5e޸0"nΤS!b$`|©i]@:pbƋ+)VEj9Ya!L[ 	S[+}@8bj{M3C8m65[0ߧ^^?h\Ne)hR3 CE<Bm>n|
s^e8>q/p8R%rzԌ8g
Ul835uͦBe3"qZ}8{;S;)S+HLG3Qw+15uN-T-ˊa|I<;ҚZ#-b3D'v8L<3xj;b|PE9>-&H27[r̱5˗}#PqL83GʽY\5#NYߍ3K*Q7̑I#ς-0QH3MqG)"Ͱ,8k^B3;E^-BG)f>Vd||g=Hs]I}
Ҫtc(,Y
\av<̀Ҍk_u<
}qH>2N%Of]2}IGO>=>ts8Q=R#Pݼi$n+l4w/5߬ʊrYϠ?hD3xlH+NI뺮8UC:%?
e
qJ#oMm^nG:@,#J$3"#Y&g|Cc^.ABx穘y"U
Edl		U/J<>5.F8"ro6ɾdK{O4
,ֵe7Kۣ0s?Ԥߴ7lD aSD񲏻xGnBK4s5E&99c$"2h
G9g)"4
BV)ws
O4~ 'j4b-i!b̂;;QF#PBF*
SP\ErR\Aݳ1AMUB"jVe5{8fhsnY&{27{5w3T~uG.3ʑ3YHX. vQS%SXlrzP(&^=kG@E(E{7

Mu 6lzF	 s+g	VHY0sOVI!^l;LPVy_O{L-7XL4D>p![5r{^Nvb2YF0f%+,M4kJG,h8ӁH͈GV:k.܄9t\<3uuX}7|e?9/g	q"׵ܐIݛ7t]ݛ7&fV&w
;c
:A[roBڒ)̇aw$N:c9Ⱥ4N
Z
yg8O4q}{kЎI,ӧe/ԈQ͈[ll&Ձ*:P(ՖhE;F#^f2!|r<F-o;cHV)iP~_/smO(IdV~a83:*
IRo&/{t2b9AMc
^O"
|0h/$hL
/Re͈r^SЏQ߅*b0sB2lq3z?SʻmvA{
R`>f7TyoSYQ>b(N2Pg[h#m|gh\o(bۆ,=	PѮax)i},ɲP;1zoV({8r6bOc?`fܠ@|]3
Y9g~VMp$ISUXQ&g,$(߇!P*DFiTы|UnLC)QW١rٿ/"Y/ߣKvdU-F}y󄘬{X>RŗCTC ^	jީ!k~0A<	[x:{mJ쁉`tɚ,ȺjT銎dP4n4VHKF0ʌb}8hkN:8QjQj1~.0O;{uxW~wo
ܣDFx([~v'oNmfs+b1le;sĐluI?HFaq@z&?S=;\T48pe+TҬS,S=hjw#,h^҉,B΋_k@;]umć
 to$v)E
%OU]ki݋~٪óTa~g[j~p;ȁ]/OMumCnlt.H)cWe)>eQeQU hX3[MAUwfeQU=GOr果=6ޠ<?)}x8Mo#:ݠ3x}G5hD3rVbi'B3OpϮ@_d̯SjYk|:n~?iܠA2aladQqyR~Kj	7@k`tzNTY/U56sfƉ_8#}ܚ'DBʸ~"Mj.[F<mZw^FlT	وG٘5{]s'u&^t "P|Gxor{o-&|5q}4q=N?|2]

];w2 -LfuCtta;>%yI#W匍ng+',֖+{m
y6f?avKNQ
c^&bȅ/2KhtcYͦ d󖓢+t{4eL'5G;ie]Y
J]ąxOON*5&N":]nEDu2pQ	hT}Qn>
Ⴄ
lAW7?*H)Tzo6@߃I,w| Φ$qp3-K\}dxa9~d0Fa4n:UZ-u !et΢lO&`NQ[[5Ї&?#Ճ.-0.,A|,v)>Wi%Y`&3nPʈO
r"
lF*݇)nL<MqUAK
叁cHa|,eFQ"+Kt7Do]VQZ0~q+a^/
g\'Ϗݢ1M,{Ue^
Nyvn-
gRGIJ<UVp]e1ͦI|yo	u-J-|9ͻ!߁b79C ҋ3\,gcTU""Oz2)B H1<ϦoGn~dCS.,KЈi!8{ͫkM|
EI!0i	 %3dU-Y_$"yW)gBڳ
kF#)"<1+'20^LȜ=sk30lnL]4Mr"qبoj?xZ-ӖնyN[Vmp_wmmn?UgКpدB<N=:_ײxjvMmS_0)uyXgBJ^aE4>՗8} QjdMv
z18ByjsfD_]e	I'fnP7^jנuo{-uB<7!xkж
ʋѹ65W),$yp
yP1mON7 5=(+NW[N9]6 _F!_^"ht+#W*O8_yum=+EEEq"Y?d}ZW?j<9U :PF](h$ɔS0qJ}"RΙߡv(YY9Ntq^-x/Tf& 6<-RTB!1{W|Ɠ#[yu}R&/;#z?K)?N?E^ciw#J9Eo^}xHgŗ@[a]BՁ:\񑲭
/s};Z/j^q|zcx;ݗsǗ}^	lN˸J)kd;氆w(ne8sI(ߊA"OZJFy]ebܓ>aL2IiFwJ4S?'8oI@yxWι#L=~>ɽ?)҈^c5MM%;EIw<4ZY.deGUgxb
å44F}t޳wOLʹd=nɺCP|dkv6Y)aX4Xzg)(7˧J'
wQ$ۛ״G7uӠ'T)Ybm/^Τbo>p		U,0N	ڛ72\ngre[A>/%eHu$0q/j3ڌ>pioiֿH!bR,	HJ'|Aj IEtG.[)Y>vuw4[,h	t(.C?-SVҢFꅭ;'qw#3$-F>>y1W_HGxdOD0l֧F|[#瀧BYTlx@NWa/JmgG#^NBZjgO#\:D+YW}ssB4Jԣ^`wx
x3s>CΜ:":v[)>\{Ь(+Кygsc$՗^YNX5 Y1B5)BYL@_B~
"K1:U Lw7dDa*|.L!
ҿ)п ┽qP^#%{ (ANE$I=Hafesae`s(/Z4d	7VmdrwϨɥEǌY")]C1a`}1@9ܳ<:f|~܉`l)S;4׌ ;4YkDL,H$/q>quHK9@92I&T??iuNYhF`yT !oJX((h9$4#F=\:'{ېuw9˰b'{5Z۲ӏXN:]|kE(	"POb8$q*rF*Ne@#n9 (Y<#(޼@	:gnЗ38CixuT$
ì5}_l^:P뚆8d ;{m~[8{|~p9WόXmޖ^[e=x5<GLh8/,+/_;AߟTxx  bܞqfx;@+p@z]E~W `29IuJ+ UtpTO~Xx5~PW-2-&Y]iֵ$R0ϚHkũX)*Ĵ6)~Iw	5zlAYf*@a

B"d4BdK+!T9&I5~2~],rFnSuB.{9PnV{
>(9u}RMqss0(Ze?-QpPq܏59ABڣlV:8w)̿4@B~uS.N߈rRgl]"rtk	6j
6c1W7wǽo"TЈط{B/IIRU!ؚ<#d4XaI#IDQؠ0Aes26]g+9vQ(k%4h~]} /](jL` ML|8dBKuS61M麺ʋ$R<-M@~!XZc'#(I4&_(i\Q=|yڔxlߡ~	6jJTjP8@o2wۘ*y`u<P)@K3v2BNUߛB_7ȇKoPA@%}6[ME7	q(/7Ǐr fMhĻ[]ytc)L2Ye,4pGPniGxd]ϱ5	qsxu_u=77ˠӺf+¦%a궬Pn^EFI)ߪti{|Ҟ
P9/}7~
XA5$cHf-'K|Gx}sW
ri(lHu6'IiC	w{7X6
:t\ah֠
Q{ۍ;W][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
yXk856mcHTl7c07lnM/pN3nu5IrJl092TK6f3Dz57sn/mPzM5Bcnfz/59OT+U7KnzJxSM2XNlJum
5qbMHZmHMj/M/Dzz20xz1kior4asG7J8WfdBfX2SNWLS5EnFk+ZNugbq6/pJGyb9ZtKDk7TZNdl/
T38gPWbipRMXTrxj4l8nvjbxu4mDodZmZBRn1GZcl3FbxqMZ2zM+zziVcQ5qLjZzSGZh5pLMhkxX
dHr3dL5hbof6jUrtn5qUOjF1duqC1CWpzakbUu9M/WPqrtTDqV+k6tOGp6Wn/SntibRDaR+mlacv
LXqaZZp12uhp46dlTps6rXDaZdPqpq2a1jrt9ml3T9s57d1pw6cXTq+YfsV0z/QHpv91+lPTX5x+
mXx08pnJcVPWTrltyh+n/PeUl6cMz83KnZ57OPfr3MVTa6beNHXT1M1TH5v68tSDU49OPTb1xFQ2
kxZMaprknrR+0u8nPT3p4KQPJnVNOjEpOtuWvSx7W/Y/szNz5uYsyfl9zvGc6MmrJ98xecvkHZPf
zIsyUzOnZhZnlmZennlL5q8z7818OPOzzHOZMVnJWalZOVnOrJuy2rPuzHoya2/W/qyjWceyTmVJ
Xz2xdmLDxDUTb5q4aeLdEx+Y+ObE4xOlDH3GgIxRGZkZczOWZjRkuDPuz/h7xrGM7zLkTH1mXObA
SbWljUtLS8tKm5Z2adplaTel3ZO2Pe2faYfTutK+S9OnZ6RPTp+RXpx+efpV6c+kv5T+bvoH6d+l
+8/aL2RrbTaH3GiTXTr8P2c5/vPvP//+j/0HE98luMaWak0dk5qRak+dmVqaujB1ceqq1NbUO1I/
5RUsyCstnphOVs049h/5f/+bXVg2t7AklGfykf/1vxUtK6uaXZzi3CP8q69b2tLSND5VLcd//v2f
dzK6hClnLrrrncBd09HVgBEqlZUqsex6ZVVVC4VHYe26KquWO6pqlzvQuBCvhQ+HLXNXNlfzxWnx
zqpGqCKmUVYI/DHKCueKqiao6Vh0QVGhFyvchpOxixUA8IQsWUFrxUpQpTOUFldzVS3URCa5VsDU
R2k47ic0NWTHCTWkqUGjT0cL266paWqua3DVsJ3gcruq2B5NDRrBsr34C3Hf0dSsghYHV0CDNnP1
NEJ/logcKPgKtgDcjTBZe0Zy1DdWLWeTZUdjAyX4WHa4Gwh2n6ZyaWOziz2gqXQ11jH2Jw20EYQA
FY3VUJpy7q/hvlrwtThdjsqmJodrDXLIcg5xtzibhX0iY7cxR+WKlmUO5+o6oPiPzFHFXTMkB4Q3
g5SxyczhWOZ0oe1fZfOyFjYF/GhA5GxYyQrBvWKpo8rd7FhRuRp1OoejyeGorFpRXd/A5nJfVeOK
FVqAz2+opVJUF66ucjZhFpAIaopdoy2vdzqbWLu2or4FCrMALbHYC9pI+zLgNG24lRpj32lVIioa
7BWVvakpaaysFhSjeqDMcde76jBZRePCumpnfm1lM2tTygAXlp2xHxRogXx3c7OzwVVQ1wyIGinl
jD2FMCRJmHQxdgghVEh3U3FDTWMeW6EpbqhDW7K663rR2q4pbimYkV9e4qysnrHG5SxczdhrGvCt
1lODBBzt3fJYllTYAAT2jMT+Js1sdjpL6pai3R6rk2c5XSWVLa5CbuJ2A/rnNFa76wU1kN/6nrCF
unK0nAuLXlDX0lTpqqrFFBtZPhrAcQzsY5ZPBnylZGn4qerjVn4wPMZLBc56p8uZ31znqquqrC8X
8G2E79fw/eFzTucj8Pv85/+pq//RulqpKxMGicJCLt/VXF9U2VBd72zOY3/TlTtdIqDcVelytwCF
vs3wPQzf4/Btg68Dvlfg2w/f+/B9Dt9x+E7hhB/qTA9ff/is8I2BLwO+afAVwVcB39Xw1cLXDN+N
K4VvMXwu+H4N333wPQLfs/C98inP5wj8HofvLHxGmJwPhm8MfNnwXQrf1fDVw7fyM3wkibFb4bsL
AHv8aN95PA/w9+D7WoQbP2FsMHzJ8E2Grwy+JfCthu9m+H4D31/gexG+ffAdhe88fP0/ZWwMfJPh
5LfNO0P95V/RuD6Mxn9rvRvia/8vWv+vPhJyv/85Y5s+hv4cBiv9AmQowN4Pgyl+4B8Q+q0fh2AJ
xzQ7TrDy/u11lIKdgYA+jO+If3ZymzFcM1oLSIqEzK4F+Ppea0V84Lmc1iZLIlTSOZG+uAQYazFf
XEkJRNth39RvDwQcfcpszCSyEpGH8PWLDEiTe+G+vIRGtfzeIgJEeq8Z3qy+p318zgN56HcEAhU9
vef1yR5lfUCLYvIFNL/n9KagB/Bn6mGxqAc/0Lte6qHz20FO4aKPbI9Lhp/ZESsZ88N8BTFzI+S+
VcTd95KYQwBfO2lOLxfjfKvUEUcvdOK4WQJ55/U5bqWuipQzjN0l5GktpBn/M31Ivh74ADqFOT+S
b853EH99eF9pUrsw9ZPCmGu4Y5xY5/kU4tf+XPyl3PGvaDR2BAK6sHUr7Cd6gMX8m3P6Yy/96zmd
Mm9xn8Vc01dD0NgO8vU45H/0wrq9XV7dRzvM5nPX1ZB+y0uBQPK/ORd7EOKOC/LyNTv+nbke4h/5
Zq/x+UDg0khZKavTHORjvNogG+LMkH+mvNv7yiM/Ri7uE0xzBzSZTH0RZJAUMTaE47XKbX32SGef
BQJbpJ/p13f1PfdEveBxSHfwGehbF06fKl/bB40zYrh6KXvoB2nBG0CMzwEvXBhXqSZe6pPLsLz4
LKjl1AgXaUGouCCvoQFcCaQ5GCmvI+ZScksfrTkzhnQDHF+OQfpHMT0IgFU0+5TLxTSV8miCOKu3
KuQ+bpgseioQoEXjy4VeMS8saT6X/Kr+Ug9x3wryUX4YH6WuJXVJLurRgWbGpAr9xfx0ILA0XH+5
J5IuWG6bu8/Whx7bp0QJ1fGeJ4Gv/oUeVKrqixB3T6TcgyZcSqrDnLCOVBRzNWkAxfS3jv7mh4Vf
9dCkMch9jpkXKkOrqg/+PhDITbhg/XRIms/lPuqnJGZlH2NNQcy1fXKyxq7tI3bez9VxhaDv+BMw
VOZf6keW3wUCWcG+C11heZweJBjVPdKfAeGuPmQCjqRLocj5EZoBl5sYfy2kU+e2uULf3giwePmC
8H5xzIoeEOi8pT1AUKvYJi7AbfUFAhnaC44dSzRva/qovKIYHKOfwPSbAoGimAukBx1V0nzSV6Pg
k2ObPQFpzV68sDyCt7Gl50Kj5Yl2Ko6pDXmQL/FNglpI98/e6TpDMbnugRdUGn8VCNT2OQ6mypt7
oCCmNMxXGCPa0Qoy/IfWQGCP5gL1C+XUTO+rfWbEyBv6VjJQBq0GvPUbA4G3g/U3E/EWhOtp8nO9
w2RkHiC4WZnp0WqGSmFyMT+G96XHsG3XBwJHNb3S5EOa+8JlKWRDdB6BNJ96AoG5UliafKHnPReW
jqEy0qNT1wUCi4L1lI/1BN1mCUj4WaKe5sXMDnmI7mxItxnSbWK99Qy1/8uL+s4X+wVeynQM0tdr
q8Ll+6w4a12wiy3iDi4r8PCfbTXUuXSB8bYwbolmuNTHaJUXg+nx0qTqNYFASWT6/LD0qfI7fSQv
F92qKEbOjxbdLH83tn19WKf7lzJl3KpAYHZPOZaKjn8tUzIEjmzA8RnrSxY0yXf0kAIguilvbNPj
c5Jn7EDcmA71A8tKGOtFOmw7vHbTDrD2yPzWRIsMZ8QUBPswntcpgvhbIP7TIp9b5EuDfexqSGTM
UuW1IKzyewk5qMzCXpWJ+eJdw6nuQIDmtmsx3yLMd5War1nI+VshzsQwevFO420Aa+H8BfVSG70D
5goEfgxPuwJizaS08jVxSQAoF4BLY64i/7/mv8cA54QeY+oegE2N5Os1KkOXijH1U1f4ONSjHgvj
wEcTissEXa64pLlx1tK4pEISd0QX9DlsI5Tbj0H8jeFtCMJAD+yiFMfMiUsqirOujkiJ1Utp8fYl
yq7KvR8Axy1SWNllp2A+EMRPCuelF+btEoEntyUQWMEu2DdT58SNK45LvYIkWS39ze9T7owTY8hi
7ALadqOgXBOXCnBef2hLYG0Ui609ZMvcMNEyM0YzQA7zXxrzr2XJnmsF30Bu0GsUs+Anc3MgEPcv
M+YHEf+rOnj/38gvQcTtgLiXh9c/qvXw4ZEXpSEQWCj6zy1Iy83Icx6lMM4ue+MygHtqooFzdgDn
goeqIfxeQdvNWOce4B9rdXScceYOIHIXprgmzDcrxhHyiD6Kp1me/zdoShY0bYG410fmWRS3RK6P
G2deDLVsFW1vXREIlIW1vbVRtH1BDPE49qvFECfp3+zPpRBX8y/iJom4GRA3X/DSfOCiopgl1P4F
H5eLpU6R6LeRQvL7SDc7hvPGPsjXfjAQoIUI5Odi4uc84N+1Onl2NEDyiUXzYv5l25+qDwTw7AOb
mrj36bdY/Mp7RECNCpgb9yo5LhMA0BoYWwRlKLomELhK05uWPFGW0j4oKIzRSFJcNoReGZddHGef
ztsVZ8zbDXm+TOnRvhm3kZSaQKBTUdPnYfq8YPqZcUf6yV/FbeuXDw4guBeigpi6uH39ijDaARHt
gbiLBY6quAT4mw8tUxDj5O44XFnFzT88QmNxBgLJkkpnfpzxFk1+nPlmJT/O4tHmx9k1A6U4C+Rj
N646ELgkPP5yjHDhuraIfGyQbqSgywF04ZHjDPhyAb5T4PPIUKGu6Dh93g6scHlV3DgAMIqLlxYc
cC9wXxgMacNVs1cBlsBps1YAbReqg3GiDp6H+HR0Ji9O3ybPiNXOvEVzs+LRyjdECzogARQe45bA
5ijZvdask92rzRrZ7co3adxNOs0UOboT4uTtyNuVtzvv5XwgbGaM/JtewPwYpBVPHL9Vhbut/B/C
7wOMbLDy46zyr6LjlPwY+TL4mRXD8eFZ+T1LAoFpjOKkXhensEU418SREuDpaKNYYJTYbLNWdrOZ
4Y4ZGHIvSwi5lySG3H/whdz7hPs///5/+2dR2+S6Miat1UtDjIqyUaIL3RgeFj7iCATUeT/WNw65
/MnW5Flz56dY09Kt6anp6anZaTk94ONX1TVMTP/XsAul/w/8fy/4f9r2f9k2YWFzzSeOMvZZPAg7
p4tW3XRF7kst6z6YF+++UPIVrIWtZFWsmbnYBFZNvQskvMNRX+VAsdEEgslR426oYhEgtsXG2Kz8
HnmiOGfqn34oOGd6KP33v731Df2zV47Kb3ysOlm3J/qCRRf5D2rQPvnktjtn/nh6epdmXvac9KGp
bEXno/ls6h1LPl30cb791idXD/3v+ILSb46+8+ng2QW/fnuO7o3j6wtUyp/3Hvzt3/dvzp34p0fe
LfIMnPisLJqEv/ffNXgF/No/25x6P/xuumjn8+/Ab8bFPy435rP1Ryat2ZGXz7YcbFuYsTKf7Zm7
ZvqFxkc825AI3w0/O4oeF+ltQmhdzn/tt/PfjTv47zWn6Hd964Q8/N3Xv4p+W9/9Lf06X3sNf62O
VeY3Vv3plv3T/7FniS/5V7umn1nzx9IBBQemKz/d8PuB4+/KTb9i1nz0M7YePmseY3YQMEfg24KC
Z8uhDqoAz4/gHge/n5dxmE7EuQh+p8F3VTnH/ZfyEJ77IP6OeZF5qm6EQ43XNUAnperHWwsYaiaM
2BZwfyD8Z+A38TLuTr8sFOd/9isVOFLL+O874NeA+xrh/21ZKO7rZRfG0zm/N+zUv5G/v5z/PlZh
rqlz1ldTf4J2BQ5yA9ImRJrcAOwKtZ3MGpib1cN/WPVzK+ey4oYatD+cZ2cb5/LvhHBbSvnvuNJQ
Yr7YlVyNVY31Vqj3FgSMqp4QzX4+zdI6bLvrnGpcpBBAvSMCxVBe4H+sTWrQcVboRcucJF9GNY2z
sF0NFB6adOkal7PFWumyVgaxIB3BNNANXIBHTbWqzlVrrWqsdlpTV49ajfHU1mxqcbqrsVvXN1ZV
flVWhrXZ3YAtQNzjbnZOBv6qrm5GTh3VRMza0GitW1G5zDm+xVnlqmtsYFbrgrpml7uy/jK3E9pR
9AdglsYayHlZQ11NXVVlAzRxckXJvPJyiFQKDVx3wVilIhZjR+4HmQ1f0gN2lgufC7574JsD5Vk1
rmxY5lSTzltQWDazZN7CFFZBnNTirndZ61qgWaBdVlRi4RuBASCkCQIBNzRZ8vy5BWoq4NlGV2U9
7HStrKyfCh4QbsG6rG5cUVkncFiTC+bNySuemxIKboEyuusrm+tca6zJ5cWzIIzNW+lsrqlvXGVt
GY4yI48p8G3aZ2dJx0MyZH7D8obGVQ1WZ3NzYzP4HSsqgcbm5uQULKS1rgH+Jo9aNs46almK1Zrc
MEKZs6FyBWaCEEBpnToNEYfSNGOEUAJr8qq6+nqrC4gBz4rGZsBXt8LZksJmIoKW8GrkSauHYztu
OugFDxWi3Nm8sq7Kaa0JVlaLq7LZxeYBvVR4qKXG5srmNb2Kv2ppj9JFRqhmrma3MxSlqr6xhTdB
Dmes3F2FNNW46+vXCFqrw4kdzkq5w1pb2WJd6gRMIhZj4/v+x8or8soqiufOYnnNy9wrnA2uFqQn
blzB49Q1OTHviuY1IryxydlgbXS7mtwuaw1gJfzNSyFOfqO7vrphtItHwdSIS8Sp7iM4DAsraGxw
cjlXNLnqGpZZXY3W+sbKaqur1mltam5cBuknW0e1sJmVdfXOagyuanZWupxqhCpnS0uP9BBeba1p
tAnV9fXM4Wh2LqtrcTmbHTXNlSucjrqGmkaAVjv7gsO/qsmLG1ZUNo2vb1w2wbXaxSqBq0ZVMZbn
WfADcgZefN4xncfBf3gFCC7XWj129vhNwMXwuwXd8O2DXrBE8NN//v2v/6++bumyqipHi6N6Vfr4
pXvEolfhD/y9SXc0zrs69uILvH7fXRH3+Xd1b4zwo9w67uPLAej+z4vo/3f9ixa/OO6Zb+VvteE/
57d2hPhho6iHTfQr3ofmr0NfBpzo/9XdoC4UfoovrvFnMwt/SOtoL/x0d6HfPBRm8YXHuJ3zcaaK
Gwx/h0uxsQ+UbrIzWmgNqE8lbdv0KzvrA45p//IIfwP2nQcef0+VhG9sWw8Jup+Eet9kZ6H232qm
nw57j4Ge4dkrdiomCIuPTjp/DtInVqxo4c04qCngG570XhI++PQIzpF3Bt96vQSXujPxfVfvDkT2
d4n4rRa/teK3Xvw2iV+X+F0tfteK3/Xit1X83ip+7xK/94jfzeJ3i/h9UPw+Evn+0+Pv4ftPO8Le
DPViY/EvMEpP7x0FRlnEb4L4TRK/VvFrE7/J4nec+E0VvxniN1f82sVvgfgtEr8l4rdU/FaI30Xi
qnHpUyKviPu8F6R1iB5SRE3jn437BLv8uIPTdvjZB7FFXMEWKTAVvCeawy5eRcFDjRNw9Pj1WWyV
JcLsCPrT4bT9mDn0qmne8zWQdJr3I9QLuw283+72aRC/dAotonEuEcwFzU5wARMme7pz1MX2I+Yz
9E/PLlna4y1kOWda8vEcHwz/+DTmIb4PhTNiuhpWvEpQj8uK/hacIIG2ue4F6Gm1LTF4x/zuQsHU
mQl8/loNlSmZ3rvCTQd8aMS724eH51q7+SHfVg/ni9q0w217XSsgr2rv14CoGhVwGJJquweKe5aY
nk8HFt6lQYZ99jGcYHANBQkoMhV8J3oELhXQAwjIQMm4LMMf8Ng0f9sjkCh4CUA92h6BLrAE0Bei
h9/J2pNqKXSFban6AEkfVLfhmovfIUfwPF1JCgRv1G3DK/i6quCPWE9Jpek/NAF2Ujy7PAHaAvoA
QPwRQpGATUOXoOzMIKu00EoHt4BwLwHi0EyyxithHEnEoXqx4yFUM17InhFKt7HANj6cEpWHwyjS
jsPDfVv4CbUKaeUaXAn8s1BaxZtUgfi3+DNA0PyX4+K9ZGqNEtYBOLcQ9jDqWW4zvXPDuUrR803b
aP8K7wegNXPtrVcUAKR9Jajh9xXntjeo5NF7HJ5jqJ4XQI2VYN28yjt1EdpVzsftr4GmpzS7dUJ4
wAtYvCu9fi5/006019vGdqsv0gDe9WuVMcy1yrNDjkSmUdcrizmut7v/Tuc6YZjC5cwK7N+5Qg2N
4Qj3OyTd7/3Au6M7ifhR2iXtWH9jgPG7tDwvy1MW2xa1XMunOTQHMpqeLqRbS1FfuxsPTXWs2wta
goP+j3GPfrf/FR2N8kbam6M7/fT+iwlD+HnryPPOuYCs1L+JI7hXFyxKhS8BF5i/IL3DVYWmG2lf
ZRTGEuZ2vtgVujwS7/9nR7GQeBwLVwByQdj93o9nWnazMerRQsoSyr+QzyYXcysDvBup7bDp6ROm
JWDwPt7OI1qNNvsogXBs4BvCi2pIMd3vTqqZGmCrGtCUbKMk3pUoCaLkjxXlqhqgsAtJEH6Lj79L
scH4PfNb2yO/+h75HeyR34YqY2AdDdCU7VRs0B2dZ7SeHWb1IuyubB3evM3/bd3yXtiVrWQPpdyi
XVPv8xfqjNWPR7ZydjSbATaA7lsm/0oYEKz4TFtoFiUuUlT71xPcWOcgzj+1ng56u2ULXgMx24iG
gxD0Hmzb6+7fHc/tE0GH2p7yXs4rLdr12cx9HApCafAwJ84m8SYnt6HbjCui212GGk9uHnN/5+05
71AF3fB1OvQbb6rphYL7zJ2faLHRdwRvMlTnkSX0BoDSfplkesqARpSuAfycTYRdZXBOhVdg6qHj
Kd97o+iRlgRU6fb1oCftBOA5CQr2N/gQ2TMkMj9I+fbAZ95vDd8c6PackbxXJPD34A4HvNdZKBP3
p9+y4ROyRTq0YS8ekRhFGySFh9oC7qK0vTAd+eeB7vZrrd4rLFxLvsIMCJy4YN3emvoajBDP4Rui
ga82vEZI621K2ldQOK1v+akDX7UXxXv3HThi8F+IPvE+CN5FL4Qu3sHsf/kHfMcMGutKGgbRZm1H
PvAlzCYU2wcKlMPY47y551SMa6y3K61D4IG5h2ITVjyAJjyNuE+SB4roYmurN+pn8DZe79siWkrn
+fJPtX1lasUbgL1dLyGiA0dTvsEbC057tx/4EjqbxSYKYHjF28WNbw4cwSWq9vJTOe+0VPvKf/Ce
4Rf0q/rIC1Z+a7nnmJGMeUpgntBk8dnN7Uk3+8rPtl9/1vTCds/xYSkve1M8p6L5Obz22h9zzrdU
S7RG4XXT9QV0sAEG7R1dTnE8ZpP6OISL767aoC+/KDqxUPQj8fnwzR0UlkBX58dyDqg2zzFeG9Jr
W342p6v5IFmkrSUzpHH09FCXlHLa8/FZ6bW2/e54XMhMOUfrcn7JV9HG2va7fuSqq5luDxXSrWbT
BZz0T+k170dQgiRvt/c06tE5p02et/nsE/VqCxlDQVrkh00+CaRa2n4iDqneoaThkooFyPO+g0La
s3SF6DveV3Jebt5BJawnkYSDYAZeedw+O96Ll4JleLtSDj2n0BHZ+M4uOeccxByHT860G9t5C/4T
qe0Vd+Na3jgv3o/tsiWlncCzoWm4iGFGCWImGx3fnLNph332s2ipk3I88SdvJ4QnkXj2HJXSAt6i
cpJdx0w33RHaB+SzwHi+P2zDVxVMrZfjktFqI5DbfqOlfTkaMFW3X2sR6Mk+qcKWLf2EBkO+chQA
vlR86TmpruOJhz3/lOh6NPU+KS6vQP2F9qj23WgGkZ2y29T2D5Q+HHH7XI54gKVbn9Np8iAPCZxj
5KGc11vehj/NJ7pfD6+/BXi9ntGHd/VeboYpVsoOdxqIVxrOOqFz92uvGGgJ3spasymns6Wfx694
/tj7JuFGs4l/IoOnHGhvjvd0x3d2yznfUicSNgymGYe8yjAYuhWIZiVpV4tXqPr/eZoLP8/O3HDF
rb/HIdXK1/PGpRwE/kymRb56my2tA/pEgvcM5uZ9xTfN9FSJLQHYFpj9wBfeLsMpb/5Z30xUVN5p
ed1JNNSDRP7nTotbo6CmccO27QTial9tuXFo5+cy3hTlsumlk2o38T/KF5RKIaf2Zku78WbPJ8NM
AUQlyPrbbi36aHH1q/CzRGH9Ixe3i6ENKnwzzDDBuVTpPK8FtQvNA2ol3wx9zss3mvj4K3WAUMp5
1L0+OyOoaRsFdZT2VfBcLc+/BvMXBXWNEDSY2uL4ZZSrw1m96zR/OoDSTcM91d1AwxDQCq6Vg/3t
yjc/38knOe7/HKfViMUqmM79NyEqYdoU7Op/xPWytdy+Ci1DvVHUr9L4nb3dO2n9RmlL+pOdhSld
TTJ1an2TbKFO7JDcQ0Lr92+ecaX5JrWdcGV5T0KQ6xsyOB5n82sE25tabxPbyD/6vwGt4c0z7jfw
2YA6t+2rdfruuE2erySX3lfw6Flo0e9Jk6rFlOPU63jEfYeQKoNumTroOaLhByU7z8jeH10Vvqns
vARfWlrgZNVZtOHXQOoBFTZLWgCkOxYIEli8eWdhHNhPajTkjPdeYZ2jzQZQ4F1sOgtU3HRdgGZM
KHyuYrmbdl7zX8F93+7YGrQDwOT48ptvAojvtq9cx1S7aDqgeTrMOjoJrV7pGvt6WwJMC5Ih/Q6s
ijBJ9m8zk9wyt8+y4NZuu/I4WRFDpu1NlnblNzD6eV4Tez20MVtvy/W+kvKTZ3e858v4zi/lnNPP
+GaB4ByY06i/QcMrDu9YpPvvcR6M8qgQF9cXWaB05nbl0ZwdLZegShO8ZSfJRjuMZo8/vtMvtytt
C6y77fzSPLseO437/guy30Y6R15q9cYTG3QE7X3xvMRaGr+X+FaZfaXmnO/Wmr3Hve+giQaODji6
wzs2zv8UCMqtNs4h40McEo8g19XQR1NFk0IDE0OU4vkcum8Om0htR2hFz3aFt+HKQvUAypp+xCuv
x0JnU82eneO8x0P3ZGKBAA5VPxjns7ug8j8ANQApCikB+SElwNifBn/v994P/Xv4AJkUQh68Bgfv
c80msVRnNv23y2c5We2zSN9Jp/p96S3wWdK+wsH03RwY6tYd9Pq9Hxr2uRLJIihff+MwOinzoXet
w99FV1YogjSfpQ2L6U3iPwNcseG3rmzqWfDuj3ucN0zbK26UXgzSLd8stI0i78ve3fBb0HluWJjZ
N3xpfRPq643OnzSd32iknzb8hG88rfJ6Pj4ldXpjMUmIYRCPer9d22HXJM/1iuHGOCx317n+Ijyt
FN5vD3zSrvwer2X0HEGm8z+EK1UdrqEqribFu0jvelKw9W67kbN00Cx+k/fbrdmbxMsWgMxIyLzb
P0MUXSayaWFaBzKgFa948X9Ed+IZ1k32KU9aqWSuVT6zZypR7LUQzD0bB1AVqXqjGK5md6dBO9BT
duaf/ke8LBXT0P2Uysp25WVMQJc5PqHezRWWC93X6HpVUAtjy0IUSmFmdJtoDZfTgVH1akp+T+pj
ifEIxXDf0OP8ZkPk5sABHuOYgjeDfYkxSz07LSHDf9Jnb9FiJJgiX+4buo8nXgIAurAa3KvD3Pvc
sPjKzO3GTWn7c/Y0m7qTUK/CXQtrzp4Wkyebub4Fh+570/NMwluKIu6r9O7CGza3Fr1np/s0r8OL
OV83n0FqMFnKqXbjTd49KIRT9nWekr2zzDCJb51A9wtEFGMTxvHOQg2tVUErtDe7fxdx3wJQoLTP
tPE3EA4c9Z427MNnD/LPYuTmo9BDFCBRjyd1Uk63l/zqrBcEpmucp1PpHs3tH9/N+drkuSx4H9FD
2WkOP7qBIe2lON1T2sfd5ENTvIybPF8Mc9XQXoD3dPvVSsopvDtUd8Cf023y3Mk7nlGcK/YNMD1l
a3kv6TgQho60Ds8NFgbahloxkthDmy82wNbSBpgNphVXmztPaemkEQionB3rRpEGbDeLUQGcZOzm
A2LXZEx7lYXHw5vuP+cpi6hlODd0jTjLG1adwKjU3gDqhttwohOE3+3nOHrkta5fnyM7KXUlBluk
qxuiFF1jv+k1jv0B2CJll8jpO8q1R36LUILPt+C06ukzNCm//fVzYlOeWhpb92q+JFAkFgPqYUIB
7m/J6LRnL0JtwF+mFZqAdxcO4QO5CVDEEN710I/ErUu8pySYSnq58Y86ZeraAyXoVeyIInddJbCq
PDrYgdN+nEO1QVJMhalRopp+9QCZDv5eItPBJJSIG+lo7vFviD4qDoyf+9rLAutXB1JdP9LkPDKP
60suNGh+1+X+nvddXOVRB7auT3/g9cLlWpfjOHoPfZ3WQdbMCMMZLpbKdF+HqbBTDC9izq7O1eeB
wn9lTM/29BppwCWjwRpkLZgZX4L6kxhVOauZcDGSxlZxxR21BYyyXbl8WEwGtxiAQSp4z2DUXSyn
cnBCompqXTXfh41wf1fnjFBD3wXnKTSydeH9ijDMldBMydZ1BUo6XmzpmTS1gpK/xWnWjTPC2RMa
z8yru/bC2OebScUbAiKhvcgIA95Ms9doa7e06enEt1E9B+/vNzjsBs4km78rho8gXf88iZoZ6WYV
xh2y/0XlPlyBIcav/IEMcFvv/IH4aC1aLX/4A+2ObBSL65z/P7iLT3r5pNXHrQwOxp6CIK6cq9rD
G0aAY3BaQcGLufCfHIeyGKYI6zw4mHjfIFtLWogGyf2eFJLY3u9g7uX9EKX2Rn1XGe/ERTgEZ8j8
DAaPVnxLAZd7oSrxXHFS93JxDq+AaLJtzAt4k3rLhs18aMn5UA0xFRwPDg+4/X69vmdRcr6kPmPD
DkpPm0nIHNAJdkFH4MOB52Moz9N0ls0sqQO06Xa8Pwi6VddjIdUaKg6XX8bhutAo1Gshgem2aXwT
6/rojBBNGVw0vWSkux5Rhnl3+fvFqMNxtl9r4EIrBYePeuDUVi+Q09V8kjp88MIvFDQguvwnYoVA
UbEWNAcXzKo590mvp/wEjL7E+wZMtUvT9kNd1Hf9BYpKrf3+ud6tjevFfbT2M6HzOSCs1TAiaBdL
Ypyhmvz7d9QhF3cbMULOIVMrLn56P2q/MmB6alYgN8fVDXmrvXOjputatDJQu9hWvOkNLwkssS0B
+uDQdcNEC7sHoiZAnAoCuuuKk6pcEx0WuAGGZdp94HKZr96pshmI+ZcUzAiE8r3+9u6H1HW90q5x
ymIPU9NTdnclnQ6KT9LjXSBgQ8IzqDovkA51HPyujxktSISQXpuEvT4JGuDgKxt1YRIJ1NyvQSXo
FCheDrSW6TYzKkMwpkjwpwI1klJKdvo0FwRiVMg7TcZTdihtffusAPSZW2twAfW7lO1QaG8pHxZx
qViyoCG3xCQkNHZi021DZKK7VIzX2b58s+mFxR6z5/thXfk/4f21YhzpqjrJ79M8I5nabPz+O1Cj
H/IownXFeDpDZfYEQE2Yq+GXVNx+lozILdjM3/L7Ku5GhajzCAqwDJo/fATz1/VTUl0nuq49z/tb
QJzuAp3EX8DI2Siju8eH9qv7YJNtxjBRho2LF5/tkLBBhC5S8zVoDh2pG/MDOU8QZO3TPjzi2Zm2
EFd4o9DcZZxNXGAX0VZ8aB/nHxdLea+FotR6XwaJhmlNf+gYvh13cLdEkbRoO6TjA59gy7U42gr7
t8eSaWLrKg1RkARTKmPOdyDugQpbLB8goPyLu86eDt3Len0srx/vrq5DXKZijWys4HeH+ksGYJtV
rj/apOoH0UthUhpTgRrT43wzY5zndI6ptT2KKve2TwyhMbt9XhotJ3+Ha20b9e2rJXEfD/IG3qHl
0gJ/e1GqF3voOP8ci5h77KCowsj3FgsZatjJgPBLvuOh8I61yD/YQqXHVivF2vpLLOVTiiY5hj38
YoxwnsGrDP0fxYmrwhjxKkyK1CCgHE0DpgEV/mfCY+2KiAVM97u44HRqM99/Sg4NzsTtoqfNOM4v
D8aJ+2hAid+Iy88xMEl0x+Kk/oQkmVpTdVyutl8nec9AA8cA8xSBnhKgdXggfuMs7Lv2HNHbWk16
SdqJrlUoP7FuhbRXu8u90OGkM22Hb4zDM3eLgRdGW/A6CbpTzGWzYRN/E8WHBJTa3FTyFbGfbbH5
eeiVw9998J7plg8NQOVR7NemW96LJt1P9ANg2kVqH0BL4ctiqJ7Hqf3D12RpO2HyPhXcB0PFYq1t
MBYlt/cb0Xa9JTdOINr2uvQowb3ffNiFxxs7UzdeGvCpQ4B7m/cUTFCaWjve2/vBoUNaHIIObT/Y
pbgyclBl+rQTKHkwNTI7ju0nDxIS3LcTIv/DvdhrYJLQJIYi0VCL0wLe19RR4FBH2CDQPTiYf4d0
375ZQpshU+tdkgpzNyCO8HtCcQ5L+PoF9TNE6z8+kIzLplEXAOYFXiapNDVs/wa117Z1fKmA+nHX
Dk+34vlkmPSel0/WvAfb9t8Yj4jxooqJAxFxaMirkLZDsMXH65vW4M0Dg7mtxlxkqBfM9SAfplAU
y+8lqgdpOIKXw4W7uG1z9NRc9aoeY4yHTF5WT9b+V39eI2KIabtNSytDSZLptgPgfG4Yb2ykdEnK
vUSCagW66qXj3pNeFOj8rCuQlu1PGBBqaYiT7d3VFrhxBN481Lb3xsE5b3j3mObuxlEgpVNkkLLb
kaosfJtyOudNU/tXOqrSpPZZ5zxHzpla/eD3Hkf5kbIP9f+AZPpjZ9sJkcr0x+2tb7r0eBjjlljC
gh5whI9T6VCKbj2yNEoCH3brCrqaqEg0ajaOw8H1fBz995q8T3DhWou9W6+hIoxL+ah9luRboIB7
RxrAhXHMANIkLcgAkGnFLgBPA0ACRJS9Opqtu2wZhtQISdyry2JPp4G2R5elaKME5U3IwKZbDoLg
lh2NTVfj0lubEQg+GMv+ROd8VQkPJcKWxGkA3f2K3JB2AtvVA9Uu7dKkqc1NZ3BAfxo2AG1XXHqy
de2KsA+l/FWx2vX1meDFNGpZ7MIIY6M/tnfZ6L4PvDymekqTxXT7FK4TViMRHygvoxSHfudt1dPO
baVS19GfQnZHinoBj1ftITnRoof8tz7UMeiAHp43xlJqgvb44q6Famnfs0IArYXKacMy203z9nn3
epzpejrwcKEot7//iQgWQwYUbGZq3ROmxiDnik60NsCPW9rJ/qcJut4mlKMfdX1w8DqdqfUYTpnr
u719RmD96RzXl8Bmi0EUb9T7eC0Bl2RYBXnAs11ngvYRyHbq6NgX+8HIkgwUJr8f60dCBPWLbcmC
H75yaO+/gX1G4DBU0n6opEOdB8cfh9SH9h7+9oNDK3+HSqzpqUsDIGkXdw/g9//tMLW+G4fKa1HA
CEJ9M1v0TejToEbAH09H6oddh/ZulA5/u7Lqg4NdqeaQ/R8vLA4C3JVz3NQ+DOg9pP0BCgfC9f29
UGz9ScNPgSMVgH2jin0zafIQqxZCmz5Qfsz+Ez+F9T1OqHkvPDhVASBU02K1P7ZfJoV1yQ8//oBP
c9rZAFktFonIKh7Qt3W44g75kcuTTMjl3TLoZJDoYMdB7dmH6Sh3E4nUChL+Td594xmza7w4okJB
ilzJULwi2nlp228q3u75HAe2Iu92U2srcDdpfynIi0V4/4XnfByQNwJlc6eptUoh2qtjINTUNl+h
YsPk6MpYHrv1zRg64m1qO6hjwVtJcGQk9oV+MQ8lw1rK0o7rUHhG+S4qot99ipamcJwa57PjVgX4
8We+MVuaAtEhRilf3ocMq0++B/HqUVn3nDKYblmP68antKbbL9FQdSzWngPH1JM4bf1NB14+gBKG
dp1W7RR2F9ISUNcDqv6A+g/Q9KCFeiSyEFSFTdqesgOqYFHXfSIe1qTEAyuCtbl/zYA+ahMnYmgF
3Bt2Piam1F2zfgqtb0OD3pPAD+3vZmLiTjcIqTed7FZsL0Byf39I5N3BsagHLFayPgnQ9yLg8UgC
V9zQdYsp2wHVEuw3FXTfCN1oIQF2AFd3XRFav8KLwxT3tXjWfjfDZXi6u4ezqIbPzHby9Qtk42eg
UFB4D6bsQQpxrQj0fM/pgaZbnEDpB8pr9j/Z2QcVnNJDez/69oODplvKtPyCFCEW6EaVto51A58V
AaXvxx6BgA87Dz1vu412kVvpd/2rRlSCb0Ul6TH6OVxhKwUnBh76+qNvTbfotGhBjHl793QesUj7
SvFWEtocTtlDjQtBeJr04KiOh+3s/dg9D+PVS+9r98GvqbjzcIGt6P3Yg+AZnwll/LATpiy4A1IK
cK0K1yt9c8x4KcifJNInKVScpc4YSYkW4alRH2+kbOkQpC3dcBREFmJZ7OmSNrzC2PHp4LHDVwQJ
cbDzjNwdS/yIl8w0IVEHPd2Sr+L3lrb9rm7TC+DwFpo7j2g93w2DKt/hHWfz5yTQyUObl082oQSL
Flu7I9B5Rus3DCZ+yva+jPOV9vmWduM9wfUDH3ZQz3bFewXW2bcYAxovmwyjpfak32O/zOmk7mma
ls5z5A2v5D3uORLlOQUziZdxGelbz8eKt8QGEgovmsN53Upco5uetp/m3J6A9UYD9J/tUs7udSe9
MT5324k/T9jw+jyYi+GtczAMv89npjYI38NnUUkQ5y0OtQL0VQ5NBiiuhHo7AZ4KAIsvFSpjnPc4
GWdzOluSqQizAmoRvD91G2qI3u0uvW/xHWeBV74NEgzpvavJsBW3fqG1wGn37FzMd202RZzX2HDs
tgLcX9WBwgyDYtr+tMMpexLfw3WbIRVUBs9RKVgMGCm8M8/mQO20vAbMlA0qdm675RlfetsJ9+T2
DwUNUjd5vpRy9rmifLl3tAVc30GOuUBmE6DN9S5CO1GXmN434SD60gguuLZQY6d9RUfFYWCkY7/1
e9ZzhGjLOdfyZyhjiQ/zgZmHu7Q9/2xOgS27Jdf73tgKW1N74XnPl4mdX8op+9otf6XzVQdARud6
eluRD1fVaP99N06SM3xxEIOOF59cdlYDiAaAmpV2GI+pQxJwjYWWGQK1OpZbPiaDO8mzSwniPeid
JUraAVxW4JN9E0F7SgVhXSTRosXxk9968faMAps953XTTV/y6Usy430uG9zjxJQmQfzyc+aLbSXe
Xzlw1AsYS8lAsKtjKNnXAYGLIZoLiGvy1ZrTOnKWm023HudzN5dnh8W72JbdvtrSXoizg9zOI3K7
uPbVysYixXuqda9rUHA++FS0pwMNUjfqW/e6v2077JK9Gs9Os/cUP/+UFujeFj4fwJkmCQ5f0VmP
XFm5ayggS/DshEm3cmXYejMtZ5ghfTIO8b7FNhviuXwbn3HWbAI8uwnPm+t+wAouATztCyRvtump
GtXcg8IGwpObSa/reuhUj9aGoTWs8/Faw1OPwfNWaLybgKO25/SAG+O3KULRljpA9WwvNeW8svYH
IfwifBSEe980dD6jxRiFp7v20fkKueudM1h67ym15NOg5KNQ0/AnfQAZTj5HwXsILuLw4HPvQ/AQ
TeADEZQB+ikfVDWqxAiKoDZI7v/LJ5DdHpxVQLXHToys9qveg0A0wYX0MqbXUnqZpy+E9BtlVZLJ
9aZ1RYP/g4PdClq5q+0/+SE08fUnYlVNwnHtecqZqOdEcNpQZ6E1KSocji7zFWiYroGnVJ/nZX3X
jhiWqk8FJQgai61/VRZV0jURl7SgAK1JSPRpviSH+qLcdRo79tMw6na1QXLTSzgadv1wCpdgU7nk
Q/oRWH8BGOZeRF0VBh9aYwAkXbedihwGQN7a/HZMs/NksLtYw0ccL55TBH3+JRna0FT4Rlf1GTKt
UFSPX/acklYOwYLfFYzp/xTLkn2K98Ib2LZxD+HhCFPBKR+vGpSL10v8bDGKhrvGhcaO7d5T/rcO
yukgK3r2WL1BpmxTRF1wjoQqQYa86jhqh9ACr526QLKMYBX27F+QtOs3F0pWd/YCyVDf63LwU4sJ
KINvS6fbn1E6gK14kYQihyU67R8IfNG9CrAmcMEcxoWeL2WYA5huvhaKsjFCIguWFIwIgmzJh1AZ
dnaYt9nRwKaopi3Qi0s/OBji07UabqgDNKYCn2bUbPgC+bREg3waYLmm25NoBvLNMxIMrSldaV9F
R5qpEMSt/5CD4gDaIW0/tAeXO1CZ3u3bViMpf0VS+v0U5EvPK1ZviEPbrgaO/QBFnf5QRw8eRezA
QZF5v/EXYYfZ/BOXLFohgXzzQTYMU3ivBh4oFE7Z1IrZciEku03e3Tirvk5R5SLIhQ+75v2EfOfu
CGK7hrM8WuWGsbqidoXjKrpaU+vN/HBZghTWVfadCXUhTRh8m5qu3tTaINLJYeH38BOHyV5aSFMm
hqTRCGPXqN2C//iXfwQpb4/M5tULZfMiZrP0DOfZ3CxTqw9KmTvR1PYPXHq+Tk43tdVoqL41yPF0
Xf1v8FDGHA3JDcT0CBDxW41KRDsXSt4fvR+i3v3ddxD5xBk6q6hGPitfIPJ8HHv2nomQg9BBsJtw
Uxk0bjmgJWOHJVj6WtDa1kSvf2W9l6cNj6wFxUxHBhCldB6uwlZRs+HjwDpT6yYFjUi6AtPbeS/H
i9DXwkKVYOgLKP+hFW5+RcthVKkQ8KBItlsJFV0OJrsZ9zrvIuiJ7QrMOCHo8ApgJCPZNNSMYoU1
3cu7kKAli5/vsbbtdV13cvc52hDaoMVlP9zat7bPUbw6ZAR7FE8CuVmpEl6DxKcFwd3nQsWUgqgP
yOi1czzVZtR8K2zj2p+gwqsIzMTa6wWX+1/M6bHmYFfEIbcbsfG/yCLD6nEwssWani6x3VjjvZX4
/bQr6zxuYcyQgtX/3ksom7vOYFeC6vtKhHt43nbve11HRNB++BUkYbF5xXVtx356F+WxbRTPqPhj
k4Z6q38M9s5tWsiSNxWmoSxNrX+EqL45OMoleF5WvHvu9QRk11AaXeODOcaaXtwLQSrTitw+9M8A
oDBWUyuNdmtxh7MQRivFFY8eGOtuiOJwrVtjeqojbT+4rW6oEbwBpf1WqmXvXbZWUnbOQFyv0eZ9
DG1UfRIu+5yL4vaeBTP3+Vw2q1fHzwnPkLzv4SLS6gDq5z5e9xt2vsrUw1c0T9nwIBUngOvwMKxo
01esspme2huwtRc8hPbwZG2B5ySm4OnPQJjenZprMN2yMQqHfI3plnXgaAvAVA5+X5K4oZq1rcM1
VDDMAxDlO2RNPMr9t/BiAmlhFSCoND2la4UED/GzLLb25ymC9zuoc7oGA4Yba1qgvehI+xWA/Pj6
uOlFtEZsxdsJ2q8HNdJ7vvtS362UGIjHLHAsN+Rsptg3DvA9T1TAiG5qwzPSGy3DPDskL49qemog
Y+KkzTm+QZbsa7XhVAug6sUH3lYb3qmAZ3Z4wBMiAJzPCzSjxPZoEkS+h++Mg+uRoOtxjsDP0aHN
Erpmn6UMVQpVmpCAtA4iNEjH389Fnu9F+bnh2KsoazbbjuHPYza8nsDvyQVErbbNdC9GIADOLcLp
/NufPMP5OKwBuyafj9RHfvgU8tGE5QOiw41KyVemtk/O4Bw2FdRHWvbh87tyHE9ul1Bf+TqsvaFF
uudspP5O+mErZNV1Z6iiyFwFhcmVvHyqPrQY4y0PxcNibmXi1A4dJiDhkbYfmSqBoBY6jddxhvBA
S/3ffMZVOylf7z20YbbSwa2dzXz8ov2Jriu/4Xa6B/1538NYPU2sWwjlEmrhYr8e8ugaxc9DeL/u
Z6cNppvn4KDaOSkaGL6r4BzNa6lKB6NFMJDbn/ge5itScF6xSzehvUHq+kldD1Hbx/h5pIr1RaiB
E1sXaPmvUPUBN7oMuwA6AYJSxATmpbDxCwjQdH6pSYPxETAqlB/wL8+P2L/9BkmwPjI+jYneH0P7
DC66wYTjeL+fKAYI2jrTg9slqSMtYPrrvgNf0prZdlPhu953Dbvd17R95a4xvYQtCMIbBxmypqba
Nc71JkjSKwBj93vB/WtgnVtOQnDaiRrgi4Rn8Fz5i7TvEUjp6vxYNj108sDnJzqtLsV7Mu0EtK/0
yy6byFzwOZ8/fdEzX6iyHGjA5mFdrZjZ0/lJNUDIxTWoDO1Cney8qfUaDHlxJioxnlMTTK1/wJo8
r8l9jg/EbzZ/H3oqpDwB33pTmxuSEiKau9wOPgwAVeSYHBozj3xBa6Le90C8efYs8u8jP6opY0Bq
2/tySCqB5AEmedPU+gFkTpIpuD4fKZ9StnvfdHd7/TVjAQPMwe8hBQYoyPGbbjsI5KT4T+LGBg1W
u5/ErcWcXabW4QqNxmj9LnOlKgmHme1Yy2ttCjQ+ziOgCl6CorQb0dBBb5rXueEoCYCfJM/Bn3Cp
AMTalziILje2fXWjzvOV5F1u9P4IMrntOQDn1NuU5hhfixFEzMZrNGjxlLpxDiglkumxfUrnl6hn
wOHtJVzwfucl1ANAyzB3nh5m2AUOC8TH9ZjlCmg3yWQi3IVW6Bs+ozb42IqGlxtLbMZN3k7PxyZP
AlJM3oE4Y8ARz3RbDDglVIO7pEBYfxXWMYttS3zLjTVte93R3t2Gd2FegcPlmnM10GUTPOfiTDfP
r4piFSuy3ddneSE/79czIcpnv9T9BrQYsixJ+q6EMHu4sJbsYmFyWa0/z1cctS8MNfZXAHXMgDKe
t/ZKX7kx5911FSg9UCVO+QnEFZSZKDnt/c6/CvdM+0XMh+/6skd/RVqHEa3WK0PL8JvaOtwZGFSS
0/4NfWR/frg+EizPjq95ef7ZP6I8YnC1UoFMG3FdgtsXXLCef+oCktdScQJkSdB6kIvsUXgI1BM4
N9JJRFSYux+A+qAE3kP+O7/hSX4XSoJ8GE7PGqOaGv/0IkwjCNv7ZQ/ClocIW/ETsWlwgXTTz+sj
XQbS9XA9rZDhelYSSq9tSNzhXJt/aTdZFyZ5d204jTvcrgxccdiOa1/+d/jg5n99AC1n4tK8uj9l
3GEKfzeqf/nJwGYo/7fDRG3DKygWPHsK0UDhPf+DxwIB6Xo9mVsdQgMGYQrVNeRExPobl/02Whld
3fmT7H0zpdPd7bs+2RMIuIGFk3El7SX8k/MNyAlTyTnvnvaFcsq+nDefxfLRqRDT3O3e74BJccDB
F7avCQgbaFz08J6Cvm3vPDUMZLkZjd22LaupqTn5TWdgmPfNztNyymlX0ksIAnmxx/OydPIb7x6I
heDh/N1qDZUqHpHvxbxfQNXs3pPncC9hU9cTQjELrn98Bfj05wgDVFTueaqothmYzZpzYfPhF5Bn
lJ9FDiBTs5NHvfve9NNOWDNOA/1Syp7u/jWbkOe3S68AzaZWM1K7d92xrtKw/LtAMuhMrV9C0bpm
55AmIBF+YdA2tf4NjdZp4G69H5xdb6l2xJAPTvD89ZBP1/GQmIhYDuD9jMpT0Iued8keXiC/DTHM
jwQDEH8pEHkyX8E6N7VNxSlllwxs0KPfv/V1j37fNfY82p+b2o5jfcw2QkV5PwPnyUOQmBoYKvQv
N9i5jNS5kKz3esxWoPyUCKIW8KjYdFgqQP93GHfbTrheAqgEk0CjsKd4j1L4LRAfuNz9Tfcf+Pwm
nlI7llGdJmxq22u6LYHKbYTqgWq7fS+3WDSKEuKi87hAeD8ZT/rfN9CjksPgB/39cKVXVfX6LEfj
TC9u977nnwQsASqSKx2zc71PI4Pr7bpd2Nemzod/q/a05yd5Dz1Ly+V1ELv7aVV/yAeq1lVCQlDu
07qEUd1/oHmOZGqLAvgjdlPbF3wTDwoeD51+w1Hk4w0/ESO3nsF9CyBfw+WI6alB25BzW/e7dNCp
Seg7cWM0TOHMprZyGW0AbyzEFUTcx9oj0bToz9ThW49CaPtlxAb7XakndurcY7s6JXXeJZiKI1om
6tEe++lyS/ebNZvmk/R8HfVntC2l3anZepwypkML5Ly+rgammSnf5nSabssB8ZHS6Z1NTX0p7p11
FCpCJdJ9RNDoT7+U9o7IAAitgXzc3qzwQ2Tnq2Yh1TemmZ6e/2GNt9zizTd3fRfOD2o+BZAPUMDN
BM6FBxTyuQ/ia8/VAZNxuarq85wXgM8m9VbjPwmp8W+oavyVlxIbqMlAtXC+FWQG0q8nUP/5NszC
A1V1fkT7SahR5npWm8+ZWv9J08pSSw1aLDxMirjZ63zL02FS5d9x6tWFR3YXHuGzOJsZBKGY69Je
mA2CmU8tunDfZ1OYbmi6bVaIEnVce/W7Hno76smF+7rQjst7vCsntC6/B5qW9tFu/w1QTepz1yMh
7WKp7U1S16/D91tOfuh5lwFjnvwIWLSrKigfeBF4hXtv50vk4eJvLYKu17fPCmBJobmvRwHWq7lf
saC9CcsJJXSZdunGQrG6bKK/eE9Cie2mVgv4d+msnt1SlwFXcrgO8DHoAG92FZ7DceEtU9sW6oBv
loTLvfPuV0C56R4aJl/KuZwjTYurXN7tXMds239jGshWLum4xvUhqP0g6V4Jl3RLS0jjQrwv1Wzq
Bhlvan1Uon6OdW9qfR2y2KUb336jlHPDWy0Vvvn7fO63uhORzh566XlXFuql3/TUS6O4WrpPVUt3
YzB657jfMt3V4Zu/ByYr+tYOU9tIGgl2goqSjVi+S/kpBSoNVZZkIK0D+2fbctwZLtyDq+PXghNJ
2zcKSF2PCxrRu3Tj2lfJpF9BXZ8ERu3K5/uJIP18V73atvfGMVAiSAT8uSeFLKdukmgSIJ0Pbxj/
1YBkmn/E05FqeuyQ1L5K2hi1DXcv3+zO2Udm80Pmf9oywzf/rZzvXGNPFu5D3d81wlf4Kh9LEmBA
ZCc/9u7zHD3b6ZclGMVS3vR+551zcGzhwWcw6pD579d9h466fa+ibdI7ELvTe8BzRHoWN3yl708e
vSseWGojGmpvcO5bx5dFvTDU3/Cp4aTXfcTUmo9S86pXfXy5cJPvqiM+96dkYbS78H1S1w5J33re
7LS9bR3ewj2m4j043nYO8hbuO7HT7Iqp8VyfBO38KHbSchCDOa945++MqKnHfwCNZGewdt46Ubhv
JSggIAB580rKqa6DZ2hVDgT/ALVUnu3yxhnnu46ejWwK90d9N8OMedQMvAn4KMHtr1D+e3dxnQlG
moh+1PWPs2L9i+hqS8SVsU7I29QaB85dcir0oS4NOKGC3ccFrTeeD6e1Kwk3+0Gw7IOG6SpQx4NL
dsOmpqaj7etNnGnuYz07zxhacdOLjuPdh8hjI0rBe1Ah4H4Ra8SBdlcfnVPnixfuR+/9CP0oSu1H
qe1KhMw5gh1gbWQH2FtKHQDz8s050q5MdrmIm9d/pnc1mp6a/9YuuwQ8Jm8sPd/t8Ln1yOUeWgzC
HOybp6i1TNy+Wu9Kgbp22TzfyNg2d0NiZItdM6TUjXL7DLlrV9h6yVX7gG7vClyr2TMKrWan4lq8
2p4faDtsum0ixp0LNPHsZlpzZqIc0mFer6qjMpavBPObCXJIxderOySEdQc03oVGR5Wh69jZcHkA
tuL5WjrxcoR81vkGrP/M6ton1hr9z18WLp5PNr/iA/xXfYrFdfBcMatd3aPVdYYFIIfMVt9MSjLT
Pi6IfvYglNbzjdTyjfc7qq8c90GT521aytB7r/rU+473hiNQ3cAv3h3d1rD14Nkgn6NDgvZkS5Zv
9WDKbu95AN3+FvI5FNTU+gkGUgW053Jnym4olHe1/sTLelNbrRC87Y7AiZcVU9v7uBL0ke8qvfcd
n+tP55iemvOpaeYO01/Pb5wROPBNWseJTqup8KSp8BSiBCFVeNA3Z0/OdlPrm7TIsQ8rpggLdhUW
7FkTLfqImhFFpOIZjptax2IWTxW+5Z2zZ+P8I1A8zxHrxsKPuF3NU4VHoMcMP95elOrpmBRd+JH3
w5YeArQCBu++lFO+G17NOWW6tVIm4pGC3XbqHqa2TwHnc8h3L6E/Z/5B001jURSJaX7NpgsXbAQU
93jfXP/pSe8sxXfDwZTTvhv2ec+nvI5b46dxdwmY0MVFDe4+eOd/6n+lHJN+Kn3nKzyYs90d43Pv
5z3v/FdNc7Z7OoaIBZIzMN9I208LI0M8R457bnir0Vt40HvKdPd2w/F2y9tRKHbb3kbE8w/6btB7
wszXiNZN3vn7TMXb2xf1R1CRcuJls6n1R+Spwk+xfwO0xrM6CdSQbY/+5S9/OfnJm19KByi13nsw
pzXuY57tGm+X93jKd/7j53rX17bxaBRYQGKIcAH/YDuh0/td959xvUPdf871Fr7lOdVoajWB7PMV
ch07z4ht4rsc9En3wm1j0aJkt+QuO7HD7lpCpQHREQvixLgRhJrnE2vaXtNTislz5CPDwY1KNI4V
TnW5g/YqttkewhHhoG+Gsa1j9cUwZvP1hjm0MuX91rsdxUrXdRHrDziyN82PjLEoFGPTfO9rC73v
az7H1imKG1QVBb9TC3i3+/IU7IA57TMC3jw96i+iHo3netYjL7ILZ4j5SpdeTKA4uO30ed50XdUC
3zO9uAAq7sROq2sX6PtYd/4RC3C109r9Ip+v5Ft3KbIVAIALMIWV6caJgDAc2we+AYjpVTEVpHp4
w3lqDe/FkTuPqre9IQAIW9FeD1W0893DoMgbLRLUGl8Q2i5BEcut0inJ7yqAKFhxO7Hiyq055bYb
A95yfVvHui88O0tIqHv8kIE+NP6L+BWR8d1fhOE/hYP436GGzqPK91SEfJu/0LtbbYEkX54xZ7ta
v3JhWEFzvnbvBbGV1J4XABEzCanqaiY9HjSLE/laxZUNNAtib18EIZ7leomvL2+z4nDYilp9PkyD
DNWnNz1tPw8YaSZnKiOd7zZss/ZxUd7z3QOwQEq/IMU5X7sm+coV4OPw0n9ienFmwBcDNeB6Q91T
v1DVc1CqOrHl8o05u7zbTXPfaeuAKY2p+Luc46bb/4y4ZgZ25+sDfCk1CSe1JkndfwOkuBCRAByT
W3PybTeafZr1n1vdib5y60ajGYCeDsmbb+Vjk7pu4DXa/AWLcP4RERzRP/h+jPefMGPCFbl2qDl1
2bbjJZCcW4P6FBS4SCGOTgt0q9vGm7ynXkSJWzMqsK5m/DT7PV0rIg0Kyr0HvJ04ppQpJ3bZ3TAy
tOELNE4CMtd6p7W7bCVCJyqCX5w5lUKcJNBDzDCjSaBZOFe7rDCx9k8egyQuwekRtO+JnXbXWLKf
azrUcXitrfTQZ7/76MiJnZLLdmKnYmoFbmQATiUDGdPTa23ZaR3dQ4LlhSArQpMhsrss7URaBxBT
2XE0svlc0DczbP7GMr5yS+tT6gonLo0V2DJwlWsJn2P5fwuzFIjv3eH/axkKSRt2KE6DmD8tOVxv
3SYKCgPS8K22w+v8viIj8PCGTtI994TmSJeVTkXzo/YSm7E5fkMXuj0GNh5/KWBVd0onABZdvoPP
APrLjbr2ioFQtwHXa2knfJcac/YAPZfq4ac/cu/25JyTQM/eK6/27nHs0CLublOwvDDhhbmFr0gB
of73e/fhHMNXarvy6pP7O78chrlAe+xdGCRoAWI29yaL1D5X7JXePaByq5QF6fL71q9nJB4+ND29
oz3GK+Q3Nf2grZR8W5DyjUS5EXlT5e+aDdsE/V1Q/+up/rHiTU9fC2wphVX+sLS9KD/D67+/qP/X
hO5KKm/NhucEvm9MT3t4lf4O0fI2PewamrYf452wj7a6oqCz7fF0SZ7tRPYBd1dY11Xz/zfpJyAo
0lRuevpvOkYcbsSa2dCNqf7N+gnPv3/PenBJO0JV8IPp6Zswm8j9gLSOctDy9OGFGEpIngsW4k4q
1J6w2+E0GvWwsqsY7aNBZ/AeDCoY4Es7HOYP2xx1J/hiiY5ngnTcQdufMWHzr5oNzwiSvlxgenoD
6lfVBjcl3Vf12na8CV3uwpoNzyaAI0ZyTzY9/WsLDr1P1+raF5sh969cGWknuqNhfufZkZzzo+ti
pqdnWExPN+vaC+SEGuDDwWl7faVGUIiiNKWgDTUbSRNKBk3ITxoclBv5Pe0watFrbam44/KPq7A3
D6LYJ1BcwvV09R/Kh7T9NRuy51zhjtHYczdk4z6fS+/dx8dfDFudECPBjApANaD/gRwyQuOZNWW5
8GbF3Qwsx0FoKyS66mpciXd/s1v7RHCCtm1fcMmUF+YxsWS6NijX/d+fIGU3kpyaTf5HQTZ1/yro
2b0vQr8khU42tf4JIKvGQ255oppMrc+TTrhNjEGAi2tIQXpBEXR3idiuI/7x0Me7D4XVcyM5kNV3
BmRCoMMEsWB0D6439c6Er+WOTtvbHYP6bCfJin0w7r4HksL9Tdte11jvZaRnJTioDH2REZQX3njE
AztWFI2fQKeR00mCdosD9SbgwhmkHWhoITJfiaBxK5LoVQn15usj8oRaxFxBFfPsCXSfCFvgw/yI
Mnzjf6ClSxTDNL5jr3gbNe1dgXdBQhvbTrj0ILy8GcAOviv1bYfdh4PYDnKlHPQOdV1i6za+nRAF
U9g20pSOhtFLhLwPY0j3J2FQymIXQl/rWbbHAeqfAspn99+D49f84Orl86QaP4HrlEOf2MfXMA+7
aE6e3tWEud4QIL0qhtaxuxdQe039DRapbWmAr4KKtPjrTxFpL8W0eTytwtMO3oR7CAlXbldYSO/R
W4dx1m07jELtcbEUjQtfOOvGUThwBOtn6l2A2n1tTzQPcTTuF8LkMwXcCgFdm0L0T9Vi+j+EpY/B
0HUdiF4uL0Hxtfo0Pjb1TsY6XENXXTl1KDhMrQewom7GBSJtSyAw3XNKWTUK5acY/3GC4z9WyVce
CBQNhSJ8pfAtAgmeeugV6KV2koWLaSQxg78A3MngtoB0MGNP3dcdK2rig4P4n2dnbo8BFGSE8gBm
qV5VTrgCV7VueIvkaYvim+LZode8iPHbb6Yl0d0wg/ASgKdoPuS74a2uY+eDqmsTtkLeGVrfyt36
BnlD5R/TU2H0txL5gXDy44FkLObtvwcaPOfXm2696zynfQTQ7j2+kZJ3TQvw6t2EIXoMoUJ1XazC
u+FVX/wWvrJ12xgEDEWuand/KuqPmL1dealduclnbtvvGkwiASSmr1SPtOLwwOcCZlCCpkxFXGv3
TVvHGm0sbhSmHPe535J2te11J2w4z9YHAqZbcbq+4TzuIZpuL8UZZeE+/4eAqMb7NGIIVdRNR1Bv
LsVAhcC429aEHNgEND23+jFc64qJdSGBrZcAgVSqrnQU3Hwd9Ce9qfVdwUQoxBHZ7rPBFjA9HUZS
rfWnzabWzcgPP1ndq3yFb6Uc11D8DR/jRop3l6ntNolGjI03cyXeDJGQaX2F+6jNoS6h0vY9iPov
AAM/OhPJqacllHng9uwwbjiDeEyealQ9bniV91vf9Ypvtr79FlwCMz31prdwn0/T/jj6fOvxr7fw
O/1K5xHFnxSDfXaLEJwpO0GLGek5cvwBpGdbx2N2Nr7+MVwRibrxEZhvkTPGdDt2vefQh93F1Ibs
qVi+ggTC45uFbW5RE1weUjZ+wCYoDiGoCc7fS3xTN2MFB1yxwQk18vlu7WbRH/0fo3qsrG9X2rBx
ajUVbIcyWzRDMTPvbL23XIHyG5EXaLkD50ynKB8zdMzHA/HPf0wjRNGDQrr86nxoBQ362YmuQdDz
aAUKy1HBh/T4syRjjYjLx8VUcntph+foSy59e+lZz9EzbrNHi3RKnp2pIChgfg489CyODttQssBg
6SYPtlun5Omw5HzrPoqD218MNLcAuXCSiZTtSU91fiJLB72rzbupw/tfjsb5AIZpZhm9BYONoAda
F9rKKpRzFBb+DMjQf3tNkD9guAAWOpbqy9yCjHLCdFs0oNv6IK7F7PV0GH3mnAPNcb7VimahPueA
kALOBHBmw6/ZP34ZklWR1nHl1ZyOw59E0oP8ITIALdLmf34JH52GiOFFLSvEOfgAjhc15Kb1qk0Q
BTw/aVdF+ZLu7njAzj6wJ/ialA8W24o+sJvhx/6BXS+Wh8CX7R9aCY4CWxFIPKOquT4B+CDQCnA7
/JPzoetIqP18GqBKBmbZoeR86P62V0LIIzlM/OrVycUPeiQvPDJH2bP8C8qfe/B+7OkolZf49O2X
2CtsyaS0V3Cl7x5go/B44fo7SiOLZ2oC1IOMiF3Ru7XkoRme7BqEIuVSz04LIbjyajWf58bBHOtF
SxtGBlX4ePcLkRlsbeJ6eJTQh3drm0TZultxfpHWEZxq0D8+H7F5TmlcIF5d5m00FduZtN3I9VdS
I5/v9FyvgM6a4BvKbgXmOhNwpcBcsB/FC1h+T8Buyf0DauNWLN/3gYBnZ8KVOP6mdXD91rsDZpU+
QvMOgD+IOG69AI6uIvgD+nhg1ONAz6ZNNeK/rUacqaGmOwpmmDWbQPNFSHup4rMr3ngj6cXuLs9O
2BdW8dR5E7Dz6nuMzlA/gXiihlRTNR//j9ABsvl4LvrKx9ge+wDeMzvsNt23h9W3YrsG8PgfRBxL
flH/t53A7piKqhHN4Go2UdRxpKf593AUrSh8A+/iwOzD1Nk8teIvPUHNHpzfebqllpfC1JZgs20t
/W1fme7aDtjv6gA/KPkW01Md2AXKj3mPw1jsTz6Ng7D7QR/kxsdQHDevYcTpj3JOx16tPGfgeov1
WJyrvLuQr67iKCyeHUltHTc2Q6wk31qbJTQ/wOwDkF60hns5C4K8L/vyaVBdshzbxOybrXgrbPq0
tQaJDMRv4mPlAwVcZd2KY2dwMAXOD+zjYzPEQdHj5x07iTjFz0d1YEUsyvNYlCUnSQXVf4jkcziO
e4r43qc8B/yneHZLEHDXVuISvT8OAnPOu4/u1uL4lhoc9RRylYJLS67QmLgo6FocdC1RXVCPjw8k
zehdC15fucU3O2G3tlaMPF4S5CAdk3C0Mor291eeojavAprSAv5y7qtGCmdx91p0TznFmRb8begf
/Oyp8PbVYP0mYrxPoJP6GzU91Q2UZyj5gUg7jJUFnvPadcagzAN6ffmKbzk1qy8fx2a/r57otPjy
skH/6nBNRIK973mP+2/hJV50oWQLIRkmcb+JsVBCjQdI1zDsyyW2Cmw/73f+PGxjLTQj9ieg/FOk
EJXqUzMhBC9jTS0mUjuwlp46TUVeRDBA9FH4KIBt6OU5LmrfbHteobrSM/6rCA43wqjpv20FRHPZ
VHzAj/oXJtwMBELfqmh/wvY80jIU4079FGJ1x5F8XD8FOvQXjGoUGYrWOlQKAhpOAVYiDGAWUMne
77yq3yVvRf0uoiyXIijtLI19w9H940+BQNcyHGV6sND7P/0P18GhM794HbSePU+0UlGKOUmlUNSt
WL1BKIoh/5Ez/8PV9wHIXCB1NVUf9ECsSrXqwqryf6gKld5VuPIsUVbqG7rlYy5vDoBEAEiJ6u66
GPwl4DeSv56YIRD/IORDFeE5ZgaMVLFQN2q1eN/13WX7FIDfP+pDdK22B8WkCar6CaxQGDViJE58
ADd762lkp/EQs1bHwvhHiGeSYXBtWysRmwsS1iFVzyBVvKxqp/o1DNkbdmId8cpbif2qFMuP/Iid
19pqgVUWQ3H8w84RP2U/A7QFnl3AWbRWoKwXv03i10ViKuk8JckF8W2DqrECkQngr4YISSIizjT1
WwzckO3bbPODl3Ngq+15PY60QM4SMcZUi9/FOG1BkfcpNnSFbe0zZh6wugABi22rve9+/6jXZVPa
eA563FaOeLFt2PpsZmqtx2YRNCdTO/WmuWsWH09hVOPcLPSF+QuxrjYcexVGDRCHub5bbUfA2V5v
Qe3psVaGQkfIOWlqvZvapx7jPXWR6Sl5/Zlo94PPoZCDDEbzDExPUQ6e76P9t1EmgLJ3PohZzQhz
ljpSXm4vTN1YYBvWPbu1w2X1ja8F7OlJYzDp96AApu33drYXSie/9cZjyNZq+GN68TDSsQiK7Nkl
4Jfd2pIwTuwzOrXHywu9byzwvgMVN85zOuCOhlj+CUCsd3dbwHTbWWzD11599VXp5MnPOr/UtCu/
983QnkgE45KmgJriccFdiyG2/1VDiCO4PE7yxRfso7ytniNnoMFdQzCPIuxGyJx3UXI91QTIf22F
k68U9EJmCSgTKrbwGinYQtwaiF8MsSFdAtDYAZEyvIuhL3CqEpCaA4mMwjHRAp7IPx3FrQhfDmpe
ZGQhKLcNOUgtf+VgFDpJQYlO+UHRk7c+cZR4DSS7b7EtFft8G3GWHnPd7x4CGJLGajGWqe1XyDo7
A4718VDGq7FhnD9gdQi5Q6rMi/inuwMbEOjzHEvYSpg6XAYVw76tyVx4GqFkgfhtnK69O7C87QW2
fNvBiQdmb/HuCELfx/42dY/g6WTev5UBEOZNsgXe9RzTe3chJCUM8oACXNZ2wtUPA8bxbqD8DbC9
3d71KhCDdTDXHZRE4me39h6RvutvZwOBTdyP/7q2oh/kla/AZsXEXS4qdCL18k3iH/W5coiFZdyC
6QfeaPsU0t8yFFms6xA4azZ5LbZA/Ku86bvmnQvm65+N2JHwcBKh/xI6SXCUhWdmxMzGQIKuBsDg
q9orz+4gvjA9XfhWV2yIaal5n6O6hTZuO3kuEIDGGYZdaKs7rPXb5PMQAvnrj/Pmgx//b93YchgF
n4mF+kVO8cUbj0LeMnCMfquVs46yFYlEJN8hdbHYcR5IwFLtNbV2ISHx2HLA0633Yo04j19+5dWO
Po1nl+LZoXgVnq59tYQovloJqGae9c0+611r03uhcTHCRwDNueou9yu+OZt882+VXtlNAtcbi3n5
fZKp7UtwPcCAi3yZ2BbtuU+iSPXm2vypQIlvKLaTtxPq+zYPkNC+8Kx3l3fOpnZlgHf+rd7Cu0TW
PWVe/5P1xi+8//R8L63/aYSp4J/dfrUFVjKIb8EKMD1VKkFs8Gox+vEHFMDvG0osdthl2YbDzonC
k+0sEH8MKAQiHnicl5uZodxzr4WmWmPG/PT77CRC/PIqqN29PqRxQPec1v2uAs/Hkmv0M0iMp0My
55RkajVATPK3dZha12AyrVk0GoEp0nnwth02tSZh5I33U1slYamw8FgibDTID72BfZ5jRn9jfwKY
CVMbionqrdixfZnHP7Yz32ol7XB3ItGRs9vUaoVwyMEPvTTwjueY4j143PS3qS6qZfeHW1eDI+2w
RnArVoQpNhv8+HVArWfnOKC/vcSmeD49ntYRuPbsfO9nCxe0z3+w3PvuZc/0QyKOrfZlYi19/2jb
bxmEQYiznaSOZ40rznRzBUTyef082V5MNgOTiSpxXYz1MW7reqBvd4HNbITfB/DP1rUcok9Cygts
K/9bELN7e80m09OXJdRs+ClGck3FH9l9l+cZFIdxK32+O06BI62jbb/p7o6uNYFAoH0lg/SlI+zM
IMrWe+BPW4crd7diQwb0m9fAHw388cU/BkFes//r1ei5i3v+BmLQMzVpEyB3FaV1eHYm7ajZBGkx
29H+xMX4K342eY4lpXXUbJiKrT/nit3aW/fZSb7u1m4MulqFy53gi8+FeBuexdgoydt/hS7XFQ9Y
q4Yz8v19xJuUTe4T2G6pGt5uD/cRL4eXN7MBOxfEa0LkfcRLS6Om+B3WXwfvM2yCplc89p9//0f/
19FHvPQccr8zHuKkwjcBvl19xMtI4/iysYGAuMnw+4PUO15mJrk3NmN7QDxs7Aly73hZk8j9InZC
S4bxH+uDvvyyCnSn4p/johxP9RHPVU/58iaReLxtfZXXWd9YxXjbYBvpBK9ExptxSRov8CJkEKuI
kfGgNjomNPOIHVBXbAs2DHw394pnvySDu5MGwZ/HGSf+rt7xJixtaUH3E9FYpxds/44JdTxfqkOo
yfqfKaQZUGgvHHzr/Ywl9AHf9DFj46QLp5vgcq52wa9lrSAIy6qLjLME/p9QXemqBPciJsoOZWat
R5hOipHk0exGiPAsfEbGHrfArxm+TYI6dMucbknQT//2QWl0jKXcpEC57BBk5XHxj5lHMYcX4ghj
pubGZc2VK6xVlQ0NjS7rUqe12d1grWuwFswrt65orHZOiI2NtgkcpYWMlUj92Oy/v1zFMjRsWxRj
WPTJdFd3V1d3V1dXd1d3z7liE9MwxhT4AgHGtjH+z87+9b/18MUNezaOPWF4bfg2qeS14RW1dS3W
xGSGQ1HASZTZMYqr7qrL7oLXuqv7+7m7HngngByuB4IHiAfiNTGoeHHIMV9VdT9zJMHd9/37/b/3
H4sIAAAAAAACA+z9CWCURfIwjPfzzDOTmWSSGWACCQQZYJCEyyQkIYEAE5JAIgFiEg4VHUIyIZGQ
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        /*
 * WARNING: do not edit!
 * Generated by Makefile from include/openssl/x509v3.h.in
 *
 * Copyright 1999-2023 The OpenSSL Project Authors. All Rights Reserved.
 *
 * Licensed under the Apache License 2.0 (the "License").  You may not use
 * this file except in compliance with the License.  You can obtain a copy
 * in the file LICENSE in the source distribution or at
 * https://www.openssl.org/source/license.html
 */



#ifndef OPENSSL_X509V3_H
# define OPENSSL_X509V3_H
# pragma once

# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define HEADER_X509V3_H
# endif

# include <openssl/bio.h>
# include <openssl/x509.h>
# include <openssl/conf.h>
# include <openssl/x509v3err.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Forward reference */
struct v3_ext_method;
struct v3_ext_ctx;

/* Useful typedefs */

typedef void *(*X509V3_EXT_NEW)(void);
typedef void (*X509V3_EXT_FREE) (void *);
typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long);
typedef int (*X509V3_EXT_I2D) (const void *, unsigned char **);
typedef STACK_OF(CONF_VALUE) *
    (*X509V3_EXT_I2V) (const struct v3_ext_method *method, void *ext,
                       STACK_OF(CONF_VALUE) *extlist);
typedef void *(*X509V3_EXT_V2I)(const struct v3_ext_method *method,
                                struct v3_ext_ctx *ctx,
                                STACK_OF(CONF_VALUE) *values);
typedef char *(*X509V3_EXT_I2S)(const struct v3_ext_method *method,
                                void *ext);
typedef void *(*X509V3_EXT_S2I)(const struct v3_ext_method *method,
                                struct v3_ext_ctx *ctx, const char *str);
typedef int (*X509V3_EXT_I2R) (const struct v3_ext_method *method, void *ext,
                               BIO *out, int indent);
typedef void *(*X509V3_EXT_R2I)(const struct v3_ext_method *method,
                                struct v3_ext_ctx *ctx, const char *str);

/* V3 extension structure */

struct v3_ext_method {
    int ext_nid;
    int ext_flags;
/* If this is set the following four fields are ignored */
    ASN1_ITEM_EXP *it;
/* Old style ASN1 calls */
    X509V3_EXT_NEW ext_new;
    X509V3_EXT_FREE ext_free;
    X509V3_EXT_D2I d2i;
    X509V3_EXT_I2D i2d;
/* The following pair is used for string extensions */
    X509V3_EXT_I2S i2s;
    X509V3_EXT_S2I s2i;
/* The following pair is used for multi-valued extensions */
    X509V3_EXT_I2V i2v;
    X509V3_EXT_V2I v2i;
/* The following are used for raw extensions */
    X509V3_EXT_I2R i2r;
    X509V3_EXT_R2I r2i;
    void *usr_data;             /* Any extension specific data */
};

typedef struct X509V3_CONF_METHOD_st {
    char *(*get_string) (void *db, const char *section, const char *value);
    STACK_OF(CONF_VALUE) *(*get_section) (void *db, const char *section);
    void (*free_string) (void *db, char *string);
    void (*free_section) (void *db, STACK_OF(CONF_VALUE) *section);
} X509V3_CONF_METHOD;

/* Context specific info for producing X509 v3 extensions*/
struct v3_ext_ctx {
# define X509V3_CTX_TEST 0x1
# ifndef OPENSSL_NO_DEPRECATED_3_0
#  define CTX_TEST X509V3_CTX_TEST
# endif
# define X509V3_CTX_REPLACE 0x2
    int flags;
    X509 *issuer_cert;
    X509 *subject_cert;
    X509_REQ *subject_req;
    X509_CRL *crl;
    X509V3_CONF_METHOD *db_meth;
    void *db;
    EVP_PKEY *issuer_pkey;
/* Maybe more here */
};

typedef struct v3_ext_method X509V3_EXT_METHOD;

SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD)
#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))
#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx)))
#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp)))
#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null())
#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n)))
#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n))
#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk))
#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk))
#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i)))
#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)))
#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))
#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))
#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk)))
#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk)))
#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))
#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx))
#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr)))
#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))
#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))
#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum)
#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk))
#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))
#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)))
#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)))
#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp)))


/* ext_flags values */
# define X509V3_EXT_DYNAMIC      0x1
# define X509V3_EXT_CTX_DEP      0x2
# define X509V3_EXT_MULTILINE    0x4

typedef BIT_STRING_BITNAME ENUMERATED_NAMES;

typedef struct BASIC_CONSTRAINTS_st {
    int ca;
    ASN1_INTEGER *pathlen;
} BASIC_CONSTRAINTS;

typedef struct PKEY_USAGE_PERIOD_st {
    ASN1_GENERALIZEDTIME *notBefore;
    ASN1_GENERALIZEDTIME *notAfter;
} PKEY_USAGE_PERIOD;

typedef struct otherName_st {
    ASN1_OBJECT *type_id;
    ASN1_TYPE *value;
} OTHERNAME;

typedef struct EDIPartyName_st {
    ASN1_STRING *nameAssigner;
    ASN1_STRING *partyName;
} EDIPARTYNAME;

typedef struct GENERAL_NAME_st {
# define GEN_OTHERNAME   0
# define GEN_EMAIL       1
# define GEN_DNS         2
# define GEN_X400        3
# define GEN_DIRNAME     4
# define GEN_EDIPARTY    5
# define GEN_URI         6
# define GEN_IPADD       7
# define GEN_RID         8
    int type;
    union {
        char *ptr;
        OTHERNAME *otherName;   /* otherName */
        ASN1_IA5STRING *rfc822Name;
        ASN1_IA5STRING *dNSName;
        ASN1_STRING *x400Address;
        X509_NAME *directoryName;
        EDIPARTYNAME *ediPartyName;
        ASN1_IA5STRING *uniformResourceIdentifier;
        ASN1_OCTET_STRING *iPAddress;
        ASN1_OBJECT *registeredID;
        /* Old names */
        ASN1_OCTET_STRING *ip;  /* iPAddress */
        X509_NAME *dirn;        /* dirn */
        ASN1_IA5STRING *ia5;    /* rfc822Name, dNSName,
                                 * uniformResourceIdentifier */
        ASN1_OBJECT *rid;       /* registeredID */
        ASN1_TYPE *other;       /* x400Address */
    } d;
} GENERAL_NAME;

typedef struct ACCESS_DESCRIPTION_st {
    ASN1_OBJECT *method;
    GENERAL_NAME *location;
} ACCESS_DESCRIPTION;

SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION)
#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))
#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx)))
#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp)))
#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null())
#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n)))
#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n))
#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))
#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))
#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i)))
#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)))
#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))
#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))
#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)))
#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)))
#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))
#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx))
#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr)))
#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))
#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))
#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum)
#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))
#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))
#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)))
#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)))
#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME)
#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk))
#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx)))
#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp)))
#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null())
#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n)))
#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n))
#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk))
#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk))
#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i)))
#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)))
#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))
#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))
#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk)))
#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk)))
#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc))
#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx))
#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr)))
#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))
#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))
#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum)
#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk))
#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk))
#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk)))
#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc)))
#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp)))


typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE;
typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE;
typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;

SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES)
#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk))
#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx)))
#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp)))
#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null())
#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n)))
#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n))
#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk))
#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk))
#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i)))
#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)))
#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))
#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))
#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk)))
#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk)))
#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc))
#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx))
#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr)))
#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))
#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))
#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum)
#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk))
#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk))
#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk)))
#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc)))
#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp)))


typedef struct DIST_POINT_NAME_st {
    int type;
    union {
        GENERAL_NAMES *fullname;
        STACK_OF(X509_NAME_ENTRY) *relativename;
    } name;
/* If relativename then this contains the full distribution point name */
    X509_NAME *dpname;
} DIST_POINT_NAME;
/* All existing reasons */
# define CRLDP_ALL_REASONS       0x807f

# define CRL_REASON_NONE                         -1
# define CRL_REASON_UNSPECIFIED                  0
# define CRL_REASON_KEY_COMPROMISE               1
# define CRL_REASON_CA_COMPROMISE                2
# define CRL_REASON_AFFILIATION_CHANGED          3
# define CRL_REASON_SUPERSEDED                   4
# define CRL_REASON_CESSATION_OF_OPERATION       5
# define CRL_REASON_CERTIFICATE_HOLD             6
# define CRL_REASON_REMOVE_FROM_CRL              8
# define CRL_REASON_PRIVILEGE_WITHDRAWN          9
# define CRL_REASON_AA_COMPROMISE                10

struct DIST_POINT_st {
    DIST_POINT_NAME *distpoint;
    ASN1_BIT_STRING *reasons;
    GENERAL_NAMES *CRLissuer;
    int dp_reasons;
};

SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT)
#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk))
#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx)))
#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp)))
#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null())
#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n)))
#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n))
#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk))
#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk))
#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i)))
#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)))
#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))
#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))
#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk)))
#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk)))
#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc))
#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx))
#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr)))
#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))
#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))
#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum)
#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk))
#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk))
#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk)))
#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc)))
#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp)))


typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;

struct AUTHORITY_KEYID_st {
    ASN1_OCTET_STRING *keyid;
    GENERAL_NAMES *issuer;
    ASN1_INTEGER *serial;
};

/* Strong extranet structures */

typedef struct SXNET_ID_st {
    ASN1_INTEGER *zone;
    ASN1_OCTET_STRING *user;
} SXNETID;

SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID)
#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk))
#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx)))
#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp)))
#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null())
#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n)))
#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n))
#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk))
#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk))
#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i)))
#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)))
#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))
#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))
#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk)))
#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk)))
#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc))
#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx))
#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr)))
#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))
#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))
#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum)
#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk))
#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk))
#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk)))
#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc)))
#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp)))



typedef struct SXNET_st {
    ASN1_INTEGER *version;
    STACK_OF(SXNETID) *ids;
} SXNET;

typedef struct ISSUER_SIGN_TOOL_st {
    ASN1_UTF8STRING *signTool;
    ASN1_UTF8STRING *cATool;
    ASN1_UTF8STRING *signToolCert;
    ASN1_UTF8STRING *cAToolCert;
} ISSUER_SIGN_TOOL;

typedef struct NOTICEREF_st {
    ASN1_STRING *organization;
    STACK_OF(ASN1_INTEGER) *noticenos;
} NOTICEREF;

typedef struct USERNOTICE_st {
    NOTICEREF *noticeref;
    ASN1_STRING *exptext;
} USERNOTICE;

typedef struct POLICYQUALINFO_st {
    ASN1_OBJECT *pqualid;
    union {
        ASN1_IA5STRING *cpsuri;
        USERNOTICE *usernotice;
        ASN1_TYPE *other;
    } d;
} POLICYQUALINFO;

SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO)
#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk))
#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx)))
#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp)))
#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null())
#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n)))
#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n))
#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk))
#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk))
#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i)))
#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)))
#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))
#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))
#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk)))
#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk)))
#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc))
#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx))
#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr)))
#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))
#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))
#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum)
#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk))
#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk))
#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk)))
#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc)))
#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp)))



typedef struct POLICYINFO_st {
    ASN1_OBJECT *policyid;
    STACK_OF(POLICYQUALINFO) *qualifiers;
} POLICYINFO;

SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO)
#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk))
#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx)))
#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp)))
#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null())
#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n)))
#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n))
#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk))
#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk))
#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i)))
#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)))
#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))
#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))
#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk)))
#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk)))
#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc))
#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx))
#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr)))
#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))
#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))
#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum)
#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk))
#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk))
#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk)))
#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc)))
#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp)))


typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES;

typedef struct POLICY_MAPPING_st {
    ASN1_OBJECT *issuerDomainPolicy;
    ASN1_OBJECT *subjectDomainPolicy;
} POLICY_MAPPING;

SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING)
#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk))
#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx)))
#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp)))
#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null())
#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n)))
#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n))
#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk))
#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk))
#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i)))
#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)))
#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))
#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))
#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk)))
#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk)))
#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc))
#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx))
#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr)))
#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))
#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))
#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum)
#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk))
#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk))
#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk)))
#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc)))
#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp)))


typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS;

typedef struct GENERAL_SUBTREE_st {
    GENERAL_NAME *base;
    ASN1_INTEGER *minimum;
    ASN1_INTEGER *maximum;
} GENERAL_SUBTREE;

SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE)
#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))
#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx)))
#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp)))
#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null())
#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n)))
#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n))
#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk))
#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk))
#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i)))
#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)))
#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))
#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))
#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk)))
#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk)))
#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))
#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx))
#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr)))
#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))
#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))
#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum)
#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk))
#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))
#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)))
#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)))
#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp)))


struct NAME_CONSTRAINTS_st {
    STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;
    STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;
};

typedef struct POLICY_CONSTRAINTS_st {
    ASN1_INTEGER *requireExplicitPolicy;
    ASN1_INTEGER *inhibitPolicyMapping;
} POLICY_CONSTRAINTS;

/* Proxy certificate structures, see RFC 3820 */
typedef struct PROXY_POLICY_st {
    ASN1_OBJECT *policyLanguage;
    ASN1_OCTET_STRING *policy;
} PROXY_POLICY;

typedef struct PROXY_CERT_INFO_EXTENSION_st {
    ASN1_INTEGER *pcPathLengthConstraint;
    PROXY_POLICY *proxyPolicy;
} PROXY_CERT_INFO_EXTENSION;

DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)

struct ISSUING_DIST_POINT_st {
    DIST_POINT_NAME *distpoint;
    int onlyuser;
    int onlyCA;
    ASN1_BIT_STRING *onlysomereasons;
    int indirectCRL;
    int onlyattr;
};

/* Values in idp_flags field */
/* IDP present */
# define IDP_PRESENT     0x1
/* IDP values inconsistent */
# define IDP_INVALID     0x2
/* onlyuser true */
# define IDP_ONLYUSER    0x4
/* onlyCA true */
# define IDP_ONLYCA      0x8
/* onlyattr true */
# define IDP_ONLYATTR    0x10
/* indirectCRL true */
# define IDP_INDIRECT    0x20
/* onlysomereasons present */
# define IDP_REASONS     0x40

# define X509V3_conf_err(val) ERR_add_error_data(6, \
                        "section:", (val)->section, \
                        ",name:", (val)->name, ",value:", (val)->value)

# define X509V3_set_ctx_test(ctx) \
    X509V3_set_ctx(ctx, NULL, NULL, NULL, NULL, X509V3_CTX_TEST)
# define X509V3_set_ctx_nodb(ctx) (ctx)->db = NULL;

# define EXT_BITSTRING(nid, table) { nid, 0, ASN1_ITEM_ref(ASN1_BIT_STRING), \
                        0,0,0,0, \
                        0,0, \
                        (X509V3_EXT_I2V)i2v_ASN1_BIT_STRING, \
                        (X509V3_EXT_V2I)v2i_ASN1_BIT_STRING, \
                        NULL, NULL, \
                        table}

# define EXT_IA5STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_IA5STRING), \
                        0,0,0,0, \
                        (X509V3_EXT_I2S)i2s_ASN1_IA5STRING, \
                        (X509V3_EXT_S2I)s2i_ASN1_IA5STRING, \
                        0,0,0,0, \
                        NULL}

#define EXT_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \
                        0,0,0,0, \
                        (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \
                        (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \
                        0,0,0,0, \
                        NULL}

# define EXT_END { -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}

/* X509_PURPOSE stuff */

# define EXFLAG_BCONS            0x1
# define EXFLAG_KUSAGE           0x2
# define EXFLAG_XKUSAGE          0x4
# define EXFLAG_NSCERT           0x8

# define EXFLAG_CA               0x10
# define EXFLAG_SI               0x20 /* self-issued, maybe not self-signed */
# define EXFLAG_V1               0x40
# define EXFLAG_INVALID          0x80
/* EXFLAG_SET is set to indicate that some values have been precomputed */
# define EXFLAG_SET              0x100
# define EXFLAG_CRITICAL         0x200
# define EXFLAG_PROXY            0x400

# define EXFLAG_INVALID_POLICY   0x800
# define EXFLAG_FRESHEST         0x1000
# define EXFLAG_SS               0x2000 /* cert is apparently self-signed */

# define EXFLAG_BCONS_CRITICAL   0x10000
# define EXFLAG_AKID_CRITICAL    0x20000
# define EXFLAG_SKID_CRITICAL    0x40000
# define EXFLAG_SAN_CRITICAL     0x80000
# define EXFLAG_NO_FINGERPRINT   0x100000

# define KU_DIGITAL_SIGNATURE    0x0080
# define KU_NON_REPUDIATION      0x0040
# define KU_KEY_ENCIPHERMENT     0x0020
# define KU_DATA_ENCIPHERMENT    0x0010
# define KU_KEY_AGREEMENT        0x0008
# define KU_KEY_CERT_SIGN        0x0004
# define KU_CRL_SIGN             0x0002
# define KU_ENCIPHER_ONLY        0x0001
# define KU_DECIPHER_ONLY        0x8000

# define NS_SSL_CLIENT           0x80
# define NS_SSL_SERVER           0x40
# define NS_SMIME                0x20
# define NS_OBJSIGN              0x10
# define NS_SSL_CA               0x04
# define NS_SMIME_CA             0x02
# define NS_OBJSIGN_CA           0x01
# define NS_ANY_CA               (NS_SSL_CA|NS_SMIME_CA|NS_OBJSIGN_CA)

# define XKU_SSL_SERVER          0x1
# define XKU_SSL_CLIENT          0x2
# define XKU_SMIME               0x4
# define XKU_CODE_SIGN           0x8
# define XKU_SGC                 0x10 /* Netscape or MS Server-Gated Crypto */
# define XKU_OCSP_SIGN           0x20
# define XKU_TIMESTAMP           0x40
# define XKU_DVCS                0x80
# define XKU_ANYEKU              0x100

# define X509_PURPOSE_DYNAMIC    0x1
# define X509_PURPOSE_DYNAMIC_NAME       0x2

typedef struct x509_purpose_st {
    int purpose;
    int trust;                  /* Default trust ID */
    int flags;
    int (*check_purpose) (const struct x509_purpose_st *, const X509 *, int);
    char *name;
    char *sname;
    void *usr_data;
} X509_PURPOSE;

SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE)
#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk))
#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx)))
#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp)))
#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null())
#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n)))
#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n))
#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk))
#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk))
#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i)))
#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)))
#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))
#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))
#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk)))
#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk)))
#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc))
#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx))
#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr)))
#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))
#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))
#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum)
#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk))
#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk))
#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk)))
#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc)))
#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp)))



# define X509_PURPOSE_SSL_CLIENT         1
# define X509_PURPOSE_SSL_SERVER         2
# define X509_PURPOSE_NS_SSL_SERVER      3
# define X509_PURPOSE_SMIME_SIGN         4
# define X509_PURPOSE_SMIME_ENCRYPT      5
# define X509_PURPOSE_CRL_SIGN           6
# define X509_PURPOSE_ANY                7
# define X509_PURPOSE_OCSP_HELPER        8
# define X509_PURPOSE_TIMESTAMP_SIGN     9

# define X509_PURPOSE_MIN                1
# define X509_PURPOSE_MAX                9

/* Flags for X509V3_EXT_print() */

# define X509V3_EXT_UNKNOWN_MASK         (0xfL << 16)
/* Return error for unknown extensions */
# define X509V3_EXT_DEFAULT              0
/* Print error for unknown extensions */
# define X509V3_EXT_ERROR_UNKNOWN        (1L << 16)
/* ASN1 parse unknown extensions */
# define X509V3_EXT_PARSE_UNKNOWN        (2L << 16)
/* BIO_dump unknown extensions */
# define X509V3_EXT_DUMP_UNKNOWN         (3L << 16)

/* Flags for X509V3_add1_i2d */

# define X509V3_ADD_OP_MASK              0xfL
# define X509V3_ADD_DEFAULT              0L
# define X509V3_ADD_APPEND               1L
# define X509V3_ADD_REPLACE              2L
# define X509V3_ADD_REPLACE_EXISTING     3L
# define X509V3_ADD_KEEP_EXISTING        4L
# define X509V3_ADD_DELETE               5L
# define X509V3_ADD_SILENT               0x10

DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS)

DECLARE_ASN1_FUNCTIONS(SXNET)
DECLARE_ASN1_FUNCTIONS(SXNETID)

DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL)

int SXNET_add_id_asc(SXNET **psx, const char *zone, const char *user, int userlen);
int SXNET_add_id_ulong(SXNET **psx, unsigned long lzone, const char *user,
                       int userlen);
int SXNET_add_id_INTEGER(SXNET **psx, ASN1_INTEGER *izone, const char *user,
                         int userlen);

ASN1_OCTET_STRING *SXNET_get_id_asc(SXNET *sx, const char *zone);
ASN1_OCTET_STRING *SXNET_get_id_ulong(SXNET *sx, unsigned long lzone);
ASN1_OCTET_STRING *SXNET_get_id_INTEGER(SXNET *sx, ASN1_INTEGER *zone);

DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)

DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)

DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME)
int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);

ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
                                     X509V3_CTX *ctx,
                                     STACK_OF(CONF_VALUE) *nval);
STACK_OF(CONF_VALUE) *i2v_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
                                          ASN1_BIT_STRING *bits,
                                          STACK_OF(CONF_VALUE) *extlist);
char *i2s_ASN1_IA5STRING(X509V3_EXT_METHOD *method, ASN1_IA5STRING *ia5);
ASN1_IA5STRING *s2i_ASN1_IA5STRING(X509V3_EXT_METHOD *method,
                                   X509V3_CTX *ctx, const char *str);
char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8);
ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(X509V3_EXT_METHOD *method,
                                   X509V3_CTX *ctx, const char *str);

STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method,
                                       GENERAL_NAME *gen,
                                       STACK_OF(CONF_VALUE) *ret);
int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen);

DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES)

STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
                                        GENERAL_NAMES *gen,
                                        STACK_OF(CONF_VALUE) *extlist);
GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method,
                                 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);

DECLARE_ASN1_FUNCTIONS(OTHERNAME)
DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b);
void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value);
void *GENERAL_NAME_get0_value(const GENERAL_NAME *a, int *ptype);
int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
                                ASN1_OBJECT *oid, ASN1_TYPE *value);
int GENERAL_NAME_get0_otherName(const GENERAL_NAME *gen,
                                ASN1_OBJECT **poid, ASN1_TYPE **pvalue);

char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
                            const ASN1_OCTET_STRING *ia5);
ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method,
                                         X509V3_CTX *ctx, const char *str);

DECLARE_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
int i2a_ACCESS_DESCRIPTION(BIO *bp, const ACCESS_DESCRIPTION *a);

DECLARE_ASN1_ALLOC_FUNCTIONS(TLS_FEATURE)

DECLARE_ASN1_FUNCTIONS(CERTIFICATEPOLICIES)
DECLARE_ASN1_FUNCTIONS(POLICYINFO)
DECLARE_ASN1_FUNCTIONS(POLICYQUALINFO)
DECLARE_ASN1_FUNCTIONS(USERNOTICE)
DECLARE_ASN1_FUNCTIONS(NOTICEREF)

DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS)
DECLARE_ASN1_FUNCTIONS(DIST_POINT)
DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME)
DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT)

int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, const X509_NAME *iname);

int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc);
int NAME_CONSTRAINTS_check_CN(X509 *x, NAME_CONSTRAINTS *nc);

DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)

DECLARE_ASN1_ITEM(POLICY_MAPPING)
DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_MAPPING)
DECLARE_ASN1_ITEM(POLICY_MAPPINGS)

DECLARE_ASN1_ITEM(GENERAL_SUBTREE)
DECLARE_ASN1_ALLOC_FUNCTIONS(GENERAL_SUBTREE)

DECLARE_ASN1_ITEM(NAME_CONSTRAINTS)
DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)

DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS)
DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS)

GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
                               const X509V3_EXT_METHOD *method,
                               X509V3_CTX *ctx, int gen_type,
                               const char *value, int is_nc);

# ifdef OPENSSL_CONF_H
GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method,
                               X509V3_CTX *ctx, CONF_VALUE *cnf);
GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
                                  const X509V3_EXT_METHOD *method,
                                  X509V3_CTX *ctx, CONF_VALUE *cnf,
                                  int is_nc);

void X509V3_conf_free(CONF_VALUE *val);

X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid,
                                     const char *value);
X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, const char *name,
                                 const char *value);
int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, const char *section,
                            STACK_OF(X509_EXTENSION) **sk);
int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
                         X509 *cert);
int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
                             X509_REQ *req);
int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, const char *section,
                             X509_CRL *crl);

X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf,
                                    X509V3_CTX *ctx, int ext_nid,
                                    const char *value);
X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
                                const char *name, const char *value);
int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
                        const char *section, X509 *cert);
int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
                            const char *section, X509_REQ *req);
int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
                            const char *section, X509_CRL *crl);

int X509V3_add_value_bool_nf(const char *name, int asn1_bool,
                             STACK_OF(CONF_VALUE) **extlist);
int X509V3_get_value_bool(const CONF_VALUE *value, int *asn1_bool);
int X509V3_get_value_int(const CONF_VALUE *value, ASN1_INTEGER **aint);
void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash);
# endif

char *X509V3_get_string(X509V3_CTX *ctx, const char *name, const char *section);
STACK_OF(CONF_VALUE) *X509V3_get_section(X509V3_CTX *ctx, const char *section);
void X509V3_string_free(X509V3_CTX *ctx, char *str);
void X509V3_section_free(X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *section);
void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subject,
                    X509_REQ *req, X509_CRL *crl, int flags);
/* For API backward compatibility, this is separate from X509V3_set_ctx(): */
int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey);

int X509V3_add_value(const char *name, const char *value,
                     STACK_OF(CONF_VALUE) **extlist);
int X509V3_add_value_uchar(const char *name, const unsigned char *value,
                           STACK_OF(CONF_VALUE) **extlist);
int X509V3_add_value_bool(const char *name, int asn1_bool,
                          STACK_OF(CONF_VALUE) **extlist);
int X509V3_add_value_int(const char *name, const ASN1_INTEGER *aint,
                         STACK_OF(CONF_VALUE) **extlist);
char *i2s_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const ASN1_INTEGER *aint);
ASN1_INTEGER *s2i_ASN1_INTEGER(X509V3_EXT_METHOD *meth, const char *value);
char *i2s_ASN1_ENUMERATED(X509V3_EXT_METHOD *meth, const ASN1_ENUMERATED *aint);
char *i2s_ASN1_ENUMERATED_TABLE(X509V3_EXT_METHOD *meth,
                                const ASN1_ENUMERATED *aint);
int X509V3_EXT_add(X509V3_EXT_METHOD *ext);
int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist);
int X509V3_EXT_add_alias(int nid_to, int nid_from);
void X509V3_EXT_cleanup(void);

const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
int X509V3_add_standard_extensions(void);
STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
void *X509V3_EXT_d2i(X509_EXTENSION *ext);
void *X509V3_get_d2i(const STACK_OF(X509_EXTENSION) *x, int nid, int *crit,
                     int *idx);

X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value,
                    int crit, unsigned long flags);

#ifndef OPENSSL_NO_DEPRECATED_1_1_0
/* The new declarations are in crypto.h, but the old ones were here. */
# define hex_to_string OPENSSL_buf2hexstr
# define string_to_hex OPENSSL_hexstr2buf
#endif

void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
                        int ml);
int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag,
                     int indent);
#ifndef OPENSSL_NO_STDIO
int X509V3_EXT_print_fp(FILE *out, X509_EXTENSION *ext, int flag, int indent);
#endif
int X509V3_extensions_print(BIO *out, const char *title,
                            const STACK_OF(X509_EXTENSION) *exts,
                            unsigned long flag, int indent);

int X509_check_ca(X509 *x);
int X509_check_purpose(X509 *x, int id, int ca);
int X509_supported_extension(X509_EXTENSION *ex);
int X509_PURPOSE_set(int *p, int purpose);
int X509_check_issued(X509 *issuer, X509 *subject);
int X509_check_akid(const X509 *issuer, const AUTHORITY_KEYID *akid);
void X509_set_proxy_flag(X509 *x);
void X509_set_proxy_pathlen(X509 *x, long l);
long X509_get_proxy_pathlen(X509 *x);

uint32_t X509_get_extension_flags(X509 *x);
uint32_t X509_get_key_usage(X509 *x);
uint32_t X509_get_extended_key_usage(X509 *x);
const ASN1_OCTET_STRING *X509_get0_subject_key_id(X509 *x);
const ASN1_OCTET_STRING *X509_get0_authority_key_id(X509 *x);
const GENERAL_NAMES *X509_get0_authority_issuer(X509 *x);
const ASN1_INTEGER *X509_get0_authority_serial(X509 *x);

int X509_PURPOSE_get_count(void);
X509_PURPOSE *X509_PURPOSE_get0(int idx);
int X509_PURPOSE_get_by_sname(const char *sname);
int X509_PURPOSE_get_by_id(int id);
int X509_PURPOSE_add(int id, int trust, int flags,
                     int (*ck) (const X509_PURPOSE *, const X509 *, int),
                     const char *name, const char *sname, void *arg);
char *X509_PURPOSE_get0_name(const X509_PURPOSE *xp);
char *X509_PURPOSE_get0_sname(const X509_PURPOSE *xp);
int X509_PURPOSE_get_trust(const X509_PURPOSE *xp);
void X509_PURPOSE_cleanup(void);
int X509_PURPOSE_get_id(const X509_PURPOSE *);

STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x);
STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x);
void X509_email_free(STACK_OF(OPENSSL_STRING) *sk);
STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
/* Flags for X509_check_* functions */

/*
 * Always check subject name for host match even if subject alt names present
 */
# define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT    0x1
/* Disable wildcard matching for dnsName fields and common name. */
# define X509_CHECK_FLAG_NO_WILDCARDS    0x2
/* Wildcards must not match a partial label. */
# define X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS 0x4
/* Allow (non-partial) wildcards to match multiple labels. */
# define X509_CHECK_FLAG_MULTI_LABEL_WILDCARDS 0x8
/* Constraint verifier subdomain patterns to match a single labels. */
# define X509_CHECK_FLAG_SINGLE_LABEL_SUBDOMAINS 0x10
/* Never check the subject CN */
# define X509_CHECK_FLAG_NEVER_CHECK_SUBJECT    0x20
/*
 * Match reference identifiers starting with "." to any sub-domain.
 * This is a non-public flag, turned on implicitly when the subject
 * reference identity is a DNS name.
 */
# define _X509_CHECK_FLAG_DOT_SUBDOMAINS 0x8000

int X509_check_host(X509 *x, const char *chk, size_t chklen,
                    unsigned int flags, char **peername);
int X509_check_email(X509 *x, const char *chk, size_t chklen,
                     unsigned int flags);
int X509_check_ip(X509 *x, const unsigned char *chk, size_t chklen,
                  unsigned int flags);
int X509_check_ip_asc(X509 *x, const char *ipasc, unsigned int flags);

ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc);
int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE) *dn_sk,
                             unsigned long chtype);

void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent);
SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE)
#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk))
#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx)))
#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp)))
#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null())
#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n)))
#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n))
#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk))
#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk))
#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i)))
#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)))
#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))
#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))
#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk)))
#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk)))
#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))
#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx))
#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr)))
#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))
#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))
#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum)
#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk))
#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk))
#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk)))
#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)))
#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp)))



#ifndef OPENSSL_NO_RFC3779
typedef struct ASRange_st {
    ASN1_INTEGER *min, *max;
} ASRange;

# define ASIdOrRange_id          0
# define ASIdOrRange_range       1

typedef struct ASIdOrRange_st {
    int type;
    union {
        ASN1_INTEGER *id;
        ASRange *range;
    } u;
} ASIdOrRange;

SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange)
#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk))
#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx)))
#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp)))
#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null())
#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n)))
#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n))
#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk))
#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk))
#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i)))
#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)))
#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))
#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))
#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk)))
#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk)))
#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc))
#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx))
#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr)))
#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))
#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))
#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum)
#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk))
#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk))
#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk)))
#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc)))
#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp)))


typedef STACK_OF(ASIdOrRange) ASIdOrRanges;

# define ASIdentifierChoice_inherit              0
# define ASIdentifierChoice_asIdsOrRanges        1

typedef struct ASIdentifierChoice_st {
    int type;
    union {
        ASN1_NULL *inherit;
        ASIdOrRanges *asIdsOrRanges;
    } u;
} ASIdentifierChoice;

typedef struct ASIdentifiers_st {
    ASIdentifierChoice *asnum, *rdi;
} ASIdentifiers;

DECLARE_ASN1_FUNCTIONS(ASRange)
DECLARE_ASN1_FUNCTIONS(ASIdOrRange)
DECLARE_ASN1_FUNCTIONS(ASIdentifierChoice)
DECLARE_ASN1_FUNCTIONS(ASIdentifiers)

typedef struct IPAddressRange_st {
    ASN1_BIT_STRING *min, *max;
} IPAddressRange;

# define IPAddressOrRange_addressPrefix  0
# define IPAddressOrRange_addressRange   1

typedef struct IPAddressOrRange_st {
    int type;
    union {
        ASN1_BIT_STRING *addressPrefix;
        IPAddressRange *addressRange;
    } u;
} IPAddressOrRange;

SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange)
#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk))
#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx)))
#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp)))
#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null())
#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n)))
#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n))
#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk))
#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk))
#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i)))
#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)))
#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))
#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))
#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk)))
#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk)))
#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc))
#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx))
#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr)))
#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))
#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))
#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum)
#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk))
#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk))
#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk)))
#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc)))
#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp)))


typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges;

# define IPAddressChoice_inherit                 0
# define IPAddressChoice_addressesOrRanges       1

typedef struct IPAddressChoice_st {
    int type;
    union {
        ASN1_NULL *inherit;
        IPAddressOrRanges *addressesOrRanges;
    } u;
} IPAddressChoice;

typedef struct IPAddressFamily_st {
    ASN1_OCTET_STRING *addressFamily;
    IPAddressChoice *ipAddressChoice;
} IPAddressFamily;

SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily)
#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk))
#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx)))
#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp)))
#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null())
#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n)))
#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n))
#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk))
#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk))
#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i)))
#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)))
#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))
#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))
#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk)))
#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk)))
#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc))
#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx))
#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr)))
#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))
#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))
#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum)
#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk))
#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk))
#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk)))
#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc)))
#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp)))



typedef STACK_OF(IPAddressFamily) IPAddrBlocks;

DECLARE_ASN1_FUNCTIONS(IPAddressRange)
DECLARE_ASN1_FUNCTIONS(IPAddressOrRange)
DECLARE_ASN1_FUNCTIONS(IPAddressChoice)
DECLARE_ASN1_FUNCTIONS(IPAddressFamily)

/*
 * API tag for elements of the ASIdentifer SEQUENCE.
 */
# define V3_ASID_ASNUM   0
# define V3_ASID_RDI     1

/*
 * AFI values, assigned by IANA.  It'd be nice to make the AFI
 * handling code totally generic, but there are too many little things
 * that would need to be defined for other address families for it to
 * be worth the trouble.
 */
# define IANA_AFI_IPV4   1
# define IANA_AFI_IPV6   2

/*
 * Utilities to construct and extract values from RFC3779 extensions,
 * since some of the encodings (particularly for IP address prefixes
 * and ranges) are a bit tedious to work with directly.
 */
int X509v3_asid_add_inherit(ASIdentifiers *asid, int which);
int X509v3_asid_add_id_or_range(ASIdentifiers *asid, int which,
                                ASN1_INTEGER *min, ASN1_INTEGER *max);
int X509v3_addr_add_inherit(IPAddrBlocks *addr,
                            const unsigned afi, const unsigned *safi);
int X509v3_addr_add_prefix(IPAddrBlocks *addr,
                           const unsigned afi, const unsigned *safi,
                           unsigned char *a, const int prefixlen);
int X509v3_addr_add_range(IPAddrBlocks *addr,
                          const unsigned afi, const unsigned *safi,
                          unsigned char *min, unsigned char *max);
unsigned X509v3_addr_get_afi(const IPAddressFamily *f);
int X509v3_addr_get_range(IPAddressOrRange *aor, const unsigned afi,
                          unsigned char *min, unsigned char *max,
                          const int length);

/*
 * Canonical forms.
 */
int X509v3_asid_is_canonical(ASIdentifiers *asid);
int X509v3_addr_is_canonical(IPAddrBlocks *addr);
int X509v3_asid_canonize(ASIdentifiers *asid);
int X509v3_addr_canonize(IPAddrBlocks *addr);

/*
 * Tests for inheritance and containment.
 */
int X509v3_asid_inherits(ASIdentifiers *asid);
int X509v3_addr_inherits(IPAddrBlocks *addr);
int X509v3_asid_subset(ASIdentifiers *a, ASIdentifiers *b);
int X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b);

/*
 * Check whether RFC 3779 extensions nest properly in chains.
 */
int X509v3_asid_validate_path(X509_STORE_CTX *);
int X509v3_addr_validate_path(X509_STORE_CTX *);
int X509v3_asid_validate_resource_set(STACK_OF(X509) *chain,
                                      ASIdentifiers *ext,
                                      int allow_inheritance);
int X509v3_addr_validate_resource_set(STACK_OF(X509) *chain,
                                      IPAddrBlocks *ext, int allow_inheritance);

#endif                         /* OPENSSL_NO_RFC3779 */

SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING)
#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk))
#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx)))
#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp)))
#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null())
#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n)))
#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n))
#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk))
#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk))
#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i)))
#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)))
#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))
#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))
#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk)))
#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk)))
#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc))
#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx))
#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr)))
#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))
#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))
#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum)
#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk))
#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk))
#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk)))
#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc)))
#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp)))


/*
 * Admission Syntax
 */
typedef struct NamingAuthority_st NAMING_AUTHORITY;
typedef struct ProfessionInfo_st PROFESSION_INFO;
typedef struct Admissions_st ADMISSIONS;
typedef struct AdmissionSyntax_st ADMISSION_SYNTAX;
DECLARE_ASN1_FUNCTIONS(NAMING_AUTHORITY)
DECLARE_ASN1_FUNCTIONS(PROFESSION_INFO)
DECLARE_ASN1_FUNCTIONS(ADMISSIONS)
DECLARE_ASN1_FUNCTIONS(ADMISSION_SYNTAX)
SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO)
#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk))
#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx)))
#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp)))
#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null())
#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n)))
#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n))
#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk))
#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk))
#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i)))
#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)))
#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))
#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))
#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk)))
#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk)))
#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc))
#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx))
#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr)))
#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))
#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))
#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum)
#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk))
#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk))
#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk)))
#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc)))
#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS)
#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk))
#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx)))
#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp)))
#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null())
#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n)))
#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n))
#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk))
#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk))
#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i)))
#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)))
#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))
#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))
#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk)))
#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk)))
#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc))
#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx))
#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr)))
#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))
#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))
#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum)
#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk))
#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk))
#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk)))
#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc)))
#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp)))

typedef STACK_OF(PROFESSION_INFO) PROFESSION_INFOS;

const ASN1_OBJECT *NAMING_AUTHORITY_get0_authorityId(
    const NAMING_AUTHORITY *n);
const ASN1_IA5STRING *NAMING_AUTHORITY_get0_authorityURL(
    const NAMING_AUTHORITY *n);
const ASN1_STRING *NAMING_AUTHORITY_get0_authorityText(
    const NAMING_AUTHORITY *n);
void NAMING_AUTHORITY_set0_authorityId(NAMING_AUTHORITY *n,
    ASN1_OBJECT* namingAuthorityId);
void NAMING_AUTHORITY_set0_authorityURL(NAMING_AUTHORITY *n,
    ASN1_IA5STRING* namingAuthorityUrl);
void NAMING_AUTHORITY_set0_authorityText(NAMING_AUTHORITY *n,
    ASN1_STRING* namingAuthorityText);

const GENERAL_NAME *ADMISSION_SYNTAX_get0_admissionAuthority(
    const ADMISSION_SYNTAX *as);
void ADMISSION_SYNTAX_set0_admissionAuthority(
    ADMISSION_SYNTAX *as, GENERAL_NAME *aa);
const STACK_OF(ADMISSIONS) *ADMISSION_SYNTAX_get0_contentsOfAdmissions(
    const ADMISSION_SYNTAX *as);
void ADMISSION_SYNTAX_set0_contentsOfAdmissions(
    ADMISSION_SYNTAX *as, STACK_OF(ADMISSIONS) *a);
const GENERAL_NAME *ADMISSIONS_get0_admissionAuthority(const ADMISSIONS *a);
void ADMISSIONS_set0_admissionAuthority(ADMISSIONS *a, GENERAL_NAME *aa);
const NAMING_AUTHORITY *ADMISSIONS_get0_namingAuthority(const ADMISSIONS *a);
void ADMISSIONS_set0_namingAuthority(ADMISSIONS *a, NAMING_AUTHORITY *na);
const PROFESSION_INFOS *ADMISSIONS_get0_professionInfos(const ADMISSIONS *a);
void ADMISSIONS_set0_professionInfos(ADMISSIONS *a, PROFESSION_INFOS *pi);
const ASN1_OCTET_STRING *PROFESSION_INFO_get0_addProfessionInfo(
    const PROFESSION_INFO *pi);
void PROFESSION_INFO_set0_addProfessionInfo(
    PROFESSION_INFO *pi, ASN1_OCTET_STRING *aos);
const NAMING_AUTHORITY *PROFESSION_INFO_get0_namingAuthority(
    const PROFESSION_INFO *pi);
void PROFESSION_INFO_set0_namingAuthority(
    PROFESSION_INFO *pi, NAMING_AUTHORITY *na);
const STACK_OF(ASN1_STRING) *PROFESSION_INFO_get0_professionItems(
    const PROFESSION_INFO *pi);
void PROFESSION_INFO_set0_professionItems(
    PROFESSION_INFO *pi, STACK_OF(ASN1_STRING) *as);
const STACK_OF(ASN1_OBJECT) *PROFESSION_INFO_get0_professionOIDs(
    const PROFESSION_INFO *pi);
void PROFESSION_INFO_set0_professionOIDs(
    PROFESSION_INFO *pi, STACK_OF(ASN1_OBJECT) *po);
const ASN1_PRINTABLESTRING *PROFESSION_INFO_get0_registrationNumber(
    const PROFESSION_INFO *pi);
void PROFESSION_INFO_set0_registrationNumber(
    PROFESSION_INFO *pi, ASN1_PRINTABLESTRING *rn);

# ifdef  __cplusplus
}
# endif
#endif
                                                                                                                                                                                                                                                O+^1Fs1ðvP ]5\D[oC:rҲrȨj;9;7Fɭ#ӨĈ%tT:-#WUTؓ߻0uptU3b\<2	"JBJ9:֜+z$zu~@/_ܙ()\EpUF1Ơ"7z @1#kDq%!6f	XHqpgMvٖX
j?SH:P$309ҕ?X{ܮ8ԭC:K22Q Q!YF&;$B\iĞ21bN:JǤgC(mΰϑf$eke39*	_ontHe_:)`r)QTwXf?zҭq~DN1^Ñ~!޹|,	9	 R}Rk	f8O231d10b0'$_Dgv_Sz
}>Џ{>>i^iƛfik\4<3͘T%ӈyeX.S,˯L+(J?%%Zy+_ej̗*Dmנ%XFtg&ZzRvvVu
73zE^Vϵ`>A]J
1o0;DŊp xdh⍍C,ʺ|h_
@ 1(RVC 'DHpTgih;ǘ5?ilJJ,_g٥Oguڿ:xe+ r^AN-0;,J 
:kvU`mS7||.*.2kIֲ?X'5RM<iQ$RY貹\o辴:>f~gNsU~tXy/f[lOp埲/io;}-Z;R}K5za4X΂
-9]U"{WJ	ѽ*
ؒ~]
XT!k_c1[~]?:,MgXmʬ,OiR鰷vl_m[JﳟGh~~$Xy'J+inw;菰Jg]쿷ǜF\=i6^1ua~8?([PiIortRHi$8|K
nnpW;
4)/z@ Hr2/i)i&Z|ZXz$O N.2~ZXTAR?t9NeǴ`IOA7{|wkSOr1f%IF`ֈk~

o }L2շx)|r=U?5AxğG;N_[YRFؽ)q"VOETB:ltK8cwTcT0́Yg|J(t *TB;1s%WP}`|xҽ=&O%5V]v̽Fp^yHX|*t>M@ҧX@o@aLYkvQ$VSvmloj=$V+/Hu@76}h"p a1DB* 5BD_~7Axw)T͢u Zvm#f?hhk!gziuHPV7#FK\
TuQ0ЫF*|a{gf4o}϶2[V{eN6.I6q] >ocn.UwS2Qް)y5b @lh]\]u}ȍ ,t륥YԞeB<Rl	3wDJRH5u_tf;K'SVO)ȪjOA<T'}l
_uNh`v6d/M&XNxm¢b`G̪c^uDCM$BtСc;9ոҏuavu>*42`
DoH62^4T Cpl߰328\lM
iR2i2^r*O@!o7f,0Iӗ3"'}@wafe,9ZSPlJ՞"9p3G͙1άG')} [R( ^@Ql,j-)@eAS#  I"A_K[Cݛ͜ FpI}F'fK+7N$AlA,@.SQ⽮5h՘f'xz:Vlf()#)l 7J~7^)1QH%̵a9dgy6dԪ.fA6*=.N4gr܊#'$?pp40vu粃W$jt叀P+d4$DvrE66A/.Q[t\g
Vk_8X
Si
C?N鏏9?å'\ʒ	ai#2bǅ	<
V~L']z
@UzJ<R1U/  4ak*7	y3ij%`"DĈ[ciPODDC?K3ڧljd={训 9F{@. 0.zW퓻;@#c 2{f$ZgN(|T#Iπ)eJx(DG12g@,jǺ*,_"u3dL4= I&GT v!EY
tO܅kf$IR
R)ke w+z@Q|LrcIaՃ *z	a5T^ҒIhR޹f3Oj ~MXڶc[E`}=#! oeJ{kX2ay-ςb^[VL(gRhG'w@fM2Ǯ^،:0{A^{/\ki,:T8/]paZ
of
owdI2Ӭ:{/Wk_$˟w_ә:uq]O2[{;haC,WO"5_|eNlشh8>/FZ$Hu8Lg%IN!ti~M6M2DA*OQR,5ֿn)'ak, p9{*{/43#\L}S5oҦ
a9/<Dw8Oҙٛ#AҬU0[^v9P%ⵘO,Ɗb3\|b/V6o⵸\s񉓰b/c\|b[.>0p'}զ-
6kq4qłX2ܩHrd:?HNb|Df,2}W|0-qzŷvm%u][֮uS|\n!͙G__Xɺ{J&/
uBß΋/,[`ukڅXuڭ]<+pݿa_xyTuu&`>/̷
oW,z^pj$}_-eHr=8{'<HnI[Q%A _a_Lڔ19ەUY/1<*-lG`>!rS@mk%FT h
!=X XDsF
D=C<=,B`GAh`5h FC̆(StR^|,8QFB4\#w	!MtM|y鈜@^.`GǞ3
 +NVlj ȉ9W1DMi7! D)ӹ1ĀV#3'e4sGPhB(Oz`(Rݱa\>6"!
'=kezʶ~":-iN"-_bpW*RA\9m6Z^LRBhe/0S
e>wg~)C{gE¯LO2LˁV;7=g	 a
!?W?t
LvP8]B[POH]qoFNQ~:S~zF[1;XxHO"
x`l)a7K5'Wd{g93_5C>扎oq"ݷ;,hRmg_Y+覙T8m!lgV%/^p
d`TVfTf<mg.>W"\6on/u+fPF^^rw𗄝tNc{'0@G/8DQ8DȖrSGMvm3
syY|F։6{k
AFy</|xƋ{fkFDJ/RQoI"lPJ>ѷMs-$G8 AƝ"'o-Ƿ͠pҠ]C0*0IOv8;(f²e?۸M\!LL5>$'NkszÔӾɳT&uHEZA2+[<ผ(r%6yMdZ
y,	29M^sW3C'.㖄}F4)k?mp!Ɨ[ap+c\S =e\QDA;f>	Yyqã0>Q\L=>QGHbP!cvcJ//);~	91hA(O|$]\6w`6BIDh2n
C\䜼£9(<;msma3l20^%#cGゖaa[;geFX&36#N L{νW\$#IFVEkUuo'JG2AicΆL?<rO9jS'$&D,1.@*R@ ?}#!i;v;:)4퉍|-:P&$ wyֈvHlۼvʔ]kX|[BdL1'tMFLE =w>LZ¥+IG%umWwQvNKt\h,+3Y[F(mlkjhg--!Y76jR
L_&,l_HZEdO9c82PF  \[
Al& 3oz[ݗ.
e;:cEEe~ex8dݱ6,	,KzYPS+7ʠ._cRF- ]0 @R<Q<xhxžՈp7
+d2[Vˑqgî
tltg93FnWB32lвHˊ]bj״*A{fyӜ<SKz1OC9ī0rQԒ;[G-D"L0}
fHm@Wҹ=asr^43){
172>uMڟI)~X5
z7 EGҪ?=uI4r<ҋ|%1΂b_w-P	   (h  -ɔ!L!: ~|@h(8ЖAR          nZ*f5 羡ҡawOvC Rr}:Pgg%$ws-f-w#
TShn4Ú|˹x*%,gp	~0c=~A(x;[.C!1~Gydx{ F,'j^]Kq!Q:
*tM.Nh6˃mb!ܕN/xs
O{^AZ)2r+Dz>pڗ?w_BKscFoz!Qwl.XwwNKR0S4>qVKËB5Q	w1Q6蛢+.Z%+,zYbjt
e㰭0R%r恛Q]ӆ<$=XLxL0|e<X ܉A:g7" lNghucwی:Ĳ*/_͈zgSlw''\R`J80P=eH_wXz߫'Պ;
Pk	NE-syP
*"\
Np`IxM)r;݂֕\|\Pg.z.Yu&(kAmYŝX8ҵvc7[$:n%+]wGފJ|(2-H\ܦs ZM~qQD)Fz-Dl$mʬJD׷4GμlY)2-)N@ݫ3o.-wf6sy~ۗ+-wπL̽Zfe0,.q9M DtsPW7=\BRw7T[Wo1>4l?!N:D5l5IK|F$d+-G
m\߼I~ax
dQF W|0ozEk}wM,q?zhju?f<8_ZM#@
Q&Jsϻ}^:
/yY%2p,w\?-vحEGn#@ժ3>*PS< 8	]ߑ1s`A G(,zYVC"ϗF}62pV
]ghcx2hπ
H{ywCdm7>k7ρ8\SU\ހ>Tz`)s 9%=${ptew#SPrx!joJ]w?~+Gj%gt|4EMsszLƌ:NeyyL
,ƌ)e\|,^f=H>	퀌"Lzk6퀫7(Fs¿'_Yї<T\:
>,@GmVSR{n]GyV_(d!Tzw|$;BrwX]čTĮ7eZx.9˸
-;>io"o*c`$W/3=p6KW=2G\JލP$d<T0AR1ދ )܂qrT*fZz[v!ݣfz[$	{B]\n(3)jS┅ZQh&KOɃzDG'ْN6GߢנZ[K0:cƔ@DADlrLYyABɾ}D+ǩOILZĊzf+K3Wz,$
Hq|!)T¼L1q>3
adSDRc- \%
ix(3TU_\\_$e#Es>4LF|HL8
OZF߲!eғLx9!פjИ"(^<2QH# S5,]Z֐ gB.)p1ļҴv$7=؁$1iGlRE9Qt*dKqwk}3i|)PQҩ(S4(]W9(M	GN|"]ŭ9[p\:-Ӊ9 >-5|ԆZ8M$==)sʼ`bfSAJ4)MC!]܅0D.77ȀJ8E$5J,\s8qC#l1į@=@>yf?B*V>>D+M7>L@.ȨNbAL0ܰ5MDP^pUP&16h[]O/TvxqG=\_"bQOr	1|yuCxy*5OCݣx{(jSͣy(ޔjOKCx7̡ze{86[v\)OіNR3Q3~ Sv']$08OY9Lbr|\	hg}IGK(ܛ~9D˃B/5cs\^mb~e_pr4=`<4av}AŔ1R8
::T
/d%@?Sl۠ԷW
 sqi'gowpf&	!:j4B$zlpkNVvx^Om~d 0+w!K4|b(0H-{gtշY
 g'K%[*V;b5~dl Z-]X&̓Wɤ)Mu 35W)kO߄ڨڌ8IEKP)\_~
C8\l'T{'e1Binil>}?/fq1J!Xgi}ld>A\5
7}3R0#*GvoAhpa[ 	S;2  --u
*2~i -	1 IV}re#o8~SvڧLkY6T
?RaG>ȣOyp8E\M"vV?nmyƆjKG>厝pq.f*Y}`S=̅<^	z,<LF/Ej~$Y-c@
SNn8r8ՌvShlba2Pz5F+rDx];|=tesc%"LQ>؇M)V@aE-=^>VK.fF[=@NpqF}e]||3	L,QoqWNn{uhR[]̳0ŝQ@ezfW&OaJO.7c{صm95+2'3l rT1(fydR9nGupΑʟMr8{=J7l9V{aIB`B8^8o-_8?	Y6ki٩xth0x4a2	>2؃[Dk#6䠠Y\>wW>|,M_:g5\wk	g2+cZ)%$+#Kۃ`	m`'k[2rނZX/ZL¥{f0
'cn,Yp''+ZoIy\k^Ƶ0<E>ηi6om>rFL/V$06fM,WS%ǌ=uXSq
ܼY=q6^^w?mZon\aź|[^6	!}rYB=qւUA֊V*8٘"X:o?<[;/HIj] סwthrO+޲.]͍ys14qhW-C)3yАLw<]؉7MV%"dgmX74U>{.o;0YrQ!c\p[WdE!nwY
ZK>[An˪Ưz,U`"
*m;q40I&w]섁"}~=}3a'E`WiݹGT/:τ
2q:LqƐQ<
9"m"̘٭y&kb7s4!5i]6A囚s=.9?i[\\@͸Zht꘷{=6TJ+X<(քۋ_4:\x]ӠbfX۬yamlЅJ_`eazݍaܖTͭ<AHyNpHǅw	?q/ʸ-Qe@Tѱ$įK{/R@b6`owaFV7yQc+:-~n@݁yJ3ꂕac<re!3(Wz,Q/J665w-c8BŲ`!/״Np;{P-Z&/X7P[r_/v	}xVȒ#,&cb!E-7Grh CA;}pK?cĹL9]\xQc[af)Ht=m+C0KѮ*!gb9"GwQ9}2"b{8B
t]/
>s7폶C\c&K-x>Y.hYmawP&#6)x3j5W.a)YmDjcE194LTXw4-zB4x;طGZʳr+,|ڣD쑹E}nQۢWYxɷY[
of"􉌌[,B(줌\}B;\v.C6-aLY%N^0z;r%9Ų _8Dj"59
-qI*~i7EqAH[U,Bvp.h}\q%ܞ0wy/sTy*ouWrYD>'vDglV|Cv`D.nGx
tnjC:O Rma=/aexFLGć]c;,׬DIQ]hiFtLx<p!nLM.]9x2d>7ބ"JjBvc۝+SW4b2xXr$.cĉ=$
mC>37;ӻU
6yUM x̚nvL #c_&߶c?ߊe0E<%U>_MHָ	읅pj愕OGC5oX"Y-G*ާk
^Xgp 1#⫖
u=DKuHثŶ^ g#|MGL|* 2
YEqj.8zv.op[ﲲ2@qmK͊>W^8&}zMZM`;1촙4{u/x˳\y27{
斤=
!$h|1QWmɿzXzm;_]Rn}+Id0{'wݨ:\RMLvFg
wswW}0f<iYZWfa޵5V_fgȻ%cNc>1,ķ[ܺA& +rޣ#؊}pt^>:k9{Ob\Mfen@r}]%Jq'jsޮgia²zJG?Kƍ{$6	0:@MLs|ݔD#jNXB.MbcG.om.h4,=ewrgS#)~}kA7wOZ
ӧu4{>"%ebA4blpN;VbBȀ/YXc-8PEZgp
Қc%֘c-˅VxP]qoqԃAh,u=kwx+c9VZYPMjZ]5{ơ6Ŀ8t}4Ic2߾mHž+W>cgхϟʛM,3ǅ}JGYX;
| ZeSGަN]:T|븀	jyrE/=l='+Ʃklm׹o
,Q9hdߚ<eUZV^M\G͆5uT{x*ݎElaq-`vMX_βƷ!je{xpڼ~EiG ?[<puoDĦϛ޴tk&*Bw;v8mx_1Ui0K2-\%-{W.ˑi!C`q>Eɢ5|
eLV.IR=;d1^u>?#+n$dozϫ	m[J&l=ov^rbGO+;0xok~:Zf7{Hs+Z
1A\rqQcAg)W>[UZF>JXk8Yi<*xyIep_v/n3tpị=a7.[\Sz¹b_?=+hO}1Ρ'\qk\Msq"^04~Xx7auҴ.[HhK-C.IY{mXc[!I{ʋtfYm#*jz&hs4ډغB/&b&-Nv jov&Wu꧕4yO
,;srq@-%Za/>}D1]o<~S<kxƚpSrS5zq+AljF /![ztSXmzK/49A-VWzkd<vkڨm3g|S[EJ̫x`sW6cG[@ pf!)$>]Mtli%0T;݁i.sD{|s@(*tElve{i͚1gN~1ttI3tVÈw5j;͞kΨWGd&MFBcs鼅ɾ73@Ed,fKIÝzۗ$F	or/ݹfD [oE=}vʹ`&;UkLz7L|~{&WXr/U8XTi?4@d͸w	~:]{pxQHwkI%|ee]XK= CVf69l)b!r}ycIm<X[~&vݴ%Acmn$.GĀJk5Mc1V75'!
/މm`$5
<	\L>/7%.-dy1r{Eы7	$_#*N`Axqӊau@
$/g+<-EEʗw`Ml1ee#qe3a!ur:k Y^?5-wI<M]oa-lr<e	C1y&[s|`bd%W\&hv4^F{߯3lˮg:g׫?2X\uUc1X;n	=eb'؋z,iN-P{,|G;[̺,fkΩĽ(^_~'l4~2}
q̭-. ,1oPoܘ؛CBѝD}+СoV,+79j{
=vhz}Ǵqڇz{2|Xb1m홟EՈG+QS@}t-R۪fRܘbV̕/^qRNr+Of>S9(yN;nr`[17tc~{޳41Wr`j*}ż:rҕfYG׿ٍr9! :ŝXP;=hgsXlOfl$	^"K3τHHµ@.?AN4%2,z$V,ιםfgK"շogx5ͶsNBeΞX(8o<1yt[6L0J+rqֺgD{WRMȃmSgвyLge֪
5s<#v Cq6NE.\zs?w]45bx|ԧœoľK[A27
7i2qu5{r)ᨷs$\C[ݵ0-GJGu0slC'vL;teٻ4[2cIP_C?C9M[V6&?Z[lSOЕ~Ypv!mpZOFۨ͢lWuدMwƍƯȉp.yM%Ąˏ9ӆ䱬>^:;):Kn}ds
 LC'Xa
Ժ';_YR	e`q	{,кF(	r:jVh&3m~kPb>U<b.Ufj!XY{u;}!m#=%'uC\)KR&9h٤[WhlrD&hJzu
 ָߛo>N}qZ<7ǿb43㝺xKuоLW  Q<",;+h΅k`b5+O!^9_~x0.
2wLr܅cPZle
ZY!h'ܗAg|6i!5!oЖ!֥vǁV^ Wɯ[sϯJzʻXWx^ZvSA[_W"kq5p֟)]#PߡgA͡;6@AkEu@1Ш_9ֱpя ple.3|/(SBo0y]XJ꽖7eG/U0X΅m,|,.	,rz\0e
bYҸHU0]9Q*<82տl>⑉{eڋf
KVMP5Dcs	Lzq伝ZppNs-OԂKHKM+#8dmӼх$0FhH	DcYPځV8lw:@
J!6X49i,Iܙ<j"'n
eQY/iFm,Br|m(gvSסlK8e0G6=50~@
Z7%jB.thC^Iй6ТA?=y|6Can!N@ yӸDJ)p q|擇*4lal!7 P]'i`xr2e ۃ+[N'g(j9jA]FKP a+x.1tÔ3:,1
,)zelpn[>EL6ix"gؘœ&k(`LMn@&<w+mK8G~<ו5fQ:=J% g:Yf;{zߵD	2?{Xc$juU0Nla!)*e2hK}:ھ'pdF%-jd֥ àA[-3ѹbwmp'$nkˮm#e
DS`dh%㡡}(̡%w\Nfƒa})Zaċy2͹
AO1CJ=(îE4
0WG{8G>/JgMT] r)&Z3FGH$q?$P4'bUDUʻ||a*{U,507 ucsϩI*lA郶U7{^wUD=6	["*5oBrܲn:öeA_qҬw
tqCg}l3=1k:xl5ʼ
[90X-2bb)4`/[:*7֙^6!iϵvZsCX#dh YBb8y⥑h2 Iޢzl/s=!~sJq@	g6Jvٮ9܋oT{é1D_;U- %/}ݶMK+oNVA:ﵿ_ ]mħs _lCy0|Xa8l8"r9V;\pׯ_YɞbdMHWVI
dc.`.^)ll;9%nƹ۷5R\>x
㹚 09ޛN} eĀ[eyl#{I.ѴVa佣ܿ7J.A$եoR-֚/< lb{Ǌ[
vZ[:͆ChdӕŎ XFg4j~J/2N&Av/d21YJoƻ>1EH1aqTޣ[Xsj=~$4ض-UX`|Su"Of`.E
O5V3KAgY1-%K
&iu9(>+j<<U։2U>~<^Q7􃳸(6Ρ.i3;RnHb4gRdeM۩&DvcUXҨ731PAV]c#<qDK]5cߞWQkFx5WlrXoi]`qV N2lUuQ\UyF=tK+NL~ϻSeSh|tP
(̹/)-j;sHɕq([s_-] wN~$
굗St
Y-mC:3cm"}Z-3*m[F7ICM<V-<?s#xдd*mѐ_Vp6'NJ.Jt+,z3|Iq箰bD,gYqvU:.fsǲucY0d}G?I3ȓfy((?] F86ߢ<򋟸CǻcR^dJ]{Xɵ̟&tkJ+SRݵ|C[vTv	E!PG	,# 	WU}<ʸM~<49k
p>7_Z9B=GGD8eHw>oǕ qڎܡzM"cͺ6I&|cxn6I<98ß-&;B^#qoa3U'fMP7|<fBjI{|1Æ%سV2P`Jgb.¨p7ch݄V$ zZ]=Er;VCP
D`xhfo׌J`Vэ &P:Ct^葒uShfRmي{qʒcŬ{*I=o"M5,t`EѦz9vmJ'bM}Adl$gwh1\A8`}`6]D:F]ɰ<`cW	z{c/J;:.Dx
,R[Eۗv/W\T)+װ-faـeg>
SʤM!5VL!oB
)WQ?
jgX4N2zk8.g+G?,ȝQ$k^8
k䩥lT>IO>w$iwiyj c(:Ɗ,,F2T<FȡL)-S`zթ4Lv]ݹRe!	~7u<>9]GR'l7/^J^{@{B]m:ߏͅk <~m[dDSh/:Rߑ|B$Υ(g@cAEi?w\rrwig.vКb7uC&u
s\l,@X×T;W<<͎55\MWŹ7ɏaCq۰_+Zۭ\|M}OKJ8AhF.ELaڃS:8~VѥL$GJK:7H$8|^cׇQ ˀk"hOKc.: '.eO2|]u:Z?~oS_?4MZ_95dL>nBɄEt }yO?{8tŢgg]hka^QQAR>χWHuS&L-T)IW54mWGCN^nCh.!PpZN7Jo8d}
zݶ!O|E~C(4_F[ϣpHKW&
pޔ;lm./w'ͬ!TolO|}U7tMIRwi6r|qRBz-<m/^(kcX&"NOZdq_cON(Pu	`.dC>$O"/k~aoFRF{r[TKB"2"r'-f_xpjBޛtw`.renno#p]̂iBiy ;<!kzg]+g;`.%E͟D;cW<׈]a@D^em~OFr}_hԿ'*sB)bq'WZ;&
M{ӕ;E`P;δݷ_ڛg@O0=1>}31-b;gr<W(5r尃Q|a8_̡ܟWp7k?:9{sN"b'E?p'/3qygϟg?1!F-:Bb7_Duad`R<60a*>*3^p`YҜi	/}œ1w|q+<L
vYGwB^8ጎq÷o3{
7(=Ca=LjД,k7M6qEihux8݇e~ϙ2;Fk$9d9:Gf\%AfDjπWB("X[BVS~LsѸW6'Q,2<N>DU?K1<#&i3]l}G?ۏLfnoKC)]wpd
?\λ=
ߒZBJ^<<M.E`gCq`1H0.d
Y8AGq1n(lġvdQܩaoV+S]U_Pdf!zq8w)R
,
DzdĹwWw8,Fk
zPBjEG8C^E@=w>2z'&އx X}Xe
m͋G,,8ӅJ 
t8>= ыX[]BްaKd2JyY`}FoҬ ՋVhԈVGKTXz