User:Erutuon/scripts/UnicodeScriptRecognition.js

Note – after saving, you may have to bypass your browser’s cache to see the changes.

  • Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
  • Konqueror and Chrome: click Reload or press F5;
  • Opera: clear the cache in Tools → Preferences;
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.

Defines a function that returns official Unicode script property for a code point, like lookup_script in Module:Unicode data on Wikipedia. Compare to User:Erutuon/scripts/scriptRecognition.js and char_to_script in Module:Unicode data, which returns the Wiktionary script code.

The data is for Unicode 11.0 and was generated with the following Lua 5.3 scripts, placed in the same directory as Scripts.txt from the Unicode Character Database:

Lua 5.3 scripts

File 1

local infilehandle = assert(io.open([[./Scripts.txt]], 'rb'))
local script_data = assert(infilehandle:read 'a')
infilehandle:close()
local outfile = [[./data.js]]

local script_name_to_code = dofile [[./name_to_code.lua]]

local script_ranges = {}

local prev_codepoint, prev_script_name, prev_script_range
for codepoint1, codepoint2, script_name in script_data:gmatch '%f[^\n%z](%x+)%.?%.?(%x*)%s+;%s*([%w_]+)' do
	codepoint1, codepoint2 = tonumber(codepoint1, 16), tonumber(codepoint2, 16)
	local script_range
	if prev_script_range and script_name == prev_script_name and codepoint1 - prev_codepoint == 1 then
		prev_script_range[2] = codepoint2 or codepoint1
	else
		script_range = { codepoint1, codepoint2 or codepoint1, script_name_to_code[script_name] }
		table.insert(script_ranges, script_range)
	end
	prev_codepoint, prev_script_name, prev_script_range =
		codepoint2 or codepoint1, script_name, script_range or prev_script_range
end

table.sort(script_ranges,
	function (range1, range2)
		return range1[1] < range2[1]
	end)

io.output(outfile)
io.write 'var script_ranges = [\n'
for i, range in ipairs(script_ranges) do
	if i > 1 then io.write ',\n' end
	io.write(('\t[ 0x%05X, 0x%05X, "%s" ]'):format(range[1], range[2], range[3]))
end
io.write '\n];\n'
io.output():close()

File 2: name_to_code.lua

local lpeg = require 'lpeg'

local property_value_aliases_filename = "./PropertyValueAliases.txt"
local property_value_aliases = assert(io.open(property_value_aliases_filename, 'rb')):read('a')

for k, v in pairs(lpeg) do
	local firstletter = k:sub(1, 1)
	if firstletter:upper() == firstletter then
		_ENV[k] = v
	end
end

local script_name_to_code = {}

local function add_to_table(code, name)
	script_name_to_code[name] = code
end

local patt = P {
	(V 'script_line' / add_to_table + 1)^1,
	script_line = V 'nl' * P 'sc' * V 'sep' * C(V 'code') * V 'sep' * C(V 'name') * (P(1) - V 'nl')^0,
	code = R 'AZ' * V 'lower' * V 'lower' * V 'lower',
	name = R('AZ', 'az', '__')^1,
	lower = R 'az',
	sep = V 'w' * P ';' * V 'w',
	w = S ' \t'^0,
	nl = P '\r'^-1 * P '\n'
}

patt:match(property_value_aliases)
-- print(require 'inspect' (script_name_to_code))

return script_name_to_code

