hb-ot-shaper-indic-machine.hh (43893B)
1 #line 1 "hb-ot-shaper-indic-machine.rl" 2 /* 3 * Copyright © 2011,2012 Google, Inc. 4 * 5 * This is part of HarfBuzz, a text shaping library. 6 * 7 * Permission is hereby granted, without written agreement and without 8 * license or royalty fees, to use, copy, modify, and distribute this 9 * software and its documentation for any purpose, provided that the 10 * above copyright notice and the following two paragraphs appear in 11 * all copies of this software. 12 * 13 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR 14 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES 15 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN 16 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 17 * DAMAGE. 18 * 19 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, 20 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 21 * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS 22 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO 23 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 24 * 25 * Google Author(s): Behdad Esfahbod 26 */ 27 28 #ifndef HB_OT_SHAPER_INDIC_MACHINE_HH 29 #define HB_OT_SHAPER_INDIC_MACHINE_HH 30 31 #include "hb.hh" 32 33 #include "hb-ot-layout.hh" 34 #include "hb-ot-shaper-indic.hh" 35 36 /* buffer var allocations */ 37 #define indic_category() ot_shaper_var_u8_category() /* indic_category_t */ 38 #define indic_position() ot_shaper_var_u8_auxiliary() /* indic_position_t */ 39 40 using indic_category_t = unsigned; 41 using indic_position_t = ot_position_t; 42 43 #define I_Cat(Cat) indic_syllable_machine_ex_##Cat 44 45 enum indic_syllable_type_t { 46 indic_consonant_syllable, 47 indic_vowel_syllable, 48 indic_standalone_cluster, 49 indic_symbol_cluster, 50 indic_broken_cluster, 51 indic_non_indic_cluster, 52 }; 53 54 55 #line 54 "hb-ot-shaper-indic-machine.hh" 56 #define indic_syllable_machine_ex_A 9u 57 #define indic_syllable_machine_ex_C 1u 58 #define indic_syllable_machine_ex_CM 16u 59 #define indic_syllable_machine_ex_CS 18u 60 #define indic_syllable_machine_ex_DOTTEDCIRCLE 11u 61 #define indic_syllable_machine_ex_H 4u 62 #define indic_syllable_machine_ex_M 7u 63 #define indic_syllable_machine_ex_MPst 13u 64 #define indic_syllable_machine_ex_N 3u 65 #define indic_syllable_machine_ex_PLACEHOLDER 10u 66 #define indic_syllable_machine_ex_RS 12u 67 #define indic_syllable_machine_ex_Ra 15u 68 #define indic_syllable_machine_ex_Repha 14u 69 #define indic_syllable_machine_ex_SM 8u 70 #define indic_syllable_machine_ex_SMPst 57u 71 #define indic_syllable_machine_ex_Symbol 17u 72 #define indic_syllable_machine_ex_V 2u 73 #define indic_syllable_machine_ex_VD 9u 74 #define indic_syllable_machine_ex_X 0u 75 #define indic_syllable_machine_ex_ZWJ 6u 76 #define indic_syllable_machine_ex_ZWNJ 5u 77 78 79 #line 76 "hb-ot-shaper-indic-machine.hh" 80 static const unsigned char _indic_syllable_machine_trans_keys[] = { 81 8u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 82 8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 4u, 57u, 83 8u, 57u, 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 4u, 57u, 8u, 57u, 84 5u, 57u, 5u, 57u, 13u, 13u, 4u, 57u, 4u, 57u, 5u, 57u, 8u, 57u, 1u, 57u, 85 3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 86 1u, 57u, 1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u, 87 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 88 1u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 89 1u, 57u, 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 4u, 57u, 5u, 57u, 90 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 3u, 57u, 4u, 57u, 3u, 57u, 3u, 57u, 91 4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, 92 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 93 5u, 57u, 3u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 4u, 57u, 3u, 57u, 3u, 57u, 94 4u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, 95 1u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 5u, 57u, 3u, 57u, 4u, 57u, 5u, 57u, 96 5u, 57u, 3u, 57u, 5u, 57u, 1u, 57u, 3u, 57u, 1u, 57u, 4u, 57u, 5u, 57u, 97 5u, 57u, 9u, 9u, 5u, 9u, 1u, 57u, 3u, 57u, 5u, 57u, 5u, 57u, 9u, 9u, 98 5u, 9u, 1u, 15u, 0 99 }; 100 101 static const char _indic_syllable_machine_key_spans[] = { 102 50, 54, 53, 53, 1, 54, 54, 54, 103 50, 53, 53, 1, 54, 54, 54, 54, 104 50, 53, 53, 1, 54, 54, 54, 50, 105 53, 53, 1, 54, 54, 53, 50, 57, 106 55, 55, 54, 57, 53, 53, 1, 5, 107 57, 57, 57, 55, 54, 53, 53, 54, 108 53, 55, 53, 55, 55, 55, 55, 54, 109 57, 55, 55, 54, 57, 53, 1, 5, 110 57, 57, 55, 54, 53, 53, 54, 53, 111 53, 55, 53, 55, 55, 54, 55, 55, 112 54, 57, 55, 57, 53, 1, 5, 57, 113 57, 55, 54, 53, 53, 55, 54, 53, 114 53, 55, 53, 55, 54, 54, 55, 55, 115 54, 57, 55, 57, 53, 1, 5, 57, 116 57, 55, 54, 53, 53, 55, 54, 53, 117 53, 55, 53, 57, 55, 57, 54, 53, 118 53, 1, 5, 57, 55, 53, 53, 1, 119 5, 15 120 }; 121 122 static const short _indic_syllable_machine_index_offsets[] = { 123 0, 51, 106, 160, 214, 216, 271, 326, 124 381, 432, 486, 540, 542, 597, 652, 707, 125 762, 813, 867, 921, 923, 978, 1033, 1088, 126 1139, 1193, 1247, 1249, 1304, 1359, 1413, 1464, 127 1522, 1578, 1634, 1689, 1747, 1801, 1855, 1857, 128 1863, 1921, 1979, 2037, 2093, 2148, 2202, 2256, 129 2311, 2365, 2421, 2475, 2531, 2587, 2643, 2699, 130 2754, 2812, 2868, 2924, 2979, 3037, 3091, 3093, 131 3099, 3157, 3215, 3271, 3326, 3380, 3434, 3489, 132 3543, 3597, 3653, 3707, 3763, 3819, 3874, 3930, 133 3986, 4041, 4099, 4155, 4213, 4267, 4269, 4275, 134 4333, 4391, 4447, 4502, 4556, 4610, 4666, 4721, 135 4775, 4829, 4885, 4939, 4995, 5050, 5105, 5161, 136 5217, 5272, 5330, 5386, 5444, 5498, 5500, 5506, 137 5564, 5622, 5678, 5733, 5787, 5841, 5897, 5952, 138 6006, 6060, 6116, 6170, 6228, 6284, 6342, 6397, 139 6451, 6505, 6507, 6513, 6571, 6627, 6681, 6735, 140 6737, 6743 141 }; 142 143 static const unsigned char _indic_syllable_machine_indicies[] = { 144 1, 0, 0, 0, 0, 0, 0, 0, 145 0, 0, 0, 0, 0, 0, 0, 0, 146 0, 0, 0, 0, 0, 0, 0, 0, 147 0, 0, 0, 0, 0, 0, 0, 0, 148 0, 0, 0, 0, 0, 0, 0, 0, 149 0, 0, 0, 0, 0, 0, 0, 0, 150 0, 1, 0, 2, 3, 3, 4, 5, 151 0, 0, 0, 0, 4, 0, 0, 0, 152 0, 0, 0, 0, 0, 0, 0, 0, 153 0, 0, 0, 0, 0, 0, 0, 0, 154 0, 0, 0, 0, 0, 0, 0, 0, 155 0, 0, 0, 0, 0, 0, 0, 0, 156 0, 0, 0, 0, 0, 0, 0, 0, 157 5, 0, 3, 3, 4, 6, 0, 0, 158 0, 0, 4, 0, 0, 0, 0, 0, 159 0, 0, 0, 0, 0, 0, 0, 0, 160 0, 0, 0, 0, 0, 0, 0, 0, 161 0, 0, 0, 0, 0, 0, 0, 0, 162 0, 0, 0, 0, 0, 0, 0, 0, 163 0, 0, 0, 0, 0, 0, 6, 0, 164 3, 3, 4, 5, 0, 0, 0, 0, 165 4, 0, 0, 0, 0, 0, 0, 0, 166 0, 0, 0, 0, 0, 0, 0, 0, 167 0, 0, 0, 0, 0, 0, 0, 0, 168 0, 0, 0, 0, 0, 0, 0, 0, 169 0, 0, 0, 0, 0, 0, 0, 0, 170 0, 0, 0, 0, 5, 0, 4, 0, 171 7, 3, 3, 4, 5, 0, 0, 0, 172 0, 4, 0, 0, 0, 0, 0, 0, 173 0, 0, 0, 0, 0, 0, 0, 0, 174 0, 0, 0, 0, 0, 0, 0, 0, 175 0, 0, 0, 0, 0, 0, 0, 0, 176 0, 0, 0, 0, 0, 0, 0, 0, 177 0, 0, 0, 0, 0, 5, 0, 2, 178 3, 3, 4, 5, 0, 0, 0, 8, 179 4, 0, 0, 0, 0, 0, 0, 0, 180 0, 0, 0, 0, 0, 0, 0, 0, 181 0, 0, 0, 0, 0, 0, 0, 0, 182 0, 0, 0, 0, 0, 0, 0, 0, 183 0, 0, 0, 0, 0, 0, 0, 0, 184 0, 0, 0, 0, 5, 0, 10, 11, 185 11, 12, 13, 9, 9, 9, 9, 12, 186 9, 9, 9, 9, 9, 9, 9, 9, 187 9, 9, 9, 9, 9, 9, 9, 9, 188 9, 9, 9, 9, 9, 9, 9, 9, 189 9, 9, 9, 9, 9, 9, 9, 9, 190 9, 9, 9, 9, 9, 9, 9, 9, 191 9, 9, 9, 13, 9, 14, 9, 9, 192 9, 9, 9, 9, 9, 9, 9, 9, 193 9, 9, 9, 9, 9, 9, 9, 9, 194 9, 9, 9, 9, 9, 9, 9, 9, 195 9, 9, 9, 9, 9, 9, 9, 9, 196 9, 9, 9, 9, 9, 9, 9, 9, 197 9, 9, 9, 9, 9, 9, 14, 9, 198 11, 11, 12, 15, 9, 9, 9, 9, 199 12, 9, 9, 9, 9, 9, 9, 9, 200 9, 9, 9, 9, 9, 9, 9, 9, 201 9, 9, 9, 9, 9, 9, 9, 9, 202 9, 9, 9, 9, 9, 9, 9, 9, 203 9, 9, 9, 9, 9, 9, 9, 9, 204 9, 9, 9, 9, 15, 9, 11, 11, 205 12, 13, 9, 9, 9, 9, 12, 9, 206 9, 9, 9, 9, 9, 9, 9, 9, 207 9, 9, 9, 9, 9, 9, 9, 9, 208 9, 9, 9, 9, 9, 9, 9, 9, 209 9, 9, 9, 9, 9, 9, 9, 9, 210 9, 9, 9, 9, 9, 9, 9, 9, 211 9, 9, 13, 9, 12, 9, 16, 11, 212 11, 12, 13, 9, 9, 9, 9, 12, 213 9, 9, 9, 9, 9, 9, 9, 9, 214 9, 9, 9, 9, 9, 9, 9, 9, 215 9, 9, 9, 9, 9, 9, 9, 9, 216 9, 9, 9, 9, 9, 9, 9, 9, 217 9, 9, 9, 9, 9, 9, 9, 9, 218 9, 9, 9, 13, 9, 10, 11, 11, 219 12, 13, 9, 9, 9, 17, 12, 9, 220 9, 9, 9, 9, 9, 9, 9, 9, 221 9, 9, 9, 9, 9, 9, 9, 9, 222 9, 9, 9, 9, 9, 9, 9, 9, 223 9, 9, 9, 9, 9, 9, 9, 9, 224 9, 9, 9, 9, 9, 9, 9, 9, 225 9, 9, 13, 9, 10, 11, 11, 12, 226 13, 9, 9, 9, 18, 12, 9, 9, 227 9, 9, 9, 9, 9, 9, 9, 9, 228 9, 9, 9, 9, 9, 9, 9, 9, 229 9, 9, 9, 9, 9, 9, 9, 9, 230 9, 9, 9, 9, 9, 9, 9, 9, 231 9, 9, 9, 9, 9, 9, 9, 9, 232 9, 13, 9, 20, 21, 21, 22, 23, 233 19, 19, 19, 24, 22, 19, 19, 19, 234 19, 19, 19, 19, 19, 19, 19, 19, 235 19, 19, 19, 19, 19, 19, 19, 19, 236 19, 19, 19, 19, 19, 19, 19, 19, 237 19, 19, 19, 19, 19, 19, 19, 19, 238 19, 19, 19, 19, 19, 19, 19, 19, 239 23, 19, 25, 19, 19, 19, 19, 19, 240 19, 19, 19, 19, 19, 19, 19, 19, 241 19, 19, 19, 19, 19, 19, 19, 19, 242 19, 19, 19, 19, 19, 19, 19, 19, 243 19, 19, 19, 19, 19, 19, 19, 19, 244 19, 19, 19, 19, 19, 19, 19, 19, 245 19, 19, 19, 25, 19, 21, 21, 22, 246 27, 26, 26, 26, 26, 22, 26, 26, 247 26, 26, 26, 26, 26, 26, 26, 26, 248 26, 26, 26, 26, 26, 26, 26, 26, 249 26, 26, 26, 26, 26, 26, 26, 26, 250 26, 26, 26, 26, 26, 26, 26, 26, 251 26, 26, 26, 26, 26, 26, 26, 26, 252 26, 27, 26, 21, 21, 22, 23, 19, 253 19, 19, 19, 22, 19, 19, 19, 19, 254 19, 19, 19, 19, 19, 19, 19, 19, 255 19, 19, 19, 19, 19, 19, 19, 19, 256 19, 19, 19, 19, 19, 19, 19, 19, 257 19, 19, 19, 19, 19, 19, 19, 19, 258 19, 19, 19, 19, 19, 19, 19, 23, 259 19, 22, 26, 20, 21, 21, 22, 23, 260 19, 19, 19, 19, 22, 19, 19, 19, 261 19, 19, 19, 19, 19, 19, 19, 19, 262 19, 19, 19, 19, 19, 19, 19, 19, 263 19, 19, 19, 19, 19, 19, 19, 19, 264 19, 19, 19, 19, 19, 19, 19, 19, 265 19, 19, 19, 19, 19, 19, 19, 19, 266 23, 19, 28, 21, 21, 22, 23, 19, 267 19, 19, 19, 22, 19, 19, 19, 19, 268 19, 19, 19, 19, 19, 19, 19, 19, 269 19, 19, 19, 19, 19, 19, 19, 19, 270 19, 19, 19, 19, 19, 19, 19, 19, 271 19, 19, 19, 19, 19, 19, 19, 19, 272 19, 19, 19, 19, 19, 19, 19, 23, 273 19, 30, 31, 31, 32, 33, 29, 29, 274 29, 34, 32, 29, 29, 29, 29, 29, 275 29, 29, 29, 29, 29, 29, 29, 29, 276 29, 29, 29, 29, 29, 29, 29, 29, 277 29, 29, 29, 29, 29, 29, 29, 29, 278 29, 29, 29, 29, 29, 29, 29, 29, 279 29, 29, 29, 29, 29, 29, 33, 29, 280 35, 29, 29, 29, 29, 29, 29, 29, 281 29, 29, 29, 29, 29, 29, 29, 29, 282 29, 29, 29, 29, 29, 29, 29, 29, 283 29, 29, 29, 29, 29, 29, 29, 29, 284 29, 29, 29, 29, 29, 29, 29, 29, 285 29, 29, 29, 29, 29, 29, 29, 29, 286 29, 35, 29, 31, 31, 32, 36, 29, 287 29, 29, 29, 32, 29, 29, 29, 29, 288 29, 29, 29, 29, 29, 29, 29, 29, 289 29, 29, 29, 29, 29, 29, 29, 29, 290 29, 29, 29, 29, 29, 29, 29, 29, 291 29, 29, 29, 29, 29, 29, 29, 29, 292 29, 29, 29, 29, 29, 29, 29, 36, 293 29, 31, 31, 32, 33, 29, 29, 29, 294 29, 32, 29, 29, 29, 29, 29, 29, 295 29, 29, 29, 29, 29, 29, 29, 29, 296 29, 29, 29, 29, 29, 29, 29, 29, 297 29, 29, 29, 29, 29, 29, 29, 29, 298 29, 29, 29, 29, 29, 29, 29, 29, 299 29, 29, 29, 29, 29, 33, 29, 32, 300 29, 30, 31, 31, 32, 33, 29, 29, 301 29, 29, 32, 29, 29, 29, 29, 29, 302 29, 29, 29, 29, 29, 29, 29, 29, 303 29, 29, 29, 29, 29, 29, 29, 29, 304 29, 29, 29, 29, 29, 29, 29, 29, 305 29, 29, 29, 29, 29, 29, 29, 29, 306 29, 29, 29, 29, 29, 29, 33, 29, 307 37, 31, 31, 32, 33, 29, 29, 29, 308 29, 32, 29, 29, 29, 29, 29, 29, 309 29, 29, 29, 29, 29, 29, 29, 29, 310 29, 29, 29, 29, 29, 29, 29, 29, 311 29, 29, 29, 29, 29, 29, 29, 29, 312 29, 29, 29, 29, 29, 29, 29, 29, 313 29, 29, 29, 29, 29, 33, 29, 21, 314 21, 22, 38, 0, 0, 0, 0, 22, 315 0, 0, 0, 0, 0, 0, 0, 0, 316 0, 0, 0, 0, 0, 0, 0, 0, 317 0, 0, 0, 0, 0, 0, 0, 0, 318 0, 0, 0, 0, 0, 0, 0, 0, 319 0, 0, 0, 0, 0, 0, 0, 0, 320 0, 0, 0, 38, 0, 40, 39, 39, 321 39, 39, 39, 39, 39, 39, 39, 39, 322 39, 39, 39, 39, 39, 39, 39, 39, 323 39, 39, 39, 39, 39, 39, 39, 39, 324 39, 39, 39, 39, 39, 39, 39, 39, 325 39, 39, 39, 39, 39, 39, 39, 39, 326 39, 39, 39, 39, 39, 39, 40, 39, 327 42, 43, 44, 45, 46, 47, 22, 23, 328 48, 49, 49, 24, 22, 50, 51, 52, 329 53, 54, 41, 41, 41, 41, 41, 41, 330 41, 41, 41, 41, 41, 41, 41, 41, 331 41, 41, 41, 41, 41, 41, 41, 41, 332 41, 41, 41, 41, 41, 41, 41, 41, 333 41, 41, 41, 41, 41, 41, 41, 41, 334 55, 41, 57, 58, 59, 60, 4, 5, 335 61, 56, 56, 8, 4, 56, 56, 62, 336 56, 56, 56, 56, 56, 56, 56, 56, 337 56, 56, 56, 56, 56, 56, 56, 56, 338 56, 56, 56, 56, 56, 56, 56, 56, 339 56, 56, 56, 56, 56, 56, 56, 56, 340 56, 56, 56, 56, 56, 56, 56, 56, 341 5, 56, 63, 58, 64, 64, 4, 5, 342 61, 56, 56, 56, 4, 56, 56, 62, 343 56, 56, 56, 56, 56, 56, 56, 56, 344 56, 56, 56, 56, 56, 56, 56, 56, 345 56, 56, 56, 56, 56, 56, 56, 56, 346 56, 56, 56, 56, 56, 56, 56, 56, 347 56, 56, 56, 56, 56, 56, 56, 56, 348 5, 56, 58, 64, 64, 4, 5, 61, 349 56, 56, 56, 4, 56, 56, 62, 56, 350 56, 56, 56, 56, 56, 56, 56, 56, 351 56, 56, 56, 56, 56, 56, 56, 56, 352 56, 56, 56, 56, 56, 56, 56, 56, 353 56, 56, 56, 56, 56, 56, 56, 56, 354 56, 56, 56, 56, 56, 56, 56, 5, 355 56, 42, 56, 56, 56, 65, 66, 56, 356 1, 61, 56, 56, 56, 56, 56, 42, 357 56, 56, 56, 56, 56, 56, 56, 56, 358 56, 56, 56, 56, 56, 56, 56, 56, 359 56, 56, 56, 56, 56, 56, 56, 56, 360 56, 56, 56, 56, 56, 56, 56, 56, 361 56, 56, 56, 56, 56, 56, 56, 56, 362 56, 1, 56, 67, 67, 56, 1, 61, 363 56, 56, 56, 56, 56, 56, 56, 56, 364 56, 56, 56, 56, 56, 56, 56, 56, 365 56, 56, 56, 56, 56, 56, 56, 56, 366 56, 56, 56, 56, 56, 56, 56, 56, 367 56, 56, 56, 56, 56, 56, 56, 56, 368 56, 56, 56, 56, 56, 56, 56, 1, 369 56, 61, 56, 56, 68, 61, 56, 56, 370 56, 56, 56, 56, 56, 56, 56, 56, 371 56, 56, 56, 56, 56, 56, 56, 56, 372 56, 56, 56, 56, 56, 56, 56, 56, 373 56, 56, 56, 56, 56, 56, 56, 56, 374 56, 56, 56, 56, 56, 56, 56, 56, 375 56, 56, 56, 56, 56, 68, 56, 61, 376 56, 61, 56, 56, 56, 61, 56, 42, 377 56, 69, 56, 67, 67, 56, 1, 61, 378 56, 56, 56, 56, 56, 42, 56, 56, 379 56, 56, 56, 56, 56, 56, 56, 56, 380 56, 56, 56, 56, 56, 56, 56, 56, 381 56, 56, 56, 56, 56, 56, 56, 56, 382 56, 56, 56, 56, 56, 56, 56, 56, 383 56, 56, 56, 56, 56, 56, 56, 1, 384 56, 42, 56, 56, 56, 67, 67, 56, 385 1, 61, 56, 56, 56, 56, 56, 42, 386 56, 56, 56, 56, 56, 56, 56, 56, 387 56, 56, 56, 56, 56, 56, 56, 56, 388 56, 56, 56, 56, 56, 56, 56, 56, 389 56, 56, 56, 56, 56, 56, 56, 56, 390 56, 56, 56, 56, 56, 56, 56, 56, 391 56, 1, 56, 42, 56, 56, 56, 67, 392 66, 56, 1, 61, 56, 56, 56, 56, 393 56, 42, 56, 56, 56, 56, 56, 56, 394 56, 56, 56, 56, 56, 56, 56, 56, 395 56, 56, 56, 56, 56, 56, 56, 56, 396 56, 56, 56, 56, 56, 56, 56, 56, 397 56, 56, 56, 56, 56, 56, 56, 56, 398 56, 56, 56, 1, 56, 70, 71, 72, 399 72, 4, 5, 61, 56, 56, 56, 4, 400 56, 56, 56, 56, 56, 56, 56, 56, 401 56, 56, 56, 56, 56, 56, 56, 56, 402 56, 56, 56, 56, 56, 56, 56, 56, 403 56, 56, 56, 56, 56, 56, 56, 56, 404 56, 56, 56, 56, 56, 56, 56, 56, 405 56, 56, 56, 5, 56, 71, 72, 72, 406 4, 5, 61, 56, 56, 56, 4, 56, 407 56, 56, 56, 56, 56, 56, 56, 56, 408 56, 56, 56, 56, 56, 56, 56, 56, 409 56, 56, 56, 56, 56, 56, 56, 56, 410 56, 56, 56, 56, 56, 56, 56, 56, 411 56, 56, 56, 56, 56, 56, 56, 56, 412 56, 56, 5, 56, 72, 72, 4, 5, 413 61, 56, 56, 56, 4, 56, 56, 56, 414 56, 56, 56, 56, 56, 56, 56, 56, 415 56, 56, 56, 56, 56, 56, 56, 56, 416 56, 56, 56, 56, 56, 56, 56, 56, 417 56, 56, 56, 56, 56, 56, 56, 56, 418 56, 56, 56, 56, 56, 56, 56, 56, 419 5, 56, 61, 56, 56, 68, 61, 56, 420 56, 56, 4, 56, 56, 56, 56, 56, 421 56, 56, 56, 56, 56, 56, 56, 56, 422 56, 56, 56, 56, 56, 56, 56, 56, 423 56, 56, 56, 56, 56, 56, 56, 56, 424 56, 56, 56, 56, 56, 56, 56, 56, 425 56, 56, 56, 56, 56, 56, 68, 56, 426 73, 74, 74, 4, 5, 61, 56, 56, 427 56, 4, 56, 56, 56, 56, 56, 56, 428 56, 56, 56, 56, 56, 56, 56, 56, 429 56, 56, 56, 56, 56, 56, 56, 56, 430 56, 56, 56, 56, 56, 56, 56, 56, 431 56, 56, 56, 56, 56, 56, 56, 56, 432 56, 56, 56, 56, 56, 5, 56, 65, 433 75, 56, 1, 61, 56, 56, 56, 56, 434 56, 56, 56, 56, 56, 56, 56, 56, 435 56, 56, 56, 56, 56, 56, 56, 56, 436 56, 56, 56, 56, 56, 56, 56, 56, 437 56, 56, 56, 56, 56, 56, 56, 56, 438 56, 56, 56, 56, 56, 56, 56, 56, 439 56, 56, 56, 1, 56, 65, 56, 67, 440 67, 56, 1, 61, 56, 56, 56, 56, 441 56, 56, 56, 56, 56, 56, 56, 56, 442 56, 56, 56, 56, 56, 56, 56, 56, 443 56, 56, 56, 56, 56, 56, 56, 56, 444 56, 56, 56, 56, 56, 56, 56, 56, 445 56, 56, 56, 56, 56, 56, 56, 56, 446 56, 56, 56, 1, 56, 67, 75, 56, 447 1, 61, 56, 56, 56, 56, 56, 56, 448 56, 56, 56, 56, 56, 56, 56, 56, 449 56, 56, 56, 56, 56, 56, 56, 56, 450 56, 56, 56, 56, 56, 56, 56, 56, 451 56, 56, 56, 56, 56, 56, 56, 56, 452 56, 56, 56, 56, 56, 56, 56, 56, 453 56, 1, 56, 57, 58, 64, 64, 4, 454 5, 61, 56, 56, 56, 4, 56, 56, 455 62, 56, 56, 56, 56, 56, 56, 56, 456 56, 56, 56, 56, 56, 56, 56, 56, 457 56, 56, 56, 56, 56, 56, 56, 56, 458 56, 56, 56, 56, 56, 56, 56, 56, 459 56, 56, 56, 56, 56, 56, 56, 56, 460 56, 5, 56, 57, 58, 59, 64, 4, 461 5, 61, 56, 56, 8, 4, 56, 56, 462 62, 56, 56, 56, 56, 56, 56, 56, 463 56, 56, 56, 56, 56, 56, 56, 56, 464 56, 56, 56, 56, 56, 56, 56, 56, 465 56, 56, 56, 56, 56, 56, 56, 56, 466 56, 56, 56, 56, 56, 56, 56, 56, 467 56, 5, 56, 77, 78, 79, 80, 12, 468 13, 81, 76, 76, 18, 12, 76, 76, 469 82, 76, 76, 76, 76, 76, 76, 76, 470 76, 76, 76, 76, 76, 76, 76, 76, 471 76, 76, 76, 76, 76, 76, 76, 76, 472 76, 76, 76, 76, 76, 76, 76, 76, 473 76, 76, 76, 76, 76, 76, 76, 76, 474 76, 13, 76, 83, 78, 84, 80, 12, 475 13, 81, 76, 76, 76, 12, 76, 76, 476 82, 76, 76, 76, 76, 76, 76, 76, 477 76, 76, 76, 76, 76, 76, 76, 76, 478 76, 76, 76, 76, 76, 76, 76, 76, 479 76, 76, 76, 76, 76, 76, 76, 76, 480 76, 76, 76, 76, 76, 76, 76, 76, 481 76, 13, 76, 78, 84, 80, 12, 13, 482 81, 76, 76, 76, 12, 76, 76, 82, 483 76, 76, 76, 76, 76, 76, 76, 76, 484 76, 76, 76, 76, 76, 76, 76, 76, 485 76, 76, 76, 76, 76, 76, 76, 76, 486 76, 76, 76, 76, 76, 76, 76, 76, 487 76, 76, 76, 76, 76, 76, 76, 76, 488 13, 76, 85, 76, 76, 76, 86, 87, 489 76, 14, 81, 76, 76, 76, 76, 76, 490 85, 76, 76, 76, 76, 76, 76, 76, 491 76, 76, 76, 76, 76, 76, 76, 76, 492 76, 76, 76, 76, 76, 76, 76, 76, 493 76, 76, 76, 76, 76, 76, 76, 76, 494 76, 76, 76, 76, 76, 76, 76, 76, 495 76, 76, 14, 76, 88, 78, 89, 90, 496 12, 13, 81, 76, 76, 17, 12, 76, 497 76, 82, 76, 76, 76, 76, 76, 76, 498 76, 76, 76, 76, 76, 76, 76, 76, 499 76, 76, 76, 76, 76, 76, 76, 76, 500 76, 76, 76, 76, 76, 76, 76, 76, 501 76, 76, 76, 76, 76, 76, 76, 76, 502 76, 76, 13, 76, 91, 78, 84, 84, 503 12, 13, 81, 76, 76, 76, 12, 76, 504 76, 82, 76, 76, 76, 76, 76, 76, 505 76, 76, 76, 76, 76, 76, 76, 76, 506 76, 76, 76, 76, 76, 76, 76, 76, 507 76, 76, 76, 76, 76, 76, 76, 76, 508 76, 76, 76, 76, 76, 76, 76, 76, 509 76, 76, 13, 76, 78, 84, 84, 12, 510 13, 81, 76, 76, 76, 12, 76, 76, 511 82, 76, 76, 76, 76, 76, 76, 76, 512 76, 76, 76, 76, 76, 76, 76, 76, 513 76, 76, 76, 76, 76, 76, 76, 76, 514 76, 76, 76, 76, 76, 76, 76, 76, 515 76, 76, 76, 76, 76, 76, 76, 76, 516 76, 13, 76, 85, 76, 76, 76, 92, 517 87, 76, 14, 81, 76, 76, 76, 76, 518 76, 85, 76, 76, 76, 76, 76, 76, 519 76, 76, 76, 76, 76, 76, 76, 76, 520 76, 76, 76, 76, 76, 76, 76, 76, 521 76, 76, 76, 76, 76, 76, 76, 76, 522 76, 76, 76, 76, 76, 76, 76, 76, 523 76, 76, 76, 14, 76, 81, 76, 76, 524 93, 81, 76, 76, 76, 76, 76, 76, 525 76, 76, 76, 76, 76, 76, 76, 76, 526 76, 76, 76, 76, 76, 76, 76, 76, 527 76, 76, 76, 76, 76, 76, 76, 76, 528 76, 76, 76, 76, 76, 76, 76, 76, 529 76, 76, 76, 76, 76, 76, 76, 76, 530 76, 93, 76, 81, 76, 81, 76, 76, 531 76, 81, 76, 85, 76, 94, 76, 92, 532 92, 76, 14, 81, 76, 76, 76, 76, 533 76, 85, 76, 76, 76, 76, 76, 76, 534 76, 76, 76, 76, 76, 76, 76, 76, 535 76, 76, 76, 76, 76, 76, 76, 76, 536 76, 76, 76, 76, 76, 76, 76, 76, 537 76, 76, 76, 76, 76, 76, 76, 76, 538 76, 76, 76, 14, 76, 85, 76, 76, 539 76, 92, 92, 76, 14, 81, 76, 76, 540 76, 76, 76, 85, 76, 76, 76, 76, 541 76, 76, 76, 76, 76, 76, 76, 76, 542 76, 76, 76, 76, 76, 76, 76, 76, 543 76, 76, 76, 76, 76, 76, 76, 76, 544 76, 76, 76, 76, 76, 76, 76, 76, 545 76, 76, 76, 76, 76, 14, 76, 95, 546 96, 97, 97, 12, 13, 81, 76, 76, 547 76, 12, 76, 76, 76, 76, 76, 76, 548 76, 76, 76, 76, 76, 76, 76, 76, 549 76, 76, 76, 76, 76, 76, 76, 76, 550 76, 76, 76, 76, 76, 76, 76, 76, 551 76, 76, 76, 76, 76, 76, 76, 76, 552 76, 76, 76, 76, 76, 13, 76, 96, 553 97, 97, 12, 13, 81, 76, 76, 76, 554 12, 76, 76, 76, 76, 76, 76, 76, 555 76, 76, 76, 76, 76, 76, 76, 76, 556 76, 76, 76, 76, 76, 76, 76, 76, 557 76, 76, 76, 76, 76, 76, 76, 76, 558 76, 76, 76, 76, 76, 76, 76, 76, 559 76, 76, 76, 76, 13, 76, 97, 97, 560 12, 13, 81, 76, 76, 76, 12, 76, 561 76, 76, 76, 76, 76, 76, 76, 76, 562 76, 76, 76, 76, 76, 76, 76, 76, 563 76, 76, 76, 76, 76, 76, 76, 76, 564 76, 76, 76, 76, 76, 76, 76, 76, 565 76, 76, 76, 76, 76, 76, 76, 76, 566 76, 76, 13, 76, 81, 76, 76, 93, 567 81, 76, 76, 76, 12, 76, 76, 76, 568 76, 76, 76, 76, 76, 76, 76, 76, 569 76, 76, 76, 76, 76, 76, 76, 76, 570 76, 76, 76, 76, 76, 76, 76, 76, 571 76, 76, 76, 76, 76, 76, 76, 76, 572 76, 76, 76, 76, 76, 76, 76, 76, 573 93, 76, 98, 99, 99, 12, 13, 81, 574 76, 76, 76, 12, 76, 76, 76, 76, 575 76, 76, 76, 76, 76, 76, 76, 76, 576 76, 76, 76, 76, 76, 76, 76, 76, 577 76, 76, 76, 76, 76, 76, 76, 76, 578 76, 76, 76, 76, 76, 76, 76, 76, 579 76, 76, 76, 76, 76, 76, 76, 13, 580 76, 86, 100, 76, 14, 81, 76, 76, 581 76, 76, 76, 76, 76, 76, 76, 76, 582 76, 76, 76, 76, 76, 76, 76, 76, 583 76, 76, 76, 76, 76, 76, 76, 76, 584 76, 76, 76, 76, 76, 76, 76, 76, 585 76, 76, 76, 76, 76, 76, 76, 76, 586 76, 76, 76, 76, 76, 14, 76, 92, 587 92, 76, 14, 81, 76, 76, 76, 76, 588 76, 76, 76, 76, 76, 76, 76, 76, 589 76, 76, 76, 76, 76, 76, 76, 76, 590 76, 76, 76, 76, 76, 76, 76, 76, 591 76, 76, 76, 76, 76, 76, 76, 76, 592 76, 76, 76, 76, 76, 76, 76, 76, 593 76, 76, 76, 14, 76, 86, 76, 92, 594 92, 76, 14, 81, 76, 76, 76, 76, 595 76, 76, 76, 76, 76, 76, 76, 76, 596 76, 76, 76, 76, 76, 76, 76, 76, 597 76, 76, 76, 76, 76, 76, 76, 76, 598 76, 76, 76, 76, 76, 76, 76, 76, 599 76, 76, 76, 76, 76, 76, 76, 76, 600 76, 76, 76, 14, 76, 92, 100, 76, 601 14, 81, 76, 76, 76, 76, 76, 76, 602 76, 76, 76, 76, 76, 76, 76, 76, 603 76, 76, 76, 76, 76, 76, 76, 76, 604 76, 76, 76, 76, 76, 76, 76, 76, 605 76, 76, 76, 76, 76, 76, 76, 76, 606 76, 76, 76, 76, 76, 76, 76, 76, 607 76, 14, 76, 88, 78, 84, 84, 12, 608 13, 81, 76, 76, 76, 12, 76, 76, 609 82, 76, 76, 76, 76, 76, 76, 76, 610 76, 76, 76, 76, 76, 76, 76, 76, 611 76, 76, 76, 76, 76, 76, 76, 76, 612 76, 76, 76, 76, 76, 76, 76, 76, 613 76, 76, 76, 76, 76, 76, 76, 76, 614 76, 13, 76, 88, 78, 89, 84, 12, 615 13, 81, 76, 76, 17, 12, 76, 76, 616 82, 76, 76, 76, 76, 76, 76, 76, 617 76, 76, 76, 76, 76, 76, 76, 76, 618 76, 76, 76, 76, 76, 76, 76, 76, 619 76, 76, 76, 76, 76, 76, 76, 76, 620 76, 76, 76, 76, 76, 76, 76, 76, 621 76, 13, 76, 10, 11, 11, 12, 13, 622 76, 76, 76, 76, 12, 76, 76, 76, 623 76, 76, 76, 76, 76, 76, 76, 76, 624 76, 76, 76, 76, 76, 76, 76, 76, 625 76, 76, 76, 76, 76, 76, 76, 76, 626 76, 76, 76, 76, 76, 76, 76, 76, 627 76, 76, 76, 76, 76, 76, 76, 76, 628 13, 76, 77, 78, 84, 80, 12, 13, 629 81, 76, 76, 76, 12, 76, 76, 82, 630 76, 76, 76, 76, 76, 76, 76, 76, 631 76, 76, 76, 76, 76, 76, 76, 76, 632 76, 76, 76, 76, 76, 76, 76, 76, 633 76, 76, 76, 76, 76, 76, 76, 76, 634 76, 76, 76, 76, 76, 76, 76, 76, 635 13, 76, 102, 45, 103, 103, 22, 23, 636 48, 101, 101, 101, 22, 101, 101, 52, 637 101, 101, 101, 101, 101, 101, 101, 101, 638 101, 101, 101, 101, 101, 101, 101, 101, 639 101, 101, 101, 101, 101, 101, 101, 101, 640 101, 101, 101, 101, 101, 101, 101, 101, 641 101, 101, 101, 101, 101, 101, 101, 101, 642 23, 101, 45, 103, 103, 22, 23, 48, 643 101, 101, 101, 22, 101, 101, 52, 101, 644 101, 101, 101, 101, 101, 101, 101, 101, 645 101, 101, 101, 101, 101, 101, 101, 101, 646 101, 101, 101, 101, 101, 101, 101, 101, 647 101, 101, 101, 101, 101, 101, 101, 101, 648 101, 101, 101, 101, 101, 101, 101, 23, 649 101, 104, 101, 101, 101, 105, 106, 101, 650 25, 48, 101, 101, 101, 101, 101, 104, 651 101, 101, 101, 101, 101, 101, 101, 101, 652 101, 101, 101, 101, 101, 101, 101, 101, 653 101, 101, 101, 101, 101, 101, 101, 101, 654 101, 101, 101, 101, 101, 101, 101, 101, 655 101, 101, 101, 101, 101, 101, 101, 101, 656 101, 25, 101, 44, 45, 107, 108, 22, 657 23, 48, 101, 101, 24, 22, 101, 101, 658 52, 101, 101, 101, 101, 101, 101, 101, 659 101, 101, 101, 101, 101, 101, 101, 101, 660 101, 101, 101, 101, 101, 101, 101, 101, 661 101, 101, 101, 101, 101, 101, 101, 101, 662 101, 101, 101, 101, 101, 101, 101, 101, 663 101, 23, 101, 104, 101, 101, 101, 109, 664 106, 101, 25, 48, 101, 101, 101, 101, 665 101, 104, 101, 101, 101, 101, 101, 101, 666 101, 101, 101, 101, 101, 101, 101, 101, 667 101, 101, 101, 101, 101, 101, 101, 101, 668 101, 101, 101, 101, 101, 101, 101, 101, 669 101, 101, 101, 101, 101, 101, 101, 101, 670 101, 101, 101, 25, 101, 48, 101, 101, 671 110, 48, 101, 101, 101, 101, 101, 101, 672 101, 101, 101, 101, 101, 101, 101, 101, 673 101, 101, 101, 101, 101, 101, 101, 101, 674 101, 101, 101, 101, 101, 101, 101, 101, 675 101, 101, 101, 101, 101, 101, 101, 101, 676 101, 101, 101, 101, 101, 101, 101, 101, 677 101, 110, 101, 48, 101, 48, 101, 101, 678 101, 48, 101, 104, 101, 111, 101, 109, 679 109, 101, 25, 48, 101, 101, 101, 101, 680 101, 104, 101, 101, 101, 101, 101, 101, 681 101, 101, 101, 101, 101, 101, 101, 101, 682 101, 101, 101, 101, 101, 101, 101, 101, 683 101, 101, 101, 101, 101, 101, 101, 101, 684 101, 101, 101, 101, 101, 101, 101, 101, 685 101, 101, 101, 25, 101, 104, 101, 101, 686 101, 109, 109, 101, 25, 48, 101, 101, 687 101, 101, 101, 104, 101, 101, 101, 101, 688 101, 101, 101, 101, 101, 101, 101, 101, 689 101, 101, 101, 101, 101, 101, 101, 101, 690 101, 101, 101, 101, 101, 101, 101, 101, 691 101, 101, 101, 101, 101, 101, 101, 101, 692 101, 101, 101, 101, 101, 25, 101, 112, 693 113, 114, 114, 22, 23, 48, 101, 101, 694 101, 22, 101, 101, 101, 101, 101, 101, 695 101, 101, 101, 101, 101, 101, 101, 101, 696 101, 101, 101, 101, 101, 101, 101, 101, 697 101, 101, 101, 101, 101, 101, 101, 101, 698 101, 101, 101, 101, 101, 101, 101, 101, 699 101, 101, 101, 101, 101, 23, 101, 113, 700 114, 114, 22, 23, 48, 101, 101, 101, 701 22, 101, 101, 101, 101, 101, 101, 101, 702 101, 101, 101, 101, 101, 101, 101, 101, 703 101, 101, 101, 101, 101, 101, 101, 101, 704 101, 101, 101, 101, 101, 101, 101, 101, 705 101, 101, 101, 101, 101, 101, 101, 101, 706 101, 101, 101, 101, 23, 101, 114, 114, 707 22, 23, 48, 101, 101, 101, 22, 101, 708 101, 101, 101, 101, 101, 101, 101, 101, 709 101, 101, 101, 101, 101, 101, 101, 101, 710 101, 101, 101, 101, 101, 101, 101, 101, 711 101, 101, 101, 101, 101, 101, 101, 101, 712 101, 101, 101, 101, 101, 101, 101, 101, 713 101, 101, 23, 101, 48, 26, 26, 110, 714 48, 26, 26, 26, 22, 26, 26, 26, 715 26, 26, 26, 26, 26, 26, 26, 26, 716 26, 26, 26, 26, 26, 26, 26, 26, 717 26, 26, 26, 26, 26, 26, 26, 26, 718 26, 26, 26, 26, 26, 26, 26, 26, 719 26, 26, 26, 26, 26, 26, 26, 26, 720 110, 26, 44, 45, 103, 103, 22, 23, 721 48, 101, 101, 101, 22, 101, 101, 52, 722 101, 101, 101, 101, 101, 101, 101, 101, 723 101, 101, 101, 101, 101, 101, 101, 101, 724 101, 101, 101, 101, 101, 101, 101, 101, 725 101, 101, 101, 101, 101, 101, 101, 101, 726 101, 101, 101, 101, 101, 101, 101, 101, 727 23, 101, 115, 116, 116, 22, 23, 48, 728 101, 101, 101, 22, 101, 101, 101, 101, 729 101, 101, 101, 101, 101, 101, 101, 101, 730 101, 101, 101, 101, 101, 101, 101, 101, 731 101, 101, 101, 101, 101, 101, 101, 101, 732 101, 101, 101, 101, 101, 101, 101, 101, 733 101, 101, 101, 101, 101, 101, 101, 23, 734 101, 105, 117, 101, 25, 48, 101, 101, 735 101, 101, 101, 101, 101, 101, 101, 101, 736 101, 101, 101, 101, 101, 101, 101, 101, 737 101, 101, 101, 101, 101, 101, 101, 101, 738 101, 101, 101, 101, 101, 101, 101, 101, 739 101, 101, 101, 101, 101, 101, 101, 101, 740 101, 101, 101, 101, 101, 25, 101, 109, 741 109, 101, 25, 48, 101, 101, 101, 101, 742 101, 101, 101, 101, 101, 101, 101, 101, 743 101, 101, 101, 101, 101, 101, 101, 101, 744 101, 101, 101, 101, 101, 101, 101, 101, 745 101, 101, 101, 101, 101, 101, 101, 101, 746 101, 101, 101, 101, 101, 101, 101, 101, 747 101, 101, 101, 25, 101, 105, 101, 109, 748 109, 101, 25, 48, 101, 101, 101, 101, 749 101, 101, 101, 101, 101, 101, 101, 101, 750 101, 101, 101, 101, 101, 101, 101, 101, 751 101, 101, 101, 101, 101, 101, 101, 101, 752 101, 101, 101, 101, 101, 101, 101, 101, 753 101, 101, 101, 101, 101, 101, 101, 101, 754 101, 101, 101, 25, 101, 109, 117, 101, 755 25, 48, 101, 101, 101, 101, 101, 101, 756 101, 101, 101, 101, 101, 101, 101, 101, 757 101, 101, 101, 101, 101, 101, 101, 101, 758 101, 101, 101, 101, 101, 101, 101, 101, 759 101, 101, 101, 101, 101, 101, 101, 101, 760 101, 101, 101, 101, 101, 101, 101, 101, 761 101, 25, 101, 44, 45, 107, 103, 22, 762 23, 48, 101, 101, 24, 22, 101, 101, 763 52, 101, 101, 101, 101, 101, 101, 101, 764 101, 101, 101, 101, 101, 101, 101, 101, 765 101, 101, 101, 101, 101, 101, 101, 101, 766 101, 101, 101, 101, 101, 101, 101, 101, 767 101, 101, 101, 101, 101, 101, 101, 101, 768 101, 23, 101, 20, 21, 21, 22, 23, 769 118, 118, 118, 24, 22, 118, 118, 118, 770 118, 118, 118, 118, 118, 118, 118, 118, 771 118, 118, 118, 118, 118, 118, 118, 118, 772 118, 118, 118, 118, 118, 118, 118, 118, 773 118, 118, 118, 118, 118, 118, 118, 118, 774 118, 118, 118, 118, 118, 118, 118, 118, 775 23, 118, 20, 21, 21, 22, 23, 118, 776 118, 118, 118, 22, 118, 118, 118, 118, 777 118, 118, 118, 118, 118, 118, 118, 118, 778 118, 118, 118, 118, 118, 118, 118, 118, 779 118, 118, 118, 118, 118, 118, 118, 118, 780 118, 118, 118, 118, 118, 118, 118, 118, 781 118, 118, 118, 118, 118, 118, 118, 23, 782 118, 120, 121, 122, 123, 32, 33, 124, 783 119, 119, 34, 32, 119, 119, 125, 119, 784 119, 119, 119, 119, 119, 119, 119, 119, 785 119, 119, 119, 119, 119, 119, 119, 119, 786 119, 119, 119, 119, 119, 119, 119, 119, 787 119, 119, 119, 119, 119, 119, 119, 119, 788 119, 119, 119, 119, 119, 119, 119, 33, 789 119, 126, 121, 123, 123, 32, 33, 124, 790 119, 119, 119, 32, 119, 119, 125, 119, 791 119, 119, 119, 119, 119, 119, 119, 119, 792 119, 119, 119, 119, 119, 119, 119, 119, 793 119, 119, 119, 119, 119, 119, 119, 119, 794 119, 119, 119, 119, 119, 119, 119, 119, 795 119, 119, 119, 119, 119, 119, 119, 33, 796 119, 121, 123, 123, 32, 33, 124, 119, 797 119, 119, 32, 119, 119, 125, 119, 119, 798 119, 119, 119, 119, 119, 119, 119, 119, 799 119, 119, 119, 119, 119, 119, 119, 119, 800 119, 119, 119, 119, 119, 119, 119, 119, 801 119, 119, 119, 119, 119, 119, 119, 119, 802 119, 119, 119, 119, 119, 119, 33, 119, 803 127, 119, 119, 119, 128, 129, 119, 35, 804 124, 119, 119, 119, 119, 119, 127, 119, 805 119, 119, 119, 119, 119, 119, 119, 119, 806 119, 119, 119, 119, 119, 119, 119, 119, 807 119, 119, 119, 119, 119, 119, 119, 119, 808 119, 119, 119, 119, 119, 119, 119, 119, 809 119, 119, 119, 119, 119, 119, 119, 119, 810 35, 119, 120, 121, 122, 49, 32, 33, 811 124, 119, 119, 34, 32, 119, 119, 125, 812 119, 119, 119, 119, 119, 119, 119, 119, 813 119, 119, 119, 119, 119, 119, 119, 119, 814 119, 119, 119, 119, 119, 119, 119, 119, 815 119, 119, 119, 119, 119, 119, 119, 119, 816 119, 119, 119, 119, 119, 119, 119, 119, 817 33, 119, 127, 119, 119, 119, 130, 129, 818 119, 35, 124, 119, 119, 119, 119, 119, 819 127, 119, 119, 119, 119, 119, 119, 119, 820 119, 119, 119, 119, 119, 119, 119, 119, 821 119, 119, 119, 119, 119, 119, 119, 119, 822 119, 119, 119, 119, 119, 119, 119, 119, 823 119, 119, 119, 119, 119, 119, 119, 119, 824 119, 119, 35, 119, 124, 119, 119, 131, 825 124, 119, 119, 119, 119, 119, 119, 119, 826 119, 119, 119, 119, 119, 119, 119, 119, 827 119, 119, 119, 119, 119, 119, 119, 119, 828 119, 119, 119, 119, 119, 119, 119, 119, 829 119, 119, 119, 119, 119, 119, 119, 119, 830 119, 119, 119, 119, 119, 119, 119, 119, 831 131, 119, 124, 119, 124, 119, 119, 119, 832 124, 119, 127, 119, 132, 119, 130, 130, 833 119, 35, 124, 119, 119, 119, 119, 119, 834 127, 119, 119, 119, 119, 119, 119, 119, 835 119, 119, 119, 119, 119, 119, 119, 119, 836 119, 119, 119, 119, 119, 119, 119, 119, 837 119, 119, 119, 119, 119, 119, 119, 119, 838 119, 119, 119, 119, 119, 119, 119, 119, 839 119, 119, 35, 119, 127, 119, 119, 119, 840 130, 130, 119, 35, 124, 119, 119, 119, 841 119, 119, 127, 119, 119, 119, 119, 119, 842 119, 119, 119, 119, 119, 119, 119, 119, 843 119, 119, 119, 119, 119, 119, 119, 119, 844 119, 119, 119, 119, 119, 119, 119, 119, 845 119, 119, 119, 119, 119, 119, 119, 119, 846 119, 119, 119, 119, 35, 119, 133, 134, 847 135, 135, 32, 33, 124, 119, 119, 119, 848 32, 119, 119, 119, 119, 119, 119, 119, 849 119, 119, 119, 119, 119, 119, 119, 119, 850 119, 119, 119, 119, 119, 119, 119, 119, 851 119, 119, 119, 119, 119, 119, 119, 119, 852 119, 119, 119, 119, 119, 119, 119, 119, 853 119, 119, 119, 119, 33, 119, 134, 135, 854 135, 32, 33, 124, 119, 119, 119, 32, 855 119, 119, 119, 119, 119, 119, 119, 119, 856 119, 119, 119, 119, 119, 119, 119, 119, 857 119, 119, 119, 119, 119, 119, 119, 119, 858 119, 119, 119, 119, 119, 119, 119, 119, 859 119, 119, 119, 119, 119, 119, 119, 119, 860 119, 119, 119, 33, 119, 135, 135, 32, 861 33, 124, 119, 119, 119, 32, 119, 119, 862 119, 119, 119, 119, 119, 119, 119, 119, 863 119, 119, 119, 119, 119, 119, 119, 119, 864 119, 119, 119, 119, 119, 119, 119, 119, 865 119, 119, 119, 119, 119, 119, 119, 119, 866 119, 119, 119, 119, 119, 119, 119, 119, 867 119, 33, 119, 124, 119, 119, 131, 124, 868 119, 119, 119, 32, 119, 119, 119, 119, 869 119, 119, 119, 119, 119, 119, 119, 119, 870 119, 119, 119, 119, 119, 119, 119, 119, 871 119, 119, 119, 119, 119, 119, 119, 119, 872 119, 119, 119, 119, 119, 119, 119, 119, 873 119, 119, 119, 119, 119, 119, 119, 131, 874 119, 120, 121, 123, 123, 32, 33, 124, 875 119, 119, 119, 32, 119, 119, 125, 119, 876 119, 119, 119, 119, 119, 119, 119, 119, 877 119, 119, 119, 119, 119, 119, 119, 119, 878 119, 119, 119, 119, 119, 119, 119, 119, 879 119, 119, 119, 119, 119, 119, 119, 119, 880 119, 119, 119, 119, 119, 119, 119, 33, 881 119, 136, 137, 137, 32, 33, 124, 119, 882 119, 119, 32, 119, 119, 119, 119, 119, 883 119, 119, 119, 119, 119, 119, 119, 119, 884 119, 119, 119, 119, 119, 119, 119, 119, 885 119, 119, 119, 119, 119, 119, 119, 119, 886 119, 119, 119, 119, 119, 119, 119, 119, 887 119, 119, 119, 119, 119, 119, 33, 119, 888 128, 138, 119, 35, 124, 119, 119, 119, 889 119, 119, 119, 119, 119, 119, 119, 119, 890 119, 119, 119, 119, 119, 119, 119, 119, 891 119, 119, 119, 119, 119, 119, 119, 119, 892 119, 119, 119, 119, 119, 119, 119, 119, 893 119, 119, 119, 119, 119, 119, 119, 119, 894 119, 119, 119, 119, 35, 119, 130, 130, 895 119, 35, 124, 119, 119, 119, 119, 119, 896 119, 119, 119, 119, 119, 119, 119, 119, 897 119, 119, 119, 119, 119, 119, 119, 119, 898 119, 119, 119, 119, 119, 119, 119, 119, 899 119, 119, 119, 119, 119, 119, 119, 119, 900 119, 119, 119, 119, 119, 119, 119, 119, 901 119, 119, 35, 119, 128, 119, 130, 130, 902 119, 35, 124, 119, 119, 119, 119, 119, 903 119, 119, 119, 119, 119, 119, 119, 119, 904 119, 119, 119, 119, 119, 119, 119, 119, 905 119, 119, 119, 119, 119, 119, 119, 119, 906 119, 119, 119, 119, 119, 119, 119, 119, 907 119, 119, 119, 119, 119, 119, 119, 119, 908 119, 119, 35, 119, 130, 138, 119, 35, 909 124, 119, 119, 119, 119, 119, 119, 119, 910 119, 119, 119, 119, 119, 119, 119, 119, 911 119, 119, 119, 119, 119, 119, 119, 119, 912 119, 119, 119, 119, 119, 119, 119, 119, 913 119, 119, 119, 119, 119, 119, 119, 119, 914 119, 119, 119, 119, 119, 119, 119, 119, 915 35, 119, 42, 43, 44, 45, 107, 103, 916 22, 23, 48, 49, 49, 24, 22, 101, 917 42, 52, 101, 101, 101, 101, 101, 101, 918 101, 101, 101, 101, 101, 101, 101, 101, 919 101, 101, 101, 101, 101, 101, 101, 101, 920 101, 101, 101, 101, 101, 101, 101, 101, 921 101, 101, 101, 101, 101, 101, 101, 101, 922 101, 101, 23, 101, 57, 139, 59, 60, 923 4, 5, 61, 56, 56, 8, 4, 56, 924 56, 62, 56, 56, 56, 56, 56, 56, 925 56, 56, 56, 56, 56, 56, 56, 56, 926 56, 56, 56, 56, 56, 56, 56, 56, 927 56, 56, 56, 56, 56, 56, 56, 56, 928 56, 56, 56, 56, 56, 56, 56, 56, 929 56, 56, 5, 56, 42, 43, 44, 45, 930 140, 141, 22, 142, 143, 56, 49, 24, 931 22, 56, 42, 52, 56, 56, 56, 56, 932 56, 56, 56, 56, 56, 56, 56, 56, 933 56, 56, 56, 56, 56, 56, 56, 56, 934 56, 56, 56, 56, 56, 56, 56, 56, 935 56, 56, 56, 56, 56, 56, 56, 56, 936 56, 56, 56, 56, 142, 56, 20, 144, 937 144, 22, 142, 61, 56, 56, 24, 22, 938 56, 56, 56, 56, 56, 56, 56, 56, 939 56, 56, 56, 56, 56, 56, 56, 56, 940 56, 56, 56, 56, 56, 56, 56, 56, 941 56, 56, 56, 56, 56, 56, 56, 56, 942 56, 56, 56, 56, 56, 56, 56, 56, 943 56, 56, 56, 142, 56, 61, 56, 56, 944 68, 61, 56, 56, 56, 22, 56, 56, 945 56, 56, 56, 56, 56, 56, 56, 56, 946 56, 56, 56, 56, 56, 56, 56, 56, 947 56, 56, 56, 56, 56, 56, 56, 56, 948 56, 56, 56, 56, 56, 56, 56, 56, 949 56, 56, 56, 56, 56, 56, 56, 56, 950 56, 68, 56, 143, 56, 56, 145, 143, 951 56, 56, 56, 22, 56, 56, 56, 56, 952 56, 56, 56, 56, 56, 56, 56, 56, 953 56, 56, 56, 56, 56, 56, 56, 56, 954 56, 56, 56, 56, 56, 56, 56, 56, 955 56, 56, 56, 56, 56, 56, 56, 56, 956 56, 56, 56, 56, 56, 56, 56, 145, 957 56, 143, 56, 143, 56, 56, 56, 143, 958 56, 42, 56, 69, 20, 144, 144, 22, 959 142, 61, 56, 56, 56, 22, 56, 42, 960 56, 56, 56, 56, 56, 56, 56, 56, 961 56, 56, 56, 56, 56, 56, 56, 56, 962 56, 56, 56, 56, 56, 56, 56, 56, 963 56, 56, 56, 56, 56, 56, 56, 56, 964 56, 56, 56, 56, 56, 56, 56, 56, 965 56, 142, 56, 147, 146, 148, 148, 146, 966 40, 149, 146, 146, 146, 146, 146, 146, 967 146, 146, 146, 146, 146, 146, 146, 146, 968 146, 146, 146, 146, 146, 146, 146, 146, 969 146, 146, 146, 146, 146, 146, 146, 146, 970 146, 146, 146, 146, 146, 146, 146, 146, 971 146, 146, 146, 146, 146, 146, 146, 146, 972 146, 40, 146, 148, 148, 146, 40, 149, 973 146, 146, 146, 146, 146, 146, 146, 146, 974 146, 146, 146, 146, 146, 146, 146, 146, 975 146, 146, 146, 146, 146, 146, 146, 146, 976 146, 146, 146, 146, 146, 146, 146, 146, 977 146, 146, 146, 146, 146, 146, 146, 146, 978 146, 146, 146, 146, 146, 146, 146, 40, 979 146, 149, 146, 146, 150, 149, 146, 146, 980 146, 146, 146, 146, 146, 146, 146, 146, 981 146, 146, 146, 146, 146, 146, 146, 146, 982 146, 146, 146, 146, 146, 146, 146, 146, 983 146, 146, 146, 146, 146, 146, 146, 146, 984 146, 146, 146, 146, 146, 146, 146, 146, 985 146, 146, 146, 146, 146, 150, 146, 149, 986 146, 149, 146, 146, 146, 149, 146, 42, 987 118, 118, 118, 118, 118, 118, 118, 118, 988 49, 118, 118, 118, 118, 42, 118, 0 989 }; 990 991 static const unsigned char _indic_syllable_machine_trans_targs[] = { 992 31, 37, 42, 2, 43, 46, 4, 50, 993 51, 31, 60, 9, 66, 69, 61, 11, 994 74, 75, 78, 31, 83, 17, 89, 92, 995 93, 84, 31, 19, 98, 31, 107, 24, 996 113, 116, 117, 108, 26, 122, 127, 31, 997 134, 31, 32, 53, 79, 81, 100, 101, 998 85, 102, 123, 124, 94, 132, 137, 92, 999 31, 33, 35, 6, 52, 38, 47, 34, 1000 1, 36, 40, 0, 39, 41, 44, 45, 1001 3, 48, 5, 49, 31, 54, 56, 14, 1002 77, 62, 70, 55, 7, 57, 72, 64, 1003 58, 13, 76, 59, 8, 63, 65, 67, 1004 68, 10, 71, 12, 73, 31, 80, 20, 1005 82, 96, 87, 15, 99, 16, 86, 88, 1006 90, 91, 18, 95, 21, 97, 31, 31, 1007 103, 105, 22, 27, 109, 118, 104, 106, 1008 120, 111, 23, 110, 112, 114, 115, 25, 1009 119, 28, 121, 125, 126, 131, 128, 129, 1010 29, 130, 31, 133, 30, 135, 136 1011 }; 1012 1013 static const char _indic_syllable_machine_trans_actions[] = { 1014 1, 0, 2, 0, 2, 0, 0, 2, 1015 2, 3, 2, 0, 2, 0, 0, 0, 1016 2, 2, 2, 4, 2, 0, 5, 5, 1017 5, 0, 6, 0, 2, 7, 2, 0, 1018 2, 0, 2, 0, 0, 2, 0, 8, 1019 0, 11, 2, 2, 5, 0, 12, 12, 1020 0, 2, 5, 2, 5, 2, 0, 13, 1021 14, 2, 0, 0, 2, 0, 2, 2, 1022 0, 2, 2, 0, 0, 2, 2, 2, 1023 0, 0, 0, 2, 15, 2, 0, 0, 1024 2, 0, 2, 2, 0, 2, 2, 2, 1025 2, 0, 2, 2, 0, 0, 2, 2, 1026 2, 0, 0, 0, 2, 16, 5, 0, 1027 5, 2, 2, 0, 5, 0, 0, 2, 1028 5, 5, 0, 0, 0, 2, 17, 18, 1029 2, 0, 0, 0, 0, 2, 2, 2, 1030 2, 2, 0, 0, 2, 2, 2, 0, 1031 0, 0, 2, 0, 19, 19, 0, 0, 1032 0, 0, 20, 2, 0, 0, 0 1033 }; 1034 1035 static const char _indic_syllable_machine_to_state_actions[] = { 1036 0, 0, 0, 0, 0, 0, 0, 0, 1037 0, 0, 0, 0, 0, 0, 0, 0, 1038 0, 0, 0, 0, 0, 0, 0, 0, 1039 0, 0, 0, 0, 0, 0, 0, 9, 1040 0, 0, 0, 0, 0, 0, 0, 0, 1041 0, 0, 0, 0, 0, 0, 0, 0, 1042 0, 0, 0, 0, 0, 0, 0, 0, 1043 0, 0, 0, 0, 0, 0, 0, 0, 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 1054 }; 1055 1056 static const char _indic_syllable_machine_from_state_actions[] = { 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, 10, 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, 0, 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 1075 }; 1076 1077 static const short _indic_syllable_machine_eof_trans[] = { 1078 1, 1, 1, 1, 1, 1, 1, 10, 1079 10, 10, 10, 10, 10, 10, 10, 20, 1080 20, 27, 20, 27, 20, 20, 30, 30, 1081 30, 30, 30, 30, 30, 1, 40, 0, 1082 57, 57, 57, 57, 57, 57, 57, 57, 1083 57, 57, 57, 57, 57, 57, 57, 57, 1084 57, 57, 57, 57, 57, 77, 77, 77, 1085 77, 77, 77, 77, 77, 77, 77, 77, 1086 77, 77, 77, 77, 77, 77, 77, 77, 1087 77, 77, 77, 77, 77, 77, 77, 102, 1088 102, 102, 102, 102, 102, 102, 102, 102, 1089 102, 102, 102, 102, 27, 102, 102, 102, 1090 102, 102, 102, 102, 119, 119, 120, 120, 1091 120, 120, 120, 120, 120, 120, 120, 120, 1092 120, 120, 120, 120, 120, 120, 120, 120, 1093 120, 120, 120, 102, 57, 57, 57, 57, 1094 57, 57, 57, 57, 147, 147, 147, 147, 1095 147, 119 1096 }; 1097 1098 static const int indic_syllable_machine_start = 31; 1099 static const int indic_syllable_machine_first_final = 31; 1100 static const int indic_syllable_machine_error = -1; 1101 1102 static const int indic_syllable_machine_en_main = 31; 1103 1104 1105 #line 58 "hb-ot-shaper-indic-machine.rl" 1106 1107 1108 1109 #line 121 "hb-ot-shaper-indic-machine.rl" 1110 1111 1112 #define found_syllable(syllable_type) \ 1113 HB_STMT_START { \ 1114 if (0) fprintf (stderr, "syllable %u..%u %s\n", ts, te, #syllable_type); \ 1115 for (unsigned int i = ts; i < te; i++) \ 1116 info[i].syllable() = (syllable_serial << 4) | syllable_type; \ 1117 syllable_serial++; \ 1118 if (syllable_serial == 16) syllable_serial = 1; \ 1119 } HB_STMT_END 1120 1121 inline void 1122 find_syllables_indic (hb_buffer_t *buffer) 1123 { 1124 unsigned int p, pe, eof, ts, te, act; 1125 int cs; 1126 hb_glyph_info_t *info = buffer->info; 1127 1128 #line 1119 "hb-ot-shaper-indic-machine.hh" 1129 { 1130 cs = indic_syllable_machine_start; 1131 ts = 0; 1132 te = 0; 1133 act = 0; 1134 } 1135 1136 #line 141 "hb-ot-shaper-indic-machine.rl" 1137 1138 1139 p = 0; 1140 pe = eof = buffer->len; 1141 1142 unsigned int syllable_serial = 1; 1143 1144 #line 1131 "hb-ot-shaper-indic-machine.hh" 1145 { 1146 int _slen; 1147 int _trans; 1148 const unsigned char *_keys; 1149 const unsigned char *_inds; 1150 if ( p == pe ) 1151 goto _test_eof; 1152 _resume: 1153 switch ( _indic_syllable_machine_from_state_actions[cs] ) { 1154 case 10: 1155 #line 1 "NONE" 1156 {ts = p;} 1157 break; 1158 #line 1143 "hb-ot-shaper-indic-machine.hh" 1159 } 1160 1161 _keys = _indic_syllable_machine_trans_keys + (cs<<1); 1162 _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs]; 1163 1164 _slen = _indic_syllable_machine_key_spans[cs]; 1165 _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && 1166 ( info[p].indic_category()) <= _keys[1] ? 1167 ( info[p].indic_category()) - _keys[0] : _slen ]; 1168 1169 _eof_trans: 1170 cs = _indic_syllable_machine_trans_targs[_trans]; 1171 1172 if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) 1173 goto _again; 1174 1175 switch ( _indic_syllable_machine_trans_actions[_trans] ) { 1176 case 2: 1177 #line 1 "NONE" 1178 {te = p+1;} 1179 break; 1180 case 11: 1181 #line 117 "hb-ot-shaper-indic-machine.rl" 1182 {te = p+1;{ found_syllable (indic_non_indic_cluster); }} 1183 break; 1184 case 14: 1185 #line 111 "hb-ot-shaper-indic-machine.rl" 1186 {te = p;p--;{ found_syllable (indic_consonant_syllable); }} 1187 break; 1188 case 15: 1189 #line 112 "hb-ot-shaper-indic-machine.rl" 1190 {te = p;p--;{ found_syllable (indic_vowel_syllable); }} 1191 break; 1192 case 18: 1193 #line 113 "hb-ot-shaper-indic-machine.rl" 1194 {te = p;p--;{ found_syllable (indic_standalone_cluster); }} 1195 break; 1196 case 20: 1197 #line 114 "hb-ot-shaper-indic-machine.rl" 1198 {te = p;p--;{ found_syllable (indic_symbol_cluster); }} 1199 break; 1200 case 16: 1201 #line 116 "hb-ot-shaper-indic-machine.rl" 1202 {te = p;p--;{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} 1203 break; 1204 case 17: 1205 #line 117 "hb-ot-shaper-indic-machine.rl" 1206 {te = p;p--;{ found_syllable (indic_non_indic_cluster); }} 1207 break; 1208 case 1: 1209 #line 111 "hb-ot-shaper-indic-machine.rl" 1210 {{p = ((te))-1;}{ found_syllable (indic_consonant_syllable); }} 1211 break; 1212 case 3: 1213 #line 112 "hb-ot-shaper-indic-machine.rl" 1214 {{p = ((te))-1;}{ found_syllable (indic_vowel_syllable); }} 1215 break; 1216 case 7: 1217 #line 113 "hb-ot-shaper-indic-machine.rl" 1218 {{p = ((te))-1;}{ found_syllable (indic_standalone_cluster); }} 1219 break; 1220 case 8: 1221 #line 114 "hb-ot-shaper-indic-machine.rl" 1222 {{p = ((te))-1;}{ found_syllable (indic_symbol_cluster); }} 1223 break; 1224 case 4: 1225 #line 116 "hb-ot-shaper-indic-machine.rl" 1226 {{p = ((te))-1;}{ found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; }} 1227 break; 1228 case 6: 1229 #line 1 "NONE" 1230 { switch( act ) { 1231 case 1: 1232 {{p = ((te))-1;} found_syllable (indic_consonant_syllable); } 1233 break; 1234 case 5: 1235 {{p = ((te))-1;} found_syllable (indic_non_indic_cluster); } 1236 break; 1237 case 6: 1238 {{p = ((te))-1;} found_syllable (indic_broken_cluster); buffer->scratch_flags |= HB_BUFFER_SCRATCH_FLAG_HAS_BROKEN_SYLLABLE; } 1239 break; 1240 case 7: 1241 {{p = ((te))-1;} found_syllable (indic_non_indic_cluster); } 1242 break; 1243 } 1244 } 1245 break; 1246 case 19: 1247 #line 1 "NONE" 1248 {te = p+1;} 1249 #line 111 "hb-ot-shaper-indic-machine.rl" 1250 {act = 1;} 1251 break; 1252 case 13: 1253 #line 1 "NONE" 1254 {te = p+1;} 1255 #line 115 "hb-ot-shaper-indic-machine.rl" 1256 {act = 5;} 1257 break; 1258 case 5: 1259 #line 1 "NONE" 1260 {te = p+1;} 1261 #line 116 "hb-ot-shaper-indic-machine.rl" 1262 {act = 6;} 1263 break; 1264 case 12: 1265 #line 1 "NONE" 1266 {te = p+1;} 1267 #line 117 "hb-ot-shaper-indic-machine.rl" 1268 {act = 7;} 1269 break; 1270 #line 1232 "hb-ot-shaper-indic-machine.hh" 1271 } 1272 1273 _again: 1274 switch ( _indic_syllable_machine_to_state_actions[cs] ) { 1275 case 9: 1276 #line 1 "NONE" 1277 {ts = 0;} 1278 break; 1279 #line 1239 "hb-ot-shaper-indic-machine.hh" 1280 } 1281 1282 if ( ++p != pe ) 1283 goto _resume; 1284 _test_eof: {} 1285 if ( p == eof ) 1286 { 1287 if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { 1288 _trans = _indic_syllable_machine_eof_trans[cs] - 1; 1289 goto _eof_trans; 1290 } 1291 } 1292 1293 } 1294 1295 #line 149 "hb-ot-shaper-indic-machine.rl" 1296 1297 } 1298 1299 #undef found_syllable 1300 1301 #endif /* HB_OT_SHAPER_INDIC_MACHINE_HH */