diff --git a/src/hb-buffer-deserialize-json.hh b/src/hb-buffer-deserialize-json.hh index 8631d52e8..1f9e2e91d 100644 --- a/src/hb-buffer-deserialize-json.hh +++ b/src/hb-buffer-deserialize-json.hh @@ -1,28 +1,30 @@ + +#line 1 "hb-buffer-deserialize-json.rl" /* -* Copyright © 2013 Google, Inc. -* -* This is part of HarfBuzz, a text shaping library. -* -* Permission is hereby granted, without written agreement and without -* license or royalty fees, to use, copy, modify, and distribute this -* software and its documentation for any purpose, provided that the -* above copyright notice and the following two paragraphs appear in -* all copies of this software. -* -* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* -* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -* -* Google Author(s): Behdad Esfahbod -*/ + * Copyright © 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ #ifndef HB_BUFFER_DESERIALIZE_JSON_HH #define HB_BUFFER_DESERIALIZE_JSON_HH @@ -30,208 +32,400 @@ #include "hb.hh" +#line 36 "hb-buffer-deserialize-json.hh" static const unsigned char _deserialize_json_trans_keys[] = { - 1u, 0u, 0u, 18u, 0u, 2u, 11u, 14u, - 16u, 17u, 2u, 2u, 0u, 8u, 0u, 7u, - 6u, 7u, 0u, 19u, 0u, 19u, 0u, 19u, - 2u, 2u, 0u, 8u, 0u, 7u, 6u, 7u, - 0u, 19u, 0u, 19u, 15u, 15u, 2u, 2u, - 0u, 8u, 0u, 7u, 0u, 19u, 0u, 19u, - 16u, 17u, 2u, 2u, 0u, 8u, 0u, 7u, - 6u, 7u, 0u, 19u, 0u, 19u, 2u, 2u, - 0u, 8u, 0u, 7u, 6u, 7u, 0u, 19u, - 0u, 19u, 2u, 2u, 0u, 8u, 0u, 7u, - 9u, 17u, 2u, 17u, 0u, 19u, 0u, 19u, - 0u, 10u, 0u, 18u, 1u, 0u, 0u + 0u, 0u, 9u, 123u, 9u, 34u, 97u, 103u, 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, + 48u, 57u, 9u, 125u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, + 9u, 125u, 9u, 125u, 108u, 108u, 34u, 34u, 9u, 58u, 9u, 57u, 9u, 125u, 9u, 125u, + 120u, 121u, 34u, 34u, 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, + 9u, 58u, 9u, 57u, 48u, 57u, 9u, 125u, 9u, 125u, 34u, 34u, 9u, 58u, 9u, 57u, + 65u, 122u, 34u, 122u, 9u, 125u, 9u, 125u, 9u, 93u, 9u, 123u, 0u, 0u, 0 }; -static const char _deserialize_json_char_class[] = { - 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, - 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 4, 5, 1, 6, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 8, 1, 1, 1, 1, 1, 1, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 1, 1, 10, 1, 5, 1, - 11, 9, 12, 13, 9, 9, 14, 9, - 9, 9, 9, 15, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 16, - 17, 9, 18, 1, 19, 0 +static const char _deserialize_json_key_spans[] = { + 0, 115, 26, 7, 2, 1, 50, 49, + 10, 117, 117, 117, 1, 50, 49, 10, + 117, 117, 1, 1, 50, 49, 117, 117, + 2, 1, 50, 49, 10, 117, 117, 1, + 50, 49, 10, 117, 117, 1, 50, 49, + 58, 89, 117, 117, 85, 115, 0 }; static const short _deserialize_json_index_offsets[] = { - 0, 0, 19, 22, 26, 28, 29, 38, - 46, 48, 68, 88, 108, 109, 118, 126, - 128, 148, 168, 169, 170, 179, 187, 207, - 227, 229, 230, 239, 247, 249, 269, 289, - 290, 299, 307, 309, 329, 349, 350, 359, - 367, 376, 392, 412, 432, 443, 462, 0 + 0, 0, 116, 143, 151, 154, 156, 207, + 257, 268, 386, 504, 622, 624, 675, 725, + 736, 854, 972, 974, 976, 1027, 1077, 1195, + 1313, 1316, 1318, 1369, 1419, 1430, 1548, 1666, + 1668, 1719, 1769, 1780, 1898, 2016, 2018, 2069, + 2119, 2178, 2268, 2386, 2504, 2590, 2706 }; static const char _deserialize_json_indicies[] = { - 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 3, 1, 4, 5, 6, - 7, 8, 9, 10, 11, 11, 1, 1, - 1, 1, 1, 1, 1, 12, 12, 1, - 1, 1, 13, 1, 14, 15, 16, 17, - 18, 1, 1, 19, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 20, 21, 1, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 22, - 18, 1, 1, 19, 1, 1, 17, 17, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 20, 23, 23, 1, 1, - 1, 1, 1, 1, 1, 24, 24, 1, - 1, 1, 25, 1, 26, 27, 28, 29, - 30, 1, 1, 31, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 32, 30, 1, 1, 31, - 1, 1, 29, 29, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 32, - 33, 34, 34, 1, 1, 1, 1, 1, - 1, 1, 35, 35, 1, 1, 1, 1, - 1, 36, 37, 38, 1, 1, 39, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 40, 38, - 1, 1, 39, 1, 1, 41, 41, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 40, 42, 43, 44, 44, 1, - 1, 1, 1, 1, 1, 1, 45, 45, - 1, 1, 1, 46, 1, 47, 48, 49, - 50, 51, 1, 1, 52, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 53, 51, 1, 1, - 52, 1, 1, 50, 50, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 53, 54, 54, 1, 1, 1, 1, 1, - 1, 1, 55, 55, 1, 1, 1, 56, - 1, 57, 58, 59, 60, 61, 1, 1, - 62, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 63, 61, 1, 1, 62, 1, 1, 60, - 60, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 63, 64, 64, 1, - 1, 1, 1, 1, 1, 1, 65, 65, - 1, 66, 1, 1, 1, 67, 68, 69, - 1, 69, 69, 69, 69, 69, 69, 69, - 70, 1, 71, 71, 71, 71, 1, 71, - 1, 71, 71, 71, 71, 71, 71, 71, - 72, 1, 1, 73, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 74, 72, 1, 1, 73, - 1, 1, 75, 75, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 74, - 76, 1, 1, 77, 1, 1, 1, 1, - 1, 1, 78, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0 + 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 1, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 1, 4, 1, + 5, 1, 6, 7, 1, 1, 8, 1, + 9, 10, 1, 11, 1, 11, 11, 11, + 11, 11, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 11, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 12, 1, + 12, 12, 12, 12, 12, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 12, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 13, 1, 1, 14, + 15, 15, 15, 15, 15, 15, 15, 15, + 15, 1, 16, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 1, 18, 18, 18, + 18, 18, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 18, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 19, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 20, 1, 21, 21, 21, 21, 21, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 21, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 22, + 1, 18, 18, 18, 18, 18, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 18, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 19, 1, 1, 1, + 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 20, 1, 23, + 1, 23, 23, 23, 23, 23, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 23, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 24, 1, 24, 24, 24, 24, + 24, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 24, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 25, 1, 1, 26, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 1, 28, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 1, 30, 30, 30, 30, 30, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 30, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 31, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 32, 1, 30, + 30, 30, 30, 30, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 30, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 31, 1, 1, 1, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 32, 1, 33, 1, 34, + 1, 34, 34, 34, 34, 34, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 34, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 35, 1, 35, 35, 35, 35, + 35, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 35, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 36, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 1, 38, 38, + 38, 38, 38, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 39, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 40, 1, 38, 38, 38, 38, + 38, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 38, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 39, + 1, 1, 1, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 40, 1, 42, 43, 1, 44, 1, 44, + 44, 44, 44, 44, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 44, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 45, 1, 45, 45, 45, 45, 45, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 46, 1, + 1, 47, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 1, 49, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 1, 51, + 51, 51, 51, 51, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 51, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 52, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 53, 1, 51, 51, 51, + 51, 51, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 51, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 52, 1, 1, 1, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 53, 1, 54, 1, 54, 54, 54, + 54, 54, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 54, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 55, 1, + 55, 55, 55, 55, 55, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 55, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 56, 1, 1, 57, + 58, 58, 58, 58, 58, 58, 58, 58, + 58, 1, 59, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 1, 61, 61, 61, + 61, 61, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 61, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 62, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 63, 1, 61, 61, 61, 61, 61, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 61, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 62, 1, + 1, 1, 60, 60, 60, 60, 60, 60, + 60, 60, 60, 60, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 63, + 1, 64, 1, 64, 64, 64, 64, 64, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 64, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 65, 1, 65, 65, + 65, 65, 65, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 65, 1, 66, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 67, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 1, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 1, 1, 1, 1, 1, 1, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 1, 70, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 71, 71, + 1, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 1, 1, 1, 1, 1, + 1, 1, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 1, 1, 1, 1, + 71, 1, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 1, 72, 72, 72, + 72, 72, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 72, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 73, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 74, 1, 72, 72, 72, 72, 72, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 72, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 73, 1, + 1, 1, 75, 75, 75, 75, 75, 75, + 75, 75, 75, 75, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 74, + 1, 76, 76, 76, 76, 76, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 76, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 77, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 78, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 0 }; -static const char _deserialize_json_index_defaults[] = { - 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0 +static const char _deserialize_json_trans_targs[] = { + 1, 0, 2, 2, 3, 4, 18, 24, + 37, 5, 12, 6, 7, 8, 9, 11, + 9, 11, 10, 2, 44, 10, 44, 13, + 14, 15, 16, 17, 16, 17, 10, 2, + 44, 19, 20, 21, 22, 23, 10, 2, + 44, 23, 25, 31, 26, 27, 28, 29, + 30, 29, 30, 10, 2, 44, 32, 33, + 34, 35, 36, 35, 36, 10, 2, 44, + 38, 39, 40, 42, 43, 41, 10, 41, + 10, 2, 44, 43, 44, 45, 46 }; -static const char _deserialize_json_trans_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 0 -}; - -static const char _deserialize_json_cond_targs[] = { - 1, 0, 2, 2, 3, 4, 18, 24, - 37, 5, 12, 6, 7, 8, 9, 11, - 9, 11, 10, 2, 44, 10, 44, 13, - 14, 15, 16, 17, 16, 17, 10, 2, - 44, 19, 20, 21, 22, 23, 10, 2, - 44, 23, 25, 31, 26, 27, 28, 29, - 30, 29, 30, 10, 2, 44, 32, 33, - 34, 35, 36, 35, 36, 10, 2, 44, - 38, 39, 40, 42, 43, 41, 10, 41, - 10, 2, 44, 43, 44, 45, 46, 0 -}; - -static const char _deserialize_json_cond_actions[] = { - 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 2, 2, - 0, 0, 3, 3, 4, 0, 5, 0, - 0, 2, 2, 2, 0, 0, 6, 6, - 7, 0, 0, 0, 2, 2, 8, 8, - 9, 0, 0, 0, 0, 0, 2, 2, - 2, 0, 0, 10, 10, 11, 0, 0, - 2, 2, 2, 0, 0, 12, 12, 13, - 0, 0, 0, 2, 2, 2, 14, 0, - 15, 15, 16, 0, 0, 0, 0, 0 -}; - -static const char _deserialize_json_eof_cond_spaces[] = { - -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0 -}; - -static const char _deserialize_json_eof_cond_key_offs[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 -}; - -static const char _deserialize_json_eof_cond_key_lens[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 -}; - -static const char _deserialize_json_eof_cond_keys[] = { - 0 -}; - -static const char _deserialize_json_nfa_targs[] = { - 0, 0 -}; - -static const char _deserialize_json_nfa_offsets[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 -}; - -static const char _deserialize_json_nfa_push_actions[] = { - 0, 0 -}; - -static const char _deserialize_json_nfa_pop_trans[] = { - 0, 0 +static const char _deserialize_json_trans_actions[] = { + 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 2, 2, + 0, 0, 3, 3, 4, 0, 5, 0, + 0, 2, 2, 2, 0, 0, 6, 6, + 7, 0, 0, 0, 2, 2, 8, 8, + 9, 0, 0, 0, 0, 0, 2, 2, + 2, 0, 0, 10, 10, 11, 0, 0, + 2, 2, 2, 0, 0, 12, 12, 13, + 0, 0, 0, 2, 2, 2, 14, 0, + 15, 15, 16, 0, 0, 0, 0 }; static const int deserialize_json_start = 1; @@ -241,254 +435,209 @@ static const int deserialize_json_error = 0; static const int deserialize_json_en_main = 1; +#line 97 "hb-buffer-deserialize-json.rl" + static hb_bool_t _hb_buffer_deserialize_glyphs_json (hb_buffer_t *buffer, -const char *buf, -unsigned int buf_len, -const char **end_ptr, -hb_font_t *font) + const char *buf, + unsigned int buf_len, + const char **end_ptr, + hb_font_t *font) { - const char *p = buf, *pe = buf + buf_len; - - /* Ensure we have positions. */ - (void) hb_buffer_get_glyph_positions (buffer, nullptr); - - while (p < pe && ISSPACE (*p)) - p++; - if (p < pe && *p == (buffer->len ? ',' : '[')) + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, nullptr); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? ',' : '[')) + { + *end_ptr = ++p; + } + + const char *tok = nullptr; + int cs; + hb_glyph_info_t info = {0}; + hb_glyph_position_t pos = {0}; + +#line 466 "hb-buffer-deserialize-json.hh" { - *end_ptr = ++p; + cs = deserialize_json_start; } - - const char *tok = nullptr; - int cs; - hb_glyph_info_t info = {0}; - hb_glyph_position_t pos = {0}; - + +#line 471 "hb-buffer-deserialize-json.hh" { - cs = (int)deserialize_json_start; - } - + int _slen; + int _trans; + const unsigned char *_keys; + const char *_inds; + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; +_resume: + _keys = _deserialize_json_trans_keys + (cs<<1); + _inds = _deserialize_json_indicies + _deserialize_json_index_offsets[cs]; + + _slen = _deserialize_json_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && + (*p) <= _keys[1] ? + (*p) - _keys[0] : _slen ]; + + cs = _deserialize_json_trans_targs[_trans]; + + if ( _deserialize_json_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _deserialize_json_trans_actions[_trans] ) { + case 1: +#line 38 "hb-buffer-deserialize-json.rl" { - unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { - if ( p == pe ) - goto _test_eof; - if ( cs == 0 ) - goto _out; - _resume: { - _keys = ( _deserialize_json_trans_keys + ((cs<<1))); - _inds = ( _deserialize_json_indicies + (_deserialize_json_index_offsets[cs])); - - if ( ( (*( p))) <= 125 && ( (*( p))) >= 9 ) - { - int _ic = (int)_deserialize_json_char_class[(int)( (*( p))) - 9]; - if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) - _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); - else - _trans = (unsigned int)_deserialize_json_index_defaults[cs]; - } - else { - _trans = (unsigned int)_deserialize_json_index_defaults[cs]; - } - - goto _match_cond; - } - _match_cond: { - cs = (int)_deserialize_json_cond_targs[_trans]; - - if ( _deserialize_json_cond_actions[_trans] == 0 ) - goto _again; - - switch ( _deserialize_json_cond_actions[_trans] ) { - case 1: { - { - #line 38 "hb-buffer-deserialize-json.rl" - - memset (&info, 0, sizeof (info)); - memset (&pos , 0, sizeof (pos )); - } - - break; } - case 5: { - { - #line 43 "hb-buffer-deserialize-json.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 2: { - { - #line 51 "hb-buffer-deserialize-json.rl" - - tok = p; - } - - break; } - case 14: { - { - #line 55 "hb-buffer-deserialize-json.rl" - - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; - } - - break; } - case 15: { - { - #line 62 "hb-buffer-deserialize-json.rl" - if (!parse_uint (tok, p, &info.codepoint)) return false; } - - break; } - case 8: { - { - #line 63 "hb-buffer-deserialize-json.rl" - if (!parse_uint (tok, p, &info.cluster )) return false; } - - break; } - case 10: { - { - #line 64 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.x_offset )) return false; } - - break; } - case 12: { - { - #line 65 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.y_offset )) return false; } - - break; } - case 3: { - { - #line 66 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.x_advance)) return false; } - - break; } - case 6: { - { - #line 67 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.y_advance)) return false; } - - break; } - case 16: { - { - #line 62 "hb-buffer-deserialize-json.rl" - if (!parse_uint (tok, p, &info.codepoint)) return false; } - { - #line 43 "hb-buffer-deserialize-json.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 9: { - { - #line 63 "hb-buffer-deserialize-json.rl" - if (!parse_uint (tok, p, &info.cluster )) return false; } - { - #line 43 "hb-buffer-deserialize-json.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 11: { - { - #line 64 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.x_offset )) return false; } - { - #line 43 "hb-buffer-deserialize-json.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 13: { - { - #line 65 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.y_offset )) return false; } - { - #line 43 "hb-buffer-deserialize-json.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 4: { - { - #line 66 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.x_advance)) return false; } - { - #line 43 "hb-buffer-deserialize-json.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 7: { - { - #line 67 "hb-buffer-deserialize-json.rl" - if (!parse_int (tok, p, &pos.y_advance)) return false; } - { - #line 43 "hb-buffer-deserialize-json.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - } - - - } - _again: { - if ( cs == 0 ) - goto _out; - p += 1; - if ( p != pe ) - goto _resume; - } - _test_eof: { {} - } - _out: { {} - } - } - } - - + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); +} + break; + case 5: +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; *end_ptr = p; - - return p == pe && *(p-1) != ']'; +} + break; + case 2: +#line 51 "hb-buffer-deserialize-json.rl" + { + tok = p; +} + break; + case 14: +#line 55 "hb-buffer-deserialize-json.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} + break; + case 15: +#line 62 "hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.codepoint)) return false; } + break; + case 8: +#line 63 "hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } + break; + case 10: +#line 64 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_offset )) return false; } + break; + case 12: +#line 65 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } + break; + case 3: +#line 66 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } + break; + case 6: +#line 67 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } + break; + case 16: +#line 62 "hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.codepoint)) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 9: +#line 63 "hb-buffer-deserialize-json.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 11: +#line 64 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_offset )) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 13: +#line 65 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 4: +#line 66 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 7: +#line 67 "hb-buffer-deserialize-json.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } +#line 43 "hb-buffer-deserialize-json.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; +#line 624 "hb-buffer-deserialize-json.hh" + } + +_again: + if ( cs == 0 ) + goto _out; + if ( ++p != pe ) + goto _resume; + _test_eof: {} + _out: {} + } + +#line 125 "hb-buffer-deserialize-json.rl" + + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; } #endif /* HB_BUFFER_DESERIALIZE_JSON_HH */ diff --git a/src/hb-buffer-deserialize-text.hh b/src/hb-buffer-deserialize-text.hh index 28ab3f1cd..67f0a1252 100644 --- a/src/hb-buffer-deserialize-text.hh +++ b/src/hb-buffer-deserialize-text.hh @@ -1,28 +1,30 @@ + +#line 1 "hb-buffer-deserialize-text.rl" /* -* Copyright © 2013 Google, Inc. -* -* This is part of HarfBuzz, a text shaping library. -* -* Permission is hereby granted, without written agreement and without -* license or royalty fees, to use, copy, modify, and distribute this -* software and its documentation for any purpose, provided that the -* above copyright notice and the following two paragraphs appear in -* all copies of this software. -* -* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* -* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -* -* Google Author(s): Behdad Esfahbod -*/ + * Copyright © 2013 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ #ifndef HB_BUFFER_DESERIALIZE_TEXT_HH #define HB_BUFFER_DESERIALIZE_TEXT_HH @@ -30,160 +32,277 @@ #include "hb.hh" +#line 36 "hb-buffer-deserialize-text.hh" static const unsigned char _deserialize_text_trans_keys[] = { - 1u, 0u, 0u, 10u, 4u, 7u, 6u, 7u, - 4u, 7u, 6u, 7u, 6u, 7u, 4u, 7u, - 6u, 7u, 3u, 3u, 4u, 7u, 6u, 7u, - 3u, 7u, 0u, 12u, 0u, 12u, 1u, 0u, - 0u, 10u, 0u, 12u, 0u, 12u, 0u, 12u, - 0u, 12u, 0u, 12u, 0u, 12u, 0u, 12u, - 0u, 12u, 0u, 12u, 0u, 12u, 0u + 0u, 0u, 9u, 122u, 45u, 57u, 48u, 57u, 45u, 57u, 48u, 57u, 48u, 57u, 45u, 57u, + 48u, 57u, 44u, 44u, 45u, 57u, 48u, 57u, 44u, 57u, 9u, 124u, 9u, 124u, 0u, 0u, + 9u, 122u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, 9u, 124u, + 9u, 124u, 9u, 124u, 9u, 124u, 0 }; -static const char _deserialize_text_char_class[] = { - 0, 0, 0, 0, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 3, 4, 5, 1, 6, - 7, 7, 7, 7, 7, 7, 7, 7, - 7, 1, 1, 1, 8, 1, 1, 9, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 1, 1, 11, 1, 5, 1, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 1, 12, 0 +static const char _deserialize_text_key_spans[] = { + 0, 114, 13, 10, 13, 10, 10, 13, + 10, 1, 13, 10, 14, 116, 116, 0, + 114, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116 }; static const short _deserialize_text_index_offsets[] = { - 0, 0, 11, 15, 17, 21, 23, 25, - 29, 31, 32, 36, 38, 43, 56, 69, - 69, 80, 93, 106, 119, 132, 145, 158, - 171, 184, 197, 0 + 0, 0, 115, 129, 140, 154, 165, 176, + 190, 201, 203, 217, 228, 243, 360, 477, + 478, 593, 710, 827, 944, 1061, 1178, 1295, + 1412, 1529, 1646 }; static const char _deserialize_text_indicies[] = { - 0, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 5, 1, 6, 7, 8, - 9, 10, 1, 11, 12, 13, 14, 15, - 16, 17, 1, 18, 19, 20, 21, 22, - 23, 1, 24, 25, 26, 27, 22, 1, - 1, 21, 21, 28, 1, 29, 1, 1, - 1, 1, 1, 30, 31, 1, 32, 33, - 34, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 35, 36, 0, 1, 1, - 1, 1, 1, 2, 3, 1, 1, 4, - 28, 1, 29, 1, 1, 1, 37, 37, - 30, 31, 1, 32, 33, 38, 1, 1, - 39, 1, 1, 1, 1, 1, 1, 1, - 40, 41, 42, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 43, 44, 42, - 1, 1, 1, 1, 1, 14, 14, 1, - 1, 1, 43, 44, 38, 1, 1, 39, - 1, 1, 9, 9, 1, 1, 1, 40, - 41, 45, 1, 46, 1, 1, 1, 1, - 1, 1, 47, 1, 48, 49, 50, 1, - 51, 1, 1, 1, 1, 1, 1, 1, - 1, 52, 53, 50, 1, 51, 1, 1, - 1, 27, 27, 1, 1, 1, 52, 53, - 45, 1, 46, 1, 1, 1, 54, 54, - 1, 47, 1, 48, 49, 28, 1, 29, - 1, 55, 55, 55, 55, 30, 31, 55, - 32, 33, 0 + 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 1, 1, 1, 1, + 1, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 1, 5, 1, 1, 6, + 7, 7, 7, 7, 7, 7, 7, 7, + 7, 1, 8, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 1, 10, 1, 1, + 11, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 1, 13, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 1, 15, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 1, 17, 1, 1, 18, 19, 19, 19, + 19, 19, 19, 19, 19, 19, 1, 20, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 1, 22, 1, 23, 1, 1, 24, + 25, 25, 25, 25, 25, 25, 25, 25, + 25, 1, 26, 27, 27, 27, 27, 27, + 27, 27, 27, 27, 1, 22, 1, 1, + 1, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 1, 28, 28, 28, 28, + 28, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 28, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 29, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 30, 1, 1, 31, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 32, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 33, + 1, 34, 34, 34, 34, 34, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 34, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 35, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 36, 1, 1, 0, + 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 1, 1, 1, 1, 1, 1, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, + 4, 1, 28, 28, 28, 28, 28, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 28, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 29, 1, 1, 1, + 1, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 1, 1, 1, 30, 1, + 1, 31, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 32, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 33, 1, 38, + 38, 38, 38, 38, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 38, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 39, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 40, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 41, 1, 42, 42, 42, 42, + 42, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 42, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 43, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 44, + 1, 42, 42, 42, 42, 42, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 42, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 43, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 44, 1, 38, 38, + 38, 38, 38, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 38, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 39, 1, 1, 1, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 40, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 41, 1, 45, 45, 45, 45, 45, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 45, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 46, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 47, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 48, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 49, 1, + 50, 50, 50, 50, 50, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 50, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 51, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 52, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 53, 1, 50, 50, 50, + 50, 50, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 50, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 51, + 1, 1, 1, 1, 27, 27, 27, 27, + 27, 27, 27, 27, 27, 27, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 52, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 53, 1, 45, 45, 45, 45, 45, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 45, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 46, 1, 1, 1, + 1, 54, 54, 54, 54, 54, 54, 54, + 54, 54, 54, 1, 1, 1, 1, 1, + 1, 47, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 48, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 49, 1, 28, + 28, 28, 28, 28, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 28, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 29, 1, 55, 55, 1, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 1, 1, 1, 30, 1, 1, 31, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 1, 1, 32, 1, 55, 1, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 1, 33, 1, 0 }; -static const char _deserialize_text_index_defaults[] = { - 0, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0 +static const char _deserialize_text_trans_targs[] = { + 1, 0, 13, 17, 26, 3, 18, 21, + 18, 21, 5, 19, 20, 19, 20, 22, + 25, 8, 9, 12, 9, 12, 10, 11, + 23, 24, 23, 24, 14, 2, 6, 7, + 15, 16, 14, 15, 16, 17, 14, 4, + 15, 16, 14, 15, 16, 14, 2, 7, + 15, 16, 14, 2, 15, 16, 25, 26 }; -static const char _deserialize_text_trans_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 0 -}; - -static const char _deserialize_text_cond_targs[] = { - 1, 0, 13, 17, 26, 3, 18, 21, - 18, 21, 5, 19, 20, 19, 20, 22, - 25, 8, 9, 12, 9, 12, 10, 11, - 23, 24, 23, 24, 14, 2, 6, 7, - 15, 16, 14, 15, 16, 17, 14, 4, - 15, 16, 14, 15, 16, 14, 2, 7, - 15, 16, 14, 2, 15, 16, 25, 26, - 0 -}; - -static const char _deserialize_text_cond_actions[] = { - 0, 0, 1, 1, 1, 2, 2, 2, - 0, 0, 2, 2, 2, 0, 0, 2, - 2, 2, 2, 2, 0, 0, 3, 2, - 2, 2, 0, 0, 4, 5, 5, 5, - 4, 4, 0, 0, 0, 0, 6, 7, - 6, 6, 8, 8, 8, 9, 10, 10, - 9, 9, 11, 12, 11, 11, 0, 0, - 0 -}; - -static const char _deserialize_text_eof_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0 -}; - -static const char _deserialize_text_eof_cond_key_offs[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 -}; - -static const char _deserialize_text_eof_cond_key_lens[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 -}; - -static const char _deserialize_text_eof_cond_keys[] = { - 0 +static const char _deserialize_text_trans_actions[] = { + 0, 0, 1, 1, 1, 2, 2, 2, + 0, 0, 2, 2, 2, 0, 0, 2, + 2, 2, 2, 2, 0, 0, 3, 2, + 2, 2, 0, 0, 4, 5, 5, 5, + 4, 4, 0, 0, 0, 0, 6, 7, + 6, 6, 8, 8, 8, 9, 10, 10, + 9, 9, 11, 12, 11, 11, 0, 0 }; static const char _deserialize_text_eof_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4, 0, 0, - 0, 4, 6, 8, 8, 6, 9, 11, - 11, 9, 4, 0 -}; - -static const char _deserialize_text_nfa_targs[] = { - 0, 0 -}; - -static const char _deserialize_text_nfa_offsets[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0 -}; - -static const char _deserialize_text_nfa_push_actions[] = { - 0, 0 -}; - -static const char _deserialize_text_nfa_pop_trans[] = { - 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 4, 0, 0, + 0, 4, 6, 8, 8, 6, 9, 11, + 11, 9, 4 }; static const int deserialize_text_start = 1; @@ -193,338 +312,260 @@ static const int deserialize_text_error = 0; static const int deserialize_text_en_main = 1; +#line 91 "hb-buffer-deserialize-text.rl" + static hb_bool_t _hb_buffer_deserialize_glyphs_text (hb_buffer_t *buffer, -const char *buf, -unsigned int buf_len, -const char **end_ptr, -hb_font_t *font) + const char *buf, + unsigned int buf_len, + const char **end_ptr, + hb_font_t *font) { - const char *p = buf, *pe = buf + buf_len; - - /* Ensure we have positions. */ - (void) hb_buffer_get_glyph_positions (buffer, nullptr); - - while (p < pe && ISSPACE (*p)) - p++; - if (p < pe && *p == (buffer->len ? '|' : '[')) + const char *p = buf, *pe = buf + buf_len; + + /* Ensure we have positions. */ + (void) hb_buffer_get_glyph_positions (buffer, nullptr); + + while (p < pe && ISSPACE (*p)) + p++; + if (p < pe && *p == (buffer->len ? '|' : '[')) + { + *end_ptr = ++p; + } + + const char *eof = pe, *tok = nullptr; + int cs; + hb_glyph_info_t info = {0}; + hb_glyph_position_t pos = {0}; + +#line 343 "hb-buffer-deserialize-text.hh" { - *end_ptr = ++p; + cs = deserialize_text_start; } - - const char *eof = pe, *tok = nullptr; - int cs; - hb_glyph_info_t info = {0}; - hb_glyph_position_t pos = {0}; - + +#line 348 "hb-buffer-deserialize-text.hh" { - cs = (int)deserialize_text_start; - } - + int _slen; + int _trans; + const unsigned char *_keys; + const char *_inds; + if ( p == pe ) + goto _test_eof; + if ( cs == 0 ) + goto _out; +_resume: + _keys = _deserialize_text_trans_keys + (cs<<1); + _inds = _deserialize_text_indicies + _deserialize_text_index_offsets[cs]; + + _slen = _deserialize_text_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=(*p) && + (*p) <= _keys[1] ? + (*p) - _keys[0] : _slen ]; + + cs = _deserialize_text_trans_targs[_trans]; + + if ( _deserialize_text_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _deserialize_text_trans_actions[_trans] ) { + case 2: +#line 51 "hb-buffer-deserialize-text.rl" { - int _cpc; - int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { - if ( p == pe ) - goto _test_eof; - if ( cs == 0 ) - goto _out; - _resume: { - _keys = ( _deserialize_text_trans_keys + ((cs<<1))); - _inds = ( _deserialize_text_indicies + (_deserialize_text_index_offsets[cs])); - - if ( ( (*( p))) <= 124 && ( (*( p))) >= 9 ) - { - int _ic = (int)_deserialize_text_char_class[(int)( (*( p))) - 9]; - if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) - _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); - else - _trans = (unsigned int)_deserialize_text_index_defaults[cs]; - } - else { - _trans = (unsigned int)_deserialize_text_index_defaults[cs]; - } - - goto _match_cond; - } - _match_cond: { - cs = (int)_deserialize_text_cond_targs[_trans]; - - if ( _deserialize_text_cond_actions[_trans] == 0 ) - goto _again; - - switch ( _deserialize_text_cond_actions[_trans] ) { - case 2: { - { - #line 51 "hb-buffer-deserialize-text.rl" - - tok = p; - } - - break; } - case 5: { - { - #line 55 "hb-buffer-deserialize-text.rl" - - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; - } - - break; } - case 10: { - { - #line 62 "hb-buffer-deserialize-text.rl" - if (!parse_uint (tok, p, &info.cluster )) return false; } - - break; } - case 3: { - { - #line 63 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.x_offset )) return false; } - - break; } - case 12: { - { - #line 64 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.y_offset )) return false; } - - break; } - case 7: { - { - #line 65 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.x_advance)) return false; } - - break; } - case 1: { - { - #line 38 "hb-buffer-deserialize-text.rl" - - memset (&info, 0, sizeof (info)); - memset (&pos , 0, sizeof (pos )); - } - { - #line 51 "hb-buffer-deserialize-text.rl" - - tok = p; - } - - break; } - case 4: { - { - #line 55 "hb-buffer-deserialize-text.rl" - - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; - } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 9: { - { - #line 62 "hb-buffer-deserialize-text.rl" - if (!parse_uint (tok, p, &info.cluster )) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 11: { - { - #line 64 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.y_offset )) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 6: { - { - #line 65 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.x_advance)) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 8: { - { - #line 66 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.y_advance)) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - } - - - } - _again: { - if ( cs == 0 ) - goto _out; - p += 1; - if ( p != pe ) - goto _resume; - } - _test_eof: { {} - if ( p == eof ) - { - if ( _deserialize_text_eof_cond_spaces[cs] != -1 ) { - _cekeys = ( _deserialize_text_eof_cond_keys + (_deserialize_text_eof_cond_key_offs[cs])); - _klen = (int)_deserialize_text_eof_cond_key_lens[cs]; - _cpc = 0; - { - const char *_lower = _cekeys; - const char *_upper = _cekeys + _klen - 1; - const char *_mid; - while ( 1 ) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( _cpc < (int)(*( _mid)) ) - _upper = _mid - 1; - else if ( _cpc > (int)(*( _mid)) ) - _lower = _mid + 1; - else { - goto _ok; - } - } - cs = 0; - goto _out; - } - _ok: {} - } - switch ( _deserialize_text_eof_actions[cs] ) { - case 4: { - { - #line 55 "hb-buffer-deserialize-text.rl" - - if (!hb_font_glyph_from_string (font, - tok, p - tok, - &info.codepoint)) - return false; - } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 9: { - { - #line 62 "hb-buffer-deserialize-text.rl" - if (!parse_uint (tok, p, &info.cluster )) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 11: { - { - #line 64 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.y_offset )) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 6: { - { - #line 65 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.x_advance)) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - case 8: { - { - #line 66 "hb-buffer-deserialize-text.rl" - if (!parse_int (tok, p, &pos.y_advance)) return false; } - { - #line 43 "hb-buffer-deserialize-text.rl" - - buffer->add_info (info); - if (unlikely (!buffer->successful)) - return false; - buffer->pos[buffer->len - 1] = pos; - *end_ptr = p; - } - - break; } - } - } - - } - _out: { {} - } - } - } - - + tok = p; +} + break; + case 5: +#line 55 "hb-buffer-deserialize-text.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} + break; + case 10: +#line 62 "hb-buffer-deserialize-text.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } + break; + case 3: +#line 63 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_offset )) return false; } + break; + case 12: +#line 64 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } + break; + case 7: +#line 65 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } + break; + case 1: +#line 38 "hb-buffer-deserialize-text.rl" + { + memset (&info, 0, sizeof (info)); + memset (&pos , 0, sizeof (pos )); +} +#line 51 "hb-buffer-deserialize-text.rl" + { + tok = p; +} + break; + case 4: +#line 55 "hb-buffer-deserialize-text.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; *end_ptr = p; - - return p == pe && *(p-1) != ']'; +} + break; + case 9: +#line 62 "hb-buffer-deserialize-text.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 11: +#line 64 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 6: +#line 65 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 8: +#line 66 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; +#line 480 "hb-buffer-deserialize-text.hh" + } + +_again: + if ( cs == 0 ) + goto _out; + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + switch ( _deserialize_text_eof_actions[cs] ) { + case 4: +#line 55 "hb-buffer-deserialize-text.rl" + { + if (!hb_font_glyph_from_string (font, + tok, p - tok, + &info.codepoint)) + return false; +} +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 9: +#line 62 "hb-buffer-deserialize-text.rl" + { if (!parse_uint (tok, p, &info.cluster )) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 11: +#line 64 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_offset )) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 6: +#line 65 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.x_advance)) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; + case 8: +#line 66 "hb-buffer-deserialize-text.rl" + { if (!parse_int (tok, p, &pos.y_advance)) return false; } +#line 43 "hb-buffer-deserialize-text.rl" + { + buffer->add_info (info); + if (unlikely (!buffer->successful)) + return false; + buffer->pos[buffer->len - 1] = pos; + *end_ptr = p; +} + break; +#line 557 "hb-buffer-deserialize-text.hh" + } + } + + _out: {} + } + +#line 119 "hb-buffer-deserialize-text.rl" + + + *end_ptr = p; + + return p == pe && *(p-1) != ']'; } #endif /* HB_BUFFER_DESERIALIZE_TEXT_HH */ diff --git a/src/hb-ot-shape-complex-indic-machine.hh b/src/hb-ot-shape-complex-indic-machine.hh index dbab7e042..08b90e913 100644 --- a/src/hb-ot-shape-complex-indic-machine.hh +++ b/src/hb-ot-shape-complex-indic-machine.hh @@ -1,28 +1,30 @@ + +#line 1 "hb-ot-shape-complex-indic-machine.rl" /* -* Copyright © 2011,2012 Google, Inc. -* -* This is part of HarfBuzz, a text shaping library. -* -* Permission is hereby granted, without written agreement and without -* license or royalty fees, to use, copy, modify, and distribute this -* software and its documentation for any purpose, provided that the -* above copyright notice and the following two paragraphs appear in -* all copies of this software. -* -* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* -* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -* -* Google Author(s): Behdad Esfahbod -*/ + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ #ifndef HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH @@ -30,1226 +32,952 @@ #include "hb.hh" +#line 36 "hb-ot-shape-complex-indic-machine.hh" static const unsigned char _indic_syllable_machine_trans_keys[] = { - 7u, 7u, 3u, 7u, 4u, 6u, 6u, 6u, - 4u, 7u, 4u, 6u, 6u, 6u, 4u, 7u, - 4u, 6u, 6u, 6u, 4u, 7u, 4u, 6u, - 6u, 6u, 3u, 7u, 5u, 5u, 14u, 14u, - 3u, 7u, 5u, 5u, 14u, 14u, 3u, 7u, - 5u, 5u, 14u, 14u, 3u, 7u, 5u, 5u, - 14u, 14u, 3u, 12u, 3u, 7u, 3u, 12u, - 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, - 3u, 7u, 3u, 12u, 7u, 7u, 3u, 7u, - 4u, 6u, 6u, 6u, 4u, 7u, 4u, 6u, - 6u, 6u, 4u, 7u, 4u, 6u, 6u, 6u, - 4u, 7u, 4u, 6u, 6u, 6u, 3u, 7u, - 5u, 5u, 14u, 14u, 3u, 7u, 5u, 5u, - 14u, 14u, 3u, 7u, 5u, 5u, 14u, 14u, - 3u, 7u, 5u, 5u, 14u, 14u, 3u, 12u, - 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, - 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, - 7u, 7u, 3u, 7u, 4u, 6u, 6u, 6u, - 4u, 7u, 4u, 6u, 6u, 6u, 4u, 7u, - 4u, 6u, 6u, 6u, 4u, 7u, 4u, 6u, - 6u, 6u, 3u, 7u, 5u, 5u, 14u, 14u, - 3u, 7u, 5u, 5u, 14u, 14u, 3u, 7u, - 5u, 5u, 14u, 14u, 3u, 7u, 5u, 5u, - 14u, 14u, 3u, 12u, 3u, 7u, 3u, 12u, - 3u, 7u, 3u, 12u, 3u, 7u, 3u, 12u, - 3u, 7u, 7u, 7u, 3u, 7u, 4u, 6u, - 6u, 6u, 4u, 7u, 4u, 6u, 6u, 6u, - 4u, 7u, 4u, 6u, 6u, 6u, 4u, 7u, - 4u, 6u, 6u, 6u, 3u, 7u, 5u, 5u, - 14u, 14u, 3u, 7u, 5u, 5u, 14u, 14u, - 3u, 7u, 5u, 5u, 14u, 14u, 3u, 7u, - 5u, 5u, 14u, 14u, 3u, 12u, 3u, 7u, - 3u, 12u, 3u, 7u, 3u, 12u, 3u, 7u, - 3u, 12u, 3u, 7u, 3u, 12u, 3u, 12u, - 4u, 7u, 7u, 7u, 0u, 17u, 2u, 15u, - 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, - 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, - 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, - 2u, 15u, 3u, 15u, 0u, 14u, 2u, 15u, - 2u, 15u, 3u, 15u, 4u, 9u, 4u, 9u, - 4u, 9u, 9u, 9u, 9u, 9u, 9u, 9u, - 4u, 9u, 2u, 9u, 4u, 9u, 2u, 9u, - 3u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, - 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, - 2u, 9u, 3u, 9u, 3u, 9u, 2u, 15u, - 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, - 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, - 0u, 14u, 2u, 15u, 2u, 15u, 0u, 14u, - 0u, 14u, 0u, 14u, 2u, 15u, 2u, 15u, - 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, - 2u, 15u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 4u, 9u, 4u, 9u, 4u, 9u, 9u, 9u, - 9u, 9u, 9u, 9u, 4u, 9u, 2u, 9u, - 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, - 2u, 9u, 3u, 9u, 4u, 9u, 2u, 9u, - 3u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, - 3u, 9u, 2u, 15u, 2u, 15u, 0u, 14u, - 0u, 14u, 0u, 14u, 2u, 15u, 2u, 15u, - 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, - 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, - 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, - 0u, 14u, 3u, 7u, 2u, 15u, 2u, 15u, - 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, - 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, - 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, - 3u, 15u, 0u, 14u, 2u, 15u, 2u, 15u, - 3u, 15u, 4u, 9u, 4u, 9u, 4u, 9u, - 9u, 9u, 9u, 9u, 9u, 9u, 4u, 9u, - 2u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, - 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, - 2u, 9u, 3u, 9u, 4u, 9u, 2u, 9u, - 3u, 9u, 3u, 9u, 2u, 15u, 2u, 15u, - 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, - 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, - 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, - 0u, 14u, 2u, 15u, 2u, 15u, 0u, 14u, - 0u, 14u, 0u, 14u, 3u, 12u, 2u, 15u, - 3u, 7u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 0u, 14u, 2u, 15u, 2u, 15u, 3u, 15u, - 4u, 9u, 4u, 9u, 4u, 9u, 9u, 9u, - 9u, 9u, 9u, 9u, 4u, 9u, 2u, 9u, - 4u, 9u, 2u, 9u, 3u, 9u, 4u, 9u, - 2u, 9u, 3u, 9u, 4u, 9u, 2u, 9u, - 3u, 9u, 4u, 9u, 2u, 9u, 3u, 9u, - 3u, 9u, 2u, 15u, 2u, 15u, 0u, 14u, - 0u, 14u, 0u, 14u, 2u, 15u, 2u, 15u, - 0u, 14u, 0u, 14u, 0u, 14u, 2u, 15u, - 2u, 15u, 0u, 14u, 0u, 14u, 0u, 14u, - 2u, 15u, 2u, 15u, 0u, 14u, 0u, 14u, - 0u, 14u, 2u, 15u, 0u, 15u, 2u, 15u, - 0u, 15u, 3u, 12u, 4u, 9u, 9u, 9u, - 9u, 9u, 9u, 9u, 4u, 9u, 0u, 14u, - 2u, 9u, 4u, 9u, 4u, 9u, 9u, 9u, - 9u, 9u, 9u, 9u, 4u, 9u, 0u, 14u, - 0u + 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, + 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, + 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, + 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, + 4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, + 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 4u, 8u, + 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, + 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, + 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 8u, 8u, 4u, 8u, 5u, 7u, 7u, 7u, + 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, + 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, + 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, 4u, 13u, + 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 8u, 8u, 4u, 8u, 5u, 7u, + 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, 5u, 7u, 7u, 7u, 5u, 8u, + 5u, 7u, 7u, 7u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, + 4u, 8u, 6u, 6u, 16u, 16u, 4u, 8u, 6u, 6u, 16u, 16u, 4u, 13u, 4u, 8u, + 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 8u, 4u, 13u, 4u, 13u, + 5u, 8u, 8u, 8u, 1u, 19u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, + 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, + 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, + 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, + 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, + 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, + 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, + 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, + 3u, 17u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, + 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, + 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, + 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, + 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, + 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, + 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, + 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 4u, 8u, 3u, 17u, 3u, 17u, + 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, + 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, + 4u, 17u, 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, + 3u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, + 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, + 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, + 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, + 1u, 16u, 1u, 16u, 4u, 13u, 3u, 17u, 4u, 8u, 3u, 17u, 3u, 17u, 4u, 17u, + 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, + 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, 1u, 16u, 3u, 17u, 3u, 17u, 4u, 17u, + 5u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, 10u, 10u, 10u, 10u, 5u, 10u, 3u, 10u, + 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 5u, 10u, 3u, 10u, + 4u, 10u, 5u, 10u, 3u, 10u, 4u, 10u, 4u, 10u, 3u, 17u, 3u, 17u, 1u, 16u, + 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, + 3u, 17u, 1u, 16u, 1u, 16u, 1u, 16u, 3u, 17u, 3u, 17u, 1u, 16u, 1u, 16u, + 1u, 16u, 3u, 17u, 1u, 17u, 3u, 17u, 1u, 17u, 4u, 13u, 5u, 10u, 10u, 10u, + 10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 3u, 10u, 5u, 10u, 5u, 10u, 10u, 10u, + 10u, 10u, 10u, 10u, 5u, 10u, 1u, 16u, 0 }; -static const char _indic_syllable_machine_char_class[] = { - 0, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 8, 13, 14, - 15, 16, 17, 0 +static const char _indic_syllable_machine_key_spans[] = { + 1, 5, 3, 1, 4, 3, 1, 4, + 3, 1, 4, 3, 1, 5, 1, 1, + 5, 1, 1, 5, 1, 1, 5, 1, + 1, 10, 5, 10, 5, 10, 5, 10, + 5, 10, 1, 5, 3, 1, 4, 3, + 1, 4, 3, 1, 4, 3, 1, 5, + 1, 1, 5, 1, 1, 5, 1, 1, + 5, 1, 1, 10, 5, 10, 5, 10, + 5, 10, 5, 10, 1, 5, 3, 1, + 4, 3, 1, 4, 3, 1, 4, 3, + 1, 5, 1, 1, 5, 1, 1, 5, + 1, 1, 5, 1, 1, 10, 5, 10, + 5, 10, 5, 10, 5, 1, 5, 3, + 1, 4, 3, 1, 4, 3, 1, 4, + 3, 1, 5, 1, 1, 5, 1, 1, + 5, 1, 1, 5, 1, 1, 10, 5, + 10, 5, 10, 5, 10, 5, 10, 10, + 4, 1, 19, 15, 15, 14, 16, 15, + 15, 14, 16, 15, 15, 14, 16, 15, + 15, 14, 16, 15, 15, 14, 6, 6, + 6, 1, 1, 1, 6, 8, 6, 8, + 7, 6, 8, 7, 6, 8, 7, 6, + 8, 7, 7, 15, 15, 16, 16, 16, + 15, 15, 16, 16, 16, 15, 15, 16, + 16, 16, 15, 15, 16, 16, 16, 15, + 15, 15, 15, 14, 16, 15, 15, 14, + 16, 15, 15, 14, 16, 15, 15, 14, + 16, 15, 15, 14, 6, 6, 6, 1, + 1, 1, 6, 8, 6, 8, 7, 6, + 8, 7, 6, 8, 7, 6, 8, 7, + 7, 15, 15, 16, 16, 16, 15, 15, + 16, 16, 16, 15, 15, 16, 16, 16, + 15, 15, 16, 16, 16, 5, 15, 15, + 14, 16, 15, 15, 14, 16, 15, 15, + 14, 16, 15, 15, 14, 16, 15, 15, + 14, 6, 6, 6, 1, 1, 1, 6, + 8, 6, 8, 7, 6, 8, 7, 6, + 8, 7, 6, 8, 7, 7, 15, 15, + 16, 16, 16, 15, 15, 16, 16, 16, + 15, 15, 16, 16, 16, 15, 15, 16, + 16, 16, 10, 15, 5, 15, 15, 14, + 16, 15, 15, 14, 16, 15, 15, 14, + 16, 15, 15, 14, 16, 15, 15, 14, + 6, 6, 6, 1, 1, 1, 6, 8, + 6, 8, 7, 6, 8, 7, 6, 8, + 7, 6, 8, 7, 7, 15, 15, 16, + 16, 16, 15, 15, 16, 16, 16, 15, + 15, 16, 16, 16, 15, 15, 16, 16, + 16, 15, 17, 15, 17, 10, 6, 1, + 1, 1, 6, 16, 8, 6, 6, 1, + 1, 1, 6, 16 }; static const short _indic_syllable_machine_index_offsets[] = { - 0, 1, 6, 9, 10, 14, 17, 18, - 22, 25, 26, 30, 33, 34, 39, 40, - 41, 46, 47, 48, 53, 54, 55, 60, - 61, 62, 72, 77, 87, 92, 102, 107, - 117, 122, 132, 133, 138, 141, 142, 146, - 149, 150, 154, 157, 158, 162, 165, 166, - 171, 172, 173, 178, 179, 180, 185, 186, - 187, 192, 193, 194, 204, 209, 219, 224, - 234, 239, 249, 254, 264, 265, 270, 273, - 274, 278, 281, 282, 286, 289, 290, 294, - 297, 298, 303, 304, 305, 310, 311, 312, - 317, 318, 319, 324, 325, 326, 336, 341, - 351, 356, 366, 371, 381, 386, 387, 392, - 395, 396, 400, 403, 404, 408, 411, 412, - 416, 419, 420, 425, 426, 427, 432, 433, - 434, 439, 440, 441, 446, 447, 448, 458, - 463, 473, 478, 488, 493, 503, 508, 518, - 528, 532, 533, 551, 565, 579, 592, 607, - 621, 635, 648, 663, 677, 691, 704, 719, - 733, 747, 760, 775, 789, 803, 816, 822, - 828, 834, 835, 836, 837, 843, 851, 857, - 865, 872, 878, 886, 893, 899, 907, 914, - 920, 928, 935, 942, 956, 970, 985, 1000, - 1015, 1029, 1043, 1058, 1073, 1088, 1102, 1116, - 1131, 1146, 1161, 1175, 1189, 1204, 1219, 1234, - 1248, 1262, 1276, 1290, 1303, 1318, 1332, 1346, - 1359, 1374, 1388, 1402, 1415, 1430, 1444, 1458, - 1471, 1486, 1500, 1514, 1527, 1533, 1539, 1545, - 1546, 1547, 1548, 1554, 1562, 1568, 1576, 1583, - 1589, 1597, 1604, 1610, 1618, 1625, 1631, 1639, - 1646, 1653, 1667, 1681, 1696, 1711, 1726, 1740, - 1754, 1769, 1784, 1799, 1813, 1827, 1842, 1857, - 1872, 1886, 1900, 1915, 1930, 1945, 1950, 1964, - 1978, 1991, 2006, 2020, 2034, 2047, 2062, 2076, - 2090, 2103, 2118, 2132, 2146, 2159, 2174, 2188, - 2202, 2215, 2221, 2227, 2233, 2234, 2235, 2236, - 2242, 2250, 2256, 2264, 2271, 2277, 2285, 2292, - 2298, 2306, 2313, 2319, 2327, 2334, 2341, 2355, - 2369, 2384, 2399, 2414, 2428, 2442, 2457, 2472, - 2487, 2501, 2515, 2530, 2545, 2560, 2574, 2588, - 2603, 2618, 2633, 2643, 2657, 2662, 2676, 2690, - 2703, 2718, 2732, 2746, 2759, 2774, 2788, 2802, - 2815, 2830, 2844, 2858, 2871, 2886, 2900, 2914, - 2927, 2933, 2939, 2945, 2946, 2947, 2948, 2954, - 2962, 2968, 2976, 2983, 2989, 2997, 3004, 3010, - 3018, 3025, 3031, 3039, 3046, 3053, 3067, 3081, - 3096, 3111, 3126, 3140, 3154, 3169, 3184, 3199, - 3213, 3227, 3242, 3257, 3272, 3286, 3300, 3315, - 3330, 3345, 3359, 3375, 3389, 3405, 3415, 3421, - 3422, 3423, 3424, 3430, 3445, 3453, 3459, 3465, - 3466, 3467, 3468, 3474, 0 + 0, 2, 8, 12, 14, 19, 23, 25, + 30, 34, 36, 41, 45, 47, 53, 55, + 57, 63, 65, 67, 73, 75, 77, 83, + 85, 87, 98, 104, 115, 121, 132, 138, + 149, 155, 166, 168, 174, 178, 180, 185, + 189, 191, 196, 200, 202, 207, 211, 213, + 219, 221, 223, 229, 231, 233, 239, 241, + 243, 249, 251, 253, 264, 270, 281, 287, + 298, 304, 315, 321, 332, 334, 340, 344, + 346, 351, 355, 357, 362, 366, 368, 373, + 377, 379, 385, 387, 389, 395, 397, 399, + 405, 407, 409, 415, 417, 419, 430, 436, + 447, 453, 464, 470, 481, 487, 489, 495, + 499, 501, 506, 510, 512, 517, 521, 523, + 528, 532, 534, 540, 542, 544, 550, 552, + 554, 560, 562, 564, 570, 572, 574, 585, + 591, 602, 608, 619, 625, 636, 642, 653, + 664, 669, 671, 691, 707, 723, 738, 755, + 771, 787, 802, 819, 835, 851, 866, 883, + 899, 915, 930, 947, 963, 979, 994, 1001, + 1008, 1015, 1017, 1019, 1021, 1028, 1037, 1044, + 1053, 1061, 1068, 1077, 1085, 1092, 1101, 1109, + 1116, 1125, 1133, 1141, 1157, 1173, 1190, 1207, + 1224, 1240, 1256, 1273, 1290, 1307, 1323, 1339, + 1356, 1373, 1390, 1406, 1422, 1439, 1456, 1473, + 1489, 1505, 1521, 1537, 1552, 1569, 1585, 1601, + 1616, 1633, 1649, 1665, 1680, 1697, 1713, 1729, + 1744, 1761, 1777, 1793, 1808, 1815, 1822, 1829, + 1831, 1833, 1835, 1842, 1851, 1858, 1867, 1875, + 1882, 1891, 1899, 1906, 1915, 1923, 1930, 1939, + 1947, 1955, 1971, 1987, 2004, 2021, 2038, 2054, + 2070, 2087, 2104, 2121, 2137, 2153, 2170, 2187, + 2204, 2220, 2236, 2253, 2270, 2287, 2293, 2309, + 2325, 2340, 2357, 2373, 2389, 2404, 2421, 2437, + 2453, 2468, 2485, 2501, 2517, 2532, 2549, 2565, + 2581, 2596, 2603, 2610, 2617, 2619, 2621, 2623, + 2630, 2639, 2646, 2655, 2663, 2670, 2679, 2687, + 2694, 2703, 2711, 2718, 2727, 2735, 2743, 2759, + 2775, 2792, 2809, 2826, 2842, 2858, 2875, 2892, + 2909, 2925, 2941, 2958, 2975, 2992, 3008, 3024, + 3041, 3058, 3075, 3086, 3102, 3108, 3124, 3140, + 3155, 3172, 3188, 3204, 3219, 3236, 3252, 3268, + 3283, 3300, 3316, 3332, 3347, 3364, 3380, 3396, + 3411, 3418, 3425, 3432, 3434, 3436, 3438, 3445, + 3454, 3461, 3470, 3478, 3485, 3494, 3502, 3509, + 3518, 3526, 3533, 3542, 3550, 3558, 3574, 3590, + 3607, 3624, 3641, 3657, 3673, 3690, 3707, 3724, + 3740, 3756, 3773, 3790, 3807, 3823, 3839, 3856, + 3873, 3890, 3906, 3924, 3940, 3958, 3969, 3976, + 3978, 3980, 3982, 3989, 4006, 4015, 4022, 4029, + 4031, 4033, 4035, 4042 }; static const short _indic_syllable_machine_indicies[] = { - 1, 2, 3, 3, 4, 1, 5, 5, - 4, 4, 6, 6, 7, 1, 8, 8, - 7, 7, 9, 9, 10, 1, 11, 11, - 10, 10, 12, 12, 13, 1, 14, 14, - 13, 13, 15, 0, 0, 0, 1, 16, - 17, 18, 12, 12, 13, 1, 19, 20, - 21, 9, 9, 10, 1, 22, 23, 24, - 6, 6, 7, 1, 25, 26, 2, 3, - 3, 4, 1, 0, 0, 0, 0, 27, - 28, 3, 3, 4, 1, 28, 3, 3, - 4, 1, 0, 0, 0, 0, 29, 30, - 3, 3, 4, 1, 30, 3, 3, 4, - 1, 0, 0, 0, 0, 31, 32, 3, - 3, 4, 1, 32, 3, 3, 4, 1, - 0, 0, 0, 0, 33, 34, 3, 3, - 4, 1, 34, 3, 3, 4, 1, 0, - 0, 0, 0, 35, 37, 38, 39, 39, - 40, 37, 41, 41, 40, 40, 42, 42, - 43, 37, 44, 44, 43, 43, 45, 45, - 46, 37, 47, 47, 46, 46, 48, 48, - 49, 37, 50, 50, 49, 49, 51, 36, - 36, 36, 37, 52, 53, 54, 48, 48, - 49, 37, 55, 56, 57, 45, 45, 46, - 37, 58, 59, 60, 42, 42, 43, 37, - 61, 62, 38, 39, 39, 40, 37, 36, - 36, 36, 36, 63, 64, 39, 39, 40, - 37, 64, 39, 39, 40, 37, 36, 36, - 36, 36, 65, 66, 39, 39, 40, 37, - 66, 39, 39, 40, 37, 36, 36, 36, - 36, 67, 68, 39, 39, 40, 37, 68, - 39, 39, 40, 37, 36, 36, 36, 36, - 69, 70, 39, 39, 40, 37, 70, 39, - 39, 40, 37, 36, 36, 36, 36, 71, - 73, 74, 75, 75, 76, 73, 78, 78, - 76, 76, 79, 79, 80, 73, 81, 81, - 80, 80, 82, 82, 83, 73, 84, 84, - 83, 83, 85, 85, 86, 73, 87, 87, - 86, 86, 88, 72, 72, 72, 73, 89, - 90, 91, 85, 85, 86, 73, 92, 93, - 94, 82, 82, 83, 73, 95, 96, 97, - 79, 79, 80, 73, 98, 99, 74, 75, - 75, 76, 73, 72, 72, 72, 72, 100, - 101, 75, 75, 76, 73, 101, 75, 75, - 76, 73, 72, 72, 72, 72, 102, 103, - 75, 75, 76, 73, 103, 75, 75, 76, - 73, 72, 72, 72, 72, 104, 105, 75, - 75, 76, 73, 105, 75, 75, 76, 73, - 72, 72, 72, 72, 106, 107, 75, 75, - 76, 73, 109, 110, 111, 111, 112, 109, - 113, 113, 112, 112, 114, 114, 115, 109, - 116, 116, 115, 115, 117, 117, 118, 109, - 119, 119, 118, 118, 120, 120, 121, 109, - 122, 122, 121, 121, 123, 108, 108, 108, - 109, 124, 125, 126, 120, 120, 121, 109, - 127, 128, 129, 117, 117, 118, 109, 130, - 131, 132, 114, 114, 115, 109, 133, 134, - 110, 111, 111, 112, 109, 108, 108, 108, - 108, 135, 136, 111, 111, 112, 109, 136, - 111, 111, 112, 109, 108, 108, 108, 108, - 137, 138, 111, 111, 112, 109, 138, 111, - 111, 112, 109, 108, 108, 108, 108, 139, - 140, 111, 111, 112, 109, 140, 111, 111, - 112, 109, 108, 108, 108, 108, 141, 142, - 111, 111, 112, 109, 142, 111, 111, 112, - 109, 108, 108, 108, 108, 143, 107, 75, - 75, 76, 73, 72, 72, 72, 72, 144, - 78, 78, 76, 1, 146, 148, 149, 150, - 151, 152, 153, 76, 73, 147, 154, 155, - 155, 144, 156, 157, 158, 159, 160, 162, - 163, 164, 165, 4, 1, 161, 166, 161, - 161, 35, 161, 161, 167, 168, 163, 169, - 169, 4, 1, 161, 166, 161, 161, 161, - 161, 161, 167, 163, 169, 169, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 167, - 170, 161, 161, 161, 17, 171, 161, 1, - 161, 166, 161, 161, 161, 161, 170, 172, - 173, 174, 175, 4, 1, 161, 166, 161, - 161, 33, 161, 161, 167, 176, 173, 177, - 177, 4, 1, 161, 166, 161, 161, 161, - 161, 161, 167, 173, 177, 177, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 167, - 178, 161, 161, 161, 17, 179, 161, 1, - 161, 166, 161, 161, 161, 161, 178, 180, - 181, 182, 183, 4, 1, 161, 166, 161, - 161, 31, 161, 161, 167, 184, 181, 185, - 185, 4, 1, 161, 166, 161, 161, 161, - 161, 161, 167, 181, 185, 185, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 167, - 186, 161, 161, 161, 17, 187, 161, 1, - 161, 166, 161, 161, 161, 161, 186, 188, - 189, 190, 191, 4, 1, 161, 166, 161, - 161, 29, 161, 161, 167, 192, 189, 193, - 193, 4, 1, 161, 166, 161, 161, 161, - 161, 161, 167, 189, 193, 193, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 167, - 194, 161, 161, 161, 17, 195, 161, 1, - 161, 166, 161, 161, 161, 161, 194, 196, - 197, 198, 199, 4, 1, 161, 166, 161, - 161, 27, 161, 161, 167, 200, 197, 201, - 201, 4, 1, 161, 166, 161, 161, 161, - 161, 161, 167, 197, 201, 201, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 167, - 17, 202, 161, 1, 161, 166, 203, 203, - 161, 1, 161, 166, 204, 161, 161, 205, - 161, 166, 166, 206, 207, 204, 161, 161, - 161, 161, 166, 17, 161, 203, 203, 161, - 1, 161, 166, 203, 202, 161, 1, 161, - 166, 208, 26, 209, 210, 7, 1, 161, - 166, 26, 209, 210, 7, 1, 161, 166, - 209, 209, 7, 1, 161, 166, 211, 23, - 212, 213, 10, 1, 161, 166, 23, 212, - 213, 10, 1, 161, 166, 212, 212, 10, - 1, 161, 166, 214, 20, 215, 216, 13, - 1, 161, 166, 20, 215, 216, 13, 1, - 161, 166, 215, 215, 13, 1, 161, 166, - 217, 17, 203, 218, 161, 1, 161, 166, - 17, 203, 218, 161, 1, 161, 166, 197, - 201, 201, 4, 1, 161, 166, 196, 197, - 201, 201, 4, 1, 161, 166, 161, 161, - 161, 161, 161, 167, 196, 197, 198, 201, - 4, 1, 161, 166, 161, 161, 27, 161, - 161, 167, 194, 161, 219, 161, 203, 203, - 161, 1, 161, 166, 161, 161, 161, 161, - 194, 194, 161, 161, 161, 203, 203, 161, - 1, 161, 166, 161, 161, 161, 161, 194, - 194, 161, 161, 161, 203, 195, 161, 1, - 161, 166, 161, 161, 161, 161, 194, 188, - 189, 193, 193, 4, 1, 161, 166, 161, - 161, 161, 161, 161, 167, 188, 189, 190, - 193, 4, 1, 161, 166, 161, 161, 29, - 161, 161, 167, 186, 161, 220, 161, 203, - 203, 161, 1, 161, 166, 161, 161, 161, - 161, 186, 186, 161, 161, 161, 203, 203, - 161, 1, 161, 166, 161, 161, 161, 161, - 186, 186, 161, 161, 161, 203, 187, 161, - 1, 161, 166, 161, 161, 161, 161, 186, - 180, 181, 185, 185, 4, 1, 161, 166, - 161, 161, 161, 161, 161, 167, 180, 181, - 182, 185, 4, 1, 161, 166, 161, 161, - 31, 161, 161, 167, 178, 161, 221, 161, - 203, 203, 161, 1, 161, 166, 161, 161, - 161, 161, 178, 178, 161, 161, 161, 203, - 203, 161, 1, 161, 166, 161, 161, 161, - 161, 178, 178, 161, 161, 161, 203, 179, - 161, 1, 161, 166, 161, 161, 161, 161, - 178, 172, 173, 177, 177, 4, 1, 161, - 166, 161, 161, 161, 161, 161, 167, 172, - 173, 174, 177, 4, 1, 161, 166, 161, - 161, 33, 161, 161, 167, 170, 161, 222, - 161, 203, 203, 161, 1, 161, 166, 161, - 161, 161, 161, 170, 170, 161, 161, 161, - 203, 203, 161, 1, 161, 166, 161, 161, - 161, 161, 170, 170, 161, 161, 161, 203, - 171, 161, 1, 161, 166, 161, 161, 161, - 161, 170, 162, 163, 169, 169, 4, 1, - 161, 166, 161, 161, 161, 161, 161, 167, - 162, 163, 164, 169, 4, 1, 161, 166, - 161, 161, 35, 161, 161, 167, 224, 225, - 226, 227, 40, 37, 223, 228, 223, 223, - 71, 223, 223, 229, 230, 225, 231, 227, - 40, 37, 223, 228, 223, 223, 223, 223, - 223, 229, 225, 231, 227, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 229, 232, - 223, 223, 223, 53, 233, 223, 37, 223, - 228, 223, 223, 223, 223, 232, 234, 235, - 236, 237, 40, 37, 223, 228, 223, 223, - 69, 223, 223, 229, 238, 235, 239, 239, - 40, 37, 223, 228, 223, 223, 223, 223, - 223, 229, 235, 239, 239, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 229, 240, - 223, 223, 223, 53, 241, 223, 37, 223, - 228, 223, 223, 223, 223, 240, 242, 243, - 244, 245, 40, 37, 223, 228, 223, 223, - 67, 223, 223, 229, 246, 243, 247, 247, - 40, 37, 223, 228, 223, 223, 223, 223, - 223, 229, 243, 247, 247, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 229, 248, - 223, 223, 223, 53, 249, 223, 37, 223, - 228, 223, 223, 223, 223, 248, 250, 251, - 252, 253, 40, 37, 223, 228, 223, 223, - 65, 223, 223, 229, 254, 251, 255, 255, - 40, 37, 223, 228, 223, 223, 223, 223, - 223, 229, 251, 255, 255, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 229, 256, - 223, 223, 223, 53, 257, 223, 37, 223, - 228, 223, 223, 223, 223, 256, 258, 259, - 260, 261, 40, 37, 223, 228, 223, 223, - 63, 223, 223, 229, 262, 259, 263, 263, - 40, 37, 223, 228, 223, 223, 223, 223, - 223, 229, 259, 263, 263, 40, 37, 223, - 228, 223, 223, 223, 223, 223, 229, 53, - 264, 223, 37, 223, 228, 265, 265, 223, - 37, 223, 228, 266, 223, 223, 267, 223, - 228, 228, 268, 269, 266, 223, 223, 223, - 223, 228, 53, 223, 265, 265, 223, 37, - 223, 228, 265, 264, 223, 37, 223, 228, - 270, 62, 271, 272, 43, 37, 223, 228, - 62, 271, 272, 43, 37, 223, 228, 271, - 271, 43, 37, 223, 228, 273, 59, 274, - 275, 46, 37, 223, 228, 59, 274, 275, - 46, 37, 223, 228, 274, 274, 46, 37, - 223, 228, 276, 56, 277, 278, 49, 37, - 223, 228, 56, 277, 278, 49, 37, 223, - 228, 277, 277, 49, 37, 223, 228, 279, - 53, 265, 280, 223, 37, 223, 228, 53, - 265, 280, 223, 37, 223, 228, 259, 263, - 263, 40, 37, 223, 228, 258, 259, 263, - 263, 40, 37, 223, 228, 223, 223, 223, - 223, 223, 229, 258, 259, 260, 263, 40, - 37, 223, 228, 223, 223, 63, 223, 223, - 229, 256, 223, 281, 223, 265, 265, 223, - 37, 223, 228, 223, 223, 223, 223, 256, - 256, 223, 223, 223, 265, 265, 223, 37, - 223, 228, 223, 223, 223, 223, 256, 256, - 223, 223, 223, 265, 257, 223, 37, 223, - 228, 223, 223, 223, 223, 256, 250, 251, - 255, 255, 40, 37, 223, 228, 223, 223, - 223, 223, 223, 229, 250, 251, 252, 255, - 40, 37, 223, 228, 223, 223, 65, 223, - 223, 229, 248, 223, 282, 223, 265, 265, - 223, 37, 223, 228, 223, 223, 223, 223, - 248, 248, 223, 223, 223, 265, 265, 223, - 37, 223, 228, 223, 223, 223, 223, 248, - 248, 223, 223, 223, 265, 249, 223, 37, - 223, 228, 223, 223, 223, 223, 248, 242, - 243, 247, 247, 40, 37, 223, 228, 223, - 223, 223, 223, 223, 229, 242, 243, 244, - 247, 40, 37, 223, 228, 223, 223, 67, - 223, 223, 229, 240, 223, 283, 223, 265, - 265, 223, 37, 223, 228, 223, 223, 223, - 223, 240, 240, 223, 223, 223, 265, 265, - 223, 37, 223, 228, 223, 223, 223, 223, - 240, 240, 223, 223, 223, 265, 241, 223, - 37, 223, 228, 223, 223, 223, 223, 240, - 234, 235, 239, 239, 40, 37, 223, 228, - 223, 223, 223, 223, 223, 229, 234, 235, - 236, 239, 40, 37, 223, 228, 223, 223, - 69, 223, 223, 229, 232, 223, 284, 223, - 265, 265, 223, 37, 223, 228, 223, 223, - 223, 223, 232, 232, 223, 223, 223, 265, - 265, 223, 37, 223, 228, 223, 223, 223, - 223, 232, 232, 223, 223, 223, 265, 233, - 223, 37, 223, 228, 223, 223, 223, 223, - 232, 70, 39, 39, 40, 37, 224, 225, - 231, 227, 40, 37, 223, 228, 223, 223, - 223, 223, 223, 229, 286, 151, 287, 287, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 158, 151, 287, 287, 76, 73, 285, - 154, 285, 285, 285, 285, 285, 158, 288, - 285, 285, 285, 90, 289, 285, 73, 285, - 154, 285, 285, 285, 285, 288, 290, 291, - 292, 293, 76, 73, 285, 154, 285, 285, - 106, 285, 285, 158, 294, 291, 295, 295, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 158, 291, 295, 295, 76, 73, 285, - 154, 285, 285, 285, 285, 285, 158, 296, - 285, 285, 285, 90, 297, 285, 73, 285, - 154, 285, 285, 285, 285, 296, 298, 299, - 300, 301, 76, 73, 285, 154, 285, 285, - 104, 285, 285, 158, 302, 299, 303, 303, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 158, 299, 303, 303, 76, 73, 285, - 154, 285, 285, 285, 285, 285, 158, 304, - 285, 285, 285, 90, 305, 285, 73, 285, - 154, 285, 285, 285, 285, 304, 306, 307, - 308, 309, 76, 73, 285, 154, 285, 285, - 102, 285, 285, 158, 310, 307, 311, 311, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 158, 307, 311, 311, 76, 73, 285, - 154, 285, 285, 285, 285, 285, 158, 312, - 285, 285, 285, 90, 313, 285, 73, 285, - 154, 285, 285, 285, 285, 312, 314, 315, - 316, 317, 76, 73, 285, 154, 285, 285, - 100, 285, 285, 158, 318, 315, 319, 319, - 76, 73, 285, 154, 285, 285, 285, 285, - 285, 158, 315, 319, 319, 76, 73, 285, - 154, 285, 285, 285, 285, 285, 158, 90, - 320, 285, 73, 285, 154, 321, 321, 285, - 73, 285, 154, 322, 285, 285, 323, 285, - 154, 154, 324, 325, 322, 285, 285, 285, - 285, 154, 90, 285, 321, 321, 285, 73, - 285, 154, 321, 320, 285, 73, 285, 154, - 326, 99, 327, 328, 80, 73, 285, 154, - 99, 327, 328, 80, 73, 285, 154, 327, - 327, 80, 73, 285, 154, 329, 96, 330, - 331, 83, 73, 285, 154, 96, 330, 331, - 83, 73, 285, 154, 330, 330, 83, 73, - 285, 154, 332, 93, 333, 334, 86, 73, - 285, 154, 93, 333, 334, 86, 73, 285, - 154, 333, 333, 86, 73, 285, 154, 335, - 90, 321, 336, 285, 73, 285, 154, 90, - 321, 336, 285, 73, 285, 154, 315, 319, - 319, 76, 73, 285, 154, 314, 315, 319, - 319, 76, 73, 285, 154, 285, 285, 285, - 285, 285, 158, 314, 315, 316, 319, 76, - 73, 285, 154, 285, 285, 100, 285, 285, - 158, 312, 285, 337, 285, 321, 321, 285, - 73, 285, 154, 285, 285, 285, 285, 312, - 312, 285, 285, 285, 321, 321, 285, 73, - 285, 154, 285, 285, 285, 285, 312, 312, - 285, 285, 285, 321, 313, 285, 73, 285, - 154, 285, 285, 285, 285, 312, 306, 307, - 311, 311, 76, 73, 285, 154, 285, 285, - 285, 285, 285, 158, 306, 307, 308, 311, - 76, 73, 285, 154, 285, 285, 102, 285, - 285, 158, 304, 285, 338, 285, 321, 321, - 285, 73, 285, 154, 285, 285, 285, 285, - 304, 304, 285, 285, 285, 321, 321, 285, - 73, 285, 154, 285, 285, 285, 285, 304, - 304, 285, 285, 285, 321, 305, 285, 73, - 285, 154, 285, 285, 285, 285, 304, 298, - 299, 303, 303, 76, 73, 285, 154, 285, - 285, 285, 285, 285, 158, 298, 299, 300, - 303, 76, 73, 285, 154, 285, 285, 104, - 285, 285, 158, 296, 285, 339, 285, 321, - 321, 285, 73, 285, 154, 285, 285, 285, - 285, 296, 296, 285, 285, 285, 321, 321, - 285, 73, 285, 154, 285, 285, 285, 285, - 296, 296, 285, 285, 285, 321, 297, 285, - 73, 285, 154, 285, 285, 285, 285, 296, - 290, 291, 295, 295, 76, 73, 285, 154, - 285, 285, 285, 285, 285, 158, 290, 291, - 292, 295, 76, 73, 285, 154, 285, 285, - 106, 285, 285, 158, 288, 285, 340, 285, - 321, 321, 285, 73, 285, 154, 285, 285, - 285, 285, 288, 288, 285, 285, 285, 321, - 321, 285, 73, 285, 154, 285, 285, 285, - 285, 288, 288, 285, 285, 285, 321, 289, - 285, 73, 285, 154, 285, 285, 285, 285, - 288, 107, 75, 75, 76, 73, 341, 341, - 341, 341, 144, 150, 151, 287, 287, 76, - 73, 285, 154, 285, 285, 285, 285, 285, - 158, 107, 75, 75, 76, 73, 343, 344, - 345, 346, 112, 109, 342, 347, 342, 342, - 143, 342, 342, 348, 349, 344, 346, 346, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 348, 344, 346, 346, 112, 109, 342, - 347, 342, 342, 342, 342, 342, 348, 350, - 342, 342, 342, 125, 351, 342, 109, 342, - 347, 342, 342, 342, 342, 350, 352, 353, - 354, 355, 112, 109, 342, 347, 342, 342, - 141, 342, 342, 348, 356, 353, 357, 357, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 348, 353, 357, 357, 112, 109, 342, - 347, 342, 342, 342, 342, 342, 348, 358, - 342, 342, 342, 125, 359, 342, 109, 342, - 347, 342, 342, 342, 342, 358, 360, 361, - 362, 363, 112, 109, 342, 347, 342, 342, - 139, 342, 342, 348, 364, 361, 365, 365, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 348, 361, 365, 365, 112, 109, 342, - 347, 342, 342, 342, 342, 342, 348, 366, - 342, 342, 342, 125, 367, 342, 109, 342, - 347, 342, 342, 342, 342, 366, 368, 369, - 370, 371, 112, 109, 342, 347, 342, 342, - 137, 342, 342, 348, 372, 369, 373, 373, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 348, 369, 373, 373, 112, 109, 342, - 347, 342, 342, 342, 342, 342, 348, 374, - 342, 342, 342, 125, 375, 342, 109, 342, - 347, 342, 342, 342, 342, 374, 376, 377, - 378, 379, 112, 109, 342, 347, 342, 342, - 135, 342, 342, 348, 380, 377, 381, 381, - 112, 109, 342, 347, 342, 342, 342, 342, - 342, 348, 377, 381, 381, 112, 109, 342, - 347, 342, 342, 342, 342, 342, 348, 125, - 382, 342, 109, 342, 347, 383, 383, 342, - 109, 342, 347, 384, 342, 342, 385, 342, - 347, 347, 386, 387, 384, 342, 342, 342, - 342, 347, 125, 342, 383, 383, 342, 109, - 342, 347, 383, 382, 342, 109, 342, 347, - 388, 134, 389, 390, 115, 109, 342, 347, - 134, 389, 390, 115, 109, 342, 347, 389, - 389, 115, 109, 342, 347, 391, 131, 392, - 393, 118, 109, 342, 347, 131, 392, 393, - 118, 109, 342, 347, 392, 392, 118, 109, - 342, 347, 394, 128, 395, 396, 121, 109, - 342, 347, 128, 395, 396, 121, 109, 342, - 347, 395, 395, 121, 109, 342, 347, 397, - 125, 383, 398, 342, 109, 342, 347, 125, - 383, 398, 342, 109, 342, 347, 377, 381, - 381, 112, 109, 342, 347, 376, 377, 381, - 381, 112, 109, 342, 347, 342, 342, 342, - 342, 342, 348, 376, 377, 378, 381, 112, - 109, 342, 347, 342, 342, 135, 342, 342, - 348, 374, 342, 399, 342, 383, 383, 342, - 109, 342, 347, 342, 342, 342, 342, 374, - 374, 342, 342, 342, 383, 383, 342, 109, - 342, 347, 342, 342, 342, 342, 374, 374, - 342, 342, 342, 383, 375, 342, 109, 342, - 347, 342, 342, 342, 342, 374, 368, 369, - 373, 373, 112, 109, 342, 347, 342, 342, - 342, 342, 342, 348, 368, 369, 370, 373, - 112, 109, 342, 347, 342, 342, 137, 342, - 342, 348, 366, 342, 400, 342, 383, 383, - 342, 109, 342, 347, 342, 342, 342, 342, - 366, 366, 342, 342, 342, 383, 383, 342, - 109, 342, 347, 342, 342, 342, 342, 366, - 366, 342, 342, 342, 383, 367, 342, 109, - 342, 347, 342, 342, 342, 342, 366, 360, - 361, 365, 365, 112, 109, 342, 347, 342, - 342, 342, 342, 342, 348, 360, 361, 362, - 365, 112, 109, 342, 347, 342, 342, 139, - 342, 342, 348, 358, 342, 401, 342, 383, - 383, 342, 109, 342, 347, 342, 342, 342, - 342, 358, 358, 342, 342, 342, 383, 383, - 342, 109, 342, 347, 342, 342, 342, 342, - 358, 358, 342, 342, 342, 383, 359, 342, - 109, 342, 347, 342, 342, 342, 342, 358, - 352, 353, 357, 357, 112, 109, 342, 347, - 342, 342, 342, 342, 342, 348, 352, 353, - 354, 357, 112, 109, 342, 347, 342, 342, - 141, 342, 342, 348, 350, 342, 402, 342, - 383, 383, 342, 109, 342, 347, 342, 342, - 342, 342, 350, 350, 342, 342, 342, 383, - 383, 342, 109, 342, 347, 342, 342, 342, - 342, 350, 350, 342, 342, 342, 383, 351, - 342, 109, 342, 347, 342, 342, 342, 342, - 350, 343, 344, 346, 346, 112, 109, 342, - 347, 342, 342, 342, 342, 342, 348, 148, - 149, 150, 151, 403, 287, 76, 73, 285, - 154, 155, 155, 144, 285, 148, 158, 162, - 404, 164, 165, 4, 1, 161, 166, 161, - 161, 35, 161, 161, 167, 170, 149, 150, - 151, 405, 406, 76, 407, 161, 408, 161, - 155, 144, 161, 170, 158, 107, 409, 409, - 76, 407, 161, 166, 161, 161, 144, 410, - 161, 161, 411, 161, 408, 408, 412, 207, - 410, 161, 161, 161, 161, 408, 170, 161, - 222, 107, 409, 409, 76, 407, 161, 166, - 161, 161, 161, 161, 170, 414, 413, 415, - 415, 413, 146, 413, 416, 415, 415, 413, - 146, 413, 416, 417, 413, 413, 418, 413, - 416, 416, 419, 420, 417, 413, 413, 413, - 413, 416, 148, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 155, 341, 341, 341, - 148, 0 + 1, 0, 2, 3, 3, 4, 1, 0, + 5, 5, 4, 0, 4, 0, 6, 6, + 7, 1, 0, 8, 8, 7, 0, 7, + 0, 9, 9, 10, 1, 0, 11, 11, + 10, 0, 10, 0, 12, 12, 13, 1, + 0, 14, 14, 13, 0, 13, 0, 15, + 0, 0, 0, 1, 0, 16, 0, 17, + 0, 18, 12, 12, 13, 1, 0, 19, + 0, 20, 0, 21, 9, 9, 10, 1, + 0, 22, 0, 23, 0, 24, 6, 6, + 7, 1, 0, 25, 0, 26, 0, 2, + 3, 3, 4, 1, 0, 0, 0, 0, + 27, 0, 28, 3, 3, 4, 1, 0, + 28, 3, 3, 4, 1, 0, 0, 0, + 0, 29, 0, 30, 3, 3, 4, 1, + 0, 30, 3, 3, 4, 1, 0, 0, + 0, 0, 31, 0, 32, 3, 3, 4, + 1, 0, 32, 3, 3, 4, 1, 0, + 0, 0, 0, 33, 0, 34, 3, 3, + 4, 1, 0, 34, 3, 3, 4, 1, + 0, 0, 0, 0, 35, 0, 37, 36, + 38, 39, 39, 40, 37, 36, 41, 41, + 40, 36, 40, 36, 42, 42, 43, 37, + 36, 44, 44, 43, 36, 43, 36, 45, + 45, 46, 37, 36, 47, 47, 46, 36, + 46, 36, 48, 48, 49, 37, 36, 50, + 50, 49, 36, 49, 36, 51, 36, 36, + 36, 37, 36, 52, 36, 53, 36, 54, + 48, 48, 49, 37, 36, 55, 36, 56, + 36, 57, 45, 45, 46, 37, 36, 58, + 36, 59, 36, 60, 42, 42, 43, 37, + 36, 61, 36, 62, 36, 38, 39, 39, + 40, 37, 36, 36, 36, 36, 63, 36, + 64, 39, 39, 40, 37, 36, 64, 39, + 39, 40, 37, 36, 36, 36, 36, 65, + 36, 66, 39, 39, 40, 37, 36, 66, + 39, 39, 40, 37, 36, 36, 36, 36, + 67, 36, 68, 39, 39, 40, 37, 36, + 68, 39, 39, 40, 37, 36, 36, 36, + 36, 69, 36, 70, 39, 39, 40, 37, + 36, 70, 39, 39, 40, 37, 36, 36, + 36, 36, 71, 36, 73, 72, 74, 75, + 75, 76, 73, 72, 78, 78, 76, 77, + 76, 77, 79, 79, 80, 73, 72, 81, + 81, 80, 72, 80, 72, 82, 82, 83, + 73, 72, 84, 84, 83, 72, 83, 72, + 85, 85, 86, 73, 72, 87, 87, 86, + 72, 86, 72, 88, 72, 72, 72, 73, + 72, 89, 72, 90, 72, 91, 85, 85, + 86, 73, 72, 92, 72, 93, 72, 94, + 82, 82, 83, 73, 72, 95, 72, 96, + 72, 97, 79, 79, 80, 73, 72, 98, + 72, 99, 72, 74, 75, 75, 76, 73, + 72, 72, 72, 72, 100, 72, 101, 75, + 75, 76, 73, 72, 101, 75, 75, 76, + 73, 72, 72, 72, 72, 102, 72, 103, + 75, 75, 76, 73, 72, 103, 75, 75, + 76, 73, 72, 72, 72, 72, 104, 72, + 105, 75, 75, 76, 73, 72, 105, 75, + 75, 76, 73, 72, 72, 72, 72, 106, + 72, 107, 75, 75, 76, 73, 72, 109, + 108, 110, 111, 111, 112, 109, 108, 113, + 113, 112, 108, 112, 108, 114, 114, 115, + 109, 108, 116, 116, 115, 108, 115, 108, + 117, 117, 118, 109, 108, 119, 119, 118, + 108, 118, 108, 120, 120, 121, 109, 108, + 122, 122, 121, 108, 121, 108, 123, 108, + 108, 108, 109, 108, 124, 108, 125, 108, + 126, 120, 120, 121, 109, 108, 127, 108, + 128, 108, 129, 117, 117, 118, 109, 108, + 130, 108, 131, 108, 132, 114, 114, 115, + 109, 108, 133, 108, 134, 108, 110, 111, + 111, 112, 109, 108, 108, 108, 108, 135, + 108, 136, 111, 111, 112, 109, 108, 136, + 111, 111, 112, 109, 108, 108, 108, 108, + 137, 108, 138, 111, 111, 112, 109, 108, + 138, 111, 111, 112, 109, 108, 108, 108, + 108, 139, 108, 140, 111, 111, 112, 109, + 108, 140, 111, 111, 112, 109, 108, 108, + 108, 108, 141, 108, 142, 111, 111, 112, + 109, 108, 142, 111, 111, 112, 109, 108, + 108, 108, 108, 143, 108, 107, 75, 75, + 76, 73, 72, 72, 72, 72, 144, 72, + 78, 78, 76, 1, 0, 146, 145, 148, + 149, 150, 151, 152, 153, 76, 73, 147, + 154, 155, 155, 144, 147, 156, 157, 158, + 159, 160, 147, 162, 163, 164, 165, 4, + 1, 161, 166, 161, 161, 35, 161, 161, + 161, 167, 161, 168, 163, 169, 169, 4, + 1, 161, 166, 161, 161, 161, 161, 161, + 161, 167, 161, 163, 169, 169, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 161, + 167, 161, 170, 161, 161, 161, 17, 171, + 161, 1, 161, 166, 161, 161, 161, 161, + 161, 170, 161, 172, 173, 174, 175, 4, + 1, 161, 166, 161, 161, 33, 161, 161, + 161, 167, 161, 176, 173, 177, 177, 4, + 1, 161, 166, 161, 161, 161, 161, 161, + 161, 167, 161, 173, 177, 177, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 161, + 167, 161, 178, 161, 161, 161, 17, 179, + 161, 1, 161, 166, 161, 161, 161, 161, + 161, 178, 161, 180, 181, 182, 183, 4, + 1, 161, 166, 161, 161, 31, 161, 161, + 161, 167, 161, 184, 181, 185, 185, 4, + 1, 161, 166, 161, 161, 161, 161, 161, + 161, 167, 161, 181, 185, 185, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 161, + 167, 161, 186, 161, 161, 161, 17, 187, + 161, 1, 161, 166, 161, 161, 161, 161, + 161, 186, 161, 188, 189, 190, 191, 4, + 1, 161, 166, 161, 161, 29, 161, 161, + 161, 167, 161, 192, 189, 193, 193, 4, + 1, 161, 166, 161, 161, 161, 161, 161, + 161, 167, 161, 189, 193, 193, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 161, + 167, 161, 194, 161, 161, 161, 17, 195, + 161, 1, 161, 166, 161, 161, 161, 161, + 161, 194, 161, 196, 197, 198, 199, 4, + 1, 161, 166, 161, 161, 27, 161, 161, + 161, 167, 161, 200, 197, 201, 201, 4, + 1, 161, 166, 161, 161, 161, 161, 161, + 161, 167, 161, 197, 201, 201, 4, 1, + 161, 166, 161, 161, 161, 161, 161, 161, + 167, 161, 17, 202, 161, 1, 161, 166, + 161, 203, 203, 161, 1, 161, 166, 161, + 204, 161, 161, 205, 161, 166, 161, 166, + 161, 206, 161, 207, 161, 204, 161, 161, + 161, 161, 166, 161, 17, 161, 203, 203, + 161, 1, 161, 166, 161, 203, 202, 161, + 1, 161, 166, 161, 208, 26, 209, 210, + 7, 1, 161, 166, 161, 26, 209, 210, + 7, 1, 161, 166, 161, 209, 209, 7, + 1, 161, 166, 161, 211, 23, 212, 213, + 10, 1, 161, 166, 161, 23, 212, 213, + 10, 1, 161, 166, 161, 212, 212, 10, + 1, 161, 166, 161, 214, 20, 215, 216, + 13, 1, 161, 166, 161, 20, 215, 216, + 13, 1, 161, 166, 161, 215, 215, 13, + 1, 161, 166, 161, 217, 17, 203, 218, + 161, 1, 161, 166, 161, 17, 203, 218, + 161, 1, 161, 166, 161, 197, 201, 201, + 4, 1, 161, 166, 161, 196, 197, 201, + 201, 4, 1, 161, 166, 161, 161, 161, + 161, 161, 161, 167, 161, 196, 197, 198, + 201, 4, 1, 161, 166, 161, 161, 27, + 161, 161, 161, 167, 161, 194, 161, 219, + 161, 203, 203, 161, 1, 161, 166, 161, + 161, 161, 161, 161, 194, 161, 194, 161, + 161, 161, 203, 203, 161, 1, 161, 166, + 161, 161, 161, 161, 161, 194, 161, 194, + 161, 161, 161, 203, 195, 161, 1, 161, + 166, 161, 161, 161, 161, 161, 194, 161, + 188, 189, 193, 193, 4, 1, 161, 166, + 161, 161, 161, 161, 161, 161, 167, 161, + 188, 189, 190, 193, 4, 1, 161, 166, + 161, 161, 29, 161, 161, 161, 167, 161, + 186, 161, 220, 161, 203, 203, 161, 1, + 161, 166, 161, 161, 161, 161, 161, 186, + 161, 186, 161, 161, 161, 203, 203, 161, + 1, 161, 166, 161, 161, 161, 161, 161, + 186, 161, 186, 161, 161, 161, 203, 187, + 161, 1, 161, 166, 161, 161, 161, 161, + 161, 186, 161, 180, 181, 185, 185, 4, + 1, 161, 166, 161, 161, 161, 161, 161, + 161, 167, 161, 180, 181, 182, 185, 4, + 1, 161, 166, 161, 161, 31, 161, 161, + 161, 167, 161, 178, 161, 221, 161, 203, + 203, 161, 1, 161, 166, 161, 161, 161, + 161, 161, 178, 161, 178, 161, 161, 161, + 203, 203, 161, 1, 161, 166, 161, 161, + 161, 161, 161, 178, 161, 178, 161, 161, + 161, 203, 179, 161, 1, 161, 166, 161, + 161, 161, 161, 161, 178, 161, 172, 173, + 177, 177, 4, 1, 161, 166, 161, 161, + 161, 161, 161, 161, 167, 161, 172, 173, + 174, 177, 4, 1, 161, 166, 161, 161, + 33, 161, 161, 161, 167, 161, 170, 161, + 222, 161, 203, 203, 161, 1, 161, 166, + 161, 161, 161, 161, 161, 170, 161, 170, + 161, 161, 161, 203, 203, 161, 1, 161, + 166, 161, 161, 161, 161, 161, 170, 161, + 170, 161, 161, 161, 203, 171, 161, 1, + 161, 166, 161, 161, 161, 161, 161, 170, + 161, 162, 163, 169, 169, 4, 1, 161, + 166, 161, 161, 161, 161, 161, 161, 167, + 161, 162, 163, 164, 169, 4, 1, 161, + 166, 161, 161, 35, 161, 161, 161, 167, + 161, 224, 225, 226, 227, 40, 37, 223, + 228, 223, 223, 71, 223, 223, 223, 229, + 223, 230, 225, 231, 227, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 223, 229, + 223, 225, 231, 227, 40, 37, 223, 228, + 223, 223, 223, 223, 223, 223, 229, 223, + 232, 223, 223, 223, 53, 233, 223, 37, + 223, 228, 223, 223, 223, 223, 223, 232, + 223, 234, 235, 236, 237, 40, 37, 223, + 228, 223, 223, 69, 223, 223, 223, 229, + 223, 238, 235, 239, 239, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 223, 229, + 223, 235, 239, 239, 40, 37, 223, 228, + 223, 223, 223, 223, 223, 223, 229, 223, + 240, 223, 223, 223, 53, 241, 223, 37, + 223, 228, 223, 223, 223, 223, 223, 240, + 223, 242, 243, 244, 245, 40, 37, 223, + 228, 223, 223, 67, 223, 223, 223, 229, + 223, 246, 243, 247, 247, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 223, 229, + 223, 243, 247, 247, 40, 37, 223, 228, + 223, 223, 223, 223, 223, 223, 229, 223, + 248, 223, 223, 223, 53, 249, 223, 37, + 223, 228, 223, 223, 223, 223, 223, 248, + 223, 250, 251, 252, 253, 40, 37, 223, + 228, 223, 223, 65, 223, 223, 223, 229, + 223, 254, 251, 255, 255, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 223, 229, + 223, 251, 255, 255, 40, 37, 223, 228, + 223, 223, 223, 223, 223, 223, 229, 223, + 256, 223, 223, 223, 53, 257, 223, 37, + 223, 228, 223, 223, 223, 223, 223, 256, + 223, 258, 259, 260, 261, 40, 37, 223, + 228, 223, 223, 63, 223, 223, 223, 229, + 223, 262, 259, 263, 263, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 223, 229, + 223, 259, 263, 263, 40, 37, 223, 228, + 223, 223, 223, 223, 223, 223, 229, 223, + 53, 264, 223, 37, 223, 228, 223, 265, + 265, 223, 37, 223, 228, 223, 266, 223, + 223, 267, 223, 228, 223, 228, 223, 268, + 223, 269, 223, 266, 223, 223, 223, 223, + 228, 223, 53, 223, 265, 265, 223, 37, + 223, 228, 223, 265, 264, 223, 37, 223, + 228, 223, 270, 62, 271, 272, 43, 37, + 223, 228, 223, 62, 271, 272, 43, 37, + 223, 228, 223, 271, 271, 43, 37, 223, + 228, 223, 273, 59, 274, 275, 46, 37, + 223, 228, 223, 59, 274, 275, 46, 37, + 223, 228, 223, 274, 274, 46, 37, 223, + 228, 223, 276, 56, 277, 278, 49, 37, + 223, 228, 223, 56, 277, 278, 49, 37, + 223, 228, 223, 277, 277, 49, 37, 223, + 228, 223, 279, 53, 265, 280, 223, 37, + 223, 228, 223, 53, 265, 280, 223, 37, + 223, 228, 223, 259, 263, 263, 40, 37, + 223, 228, 223, 258, 259, 263, 263, 40, + 37, 223, 228, 223, 223, 223, 223, 223, + 223, 229, 223, 258, 259, 260, 263, 40, + 37, 223, 228, 223, 223, 63, 223, 223, + 223, 229, 223, 256, 223, 281, 223, 265, + 265, 223, 37, 223, 228, 223, 223, 223, + 223, 223, 256, 223, 256, 223, 223, 223, + 265, 265, 223, 37, 223, 228, 223, 223, + 223, 223, 223, 256, 223, 256, 223, 223, + 223, 265, 257, 223, 37, 223, 228, 223, + 223, 223, 223, 223, 256, 223, 250, 251, + 255, 255, 40, 37, 223, 228, 223, 223, + 223, 223, 223, 223, 229, 223, 250, 251, + 252, 255, 40, 37, 223, 228, 223, 223, + 65, 223, 223, 223, 229, 223, 248, 223, + 282, 223, 265, 265, 223, 37, 223, 228, + 223, 223, 223, 223, 223, 248, 223, 248, + 223, 223, 223, 265, 265, 223, 37, 223, + 228, 223, 223, 223, 223, 223, 248, 223, + 248, 223, 223, 223, 265, 249, 223, 37, + 223, 228, 223, 223, 223, 223, 223, 248, + 223, 242, 243, 247, 247, 40, 37, 223, + 228, 223, 223, 223, 223, 223, 223, 229, + 223, 242, 243, 244, 247, 40, 37, 223, + 228, 223, 223, 67, 223, 223, 223, 229, + 223, 240, 223, 283, 223, 265, 265, 223, + 37, 223, 228, 223, 223, 223, 223, 223, + 240, 223, 240, 223, 223, 223, 265, 265, + 223, 37, 223, 228, 223, 223, 223, 223, + 223, 240, 223, 240, 223, 223, 223, 265, + 241, 223, 37, 223, 228, 223, 223, 223, + 223, 223, 240, 223, 234, 235, 239, 239, + 40, 37, 223, 228, 223, 223, 223, 223, + 223, 223, 229, 223, 234, 235, 236, 239, + 40, 37, 223, 228, 223, 223, 69, 223, + 223, 223, 229, 223, 232, 223, 284, 223, + 265, 265, 223, 37, 223, 228, 223, 223, + 223, 223, 223, 232, 223, 232, 223, 223, + 223, 265, 265, 223, 37, 223, 228, 223, + 223, 223, 223, 223, 232, 223, 232, 223, + 223, 223, 265, 233, 223, 37, 223, 228, + 223, 223, 223, 223, 223, 232, 223, 70, + 39, 39, 40, 37, 223, 224, 225, 231, + 227, 40, 37, 223, 228, 223, 223, 223, + 223, 223, 223, 229, 223, 286, 151, 287, + 287, 76, 73, 285, 154, 285, 285, 285, + 285, 285, 285, 158, 285, 151, 287, 287, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 285, 158, 285, 288, 285, 285, 285, + 90, 289, 285, 73, 285, 154, 285, 285, + 285, 285, 285, 288, 285, 290, 291, 292, + 293, 76, 73, 285, 154, 285, 285, 106, + 285, 285, 285, 158, 285, 294, 291, 295, + 295, 76, 73, 285, 154, 285, 285, 285, + 285, 285, 285, 158, 285, 291, 295, 295, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 285, 158, 285, 296, 285, 285, 285, + 90, 297, 285, 73, 285, 154, 285, 285, + 285, 285, 285, 296, 285, 298, 299, 300, + 301, 76, 73, 285, 154, 285, 285, 104, + 285, 285, 285, 158, 285, 302, 299, 303, + 303, 76, 73, 285, 154, 285, 285, 285, + 285, 285, 285, 158, 285, 299, 303, 303, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 285, 158, 285, 304, 285, 285, 285, + 90, 305, 285, 73, 285, 154, 285, 285, + 285, 285, 285, 304, 285, 306, 307, 308, + 309, 76, 73, 285, 154, 285, 285, 102, + 285, 285, 285, 158, 285, 310, 307, 311, + 311, 76, 73, 285, 154, 285, 285, 285, + 285, 285, 285, 158, 285, 307, 311, 311, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 285, 158, 285, 312, 285, 285, 285, + 90, 313, 285, 73, 285, 154, 285, 285, + 285, 285, 285, 312, 285, 314, 315, 316, + 317, 76, 73, 285, 154, 285, 285, 100, + 285, 285, 285, 158, 285, 318, 315, 319, + 319, 76, 73, 285, 154, 285, 285, 285, + 285, 285, 285, 158, 285, 315, 319, 319, + 76, 73, 285, 154, 285, 285, 285, 285, + 285, 285, 158, 285, 90, 320, 285, 73, + 285, 154, 285, 321, 321, 285, 73, 285, + 154, 285, 322, 285, 285, 323, 285, 154, + 285, 154, 285, 324, 285, 325, 285, 322, + 285, 285, 285, 285, 154, 285, 90, 285, + 321, 321, 285, 73, 285, 154, 285, 321, + 320, 285, 73, 285, 154, 285, 326, 99, + 327, 328, 80, 73, 285, 154, 285, 99, + 327, 328, 80, 73, 285, 154, 285, 327, + 327, 80, 73, 285, 154, 285, 329, 96, + 330, 331, 83, 73, 285, 154, 285, 96, + 330, 331, 83, 73, 285, 154, 285, 330, + 330, 83, 73, 285, 154, 285, 332, 93, + 333, 334, 86, 73, 285, 154, 285, 93, + 333, 334, 86, 73, 285, 154, 285, 333, + 333, 86, 73, 285, 154, 285, 335, 90, + 321, 336, 285, 73, 285, 154, 285, 90, + 321, 336, 285, 73, 285, 154, 285, 315, + 319, 319, 76, 73, 285, 154, 285, 314, + 315, 319, 319, 76, 73, 285, 154, 285, + 285, 285, 285, 285, 285, 158, 285, 314, + 315, 316, 319, 76, 73, 285, 154, 285, + 285, 100, 285, 285, 285, 158, 285, 312, + 285, 337, 285, 321, 321, 285, 73, 285, + 154, 285, 285, 285, 285, 285, 312, 285, + 312, 285, 285, 285, 321, 321, 285, 73, + 285, 154, 285, 285, 285, 285, 285, 312, + 285, 312, 285, 285, 285, 321, 313, 285, + 73, 285, 154, 285, 285, 285, 285, 285, + 312, 285, 306, 307, 311, 311, 76, 73, + 285, 154, 285, 285, 285, 285, 285, 285, + 158, 285, 306, 307, 308, 311, 76, 73, + 285, 154, 285, 285, 102, 285, 285, 285, + 158, 285, 304, 285, 338, 285, 321, 321, + 285, 73, 285, 154, 285, 285, 285, 285, + 285, 304, 285, 304, 285, 285, 285, 321, + 321, 285, 73, 285, 154, 285, 285, 285, + 285, 285, 304, 285, 304, 285, 285, 285, + 321, 305, 285, 73, 285, 154, 285, 285, + 285, 285, 285, 304, 285, 298, 299, 303, + 303, 76, 73, 285, 154, 285, 285, 285, + 285, 285, 285, 158, 285, 298, 299, 300, + 303, 76, 73, 285, 154, 285, 285, 104, + 285, 285, 285, 158, 285, 296, 285, 339, + 285, 321, 321, 285, 73, 285, 154, 285, + 285, 285, 285, 285, 296, 285, 296, 285, + 285, 285, 321, 321, 285, 73, 285, 154, + 285, 285, 285, 285, 285, 296, 285, 296, + 285, 285, 285, 321, 297, 285, 73, 285, + 154, 285, 285, 285, 285, 285, 296, 285, + 290, 291, 295, 295, 76, 73, 285, 154, + 285, 285, 285, 285, 285, 285, 158, 285, + 290, 291, 292, 295, 76, 73, 285, 154, + 285, 285, 106, 285, 285, 285, 158, 285, + 288, 285, 340, 285, 321, 321, 285, 73, + 285, 154, 285, 285, 285, 285, 285, 288, + 285, 288, 285, 285, 285, 321, 321, 285, + 73, 285, 154, 285, 285, 285, 285, 285, + 288, 285, 288, 285, 285, 285, 321, 289, + 285, 73, 285, 154, 285, 285, 285, 285, + 285, 288, 285, 107, 75, 75, 76, 73, + 341, 341, 341, 341, 144, 341, 150, 151, + 287, 287, 76, 73, 285, 154, 285, 285, + 285, 285, 285, 285, 158, 285, 107, 75, + 75, 76, 73, 341, 343, 344, 345, 346, + 112, 109, 342, 347, 342, 342, 143, 342, + 342, 342, 348, 342, 349, 344, 346, 346, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 342, 348, 342, 344, 346, 346, 112, + 109, 342, 347, 342, 342, 342, 342, 342, + 342, 348, 342, 350, 342, 342, 342, 125, + 351, 342, 109, 342, 347, 342, 342, 342, + 342, 342, 350, 342, 352, 353, 354, 355, + 112, 109, 342, 347, 342, 342, 141, 342, + 342, 342, 348, 342, 356, 353, 357, 357, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 342, 348, 342, 353, 357, 357, 112, + 109, 342, 347, 342, 342, 342, 342, 342, + 342, 348, 342, 358, 342, 342, 342, 125, + 359, 342, 109, 342, 347, 342, 342, 342, + 342, 342, 358, 342, 360, 361, 362, 363, + 112, 109, 342, 347, 342, 342, 139, 342, + 342, 342, 348, 342, 364, 361, 365, 365, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 342, 348, 342, 361, 365, 365, 112, + 109, 342, 347, 342, 342, 342, 342, 342, + 342, 348, 342, 366, 342, 342, 342, 125, + 367, 342, 109, 342, 347, 342, 342, 342, + 342, 342, 366, 342, 368, 369, 370, 371, + 112, 109, 342, 347, 342, 342, 137, 342, + 342, 342, 348, 342, 372, 369, 373, 373, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 342, 348, 342, 369, 373, 373, 112, + 109, 342, 347, 342, 342, 342, 342, 342, + 342, 348, 342, 374, 342, 342, 342, 125, + 375, 342, 109, 342, 347, 342, 342, 342, + 342, 342, 374, 342, 376, 377, 378, 379, + 112, 109, 342, 347, 342, 342, 135, 342, + 342, 342, 348, 342, 380, 377, 381, 381, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 342, 348, 342, 377, 381, 381, 112, + 109, 342, 347, 342, 342, 342, 342, 342, + 342, 348, 342, 125, 382, 342, 109, 342, + 347, 342, 383, 383, 342, 109, 342, 347, + 342, 384, 342, 342, 385, 342, 347, 342, + 347, 342, 386, 342, 387, 342, 384, 342, + 342, 342, 342, 347, 342, 125, 342, 383, + 383, 342, 109, 342, 347, 342, 383, 382, + 342, 109, 342, 347, 342, 388, 134, 389, + 390, 115, 109, 342, 347, 342, 134, 389, + 390, 115, 109, 342, 347, 342, 389, 389, + 115, 109, 342, 347, 342, 391, 131, 392, + 393, 118, 109, 342, 347, 342, 131, 392, + 393, 118, 109, 342, 347, 342, 392, 392, + 118, 109, 342, 347, 342, 394, 128, 395, + 396, 121, 109, 342, 347, 342, 128, 395, + 396, 121, 109, 342, 347, 342, 395, 395, + 121, 109, 342, 347, 342, 397, 125, 383, + 398, 342, 109, 342, 347, 342, 125, 383, + 398, 342, 109, 342, 347, 342, 377, 381, + 381, 112, 109, 342, 347, 342, 376, 377, + 381, 381, 112, 109, 342, 347, 342, 342, + 342, 342, 342, 342, 348, 342, 376, 377, + 378, 381, 112, 109, 342, 347, 342, 342, + 135, 342, 342, 342, 348, 342, 374, 342, + 399, 342, 383, 383, 342, 109, 342, 347, + 342, 342, 342, 342, 342, 374, 342, 374, + 342, 342, 342, 383, 383, 342, 109, 342, + 347, 342, 342, 342, 342, 342, 374, 342, + 374, 342, 342, 342, 383, 375, 342, 109, + 342, 347, 342, 342, 342, 342, 342, 374, + 342, 368, 369, 373, 373, 112, 109, 342, + 347, 342, 342, 342, 342, 342, 342, 348, + 342, 368, 369, 370, 373, 112, 109, 342, + 347, 342, 342, 137, 342, 342, 342, 348, + 342, 366, 342, 400, 342, 383, 383, 342, + 109, 342, 347, 342, 342, 342, 342, 342, + 366, 342, 366, 342, 342, 342, 383, 383, + 342, 109, 342, 347, 342, 342, 342, 342, + 342, 366, 342, 366, 342, 342, 342, 383, + 367, 342, 109, 342, 347, 342, 342, 342, + 342, 342, 366, 342, 360, 361, 365, 365, + 112, 109, 342, 347, 342, 342, 342, 342, + 342, 342, 348, 342, 360, 361, 362, 365, + 112, 109, 342, 347, 342, 342, 139, 342, + 342, 342, 348, 342, 358, 342, 401, 342, + 383, 383, 342, 109, 342, 347, 342, 342, + 342, 342, 342, 358, 342, 358, 342, 342, + 342, 383, 383, 342, 109, 342, 347, 342, + 342, 342, 342, 342, 358, 342, 358, 342, + 342, 342, 383, 359, 342, 109, 342, 347, + 342, 342, 342, 342, 342, 358, 342, 352, + 353, 357, 357, 112, 109, 342, 347, 342, + 342, 342, 342, 342, 342, 348, 342, 352, + 353, 354, 357, 112, 109, 342, 347, 342, + 342, 141, 342, 342, 342, 348, 342, 350, + 342, 402, 342, 383, 383, 342, 109, 342, + 347, 342, 342, 342, 342, 342, 350, 342, + 350, 342, 342, 342, 383, 383, 342, 109, + 342, 347, 342, 342, 342, 342, 342, 350, + 342, 350, 342, 342, 342, 383, 351, 342, + 109, 342, 347, 342, 342, 342, 342, 342, + 350, 342, 343, 344, 346, 346, 112, 109, + 342, 347, 342, 342, 342, 342, 342, 342, + 348, 342, 148, 149, 150, 151, 403, 287, + 76, 73, 285, 154, 155, 155, 144, 285, + 285, 148, 158, 285, 162, 404, 164, 165, + 4, 1, 161, 166, 161, 161, 35, 161, + 161, 161, 167, 161, 170, 149, 150, 151, + 405, 406, 76, 407, 161, 408, 161, 155, + 144, 161, 161, 170, 158, 161, 107, 409, + 409, 76, 407, 161, 166, 161, 161, 144, + 161, 410, 161, 161, 411, 161, 408, 161, + 408, 161, 412, 161, 207, 161, 410, 161, + 161, 161, 161, 408, 161, 170, 161, 222, + 107, 409, 409, 76, 407, 161, 166, 161, + 161, 161, 161, 161, 170, 161, 414, 413, + 415, 415, 413, 146, 413, 416, 413, 415, + 415, 413, 146, 413, 416, 413, 417, 413, + 413, 418, 413, 416, 413, 416, 413, 419, + 413, 420, 413, 417, 413, 413, 413, 413, + 416, 413, 148, 341, 341, 341, 341, 341, + 341, 341, 341, 341, 155, 341, 341, 341, + 341, 148, 341, 0 }; -static const short _indic_syllable_machine_index_defaults[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 72, 72, 77, 77, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, 108, 108, 108, 108, 72, - 0, 145, 147, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 161, 161, 161, - 161, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 285, - 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 341, 285, 341, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 342, 342, 342, 342, 342, 342, - 342, 342, 285, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 413, 413, 413, 413, - 413, 413, 413, 341, 0 +static const short _indic_syllable_machine_trans_targs[] = { + 138, 160, 166, 2, 167, 3, 5, 170, + 6, 8, 173, 9, 11, 176, 12, 14, + 15, 159, 17, 18, 175, 20, 21, 172, + 23, 24, 169, 179, 183, 184, 188, 189, + 193, 194, 198, 199, 138, 222, 228, 36, + 229, 37, 39, 232, 40, 42, 235, 43, + 45, 238, 46, 48, 49, 221, 51, 52, + 237, 54, 55, 234, 57, 58, 231, 241, + 245, 246, 250, 251, 255, 256, 260, 262, + 138, 283, 289, 70, 290, 138, 71, 73, + 293, 74, 76, 296, 77, 79, 299, 80, + 82, 83, 282, 85, 86, 298, 88, 89, + 295, 91, 92, 292, 302, 306, 307, 311, + 312, 316, 317, 321, 138, 346, 352, 103, + 353, 104, 106, 356, 107, 109, 359, 110, + 112, 362, 113, 115, 116, 345, 118, 119, + 361, 121, 122, 358, 124, 125, 355, 365, + 369, 370, 374, 375, 379, 380, 384, 385, + 323, 138, 398, 138, 139, 201, 263, 265, + 322, 324, 285, 325, 386, 387, 301, 396, + 403, 138, 140, 142, 33, 200, 162, 178, + 141, 32, 143, 196, 144, 146, 31, 195, + 145, 30, 147, 191, 148, 150, 29, 190, + 149, 28, 151, 186, 152, 154, 27, 185, + 153, 26, 155, 181, 156, 158, 25, 180, + 157, 1, 165, 0, 161, 164, 163, 138, + 168, 4, 22, 171, 7, 19, 174, 10, + 16, 177, 13, 182, 187, 192, 197, 138, + 202, 204, 67, 261, 224, 240, 203, 66, + 205, 258, 206, 208, 65, 257, 207, 64, + 209, 253, 210, 212, 63, 252, 211, 62, + 213, 248, 214, 216, 61, 247, 215, 60, + 217, 243, 218, 220, 59, 242, 219, 35, + 227, 34, 223, 226, 225, 138, 230, 38, + 56, 233, 41, 53, 236, 44, 50, 239, + 47, 244, 249, 254, 259, 138, 264, 100, + 266, 319, 267, 269, 99, 318, 268, 98, + 270, 314, 271, 273, 97, 313, 272, 96, + 274, 309, 275, 277, 95, 308, 276, 94, + 278, 304, 279, 281, 93, 303, 280, 69, + 288, 68, 284, 287, 286, 138, 291, 72, + 90, 294, 75, 87, 297, 78, 84, 300, + 81, 305, 310, 315, 320, 138, 138, 326, + 328, 134, 133, 348, 364, 327, 329, 382, + 330, 332, 132, 381, 331, 131, 333, 377, + 334, 336, 130, 376, 335, 129, 337, 372, + 338, 340, 128, 371, 339, 127, 341, 367, + 342, 344, 126, 366, 343, 102, 351, 101, + 347, 350, 349, 138, 354, 105, 123, 357, + 108, 120, 360, 111, 117, 363, 114, 368, + 373, 378, 383, 135, 388, 389, 395, 390, + 392, 136, 391, 394, 393, 138, 397, 137, + 400, 399, 402, 401, 138 }; -static const char _indic_syllable_machine_trans_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 0 -}; - -static const short _indic_syllable_machine_cond_targs[] = { - 138, 160, 166, 2, 167, 3, 5, 170, - 6, 8, 173, 9, 11, 176, 12, 14, - 15, 159, 17, 18, 175, 20, 21, 172, - 23, 24, 169, 179, 183, 184, 188, 189, - 193, 194, 198, 199, 138, 222, 228, 36, - 229, 37, 39, 232, 40, 42, 235, 43, - 45, 238, 46, 48, 49, 221, 51, 52, - 237, 54, 55, 234, 57, 58, 231, 241, - 245, 246, 250, 251, 255, 256, 260, 262, - 138, 283, 289, 70, 290, 138, 71, 73, - 293, 74, 76, 296, 77, 79, 299, 80, - 82, 83, 282, 85, 86, 298, 88, 89, - 295, 91, 92, 292, 302, 306, 307, 311, - 312, 316, 317, 321, 138, 346, 352, 103, - 353, 104, 106, 356, 107, 109, 359, 110, - 112, 362, 113, 115, 116, 345, 118, 119, - 361, 121, 122, 358, 124, 125, 355, 365, - 369, 370, 374, 375, 379, 380, 384, 385, - 323, 138, 398, 138, 139, 201, 263, 265, - 322, 324, 285, 325, 386, 387, 301, 396, - 403, 138, 140, 142, 33, 200, 162, 178, - 141, 32, 143, 196, 144, 146, 31, 195, - 145, 30, 147, 191, 148, 150, 29, 190, - 149, 28, 151, 186, 152, 154, 27, 185, - 153, 26, 155, 181, 156, 158, 25, 180, - 157, 1, 165, 0, 161, 164, 163, 138, - 168, 4, 22, 171, 7, 19, 174, 10, - 16, 177, 13, 182, 187, 192, 197, 138, - 202, 204, 67, 261, 224, 240, 203, 66, - 205, 258, 206, 208, 65, 257, 207, 64, - 209, 253, 210, 212, 63, 252, 211, 62, - 213, 248, 214, 216, 61, 247, 215, 60, - 217, 243, 218, 220, 59, 242, 219, 35, - 227, 34, 223, 226, 225, 138, 230, 38, - 56, 233, 41, 53, 236, 44, 50, 239, - 47, 244, 249, 254, 259, 138, 264, 100, - 266, 319, 267, 269, 99, 318, 268, 98, - 270, 314, 271, 273, 97, 313, 272, 96, - 274, 309, 275, 277, 95, 308, 276, 94, - 278, 304, 279, 281, 93, 303, 280, 69, - 288, 68, 284, 287, 286, 138, 291, 72, - 90, 294, 75, 87, 297, 78, 84, 300, - 81, 305, 310, 315, 320, 138, 138, 326, - 328, 134, 133, 348, 364, 327, 329, 382, - 330, 332, 132, 381, 331, 131, 333, 377, - 334, 336, 130, 376, 335, 129, 337, 372, - 338, 340, 128, 371, 339, 127, 341, 367, - 342, 344, 126, 366, 343, 102, 351, 101, - 347, 350, 349, 138, 354, 105, 123, 357, - 108, 120, 360, 111, 117, 363, 114, 368, - 373, 378, 383, 135, 388, 389, 395, 390, - 392, 136, 391, 394, 393, 138, 397, 137, - 400, 399, 402, 401, 138, 0 -}; - -static const char _indic_syllable_machine_cond_actions[] = { - 1, 0, 2, 0, 2, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 0, - 0, 2, 0, 0, 2, 0, 0, 2, - 0, 0, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 0, 2, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 0, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 4, 0, 2, 0, 2, 5, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 0, 2, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 6, 2, 6, 2, - 6, 2, 6, 2, 7, 0, 2, 0, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 0, 0, 0, 2, 0, 0, - 2, 0, 0, 2, 0, 0, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, - 6, 8, 0, 11, 2, 2, 6, 0, - 12, 12, 0, 2, 6, 2, 6, 2, - 0, 13, 2, 0, 0, 2, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 2, 2, 0, 0, 2, - 2, 0, 2, 0, 0, 0, 0, 14, - 2, 0, 0, 2, 0, 0, 2, 0, - 0, 2, 0, 2, 2, 2, 2, 15, - 2, 0, 0, 2, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 2, 2, 0, 0, 2, 2, 0, - 2, 0, 0, 0, 0, 16, 2, 0, - 0, 2, 0, 0, 2, 0, 0, 2, - 0, 2, 2, 2, 2, 17, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 6, 2, 6, 0, 0, 6, 6, 0, - 2, 0, 0, 0, 0, 18, 2, 0, - 0, 2, 0, 0, 2, 0, 0, 2, - 0, 2, 2, 2, 2, 19, 20, 2, - 0, 0, 0, 0, 2, 2, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 2, - 2, 0, 0, 2, 2, 0, 2, 0, - 0, 0, 0, 21, 2, 0, 0, 2, - 0, 0, 2, 0, 0, 2, 0, 2, - 2, 2, 2, 0, 0, 22, 22, 0, - 0, 0, 0, 0, 0, 23, 2, 0, - 0, 0, 0, 0, 24, 0 +static const char _indic_syllable_machine_trans_actions[] = { + 1, 0, 2, 0, 2, 0, 0, 2, + 0, 0, 2, 0, 0, 2, 0, 0, + 0, 2, 0, 0, 2, 0, 0, 2, + 0, 0, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 0, 2, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 4, 0, 2, 0, 2, 5, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 0, 2, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 6, 2, 6, 2, + 6, 2, 6, 2, 7, 0, 2, 0, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 0, 0, 2, 0, 0, + 2, 0, 0, 2, 0, 0, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 6, 8, 0, 11, 2, 2, 6, 0, + 12, 12, 0, 2, 6, 2, 6, 2, + 0, 13, 2, 0, 0, 2, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 2, 2, 0, 0, 2, + 2, 0, 2, 0, 0, 0, 0, 14, + 2, 0, 0, 2, 0, 0, 2, 0, + 0, 2, 0, 2, 2, 2, 2, 15, + 2, 0, 0, 2, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 2, 2, 0, 0, 2, 2, 0, + 2, 0, 0, 0, 0, 16, 2, 0, + 0, 2, 0, 0, 2, 0, 0, 2, + 0, 2, 2, 2, 2, 17, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 6, 2, 6, 0, 0, 6, 6, 0, + 2, 0, 0, 0, 0, 18, 2, 0, + 0, 2, 0, 0, 2, 0, 0, 2, + 0, 2, 2, 2, 2, 19, 20, 2, + 0, 0, 0, 0, 2, 2, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 2, + 2, 0, 0, 2, 2, 0, 2, 0, + 0, 0, 0, 21, 2, 0, 0, 2, + 0, 0, 2, 0, 0, 2, 0, 2, + 2, 2, 2, 0, 0, 22, 22, 0, + 0, 0, 0, 0, 0, 23, 2, 0, + 0, 0, 0, 0, 24 }; static const char _indic_syllable_machine_to_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 }; static const char _indic_syllable_machine_from_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 -}; - -static const char _indic_syllable_machine_eof_cond_spaces[] = { - -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 0 -}; - -static const char _indic_syllable_machine_eof_cond_key_offs[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 -}; - -static const char _indic_syllable_machine_eof_cond_key_lens[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 -}; - -static const char _indic_syllable_machine_eof_cond_keys[] = { - 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 10, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0 }; static const short _indic_syllable_machine_eof_trans[] = { - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 73, 73, 78, 78, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 109, 109, 109, 109, 73, - 1, 146, 0, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 162, 162, 162, 162, - 162, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 286, 286, 286, 286, 286, 286, - 286, 286, 342, 286, 342, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 286, 162, 162, 162, 162, 162, - 162, 162, 162, 162, 414, 414, 414, 414, - 414, 414, 414, 342, 0 -}; - -static const char _indic_syllable_machine_nfa_targs[] = { - 0, 0 -}; - -static const char _indic_syllable_machine_nfa_offsets[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0 -}; - -static const char _indic_syllable_machine_nfa_push_actions[] = { - 0, 0 -}; - -static const char _indic_syllable_machine_nfa_pop_trans[] = { - 0, 0 + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 73, 73, 78, 78, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 109, + 109, 109, 109, 109, 109, 109, 109, 73, + 1, 146, 0, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, + 162, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 286, 286, 286, 286, 286, 286, + 286, 286, 342, 286, 342, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 343, 343, 343, 343, 343, 343, + 343, 343, 286, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 414, 414, 414, 414, + 414, 414, 414, 342 }; static const int indic_syllable_machine_start = 138; @@ -1259,333 +987,209 @@ static const int indic_syllable_machine_error = -1; static const int indic_syllable_machine_en_main = 138; +#line 36 "hb-ot-shape-complex-indic-machine.rl" +#line 93 "hb-ot-shape-complex-indic-machine.rl" + + #define found_syllable(syllable_type) \ -HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial=1; \ -} HB_STMT_END + HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ + } HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act; - int cs; - hb_glyph_info_t *info = buffer->info; - + unsigned int p, pe, eof, ts, te, act; + int cs; + hb_glyph_info_t *info = buffer->info; + +#line 1014 "hb-ot-shape-complex-indic-machine.hh" { - cs = (int)indic_syllable_machine_start; - ts = 0; - te = 0; - act = 0; + cs = indic_syllable_machine_start; + ts = 0; + te = 0; + act = 0; } - - - p=0; - pe = eof = buffer->len; - - unsigned int syllable_serial=1; - + +#line 113 "hb-ot-shape-complex-indic-machine.rl" + + + p = 0; + pe = eof = buffer->len; + + unsigned int syllable_serial = 1; + +#line 1030 "hb-ot-shape-complex-indic-machine.hh" { - int _cpc; - int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const short * _inds; { - if ( p == pe ) - goto _test_eof; - _resume: { - switch ( _indic_syllable_machine_from_state_actions[cs] ) { - case 10: { - { - #line 1 "NONE" - {ts = p;}} - - break; } - } - - _keys = ( _indic_syllable_machine_trans_keys + ((cs<<1))); - _inds = ( _indic_syllable_machine_indicies + (_indic_syllable_machine_index_offsets[cs])); - - if ( (info[p].indic_category()) <= 19 && (info[p].indic_category()) >= 1 ) - { - int _ic = (int)_indic_syllable_machine_char_class[(int)(info[p].indic_category()) - 1]; - if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) - _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); - else - _trans = (unsigned int)_indic_syllable_machine_index_defaults[cs]; - } - else { - _trans = (unsigned int)_indic_syllable_machine_index_defaults[cs]; - } - - goto _match_cond; - } - _match_cond: { - cs = (int)_indic_syllable_machine_cond_targs[_trans]; - - if ( _indic_syllable_machine_cond_actions[_trans] == 0 ) - goto _again; - - switch ( _indic_syllable_machine_cond_actions[_trans] ) { - case 2: { - { - #line 1 "NONE" - {te = p+1;}} - - break; } - case 14: { - { - #line 84 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ - #line 84 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (consonant_syllable); }}} - - break; } - case 16: { - { - #line 85 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ - #line 85 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (vowel_syllable); }}} - - break; } - case 21: { - { - #line 86 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ - #line 86 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (standalone_cluster); }}} - - break; } - case 24: { - { - #line 87 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ - #line 87 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (symbol_cluster); }}} - - break; } - case 18: { - { - #line 88 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ - #line 88 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 11: { - { - #line 89 "hb-ot-shape-complex-indic-machine.rl" - {te = p+1;{ - #line 89 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (non_indic_cluster); }}} - - break; } - case 13: { - { - #line 84 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p = p - 1;{ - #line 84 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (consonant_syllable); }}} - - break; } - case 15: { - { - #line 85 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p = p - 1;{ - #line 85 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (vowel_syllable); }}} - - break; } - case 20: { - { - #line 86 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p = p - 1;{ - #line 86 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (standalone_cluster); }}} - - break; } - case 23: { - { - #line 87 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p = p - 1;{ - #line 87 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (symbol_cluster); }}} - - break; } - case 17: { - { - #line 88 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p = p - 1;{ - #line 88 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 19: { - { - #line 89 "hb-ot-shape-complex-indic-machine.rl" - {te = p;p = p - 1;{ - #line 89 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (non_indic_cluster); }}} - - break; } - case 1: { - { - #line 84 "hb-ot-shape-complex-indic-machine.rl" - {p = ((te))-1; - { - #line 84 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (consonant_syllable); }}} - - break; } - case 3: { - { - #line 85 "hb-ot-shape-complex-indic-machine.rl" - {p = ((te))-1; - { - #line 85 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (vowel_syllable); }}} - - break; } - case 7: { - { - #line 86 "hb-ot-shape-complex-indic-machine.rl" - {p = ((te))-1; - { - #line 86 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (standalone_cluster); }}} - - break; } - case 8: { - { - #line 87 "hb-ot-shape-complex-indic-machine.rl" - {p = ((te))-1; - { - #line 87 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (symbol_cluster); }}} - - break; } - case 4: { - { - #line 88 "hb-ot-shape-complex-indic-machine.rl" - {p = ((te))-1; - { - #line 88 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 5: { - { - #line 1 "NONE" - {switch( act ) { - case 1: { - p = ((te))-1; - { - #line 84 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (consonant_syllable); } break; } - case 5: { - p = ((te))-1; - { - #line 88 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (broken_cluster); } break; } - case 6: { - p = ((te))-1; - { - #line 89 "hb-ot-shape-complex-indic-machine.rl" - found_syllable (non_indic_cluster); } break; } - }} - } - - break; } - case 22: { - { - #line 1 "NONE" - {te = p+1;}} - { - #line 84 "hb-ot-shape-complex-indic-machine.rl" - {act = 1;}} - - break; } - case 6: { - { - #line 1 "NONE" - {te = p+1;}} - { - #line 88 "hb-ot-shape-complex-indic-machine.rl" - {act = 5;}} - - break; } - case 12: { - { - #line 1 "NONE" - {te = p+1;}} - { - #line 89 "hb-ot-shape-complex-indic-machine.rl" - {act = 6;}} - - break; } - } - - - } - _again: { - switch ( _indic_syllable_machine_to_state_actions[cs] ) { - case 9: { - { - #line 1 "NONE" - {ts = 0;}} - - break; } - } - - p += 1; - if ( p != pe ) - goto _resume; - } - _test_eof: { {} - if ( p == eof ) - { - if ( _indic_syllable_machine_eof_cond_spaces[cs] != -1 ) { - _cekeys = ( _indic_syllable_machine_eof_cond_keys + (_indic_syllable_machine_eof_cond_key_offs[cs])); - _klen = (int)_indic_syllable_machine_eof_cond_key_lens[cs]; - _cpc = 0; - { - const char *_lower = _cekeys; - const char *_upper = _cekeys + _klen - 1; - const char *_mid; - while ( 1 ) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( _cpc < (int)(*( _mid)) ) - _upper = _mid - 1; - else if ( _cpc > (int)(*( _mid)) ) - _lower = _mid + 1; - else { - goto _ok; - } - } - cs = -1; - goto _out; - } - _ok: {} - } - if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { - _trans = (unsigned int)_indic_syllable_machine_eof_trans[cs] - 1; - goto _match_cond; - } - } - - } - _out: { {} - } - } + int _slen; + int _trans; + const unsigned char *_keys; + const short *_inds; + if ( p == pe ) + goto _test_eof; +_resume: + switch ( _indic_syllable_machine_from_state_actions[cs] ) { + case 10: +#line 1 "NONE" + {ts = p;} + break; +#line 1044 "hb-ot-shape-complex-indic-machine.hh" } - + + _keys = _indic_syllable_machine_trans_keys + (cs<<1); + _inds = _indic_syllable_machine_indicies + _indic_syllable_machine_index_offsets[cs]; + + _slen = _indic_syllable_machine_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].indic_category()) && + ( info[p].indic_category()) <= _keys[1] ? + ( info[p].indic_category()) - _keys[0] : _slen ]; + +_eof_trans: + cs = _indic_syllable_machine_trans_targs[_trans]; + + if ( _indic_syllable_machine_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _indic_syllable_machine_trans_actions[_trans] ) { + case 2: +#line 1 "NONE" + {te = p+1;} + break; + case 14: +#line 84 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (consonant_syllable); }} + break; + case 16: +#line 85 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (vowel_syllable); }} + break; + case 21: +#line 86 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (standalone_cluster); }} + break; + case 24: +#line 87 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (symbol_cluster); }} + break; + case 18: +#line 88 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (broken_cluster); }} + break; + case 11: +#line 89 "hb-ot-shape-complex-indic-machine.rl" + {te = p+1;{ found_syllable (non_indic_cluster); }} + break; + case 13: +#line 84 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (consonant_syllable); }} + break; + case 15: +#line 85 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (vowel_syllable); }} + break; + case 20: +#line 86 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (standalone_cluster); }} + break; + case 23: +#line 87 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (symbol_cluster); }} + break; + case 17: +#line 88 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (broken_cluster); }} + break; + case 19: +#line 89 "hb-ot-shape-complex-indic-machine.rl" + {te = p;p--;{ found_syllable (non_indic_cluster); }} + break; + case 1: +#line 84 "hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} + break; + case 3: +#line 85 "hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (vowel_syllable); }} + break; + case 7: +#line 86 "hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (standalone_cluster); }} + break; + case 8: +#line 87 "hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (symbol_cluster); }} + break; + case 4: +#line 88 "hb-ot-shape-complex-indic-machine.rl" + {{p = ((te))-1;}{ found_syllable (broken_cluster); }} + break; + case 5: +#line 1 "NONE" + { switch( act ) { + case 1: + {{p = ((te))-1;} found_syllable (consonant_syllable); } + break; + case 5: + {{p = ((te))-1;} found_syllable (broken_cluster); } + break; + case 6: + {{p = ((te))-1;} found_syllable (non_indic_cluster); } + break; + } + } + break; + case 22: +#line 1 "NONE" + {te = p+1;} +#line 84 "hb-ot-shape-complex-indic-machine.rl" + {act = 1;} + break; + case 6: +#line 1 "NONE" + {te = p+1;} +#line 88 "hb-ot-shape-complex-indic-machine.rl" + {act = 5;} + break; + case 12: +#line 1 "NONE" + {te = p+1;} +#line 89 "hb-ot-shape-complex-indic-machine.rl" + {act = 6;} + break; +#line 1167 "hb-ot-shape-complex-indic-machine.hh" + } + +_again: + switch ( _indic_syllable_machine_to_state_actions[cs] ) { + case 9: +#line 1 "NONE" + {ts = 0;} + break; +#line 1176 "hb-ot-shape-complex-indic-machine.hh" + } + + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _indic_syllable_machine_eof_trans[cs] > 0 ) { + _trans = _indic_syllable_machine_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + } + +#line 121 "hb-ot-shape-complex-indic-machine.rl" + } #endif /* HB_OT_SHAPE_COMPLEX_INDIC_MACHINE_HH */ diff --git a/src/hb-ot-shape-complex-khmer-machine.hh b/src/hb-ot-shape-complex-khmer-machine.hh index 034b65750..65e0ffc85 100644 --- a/src/hb-ot-shape-complex-khmer-machine.hh +++ b/src/hb-ot-shape-complex-khmer-machine.hh @@ -1,28 +1,30 @@ + +#line 1 "hb-ot-shape-complex-khmer-machine.rl" /* -* Copyright © 2011,2012 Google, Inc. -* -* This is part of HarfBuzz, a text shaping library. -* -* Permission is hereby granted, without written agreement and without -* license or royalty fees, to use, copy, modify, and distribute this -* software and its documentation for any purpose, provided that the -* above copyright notice and the following two paragraphs appear in -* all copies of this software. -* -* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* -* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -* -* Google Author(s): Behdad Esfahbod -*/ + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ #ifndef HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH @@ -30,185 +32,180 @@ #include "hb.hh" +#line 36 "hb-ot-shape-complex-khmer-machine.hh" static const unsigned char _khmer_syllable_machine_trans_keys[] = { - 2u, 8u, 2u, 6u, 2u, 8u, 2u, 6u, - 0u, 0u, 2u, 6u, 2u, 8u, 2u, 6u, - 2u, 8u, 2u, 6u, 2u, 6u, 2u, 8u, - 2u, 6u, 0u, 0u, 2u, 6u, 2u, 8u, - 2u, 6u, 2u, 8u, 2u, 6u, 2u, 8u, - 0u, 11u, 2u, 11u, 2u, 11u, 2u, 11u, - 7u, 7u, 2u, 7u, 2u, 11u, 2u, 11u, - 2u, 11u, 0u, 0u, 2u, 8u, 2u, 11u, - 2u, 11u, 7u, 7u, 2u, 7u, 2u, 11u, - 2u, 11u, 0u, 0u, 2u, 11u, 2u, 11u, - 0u + 5u, 26u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 16u, 5u, 21u, 5u, 26u, 5u, 21u, + 5u, 26u, 5u, 21u, 5u, 21u, 5u, 26u, 5u, 21u, 1u, 16u, 5u, 21u, 5u, 26u, + 5u, 21u, 5u, 26u, 5u, 21u, 5u, 26u, 1u, 29u, 5u, 29u, 5u, 29u, 5u, 29u, + 22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 5u, 29u, 1u, 16u, 5u, 26u, 5u, 29u, + 5u, 29u, 22u, 22u, 5u, 22u, 5u, 29u, 5u, 29u, 1u, 16u, 5u, 29u, 5u, 29u, + 0 }; -static const char _khmer_syllable_machine_char_class[] = { - 0, 0, 1, 1, 2, 2, 1, 1, - 1, 1, 3, 3, 1, 4, 1, 0, - 1, 1, 1, 5, 6, 7, 1, 1, - 1, 8, 9, 10, 11, 0 +static const char _khmer_syllable_machine_key_spans[] = { + 22, 17, 22, 17, 16, 17, 22, 17, + 22, 17, 17, 22, 17, 16, 17, 22, + 17, 22, 17, 22, 29, 25, 25, 25, + 1, 18, 25, 25, 25, 16, 22, 25, + 25, 1, 18, 25, 25, 16, 25, 25 }; static const short _khmer_syllable_machine_index_offsets[] = { - 0, 7, 12, 19, 24, 25, 30, 37, - 42, 49, 54, 59, 66, 71, 72, 77, - 84, 89, 96, 101, 108, 120, 130, 140, - 150, 151, 157, 167, 177, 187, 188, 195, - 205, 215, 216, 222, 232, 242, 243, 253, - 0 + 0, 23, 41, 64, 82, 99, 117, 140, + 158, 181, 199, 217, 240, 258, 275, 293, + 316, 334, 357, 375, 398, 428, 454, 480, + 506, 508, 527, 553, 579, 605, 622, 645, + 671, 697, 699, 718, 744, 770, 787, 813 }; static const char _khmer_syllable_machine_indicies[] = { - 1, 0, 0, 2, 3, 0, 4, 1, - 0, 0, 0, 3, 1, 0, 0, 0, - 3, 0, 4, 5, 0, 0, 0, 4, - 6, 7, 0, 0, 0, 8, 9, 0, - 0, 0, 10, 0, 4, 9, 0, 0, - 0, 10, 11, 0, 0, 0, 12, 0, - 4, 11, 0, 0, 0, 12, 14, 13, - 13, 13, 15, 14, 16, 16, 16, 15, - 16, 17, 18, 16, 16, 16, 17, 19, - 20, 16, 16, 16, 21, 22, 16, 16, - 16, 23, 16, 17, 22, 16, 16, 16, - 23, 24, 16, 16, 16, 25, 16, 17, - 24, 16, 16, 16, 25, 14, 16, 16, - 26, 15, 16, 17, 28, 27, 29, 2, - 30, 27, 15, 19, 17, 23, 25, 21, - 32, 31, 33, 2, 3, 6, 4, 10, - 12, 8, 34, 31, 35, 31, 3, 6, - 4, 10, 12, 8, 5, 31, 35, 31, - 4, 6, 31, 31, 31, 8, 6, 7, - 31, 35, 31, 8, 6, 36, 31, 35, - 31, 10, 6, 4, 31, 31, 8, 37, - 31, 35, 31, 12, 6, 4, 10, 31, - 8, 34, 31, 33, 31, 3, 6, 4, - 10, 12, 8, 28, 14, 38, 38, 38, - 15, 38, 17, 40, 39, 41, 39, 15, - 19, 17, 23, 25, 21, 18, 39, 41, - 39, 17, 19, 39, 39, 39, 21, 19, - 20, 39, 41, 39, 21, 19, 42, 39, - 41, 39, 23, 19, 17, 39, 39, 21, - 43, 39, 41, 39, 25, 19, 17, 23, - 39, 21, 44, 45, 39, 30, 26, 15, - 19, 17, 23, 25, 21, 40, 39, 30, - 39, 15, 19, 17, 23, 25, 21, 0 + 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2, + 3, 0, 0, 0, 0, 4, 0, 1, + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3, 0, 0, 0, 0, 4, 0, + 5, 5, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 6, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 6, 0, 7, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 8, 0, 9, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 10, 0, 0, + 0, 0, 4, 0, 9, 9, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10, 0, 11, 11, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 12, 0, + 0, 0, 0, 4, 0, 11, 11, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 12, 0, 14, + 14, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 15, + 13, 14, 14, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 15, 16, 16, 16, 16, 17, 16, + 18, 18, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 17, 16, 19, 19, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 19, 16, 20, 20, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 21, 16, 22, 22, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 23, 16, 16, + 16, 16, 17, 16, 22, 22, 16, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 23, 16, 24, 24, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 25, 16, + 16, 16, 16, 17, 16, 24, 24, 16, + 16, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 25, 16, 14, + 14, 16, 16, 16, 16, 16, 16, 16, + 16, 16, 16, 16, 16, 16, 26, 15, + 16, 16, 16, 16, 17, 16, 28, 28, + 27, 27, 29, 29, 27, 27, 27, 27, + 2, 2, 27, 30, 27, 28, 27, 27, + 27, 27, 15, 19, 27, 27, 27, 17, + 23, 25, 21, 27, 32, 32, 31, 31, + 31, 31, 31, 31, 31, 33, 31, 31, + 31, 31, 31, 2, 3, 6, 31, 31, + 31, 4, 10, 12, 8, 31, 34, 34, + 31, 31, 31, 31, 31, 31, 31, 35, + 31, 31, 31, 31, 31, 31, 3, 6, + 31, 31, 31, 4, 10, 12, 8, 31, + 5, 5, 31, 31, 31, 31, 31, 31, + 31, 35, 31, 31, 31, 31, 31, 31, + 4, 6, 31, 31, 31, 31, 31, 31, + 8, 31, 6, 31, 7, 7, 31, 31, + 31, 31, 31, 31, 31, 35, 31, 31, + 31, 31, 31, 31, 8, 6, 31, 36, + 36, 31, 31, 31, 31, 31, 31, 31, + 35, 31, 31, 31, 31, 31, 31, 10, + 6, 31, 31, 31, 4, 31, 31, 8, + 31, 37, 37, 31, 31, 31, 31, 31, + 31, 31, 35, 31, 31, 31, 31, 31, + 31, 12, 6, 31, 31, 31, 4, 10, + 31, 8, 31, 34, 34, 31, 31, 31, + 31, 31, 31, 31, 33, 31, 31, 31, + 31, 31, 31, 3, 6, 31, 31, 31, + 4, 10, 12, 8, 31, 28, 28, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 28, 31, 14, 14, + 38, 38, 38, 38, 38, 38, 38, 38, + 38, 38, 38, 38, 38, 38, 15, 38, + 38, 38, 38, 17, 38, 40, 40, 39, + 39, 39, 39, 39, 39, 39, 41, 39, + 39, 39, 39, 39, 39, 15, 19, 39, + 39, 39, 17, 23, 25, 21, 39, 18, + 18, 39, 39, 39, 39, 39, 39, 39, + 41, 39, 39, 39, 39, 39, 39, 17, + 19, 39, 39, 39, 39, 39, 39, 21, + 39, 19, 39, 20, 20, 39, 39, 39, + 39, 39, 39, 39, 41, 39, 39, 39, + 39, 39, 39, 21, 19, 39, 42, 42, + 39, 39, 39, 39, 39, 39, 39, 41, + 39, 39, 39, 39, 39, 39, 23, 19, + 39, 39, 39, 17, 39, 39, 21, 39, + 43, 43, 39, 39, 39, 39, 39, 39, + 39, 41, 39, 39, 39, 39, 39, 39, + 25, 19, 39, 39, 39, 17, 23, 39, + 21, 39, 44, 44, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, + 39, 44, 39, 45, 45, 39, 39, 39, + 39, 39, 39, 39, 30, 39, 39, 39, + 39, 39, 26, 15, 19, 39, 39, 39, + 17, 23, 25, 21, 39, 40, 40, 39, + 39, 39, 39, 39, 39, 39, 30, 39, + 39, 39, 39, 39, 39, 15, 19, 39, + 39, 39, 17, 23, 25, 21, 39, 0 }; -static const char _khmer_syllable_machine_index_defaults[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 13, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 27, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 38, 39, - 39, 39, 39, 39, 39, 39, 39, 39, - 0 +static const char _khmer_syllable_machine_trans_targs[] = { + 20, 1, 28, 22, 23, 3, 24, 5, + 25, 7, 26, 9, 27, 20, 10, 31, + 20, 32, 12, 33, 14, 34, 16, 35, + 18, 36, 39, 20, 21, 30, 37, 20, + 0, 29, 2, 4, 6, 8, 20, 20, + 11, 13, 15, 17, 38, 19 }; -static const char _khmer_syllable_machine_trans_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0 -}; - -static const char _khmer_syllable_machine_cond_targs[] = { - 20, 1, 28, 22, 23, 3, 24, 5, - 25, 7, 26, 9, 27, 20, 10, 31, - 20, 32, 12, 33, 14, 34, 16, 35, - 18, 36, 39, 20, 21, 30, 37, 20, - 0, 29, 2, 4, 6, 8, 20, 20, - 11, 13, 15, 17, 38, 19, 0 -}; - -static const char _khmer_syllable_machine_cond_actions[] = { - 1, 0, 2, 2, 2, 0, 0, 0, - 2, 0, 2, 0, 2, 3, 0, 4, - 5, 2, 0, 0, 0, 2, 0, 2, - 0, 2, 4, 8, 2, 9, 0, 10, - 0, 0, 0, 0, 0, 0, 11, 12, - 0, 0, 0, 0, 4, 0, 0 +static const char _khmer_syllable_machine_trans_actions[] = { + 1, 0, 2, 2, 2, 0, 0, 0, + 2, 0, 2, 0, 2, 3, 0, 4, + 5, 2, 0, 0, 0, 2, 0, 2, + 0, 2, 4, 8, 2, 9, 0, 10, + 0, 0, 0, 0, 0, 0, 11, 12, + 0, 0, 0, 0, 4, 0 }; static const char _khmer_syllable_machine_to_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }; static const char _khmer_syllable_machine_from_state_actions[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0 + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0 }; -static const char _khmer_syllable_machine_eof_cond_spaces[] = { - -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 0 -}; - -static const char _khmer_syllable_machine_eof_cond_key_offs[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0 -}; - -static const char _khmer_syllable_machine_eof_cond_key_lens[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0 -}; - -static const char _khmer_syllable_machine_eof_cond_keys[] = { - 0 -}; - -static const char _khmer_syllable_machine_eof_trans[] = { - 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 14, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 0, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 39, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 0 -}; - -static const char _khmer_syllable_machine_nfa_targs[] = { - 0, 0 -}; - -static const char _khmer_syllable_machine_nfa_offsets[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0 -}; - -static const char _khmer_syllable_machine_nfa_push_actions[] = { - 0, 0 -}; - -static const char _khmer_syllable_machine_nfa_pop_trans[] = { - 0, 0 +static const unsigned char _khmer_syllable_machine_eof_trans[] = { + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 14, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 0, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 39, 40, + 40, 40, 40, 40, 40, 40, 40, 40 }; static const int khmer_syllable_machine_start = 20; @@ -218,228 +215,156 @@ static const int khmer_syllable_machine_error = -1; static const int khmer_syllable_machine_en_main = 20; +#line 36 "hb-ot-shape-complex-khmer-machine.rl" +#line 80 "hb-ot-shape-complex-khmer-machine.rl" + + #define found_syllable(syllable_type) \ -HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial=1; \ -} HB_STMT_END + HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ + } HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act HB_UNUSED; - int cs; - hb_glyph_info_t *info = buffer->info; - + unsigned int p, pe, eof, ts, te, act HB_UNUSED; + int cs; + hb_glyph_info_t *info = buffer->info; + +#line 242 "hb-ot-shape-complex-khmer-machine.hh" { - cs = (int)khmer_syllable_machine_start; - ts = 0; - te = 0; - act = 0; + cs = khmer_syllable_machine_start; + ts = 0; + te = 0; + act = 0; } - - - p=0; - pe = eof = buffer->len; - - unsigned int syllable_serial=1; - + +#line 100 "hb-ot-shape-complex-khmer-machine.rl" + + + p = 0; + pe = eof = buffer->len; + + unsigned int syllable_serial = 1; + +#line 258 "hb-ot-shape-complex-khmer-machine.hh" { - int _cpc; - int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { - if ( p == pe ) - goto _test_eof; - _resume: { - switch ( _khmer_syllable_machine_from_state_actions[cs] ) { - case 7: { - { - #line 1 "NONE" - {ts = p;}} - - break; } - } - - _keys = ( _khmer_syllable_machine_trans_keys + ((cs<<1))); - _inds = ( _khmer_syllable_machine_indicies + (_khmer_syllable_machine_index_offsets[cs])); - - if ( (info[p].khmer_category()) <= 29 && (info[p].khmer_category()) >= 1 ) - { - int _ic = (int)_khmer_syllable_machine_char_class[(int)(info[p].khmer_category()) - 1]; - if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) - _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); - else - _trans = (unsigned int)_khmer_syllable_machine_index_defaults[cs]; - } - else { - _trans = (unsigned int)_khmer_syllable_machine_index_defaults[cs]; - } - - goto _match_cond; - } - _match_cond: { - cs = (int)_khmer_syllable_machine_cond_targs[_trans]; - - if ( _khmer_syllable_machine_cond_actions[_trans] == 0 ) - goto _again; - - switch ( _khmer_syllable_machine_cond_actions[_trans] ) { - case 2: { - { - #line 1 "NONE" - {te = p+1;}} - - break; } - case 8: { - { - #line 76 "hb-ot-shape-complex-khmer-machine.rl" - {te = p+1;{ - #line 76 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (non_khmer_cluster); }}} - - break; } - case 10: { - { - #line 74 "hb-ot-shape-complex-khmer-machine.rl" - {te = p;p = p - 1;{ - #line 74 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (consonant_syllable); }}} - - break; } - case 12: { - { - #line 75 "hb-ot-shape-complex-khmer-machine.rl" - {te = p;p = p - 1;{ - #line 75 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 11: { - { - #line 76 "hb-ot-shape-complex-khmer-machine.rl" - {te = p;p = p - 1;{ - #line 76 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (non_khmer_cluster); }}} - - break; } - case 1: { - { - #line 74 "hb-ot-shape-complex-khmer-machine.rl" - {p = ((te))-1; - { - #line 74 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (consonant_syllable); }}} - - break; } - case 5: { - { - #line 75 "hb-ot-shape-complex-khmer-machine.rl" - {p = ((te))-1; - { - #line 75 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 3: { - { - #line 1 "NONE" - {switch( act ) { - case 2: { - p = ((te))-1; - { - #line 75 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (broken_cluster); } break; } - case 3: { - p = ((te))-1; - { - #line 76 "hb-ot-shape-complex-khmer-machine.rl" - found_syllable (non_khmer_cluster); } break; } - }} - } - - break; } - case 4: { - { - #line 1 "NONE" - {te = p+1;}} - { - #line 75 "hb-ot-shape-complex-khmer-machine.rl" - {act = 2;}} - - break; } - case 9: { - { - #line 1 "NONE" - {te = p+1;}} - { - #line 76 "hb-ot-shape-complex-khmer-machine.rl" - {act = 3;}} - - break; } - } - - - } - _again: { - switch ( _khmer_syllable_machine_to_state_actions[cs] ) { - case 6: { - { - #line 1 "NONE" - {ts = 0;}} - - break; } - } - - p += 1; - if ( p != pe ) - goto _resume; - } - _test_eof: { {} - if ( p == eof ) - { - if ( _khmer_syllable_machine_eof_cond_spaces[cs] != -1 ) { - _cekeys = ( _khmer_syllable_machine_eof_cond_keys + (_khmer_syllable_machine_eof_cond_key_offs[cs])); - _klen = (int)_khmer_syllable_machine_eof_cond_key_lens[cs]; - _cpc = 0; - { - const char *_lower = _cekeys; - const char *_upper = _cekeys + _klen - 1; - const char *_mid; - while ( 1 ) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( _cpc < (int)(*( _mid)) ) - _upper = _mid - 1; - else if ( _cpc > (int)(*( _mid)) ) - _lower = _mid + 1; - else { - goto _ok; - } - } - cs = -1; - goto _out; - } - _ok: {} - } - if ( _khmer_syllable_machine_eof_trans[cs] > 0 ) { - _trans = (unsigned int)_khmer_syllable_machine_eof_trans[cs] - 1; - goto _match_cond; - } - } - - } - _out: { {} - } - } + int _slen; + int _trans; + const unsigned char *_keys; + const char *_inds; + if ( p == pe ) + goto _test_eof; +_resume: + switch ( _khmer_syllable_machine_from_state_actions[cs] ) { + case 7: +#line 1 "NONE" + {ts = p;} + break; +#line 272 "hb-ot-shape-complex-khmer-machine.hh" } - + + _keys = _khmer_syllable_machine_trans_keys + (cs<<1); + _inds = _khmer_syllable_machine_indicies + _khmer_syllable_machine_index_offsets[cs]; + + _slen = _khmer_syllable_machine_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].khmer_category()) && + ( info[p].khmer_category()) <= _keys[1] ? + ( info[p].khmer_category()) - _keys[0] : _slen ]; + +_eof_trans: + cs = _khmer_syllable_machine_trans_targs[_trans]; + + if ( _khmer_syllable_machine_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _khmer_syllable_machine_trans_actions[_trans] ) { + case 2: +#line 1 "NONE" + {te = p+1;} + break; + case 8: +#line 76 "hb-ot-shape-complex-khmer-machine.rl" + {te = p+1;{ found_syllable (non_khmer_cluster); }} + break; + case 10: +#line 74 "hb-ot-shape-complex-khmer-machine.rl" + {te = p;p--;{ found_syllable (consonant_syllable); }} + break; + case 12: +#line 75 "hb-ot-shape-complex-khmer-machine.rl" + {te = p;p--;{ found_syllable (broken_cluster); }} + break; + case 11: +#line 76 "hb-ot-shape-complex-khmer-machine.rl" + {te = p;p--;{ found_syllable (non_khmer_cluster); }} + break; + case 1: +#line 74 "hb-ot-shape-complex-khmer-machine.rl" + {{p = ((te))-1;}{ found_syllable (consonant_syllable); }} + break; + case 5: +#line 75 "hb-ot-shape-complex-khmer-machine.rl" + {{p = ((te))-1;}{ found_syllable (broken_cluster); }} + break; + case 3: +#line 1 "NONE" + { switch( act ) { + case 2: + {{p = ((te))-1;} found_syllable (broken_cluster); } + break; + case 3: + {{p = ((te))-1;} found_syllable (non_khmer_cluster); } + break; + } + } + break; + case 4: +#line 1 "NONE" + {te = p+1;} +#line 75 "hb-ot-shape-complex-khmer-machine.rl" + {act = 2;} + break; + case 9: +#line 1 "NONE" + {te = p+1;} +#line 76 "hb-ot-shape-complex-khmer-machine.rl" + {act = 3;} + break; +#line 342 "hb-ot-shape-complex-khmer-machine.hh" + } + +_again: + switch ( _khmer_syllable_machine_to_state_actions[cs] ) { + case 6: +#line 1 "NONE" + {ts = 0;} + break; +#line 351 "hb-ot-shape-complex-khmer-machine.hh" + } + + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _khmer_syllable_machine_eof_trans[cs] > 0 ) { + _trans = _khmer_syllable_machine_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + } + +#line 108 "hb-ot-shape-complex-khmer-machine.rl" + } #endif /* HB_OT_SHAPE_COMPLEX_KHMER_MACHINE_HH */ diff --git a/src/hb-ot-shape-complex-myanmar-machine.hh b/src/hb-ot-shape-complex-myanmar-machine.hh index f40a47999..d03832fa7 100644 --- a/src/hb-ot-shape-complex-myanmar-machine.hh +++ b/src/hb-ot-shape-complex-myanmar-machine.hh @@ -1,28 +1,30 @@ + +#line 1 "hb-ot-shape-complex-myanmar-machine.rl" /* -* Copyright © 2011,2012 Google, Inc. -* -* This is part of HarfBuzz, a text shaping library. -* -* Permission is hereby granted, without written agreement and without -* license or royalty fees, to use, copy, modify, and distribute this -* software and its documentation for any purpose, provided that the -* above copyright notice and the following two paragraphs appear in -* all copies of this software. -* -* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* -* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -* -* Google Author(s): Behdad Esfahbod -*/ + * Copyright © 2011,2012 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Google Author(s): Behdad Esfahbod + */ #ifndef HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_MYANMAR_MACHINE_HH @@ -30,276 +32,251 @@ #include "hb.hh" +#line 36 "hb-ot-shape-complex-myanmar-machine.hh" static const unsigned char _myanmar_syllable_machine_trans_keys[] = { - 0u, 21u, 1u, 20u, 3u, 19u, 3u, 5u, - 3u, 19u, 1u, 15u, 3u, 15u, 3u, 15u, - 1u, 19u, 1u, 19u, 1u, 19u, 1u, 19u, - 0u, 8u, 1u, 19u, 1u, 19u, 1u, 19u, - 1u, 19u, 1u, 19u, 1u, 20u, 1u, 19u, - 1u, 19u, 1u, 19u, 1u, 19u, 3u, 19u, - 3u, 5u, 3u, 19u, 1u, 15u, 3u, 15u, - 3u, 15u, 1u, 19u, 1u, 19u, 1u, 19u, - 1u, 19u, 0u, 8u, 1u, 20u, 1u, 19u, - 1u, 19u, 1u, 19u, 1u, 19u, 1u, 19u, - 1u, 20u, 1u, 19u, 1u, 19u, 1u, 19u, - 1u, 19u, 1u, 20u, 1u, 19u, 0u, 20u, - 0u, 8u, 5u, 5u, 0u + 1u, 32u, 3u, 30u, 5u, 29u, 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, + 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 1u, 16u, 3u, 29u, 3u, 29u, 3u, 29u, + 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 5u, 29u, + 5u, 8u, 5u, 29u, 3u, 25u, 5u, 25u, 5u, 25u, 3u, 29u, 3u, 29u, 3u, 29u, + 3u, 29u, 1u, 16u, 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, + 3u, 30u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 29u, 3u, 30u, 3u, 29u, 1u, 32u, + 1u, 32u, 8u, 8u, 0 }; -static const char _myanmar_syllable_machine_char_class[] = { - 0, 0, 1, 2, 3, 3, 4, 5, - 4, 6, 7, 4, 4, 4, 4, 8, - 4, 9, 10, 4, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 7, - 0 +static const char _myanmar_syllable_machine_key_spans[] = { + 32, 28, 25, 4, 25, 23, 21, 21, + 27, 27, 27, 27, 16, 27, 27, 27, + 27, 27, 28, 27, 27, 27, 27, 25, + 4, 25, 23, 21, 21, 27, 27, 27, + 27, 16, 28, 27, 27, 27, 27, 27, + 28, 27, 27, 27, 27, 28, 27, 32, + 32, 1 }; static const short _myanmar_syllable_machine_index_offsets[] = { - 0, 22, 42, 59, 62, 79, 94, 107, - 120, 139, 158, 177, 196, 205, 224, 243, - 262, 281, 300, 320, 339, 358, 377, 396, - 413, 416, 433, 448, 461, 474, 493, 512, - 531, 550, 559, 579, 598, 617, 636, 655, - 674, 694, 713, 732, 751, 770, 790, 809, - 830, 839, 0 + 0, 33, 62, 88, 93, 119, 143, 165, + 187, 215, 243, 271, 299, 316, 344, 372, + 400, 428, 456, 485, 513, 541, 569, 597, + 623, 628, 654, 678, 700, 722, 750, 778, + 806, 834, 851, 880, 908, 936, 964, 992, + 1020, 1049, 1077, 1105, 1133, 1161, 1190, 1218, + 1251, 1284 }; static const char _myanmar_syllable_machine_indicies[] = { - 1, 2, 3, 4, 0, 5, 6, 1, - 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 22, 23, - 24, 21, 25, 26, 21, 21, 27, 21, - 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 24, 21, 25, 21, 21, 21, - 38, 21, 21, 21, 21, 21, 32, 21, - 21, 21, 36, 24, 21, 25, 24, 21, - 25, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 32, 21, 21, 21, 36, 39, - 21, 24, 21, 25, 32, 21, 21, 40, - 21, 21, 21, 21, 21, 32, 24, 21, - 25, 21, 21, 21, 40, 21, 21, 21, - 21, 21, 32, 24, 21, 25, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 32, - 22, 21, 24, 21, 25, 26, 21, 21, - 41, 21, 41, 21, 21, 21, 32, 42, - 21, 21, 36, 22, 21, 24, 21, 25, - 26, 21, 21, 21, 21, 21, 21, 21, - 21, 32, 21, 21, 21, 36, 22, 21, - 24, 21, 25, 26, 21, 21, 41, 21, - 21, 21, 21, 21, 32, 42, 21, 21, - 36, 22, 21, 24, 21, 25, 26, 21, - 21, 21, 21, 21, 21, 21, 21, 32, - 42, 21, 21, 36, 1, 21, 21, 21, - 21, 21, 21, 21, 1, 22, 21, 24, - 21, 25, 26, 21, 21, 27, 21, 28, - 29, 30, 31, 32, 33, 34, 35, 36, - 22, 21, 24, 21, 25, 26, 21, 21, - 43, 21, 21, 21, 21, 21, 32, 33, - 34, 35, 36, 22, 21, 24, 21, 25, - 26, 21, 21, 21, 21, 21, 21, 21, - 21, 32, 33, 34, 35, 36, 22, 21, - 24, 21, 25, 26, 21, 21, 21, 21, - 21, 21, 21, 21, 32, 33, 34, 21, - 36, 22, 21, 24, 21, 25, 26, 21, - 21, 21, 21, 21, 21, 21, 21, 32, - 21, 34, 21, 36, 22, 21, 24, 21, - 25, 26, 21, 21, 21, 21, 21, 21, - 21, 21, 32, 33, 34, 35, 36, 43, - 22, 21, 24, 21, 25, 26, 21, 21, - 43, 21, 28, 21, 30, 21, 32, 33, - 34, 35, 36, 22, 21, 24, 21, 25, - 26, 21, 21, 43, 21, 28, 21, 21, - 21, 32, 33, 34, 35, 36, 22, 21, - 24, 21, 25, 26, 21, 21, 43, 21, - 28, 29, 30, 21, 32, 33, 34, 35, - 36, 22, 23, 24, 21, 25, 26, 21, - 21, 27, 21, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 45, 44, 5, 44, - 44, 44, 46, 44, 44, 44, 44, 44, - 14, 44, 44, 44, 18, 45, 44, 5, - 45, 44, 5, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 14, 44, 44, 44, - 18, 47, 44, 45, 44, 5, 14, 44, - 44, 48, 44, 44, 44, 44, 44, 14, - 45, 44, 5, 44, 44, 44, 48, 44, - 44, 44, 44, 44, 14, 45, 44, 5, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 14, 2, 44, 45, 44, 5, 6, - 44, 44, 49, 44, 49, 44, 44, 44, - 14, 50, 44, 44, 18, 2, 44, 45, - 44, 5, 6, 44, 44, 44, 44, 44, - 44, 44, 44, 14, 44, 44, 44, 18, - 2, 44, 45, 44, 5, 6, 44, 44, - 49, 44, 44, 44, 44, 44, 14, 50, - 44, 44, 18, 2, 44, 45, 44, 5, - 6, 44, 44, 44, 44, 44, 44, 44, - 44, 14, 50, 44, 44, 18, 51, 44, - 44, 44, 44, 44, 44, 44, 51, 2, - 3, 45, 44, 5, 6, 44, 44, 8, - 44, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 2, 44, 45, 44, 5, - 6, 44, 44, 8, 44, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 2, 44, - 45, 44, 5, 6, 44, 44, 52, 44, - 44, 44, 44, 44, 14, 15, 16, 17, - 18, 2, 44, 45, 44, 5, 6, 44, - 44, 44, 44, 44, 44, 44, 44, 14, - 15, 16, 17, 18, 2, 44, 45, 44, - 5, 6, 44, 44, 44, 44, 44, 44, - 44, 44, 14, 15, 16, 44, 18, 2, - 44, 45, 44, 5, 6, 44, 44, 44, - 44, 44, 44, 44, 44, 14, 44, 16, - 44, 18, 2, 44, 45, 44, 5, 6, - 44, 44, 44, 44, 44, 44, 44, 44, - 14, 15, 16, 17, 18, 52, 2, 44, - 45, 44, 5, 6, 44, 44, 52, 44, - 10, 44, 12, 44, 14, 15, 16, 17, - 18, 2, 44, 45, 44, 5, 6, 44, - 44, 52, 44, 10, 44, 44, 44, 14, - 15, 16, 17, 18, 2, 44, 45, 44, - 5, 6, 44, 44, 52, 44, 10, 11, - 12, 44, 14, 15, 16, 17, 18, 2, - 3, 45, 44, 5, 6, 44, 44, 8, - 44, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 22, 23, 24, 21, 25, 26, - 21, 21, 53, 21, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 22, 54, - 24, 21, 25, 26, 21, 21, 27, 21, - 28, 29, 30, 31, 32, 33, 34, 35, - 36, 1, 2, 3, 45, 44, 5, 6, - 1, 1, 8, 44, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 1, 55, - 55, 55, 55, 55, 55, 1, 1, 56, + 1, 1, 2, 3, 4, 4, 0, 5, + 0, 6, 1, 0, 0, 0, 0, 7, + 0, 8, 9, 0, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 1, + 0, 22, 23, 24, 24, 21, 25, 21, + 26, 21, 21, 21, 21, 21, 21, 21, + 27, 21, 21, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 21, 24, 24, + 21, 25, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 38, 21, 21, 21, 21, + 21, 21, 32, 21, 21, 21, 36, 21, + 24, 24, 21, 25, 21, 24, 24, 21, + 25, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 32, 21, 21, 21, 36, 21, 39, + 21, 24, 24, 21, 25, 21, 32, 21, + 21, 21, 21, 21, 21, 21, 40, 21, + 21, 21, 21, 21, 21, 32, 21, 24, + 24, 21, 25, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 40, 21, 21, 21, + 21, 21, 21, 32, 21, 24, 24, 21, + 25, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 32, 21, 22, 21, 24, 24, 21, + 25, 21, 26, 21, 21, 21, 21, 21, + 21, 21, 41, 21, 21, 41, 21, 21, + 21, 32, 42, 21, 21, 36, 21, 22, + 21, 24, 24, 21, 25, 21, 26, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 32, 21, 21, + 21, 36, 21, 22, 21, 24, 24, 21, + 25, 21, 26, 21, 21, 21, 21, 21, + 21, 21, 41, 21, 21, 21, 21, 21, + 21, 32, 42, 21, 21, 36, 21, 22, + 21, 24, 24, 21, 25, 21, 26, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 32, 42, 21, + 21, 36, 21, 1, 1, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 1, 21, 22, 21, 24, 24, + 21, 25, 21, 26, 21, 21, 21, 21, + 21, 21, 21, 27, 21, 21, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 21, + 22, 21, 24, 24, 21, 25, 21, 26, + 21, 21, 21, 21, 21, 21, 21, 43, + 21, 21, 21, 21, 21, 21, 32, 33, + 34, 35, 36, 21, 22, 21, 24, 24, + 21, 25, 21, 26, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 32, 33, 34, 35, 36, 21, + 22, 21, 24, 24, 21, 25, 21, 26, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 32, 33, + 34, 21, 36, 21, 22, 21, 24, 24, + 21, 25, 21, 26, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 32, 21, 34, 21, 36, 21, + 22, 21, 24, 24, 21, 25, 21, 26, + 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 32, 33, + 34, 35, 36, 43, 21, 22, 21, 24, + 24, 21, 25, 21, 26, 21, 21, 21, + 21, 21, 21, 21, 43, 21, 21, 28, + 21, 30, 21, 32, 33, 34, 35, 36, + 21, 22, 21, 24, 24, 21, 25, 21, + 26, 21, 21, 21, 21, 21, 21, 21, + 43, 21, 21, 28, 21, 21, 21, 32, + 33, 34, 35, 36, 21, 22, 21, 24, + 24, 21, 25, 21, 26, 21, 21, 21, + 21, 21, 21, 21, 43, 21, 21, 28, + 29, 30, 21, 32, 33, 34, 35, 36, + 21, 22, 23, 24, 24, 21, 25, 21, + 26, 21, 21, 21, 21, 21, 21, 21, + 27, 21, 21, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 21, 45, 45, 44, + 5, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 46, 44, 44, 44, 44, 44, + 44, 14, 44, 44, 44, 18, 44, 45, + 45, 44, 5, 44, 45, 45, 44, 5, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 14, 44, 44, 44, 18, 44, 47, 44, + 45, 45, 44, 5, 44, 14, 44, 44, + 44, 44, 44, 44, 44, 48, 44, 44, + 44, 44, 44, 44, 14, 44, 45, 45, + 44, 5, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 48, 44, 44, 44, 44, + 44, 44, 14, 44, 45, 45, 44, 5, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 14, 44, 2, 44, 45, 45, 44, 5, + 44, 6, 44, 44, 44, 44, 44, 44, + 44, 49, 44, 44, 49, 44, 44, 44, + 14, 50, 44, 44, 18, 44, 2, 44, + 45, 45, 44, 5, 44, 6, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 14, 44, 44, 44, + 18, 44, 2, 44, 45, 45, 44, 5, + 44, 6, 44, 44, 44, 44, 44, 44, + 44, 49, 44, 44, 44, 44, 44, 44, + 14, 50, 44, 44, 18, 44, 2, 44, + 45, 45, 44, 5, 44, 6, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 14, 50, 44, 44, + 18, 44, 51, 51, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 51, 44, 2, 3, 45, 45, 44, + 5, 44, 6, 44, 44, 44, 44, 44, + 44, 44, 8, 44, 44, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 44, + 2, 44, 45, 45, 44, 5, 44, 6, + 44, 44, 44, 44, 44, 44, 44, 8, + 44, 44, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 44, 2, 44, 45, 45, + 44, 5, 44, 6, 44, 44, 44, 44, + 44, 44, 44, 52, 44, 44, 44, 44, + 44, 44, 14, 15, 16, 17, 18, 44, + 2, 44, 45, 45, 44, 5, 44, 6, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 14, 15, + 16, 17, 18, 44, 2, 44, 45, 45, + 44, 5, 44, 6, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 14, 15, 16, 44, 18, 44, + 2, 44, 45, 45, 44, 5, 44, 6, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 14, 44, + 16, 44, 18, 44, 2, 44, 45, 45, + 44, 5, 44, 6, 44, 44, 44, 44, + 44, 44, 44, 44, 44, 44, 44, 44, + 44, 44, 14, 15, 16, 17, 18, 52, + 44, 2, 44, 45, 45, 44, 5, 44, + 6, 44, 44, 44, 44, 44, 44, 44, + 52, 44, 44, 10, 44, 12, 44, 14, + 15, 16, 17, 18, 44, 2, 44, 45, + 45, 44, 5, 44, 6, 44, 44, 44, + 44, 44, 44, 44, 52, 44, 44, 10, + 44, 44, 44, 14, 15, 16, 17, 18, + 44, 2, 44, 45, 45, 44, 5, 44, + 6, 44, 44, 44, 44, 44, 44, 44, + 52, 44, 44, 10, 11, 12, 44, 14, + 15, 16, 17, 18, 44, 2, 3, 45, + 45, 44, 5, 44, 6, 44, 44, 44, + 44, 44, 44, 44, 8, 44, 44, 10, + 11, 12, 13, 14, 15, 16, 17, 18, + 44, 22, 23, 24, 24, 21, 25, 21, + 26, 21, 21, 21, 21, 21, 21, 21, + 53, 21, 21, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 21, 22, 54, + 24, 24, 21, 25, 21, 26, 21, 21, + 21, 21, 21, 21, 21, 27, 21, 21, + 28, 29, 30, 31, 32, 33, 34, 35, + 36, 21, 1, 1, 2, 3, 45, 45, + 44, 5, 44, 6, 1, 44, 44, 44, + 44, 1, 44, 8, 44, 44, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, + 44, 1, 44, 1, 1, 55, 55, 55, + 55, 55, 55, 55, 55, 1, 55, 55, + 55, 55, 1, 55, 55, 55, 55, 55, + 55, 55, 55, 55, 55, 55, 55, 55, + 55, 55, 1, 55, 56, 55, 0 +}; + +static const char _myanmar_syllable_machine_trans_targs[] = { + 0, 1, 23, 33, 0, 24, 30, 45, + 35, 48, 36, 41, 42, 43, 26, 38, + 39, 40, 29, 44, 49, 0, 2, 12, + 0, 3, 9, 13, 14, 19, 20, 21, + 5, 16, 17, 18, 8, 22, 4, 6, + 7, 10, 11, 15, 0, 0, 25, 27, + 28, 31, 32, 34, 37, 46, 47, 0, 0 }; -static const char _myanmar_syllable_machine_index_defaults[] = { - 0, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 21, 21, 44, - 55, 55, 0 -}; - -static const char _myanmar_syllable_machine_trans_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, 0 -}; - -static const char _myanmar_syllable_machine_cond_targs[] = { - 0, 1, 23, 33, 0, 24, 30, 45, - 35, 48, 36, 41, 42, 43, 26, 38, - 39, 40, 29, 44, 49, 0, 2, 12, - 0, 3, 9, 13, 14, 19, 20, 21, - 5, 16, 17, 18, 8, 22, 4, 6, - 7, 10, 11, 15, 0, 0, 25, 27, - 28, 31, 32, 34, 37, 46, 47, 0, - 0, 0 -}; - -static const char _myanmar_syllable_machine_cond_actions[] = { - 3, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 5, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 7, 8, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 9, - 10, 0 +static const char _myanmar_syllable_machine_trans_actions[] = { + 3, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 5, 0, 0, + 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 8, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9, + 10 }; static const char _myanmar_syllable_machine_to_state_actions[] = { - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }; static const char _myanmar_syllable_machine_from_state_actions[] = { - 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _myanmar_syllable_machine_eof_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 0 -}; - -static const char _myanmar_syllable_machine_eof_cond_key_offs[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _myanmar_syllable_machine_eof_cond_key_lens[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _myanmar_syllable_machine_eof_cond_keys[] = { - 0 -}; - -static const char _myanmar_syllable_machine_eof_trans[] = { - 0, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 45, - 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 45, 45, 45, - 45, 45, 45, 45, 45, 22, 22, 45, - 56, 56, 0 -}; - -static const char _myanmar_syllable_machine_nfa_targs[] = { + 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -static const char _myanmar_syllable_machine_nfa_offsets[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _myanmar_syllable_machine_nfa_push_actions[] = { - 0, 0 -}; - -static const char _myanmar_syllable_machine_nfa_pop_trans[] = { - 0, 0 +static const short _myanmar_syllable_machine_eof_trans[] = { + 0, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 22, + 22, 22, 22, 22, 22, 22, 22, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 45, 45, 45, 22, 22, 45, + 56, 56 }; static const int myanmar_syllable_machine_start = 0; @@ -309,199 +286,136 @@ static const int myanmar_syllable_machine_error = -1; static const int myanmar_syllable_machine_en_main = 0; +#line 36 "hb-ot-shape-complex-myanmar-machine.rl" +#line 94 "hb-ot-shape-complex-myanmar-machine.rl" + + #define found_syllable(syllable_type) \ -HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial=1; \ -} HB_STMT_END + HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ + } HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act HB_UNUSED; - int cs; - hb_glyph_info_t *info = buffer->info; - + unsigned int p, pe, eof, ts, te, act HB_UNUSED; + int cs; + hb_glyph_info_t *info = buffer->info; + +#line 313 "hb-ot-shape-complex-myanmar-machine.hh" { - cs = (int)myanmar_syllable_machine_start; - ts = 0; - te = 0; + cs = myanmar_syllable_machine_start; + ts = 0; + te = 0; + act = 0; } - - - p=0; - pe = eof = buffer->len; - - unsigned int syllable_serial=1; - + +#line 114 "hb-ot-shape-complex-myanmar-machine.rl" + + + p = 0; + pe = eof = buffer->len; + + unsigned int syllable_serial = 1; + +#line 329 "hb-ot-shape-complex-myanmar-machine.hh" { - int _cpc; - int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { - if ( p == pe ) - goto _test_eof; - _resume: { - switch ( _myanmar_syllable_machine_from_state_actions[cs] ) { - case 2: { - { - #line 1 "NONE" - {ts = p;}} - - break; } - } - - _keys = ( _myanmar_syllable_machine_trans_keys + ((cs<<1))); - _inds = ( _myanmar_syllable_machine_indicies + (_myanmar_syllable_machine_index_offsets[cs])); - - if ( (info[p].myanmar_category()) <= 32 && (info[p].myanmar_category()) >= 1 ) - { - int _ic = (int)_myanmar_syllable_machine_char_class[(int)(info[p].myanmar_category()) - 1]; - if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) - _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); - else - _trans = (unsigned int)_myanmar_syllable_machine_index_defaults[cs]; - } - else { - _trans = (unsigned int)_myanmar_syllable_machine_index_defaults[cs]; - } - - goto _match_cond; - } - _match_cond: { - cs = (int)_myanmar_syllable_machine_cond_targs[_trans]; - - if ( _myanmar_syllable_machine_cond_actions[_trans] == 0 ) - goto _again; - - switch ( _myanmar_syllable_machine_cond_actions[_trans] ) { - case 6: { - { - #line 86 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ - #line 86 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (consonant_syllable); }}} - - break; } - case 4: { - { - #line 87 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ - #line 87 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (non_myanmar_cluster); }}} - - break; } - case 10: { - { - #line 88 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ - #line 88 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (punctuation_cluster); }}} - - break; } - case 8: { - { - #line 89 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ - #line 89 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 3: { - { - #line 90 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p+1;{ - #line 90 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (non_myanmar_cluster); }}} - - break; } - case 5: { - { - #line 86 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p;p = p - 1;{ - #line 86 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (consonant_syllable); }}} - - break; } - case 7: { - { - #line 89 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p;p = p - 1;{ - #line 89 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 9: { - { - #line 90 "hb-ot-shape-complex-myanmar-machine.rl" - {te = p;p = p - 1;{ - #line 90 "hb-ot-shape-complex-myanmar-machine.rl" - found_syllable (non_myanmar_cluster); }}} - - break; } - } - - - } - _again: { - switch ( _myanmar_syllable_machine_to_state_actions[cs] ) { - case 1: { - { - #line 1 "NONE" - {ts = 0;}} - - break; } - } - - p += 1; - if ( p != pe ) - goto _resume; - } - _test_eof: { {} - if ( p == eof ) - { - if ( _myanmar_syllable_machine_eof_cond_spaces[cs] != -1 ) { - _cekeys = ( _myanmar_syllable_machine_eof_cond_keys + (_myanmar_syllable_machine_eof_cond_key_offs[cs])); - _klen = (int)_myanmar_syllable_machine_eof_cond_key_lens[cs]; - _cpc = 0; - { - const char *_lower = _cekeys; - const char *_upper = _cekeys + _klen - 1; - const char *_mid; - while ( 1 ) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( _cpc < (int)(*( _mid)) ) - _upper = _mid - 1; - else if ( _cpc > (int)(*( _mid)) ) - _lower = _mid + 1; - else { - goto _ok; - } - } - cs = -1; - goto _out; - } - _ok: {} - } - if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) { - _trans = (unsigned int)_myanmar_syllable_machine_eof_trans[cs] - 1; - goto _match_cond; - } - } - - } - _out: { {} - } - } + int _slen; + int _trans; + const unsigned char *_keys; + const char *_inds; + if ( p == pe ) + goto _test_eof; +_resume: + switch ( _myanmar_syllable_machine_from_state_actions[cs] ) { + case 2: +#line 1 "NONE" + {ts = p;} + break; +#line 343 "hb-ot-shape-complex-myanmar-machine.hh" } - + + _keys = _myanmar_syllable_machine_trans_keys + (cs<<1); + _inds = _myanmar_syllable_machine_indicies + _myanmar_syllable_machine_index_offsets[cs]; + + _slen = _myanmar_syllable_machine_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].myanmar_category()) && + ( info[p].myanmar_category()) <= _keys[1] ? + ( info[p].myanmar_category()) - _keys[0] : _slen ]; + +_eof_trans: + cs = _myanmar_syllable_machine_trans_targs[_trans]; + + if ( _myanmar_syllable_machine_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _myanmar_syllable_machine_trans_actions[_trans] ) { + case 6: +#line 86 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ found_syllable (consonant_syllable); }} + break; + case 4: +#line 87 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ found_syllable (non_myanmar_cluster); }} + break; + case 10: +#line 88 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ found_syllable (punctuation_cluster); }} + break; + case 8: +#line 89 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ found_syllable (broken_cluster); }} + break; + case 3: +#line 90 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p+1;{ found_syllable (non_myanmar_cluster); }} + break; + case 5: +#line 86 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p;p--;{ found_syllable (consonant_syllable); }} + break; + case 7: +#line 89 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p;p--;{ found_syllable (broken_cluster); }} + break; + case 9: +#line 90 "hb-ot-shape-complex-myanmar-machine.rl" + {te = p;p--;{ found_syllable (non_myanmar_cluster); }} + break; +#line 393 "hb-ot-shape-complex-myanmar-machine.hh" + } + +_again: + switch ( _myanmar_syllable_machine_to_state_actions[cs] ) { + case 1: +#line 1 "NONE" + {ts = 0;} + break; +#line 402 "hb-ot-shape-complex-myanmar-machine.hh" + } + + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _myanmar_syllable_machine_eof_trans[cs] > 0 ) { + _trans = _myanmar_syllable_machine_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + } + +#line 122 "hb-ot-shape-complex-myanmar-machine.rl" + } #undef found_syllable diff --git a/src/hb-ot-shape-complex-use-machine.hh b/src/hb-ot-shape-complex-use-machine.hh index e4b1884cf..f83e09fbc 100644 --- a/src/hb-ot-shape-complex-use-machine.hh +++ b/src/hb-ot-shape-complex-use-machine.hh @@ -1,30 +1,32 @@ + +#line 1 "hb-ot-shape-complex-use-machine.rl" /* -* Copyright © 2015 Mozilla Foundation. -* Copyright © 2015 Google, Inc. -* -* This is part of HarfBuzz, a text shaping library. -* -* Permission is hereby granted, without written agreement and without -* license or royalty fees, to use, copy, modify, and distribute this -* software and its documentation for any purpose, provided that the -* above copyright notice and the following two paragraphs appear in -* all copies of this software. -* -* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR -* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES -* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN -* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -* DAMAGE. -* -* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, -* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS -* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO -* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. -* -* Mozilla Author(s): Jonathan Kew -* Google Author(s): Behdad Esfahbod -*/ + * Copyright © 2015 Mozilla Foundation. + * Copyright © 2015 Google, Inc. + * + * This is part of HarfBuzz, a text shaping library. + * + * Permission is hereby granted, without written agreement and without + * license or royalty fees, to use, copy, modify, and distribute this + * software and its documentation for any purpose, provided that the + * above copyright notice and the following two paragraphs appear in + * all copies of this software. + * + * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR + * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN + * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * + * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, + * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO + * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. + * + * Mozilla Author(s): Jonathan Kew + * Google Author(s): Behdad Esfahbod + */ #ifndef HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH #define HB_OT_SHAPE_COMPLEX_USE_MACHINE_HH @@ -32,370 +34,332 @@ #include "hb.hh" +#line 38 "hb-ot-shape-complex-use-machine.hh" static const unsigned char _use_syllable_machine_trans_keys[] = { - 7u, 33u, 1u, 9u, 1u, 1u, 7u, 33u, - 0u, 33u, 12u, 12u, 5u, 33u, 5u, 33u, - 1u, 9u, 1u, 1u, 5u, 33u, 5u, 33u, - 5u, 29u, 5u, 17u, 5u, 17u, 5u, 17u, - 5u, 29u, 5u, 29u, 5u, 29u, 5u, 33u, - 5u, 33u, 5u, 33u, 5u, 33u, 5u, 33u, - 5u, 33u, 5u, 33u, 5u, 33u, 1u, 29u, - 5u, 33u, 8u, 12u, 3u, 3u, 8u, 8u, - 5u, 33u, 5u, 33u, 30u, 31u, 31u, 31u, - 5u, 33u, 5u, 33u, 5u, 33u, 5u, 29u, - 5u, 17u, 5u, 17u, 5u, 17u, 5u, 29u, - 5u, 29u, 5u, 29u, 5u, 33u, 5u, 33u, - 5u, 33u, 5u, 33u, 5u, 33u, 5u, 33u, - 5u, 33u, 5u, 33u, 1u, 29u, 1u, 9u, - 3u, 3u, 8u, 12u, 8u, 8u, 7u, 33u, - 1u, 33u, 5u, 33u, 30u, 31u, 31u, 31u, - 12u, 31u, 1u, 4u, 0u + 12u, 44u, 1u, 15u, 1u, 1u, 12u, 44u, 0u, 44u, 21u, 21u, 8u, 44u, 8u, 44u, + 1u, 15u, 1u, 1u, 8u, 44u, 8u, 44u, 8u, 39u, 8u, 26u, 8u, 26u, 8u, 26u, + 8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, + 8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 8u, 44u, 13u, 21u, 4u, 4u, 13u, 13u, + 8u, 44u, 8u, 44u, 41u, 42u, 42u, 42u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 39u, + 8u, 26u, 8u, 26u, 8u, 26u, 8u, 39u, 8u, 39u, 8u, 39u, 8u, 44u, 8u, 44u, + 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 8u, 44u, 1u, 39u, 1u, 15u, + 4u, 4u, 13u, 21u, 13u, 13u, 12u, 44u, 1u, 44u, 8u, 44u, 41u, 42u, 42u, 42u, + 21u, 42u, 1u, 5u, 0 }; -static const char _use_syllable_machine_char_class[] = { - 0, 1, 2, 0, 3, 4, 2, 2, - 5, 2, 2, 6, 7, 8, 2, 9, - 0, 0, 10, 11, 2, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 2, 27, 28, 29, - 2, 30, 31, 32, 33, 0 +static const char _use_syllable_machine_key_spans[] = { + 33, 15, 1, 33, 45, 1, 37, 37, + 15, 1, 37, 37, 32, 19, 19, 19, + 32, 32, 32, 37, 37, 37, 37, 37, + 37, 37, 37, 39, 37, 9, 1, 1, + 37, 37, 2, 1, 37, 37, 37, 32, + 19, 19, 19, 32, 32, 32, 37, 37, + 37, 37, 37, 37, 37, 37, 39, 15, + 1, 9, 1, 33, 44, 37, 2, 1, + 22, 5 }; static const short _use_syllable_machine_index_offsets[] = { - 0, 27, 36, 37, 64, 98, 99, 128, - 157, 166, 167, 196, 225, 250, 263, 276, - 289, 314, 339, 364, 393, 422, 451, 480, - 509, 538, 567, 596, 625, 654, 659, 660, - 661, 690, 719, 721, 722, 751, 780, 809, - 834, 847, 860, 873, 898, 923, 948, 977, - 1006, 1035, 1064, 1093, 1122, 1151, 1180, 1209, - 1218, 1219, 1224, 1225, 1252, 1285, 1314, 1316, - 1317, 1337, 0 + 0, 34, 50, 52, 86, 132, 134, 172, + 210, 226, 228, 266, 304, 337, 357, 377, + 397, 430, 463, 496, 534, 572, 610, 648, + 686, 724, 762, 800, 840, 878, 888, 890, + 892, 930, 968, 971, 973, 1011, 1049, 1087, + 1120, 1140, 1160, 1180, 1213, 1246, 1279, 1317, + 1355, 1393, 1431, 1469, 1507, 1545, 1583, 1623, + 1639, 1641, 1651, 1653, 1687, 1732, 1770, 1773, + 1775, 1798 }; static const char _use_syllable_machine_indicies[] = { - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 3, 2, 2, 2, 2, - 2, 2, 2, 4, 3, 6, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 6, - 7, 8, 9, 10, 11, 12, 3, 13, - 14, 15, 16, 17, 9, 18, 19, 20, - 21, 22, 23, 24, 18, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 39, 41, 42, 1, 40, 43, - 40, 40, 44, 45, 46, 47, 48, 49, - 50, 51, 45, 52, 44, 53, 54, 55, - 56, 57, 58, 59, 40, 40, 40, 60, - 41, 42, 1, 40, 43, 40, 40, 61, - 45, 46, 47, 48, 49, 50, 51, 45, - 52, 53, 53, 54, 55, 56, 57, 58, - 59, 40, 40, 40, 60, 42, 62, 62, - 62, 62, 62, 62, 62, 63, 42, 41, - 42, 1, 40, 43, 40, 40, 40, 45, - 46, 47, 48, 49, 50, 51, 45, 52, - 53, 53, 54, 55, 56, 57, 58, 59, - 40, 40, 40, 60, 41, 40, 40, 40, - 40, 40, 40, 40, 45, 46, 47, 48, - 49, 40, 40, 40, 40, 40, 40, 54, - 55, 56, 57, 58, 59, 40, 40, 40, - 46, 41, 40, 40, 40, 40, 40, 40, - 40, 40, 46, 47, 48, 49, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 57, - 58, 59, 41, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 47, 48, 49, 41, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 48, 49, 41, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 49, 41, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 47, 48, 49, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 57, - 58, 59, 41, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 47, 48, 49, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 58, 59, 41, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 47, 48, 49, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 59, 41, 40, 40, 40, - 40, 40, 40, 40, 40, 46, 47, 48, - 49, 40, 40, 40, 40, 40, 40, 54, - 55, 56, 57, 58, 59, 40, 40, 40, - 46, 41, 40, 40, 40, 40, 40, 40, - 40, 40, 46, 47, 48, 49, 40, 40, - 40, 40, 40, 40, 40, 55, 56, 57, - 58, 59, 40, 40, 40, 46, 41, 40, - 40, 40, 40, 40, 40, 40, 40, 46, - 47, 48, 49, 40, 40, 40, 40, 40, - 40, 40, 40, 56, 57, 58, 59, 40, - 40, 40, 46, 41, 40, 40, 40, 40, - 40, 40, 40, 45, 46, 47, 48, 49, - 40, 51, 45, 40, 40, 40, 54, 55, - 56, 57, 58, 59, 40, 40, 40, 46, - 41, 40, 40, 40, 40, 40, 40, 40, - 45, 46, 47, 48, 49, 40, 64, 45, - 40, 40, 40, 54, 55, 56, 57, 58, - 59, 40, 40, 40, 46, 41, 40, 40, - 40, 40, 40, 40, 40, 45, 46, 47, - 48, 49, 40, 40, 45, 40, 40, 40, - 54, 55, 56, 57, 58, 59, 40, 40, - 40, 46, 41, 40, 40, 40, 40, 40, - 40, 40, 45, 46, 47, 48, 49, 50, - 51, 45, 40, 40, 40, 54, 55, 56, - 57, 58, 59, 40, 40, 40, 46, 41, - 42, 1, 40, 43, 40, 40, 40, 45, - 46, 47, 48, 49, 50, 51, 45, 52, - 40, 53, 54, 55, 56, 57, 58, 59, - 40, 40, 40, 60, 42, 62, 62, 62, - 41, 62, 62, 62, 63, 62, 62, 62, - 62, 46, 47, 48, 49, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 57, 58, - 59, 41, 42, 1, 40, 43, 40, 40, - 40, 45, 46, 47, 48, 49, 50, 51, - 45, 52, 44, 53, 54, 55, 56, 57, - 58, 59, 40, 40, 40, 60, 66, 65, - 65, 65, 67, 10, 66, 41, 42, 1, - 40, 43, 40, 40, 69, 45, 46, 47, - 48, 49, 50, 51, 45, 52, 44, 53, - 54, 55, 56, 57, 58, 59, 70, 71, - 40, 60, 41, 42, 1, 40, 43, 40, - 40, 40, 45, 46, 47, 48, 49, 50, - 51, 45, 52, 44, 53, 54, 55, 56, - 57, 58, 59, 70, 71, 40, 60, 70, - 71, 71, 12, 3, 6, 73, 74, 73, - 73, 75, 18, 19, 20, 21, 22, 23, - 24, 18, 25, 27, 27, 28, 29, 30, - 31, 32, 33, 73, 73, 73, 37, 12, - 3, 6, 73, 74, 73, 73, 73, 18, - 19, 20, 21, 22, 23, 24, 18, 25, - 27, 27, 28, 29, 30, 31, 32, 33, - 73, 73, 73, 37, 12, 73, 73, 73, - 73, 73, 73, 73, 18, 19, 20, 21, - 22, 73, 73, 73, 73, 73, 73, 28, - 29, 30, 31, 32, 33, 73, 73, 73, - 19, 12, 73, 73, 73, 73, 73, 73, - 73, 73, 19, 20, 21, 22, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 31, - 32, 33, 12, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 20, 21, 22, 12, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 21, 22, 12, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 22, 12, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 20, 21, 22, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 31, - 32, 33, 12, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 20, 21, 22, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 32, 33, 12, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 20, 21, 22, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 33, 12, 73, 73, 73, - 73, 73, 73, 73, 73, 19, 20, 21, - 22, 73, 73, 73, 73, 73, 73, 28, - 29, 30, 31, 32, 33, 73, 73, 73, - 19, 12, 73, 73, 73, 73, 73, 73, - 73, 73, 19, 20, 21, 22, 73, 73, - 73, 73, 73, 73, 73, 29, 30, 31, - 32, 33, 73, 73, 73, 19, 12, 73, - 73, 73, 73, 73, 73, 73, 73, 19, - 20, 21, 22, 73, 73, 73, 73, 73, - 73, 73, 73, 30, 31, 32, 33, 73, - 73, 73, 19, 12, 73, 73, 73, 73, - 73, 73, 73, 18, 19, 20, 21, 22, - 73, 24, 18, 73, 73, 73, 28, 29, - 30, 31, 32, 33, 73, 73, 73, 19, - 12, 73, 73, 73, 73, 73, 73, 73, - 18, 19, 20, 21, 22, 73, 76, 18, - 73, 73, 73, 28, 29, 30, 31, 32, - 33, 73, 73, 73, 19, 12, 73, 73, - 73, 73, 73, 73, 73, 18, 19, 20, - 21, 22, 73, 73, 18, 73, 73, 73, - 28, 29, 30, 31, 32, 33, 73, 73, - 73, 19, 12, 73, 73, 73, 73, 73, - 73, 73, 18, 19, 20, 21, 22, 23, - 24, 18, 73, 73, 73, 28, 29, 30, - 31, 32, 33, 73, 73, 73, 19, 12, - 3, 6, 73, 74, 73, 73, 73, 18, - 19, 20, 21, 22, 23, 24, 18, 25, - 73, 27, 28, 29, 30, 31, 32, 33, - 73, 73, 73, 37, 3, 73, 73, 73, - 12, 73, 73, 73, 4, 73, 73, 73, - 73, 19, 20, 21, 22, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 31, 32, - 33, 3, 77, 77, 77, 77, 77, 77, - 77, 4, 78, 14, 73, 73, 73, 79, - 14, 6, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, 6, 8, 73, 73, 8, - 12, 3, 6, 14, 74, 73, 73, 73, - 18, 19, 20, 21, 22, 23, 24, 18, - 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 73, 37, 12, 3, 6, - 73, 74, 73, 73, 73, 18, 19, 20, - 21, 22, 23, 24, 18, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 73, 73, - 73, 37, 34, 35, 35, 70, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 70, - 71, 8, 77, 77, 8, 0 + 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, + 4, 2, 3, 2, 6, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 6, 5, 7, 8, + 9, 7, 10, 11, 9, 9, 12, 9, + 9, 3, 13, 14, 9, 15, 7, 7, + 16, 17, 9, 9, 18, 19, 20, 21, + 22, 23, 24, 18, 25, 26, 27, 28, + 29, 30, 9, 31, 32, 33, 9, 34, + 35, 36, 37, 9, 39, 38, 41, 40, + 40, 42, 1, 40, 40, 43, 40, 40, + 40, 40, 40, 44, 45, 46, 47, 48, + 49, 50, 51, 45, 52, 44, 53, 54, + 55, 56, 40, 57, 58, 59, 40, 40, + 40, 40, 60, 40, 41, 40, 40, 42, + 1, 40, 40, 43, 40, 40, 40, 40, + 40, 61, 45, 46, 47, 48, 49, 50, + 51, 45, 52, 53, 53, 54, 55, 56, + 40, 57, 58, 59, 40, 40, 40, 40, + 60, 40, 42, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, + 63, 62, 42, 62, 41, 40, 40, 42, + 1, 40, 40, 43, 40, 40, 40, 40, + 40, 40, 45, 46, 47, 48, 49, 50, + 51, 45, 52, 53, 53, 54, 55, 56, + 40, 57, 58, 59, 40, 40, 40, 40, + 60, 40, 41, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 45, 46, 47, 48, 49, 40, 40, 40, + 40, 40, 40, 54, 55, 56, 40, 57, + 58, 59, 40, 40, 40, 40, 46, 40, + 41, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 46, + 47, 48, 49, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 57, 58, 59, + 40, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 47, 48, 49, 40, 41, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 48, 49, + 40, 41, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 49, 40, 41, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 47, 48, 49, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 57, 58, 59, 40, 41, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 47, 48, + 49, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 58, 59, 40, 41, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 47, + 48, 49, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 59, 40, + 41, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 46, + 47, 48, 49, 40, 40, 40, 40, 40, + 40, 54, 55, 56, 40, 57, 58, 59, + 40, 40, 40, 40, 46, 40, 41, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 46, 47, 48, + 49, 40, 40, 40, 40, 40, 40, 40, + 55, 56, 40, 57, 58, 59, 40, 40, + 40, 40, 46, 40, 41, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 46, 47, 48, 49, 40, + 40, 40, 40, 40, 40, 40, 40, 56, + 40, 57, 58, 59, 40, 40, 40, 40, + 46, 40, 41, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 45, 46, 47, 48, 49, 40, 51, 45, + 40, 40, 40, 54, 55, 56, 40, 57, + 58, 59, 40, 40, 40, 40, 46, 40, + 41, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 45, 46, + 47, 48, 49, 40, 64, 45, 40, 40, + 40, 54, 55, 56, 40, 57, 58, 59, + 40, 40, 40, 40, 46, 40, 41, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 45, 46, 47, 48, + 49, 40, 40, 45, 40, 40, 40, 54, + 55, 56, 40, 57, 58, 59, 40, 40, + 40, 40, 46, 40, 41, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 45, 46, 47, 48, 49, 50, + 51, 45, 40, 40, 40, 54, 55, 56, + 40, 57, 58, 59, 40, 40, 40, 40, + 46, 40, 41, 40, 40, 42, 1, 40, + 40, 43, 40, 40, 40, 40, 40, 40, + 45, 46, 47, 48, 49, 50, 51, 45, + 52, 40, 53, 54, 55, 56, 40, 57, + 58, 59, 40, 40, 40, 40, 60, 40, + 42, 62, 62, 62, 62, 62, 62, 41, + 62, 62, 62, 62, 62, 62, 63, 62, + 62, 62, 62, 62, 62, 62, 46, 47, + 48, 49, 62, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 57, 58, 59, 62, + 41, 40, 40, 42, 1, 40, 40, 43, + 40, 40, 40, 40, 40, 40, 45, 46, + 47, 48, 49, 50, 51, 45, 52, 44, + 53, 54, 55, 56, 40, 57, 58, 59, + 40, 40, 40, 40, 60, 40, 66, 65, + 65, 65, 65, 65, 65, 65, 67, 65, + 10, 68, 66, 65, 41, 40, 40, 42, + 1, 40, 40, 43, 40, 40, 40, 40, + 40, 69, 45, 46, 47, 48, 49, 50, + 51, 45, 52, 44, 53, 54, 55, 56, + 40, 57, 58, 59, 40, 70, 71, 40, + 60, 40, 41, 40, 40, 42, 1, 40, + 40, 43, 40, 40, 40, 40, 40, 40, + 45, 46, 47, 48, 49, 50, 51, 45, + 52, 44, 53, 54, 55, 56, 40, 57, + 58, 59, 40, 70, 71, 40, 60, 40, + 70, 71, 72, 71, 72, 12, 73, 73, + 3, 6, 73, 73, 74, 73, 73, 73, + 73, 73, 75, 18, 19, 20, 21, 22, + 23, 24, 18, 25, 27, 27, 28, 29, + 30, 73, 31, 32, 33, 73, 73, 73, + 73, 37, 73, 12, 73, 73, 3, 6, + 73, 73, 74, 73, 73, 73, 73, 73, + 73, 18, 19, 20, 21, 22, 23, 24, + 18, 25, 27, 27, 28, 29, 30, 73, + 31, 32, 33, 73, 73, 73, 73, 37, + 73, 12, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 18, + 19, 20, 21, 22, 73, 73, 73, 73, + 73, 73, 28, 29, 30, 73, 31, 32, + 33, 73, 73, 73, 73, 19, 73, 12, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 19, 20, + 21, 22, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 31, 32, 33, 73, + 12, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 20, 21, 22, 73, 12, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 21, 22, 73, + 12, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 22, 73, 12, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 20, 21, 22, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 31, 32, 33, 73, 12, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 20, 21, 22, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 32, 33, 73, 12, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 20, 21, + 22, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 33, 73, 12, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 19, 20, + 21, 22, 73, 73, 73, 73, 73, 73, + 28, 29, 30, 73, 31, 32, 33, 73, + 73, 73, 73, 19, 73, 12, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 19, 20, 21, 22, + 73, 73, 73, 73, 73, 73, 73, 29, + 30, 73, 31, 32, 33, 73, 73, 73, + 73, 19, 73, 12, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 19, 20, 21, 22, 73, 73, + 73, 73, 73, 73, 73, 73, 30, 73, + 31, 32, 33, 73, 73, 73, 73, 19, + 73, 12, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 18, + 19, 20, 21, 22, 73, 24, 18, 73, + 73, 73, 28, 29, 30, 73, 31, 32, + 33, 73, 73, 73, 73, 19, 73, 12, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 18, 19, 20, + 21, 22, 73, 76, 18, 73, 73, 73, + 28, 29, 30, 73, 31, 32, 33, 73, + 73, 73, 73, 19, 73, 12, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 18, 19, 20, 21, 22, + 73, 73, 18, 73, 73, 73, 28, 29, + 30, 73, 31, 32, 33, 73, 73, 73, + 73, 19, 73, 12, 73, 73, 73, 73, + 73, 73, 73, 73, 73, 73, 73, 73, + 73, 18, 19, 20, 21, 22, 23, 24, + 18, 73, 73, 73, 28, 29, 30, 73, + 31, 32, 33, 73, 73, 73, 73, 19, + 73, 12, 73, 73, 3, 6, 73, 73, + 74, 73, 73, 73, 73, 73, 73, 18, + 19, 20, 21, 22, 23, 24, 18, 25, + 73, 27, 28, 29, 30, 73, 31, 32, + 33, 73, 73, 73, 73, 37, 73, 3, + 73, 73, 73, 73, 73, 73, 12, 73, + 73, 73, 73, 73, 73, 4, 73, 73, + 73, 73, 73, 73, 73, 19, 20, 21, + 22, 73, 73, 73, 73, 73, 73, 73, + 73, 73, 73, 31, 32, 33, 73, 3, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 4, 77, 78, + 73, 14, 73, 73, 73, 73, 73, 73, + 73, 79, 73, 14, 73, 6, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 77, 77, 77, + 77, 77, 77, 77, 77, 6, 77, 8, + 73, 73, 73, 8, 73, 73, 12, 73, + 73, 3, 6, 14, 73, 74, 73, 73, + 73, 73, 73, 73, 18, 19, 20, 21, + 22, 23, 24, 18, 25, 26, 27, 28, + 29, 30, 73, 31, 32, 33, 73, 34, + 35, 73, 37, 73, 12, 73, 73, 3, + 6, 73, 73, 74, 73, 73, 73, 73, + 73, 73, 18, 19, 20, 21, 22, 23, + 24, 18, 25, 26, 27, 28, 29, 30, + 73, 31, 32, 33, 73, 73, 73, 73, + 37, 73, 34, 35, 73, 35, 73, 70, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 72, 72, 72, 72, 72, + 72, 72, 72, 70, 71, 72, 8, 77, + 77, 77, 8, 77, 0 }; -static const char _use_syllable_machine_index_defaults[] = { - 0, 2, 2, 5, 9, 38, 40, 40, - 62, 62, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 62, 40, 65, 68, 65, - 40, 40, 72, 72, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 73, - 73, 73, 73, 73, 73, 73, 73, 77, - 73, 73, 73, 77, 73, 73, 73, 73, - 72, 77, 0 +static const char _use_syllable_machine_trans_targs[] = { + 4, 8, 4, 36, 2, 4, 1, 5, + 6, 4, 29, 32, 4, 55, 56, 59, + 60, 64, 38, 39, 40, 41, 42, 49, + 50, 52, 61, 53, 46, 47, 48, 43, + 44, 45, 62, 63, 65, 54, 4, 4, + 4, 4, 7, 0, 28, 11, 12, 13, + 14, 15, 22, 23, 25, 26, 19, 20, + 21, 16, 17, 18, 27, 10, 4, 9, + 24, 4, 30, 31, 4, 33, 34, 35, + 4, 4, 3, 37, 51, 4, 57, 58 }; -static const char _use_syllable_machine_trans_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - 0 -}; - -static const char _use_syllable_machine_cond_targs[] = { - 4, 8, 4, 36, 2, 4, 1, 5, - 6, 4, 29, 32, 4, 55, 56, 59, - 60, 64, 38, 39, 40, 41, 42, 49, - 50, 52, 61, 53, 46, 47, 48, 43, - 44, 45, 62, 63, 65, 54, 4, 4, - 4, 4, 7, 0, 28, 11, 12, 13, - 14, 15, 22, 23, 25, 26, 19, 20, - 21, 16, 17, 18, 27, 10, 4, 9, - 24, 4, 30, 31, 4, 33, 34, 35, - 4, 4, 3, 37, 51, 4, 57, 58, - 0 -}; - -static const char _use_syllable_machine_cond_actions[] = { - 1, 0, 2, 3, 0, 4, 0, 0, - 7, 8, 0, 7, 9, 10, 0, 10, - 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 3, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3, 11, 12, - 13, 14, 7, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 7, 0, 0, - 0, 0, 0, 0, 0, 7, 15, 0, - 0, 16, 0, 0, 17, 7, 0, 0, - 18, 19, 0, 3, 0, 20, 0, 0, - 0 +static const char _use_syllable_machine_trans_actions[] = { + 1, 0, 2, 3, 0, 4, 0, 0, + 7, 8, 0, 7, 9, 10, 0, 10, + 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3, 11, 12, + 13, 14, 7, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 7, 0, 0, + 0, 0, 0, 0, 0, 7, 15, 0, + 0, 16, 0, 0, 17, 7, 0, 0, + 18, 19, 0, 3, 0, 20, 0, 0 }; static const char _use_syllable_machine_to_state_actions[] = { - 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 + 0, 0, 0, 0, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0 }; static const char _use_syllable_machine_from_state_actions[] = { - 0, 0, 0, 0, 6, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _use_syllable_machine_eof_cond_spaces[] = { - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 0 -}; - -static const char _use_syllable_machine_eof_cond_key_offs[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _use_syllable_machine_eof_cond_key_lens[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _use_syllable_machine_eof_cond_keys[] = { - 0 -}; - -static const char _use_syllable_machine_eof_trans[] = { - 1, 3, 3, 6, 0, 39, 41, 41, - 63, 63, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 63, 41, 66, 69, 66, - 41, 41, 73, 73, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 74, - 74, 74, 74, 74, 74, 74, 74, 78, - 74, 74, 74, 78, 74, 74, 74, 74, - 73, 78, 0 -}; - -static const char _use_syllable_machine_nfa_targs[] = { + 0, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -static const char _use_syllable_machine_nfa_offsets[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0 -}; - -static const char _use_syllable_machine_nfa_push_actions[] = { - 0, 0 -}; - -static const char _use_syllable_machine_nfa_pop_trans[] = { - 0, 0 +static const short _use_syllable_machine_eof_trans[] = { + 1, 3, 3, 6, 0, 39, 41, 41, + 63, 63, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 63, 41, 66, 69, 66, + 41, 41, 73, 73, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 74, 74, 74, 74, 74, 78, + 74, 74, 74, 78, 74, 74, 74, 74, + 73, 78 }; static const int use_syllable_machine_start = 4; @@ -405,292 +369,188 @@ static const int use_syllable_machine_error = -1; static const int use_syllable_machine_en_main = 4; +#line 38 "hb-ot-shape-complex-use-machine.rl" +#line 146 "hb-ot-shape-complex-use-machine.rl" + + #define found_syllable(syllable_type) \ -HB_STMT_START { \ - if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ - for (unsigned int i = ts; i < te; i++) \ - info[i].syllable() = (syllable_serial << 4) | syllable_type; \ - syllable_serial++; \ - if (unlikely (syllable_serial == 16)) syllable_serial=1; \ -} HB_STMT_END + HB_STMT_START { \ + if (0) fprintf (stderr, "syllable %d..%d %s\n", ts, te, #syllable_type); \ + for (unsigned int i = ts; i < te; i++) \ + info[i].syllable() = (syllable_serial << 4) | syllable_type; \ + syllable_serial++; \ + if (unlikely (syllable_serial == 16)) syllable_serial = 1; \ + } HB_STMT_END static void find_syllables (hb_buffer_t *buffer) { - unsigned int p, pe, eof, ts, te, act; - int cs; - hb_glyph_info_t *info = buffer->info; - + unsigned int p, pe, eof, ts, te, act; + int cs; + hb_glyph_info_t *info = buffer->info; + +#line 396 "hb-ot-shape-complex-use-machine.hh" { - cs = (int)use_syllable_machine_start; - ts = 0; - te = 0; - act = 0; + cs = use_syllable_machine_start; + ts = 0; + te = 0; + act = 0; } - - - p=0; - pe = eof = buffer->len; - - unsigned int syllable_serial=1; - + +#line 166 "hb-ot-shape-complex-use-machine.rl" + + + p = 0; + pe = eof = buffer->len; + + unsigned int syllable_serial = 1; + +#line 412 "hb-ot-shape-complex-use-machine.hh" { - int _cpc; - int _klen;const char * _cekeys;unsigned int _trans = 0;const unsigned char * _keys;const char * _inds; { - if ( p == pe ) - goto _test_eof; - _resume: { - switch ( _use_syllable_machine_from_state_actions[cs] ) { - case 6: { - { - #line 1 "NONE" - {ts = p;}} - - break; } - } - - _keys = ( _use_syllable_machine_trans_keys + ((cs<<1))); - _inds = ( _use_syllable_machine_indicies + (_use_syllable_machine_index_offsets[cs])); - - if ( (info[p].use_category()) <= 44 ) - { - int _ic = (int)_use_syllable_machine_char_class[(int)(info[p].use_category()) - 0]; - if ( _ic <= (int)(*( _keys+1)) && _ic >= (int)(*( _keys)) ) - _trans = (unsigned int)(*( _inds + (int)( _ic - (int)(*( _keys)) ) )); - else - _trans = (unsigned int)_use_syllable_machine_index_defaults[cs]; - } - else { - _trans = (unsigned int)_use_syllable_machine_index_defaults[cs]; - } - - goto _match_cond; - } - _match_cond: { - cs = (int)_use_syllable_machine_cond_targs[_trans]; - - if ( _use_syllable_machine_cond_actions[_trans] == 0 ) - goto _again; - - switch ( _use_syllable_machine_cond_actions[_trans] ) { - case 7: { - { - #line 1 "NONE" - {te = p+1;}} - - break; } - case 12: { - { - #line 135 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ - #line 135 "hb-ot-shape-complex-use-machine.rl" - found_syllable (independent_cluster); }}} - - break; } - case 14: { - { - #line 137 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ - #line 137 "hb-ot-shape-complex-use-machine.rl" - found_syllable (standard_cluster); }}} - - break; } - case 9: { - { - #line 141 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ - #line 141 "hb-ot-shape-complex-use-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 8: { - { - #line 142 "hb-ot-shape-complex-use-machine.rl" - {te = p+1;{ - #line 142 "hb-ot-shape-complex-use-machine.rl" - found_syllable (non_cluster); }}} - - break; } - case 11: { - { - #line 135 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 135 "hb-ot-shape-complex-use-machine.rl" - found_syllable (independent_cluster); }}} - - break; } - case 15: { - { - #line 136 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 136 "hb-ot-shape-complex-use-machine.rl" - found_syllable (virama_terminated_cluster); }}} - - break; } - case 13: { - { - #line 137 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 137 "hb-ot-shape-complex-use-machine.rl" - found_syllable (standard_cluster); }}} - - break; } - case 17: { - { - #line 138 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 138 "hb-ot-shape-complex-use-machine.rl" - found_syllable (number_joiner_terminated_cluster); }}} - - break; } - case 16: { - { - #line 139 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 139 "hb-ot-shape-complex-use-machine.rl" - found_syllable (numeral_cluster); }}} - - break; } - case 18: { - { - #line 140 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 140 "hb-ot-shape-complex-use-machine.rl" - found_syllable (symbol_cluster); }}} - - break; } - case 19: { - { - #line 141 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 141 "hb-ot-shape-complex-use-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 20: { - { - #line 142 "hb-ot-shape-complex-use-machine.rl" - {te = p;p = p - 1;{ - #line 142 "hb-ot-shape-complex-use-machine.rl" - found_syllable (non_cluster); }}} - - break; } - case 1: { - { - #line 137 "hb-ot-shape-complex-use-machine.rl" - {p = ((te))-1; - { - #line 137 "hb-ot-shape-complex-use-machine.rl" - found_syllable (standard_cluster); }}} - - break; } - case 4: { - { - #line 141 "hb-ot-shape-complex-use-machine.rl" - {p = ((te))-1; - { - #line 141 "hb-ot-shape-complex-use-machine.rl" - found_syllable (broken_cluster); }}} - - break; } - case 2: { - { - #line 1 "NONE" - {switch( act ) { - case 7: { - p = ((te))-1; - { - #line 141 "hb-ot-shape-complex-use-machine.rl" - found_syllable (broken_cluster); } break; } - case 8: { - p = ((te))-1; - { - #line 142 "hb-ot-shape-complex-use-machine.rl" - found_syllable (non_cluster); } break; } - }} - } - - break; } - case 3: { - { - #line 1 "NONE" - {te = p+1;}} - { - #line 141 "hb-ot-shape-complex-use-machine.rl" - {act = 7;}} - - break; } - case 10: { - { - #line 1 "NONE" - {te = p+1;}} - { - #line 142 "hb-ot-shape-complex-use-machine.rl" - {act = 8;}} - - break; } - } - - - } - _again: { - switch ( _use_syllable_machine_to_state_actions[cs] ) { - case 5: { - { - #line 1 "NONE" - {ts = 0;}} - - break; } - } - - p += 1; - if ( p != pe ) - goto _resume; - } - _test_eof: { {} - if ( p == eof ) - { - if ( _use_syllable_machine_eof_cond_spaces[cs] != -1 ) { - _cekeys = ( _use_syllable_machine_eof_cond_keys + (_use_syllable_machine_eof_cond_key_offs[cs])); - _klen = (int)_use_syllable_machine_eof_cond_key_lens[cs]; - _cpc = 0; - { - const char *_lower = _cekeys; - const char *_upper = _cekeys + _klen - 1; - const char *_mid; - while ( 1 ) { - if ( _upper < _lower ) - break; - - _mid = _lower + ((_upper-_lower) >> 1); - if ( _cpc < (int)(*( _mid)) ) - _upper = _mid - 1; - else if ( _cpc > (int)(*( _mid)) ) - _lower = _mid + 1; - else { - goto _ok; - } - } - cs = -1; - goto _out; - } - _ok: {} - } - if ( _use_syllable_machine_eof_trans[cs] > 0 ) { - _trans = (unsigned int)_use_syllable_machine_eof_trans[cs] - 1; - goto _match_cond; - } - } - - } - _out: { {} - } - } + int _slen; + int _trans; + const unsigned char *_keys; + const char *_inds; + if ( p == pe ) + goto _test_eof; +_resume: + switch ( _use_syllable_machine_from_state_actions[cs] ) { + case 6: +#line 1 "NONE" + {ts = p;} + break; +#line 426 "hb-ot-shape-complex-use-machine.hh" } - + + _keys = _use_syllable_machine_trans_keys + (cs<<1); + _inds = _use_syllable_machine_indicies + _use_syllable_machine_index_offsets[cs]; + + _slen = _use_syllable_machine_key_spans[cs]; + _trans = _inds[ _slen > 0 && _keys[0] <=( info[p].use_category()) && + ( info[p].use_category()) <= _keys[1] ? + ( info[p].use_category()) - _keys[0] : _slen ]; + +_eof_trans: + cs = _use_syllable_machine_trans_targs[_trans]; + + if ( _use_syllable_machine_trans_actions[_trans] == 0 ) + goto _again; + + switch ( _use_syllable_machine_trans_actions[_trans] ) { + case 7: +#line 1 "NONE" + {te = p+1;} + break; + case 12: +#line 135 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ found_syllable (independent_cluster); }} + break; + case 14: +#line 137 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ found_syllable (standard_cluster); }} + break; + case 9: +#line 141 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ found_syllable (broken_cluster); }} + break; + case 8: +#line 142 "hb-ot-shape-complex-use-machine.rl" + {te = p+1;{ found_syllable (non_cluster); }} + break; + case 11: +#line 135 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (independent_cluster); }} + break; + case 15: +#line 136 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (virama_terminated_cluster); }} + break; + case 13: +#line 137 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (standard_cluster); }} + break; + case 17: +#line 138 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (number_joiner_terminated_cluster); }} + break; + case 16: +#line 139 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (numeral_cluster); }} + break; + case 18: +#line 140 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (symbol_cluster); }} + break; + case 19: +#line 141 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (broken_cluster); }} + break; + case 20: +#line 142 "hb-ot-shape-complex-use-machine.rl" + {te = p;p--;{ found_syllable (non_cluster); }} + break; + case 1: +#line 137 "hb-ot-shape-complex-use-machine.rl" + {{p = ((te))-1;}{ found_syllable (standard_cluster); }} + break; + case 4: +#line 141 "hb-ot-shape-complex-use-machine.rl" + {{p = ((te))-1;}{ found_syllable (broken_cluster); }} + break; + case 2: +#line 1 "NONE" + { switch( act ) { + case 7: + {{p = ((te))-1;} found_syllable (broken_cluster); } + break; + case 8: + {{p = ((te))-1;} found_syllable (non_cluster); } + break; + } + } + break; + case 3: +#line 1 "NONE" + {te = p+1;} +#line 141 "hb-ot-shape-complex-use-machine.rl" + {act = 7;} + break; + case 10: +#line 1 "NONE" + {te = p+1;} +#line 142 "hb-ot-shape-complex-use-machine.rl" + {act = 8;} + break; +#line 528 "hb-ot-shape-complex-use-machine.hh" + } + +_again: + switch ( _use_syllable_machine_to_state_actions[cs] ) { + case 5: +#line 1 "NONE" + {ts = 0;} + break; +#line 537 "hb-ot-shape-complex-use-machine.hh" + } + + if ( ++p != pe ) + goto _resume; + _test_eof: {} + if ( p == eof ) + { + if ( _use_syllable_machine_eof_trans[cs] > 0 ) { + _trans = _use_syllable_machine_eof_trans[cs] - 1; + goto _eof_trans; + } + } + + } + +#line 174 "hb-ot-shape-complex-use-machine.rl" + } #undef found_syllable