LCOV - code coverage report
Current view: top level - js/src/vm - Unicode.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 1323 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* Generated by make_unicode.py DO NOT MODIFY */
       2             : /* Unicode version: 9.0.0 */
       3             : 
       4             : /*
       5             :  * Any copyright is dedicated to the Public Domain.
       6             :  * http://creativecommons.org/licenses/publicdomain/
       7             :  */
       8             : #include "vm/Unicode.h"
       9             : 
      10             : using namespace js;
      11             : using namespace js::unicode;
      12             : 
      13             : /*
      14             :  * So how does indexing work?
      15             :  * First let's have a look at a char16_t, 16-bits:
      16             :  *              [................]
      17             :  * Step 1:
      18             :  *  Extracting the upper 11 bits from the char16_t.
      19             :  *   upper = char >>  5 ([***********.....])
      20             :  * Step 2:
      21             :  *  Using these bits to get an reduced index from index1.
      22             :  *   index = index1[upper]
      23             :  * Step 3:
      24             :  *  Combining the index and the bottom 5 bits of the original char16_t.
      25             :  *   real_index = index2[(index << 5) + (char & ((1 << 5) - 1))] ([...********+++++])
      26             :  *
      27             :  * The advantage here is that the biggest number in index1 doesn't need 10 bits,
      28             :  * but 7 and we save some memory.
      29             :  *
      30             :  * Step 4:
      31             :  *  Get the character informations by looking up real_index in js_charinfo.
      32             :  *
      33             :  * Pseudocode of generation:
      34             :  *
      35             :  * let table be the mapping of char16_t => js_charinfo_index
      36             :  * let index1 be an empty array
      37             :  * let index2 be an empty array
      38             :  * let cache be a hash map
      39             :  *
      40             :  * while shift is less then maximal amount you can shift 0xffff before it's 0
      41             :  *  let chunks be table split in chunks of size 2**shift
      42             :  *
      43             :  *  for every chunk in chunks
      44             :  *   if chunk is in cache
      45             :  *    let index be cache[chunk]
      46             :  *   else
      47             :  *    let index be the max key of index2 + 1
      48             :  *    for element in chunk
      49             :  *     push element to index2
      50             :  *    put index as chunk in cache
      51             :  *
      52             :  *   push index >> shift to index1
      53             :  *
      54             :  *  increase shift
      55             :  *  stop if you found the best shift
      56             :  */
      57             : const CharacterInfo unicode::js_charinfo[] = {
      58             :     { 0, 0, 0 },
      59             :     { 0, 0, 1 },
      60             :     { 0, 0, 4 },
      61             :     { 0, 32, 2 },
      62             :     { 65504, 0, 2 },
      63             :     { 0, 0, 2 },
      64             :     { 743, 0, 2 },
      65             :     { 121, 0, 2 },
      66             :     { 0, 1, 2 },
      67             :     { 65535, 0, 2 },
      68             :     { 0, 65337, 2 },
      69             :     { 65304, 0, 2 },
      70             :     { 0, 65415, 2 },
      71             :     { 65236, 0, 2 },
      72             :     { 195, 0, 2 },
      73             :     { 0, 210, 2 },
      74             :     { 0, 206, 2 },
      75             :     { 0, 205, 2 },
      76             :     { 0, 79, 2 },
      77             :     { 0, 202, 2 },
      78             :     { 0, 203, 2 },
      79             :     { 0, 207, 2 },
      80             :     { 97, 0, 2 },
      81             :     { 0, 211, 2 },
      82             :     { 0, 209, 2 },
      83             :     { 163, 0, 2 },
      84             :     { 0, 213, 2 },
      85             :     { 130, 0, 2 },
      86             :     { 0, 214, 2 },
      87             :     { 0, 218, 2 },
      88             :     { 0, 217, 2 },
      89             :     { 0, 219, 2 },
      90             :     { 56, 0, 2 },
      91             :     { 0, 2, 2 },
      92             :     { 65535, 1, 2 },
      93             :     { 65534, 0, 2 },
      94             :     { 65457, 0, 2 },
      95             :     { 0, 65439, 2 },
      96             :     { 0, 65480, 2 },
      97             :     { 0, 65406, 2 },
      98             :     { 0, 10795, 2 },
      99             :     { 0, 65373, 2 },
     100             :     { 0, 10792, 2 },
     101             :     { 10815, 0, 2 },
     102             :     { 0, 65341, 2 },
     103             :     { 0, 69, 2 },
     104             :     { 0, 71, 2 },
     105             :     { 10783, 0, 2 },
     106             :     { 10780, 0, 2 },
     107             :     { 10782, 0, 2 },
     108             :     { 65326, 0, 2 },
     109             :     { 65330, 0, 2 },
     110             :     { 65331, 0, 2 },
     111             :     { 65334, 0, 2 },
     112             :     { 65333, 0, 2 },
     113             :     { 42319, 0, 2 },
     114             :     { 42315, 0, 2 },
     115             :     { 65329, 0, 2 },
     116             :     { 42280, 0, 2 },
     117             :     { 42308, 0, 2 },
     118             :     { 65327, 0, 2 },
     119             :     { 65325, 0, 2 },
     120             :     { 10743, 0, 2 },
     121             :     { 42305, 0, 2 },
     122             :     { 10749, 0, 2 },
     123             :     { 65323, 0, 2 },
     124             :     { 65322, 0, 2 },
     125             :     { 10727, 0, 2 },
     126             :     { 65318, 0, 2 },
     127             :     { 42282, 0, 2 },
     128             :     { 65467, 0, 2 },
     129             :     { 65319, 0, 2 },
     130             :     { 65465, 0, 2 },
     131             :     { 65317, 0, 2 },
     132             :     { 42261, 0, 2 },
     133             :     { 42258, 0, 2 },
     134             :     { 84, 0, 4 },
     135             :     { 0, 116, 2 },
     136             :     { 0, 38, 2 },
     137             :     { 0, 37, 2 },
     138             :     { 0, 64, 2 },
     139             :     { 0, 63, 2 },
     140             :     { 65498, 0, 2 },
     141             :     { 65499, 0, 2 },
     142             :     { 65505, 0, 2 },
     143             :     { 65472, 0, 2 },
     144             :     { 65473, 0, 2 },
     145             :     { 0, 8, 2 },
     146             :     { 65474, 0, 2 },
     147             :     { 65479, 0, 2 },
     148             :     { 65489, 0, 2 },
     149             :     { 65482, 0, 2 },
     150             :     { 65528, 0, 2 },
     151             :     { 65450, 0, 2 },
     152             :     { 65456, 0, 2 },
     153             :     { 7, 0, 2 },
     154             :     { 65420, 0, 2 },
     155             :     { 0, 65476, 2 },
     156             :     { 65440, 0, 2 },
     157             :     { 0, 65529, 2 },
     158             :     { 0, 80, 2 },
     159             :     { 0, 15, 2 },
     160             :     { 65521, 0, 2 },
     161             :     { 0, 48, 2 },
     162             :     { 65488, 0, 2 },
     163             :     { 0, 7264, 2 },
     164             :     { 0, 38864, 2 },
     165             :     { 59282, 0, 2 },
     166             :     { 59283, 0, 2 },
     167             :     { 59292, 0, 2 },
     168             :     { 59294, 0, 2 },
     169             :     { 59293, 0, 2 },
     170             :     { 59300, 0, 2 },
     171             :     { 59355, 0, 2 },
     172             :     { 35266, 0, 2 },
     173             :     { 35332, 0, 2 },
     174             :     { 3814, 0, 2 },
     175             :     { 65477, 0, 2 },
     176             :     { 0, 57921, 2 },
     177             :     { 8, 0, 2 },
     178             :     { 0, 65528, 2 },
     179             :     { 74, 0, 2 },
     180             :     { 86, 0, 2 },
     181             :     { 100, 0, 2 },
     182             :     { 128, 0, 2 },
     183             :     { 112, 0, 2 },
     184             :     { 126, 0, 2 },
     185             :     { 9, 0, 2 },
     186             :     { 0, 65462, 2 },
     187             :     { 0, 65527, 2 },
     188             :     { 58331, 0, 2 },
     189             :     { 0, 65450, 2 },
     190             :     { 0, 65436, 2 },
     191             :     { 0, 65424, 2 },
     192             :     { 0, 65408, 2 },
     193             :     { 0, 65410, 2 },
     194             :     { 0, 58019, 2 },
     195             :     { 0, 57153, 2 },
     196             :     { 0, 57274, 2 },
     197             :     { 0, 28, 2 },
     198             :     { 65508, 0, 2 },
     199             :     { 0, 16, 2 },
     200             :     { 65520, 0, 2 },
     201             :     { 0, 26, 0 },
     202             :     { 65510, 0, 0 },
     203             :     { 0, 54793, 2 },
     204             :     { 0, 61722, 2 },
     205             :     { 0, 54809, 2 },
     206             :     { 54741, 0, 2 },
     207             :     { 54744, 0, 2 },
     208             :     { 0, 54756, 2 },
     209             :     { 0, 54787, 2 },
     210             :     { 0, 54753, 2 },
     211             :     { 0, 54754, 2 },
     212             :     { 0, 54721, 2 },
     213             :     { 58272, 0, 2 },
     214             :     { 0, 30204, 2 },
     215             :     { 0, 23256, 2 },
     216             :     { 0, 23228, 2 },
     217             :     { 0, 23217, 2 },
     218             :     { 0, 23221, 2 },
     219             :     { 0, 23231, 2 },
     220             :     { 0, 23278, 2 },
     221             :     { 0, 23254, 2 },
     222             :     { 0, 23275, 2 },
     223             :     { 0, 928, 2 },
     224             :     { 64608, 0, 2 },
     225             :     { 26672, 0, 2 },
     226             : };
     227             : 
     228             : const uint8_t unicode::index1[] = {
     229             :       0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,  16,  17,
     230             :      18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,
     231             :      36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,  52,  53,
     232             :      54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  65,  66,  67,  26,  26,  26,  26,
     233             :      26,  68,  69,  70,  71,  72,  73,  74,  75,  26,  26,  26,  26,  26,  26,  26,  26,  76,
     234             :      77,  78,  79,  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,
     235             :      95,  96,  97,  98,  99, 100, 101, 102,  26, 103,  26, 104, 105, 105, 106, 105, 107, 108,
     236             :     109, 110, 111, 112, 113, 114, 115, 116, 117,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     237             :      94,  94, 118, 119,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     238             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94, 120, 121, 105, 122,
     239             :     123, 124, 125, 126,  94,  94,  94,  94,  94,  94,  94,  94, 127,  75, 128, 129, 130,  26,
     240             :     131, 132,  94,  94,  94,  94,  94,  94,  94,  94,  26,  26,  26,  26,  26,  26,  26,  26,
     241             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     242             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     243             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     244             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     245             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     246             :      26,  26,  26,  26,  86,  94,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     247             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     248             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     249             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     250             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     251             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     252             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     253             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     254             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     255             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     256             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     257             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     258             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     259             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     260             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     261             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     262             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     263             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     264             :      26,  26,  26,  26,  26,  26,  26,  26,  26, 133,  26,  26,  26,  26,  26,  26,  26,  26,
     265             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26, 134, 135,  26,  26,  26,  26, 136, 137,
     266             :     138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
     267             :     156, 157, 158, 159,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     268             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     269             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     270             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     271             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     272             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     273             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     274             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     275             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,
     276             :      26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26,  26, 160, 161,
     277             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     278             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     279             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     280             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     281             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     282             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     283             :      94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     284             :      94,  94,  94,  94,  94,  94,  26,  26,  26,  26,  26, 162,  26, 163, 164, 165, 166, 167,
     285             :      26,  26,  26,  26, 168, 169, 170, 171, 172, 173,  26, 174, 175, 176, 177, 178,
     286             : };
     287             : 
     288             : const uint8_t unicode::index2[] = {
     289             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   0,   0,   0,   0,
     290             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,   0,   0,
     291             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,
     292             :       2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   3,   3,   3,   3,   3,   3,   3,
     293             :       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
     294             :       3,   0,   0,   0,   0,   2,   0,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     295             :       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,   0,
     296             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     297             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   0,
     298             :       0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     299             :       0,   6,   0,   2,   0,   0,   5,   0,   0,   0,   0,   0,   3,   3,   3,   3,   3,   3,
     300             :       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   0,
     301             :       3,   3,   3,   3,   3,   3,   3,   5,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     302             :       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,
     303             :       4,   4,   4,   7,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     304             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     305             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,  10,  11,
     306             :       8,   9,   8,   9,   8,   9,   5,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,
     307             :       9,   8,   9,   8,   9,   5,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     308             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     309             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,  12,   8,
     310             :       9,   8,   9,   8,   9,  13,  14,  15,   8,   9,   8,   9,  16,   8,   9,  17,  17,   8,
     311             :       9,   5,  18,  19,  20,   8,   9,  17,  21,  22,  23,  24,   8,   9,  25,   5,  23,  26,
     312             :      27,  28,   8,   9,   8,   9,   8,   9,  29,   8,   9,  29,   5,   5,   8,   9,  29,   8,
     313             :       9,  30,  30,   8,   9,   8,   9,  31,   8,   9,   5,   5,   8,   9,   5,  32,   5,   5,
     314             :       5,   5,  33,  34,  35,  33,  34,  35,  33,  34,  35,   8,   9,   8,   9,   8,   9,   8,
     315             :       9,   8,   9,   8,   9,   8,   9,   8,   9,  36,   8,   9,   8,   9,   8,   9,   8,   9,
     316             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   5,  33,  34,  35,   8,   9,  37,  38,
     317             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     318             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     319             :       8,   9,   8,   9,  39,   5,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     320             :       8,   9,   8,   9,   8,   9,   5,   5,   5,   5,   5,   5,  40,   8,   9,  41,  42,  43,
     321             :      43,   8,   9,  44,  45,  46,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,  47,  48,
     322             :      49,  50,  51,   5,  52,  52,   5,  53,   5,  54,  55,   5,   5,   5,  52,  56,   5,  57,
     323             :       5,  58,  59,   5,  60,  61,  59,  62,  63,   5,   5,  61,   5,  64,  65,   5,   5,  66,
     324             :       5,   5,   5,   5,   5,   5,   5,  67,   5,   5,  68,   5,   5,  68,   5,   5,   5,  69,
     325             :      68,  70,  71,  71,  72,   5,   5,   5,   5,   5,  73,   5,   5,   5,   5,   5,   5,   5,
     326             :       5,   5,   5,  74,  75,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     327             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     328             :       5,   5,   5,   5,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     329             :       5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,
     330             :       5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   5,   0,   5,   0,   0,   0,   0,   0,
     331             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,
     332             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     333             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     334             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     335             :       2,   2,   2,   2,   2,   2,   2,   2,   2,  76,   2,   2,   2,   2,   2,   2,   2,   2,
     336             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     337             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   8,   9,
     338             :       8,   9,   5,   0,   8,   9,   0,   0,   5,  27,  27,  27,   0,  77,   0,   0,   0,   0,
     339             :       0,   0,  78,   2,  79,  79,  79,   0,  80,   0,  81,  81,   5,   3,   3,   3,   3,   3,
     340             :       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   0,   3,   3,   3,   3,   3,
     341             :       3,   3,   3,   3,  82,  83,  83,  83,   5,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     342             :       4,   4,   4,   4,   4,   4,   4,   4,  84,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     343             :      85,  86,  86,  87,  88,  89,   5,   5,   5,  90,  91,  92,   8,   9,   8,   9,   8,   9,
     344             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     345             :      93,  94,  95,  96,  97,  98,   0,   8,   9,  99,   8,   9,   5,  39,  39,  39, 100, 100,
     346             :     100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,   3,   3,   3,   3,
     347             :       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
     348             :       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   4,   4,   4,   4,   4,   4,   4,   4,
     349             :       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     350             :       4,   4,   4,   4,   4,   4,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,  94,
     351             :      94,  94,  94,  94,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     352             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     353             :       8,   9,   0,   2,   2,   2,   2,   2,   0,   0,   8,   9,   8,   9,   8,   9,   8,   9,
     354             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     355             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     356             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9, 101,   8,   9,   8,   9,   8,   9,   8,
     357             :       9,   8,   9,   8,   9,   8,   9, 102,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     358             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     359             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     360             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     361             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     362             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   0, 103, 103, 103,
     363             :     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
     364             :     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,   0,
     365             :       0,   5,   0,   0,   0,   0,   0,   0,   0, 104, 104, 104, 104, 104, 104, 104, 104, 104,
     366             :     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
     367             :     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,   5,   0,   0,   0,   0,   0,   0,
     368             :       0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     369             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     370             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   2,   0,   2,   2,   0,
     371             :       2,   2,   0,   2,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,
     372             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     373             :       5,   5,   5,   0,   0,   0,   0,   0,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,
     374             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     375             :       0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,
     376             :       0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     377             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     378             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     379             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     380             :       2,   2,   2,   2,   0,   0,   0,   0,   5,   5,   2,   5,   5,   5,   5,   5,   5,   5,
     381             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     382             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     383             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     384             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     385             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     386             :       5,   5,   0,   5,   2,   2,   2,   2,   2,   2,   2,   0,   0,   2,   2,   2,   2,   2,
     387             :       2,   5,   5,   2,   2,   0,   2,   2,   2,   2,   5,   5,   2,   2,   2,   2,   2,   2,
     388             :       2,   2,   2,   2,   5,   5,   5,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,
     389             :       0,   0,   0,   0,   0,   0,   0,   0,   5,   2,   5,   5,   5,   5,   5,   5,   5,   5,
     390             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     391             :       5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     392             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   5,   5,   5,
     393             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     394             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     395             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     396             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     397             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,
     398             :       2,   2,   2,   2,   2,   2,   2,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     399             :       0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,   5,   5,   5,
     400             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     401             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,
     402             :       2,   2,   5,   5,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   5,   5,   5,   5,
     403             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     404             :       2,   2,   2,   2,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,   2,   2,   2,
     405             :       5,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     406             :       0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     407             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   0,   0,
     408             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     409             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     410             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     411             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,
     412             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,
     413             :       5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     414             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
     415             :       2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     416             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     417             :       2,   2,   2,   2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     418             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     419             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     420             :       5,   5,   5,   5,   2,   2,   2,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     421             :       2,   2,   2,   2,   2,   2,   2,   2,   5,   2,   2,   2,   2,   2,   2,   2,   5,   5,
     422             :       5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   0,   0,   2,   2,   2,   2,   2,   2,
     423             :       2,   2,   2,   2,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     424             :       5,   5,   5,   2,   2,   2,   0,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   5,
     425             :       5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     426             :       5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   0,   5,   0,
     427             :       0,   0,   5,   5,   5,   5,   0,   0,   2,   5,   2,   2,   2,   2,   2,   2,   2,   0,
     428             :       0,   2,   2,   0,   0,   2,   2,   2,   5,   0,   0,   0,   0,   0,   0,   0,   0,   2,
     429             :       0,   0,   0,   0,   5,   5,   0,   5,   5,   5,   2,   2,   0,   0,   2,   2,   2,   2,
     430             :       2,   2,   2,   2,   2,   2,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     431             :       0,   0,   0,   0,   0,   2,   2,   2,   0,   5,   5,   5,   5,   5,   5,   0,   0,   0,
     432             :       0,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     433             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   0,
     434             :       5,   5,   0,   5,   5,   0,   5,   5,   0,   0,   2,   0,   2,   2,   2,   2,   2,   0,
     435             :       0,   0,   0,   2,   2,   0,   0,   2,   2,   2,   0,   0,   0,   2,   0,   0,   0,   0,
     436             :       0,   0,   0,   5,   5,   5,   5,   0,   5,   0,   0,   0,   0,   0,   0,   0,   2,   2,
     437             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,   5,   5,   2,   0,   0,   0,   0,
     438             :       0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   0,   5,   5,   5,   5,   5,   5,   5,
     439             :       5,   5,   0,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     440             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,
     441             :       5,   0,   5,   5,   0,   5,   5,   5,   5,   5,   0,   0,   2,   5,   2,   2,   2,   2,
     442             :       2,   2,   2,   2,   0,   2,   2,   2,   0,   2,   2,   2,   0,   0,   5,   0,   0,   0,
     443             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   2,   2,   0,   0,
     444             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,
     445             :       0,   5,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   0,   5,   5,   5,   5,   5,
     446             :       5,   5,   5,   0,   0,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     447             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,
     448             :       5,   5,   5,   0,   5,   5,   0,   5,   5,   5,   5,   5,   0,   0,   2,   5,   2,   2,
     449             :       2,   2,   2,   2,   2,   0,   0,   2,   2,   0,   0,   2,   2,   2,   0,   0,   0,   0,
     450             :       0,   0,   0,   0,   2,   2,   0,   0,   0,   0,   5,   5,   0,   5,   5,   5,   2,   2,
     451             :       0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   5,   0,   0,   0,   0,
     452             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   5,   0,   5,   5,   5,
     453             :       5,   5,   5,   0,   0,   0,   5,   5,   5,   0,   5,   5,   5,   5,   0,   0,   0,   5,
     454             :       5,   0,   5,   0,   5,   5,   0,   0,   0,   5,   5,   0,   0,   0,   5,   5,   5,   0,
     455             :       0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,
     456             :       2,   2,   2,   2,   2,   0,   0,   0,   2,   2,   2,   0,   2,   2,   2,   2,   0,   0,
     457             :       5,   0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     458             :       0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,
     459             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   0,   5,
     460             :       5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,
     461             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,
     462             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,
     463             :       0,   5,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   0,   2,   2,   2,   2,
     464             :       0,   0,   0,   0,   0,   0,   0,   2,   2,   0,   5,   5,   5,   0,   0,   0,   0,   0,
     465             :       5,   5,   2,   2,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,
     466             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   2,   2,   2,
     467             :       0,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   0,   5,   5,   5,   5,
     468             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     469             :       5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,
     470             :       0,   0,   2,   5,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   0,   2,   2,
     471             :       2,   2,   0,   0,   0,   0,   0,   0,   0,   2,   2,   0,   0,   0,   0,   0,   0,   0,
     472             :       5,   0,   5,   5,   2,   2,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     473             :       0,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,
     474             :       2,   2,   0,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   0,   5,   5,
     475             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     476             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     477             :       5,   5,   5,   0,   0,   5,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   0,
     478             :       2,   2,   2,   2,   5,   0,   0,   0,   0,   0,   5,   5,   5,   2,   0,   0,   0,   0,
     479             :       0,   0,   0,   5,   5,   5,   2,   2,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
     480             :       2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,
     481             :       0,   0,   2,   2,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     482             :       5,   5,   5,   5,   5,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     483             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,
     484             :       5,   5,   5,   5,   5,   5,   0,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   0,
     485             :       0,   0,   2,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   0,   2,   0,   2,   2,
     486             :       2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,
     487             :       2,   2,   2,   2,   0,   0,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     488             :       0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     489             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     490             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   5,   5,
     491             :       2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,
     492             :       5,   2,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   2,   2,   2,   2,   2,   2,
     493             :       2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     494             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     495             :       0,   0,   0,   0,   0,   5,   5,   0,   5,   0,   0,   5,   5,   0,   5,   0,   0,   5,
     496             :       0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,
     497             :       0,   5,   5,   5,   0,   5,   0,   5,   0,   0,   5,   5,   0,   5,   5,   5,   5,   2,
     498             :       5,   5,   2,   2,   2,   2,   2,   2,   0,   2,   2,   5,   0,   0,   5,   5,   5,   5,
     499             :       5,   0,   5,   0,   2,   2,   2,   2,   2,   2,   0,   0,   2,   2,   2,   2,   2,   2,
     500             :       2,   2,   2,   2,   0,   0,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,
     501             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     502             :       0,   0,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     503             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   0,   0,   0,   0,
     504             :       0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
     505             :       0,   0,   0,   0,   0,   2,   0,   2,   0,   2,   0,   0,   0,   0,   2,   2,   5,   5,
     506             :       5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     507             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     508             :       5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,
     509             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   5,   5,
     510             :       5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   2,
     511             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     512             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,
     513             :       0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     514             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     515             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     516             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     517             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     518             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,
     519             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     520             :       2,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
     521             :       5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   5,   5,   5,   5,   2,   2,   2,   5,
     522             :       2,   2,   2,   5,   5,   2,   2,   2,   2,   2,   2,   2,   5,   5,   5,   2,   2,   2,
     523             :       2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,
     524             :       2,   2,   2,   2,   2,   2,   2,   2,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     525             :       2,   2,   2,   2,   2,   2,   0,   0, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     526             :     105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
     527             :     105, 105, 105, 105, 105, 105, 105, 105, 105, 105,   0, 105,   0,   0,   0,   0,   0, 105,
     528             :       0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     529             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     530             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     531             :       5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,
     532             :       5,   0,   5,   0,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     533             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     534             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,
     535             :       5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     536             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     537             :       5,   0,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   0,   5,   0,
     538             :       5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     539             :       5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     540             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     541             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     542             :       5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,
     543             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     544             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     545             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     546             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   2,   2,   2,   0,   0,   0,   0,
     547             :       0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,
     548             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     549             :       5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     550             :       0,   0,   0,   0,   0,   0, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     551             :     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     552             :     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     553             :     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
     554             :     106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,  87,  87,  87,  87,
     555             :      87,  87,   0,   0,  92,  92,  92,  92,  92,  92,   0,   0,   0,   5,   5,   5,   5,   5,
     556             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     557             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     558             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     559             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     560             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     561             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,
     562             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   1,   5,   5,   5,
     563             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     564             :       5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     565             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     566             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     567             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     568             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   5,   5,
     569             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   5,   5,
     570             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   2,   2,
     571             :       2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,
     572             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   0,   0,   0,
     573             :       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     574             :       5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,
     575             :       0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,
     576             :       5,   5,   5,   0,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     577             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     578             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     579             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,
     580             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     581             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   5,   0,   0,
     582             :       0,   0,   5,   2,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,
     583             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     584             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   0,   0,
     585             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   5,   5,
     586             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     587             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     588             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     589             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     590             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,
     591             :       0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     592             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     593             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   5,   0,   0,   0,   0,   0,   5,   5,
     594             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     595             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     596             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     597             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,
     598             :       0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     599             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     600             :       5,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,
     601             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
     602             :       0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,   5,   5,   5,
     603             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     604             :       5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   0,   0,   0,
     605             :       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     606             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     607             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,
     608             :       0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     609             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   2,   2,
     610             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     611             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     612             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     613             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,
     614             :       2,   2,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     615             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     616             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     617             :       5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,
     618             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     619             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   2,   2,   2,   2,   2,   2,   2,
     620             :       2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
     621             :       2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   0,
     622             :       0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     623             :       2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     624             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     625             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     626             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,
     627             :       2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     628             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     629             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,
     630             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,   5,   5,   5,   5,   5,   5,
     631             :       0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,
     632             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,
     633             :       2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,
     634             :       2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     635             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,
     636             :       2,   2,   2,   2,   2,   2,   2,   2,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,
     637             :       2,   2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     638             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     639             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,
     640             :       2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     641             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     642             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     643             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     644             :       2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
     645             :       2,   2,   0,   0,   0,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     646             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     647             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     648             :       0,   0, 107, 108, 109, 110, 110, 111, 112, 113, 114,   0,   0,   0,   0,   0,   0,   0,
     649             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     650             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     651             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     652             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   0,   2,   2,   2,   2,
     653             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,
     654             :       5,   5,   5,   2,   5,   5,   5,   5,   2,   2,   2,   5,   5,   0,   2,   2,   0,   0,
     655             :       0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     656             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     657             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     658             :       5,   5,   5,   5,   5,   5,   5, 115,   5,   5,   5, 116,   5,   5,   2,   2,   2,   2,
     659             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     660             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     661             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,
     662             :       0,   2,   2,   2,   2,   2,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     663             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     664             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     665             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     666             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     667             :       8,   9,   5,   5,   5,   5,   5, 117,   5,   5, 118,   5,   8,   9,   8,   9,   8,   9,
     668             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     669             :       8,   9,   8,   9,   8,   9,   8,   9, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120,
     670             :     120, 120, 120, 120, 120, 120, 119, 119, 119, 119, 119, 119,   0,   0, 120, 120, 120, 120,
     671             :     120, 120,   0,   0, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120, 120, 120, 120, 120,
     672             :     120, 120, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120,
     673             :     119, 119, 119, 119, 119, 119,   0,   0, 120, 120, 120, 120, 120, 120,   0,   0,   5, 119,
     674             :       5, 119,   5, 119,   5, 119,   0, 120,   0, 120,   0, 120,   0, 120, 119, 119, 119, 119,
     675             :     119, 119, 119, 119, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 122, 122, 122, 122,
     676             :     123, 123, 124, 124, 125, 125, 126, 126,   0,   0, 119, 119, 119, 119, 119, 119, 119, 119,
     677             :     120, 120, 120, 120, 120, 120, 120, 120, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120,
     678             :     120, 120, 120, 120, 120, 120, 119, 119, 119, 119, 119, 119, 119, 119, 120, 120, 120, 120,
     679             :     120, 120, 120, 120, 119, 119,   5, 127,   5,   0,   5,   5, 120, 120, 128, 128, 129,   0,
     680             :     130,   0,   0,   0,   5, 127,   5,   0,   5,   5, 131, 131, 131, 131, 129,   0,   0,   0,
     681             :     119, 119,   5,   5,   0,   0,   5,   5, 120, 120, 132, 132,   0,   0,   0,   0, 119, 119,
     682             :       5,   5,   5,  95,   5,   5, 120, 120, 133, 133,  99,   0,   0,   0,   0,   0,   5, 127,
     683             :       5,   0,   5,   5, 134, 134, 135, 135, 129,   0,   0,   0,   1,   1,   1,   1,   1,   1,
     684             :       1,   1,   1,   1,   1,   0,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     685             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,
     686             :       0,   0,   0,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     687             :       0,   0,   0,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     688             :       0,   0,   0,   0,   0,   0,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,
     689             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,
     690             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   0,   0,   0,   0,
     691             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,
     692             :       5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     693             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     694             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     695             :       0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,
     696             :       0,   0,   0,   2,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     697             :       2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     698             :       5,   0,   0,   0,   0,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     699             :       0,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   5,   0,
     700             :     136,   0,   5,   0, 137, 138,   5,   5,   5,   5,   5,   5, 139,   5,   5,   5,   5,   5,
     701             :       5,   5,   0,   0,   5,   5,   5,   5,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,
     702             :       0,   0,   0,   0, 140,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     703             :       0,   0,   0,   0, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
     704             :     141, 141, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
     705             :       5,   5,   5,   8,   9,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     706             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     707             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     708             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     709             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     710             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     711             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 143, 143, 143, 143, 143, 143, 143, 143,
     712             :     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
     713             :     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
     714             :     144, 144, 144, 144, 144, 144, 144, 144,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     715             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 103, 103, 103, 103, 103, 103,
     716             :     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
     717             :     103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
     718             :     103, 103, 103, 103, 103,   0, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
     719             :     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
     720             :     104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,   0,
     721             :       8,   9, 145, 146, 147, 148, 149,   8,   9,   8,   9,   8,   9, 150, 151, 152, 153,   5,
     722             :       8,   9,   5,   8,   9,   5,   5,   5,   5,   5,   5,   5, 154, 154,   8,   9,   8,   9,
     723             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     724             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   5,   0,   0,   0,
     725             :       0,   0,   0,   8,   9,   8,   9,   2,   2,   2,   8,   9,   0,   0,   0,   0,   0,   0,
     726             :       0,   0,   0,   0,   0,   0, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     727             :     155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
     728             :     155, 155, 155, 155, 155, 155, 155, 155,   0, 155,   0,   0,   0,   0,   0, 155,   0,   0,
     729             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     730             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     731             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     732             :       5,   5,   0,   0,   0,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,
     733             :       0,   0,   0,   0,   0,   0,   0,   2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     734             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,
     735             :       0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,
     736             :       5,   0,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   0,
     737             :       5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,
     738             :       5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   0,   2,   2,   2,   2,
     739             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     740             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   1,   0,   0,   0,   0,   5,   5,   5,
     741             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     742             :       0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,
     743             :       2,   2,   2,   2,   0,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   0,
     744             :       0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     745             :       5,   5,   5,   5,   5,   5,   5,   0,   0,   2,   2,   5,   5,   5,   5,   5,   0,   5,
     746             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     747             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     748             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     749             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     750             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,
     751             :       5,   5,   5,   5,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     752             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     753             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   5,
     754             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     755             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,
     756             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     757             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     758             :       5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     759             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     760             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     761             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     762             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     763             :       5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     764             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     765             :       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     766             :       5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     767             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     768             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     769             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,
     770             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     771             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     772             :       5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     773             :       5,   5,   5,   5,   5,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     774             :       5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,   5,
     775             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     776             :       0,   0,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     777             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     778             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   5,   2,   0,   0,   0,   0,
     779             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   5,   8,   9,   8,   9,   8,   9,
     780             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     781             :       8,   9,   8,   9,   5,   5,   2,   2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     782             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     783             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     784             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     785             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,
     786             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     787             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     788             :       0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   8,   9,   8,   9,   8,   9,
     789             :       8,   9,   8,   9,   8,   9,   8,   9,   5,   5,   8,   9,   8,   9,   8,   9,   8,   9,
     790             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     791             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     792             :       8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     793             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   8,   9,   8,   9, 156,   8,   9,   8,   9,
     794             :       8,   9,   8,   9,   8,   9,   5,   0,   0,   8,   9, 157,   5,   5,   8,   9,   8,   9,
     795             :       5,   5,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,   8,   9,
     796             :       8,   9,   8,   9, 158, 159, 160, 161, 158,   0, 162, 163, 164, 165,   8,   9,   8,   9,
     797             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     798             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     799             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     800             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     801             :       5,   5,   2,   5,   5,   5,   2,   5,   5,   5,   5,   2,   5,   5,   5,   5,   5,   5,
     802             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,
     803             :       2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     804             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     805             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     806             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     807             :       5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     808             :       0,   0,   2,   2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     809             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     810             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     811             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     812             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
     813             :       2,   2,   0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     814             :       2,   2,   2,   2,   2,   2,   2,   2,   5,   5,   5,   5,   5,   5,   0,   0,   0,   5,
     815             :       0,   5,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   5,   5,   5,   5,
     816             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     817             :       5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   5,   5,
     818             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     819             :       5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,
     820             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     821             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     822             :       5,   5,   5,   0,   0,   0,   2,   2,   2,   2,   5,   5,   5,   5,   5,   5,   5,   5,
     823             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     824             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     825             :       5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,
     826             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   2,   2,   2,   2,
     827             :       2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   2,
     828             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,
     829             :       2,   2,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     830             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     831             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,
     832             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     833             :       5,   5,   5,   2,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   0,   0,   2,   2,
     834             :       2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,
     835             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     836             :       5,   0,   0,   0,   5,   2,   2,   2,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     837             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     838             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     839             :       5,   5,   5,   5,   2,   5,   2,   2,   2,   5,   5,   2,   2,   5,   5,   5,   5,   5,
     840             :       2,   2,   5,   2,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     841             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   0,   0,   5,   5,
     842             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   0,   0,   5,   5,
     843             :       5,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,
     844             :       5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,
     845             :       0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,
     846             :       5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     847             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     848             :       5,   5,   5,   5,   5, 166,   5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,
     849             :       5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 167, 167,
     850             :     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
     851             :     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
     852             :     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
     853             :     167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
     854             :     167, 167, 167, 167, 167, 167,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     855             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     856             :       5,   5,   5,   5,   5,   2,   2,   2,   2,   2,   2,   2,   2,   0,   2,   2,   0,   0,
     857             :       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   5,   5,
     858             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     859             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,
     860             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,
     861             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,
     862             :       0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     863             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     864             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,
     865             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     866             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     867             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,
     868             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     869             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     870             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     871             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     872             :       0,   0,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     873             :       0,   0,   0,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   5,   2,   5,   5,   5,
     874             :       5,   5,   5,   5,   5,   5,   5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     875             :       5,   5,   5,   0,   5,   5,   5,   5,   5,   0,   5,   0,   5,   5,   0,   5,   5,   0,
     876             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     877             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     878             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     879             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     880             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     881             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     882             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     883             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,
     884             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     885             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     886             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     887             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     888             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     889             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,
     890             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,
     891             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     892             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     893             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     894             :       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     895             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     896             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     897             :       5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     898             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     899             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,   5,   5,
     900             :       5,   5,   5,   5,   5,   5,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,
     901             :       2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     902             :       0,   0,   0,   0,   0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
     903             :       2,   2,   2,   2,   0,   0,   0,   2,   2,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     904             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   2,   2,   2,
     905             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     906             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,   5,   5,
     907             :       5,   0,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     908             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     909             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     910             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     911             :       5,   0,   0,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     912             :       0,   0,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   0,   0,   0,   0,   0,   0,
     913             :       0,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
     914             :       3,   3,   3,   3,   3,   3,   3,   3,   3,   0,   0,   0,   0,   2,   0,   4,   4,   4,
     915             :       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
     916             :       4,   4,   4,   4,   4,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   5,   5,
     917             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     918             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     919             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     920             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,
     921             :       5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   0,   0,   0,
     922             :       5,   5,   5,   5,   5,   5,   0,   0,   5,   5,   5,   5,   5,   5,   0,   0,   5,   5,
     923             :       5,   5,   5,   5,   0,   0,   5,   5,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     924             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
     925             :       0,   0,   0,   0,   0,   0,   0,   0,
     926             : };
     927             : 
     928             : const CodepointsWithSameUpperCaseInfo unicode::js_codepoints_with_same_upper_info[] = {
     929             :     { 0, 0, 0 },
     930             :     { 32, 0, 0 },
     931             :     { 32, 232, 0 },
     932             :     { 32, 300, 0 },
     933             :     { 0, 200, 0 },
     934             :     { 0, 268, 0 },
     935             :     { 0, 775, 0 },
     936             :     { 1, 0, 0 },
     937             :     { 65336, 0, 0 },
     938             :     { 65415, 0, 0 },
     939             :     { 65268, 0, 0 },
     940             :     { 210, 0, 0 },
     941             :     { 206, 0, 0 },
     942             :     { 205, 0, 0 },
     943             :     { 79, 0, 0 },
     944             :     { 202, 0, 0 },
     945             :     { 203, 0, 0 },
     946             :     { 207, 0, 0 },
     947             :     { 211, 0, 0 },
     948             :     { 209, 0, 0 },
     949             :     { 213, 0, 0 },
     950             :     { 214, 0, 0 },
     951             :     { 218, 0, 0 },
     952             :     { 217, 0, 0 },
     953             :     { 219, 0, 0 },
     954             :     { 1, 2, 0 },
     955             :     { 0, 1, 0 },
     956             :     { 65535, 0, 0 },
     957             :     { 65439, 0, 0 },
     958             :     { 65480, 0, 0 },
     959             :     { 65406, 0, 0 },
     960             :     { 10795, 0, 0 },
     961             :     { 65373, 0, 0 },
     962             :     { 10792, 0, 0 },
     963             :     { 65341, 0, 0 },
     964             :     { 69, 0, 0 },
     965             :     { 71, 0, 0 },
     966             :     { 0, 116, 7289 },
     967             :     { 116, 0, 0 },
     968             :     { 38, 0, 0 },
     969             :     { 37, 0, 0 },
     970             :     { 64, 0, 0 },
     971             :     { 63, 0, 0 },
     972             :     { 32, 62, 0 },
     973             :     { 32, 96, 0 },
     974             :     { 32, 57, 0 },
     975             :     { 65452, 32, 7205 },
     976             :     { 32, 86, 0 },
     977             :     { 64793, 32, 0 },
     978             :     { 32, 54, 0 },
     979             :     { 32, 80, 0 },
     980             :     { 31, 32, 0 },
     981             :     { 32, 47, 0 },
     982             :     { 0, 30, 0 },
     983             :     { 0, 64, 0 },
     984             :     { 0, 25, 0 },
     985             :     { 65420, 0, 7173 },
     986             :     { 0, 54, 0 },
     987             :     { 64761, 0, 0 },
     988             :     { 0, 22, 0 },
     989             :     { 0, 48, 0 },
     990             :     { 0, 15, 0 },
     991             :     { 8, 0, 0 },
     992             :     { 65506, 0, 0 },
     993             :     { 65511, 0, 0 },
     994             :     { 65521, 0, 0 },
     995             :     { 65514, 0, 0 },
     996             :     { 65482, 0, 0 },
     997             :     { 65488, 0, 0 },
     998             :     { 65472, 0, 0 },
     999             :     { 65529, 0, 0 },
    1000             :     { 80, 0, 0 },
    1001             :     { 32, 6254, 0 },
    1002             :     { 32, 6253, 0 },
    1003             :     { 32, 6244, 0 },
    1004             :     { 32, 6242, 0 },
    1005             :     { 32, 6242, 6243 },
    1006             :     { 32, 6236, 0 },
    1007             :     { 0, 6222, 0 },
    1008             :     { 0, 6221, 0 },
    1009             :     { 0, 6212, 0 },
    1010             :     { 0, 6210, 0 },
    1011             :     { 0, 6210, 6211 },
    1012             :     { 0, 6204, 0 },
    1013             :     { 1, 6181, 0 },
    1014             :     { 0, 6180, 0 },
    1015             :     { 15, 0, 0 },
    1016             :     { 48, 0, 0 },
    1017             :     { 7264, 0, 0 },
    1018             :     { 38864, 0, 0 },
    1019             :     { 59314, 0, 0 },
    1020             :     { 59315, 0, 0 },
    1021             :     { 59324, 0, 0 },
    1022             :     { 59326, 0, 0 },
    1023             :     { 59326, 0, 1 },
    1024             :     { 59325, 65535, 0 },
    1025             :     { 59332, 0, 0 },
    1026             :     { 59356, 0, 0 },
    1027             :     { 0, 35267, 0 },
    1028             :     { 1, 59, 0 },
    1029             :     { 0, 58, 0 },
    1030             :     { 65478, 0, 0 },
    1031             :     { 65528, 0, 0 },
    1032             :     { 65462, 0, 0 },
    1033             :     { 65527, 0, 0 },
    1034             :     { 58247, 58363, 0 },
    1035             :     { 65450, 0, 0 },
    1036             :     { 65436, 0, 0 },
    1037             :     { 65424, 0, 0 },
    1038             :     { 65408, 0, 0 },
    1039             :     { 65410, 0, 0 },
    1040             :     { 28, 0, 0 },
    1041             :     { 16, 0, 0 },
    1042             :     { 26, 0, 0 },
    1043             :     { 54793, 0, 0 },
    1044             :     { 61722, 0, 0 },
    1045             :     { 54809, 0, 0 },
    1046             :     { 54756, 0, 0 },
    1047             :     { 54787, 0, 0 },
    1048             :     { 54753, 0, 0 },
    1049             :     { 54754, 0, 0 },
    1050             :     { 54721, 0, 0 },
    1051             :     { 30270, 1, 0 },
    1052             :     { 30269, 0, 0 },
    1053             :     { 30204, 0, 0 },
    1054             :     { 23256, 0, 0 },
    1055             :     { 23228, 0, 0 },
    1056             :     { 23217, 0, 0 },
    1057             :     { 23221, 0, 0 },
    1058             :     { 23231, 0, 0 },
    1059             :     { 23278, 0, 0 },
    1060             :     { 23254, 0, 0 },
    1061             :     { 23275, 0, 0 },
    1062             :     { 928, 0, 0 },
    1063             : };
    1064             : 
    1065             : const uint8_t unicode::codepoints_with_same_upper_index1[] = {
    1066             :       0,   1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   0,   0,  10,  11,  12,  13,  14,
    1067             :      15,  16,  17,  18,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1068             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1069             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  19,  20,   0,   0,   0,   0,
    1070             :       0,   0,   0,   0,   0,   0,  21,  22,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1071             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1072             :       0,   0,   0,   0,   0,   0,  23,   0,   0,   0,   0,   0,  24,  25,  26,  24,  27,  28,
    1073             :      29,  30,   0,   0,   0,   0,  31,  32,  33,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1074             :       0,   0,  34,  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1075             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  36,  37,  24,  38,
    1076             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1077             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1078             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1079             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1080             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1081             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1082             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1083             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1084             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1085             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1086             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1087             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1088             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1089             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1090             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1091             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1092             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1093             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1094             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1095             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1096             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1097             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1098             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1099             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1100             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1101             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1102             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,
    1103             :      40,   0,  41,  42,  43,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1104             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1105             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1106             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1107             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1108             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1109             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1110             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1111             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1112             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1113             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1114             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1115             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1116             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1117             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1118             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1119             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1120             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1121             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1122             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  44,   0,   0,   0,
    1123             : };
    1124             : 
    1125             : const uint8_t unicode::codepoints_with_same_upper_index2[] = {
    1126             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1127             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1128             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1129             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,
    1130             :       1,   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   3,   1,   1,   1,   1,   1,   1,
    1131             :       1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   4,   0,   0,
    1132             :       0,   0,   0,   0,   0,   0,   0,   5,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1133             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1134             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1135             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1136             :       0,   6,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,
    1137             :       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
    1138             :       1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1139             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1140             :       0,   0,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1141             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1142             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   0,   8,
    1143             :       7,   0,   7,   0,   7,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,
    1144             :       0,   7,   0,   7,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1145             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1146             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   9,   7,
    1147             :       0,   7,   0,   7,   0,  10,   0,  11,   7,   0,   7,   0,  12,   7,   0,  13,  13,   7,
    1148             :       0,   0,  14,  15,  16,   7,   0,  13,  17,   0,  18,  19,   7,   0,   0,   0,  18,  20,
    1149             :       0,  21,   7,   0,   7,   0,   7,   0,  22,   7,   0,  22,   0,   0,   7,   0,  22,   7,
    1150             :       0,  23,  23,   7,   0,   7,   0,  24,   7,   0,   0,   0,   7,   0,   0,   0,   0,   0,
    1151             :       0,   0,  25,  26,  27,  25,  26,  27,  25,  26,  27,   7,   0,   7,   0,   7,   0,   7,
    1152             :       0,   7,   0,   7,   0,   7,   0,   7,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1153             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   0,  25,  26,  27,   7,   0,  28,  29,
    1154             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1155             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1156             :       7,   0,   7,   0,  30,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1157             :       7,   0,   7,   0,   7,   0,   0,   0,   0,   0,   0,   0,  31,   7,   0,  32,  33,   0,
    1158             :       0,   7,   0,  34,  35,  36,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   0,   0,
    1159             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1160             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1161             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  37,   0,   0,
    1162             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1163             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1164             :       0,   0,   0,   0,   7,   0,   7,   0,   0,   0,   7,   0,   0,   0,   0,   0,   0,   0,
    1165             :       0,  38,   0,   0,   0,   0,   0,   0,  39,   0,  40,  40,  40,   0,  41,   0,  42,  42,
    1166             :       0,   1,  43,   1,   1,  44,   1,   1,  45,  46,  47,   1,  48,   1,   1,   1,  49,  50,
    1167             :       0,  51,   1,   1,  52,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,   0,  53,   0,
    1168             :       0,  54,   0,   0,  55,  56,  57,   0,  58,   0,   0,   0,  59,  60,  26,  27,   0,   0,
    1169             :      61,   0,   0,   0,   0,   0,   0,   0,   0,  62,  63,  64,   0,   0,   0,  65,  66,   0,
    1170             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1171             :       7,   0,   7,   0,   7,   0,  67,  68,   0,   0,   0,  69,   0,   7,   0,  70,   7,   0,
    1172             :       0,  30,  30,  30,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,  71,
    1173             :      71,  71,   1,   1,  72,   1,  73,   1,   1,   1,   1,   1,   1,   1,   1,   1,  74,   1,
    1174             :       1,  75,  76,   1,   1,   1,   1,   1,   1,   1,  77,   1,   1,   1,   1,   1,   0,   0,
    1175             :      78,   0,  79,   0,   0,   0,   0,   0,   0,   0,   0,   0,  80,   0,   0,  81,  82,   0,
    1176             :       0,   0,   0,   0,   0,   0,  83,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1177             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   7,   0,  84,  85,   7,   0,   7,   0,
    1178             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1179             :       7,   0,   7,   0,   7,   0,   7,   0,   0,   0,   0,   0,   0,   0,   0,   0,   7,   0,
    1180             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1181             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1182             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,  86,   7,
    1183             :       0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   0,   7,   0,   7,   0,
    1184             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1185             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1186             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1187             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1188             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1189             :       7,   0,   0,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
    1190             :      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
    1191             :      87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1192             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1193             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1194             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1195             :       0,   0,   0,   0,   0,   0,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
    1196             :      88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,  88,
    1197             :      88,  88,  88,  88,  88,  88,  88,  88,   0,  88,   0,   0,   0,   0,   0,  88,   0,   0,
    1198             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1199             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1200             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1201             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1202             :       0,   0,   0,   0,   0,   0,   0,   0,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
    1203             :      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
    1204             :      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
    1205             :      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,
    1206             :      89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  89,  62,  62,
    1207             :      62,  62,  62,  62,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  90,  91,  92,  93,
    1208             :      94,  95,  96,  97,  98,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1209             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1210             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1211             :       0,   0,   0,   0,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1212             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1213             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1214             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1215             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1216             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,  99, 100,   7,   0,   7,   0,
    1217             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1218             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1219             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   0,   0,   0,   0,   0, 101,
    1220             :       0,   0,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1221             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1222             :       0,   0,   0,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,   0,   0,
    1223             :       0,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102,   0,   0,   0,   0,   0,   0,
    1224             :       0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,   0,   0,   0,   0,   0,   0,
    1225             :       0,   0, 102, 102, 102, 102, 102, 102, 102, 102,   0,   0,   0,   0,   0,   0,   0,   0,
    1226             :     102, 102, 102, 102, 102, 102,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 102,
    1227             :       0, 102,   0, 102,   0, 102,   0,   0,   0,   0,   0,   0,   0,   0, 102, 102, 102, 102,
    1228             :     102, 102, 102, 102,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1229             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,
    1230             :       0,   0,   0,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,   0,   0,
    1231             :       0,   0,   0,   0,   0,   0, 102, 102, 102, 102, 102, 102, 102, 102,   0,   0,   0,   0,
    1232             :       0,   0,   0,   0, 102, 102, 103, 103, 104,   0, 105,   0,   0,   0,   0,   0,   0,   0,
    1233             :       0,   0, 106, 106, 106, 106, 104,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1234             :     102, 102, 107, 107,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 102, 102,
    1235             :     108, 108,  70,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 109, 109, 110, 110,
    1236             :     104,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1237             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1238             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1239             :     111,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1240             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1241             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 112, 112, 112, 112, 112, 112, 112, 112,
    1242             :     112, 112, 112, 112, 112, 112, 112, 112,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1243             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   7,   0,   0,   0,   0,   0,   0,   0,   0,
    1244             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1245             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1246             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1247             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1248             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1249             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 113, 113,
    1250             :     113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
    1251             :     113, 113, 113, 113, 113, 113,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1252             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1253             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1254             :      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
    1255             :      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,
    1256             :      87,  87,  87,  87,  87,  87,  87,  87,  87,  87,  87,   0,   0,   0,   0,   0,   0,   0,
    1257             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1258             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1259             :       0,   0,   0,   0,   0,   0,   7,   0, 114, 115, 116,   0,   0,   7,   0,   7,   0,   7,
    1260             :       0, 117, 118, 119, 120,   0,   7,   0,   0,   7,   0,   0,   0,   0,   0,   0,   0,   0,
    1261             :     121, 121,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1262             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1263             :       7,   0,   0,   0,   0,   0,   0,   0,   0,   7,   0,   7,   0,   0,   0,   0,   7,   0,
    1264             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   7,   0,   7,   0,   7,   0,
    1265             :       7,   0,   7,   0, 122, 123,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1266             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1267             :       7,   0,   7,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1268             :       0,   0,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1269             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   0,   0,   0,   0,
    1270             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1271             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1272             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1273             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   7,   0,   7,   0,   7,   0,
    1274             :       7,   0,   7,   0,   7,   0,   7,   0,   0,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1275             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1276             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1277             :       7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1278             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   7,   0,   7,   0, 124,   7,   0,   7,   0,
    1279             :       7,   0,   7,   0,   7,   0,   0,   0,   0,   7,   0, 125,   0,   0,   7,   0,   7,   0,
    1280             :       0,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,   7,   0,
    1281             :       7,   0,   7,   0, 126, 127, 128, 129, 126,   0, 130, 131, 132, 133,   7,   0,   7,   0,
    1282             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1283             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1284             :       0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
    1285             :       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,   0,   0,   0,   0,
    1286             : };
    1287             : 
    1288             : const FoldingInfo unicode::js_foldinfo[] = {
    1289             :     { 0, 0, 0, 0 },
    1290             :     { 32, 0, 0, 0 },
    1291             :     { 32, 8415, 0, 0 },
    1292             :     { 32, 300, 0, 0 },
    1293             :     { 0, 65504, 0, 0 },
    1294             :     { 0, 65504, 8383, 0 },
    1295             :     { 0, 65504, 268, 0 },
    1296             :     { 775, 743, 0, 0 },
    1297             :     { 32, 8294, 0, 0 },
    1298             :     { 0, 7615, 0, 0 },
    1299             :     { 0, 65504, 8262, 0 },
    1300             :     { 0, 121, 0, 0 },
    1301             :     { 1, 0, 0, 0 },
    1302             :     { 0, 65535, 0, 0 },
    1303             :     { 65415, 0, 0, 0 },
    1304             :     { 65268, 65236, 0, 0 },
    1305             :     { 0, 195, 0, 0 },
    1306             :     { 210, 0, 0, 0 },
    1307             :     { 206, 0, 0, 0 },
    1308             :     { 205, 0, 0, 0 },
    1309             :     { 79, 0, 0, 0 },
    1310             :     { 202, 0, 0, 0 },
    1311             :     { 203, 0, 0, 0 },
    1312             :     { 207, 0, 0, 0 },
    1313             :     { 0, 97, 0, 0 },
    1314             :     { 211, 0, 0, 0 },
    1315             :     { 209, 0, 0, 0 },
    1316             :     { 0, 163, 0, 0 },
    1317             :     { 213, 0, 0, 0 },
    1318             :     { 0, 130, 0, 0 },
    1319             :     { 214, 0, 0, 0 },
    1320             :     { 218, 0, 0, 0 },
    1321             :     { 217, 0, 0, 0 },
    1322             :     { 219, 0, 0, 0 },
    1323             :     { 0, 56, 0, 0 },
    1324             :     { 2, 1, 0, 0 },
    1325             :     { 1, 65535, 0, 0 },
    1326             :     { 0, 65534, 65535, 0 },
    1327             :     { 0, 65457, 0, 0 },
    1328             :     { 65439, 0, 0, 0 },
    1329             :     { 65480, 0, 0, 0 },
    1330             :     { 65406, 0, 0, 0 },
    1331             :     { 10795, 0, 0, 0 },
    1332             :     { 65373, 0, 0, 0 },
    1333             :     { 10792, 0, 0, 0 },
    1334             :     { 0, 10815, 0, 0 },
    1335             :     { 65341, 0, 0, 0 },
    1336             :     { 69, 0, 0, 0 },
    1337             :     { 71, 0, 0, 0 },
    1338             :     { 0, 10783, 0, 0 },
    1339             :     { 0, 10780, 0, 0 },
    1340             :     { 0, 10782, 0, 0 },
    1341             :     { 0, 65326, 0, 0 },
    1342             :     { 0, 65330, 0, 0 },
    1343             :     { 0, 65331, 0, 0 },
    1344             :     { 0, 65334, 0, 0 },
    1345             :     { 0, 65333, 0, 0 },
    1346             :     { 0, 42319, 0, 0 },
    1347             :     { 0, 42315, 0, 0 },
    1348             :     { 0, 65329, 0, 0 },
    1349             :     { 0, 42280, 0, 0 },
    1350             :     { 0, 42308, 0, 0 },
    1351             :     { 0, 65327, 0, 0 },
    1352             :     { 0, 65325, 0, 0 },
    1353             :     { 0, 10743, 0, 0 },
    1354             :     { 0, 42305, 0, 0 },
    1355             :     { 0, 10749, 0, 0 },
    1356             :     { 0, 65323, 0, 0 },
    1357             :     { 0, 65322, 0, 0 },
    1358             :     { 0, 10727, 0, 0 },
    1359             :     { 0, 65318, 0, 0 },
    1360             :     { 0, 42282, 0, 0 },
    1361             :     { 0, 65467, 0, 0 },
    1362             :     { 0, 65319, 0, 0 },
    1363             :     { 0, 65465, 0, 0 },
    1364             :     { 0, 65317, 0, 0 },
    1365             :     { 0, 42261, 0, 0 },
    1366             :     { 0, 42258, 0, 0 },
    1367             :     { 116, 84, 7289, 0 },
    1368             :     { 116, 0, 0, 0 },
    1369             :     { 38, 0, 0, 0 },
    1370             :     { 37, 0, 0, 0 },
    1371             :     { 64, 0, 0, 0 },
    1372             :     { 63, 0, 0, 0 },
    1373             :     { 32, 62, 0, 0 },
    1374             :     { 32, 96, 0, 0 },
    1375             :     { 32, 57, 92, 0 },
    1376             :     { 32, 65452, 7205, 0 },
    1377             :     { 32, 86, 0, 0 },
    1378             :     { 32, 64793, 0, 0 },
    1379             :     { 32, 54, 0, 0 },
    1380             :     { 32, 80, 0, 0 },
    1381             :     { 32, 31, 0, 0 },
    1382             :     { 32, 47, 0, 0 },
    1383             :     { 32, 7549, 0, 0 },
    1384             :     { 0, 65498, 0, 0 },
    1385             :     { 0, 65499, 0, 0 },
    1386             :     { 0, 65504, 30, 0 },
    1387             :     { 0, 65504, 64, 0 },
    1388             :     { 0, 65504, 25, 60 },
    1389             :     { 0, 65420, 65504, 7173 },
    1390             :     { 0, 65504, 54, 0 },
    1391             :     { 0, 64761, 65504, 0 },
    1392             :     { 0, 65504, 22, 0 },
    1393             :     { 0, 65504, 48, 0 },
    1394             :     { 1, 65505, 0, 0 },
    1395             :     { 0, 65504, 65535, 0 },
    1396             :     { 0, 65504, 15, 0 },
    1397             :     { 0, 65504, 7517, 0 },
    1398             :     { 0, 65472, 0, 0 },
    1399             :     { 0, 65473, 0, 0 },
    1400             :     { 8, 0, 0, 0 },
    1401             :     { 65506, 65474, 0, 0 },
    1402             :     { 65511, 65479, 35, 0 },
    1403             :     { 65521, 65489, 0, 0 },
    1404             :     { 65514, 65482, 0, 0 },
    1405             :     { 0, 65528, 0, 0 },
    1406             :     { 65482, 65450, 0, 0 },
    1407             :     { 65488, 65456, 0, 0 },
    1408             :     { 0, 7, 0, 0 },
    1409             :     { 0, 65420, 0, 0 },
    1410             :     { 65476, 65444, 65501, 0 },
    1411             :     { 65472, 65440, 0, 0 },
    1412             :     { 65529, 0, 0, 0 },
    1413             :     { 80, 0, 0, 0 },
    1414             :     { 32, 6254, 0, 0 },
    1415             :     { 32, 6253, 0, 0 },
    1416             :     { 32, 6244, 0, 0 },
    1417             :     { 32, 6242, 0, 0 },
    1418             :     { 32, 6242, 6243, 0 },
    1419             :     { 32, 6236, 0, 0 },
    1420             :     { 0, 65504, 6222, 0 },
    1421             :     { 0, 65504, 6221, 0 },
    1422             :     { 0, 65504, 6212, 0 },
    1423             :     { 0, 65504, 6210, 0 },
    1424             :     { 0, 65504, 6210, 6211 },
    1425             :     { 0, 65504, 6204, 0 },
    1426             :     { 0, 65456, 0, 0 },
    1427             :     { 1, 6181, 0, 0 },
    1428             :     { 0, 65535, 6180, 0 },
    1429             :     { 15, 0, 0, 0 },
    1430             :     { 0, 65521, 0, 0 },
    1431             :     { 48, 0, 0, 0 },
    1432             :     { 0, 65488, 0, 0 },
    1433             :     { 7264, 0, 0, 0 },
    1434             :     { 0, 38864, 0, 0 },
    1435             :     { 0, 8, 0, 0 },
    1436             :     { 65528, 0, 0, 0 },
    1437             :     { 59314, 59282, 0, 0 },
    1438             :     { 59315, 59283, 0, 0 },
    1439             :     { 59324, 59292, 0, 0 },
    1440             :     { 59326, 59294, 0, 0 },
    1441             :     { 59326, 59294, 1, 0 },
    1442             :     { 59325, 59293, 65535, 0 },
    1443             :     { 59332, 59300, 0, 0 },
    1444             :     { 59356, 59355, 0, 0 },
    1445             :     { 35267, 35266, 0, 0 },
    1446             :     { 0, 35332, 0, 0 },
    1447             :     { 0, 3814, 0, 0 },
    1448             :     { 1, 59, 0, 0 },
    1449             :     { 0, 65535, 58, 0 },
    1450             :     { 65478, 65477, 0, 0 },
    1451             :     { 57921, 0, 0, 0 },
    1452             :     { 0, 74, 0, 0 },
    1453             :     { 0, 86, 0, 0 },
    1454             :     { 0, 100, 0, 0 },
    1455             :     { 0, 128, 0, 0 },
    1456             :     { 0, 112, 0, 0 },
    1457             :     { 0, 126, 0, 0 },
    1458             :     { 0, 9, 0, 0 },
    1459             :     { 65462, 0, 0, 0 },
    1460             :     { 65527, 0, 0, 0 },
    1461             :     { 58363, 58247, 58331, 0 },
    1462             :     { 65450, 0, 0, 0 },
    1463             :     { 65436, 0, 0, 0 },
    1464             :     { 65424, 0, 0, 0 },
    1465             :     { 65408, 0, 0, 0 },
    1466             :     { 65410, 0, 0, 0 },
    1467             :     { 58019, 57987, 0, 0 },
    1468             :     { 57153, 57121, 0, 0 },
    1469             :     { 57274, 57242, 0, 0 },
    1470             :     { 28, 0, 0, 0 },
    1471             :     { 0, 65508, 0, 0 },
    1472             :     { 16, 0, 0, 0 },
    1473             :     { 0, 65520, 0, 0 },
    1474             :     { 26, 0, 0, 0 },
    1475             :     { 0, 65510, 0, 0 },
    1476             :     { 54793, 0, 0, 0 },
    1477             :     { 61722, 0, 0, 0 },
    1478             :     { 54809, 0, 0, 0 },
    1479             :     { 0, 54741, 0, 0 },
    1480             :     { 0, 54744, 0, 0 },
    1481             :     { 54756, 0, 0, 0 },
    1482             :     { 54787, 0, 0, 0 },
    1483             :     { 54753, 0, 0, 0 },
    1484             :     { 54754, 0, 0, 0 },
    1485             :     { 54721, 0, 0, 0 },
    1486             :     { 0, 58272, 0, 0 },
    1487             :     { 1, 30270, 0, 0 },
    1488             :     { 0, 30269, 65535, 0 },
    1489             :     { 30204, 0, 0, 0 },
    1490             :     { 23256, 0, 0, 0 },
    1491             :     { 23228, 0, 0, 0 },
    1492             :     { 23217, 0, 0, 0 },
    1493             :     { 23221, 0, 0, 0 },
    1494             :     { 23231, 0, 0, 0 },
    1495             :     { 23278, 0, 0, 0 },
    1496             :     { 23254, 0, 0, 0 },
    1497             :     { 23275, 0, 0, 0 },
    1498             :     { 928, 0, 0, 0 },
    1499             :     { 0, 64608, 0, 0 },
    1500             :     { 26672, 0, 0, 0 },
    1501             : };
    1502             : 
    1503             : const uint8_t unicode::folding_index1[] = {
    1504             :       0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,   0,   0,  11,  12,  13,  14,  15,
    1505             :      16,  17,  18,  19,  20,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1506             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1507             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  21,  22,   0,   0,   0,   0,
    1508             :       0,   0,   0,   0,   0,   0,  23,  24,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1509             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1510             :       0,   0,   0,   0,   0,   0,  25,   0,   0,  26,   0,   0,  27,  28,  29,  27,  30,  31,
    1511             :      32,  33,   0,   0,   0,   0,  34,  35,  36,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1512             :       0,   0,  37,  38,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1513             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  39,  40,  27,  41,
    1514             :      42,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1515             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1516             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1517             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1518             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1519             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1520             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1521             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1522             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1523             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1524             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1525             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1526             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1527             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1528             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1529             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1530             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1531             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1532             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1533             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1534             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1535             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1536             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1537             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1538             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1539             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1540             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  43,
    1541             :      44,   0,  45,  46,  47,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1542             :       0,  48,  49,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1543             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1544             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1545             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1546             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1547             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1548             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1549             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1550             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1551             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1552             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1553             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1554             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1555             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1556             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1557             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1558             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1559             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1560             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  50,  51,   0,   0,
    1561             : };
    1562             : 
    1563             : const uint8_t unicode::folding_index2[] = {
    1564             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1565             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1566             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1567             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,
    1568             :       1,   1,   1,   2,   1,   1,   1,   1,   1,   1,   1,   3,   1,   1,   1,   1,   1,   1,
    1569             :       1,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   5,
    1570             :       4,   4,   4,   4,   4,   4,   4,   6,   4,   4,   4,   4,   4,   4,   4,   0,   0,   0,
    1571             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1572             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1573             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1574             :       0,   7,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   8,
    1575             :       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   0,
    1576             :       1,   1,   1,   1,   1,   1,   1,   9,   4,   4,   4,   4,   4,  10,   4,   4,   4,   4,
    1577             :       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   4,   4,   4,   4,
    1578             :       4,   4,   4,  11,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1579             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1580             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,   0,   0,
    1581             :      12,  13,  12,  13,  12,  13,   0,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,
    1582             :      13,  12,  13,  12,  13,   0,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1583             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1584             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  14,  12,
    1585             :      13,  12,  13,  12,  13,  15,  16,  17,  12,  13,  12,  13,  18,  12,  13,  19,  19,  12,
    1586             :      13,   0,  20,  21,  22,  12,  13,  19,  23,  24,  25,  26,  12,  13,  27,   0,  25,  28,
    1587             :      29,  30,  12,  13,  12,  13,  12,  13,  31,  12,  13,  31,   0,   0,  12,  13,  31,  12,
    1588             :      13,  32,  32,  12,  13,  12,  13,  33,  12,  13,   0,   0,  12,  13,   0,  34,   0,   0,
    1589             :       0,   0,  35,  36,  37,  35,  36,  37,  35,  36,  37,  12,  13,  12,  13,  12,  13,  12,
    1590             :      13,  12,  13,  12,  13,  12,  13,  12,  13,  38,  12,  13,  12,  13,  12,  13,  12,  13,
    1591             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,   0,  35,  36,  37,  12,  13,  39,  40,
    1592             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1593             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1594             :      12,  13,  12,  13,  41,   0,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1595             :      12,  13,  12,  13,  12,  13,   0,   0,   0,   0,   0,   0,  42,  12,  13,  43,  44,  45,
    1596             :      45,  12,  13,  46,  47,  48,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  49,  50,
    1597             :      51,  52,  53,   0,  54,  54,   0,  55,   0,  56,  57,   0,   0,   0,  54,  58,   0,  59,
    1598             :       0,  60,  61,   0,  62,  63,  61,  64,  65,   0,   0,  63,   0,  66,  67,   0,   0,  68,
    1599             :       0,   0,   0,   0,   0,   0,   0,  69,   0,   0,  70,   0,   0,  70,   0,   0,   0,  71,
    1600             :      70,  72,  73,  73,  74,   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,   0,
    1601             :       0,   0,   0,  76,  77,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1602             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1603             :       0,   0,   0,   0,   0,   0,   0,  78,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1604             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1605             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  12,  13,  12,  13,
    1606             :       0,   0,  12,  13,   0,   0,   0,  29,  29,  29,   0,  79,   0,   0,   0,   0,   0,   0,
    1607             :      80,   0,  81,  81,  81,   0,  82,   0,  83,  83,   0,   1,  84,   1,   1,  85,   1,   1,
    1608             :      86,  87,  88,   1,  89,   1,   1,   1,  90,  91,   0,  92,   1,   1,  93,   1,   1,  94,
    1609             :       1,   1,  95,  96,  96,  96,   0,   4,  97,   4,   4,  98,   4,   4,  99, 100, 101,   4,
    1610             :     102,   4,   4,   4, 103, 104, 105, 106,   4,   4, 107,   4,   4, 108,   4,   4, 109, 110,
    1611             :     110, 111, 112, 113,   0,   0,   0, 114, 115, 116,  12,  13,  12,  13,  12,  13,  12,  13,
    1612             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13, 117, 118,
    1613             :     119, 120, 121, 122,   0,  12,  13, 123,  12,  13,   0,  41,  41,  41, 124, 124, 124, 124,
    1614             :     124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,   1,   1, 125,   1, 126,   1,
    1615             :       1,   1,   1,   1,   1,   1,   1,   1, 127,   1,   1, 128, 129,   1,   1,   1,   1,   1,
    1616             :       1,   1, 130,   1,   1,   1,   1,   1,   4,   4, 131,   4, 132,   4,   4,   4,   4,   4,
    1617             :       4,   4,   4,   4, 133,   4,   4, 134, 135,   4,   4,   4,   4,   4,   4,   4, 136,   4,
    1618             :       4,   4,   4,   4, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
    1619             :     137, 137,  12,  13, 138, 139,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1620             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1621             :       0,   0,   0,   0,   0,   0,   0,   0,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1622             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1623             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1624             :      12,  13,  12,  13,  12,  13,  12,  13, 140,  12,  13,  12,  13,  12,  13,  12,  13,  12,
    1625             :      13,  12,  13,  12,  13, 141,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1626             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1627             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1628             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1629             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1630             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,   0, 142, 142, 142, 142, 142,
    1631             :     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
    1632             :     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,   0,   0,   0,
    1633             :       0,   0,   0,   0,   0,   0,   0, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
    1634             :     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
    1635             :     143, 143, 143, 143, 143, 143, 143, 143, 143,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1636             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1637             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1638             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1639             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1640             :       0,   0,   0,   0,   0,   0,   0,   0, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
    1641             :     144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
    1642             :     144, 144, 144, 144, 144, 144, 144, 144, 144, 144,   0, 144,   0,   0,   0,   0,   0, 144,
    1643             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1644             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1645             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1646             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1647             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 145, 145, 145, 145, 145, 145, 145, 145,
    1648             :     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
    1649             :     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
    1650             :     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
    1651             :     145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
    1652             :     146, 146, 146, 146, 146, 146,   0,   0, 147, 147, 147, 147, 147, 147,   0,   0, 148, 149,
    1653             :     150, 151, 152, 153, 154, 155, 156,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1654             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1655             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1656             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1657             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1658             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1659             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 157,   0,   0,   0, 158,   0,   0,
    1660             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1661             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1662             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1663             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1664             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1665             :      12,  13,  12,  13,  12,  13, 159, 160,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1666             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1667             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1668             :      12,  13,  12,  13,  12,  13,   0,   0,   0,   0,   0, 161,   0,   0, 162,   0,  12,  13,
    1669             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1670             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13, 146, 146, 146, 146, 146, 146,
    1671             :     146, 146, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146, 146, 146, 146,   0,   0,
    1672             :     147, 147, 147, 147, 147, 147,   0,   0, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147,
    1673             :     147, 147, 147, 147, 147, 147, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147, 147,
    1674             :     147, 147, 147, 147, 146, 146, 146, 146, 146, 146,   0,   0, 147, 147, 147, 147, 147, 147,
    1675             :       0,   0,   0, 146,   0, 146,   0, 146,   0, 146,   0, 147,   0, 147,   0, 147,   0, 147,
    1676             :     146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147, 147, 147, 147, 147, 147, 163, 163,
    1677             :     164, 164, 164, 164, 165, 165, 166, 166, 167, 167, 168, 168,   0,   0, 146, 146, 146, 146,
    1678             :     146, 146, 146, 146, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146, 146, 146, 146,
    1679             :     146, 146, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146, 146, 146, 146, 146, 146,
    1680             :     147, 147, 147, 147, 147, 147, 147, 147, 146, 146,   0, 169,   0,   0,   0,   0, 147, 147,
    1681             :     170, 170, 171,   0, 172,   0,   0,   0,   0, 169,   0,   0,   0,   0, 173, 173, 173, 173,
    1682             :     171,   0,   0,   0, 146, 146,   0,   0,   0,   0,   0,   0, 147, 147, 174, 174,   0,   0,
    1683             :       0,   0, 146, 146,   0,   0,   0, 119,   0,   0, 147, 147, 175, 175, 123,   0,   0,   0,
    1684             :       0,   0,   0, 169,   0,   0,   0,   0, 176, 176, 177, 177, 171,   0,   0,   0,   0,   0,
    1685             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1686             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1687             :     178,   0,   0,   0, 179, 180,   0,   0,   0,   0,   0,   0, 181,   0,   0,   0,   0,   0,
    1688             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1689             :       0,   0,   0,   0, 182,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1690             :       0,   0,   0,   0, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
    1691             :     183, 183, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184,
    1692             :       0,   0,   0,  12,  13,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1693             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1694             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1695             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1696             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1697             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1698             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 185, 185, 185, 185, 185, 185, 185, 185,
    1699             :     185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
    1700             :     186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
    1701             :     186, 186, 186, 186, 186, 186, 186, 186,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1702             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 142, 142, 142, 142, 142, 142,
    1703             :     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
    1704             :     142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
    1705             :     142, 142, 142, 142, 142,   0, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
    1706             :     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
    1707             :     143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,   0,
    1708             :      12,  13, 187, 188, 189, 190, 191,  12,  13,  12,  13,  12,  13, 192, 193, 194, 195,   0,
    1709             :      12,  13,   0,  12,  13,   0,   0,   0,   0,   0,   0,   0, 196, 196,  12,  13,  12,  13,
    1710             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1711             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,   0,   0,   0,   0,
    1712             :       0,   0,   0,  12,  13,  12,  13,   0,   0,   0,  12,  13,   0,   0,   0,   0,   0,   0,
    1713             :       0,   0,   0,   0,   0,   0, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
    1714             :     197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
    1715             :     197, 197, 197, 197, 197, 197, 197, 197,   0, 197,   0,   0,   0,   0,   0, 197,   0,   0,
    1716             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  12,  13,
    1717             :      12,  13,  12,  13,  12,  13,  12,  13, 198, 199,  12,  13,  12,  13,  12,  13,  12,  13,
    1718             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1719             :      12,  13,  12,  13,  12,  13,  12,  13,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1720             :       0,   0,   0,   0,   0,   0,   0,   0,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1721             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1722             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1723             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1724             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1725             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  12,  13,
    1726             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,   0,   0,  12,  13,  12,  13,
    1727             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1728             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1729             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1730             :      12,  13,  12,  13,   0,   0,   0,   0,   0,   0,   0,   0,   0,  12,  13,  12,  13, 200,
    1731             :      12,  13,  12,  13,  12,  13,  12,  13,  12,  13,   0,   0,   0,  12,  13, 201,   0,   0,
    1732             :      12,  13,  12,  13,   0,   0,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,  12,  13,
    1733             :      12,  13,  12,  13,  12,  13,  12,  13, 202, 203, 204, 205, 202,   0, 206, 207, 208, 209,
    1734             :      12,  13,  12,  13,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1735             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 210,   0,   0,   0,   0,
    1736             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1737             :       0,   0,   0,   0,   0,   0, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
    1738             :     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
    1739             :     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
    1740             :     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
    1741             :     211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,   0,   0,   0,   0,
    1742             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1743             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   1,   1,   1,   1,   1,   1,
    1744             :       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
    1745             :       1,   0,   0,   0,   0,   0,   0,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    1746             :       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   0,   0,   0,
    1747             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1748             :       0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    1749             : };
    1750             : 
    1751             : bool
    1752           0 : js::unicode::IsIdentifierStartNonBMP(uint32_t codePoint)
    1753             : {
    1754           0 :     if (codePoint >= 0x10000 && codePoint <= 0x1000B) // LINEAR B SYLLABLE B008 A .. LINEAR B SYLLABLE B046 JE
    1755           0 :         return true;
    1756           0 :     if (codePoint >= 0x1000D && codePoint <= 0x10026) // LINEAR B SYLLABLE B036 JO .. LINEAR B SYLLABLE B032 QO
    1757           0 :         return true;
    1758           0 :     if (codePoint >= 0x10028 && codePoint <= 0x1003A) // LINEAR B SYLLABLE B060 RA .. LINEAR B SYLLABLE B042 WO
    1759           0 :         return true;
    1760           0 :     if (codePoint >= 0x1003C && codePoint <= 0x1003D) // LINEAR B SYLLABLE B017 ZA .. LINEAR B SYLLABLE B074 ZE
    1761           0 :         return true;
    1762           0 :     if (codePoint >= 0x1003F && codePoint <= 0x1004D) // LINEAR B SYLLABLE B020 ZO .. LINEAR B SYLLABLE B091 TWO
    1763           0 :         return true;
    1764           0 :     if (codePoint >= 0x10050 && codePoint <= 0x1005D) // LINEAR B SYMBOL B018 .. LINEAR B SYMBOL B089
    1765           0 :         return true;
    1766           0 :     if (codePoint >= 0x10080 && codePoint <= 0x100FA) // LINEAR B IDEOGRAM B100 MAN .. LINEAR B IDEOGRAM VESSEL B305
    1767           0 :         return true;
    1768           0 :     if (codePoint >= 0x10140 && codePoint <= 0x10174) // GREEK ACROPHONIC ATTIC ONE QUARTER .. GREEK ACROPHONIC STRATIAN FIFTY MNAS
    1769           0 :         return true;
    1770           0 :     if (codePoint >= 0x10280 && codePoint <= 0x1029C) // LYCIAN LETTER A .. LYCIAN LETTER X
    1771           0 :         return true;
    1772           0 :     if (codePoint >= 0x102A0 && codePoint <= 0x102D0) // CARIAN LETTER A .. CARIAN LETTER UUU3
    1773           0 :         return true;
    1774           0 :     if (codePoint >= 0x10300 && codePoint <= 0x1031F) // OLD ITALIC LETTER A .. OLD ITALIC LETTER ESS
    1775           0 :         return true;
    1776           0 :     if (codePoint >= 0x10330 && codePoint <= 0x1034A) // GOTHIC LETTER AHSA .. GOTHIC LETTER NINE HUNDRED
    1777           0 :         return true;
    1778           0 :     if (codePoint >= 0x10350 && codePoint <= 0x10375) // OLD PERMIC LETTER AN .. OLD PERMIC LETTER IA
    1779           0 :         return true;
    1780           0 :     if (codePoint >= 0x10380 && codePoint <= 0x1039D) // UGARITIC LETTER ALPA .. UGARITIC LETTER SSU
    1781           0 :         return true;
    1782           0 :     if (codePoint >= 0x103A0 && codePoint <= 0x103C3) // OLD PERSIAN SIGN A .. OLD PERSIAN SIGN HA
    1783           0 :         return true;
    1784           0 :     if (codePoint >= 0x103C8 && codePoint <= 0x103CF) // OLD PERSIAN SIGN AURAMAZDAA .. OLD PERSIAN SIGN BUUMISH
    1785           0 :         return true;
    1786           0 :     if (codePoint >= 0x103D1 && codePoint <= 0x103D5) // OLD PERSIAN NUMBER ONE .. OLD PERSIAN NUMBER HUNDRED
    1787           0 :         return true;
    1788           0 :     if (codePoint >= 0x10400 && codePoint <= 0x1049D) // DESERET CAPITAL LETTER LONG I .. OSMANYA LETTER OO
    1789           0 :         return true;
    1790           0 :     if (codePoint >= 0x104B0 && codePoint <= 0x104D3) // OSAGE CAPITAL LETTER A .. OSAGE CAPITAL LETTER ZHA
    1791           0 :         return true;
    1792           0 :     if (codePoint >= 0x104D8 && codePoint <= 0x104FB) // OSAGE SMALL LETTER A .. OSAGE SMALL LETTER ZHA
    1793           0 :         return true;
    1794           0 :     if (codePoint >= 0x10500 && codePoint <= 0x10527) // ELBASAN LETTER A .. ELBASAN LETTER KHE
    1795           0 :         return true;
    1796           0 :     if (codePoint >= 0x10530 && codePoint <= 0x10563) // CAUCASIAN ALBANIAN LETTER ALT .. CAUCASIAN ALBANIAN LETTER KIW
    1797           0 :         return true;
    1798           0 :     if (codePoint >= 0x10600 && codePoint <= 0x10736) // LINEAR A SIGN AB001 .. LINEAR A SIGN A664
    1799           0 :         return true;
    1800           0 :     if (codePoint >= 0x10740 && codePoint <= 0x10755) // LINEAR A SIGN A701 A .. LINEAR A SIGN A732 JE
    1801           0 :         return true;
    1802           0 :     if (codePoint >= 0x10760 && codePoint <= 0x10767) // LINEAR A SIGN A800 .. LINEAR A SIGN A807
    1803           0 :         return true;
    1804           0 :     if (codePoint >= 0x10800 && codePoint <= 0x10805) // CYPRIOT SYLLABLE A .. CYPRIOT SYLLABLE JA
    1805           0 :         return true;
    1806           0 :     if (codePoint >= 0x10808 && codePoint <= 0x10808) // CYPRIOT SYLLABLE JO .. CYPRIOT SYLLABLE JO
    1807           0 :         return true;
    1808           0 :     if (codePoint >= 0x1080A && codePoint <= 0x10835) // CYPRIOT SYLLABLE KA .. CYPRIOT SYLLABLE WO
    1809           0 :         return true;
    1810           0 :     if (codePoint >= 0x10837 && codePoint <= 0x10838) // CYPRIOT SYLLABLE XA .. CYPRIOT SYLLABLE XE
    1811           0 :         return true;
    1812           0 :     if (codePoint >= 0x1083C && codePoint <= 0x1083C) // CYPRIOT SYLLABLE ZA .. CYPRIOT SYLLABLE ZA
    1813           0 :         return true;
    1814           0 :     if (codePoint >= 0x1083F && codePoint <= 0x10855) // CYPRIOT SYLLABLE ZO .. IMPERIAL ARAMAIC LETTER TAW
    1815           0 :         return true;
    1816           0 :     if (codePoint >= 0x10860 && codePoint <= 0x10876) // PALMYRENE LETTER ALEPH .. PALMYRENE LETTER TAW
    1817           0 :         return true;
    1818           0 :     if (codePoint >= 0x10880 && codePoint <= 0x1089E) // NABATAEAN LETTER FINAL ALEPH .. NABATAEAN LETTER TAW
    1819           0 :         return true;
    1820           0 :     if (codePoint >= 0x108E0 && codePoint <= 0x108F2) // HATRAN LETTER ALEPH .. HATRAN LETTER QOPH
    1821           0 :         return true;
    1822           0 :     if (codePoint >= 0x108F4 && codePoint <= 0x108F5) // HATRAN LETTER SHIN .. HATRAN LETTER TAW
    1823           0 :         return true;
    1824           0 :     if (codePoint >= 0x10900 && codePoint <= 0x10915) // PHOENICIAN LETTER ALF .. PHOENICIAN LETTER TAU
    1825           0 :         return true;
    1826           0 :     if (codePoint >= 0x10920 && codePoint <= 0x10939) // LYDIAN LETTER A .. LYDIAN LETTER C
    1827           0 :         return true;
    1828           0 :     if (codePoint >= 0x10980 && codePoint <= 0x109B7) // MEROITIC HIEROGLYPHIC LETTER A .. MEROITIC CURSIVE LETTER DA
    1829           0 :         return true;
    1830           0 :     if (codePoint >= 0x109BE && codePoint <= 0x109BF) // MEROITIC CURSIVE LOGOGRAM RMT .. MEROITIC CURSIVE LOGOGRAM IMN
    1831           0 :         return true;
    1832           0 :     if (codePoint >= 0x10A00 && codePoint <= 0x10A00) // KHAROSHTHI LETTER A .. KHAROSHTHI LETTER A
    1833           0 :         return true;
    1834           0 :     if (codePoint >= 0x10A10 && codePoint <= 0x10A13) // KHAROSHTHI LETTER KA .. KHAROSHTHI LETTER GHA
    1835           0 :         return true;
    1836           0 :     if (codePoint >= 0x10A15 && codePoint <= 0x10A17) // KHAROSHTHI LETTER CA .. KHAROSHTHI LETTER JA
    1837           0 :         return true;
    1838           0 :     if (codePoint >= 0x10A19 && codePoint <= 0x10A33) // KHAROSHTHI LETTER NYA .. KHAROSHTHI LETTER TTTHA
    1839           0 :         return true;
    1840           0 :     if (codePoint >= 0x10A60 && codePoint <= 0x10A7C) // OLD SOUTH ARABIAN LETTER HE .. OLD SOUTH ARABIAN LETTER THETH
    1841           0 :         return true;
    1842           0 :     if (codePoint >= 0x10A80 && codePoint <= 0x10A9C) // OLD NORTH ARABIAN LETTER HEH .. OLD NORTH ARABIAN LETTER ZAH
    1843           0 :         return true;
    1844           0 :     if (codePoint >= 0x10AC0 && codePoint <= 0x10AC7) // MANICHAEAN LETTER ALEPH .. MANICHAEAN LETTER WAW
    1845           0 :         return true;
    1846           0 :     if (codePoint >= 0x10AC9 && codePoint <= 0x10AE4) // MANICHAEAN LETTER ZAYIN .. MANICHAEAN LETTER TAW
    1847           0 :         return true;
    1848           0 :     if (codePoint >= 0x10B00 && codePoint <= 0x10B35) // AVESTAN LETTER A .. AVESTAN LETTER HE
    1849           0 :         return true;
    1850           0 :     if (codePoint >= 0x10B40 && codePoint <= 0x10B55) // INSCRIPTIONAL PARTHIAN LETTER ALEPH .. INSCRIPTIONAL PARTHIAN LETTER TAW
    1851           0 :         return true;
    1852           0 :     if (codePoint >= 0x10B60 && codePoint <= 0x10B72) // INSCRIPTIONAL PAHLAVI LETTER ALEPH .. INSCRIPTIONAL PAHLAVI LETTER TAW
    1853           0 :         return true;
    1854           0 :     if (codePoint >= 0x10B80 && codePoint <= 0x10B91) // PSALTER PAHLAVI LETTER ALEPH .. PSALTER PAHLAVI LETTER TAW
    1855           0 :         return true;
    1856           0 :     if (codePoint >= 0x10C00 && codePoint <= 0x10C48) // OLD TURKIC LETTER ORKHON A .. OLD TURKIC LETTER ORKHON BASH
    1857           0 :         return true;
    1858           0 :     if (codePoint >= 0x10C80 && codePoint <= 0x10CB2) // OLD HUNGARIAN CAPITAL LETTER A .. OLD HUNGARIAN CAPITAL LETTER US
    1859           0 :         return true;
    1860           0 :     if (codePoint >= 0x10CC0 && codePoint <= 0x10CF2) // OLD HUNGARIAN SMALL LETTER A .. OLD HUNGARIAN SMALL LETTER US
    1861           0 :         return true;
    1862           0 :     if (codePoint >= 0x11003 && codePoint <= 0x11037) // BRAHMI SIGN JIHVAMULIYA .. BRAHMI LETTER OLD TAMIL NNNA
    1863           0 :         return true;
    1864           0 :     if (codePoint >= 0x11083 && codePoint <= 0x110AF) // KAITHI LETTER A .. KAITHI LETTER HA
    1865           0 :         return true;
    1866           0 :     if (codePoint >= 0x110D0 && codePoint <= 0x110E8) // SORA SOMPENG LETTER SAH .. SORA SOMPENG LETTER MAE
    1867           0 :         return true;
    1868           0 :     if (codePoint >= 0x11103 && codePoint <= 0x11126) // CHAKMA LETTER AA .. CHAKMA LETTER HAA
    1869           0 :         return true;
    1870           0 :     if (codePoint >= 0x11150 && codePoint <= 0x11172) // MAHAJANI LETTER A .. MAHAJANI LETTER RRA
    1871           0 :         return true;
    1872           0 :     if (codePoint >= 0x11176 && codePoint <= 0x11176) // MAHAJANI LIGATURE SHRI .. MAHAJANI LIGATURE SHRI
    1873           0 :         return true;
    1874           0 :     if (codePoint >= 0x11183 && codePoint <= 0x111B2) // SHARADA LETTER A .. SHARADA LETTER HA
    1875           0 :         return true;
    1876           0 :     if (codePoint >= 0x111C1 && codePoint <= 0x111C4) // SHARADA SIGN AVAGRAHA .. SHARADA OM
    1877           0 :         return true;
    1878           0 :     if (codePoint >= 0x111DA && codePoint <= 0x111DA) // SHARADA EKAM .. SHARADA EKAM
    1879           0 :         return true;
    1880           0 :     if (codePoint >= 0x111DC && codePoint <= 0x111DC) // SHARADA HEADSTROKE .. SHARADA HEADSTROKE
    1881           0 :         return true;
    1882           0 :     if (codePoint >= 0x11200 && codePoint <= 0x11211) // KHOJKI LETTER A .. KHOJKI LETTER JJA
    1883           0 :         return true;
    1884           0 :     if (codePoint >= 0x11213 && codePoint <= 0x1122B) // KHOJKI LETTER NYA .. KHOJKI LETTER LLA
    1885           0 :         return true;
    1886           0 :     if (codePoint >= 0x11280 && codePoint <= 0x11286) // MULTANI LETTER A .. MULTANI LETTER GA
    1887           0 :         return true;
    1888           0 :     if (codePoint >= 0x11288 && codePoint <= 0x11288) // MULTANI LETTER GHA .. MULTANI LETTER GHA
    1889           0 :         return true;
    1890           0 :     if (codePoint >= 0x1128A && codePoint <= 0x1128D) // MULTANI LETTER CA .. MULTANI LETTER JJA
    1891           0 :         return true;
    1892           0 :     if (codePoint >= 0x1128F && codePoint <= 0x1129D) // MULTANI LETTER NYA .. MULTANI LETTER BA
    1893           0 :         return true;
    1894           0 :     if (codePoint >= 0x1129F && codePoint <= 0x112A8) // MULTANI LETTER BHA .. MULTANI LETTER RHA
    1895           0 :         return true;
    1896           0 :     if (codePoint >= 0x112B0 && codePoint <= 0x112DE) // KHUDAWADI LETTER A .. KHUDAWADI LETTER HA
    1897           0 :         return true;
    1898           0 :     if (codePoint >= 0x11305 && codePoint <= 0x1130C) // GRANTHA LETTER A .. GRANTHA LETTER VOCALIC L
    1899           0 :         return true;
    1900           0 :     if (codePoint >= 0x1130F && codePoint <= 0x11310) // GRANTHA LETTER EE .. GRANTHA LETTER AI
    1901           0 :         return true;
    1902           0 :     if (codePoint >= 0x11313 && codePoint <= 0x11328) // GRANTHA LETTER OO .. GRANTHA LETTER NA
    1903           0 :         return true;
    1904           0 :     if (codePoint >= 0x1132A && codePoint <= 0x11330) // GRANTHA LETTER PA .. GRANTHA LETTER RA
    1905           0 :         return true;
    1906           0 :     if (codePoint >= 0x11332 && codePoint <= 0x11333) // GRANTHA LETTER LA .. GRANTHA LETTER LLA
    1907           0 :         return true;
    1908           0 :     if (codePoint >= 0x11335 && codePoint <= 0x11339) // GRANTHA LETTER VA .. GRANTHA LETTER HA
    1909           0 :         return true;
    1910           0 :     if (codePoint >= 0x1133D && codePoint <= 0x1133D) // GRANTHA SIGN AVAGRAHA .. GRANTHA SIGN AVAGRAHA
    1911           0 :         return true;
    1912           0 :     if (codePoint >= 0x11350 && codePoint <= 0x11350) // GRANTHA OM .. GRANTHA OM
    1913           0 :         return true;
    1914           0 :     if (codePoint >= 0x1135D && codePoint <= 0x11361) // GRANTHA SIGN PLUTA .. GRANTHA LETTER VOCALIC LL
    1915           0 :         return true;
    1916           0 :     if (codePoint >= 0x11400 && codePoint <= 0x11434) // NEWA LETTER A .. NEWA LETTER HA
    1917           0 :         return true;
    1918           0 :     if (codePoint >= 0x11447 && codePoint <= 0x1144A) // NEWA SIGN AVAGRAHA .. NEWA SIDDHI
    1919           0 :         return true;
    1920           0 :     if (codePoint >= 0x11480 && codePoint <= 0x114AF) // TIRHUTA ANJI .. TIRHUTA LETTER HA
    1921           0 :         return true;
    1922           0 :     if (codePoint >= 0x114C4 && codePoint <= 0x114C5) // TIRHUTA SIGN AVAGRAHA .. TIRHUTA GVANG
    1923           0 :         return true;
    1924           0 :     if (codePoint >= 0x114C7 && codePoint <= 0x114C7) // TIRHUTA OM .. TIRHUTA OM
    1925           0 :         return true;
    1926           0 :     if (codePoint >= 0x11580 && codePoint <= 0x115AE) // SIDDHAM LETTER A .. SIDDHAM LETTER HA
    1927           0 :         return true;
    1928           0 :     if (codePoint >= 0x115D8 && codePoint <= 0x115DB) // SIDDHAM LETTER THREE-CIRCLE ALTERNATE I .. SIDDHAM LETTER ALTERNATE U
    1929           0 :         return true;
    1930           0 :     if (codePoint >= 0x11600 && codePoint <= 0x1162F) // MODI LETTER A .. MODI LETTER LLA
    1931           0 :         return true;
    1932           0 :     if (codePoint >= 0x11644 && codePoint <= 0x11644) // MODI SIGN HUVA .. MODI SIGN HUVA
    1933           0 :         return true;
    1934           0 :     if (codePoint >= 0x11680 && codePoint <= 0x116AA) // TAKRI LETTER A .. TAKRI LETTER RRA
    1935           0 :         return true;
    1936           0 :     if (codePoint >= 0x11700 && codePoint <= 0x11719) // AHOM LETTER KA .. AHOM LETTER JHA
    1937           0 :         return true;
    1938           0 :     if (codePoint >= 0x118A0 && codePoint <= 0x118DF) // WARANG CITI CAPITAL LETTER NGAA .. WARANG CITI SMALL LETTER VIYO
    1939           0 :         return true;
    1940           0 :     if (codePoint >= 0x118FF && codePoint <= 0x118FF) // WARANG CITI OM .. WARANG CITI OM
    1941           0 :         return true;
    1942           0 :     if (codePoint >= 0x11AC0 && codePoint <= 0x11AF8) // PAU CIN HAU LETTER PA .. PAU CIN HAU GLOTTAL STOP FINAL
    1943           0 :         return true;
    1944           0 :     if (codePoint >= 0x11C00 && codePoint <= 0x11C08) // BHAIKSUKI LETTER A .. BHAIKSUKI LETTER VOCALIC L
    1945           0 :         return true;
    1946           0 :     if (codePoint >= 0x11C0A && codePoint <= 0x11C2E) // BHAIKSUKI LETTER E .. BHAIKSUKI LETTER HA
    1947           0 :         return true;
    1948           0 :     if (codePoint >= 0x11C40 && codePoint <= 0x11C40) // BHAIKSUKI SIGN AVAGRAHA .. BHAIKSUKI SIGN AVAGRAHA
    1949           0 :         return true;
    1950           0 :     if (codePoint >= 0x11C72 && codePoint <= 0x11C8F) // MARCHEN LETTER KA .. MARCHEN LETTER A
    1951           0 :         return true;
    1952           0 :     if (codePoint >= 0x12000 && codePoint <= 0x12399) // CUNEIFORM SIGN A .. CUNEIFORM SIGN U U
    1953           0 :         return true;
    1954           0 :     if (codePoint >= 0x12400 && codePoint <= 0x1246E) // CUNEIFORM NUMERIC SIGN TWO ASH .. CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
    1955           0 :         return true;
    1956           0 :     if (codePoint >= 0x12480 && codePoint <= 0x12543) // CUNEIFORM SIGN AB TIMES NUN TENU .. CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
    1957           0 :         return true;
    1958           0 :     if (codePoint >= 0x13000 && codePoint <= 0x1342E) // EGYPTIAN HIEROGLYPH A001 .. EGYPTIAN HIEROGLYPH AA032
    1959           0 :         return true;
    1960           0 :     if (codePoint >= 0x14400 && codePoint <= 0x14646) // ANATOLIAN HIEROGLYPH A001 .. ANATOLIAN HIEROGLYPH A530
    1961           0 :         return true;
    1962           0 :     if (codePoint >= 0x16800 && codePoint <= 0x16A38) // BAMUM LETTER PHASE-A NGKUE MFON .. BAMUM LETTER PHASE-F VUEQ
    1963           0 :         return true;
    1964           0 :     if (codePoint >= 0x16A40 && codePoint <= 0x16A5E) // MRO LETTER TA .. MRO LETTER TEK
    1965           0 :         return true;
    1966           0 :     if (codePoint >= 0x16AD0 && codePoint <= 0x16AED) // BASSA VAH LETTER ENNI .. BASSA VAH LETTER I
    1967           0 :         return true;
    1968           0 :     if (codePoint >= 0x16B00 && codePoint <= 0x16B2F) // PAHAWH HMONG VOWEL KEEB .. PAHAWH HMONG CONSONANT CAU
    1969           0 :         return true;
    1970           0 :     if (codePoint >= 0x16B40 && codePoint <= 0x16B43) // PAHAWH HMONG SIGN VOS SEEV .. PAHAWH HMONG SIGN IB YAM
    1971           0 :         return true;
    1972           0 :     if (codePoint >= 0x16B63 && codePoint <= 0x16B77) // PAHAWH HMONG SIGN VOS LUB .. PAHAWH HMONG SIGN CIM NRES TOS
    1973           0 :         return true;
    1974           0 :     if (codePoint >= 0x16B7D && codePoint <= 0x16B8F) // PAHAWH HMONG CLAN SIGN TSHEEJ .. PAHAWH HMONG CLAN SIGN VWJ
    1975           0 :         return true;
    1976           0 :     if (codePoint >= 0x16F00 && codePoint <= 0x16F44) // MIAO LETTER PA .. MIAO LETTER HHA
    1977           0 :         return true;
    1978           0 :     if (codePoint >= 0x16F50 && codePoint <= 0x16F50) // MIAO LETTER NASALIZATION .. MIAO LETTER NASALIZATION
    1979           0 :         return true;
    1980           0 :     if (codePoint >= 0x16F93 && codePoint <= 0x16F9F) // MIAO LETTER TONE-2 .. MIAO LETTER REFORMED TONE-8
    1981           0 :         return true;
    1982           0 :     if (codePoint >= 0x16FE0 && codePoint <= 0x16FE0) // TANGUT ITERATION MARK .. TANGUT ITERATION MARK
    1983           0 :         return true;
    1984           0 :     if (codePoint >= 0x17000 && codePoint <= 0x187EC) // Tangut Ideograph .. Tangut Ideograph
    1985           0 :         return true;
    1986           0 :     if (codePoint >= 0x18800 && codePoint <= 0x18AF2) // TANGUT COMPONENT-001 .. TANGUT COMPONENT-755
    1987           0 :         return true;
    1988           0 :     if (codePoint >= 0x1B000 && codePoint <= 0x1B001) // KATAKANA LETTER ARCHAIC E .. HIRAGANA LETTER ARCHAIC YE
    1989           0 :         return true;
    1990           0 :     if (codePoint >= 0x1BC00 && codePoint <= 0x1BC6A) // DUPLOYAN LETTER H .. DUPLOYAN LETTER VOCALIC M
    1991           0 :         return true;
    1992           0 :     if (codePoint >= 0x1BC70 && codePoint <= 0x1BC7C) // DUPLOYAN AFFIX LEFT HORIZONTAL SECANT .. DUPLOYAN AFFIX ATTACHED TANGENT HOOK
    1993           0 :         return true;
    1994           0 :     if (codePoint >= 0x1BC80 && codePoint <= 0x1BC88) // DUPLOYAN AFFIX HIGH ACUTE .. DUPLOYAN AFFIX HIGH VERTICAL
    1995           0 :         return true;
    1996           0 :     if (codePoint >= 0x1BC90 && codePoint <= 0x1BC99) // DUPLOYAN AFFIX LOW ACUTE .. DUPLOYAN AFFIX LOW ARROW
    1997           0 :         return true;
    1998           0 :     if (codePoint >= 0x1D400 && codePoint <= 0x1D454) // MATHEMATICAL BOLD CAPITAL A .. MATHEMATICAL ITALIC SMALL G
    1999           0 :         return true;
    2000           0 :     if (codePoint >= 0x1D456 && codePoint <= 0x1D49C) // MATHEMATICAL ITALIC SMALL I .. MATHEMATICAL SCRIPT CAPITAL A
    2001           0 :         return true;
    2002           0 :     if (codePoint >= 0x1D49E && codePoint <= 0x1D49F) // MATHEMATICAL SCRIPT CAPITAL C .. MATHEMATICAL SCRIPT CAPITAL D
    2003           0 :         return true;
    2004           0 :     if (codePoint >= 0x1D4A2 && codePoint <= 0x1D4A2) // MATHEMATICAL SCRIPT CAPITAL G .. MATHEMATICAL SCRIPT CAPITAL G
    2005           0 :         return true;
    2006           0 :     if (codePoint >= 0x1D4A5 && codePoint <= 0x1D4A6) // MATHEMATICAL SCRIPT CAPITAL J .. MATHEMATICAL SCRIPT CAPITAL K
    2007           0 :         return true;
    2008           0 :     if (codePoint >= 0x1D4A9 && codePoint <= 0x1D4AC) // MATHEMATICAL SCRIPT CAPITAL N .. MATHEMATICAL SCRIPT CAPITAL Q
    2009           0 :         return true;
    2010           0 :     if (codePoint >= 0x1D4AE && codePoint <= 0x1D4B9) // MATHEMATICAL SCRIPT CAPITAL S .. MATHEMATICAL SCRIPT SMALL D
    2011           0 :         return true;
    2012           0 :     if (codePoint >= 0x1D4BB && codePoint <= 0x1D4BB) // MATHEMATICAL SCRIPT SMALL F .. MATHEMATICAL SCRIPT SMALL F
    2013           0 :         return true;
    2014           0 :     if (codePoint >= 0x1D4BD && codePoint <= 0x1D4C3) // MATHEMATICAL SCRIPT SMALL H .. MATHEMATICAL SCRIPT SMALL N
    2015           0 :         return true;
    2016           0 :     if (codePoint >= 0x1D4C5 && codePoint <= 0x1D505) // MATHEMATICAL SCRIPT SMALL P .. MATHEMATICAL FRAKTUR CAPITAL B
    2017           0 :         return true;
    2018           0 :     if (codePoint >= 0x1D507 && codePoint <= 0x1D50A) // MATHEMATICAL FRAKTUR CAPITAL D .. MATHEMATICAL FRAKTUR CAPITAL G
    2019           0 :         return true;
    2020           0 :     if (codePoint >= 0x1D50D && codePoint <= 0x1D514) // MATHEMATICAL FRAKTUR CAPITAL J .. MATHEMATICAL FRAKTUR CAPITAL Q
    2021           0 :         return true;
    2022           0 :     if (codePoint >= 0x1D516 && codePoint <= 0x1D51C) // MATHEMATICAL FRAKTUR CAPITAL S .. MATHEMATICAL FRAKTUR CAPITAL Y
    2023           0 :         return true;
    2024           0 :     if (codePoint >= 0x1D51E && codePoint <= 0x1D539) // MATHEMATICAL FRAKTUR SMALL A .. MATHEMATICAL DOUBLE-STRUCK CAPITAL B
    2025           0 :         return true;
    2026           0 :     if (codePoint >= 0x1D53B && codePoint <= 0x1D53E) // MATHEMATICAL DOUBLE-STRUCK CAPITAL D .. MATHEMATICAL DOUBLE-STRUCK CAPITAL G
    2027           0 :         return true;
    2028           0 :     if (codePoint >= 0x1D540 && codePoint <= 0x1D544) // MATHEMATICAL DOUBLE-STRUCK CAPITAL I .. MATHEMATICAL DOUBLE-STRUCK CAPITAL M
    2029           0 :         return true;
    2030           0 :     if (codePoint >= 0x1D546 && codePoint <= 0x1D546) // MATHEMATICAL DOUBLE-STRUCK CAPITAL O .. MATHEMATICAL DOUBLE-STRUCK CAPITAL O
    2031           0 :         return true;
    2032           0 :     if (codePoint >= 0x1D54A && codePoint <= 0x1D550) // MATHEMATICAL DOUBLE-STRUCK CAPITAL S .. MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
    2033           0 :         return true;
    2034           0 :     if (codePoint >= 0x1D552 && codePoint <= 0x1D6A5) // MATHEMATICAL DOUBLE-STRUCK SMALL A .. MATHEMATICAL ITALIC SMALL DOTLESS J
    2035           0 :         return true;
    2036           0 :     if (codePoint >= 0x1D6A8 && codePoint <= 0x1D6C0) // MATHEMATICAL BOLD CAPITAL ALPHA .. MATHEMATICAL BOLD CAPITAL OMEGA
    2037           0 :         return true;
    2038           0 :     if (codePoint >= 0x1D6C2 && codePoint <= 0x1D6DA) // MATHEMATICAL BOLD SMALL ALPHA .. MATHEMATICAL BOLD SMALL OMEGA
    2039           0 :         return true;
    2040           0 :     if (codePoint >= 0x1D6DC && codePoint <= 0x1D6FA) // MATHEMATICAL BOLD EPSILON SYMBOL .. MATHEMATICAL ITALIC CAPITAL OMEGA
    2041           0 :         return true;
    2042           0 :     if (codePoint >= 0x1D6FC && codePoint <= 0x1D714) // MATHEMATICAL ITALIC SMALL ALPHA .. MATHEMATICAL ITALIC SMALL OMEGA
    2043           0 :         return true;
    2044           0 :     if (codePoint >= 0x1D716 && codePoint <= 0x1D734) // MATHEMATICAL ITALIC EPSILON SYMBOL .. MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
    2045           0 :         return true;
    2046           0 :     if (codePoint >= 0x1D736 && codePoint <= 0x1D74E) // MATHEMATICAL BOLD ITALIC SMALL ALPHA .. MATHEMATICAL BOLD ITALIC SMALL OMEGA
    2047           0 :         return true;
    2048           0 :     if (codePoint >= 0x1D750 && codePoint <= 0x1D76E) // MATHEMATICAL BOLD ITALIC EPSILON SYMBOL .. MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
    2049           0 :         return true;
    2050           0 :     if (codePoint >= 0x1D770 && codePoint <= 0x1D788) // MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA .. MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
    2051           0 :         return true;
    2052           0 :     if (codePoint >= 0x1D78A && codePoint <= 0x1D7A8) // MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL .. MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
    2053           0 :         return true;
    2054           0 :     if (codePoint >= 0x1D7AA && codePoint <= 0x1D7C2) // MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA .. MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
    2055           0 :         return true;
    2056           0 :     if (codePoint >= 0x1D7C4 && codePoint <= 0x1D7CB) // MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL .. MATHEMATICAL BOLD SMALL DIGAMMA
    2057           0 :         return true;
    2058           0 :     if (codePoint >= 0x1E800 && codePoint <= 0x1E8C4) // MENDE KIKAKUI SYLLABLE M001 KI .. MENDE KIKAKUI SYLLABLE M060 NYON
    2059           0 :         return true;
    2060           0 :     if (codePoint >= 0x1E900 && codePoint <= 0x1E943) // ADLAM CAPITAL LETTER ALIF .. ADLAM SMALL LETTER SHA
    2061           0 :         return true;
    2062           0 :     if (codePoint >= 0x1EE00 && codePoint <= 0x1EE03) // ARABIC MATHEMATICAL ALEF .. ARABIC MATHEMATICAL DAL
    2063           0 :         return true;
    2064           0 :     if (codePoint >= 0x1EE05 && codePoint <= 0x1EE1F) // ARABIC MATHEMATICAL WAW .. ARABIC MATHEMATICAL DOTLESS QAF
    2065           0 :         return true;
    2066           0 :     if (codePoint >= 0x1EE21 && codePoint <= 0x1EE22) // ARABIC MATHEMATICAL INITIAL BEH .. ARABIC MATHEMATICAL INITIAL JEEM
    2067           0 :         return true;
    2068           0 :     if (codePoint >= 0x1EE24 && codePoint <= 0x1EE24) // ARABIC MATHEMATICAL INITIAL HEH .. ARABIC MATHEMATICAL INITIAL HEH
    2069           0 :         return true;
    2070           0 :     if (codePoint >= 0x1EE27 && codePoint <= 0x1EE27) // ARABIC MATHEMATICAL INITIAL HAH .. ARABIC MATHEMATICAL INITIAL HAH
    2071           0 :         return true;
    2072           0 :     if (codePoint >= 0x1EE29 && codePoint <= 0x1EE32) // ARABIC MATHEMATICAL INITIAL YEH .. ARABIC MATHEMATICAL INITIAL QAF
    2073           0 :         return true;
    2074           0 :     if (codePoint >= 0x1EE34 && codePoint <= 0x1EE37) // ARABIC MATHEMATICAL INITIAL SHEEN .. ARABIC MATHEMATICAL INITIAL KHAH
    2075           0 :         return true;
    2076           0 :     if (codePoint >= 0x1EE39 && codePoint <= 0x1EE39) // ARABIC MATHEMATICAL INITIAL DAD .. ARABIC MATHEMATICAL INITIAL DAD
    2077           0 :         return true;
    2078           0 :     if (codePoint >= 0x1EE3B && codePoint <= 0x1EE3B) // ARABIC MATHEMATICAL INITIAL GHAIN .. ARABIC MATHEMATICAL INITIAL GHAIN
    2079           0 :         return true;
    2080           0 :     if (codePoint >= 0x1EE42 && codePoint <= 0x1EE42) // ARABIC MATHEMATICAL TAILED JEEM .. ARABIC MATHEMATICAL TAILED JEEM
    2081           0 :         return true;
    2082           0 :     if (codePoint >= 0x1EE47 && codePoint <= 0x1EE47) // ARABIC MATHEMATICAL TAILED HAH .. ARABIC MATHEMATICAL TAILED HAH
    2083           0 :         return true;
    2084           0 :     if (codePoint >= 0x1EE49 && codePoint <= 0x1EE49) // ARABIC MATHEMATICAL TAILED YEH .. ARABIC MATHEMATICAL TAILED YEH
    2085           0 :         return true;
    2086           0 :     if (codePoint >= 0x1EE4B && codePoint <= 0x1EE4B) // ARABIC MATHEMATICAL TAILED LAM .. ARABIC MATHEMATICAL TAILED LAM
    2087           0 :         return true;
    2088           0 :     if (codePoint >= 0x1EE4D && codePoint <= 0x1EE4F) // ARABIC MATHEMATICAL TAILED NOON .. ARABIC MATHEMATICAL TAILED AIN
    2089           0 :         return true;
    2090           0 :     if (codePoint >= 0x1EE51 && codePoint <= 0x1EE52) // ARABIC MATHEMATICAL TAILED SAD .. ARABIC MATHEMATICAL TAILED QAF
    2091           0 :         return true;
    2092           0 :     if (codePoint >= 0x1EE54 && codePoint <= 0x1EE54) // ARABIC MATHEMATICAL TAILED SHEEN .. ARABIC MATHEMATICAL TAILED SHEEN
    2093           0 :         return true;
    2094           0 :     if (codePoint >= 0x1EE57 && codePoint <= 0x1EE57) // ARABIC MATHEMATICAL TAILED KHAH .. ARABIC MATHEMATICAL TAILED KHAH
    2095           0 :         return true;
    2096           0 :     if (codePoint >= 0x1EE59 && codePoint <= 0x1EE59) // ARABIC MATHEMATICAL TAILED DAD .. ARABIC MATHEMATICAL TAILED DAD
    2097           0 :         return true;
    2098           0 :     if (codePoint >= 0x1EE5B && codePoint <= 0x1EE5B) // ARABIC MATHEMATICAL TAILED GHAIN .. ARABIC MATHEMATICAL TAILED GHAIN
    2099           0 :         return true;
    2100           0 :     if (codePoint >= 0x1EE5D && codePoint <= 0x1EE5D) // ARABIC MATHEMATICAL TAILED DOTLESS NOON .. ARABIC MATHEMATICAL TAILED DOTLESS NOON
    2101           0 :         return true;
    2102           0 :     if (codePoint >= 0x1EE5F && codePoint <= 0x1EE5F) // ARABIC MATHEMATICAL TAILED DOTLESS QAF .. ARABIC MATHEMATICAL TAILED DOTLESS QAF
    2103           0 :         return true;
    2104           0 :     if (codePoint >= 0x1EE61 && codePoint <= 0x1EE62) // ARABIC MATHEMATICAL STRETCHED BEH .. ARABIC MATHEMATICAL STRETCHED JEEM
    2105           0 :         return true;
    2106           0 :     if (codePoint >= 0x1EE64 && codePoint <= 0x1EE64) // ARABIC MATHEMATICAL STRETCHED HEH .. ARABIC MATHEMATICAL STRETCHED HEH
    2107           0 :         return true;
    2108           0 :     if (codePoint >= 0x1EE67 && codePoint <= 0x1EE6A) // ARABIC MATHEMATICAL STRETCHED HAH .. ARABIC MATHEMATICAL STRETCHED KAF
    2109           0 :         return true;
    2110           0 :     if (codePoint >= 0x1EE6C && codePoint <= 0x1EE72) // ARABIC MATHEMATICAL STRETCHED MEEM .. ARABIC MATHEMATICAL STRETCHED QAF
    2111           0 :         return true;
    2112           0 :     if (codePoint >= 0x1EE74 && codePoint <= 0x1EE77) // ARABIC MATHEMATICAL STRETCHED SHEEN .. ARABIC MATHEMATICAL STRETCHED KHAH
    2113           0 :         return true;
    2114           0 :     if (codePoint >= 0x1EE79 && codePoint <= 0x1EE7C) // ARABIC MATHEMATICAL STRETCHED DAD .. ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
    2115           0 :         return true;
    2116           0 :     if (codePoint >= 0x1EE7E && codePoint <= 0x1EE7E) // ARABIC MATHEMATICAL STRETCHED DOTLESS FEH .. ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
    2117           0 :         return true;
    2118           0 :     if (codePoint >= 0x1EE80 && codePoint <= 0x1EE89) // ARABIC MATHEMATICAL LOOPED ALEF .. ARABIC MATHEMATICAL LOOPED YEH
    2119           0 :         return true;
    2120           0 :     if (codePoint >= 0x1EE8B && codePoint <= 0x1EE9B) // ARABIC MATHEMATICAL LOOPED LAM .. ARABIC MATHEMATICAL LOOPED GHAIN
    2121           0 :         return true;
    2122           0 :     if (codePoint >= 0x1EEA1 && codePoint <= 0x1EEA3) // ARABIC MATHEMATICAL DOUBLE-STRUCK BEH .. ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
    2123           0 :         return true;
    2124           0 :     if (codePoint >= 0x1EEA5 && codePoint <= 0x1EEA9) // ARABIC MATHEMATICAL DOUBLE-STRUCK WAW .. ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
    2125           0 :         return true;
    2126           0 :     if (codePoint >= 0x1EEAB && codePoint <= 0x1EEBB) // ARABIC MATHEMATICAL DOUBLE-STRUCK LAM .. ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
    2127           0 :         return true;
    2128           0 :     if (codePoint >= 0x20000 && codePoint <= 0x2A6D6) // CJK Ideograph Extension B .. CJK Ideograph Extension B
    2129           0 :         return true;
    2130           0 :     if (codePoint >= 0x2A700 && codePoint <= 0x2B734) // CJK Ideograph Extension C .. CJK Ideograph Extension C
    2131           0 :         return true;
    2132           0 :     if (codePoint >= 0x2B740 && codePoint <= 0x2B81D) // CJK Ideograph Extension D .. CJK Ideograph Extension D
    2133           0 :         return true;
    2134           0 :     if (codePoint >= 0x2B820 && codePoint <= 0x2CEA1) // CJK Ideograph Extension E .. CJK Ideograph Extension E
    2135           0 :         return true;
    2136           0 :     if (codePoint >= 0x2F800 && codePoint <= 0x2FA1D) // CJK COMPATIBILITY IDEOGRAPH-2F800 .. CJK COMPATIBILITY IDEOGRAPH-2FA1D
    2137           0 :         return true;
    2138           0 :     return false;
    2139             : }
    2140             : 
    2141             : bool
    2142           0 : js::unicode::IsIdentifierPartNonBMP(uint32_t codePoint)
    2143             : {
    2144           0 :     if (codePoint >= 0x10000 && codePoint <= 0x1000B) // LINEAR B SYLLABLE B008 A .. LINEAR B SYLLABLE B046 JE
    2145           0 :         return true;
    2146           0 :     if (codePoint >= 0x1000D && codePoint <= 0x10026) // LINEAR B SYLLABLE B036 JO .. LINEAR B SYLLABLE B032 QO
    2147           0 :         return true;
    2148           0 :     if (codePoint >= 0x10028 && codePoint <= 0x1003A) // LINEAR B SYLLABLE B060 RA .. LINEAR B SYLLABLE B042 WO
    2149           0 :         return true;
    2150           0 :     if (codePoint >= 0x1003C && codePoint <= 0x1003D) // LINEAR B SYLLABLE B017 ZA .. LINEAR B SYLLABLE B074 ZE
    2151           0 :         return true;
    2152           0 :     if (codePoint >= 0x1003F && codePoint <= 0x1004D) // LINEAR B SYLLABLE B020 ZO .. LINEAR B SYLLABLE B091 TWO
    2153           0 :         return true;
    2154           0 :     if (codePoint >= 0x10050 && codePoint <= 0x1005D) // LINEAR B SYMBOL B018 .. LINEAR B SYMBOL B089
    2155           0 :         return true;
    2156           0 :     if (codePoint >= 0x10080 && codePoint <= 0x100FA) // LINEAR B IDEOGRAM B100 MAN .. LINEAR B IDEOGRAM VESSEL B305
    2157           0 :         return true;
    2158           0 :     if (codePoint >= 0x10140 && codePoint <= 0x10174) // GREEK ACROPHONIC ATTIC ONE QUARTER .. GREEK ACROPHONIC STRATIAN FIFTY MNAS
    2159           0 :         return true;
    2160           0 :     if (codePoint >= 0x101FD && codePoint <= 0x101FD) // PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE .. PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
    2161           0 :         return true;
    2162           0 :     if (codePoint >= 0x10280 && codePoint <= 0x1029C) // LYCIAN LETTER A .. LYCIAN LETTER X
    2163           0 :         return true;
    2164           0 :     if (codePoint >= 0x102A0 && codePoint <= 0x102D0) // CARIAN LETTER A .. CARIAN LETTER UUU3
    2165           0 :         return true;
    2166           0 :     if (codePoint >= 0x102E0 && codePoint <= 0x102E0) // COPTIC EPACT THOUSANDS MARK .. COPTIC EPACT THOUSANDS MARK
    2167           0 :         return true;
    2168           0 :     if (codePoint >= 0x10300 && codePoint <= 0x1031F) // OLD ITALIC LETTER A .. OLD ITALIC LETTER ESS
    2169           0 :         return true;
    2170           0 :     if (codePoint >= 0x10330 && codePoint <= 0x1034A) // GOTHIC LETTER AHSA .. GOTHIC LETTER NINE HUNDRED
    2171           0 :         return true;
    2172           0 :     if (codePoint >= 0x10350 && codePoint <= 0x1037A) // OLD PERMIC LETTER AN .. COMBINING OLD PERMIC LETTER SII
    2173           0 :         return true;
    2174           0 :     if (codePoint >= 0x10380 && codePoint <= 0x1039D) // UGARITIC LETTER ALPA .. UGARITIC LETTER SSU
    2175           0 :         return true;
    2176           0 :     if (codePoint >= 0x103A0 && codePoint <= 0x103C3) // OLD PERSIAN SIGN A .. OLD PERSIAN SIGN HA
    2177           0 :         return true;
    2178           0 :     if (codePoint >= 0x103C8 && codePoint <= 0x103CF) // OLD PERSIAN SIGN AURAMAZDAA .. OLD PERSIAN SIGN BUUMISH
    2179           0 :         return true;
    2180           0 :     if (codePoint >= 0x103D1 && codePoint <= 0x103D5) // OLD PERSIAN NUMBER ONE .. OLD PERSIAN NUMBER HUNDRED
    2181           0 :         return true;
    2182           0 :     if (codePoint >= 0x10400 && codePoint <= 0x1049D) // DESERET CAPITAL LETTER LONG I .. OSMANYA LETTER OO
    2183           0 :         return true;
    2184           0 :     if (codePoint >= 0x104A0 && codePoint <= 0x104A9) // OSMANYA DIGIT ZERO .. OSMANYA DIGIT NINE
    2185           0 :         return true;
    2186           0 :     if (codePoint >= 0x104B0 && codePoint <= 0x104D3) // OSAGE CAPITAL LETTER A .. OSAGE CAPITAL LETTER ZHA
    2187           0 :         return true;
    2188           0 :     if (codePoint >= 0x104D8 && codePoint <= 0x104FB) // OSAGE SMALL LETTER A .. OSAGE SMALL LETTER ZHA
    2189           0 :         return true;
    2190           0 :     if (codePoint >= 0x10500 && codePoint <= 0x10527) // ELBASAN LETTER A .. ELBASAN LETTER KHE
    2191           0 :         return true;
    2192           0 :     if (codePoint >= 0x10530 && codePoint <= 0x10563) // CAUCASIAN ALBANIAN LETTER ALT .. CAUCASIAN ALBANIAN LETTER KIW
    2193           0 :         return true;
    2194           0 :     if (codePoint >= 0x10600 && codePoint <= 0x10736) // LINEAR A SIGN AB001 .. LINEAR A SIGN A664
    2195           0 :         return true;
    2196           0 :     if (codePoint >= 0x10740 && codePoint <= 0x10755) // LINEAR A SIGN A701 A .. LINEAR A SIGN A732 JE
    2197           0 :         return true;
    2198           0 :     if (codePoint >= 0x10760 && codePoint <= 0x10767) // LINEAR A SIGN A800 .. LINEAR A SIGN A807
    2199           0 :         return true;
    2200           0 :     if (codePoint >= 0x10800 && codePoint <= 0x10805) // CYPRIOT SYLLABLE A .. CYPRIOT SYLLABLE JA
    2201           0 :         return true;
    2202           0 :     if (codePoint >= 0x10808 && codePoint <= 0x10808) // CYPRIOT SYLLABLE JO .. CYPRIOT SYLLABLE JO
    2203           0 :         return true;
    2204           0 :     if (codePoint >= 0x1080A && codePoint <= 0x10835) // CYPRIOT SYLLABLE KA .. CYPRIOT SYLLABLE WO
    2205           0 :         return true;
    2206           0 :     if (codePoint >= 0x10837 && codePoint <= 0x10838) // CYPRIOT SYLLABLE XA .. CYPRIOT SYLLABLE XE
    2207           0 :         return true;
    2208           0 :     if (codePoint >= 0x1083C && codePoint <= 0x1083C) // CYPRIOT SYLLABLE ZA .. CYPRIOT SYLLABLE ZA
    2209           0 :         return true;
    2210           0 :     if (codePoint >= 0x1083F && codePoint <= 0x10855) // CYPRIOT SYLLABLE ZO .. IMPERIAL ARAMAIC LETTER TAW
    2211           0 :         return true;
    2212           0 :     if (codePoint >= 0x10860 && codePoint <= 0x10876) // PALMYRENE LETTER ALEPH .. PALMYRENE LETTER TAW
    2213           0 :         return true;
    2214           0 :     if (codePoint >= 0x10880 && codePoint <= 0x1089E) // NABATAEAN LETTER FINAL ALEPH .. NABATAEAN LETTER TAW
    2215           0 :         return true;
    2216           0 :     if (codePoint >= 0x108E0 && codePoint <= 0x108F2) // HATRAN LETTER ALEPH .. HATRAN LETTER QOPH
    2217           0 :         return true;
    2218           0 :     if (codePoint >= 0x108F4 && codePoint <= 0x108F5) // HATRAN LETTER SHIN .. HATRAN LETTER TAW
    2219           0 :         return true;
    2220           0 :     if (codePoint >= 0x10900 && codePoint <= 0x10915) // PHOENICIAN LETTER ALF .. PHOENICIAN LETTER TAU
    2221           0 :         return true;
    2222           0 :     if (codePoint >= 0x10920 && codePoint <= 0x10939) // LYDIAN LETTER A .. LYDIAN LETTER C
    2223           0 :         return true;
    2224           0 :     if (codePoint >= 0x10980 && codePoint <= 0x109B7) // MEROITIC HIEROGLYPHIC LETTER A .. MEROITIC CURSIVE LETTER DA
    2225           0 :         return true;
    2226           0 :     if (codePoint >= 0x109BE && codePoint <= 0x109BF) // MEROITIC CURSIVE LOGOGRAM RMT .. MEROITIC CURSIVE LOGOGRAM IMN
    2227           0 :         return true;
    2228           0 :     if (codePoint >= 0x10A00 && codePoint <= 0x10A03) // KHAROSHTHI LETTER A .. KHAROSHTHI VOWEL SIGN VOCALIC R
    2229           0 :         return true;
    2230           0 :     if (codePoint >= 0x10A05 && codePoint <= 0x10A06) // KHAROSHTHI VOWEL SIGN E .. KHAROSHTHI VOWEL SIGN O
    2231           0 :         return true;
    2232           0 :     if (codePoint >= 0x10A0C && codePoint <= 0x10A13) // KHAROSHTHI VOWEL LENGTH MARK .. KHAROSHTHI LETTER GHA
    2233           0 :         return true;
    2234           0 :     if (codePoint >= 0x10A15 && codePoint <= 0x10A17) // KHAROSHTHI LETTER CA .. KHAROSHTHI LETTER JA
    2235           0 :         return true;
    2236           0 :     if (codePoint >= 0x10A19 && codePoint <= 0x10A33) // KHAROSHTHI LETTER NYA .. KHAROSHTHI LETTER TTTHA
    2237           0 :         return true;
    2238           0 :     if (codePoint >= 0x10A38 && codePoint <= 0x10A3A) // KHAROSHTHI SIGN BAR ABOVE .. KHAROSHTHI SIGN DOT BELOW
    2239           0 :         return true;
    2240           0 :     if (codePoint >= 0x10A3F && codePoint <= 0x10A3F) // KHAROSHTHI VIRAMA .. KHAROSHTHI VIRAMA
    2241           0 :         return true;
    2242           0 :     if (codePoint >= 0x10A60 && codePoint <= 0x10A7C) // OLD SOUTH ARABIAN LETTER HE .. OLD SOUTH ARABIAN LETTER THETH
    2243           0 :         return true;
    2244           0 :     if (codePoint >= 0x10A80 && codePoint <= 0x10A9C) // OLD NORTH ARABIAN LETTER HEH .. OLD NORTH ARABIAN LETTER ZAH
    2245           0 :         return true;
    2246           0 :     if (codePoint >= 0x10AC0 && codePoint <= 0x10AC7) // MANICHAEAN LETTER ALEPH .. MANICHAEAN LETTER WAW
    2247           0 :         return true;
    2248           0 :     if (codePoint >= 0x10AC9 && codePoint <= 0x10AE6) // MANICHAEAN LETTER ZAYIN .. MANICHAEAN ABBREVIATION MARK BELOW
    2249           0 :         return true;
    2250           0 :     if (codePoint >= 0x10B00 && codePoint <= 0x10B35) // AVESTAN LETTER A .. AVESTAN LETTER HE
    2251           0 :         return true;
    2252           0 :     if (codePoint >= 0x10B40 && codePoint <= 0x10B55) // INSCRIPTIONAL PARTHIAN LETTER ALEPH .. INSCRIPTIONAL PARTHIAN LETTER TAW
    2253           0 :         return true;
    2254           0 :     if (codePoint >= 0x10B60 && codePoint <= 0x10B72) // INSCRIPTIONAL PAHLAVI LETTER ALEPH .. INSCRIPTIONAL PAHLAVI LETTER TAW
    2255           0 :         return true;
    2256           0 :     if (codePoint >= 0x10B80 && codePoint <= 0x10B91) // PSALTER PAHLAVI LETTER ALEPH .. PSALTER PAHLAVI LETTER TAW
    2257           0 :         return true;
    2258           0 :     if (codePoint >= 0x10C00 && codePoint <= 0x10C48) // OLD TURKIC LETTER ORKHON A .. OLD TURKIC LETTER ORKHON BASH
    2259           0 :         return true;
    2260           0 :     if (codePoint >= 0x10C80 && codePoint <= 0x10CB2) // OLD HUNGARIAN CAPITAL LETTER A .. OLD HUNGARIAN CAPITAL LETTER US
    2261           0 :         return true;
    2262           0 :     if (codePoint >= 0x10CC0 && codePoint <= 0x10CF2) // OLD HUNGARIAN SMALL LETTER A .. OLD HUNGARIAN SMALL LETTER US
    2263           0 :         return true;
    2264           0 :     if (codePoint >= 0x11000 && codePoint <= 0x11046) // BRAHMI SIGN CANDRABINDU .. BRAHMI VIRAMA
    2265           0 :         return true;
    2266           0 :     if (codePoint >= 0x11066 && codePoint <= 0x1106F) // BRAHMI DIGIT ZERO .. BRAHMI DIGIT NINE
    2267           0 :         return true;
    2268           0 :     if (codePoint >= 0x1107F && codePoint <= 0x110BA) // BRAHMI NUMBER JOINER .. KAITHI SIGN NUKTA
    2269           0 :         return true;
    2270           0 :     if (codePoint >= 0x110D0 && codePoint <= 0x110E8) // SORA SOMPENG LETTER SAH .. SORA SOMPENG LETTER MAE
    2271           0 :         return true;
    2272           0 :     if (codePoint >= 0x110F0 && codePoint <= 0x110F9) // SORA SOMPENG DIGIT ZERO .. SORA SOMPENG DIGIT NINE
    2273           0 :         return true;
    2274           0 :     if (codePoint >= 0x11100 && codePoint <= 0x11134) // CHAKMA SIGN CANDRABINDU .. CHAKMA MAAYYAA
    2275           0 :         return true;
    2276           0 :     if (codePoint >= 0x11136 && codePoint <= 0x1113F) // CHAKMA DIGIT ZERO .. CHAKMA DIGIT NINE
    2277           0 :         return true;
    2278           0 :     if (codePoint >= 0x11150 && codePoint <= 0x11173) // MAHAJANI LETTER A .. MAHAJANI SIGN NUKTA
    2279           0 :         return true;
    2280           0 :     if (codePoint >= 0x11176 && codePoint <= 0x11176) // MAHAJANI LIGATURE SHRI .. MAHAJANI LIGATURE SHRI
    2281           0 :         return true;
    2282           0 :     if (codePoint >= 0x11180 && codePoint <= 0x111C4) // SHARADA SIGN CANDRABINDU .. SHARADA OM
    2283           0 :         return true;
    2284           0 :     if (codePoint >= 0x111CA && codePoint <= 0x111CC) // SHARADA SIGN NUKTA .. SHARADA EXTRA SHORT VOWEL MARK
    2285           0 :         return true;
    2286           0 :     if (codePoint >= 0x111D0 && codePoint <= 0x111DA) // SHARADA DIGIT ZERO .. SHARADA EKAM
    2287           0 :         return true;
    2288           0 :     if (codePoint >= 0x111DC && codePoint <= 0x111DC) // SHARADA HEADSTROKE .. SHARADA HEADSTROKE
    2289           0 :         return true;
    2290           0 :     if (codePoint >= 0x11200 && codePoint <= 0x11211) // KHOJKI LETTER A .. KHOJKI LETTER JJA
    2291           0 :         return true;
    2292           0 :     if (codePoint >= 0x11213 && codePoint <= 0x11237) // KHOJKI LETTER NYA .. KHOJKI SIGN SHADDA
    2293           0 :         return true;
    2294           0 :     if (codePoint >= 0x1123E && codePoint <= 0x1123E) // KHOJKI SIGN SUKUN .. KHOJKI SIGN SUKUN
    2295           0 :         return true;
    2296           0 :     if (codePoint >= 0x11280 && codePoint <= 0x11286) // MULTANI LETTER A .. MULTANI LETTER GA
    2297           0 :         return true;
    2298           0 :     if (codePoint >= 0x11288 && codePoint <= 0x11288) // MULTANI LETTER GHA .. MULTANI LETTER GHA
    2299           0 :         return true;
    2300           0 :     if (codePoint >= 0x1128A && codePoint <= 0x1128D) // MULTANI LETTER CA .. MULTANI LETTER JJA
    2301           0 :         return true;
    2302           0 :     if (codePoint >= 0x1128F && codePoint <= 0x1129D) // MULTANI LETTER NYA .. MULTANI LETTER BA
    2303           0 :         return true;
    2304           0 :     if (codePoint >= 0x1129F && codePoint <= 0x112A8) // MULTANI LETTER BHA .. MULTANI LETTER RHA
    2305           0 :         return true;
    2306           0 :     if (codePoint >= 0x112B0 && codePoint <= 0x112EA) // KHUDAWADI LETTER A .. KHUDAWADI SIGN VIRAMA
    2307           0 :         return true;
    2308           0 :     if (codePoint >= 0x112F0 && codePoint <= 0x112F9) // KHUDAWADI DIGIT ZERO .. KHUDAWADI DIGIT NINE
    2309           0 :         return true;
    2310           0 :     if (codePoint >= 0x11300 && codePoint <= 0x11303) // GRANTHA SIGN COMBINING ANUSVARA ABOVE .. GRANTHA SIGN VISARGA
    2311           0 :         return true;
    2312           0 :     if (codePoint >= 0x11305 && codePoint <= 0x1130C) // GRANTHA LETTER A .. GRANTHA LETTER VOCALIC L
    2313           0 :         return true;
    2314           0 :     if (codePoint >= 0x1130F && codePoint <= 0x11310) // GRANTHA LETTER EE .. GRANTHA LETTER AI
    2315           0 :         return true;
    2316           0 :     if (codePoint >= 0x11313 && codePoint <= 0x11328) // GRANTHA LETTER OO .. GRANTHA LETTER NA
    2317           0 :         return true;
    2318           0 :     if (codePoint >= 0x1132A && codePoint <= 0x11330) // GRANTHA LETTER PA .. GRANTHA LETTER RA
    2319           0 :         return true;
    2320           0 :     if (codePoint >= 0x11332 && codePoint <= 0x11333) // GRANTHA LETTER LA .. GRANTHA LETTER LLA
    2321           0 :         return true;
    2322           0 :     if (codePoint >= 0x11335 && codePoint <= 0x11339) // GRANTHA LETTER VA .. GRANTHA LETTER HA
    2323           0 :         return true;
    2324           0 :     if (codePoint >= 0x1133C && codePoint <= 0x11344) // GRANTHA SIGN NUKTA .. GRANTHA VOWEL SIGN VOCALIC RR
    2325           0 :         return true;
    2326           0 :     if (codePoint >= 0x11347 && codePoint <= 0x11348) // GRANTHA VOWEL SIGN EE .. GRANTHA VOWEL SIGN AI
    2327           0 :         return true;
    2328           0 :     if (codePoint >= 0x1134B && codePoint <= 0x1134D) // GRANTHA VOWEL SIGN OO .. GRANTHA SIGN VIRAMA
    2329           0 :         return true;
    2330           0 :     if (codePoint >= 0x11350 && codePoint <= 0x11350) // GRANTHA OM .. GRANTHA OM
    2331           0 :         return true;
    2332           0 :     if (codePoint >= 0x11357 && codePoint <= 0x11357) // GRANTHA AU LENGTH MARK .. GRANTHA AU LENGTH MARK
    2333           0 :         return true;
    2334           0 :     if (codePoint >= 0x1135D && codePoint <= 0x11363) // GRANTHA SIGN PLUTA .. GRANTHA VOWEL SIGN VOCALIC LL
    2335           0 :         return true;
    2336           0 :     if (codePoint >= 0x11366 && codePoint <= 0x1136C) // COMBINING GRANTHA DIGIT ZERO .. COMBINING GRANTHA DIGIT SIX
    2337           0 :         return true;
    2338           0 :     if (codePoint >= 0x11370 && codePoint <= 0x11374) // COMBINING GRANTHA LETTER A .. COMBINING GRANTHA LETTER PA
    2339           0 :         return true;
    2340           0 :     if (codePoint >= 0x11400 && codePoint <= 0x1144A) // NEWA LETTER A .. NEWA SIDDHI
    2341           0 :         return true;
    2342           0 :     if (codePoint >= 0x11450 && codePoint <= 0x11459) // NEWA DIGIT ZERO .. NEWA DIGIT NINE
    2343           0 :         return true;
    2344           0 :     if (codePoint >= 0x11480 && codePoint <= 0x114C5) // TIRHUTA ANJI .. TIRHUTA GVANG
    2345           0 :         return true;
    2346           0 :     if (codePoint >= 0x114C7 && codePoint <= 0x114C7) // TIRHUTA OM .. TIRHUTA OM
    2347           0 :         return true;
    2348           0 :     if (codePoint >= 0x114D0 && codePoint <= 0x114D9) // TIRHUTA DIGIT ZERO .. TIRHUTA DIGIT NINE
    2349           0 :         return true;
    2350           0 :     if (codePoint >= 0x11580 && codePoint <= 0x115B5) // SIDDHAM LETTER A .. SIDDHAM VOWEL SIGN VOCALIC RR
    2351           0 :         return true;
    2352           0 :     if (codePoint >= 0x115B8 && codePoint <= 0x115C0) // SIDDHAM VOWEL SIGN E .. SIDDHAM SIGN NUKTA
    2353           0 :         return true;
    2354           0 :     if (codePoint >= 0x115D8 && codePoint <= 0x115DD) // SIDDHAM LETTER THREE-CIRCLE ALTERNATE I .. SIDDHAM VOWEL SIGN ALTERNATE UU
    2355           0 :         return true;
    2356           0 :     if (codePoint >= 0x11600 && codePoint <= 0x11640) // MODI LETTER A .. MODI SIGN ARDHACANDRA
    2357           0 :         return true;
    2358           0 :     if (codePoint >= 0x11644 && codePoint <= 0x11644) // MODI SIGN HUVA .. MODI SIGN HUVA
    2359           0 :         return true;
    2360           0 :     if (codePoint >= 0x11650 && codePoint <= 0x11659) // MODI DIGIT ZERO .. MODI DIGIT NINE
    2361           0 :         return true;
    2362           0 :     if (codePoint >= 0x11680 && codePoint <= 0x116B7) // TAKRI LETTER A .. TAKRI SIGN NUKTA
    2363           0 :         return true;
    2364           0 :     if (codePoint >= 0x116C0 && codePoint <= 0x116C9) // TAKRI DIGIT ZERO .. TAKRI DIGIT NINE
    2365           0 :         return true;
    2366           0 :     if (codePoint >= 0x11700 && codePoint <= 0x11719) // AHOM LETTER KA .. AHOM LETTER JHA
    2367           0 :         return true;
    2368           0 :     if (codePoint >= 0x1171D && codePoint <= 0x1172B) // AHOM CONSONANT SIGN MEDIAL LA .. AHOM SIGN KILLER
    2369           0 :         return true;
    2370           0 :     if (codePoint >= 0x11730 && codePoint <= 0x11739) // AHOM DIGIT ZERO .. AHOM DIGIT NINE
    2371           0 :         return true;
    2372           0 :     if (codePoint >= 0x118A0 && codePoint <= 0x118E9) // WARANG CITI CAPITAL LETTER NGAA .. WARANG CITI DIGIT NINE
    2373           0 :         return true;
    2374           0 :     if (codePoint >= 0x118FF && codePoint <= 0x118FF) // WARANG CITI OM .. WARANG CITI OM
    2375           0 :         return true;
    2376           0 :     if (codePoint >= 0x11AC0 && codePoint <= 0x11AF8) // PAU CIN HAU LETTER PA .. PAU CIN HAU GLOTTAL STOP FINAL
    2377           0 :         return true;
    2378           0 :     if (codePoint >= 0x11C00 && codePoint <= 0x11C08) // BHAIKSUKI LETTER A .. BHAIKSUKI LETTER VOCALIC L
    2379           0 :         return true;
    2380           0 :     if (codePoint >= 0x11C0A && codePoint <= 0x11C36) // BHAIKSUKI LETTER E .. BHAIKSUKI VOWEL SIGN VOCALIC L
    2381           0 :         return true;
    2382           0 :     if (codePoint >= 0x11C38 && codePoint <= 0x11C40) // BHAIKSUKI VOWEL SIGN E .. BHAIKSUKI SIGN AVAGRAHA
    2383           0 :         return true;
    2384           0 :     if (codePoint >= 0x11C50 && codePoint <= 0x11C59) // BHAIKSUKI DIGIT ZERO .. BHAIKSUKI DIGIT NINE
    2385           0 :         return true;
    2386           0 :     if (codePoint >= 0x11C72 && codePoint <= 0x11C8F) // MARCHEN LETTER KA .. MARCHEN LETTER A
    2387           0 :         return true;
    2388           0 :     if (codePoint >= 0x11C92 && codePoint <= 0x11CA7) // MARCHEN SUBJOINED LETTER KA .. MARCHEN SUBJOINED LETTER ZA
    2389           0 :         return true;
    2390           0 :     if (codePoint >= 0x11CA9 && codePoint <= 0x11CB6) // MARCHEN SUBJOINED LETTER YA .. MARCHEN SIGN CANDRABINDU
    2391           0 :         return true;
    2392           0 :     if (codePoint >= 0x12000 && codePoint <= 0x12399) // CUNEIFORM SIGN A .. CUNEIFORM SIGN U U
    2393           0 :         return true;
    2394           0 :     if (codePoint >= 0x12400 && codePoint <= 0x1246E) // CUNEIFORM NUMERIC SIGN TWO ASH .. CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
    2395           0 :         return true;
    2396           0 :     if (codePoint >= 0x12480 && codePoint <= 0x12543) // CUNEIFORM SIGN AB TIMES NUN TENU .. CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
    2397           0 :         return true;
    2398           0 :     if (codePoint >= 0x13000 && codePoint <= 0x1342E) // EGYPTIAN HIEROGLYPH A001 .. EGYPTIAN HIEROGLYPH AA032
    2399           0 :         return true;
    2400           0 :     if (codePoint >= 0x14400 && codePoint <= 0x14646) // ANATOLIAN HIEROGLYPH A001 .. ANATOLIAN HIEROGLYPH A530
    2401           0 :         return true;
    2402           0 :     if (codePoint >= 0x16800 && codePoint <= 0x16A38) // BAMUM LETTER PHASE-A NGKUE MFON .. BAMUM LETTER PHASE-F VUEQ
    2403           0 :         return true;
    2404           0 :     if (codePoint >= 0x16A40 && codePoint <= 0x16A5E) // MRO LETTER TA .. MRO LETTER TEK
    2405           0 :         return true;
    2406           0 :     if (codePoint >= 0x16A60 && codePoint <= 0x16A69) // MRO DIGIT ZERO .. MRO DIGIT NINE
    2407           0 :         return true;
    2408           0 :     if (codePoint >= 0x16AD0 && codePoint <= 0x16AED) // BASSA VAH LETTER ENNI .. BASSA VAH LETTER I
    2409           0 :         return true;
    2410           0 :     if (codePoint >= 0x16AF0 && codePoint <= 0x16AF4) // BASSA VAH COMBINING HIGH TONE .. BASSA VAH COMBINING HIGH-LOW TONE
    2411           0 :         return true;
    2412           0 :     if (codePoint >= 0x16B00 && codePoint <= 0x16B36) // PAHAWH HMONG VOWEL KEEB .. PAHAWH HMONG MARK CIM TAUM
    2413           0 :         return true;
    2414           0 :     if (codePoint >= 0x16B40 && codePoint <= 0x16B43) // PAHAWH HMONG SIGN VOS SEEV .. PAHAWH HMONG SIGN IB YAM
    2415           0 :         return true;
    2416           0 :     if (codePoint >= 0x16B50 && codePoint <= 0x16B59) // PAHAWH HMONG DIGIT ZERO .. PAHAWH HMONG DIGIT NINE
    2417           0 :         return true;
    2418           0 :     if (codePoint >= 0x16B63 && codePoint <= 0x16B77) // PAHAWH HMONG SIGN VOS LUB .. PAHAWH HMONG SIGN CIM NRES TOS
    2419           0 :         return true;
    2420           0 :     if (codePoint >= 0x16B7D && codePoint <= 0x16B8F) // PAHAWH HMONG CLAN SIGN TSHEEJ .. PAHAWH HMONG CLAN SIGN VWJ
    2421           0 :         return true;
    2422           0 :     if (codePoint >= 0x16F00 && codePoint <= 0x16F44) // MIAO LETTER PA .. MIAO LETTER HHA
    2423           0 :         return true;
    2424           0 :     if (codePoint >= 0x16F50 && codePoint <= 0x16F7E) // MIAO LETTER NASALIZATION .. MIAO VOWEL SIGN NG
    2425           0 :         return true;
    2426           0 :     if (codePoint >= 0x16F8F && codePoint <= 0x16F9F) // MIAO TONE RIGHT .. MIAO LETTER REFORMED TONE-8
    2427           0 :         return true;
    2428           0 :     if (codePoint >= 0x16FE0 && codePoint <= 0x16FE0) // TANGUT ITERATION MARK .. TANGUT ITERATION MARK
    2429           0 :         return true;
    2430           0 :     if (codePoint >= 0x17000 && codePoint <= 0x187EC) // Tangut Ideograph .. Tangut Ideograph
    2431           0 :         return true;
    2432           0 :     if (codePoint >= 0x18800 && codePoint <= 0x18AF2) // TANGUT COMPONENT-001 .. TANGUT COMPONENT-755
    2433           0 :         return true;
    2434           0 :     if (codePoint >= 0x1B000 && codePoint <= 0x1B001) // KATAKANA LETTER ARCHAIC E .. HIRAGANA LETTER ARCHAIC YE
    2435           0 :         return true;
    2436           0 :     if (codePoint >= 0x1BC00 && codePoint <= 0x1BC6A) // DUPLOYAN LETTER H .. DUPLOYAN LETTER VOCALIC M
    2437           0 :         return true;
    2438           0 :     if (codePoint >= 0x1BC70 && codePoint <= 0x1BC7C) // DUPLOYAN AFFIX LEFT HORIZONTAL SECANT .. DUPLOYAN AFFIX ATTACHED TANGENT HOOK
    2439           0 :         return true;
    2440           0 :     if (codePoint >= 0x1BC80 && codePoint <= 0x1BC88) // DUPLOYAN AFFIX HIGH ACUTE .. DUPLOYAN AFFIX HIGH VERTICAL
    2441           0 :         return true;
    2442           0 :     if (codePoint >= 0x1BC90 && codePoint <= 0x1BC99) // DUPLOYAN AFFIX LOW ACUTE .. DUPLOYAN AFFIX LOW ARROW
    2443           0 :         return true;
    2444           0 :     if (codePoint >= 0x1BC9D && codePoint <= 0x1BC9E) // DUPLOYAN THICK LETTER SELECTOR .. DUPLOYAN DOUBLE MARK
    2445           0 :         return true;
    2446           0 :     if (codePoint >= 0x1D165 && codePoint <= 0x1D169) // MUSICAL SYMBOL COMBINING STEM .. MUSICAL SYMBOL COMBINING TREMOLO-3
    2447           0 :         return true;
    2448           0 :     if (codePoint >= 0x1D16D && codePoint <= 0x1D172) // MUSICAL SYMBOL COMBINING AUGMENTATION DOT .. MUSICAL SYMBOL COMBINING FLAG-5
    2449           0 :         return true;
    2450           0 :     if (codePoint >= 0x1D17B && codePoint <= 0x1D182) // MUSICAL SYMBOL COMBINING ACCENT .. MUSICAL SYMBOL COMBINING LOURE
    2451           0 :         return true;
    2452           0 :     if (codePoint >= 0x1D185 && codePoint <= 0x1D18B) // MUSICAL SYMBOL COMBINING DOIT .. MUSICAL SYMBOL COMBINING TRIPLE TONGUE
    2453           0 :         return true;
    2454           0 :     if (codePoint >= 0x1D1AA && codePoint <= 0x1D1AD) // MUSICAL SYMBOL COMBINING DOWN BOW .. MUSICAL SYMBOL COMBINING SNAP PIZZICATO
    2455           0 :         return true;
    2456           0 :     if (codePoint >= 0x1D242 && codePoint <= 0x1D244) // COMBINING GREEK MUSICAL TRISEME .. COMBINING GREEK MUSICAL PENTASEME
    2457           0 :         return true;
    2458           0 :     if (codePoint >= 0x1D400 && codePoint <= 0x1D454) // MATHEMATICAL BOLD CAPITAL A .. MATHEMATICAL ITALIC SMALL G
    2459           0 :         return true;
    2460           0 :     if (codePoint >= 0x1D456 && codePoint <= 0x1D49C) // MATHEMATICAL ITALIC SMALL I .. MATHEMATICAL SCRIPT CAPITAL A
    2461           0 :         return true;
    2462           0 :     if (codePoint >= 0x1D49E && codePoint <= 0x1D49F) // MATHEMATICAL SCRIPT CAPITAL C .. MATHEMATICAL SCRIPT CAPITAL D
    2463           0 :         return true;
    2464           0 :     if (codePoint >= 0x1D4A2 && codePoint <= 0x1D4A2) // MATHEMATICAL SCRIPT CAPITAL G .. MATHEMATICAL SCRIPT CAPITAL G
    2465           0 :         return true;
    2466           0 :     if (codePoint >= 0x1D4A5 && codePoint <= 0x1D4A6) // MATHEMATICAL SCRIPT CAPITAL J .. MATHEMATICAL SCRIPT CAPITAL K
    2467           0 :         return true;
    2468           0 :     if (codePoint >= 0x1D4A9 && codePoint <= 0x1D4AC) // MATHEMATICAL SCRIPT CAPITAL N .. MATHEMATICAL SCRIPT CAPITAL Q
    2469           0 :         return true;
    2470           0 :     if (codePoint >= 0x1D4AE && codePoint <= 0x1D4B9) // MATHEMATICAL SCRIPT CAPITAL S .. MATHEMATICAL SCRIPT SMALL D
    2471           0 :         return true;
    2472           0 :     if (codePoint >= 0x1D4BB && codePoint <= 0x1D4BB) // MATHEMATICAL SCRIPT SMALL F .. MATHEMATICAL SCRIPT SMALL F
    2473           0 :         return true;
    2474           0 :     if (codePoint >= 0x1D4BD && codePoint <= 0x1D4C3) // MATHEMATICAL SCRIPT SMALL H .. MATHEMATICAL SCRIPT SMALL N
    2475           0 :         return true;
    2476           0 :     if (codePoint >= 0x1D4C5 && codePoint <= 0x1D505) // MATHEMATICAL SCRIPT SMALL P .. MATHEMATICAL FRAKTUR CAPITAL B
    2477           0 :         return true;
    2478           0 :     if (codePoint >= 0x1D507 && codePoint <= 0x1D50A) // MATHEMATICAL FRAKTUR CAPITAL D .. MATHEMATICAL FRAKTUR CAPITAL G
    2479           0 :         return true;
    2480           0 :     if (codePoint >= 0x1D50D && codePoint <= 0x1D514) // MATHEMATICAL FRAKTUR CAPITAL J .. MATHEMATICAL FRAKTUR CAPITAL Q
    2481           0 :         return true;
    2482           0 :     if (codePoint >= 0x1D516 && codePoint <= 0x1D51C) // MATHEMATICAL FRAKTUR CAPITAL S .. MATHEMATICAL FRAKTUR CAPITAL Y
    2483           0 :         return true;
    2484           0 :     if (codePoint >= 0x1D51E && codePoint <= 0x1D539) // MATHEMATICAL FRAKTUR SMALL A .. MATHEMATICAL DOUBLE-STRUCK CAPITAL B
    2485           0 :         return true;
    2486           0 :     if (codePoint >= 0x1D53B && codePoint <= 0x1D53E) // MATHEMATICAL DOUBLE-STRUCK CAPITAL D .. MATHEMATICAL DOUBLE-STRUCK CAPITAL G
    2487           0 :         return true;
    2488           0 :     if (codePoint >= 0x1D540 && codePoint <= 0x1D544) // MATHEMATICAL DOUBLE-STRUCK CAPITAL I .. MATHEMATICAL DOUBLE-STRUCK CAPITAL M
    2489           0 :         return true;
    2490           0 :     if (codePoint >= 0x1D546 && codePoint <= 0x1D546) // MATHEMATICAL DOUBLE-STRUCK CAPITAL O .. MATHEMATICAL DOUBLE-STRUCK CAPITAL O
    2491           0 :         return true;
    2492           0 :     if (codePoint >= 0x1D54A && codePoint <= 0x1D550) // MATHEMATICAL DOUBLE-STRUCK CAPITAL S .. MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
    2493           0 :         return true;
    2494           0 :     if (codePoint >= 0x1D552 && codePoint <= 0x1D6A5) // MATHEMATICAL DOUBLE-STRUCK SMALL A .. MATHEMATICAL ITALIC SMALL DOTLESS J
    2495           0 :         return true;
    2496           0 :     if (codePoint >= 0x1D6A8 && codePoint <= 0x1D6C0) // MATHEMATICAL BOLD CAPITAL ALPHA .. MATHEMATICAL BOLD CAPITAL OMEGA
    2497           0 :         return true;
    2498           0 :     if (codePoint >= 0x1D6C2 && codePoint <= 0x1D6DA) // MATHEMATICAL BOLD SMALL ALPHA .. MATHEMATICAL BOLD SMALL OMEGA
    2499           0 :         return true;
    2500           0 :     if (codePoint >= 0x1D6DC && codePoint <= 0x1D6FA) // MATHEMATICAL BOLD EPSILON SYMBOL .. MATHEMATICAL ITALIC CAPITAL OMEGA
    2501           0 :         return true;
    2502           0 :     if (codePoint >= 0x1D6FC && codePoint <= 0x1D714) // MATHEMATICAL ITALIC SMALL ALPHA .. MATHEMATICAL ITALIC SMALL OMEGA
    2503           0 :         return true;
    2504           0 :     if (codePoint >= 0x1D716 && codePoint <= 0x1D734) // MATHEMATICAL ITALIC EPSILON SYMBOL .. MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
    2505           0 :         return true;
    2506           0 :     if (codePoint >= 0x1D736 && codePoint <= 0x1D74E) // MATHEMATICAL BOLD ITALIC SMALL ALPHA .. MATHEMATICAL BOLD ITALIC SMALL OMEGA
    2507           0 :         return true;
    2508           0 :     if (codePoint >= 0x1D750 && codePoint <= 0x1D76E) // MATHEMATICAL BOLD ITALIC EPSILON SYMBOL .. MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
    2509           0 :         return true;
    2510           0 :     if (codePoint >= 0x1D770 && codePoint <= 0x1D788) // MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA .. MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
    2511           0 :         return true;
    2512           0 :     if (codePoint >= 0x1D78A && codePoint <= 0x1D7A8) // MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL .. MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
    2513           0 :         return true;
    2514           0 :     if (codePoint >= 0x1D7AA && codePoint <= 0x1D7C2) // MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA .. MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
    2515           0 :         return true;
    2516           0 :     if (codePoint >= 0x1D7C4 && codePoint <= 0x1D7CB) // MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL .. MATHEMATICAL BOLD SMALL DIGAMMA
    2517           0 :         return true;
    2518           0 :     if (codePoint >= 0x1D7CE && codePoint <= 0x1D7FF) // MATHEMATICAL BOLD DIGIT ZERO .. MATHEMATICAL MONOSPACE DIGIT NINE
    2519           0 :         return true;
    2520           0 :     if (codePoint >= 0x1DA00 && codePoint <= 0x1DA36) // SIGNWRITING HEAD RIM .. SIGNWRITING AIR SUCKING IN
    2521           0 :         return true;
    2522           0 :     if (codePoint >= 0x1DA3B && codePoint <= 0x1DA6C) // SIGNWRITING MOUTH CLOSED NEUTRAL .. SIGNWRITING EXCITEMENT
    2523           0 :         return true;
    2524           0 :     if (codePoint >= 0x1DA75 && codePoint <= 0x1DA75) // SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS .. SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
    2525           0 :         return true;
    2526           0 :     if (codePoint >= 0x1DA84 && codePoint <= 0x1DA84) // SIGNWRITING LOCATION HEAD NECK .. SIGNWRITING LOCATION HEAD NECK
    2527           0 :         return true;
    2528           0 :     if (codePoint >= 0x1DA9B && codePoint <= 0x1DA9F) // SIGNWRITING FILL MODIFIER-2 .. SIGNWRITING FILL MODIFIER-6
    2529           0 :         return true;
    2530           0 :     if (codePoint >= 0x1DAA1 && codePoint <= 0x1DAAF) // SIGNWRITING ROTATION MODIFIER-2 .. SIGNWRITING ROTATION MODIFIER-16
    2531           0 :         return true;
    2532           0 :     if (codePoint >= 0x1E000 && codePoint <= 0x1E006) // COMBINING GLAGOLITIC LETTER AZU .. COMBINING GLAGOLITIC LETTER ZHIVETE
    2533           0 :         return true;
    2534           0 :     if (codePoint >= 0x1E008 && codePoint <= 0x1E018) // COMBINING GLAGOLITIC LETTER ZEMLJA .. COMBINING GLAGOLITIC LETTER HERU
    2535           0 :         return true;
    2536           0 :     if (codePoint >= 0x1E01B && codePoint <= 0x1E021) // COMBINING GLAGOLITIC LETTER SHTA .. COMBINING GLAGOLITIC LETTER YATI
    2537           0 :         return true;
    2538           0 :     if (codePoint >= 0x1E023 && codePoint <= 0x1E024) // COMBINING GLAGOLITIC LETTER YU .. COMBINING GLAGOLITIC LETTER SMALL YUS
    2539           0 :         return true;
    2540           0 :     if (codePoint >= 0x1E026 && codePoint <= 0x1E02A) // COMBINING GLAGOLITIC LETTER YO .. COMBINING GLAGOLITIC LETTER FITA
    2541           0 :         return true;
    2542           0 :     if (codePoint >= 0x1E800 && codePoint <= 0x1E8C4) // MENDE KIKAKUI SYLLABLE M001 KI .. MENDE KIKAKUI SYLLABLE M060 NYON
    2543           0 :         return true;
    2544           0 :     if (codePoint >= 0x1E8D0 && codePoint <= 0x1E8D6) // MENDE KIKAKUI COMBINING NUMBER TEENS .. MENDE KIKAKUI COMBINING NUMBER MILLIONS
    2545           0 :         return true;
    2546           0 :     if (codePoint >= 0x1E900 && codePoint <= 0x1E94A) // ADLAM CAPITAL LETTER ALIF .. ADLAM NUKTA
    2547           0 :         return true;
    2548           0 :     if (codePoint >= 0x1E950 && codePoint <= 0x1E959) // ADLAM DIGIT ZERO .. ADLAM DIGIT NINE
    2549           0 :         return true;
    2550           0 :     if (codePoint >= 0x1EE00 && codePoint <= 0x1EE03) // ARABIC MATHEMATICAL ALEF .. ARABIC MATHEMATICAL DAL
    2551           0 :         return true;
    2552           0 :     if (codePoint >= 0x1EE05 && codePoint <= 0x1EE1F) // ARABIC MATHEMATICAL WAW .. ARABIC MATHEMATICAL DOTLESS QAF
    2553           0 :         return true;
    2554           0 :     if (codePoint >= 0x1EE21 && codePoint <= 0x1EE22) // ARABIC MATHEMATICAL INITIAL BEH .. ARABIC MATHEMATICAL INITIAL JEEM
    2555           0 :         return true;
    2556           0 :     if (codePoint >= 0x1EE24 && codePoint <= 0x1EE24) // ARABIC MATHEMATICAL INITIAL HEH .. ARABIC MATHEMATICAL INITIAL HEH
    2557           0 :         return true;
    2558           0 :     if (codePoint >= 0x1EE27 && codePoint <= 0x1EE27) // ARABIC MATHEMATICAL INITIAL HAH .. ARABIC MATHEMATICAL INITIAL HAH
    2559           0 :         return true;
    2560           0 :     if (codePoint >= 0x1EE29 && codePoint <= 0x1EE32) // ARABIC MATHEMATICAL INITIAL YEH .. ARABIC MATHEMATICAL INITIAL QAF
    2561           0 :         return true;
    2562           0 :     if (codePoint >= 0x1EE34 && codePoint <= 0x1EE37) // ARABIC MATHEMATICAL INITIAL SHEEN .. ARABIC MATHEMATICAL INITIAL KHAH
    2563           0 :         return true;
    2564           0 :     if (codePoint >= 0x1EE39 && codePoint <= 0x1EE39) // ARABIC MATHEMATICAL INITIAL DAD .. ARABIC MATHEMATICAL INITIAL DAD
    2565           0 :         return true;
    2566           0 :     if (codePoint >= 0x1EE3B && codePoint <= 0x1EE3B) // ARABIC MATHEMATICAL INITIAL GHAIN .. ARABIC MATHEMATICAL INITIAL GHAIN
    2567           0 :         return true;
    2568           0 :     if (codePoint >= 0x1EE42 && codePoint <= 0x1EE42) // ARABIC MATHEMATICAL TAILED JEEM .. ARABIC MATHEMATICAL TAILED JEEM
    2569           0 :         return true;
    2570           0 :     if (codePoint >= 0x1EE47 && codePoint <= 0x1EE47) // ARABIC MATHEMATICAL TAILED HAH .. ARABIC MATHEMATICAL TAILED HAH
    2571           0 :         return true;
    2572           0 :     if (codePoint >= 0x1EE49 && codePoint <= 0x1EE49) // ARABIC MATHEMATICAL TAILED YEH .. ARABIC MATHEMATICAL TAILED YEH
    2573           0 :         return true;
    2574           0 :     if (codePoint >= 0x1EE4B && codePoint <= 0x1EE4B) // ARABIC MATHEMATICAL TAILED LAM .. ARABIC MATHEMATICAL TAILED LAM
    2575           0 :         return true;
    2576           0 :     if (codePoint >= 0x1EE4D && codePoint <= 0x1EE4F) // ARABIC MATHEMATICAL TAILED NOON .. ARABIC MATHEMATICAL TAILED AIN
    2577           0 :         return true;
    2578           0 :     if (codePoint >= 0x1EE51 && codePoint <= 0x1EE52) // ARABIC MATHEMATICAL TAILED SAD .. ARABIC MATHEMATICAL TAILED QAF
    2579           0 :         return true;
    2580           0 :     if (codePoint >= 0x1EE54 && codePoint <= 0x1EE54) // ARABIC MATHEMATICAL TAILED SHEEN .. ARABIC MATHEMATICAL TAILED SHEEN
    2581           0 :         return true;
    2582           0 :     if (codePoint >= 0x1EE57 && codePoint <= 0x1EE57) // ARABIC MATHEMATICAL TAILED KHAH .. ARABIC MATHEMATICAL TAILED KHAH
    2583           0 :         return true;
    2584           0 :     if (codePoint >= 0x1EE59 && codePoint <= 0x1EE59) // ARABIC MATHEMATICAL TAILED DAD .. ARABIC MATHEMATICAL TAILED DAD
    2585           0 :         return true;
    2586           0 :     if (codePoint >= 0x1EE5B && codePoint <= 0x1EE5B) // ARABIC MATHEMATICAL TAILED GHAIN .. ARABIC MATHEMATICAL TAILED GHAIN
    2587           0 :         return true;
    2588           0 :     if (codePoint >= 0x1EE5D && codePoint <= 0x1EE5D) // ARABIC MATHEMATICAL TAILED DOTLESS NOON .. ARABIC MATHEMATICAL TAILED DOTLESS NOON
    2589           0 :         return true;
    2590           0 :     if (codePoint >= 0x1EE5F && codePoint <= 0x1EE5F) // ARABIC MATHEMATICAL TAILED DOTLESS QAF .. ARABIC MATHEMATICAL TAILED DOTLESS QAF
    2591           0 :         return true;
    2592           0 :     if (codePoint >= 0x1EE61 && codePoint <= 0x1EE62) // ARABIC MATHEMATICAL STRETCHED BEH .. ARABIC MATHEMATICAL STRETCHED JEEM
    2593           0 :         return true;
    2594           0 :     if (codePoint >= 0x1EE64 && codePoint <= 0x1EE64) // ARABIC MATHEMATICAL STRETCHED HEH .. ARABIC MATHEMATICAL STRETCHED HEH
    2595           0 :         return true;
    2596           0 :     if (codePoint >= 0x1EE67 && codePoint <= 0x1EE6A) // ARABIC MATHEMATICAL STRETCHED HAH .. ARABIC MATHEMATICAL STRETCHED KAF
    2597           0 :         return true;
    2598           0 :     if (codePoint >= 0x1EE6C && codePoint <= 0x1EE72) // ARABIC MATHEMATICAL STRETCHED MEEM .. ARABIC MATHEMATICAL STRETCHED QAF
    2599           0 :         return true;
    2600           0 :     if (codePoint >= 0x1EE74 && codePoint <= 0x1EE77) // ARABIC MATHEMATICAL STRETCHED SHEEN .. ARABIC MATHEMATICAL STRETCHED KHAH
    2601           0 :         return true;
    2602           0 :     if (codePoint >= 0x1EE79 && codePoint <= 0x1EE7C) // ARABIC MATHEMATICAL STRETCHED DAD .. ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
    2603           0 :         return true;
    2604           0 :     if (codePoint >= 0x1EE7E && codePoint <= 0x1EE7E) // ARABIC MATHEMATICAL STRETCHED DOTLESS FEH .. ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
    2605           0 :         return true;
    2606           0 :     if (codePoint >= 0x1EE80 && codePoint <= 0x1EE89) // ARABIC MATHEMATICAL LOOPED ALEF .. ARABIC MATHEMATICAL LOOPED YEH
    2607           0 :         return true;
    2608           0 :     if (codePoint >= 0x1EE8B && codePoint <= 0x1EE9B) // ARABIC MATHEMATICAL LOOPED LAM .. ARABIC MATHEMATICAL LOOPED GHAIN
    2609           0 :         return true;
    2610           0 :     if (codePoint >= 0x1EEA1 && codePoint <= 0x1EEA3) // ARABIC MATHEMATICAL DOUBLE-STRUCK BEH .. ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
    2611           0 :         return true;
    2612           0 :     if (codePoint >= 0x1EEA5 && codePoint <= 0x1EEA9) // ARABIC MATHEMATICAL DOUBLE-STRUCK WAW .. ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
    2613           0 :         return true;
    2614           0 :     if (codePoint >= 0x1EEAB && codePoint <= 0x1EEBB) // ARABIC MATHEMATICAL DOUBLE-STRUCK LAM .. ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
    2615           0 :         return true;
    2616           0 :     if (codePoint >= 0x20000 && codePoint <= 0x2A6D6) // CJK Ideograph Extension B .. CJK Ideograph Extension B
    2617           0 :         return true;
    2618           0 :     if (codePoint >= 0x2A700 && codePoint <= 0x2B734) // CJK Ideograph Extension C .. CJK Ideograph Extension C
    2619           0 :         return true;
    2620           0 :     if (codePoint >= 0x2B740 && codePoint <= 0x2B81D) // CJK Ideograph Extension D .. CJK Ideograph Extension D
    2621           0 :         return true;
    2622           0 :     if (codePoint >= 0x2B820 && codePoint <= 0x2CEA1) // CJK Ideograph Extension E .. CJK Ideograph Extension E
    2623           0 :         return true;
    2624           0 :     if (codePoint >= 0x2F800 && codePoint <= 0x2FA1D) // CJK COMPATIBILITY IDEOGRAPH-2F800 .. CJK COMPATIBILITY IDEOGRAPH-2FA1D
    2625           0 :         return true;
    2626           0 :     if (codePoint >= 0xE0100 && codePoint <= 0xE01EF) // VARIATION SELECTOR-17 .. VARIATION SELECTOR-256
    2627           0 :         return true;
    2628           0 :     return false;
    2629             : }
    2630             : 
    2631             : bool
    2632           0 : js::unicode::CanUpperCaseSpecialCasing(char16_t ch)
    2633             : {
    2634           0 :     if (ch < 0x00DF || ch > 0xFB17)
    2635           0 :         return false;
    2636           0 :     if (ch <= 0x0587) {
    2637             :         // U+00DF LATIN SMALL LETTER SHARP S
    2638             :         // U+0149 LATIN SMALL LETTER N PRECEDED BY APOSTROPHE (LATIN SMALL LETTER APOSTROPHE N)
    2639             :         // U+01F0 LATIN SMALL LETTER J WITH CARON (LATIN SMALL LETTER J HACEK)
    2640             :         // U+0390 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS (GREEK SMALL LETTER IOTA DIAERESIS TONOS)
    2641             :         // U+03B0 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS (GREEK SMALL LETTER UPSILON DIAERESIS TONOS)
    2642             :         // U+0587 ARMENIAN SMALL LIGATURE ECH YIWN
    2643           0 :         return ch == 0x00DF || ch == 0x0149 || ch == 0x01F0 || ch == 0x0390 || ch == 0x03B0 ||
    2644           0 :                ch == 0x0587;
    2645             :     }
    2646           0 :     if (ch <= 0x1FFC) {
    2647             :         // U+1E96 LATIN SMALL LETTER H WITH LINE BELOW .. U+1E9A LATIN SMALL LETTER A WITH RIGHT HALF RING
    2648           0 :         if (ch <= 0x1E9A)
    2649           0 :             return ch >= 0x1E96;
    2650           0 :         if (ch < 0x1F50)
    2651           0 :             return false;
    2652             :         // U+1F50 GREEK SMALL LETTER UPSILON WITH PSILI
    2653             :         // U+1F52 GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
    2654             :         // U+1F54 GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
    2655             :         // U+1F56 GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
    2656             :         // U+1F80 GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI .. U+1FAF GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
    2657             :         // U+1FB2 GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI .. U+1FB4 GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
    2658             :         // U+1FB6 GREEK SMALL LETTER ALPHA WITH PERISPOMENI .. U+1FB7 GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
    2659             :         // U+1FBC GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
    2660             :         // U+1FC2 GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI .. U+1FC4 GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
    2661             :         // U+1FC6 GREEK SMALL LETTER ETA WITH PERISPOMENI .. U+1FC7 GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
    2662             :         // U+1FCC GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
    2663             :         // U+1FD2 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA .. U+1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
    2664             :         // U+1FD6 GREEK SMALL LETTER IOTA WITH PERISPOMENI .. U+1FD7 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
    2665             :         // U+1FE2 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA .. U+1FE4 GREEK SMALL LETTER RHO WITH PSILI
    2666             :         // U+1FE6 GREEK SMALL LETTER UPSILON WITH PERISPOMENI .. U+1FE7 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
    2667             :         // U+1FF2 GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI .. U+1FF4 GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
    2668             :         // U+1FF6 GREEK SMALL LETTER OMEGA WITH PERISPOMENI .. U+1FF7 GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
    2669             :         // U+1FFC GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
    2670           0 :         return ch == 0x1F50 || ch == 0x1F52 || ch == 0x1F54 || ch == 0x1F56 ||
    2671           0 :                (ch >= 0x1F80 && ch <= 0x1FAF) || (ch >= 0x1FB2 && ch <= 0x1FB4) ||
    2672           0 :                (ch >= 0x1FB6 && ch <= 0x1FB7) || ch == 0x1FBC || (ch >= 0x1FC2 && ch <= 0x1FC4) ||
    2673           0 :                (ch >= 0x1FC6 && ch <= 0x1FC7) || ch == 0x1FCC || (ch >= 0x1FD2 && ch <= 0x1FD3) ||
    2674           0 :                (ch >= 0x1FD6 && ch <= 0x1FD7) || (ch >= 0x1FE2 && ch <= 0x1FE4) ||
    2675           0 :                (ch >= 0x1FE6 && ch <= 0x1FE7) || (ch >= 0x1FF2 && ch <= 0x1FF4) ||
    2676           0 :                (ch >= 0x1FF6 && ch <= 0x1FF7) || ch == 0x1FFC;
    2677             :     }
    2678           0 :     if (ch < 0xFB00)
    2679           0 :         return false;
    2680             :     // U+FB00 LATIN SMALL LIGATURE FF .. U+FB06 LATIN SMALL LIGATURE ST
    2681             :     // U+FB13 ARMENIAN SMALL LIGATURE MEN NOW .. U+FB17 ARMENIAN SMALL LIGATURE MEN XEH
    2682           0 :     return (ch >= 0xFB00 && ch <= 0xFB06) || (ch >= 0xFB13 && ch <= 0xFB17);
    2683             : }
    2684             : 
    2685             : size_t
    2686           0 : js::unicode::LengthUpperCaseSpecialCasing(char16_t ch)
    2687             : {
    2688           0 :     switch(ch) {
    2689           0 :       case 0x00DF: return 2; // LATIN SMALL LETTER SHARP S
    2690           0 :       case 0x0149: return 2; // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE (LATIN SMALL LETTER APOSTROPHE N)
    2691           0 :       case 0x01F0: return 2; // LATIN SMALL LETTER J WITH CARON (LATIN SMALL LETTER J HACEK)
    2692           0 :       case 0x0390: return 3; // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS (GREEK SMALL LETTER IOTA DIAERESIS TONOS)
    2693           0 :       case 0x03B0: return 3; // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS (GREEK SMALL LETTER UPSILON DIAERESIS TONOS)
    2694           0 :       case 0x0587: return 2; // ARMENIAN SMALL LIGATURE ECH YIWN
    2695           0 :       case 0x1E96: return 2; // LATIN SMALL LETTER H WITH LINE BELOW
    2696           0 :       case 0x1E97: return 2; // LATIN SMALL LETTER T WITH DIAERESIS
    2697           0 :       case 0x1E98: return 2; // LATIN SMALL LETTER W WITH RING ABOVE
    2698           0 :       case 0x1E99: return 2; // LATIN SMALL LETTER Y WITH RING ABOVE
    2699           0 :       case 0x1E9A: return 2; // LATIN SMALL LETTER A WITH RIGHT HALF RING
    2700           0 :       case 0x1F50: return 2; // GREEK SMALL LETTER UPSILON WITH PSILI
    2701           0 :       case 0x1F52: return 3; // GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
    2702           0 :       case 0x1F54: return 3; // GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
    2703           0 :       case 0x1F56: return 3; // GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
    2704           0 :       case 0x1F80: return 2; // GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
    2705           0 :       case 0x1F81: return 2; // GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
    2706           0 :       case 0x1F82: return 2; // GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
    2707           0 :       case 0x1F83: return 2; // GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
    2708           0 :       case 0x1F84: return 2; // GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
    2709           0 :       case 0x1F85: return 2; // GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
    2710           0 :       case 0x1F86: return 2; // GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
    2711           0 :       case 0x1F87: return 2; // GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
    2712           0 :       case 0x1F88: return 2; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
    2713           0 :       case 0x1F89: return 2; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
    2714           0 :       case 0x1F8A: return 2; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
    2715           0 :       case 0x1F8B: return 2; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
    2716           0 :       case 0x1F8C: return 2; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
    2717           0 :       case 0x1F8D: return 2; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
    2718           0 :       case 0x1F8E: return 2; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
    2719           0 :       case 0x1F8F: return 2; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
    2720           0 :       case 0x1F90: return 2; // GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
    2721           0 :       case 0x1F91: return 2; // GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
    2722           0 :       case 0x1F92: return 2; // GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
    2723           0 :       case 0x1F93: return 2; // GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
    2724           0 :       case 0x1F94: return 2; // GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
    2725           0 :       case 0x1F95: return 2; // GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
    2726           0 :       case 0x1F96: return 2; // GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
    2727           0 :       case 0x1F97: return 2; // GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
    2728           0 :       case 0x1F98: return 2; // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
    2729           0 :       case 0x1F99: return 2; // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
    2730           0 :       case 0x1F9A: return 2; // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
    2731           0 :       case 0x1F9B: return 2; // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
    2732           0 :       case 0x1F9C: return 2; // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
    2733           0 :       case 0x1F9D: return 2; // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
    2734           0 :       case 0x1F9E: return 2; // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
    2735           0 :       case 0x1F9F: return 2; // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
    2736           0 :       case 0x1FA0: return 2; // GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
    2737           0 :       case 0x1FA1: return 2; // GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
    2738           0 :       case 0x1FA2: return 2; // GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
    2739           0 :       case 0x1FA3: return 2; // GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
    2740           0 :       case 0x1FA4: return 2; // GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
    2741           0 :       case 0x1FA5: return 2; // GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
    2742           0 :       case 0x1FA6: return 2; // GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
    2743           0 :       case 0x1FA7: return 2; // GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
    2744           0 :       case 0x1FA8: return 2; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
    2745           0 :       case 0x1FA9: return 2; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
    2746           0 :       case 0x1FAA: return 2; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
    2747           0 :       case 0x1FAB: return 2; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
    2748           0 :       case 0x1FAC: return 2; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
    2749           0 :       case 0x1FAD: return 2; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
    2750           0 :       case 0x1FAE: return 2; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
    2751           0 :       case 0x1FAF: return 2; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
    2752           0 :       case 0x1FB2: return 2; // GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
    2753           0 :       case 0x1FB3: return 2; // GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
    2754           0 :       case 0x1FB4: return 2; // GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
    2755           0 :       case 0x1FB6: return 2; // GREEK SMALL LETTER ALPHA WITH PERISPOMENI
    2756           0 :       case 0x1FB7: return 3; // GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
    2757           0 :       case 0x1FBC: return 2; // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
    2758           0 :       case 0x1FC2: return 2; // GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
    2759           0 :       case 0x1FC3: return 2; // GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
    2760           0 :       case 0x1FC4: return 2; // GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
    2761           0 :       case 0x1FC6: return 2; // GREEK SMALL LETTER ETA WITH PERISPOMENI
    2762           0 :       case 0x1FC7: return 3; // GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
    2763           0 :       case 0x1FCC: return 2; // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
    2764           0 :       case 0x1FD2: return 3; // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
    2765           0 :       case 0x1FD3: return 3; // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
    2766           0 :       case 0x1FD6: return 2; // GREEK SMALL LETTER IOTA WITH PERISPOMENI
    2767           0 :       case 0x1FD7: return 3; // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
    2768           0 :       case 0x1FE2: return 3; // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
    2769           0 :       case 0x1FE3: return 3; // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
    2770           0 :       case 0x1FE4: return 2; // GREEK SMALL LETTER RHO WITH PSILI
    2771           0 :       case 0x1FE6: return 2; // GREEK SMALL LETTER UPSILON WITH PERISPOMENI
    2772           0 :       case 0x1FE7: return 3; // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
    2773           0 :       case 0x1FF2: return 2; // GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
    2774           0 :       case 0x1FF3: return 2; // GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
    2775           0 :       case 0x1FF4: return 2; // GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
    2776           0 :       case 0x1FF6: return 2; // GREEK SMALL LETTER OMEGA WITH PERISPOMENI
    2777           0 :       case 0x1FF7: return 3; // GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
    2778           0 :       case 0x1FFC: return 2; // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
    2779           0 :       case 0xFB00: return 2; // LATIN SMALL LIGATURE FF
    2780           0 :       case 0xFB01: return 2; // LATIN SMALL LIGATURE FI
    2781           0 :       case 0xFB02: return 2; // LATIN SMALL LIGATURE FL
    2782           0 :       case 0xFB03: return 3; // LATIN SMALL LIGATURE FFI
    2783           0 :       case 0xFB04: return 3; // LATIN SMALL LIGATURE FFL
    2784           0 :       case 0xFB05: return 2; // LATIN SMALL LIGATURE LONG S T
    2785           0 :       case 0xFB06: return 2; // LATIN SMALL LIGATURE ST
    2786           0 :       case 0xFB13: return 2; // ARMENIAN SMALL LIGATURE MEN NOW
    2787           0 :       case 0xFB14: return 2; // ARMENIAN SMALL LIGATURE MEN ECH
    2788           0 :       case 0xFB15: return 2; // ARMENIAN SMALL LIGATURE MEN INI
    2789           0 :       case 0xFB16: return 2; // ARMENIAN SMALL LIGATURE VEW NOW
    2790           0 :       case 0xFB17: return 2; // ARMENIAN SMALL LIGATURE MEN XEH
    2791             :     }
    2792             : 
    2793           0 :     MOZ_ASSERT_UNREACHABLE("Bad character input.");
    2794             :     return 0;
    2795             : }
    2796             : 
    2797             : void
    2798           0 : js::unicode::AppendUpperCaseSpecialCasing(char16_t ch, char16_t* elements, size_t* index)
    2799             : {
    2800           0 :     switch(ch) {
    2801             :       case 0x00DF: // LATIN SMALL LETTER SHARP S
    2802           0 :         elements[(*index)++] = 0x0053; // LATIN CAPITAL LETTER S
    2803           0 :         elements[(*index)++] = 0x0053; // LATIN CAPITAL LETTER S
    2804           0 :         return;
    2805             :       case 0x0149: // LATIN SMALL LETTER N PRECEDED BY APOSTROPHE (LATIN SMALL LETTER APOSTROPHE N)
    2806           0 :         elements[(*index)++] = 0x02BC; // MODIFIER LETTER APOSTROPHE
    2807           0 :         elements[(*index)++] = 0x004E; // LATIN CAPITAL LETTER N
    2808           0 :         return;
    2809             :       case 0x01F0: // LATIN SMALL LETTER J WITH CARON (LATIN SMALL LETTER J HACEK)
    2810           0 :         elements[(*index)++] = 0x004A; // LATIN CAPITAL LETTER J
    2811           0 :         elements[(*index)++] = 0x030C; // COMBINING CARON (NON-SPACING HACEK)
    2812           0 :         return;
    2813             :       case 0x0390: // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS (GREEK SMALL LETTER IOTA DIAERESIS TONOS)
    2814           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2815           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    2816           0 :         elements[(*index)++] = 0x0301; // COMBINING ACUTE ACCENT (NON-SPACING ACUTE)
    2817           0 :         return;
    2818             :       case 0x03B0: // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS (GREEK SMALL LETTER UPSILON DIAERESIS TONOS)
    2819           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    2820           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    2821           0 :         elements[(*index)++] = 0x0301; // COMBINING ACUTE ACCENT (NON-SPACING ACUTE)
    2822           0 :         return;
    2823             :       case 0x0587: // ARMENIAN SMALL LIGATURE ECH YIWN
    2824           0 :         elements[(*index)++] = 0x0535; // ARMENIAN CAPITAL LETTER ECH
    2825           0 :         elements[(*index)++] = 0x0552; // ARMENIAN CAPITAL LETTER YIWN
    2826           0 :         return;
    2827             :       case 0x1E96: // LATIN SMALL LETTER H WITH LINE BELOW
    2828           0 :         elements[(*index)++] = 0x0048; // LATIN CAPITAL LETTER H
    2829           0 :         elements[(*index)++] = 0x0331; // COMBINING MACRON BELOW (NON-SPACING MACRON BELOW)
    2830           0 :         return;
    2831             :       case 0x1E97: // LATIN SMALL LETTER T WITH DIAERESIS
    2832           0 :         elements[(*index)++] = 0x0054; // LATIN CAPITAL LETTER T
    2833           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    2834           0 :         return;
    2835             :       case 0x1E98: // LATIN SMALL LETTER W WITH RING ABOVE
    2836           0 :         elements[(*index)++] = 0x0057; // LATIN CAPITAL LETTER W
    2837           0 :         elements[(*index)++] = 0x030A; // COMBINING RING ABOVE (NON-SPACING RING ABOVE)
    2838           0 :         return;
    2839             :       case 0x1E99: // LATIN SMALL LETTER Y WITH RING ABOVE
    2840           0 :         elements[(*index)++] = 0x0059; // LATIN CAPITAL LETTER Y
    2841           0 :         elements[(*index)++] = 0x030A; // COMBINING RING ABOVE (NON-SPACING RING ABOVE)
    2842           0 :         return;
    2843             :       case 0x1E9A: // LATIN SMALL LETTER A WITH RIGHT HALF RING
    2844           0 :         elements[(*index)++] = 0x0041; // LATIN CAPITAL LETTER A
    2845           0 :         elements[(*index)++] = 0x02BE; // MODIFIER LETTER RIGHT HALF RING
    2846           0 :         return;
    2847             :       case 0x1F50: // GREEK SMALL LETTER UPSILON WITH PSILI
    2848           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    2849           0 :         elements[(*index)++] = 0x0313; // COMBINING COMMA ABOVE (NON-SPACING COMMA ABOVE)
    2850           0 :         return;
    2851             :       case 0x1F52: // GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA
    2852           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    2853           0 :         elements[(*index)++] = 0x0313; // COMBINING COMMA ABOVE (NON-SPACING COMMA ABOVE)
    2854           0 :         elements[(*index)++] = 0x0300; // COMBINING GRAVE ACCENT (NON-SPACING GRAVE)
    2855           0 :         return;
    2856             :       case 0x1F54: // GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA
    2857           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    2858           0 :         elements[(*index)++] = 0x0313; // COMBINING COMMA ABOVE (NON-SPACING COMMA ABOVE)
    2859           0 :         elements[(*index)++] = 0x0301; // COMBINING ACUTE ACCENT (NON-SPACING ACUTE)
    2860           0 :         return;
    2861             :       case 0x1F56: // GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI
    2862           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    2863           0 :         elements[(*index)++] = 0x0313; // COMBINING COMMA ABOVE (NON-SPACING COMMA ABOVE)
    2864           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    2865           0 :         return;
    2866             :       case 0x1F80: // GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
    2867           0 :         elements[(*index)++] = 0x1F08; // GREEK CAPITAL LETTER ALPHA WITH PSILI
    2868           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2869           0 :         return;
    2870             :       case 0x1F81: // GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
    2871           0 :         elements[(*index)++] = 0x1F09; // GREEK CAPITAL LETTER ALPHA WITH DASIA
    2872           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2873           0 :         return;
    2874             :       case 0x1F82: // GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
    2875           0 :         elements[(*index)++] = 0x1F0A; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
    2876           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2877           0 :         return;
    2878             :       case 0x1F83: // GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
    2879           0 :         elements[(*index)++] = 0x1F0B; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
    2880           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2881           0 :         return;
    2882             :       case 0x1F84: // GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
    2883           0 :         elements[(*index)++] = 0x1F0C; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
    2884           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2885           0 :         return;
    2886             :       case 0x1F85: // GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
    2887           0 :         elements[(*index)++] = 0x1F0D; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
    2888           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2889           0 :         return;
    2890             :       case 0x1F86: // GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
    2891           0 :         elements[(*index)++] = 0x1F0E; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
    2892           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2893           0 :         return;
    2894             :       case 0x1F87: // GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
    2895           0 :         elements[(*index)++] = 0x1F0F; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
    2896           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2897           0 :         return;
    2898             :       case 0x1F88: // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
    2899           0 :         elements[(*index)++] = 0x1F08; // GREEK CAPITAL LETTER ALPHA WITH PSILI
    2900           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2901           0 :         return;
    2902             :       case 0x1F89: // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
    2903           0 :         elements[(*index)++] = 0x1F09; // GREEK CAPITAL LETTER ALPHA WITH DASIA
    2904           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2905           0 :         return;
    2906             :       case 0x1F8A: // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
    2907           0 :         elements[(*index)++] = 0x1F0A; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
    2908           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2909           0 :         return;
    2910             :       case 0x1F8B: // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
    2911           0 :         elements[(*index)++] = 0x1F0B; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
    2912           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2913           0 :         return;
    2914             :       case 0x1F8C: // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
    2915           0 :         elements[(*index)++] = 0x1F0C; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
    2916           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2917           0 :         return;
    2918             :       case 0x1F8D: // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
    2919           0 :         elements[(*index)++] = 0x1F0D; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
    2920           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2921           0 :         return;
    2922             :       case 0x1F8E: // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
    2923           0 :         elements[(*index)++] = 0x1F0E; // GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
    2924           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2925           0 :         return;
    2926             :       case 0x1F8F: // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
    2927           0 :         elements[(*index)++] = 0x1F0F; // GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
    2928           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2929           0 :         return;
    2930             :       case 0x1F90: // GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
    2931           0 :         elements[(*index)++] = 0x1F28; // GREEK CAPITAL LETTER ETA WITH PSILI
    2932           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2933           0 :         return;
    2934             :       case 0x1F91: // GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
    2935           0 :         elements[(*index)++] = 0x1F29; // GREEK CAPITAL LETTER ETA WITH DASIA
    2936           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2937           0 :         return;
    2938             :       case 0x1F92: // GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
    2939           0 :         elements[(*index)++] = 0x1F2A; // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
    2940           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2941           0 :         return;
    2942             :       case 0x1F93: // GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
    2943           0 :         elements[(*index)++] = 0x1F2B; // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
    2944           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2945           0 :         return;
    2946             :       case 0x1F94: // GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
    2947           0 :         elements[(*index)++] = 0x1F2C; // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
    2948           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2949           0 :         return;
    2950             :       case 0x1F95: // GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
    2951           0 :         elements[(*index)++] = 0x1F2D; // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
    2952           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2953           0 :         return;
    2954             :       case 0x1F96: // GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
    2955           0 :         elements[(*index)++] = 0x1F2E; // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
    2956           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2957           0 :         return;
    2958             :       case 0x1F97: // GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
    2959           0 :         elements[(*index)++] = 0x1F2F; // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
    2960           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2961           0 :         return;
    2962             :       case 0x1F98: // GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
    2963           0 :         elements[(*index)++] = 0x1F28; // GREEK CAPITAL LETTER ETA WITH PSILI
    2964           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2965           0 :         return;
    2966             :       case 0x1F99: // GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
    2967           0 :         elements[(*index)++] = 0x1F29; // GREEK CAPITAL LETTER ETA WITH DASIA
    2968           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2969           0 :         return;
    2970             :       case 0x1F9A: // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
    2971           0 :         elements[(*index)++] = 0x1F2A; // GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
    2972           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2973           0 :         return;
    2974             :       case 0x1F9B: // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
    2975           0 :         elements[(*index)++] = 0x1F2B; // GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
    2976           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2977           0 :         return;
    2978             :       case 0x1F9C: // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
    2979           0 :         elements[(*index)++] = 0x1F2C; // GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
    2980           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2981           0 :         return;
    2982             :       case 0x1F9D: // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
    2983           0 :         elements[(*index)++] = 0x1F2D; // GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
    2984           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2985           0 :         return;
    2986             :       case 0x1F9E: // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
    2987           0 :         elements[(*index)++] = 0x1F2E; // GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
    2988           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2989           0 :         return;
    2990             :       case 0x1F9F: // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
    2991           0 :         elements[(*index)++] = 0x1F2F; // GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
    2992           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2993           0 :         return;
    2994             :       case 0x1FA0: // GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
    2995           0 :         elements[(*index)++] = 0x1F68; // GREEK CAPITAL LETTER OMEGA WITH PSILI
    2996           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    2997           0 :         return;
    2998             :       case 0x1FA1: // GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
    2999           0 :         elements[(*index)++] = 0x1F69; // GREEK CAPITAL LETTER OMEGA WITH DASIA
    3000           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3001           0 :         return;
    3002             :       case 0x1FA2: // GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
    3003           0 :         elements[(*index)++] = 0x1F6A; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
    3004           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3005           0 :         return;
    3006             :       case 0x1FA3: // GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
    3007           0 :         elements[(*index)++] = 0x1F6B; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
    3008           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3009           0 :         return;
    3010             :       case 0x1FA4: // GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
    3011           0 :         elements[(*index)++] = 0x1F6C; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
    3012           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3013           0 :         return;
    3014             :       case 0x1FA5: // GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
    3015           0 :         elements[(*index)++] = 0x1F6D; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
    3016           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3017           0 :         return;
    3018             :       case 0x1FA6: // GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
    3019           0 :         elements[(*index)++] = 0x1F6E; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
    3020           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3021           0 :         return;
    3022             :       case 0x1FA7: // GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
    3023           0 :         elements[(*index)++] = 0x1F6F; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
    3024           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3025           0 :         return;
    3026             :       case 0x1FA8: // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
    3027           0 :         elements[(*index)++] = 0x1F68; // GREEK CAPITAL LETTER OMEGA WITH PSILI
    3028           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3029           0 :         return;
    3030             :       case 0x1FA9: // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
    3031           0 :         elements[(*index)++] = 0x1F69; // GREEK CAPITAL LETTER OMEGA WITH DASIA
    3032           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3033           0 :         return;
    3034             :       case 0x1FAA: // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
    3035           0 :         elements[(*index)++] = 0x1F6A; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
    3036           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3037           0 :         return;
    3038             :       case 0x1FAB: // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
    3039           0 :         elements[(*index)++] = 0x1F6B; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
    3040           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3041           0 :         return;
    3042             :       case 0x1FAC: // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
    3043           0 :         elements[(*index)++] = 0x1F6C; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
    3044           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3045           0 :         return;
    3046             :       case 0x1FAD: // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
    3047           0 :         elements[(*index)++] = 0x1F6D; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
    3048           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3049           0 :         return;
    3050             :       case 0x1FAE: // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
    3051           0 :         elements[(*index)++] = 0x1F6E; // GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
    3052           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3053           0 :         return;
    3054             :       case 0x1FAF: // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
    3055           0 :         elements[(*index)++] = 0x1F6F; // GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
    3056           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3057           0 :         return;
    3058             :       case 0x1FB2: // GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
    3059           0 :         elements[(*index)++] = 0x1FBA; // GREEK CAPITAL LETTER ALPHA WITH VARIA
    3060           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3061           0 :         return;
    3062             :       case 0x1FB3: // GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
    3063           0 :         elements[(*index)++] = 0x0391; // GREEK CAPITAL LETTER ALPHA
    3064           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3065           0 :         return;
    3066             :       case 0x1FB4: // GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
    3067           0 :         elements[(*index)++] = 0x0386; // GREEK CAPITAL LETTER ALPHA WITH TONOS (GREEK CAPITAL LETTER ALPHA TONOS)
    3068           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3069           0 :         return;
    3070             :       case 0x1FB6: // GREEK SMALL LETTER ALPHA WITH PERISPOMENI
    3071           0 :         elements[(*index)++] = 0x0391; // GREEK CAPITAL LETTER ALPHA
    3072           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3073           0 :         return;
    3074             :       case 0x1FB7: // GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
    3075           0 :         elements[(*index)++] = 0x0391; // GREEK CAPITAL LETTER ALPHA
    3076           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3077           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3078           0 :         return;
    3079             :       case 0x1FBC: // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
    3080           0 :         elements[(*index)++] = 0x0391; // GREEK CAPITAL LETTER ALPHA
    3081           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3082           0 :         return;
    3083             :       case 0x1FC2: // GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
    3084           0 :         elements[(*index)++] = 0x1FCA; // GREEK CAPITAL LETTER ETA WITH VARIA
    3085           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3086           0 :         return;
    3087             :       case 0x1FC3: // GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
    3088           0 :         elements[(*index)++] = 0x0397; // GREEK CAPITAL LETTER ETA
    3089           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3090           0 :         return;
    3091             :       case 0x1FC4: // GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
    3092           0 :         elements[(*index)++] = 0x0389; // GREEK CAPITAL LETTER ETA WITH TONOS (GREEK CAPITAL LETTER ETA TONOS)
    3093           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3094           0 :         return;
    3095             :       case 0x1FC6: // GREEK SMALL LETTER ETA WITH PERISPOMENI
    3096           0 :         elements[(*index)++] = 0x0397; // GREEK CAPITAL LETTER ETA
    3097           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3098           0 :         return;
    3099             :       case 0x1FC7: // GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
    3100           0 :         elements[(*index)++] = 0x0397; // GREEK CAPITAL LETTER ETA
    3101           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3102           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3103           0 :         return;
    3104             :       case 0x1FCC: // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
    3105           0 :         elements[(*index)++] = 0x0397; // GREEK CAPITAL LETTER ETA
    3106           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3107           0 :         return;
    3108             :       case 0x1FD2: // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA
    3109           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3110           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    3111           0 :         elements[(*index)++] = 0x0300; // COMBINING GRAVE ACCENT (NON-SPACING GRAVE)
    3112           0 :         return;
    3113             :       case 0x1FD3: // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
    3114           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3115           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    3116           0 :         elements[(*index)++] = 0x0301; // COMBINING ACUTE ACCENT (NON-SPACING ACUTE)
    3117           0 :         return;
    3118             :       case 0x1FD6: // GREEK SMALL LETTER IOTA WITH PERISPOMENI
    3119           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3120           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3121           0 :         return;
    3122             :       case 0x1FD7: // GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
    3123           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3124           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    3125           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3126           0 :         return;
    3127             :       case 0x1FE2: // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA
    3128           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    3129           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    3130           0 :         elements[(*index)++] = 0x0300; // COMBINING GRAVE ACCENT (NON-SPACING GRAVE)
    3131           0 :         return;
    3132             :       case 0x1FE3: // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
    3133           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    3134           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    3135           0 :         elements[(*index)++] = 0x0301; // COMBINING ACUTE ACCENT (NON-SPACING ACUTE)
    3136           0 :         return;
    3137             :       case 0x1FE4: // GREEK SMALL LETTER RHO WITH PSILI
    3138           0 :         elements[(*index)++] = 0x03A1; // GREEK CAPITAL LETTER RHO
    3139           0 :         elements[(*index)++] = 0x0313; // COMBINING COMMA ABOVE (NON-SPACING COMMA ABOVE)
    3140           0 :         return;
    3141             :       case 0x1FE6: // GREEK SMALL LETTER UPSILON WITH PERISPOMENI
    3142           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    3143           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3144           0 :         return;
    3145             :       case 0x1FE7: // GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
    3146           0 :         elements[(*index)++] = 0x03A5; // GREEK CAPITAL LETTER UPSILON
    3147           0 :         elements[(*index)++] = 0x0308; // COMBINING DIAERESIS (NON-SPACING DIAERESIS)
    3148           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3149           0 :         return;
    3150             :       case 0x1FF2: // GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
    3151           0 :         elements[(*index)++] = 0x1FFA; // GREEK CAPITAL LETTER OMEGA WITH VARIA
    3152           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3153           0 :         return;
    3154             :       case 0x1FF3: // GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
    3155           0 :         elements[(*index)++] = 0x03A9; // GREEK CAPITAL LETTER OMEGA
    3156           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3157           0 :         return;
    3158             :       case 0x1FF4: // GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
    3159           0 :         elements[(*index)++] = 0x038F; // GREEK CAPITAL LETTER OMEGA WITH TONOS (GREEK CAPITAL LETTER OMEGA TONOS)
    3160           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3161           0 :         return;
    3162             :       case 0x1FF6: // GREEK SMALL LETTER OMEGA WITH PERISPOMENI
    3163           0 :         elements[(*index)++] = 0x03A9; // GREEK CAPITAL LETTER OMEGA
    3164           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3165           0 :         return;
    3166             :       case 0x1FF7: // GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
    3167           0 :         elements[(*index)++] = 0x03A9; // GREEK CAPITAL LETTER OMEGA
    3168           0 :         elements[(*index)++] = 0x0342; // COMBINING GREEK PERISPOMENI
    3169           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3170           0 :         return;
    3171             :       case 0x1FFC: // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
    3172           0 :         elements[(*index)++] = 0x03A9; // GREEK CAPITAL LETTER OMEGA
    3173           0 :         elements[(*index)++] = 0x0399; // GREEK CAPITAL LETTER IOTA
    3174           0 :         return;
    3175             :       case 0xFB00: // LATIN SMALL LIGATURE FF
    3176           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3177           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3178           0 :         return;
    3179             :       case 0xFB01: // LATIN SMALL LIGATURE FI
    3180           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3181           0 :         elements[(*index)++] = 0x0049; // LATIN CAPITAL LETTER I
    3182           0 :         return;
    3183             :       case 0xFB02: // LATIN SMALL LIGATURE FL
    3184           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3185           0 :         elements[(*index)++] = 0x004C; // LATIN CAPITAL LETTER L
    3186           0 :         return;
    3187             :       case 0xFB03: // LATIN SMALL LIGATURE FFI
    3188           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3189           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3190           0 :         elements[(*index)++] = 0x0049; // LATIN CAPITAL LETTER I
    3191           0 :         return;
    3192             :       case 0xFB04: // LATIN SMALL LIGATURE FFL
    3193           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3194           0 :         elements[(*index)++] = 0x0046; // LATIN CAPITAL LETTER F
    3195           0 :         elements[(*index)++] = 0x004C; // LATIN CAPITAL LETTER L
    3196           0 :         return;
    3197             :       case 0xFB05: // LATIN SMALL LIGATURE LONG S T
    3198           0 :         elements[(*index)++] = 0x0053; // LATIN CAPITAL LETTER S
    3199           0 :         elements[(*index)++] = 0x0054; // LATIN CAPITAL LETTER T
    3200           0 :         return;
    3201             :       case 0xFB06: // LATIN SMALL LIGATURE ST
    3202           0 :         elements[(*index)++] = 0x0053; // LATIN CAPITAL LETTER S
    3203           0 :         elements[(*index)++] = 0x0054; // LATIN CAPITAL LETTER T
    3204           0 :         return;
    3205             :       case 0xFB13: // ARMENIAN SMALL LIGATURE MEN NOW
    3206           0 :         elements[(*index)++] = 0x0544; // ARMENIAN CAPITAL LETTER MEN
    3207           0 :         elements[(*index)++] = 0x0546; // ARMENIAN CAPITAL LETTER NOW
    3208           0 :         return;
    3209             :       case 0xFB14: // ARMENIAN SMALL LIGATURE MEN ECH
    3210           0 :         elements[(*index)++] = 0x0544; // ARMENIAN CAPITAL LETTER MEN
    3211           0 :         elements[(*index)++] = 0x0535; // ARMENIAN CAPITAL LETTER ECH
    3212           0 :         return;
    3213             :       case 0xFB15: // ARMENIAN SMALL LIGATURE MEN INI
    3214           0 :         elements[(*index)++] = 0x0544; // ARMENIAN CAPITAL LETTER MEN
    3215           0 :         elements[(*index)++] = 0x053B; // ARMENIAN CAPITAL LETTER INI
    3216           0 :         return;
    3217             :       case 0xFB16: // ARMENIAN SMALL LIGATURE VEW NOW
    3218           0 :         elements[(*index)++] = 0x054E; // ARMENIAN CAPITAL LETTER VEW
    3219           0 :         elements[(*index)++] = 0x0546; // ARMENIAN CAPITAL LETTER NOW
    3220           0 :         return;
    3221             :       case 0xFB17: // ARMENIAN SMALL LIGATURE MEN XEH
    3222           0 :         elements[(*index)++] = 0x0544; // ARMENIAN CAPITAL LETTER MEN
    3223           0 :         elements[(*index)++] = 0x053D; // ARMENIAN CAPITAL LETTER XEH
    3224           0 :         return;
    3225             :     }
    3226             : 
    3227           0 :     MOZ_ASSERT_UNREACHABLE("Bad character input.");
    3228             :     return;
    3229             : }

Generated by: LCOV version 1.13