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"
36static 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
90static 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
143static 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
196static 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
632static 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
688static 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
744static 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
797static 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
850static 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
903static const int indic_syllable_machine_start = 138;
904static const int indic_syllable_machine_first_final = 138;
905static const int indic_syllable_machine_error = -1;
906
907static 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
926static void
927find_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