Imported Upstream version 0.9.12
[platform/upstream/harfbuzz.git] / src / hb-ot-shape-complex-indic-machine.hh
1
2 #line 1 "../../src/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-private.hh"
33
34
35 #line 36 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
36 static const unsigned char _indic_syllable_machine_trans_keys[] = {
37         1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 
38         5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 
39         16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 
40         6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 
41         4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 
42         7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 
43         5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 
44         4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 
45         4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 
46         1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 
47         5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 4u, 4u, 6u, 6u, 
48         16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 
49         6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 
50         4u, 14u, 4u, 14u, 4u, 14u, 1u, 16u, 13u, 13u, 5u, 7u, 5u, 7u, 7u, 7u, 
51         5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 
52         7u, 7u, 4u, 4u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 
53         6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 14u, 4u, 14u, 4u, 14u, 
54         4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 4u, 14u, 
55         4u, 14u, 5u, 7u, 5u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 5u, 7u, 5u, 7u, 
56         7u, 7u, 5u, 7u, 5u, 7u, 7u, 7u, 1u, 16u, 13u, 13u, 4u, 4u, 6u, 6u, 
57         16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 6u, 6u, 16u, 16u, 4u, 7u, 
58         6u, 6u, 16u, 16u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 
59         3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 
60         3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 
61         5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 
62         3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 
63         4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 
64         3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 
65         3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 
66         1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 
67         1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 3u, 14u, 3u, 14u, 
68         4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 
69         4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 
70         4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 
71         8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 
72         4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 
73         3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 
74         1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 
75         3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 
76         3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 1u, 16u, 3u, 14u, 
77         3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 
78         3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 
79         3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 17u, 
80         3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 
81         3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 
82         6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 
83         1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 
84         1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 
85         3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 14u, 
86         3u, 14u, 4u, 14u, 3u, 14u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 
87         4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 
88         4u, 14u, 1u, 16u, 3u, 17u, 3u, 14u, 4u, 14u, 5u, 14u, 8u, 14u, 5u, 9u, 
89         9u, 9u, 9u, 9u, 3u, 17u, 3u, 9u, 8u, 9u, 3u, 9u, 3u, 13u, 3u, 14u, 
90         3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 
91         5u, 14u, 3u, 14u, 4u, 14u, 6u, 14u, 3u, 14u, 1u, 16u, 3u, 14u, 3u, 14u, 
92         1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 
93         1u, 16u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 
94         1u, 16u, 1u, 16u, 1u, 16u, 3u, 14u, 3u, 14u, 1u, 16u, 1u, 16u, 1u, 16u, 
95         1u, 16u, 1u, 16u, 3u, 14u, 1u, 16u, 3u, 17u, 1u, 16u, 4u, 14u, 1u, 16u, 
96         3u, 17u, 3u, 14u, 4u, 14u, 5u, 9u, 9u, 9u, 9u, 9u, 3u, 14u, 3u, 14u, 
97         1u, 16u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 5u, 14u, 3u, 14u, 
98         4u, 14u, 5u, 14u, 3u, 14u, 4u, 14u, 8u, 14u, 3u, 17u, 3u, 9u, 8u, 9u, 
99         3u, 9u, 3u, 13u, 1u, 16u, 0
100 };
101
102 static const char _indic_syllable_machine_key_spans[] = {
103         16, 1, 3, 3, 1, 3, 3, 1, 
104         3, 3, 1, 3, 3, 1, 1, 1, 
105         1, 4, 1, 1, 4, 1, 1, 4, 
106         1, 1, 11, 11, 11, 11, 11, 11, 
107         11, 11, 11, 11, 16, 1, 3, 3, 
108         1, 3, 3, 1, 3, 3, 1, 3, 
109         3, 1, 1, 1, 1, 4, 1, 1, 
110         4, 1, 1, 4, 1, 1, 11, 11, 
111         11, 11, 11, 11, 11, 11, 11, 11, 
112         16, 1, 3, 3, 1, 3, 3, 1, 
113         3, 3, 1, 3, 3, 1, 1, 1, 
114         1, 4, 1, 1, 4, 1, 1, 4, 
115         1, 1, 11, 11, 11, 11, 11, 11, 
116         11, 11, 11, 16, 1, 3, 3, 1, 
117         3, 3, 1, 3, 3, 1, 3, 3, 
118         1, 1, 1, 1, 4, 1, 1, 4, 
119         1, 1, 4, 1, 1, 11, 11, 11, 
120         11, 11, 11, 11, 11, 11, 11, 11, 
121         11, 3, 3, 3, 3, 1, 3, 3, 
122         1, 3, 3, 1, 16, 1, 1, 1, 
123         1, 4, 1, 1, 4, 1, 1, 4, 
124         1, 1, 16, 15, 12, 11, 16, 15, 
125         12, 11, 16, 15, 12, 11, 16, 15, 
126         12, 11, 16, 15, 12, 11, 10, 7, 
127         5, 1, 1, 15, 7, 2, 7, 11, 
128         12, 12, 11, 10, 12, 11, 10, 12, 
129         11, 10, 12, 11, 9, 12, 11, 16, 
130         12, 12, 16, 16, 16, 16, 16, 12, 
131         12, 16, 16, 16, 16, 16, 12, 12, 
132         16, 16, 16, 16, 16, 12, 12, 16, 
133         16, 16, 16, 16, 12, 12, 12, 12, 
134         11, 16, 15, 12, 11, 16, 15, 12, 
135         11, 16, 15, 12, 11, 16, 15, 12, 
136         11, 10, 7, 5, 1, 1, 15, 7, 
137         2, 7, 11, 12, 12, 11, 10, 12, 
138         11, 10, 12, 11, 10, 12, 11, 9, 
139         12, 16, 12, 12, 16, 16, 16, 16, 
140         16, 12, 12, 16, 16, 16, 16, 16, 
141         12, 12, 16, 16, 16, 16, 16, 12, 
142         12, 16, 16, 16, 16, 11, 16, 12, 
143         12, 11, 16, 15, 12, 11, 16, 15, 
144         12, 11, 16, 15, 12, 11, 16, 15, 
145         12, 11, 10, 7, 5, 1, 1, 15, 
146         7, 2, 7, 11, 12, 12, 11, 10, 
147         12, 11, 10, 12, 11, 10, 12, 11, 
148         9, 12, 16, 12, 12, 16, 16, 16, 
149         16, 16, 12, 12, 16, 16, 16, 16, 
150         16, 12, 12, 16, 16, 16, 16, 16, 
151         12, 12, 16, 16, 16, 16, 16, 11, 
152         12, 11, 12, 12, 11, 16, 15, 12, 
153         11, 16, 15, 12, 11, 16, 15, 12, 
154         11, 16, 15, 12, 11, 10, 7, 5, 
155         1, 1, 15, 7, 2, 7, 11, 12, 
156         12, 11, 10, 12, 11, 10, 12, 11, 
157         10, 12, 11, 9, 12, 16, 12, 12, 
158         16, 16, 16, 16, 16, 12, 12, 16, 
159         16, 16, 16, 16, 12, 12, 16, 16, 
160         16, 16, 16, 12, 12, 16, 16, 16, 
161         16, 16, 12, 16, 15, 16, 11, 16, 
162         15, 12, 11, 5, 1, 1, 12, 12, 
163         16, 12, 11, 10, 12, 11, 10, 12, 
164         11, 10, 12, 11, 7, 15, 7, 2, 
165         7, 11, 16
166 };
167
168 static const short _indic_syllable_machine_index_offsets[] = {
169         0, 17, 19, 23, 27, 29, 33, 37, 
170         39, 43, 47, 49, 53, 57, 59, 61, 
171         63, 65, 70, 72, 74, 79, 81, 83, 
172         88, 90, 92, 104, 116, 128, 140, 152, 
173         164, 176, 188, 200, 212, 229, 231, 235, 
174         239, 241, 245, 249, 251, 255, 259, 261, 
175         265, 269, 271, 273, 275, 277, 282, 284, 
176         286, 291, 293, 295, 300, 302, 304, 316, 
177         328, 340, 352, 364, 376, 388, 400, 412, 
178         424, 441, 443, 447, 451, 453, 457, 461, 
179         463, 467, 471, 473, 477, 481, 483, 485, 
180         487, 489, 494, 496, 498, 503, 505, 507, 
181         512, 514, 516, 528, 540, 552, 564, 576, 
182         588, 600, 612, 624, 641, 643, 647, 651, 
183         653, 657, 661, 663, 667, 671, 673, 677, 
184         681, 683, 685, 687, 689, 694, 696, 698, 
185         703, 705, 707, 712, 714, 716, 728, 740, 
186         752, 764, 776, 788, 800, 812, 824, 836, 
187         848, 860, 864, 868, 872, 876, 878, 882, 
188         886, 888, 892, 896, 898, 915, 917, 919, 
189         921, 923, 928, 930, 932, 937, 939, 941, 
190         946, 948, 950, 967, 983, 996, 1008, 1025, 
191         1041, 1054, 1066, 1083, 1099, 1112, 1124, 1141, 
192         1157, 1170, 1182, 1199, 1215, 1228, 1240, 1251, 
193         1259, 1265, 1267, 1269, 1285, 1293, 1296, 1304, 
194         1316, 1329, 1342, 1354, 1365, 1378, 1390, 1401, 
195         1414, 1426, 1437, 1450, 1462, 1472, 1485, 1497, 
196         1514, 1527, 1540, 1557, 1574, 1591, 1608, 1625, 
197         1638, 1651, 1668, 1685, 1702, 1719, 1736, 1749, 
198         1762, 1779, 1796, 1813, 1830, 1847, 1860, 1873, 
199         1890, 1907, 1924, 1941, 1958, 1971, 1984, 1997, 
200         2010, 2022, 2039, 2055, 2068, 2080, 2097, 2113, 
201         2126, 2138, 2155, 2171, 2184, 2196, 2213, 2229, 
202         2242, 2254, 2265, 2273, 2279, 2281, 2283, 2299, 
203         2307, 2310, 2318, 2330, 2343, 2356, 2368, 2379, 
204         2392, 2404, 2415, 2428, 2440, 2451, 2464, 2476, 
205         2486, 2499, 2516, 2529, 2542, 2559, 2576, 2593, 
206         2610, 2627, 2640, 2653, 2670, 2687, 2704, 2721, 
207         2738, 2751, 2764, 2781, 2798, 2815, 2832, 2849, 
208         2862, 2875, 2892, 2909, 2926, 2943, 2955, 2972, 
209         2985, 2998, 3010, 3027, 3043, 3056, 3068, 3085, 
210         3101, 3114, 3126, 3143, 3159, 3172, 3184, 3201, 
211         3217, 3230, 3242, 3253, 3261, 3267, 3269, 3271, 
212         3287, 3295, 3298, 3306, 3318, 3331, 3344, 3356, 
213         3367, 3380, 3392, 3403, 3416, 3428, 3439, 3452, 
214         3464, 3474, 3487, 3504, 3517, 3530, 3547, 3564, 
215         3581, 3598, 3615, 3628, 3641, 3658, 3675, 3692, 
216         3709, 3726, 3739, 3752, 3769, 3786, 3803, 3820, 
217         3837, 3850, 3863, 3880, 3897, 3914, 3931, 3948, 
218         3960, 3973, 3985, 3998, 4011, 4023, 4040, 4056, 
219         4069, 4081, 4098, 4114, 4127, 4139, 4156, 4172, 
220         4185, 4197, 4214, 4230, 4243, 4255, 4266, 4274, 
221         4280, 4282, 4284, 4300, 4308, 4311, 4319, 4331, 
222         4344, 4357, 4369, 4380, 4393, 4405, 4416, 4429, 
223         4441, 4452, 4465, 4477, 4487, 4500, 4517, 4530, 
224         4543, 4560, 4577, 4594, 4611, 4628, 4641, 4654, 
225         4671, 4688, 4705, 4722, 4739, 4752, 4765, 4782, 
226         4799, 4816, 4833, 4850, 4863, 4876, 4893, 4910, 
227         4927, 4944, 4961, 4974, 4991, 5007, 5024, 5036, 
228         5053, 5069, 5082, 5094, 5100, 5102, 5104, 5117, 
229         5130, 5147, 5160, 5172, 5183, 5196, 5208, 5219, 
230         5232, 5244, 5255, 5268, 5280, 5288, 5304, 5312, 
231         5315, 5323, 5335
232 };
233
234 static const short _indic_syllable_machine_indicies[] = {
235         1, 2, 0, 0, 0, 0, 0, 0, 
236         0, 0, 0, 0, 0, 0, 0, 1, 
237         0, 3, 0, 4, 4, 5, 0, 6, 
238         6, 5, 0, 5, 0, 7, 7, 8, 
239         0, 9, 9, 8, 0, 8, 0, 10, 
240         10, 11, 0, 12, 12, 11, 0, 11, 
241         0, 13, 13, 14, 0, 15, 15, 14, 
242         0, 14, 0, 16, 0, 17, 0, 18, 
243         0, 19, 13, 13, 14, 0, 20, 0, 
244         21, 0, 22, 10, 10, 11, 0, 23, 
245         0, 24, 0, 25, 7, 7, 8, 0, 
246         26, 0, 27, 0, 28, 4, 4, 5, 
247         0, 0, 0, 0, 0, 0, 28, 0, 
248         28, 4, 4, 5, 0, 0, 0, 0, 
249         0, 29, 28, 0, 30, 4, 4, 5, 
250         0, 0, 0, 0, 0, 0, 30, 0, 
251         30, 4, 4, 5, 0, 0, 0, 0, 
252         0, 31, 30, 0, 32, 4, 4, 5, 
253         0, 0, 0, 0, 0, 0, 32, 0, 
254         32, 4, 4, 5, 0, 0, 0, 0, 
255         0, 33, 32, 0, 34, 4, 4, 5, 
256         0, 0, 0, 0, 0, 0, 34, 0, 
257         34, 4, 4, 5, 0, 0, 0, 0, 
258         0, 35, 34, 0, 36, 4, 4, 5, 
259         0, 0, 0, 0, 0, 0, 36, 0, 
260         36, 4, 4, 5, 0, 0, 0, 0, 
261         0, 37, 36, 0, 39, 40, 38, 38, 
262         38, 38, 38, 38, 38, 38, 38, 38, 
263         38, 38, 38, 39, 38, 41, 38, 42, 
264         42, 43, 38, 44, 44, 43, 38, 43, 
265         38, 45, 45, 46, 38, 47, 47, 46, 
266         38, 46, 38, 48, 48, 49, 38, 50, 
267         50, 49, 38, 49, 38, 51, 51, 52, 
268         38, 53, 53, 52, 38, 52, 38, 54, 
269         38, 55, 38, 56, 38, 57, 51, 51, 
270         52, 38, 58, 38, 59, 38, 60, 48, 
271         48, 49, 38, 61, 38, 62, 38, 63, 
272         45, 45, 46, 38, 64, 38, 65, 38, 
273         66, 42, 42, 43, 38, 38, 38, 38, 
274         38, 38, 66, 38, 66, 42, 42, 43, 
275         38, 38, 38, 38, 38, 67, 66, 38, 
276         68, 42, 42, 43, 38, 38, 38, 38, 
277         38, 38, 68, 38, 68, 42, 42, 43, 
278         38, 38, 38, 38, 38, 69, 68, 38, 
279         70, 42, 42, 43, 38, 38, 38, 38, 
280         38, 38, 70, 38, 70, 42, 42, 43, 
281         38, 38, 38, 38, 38, 71, 70, 38, 
282         72, 42, 42, 43, 38, 38, 38, 38, 
283         38, 38, 72, 38, 72, 42, 42, 43, 
284         38, 38, 38, 38, 38, 73, 72, 38, 
285         74, 42, 42, 43, 38, 38, 38, 38, 
286         38, 38, 74, 38, 74, 42, 42, 43, 
287         38, 38, 38, 38, 38, 75, 74, 38, 
288         77, 78, 76, 76, 76, 76, 76, 76, 
289         76, 76, 76, 76, 76, 76, 76, 77, 
290         76, 79, 76, 80, 80, 81, 76, 83, 
291         83, 81, 82, 81, 82, 84, 84, 85, 
292         76, 86, 86, 85, 76, 85, 76, 87, 
293         87, 88, 76, 89, 89, 88, 76, 88, 
294         76, 90, 90, 91, 76, 92, 92, 91, 
295         76, 91, 76, 93, 76, 94, 76, 95, 
296         76, 96, 90, 90, 91, 76, 97, 76, 
297         98, 76, 99, 87, 87, 88, 76, 100, 
298         76, 101, 76, 102, 84, 84, 85, 76, 
299         103, 76, 104, 76, 105, 80, 80, 81, 
300         76, 76, 76, 76, 76, 76, 105, 76, 
301         105, 80, 80, 81, 76, 76, 76, 76, 
302         76, 106, 105, 76, 107, 80, 80, 81, 
303         76, 76, 76, 76, 76, 76, 107, 76, 
304         107, 80, 80, 81, 76, 76, 76, 76, 
305         76, 108, 107, 76, 109, 80, 80, 81, 
306         76, 76, 76, 76, 76, 76, 109, 76, 
307         109, 80, 80, 81, 76, 76, 76, 76, 
308         76, 110, 109, 76, 111, 80, 80, 81, 
309         82, 82, 82, 82, 82, 82, 111, 82, 
310         111, 80, 80, 81, 76, 76, 76, 76, 
311         76, 112, 111, 76, 113, 80, 80, 81, 
312         76, 76, 76, 76, 76, 76, 113, 76, 
313         115, 116, 114, 114, 114, 114, 114, 114, 
314         114, 114, 114, 114, 114, 114, 114, 115, 
315         114, 117, 114, 118, 118, 119, 114, 120, 
316         120, 119, 114, 119, 114, 121, 121, 122, 
317         114, 123, 123, 122, 114, 122, 114, 124, 
318         124, 125, 114, 126, 126, 125, 114, 125, 
319         114, 127, 127, 128, 114, 129, 129, 128, 
320         114, 128, 114, 130, 114, 131, 114, 132, 
321         114, 133, 127, 127, 128, 114, 134, 114, 
322         135, 114, 136, 124, 124, 125, 114, 137, 
323         114, 138, 114, 139, 121, 121, 122, 114, 
324         140, 114, 141, 114, 142, 118, 118, 119, 
325         114, 114, 114, 114, 114, 114, 142, 114, 
326         142, 118, 118, 119, 114, 114, 114, 114, 
327         114, 143, 142, 114, 144, 118, 118, 119, 
328         114, 114, 114, 114, 114, 114, 144, 114, 
329         144, 118, 118, 119, 114, 114, 114, 114, 
330         114, 145, 144, 114, 146, 118, 118, 119, 
331         114, 114, 114, 114, 114, 114, 146, 114, 
332         146, 118, 118, 119, 114, 114, 114, 114, 
333         114, 147, 146, 114, 148, 118, 118, 119, 
334         114, 114, 114, 114, 114, 114, 148, 114, 
335         148, 118, 118, 119, 114, 114, 114, 114, 
336         114, 149, 148, 114, 150, 118, 118, 119, 
337         114, 114, 114, 114, 114, 114, 150, 114, 
338         150, 118, 118, 119, 114, 114, 114, 114, 
339         114, 151, 150, 114, 113, 80, 80, 81, 
340         76, 76, 76, 76, 76, 152, 113, 76, 
341         111, 80, 80, 81, 0, 0, 0, 0, 
342         0, 153, 111, 0, 154, 154, 155, 0, 
343         6, 6, 155, 0, 156, 156, 157, 0, 
344         158, 158, 157, 0, 157, 0, 159, 159, 
345         160, 0, 161, 161, 160, 0, 160, 0, 
346         162, 162, 163, 0, 164, 164, 163, 0, 
347         163, 0, 165, 166, 0, 0, 0, 0, 
348         0, 0, 0, 0, 0, 0, 0, 0, 
349         0, 165, 0, 167, 0, 168, 0, 169, 
350         0, 170, 0, 171, 162, 162, 163, 0, 
351         172, 0, 173, 0, 174, 159, 159, 160, 
352         0, 175, 0, 176, 0, 177, 156, 156, 
353         157, 0, 178, 0, 179, 0, 181, 182, 
354         183, 184, 185, 186, 81, 187, 188, 180, 
355         189, 189, 152, 190, 191, 192, 180, 194, 
356         195, 196, 197, 5, 198, 199, 200, 193, 
357         193, 37, 201, 193, 193, 181, 193, 202, 
358         195, 203, 203, 5, 198, 199, 200, 193, 
359         193, 193, 201, 193, 195, 203, 203, 5, 
360         198, 199, 200, 193, 193, 193, 201, 193, 
361         204, 193, 193, 193, 18, 205, 193, 198, 
362         199, 193, 193, 193, 193, 206, 193, 204, 
363         193, 207, 208, 209, 210, 5, 198, 199, 
364         200, 193, 193, 35, 211, 193, 193, 204, 
365         193, 212, 208, 213, 213, 5, 198, 199, 
366         200, 193, 193, 193, 211, 193, 208, 213, 
367         213, 5, 198, 199, 200, 193, 193, 193, 
368         211, 193, 214, 193, 193, 193, 18, 215, 
369         193, 198, 199, 193, 193, 193, 193, 206, 
370         193, 214, 193, 216, 217, 218, 219, 5, 
371         198, 199, 200, 193, 193, 33, 220, 193, 
372         193, 214, 193, 221, 217, 222, 222, 5, 
373         198, 199, 200, 193, 193, 193, 220, 193, 
374         217, 222, 222, 5, 198, 199, 200, 193, 
375         193, 193, 220, 193, 223, 193, 193, 193, 
376         18, 224, 193, 198, 199, 193, 193, 193, 
377         193, 206, 193, 223, 193, 225, 226, 227, 
378         228, 5, 198, 199, 200, 193, 193, 31, 
379         229, 193, 193, 223, 193, 230, 226, 231, 
380         231, 5, 198, 199, 200, 193, 193, 193, 
381         229, 193, 226, 231, 231, 5, 198, 199, 
382         200, 193, 193, 193, 229, 193, 232, 193, 
383         193, 193, 18, 233, 193, 198, 199, 193, 
384         193, 193, 193, 206, 193, 232, 193, 234, 
385         235, 236, 237, 5, 198, 199, 200, 193, 
386         193, 29, 238, 193, 193, 232, 193, 239, 
387         235, 240, 240, 5, 198, 199, 200, 193, 
388         193, 193, 238, 193, 235, 240, 240, 5, 
389         198, 199, 200, 193, 193, 193, 238, 193, 
390         18, 241, 193, 198, 199, 193, 193, 193, 
391         193, 206, 193, 198, 199, 193, 193, 193, 
392         193, 206, 193, 242, 193, 193, 193, 199, 
393         193, 199, 193, 243, 193, 244, 193, 245, 
394         246, 193, 198, 199, 193, 193, 193, 3, 
395         193, 193, 193, 1, 193, 2, 193, 193, 
396         193, 193, 198, 199, 193, 198, 199, 193, 
397         244, 193, 193, 193, 193, 198, 199, 193, 
398         244, 193, 245, 193, 193, 198, 199, 193, 
399         193, 193, 3, 193, 18, 193, 247, 247, 
400         5, 198, 199, 193, 193, 193, 193, 206, 
401         193, 248, 27, 249, 250, 8, 198, 199, 
402         193, 193, 193, 193, 206, 193, 27, 249, 
403         250, 8, 198, 199, 193, 193, 193, 193, 
404         206, 193, 249, 249, 8, 198, 199, 193, 
405         193, 193, 193, 206, 193, 251, 24, 252, 
406         253, 11, 198, 199, 193, 193, 193, 193, 
407         206, 193, 24, 252, 253, 11, 198, 199, 
408         193, 193, 193, 193, 206, 193, 252, 252, 
409         11, 198, 199, 193, 193, 193, 193, 206, 
410         193, 254, 21, 255, 256, 14, 198, 199, 
411         193, 193, 193, 193, 206, 193, 21, 255, 
412         256, 14, 198, 199, 193, 193, 193, 193, 
413         206, 193, 255, 255, 14, 198, 199, 193, 
414         193, 193, 193, 206, 193, 257, 18, 193, 
415         258, 193, 198, 199, 193, 193, 193, 193, 
416         206, 193, 18, 193, 258, 193, 198, 199, 
417         193, 193, 193, 193, 206, 193, 259, 193, 
418         198, 199, 193, 193, 193, 193, 206, 193, 
419         18, 193, 193, 193, 193, 198, 199, 193, 
420         193, 193, 193, 206, 193, 235, 240, 240, 
421         5, 198, 199, 193, 193, 193, 193, 238, 
422         193, 1, 2, 193, 193, 18, 241, 193, 
423         198, 199, 193, 193, 193, 193, 206, 193, 
424         1, 193, 234, 235, 240, 240, 5, 198, 
425         199, 200, 193, 193, 193, 238, 193, 234, 
426         235, 236, 240, 5, 198, 199, 200, 193, 
427         193, 29, 238, 193, 232, 193, 260, 193, 
428         247, 247, 5, 198, 199, 193, 193, 193, 
429         193, 206, 193, 232, 193, 232, 193, 193, 
430         193, 193, 193, 193, 198, 199, 193, 193, 
431         193, 193, 206, 193, 232, 193, 232, 193, 
432         193, 193, 193, 261, 193, 198, 199, 193, 
433         193, 193, 193, 206, 193, 232, 193, 232, 
434         193, 260, 193, 193, 193, 193, 198, 199, 
435         193, 193, 193, 193, 206, 193, 232, 193, 
436         232, 2, 193, 193, 18, 233, 193, 198, 
437         199, 193, 193, 193, 193, 206, 193, 232, 
438         193, 225, 226, 231, 231, 5, 198, 199, 
439         200, 193, 193, 193, 229, 193, 225, 226, 
440         227, 231, 5, 198, 199, 200, 193, 193, 
441         31, 229, 193, 223, 193, 262, 193, 247, 
442         247, 5, 198, 199, 193, 193, 193, 193, 
443         206, 193, 223, 193, 223, 193, 193, 193, 
444         193, 193, 193, 198, 199, 193, 193, 193, 
445         193, 206, 193, 223, 193, 223, 193, 193, 
446         193, 193, 263, 193, 198, 199, 193, 193, 
447         193, 193, 206, 193, 223, 193, 223, 193, 
448         262, 193, 193, 193, 193, 198, 199, 193, 
449         193, 193, 193, 206, 193, 223, 193, 223, 
450         2, 193, 193, 18, 224, 193, 198, 199, 
451         193, 193, 193, 193, 206, 193, 223, 193, 
452         216, 217, 222, 222, 5, 198, 199, 200, 
453         193, 193, 193, 220, 193, 216, 217, 218, 
454         222, 5, 198, 199, 200, 193, 193, 33, 
455         220, 193, 214, 193, 264, 193, 247, 247, 
456         5, 198, 199, 193, 193, 193, 193, 206, 
457         193, 214, 193, 214, 193, 193, 193, 193, 
458         193, 193, 198, 199, 193, 193, 193, 193, 
459         206, 193, 214, 193, 214, 193, 193, 193, 
460         193, 265, 193, 198, 199, 193, 193, 193, 
461         193, 206, 193, 214, 193, 214, 193, 264, 
462         193, 193, 193, 193, 198, 199, 193, 193, 
463         193, 193, 206, 193, 214, 193, 214, 2, 
464         193, 193, 18, 215, 193, 198, 199, 193, 
465         193, 193, 193, 206, 193, 214, 193, 207, 
466         208, 213, 213, 5, 198, 199, 200, 193, 
467         193, 193, 211, 193, 207, 208, 209, 213, 
468         5, 198, 199, 200, 193, 193, 35, 211, 
469         193, 204, 193, 266, 193, 247, 247, 5, 
470         198, 199, 193, 193, 193, 193, 206, 193, 
471         204, 193, 204, 193, 193, 193, 193, 193, 
472         193, 198, 199, 193, 193, 193, 193, 206, 
473         193, 204, 193, 204, 193, 193, 193, 193, 
474         267, 193, 198, 199, 193, 193, 193, 193, 
475         206, 193, 204, 193, 204, 193, 266, 193, 
476         193, 193, 193, 198, 199, 193, 193, 193, 
477         193, 206, 193, 204, 193, 204, 2, 193, 
478         193, 18, 205, 193, 198, 199, 193, 193, 
479         193, 193, 206, 193, 204, 193, 194, 195, 
480         203, 203, 5, 198, 199, 200, 193, 193, 
481         193, 201, 193, 194, 195, 196, 203, 5, 
482         198, 199, 200, 193, 193, 37, 201, 193, 
483         269, 270, 271, 272, 43, 273, 274, 268, 
484         268, 268, 75, 275, 268, 276, 270, 277, 
485         272, 43, 273, 274, 268, 268, 268, 268, 
486         275, 268, 270, 277, 272, 43, 273, 274, 
487         268, 268, 268, 268, 275, 268, 278, 268, 
488         268, 268, 56, 279, 268, 273, 274, 268, 
489         268, 268, 268, 280, 268, 278, 268, 281, 
490         282, 283, 284, 43, 273, 274, 268, 268, 
491         268, 73, 285, 268, 268, 278, 268, 286, 
492         282, 287, 287, 43, 273, 274, 268, 268, 
493         268, 268, 285, 268, 282, 287, 287, 43, 
494         273, 274, 268, 268, 268, 268, 285, 268, 
495         288, 268, 268, 268, 56, 289, 268, 273, 
496         274, 268, 268, 268, 268, 280, 268, 288, 
497         268, 290, 291, 292, 293, 43, 273, 274, 
498         268, 268, 268, 71, 294, 268, 268, 288, 
499         268, 295, 291, 296, 296, 43, 273, 274, 
500         268, 268, 268, 268, 294, 268, 291, 296, 
501         296, 43, 273, 274, 268, 268, 268, 268, 
502         294, 268, 297, 268, 268, 268, 56, 298, 
503         268, 273, 274, 268, 268, 268, 268, 280, 
504         268, 297, 268, 299, 300, 301, 302, 43, 
505         273, 274, 268, 268, 268, 69, 303, 268, 
506         268, 297, 268, 304, 300, 305, 305, 43, 
507         273, 274, 268, 268, 268, 268, 303, 268, 
508         300, 305, 305, 43, 273, 274, 268, 268, 
509         268, 268, 303, 268, 306, 268, 268, 268, 
510         56, 307, 268, 273, 274, 268, 268, 268, 
511         268, 280, 268, 306, 268, 308, 309, 310, 
512         311, 43, 273, 274, 268, 268, 268, 67, 
513         312, 268, 268, 306, 268, 313, 309, 314, 
514         314, 43, 273, 274, 268, 268, 268, 268, 
515         312, 268, 309, 314, 314, 43, 273, 274, 
516         268, 268, 268, 268, 312, 268, 56, 315, 
517         268, 273, 274, 268, 268, 268, 268, 280, 
518         268, 273, 274, 268, 268, 268, 268, 280, 
519         268, 316, 268, 268, 268, 274, 268, 274, 
520         268, 317, 268, 318, 268, 319, 320, 268, 
521         273, 274, 268, 268, 268, 41, 268, 268, 
522         268, 39, 268, 40, 268, 268, 268, 268, 
523         273, 274, 268, 273, 274, 268, 318, 268, 
524         268, 268, 268, 273, 274, 268, 318, 268, 
525         319, 268, 268, 273, 274, 268, 268, 268, 
526         41, 268, 56, 268, 321, 321, 43, 273, 
527         274, 268, 268, 268, 268, 280, 268, 322, 
528         65, 323, 324, 46, 273, 274, 268, 268, 
529         268, 268, 280, 268, 65, 323, 324, 46, 
530         273, 274, 268, 268, 268, 268, 280, 268, 
531         323, 323, 46, 273, 274, 268, 268, 268, 
532         268, 280, 268, 325, 62, 326, 327, 49, 
533         273, 274, 268, 268, 268, 268, 280, 268, 
534         62, 326, 327, 49, 273, 274, 268, 268, 
535         268, 268, 280, 268, 326, 326, 49, 273, 
536         274, 268, 268, 268, 268, 280, 268, 328, 
537         59, 329, 330, 52, 273, 274, 268, 268, 
538         268, 268, 280, 268, 59, 329, 330, 52, 
539         273, 274, 268, 268, 268, 268, 280, 268, 
540         329, 329, 52, 273, 274, 268, 268, 268, 
541         268, 280, 268, 331, 56, 268, 332, 268, 
542         273, 274, 268, 268, 268, 268, 280, 268, 
543         56, 268, 332, 268, 273, 274, 268, 268, 
544         268, 268, 280, 268, 333, 268, 273, 274, 
545         268, 268, 268, 268, 280, 268, 56, 268, 
546         268, 268, 268, 273, 274, 268, 268, 268, 
547         268, 280, 268, 39, 40, 268, 268, 56, 
548         315, 268, 273, 274, 268, 268, 268, 268, 
549         280, 268, 39, 268, 308, 309, 314, 314, 
550         43, 273, 274, 268, 268, 268, 268, 312, 
551         268, 308, 309, 310, 314, 43, 273, 274, 
552         268, 268, 268, 67, 312, 268, 306, 268, 
553         334, 268, 321, 321, 43, 273, 274, 268, 
554         268, 268, 268, 280, 268, 306, 268, 306, 
555         268, 268, 268, 268, 268, 268, 273, 274, 
556         268, 268, 268, 268, 280, 268, 306, 268, 
557         306, 268, 268, 268, 268, 335, 268, 273, 
558         274, 268, 268, 268, 268, 280, 268, 306, 
559         268, 306, 268, 334, 268, 268, 268, 268, 
560         273, 274, 268, 268, 268, 268, 280, 268, 
561         306, 268, 306, 40, 268, 268, 56, 307, 
562         268, 273, 274, 268, 268, 268, 268, 280, 
563         268, 306, 268, 299, 300, 305, 305, 43, 
564         273, 274, 268, 268, 268, 268, 303, 268, 
565         299, 300, 301, 305, 43, 273, 274, 268, 
566         268, 268, 69, 303, 268, 297, 268, 336, 
567         268, 321, 321, 43, 273, 274, 268, 268, 
568         268, 268, 280, 268, 297, 268, 297, 268, 
569         268, 268, 268, 268, 268, 273, 274, 268, 
570         268, 268, 268, 280, 268, 297, 268, 297, 
571         268, 268, 268, 268, 337, 268, 273, 274, 
572         268, 268, 268, 268, 280, 268, 297, 268, 
573         297, 268, 336, 268, 268, 268, 268, 273, 
574         274, 268, 268, 268, 268, 280, 268, 297, 
575         268, 297, 40, 268, 268, 56, 298, 268, 
576         273, 274, 268, 268, 268, 268, 280, 268, 
577         297, 268, 290, 291, 296, 296, 43, 273, 
578         274, 268, 268, 268, 268, 294, 268, 290, 
579         291, 292, 296, 43, 273, 274, 268, 268, 
580         268, 71, 294, 268, 288, 268, 338, 268, 
581         321, 321, 43, 273, 274, 268, 268, 268, 
582         268, 280, 268, 288, 268, 288, 268, 268, 
583         268, 268, 268, 268, 273, 274, 268, 268, 
584         268, 268, 280, 268, 288, 268, 288, 268, 
585         268, 268, 268, 339, 268, 273, 274, 268, 
586         268, 268, 268, 280, 268, 288, 268, 288, 
587         268, 338, 268, 268, 268, 268, 273, 274, 
588         268, 268, 268, 268, 280, 268, 288, 268, 
589         288, 40, 268, 268, 56, 289, 268, 273, 
590         274, 268, 268, 268, 268, 280, 268, 288, 
591         268, 281, 282, 287, 287, 43, 273, 274, 
592         268, 268, 268, 268, 285, 268, 281, 282, 
593         283, 287, 43, 273, 274, 268, 268, 268, 
594         73, 285, 268, 278, 268, 340, 268, 321, 
595         321, 43, 273, 274, 268, 268, 268, 268, 
596         280, 268, 278, 268, 278, 268, 268, 268, 
597         268, 268, 268, 273, 274, 268, 268, 268, 
598         268, 280, 268, 278, 268, 278, 268, 268, 
599         268, 268, 341, 268, 273, 274, 268, 268, 
600         268, 268, 280, 268, 278, 268, 278, 268, 
601         340, 268, 268, 268, 268, 273, 274, 268, 
602         268, 268, 268, 280, 268, 278, 268, 74, 
603         42, 42, 43, 268, 268, 268, 268, 268, 
604         268, 74, 268, 278, 40, 268, 268, 56, 
605         279, 268, 273, 274, 268, 268, 268, 268, 
606         280, 268, 278, 268, 269, 270, 277, 272, 
607         43, 273, 274, 268, 268, 268, 268, 275, 
608         268, 343, 184, 344, 344, 81, 187, 188, 
609         342, 342, 342, 342, 190, 342, 184, 344, 
610         344, 81, 187, 188, 342, 342, 342, 342, 
611         190, 342, 345, 342, 342, 342, 95, 346, 
612         342, 187, 188, 342, 342, 342, 342, 347, 
613         342, 345, 342, 348, 349, 350, 351, 81, 
614         187, 188, 342, 342, 342, 112, 352, 342, 
615         342, 345, 342, 353, 349, 354, 354, 81, 
616         187, 188, 342, 342, 342, 342, 352, 342, 
617         349, 354, 354, 81, 187, 188, 342, 342, 
618         342, 342, 352, 342, 355, 342, 342, 342, 
619         95, 356, 342, 187, 188, 342, 342, 342, 
620         342, 347, 342, 355, 342, 357, 358, 359, 
621         360, 81, 187, 188, 342, 342, 342, 110, 
622         361, 342, 342, 355, 342, 362, 358, 363, 
623         363, 81, 187, 188, 342, 342, 342, 342, 
624         361, 342, 358, 363, 363, 81, 187, 188, 
625         342, 342, 342, 342, 361, 342, 364, 342, 
626         342, 342, 95, 365, 342, 187, 188, 342, 
627         342, 342, 342, 347, 342, 364, 342, 366, 
628         367, 368, 369, 81, 187, 188, 342, 342, 
629         342, 108, 370, 342, 342, 364, 342, 371, 
630         367, 372, 372, 81, 187, 188, 342, 342, 
631         342, 342, 370, 342, 367, 372, 372, 81, 
632         187, 188, 342, 342, 342, 342, 370, 342, 
633         373, 342, 342, 342, 95, 374, 342, 187, 
634         188, 342, 342, 342, 342, 347, 342, 373, 
635         342, 375, 376, 377, 378, 81, 187, 188, 
636         342, 342, 342, 106, 379, 342, 342, 373, 
637         342, 380, 376, 381, 381, 81, 187, 188, 
638         342, 342, 342, 342, 379, 342, 376, 381, 
639         381, 81, 187, 188, 342, 342, 342, 342, 
640         379, 342, 95, 382, 342, 187, 188, 342, 
641         342, 342, 342, 347, 342, 187, 188, 342, 
642         342, 342, 342, 347, 342, 383, 342, 342, 
643         342, 188, 342, 188, 342, 384, 342, 385, 
644         342, 386, 387, 342, 187, 188, 342, 342, 
645         342, 79, 342, 342, 342, 77, 342, 78, 
646         342, 342, 342, 342, 187, 188, 342, 187, 
647         188, 342, 385, 342, 342, 342, 342, 187, 
648         188, 342, 385, 342, 386, 342, 342, 187, 
649         188, 342, 342, 342, 79, 342, 95, 342, 
650         388, 388, 81, 187, 188, 342, 342, 342, 
651         342, 347, 342, 389, 104, 390, 391, 85, 
652         187, 188, 342, 342, 342, 342, 347, 342, 
653         104, 390, 391, 85, 187, 188, 342, 342, 
654         342, 342, 347, 342, 390, 390, 85, 187, 
655         188, 342, 342, 342, 342, 347, 342, 392, 
656         101, 393, 394, 88, 187, 188, 342, 342, 
657         342, 342, 347, 342, 101, 393, 394, 88, 
658         187, 188, 342, 342, 342, 342, 347, 342, 
659         393, 393, 88, 187, 188, 342, 342, 342, 
660         342, 347, 342, 395, 98, 396, 397, 91, 
661         187, 188, 342, 342, 342, 342, 347, 342, 
662         98, 396, 397, 91, 187, 188, 342, 342, 
663         342, 342, 347, 342, 396, 396, 91, 187, 
664         188, 342, 342, 342, 342, 347, 342, 398, 
665         95, 342, 399, 342, 187, 188, 342, 342, 
666         342, 342, 347, 342, 95, 342, 399, 342, 
667         187, 188, 342, 342, 342, 342, 347, 342, 
668         400, 342, 187, 188, 342, 342, 342, 342, 
669         347, 342, 95, 342, 342, 342, 342, 187, 
670         188, 342, 342, 342, 342, 347, 342, 77, 
671         78, 342, 342, 95, 382, 342, 187, 188, 
672         342, 342, 342, 342, 347, 342, 77, 342, 
673         375, 376, 381, 381, 81, 187, 188, 342, 
674         342, 342, 342, 379, 342, 375, 376, 377, 
675         381, 81, 187, 188, 342, 342, 342, 106, 
676         379, 342, 373, 342, 401, 342, 388, 388, 
677         81, 187, 188, 342, 342, 342, 342, 347, 
678         342, 373, 342, 373, 342, 342, 342, 342, 
679         342, 342, 187, 188, 342, 342, 342, 342, 
680         347, 342, 373, 342, 373, 342, 342, 342, 
681         342, 402, 342, 187, 188, 342, 342, 342, 
682         342, 347, 342, 373, 342, 373, 342, 401, 
683         342, 342, 342, 342, 187, 188, 342, 342, 
684         342, 342, 347, 342, 373, 342, 373, 78, 
685         342, 342, 95, 374, 342, 187, 188, 342, 
686         342, 342, 342, 347, 342, 373, 342, 366, 
687         367, 372, 372, 81, 187, 188, 342, 342, 
688         342, 342, 370, 342, 366, 367, 368, 372, 
689         81, 187, 188, 342, 342, 342, 108, 370, 
690         342, 364, 342, 403, 342, 388, 388, 81, 
691         187, 188, 342, 342, 342, 342, 347, 342, 
692         364, 342, 364, 342, 342, 342, 342, 342, 
693         342, 187, 188, 342, 342, 342, 342, 347, 
694         342, 364, 342, 364, 342, 342, 342, 342, 
695         404, 342, 187, 188, 342, 342, 342, 342, 
696         347, 342, 364, 342, 364, 342, 403, 342, 
697         342, 342, 342, 187, 188, 342, 342, 342, 
698         342, 347, 342, 364, 342, 364, 78, 342, 
699         342, 95, 365, 342, 187, 188, 342, 342, 
700         342, 342, 347, 342, 364, 342, 357, 358, 
701         363, 363, 81, 187, 188, 342, 342, 342, 
702         342, 361, 342, 357, 358, 359, 363, 81, 
703         187, 188, 342, 342, 342, 110, 361, 342, 
704         355, 342, 405, 342, 388, 388, 81, 187, 
705         188, 342, 342, 342, 342, 347, 342, 355, 
706         342, 355, 342, 342, 342, 342, 342, 342, 
707         187, 188, 342, 342, 342, 342, 347, 342, 
708         355, 342, 355, 342, 342, 342, 342, 406, 
709         342, 187, 188, 342, 342, 342, 342, 347, 
710         342, 355, 342, 355, 342, 405, 342, 342, 
711         342, 342, 187, 188, 342, 342, 342, 342, 
712         347, 342, 355, 342, 355, 78, 342, 342, 
713         95, 356, 342, 187, 188, 342, 342, 342, 
714         342, 347, 342, 355, 342, 348, 349, 354, 
715         354, 81, 187, 188, 342, 342, 342, 342, 
716         352, 342, 348, 349, 350, 354, 81, 187, 
717         188, 342, 342, 342, 112, 352, 342, 345, 
718         342, 407, 342, 388, 388, 81, 187, 188, 
719         342, 342, 342, 342, 347, 342, 345, 342, 
720         345, 342, 342, 342, 342, 342, 342, 187, 
721         188, 342, 342, 342, 342, 347, 342, 345, 
722         342, 345, 342, 342, 342, 342, 408, 342, 
723         187, 188, 342, 342, 342, 342, 347, 342, 
724         345, 342, 345, 342, 407, 342, 342, 342, 
725         342, 187, 188, 342, 342, 342, 342, 347, 
726         342, 345, 342, 345, 78, 342, 342, 95, 
727         346, 342, 187, 188, 342, 342, 342, 342, 
728         347, 342, 345, 342, 113, 80, 80, 81, 
729         409, 409, 409, 409, 409, 152, 113, 409, 
730         183, 184, 344, 344, 81, 187, 188, 342, 
731         342, 342, 342, 190, 342, 113, 80, 80, 
732         81, 409, 409, 409, 409, 409, 409, 113, 
733         409, 411, 412, 413, 414, 119, 415, 416, 
734         410, 410, 410, 151, 417, 410, 418, 412, 
735         414, 414, 119, 415, 416, 410, 410, 410, 
736         410, 417, 410, 412, 414, 414, 119, 415, 
737         416, 410, 410, 410, 410, 417, 410, 419, 
738         410, 410, 410, 132, 420, 410, 415, 416, 
739         410, 410, 410, 410, 421, 410, 419, 410, 
740         422, 423, 424, 425, 119, 415, 416, 410, 
741         410, 410, 149, 426, 410, 410, 419, 410, 
742         427, 423, 428, 428, 119, 415, 416, 410, 
743         410, 410, 410, 426, 410, 423, 428, 428, 
744         119, 415, 416, 410, 410, 410, 410, 426, 
745         410, 429, 410, 410, 410, 132, 430, 410, 
746         415, 416, 410, 410, 410, 410, 421, 410, 
747         429, 410, 431, 432, 433, 434, 119, 415, 
748         416, 410, 410, 410, 147, 435, 410, 410, 
749         429, 410, 436, 432, 437, 437, 119, 415, 
750         416, 410, 410, 410, 410, 435, 410, 432, 
751         437, 437, 119, 415, 416, 410, 410, 410, 
752         410, 435, 410, 438, 410, 410, 410, 132, 
753         439, 410, 415, 416, 410, 410, 410, 410, 
754         421, 410, 438, 410, 440, 441, 442, 443, 
755         119, 415, 416, 410, 410, 410, 145, 444, 
756         410, 410, 438, 410, 445, 441, 446, 446, 
757         119, 415, 416, 410, 410, 410, 410, 444, 
758         410, 441, 446, 446, 119, 415, 416, 410, 
759         410, 410, 410, 444, 410, 447, 410, 410, 
760         410, 132, 448, 410, 415, 416, 410, 410, 
761         410, 410, 421, 410, 447, 410, 449, 450, 
762         451, 452, 119, 415, 416, 410, 410, 410, 
763         143, 453, 410, 410, 447, 410, 454, 450, 
764         455, 455, 119, 415, 416, 410, 410, 410, 
765         410, 453, 410, 450, 455, 455, 119, 415, 
766         416, 410, 410, 410, 410, 453, 410, 132, 
767         456, 410, 415, 416, 410, 410, 410, 410, 
768         421, 410, 415, 416, 410, 410, 410, 410, 
769         421, 410, 457, 410, 410, 410, 416, 410, 
770         416, 410, 458, 410, 459, 410, 460, 461, 
771         410, 415, 416, 410, 410, 410, 117, 410, 
772         410, 410, 115, 410, 116, 410, 410, 410, 
773         410, 415, 416, 410, 415, 416, 410, 459, 
774         410, 410, 410, 410, 415, 416, 410, 459, 
775         410, 460, 410, 410, 415, 416, 410, 410, 
776         410, 117, 410, 132, 410, 462, 462, 119, 
777         415, 416, 410, 410, 410, 410, 421, 410, 
778         463, 141, 464, 465, 122, 415, 416, 410, 
779         410, 410, 410, 421, 410, 141, 464, 465, 
780         122, 415, 416, 410, 410, 410, 410, 421, 
781         410, 464, 464, 122, 415, 416, 410, 410, 
782         410, 410, 421, 410, 466, 138, 467, 468, 
783         125, 415, 416, 410, 410, 410, 410, 421, 
784         410, 138, 467, 468, 125, 415, 416, 410, 
785         410, 410, 410, 421, 410, 467, 467, 125, 
786         415, 416, 410, 410, 410, 410, 421, 410, 
787         469, 135, 470, 471, 128, 415, 416, 410, 
788         410, 410, 410, 421, 410, 135, 470, 471, 
789         128, 415, 416, 410, 410, 410, 410, 421, 
790         410, 470, 470, 128, 415, 416, 410, 410, 
791         410, 410, 421, 410, 472, 132, 410, 473, 
792         410, 415, 416, 410, 410, 410, 410, 421, 
793         410, 132, 410, 473, 410, 415, 416, 410, 
794         410, 410, 410, 421, 410, 474, 410, 415, 
795         416, 410, 410, 410, 410, 421, 410, 132, 
796         410, 410, 410, 410, 415, 416, 410, 410, 
797         410, 410, 421, 410, 115, 116, 410, 410, 
798         132, 456, 410, 415, 416, 410, 410, 410, 
799         410, 421, 410, 115, 410, 449, 450, 455, 
800         455, 119, 415, 416, 410, 410, 410, 410, 
801         453, 410, 449, 450, 451, 455, 119, 415, 
802         416, 410, 410, 410, 143, 453, 410, 447, 
803         410, 475, 410, 462, 462, 119, 415, 416, 
804         410, 410, 410, 410, 421, 410, 447, 410, 
805         447, 410, 410, 410, 410, 410, 410, 415, 
806         416, 410, 410, 410, 410, 421, 410, 447, 
807         410, 447, 410, 410, 410, 410, 476, 410, 
808         415, 416, 410, 410, 410, 410, 421, 410, 
809         447, 410, 447, 410, 475, 410, 410, 410, 
810         410, 415, 416, 410, 410, 410, 410, 421, 
811         410, 447, 410, 447, 116, 410, 410, 132, 
812         448, 410, 415, 416, 410, 410, 410, 410, 
813         421, 410, 447, 410, 440, 441, 446, 446, 
814         119, 415, 416, 410, 410, 410, 410, 444, 
815         410, 440, 441, 442, 446, 119, 415, 416, 
816         410, 410, 410, 145, 444, 410, 438, 410, 
817         477, 410, 462, 462, 119, 415, 416, 410, 
818         410, 410, 410, 421, 410, 438, 410, 438, 
819         410, 410, 410, 410, 410, 410, 415, 416, 
820         410, 410, 410, 410, 421, 410, 438, 410, 
821         438, 410, 410, 410, 410, 478, 410, 415, 
822         416, 410, 410, 410, 410, 421, 410, 438, 
823         410, 438, 410, 477, 410, 410, 410, 410, 
824         415, 416, 410, 410, 410, 410, 421, 410, 
825         438, 410, 438, 116, 410, 410, 132, 439, 
826         410, 415, 416, 410, 410, 410, 410, 421, 
827         410, 438, 410, 431, 432, 437, 437, 119, 
828         415, 416, 410, 410, 410, 410, 435, 410, 
829         431, 432, 433, 437, 119, 415, 416, 410, 
830         410, 410, 147, 435, 410, 429, 410, 479, 
831         410, 462, 462, 119, 415, 416, 410, 410, 
832         410, 410, 421, 410, 429, 410, 429, 410, 
833         410, 410, 410, 410, 410, 415, 416, 410, 
834         410, 410, 410, 421, 410, 429, 410, 429, 
835         410, 410, 410, 410, 480, 410, 415, 416, 
836         410, 410, 410, 410, 421, 410, 429, 410, 
837         429, 410, 479, 410, 410, 410, 410, 415, 
838         416, 410, 410, 410, 410, 421, 410, 429, 
839         410, 429, 116, 410, 410, 132, 430, 410, 
840         415, 416, 410, 410, 410, 410, 421, 410, 
841         429, 410, 422, 423, 428, 428, 119, 415, 
842         416, 410, 410, 410, 410, 426, 410, 422, 
843         423, 424, 428, 119, 415, 416, 410, 410, 
844         410, 149, 426, 410, 419, 410, 481, 410, 
845         462, 462, 119, 415, 416, 410, 410, 410, 
846         410, 421, 410, 419, 410, 419, 410, 410, 
847         410, 410, 410, 410, 415, 416, 410, 410, 
848         410, 410, 421, 410, 419, 410, 419, 410, 
849         410, 410, 410, 482, 410, 415, 416, 410, 
850         410, 410, 410, 421, 410, 419, 410, 419, 
851         410, 481, 410, 410, 410, 410, 415, 416, 
852         410, 410, 410, 410, 421, 410, 419, 410, 
853         419, 116, 410, 410, 132, 420, 410, 415, 
854         416, 410, 410, 410, 410, 421, 410, 419, 
855         410, 411, 412, 414, 414, 119, 415, 416, 
856         410, 410, 410, 410, 417, 410, 181, 182, 
857         183, 184, 483, 344, 81, 187, 188, 342, 
858         189, 189, 152, 190, 342, 181, 342, 194, 
859         484, 196, 197, 5, 198, 199, 200, 193, 
860         193, 37, 201, 193, 193, 181, 193, 204, 
861         182, 183, 184, 485, 486, 81, 487, 488, 
862         193, 189, 189, 152, 489, 193, 204, 193, 
863         113, 80, 80, 81, 198, 199, 193, 193, 
864         193, 152, 490, 193, 491, 2, 342, 342, 
865         342, 408, 342, 187, 188, 342, 342, 342, 
866         342, 347, 342, 491, 342, 492, 349, 493, 
867         494, 81, 487, 488, 193, 193, 193, 153, 
868         352, 193, 193, 491, 193, 495, 349, 354, 
869         354, 81, 487, 488, 193, 193, 193, 193, 
870         352, 193, 349, 354, 354, 81, 487, 488, 
871         193, 193, 193, 193, 352, 193, 496, 193, 
872         193, 193, 488, 193, 488, 193, 243, 193, 
873         492, 349, 354, 354, 81, 487, 488, 193, 
874         193, 193, 193, 352, 193, 492, 349, 493, 
875         354, 81, 487, 488, 193, 193, 193, 153, 
876         352, 193, 204, 193, 266, 113, 497, 497, 
877         155, 198, 199, 193, 193, 193, 193, 490, 
878         193, 204, 193, 498, 179, 499, 500, 157, 
879         487, 488, 193, 193, 193, 193, 501, 193, 
880         179, 499, 500, 157, 487, 488, 193, 193, 
881         193, 193, 501, 193, 499, 499, 157, 487, 
882         488, 193, 193, 193, 193, 501, 193, 502, 
883         176, 503, 504, 160, 487, 488, 193, 193, 
884         193, 193, 501, 193, 176, 503, 504, 160, 
885         487, 488, 193, 193, 193, 193, 501, 193, 
886         503, 503, 160, 487, 488, 193, 193, 193, 
887         193, 501, 193, 505, 173, 506, 507, 163, 
888         487, 488, 193, 193, 193, 193, 501, 193, 
889         173, 506, 507, 163, 487, 488, 193, 193, 
890         193, 193, 501, 193, 506, 506, 163, 487, 
891         488, 193, 193, 193, 193, 501, 193, 508, 
892         170, 193, 509, 193, 487, 488, 193, 193, 
893         193, 193, 501, 193, 170, 193, 509, 193, 
894         487, 488, 193, 193, 193, 193, 501, 193, 
895         487, 488, 193, 193, 193, 193, 501, 193, 
896         510, 193, 511, 512, 193, 487, 488, 193, 
897         193, 193, 167, 193, 193, 193, 165, 193, 
898         166, 193, 193, 193, 193, 487, 488, 193, 
899         487, 488, 193, 510, 193, 193, 193, 193, 
900         487, 488, 193, 510, 193, 511, 193, 193, 
901         487, 488, 193, 193, 193, 167, 193, 491, 
902         166, 342, 342, 95, 346, 342, 187, 188, 
903         342, 342, 342, 342, 347, 342, 491, 342, 
904         0
905 };
906
907 static const short _indic_syllable_machine_trans_targs[] = {
908         170, 195, 197, 198, 3, 201, 4, 6, 
909         204, 7, 9, 207, 10, 12, 210, 13, 
910         15, 16, 191, 18, 19, 209, 21, 22, 
911         206, 24, 25, 203, 212, 216, 220, 223, 
912         227, 230, 234, 237, 241, 244, 170, 270, 
913         272, 273, 39, 276, 40, 42, 279, 43, 
914         45, 282, 46, 48, 285, 49, 51, 52, 
915         266, 54, 55, 284, 57, 58, 281, 60, 
916         61, 278, 287, 290, 294, 297, 301, 304, 
917         308, 311, 315, 319, 170, 343, 345, 346, 
918         75, 349, 170, 76, 78, 352, 79, 81, 
919         355, 82, 84, 358, 85, 87, 88, 339, 
920         90, 91, 357, 93, 94, 354, 96, 97, 
921         351, 360, 363, 367, 370, 374, 377, 381, 
922         384, 388, 170, 418, 420, 421, 110, 424, 
923         111, 113, 427, 114, 116, 430, 117, 119, 
924         433, 120, 122, 123, 414, 125, 126, 432, 
925         128, 129, 429, 131, 132, 426, 435, 438, 
926         442, 445, 449, 452, 456, 459, 463, 466, 
927         392, 478, 146, 481, 148, 484, 149, 151, 
928         487, 152, 154, 490, 155, 493, 495, 496, 
929         159, 160, 492, 162, 163, 489, 165, 166, 
930         486, 168, 169, 483, 170, 171, 246, 320, 
931         322, 391, 393, 340, 342, 394, 390, 467, 
932         468, 170, 172, 174, 35, 245, 192, 194, 
933         214, 243, 173, 34, 175, 239, 0, 176, 
934         178, 33, 238, 236, 177, 32, 179, 232, 
935         180, 182, 31, 231, 229, 181, 30, 183, 
936         225, 184, 186, 29, 224, 222, 185, 28, 
937         187, 218, 188, 190, 27, 217, 215, 189, 
938         26, 200, 193, 170, 196, 1, 199, 2, 
939         202, 5, 23, 205, 8, 20, 208, 11, 
940         17, 211, 14, 213, 219, 221, 226, 228, 
941         233, 235, 240, 242, 170, 247, 249, 71, 
942         317, 267, 269, 318, 248, 70, 250, 313, 
943         36, 251, 253, 69, 312, 310, 252, 68, 
944         254, 306, 255, 257, 67, 305, 303, 256, 
945         66, 258, 299, 259, 261, 65, 298, 296, 
946         260, 64, 262, 292, 263, 265, 63, 291, 
947         289, 264, 62, 275, 268, 170, 271, 37, 
948         274, 38, 277, 41, 59, 280, 44, 56, 
949         283, 47, 53, 286, 50, 288, 293, 295, 
950         300, 302, 307, 309, 314, 316, 170, 321, 
951         106, 323, 386, 72, 324, 326, 105, 385, 
952         383, 325, 104, 327, 379, 328, 330, 103, 
953         378, 376, 329, 102, 331, 372, 332, 334, 
954         101, 371, 369, 333, 100, 335, 365, 336, 
955         338, 99, 364, 362, 337, 98, 348, 341, 
956         170, 344, 73, 347, 74, 350, 77, 95, 
957         353, 80, 92, 356, 83, 89, 359, 86, 
958         361, 366, 368, 373, 375, 380, 382, 387, 
959         389, 170, 170, 395, 397, 142, 141, 415, 
960         417, 465, 396, 398, 461, 107, 399, 401, 
961         140, 460, 458, 400, 139, 402, 454, 403, 
962         405, 138, 453, 451, 404, 137, 406, 447, 
963         407, 409, 136, 446, 444, 408, 135, 410, 
964         440, 411, 413, 134, 439, 437, 412, 133, 
965         423, 416, 170, 419, 108, 422, 109, 425, 
966         112, 130, 428, 115, 127, 431, 118, 124, 
967         434, 121, 436, 441, 443, 448, 450, 455, 
968         457, 462, 464, 143, 469, 470, 480, 475, 
969         477, 498, 471, 472, 473, 144, 479, 474, 
970         476, 145, 482, 147, 167, 156, 485, 150, 
971         164, 488, 153, 161, 491, 158, 494, 157, 
972         497
973 };
974
975 static const char _indic_syllable_machine_trans_actions[] = {
976         1, 2, 0, 0, 0, 2, 0, 0, 
977         2, 0, 0, 2, 0, 0, 2, 0, 
978         0, 0, 2, 0, 0, 2, 0, 0, 
979         2, 0, 0, 2, 2, 2, 2, 2, 
980         2, 2, 2, 2, 2, 2, 3, 2, 
981         0, 0, 0, 2, 0, 0, 2, 0, 
982         0, 2, 0, 0, 2, 0, 0, 0, 
983         2, 0, 0, 2, 0, 0, 2, 0, 
984         0, 2, 2, 2, 2, 2, 2, 2, 
985         2, 2, 2, 2, 4, 2, 0, 0, 
986         0, 2, 5, 0, 0, 2, 0, 0, 
987         2, 0, 0, 2, 0, 0, 0, 2, 
988         0, 0, 2, 0, 0, 2, 0, 0, 
989         2, 2, 6, 2, 6, 2, 6, 2, 
990         6, 2, 7, 2, 0, 0, 0, 2, 
991         0, 0, 2, 0, 0, 2, 0, 0, 
992         2, 0, 0, 0, 2, 0, 0, 2, 
993         0, 0, 2, 0, 0, 2, 2, 2, 
994         2, 2, 2, 2, 2, 2, 2, 2, 
995         6, 8, 0, 2, 0, 2, 0, 0, 
996         2, 0, 0, 2, 0, 2, 0, 0, 
997         0, 0, 2, 0, 0, 2, 0, 0, 
998         2, 0, 0, 2, 11, 2, 2, 6, 
999         2, 12, 12, 0, 0, 2, 2, 6, 
1000         2, 13, 2, 2, 0, 2, 0, 0, 
1001         2, 2, 2, 0, 2, 2, 0, 2, 
1002         2, 0, 2, 2, 2, 0, 2, 2, 
1003         2, 2, 0, 2, 2, 2, 0, 2, 
1004         2, 2, 2, 0, 2, 2, 2, 0, 
1005         2, 2, 2, 2, 0, 2, 2, 2, 
1006         0, 2, 0, 14, 0, 0, 2, 0, 
1007         2, 0, 0, 2, 0, 0, 2, 0, 
1008         0, 2, 0, 2, 2, 2, 2, 2, 
1009         2, 2, 2, 2, 15, 2, 2, 0, 
1010         2, 0, 0, 2, 2, 0, 2, 2, 
1011         0, 2, 2, 0, 2, 2, 2, 0, 
1012         2, 2, 2, 2, 0, 2, 2, 2, 
1013         0, 2, 2, 2, 2, 0, 2, 2, 
1014         2, 0, 2, 2, 2, 2, 0, 2, 
1015         2, 2, 0, 2, 0, 16, 0, 0, 
1016         2, 0, 2, 0, 0, 2, 0, 0, 
1017         2, 0, 0, 2, 0, 2, 2, 2, 
1018         2, 2, 2, 2, 2, 2, 17, 6, 
1019         0, 6, 6, 0, 6, 2, 0, 6, 
1020         2, 6, 0, 6, 6, 6, 2, 0, 
1021         6, 2, 6, 0, 6, 6, 6, 2, 
1022         0, 6, 2, 6, 0, 6, 6, 6, 
1023         2, 0, 6, 2, 6, 0, 6, 0, 
1024         18, 0, 0, 2, 0, 2, 0, 0, 
1025         2, 0, 0, 2, 0, 0, 2, 0, 
1026         2, 2, 2, 2, 2, 2, 2, 2, 
1027         2, 19, 20, 2, 2, 0, 0, 0, 
1028         0, 2, 2, 2, 2, 0, 2, 2, 
1029         0, 2, 2, 2, 0, 2, 2, 2, 
1030         2, 0, 2, 2, 2, 0, 2, 2, 
1031         2, 2, 0, 2, 2, 2, 0, 2, 
1032         2, 2, 2, 0, 2, 2, 2, 0, 
1033         2, 0, 21, 0, 0, 2, 0, 2, 
1034         0, 0, 2, 0, 0, 2, 0, 0, 
1035         2, 0, 2, 2, 2, 2, 2, 2, 
1036         2, 2, 2, 0, 0, 8, 2, 0, 
1037         0, 2, 2, 8, 8, 0, 8, 8, 
1038         0, 0, 2, 0, 0, 0, 2, 0, 
1039         0, 2, 0, 0, 2, 0, 0, 0, 
1040         2
1041 };
1042
1043 static const char _indic_syllable_machine_to_state_actions[] = {
1044         0, 0, 0, 0, 0, 0, 0, 0, 
1045         0, 0, 0, 0, 0, 0, 0, 0, 
1046         0, 0, 0, 0, 0, 0, 0, 0, 
1047         0, 0, 0, 0, 0, 0, 0, 0, 
1048         0, 0, 0, 0, 0, 0, 0, 0, 
1049         0, 0, 0, 0, 0, 0, 0, 0, 
1050         0, 0, 0, 0, 0, 0, 0, 0, 
1051         0, 0, 0, 0, 0, 0, 0, 0, 
1052         0, 0, 0, 0, 0, 0, 0, 0, 
1053         0, 0, 0, 0, 0, 0, 0, 0, 
1054         0, 0, 0, 0, 0, 0, 0, 0, 
1055         0, 0, 0, 0, 0, 0, 0, 0, 
1056         0, 0, 0, 0, 0, 0, 0, 0, 
1057         0, 0, 0, 0, 0, 0, 0, 0, 
1058         0, 0, 0, 0, 0, 0, 0, 0, 
1059         0, 0, 0, 0, 0, 0, 0, 0, 
1060         0, 0, 0, 0, 0, 0, 0, 0, 
1061         0, 0, 0, 0, 0, 0, 0, 0, 
1062         0, 0, 0, 0, 0, 0, 0, 0, 
1063         0, 0, 0, 0, 0, 0, 0, 0, 
1064         0, 0, 0, 0, 0, 0, 0, 0, 
1065         0, 0, 9, 0, 0, 0, 0, 0, 
1066         0, 0, 0, 0, 0, 0, 0, 0, 
1067         0, 0, 0, 0, 0, 0, 0, 0, 
1068         0, 0, 0, 0, 0, 0, 0, 0, 
1069         0, 0, 0, 0, 0, 0, 0, 0, 
1070         0, 0, 0, 0, 0, 0, 0, 0, 
1071         0, 0, 0, 0, 0, 0, 0, 0, 
1072         0, 0, 0, 0, 0, 0, 0, 0, 
1073         0, 0, 0, 0, 0, 0, 0, 0, 
1074         0, 0, 0, 0, 0, 0, 0, 0, 
1075         0, 0, 0, 0, 0, 0, 0, 0, 
1076         0, 0, 0, 0, 0, 0, 0, 0, 
1077         0, 0, 0, 0, 0, 0, 0, 0, 
1078         0, 0, 0, 0, 0, 0, 0, 0, 
1079         0, 0, 0, 0, 0, 0, 0, 0, 
1080         0, 0, 0, 0, 0, 0, 0, 0, 
1081         0, 0, 0, 0, 0, 0, 0, 0, 
1082         0, 0, 0, 0, 0, 0, 0, 0, 
1083         0, 0, 0, 0, 0, 0, 0, 0, 
1084         0, 0, 0, 0, 0, 0, 0, 0, 
1085         0, 0, 0, 0, 0, 0, 0, 0, 
1086         0, 0, 0, 0, 0, 0, 0, 0, 
1087         0, 0, 0, 0, 0, 0, 0, 0, 
1088         0, 0, 0, 0, 0, 0, 0, 0, 
1089         0, 0, 0, 0, 0, 0, 0, 0, 
1090         0, 0, 0, 0, 0, 0, 0, 0, 
1091         0, 0, 0, 0, 0, 0, 0, 0, 
1092         0, 0, 0, 0, 0, 0, 0, 0, 
1093         0, 0, 0, 0, 0, 0, 0, 0, 
1094         0, 0, 0, 0, 0, 0, 0, 0, 
1095         0, 0, 0, 0, 0, 0, 0, 0, 
1096         0, 0, 0, 0, 0, 0, 0, 0, 
1097         0, 0, 0, 0, 0, 0, 0, 0, 
1098         0, 0, 0, 0, 0, 0, 0, 0, 
1099         0, 0, 0, 0, 0, 0, 0, 0, 
1100         0, 0, 0, 0, 0, 0, 0, 0, 
1101         0, 0, 0, 0, 0, 0, 0, 0, 
1102         0, 0, 0, 0, 0, 0, 0, 0, 
1103         0, 0, 0, 0, 0, 0, 0, 0, 
1104         0, 0, 0, 0, 0, 0, 0, 0, 
1105         0, 0, 0, 0, 0, 0, 0, 0, 
1106         0, 0, 0
1107 };
1108
1109 static const char _indic_syllable_machine_from_state_actions[] = {
1110         0, 0, 0, 0, 0, 0, 0, 0, 
1111         0, 0, 0, 0, 0, 0, 0, 0, 
1112         0, 0, 0, 0, 0, 0, 0, 0, 
1113         0, 0, 0, 0, 0, 0, 0, 0, 
1114         0, 0, 0, 0, 0, 0, 0, 0, 
1115         0, 0, 0, 0, 0, 0, 0, 0, 
1116         0, 0, 0, 0, 0, 0, 0, 0, 
1117         0, 0, 0, 0, 0, 0, 0, 0, 
1118         0, 0, 0, 0, 0, 0, 0, 0, 
1119         0, 0, 0, 0, 0, 0, 0, 0, 
1120         0, 0, 0, 0, 0, 0, 0, 0, 
1121         0, 0, 0, 0, 0, 0, 0, 0, 
1122         0, 0, 0, 0, 0, 0, 0, 0, 
1123         0, 0, 0, 0, 0, 0, 0, 0, 
1124         0, 0, 0, 0, 0, 0, 0, 0, 
1125         0, 0, 0, 0, 0, 0, 0, 0, 
1126         0, 0, 0, 0, 0, 0, 0, 0, 
1127         0, 0, 0, 0, 0, 0, 0, 0, 
1128         0, 0, 0, 0, 0, 0, 0, 0, 
1129         0, 0, 0, 0, 0, 0, 0, 0, 
1130         0, 0, 0, 0, 0, 0, 0, 0, 
1131         0, 0, 10, 0, 0, 0, 0, 0, 
1132         0, 0, 0, 0, 0, 0, 0, 0, 
1133         0, 0, 0, 0, 0, 0, 0, 0, 
1134         0, 0, 0, 0, 0, 0, 0, 0, 
1135         0, 0, 0, 0, 0, 0, 0, 0, 
1136         0, 0, 0, 0, 0, 0, 0, 0, 
1137         0, 0, 0, 0, 0, 0, 0, 0, 
1138         0, 0, 0, 0, 0, 0, 0, 0, 
1139         0, 0, 0, 0, 0, 0, 0, 0, 
1140         0, 0, 0, 0, 0, 0, 0, 0, 
1141         0, 0, 0, 0, 0, 0, 0, 0, 
1142         0, 0, 0, 0, 0, 0, 0, 0, 
1143         0, 0, 0, 0, 0, 0, 0, 0, 
1144         0, 0, 0, 0, 0, 0, 0, 0, 
1145         0, 0, 0, 0, 0, 0, 0, 0, 
1146         0, 0, 0, 0, 0, 0, 0, 0, 
1147         0, 0, 0, 0, 0, 0, 0, 0, 
1148         0, 0, 0, 0, 0, 0, 0, 0, 
1149         0, 0, 0, 0, 0, 0, 0, 0, 
1150         0, 0, 0, 0, 0, 0, 0, 0, 
1151         0, 0, 0, 0, 0, 0, 0, 0, 
1152         0, 0, 0, 0, 0, 0, 0, 0, 
1153         0, 0, 0, 0, 0, 0, 0, 0, 
1154         0, 0, 0, 0, 0, 0, 0, 0, 
1155         0, 0, 0, 0, 0, 0, 0, 0, 
1156         0, 0, 0, 0, 0, 0, 0, 0, 
1157         0, 0, 0, 0, 0, 0, 0, 0, 
1158         0, 0, 0, 0, 0, 0, 0, 0, 
1159         0, 0, 0, 0, 0, 0, 0, 0, 
1160         0, 0, 0, 0, 0, 0, 0, 0, 
1161         0, 0, 0, 0, 0, 0, 0, 0, 
1162         0, 0, 0, 0, 0, 0, 0, 0, 
1163         0, 0, 0, 0, 0, 0, 0, 0, 
1164         0, 0, 0, 0, 0, 0, 0, 0, 
1165         0, 0, 0, 0, 0, 0, 0, 0, 
1166         0, 0, 0, 0, 0, 0, 0, 0, 
1167         0, 0, 0, 0, 0, 0, 0, 0, 
1168         0, 0, 0, 0, 0, 0, 0, 0, 
1169         0, 0, 0, 0, 0, 0, 0, 0, 
1170         0, 0, 0, 0, 0, 0, 0, 0, 
1171         0, 0, 0, 0, 0, 0, 0, 0, 
1172         0, 0, 0
1173 };
1174
1175 static const short _indic_syllable_machine_eof_trans[] = {
1176         1, 1, 1, 1, 1, 1, 1, 1, 
1177         1, 1, 1, 1, 1, 1, 1, 1, 
1178         1, 1, 1, 1, 1, 1, 1, 1, 
1179         1, 1, 1, 1, 1, 1, 1, 1, 
1180         1, 1, 1, 1, 39, 39, 39, 39, 
1181         39, 39, 39, 39, 39, 39, 39, 39, 
1182         39, 39, 39, 39, 39, 39, 39, 39, 
1183         39, 39, 39, 39, 39, 39, 39, 39, 
1184         39, 39, 39, 39, 39, 39, 39, 39, 
1185         77, 77, 77, 83, 83, 77, 77, 77, 
1186         77, 77, 77, 77, 77, 77, 77, 77, 
1187         77, 77, 77, 77, 77, 77, 77, 77, 
1188         77, 77, 77, 77, 77, 77, 77, 77, 
1189         83, 77, 77, 115, 115, 115, 115, 115, 
1190         115, 115, 115, 115, 115, 115, 115, 115, 
1191         115, 115, 115, 115, 115, 115, 115, 115, 
1192         115, 115, 115, 115, 115, 115, 115, 115, 
1193         115, 115, 115, 115, 115, 115, 115, 77, 
1194         1, 1, 1, 1, 1, 1, 1, 1, 
1195         1, 1, 1, 1, 1, 1, 1, 1, 
1196         1, 1, 1, 1, 1, 1, 1, 1, 
1197         1, 1, 0, 194, 194, 194, 194, 194, 
1198         194, 194, 194, 194, 194, 194, 194, 194, 
1199         194, 194, 194, 194, 194, 194, 194, 194, 
1200         194, 194, 194, 194, 194, 194, 194, 194, 
1201         194, 194, 194, 194, 194, 194, 194, 194, 
1202         194, 194, 194, 194, 194, 194, 194, 194, 
1203         194, 194, 194, 194, 194, 194, 194, 194, 
1204         194, 194, 194, 194, 194, 194, 194, 194, 
1205         194, 194, 194, 194, 194, 194, 194, 194, 
1206         194, 194, 194, 194, 194, 194, 269, 269, 
1207         269, 269, 269, 269, 269, 269, 269, 269, 
1208         269, 269, 269, 269, 269, 269, 269, 269, 
1209         269, 269, 269, 269, 269, 269, 269, 269, 
1210         269, 269, 269, 269, 269, 269, 269, 269, 
1211         269, 269, 269, 269, 269, 269, 269, 269, 
1212         269, 269, 269, 269, 269, 269, 269, 269, 
1213         269, 269, 269, 269, 269, 269, 269, 269, 
1214         269, 269, 269, 269, 269, 269, 269, 269, 
1215         269, 269, 269, 269, 269, 269, 269, 269, 
1216         343, 343, 343, 343, 343, 343, 343, 343, 
1217         343, 343, 343, 343, 343, 343, 343, 343, 
1218         343, 343, 343, 343, 343, 343, 343, 343, 
1219         343, 343, 343, 343, 343, 343, 343, 343, 
1220         343, 343, 343, 343, 343, 343, 343, 343, 
1221         343, 343, 343, 343, 343, 343, 343, 343, 
1222         343, 343, 343, 343, 343, 343, 343, 343, 
1223         343, 343, 343, 343, 343, 343, 343, 343, 
1224         343, 343, 343, 343, 343, 343, 343, 410, 
1225         343, 410, 411, 411, 411, 411, 411, 411, 
1226         411, 411, 411, 411, 411, 411, 411, 411, 
1227         411, 411, 411, 411, 411, 411, 411, 411, 
1228         411, 411, 411, 411, 411, 411, 411, 411, 
1229         411, 411, 411, 411, 411, 411, 411, 411, 
1230         411, 411, 411, 411, 411, 411, 411, 411, 
1231         411, 411, 411, 411, 411, 411, 411, 411, 
1232         411, 411, 411, 411, 411, 411, 411, 411, 
1233         411, 411, 411, 411, 411, 411, 411, 411, 
1234         411, 411, 411, 343, 194, 194, 194, 343, 
1235         194, 194, 194, 194, 194, 194, 194, 194, 
1236         194, 194, 194, 194, 194, 194, 194, 194, 
1237         194, 194, 194, 194, 194, 194, 194, 194, 
1238         194, 194, 343
1239 };
1240
1241 static const int indic_syllable_machine_start = 170;
1242 static const int indic_syllable_machine_first_final = 170;
1243 static const int indic_syllable_machine_error = -1;
1244
1245 static const int indic_syllable_machine_en_main = 170;
1246
1247
1248 #line 36 "../../src/hb-ot-shape-complex-indic-machine.rl"
1249
1250
1251
1252 #line 91 "../../src/hb-ot-shape-complex-indic-machine.rl"
1253
1254
1255 #define found_syllable(syllable_type) \
1256   HB_STMT_START { \
1257     if (0) fprintf (stderr, "syllable %d..%d %s\n", last, p+1, #syllable_type); \
1258     for (unsigned int i = last; i < p+1; i++) \
1259       info[i].syllable() = (syllable_serial << 4) | syllable_type; \
1260     last = p+1; \
1261     syllable_serial++; \
1262     if (unlikely (syllable_serial == 16)) syllable_serial = 1; \
1263   } HB_STMT_END
1264
1265 static void
1266 find_syllables (hb_buffer_t *buffer)
1267 {
1268   unsigned int p, pe, eof, ts HB_UNUSED, te, act;
1269   int cs;
1270   hb_glyph_info_t *info = buffer->info;
1271   
1272 #line 1273 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
1273         {
1274         cs = indic_syllable_machine_start;
1275         ts = 0;
1276         te = 0;
1277         act = 0;
1278         }
1279
1280 #line 112 "../../src/hb-ot-shape-complex-indic-machine.rl"
1281
1282
1283   p = 0;
1284   pe = eof = buffer->len;
1285
1286   unsigned int last = 0;
1287   unsigned int syllable_serial = 1;
1288   
1289 #line 1290 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
1290         {
1291         int _slen;
1292         int _trans;
1293         const unsigned char *_keys;
1294         const short *_inds;
1295         if ( p == pe )
1296                 goto _test_eof;
1297 _resume:
1298         switch ( _indic_syllable_machine_from_state_actions[cs] ) {
1299         case 10:
1300 #line 1 "NONE"
1301         {ts = p;}
1302         break;
1303 #line 1304 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
1304         }
1305
1306         _keys = _indic_syllable_machine_trans_keys + (cs<<1);
1307         _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs];
1308
1309         _slen = _indic_syllable_machine_key_spans[cs];
1310         _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) &&
1311                 ( info[p].indic_category()) <= _keys[1] ?
1312                 ( info[p].indic_category()) - _keys[0] : _slen ];
1313
1314 _eof_trans:
1315         cs = _indic_syllable_machine_trans_targs[_trans];
1316
1317         if ( _indic_syllable_machine_trans_actions[_trans] == 0 )
1318                 goto _again;
1319
1320         switch ( _indic_syllable_machine_trans_actions[_trans] ) {
1321         case 2:
1322 #line 1 "NONE"
1323         {te = p+1;}
1324         break;
1325         case 14:
1326 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl"
1327         {te = p+1;{ found_syllable (consonant_syllable); }}
1328         break;
1329         case 16:
1330 #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl"
1331         {te = p+1;{ found_syllable (vowel_syllable); }}
1332         break;
1333         case 21:
1334 #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl"
1335         {te = p+1;{ found_syllable (standalone_cluster); }}
1336         break;
1337         case 18:
1338 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl"
1339         {te = p+1;{ found_syllable (broken_cluster); }}
1340         break;
1341         case 11:
1342 #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl"
1343         {te = p+1;{ found_syllable (non_indic_cluster); }}
1344         break;
1345         case 13:
1346 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl"
1347         {te = p;p--;{ found_syllable (consonant_syllable); }}
1348         break;
1349         case 15:
1350 #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl"
1351         {te = p;p--;{ found_syllable (vowel_syllable); }}
1352         break;
1353         case 20:
1354 #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl"
1355         {te = p;p--;{ found_syllable (standalone_cluster); }}
1356         break;
1357         case 17:
1358 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl"
1359         {te = p;p--;{ found_syllable (broken_cluster); }}
1360         break;
1361         case 19:
1362 #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl"
1363         {te = p;p--;{ found_syllable (non_indic_cluster); }}
1364         break;
1365         case 1:
1366 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl"
1367         {{p = ((te))-1;}{ found_syllable (consonant_syllable); }}
1368         break;
1369         case 3:
1370 #line 84 "../../src/hb-ot-shape-complex-indic-machine.rl"
1371         {{p = ((te))-1;}{ found_syllable (vowel_syllable); }}
1372         break;
1373         case 7:
1374 #line 85 "../../src/hb-ot-shape-complex-indic-machine.rl"
1375         {{p = ((te))-1;}{ found_syllable (standalone_cluster); }}
1376         break;
1377         case 4:
1378 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl"
1379         {{p = ((te))-1;}{ found_syllable (broken_cluster); }}
1380         break;
1381         case 5:
1382 #line 1 "NONE"
1383         {       switch( act ) {
1384         case 1:
1385         {{p = ((te))-1;} found_syllable (consonant_syllable); }
1386         break;
1387         case 4:
1388         {{p = ((te))-1;} found_syllable (broken_cluster); }
1389         break;
1390         case 5:
1391         {{p = ((te))-1;} found_syllable (non_indic_cluster); }
1392         break;
1393         }
1394         }
1395         break;
1396         case 8:
1397 #line 1 "NONE"
1398         {te = p+1;}
1399 #line 83 "../../src/hb-ot-shape-complex-indic-machine.rl"
1400         {act = 1;}
1401         break;
1402         case 6:
1403 #line 1 "NONE"
1404         {te = p+1;}
1405 #line 86 "../../src/hb-ot-shape-complex-indic-machine.rl"
1406         {act = 4;}
1407         break;
1408         case 12:
1409 #line 1 "NONE"
1410         {te = p+1;}
1411 #line 87 "../../src/hb-ot-shape-complex-indic-machine.rl"
1412         {act = 5;}
1413         break;
1414 #line 1415 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
1415         }
1416
1417 _again:
1418         switch ( _indic_syllable_machine_to_state_actions[cs] ) {
1419         case 9:
1420 #line 1 "NONE"
1421         {ts = 0;}
1422         break;
1423 #line 1424 "../../src/hb-ot-shape-complex-indic-machine.hh.tmp"
1424         }
1425
1426         if ( ++p != pe )
1427                 goto _resume;
1428         _test_eof: {}
1429         if ( p == eof )
1430         {
1431         if ( _indic_syllable_machine_eof_trans[cs] > 0 ) {
1432                 _trans = _indic_syllable_machine_eof_trans[cs] - 1;
1433                 goto _eof_trans;
1434         }
1435         }
1436
1437         }
1438
1439 #line 121 "../../src/hb-ot-shape-complex-indic-machine.rl"
1440
1441 }
1442
1443 #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */