Home | History | Annotate | Download | only in harfbuzz
      1 
      2 #line 1 "hb-ot-shape-complex-indic-machine.rl"
      3 /*
      4  * Copyright  2011,2012  Google, Inc.
      5  *
      6  *  This is part of HarfBuzz, a text shaping library.
      7  *
      8  * Permission is hereby granted, without written agreement and without
      9  * license or royalty fees, to use, copy, modify, and distribute this
     10  * software and its documentation for any purpose, provided that the
     11  * above copyright notice and the following two paragraphs appear in
     12  * all copies of this software.
     13  *
     14  * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
     15  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
     16  * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
     17  * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
     18  * DAMAGE.
     19  *
     20  * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
     21  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
     22  * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
     23  * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
     24  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
     25  *
     26  * Google Author(s): Behdad Esfahbod
     27  */
     28 
     29 #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
     30 #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH
     31 
     32 #include "hb.hh"
     33 
     34 
     35 #line 36 "hb-ot-shape-complex-indic-machine.hh"
     36 static const unsigned char _indic_syllable_machine_trans_keys[] = {
     37 	8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
     38 	5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u,
     39 	4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u,
     40 	16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u,
     41 	4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
     42 	7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u,
     43 	6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
     44 	4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u,
     45 	4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u,
     46 	5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u,
     47 	7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u,
     48 	6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u,
     49 	4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 8u, 8u, 4u, 8u, 5u, 7u,
     50 	7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u,
     51 	5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u,
     52 	4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u,
     53 	4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 13u,
     54 	5u, 8u, 8u, 8u, 1u, 19u, 3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u,
     55 	3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u,
     56 	3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 5u, 10u, 5u, 10u,
     57 	5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u,
     58 	4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u,
     59 	3u, 10u, 4u, 10u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u,
     60 	3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u,
     61 	1u, 16u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u,
     62 	3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u,
     63 	3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u,
     64 	3u, 13u, 3u, 10u, 4u, 10u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u,
     65 	10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u,
     66 	4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 3u, 10u,
     67 	3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u,
     68 	1u, 16u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u,
     69 	1u, 16u, 1u, 16u, 1u, 16u, 4u, 8u, 3u, 10u, 3u, 10u, 4u, 10u, 1u, 16u,
     70 	3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u,
     71 	3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 5u, 10u,
     72 	5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u,
     73 	3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u,
     74 	5u, 10u, 3u, 10u, 4u, 10u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u,
     75 	3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u, 1u, 16u,
     76 	1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 13u,
     77 	3u, 10u, 4u, 8u, 3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u,
     78 	4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u,
     79 	4u, 10u, 1u, 16u, 3u, 13u, 3u, 10u, 4u, 10u, 5u, 10u, 5u, 10u, 5u, 10u,
     80 	10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u,
     81 	5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u,
     82 	4u, 10u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u,
     83 	1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u,
     84 	3u, 10u, 3u, 13u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 10u, 1u, 16u, 3u, 13u,
     85 	1u, 16u, 4u, 13u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u,
     86 	3u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u,
     87 	0
     88 };
     89 
     90 static const char _indic_syllable_machine_key_spans[] = {
     91 	1, 5, 3, 1, 4, 3, 1, 4,
     92 	3, 1, 4, 3, 1, 5, 1, 1,
     93 	5, 1, 1, 5, 1, 1, 5, 1,
     94 	1, 10, 5, 10, 5, 10, 5, 10,
     95 	5, 10, 1, 5, 3, 1, 4, 3,
     96 	1, 4, 3, 1, 4, 3, 1, 5,
     97 	1, 1, 5, 1, 1, 5, 1, 1,
     98 	5, 1, 1, 10, 5, 10, 5, 10,
     99 	5, 10, 5, 10, 1, 5, 3, 1,
    100 	4, 3, 1, 4, 3, 1, 4, 3,
    101 	1, 5, 1, 1, 5, 1, 1, 5,
    102 	1, 1, 5, 1, 1, 10, 5, 10,
    103 	5, 10, 5, 10, 5, 1, 5, 3,
    104 	1, 4, 3, 1, 4, 3, 1, 4,
    105 	3, 1, 5, 1, 1, 5, 1, 1,
    106 	5, 1, 1, 5, 1, 1, 10, 5,
    107 	10, 5, 10, 5, 10, 5, 10, 10,
    108 	4, 1, 19, 11, 8, 7, 16, 11,
    109 	8, 7, 16, 11, 8, 7, 16, 11,
    110 	8, 7, 16, 11, 8, 7, 6, 6,
    111 	6, 1, 1, 1, 6, 8, 6, 8,
    112 	7, 6, 8, 7, 6, 8, 7, 6,
    113 	8, 7, 8, 11, 16, 16, 16, 8,
    114 	11, 16, 16, 16, 8, 11, 16, 16,
    115 	16, 8, 11, 16, 16, 16, 8, 11,
    116 	11, 8, 7, 16, 11, 8, 7, 16,
    117 	11, 8, 7, 16, 11, 8, 7, 16,
    118 	11, 8, 7, 6, 6, 6, 1, 1,
    119 	1, 6, 8, 6, 8, 7, 6, 8,
    120 	7, 6, 8, 7, 6, 8, 7, 8,
    121 	11, 16, 16, 16, 8, 11, 16, 16,
    122 	16, 8, 11, 16, 16, 16, 8, 11,
    123 	16, 16, 16, 5, 8, 8, 7, 16,
    124 	11, 8, 7, 16, 11, 8, 7, 16,
    125 	11, 8, 7, 16, 11, 8, 7, 6,
    126 	6, 6, 1, 1, 1, 6, 8, 6,
    127 	8, 7, 6, 8, 7, 6, 8, 7,
    128 	6, 8, 7, 8, 11, 16, 16, 16,
    129 	8, 11, 16, 16, 16, 8, 11, 16,
    130 	16, 16, 8, 11, 16, 16, 16, 10,
    131 	8, 5, 11, 8, 7, 16, 11, 8,
    132 	7, 16, 11, 8, 7, 16, 11, 8,
    133 	7, 16, 11, 8, 7, 6, 6, 6,
    134 	1, 1, 1, 6, 8, 6, 8, 7,
    135 	6, 8, 7, 6, 8, 7, 6, 8,
    136 	7, 8, 11, 16, 16, 16, 8, 11,
    137 	16, 16, 16, 8, 11, 16, 16, 16,
    138 	8, 11, 16, 16, 16, 8, 16, 11,
    139 	16, 10, 6, 1, 1, 1, 6, 16,
    140 	8, 6, 6, 1, 1, 1, 6, 16
    141 };
    142 
    143 static const short _indic_syllable_machine_index_offsets[] = {
    144 	0, 2, 8, 12, 14, 19, 23, 25,
    145 	30, 34, 36, 41, 45, 47, 53, 55,
    146 	57, 63, 65, 67, 73, 75, 77, 83,
    147 	85, 87, 98, 104, 115, 121, 132, 138,
    148 	149, 155, 166, 168, 174, 178, 180, 185,
    149 	189, 191, 196, 200, 202, 207, 211, 213,
    150 	219, 221, 223, 229, 231, 233, 239, 241,
    151 	243, 249, 251, 253, 264, 270, 281, 287,
    152 	298, 304, 315, 321, 332, 334, 340, 344,
    153 	346, 351, 355, 357, 362, 366, 368, 373,
    154 	377, 379, 385, 387, 389, 395, 397, 399,
    155 	405, 407, 409, 415, 417, 419, 430, 436,
    156 	447, 453, 464, 470, 481, 487, 489, 495,
    157 	499, 501, 506, 510, 512, 517, 521, 523,
    158 	528, 532, 534, 540, 542, 544, 550, 552,
    159 	554, 560, 562, 564, 570, 572, 574, 585,
    160 	591, 602, 608, 619, 625, 636, 642, 653,
    161 	664, 669, 671, 691, 703, 712, 720, 737,
    162 	749, 758, 766, 783, 795, 804, 812, 829,
    163 	841, 850, 858, 875, 887, 896, 904, 911,
    164 	918, 925, 927, 929, 931, 938, 947, 954,
    165 	963, 971, 978, 987, 995, 1002, 1011, 1019,
    166 	1026, 1035, 1043, 1052, 1064, 1081, 1098, 1115,
    167 	1124, 1136, 1153, 1170, 1187, 1196, 1208, 1225,
    168 	1242, 1259, 1268, 1280, 1297, 1314, 1331, 1340,
    169 	1352, 1364, 1373, 1381, 1398, 1410, 1419, 1427,
    170 	1444, 1456, 1465, 1473, 1490, 1502, 1511, 1519,
    171 	1536, 1548, 1557, 1565, 1572, 1579, 1586, 1588,
    172 	1590, 1592, 1599, 1608, 1615, 1624, 1632, 1639,
    173 	1648, 1656, 1663, 1672, 1680, 1687, 1696, 1704,
    174 	1713, 1725, 1742, 1759, 1776, 1785, 1797, 1814,
    175 	1831, 1848, 1857, 1869, 1886, 1903, 1920, 1929,
    176 	1941, 1958, 1975, 1992, 1998, 2007, 2016, 2024,
    177 	2041, 2053, 2062, 2070, 2087, 2099, 2108, 2116,
    178 	2133, 2145, 2154, 2162, 2179, 2191, 2200, 2208,
    179 	2215, 2222, 2229, 2231, 2233, 2235, 2242, 2251,
    180 	2258, 2267, 2275, 2282, 2291, 2299, 2306, 2315,
    181 	2323, 2330, 2339, 2347, 2356, 2368, 2385, 2402,
    182 	2419, 2428, 2440, 2457, 2474, 2491, 2500, 2512,
    183 	2529, 2546, 2563, 2572, 2584, 2601, 2618, 2635,
    184 	2646, 2655, 2661, 2673, 2682, 2690, 2707, 2719,
    185 	2728, 2736, 2753, 2765, 2774, 2782, 2799, 2811,
    186 	2820, 2828, 2845, 2857, 2866, 2874, 2881, 2888,
    187 	2895, 2897, 2899, 2901, 2908, 2917, 2924, 2933,
    188 	2941, 2948, 2957, 2965, 2972, 2981, 2989, 2996,
    189 	3005, 3013, 3022, 3034, 3051, 3068, 3085, 3094,
    190 	3106, 3123, 3140, 3157, 3166, 3178, 3195, 3212,
    191 	3229, 3238, 3250, 3267, 3284, 3301, 3310, 3327,
    192 	3339, 3356, 3367, 3374, 3376, 3378, 3380, 3387,
    193 	3404, 3413, 3420, 3427, 3429, 3431, 3433, 3440
    194 };
    195 
    196 static const short _indic_syllable_machine_indicies[] = {
    197 	1, 0, 2, 3, 3, 4, 1, 0,
    198 	5, 5, 4, 0, 4, 0, 6, 6,
    199 	7, 1, 0, 8, 8, 7, 0, 7,
    200 	0, 9, 9, 10, 1, 0, 11, 11,
    201 	10, 0, 10, 0, 12, 12, 13, 1,
    202 	0, 14, 14, 13, 0, 13, 0, 15,
    203 	0, 0, 0, 1, 0, 16, 0, 17,
    204 	0, 18, 12, 12, 13, 1, 0, 19,
    205 	0, 20, 0, 21, 9, 9, 10, 1,
    206 	0, 22, 0, 23, 0, 24, 6, 6,
    207 	7, 1, 0, 25, 0, 26, 0, 2,
    208 	3, 3, 4, 1, 0, 0, 0, 0,
    209 	27, 0, 28, 3, 3, 4, 1, 0,
    210 	28, 3, 3, 4, 1, 0, 0, 0,
    211 	0, 29, 0, 30, 3, 3, 4, 1,
    212 	0, 30, 3, 3, 4, 1, 0, 0,
    213 	0, 0, 31, 0, 32, 3, 3, 4,
    214 	1, 0, 32, 3, 3, 4, 1, 0,
    215 	0, 0, 0, 33, 0, 34, 3, 3,
    216 	4, 1, 0, 34, 3, 3, 4, 1,
    217 	0, 0, 0, 0, 35, 0, 37, 36,
    218 	38, 39, 39, 40, 37, 36, 41, 41,
    219 	40, 36, 40, 36, 42, 42, 43, 37,
    220 	36, 44, 44, 43, 36, 43, 36, 45,
    221 	45, 46, 37, 36, 47, 47, 46, 36,
    222 	46, 36, 48, 48, 49, 37, 36, 50,
    223 	50, 49, 36, 49, 36, 51, 36, 36,
    224 	36, 37, 36, 52, 36, 53, 36, 54,
    225 	48, 48, 49, 37, 36, 55, 36, 56,
    226 	36, 57, 45, 45, 46, 37, 36, 58,
    227 	36, 59, 36, 60, 42, 42, 43, 37,
    228 	36, 61, 36, 62, 36, 38, 39, 39,
    229 	40, 37, 36, 36, 36, 36, 63, 36,
    230 	64, 39, 39, 40, 37, 36, 64, 39,
    231 	39, 40, 37, 36, 36, 36, 36, 65,
    232 	36, 66, 39, 39, 40, 37, 36, 66,
    233 	39, 39, 40, 37, 36, 36, 36, 36,
    234 	67, 36, 68, 39, 39, 40, 37, 36,
    235 	68, 39, 39, 40, 37, 36, 36, 36,
    236 	36, 69, 36, 70, 39, 39, 40, 37,
    237 	36, 70, 39, 39, 40, 37, 36, 36,
    238 	36, 36, 71, 36, 73, 72, 74, 75,
    239 	75, 76, 73, 72, 78, 78, 76, 77,
    240 	76, 77, 79, 79, 80, 73, 72, 81,
    241 	81, 80, 72, 80, 72, 82, 82, 83,
    242 	73, 72, 84, 84, 83, 72, 83, 72,
    243 	85, 85, 86, 73, 72, 87, 87, 86,
    244 	72, 86, 72, 88, 72, 72, 72, 73,
    245 	72, 89, 72, 90, 72, 91, 85, 85,
    246 	86, 73, 72, 92, 72, 93, 72, 94,
    247 	82, 82, 83, 73, 72, 95, 72, 96,
    248 	72, 97, 79, 79, 80, 73, 72, 98,
    249 	72, 99, 72, 74, 75, 75, 76, 73,
    250 	72, 72, 72, 72, 100, 72, 101, 75,
    251 	75, 76, 73, 72, 101, 75, 75, 76,
    252 	73, 72, 72, 72, 72, 102, 72, 103,
    253 	75, 75, 76, 73, 72, 103, 75, 75,
    254 	76, 73, 72, 72, 72, 72, 104, 72,
    255 	105, 75, 75, 76, 73, 72, 105, 75,
    256 	75, 76, 73, 72, 72, 72, 72, 106,
    257 	72, 107, 75, 75, 76, 73, 72, 109,
    258 	108, 110, 111, 111, 112, 109, 108, 113,
    259 	113, 112, 108, 112, 108, 114, 114, 115,
    260 	109, 108, 116, 116, 115, 108, 115, 108,
    261 	117, 117, 118, 109, 108, 119, 119, 118,
    262 	108, 118, 108, 120, 120, 121, 109, 108,
    263 	122, 122, 121, 108, 121, 108, 123, 108,
    264 	108, 108, 109, 108, 124, 108, 125, 108,
    265 	126, 120, 120, 121, 109, 108, 127, 108,
    266 	128, 108, 129, 117, 117, 118, 109, 108,
    267 	130, 108, 131, 108, 132, 114, 114, 115,
    268 	109, 108, 133, 108, 134, 108, 110, 111,
    269 	111, 112, 109, 108, 108, 108, 108, 135,
    270 	108, 136, 111, 111, 112, 109, 108, 136,
    271 	111, 111, 112, 109, 108, 108, 108, 108,
    272 	137, 108, 138, 111, 111, 112, 109, 108,
    273 	138, 111, 111, 112, 109, 108, 108, 108,
    274 	108, 139, 108, 140, 111, 111, 112, 109,
    275 	108, 140, 111, 111, 112, 109, 108, 108,
    276 	108, 108, 141, 108, 142, 111, 111, 112,
    277 	109, 108, 142, 111, 111, 112, 109, 108,
    278 	108, 108, 108, 143, 108, 107, 75, 75,
    279 	76, 73, 72, 72, 72, 72, 144, 72,
    280 	78, 78, 76, 1, 0, 146, 145, 148,
    281 	149, 150, 151, 152, 153, 76, 73, 147,
    282 	154, 155, 155, 144, 147, 156, 157, 147,
    283 	158, 159, 147, 161, 162, 163, 164, 4,
    284 	1, 160, 165, 160, 160, 35, 160, 166,
    285 	162, 167, 167, 4, 1, 160, 165, 160,
    286 	162, 167, 167, 4, 1, 160, 165, 160,
    287 	168, 160, 160, 160, 17, 169, 160, 1,
    288 	160, 165, 160, 160, 160, 160, 160, 168,
    289 	160, 170, 171, 172, 173, 4, 1, 160,
    290 	165, 160, 160, 33, 160, 174, 171, 175,
    291 	175, 4, 1, 160, 165, 160, 171, 175,
    292 	175, 4, 1, 160, 165, 160, 176, 160,
    293 	160, 160, 17, 177, 160, 1, 160, 165,
    294 	160, 160, 160, 160, 160, 176, 160, 178,
    295 	179, 180, 181, 4, 1, 160, 165, 160,
    296 	160, 31, 160, 182, 179, 183, 183, 4,
    297 	1, 160, 165, 160, 179, 183, 183, 4,
    298 	1, 160, 165, 160, 184, 160, 160, 160,
    299 	17, 185, 160, 1, 160, 165, 160, 160,
    300 	160, 160, 160, 184, 160, 186, 187, 188,
    301 	189, 4, 1, 160, 165, 160, 160, 29,
    302 	160, 190, 187, 191, 191, 4, 1, 160,
    303 	165, 160, 187, 191, 191, 4, 1, 160,
    304 	165, 160, 192, 160, 160, 160, 17, 193,
    305 	160, 1, 160, 165, 160, 160, 160, 160,
    306 	160, 192, 160, 194, 195, 196, 197, 4,
    307 	1, 160, 165, 160, 160, 27, 160, 198,
    308 	195, 199, 199, 4, 1, 160, 165, 160,
    309 	195, 199, 199, 4, 1, 160, 165, 160,
    310 	17, 200, 160, 1, 160, 165, 160, 201,
    311 	201, 160, 1, 160, 165, 160, 202, 160,
    312 	160, 203, 160, 165, 160, 165, 160, 204,
    313 	160, 205, 160, 202, 160, 160, 160, 160,
    314 	165, 160, 17, 160, 201, 201, 160, 1,
    315 	160, 165, 160, 201, 200, 160, 1, 160,
    316 	165, 160, 206, 26, 207, 208, 7, 1,
    317 	160, 165, 160, 26, 207, 208, 7, 1,
    318 	160, 165, 160, 207, 207, 7, 1, 160,
    319 	165, 160, 209, 23, 210, 211, 10, 1,
    320 	160, 165, 160, 23, 210, 211, 10, 1,
    321 	160, 165, 160, 210, 210, 10, 1, 160,
    322 	165, 160, 212, 20, 213, 214, 13, 1,
    323 	160, 165, 160, 20, 213, 214, 13, 1,
    324 	160, 165, 160, 213, 213, 13, 1, 160,
    325 	165, 160, 215, 17, 201, 216, 160, 1,
    326 	160, 165, 160, 17, 201, 216, 160, 1,
    327 	160, 165, 160, 194, 195, 199, 199, 4,
    328 	1, 160, 165, 160, 194, 195, 196, 199,
    329 	4, 1, 160, 165, 160, 160, 27, 160,
    330 	192, 160, 217, 160, 201, 201, 160, 1,
    331 	160, 165, 160, 160, 160, 160, 160, 192,
    332 	160, 192, 160, 160, 160, 201, 201, 160,
    333 	1, 160, 165, 160, 160, 160, 160, 160,
    334 	192, 160, 192, 160, 160, 160, 201, 193,
    335 	160, 1, 160, 165, 160, 160, 160, 160,
    336 	160, 192, 160, 186, 187, 191, 191, 4,
    337 	1, 160, 165, 160, 186, 187, 188, 191,
    338 	4, 1, 160, 165, 160, 160, 29, 160,
    339 	184, 160, 218, 160, 201, 201, 160, 1,
    340 	160, 165, 160, 160, 160, 160, 160, 184,
    341 	160, 184, 160, 160, 160, 201, 201, 160,
    342 	1, 160, 165, 160, 160, 160, 160, 160,
    343 	184, 160, 184, 160, 160, 160, 201, 185,
    344 	160, 1, 160, 165, 160, 160, 160, 160,
    345 	160, 184, 160, 178, 179, 183, 183, 4,
    346 	1, 160, 165, 160, 178, 179, 180, 183,
    347 	4, 1, 160, 165, 160, 160, 31, 160,
    348 	176, 160, 219, 160, 201, 201, 160, 1,
    349 	160, 165, 160, 160, 160, 160, 160, 176,
    350 	160, 176, 160, 160, 160, 201, 201, 160,
    351 	1, 160, 165, 160, 160, 160, 160, 160,
    352 	176, 160, 176, 160, 160, 160, 201, 177,
    353 	160, 1, 160, 165, 160, 160, 160, 160,
    354 	160, 176, 160, 170, 171, 175, 175, 4,
    355 	1, 160, 165, 160, 170, 171, 172, 175,
    356 	4, 1, 160, 165, 160, 160, 33, 160,
    357 	168, 160, 220, 160, 201, 201, 160, 1,
    358 	160, 165, 160, 160, 160, 160, 160, 168,
    359 	160, 168, 160, 160, 160, 201, 201, 160,
    360 	1, 160, 165, 160, 160, 160, 160, 160,
    361 	168, 160, 168, 160, 160, 160, 201, 169,
    362 	160, 1, 160, 165, 160, 160, 160, 160,
    363 	160, 168, 160, 161, 162, 167, 167, 4,
    364 	1, 160, 165, 160, 161, 162, 163, 167,
    365 	4, 1, 160, 165, 160, 160, 35, 160,
    366 	222, 223, 224, 225, 40, 37, 221, 226,
    367 	221, 221, 71, 221, 227, 223, 228, 225,
    368 	40, 37, 221, 226, 221, 223, 228, 225,
    369 	40, 37, 221, 226, 221, 229, 221, 221,
    370 	221, 53, 230, 221, 37, 221, 226, 221,
    371 	221, 221, 221, 221, 229, 221, 231, 232,
    372 	233, 234, 40, 37, 221, 226, 221, 221,
    373 	69, 221, 235, 232, 236, 236, 40, 37,
    374 	221, 226, 221, 232, 236, 236, 40, 37,
    375 	221, 226, 221, 237, 221, 221, 221, 53,
    376 	238, 221, 37, 221, 226, 221, 221, 221,
    377 	221, 221, 237, 221, 239, 240, 241, 242,
    378 	40, 37, 221, 226, 221, 221, 67, 221,
    379 	243, 240, 244, 244, 40, 37, 221, 226,
    380 	221, 240, 244, 244, 40, 37, 221, 226,
    381 	221, 245, 221, 221, 221, 53, 246, 221,
    382 	37, 221, 226, 221, 221, 221, 221, 221,
    383 	245, 221, 247, 248, 249, 250, 40, 37,
    384 	221, 226, 221, 221, 65, 221, 251, 248,
    385 	252, 252, 40, 37, 221, 226, 221, 248,
    386 	252, 252, 40, 37, 221, 226, 221, 253,
    387 	221, 221, 221, 53, 254, 221, 37, 221,
    388 	226, 221, 221, 221, 221, 221, 253, 221,
    389 	255, 256, 257, 258, 40, 37, 221, 226,
    390 	221, 221, 63, 221, 259, 256, 260, 260,
    391 	40, 37, 221, 226, 221, 256, 260, 260,
    392 	40, 37, 221, 226, 221, 53, 261, 221,
    393 	37, 221, 226, 221, 262, 262, 221, 37,
    394 	221, 226, 221, 263, 221, 221, 264, 221,
    395 	226, 221, 226, 221, 265, 221, 266, 221,
    396 	263, 221, 221, 221, 221, 226, 221, 53,
    397 	221, 262, 262, 221, 37, 221, 226, 221,
    398 	262, 261, 221, 37, 221, 226, 221, 267,
    399 	62, 268, 269, 43, 37, 221, 226, 221,
    400 	62, 268, 269, 43, 37, 221, 226, 221,
    401 	268, 268, 43, 37, 221, 226, 221, 270,
    402 	59, 271, 272, 46, 37, 221, 226, 221,
    403 	59, 271, 272, 46, 37, 221, 226, 221,
    404 	271, 271, 46, 37, 221, 226, 221, 273,
    405 	56, 274, 275, 49, 37, 221, 226, 221,
    406 	56, 274, 275, 49, 37, 221, 226, 221,
    407 	274, 274, 49, 37, 221, 226, 221, 276,
    408 	53, 262, 277, 221, 37, 221, 226, 221,
    409 	53, 262, 277, 221, 37, 221, 226, 221,
    410 	255, 256, 260, 260, 40, 37, 221, 226,
    411 	221, 255, 256, 257, 260, 40, 37, 221,
    412 	226, 221, 221, 63, 221, 253, 221, 278,
    413 	221, 262, 262, 221, 37, 221, 226, 221,
    414 	221, 221, 221, 221, 253, 221, 253, 221,
    415 	221, 221, 262, 262, 221, 37, 221, 226,
    416 	221, 221, 221, 221, 221, 253, 221, 253,
    417 	221, 221, 221, 262, 254, 221, 37, 221,
    418 	226, 221, 221, 221, 221, 221, 253, 221,
    419 	247, 248, 252, 252, 40, 37, 221, 226,
    420 	221, 247, 248, 249, 252, 40, 37, 221,
    421 	226, 221, 221, 65, 221, 245, 221, 279,
    422 	221, 262, 262, 221, 37, 221, 226, 221,
    423 	221, 221, 221, 221, 245, 221, 245, 221,
    424 	221, 221, 262, 262, 221, 37, 221, 226,
    425 	221, 221, 221, 221, 221, 245, 221, 245,
    426 	221, 221, 221, 262, 246, 221, 37, 221,
    427 	226, 221, 221, 221, 221, 221, 245, 221,
    428 	239, 240, 244, 244, 40, 37, 221, 226,
    429 	221, 239, 240, 241, 244, 40, 37, 221,
    430 	226, 221, 221, 67, 221, 237, 221, 280,
    431 	221, 262, 262, 221, 37, 221, 226, 221,
    432 	221, 221, 221, 221, 237, 221, 237, 221,
    433 	221, 221, 262, 262, 221, 37, 221, 226,
    434 	221, 221, 221, 221, 221, 237, 221, 237,
    435 	221, 221, 221, 262, 238, 221, 37, 221,
    436 	226, 221, 221, 221, 221, 221, 237, 221,
    437 	231, 232, 236, 236, 40, 37, 221, 226,
    438 	221, 231, 232, 233, 236, 40, 37, 221,
    439 	226, 221, 221, 69, 221, 229, 221, 281,
    440 	221, 262, 262, 221, 37, 221, 226, 221,
    441 	221, 221, 221, 221, 229, 221, 229, 221,
    442 	221, 221, 262, 262, 221, 37, 221, 226,
    443 	221, 221, 221, 221, 221, 229, 221, 229,
    444 	221, 221, 221, 262, 230, 221, 37, 221,
    445 	226, 221, 221, 221, 221, 221, 229, 221,
    446 	70, 39, 39, 40, 37, 221, 222, 223,
    447 	228, 225, 40, 37, 221, 226, 221, 283,
    448 	151, 284, 284, 76, 73, 282, 154, 282,
    449 	151, 284, 284, 76, 73, 282, 154, 282,
    450 	285, 282, 282, 282, 90, 286, 282, 73,
    451 	282, 154, 282, 282, 282, 282, 282, 285,
    452 	282, 287, 288, 289, 290, 76, 73, 282,
    453 	154, 282, 282, 106, 282, 291, 288, 292,
    454 	292, 76, 73, 282, 154, 282, 288, 292,
    455 	292, 76, 73, 282, 154, 282, 293, 282,
    456 	282, 282, 90, 294, 282, 73, 282, 154,
    457 	282, 282, 282, 282, 282, 293, 282, 295,
    458 	296, 297, 298, 76, 73, 282, 154, 282,
    459 	282, 104, 282, 299, 296, 300, 300, 76,
    460 	73, 282, 154, 282, 296, 300, 300, 76,
    461 	73, 282, 154, 282, 301, 282, 282, 282,
    462 	90, 302, 282, 73, 282, 154, 282, 282,
    463 	282, 282, 282, 301, 282, 303, 304, 305,
    464 	306, 76, 73, 282, 154, 282, 282, 102,
    465 	282, 307, 304, 308, 308, 76, 73, 282,
    466 	154, 282, 304, 308, 308, 76, 73, 282,
    467 	154, 282, 309, 282, 282, 282, 90, 310,
    468 	282, 73, 282, 154, 282, 282, 282, 282,
    469 	282, 309, 282, 311, 312, 313, 314, 76,
    470 	73, 282, 154, 282, 282, 100, 282, 315,
    471 	312, 316, 316, 76, 73, 282, 154, 282,
    472 	312, 316, 316, 76, 73, 282, 154, 282,
    473 	90, 317, 282, 73, 282, 154, 282, 318,
    474 	318, 282, 73, 282, 154, 282, 319, 282,
    475 	282, 320, 282, 154, 282, 154, 282, 321,
    476 	282, 322, 282, 319, 282, 282, 282, 282,
    477 	154, 282, 90, 282, 318, 318, 282, 73,
    478 	282, 154, 282, 318, 317, 282, 73, 282,
    479 	154, 282, 323, 99, 324, 325, 80, 73,
    480 	282, 154, 282, 99, 324, 325, 80, 73,
    481 	282, 154, 282, 324, 324, 80, 73, 282,
    482 	154, 282, 326, 96, 327, 328, 83, 73,
    483 	282, 154, 282, 96, 327, 328, 83, 73,
    484 	282, 154, 282, 327, 327, 83, 73, 282,
    485 	154, 282, 329, 93, 330, 331, 86, 73,
    486 	282, 154, 282, 93, 330, 331, 86, 73,
    487 	282, 154, 282, 330, 330, 86, 73, 282,
    488 	154, 282, 332, 90, 318, 333, 282, 73,
    489 	282, 154, 282, 90, 318, 333, 282, 73,
    490 	282, 154, 282, 311, 312, 316, 316, 76,
    491 	73, 282, 154, 282, 311, 312, 313, 316,
    492 	76, 73, 282, 154, 282, 282, 100, 282,
    493 	309, 282, 334, 282, 318, 318, 282, 73,
    494 	282, 154, 282, 282, 282, 282, 282, 309,
    495 	282, 309, 282, 282, 282, 318, 318, 282,
    496 	73, 282, 154, 282, 282, 282, 282, 282,
    497 	309, 282, 309, 282, 282, 282, 318, 310,
    498 	282, 73, 282, 154, 282, 282, 282, 282,
    499 	282, 309, 282, 303, 304, 308, 308, 76,
    500 	73, 282, 154, 282, 303, 304, 305, 308,
    501 	76, 73, 282, 154, 282, 282, 102, 282,
    502 	301, 282, 335, 282, 318, 318, 282, 73,
    503 	282, 154, 282, 282, 282, 282, 282, 301,
    504 	282, 301, 282, 282, 282, 318, 318, 282,
    505 	73, 282, 154, 282, 282, 282, 282, 282,
    506 	301, 282, 301, 282, 282, 282, 318, 302,
    507 	282, 73, 282, 154, 282, 282, 282, 282,
    508 	282, 301, 282, 295, 296, 300, 300, 76,
    509 	73, 282, 154, 282, 295, 296, 297, 300,
    510 	76, 73, 282, 154, 282, 282, 104, 282,
    511 	293, 282, 336, 282, 318, 318, 282, 73,
    512 	282, 154, 282, 282, 282, 282, 282, 293,
    513 	282, 293, 282, 282, 282, 318, 318, 282,
    514 	73, 282, 154, 282, 282, 282, 282, 282,
    515 	293, 282, 293, 282, 282, 282, 318, 294,
    516 	282, 73, 282, 154, 282, 282, 282, 282,
    517 	282, 293, 282, 287, 288, 292, 292, 76,
    518 	73, 282, 154, 282, 287, 288, 289, 292,
    519 	76, 73, 282, 154, 282, 282, 106, 282,
    520 	285, 282, 337, 282, 318, 318, 282, 73,
    521 	282, 154, 282, 282, 282, 282, 282, 285,
    522 	282, 285, 282, 282, 282, 318, 318, 282,
    523 	73, 282, 154, 282, 282, 282, 282, 282,
    524 	285, 282, 285, 282, 282, 282, 318, 286,
    525 	282, 73, 282, 154, 282, 282, 282, 282,
    526 	282, 285, 282, 107, 75, 75, 76, 73,
    527 	338, 338, 338, 338, 144, 338, 150, 151,
    528 	284, 284, 76, 73, 282, 154, 282, 107,
    529 	75, 75, 76, 73, 338, 340, 341, 342,
    530 	343, 112, 109, 339, 344, 339, 339, 143,
    531 	339, 345, 341, 343, 343, 112, 109, 339,
    532 	344, 339, 341, 343, 343, 112, 109, 339,
    533 	344, 339, 346, 339, 339, 339, 125, 347,
    534 	339, 109, 339, 344, 339, 339, 339, 339,
    535 	339, 346, 339, 348, 349, 350, 351, 112,
    536 	109, 339, 344, 339, 339, 141, 339, 352,
    537 	349, 353, 353, 112, 109, 339, 344, 339,
    538 	349, 353, 353, 112, 109, 339, 344, 339,
    539 	354, 339, 339, 339, 125, 355, 339, 109,
    540 	339, 344, 339, 339, 339, 339, 339, 354,
    541 	339, 356, 357, 358, 359, 112, 109, 339,
    542 	344, 339, 339, 139, 339, 360, 357, 361,
    543 	361, 112, 109, 339, 344, 339, 357, 361,
    544 	361, 112, 109, 339, 344, 339, 362, 339,
    545 	339, 339, 125, 363, 339, 109, 339, 344,
    546 	339, 339, 339, 339, 339, 362, 339, 364,
    547 	365, 366, 367, 112, 109, 339, 344, 339,
    548 	339, 137, 339, 368, 365, 369, 369, 112,
    549 	109, 339, 344, 339, 365, 369, 369, 112,
    550 	109, 339, 344, 339, 370, 339, 339, 339,
    551 	125, 371, 339, 109, 339, 344, 339, 339,
    552 	339, 339, 339, 370, 339, 372, 373, 374,
    553 	375, 112, 109, 339, 344, 339, 339, 135,
    554 	339, 376, 373, 377, 377, 112, 109, 339,
    555 	344, 339, 373, 377, 377, 112, 109, 339,
    556 	344, 339, 125, 378, 339, 109, 339, 344,
    557 	339, 379, 379, 339, 109, 339, 344, 339,
    558 	380, 339, 339, 381, 339, 344, 339, 344,
    559 	339, 382, 339, 383, 339, 380, 339, 339,
    560 	339, 339, 344, 339, 125, 339, 379, 379,
    561 	339, 109, 339, 344, 339, 379, 378, 339,
    562 	109, 339, 344, 339, 384, 134, 385, 386,
    563 	115, 109, 339, 344, 339, 134, 385, 386,
    564 	115, 109, 339, 344, 339, 385, 385, 115,
    565 	109, 339, 344, 339, 387, 131, 388, 389,
    566 	118, 109, 339, 344, 339, 131, 388, 389,
    567 	118, 109, 339, 344, 339, 388, 388, 118,
    568 	109, 339, 344, 339, 390, 128, 391, 392,
    569 	121, 109, 339, 344, 339, 128, 391, 392,
    570 	121, 109, 339, 344, 339, 391, 391, 121,
    571 	109, 339, 344, 339, 393, 125, 379, 394,
    572 	339, 109, 339, 344, 339, 125, 379, 394,
    573 	339, 109, 339, 344, 339, 372, 373, 377,
    574 	377, 112, 109, 339, 344, 339, 372, 373,
    575 	374, 377, 112, 109, 339, 344, 339, 339,
    576 	135, 339, 370, 339, 395, 339, 379, 379,
    577 	339, 109, 339, 344, 339, 339, 339, 339,
    578 	339, 370, 339, 370, 339, 339, 339, 379,
    579 	379, 339, 109, 339, 344, 339, 339, 339,
    580 	339, 339, 370, 339, 370, 339, 339, 339,
    581 	379, 371, 339, 109, 339, 344, 339, 339,
    582 	339, 339, 339, 370, 339, 364, 365, 369,
    583 	369, 112, 109, 339, 344, 339, 364, 365,
    584 	366, 369, 112, 109, 339, 344, 339, 339,
    585 	137, 339, 362, 339, 396, 339, 379, 379,
    586 	339, 109, 339, 344, 339, 339, 339, 339,
    587 	339, 362, 339, 362, 339, 339, 339, 379,
    588 	379, 339, 109, 339, 344, 339, 339, 339,
    589 	339, 339, 362, 339, 362, 339, 339, 339,
    590 	379, 363, 339, 109, 339, 344, 339, 339,
    591 	339, 339, 339, 362, 339, 356, 357, 361,
    592 	361, 112, 109, 339, 344, 339, 356, 357,
    593 	358, 361, 112, 109, 339, 344, 339, 339,
    594 	139, 339, 354, 339, 397, 339, 379, 379,
    595 	339, 109, 339, 344, 339, 339, 339, 339,
    596 	339, 354, 339, 354, 339, 339, 339, 379,
    597 	379, 339, 109, 339, 344, 339, 339, 339,
    598 	339, 339, 354, 339, 354, 339, 339, 339,
    599 	379, 355, 339, 109, 339, 344, 339, 339,
    600 	339, 339, 339, 354, 339, 348, 349, 353,
    601 	353, 112, 109, 339, 344, 339, 348, 349,
    602 	350, 353, 112, 109, 339, 344, 339, 339,
    603 	141, 339, 346, 339, 398, 339, 379, 379,
    604 	339, 109, 339, 344, 339, 339, 339, 339,
    605 	339, 346, 339, 346, 339, 339, 339, 379,
    606 	379, 339, 109, 339, 344, 339, 339, 339,
    607 	339, 339, 346, 339, 346, 339, 339, 339,
    608 	379, 347, 339, 109, 339, 344, 339, 339,
    609 	339, 339, 339, 346, 339, 340, 341, 343,
    610 	343, 112, 109, 339, 344, 339, 148, 149,
    611 	150, 151, 399, 284, 76, 73, 282, 154,
    612 	155, 155, 144, 282, 282, 148, 282, 161,
    613 	400, 163, 164, 4, 1, 160, 165, 160,
    614 	160, 35, 160, 168, 149, 150, 151, 401,
    615 	402, 76, 403, 160, 404, 160, 155, 144,
    616 	160, 160, 168, 160, 107, 405, 405, 76,
    617 	403, 160, 165, 160, 160, 144, 160, 406,
    618 	160, 160, 407, 160, 404, 160, 404, 160,
    619 	408, 160, 205, 160, 406, 160, 160, 160,
    620 	160, 404, 160, 168, 160, 220, 107, 405,
    621 	405, 76, 403, 160, 165, 160, 160, 160,
    622 	160, 160, 168, 160, 410, 409, 411, 411,
    623 	409, 146, 409, 412, 409, 411, 411, 409,
    624 	146, 409, 412, 409, 413, 409, 409, 414,
    625 	409, 412, 409, 412, 409, 415, 409, 416,
    626 	409, 413, 409, 409, 409, 409, 412, 409,
    627 	148, 338, 338, 338, 338, 338, 338, 338,
    628 	338, 338, 155, 338, 338, 338, 338, 148,
    629 	338, 0
    630 };
    631 
    632 static const short _indic_syllable_machine_trans_targs[] = {
    633 	138, 160, 166, 2, 167, 3, 5, 170,
    634 	6, 8, 173, 9, 11, 176, 12, 14,
    635 	15, 159, 17, 18, 175, 20, 21, 172,
    636 	23, 24, 169, 178, 182, 183, 187, 188,
    637 	192, 193, 197, 198, 138, 221, 227, 36,
    638 	228, 37, 39, 231, 40, 42, 234, 43,
    639 	45, 237, 46, 48, 49, 220, 51, 52,
    640 	236, 54, 55, 233, 57, 58, 230, 239,
    641 	243, 244, 248, 249, 253, 254, 258, 260,
    642 	138, 281, 287, 70, 288, 138, 71, 73,
    643 	291, 74, 76, 294, 77, 79, 297, 80,
    644 	82, 83, 280, 85, 86, 296, 88, 89,
    645 	293, 91, 92, 290, 299, 303, 304, 308,
    646 	309, 313, 314, 318, 138, 343, 349, 103,
    647 	350, 104, 106, 353, 107, 109, 356, 110,
    648 	112, 359, 113, 115, 116, 342, 118, 119,
    649 	358, 121, 122, 355, 124, 125, 352, 361,
    650 	365, 366, 370, 371, 375, 376, 380, 381,
    651 	320, 138, 394, 138, 139, 200, 261, 263,
    652 	319, 321, 283, 322, 382, 383, 392, 399,
    653 	138, 140, 142, 33, 199, 162, 141, 32,
    654 	143, 195, 144, 146, 31, 194, 145, 30,
    655 	147, 190, 148, 150, 29, 189, 149, 28,
    656 	151, 185, 152, 154, 27, 184, 153, 26,
    657 	155, 180, 156, 158, 25, 179, 157, 1,
    658 	165, 0, 161, 164, 163, 138, 168, 4,
    659 	22, 171, 7, 19, 174, 10, 16, 177,
    660 	13, 181, 186, 191, 196, 138, 201, 203,
    661 	67, 259, 223, 202, 66, 204, 256, 205,
    662 	207, 65, 255, 206, 64, 208, 251, 209,
    663 	211, 63, 250, 210, 62, 212, 246, 213,
    664 	215, 61, 245, 214, 60, 216, 241, 217,
    665 	219, 59, 240, 218, 35, 226, 34, 222,
    666 	225, 224, 138, 229, 38, 56, 232, 41,
    667 	53, 235, 44, 50, 238, 47, 242, 247,
    668 	252, 257, 138, 262, 100, 264, 316, 265,
    669 	267, 99, 315, 266, 98, 268, 311, 269,
    670 	271, 97, 310, 270, 96, 272, 306, 273,
    671 	275, 95, 305, 274, 94, 276, 301, 277,
    672 	279, 93, 300, 278, 69, 286, 68, 282,
    673 	285, 284, 138, 289, 72, 90, 292, 75,
    674 	87, 295, 78, 84, 298, 81, 302, 307,
    675 	312, 317, 138, 138, 323, 325, 134, 133,
    676 	345, 324, 326, 378, 327, 329, 132, 377,
    677 	328, 131, 330, 373, 331, 333, 130, 372,
    678 	332, 129, 334, 368, 335, 337, 128, 367,
    679 	336, 127, 338, 363, 339, 341, 126, 362,
    680 	340, 102, 348, 101, 344, 347, 346, 138,
    681 	351, 105, 123, 354, 108, 120, 357, 111,
    682 	117, 360, 114, 364, 369, 374, 379, 135,
    683 	384, 385, 391, 386, 388, 136, 387, 390,
    684 	389, 138, 393, 137, 396, 395, 398, 397,
    685 	138
    686 };
    687 
    688 static const char _indic_syllable_machine_trans_actions[] = {
    689 	1, 0, 2, 0, 2, 0, 0, 2,
    690 	0, 0, 2, 0, 0, 2, 0, 0,
    691 	0, 2, 0, 0, 2, 0, 0, 2,
    692 	0, 0, 2, 2, 2, 2, 2, 2,
    693 	2, 2, 2, 2, 3, 0, 2, 0,
    694 	2, 0, 0, 2, 0, 0, 2, 0,
    695 	0, 2, 0, 0, 0, 2, 0, 0,
    696 	2, 0, 0, 2, 0, 0, 2, 2,
    697 	2, 2, 2, 2, 2, 2, 2, 2,
    698 	4, 0, 2, 0, 2, 5, 0, 0,
    699 	2, 0, 0, 2, 0, 0, 2, 0,
    700 	0, 0, 2, 0, 0, 2, 0, 0,
    701 	2, 0, 0, 2, 6, 2, 6, 2,
    702 	6, 2, 6, 2, 7, 0, 2, 0,
    703 	2, 0, 0, 2, 0, 0, 2, 0,
    704 	0, 2, 0, 0, 0, 2, 0, 0,
    705 	2, 0, 0, 2, 0, 0, 2, 2,
    706 	2, 2, 2, 2, 2, 2, 2, 2,
    707 	6, 8, 0, 11, 2, 2, 6, 0,
    708 	12, 12, 0, 2, 6, 2, 2, 0,
    709 	13, 2, 0, 0, 2, 0, 2, 0,
    710 	2, 2, 2, 0, 0, 2, 2, 0,
    711 	2, 2, 2, 0, 0, 2, 2, 0,
    712 	2, 2, 2, 0, 0, 2, 2, 0,
    713 	2, 2, 2, 0, 0, 2, 2, 0,
    714 	2, 0, 0, 0, 0, 14, 2, 0,
    715 	0, 2, 0, 0, 2, 0, 0, 2,
    716 	0, 2, 2, 2, 2, 15, 2, 0,
    717 	0, 2, 0, 2, 0, 2, 2, 2,
    718 	0, 0, 2, 2, 0, 2, 2, 2,
    719 	0, 0, 2, 2, 0, 2, 2, 2,
    720 	0, 0, 2, 2, 0, 2, 2, 2,
    721 	0, 0, 2, 2, 0, 2, 0, 0,
    722 	0, 0, 16, 2, 0, 0, 2, 0,
    723 	0, 2, 0, 0, 2, 0, 2, 2,
    724 	2, 2, 17, 6, 0, 6, 2, 6,
    725 	0, 0, 6, 6, 0, 6, 2, 6,
    726 	0, 0, 6, 6, 0, 6, 2, 6,
    727 	0, 0, 6, 6, 0, 6, 2, 6,
    728 	0, 0, 6, 6, 0, 2, 0, 0,
    729 	0, 0, 18, 2, 0, 0, 2, 0,
    730 	0, 2, 0, 0, 2, 0, 2, 2,
    731 	2, 2, 19, 20, 2, 0, 0, 0,
    732 	0, 2, 2, 2, 2, 0, 0, 2,
    733 	2, 0, 2, 2, 2, 0, 0, 2,
    734 	2, 0, 2, 2, 2, 0, 0, 2,
    735 	2, 0, 2, 2, 2, 0, 0, 2,
    736 	2, 0, 2, 0, 0, 0, 0, 21,
    737 	2, 0, 0, 2, 0, 0, 2, 0,
    738 	0, 2, 0, 2, 2, 2, 2, 0,
    739 	0, 22, 22, 0, 0, 0, 0, 0,
    740 	0, 23, 2, 0, 0, 0, 0, 0,
    741 	24
    742 };
    743 
    744 static const char _indic_syllable_machine_to_state_actions[] = {
    745 	0, 0, 0, 0, 0, 0, 0, 0,
    746 	0, 0, 0, 0, 0, 0, 0, 0,
    747 	0, 0, 0, 0, 0, 0, 0, 0,
    748 	0, 0, 0, 0, 0, 0, 0, 0,
    749 	0, 0, 0, 0, 0, 0, 0, 0,
    750 	0, 0, 0, 0, 0, 0, 0, 0,
    751 	0, 0, 0, 0, 0, 0, 0, 0,
    752 	0, 0, 0, 0, 0, 0, 0, 0,
    753 	0, 0, 0, 0, 0, 0, 0, 0,
    754 	0, 0, 0, 0, 0, 0, 0, 0,
    755 	0, 0, 0, 0, 0, 0, 0, 0,
    756 	0, 0, 0, 0, 0, 0, 0, 0,
    757 	0, 0, 0, 0, 0, 0, 0, 0,
    758 	0, 0, 0, 0, 0, 0, 0, 0,
    759 	0, 0, 0, 0, 0, 0, 0, 0,
    760 	0, 0, 0, 0, 0, 0, 0, 0,
    761 	0, 0, 0, 0, 0, 0, 0, 0,
    762 	0, 0, 9, 0, 0, 0, 0, 0,
    763 	0, 0, 0, 0, 0, 0, 0, 0,
    764 	0, 0, 0, 0, 0, 0, 0, 0,
    765 	0, 0, 0, 0, 0, 0, 0, 0,
    766 	0, 0, 0, 0, 0, 0, 0, 0,
    767 	0, 0, 0, 0, 0, 0, 0, 0,
    768 	0, 0, 0, 0, 0, 0, 0, 0,
    769 	0, 0, 0, 0, 0, 0, 0, 0,
    770 	0, 0, 0, 0, 0, 0, 0, 0,
    771 	0, 0, 0, 0, 0, 0, 0, 0,
    772 	0, 0, 0, 0, 0, 0, 0, 0,
    773 	0, 0, 0, 0, 0, 0, 0, 0,
    774 	0, 0, 0, 0, 0, 0, 0, 0,
    775 	0, 0, 0, 0, 0, 0, 0, 0,
    776 	0, 0, 0, 0, 0, 0, 0, 0,
    777 	0, 0, 0, 0, 0, 0, 0, 0,
    778 	0, 0, 0, 0, 0, 0, 0, 0,
    779 	0, 0, 0, 0, 0, 0, 0, 0,
    780 	0, 0, 0, 0, 0, 0, 0, 0,
    781 	0, 0, 0, 0, 0, 0, 0, 0,
    782 	0, 0, 0, 0, 0, 0, 0, 0,
    783 	0, 0, 0, 0, 0, 0, 0, 0,
    784 	0, 0, 0, 0, 0, 0, 0, 0,
    785 	0, 0, 0, 0, 0, 0, 0, 0,
    786 	0, 0, 0, 0, 0, 0, 0, 0,
    787 	0, 0, 0, 0, 0, 0, 0, 0,
    788 	0, 0, 0, 0, 0, 0, 0, 0,
    789 	0, 0, 0, 0, 0, 0, 0, 0,
    790 	0, 0, 0, 0, 0, 0, 0, 0,
    791 	0, 0, 0, 0, 0, 0, 0, 0,
    792 	0, 0, 0, 0, 0, 0, 0, 0,
    793 	0, 0, 0, 0, 0, 0, 0, 0,
    794 	0, 0, 0, 0, 0, 0, 0, 0
    795 };
    796 
    797 static const char _indic_syllable_machine_from_state_actions[] = {
    798 	0, 0, 0, 0, 0, 0, 0, 0,
    799 	0, 0, 0, 0, 0, 0, 0, 0,
    800 	0, 0, 0, 0, 0, 0, 0, 0,
    801 	0, 0, 0, 0, 0, 0, 0, 0,
    802 	0, 0, 0, 0, 0, 0, 0, 0,
    803 	0, 0, 0, 0, 0, 0, 0, 0,
    804 	0, 0, 0, 0, 0, 0, 0, 0,
    805 	0, 0, 0, 0, 0, 0, 0, 0,
    806 	0, 0, 0, 0, 0, 0, 0, 0,
    807 	0, 0, 0, 0, 0, 0, 0, 0,
    808 	0, 0, 0, 0, 0, 0, 0, 0,
    809 	0, 0, 0, 0, 0, 0, 0, 0,
    810 	0, 0, 0, 0, 0, 0, 0, 0,
    811 	0, 0, 0, 0, 0, 0, 0, 0,
    812 	0, 0, 0, 0, 0, 0, 0, 0,
    813 	0, 0, 0, 0, 0, 0, 0, 0,
    814 	0, 0, 0, 0, 0, 0, 0, 0,
    815 	0, 0, 10, 0, 0, 0, 0, 0,
    816 	0, 0, 0, 0, 0, 0, 0, 0,
    817 	0, 0, 0, 0, 0, 0, 0, 0,
    818 	0, 0, 0, 0, 0, 0, 0, 0,
    819 	0, 0, 0, 0, 0, 0, 0, 0,
    820 	0, 0, 0, 0, 0, 0, 0, 0,
    821 	0, 0, 0, 0, 0, 0, 0, 0,
    822 	0, 0, 0, 0, 0, 0, 0, 0,
    823 	0, 0, 0, 0, 0, 0, 0, 0,
    824 	0, 0, 0, 0, 0, 0, 0, 0,
    825 	0, 0, 0, 0, 0, 0, 0, 0,
    826 	0, 0, 0, 0, 0, 0, 0, 0,
    827 	0, 0, 0, 0, 0, 0, 0, 0,
    828 	0, 0, 0, 0, 0, 0, 0, 0,
    829 	0, 0, 0, 0, 0, 0, 0, 0,
    830 	0, 0, 0, 0, 0, 0, 0, 0,
    831 	0, 0, 0, 0, 0, 0, 0, 0,
    832 	0, 0, 0, 0, 0, 0, 0, 0,
    833 	0, 0, 0, 0, 0, 0, 0, 0,
    834 	0, 0, 0, 0, 0, 0, 0, 0,
    835 	0, 0, 0, 0, 0, 0, 0, 0,
    836 	0, 0, 0, 0, 0, 0, 0, 0,
    837 	0, 0, 0, 0, 0, 0, 0, 0,
    838 	0, 0, 0, 0, 0, 0, 0, 0,
    839 	0, 0, 0, 0, 0, 0, 0, 0,
    840 	0, 0, 0, 0, 0, 0, 0, 0,
    841 	0, 0, 0, 0, 0, 0, 0, 0,
    842 	0, 0, 0, 0, 0, 0, 0, 0,
    843 	0, 0, 0, 0, 0, 0, 0, 0,
    844 	0, 0, 0, 0, 0, 0, 0, 0,
    845 	0, 0, 0, 0, 0, 0, 0, 0,
    846 	0, 0, 0, 0, 0, 0, 0, 0,
    847 	0, 0, 0, 0, 0, 0, 0, 0
    848 };
    849 
    850 static const short _indic_syllable_machine_eof_trans[] = {
    851 	1, 1, 1, 1, 1, 1, 1, 1,
    852 	1, 1, 1, 1, 1, 1, 1, 1,
    853 	1, 1, 1, 1, 1, 1, 1, 1,
    854 	1, 1, 1, 1, 1, 1, 1, 1,
    855 	1, 1, 37, 37, 37, 37, 37, 37,
    856 	37, 37, 37, 37, 37, 37, 37, 37,
    857 	37, 37, 37, 37, 37, 37, 37, 37,
    858 	37, 37, 37, 37, 37, 37, 37, 37,
    859 	37, 37, 37, 37, 73, 73, 78, 78,
    860 	73, 73, 73, 73, 73, 73, 73, 73,
    861 	73, 73, 73, 73, 73, 73, 73, 73,
    862 	73, 73, 73, 73, 73, 73, 73, 73,
    863 	73, 73, 73, 73, 73, 109, 109, 109,
    864 	109, 109, 109, 109, 109, 109, 109, 109,
    865 	109, 109, 109, 109, 109, 109, 109, 109,
    866 	109, 109, 109, 109, 109, 109, 109, 109,
    867 	109, 109, 109, 109, 109, 109, 109, 73,
    868 	1, 146, 0, 161, 161, 161, 161, 161,
    869 	161, 161, 161, 161, 161, 161, 161, 161,
    870 	161, 161, 161, 161, 161, 161, 161, 161,
    871 	161, 161, 161, 161, 161, 161, 161, 161,
    872 	161, 161, 161, 161, 161, 161, 161, 161,
    873 	161, 161, 161, 161, 161, 161, 161, 161,
    874 	161, 161, 161, 161, 161, 161, 161, 161,
    875 	161, 161, 161, 161, 161, 161, 161, 161,
    876 	222, 222, 222, 222, 222, 222, 222, 222,
    877 	222, 222, 222, 222, 222, 222, 222, 222,
    878 	222, 222, 222, 222, 222, 222, 222, 222,
    879 	222, 222, 222, 222, 222, 222, 222, 222,
    880 	222, 222, 222, 222, 222, 222, 222, 222,
    881 	222, 222, 222, 222, 222, 222, 222, 222,
    882 	222, 222, 222, 222, 222, 222, 222, 222,
    883 	222, 222, 222, 222, 222, 283, 283, 283,
    884 	283, 283, 283, 283, 283, 283, 283, 283,
    885 	283, 283, 283, 283, 283, 283, 283, 283,
    886 	283, 283, 283, 283, 283, 283, 283, 283,
    887 	283, 283, 283, 283, 283, 283, 283, 283,
    888 	283, 283, 283, 283, 283, 283, 283, 283,
    889 	283, 283, 283, 283, 283, 283, 283, 283,
    890 	283, 283, 283, 283, 283, 283, 283, 339,
    891 	283, 339, 340, 340, 340, 340, 340, 340,
    892 	340, 340, 340, 340, 340, 340, 340, 340,
    893 	340, 340, 340, 340, 340, 340, 340, 340,
    894 	340, 340, 340, 340, 340, 340, 340, 340,
    895 	340, 340, 340, 340, 340, 340, 340, 340,
    896 	340, 340, 340, 340, 340, 340, 340, 340,
    897 	340, 340, 340, 340, 340, 340, 340, 340,
    898 	340, 340, 340, 340, 340, 340, 283, 161,
    899 	161, 161, 161, 161, 161, 161, 161, 161,
    900 	410, 410, 410, 410, 410, 410, 410, 339
    901 };
    902 
    903 static const int indic_syllable_machine_start = 138;
    904 static const int indic_syllable_machine_first_final = 138;
    905 static const int indic_syllable_machine_error = -1;
    906 
    907 static const int indic_syllable_machine_en_main = 138;
    908 
    909 
    910 #line 36 "hb-ot-shape-complex-indic-machine.rl"
    911 
    912 
    913 
    914 #line 92 "hb-ot-shape-complex-indic-machine.rl"
    915 
    916 
    917 #define found_syllable(syllable_type) \
    918   HB_STMT_START { \
    919     if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \
    920     for (unsigned int i = ts; i < te; i++) \
    921       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
    922     syllable_serial++; \
    923     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
    924   } HB_STMT_END
    925 
    926 static void
    927 find_syllables (hb_buffer_t *buffer)
    928 {
    929   unsigned int p, pe, eof, ts, te, act;
    930   int cs;
    931   hb_glyph_info_t *info = buffer->info;
    932 
    933 #line 934 "hb-ot-shape-complex-indic-machine.hh"
    934 	{
    935 	cs = indic_syllable_machine_start;
    936 	ts = 0;
    937 	te = 0;
    938 	act = 0;
    939 	}
    940 
    941 #line 112 "hb-ot-shape-complex-indic-machine.rl"
    942 
    943 
    944   p = 0;
    945   pe = eof = buffer->len;
    946 
    947   unsigned int syllable_serial = 1;
    948 
    949 #line 950 "hb-ot-shape-complex-indic-machine.hh"
    950 	{
    951 	int _slen;
    952 	int _trans;
    953 	const unsigned char *_keys;
    954 	const short *_inds;
    955 	if ( p == pe )
    956 		goto _test_eof;
    957 _resume:
    958 	switch ( _indic_syllable_machine_from_state_actions[cs] ) {
    959 	case 10:
    960 #line 1 "NONE"
    961 	{ts = p;}
    962 	break;
    963 #line 964 "hb-ot-shape-complex-indic-machine.hh"
    964 	}
    965 
    966 	_keys = _indic_syllable_machine_trans_keys + (cs<<1);
    967 	_inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
    968 
    969 	_slen = _indic_syllable_machine_key_spans[cs];
    970 	_trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
    971 		( info[p].indic_category()) <= _keys[1] ?
    972 		( info[p].indic_category()) - _keys[0] : _slen ];
    973 
    974 _eof_trans:
    975 	cs = _indic_syllable_machine_trans_targs[_trans];
    976 
    977 	if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
    978 		goto _again;
    979 
    980 	switch ( _indic_syllable_machine_trans_actions[_trans] ) {
    981 	case 2:
    982 #line 1 "NONE"
    983 	{te = p+1;}
    984 	break;
    985 	case 14:
    986 #line 83 "hb-ot-shape-complex-indic-machine.rl"
    987 	{te = p+1;{ found_syllable (consonant_syllable); }}
    988 	break;
    989 	case 16:
    990 #line 84 "hb-ot-shape-complex-indic-machine.rl"
    991 	{te = p+1;{ found_syllable (vowel_syllable); }}
    992 	break;
    993 	case 21:
    994 #line 85 "hb-ot-shape-complex-indic-machine.rl"
    995 	{te = p+1;{ found_syllable (standalone_cluster); }}
    996 	break;
    997 	case 24:
    998 #line 86 "hb-ot-shape-complex-indic-machine.rl"
    999 	{te = p+1;{ found_syllable (symbol_cluster); }}
   1000 	break;
   1001 	case 18:
   1002 #line 87 "hb-ot-shape-complex-indic-machine.rl"
   1003 	{te = p+1;{ found_syllable (broken_cluster); }}
   1004 	break;
   1005 	case 11:
   1006 #line 88 "hb-ot-shape-complex-indic-machine.rl"
   1007 	{te = p+1;{ found_syllable (non_indic_cluster); }}
   1008 	break;
   1009 	case 13:
   1010 #line 83 "hb-ot-shape-complex-indic-machine.rl"
   1011 	{te = p;p--;{ found_syllable (consonant_syllable); }}
   1012 	break;
   1013 	case 15:
   1014 #line 84 "hb-ot-shape-complex-indic-machine.rl"
   1015 	{te = p;p--;{ found_syllable (vowel_syllable); }}
   1016 	break;
   1017 	case 20:
   1018 #line 85 "hb-ot-shape-complex-indic-machine.rl"
   1019 	{te = p;p--;{ found_syllable (standalone_cluster); }}
   1020 	break;
   1021 	case 23:
   1022 #line 86 "hb-ot-shape-complex-indic-machine.rl"
   1023 	{te = p;p--;{ found_syllable (symbol_cluster); }}
   1024 	break;
   1025 	case 17:
   1026 #line 87 "hb-ot-shape-complex-indic-machine.rl"
   1027 	{te = p;p--;{ found_syllable (broken_cluster); }}
   1028 	break;
   1029 	case 19:
   1030 #line 88 "hb-ot-shape-complex-indic-machine.rl"
   1031 	{te = p;p--;{ found_syllable (non_indic_cluster); }}
   1032 	break;
   1033 	case 1:
   1034 #line 83 "hb-ot-shape-complex-indic-machine.rl"
   1035 	{{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
   1036 	break;
   1037 	case 3:
   1038 #line 84 "hb-ot-shape-complex-indic-machine.rl"
   1039 	{{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
   1040 	break;
   1041 	case 7:
   1042 #line 85 "hb-ot-shape-complex-indic-machine.rl"
   1043 	{{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
   1044 	break;
   1045 	case 8:
   1046 #line 86 "hb-ot-shape-complex-indic-machine.rl"
   1047 	{{p = ((te))-1;}{ found_syllable (symbol_cluster); }}
   1048 	break;
   1049 	case 4:
   1050 #line 87 "hb-ot-shape-complex-indic-machine.rl"
   1051 	{{p = ((te))-1;}{ found_syllable (broken_cluster); }}
   1052 	break;
   1053 	case 5:
   1054 #line 1 "NONE"
   1055 	{	switch( act ) {
   1056 	case 1:
   1057 	{{p = ((te))-1;} found_syllable (consonant_syllable); }
   1058 	break;
   1059 	case 5:
   1060 	{{p = ((te))-1;} found_syllable (broken_cluster); }
   1061 	break;
   1062 	case 6:
   1063 	{{p = ((te))-1;} found_syllable (non_indic_cluster); }
   1064 	break;
   1065 	}
   1066 	}
   1067 	break;
   1068 	case 22:
   1069 #line 1 "NONE"
   1070 	{te = p+1;}
   1071 #line 83 "hb-ot-shape-complex-indic-machine.rl"
   1072 	{act = 1;}
   1073 	break;
   1074 	case 6:
   1075 #line 1 "NONE"
   1076 	{te = p+1;}
   1077 #line 87 "hb-ot-shape-complex-indic-machine.rl"
   1078 	{act = 5;}
   1079 	break;
   1080 	case 12:
   1081 #line 1 "NONE"
   1082 	{te = p+1;}
   1083 #line 88 "hb-ot-shape-complex-indic-machine.rl"
   1084 	{act = 6;}
   1085 	break;
   1086 #line 1087 "hb-ot-shape-complex-indic-machine.hh"
   1087 	}
   1088 
   1089 _again:
   1090 	switch ( _indic_syllable_machine_to_state_actions[cs] ) {
   1091 	case 9:
   1092 #line 1 "NONE"
   1093 	{ts = 0;}
   1094 	break;
   1095 #line 1096 "hb-ot-shape-complex-indic-machine.hh"
   1096 	}
   1097 
   1098 	if ( ++p != pe )
   1099 		goto _resume;
   1100 	_test_eof: {}
   1101 	if ( p == eof )
   1102 	{
   1103 	if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
   1104 		_trans = _indic_syllable_machine_eof_trans[cs] - 1;
   1105 		goto _eof_trans;
   1106 	}
   1107 	}
   1108 
   1109 	}
   1110 
   1111 #line 120 "hb-ot-shape-complex-indic-machine.rl"
   1112 
   1113 }
   1114 
   1115 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */
   1116