(function UnicodeScriptRecognitionIIFE () {

var script_ranges = [
	[ 0x00000, 0x00040, "Zyyy" ],
	[ 0x00041, 0x0005A, "Latn" ],
	[ 0x0005B, 0x00060, "Zyyy" ],
	[ 0x00061, 0x0007A, "Latn" ],
	[ 0x0007B, 0x000A9, "Zyyy" ],
	[ 0x000AA, 0x000AA, "Latn" ],
	[ 0x000AB, 0x000B9, "Zyyy" ],
	[ 0x000BA, 0x000BA, "Latn" ],
	[ 0x000BB, 0x000BF, "Zyyy" ],
	[ 0x000C0, 0x000D6, "Latn" ],
	[ 0x000D7, 0x000D7, "Zyyy" ],
	[ 0x000D8, 0x000F6, "Latn" ],
	[ 0x000F7, 0x000F7, "Zyyy" ],
	[ 0x000F8, 0x002B8, "Latn" ],
	[ 0x002B9, 0x002DF, "Zyyy" ],
	[ 0x002E0, 0x002E4, "Latn" ],
	[ 0x002E5, 0x002E9, "Zyyy" ],
	[ 0x002EA, 0x002EB, "Bopo" ],
	[ 0x002EC, 0x002FF, "Zyyy" ],
	[ 0x00300, 0x0036F, "Zinh" ],
	[ 0x00370, 0x00373, "Grek" ],
	[ 0x00374, 0x00374, "Zyyy" ],
	[ 0x00375, 0x00377, "Grek" ],
	[ 0x0037A, 0x0037D, "Grek" ],
	[ 0x0037E, 0x0037E, "Zyyy" ],
	[ 0x0037F, 0x0037F, "Grek" ],
	[ 0x00384, 0x00384, "Grek" ],
	[ 0x00385, 0x00385, "Zyyy" ],
	[ 0x00386, 0x00386, "Grek" ],
	[ 0x00387, 0x00387, "Zyyy" ],
	[ 0x00388, 0x0038A, "Grek" ],
	[ 0x0038C, 0x0038C, "Grek" ],
	[ 0x0038E, 0x003A1, "Grek" ],
	[ 0x003A3, 0x003E1, "Grek" ],
	[ 0x003E2, 0x003EF, "Copt" ],
	[ 0x003F0, 0x003FF, "Grek" ],
	[ 0x00400, 0x00484, "Cyrl" ],
	[ 0x00485, 0x00486, "Zinh" ],
	[ 0x00487, 0x0052F, "Cyrl" ],
	[ 0x00531, 0x00556, "Armn" ],
	[ 0x00559, 0x00588, "Armn" ],
	[ 0x00589, 0x00589, "Zyyy" ],
	[ 0x0058A, 0x0058A, "Armn" ],
	[ 0x0058D, 0x0058F, "Armn" ],
	[ 0x00591, 0x005C7, "Hebr" ],
	[ 0x005D0, 0x005EA, "Hebr" ],
	[ 0x005EF, 0x005F4, "Hebr" ],
	[ 0x00600, 0x00604, "Arab" ],
	[ 0x00605, 0x00605, "Zyyy" ],
	[ 0x00606, 0x0060B, "Arab" ],
	[ 0x0060C, 0x0060C, "Zyyy" ],
	[ 0x0060D, 0x0061A, "Arab" ],
	[ 0x0061B, 0x0061B, "Zyyy" ],
	[ 0x0061C, 0x0061C, "Arab" ],
	[ 0x0061E, 0x0061E, "Arab" ],
	[ 0x0061F, 0x0061F, "Zyyy" ],
	[ 0x00620, 0x0063F, "Arab" ],
	[ 0x00640, 0x00640, "Zyyy" ],
	[ 0x00641, 0x0064A, "Arab" ],
	[ 0x0064B, 0x00655, "Zinh" ],
	[ 0x00656, 0x0066F, "Arab" ],
	[ 0x00670, 0x00670, "Zinh" ],
	[ 0x00671, 0x006DC, "Arab" ],
	[ 0x006DD, 0x006DD, "Zyyy" ],
	[ 0x006DE, 0x006FF, "Arab" ],
	[ 0x00700, 0x0070D, "Syrc" ],
	[ 0x0070F, 0x0074A, "Syrc" ],
	[ 0x0074D, 0x0074F, "Syrc" ],
	[ 0x00750, 0x0077F, "Arab" ],
	[ 0x00780, 0x007B1, "Thaa" ],
	[ 0x007C0, 0x007FA, "Nkoo" ],
	[ 0x007FD, 0x007FF, "Nkoo" ],
	[ 0x00800, 0x0082D, "Samr" ],
	[ 0x00830, 0x0083E, "Samr" ],
	[ 0x00840, 0x0085B, "Mand" ],
	[ 0x0085E, 0x0085E, "Mand" ],
	[ 0x00860, 0x0086A, "Syrc" ],
	[ 0x008A0, 0x008B4, "Arab" ],
	[ 0x008B6, 0x008BD, "Arab" ],
	[ 0x008D3, 0x008E1, "Arab" ],
	[ 0x008E2, 0x008E2, "Zyyy" ],
	[ 0x008E3, 0x008FF, "Arab" ],
	[ 0x00900, 0x00950, "Deva" ],
	[ 0x00951, 0x00952, "Zinh" ],
	[ 0x00953, 0x00963, "Deva" ],
	[ 0x00964, 0x00965, "Zyyy" ],
	[ 0x00966, 0x0097F, "Deva" ],
	[ 0x00980, 0x00983, "Beng" ],
	[ 0x00985, 0x0098C, "Beng" ],
	[ 0x0098F, 0x00990, "Beng" ],
	[ 0x00993, 0x009A8, "Beng" ],
	[ 0x009AA, 0x009B0, "Beng" ],
	[ 0x009B2, 0x009B2, "Beng" ],
	[ 0x009B6, 0x009B9, "Beng" ],
	[ 0x009BC, 0x009C4, "Beng" ],
	[ 0x009C7, 0x009C8, "Beng" ],
	[ 0x009CB, 0x009CE, "Beng" ],
	[ 0x009D7, 0x009D7, "Beng" ],
	[ 0x009DC, 0x009DD, "Beng" ],
	[ 0x009DF, 0x009E3, "Beng" ],
	[ 0x009E6, 0x009FE, "Beng" ],
	[ 0x00A01, 0x00A03, "Guru" ],
	[ 0x00A05, 0x00A0A, "Guru" ],
	[ 0x00A0F, 0x00A10, "Guru" ],
	[ 0x00A13, 0x00A28, "Guru" ],
	[ 0x00A2A, 0x00A30, "Guru" ],
	[ 0x00A32, 0x00A33, "Guru" ],
	[ 0x00A35, 0x00A36, "Guru" ],
	[ 0x00A38, 0x00A39, "Guru" ],
	[ 0x00A3C, 0x00A3C, "Guru" ],
	[ 0x00A3E, 0x00A42, "Guru" ],
	[ 0x00A47, 0x00A48, "Guru" ],
	[ 0x00A4B, 0x00A4D, "Guru" ],
	[ 0x00A51, 0x00A51, "Guru" ],
	[ 0x00A59, 0x00A5C, "Guru" ],
	[ 0x00A5E, 0x00A5E, "Guru" ],
	[ 0x00A66, 0x00A76, "Guru" ],
	[ 0x00A81, 0x00A83, "Gujr" ],
	[ 0x00A85, 0x00A8D, "Gujr" ],
	[ 0x00A8F, 0x00A91, "Gujr" ],
	[ 0x00A93, 0x00AA8, "Gujr" ],
	[ 0x00AAA, 0x00AB0, "Gujr" ],
	[ 0x00AB2, 0x00AB3, "Gujr" ],
	[ 0x00AB5, 0x00AB9, "Gujr" ],
	[ 0x00ABC, 0x00AC5, "Gujr" ],
	[ 0x00AC7, 0x00AC9, "Gujr" ],
	[ 0x00ACB, 0x00ACD, "Gujr" ],
	[ 0x00AD0, 0x00AD0, "Gujr" ],
	[ 0x00AE0, 0x00AE3, "Gujr" ],
	[ 0x00AE6, 0x00AF1, "Gujr" ],
	[ 0x00AF9, 0x00AFF, "Gujr" ],
	[ 0x00B01, 0x00B03, "Orya" ],
	[ 0x00B05, 0x00B0C, "Orya" ],
	[ 0x00B0F, 0x00B10, "Orya" ],
	[ 0x00B13, 0x00B28, "Orya" ],
	[ 0x00B2A, 0x00B30, "Orya" ],
	[ 0x00B32, 0x00B33, "Orya" ],
	[ 0x00B35, 0x00B39, "Orya" ],
	[ 0x00B3C, 0x00B44, "Orya" ],
	[ 0x00B47, 0x00B48, "Orya" ],
	[ 0x00B4B, 0x00B4D, "Orya" ],
	[ 0x00B56, 0x00B57, "Orya" ],
	[ 0x00B5C, 0x00B5D, "Orya" ],
	[ 0x00B5F, 0x00B63, "Orya" ],
	[ 0x00B66, 0x00B77, "Orya" ],
	[ 0x00B82, 0x00B83, "Taml" ],
	[ 0x00B85, 0x00B8A, "Taml" ],
	[ 0x00B8E, 0x00B90, "Taml" ],
	[ 0x00B92, 0x00B95, "Taml" ],
	[ 0x00B99, 0x00B9A, "Taml" ],
	[ 0x00B9C, 0x00B9C, "Taml" ],
	[ 0x00B9E, 0x00B9F, "Taml" ],
	[ 0x00BA3, 0x00BA4, "Taml" ],
	[ 0x00BA8, 0x00BAA, "Taml" ],
	[ 0x00BAE, 0x00BB9, "Taml" ],
	[ 0x00BBE, 0x00BC2, "Taml" ],
	[ 0x00BC6, 0x00BC8, "Taml" ],
	[ 0x00BCA, 0x00BCD, "Taml" ],
	[ 0x00BD0, 0x00BD0, "Taml" ],
	[ 0x00BD7, 0x00BD7, "Taml" ],
	[ 0x00BE6, 0x00BFA, "Taml" ],
	[ 0x00C00, 0x00C0C, "Telu" ],
	[ 0x00C0E, 0x00C10, "Telu" ],
	[ 0x00C12, 0x00C28, "Telu" ],
	[ 0x00C2A, 0x00C39, "Telu" ],
	[ 0x00C3D, 0x00C44, "Telu" ],
	[ 0x00C46, 0x00C48, "Telu" ],
	[ 0x00C4A, 0x00C4D, "Telu" ],
	[ 0x00C55, 0x00C56, "Telu" ],
	[ 0x00C58, 0x00C5A, "Telu" ],
	[ 0x00C60, 0x00C63, "Telu" ],
	[ 0x00C66, 0x00C6F, "Telu" ],
	[ 0x00C78, 0x00C7F, "Telu" ],
	[ 0x00C80, 0x00C8C, "Knda" ],
	[ 0x00C8E, 0x00C90, "Knda" ],
	[ 0x00C92, 0x00CA8, "Knda" ],
	[ 0x00CAA, 0x00CB3, "Knda" ],
	[ 0x00CB5, 0x00CB9, "Knda" ],
	[ 0x00CBC, 0x00CC4, "Knda" ],
	[ 0x00CC6, 0x00CC8, "Knda" ],
	[ 0x00CCA, 0x00CCD, "Knda" ],
	[ 0x00CD5, 0x00CD6, "Knda" ],
	[ 0x00CDE, 0x00CDE, "Knda" ],
	[ 0x00CE0, 0x00CE3, "Knda" ],
	[ 0x00CE6, 0x00CEF, "Knda" ],
	[ 0x00CF1, 0x00CF2, "Knda" ],
	[ 0x00D00, 0x00D03, "Mlym" ],
	[ 0x00D05, 0x00D0C, "Mlym" ],
	[ 0x00D0E, 0x00D10, "Mlym" ],
	[ 0x00D12, 0x00D44, "Mlym" ],
	[ 0x00D46, 0x00D48, "Mlym" ],
	[ 0x00D4A, 0x00D4F, "Mlym" ],
	[ 0x00D54, 0x00D63, "Mlym" ],
	[ 0x00D66, 0x00D7F, "Mlym" ],
	[ 0x00D82, 0x00D83, "Sinh" ],
	[ 0x00D85, 0x00D96, "Sinh" ],
	[ 0x00D9A, 0x00DB1, "Sinh" ],
	[ 0x00DB3, 0x00DBB, "Sinh" ],
	[ 0x00DBD, 0x00DBD, "Sinh" ],
	[ 0x00DC0, 0x00DC6, "Sinh" ],
	[ 0x00DCA, 0x00DCA, "Sinh" ],
	[ 0x00DCF, 0x00DD4, "Sinh" ],
	[ 0x00DD6, 0x00DD6, "Sinh" ],
	[ 0x00DD8, 0x00DDF, "Sinh" ],
	[ 0x00DE6, 0x00DEF, "Sinh" ],
	[ 0x00DF2, 0x00DF4, "Sinh" ],
	[ 0x00E01, 0x00E3A, "Thai" ],
	[ 0x00E3F, 0x00E3F, "Zyyy" ],
	[ 0x00E40, 0x00E5B, "Thai" ],
	[ 0x00E81, 0x00E82, "Laoo" ],
	[ 0x00E84, 0x00E84, "Laoo" ],
	[ 0x00E87, 0x00E88, "Laoo" ],
	[ 0x00E8A, 0x00E8A, "Laoo" ],
	[ 0x00E8D, 0x00E8D, "Laoo" ],
	[ 0x00E94, 0x00E97, "Laoo" ],
	[ 0x00E99, 0x00E9F, "Laoo" ],
	[ 0x00EA1, 0x00EA3, "Laoo" ],
	[ 0x00EA5, 0x00EA5, "Laoo" ],
	[ 0x00EA7, 0x00EA7, "Laoo" ],
	[ 0x00EAA, 0x00EAB, "Laoo" ],
	[ 0x00EAD, 0x00EB9, "Laoo" ],
	[ 0x00EBB, 0x00EBD, "Laoo" ],
	[ 0x00EC0, 0x00EC4, "Laoo" ],
	[ 0x00EC6, 0x00EC6, "Laoo" ],
	[ 0x00EC8, 0x00ECD, "Laoo" ],
	[ 0x00ED0, 0x00ED9, "Laoo" ],
	[ 0x00EDC, 0x00EDF, "Laoo" ],
	[ 0x00F00, 0x00F47, "Tibt" ],
	[ 0x00F49, 0x00F6C, "Tibt" ],
	[ 0x00F71, 0x00F97, "Tibt" ],
	[ 0x00F99, 0x00FBC, "Tibt" ],
	[ 0x00FBE, 0x00FCC, "Tibt" ],
	[ 0x00FCE, 0x00FD4, "Tibt" ],
	[ 0x00FD5, 0x00FD8, "Zyyy" ],
	[ 0x00FD9, 0x00FDA, "Tibt" ],
	[ 0x01000, 0x0109F, "Mymr" ],
	[ 0x010A0, 0x010C5, "Geor" ],
	[ 0x010C7, 0x010C7, "Geor" ],
	[ 0x010CD, 0x010CD, "Geor" ],
	[ 0x010D0, 0x010FA, "Geor" ],
	[ 0x010FB, 0x010FB, "Zyyy" ],
	[ 0x010FC, 0x010FF, "Geor" ],
	[ 0x01100, 0x011FF, "Hang" ],
	[ 0x01200, 0x01248, "Ethi" ],
	[ 0x0124A, 0x0124D, "Ethi" ],
	[ 0x01250, 0x01256, "Ethi" ],
	[ 0x01258, 0x01258, "Ethi" ],
	[ 0x0125A, 0x0125D, "Ethi" ],
	[ 0x01260, 0x01288, "Ethi" ],
	[ 0x0128A, 0x0128D, "Ethi" ],
	[ 0x01290, 0x012B0, "Ethi" ],
	[ 0x012B2, 0x012B5, "Ethi" ],
	[ 0x012B8, 0x012BE, "Ethi" ],
	[ 0x012C0, 0x012C0, "Ethi" ],
	[ 0x012C2, 0x012C5, "Ethi" ],
	[ 0x012C8, 0x012D6, "Ethi" ],
	[ 0x012D8, 0x01310, "Ethi" ],
	[ 0x01312, 0x01315, "Ethi" ],
	[ 0x01318, 0x0135A, "Ethi" ],
	[ 0x0135D, 0x0137C, "Ethi" ],
	[ 0x01380, 0x01399, "Ethi" ],
	[ 0x013A0, 0x013F5, "Cher" ],
	[ 0x013F8, 0x013FD, "Cher" ],
	[ 0x01400, 0x0167F, "Cans" ],
	[ 0x01680, 0x0169C, "Ogam" ],
	[ 0x016A0, 0x016EA, "Runr" ],
	[ 0x016EB, 0x016ED, "Zyyy" ],
	[ 0x016EE, 0x016F8, "Runr" ],
	[ 0x01700, 0x0170C, "Tglg" ],
	[ 0x0170E, 0x01714, "Tglg" ],
	[ 0x01720, 0x01734, "Hano" ],
	[ 0x01735, 0x01736, "Zyyy" ],
	[ 0x01740, 0x01753, "Buhd" ],
	[ 0x01760, 0x0176C, "Tagb" ],
	[ 0x0176E, 0x01770, "Tagb" ],
	[ 0x01772, 0x01773, "Tagb" ],
	[ 0x01780, 0x017DD, "Khmr" ],
	[ 0x017E0, 0x017E9, "Khmr" ],
	[ 0x017F0, 0x017F9, "Khmr" ],
	[ 0x01800, 0x01801, "Mong" ],
	[ 0x01802, 0x01803, "Zyyy" ],
	[ 0x01804, 0x01804, "Mong" ],
	[ 0x01805, 0x01805, "Zyyy" ],
	[ 0x01806, 0x0180E, "Mong" ],
	[ 0x01810, 0x01819, "Mong" ],
	[ 0x01820, 0x01878, "Mong" ],
	[ 0x01880, 0x018AA, "Mong" ],
	[ 0x018B0, 0x018F5, "Cans" ],
	[ 0x01900, 0x0191E, "Limb" ],
	[ 0x01920, 0x0192B, "Limb" ],
	[ 0x01930, 0x0193B, "Limb" ],
	[ 0x01940, 0x01940, "Limb" ],
	[ 0x01944, 0x0194F, "Limb" ],
	[ 0x01950, 0x0196D, "Tale" ],
	[ 0x01970, 0x01974, "Tale" ],
	[ 0x01980, 0x019AB, "Talu" ],
	[ 0x019B0, 0x019C9, "Talu" ],
	[ 0x019D0, 0x019DA, "Talu" ],
	[ 0x019DE, 0x019DF, "Talu" ],
	[ 0x019E0, 0x019FF, "Khmr" ],
	[ 0x01A00, 0x01A1B, "Bugi" ],
	[ 0x01A1E, 0x01A1F, "Bugi" ],
	[ 0x01A20, 0x01A5E, "Lana" ],
	[ 0x01A60, 0x01A7C, "Lana" ],
	[ 0x01A7F, 0x01A89, "Lana" ],
	[ 0x01A90, 0x01A99, "Lana" ],
	[ 0x01AA0, 0x01AAD, "Lana" ],
	[ 0x01AB0, 0x01ABE, "Zinh" ],
	[ 0x01B00, 0x01B4B, "Bali" ],
	[ 0x01B50, 0x01B7C, "Bali" ],
	[ 0x01B80, 0x01BBF, "Sund" ],
	[ 0x01BC0, 0x01BF3, "Batk" ],
	[ 0x01BFC, 0x01BFF, "Batk" ],
	[ 0x01C00, 0x01C37, "Lepc" ],
	[ 0x01C3B, 0x01C49, "Lepc" ],
	[ 0x01C4D, 0x01C4F, "Lepc" ],
	[ 0x01C50, 0x01C7F, "Olck" ],
	[ 0x01C80, 0x01C88, "Cyrl" ],
	[ 0x01C90, 0x01CBA, "Geor" ],
	[ 0x01CBD, 0x01CBF, "Geor" ],
	[ 0x01CC0, 0x01CC7, "Sund" ],
	[ 0x01CD0, 0x01CD2, "Zinh" ],
	[ 0x01CD3, 0x01CD3, "Zyyy" ],
	[ 0x01CD4, 0x01CE0, "Zinh" ],
	[ 0x01CE1, 0x01CE1, "Zyyy" ],
	[ 0x01CE2, 0x01CE8, "Zinh" ],
	[ 0x01CE9, 0x01CEC, "Zyyy" ],
	[ 0x01CED, 0x01CED, "Zinh" ],
	[ 0x01CEE, 0x01CF3, "Zyyy" ],
	[ 0x01CF4, 0x01CF4, "Zinh" ],
	[ 0x01CF5, 0x01CF7, "Zyyy" ],
	[ 0x01CF8, 0x01CF9, "Zinh" ],
	[ 0x01D00, 0x01D25, "Latn" ],
	[ 0x01D26, 0x01D2A, "Grek" ],
	[ 0x01D2B, 0x01D2B, "Cyrl" ],
	[ 0x01D2C, 0x01D5C, "Latn" ],
	[ 0x01D5D, 0x01D61, "Grek" ],
	[ 0x01D62, 0x01D65, "Latn" ],
	[ 0x01D66, 0x01D6A, "Grek" ],
	[ 0x01D6B, 0x01D77, "Latn" ],
	[ 0x01D78, 0x01D78, "Cyrl" ],
	[ 0x01D79, 0x01DBE, "Latn" ],
	[ 0x01DBF, 0x01DBF, "Grek" ],
	[ 0x01DC0, 0x01DF9, "Zinh" ],
	[ 0x01DFB, 0x01DFF, "Zinh" ],
	[ 0x01E00, 0x01EFF, "Latn" ],
	[ 0x01F00, 0x01F15, "Grek" ],
	[ 0x01F18, 0x01F1D, "Grek" ],
	[ 0x01F20, 0x01F45, "Grek" ],
	[ 0x01F48, 0x01F4D, "Grek" ],
	[ 0x01F50, 0x01F57, "Grek" ],
	[ 0x01F59, 0x01F59, "Grek" ],
	[ 0x01F5B, 0x01F5B, "Grek" ],
	[ 0x01F5D, 0x01F5D, "Grek" ],
	[ 0x01F5F, 0x01F7D, "Grek" ],
	[ 0x01F80, 0x01FB4, "Grek" ],
	[ 0x01FB6, 0x01FC4, "Grek" ],
	[ 0x01FC6, 0x01FD3, "Grek" ],
	[ 0x01FD6, 0x01FDB, "Grek" ],
	[ 0x01FDD, 0x01FEF, "Grek" ],
	[ 0x01FF2, 0x01FF4, "Grek" ],
	[ 0x01FF6, 0x01FFE, "Grek" ],
	[ 0x02000, 0x0200B, "Zyyy" ],
	[ 0x0200C, 0x0200D, "Zinh" ],
	[ 0x0200E, 0x02064, "Zyyy" ],
	[ 0x02066, 0x02070, "Zyyy" ],
	[ 0x02071, 0x02071, "Latn" ],
	[ 0x02074, 0x0207E, "Zyyy" ],
	[ 0x0207F, 0x0207F, "Latn" ],
	[ 0x02080, 0x0208E, "Zyyy" ],
	[ 0x02090, 0x0209C, "Latn" ],
	[ 0x020A0, 0x020BF, "Zyyy" ],
	[ 0x020D0, 0x020F0, "Zinh" ],
	[ 0x02100, 0x02125, "Zyyy" ],
	[ 0x02126, 0x02126, "Grek" ],
	[ 0x02127, 0x02129, "Zyyy" ],
	[ 0x0212A, 0x0212B, "Latn" ],
	[ 0x0212C, 0x02131, "Zyyy" ],
	[ 0x02132, 0x02132, "Latn" ],
	[ 0x02133, 0x0214D, "Zyyy" ],
	[ 0x0214E, 0x0214E, "Latn" ],
	[ 0x0214F, 0x0215F, "Zyyy" ],
	[ 0x02160, 0x02188, "Latn" ],
	[ 0x02189, 0x0218B, "Zyyy" ],
	[ 0x02190, 0x02426, "Zyyy" ],
	[ 0x02440, 0x0244A, "Zyyy" ],
	[ 0x02460, 0x027FF, "Zyyy" ],
	[ 0x02800, 0x028FF, "Brai" ],
	[ 0x02900, 0x02B73, "Zyyy" ],
	[ 0x02B76, 0x02B95, "Zyyy" ],
	[ 0x02B98, 0x02BC8, "Zyyy" ],
	[ 0x02BCA, 0x02BFE, "Zyyy" ],
	[ 0x02C00, 0x02C2E, "Glag" ],
	[ 0x02C30, 0x02C5E, "Glag" ],
	[ 0x02C60, 0x02C7F, "Latn" ],
	[ 0x02C80, 0x02CF3, "Copt" ],
	[ 0x02CF9, 0x02CFF, "Copt" ],
	[ 0x02D00, 0x02D25, "Geor" ],
	[ 0x02D27, 0x02D27, "Geor" ],
	[ 0x02D2D, 0x02D2D, "Geor" ],
	[ 0x02D30, 0x02D67, "Tfng" ],
	[ 0x02D6F, 0x02D70, "Tfng" ],
	[ 0x02D7F, 0x02D7F, "Tfng" ],
	[ 0x02D80, 0x02D96, "Ethi" ],
	[ 0x02DA0, 0x02DA6, "Ethi" ],
	[ 0x02DA8, 0x02DAE, "Ethi" ],
	[ 0x02DB0, 0x02DB6, "Ethi" ],
	[ 0x02DB8, 0x02DBE, "Ethi" ],
	[ 0x02DC0, 0x02DC6, "Ethi" ],
	[ 0x02DC8, 0x02DCE, "Ethi" ],
	[ 0x02DD0, 0x02DD6, "Ethi" ],
	[ 0x02DD8, 0x02DDE, "Ethi" ],
	[ 0x02DE0, 0x02DFF, "Cyrl" ],
	[ 0x02E00, 0x02E4E, "Zyyy" ],
	[ 0x02E80, 0x02E99, "Hani" ],
	[ 0x02E9B, 0x02EF3, "Hani" ],
	[ 0x02F00, 0x02FD5, "Hani" ],
	[ 0x02FF0, 0x02FFB, "Zyyy" ],
	[ 0x03000, 0x03004, "Zyyy" ],
	[ 0x03005, 0x03005, "Hani" ],
	[ 0x03006, 0x03006, "Zyyy" ],
	[ 0x03007, 0x03007, "Hani" ],
	[ 0x03008, 0x03020, "Zyyy" ],
	[ 0x03021, 0x03029, "Hani" ],
	[ 0x0302A, 0x0302D, "Zinh" ],
	[ 0x0302E, 0x0302F, "Hang" ],
	[ 0x03030, 0x03037, "Zyyy" ],
	[ 0x03038, 0x0303B, "Hani" ],
	[ 0x0303C, 0x0303F, "Zyyy" ],
	[ 0x03041, 0x03096, "Hira" ],
	[ 0x03099, 0x0309A, "Zinh" ],
	[ 0x0309B, 0x0309C, "Zyyy" ],
	[ 0x0309D, 0x0309F, "Hira" ],
	[ 0x030A0, 0x030A0, "Zyyy" ],
	[ 0x030A1, 0x030FA, "Kana" ],
	[ 0x030FB, 0x030FC, "Zyyy" ],
	[ 0x030FD, 0x030FF, "Kana" ],
	[ 0x03105, 0x0312F, "Bopo" ],
	[ 0x03131, 0x0318E, "Hang" ],
	[ 0x03190, 0x0319F, "Zyyy" ],
	[ 0x031A0, 0x031BA, "Bopo" ],
	[ 0x031C0, 0x031E3, "Zyyy" ],
	[ 0x031F0, 0x031FF, "Kana" ],
	[ 0x03200, 0x0321E, "Hang" ],
	[ 0x03220, 0x0325F, "Zyyy" ],
	[ 0x03260, 0x0327E, "Hang" ],
	[ 0x0327F, 0x032CF, "Zyyy" ],
	[ 0x032D0, 0x032FE, "Kana" ],
	[ 0x03300, 0x03357, "Kana" ],
	[ 0x03358, 0x033FF, "Zyyy" ],
	[ 0x03400, 0x04DB5, "Hani" ],
	[ 0x04DC0, 0x04DFF, "Zyyy" ],
	[ 0x04E00, 0x09FEF, "Hani" ],
	[ 0x0A000, 0x0A48C, "Yiii" ],
	[ 0x0A490, 0x0A4C6, "Yiii" ],
	[ 0x0A4D0, 0x0A4FF, "Lisu" ],
	[ 0x0A500, 0x0A62B, "Vaii" ],
	[ 0x0A640, 0x0A69F, "Cyrl" ],
	[ 0x0A6A0, 0x0A6F7, "Bamu" ],
	[ 0x0A700, 0x0A721, "Zyyy" ],
	[ 0x0A722, 0x0A787, "Latn" ],
	[ 0x0A788, 0x0A78A, "Zyyy" ],
	[ 0x0A78B, 0x0A7B9, "Latn" ],
	[ 0x0A7F7, 0x0A7FF, "Latn" ],
	[ 0x0A800, 0x0A82B, "Sylo" ],
	[ 0x0A830, 0x0A839, "Zyyy" ],
	[ 0x0A840, 0x0A877, "Phag" ],
	[ 0x0A880, 0x0A8C5, "Saur" ],
	[ 0x0A8CE, 0x0A8D9, "Saur" ],
	[ 0x0A8E0, 0x0A8FF, "Deva" ],
	[ 0x0A900, 0x0A92D, "Kali" ],
	[ 0x0A92E, 0x0A92E, "Zyyy" ],
	[ 0x0A92F, 0x0A92F, "Kali" ],
	[ 0x0A930, 0x0A953, "Rjng" ],
	[ 0x0A95F, 0x0A95F, "Rjng" ],
	[ 0x0A960, 0x0A97C, "Hang" ],
	[ 0x0A980, 0x0A9CD, "Java" ],
	[ 0x0A9CF, 0x0A9CF, "Zyyy" ],
	[ 0x0A9D0, 0x0A9D9, "Java" ],
	[ 0x0A9DE, 0x0A9DF, "Java" ],
	[ 0x0A9E0, 0x0A9FE, "Mymr" ],
	[ 0x0AA00, 0x0AA36, "Cham" ],
	[ 0x0AA40, 0x0AA4D, "Cham" ],
	[ 0x0AA50, 0x0AA59, "Cham" ],
	[ 0x0AA5C, 0x0AA5F, "Cham" ],
	[ 0x0AA60, 0x0AA7F, "Mymr" ],
	[ 0x0AA80, 0x0AAC2, "Tavt" ],
	[ 0x0AADB, 0x0AADF, "Tavt" ],
	[ 0x0AAE0, 0x0AAF6, "Mtei" ],
	[ 0x0AB01, 0x0AB06, "Ethi" ],
	[ 0x0AB09, 0x0AB0E, "Ethi" ],
	[ 0x0AB11, 0x0AB16, "Ethi" ],
	[ 0x0AB20, 0x0AB26, "Ethi" ],
	[ 0x0AB28, 0x0AB2E, "Ethi" ],
	[ 0x0AB30, 0x0AB5A, "Latn" ],
	[ 0x0AB5B, 0x0AB5B, "Zyyy" ],
	[ 0x0AB5C, 0x0AB64, "Latn" ],
	[ 0x0AB65, 0x0AB65, "Grek" ],
	[ 0x0AB70, 0x0ABBF, "Cher" ],
	[ 0x0ABC0, 0x0ABED, "Mtei" ],
	[ 0x0ABF0, 0x0ABF9, "Mtei" ],
	[ 0x0AC00, 0x0D7A3, "Hang" ],
	[ 0x0D7B0, 0x0D7C6, "Hang" ],
	[ 0x0D7CB, 0x0D7FB, "Hang" ],
	[ 0x0F900, 0x0FA6D, "Hani" ],
	[ 0x0FA70, 0x0FAD9, "Hani" ],
	[ 0x0FB00, 0x0FB06, "Latn" ],
	[ 0x0FB13, 0x0FB17, "Armn" ],
	[ 0x0FB1D, 0x0FB36, "Hebr" ],
	[ 0x0FB38, 0x0FB3C, "Hebr" ],
	[ 0x0FB3E, 0x0FB3E, "Hebr" ],
	[ 0x0FB40, 0x0FB41, "Hebr" ],
	[ 0x0FB43, 0x0FB44, "Hebr" ],
	[ 0x0FB46, 0x0FB4F, "Hebr" ],
	[ 0x0FB50, 0x0FBC1, "Arab" ],
	[ 0x0FBD3, 0x0FD3D, "Arab" ],
	[ 0x0FD3E, 0x0FD3F, "Zyyy" ],
	[ 0x0FD50, 0x0FD8F, "Arab" ],
	[ 0x0FD92, 0x0FDC7, "Arab" ],
	[ 0x0FDF0, 0x0FDFD, "Arab" ],
	[ 0x0FE00, 0x0FE0F, "Zinh" ],
	[ 0x0FE10, 0x0FE19, "Zyyy" ],
	[ 0x0FE20, 0x0FE2D, "Zinh" ],
	[ 0x0FE2E, 0x0FE2F, "Cyrl" ],
	[ 0x0FE30, 0x0FE52, "Zyyy" ],
	[ 0x0FE54, 0x0FE66, "Zyyy" ],
	[ 0x0FE68, 0x0FE6B, "Zyyy" ],
	[ 0x0FE70, 0x0FE74, "Arab" ],
	[ 0x0FE76, 0x0FEFC, "Arab" ],
	[ 0x0FEFF, 0x0FEFF, "Zyyy" ],
	[ 0x0FF01, 0x0FF20, "Zyyy" ],
	[ 0x0FF21, 0x0FF3A, "Latn" ],
	[ 0x0FF3B, 0x0FF40, "Zyyy" ],
	[ 0x0FF41, 0x0FF5A, "Latn" ],
	[ 0x0FF5B, 0x0FF65, "Zyyy" ],
	[ 0x0FF66, 0x0FF6F, "Kana" ],
	[ 0x0FF70, 0x0FF70, "Zyyy" ],
	[ 0x0FF71, 0x0FF9D, "Kana" ],
	[ 0x0FF9E, 0x0FF9F, "Zyyy" ],
	[ 0x0FFA0, 0x0FFBE, "Hang" ],
	[ 0x0FFC2, 0x0FFC7, "Hang" ],
	[ 0x0FFCA, 0x0FFCF, "Hang" ],
	[ 0x0FFD2, 0x0FFD7, "Hang" ],
	[ 0x0FFDA, 0x0FFDC, "Hang" ],
	[ 0x0FFE0, 0x0FFE6, "Zyyy" ],
	[ 0x0FFE8, 0x0FFEE, "Zyyy" ],
	[ 0x0FFF9, 0x0FFFD, "Zyyy" ],
	[ 0x10000, 0x1000B, "Linb" ],
	[ 0x1000D, 0x10026, "Linb" ],
	[ 0x10028, 0x1003A, "Linb" ],
	[ 0x1003C, 0x1003D, "Linb" ],
	[ 0x1003F, 0x1004D, "Linb" ],
	[ 0x10050, 0x1005D, "Linb" ],
	[ 0x10080, 0x100FA, "Linb" ],
	[ 0x10100, 0x10102, "Zyyy" ],
	[ 0x10107, 0x10133, "Zyyy" ],
	[ 0x10137, 0x1013F, "Zyyy" ],
	[ 0x10140, 0x1018E, "Grek" ],
	[ 0x10190, 0x1019B, "Zyyy" ],
	[ 0x101A0, 0x101A0, "Grek" ],
	[ 0x101D0, 0x101FC, "Zyyy" ],
	[ 0x101FD, 0x101FD, "Zinh" ],
	[ 0x10280, 0x1029C, "Lyci" ],
	[ 0x102A0, 0x102D0, "Cari" ],
	[ 0x102E0, 0x102E0, "Zinh" ],
	[ 0x102E1, 0x102FB, "Zyyy" ],
	[ 0x10300, 0x10323, "Ital" ],
	[ 0x1032D, 0x1032F, "Ital" ],
	[ 0x10330, 0x1034A, "Goth" ],
	[ 0x10350, 0x1037A, "Perm" ],
	[ 0x10380, 0x1039D, "Ugar" ],
	[ 0x1039F, 0x1039F, "Ugar" ],
	[ 0x103A0, 0x103C3, "Xpeo" ],
	[ 0x103C8, 0x103D5, "Xpeo" ],
	[ 0x10400, 0x1044F, "Dsrt" ],
	[ 0x10450, 0x1047F, "Shaw" ],
	[ 0x10480, 0x1049D, "Osma" ],
	[ 0x104A0, 0x104A9, "Osma" ],
	[ 0x104B0, 0x104D3, "Osge" ],
	[ 0x104D8, 0x104FB, "Osge" ],
	[ 0x10500, 0x10527, "Elba" ],
	[ 0x10530, 0x10563, "Aghb" ],
	[ 0x1056F, 0x1056F, "Aghb" ],
	[ 0x10600, 0x10736, "Lina" ],
	[ 0x10740, 0x10755, "Lina" ],
	[ 0x10760, 0x10767, "Lina" ],
	[ 0x10800, 0x10805, "Cprt" ],
	[ 0x10808, 0x10808, "Cprt" ],
	[ 0x1080A, 0x10835, "Cprt" ],
	[ 0x10837, 0x10838, "Cprt" ],
	[ 0x1083C, 0x1083C, "Cprt" ],
	[ 0x1083F, 0x1083F, "Cprt" ],
	[ 0x10840, 0x10855, "Armi" ],
	[ 0x10857, 0x1085F, "Armi" ],
	[ 0x10860, 0x1087F, "Palm" ],
	[ 0x10880, 0x1089E, "Nbat" ],
	[ 0x108A7, 0x108AF, "Nbat" ],
	[ 0x108E0, 0x108F2, "Hatr" ],
	[ 0x108F4, 0x108F5, "Hatr" ],
	[ 0x108FB, 0x108FF, "Hatr" ],
	[ 0x10900, 0x1091B, "Phnx" ],
	[ 0x1091F, 0x1091F, "Phnx" ],
	[ 0x10920, 0x10939, "Lydi" ],
	[ 0x1093F, 0x1093F, "Lydi" ],
	[ 0x10980, 0x1099F, "Mero" ],
	[ 0x109A0, 0x109B7, "Merc" ],
	[ 0x109BC, 0x109CF, "Merc" ],
	[ 0x109D2, 0x109FF, "Merc" ],
	[ 0x10A00, 0x10A03, "Khar" ],
	[ 0x10A05, 0x10A06, "Khar" ],
	[ 0x10A0C, 0x10A13, "Khar" ],
	[ 0x10A15, 0x10A17, "Khar" ],
	[ 0x10A19, 0x10A35, "Khar" ],
	[ 0x10A38, 0x10A3A, "Khar" ],
	[ 0x10A3F, 0x10A48, "Khar" ],
	[ 0x10A50, 0x10A58, "Khar" ],
	[ 0x10A60, 0x10A7F, "Sarb" ],
	[ 0x10A80, 0x10A9F, "Narb" ],
	[ 0x10AC0, 0x10AE6, "Mani" ],
	[ 0x10AEB, 0x10AF6, "Mani" ],
	[ 0x10B00, 0x10B35, "Avst" ],
	[ 0x10B39, 0x10B3F, "Avst" ],
	[ 0x10B40, 0x10B55, "Prti" ],
	[ 0x10B58, 0x10B5F, "Prti" ],
	[ 0x10B60, 0x10B72, "Phli" ],
	[ 0x10B78, 0x10B7F, "Phli" ],
	[ 0x10B80, 0x10B91, "Phlp" ],
	[ 0x10B99, 0x10B9C, "Phlp" ],
	[ 0x10BA9, 0x10BAF, "Phlp" ],
	[ 0x10C00, 0x10C48, "Orkh" ],
	[ 0x10C80, 0x10CB2, "Hung" ],
	[ 0x10CC0, 0x10CF2, "Hung" ],
	[ 0x10CFA, 0x10CFF, "Hung" ],
	[ 0x10D00, 0x10D27, "Rohg" ],
	[ 0x10D30, 0x10D39, "Rohg" ],
	[ 0x10E60, 0x10E7E, "Arab" ],
	[ 0x10F00, 0x10F27, "Sogo" ],
	[ 0x10F30, 0x10F59, "Sogd" ],
	[ 0x11000, 0x1104D, "Brah" ],
	[ 0x11052, 0x1106F, "Brah" ],
	[ 0x1107F, 0x1107F, "Brah" ],
	[ 0x11080, 0x110C1, "Kthi" ],
	[ 0x110CD, 0x110CD, "Kthi" ],
	[ 0x110D0, 0x110E8, "Sora" ],
	[ 0x110F0, 0x110F9, "Sora" ],
	[ 0x11100, 0x11134, "Cakm" ],
	[ 0x11136, 0x11146, "Cakm" ],
	[ 0x11150, 0x11176, "Mahj" ],
	[ 0x11180, 0x111CD, "Shrd" ],
	[ 0x111D0, 0x111DF, "Shrd" ],
	[ 0x111E1, 0x111F4, "Sinh" ],
	[ 0x11200, 0x11211, "Khoj" ],
	[ 0x11213, 0x1123E, "Khoj" ],
	[ 0x11280, 0x11286, "Mult" ],
	[ 0x11288, 0x11288, "Mult" ],
	[ 0x1128A, 0x1128D, "Mult" ],
	[ 0x1128F, 0x1129D, "Mult" ],
	[ 0x1129F, 0x112A9, "Mult" ],
	[ 0x112B0, 0x112EA, "Sind" ],
	[ 0x112F0, 0x112F9, "Sind" ],
	[ 0x11300, 0x11303, "Gran" ],
	[ 0x11305, 0x1130C, "Gran" ],
	[ 0x1130F, 0x11310, "Gran" ],
	[ 0x11313, 0x11328, "Gran" ],
	[ 0x1132A, 0x11330, "Gran" ],
	[ 0x11332, 0x11333, "Gran" ],
	[ 0x11335, 0x11339, "Gran" ],
	[ 0x1133B, 0x1133B, "Zinh" ],
	[ 0x1133C, 0x11344, "Gran" ],
	[ 0x11347, 0x11348, "Gran" ],
	[ 0x1134B, 0x1134D, "Gran" ],
	[ 0x11350, 0x11350, "Gran" ],
	[ 0x11357, 0x11357, "Gran" ],
	[ 0x1135D, 0x11363, "Gran" ],
	[ 0x11366, 0x1136C, "Gran" ],
	[ 0x11370, 0x11374, "Gran" ],
	[ 0x11400, 0x11459, "Newa" ],
	[ 0x1145B, 0x1145B, "Newa" ],
	[ 0x1145D, 0x1145E, "Newa" ],
	[ 0x11480, 0x114C7, "Tirh" ],
	[ 0x114D0, 0x114D9, "Tirh" ],
	[ 0x11580, 0x115B5, "Sidd" ],
	[ 0x115B8, 0x115DD, "Sidd" ],
	[ 0x11600, 0x11644, "Modi" ],
	[ 0x11650, 0x11659, "Modi" ],
	[ 0x11660, 0x1166C, "Mong" ],
	[ 0x11680, 0x116B7, "Takr" ],
	[ 0x116C0, 0x116C9, "Takr" ],
	[ 0x11700, 0x1171A, "Ahom" ],
	[ 0x1171D, 0x1172B, "Ahom" ],
	[ 0x11730, 0x1173F, "Ahom" ],
	[ 0x11800, 0x1183B, "Dogr" ],
	[ 0x118A0, 0x118F2, "Wara" ],
	[ 0x118FF, 0x118FF, "Wara" ],
	[ 0x11A00, 0x11A47, "Zanb" ],
	[ 0x11A50, 0x11A83, "Soyo" ],
	[ 0x11A86, 0x11AA2, "Soyo" ],
	[ 0x11AC0, 0x11AF8, "Pauc" ],
	[ 0x11C00, 0x11C08, "Bhks" ],
	[ 0x11C0A, 0x11C36, "Bhks" ],
	[ 0x11C38, 0x11C45, "Bhks" ],
	[ 0x11C50, 0x11C6C, "Bhks" ],
	[ 0x11C70, 0x11C8F, "Marc" ],
	[ 0x11C92, 0x11CA7, "Marc" ],
	[ 0x11CA9, 0x11CB6, "Marc" ],
	[ 0x11D00, 0x11D06, "Gonm" ],
	[ 0x11D08, 0x11D09, "Gonm" ],
	[ 0x11D0B, 0x11D36, "Gonm" ],
	[ 0x11D3A, 0x11D3A, "Gonm" ],
	[ 0x11D3C, 0x11D3D, "Gonm" ],
	[ 0x11D3F, 0x11D47, "Gonm" ],
	[ 0x11D50, 0x11D59, "Gonm" ],
	[ 0x11D60, 0x11D65, "Gong" ],
	[ 0x11D67, 0x11D68, "Gong" ],
	[ 0x11D6A, 0x11D8E, "Gong" ],
	[ 0x11D90, 0x11D91, "Gong" ],
	[ 0x11D93, 0x11D98, "Gong" ],
	[ 0x11DA0, 0x11DA9, "Gong" ],
	[ 0x11EE0, 0x11EF8, "Maka" ],
	[ 0x12000, 0x12399, "Xsux" ],
	[ 0x12400, 0x1246E, "Xsux" ],
	[ 0x12470, 0x12474, "Xsux" ],
	[ 0x12480, 0x12543, "Xsux" ],
	[ 0x13000, 0x1342E, "Egyp" ],
	[ 0x14400, 0x14646, "Hluw" ],
	[ 0x16800, 0x16A38, "Bamu" ],
	[ 0x16A40, 0x16A5E, "Mroo" ],
	[ 0x16A60, 0x16A69, "Mroo" ],
	[ 0x16A6E, 0x16A6F, "Mroo" ],
	[ 0x16AD0, 0x16AED, "Bass" ],
	[ 0x16AF0, 0x16AF5, "Bass" ],
	[ 0x16B00, 0x16B45, "Hmng" ],
	[ 0x16B50, 0x16B59, "Hmng" ],
	[ 0x16B5B, 0x16B61, "Hmng" ],
	[ 0x16B63, 0x16B77, "Hmng" ],
	[ 0x16B7D, 0x16B8F, "Hmng" ],
	[ 0x16E40, 0x16E9A, "Medf" ],
	[ 0x16F00, 0x16F44, "Plrd" ],
	[ 0x16F50, 0x16F7E, "Plrd" ],
	[ 0x16F8F, 0x16F9F, "Plrd" ],
	[ 0x16FE0, 0x16FE0, "Tang" ],
	[ 0x16FE1, 0x16FE1, "Nshu" ],
	[ 0x17000, 0x187F1, "Tang" ],
	[ 0x18800, 0x18AF2, "Tang" ],
	[ 0x1B000, 0x1B000, "Kana" ],
	[ 0x1B001, 0x1B11E, "Hira" ],
	[ 0x1B170, 0x1B2FB, "Nshu" ],
	[ 0x1BC00, 0x1BC6A, "Dupl" ],
	[ 0x1BC70, 0x1BC7C, "Dupl" ],
	[ 0x1BC80, 0x1BC88, "Dupl" ],
	[ 0x1BC90, 0x1BC99, "Dupl" ],
	[ 0x1BC9C, 0x1BC9F, "Dupl" ],
	[ 0x1BCA0, 0x1BCA3, "Zyyy" ],
	[ 0x1D000, 0x1D0F5, "Zyyy" ],
	[ 0x1D100, 0x1D126, "Zyyy" ],
	[ 0x1D129, 0x1D166, "Zyyy" ],
	[ 0x1D167, 0x1D169, "Zinh" ],
	[ 0x1D16A, 0x1D17A, "Zyyy" ],
	[ 0x1D17B, 0x1D182, "Zinh" ],
	[ 0x1D183, 0x1D184, "Zyyy" ],
	[ 0x1D185, 0x1D18B, "Zinh" ],
	[ 0x1D18C, 0x1D1A9, "Zyyy" ],
	[ 0x1D1AA, 0x1D1AD, "Zinh" ],
	[ 0x1D1AE, 0x1D1E8, "Zyyy" ],
	[ 0x1D200, 0x1D245, "Grek" ],
	[ 0x1D2E0, 0x1D2F3, "Zyyy" ],
	[ 0x1D300, 0x1D356, "Zyyy" ],
	[ 0x1D360, 0x1D378, "Zyyy" ],
	[ 0x1D400, 0x1D454, "Zyyy" ],
	[ 0x1D456, 0x1D49C, "Zyyy" ],
	[ 0x1D49E, 0x1D49F, "Zyyy" ],
	[ 0x1D4A2, 0x1D4A2, "Zyyy" ],
	[ 0x1D4A5, 0x1D4A6, "Zyyy" ],
	[ 0x1D4A9, 0x1D4AC, "Zyyy" ],
	[ 0x1D4AE, 0x1D4B9, "Zyyy" ],
	[ 0x1D4BB, 0x1D4BB, "Zyyy" ],
	[ 0x1D4BD, 0x1D4C3, "Zyyy" ],
	[ 0x1D4C5, 0x1D505, "Zyyy" ],
	[ 0x1D507, 0x1D50A, "Zyyy" ],
	[ 0x1D50D, 0x1D514, "Zyyy" ],
	[ 0x1D516, 0x1D51C, "Zyyy" ],
	[ 0x1D51E, 0x1D539, "Zyyy" ],
	[ 0x1D53B, 0x1D53E, "Zyyy" ],
	[ 0x1D540, 0x1D544, "Zyyy" ],
	[ 0x1D546, 0x1D546, "Zyyy" ],
	[ 0x1D54A, 0x1D550, "Zyyy" ],
	[ 0x1D552, 0x1D6A5, "Zyyy" ],
	[ 0x1D6A8, 0x1D7CB, "Zyyy" ],
	[ 0x1D7CE, 0x1D7FF, "Zyyy" ],
	[ 0x1D800, 0x1DA8B, "Sgnw" ],
	[ 0x1DA9B, 0x1DA9F, "Sgnw" ],
	[ 0x1DAA1, 0x1DAAF, "Sgnw" ],
	[ 0x1E000, 0x1E006, "Glag" ],
	[ 0x1E008, 0x1E018, "Glag" ],
	[ 0x1E01B, 0x1E021, "Glag" ],
	[ 0x1E023, 0x1E024, "Glag" ],
	[ 0x1E026, 0x1E02A, "Glag" ],
	[ 0x1E800, 0x1E8C4, "Mend" ],
	[ 0x1E8C7, 0x1E8D6, "Mend" ],
	[ 0x1E900, 0x1E94A, "Adlm" ],
	[ 0x1E950, 0x1E959, "Adlm" ],
	[ 0x1E95E, 0x1E95F, "Adlm" ],
	[ 0x1EC71, 0x1ECB4, "Zyyy" ],
	[ 0x1EE00, 0x1EE03, "Arab" ],
	[ 0x1EE05, 0x1EE1F, "Arab" ],
	[ 0x1EE21, 0x1EE22, "Arab" ],
	[ 0x1EE24, 0x1EE24, "Arab" ],
	[ 0x1EE27, 0x1EE27, "Arab" ],
	[ 0x1EE29, 0x1EE32, "Arab" ],
	[ 0x1EE34, 0x1EE37, "Arab" ],
	[ 0x1EE39, 0x1EE39, "Arab" ],
	[ 0x1EE3B, 0x1EE3B, "Arab" ],
	[ 0x1EE42, 0x1EE42, "Arab" ],
	[ 0x1EE47, 0x1EE47, "Arab" ],
	[ 0x1EE49, 0x1EE49, "Arab" ],
	[ 0x1EE4B, 0x1EE4B, "Arab" ],
	[ 0x1EE4D, 0x1EE4F, "Arab" ],
	[ 0x1EE51, 0x1EE52, "Arab" ],
	[ 0x1EE54, 0x1EE54, "Arab" ],
	[ 0x1EE57, 0x1EE57, "Arab" ],
	[ 0x1EE59, 0x1EE59, "Arab" ],
	[ 0x1EE5B, 0x1EE5B, "Arab" ],
	[ 0x1EE5D, 0x1EE5D, "Arab" ],
	[ 0x1EE5F, 0x1EE5F, "Arab" ],
	[ 0x1EE61, 0x1EE62, "Arab" ],
	[ 0x1EE64, 0x1EE64, "Arab" ],
	[ 0x1EE67, 0x1EE6A, "Arab" ],
	[ 0x1EE6C, 0x1EE72, "Arab" ],
	[ 0x1EE74, 0x1EE77, "Arab" ],
	[ 0x1EE79, 0x1EE7C, "Arab" ],
	[ 0x1EE7E, 0x1EE7E, "Arab" ],
	[ 0x1EE80, 0x1EE89, "Arab" ],
	[ 0x1EE8B, 0x1EE9B, "Arab" ],
	[ 0x1EEA1, 0x1EEA3, "Arab" ],
	[ 0x1EEA5, 0x1EEA9, "Arab" ],
	[ 0x1EEAB, 0x1EEBB, "Arab" ],
	[ 0x1EEF0, 0x1EEF1, "Arab" ],
	[ 0x1F000, 0x1F02B, "Zyyy" ],
	[ 0x1F030, 0x1F093, "Zyyy" ],
	[ 0x1F0A0, 0x1F0AE, "Zyyy" ],
	[ 0x1F0B1, 0x1F0BF, "Zyyy" ],
	[ 0x1F0C1, 0x1F0CF, "Zyyy" ],
	[ 0x1F0D1, 0x1F0F5, "Zyyy" ],
	[ 0x1F100, 0x1F10C, "Zyyy" ],
	[ 0x1F110, 0x1F16B, "Zyyy" ],
	[ 0x1F170, 0x1F1AC, "Zyyy" ],
	[ 0x1F1E6, 0x1F1FF, "Zyyy" ],
	[ 0x1F200, 0x1F200, "Hira" ],
	[ 0x1F201, 0x1F202, "Zyyy" ],
	[ 0x1F210, 0x1F23B, "Zyyy" ],
	[ 0x1F240, 0x1F248, "Zyyy" ],
	[ 0x1F250, 0x1F251, "Zyyy" ],
	[ 0x1F260, 0x1F265, "Zyyy" ],
	[ 0x1F300, 0x1F6D4, "Zyyy" ],
	[ 0x1F6E0, 0x1F6EC, "Zyyy" ],
	[ 0x1F6F0, 0x1F6F9, "Zyyy" ],
	[ 0x1F700, 0x1F773, "Zyyy" ],
	[ 0x1F780, 0x1F7D8, "Zyyy" ],
	[ 0x1F800, 0x1F80B, "Zyyy" ],
	[ 0x1F810, 0x1F847, "Zyyy" ],
	[ 0x1F850, 0x1F859, "Zyyy" ],
	[ 0x1F860, 0x1F887, "Zyyy" ],
	[ 0x1F890, 0x1F8AD, "Zyyy" ],
	[ 0x1F900, 0x1F90B, "Zyyy" ],
	[ 0x1F910, 0x1F93E, "Zyyy" ],
	[ 0x1F940, 0x1F970, "Zyyy" ],
	[ 0x1F973, 0x1F976, "Zyyy" ],
	[ 0x1F97A, 0x1F97A, "Zyyy" ],
	[ 0x1F97C, 0x1F9A2, "Zyyy" ],
	[ 0x1F9B0, 0x1F9B9, "Zyyy" ],
	[ 0x1F9C0, 0x1F9C2, "Zyyy" ],
	[ 0x1F9D0, 0x1F9FF, "Zyyy" ],
	[ 0x1FA60, 0x1FA6D, "Zyyy" ],
	[ 0x20000, 0x2A6D6, "Hani" ],
	[ 0x2A700, 0x2B734, "Hani" ],
	[ 0x2B740, 0x2B81D, "Hani" ],
	[ 0x2B820, 0x2CEA1, "Hani" ],
	[ 0x2CEB0, 0x2EBE0, "Hani" ],
	[ 0x2F800, 0x2FA1D, "Hani" ],
	[ 0xE0001, 0xE0001, "Zyyy" ],
	[ 0xE0020, 0xE007F, "Zyyy" ],
	[ 0xE0100, 0xE01EF, "Zinh" ]
];

window.get_Unicode_script = function (code_point) {
	var low = 0, high = script_ranges.length - 1, mid;
	while (low <= high) {
		mid = (low + high) >> 1;
		var range = script_ranges[mid];
		if (code_point < range[0]) high = mid - 1;
		else if (code_point > range[1]) low = mid + 1;
		else return range[2];
	}
	return "Zzzz";
};

})();