# -*- encoding:utf-8; warn-indent:false -*- # line 1 "lib/parser/lexer.rl" # line 3 "lib/parser/lexer.rl" # # === BEFORE YOU START === # # Read the Ruby Hacking Guide chapter 11, available in English at # http://whitequark.org/blog/2013/04/01/ruby-hacking-guide-ch-11-finite-state-lexer/ # # Remember two things about Ragel scanners: # # 1) Longest match wins. # # 2) If two matches have the same length, the first # in source code wins. # # General rules of making Ragel and Bison happy: # # * `p` (position) and `@te` contain the index of the character # they're pointing to ("current"), plus one. `@ts` contains the index # of the corresponding character. The code for extracting matched token is: # # @source[@ts...@te] # # * If your input is `foooooooobar` and the rule is: # # 'f' 'o'+ # # the result will be: # # foooooooobar # ^ ts=0 ^ p=te=9 # # * A Ragel lexer action should not emit more than one token, unless # you know what you are doing. # # * All Ragel commands (fnext, fgoto, ...) end with a semicolon. # # * If an action emits the token and transitions to another state, use # these Ragel commands: # # emit($whatever) # fnext $next_state; fbreak; # # If you perform `fgoto` in an action which does not emit a token nor # rewinds the stream pointer, the parser's side-effectful, # context-sensitive lookahead actions will break in a hard to detect # and debug way. # # * If an action does not emit a token: # # fgoto $next_state; # # * If an action features lookbehind, i.e. matches characters with the # intent of passing them to another action: # # p = @ts - 1 # fgoto $next_state; # # or, if the lookbehind consists of a single character: # # fhold; fgoto $next_state; # # * Ragel merges actions. So, if you have `e_lparen = '(' %act` and # `c_lparen = '('` and a lexer action `e_lparen | c_lparen`, the result # _will_ invoke the action `act`. # # e_something stands for "something with **e**mbedded action". # # * EOF is explicit and is matched by `c_eof`. If you want to introspect # the state of the lexer, add this rule to the state: # # c_eof => do_eof; # # * If you proceed past EOF, the lexer will complain: # # NoMethodError: undefined method `ord' for nil:NilClass # class Parser::Lexer # line 85 "lib/parser/lexer.rb" class << self attr_accessor :_lex_actions private :_lex_actions, :_lex_actions= end self._lex_actions = [ 0, 1, 0, 1, 16, 1, 17, 1, 20, 1, 21, 1, 34, 1, 35, 1, 37, 1, 38, 1, 39, 1, 40, 1, 42, 1, 43, 1, 44, 1, 45, 1, 46, 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1, 52, 1, 53, 1, 55, 1, 56, 1, 57, 1, 58, 1, 59, 1, 60, 1, 61, 1, 62, 1, 63, 1, 65, 1, 66, 1, 67, 1, 69, 1, 70, 1, 71, 1, 72, 1, 75, 1, 76, 1, 77, 1, 78, 1, 79, 1, 80, 1, 81, 1, 82, 1, 83, 1, 84, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 1, 94, 1, 95, 1, 96, 1, 97, 1, 98, 1, 99, 1, 100, 1, 101, 1, 102, 1, 103, 1, 104, 1, 105, 1, 106, 1, 108, 1, 109, 1, 110, 1, 111, 1, 112, 1, 113, 1, 115, 1, 116, 1, 117, 1, 118, 1, 120, 1, 121, 1, 122, 1, 123, 1, 129, 1, 130, 1, 131, 1, 132, 1, 134, 1, 135, 1, 140, 1, 141, 1, 142, 1, 143, 1, 144, 1, 145, 1, 146, 1, 147, 1, 148, 1, 149, 1, 150, 1, 152, 1, 153, 1, 155, 1, 156, 1, 157, 1, 158, 1, 161, 1, 162, 1, 163, 1, 164, 1, 165, 1, 172, 1, 173, 1, 174, 1, 175, 1, 176, 1, 177, 1, 178, 1, 179, 1, 180, 1, 181, 1, 182, 1, 183, 1, 185, 1, 186, 1, 187, 1, 188, 1, 189, 1, 192, 1, 193, 1, 194, 1, 195, 1, 197, 1, 199, 1, 200, 1, 201, 1, 202, 1, 203, 1, 204, 1, 205, 1, 206, 1, 207, 1, 209, 1, 210, 1, 211, 1, 212, 1, 213, 1, 227, 1, 230, 1, 231, 1, 232, 1, 233, 1, 235, 1, 236, 1, 239, 1, 240, 1, 241, 1, 242, 1, 243, 1, 245, 1, 246, 1, 248, 1, 249, 1, 251, 1, 252, 1, 253, 1, 255, 1, 258, 1, 259, 1, 260, 1, 261, 1, 262, 1, 263, 1, 264, 1, 265, 1, 266, 1, 267, 1, 268, 1, 269, 1, 271, 1, 272, 1, 273, 1, 274, 1, 275, 1, 277, 1, 278, 1, 279, 1, 280, 1, 281, 1, 282, 1, 283, 1, 284, 2, 0, 17, 2, 0, 61, 2, 0, 73, 2, 0, 75, 2, 0, 131, 2, 0, 132, 2, 0, 180, 2, 0, 185, 2, 0, 270, 2, 0, 277, 2, 0, 278, 2, 1, 54, 2, 1, 64, 2, 1, 193, 2, 2, 54, 2, 2, 64, 2, 2, 193, 2, 3, 54, 2, 3, 64, 2, 3, 193, 2, 7, 54, 2, 7, 64, 2, 7, 193, 2, 9, 54, 2, 9, 64, 2, 9, 193, 2, 10, 54, 2, 10, 64, 2, 10, 193, 2, 11, 54, 2, 11, 64, 2, 11, 193, 2, 12, 54, 2, 12, 64, 2, 12, 193, 2, 13, 54, 2, 13, 64, 2, 13, 193, 2, 14, 54, 2, 14, 64, 2, 14, 193, 2, 15, 54, 2, 15, 64, 2, 15, 193, 2, 16, 68, 2, 16, 74, 2, 17, 21, 2, 18, 139, 2, 18, 154, 2, 18, 196, 2, 18, 244, 2, 19, 256, 2, 20, 21, 2, 21, 17, 2, 21, 102, 2, 21, 110, 2, 21, 121, 2, 21, 155, 2, 21, 163, 2, 21, 200, 2, 21, 211, 2, 21, 259, 2, 21, 281, 2, 22, 119, 2, 22, 191, 2, 22, 198, 2, 22, 254, 2, 22, 265, 2, 23, 119, 2, 23, 191, 2, 23, 198, 2, 23, 254, 2, 24, 119, 2, 24, 191, 2, 24, 198, 2, 25, 119, 2, 25, 191, 2, 25, 198, 2, 26, 119, 2, 26, 191, 2, 26, 198, 2, 27, 119, 2, 27, 191, 2, 27, 198, 2, 28, 119, 2, 28, 191, 2, 28, 198, 2, 29, 191, 2, 30, 250, 2, 31, 138, 2, 31, 196, 2, 31, 257, 2, 32, 45, 2, 32, 136, 2, 32, 137, 2, 32, 196, 2, 33, 256, 2, 35, 0, 2, 36, 190, 2, 37, 43, 2, 38, 43, 2, 39, 43, 2, 40, 43, 2, 41, 43, 2, 42, 43, 2, 43, 228, 2, 43, 247, 2, 44, 229, 2, 44, 248, 2, 45, 0, 2, 45, 234, 2, 45, 255, 2, 48, 0, 2, 48, 41, 2, 48, 85, 2, 48, 86, 2, 48, 87, 2, 48, 124, 2, 48, 125, 2, 48, 126, 2, 48, 128, 2, 48, 166, 2, 48, 167, 2, 48, 168, 2, 48, 169, 2, 48, 170, 2, 48, 171, 2, 48, 214, 2, 48, 215, 2, 48, 216, 2, 48, 217, 2, 48, 218, 2, 48, 219, 2, 48, 220, 2, 48, 221, 2, 48, 223, 2, 48, 224, 2, 48, 225, 2, 48, 226, 2, 129, 0, 3, 0, 17, 93, 3, 0, 17, 107, 3, 0, 17, 114, 3, 0, 17, 133, 3, 0, 17, 151, 3, 0, 17, 159, 3, 0, 17, 160, 3, 0, 17, 184, 3, 0, 17, 208, 3, 0, 17, 237, 3, 0, 17, 238, 3, 0, 17, 276, 3, 0, 73, 16, 3, 2, 4, 54, 3, 2, 4, 64, 3, 2, 4, 193, 3, 2, 5, 54, 3, 2, 5, 64, 3, 2, 5, 193, 3, 6, 5, 54, 3, 6, 5, 64, 3, 6, 5, 193, 3, 7, 5, 54, 3, 7, 5, 64, 3, 7, 5, 193, 3, 8, 4, 54, 3, 8, 4, 64, 3, 8, 4, 193, 3, 13, 14, 54, 3, 13, 14, 64, 3, 13, 14, 193, 3, 20, 21, 17, 3, 20, 21, 102, 3, 20, 21, 110, 3, 20, 21, 121, 3, 20, 21, 155, 3, 20, 21, 163, 3, 20, 21, 200, 3, 20, 21, 211, 3, 20, 21, 259, 3, 20, 21, 281, 3, 32, 45, 0, 3, 32, 45, 255, 3, 37, 43, 228, 3, 37, 43, 247, 3, 38, 43, 228, 3, 38, 43, 247, 3, 39, 43, 228, 3, 39, 43, 247, 3, 40, 43, 228, 3, 40, 43, 247, 3, 41, 43, 228, 3, 41, 43, 247, 3, 42, 43, 228, 3, 42, 43, 247, 3, 48, 0, 17, 3, 48, 17, 128, 3, 48, 34, 125, 3, 48, 43, 222, 3, 48, 44, 223, 3, 48, 44, 226, 4, 2, 4, 5, 54, 4, 2, 4, 5, 64, 4, 2, 4, 5, 193, 4, 8, 4, 5, 54, 4, 8, 4, 5, 64, 4, 8, 4, 5, 193, 4, 21, 0, 17, 133, 4, 48, 41, 43, 222, 4, 48, 42, 43, 222, 5, 20, 21, 0, 17, 133, 5, 48, 0, 17, 21, 127 ] class << self attr_accessor :_lex_key_offsets private :_lex_key_offsets, :_lex_key_offsets= end self._lex_key_offsets = [ 0, 0, 1, 2, 3, 4, 12, 13, 14, 15, 16, 17, 18, 23, 24, 46, 55, 65, 74, 78, 84, 88, 93, 98, 101, 106, 111, 115, 123, 126, 130, 132, 133, 134, 140, 146, 156, 160, 172, 182, 192, 204, 216, 228, 240, 252, 264, 276, 285, 307, 316, 326, 335, 339, 345, 349, 354, 359, 362, 367, 372, 376, 384, 387, 391, 393, 394, 395, 401, 407, 417, 421, 433, 443, 453, 465, 477, 489, 501, 513, 525, 537, 546, 568, 577, 587, 596, 605, 606, 616, 617, 618, 649, 659, 669, 679, 686, 688, 689, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 726, 727, 728, 729, 730, 731, 732, 733, 737, 738, 739, 740, 741, 742, 750, 757, 758, 780, 789, 792, 800, 807, 808, 819, 832, 836, 841, 845, 850, 859, 864, 874, 878, 884, 888, 893, 898, 901, 906, 911, 915, 923, 926, 930, 932, 933, 934, 940, 946, 956, 960, 972, 982, 992, 1004, 1016, 1028, 1040, 1052, 1064, 1076, 1085, 1098, 1112, 1126, 1140, 1154, 1155, 1165, 1169, 1170, 1179, 1181, 1183, 1192, 1193, 1198, 1199, 1204, 1208, 1209, 1210, 1222, 1226, 1230, 1234, 1238, 1239, 1240, 1242, 1243, 1253, 1257, 1261, 1264, 1273, 1275, 1285, 1285, 1285, 1287, 1289, 1289, 1289, 1294, 1294, 1294, 1294, 1299, 1300, 1300, 1300, 1300, 1305, 1306, 1307, 1311, 1316, 1320, 1320, 1320, 1324, 1325, 1329, 1331, 1336, 1339, 1349, 1352, 1355, 1358, 1358, 1367, 1376, 1385, 1385, 1395, 1405, 1415, 1425, 1425, 1429, 1429, 1433, 1436, 1448, 1458, 1458, 1461, 1461, 1467, 1467, 1474, 1475, 1478, 1487, 1489, 1499, 1499, 1499, 1501, 1503, 1503, 1503, 1508, 1508, 1508, 1508, 1513, 1514, 1514, 1514, 1514, 1519, 1520, 1521, 1525, 1530, 1534, 1534, 1534, 1538, 1539, 1543, 1545, 1550, 1553, 1563, 1566, 1569, 1572, 1572, 1581, 1590, 1599, 1599, 1609, 1619, 1629, 1639, 1639, 1643, 1643, 1647, 1650, 1662, 1672, 1672, 1675, 1675, 1681, 1681, 1690, 1694, 1698, 1701, 1707, 1708, 1713, 1714, 1718, 1722, 1724, 1733, 1735, 1744, 1753, 1808, 1820, 1824, 1828, 1830, 1834, 1838, 1860, 1869, 1871, 1872, 1873, 1874, 1875, 1877, 1878, 1881, 1882, 1884, 1896, 1909, 1922, 1935, 1948, 1961, 1974, 1975, 1977, 1989, 2004, 2017, 2030, 2043, 2056, 2069, 2082, 2095, 2107, 2119, 2132, 2145, 2158, 2171, 2184, 2198, 2211, 2224, 2237, 2250, 2264, 2277, 2290, 2303, 2316, 2329, 2342, 2356, 2369, 2382, 2395, 2408, 2422, 2435, 2448, 2461, 2474, 2487, 2499, 2513, 2526, 2540, 2553, 2567, 2580, 2593, 2607, 2620, 2633, 2647, 2660, 2673, 2686, 2699, 2714, 2727, 2740, 2753, 2766, 2781, 2794, 2807, 2820, 2834, 2847, 2860, 2874, 2887, 2900, 2913, 2927, 2940, 2953, 2968, 2981, 2994, 3007, 3020, 3034, 3047, 3060, 3073, 3074, 3092, 3102, 3106, 3110, 3114, 3116, 3150, 3162, 3163, 3163, 3166, 3167, 3167, 3167, 3167, 3167, 3171, 3175, 3177, 3181, 3185, 3186, 3187, 3188, 3190, 3191, 3194, 3195, 3197, 3206, 3207, 3209, 3210, 3240, 3271, 3278, 3282, 3283, 3290, 3296, 3296, 3303, 3310, 3311, 3312, 3321, 3322, 3327, 3328, 3328, 3328, 3335, 3345, 3345, 3352, 3353, 3354, 3355, 3357, 3368, 3372, 3376, 3380, 3382, 3383, 3383, 3397, 3401, 3405, 3409, 3413, 3415, 3416, 3417, 3418, 3419, 3477, 3490, 3491, 3491, 3494, 3495, 3495, 3495, 3495, 3495, 3499, 3500, 3501, 3505, 3507, 3511, 3515, 3522, 3529, 3531, 3531, 3533, 3534, 3537, 3541, 3542, 3543, 3546, 3572, 3584, 3585, 3585, 3588, 3590, 3590, 3590, 3590, 3590, 3590, 3592, 3601, 3603, 3604, 3605, 3606, 3608, 3609, 3610, 3612, 3613, 3615, 3615, 3616, 3619, 3621, 3635, 3636, 3643, 3652, 3652, 3652, 3654, 3656, 3656, 3656, 3661, 3661, 3661, 3661, 3666, 3667, 3667, 3667, 3667, 3672, 3673, 3674, 3678, 3683, 3687, 3687, 3687, 3691, 3692, 3696, 3698, 3703, 3706, 3716, 3719, 3722, 3725, 3725, 3734, 3743, 3752, 3752, 3762, 3772, 3782, 3792, 3792, 3796, 3796, 3800, 3803, 3815, 3825, 3825, 3828, 3828, 3834, 3834, 3847, 3861, 3875, 3875, 3877, 3890, 3906, 3920, 3934, 3948, 3962, 3976, 3990, 4004, 4017, 4030, 4044, 4058, 4072, 4086, 4100, 4115, 4129, 4143, 4157, 4171, 4186, 4200, 4214, 4228, 4242, 4256, 4270, 4285, 4299, 4313, 4327, 4341, 4356, 4370, 4385, 4399, 4414, 4429, 4443, 4457, 4472, 4486, 4500, 4515, 4529, 4543, 4557, 4571, 4587, 4601, 4615, 4629, 4643, 4659, 4673, 4687, 4701, 4715, 4730, 4744, 4758, 4773, 4787, 4801, 4815, 4830, 4844, 4858, 4872, 4888, 4902, 4916, 4930, 4944, 4958, 4972, 4986, 5001, 5015, 5029, 5043, 5057, 5071, 5071, 5073, 5091, 5101, 5105, 5109, 5113, 5115, 5183, 5194, 5195, 5195, 5195, 5199, 5203, 5209, 5213, 5217, 5221, 5225, 5247, 5256, 5258, 5263, 5269, 5273, 5273, 5279, 5285, 5289, 5292, 5293, 5306, 5310, 5321, 5323, 5325, 5347, 5358, 5365, 5376, 5387, 5398, 5409, 5420, 5431, 5442, 5457, 5472, 5487, 5498, 5509, 5523, 5534, 5548, 5549, 5555, 5560, 5563, 5568, 5574, 5584, 5594, 5594, 5605, 5616, 5627, 5638, 5653, 5665, 5677, 5688, 5688, 5693, 5694, 5705, 5719, 5731, 5743, 5755, 5767, 5779, 5791, 5803, 5814, 5825, 5837, 5849, 5861, 5872, 5883, 5895, 5907, 5920, 5932, 5944, 5956, 5968, 5981, 5993, 6005, 6017, 6029, 6041, 6053, 6066, 6078, 6090, 6102, 6114, 6126, 6144, 6157, 6169, 6181, 6193, 6205, 6217, 6228, 6245, 6258, 6271, 6283, 6296, 6308, 6321, 6333, 6345, 6358, 6370, 6382, 6394, 6406, 6419, 6431, 6443, 6455, 6467, 6481, 6493, 6505, 6517, 6529, 6541, 6555, 6567, 6579, 6591, 6603, 6616, 6628, 6640, 6652, 6665, 6677, 6689, 6701, 6713, 6725, 6738, 6750, 6762, 6774, 6788, 6800, 6812, 6824, 6836, 6848, 6860, 6872, 6884, 6897, 6909, 6921, 6933, 6945, 6957, 6969, 6969, 6975, 6975, 6980, 6985, 6989, 6993, 6994 ] class << self attr_accessor :_lex_trans_keys private :_lex_trans_keys, :_lex_trans_keys= end self._lex_trans_keys = [ 101, 103, 105, 110, 0, 4, 10, 13, 26, 32, 9, 12, 10, 69, 78, 68, 95, 95, 0, 4, 10, 13, 26, 10, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 0, 4, 26, 45, 0, 4, 10, 13, 26, 77, 0, 4, 26, 77, 0, 4, 26, 63, 92, 0, 4, 10, 13, 26, 0, 4, 26, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 0, 4, 26, 45, 0, 4, 10, 13, 26, 67, 92, 99, 0, 4, 26, 0, 4, 26, 92, 67, 99, 45, 10, 0, 4, 26, 63, 77, 92, 0, 4, 10, 13, 26, 77, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 0, 4, 26, 45, 0, 4, 10, 13, 26, 77, 0, 4, 26, 77, 0, 4, 26, 63, 92, 0, 4, 10, 13, 26, 0, 4, 26, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 0, 4, 26, 45, 0, 4, 10, 13, 26, 67, 92, 99, 0, 4, 26, 0, 4, 26, 92, 67, 99, 45, 10, 0, 4, 26, 63, 77, 92, 0, 4, 10, 13, 26, 77, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 10, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 10, 10, 10, 13, 32, 35, 37, 38, 40, 42, 43, 44, 45, 46, 47, 58, 60, 61, 62, 63, 91, 92, 93, 94, 105, 114, 117, 119, 123, 124, 126, 9, 12, 0, 4, 10, 13, 26, 32, 35, 92, 9, 12, 0, 4, 10, 13, 26, 32, 35, 92, 9, 12, 0, 4, 10, 13, 26, 32, 35, 92, 9, 12, 10, 13, 32, 35, 92, 9, 12, 10, 13, 10, 0, 4, 10, 13, 26, 32, 35, 92, 9, 12, 60, 62, 102, 101, 115, 99, 117, 101, 110, 108, 116, 101, 115, 115, 105, 108, 104, 105, 108, 10, 10, 115, 99, 117, 101, 108, 116, 101, 115, 115, 105, 108, 105, 108, 0, 4, 26, 58, 98, 101, 103, 105, 110, 0, 4, 10, 13, 26, 32, 9, 12, 0, 4, 26, 65, 90, 97, 122, 61, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 62, 126, 64, 96, 0, 63, 91, 94, 123, 127, 96, 0, 64, 91, 94, 123, 127, 93, 34, 39, 45, 61, 96, 0, 64, 91, 94, 123, 127, 0, 4, 10, 26, 96, 1, 47, 58, 64, 91, 94, 123, 127, 0, 4, 10, 26, 0, 4, 10, 26, 34, 0, 4, 10, 26, 0, 4, 10, 26, 39, 34, 39, 96, 0, 64, 91, 94, 123, 127, 0, 4, 10, 26, 96, 0, 4, 26, 67, 77, 99, 117, 120, 48, 55, 0, 4, 26, 45, 0, 4, 10, 13, 26, 77, 0, 4, 26, 77, 0, 4, 26, 63, 92, 0, 4, 10, 13, 26, 0, 4, 26, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 0, 4, 26, 45, 0, 4, 10, 13, 26, 67, 92, 99, 0, 4, 26, 0, 4, 26, 92, 67, 99, 45, 10, 0, 4, 26, 63, 77, 92, 0, 4, 10, 13, 26, 77, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 33, 58, 61, 63, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 71, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 68, 96, 0, 47, 59, 64, 91, 94, 123, 127, 10, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 0, 4, 26, 58, 10, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 57, 48, 57, 96, 0, 47, 58, 64, 91, 94, 123, 127, 58, 10, 32, 60, 9, 13, 60, 9, 32, 46, 11, 13, 0, 4, 26, 46, 110, 100, 0, 4, 10, 13, 26, 32, 35, 61, 92, 95, 9, 12, 9, 32, 11, 13, 10, 32, 9, 13, 0, 4, 10, 26, 0, 4, 10, 26, 98, 10, 10, 13, 95, 0, 4, 10, 13, 26, 32, 35, 92, 9, 12, 10, 32, 9, 13, 10, 32, 9, 13, 36, 64, 123, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 57, 0, 4, 26, 67, 77, 99, 117, 120, 48, 55, 48, 55, 48, 55, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 45, 0, 4, 26, 63, 92, 10, 10, 0, 4, 26, 45, 0, 4, 26, 63, 92, 0, 4, 26, 92, 0, 4, 26, 92, 10, 0, 4, 26, 45, 10, 13, 0, 4, 26, 63, 92, 0, 4, 26, 0, 4, 26, 123, 48, 57, 65, 70, 97, 102, 0, 4, 26, 0, 4, 26, 0, 4, 26, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 26, 125, 0, 4, 26, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 10, 13, 26, 35, 92, 10, 36, 64, 123, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 57, 0, 4, 26, 67, 77, 99, 117, 120, 48, 55, 48, 55, 48, 55, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 45, 0, 4, 26, 63, 92, 10, 10, 0, 4, 26, 45, 0, 4, 26, 63, 92, 0, 4, 26, 92, 0, 4, 26, 92, 10, 0, 4, 26, 45, 10, 13, 0, 4, 26, 63, 92, 0, 4, 26, 0, 4, 26, 123, 48, 57, 65, 70, 97, 102, 0, 4, 26, 0, 4, 26, 0, 4, 26, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 26, 125, 0, 4, 26, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 10, 13, 26, 32, 92, 9, 12, 10, 32, 9, 13, 10, 32, 9, 13, 0, 4, 26, 0, 4, 10, 13, 26, 92, 10, 0, 4, 10, 13, 26, 10, 65, 90, 97, 122, 65, 90, 97, 122, 36, 64, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 57, 96, 0, 47, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 0, 4, 10, 13, 26, 32, 33, 35, 36, 37, 38, 42, 43, 45, 47, 58, 60, 61, 62, 66, 69, 91, 92, 93, 95, 97, 98, 99, 100, 101, 102, 105, 109, 110, 111, 114, 115, 116, 117, 119, 121, 124, 126, 1, 8, 9, 12, 14, 64, 65, 90, 94, 96, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 9, 32, 11, 13, 10, 32, 9, 13, 61, 126, 0, 4, 10, 26, 0, 4, 10, 26, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 57, 38, 42, 64, 58, 60, 61, 62, 61, 62, 126, 61, 61, 62, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 69, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 71, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 68, 96, 0, 47, 58, 64, 91, 94, 123, 127, 93, 10, 13, 33, 61, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 61, 63, 69, 70, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 67, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 79, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 68, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 71, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 61, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 69, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 103, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 107, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 97, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 102, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 105, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 120, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 115, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 99, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 121, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 112, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 104, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 100, 108, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 104, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 61, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 124, 0, 4, 9, 26, 32, 35, 92, 96, 1, 10, 11, 13, 14, 64, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 9, 32, 11, 13, 0, 4, 10, 26, 0, 4, 10, 26, 10, 13, 0, 4, 10, 13, 26, 32, 33, 35, 37, 38, 42, 43, 45, 47, 60, 61, 62, 91, 92, 93, 94, 96, 124, 126, 1, 8, 9, 12, 14, 64, 65, 90, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 61, 62, 126, 61, 9, 32, 11, 13, 10, 32, 9, 13, 61, 126, 0, 4, 10, 26, 0, 4, 10, 26, 38, 42, 64, 60, 61, 62, 61, 62, 126, 61, 61, 62, 96, 0, 47, 58, 64, 91, 94, 123, 127, 93, 10, 13, 124, 0, 4, 10, 13, 26, 32, 35, 37, 38, 40, 42, 44, 45, 46, 58, 60, 62, 92, 94, 123, 124, 126, 9, 12, 43, 47, 61, 63, 91, 93, 10, 13, 32, 35, 37, 38, 40, 42, 43, 44, 45, 46, 47, 58, 60, 61, 62, 63, 91, 92, 93, 94, 105, 114, 117, 119, 123, 124, 126, 9, 12, 10, 13, 32, 35, 92, 9, 12, 10, 13, 32, 61, 10, 10, 13, 32, 38, 61, 9, 12, 10, 13, 32, 61, 9, 12, 10, 13, 32, 42, 61, 9, 12, 10, 13, 32, 9, 12, 61, 62, 46, 46, 0, 4, 10, 13, 26, 32, 61, 9, 12, 58, 10, 13, 32, 9, 12, 10, 10, 13, 32, 61, 124, 9, 12, 0, 4, 10, 13, 26, 32, 35, 92, 9, 12, 10, 13, 32, 42, 61, 9, 12, 58, 60, 62, 10, 13, 0, 4, 9, 26, 32, 35, 92, 100, 123, 11, 13, 9, 32, 11, 13, 0, 4, 10, 26, 0, 4, 10, 26, 10, 13, 111, 0, 4, 10, 13, 26, 32, 35, 92, 105, 114, 117, 119, 9, 12, 9, 32, 11, 13, 10, 32, 9, 13, 0, 4, 10, 26, 0, 4, 10, 26, 10, 13, 102, 101, 110, 104, 0, 4, 10, 13, 26, 32, 33, 35, 37, 38, 40, 42, 43, 45, 46, 47, 58, 60, 61, 62, 63, 66, 69, 91, 92, 94, 95, 97, 98, 99, 100, 101, 102, 105, 109, 110, 111, 114, 115, 116, 117, 119, 121, 123, 124, 126, 1, 8, 9, 12, 14, 64, 65, 90, 93, 96, 125, 127, 33, 58, 61, 63, 96, 0, 47, 59, 64, 91, 94, 123, 127, 61, 61, 62, 126, 61, 9, 32, 11, 13, 61, 10, 10, 32, 9, 13, 61, 126, 0, 4, 10, 26, 0, 4, 10, 26, 0, 4, 26, 65, 90, 97, 122, 0, 4, 26, 65, 90, 97, 122, 38, 61, 42, 61, 61, 61, 48, 57, 48, 57, 61, 62, 46, 46, 0, 4, 26, 33, 34, 36, 37, 38, 39, 42, 43, 45, 47, 58, 60, 61, 62, 64, 91, 94, 96, 124, 126, 0, 63, 92, 93, 123, 127, 33, 61, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 61, 62, 126, 61, 62, 61, 126, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 57, 38, 42, 64, 60, 61, 62, 61, 61, 62, 124, 60, 61, 62, 61, 62, 126, 61, 62, 0, 4, 10, 13, 26, 32, 92, 95, 9, 12, 65, 90, 97, 122, 10, 96, 0, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 55, 48, 55, 0, 4, 26, 63, 92, 0, 4, 26, 63, 92, 45, 0, 4, 26, 63, 92, 10, 10, 0, 4, 26, 45, 0, 4, 26, 63, 92, 0, 4, 26, 92, 0, 4, 26, 92, 10, 0, 4, 26, 45, 10, 13, 0, 4, 26, 63, 92, 0, 4, 26, 0, 4, 26, 123, 48, 57, 65, 70, 97, 102, 0, 4, 26, 0, 4, 26, 0, 4, 26, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 0, 4, 26, 125, 0, 4, 26, 0, 4, 9, 26, 32, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 125, 48, 57, 65, 70, 97, 102, 0, 4, 26, 48, 57, 65, 70, 97, 102, 33, 58, 61, 63, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 69, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 10, 13, 33, 58, 61, 63, 95, 0, 47, 59, 64, 91, 96, 123, 127, 33, 58, 61, 63, 69, 70, 76, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 67, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 79, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 68, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 71, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 95, 0, 47, 59, 64, 91, 96, 123, 127, 33, 58, 61, 63, 95, 0, 47, 59, 64, 91, 96, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 76, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 69, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 103, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 107, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 102, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 97, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 102, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 105, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 120, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 116, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 115, 116, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 111, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 99, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 121, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 112, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 104, 114, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 117, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 110, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 100, 108, 116, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 115, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 104, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 105, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 101, 0, 47, 59, 64, 91, 94, 123, 127, 33, 58, 61, 63, 96, 108, 0, 47, 59, 64, 91, 94, 123, 127, 61, 124, 0, 4, 9, 26, 32, 35, 92, 96, 1, 10, 11, 13, 14, 64, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 9, 32, 11, 13, 0, 4, 10, 26, 0, 4, 10, 26, 10, 13, 0, 4, 10, 13, 26, 32, 33, 35, 36, 37, 38, 40, 41, 42, 44, 45, 46, 48, 58, 59, 60, 61, 62, 63, 64, 66, 69, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 105, 109, 110, 111, 114, 115, 116, 117, 119, 121, 123, 124, 125, 126, 127, 1, 8, 9, 12, 14, 31, 34, 39, 43, 47, 49, 57, 65, 90, 33, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 61, 9, 32, 11, 13, 10, 32, 9, 13, 10, 32, 61, 126, 9, 13, 10, 32, 9, 13, 10, 32, 9, 13, 0, 4, 10, 26, 0, 4, 10, 26, 35, 37, 45, 92, 96, 126, 0, 32, 33, 39, 40, 41, 42, 47, 48, 57, 58, 64, 91, 94, 123, 127, 96, 0, 47, 58, 64, 91, 94, 123, 127, 48, 57, 10, 32, 61, 9, 13, 10, 32, 38, 61, 9, 13, 10, 32, 9, 13, 10, 32, 42, 61, 9, 13, 10, 32, 61, 62, 9, 13, 9, 32, 11, 13, 46, 48, 57, 46, 69, 95, 101, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 43, 45, 48, 57, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 48, 57, 48, 57, 46, 66, 68, 69, 79, 88, 95, 98, 100, 101, 111, 120, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 96, 0, 64, 91, 94, 123, 127, 95, 0, 47, 48, 49, 50, 64, 91, 96, 123, 127, 95, 0, 47, 48, 49, 50, 64, 91, 96, 123, 127, 95, 0, 47, 48, 49, 50, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 95, 0, 47, 48, 57, 58, 64, 65, 70, 91, 96, 97, 102, 123, 127, 95, 0, 47, 48, 57, 58, 64, 65, 70, 91, 96, 97, 102, 123, 127, 95, 0, 47, 48, 57, 58, 64, 65, 70, 91, 96, 97, 102, 123, 127, 96, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 46, 69, 95, 101, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 96, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 46, 69, 95, 101, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 58, 10, 32, 60, 61, 9, 13, 10, 32, 62, 9, 13, 61, 62, 126, 10, 32, 61, 9, 13, 10, 32, 61, 62, 9, 13, 64, 96, 0, 47, 58, 63, 91, 94, 123, 127, 58, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 69, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 71, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 73, 96, 0, 47, 59, 64, 91, 94, 123, 127, 58, 78, 96, 0, 47, 59, 64, 91, 94, 123, 127, 43, 45, 58, 78, 96, 0, 47, 48, 57, 59, 64, 91, 94, 123, 127, 58, 95, 0, 47, 48, 57, 59, 64, 91, 96, 123, 127, 58, 96, 0, 47, 48, 57, 59, 64, 91, 94, 123, 127, 58, 68, 96, 0, 47, 59, 64, 91, 94, 123, 127, 0, 4, 10, 13, 26, 10, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 69, 70, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 67, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 79, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 68, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 71, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 76, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 69, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 95, 0, 47, 58, 64, 91, 96, 123, 127, 33, 63, 73, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 78, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 103, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 107, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 10, 32, 33, 60, 63, 96, 0, 8, 9, 13, 14, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 0, 47, 58, 64, 91, 94, 123, 127, 33, 43, 45, 63, 96, 108, 110, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 33, 63, 95, 0, 47, 48, 57, 58, 64, 91, 96, 123, 127, 33, 63, 96, 0, 47, 48, 57, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 97, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 105, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 120, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 115, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 111, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 99, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 121, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 112, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 104, 114, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 117, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 110, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 108, 116, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 102, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 115, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 104, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 105, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 101, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 108, 0, 47, 58, 64, 91, 94, 123, 127, 33, 63, 96, 100, 0, 47, 58, 64, 91, 94, 123, 127, 10, 32, 61, 124, 9, 13, 9, 32, 46, 11, 13, 9, 32, 46, 11, 13, 0, 4, 26, 46, 0, 4, 26, 61, 101, 0, 4, 10, 26, 0 ] class << self attr_accessor :_lex_single_lengths private :_lex_single_lengths, :_lex_single_lengths= end self._lex_single_lengths = [ 0, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 5, 1, 6, 1, 2, 1, 4, 6, 4, 5, 5, 3, 5, 5, 4, 8, 3, 4, 2, 1, 1, 6, 6, 4, 4, 6, 4, 4, 6, 6, 6, 6, 6, 6, 6, 3, 6, 1, 2, 1, 4, 6, 4, 5, 5, 3, 5, 5, 4, 8, 3, 4, 2, 1, 1, 6, 6, 4, 4, 6, 4, 4, 6, 6, 6, 6, 6, 6, 6, 3, 6, 1, 2, 1, 1, 1, 2, 1, 1, 29, 8, 8, 8, 5, 2, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 6, 3, 1, 6, 1, 3, 2, 1, 1, 5, 5, 4, 5, 4, 5, 3, 5, 8, 4, 6, 4, 5, 5, 3, 5, 5, 4, 8, 3, 4, 2, 1, 1, 6, 6, 4, 4, 6, 4, 4, 6, 6, 6, 6, 6, 6, 6, 3, 5, 6, 6, 6, 6, 1, 2, 4, 1, 1, 0, 0, 1, 1, 3, 1, 3, 4, 1, 1, 10, 2, 2, 4, 4, 1, 1, 2, 1, 8, 2, 2, 3, 1, 0, 8, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 5, 1, 1, 4, 5, 4, 0, 0, 4, 1, 4, 2, 5, 3, 4, 3, 3, 3, 0, 3, 3, 3, 0, 4, 4, 4, 4, 0, 4, 0, 4, 3, 6, 4, 0, 3, 0, 0, 0, 7, 1, 3, 1, 0, 8, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 5, 1, 1, 4, 5, 4, 0, 0, 4, 1, 4, 2, 5, 3, 4, 3, 3, 3, 0, 3, 3, 3, 0, 4, 4, 4, 4, 0, 4, 0, 4, 3, 6, 4, 0, 3, 0, 0, 0, 7, 2, 2, 3, 6, 1, 5, 1, 0, 0, 2, 1, 0, 1, 1, 43, 4, 2, 2, 2, 4, 4, 6, 1, 0, 1, 1, 1, 1, 2, 1, 3, 1, 0, 4, 5, 5, 5, 5, 5, 5, 1, 2, 4, 7, 5, 5, 5, 5, 5, 5, 5, 4, 4, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 4, 6, 5, 6, 5, 6, 5, 5, 6, 5, 5, 6, 5, 5, 5, 5, 7, 5, 5, 5, 5, 7, 5, 5, 5, 6, 5, 5, 6, 5, 5, 5, 6, 5, 5, 7, 5, 5, 5, 5, 6, 5, 5, 5, 1, 8, 2, 2, 4, 4, 2, 24, 4, 1, 0, 3, 1, 0, 0, 0, 0, 2, 2, 2, 4, 4, 1, 1, 1, 2, 1, 3, 1, 0, 1, 1, 2, 1, 22, 29, 5, 4, 1, 5, 4, 0, 5, 3, 1, 1, 7, 1, 3, 1, 0, 0, 5, 8, 0, 5, 1, 1, 1, 2, 9, 2, 4, 4, 2, 1, 0, 12, 2, 2, 4, 4, 2, 1, 1, 1, 1, 46, 5, 1, 0, 3, 1, 0, 0, 0, 0, 2, 1, 1, 2, 2, 4, 4, 3, 3, 2, 0, 2, 1, 1, 0, 1, 1, 3, 20, 4, 1, 0, 3, 2, 0, 0, 0, 0, 0, 2, 1, 0, 1, 1, 1, 2, 1, 1, 0, 1, 2, 0, 1, 3, 2, 8, 1, 1, 1, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 5, 1, 1, 4, 5, 4, 0, 0, 4, 1, 4, 2, 5, 3, 4, 3, 3, 3, 0, 3, 3, 3, 0, 4, 4, 4, 4, 0, 4, 0, 4, 3, 6, 4, 0, 3, 0, 0, 0, 5, 6, 6, 0, 2, 5, 8, 6, 6, 6, 6, 6, 6, 6, 5, 5, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 7, 6, 7, 6, 7, 7, 6, 6, 7, 6, 6, 7, 6, 6, 6, 6, 8, 6, 6, 6, 6, 8, 6, 6, 6, 6, 7, 6, 6, 7, 6, 6, 6, 7, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 0, 2, 8, 2, 2, 4, 4, 2, 54, 3, 1, 0, 0, 2, 2, 4, 2, 2, 4, 4, 6, 1, 0, 3, 4, 2, 0, 4, 4, 2, 1, 1, 3, 2, 1, 0, 0, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 4, 1, 4, 3, 3, 3, 4, 2, 2, 0, 3, 3, 3, 3, 5, 2, 2, 3, 0, 5, 1, 3, 6, 4, 4, 4, 4, 4, 4, 4, 3, 3, 4, 4, 4, 3, 3, 4, 4, 5, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 6, 5, 4, 4, 4, 4, 4, 3, 7, 3, 3, 4, 5, 4, 5, 4, 4, 5, 4, 4, 4, 4, 5, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 5, 4, 4, 4, 5, 4, 4, 4, 4, 4, 5, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 0, 4, 0, 3, 3, 4, 4, 1, 4 ] class << self attr_accessor :_lex_range_lengths private :_lex_range_lengths, :_lex_range_lengths= end self._lex_range_lengths = [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 8, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 4, 4, 4, 4, 0, 4, 0, 0, 1, 1, 1, 1, 1, 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, 1, 2, 0, 8, 4, 0, 3, 3, 0, 3, 4, 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 0, 4, 0, 0, 4, 1, 1, 4, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 4, 1, 1, 0, 0, 1, 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, 3, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 0, 0, 0, 4, 1, 1, 0, 0, 1, 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, 3, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 2, 0, 4, 1, 4, 4, 6, 4, 1, 1, 0, 0, 0, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 4, 4, 4, 4, 4, 4, 0, 0, 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, 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, 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, 4, 4, 4, 4, 4, 0, 5, 4, 1, 0, 0, 0, 5, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 4, 1, 1, 0, 0, 1, 1, 0, 1, 2, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 2, 2, 0, 0, 0, 0, 1, 2, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 0, 3, 4, 0, 0, 1, 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, 3, 0, 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 3, 0, 4, 4, 4, 0, 0, 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, 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, 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, 4, 4, 4, 4, 4, 4, 0, 0, 5, 4, 1, 0, 0, 0, 7, 4, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 8, 4, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 5, 1, 5, 1, 1, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, 5, 5, 5, 5, 5, 0, 1, 1, 0, 1, 1, 4, 4, 0, 4, 4, 4, 4, 5, 5, 5, 4, 0, 0, 0, 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, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 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, 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, 4, 4, 4, 4, 4, 0, 1, 0, 1, 1, 0, 0, 0, 0 ] class << self attr_accessor :_lex_index_offsets private :_lex_index_offsets, :_lex_index_offsets= end self._lex_index_offsets = [ 0, 0, 2, 4, 6, 8, 16, 18, 20, 22, 24, 26, 28, 34, 36, 51, 57, 64, 70, 75, 82, 87, 93, 99, 103, 109, 115, 120, 129, 133, 138, 141, 143, 145, 152, 159, 167, 172, 182, 190, 198, 208, 218, 228, 238, 248, 258, 268, 275, 290, 296, 303, 309, 314, 321, 326, 332, 338, 342, 348, 354, 359, 368, 372, 377, 380, 382, 384, 391, 398, 406, 411, 421, 429, 437, 447, 457, 467, 477, 487, 497, 507, 514, 529, 535, 542, 548, 554, 556, 563, 565, 567, 598, 608, 618, 628, 635, 638, 640, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 671, 673, 675, 677, 679, 681, 683, 685, 687, 689, 691, 693, 695, 697, 699, 702, 704, 706, 708, 710, 712, 714, 716, 721, 723, 725, 727, 729, 731, 739, 745, 747, 762, 768, 772, 778, 783, 785, 794, 804, 809, 815, 820, 826, 833, 839, 849, 854, 861, 866, 872, 878, 882, 888, 894, 899, 908, 912, 917, 920, 922, 924, 931, 938, 946, 951, 961, 969, 977, 987, 997, 1007, 1017, 1027, 1037, 1047, 1054, 1064, 1075, 1086, 1097, 1108, 1110, 1117, 1122, 1124, 1130, 1132, 1134, 1140, 1142, 1147, 1149, 1154, 1159, 1161, 1163, 1175, 1179, 1183, 1188, 1193, 1195, 1197, 1200, 1202, 1212, 1216, 1220, 1224, 1230, 1232, 1242, 1243, 1244, 1246, 1248, 1249, 1250, 1256, 1257, 1258, 1259, 1265, 1267, 1268, 1269, 1270, 1276, 1278, 1280, 1285, 1291, 1296, 1297, 1298, 1303, 1305, 1310, 1313, 1319, 1323, 1331, 1335, 1339, 1343, 1344, 1351, 1358, 1365, 1366, 1374, 1382, 1390, 1398, 1399, 1404, 1405, 1410, 1414, 1424, 1432, 1433, 1437, 1438, 1442, 1443, 1451, 1453, 1457, 1463, 1465, 1475, 1476, 1477, 1479, 1481, 1482, 1483, 1489, 1490, 1491, 1492, 1498, 1500, 1501, 1502, 1503, 1509, 1511, 1513, 1518, 1524, 1529, 1530, 1531, 1536, 1538, 1543, 1546, 1552, 1556, 1564, 1568, 1572, 1576, 1577, 1584, 1591, 1598, 1599, 1607, 1615, 1623, 1631, 1632, 1637, 1638, 1643, 1647, 1657, 1665, 1666, 1670, 1671, 1675, 1676, 1685, 1689, 1693, 1697, 1704, 1706, 1712, 1714, 1717, 1720, 1723, 1729, 1731, 1737, 1743, 1793, 1802, 1806, 1810, 1813, 1818, 1823, 1838, 1844, 1846, 1848, 1850, 1852, 1854, 1857, 1859, 1863, 1865, 1867, 1876, 1886, 1896, 1906, 1916, 1926, 1936, 1938, 1941, 1950, 1962, 1972, 1982, 1992, 2002, 2012, 2022, 2032, 2041, 2050, 2060, 2070, 2080, 2090, 2100, 2111, 2121, 2131, 2141, 2151, 2162, 2172, 2182, 2192, 2202, 2212, 2222, 2233, 2243, 2253, 2263, 2273, 2284, 2294, 2304, 2314, 2324, 2334, 2343, 2354, 2364, 2375, 2385, 2396, 2406, 2416, 2427, 2437, 2447, 2458, 2468, 2478, 2488, 2498, 2510, 2520, 2530, 2540, 2550, 2562, 2572, 2582, 2592, 2603, 2613, 2623, 2634, 2644, 2654, 2664, 2675, 2685, 2695, 2707, 2717, 2727, 2737, 2747, 2758, 2768, 2778, 2788, 2790, 2804, 2811, 2815, 2820, 2825, 2828, 2858, 2867, 2869, 2870, 2874, 2876, 2877, 2878, 2879, 2880, 2884, 2888, 2891, 2896, 2901, 2903, 2905, 2907, 2910, 2912, 2916, 2918, 2920, 2926, 2928, 2931, 2933, 2960, 2991, 2998, 3003, 3005, 3012, 3018, 3019, 3026, 3032, 3034, 3036, 3045, 3047, 3052, 3054, 3055, 3056, 3063, 3073, 3074, 3081, 3083, 3085, 3087, 3090, 3101, 3105, 3110, 3115, 3118, 3120, 3121, 3135, 3139, 3143, 3148, 3153, 3156, 3158, 3160, 3162, 3164, 3217, 3227, 3229, 3230, 3234, 3236, 3237, 3238, 3239, 3240, 3244, 3246, 3248, 3252, 3255, 3260, 3265, 3271, 3277, 3280, 3281, 3284, 3286, 3289, 3292, 3294, 3296, 3300, 3324, 3333, 3335, 3336, 3340, 3343, 3344, 3345, 3346, 3347, 3348, 3351, 3357, 3359, 3361, 3363, 3365, 3368, 3370, 3372, 3374, 3376, 3379, 3380, 3382, 3386, 3389, 3401, 3403, 3408, 3414, 3415, 3416, 3418, 3420, 3421, 3422, 3428, 3429, 3430, 3431, 3437, 3439, 3440, 3441, 3442, 3448, 3450, 3452, 3457, 3463, 3468, 3469, 3470, 3475, 3477, 3482, 3485, 3491, 3495, 3503, 3507, 3511, 3515, 3516, 3523, 3530, 3537, 3538, 3546, 3554, 3562, 3570, 3571, 3576, 3577, 3582, 3586, 3596, 3604, 3605, 3609, 3610, 3614, 3615, 3625, 3636, 3647, 3648, 3651, 3661, 3674, 3685, 3696, 3707, 3718, 3729, 3740, 3751, 3761, 3771, 3782, 3793, 3804, 3815, 3826, 3838, 3849, 3860, 3871, 3882, 3894, 3905, 3916, 3927, 3938, 3949, 3960, 3972, 3983, 3994, 4005, 4016, 4028, 4039, 4051, 4062, 4074, 4086, 4097, 4108, 4120, 4131, 4142, 4154, 4165, 4176, 4187, 4198, 4211, 4222, 4233, 4244, 4255, 4268, 4279, 4290, 4301, 4312, 4324, 4335, 4346, 4358, 4369, 4380, 4391, 4403, 4414, 4425, 4436, 4449, 4460, 4471, 4482, 4493, 4504, 4515, 4526, 4538, 4549, 4560, 4571, 4582, 4593, 4594, 4597, 4611, 4618, 4622, 4627, 4632, 4635, 4697, 4705, 4707, 4708, 4709, 4713, 4717, 4723, 4727, 4731, 4736, 4741, 4756, 4762, 4764, 4769, 4775, 4779, 4780, 4786, 4792, 4796, 4799, 4801, 4810, 4814, 4821, 4823, 4825, 4843, 4850, 4855, 4862, 4869, 4876, 4883, 4890, 4897, 4904, 4913, 4922, 4931, 4938, 4945, 4955, 4962, 4972, 4974, 4980, 4985, 4989, 4994, 5000, 5007, 5014, 5015, 5023, 5031, 5039, 5047, 5058, 5066, 5074, 5082, 5083, 5089, 5091, 5099, 5110, 5119, 5128, 5137, 5146, 5155, 5164, 5173, 5181, 5189, 5198, 5207, 5216, 5224, 5232, 5241, 5250, 5260, 5269, 5278, 5287, 5296, 5306, 5315, 5324, 5333, 5342, 5351, 5360, 5370, 5379, 5388, 5397, 5406, 5415, 5428, 5438, 5447, 5456, 5465, 5474, 5483, 5491, 5504, 5513, 5522, 5531, 5541, 5550, 5560, 5569, 5578, 5588, 5597, 5606, 5615, 5624, 5634, 5643, 5652, 5661, 5670, 5681, 5690, 5699, 5708, 5717, 5726, 5737, 5746, 5755, 5764, 5773, 5783, 5792, 5801, 5810, 5820, 5829, 5838, 5847, 5856, 5865, 5875, 5884, 5893, 5902, 5913, 5922, 5931, 5940, 5949, 5958, 5967, 5976, 5985, 5995, 6004, 6013, 6022, 6031, 6040, 6049, 6050, 6056, 6057, 6062, 6067, 6072, 6077, 6079 ] class << self attr_accessor :_lex_indicies private :_lex_indicies, :_lex_indicies= end self._lex_indicies = [ 1, 0, 2, 0, 3, 0, 4, 0, 5, 5, 6, 7, 5, 5, 5, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 14, 15, 16, 14, 0, 15, 0, 17, 17, 20, 19, 19, 19, 17, 19, 17, 19, 21, 19, 17, 17, 18, 17, 17, 17, 17, 17, 19, 22, 17, 17, 17, 17, 17, 18, 17, 17, 17, 17, 17, 18, 17, 17, 17, 24, 23, 25, 25, 27, 28, 25, 29, 26, 25, 25, 25, 30, 26, 25, 25, 25, 32, 33, 31, 25, 25, 35, 36, 25, 34, 25, 25, 25, 34, 25, 25, 25, 32, 37, 31, 25, 25, 25, 39, 40, 38, 17, 17, 17, 41, 23, 25, 25, 43, 44, 25, 45, 46, 47, 42, 25, 25, 25, 42, 25, 25, 25, 49, 48, 50, 51, 25, 51, 25, 52, 25, 17, 17, 17, 39, 53, 54, 38, 17, 17, 27, 28, 17, 30, 26, 56, 56, 56, 56, 57, 57, 57, 55, 56, 56, 56, 25, 57, 56, 56, 59, 56, 59, 61, 60, 60, 60, 58, 56, 56, 56, 64, 63, 63, 63, 62, 56, 56, 56, 56, 65, 65, 65, 55, 56, 56, 66, 56, 66, 68, 67, 67, 67, 55, 56, 56, 66, 56, 66, 68, 69, 69, 69, 55, 56, 56, 66, 56, 66, 68, 70, 70, 70, 55, 56, 56, 66, 56, 66, 68, 71, 71, 71, 55, 56, 56, 66, 56, 66, 68, 72, 72, 72, 55, 56, 56, 66, 56, 66, 68, 73, 73, 73, 55, 56, 56, 66, 56, 66, 68, 69, 69, 69, 62, 17, 17, 17, 75, 75, 75, 74, 76, 76, 79, 78, 78, 78, 76, 78, 76, 78, 80, 78, 76, 76, 77, 76, 76, 76, 76, 76, 78, 81, 76, 76, 76, 76, 76, 77, 76, 76, 76, 76, 76, 77, 76, 76, 76, 83, 82, 84, 84, 86, 87, 84, 88, 85, 84, 84, 84, 89, 85, 84, 84, 84, 91, 92, 90, 84, 84, 94, 95, 84, 93, 84, 84, 84, 93, 84, 84, 84, 91, 96, 90, 84, 84, 84, 98, 99, 97, 76, 76, 76, 100, 82, 84, 84, 102, 103, 84, 104, 105, 106, 101, 84, 84, 84, 101, 84, 84, 84, 108, 107, 109, 110, 84, 110, 84, 111, 84, 76, 76, 76, 98, 112, 113, 97, 76, 76, 86, 87, 76, 89, 85, 115, 115, 115, 115, 116, 116, 116, 114, 115, 115, 115, 84, 116, 115, 115, 118, 115, 118, 120, 119, 119, 119, 117, 115, 115, 115, 123, 122, 122, 122, 121, 115, 115, 115, 115, 124, 124, 124, 114, 115, 115, 125, 115, 125, 127, 126, 126, 126, 114, 115, 115, 125, 115, 125, 127, 128, 128, 128, 114, 115, 115, 125, 115, 125, 127, 129, 129, 129, 114, 115, 115, 125, 115, 125, 127, 130, 130, 130, 114, 115, 115, 125, 115, 125, 127, 131, 131, 131, 114, 115, 115, 125, 115, 125, 127, 132, 132, 132, 114, 115, 115, 125, 115, 125, 127, 128, 128, 128, 121, 76, 76, 76, 134, 134, 134, 133, 137, 137, 138, 136, 136, 136, 137, 136, 137, 136, 139, 136, 137, 137, 135, 137, 137, 137, 137, 137, 136, 141, 137, 137, 137, 137, 137, 140, 137, 137, 137, 137, 137, 142, 143, 143, 143, 143, 143, 144, 145, 143, 148, 146, 146, 146, 146, 146, 147, 149, 146, 151, 150, 154, 155, 153, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 162, 168, 169, 170, 171, 162, 172, 173, 174, 175, 176, 177, 178, 172, 153, 152, 179, 179, 182, 183, 179, 181, 184, 185, 181, 180, 179, 179, 188, 189, 179, 187, 190, 191, 187, 186, 179, 179, 192, 193, 179, 187, 190, 191, 187, 186, 154, 195, 194, 156, 171, 194, 179, 196, 197, 179, 196, 179, 179, 179, 192, 189, 179, 187, 190, 191, 187, 186, 198, 152, 172, 152, 162, 152, 199, 152, 200, 152, 201, 152, 202, 152, 162, 152, 203, 152, 204, 205, 152, 206, 152, 207, 152, 162, 152, 208, 152, 162, 152, 209, 152, 210, 152, 202, 152, 212, 211, 214, 213, 215, 213, 216, 213, 217, 213, 218, 213, 219, 220, 213, 221, 213, 222, 213, 218, 213, 223, 213, 218, 213, 224, 213, 217, 213, 225, 225, 225, 225, 226, 228, 227, 229, 227, 230, 227, 231, 227, 232, 227, 233, 233, 234, 235, 233, 233, 233, 227, 236, 236, 236, 238, 238, 237, 239, 225, 236, 236, 242, 241, 241, 241, 236, 241, 236, 241, 243, 241, 236, 236, 240, 236, 236, 236, 236, 236, 241, 244, 241, 241, 236, 245, 236, 236, 236, 236, 240, 236, 236, 236, 236, 240, 244, 236, 247, 248, 249, 239, 250, 236, 236, 236, 246, 236, 236, 253, 236, 252, 252, 252, 252, 252, 251, 236, 236, 255, 236, 254, 236, 236, 236, 236, 256, 247, 236, 236, 253, 236, 252, 236, 236, 236, 236, 256, 248, 247, 248, 250, 236, 236, 236, 246, 236, 236, 236, 236, 256, 250, 258, 258, 258, 260, 261, 262, 263, 264, 259, 257, 236, 236, 236, 266, 265, 267, 267, 269, 270, 267, 271, 268, 267, 267, 267, 272, 268, 267, 267, 267, 274, 275, 273, 267, 267, 277, 278, 267, 276, 267, 267, 267, 276, 267, 267, 267, 274, 279, 273, 267, 267, 267, 281, 282, 280, 236, 236, 236, 283, 265, 267, 267, 285, 286, 267, 287, 288, 289, 284, 267, 267, 267, 284, 267, 267, 267, 291, 290, 292, 293, 267, 293, 267, 294, 267, 236, 236, 236, 281, 295, 296, 280, 236, 236, 269, 270, 236, 272, 268, 298, 298, 298, 298, 299, 299, 299, 297, 298, 298, 298, 267, 299, 298, 298, 301, 298, 301, 303, 302, 302, 302, 300, 298, 298, 298, 306, 305, 305, 305, 304, 298, 298, 298, 298, 307, 307, 307, 297, 298, 298, 308, 298, 308, 310, 309, 309, 309, 297, 298, 298, 308, 298, 308, 310, 311, 311, 311, 297, 298, 298, 308, 298, 308, 310, 312, 312, 312, 297, 298, 298, 308, 298, 308, 310, 313, 313, 313, 297, 298, 298, 308, 298, 308, 310, 314, 314, 314, 297, 298, 298, 308, 298, 308, 310, 315, 315, 315, 297, 298, 298, 308, 298, 308, 310, 311, 311, 311, 304, 236, 236, 236, 317, 317, 317, 316, 319, 320, 321, 322, 225, 225, 225, 225, 225, 318, 319, 320, 321, 322, 323, 236, 236, 236, 236, 236, 318, 319, 320, 321, 322, 324, 236, 236, 236, 236, 236, 318, 319, 320, 321, 322, 325, 236, 236, 236, 236, 236, 318, 319, 320, 321, 322, 325, 236, 236, 236, 236, 236, 318, 326, 236, 329, 327, 327, 327, 327, 327, 328, 327, 327, 327, 327, 330, 331, 327, 332, 332, 332, 332, 332, 333, 335, 334, 337, 336, 332, 332, 332, 332, 332, 338, 339, 334, 342, 341, 343, 341, 340, 344, 340, 346, 346, 347, 346, 345, 345, 345, 345, 345, 348, 350, 349, 351, 349, 353, 353, 8, 355, 353, 354, 356, 357, 358, 359, 354, 352, 354, 354, 354, 360, 8, 354, 354, 360, 361, 361, 361, 361, 362, 363, 363, 363, 363, 364, 366, 365, 6, 367, 8, 368, 365, 369, 365, 371, 371, 373, 374, 371, 372, 375, 376, 372, 370, 373, 372, 372, 377, 373, 372, 372, 377, 379, 380, 381, 378, 382, 382, 382, 382, 382, 18, 21, 382, 384, 384, 384, 386, 387, 388, 389, 390, 385, 383, 391, 392, 394, 393, 395, 393, 393, 396, 396, 396, 396, 39, 397, 38, 398, 399, 400, 400, 400, 400, 39, 40, 38, 51, 400, 401, 402, 403, 403, 403, 403, 32, 37, 31, 404, 403, 405, 400, 400, 400, 400, 406, 23, 396, 396, 396, 32, 33, 31, 396, 396, 396, 407, 48, 408, 409, 409, 409, 409, 49, 48, 410, 409, 409, 409, 409, 406, 23, 52, 411, 409, 409, 409, 409, 32, 33, 31, 398, 398, 398, 23, 412, 412, 412, 415, 414, 414, 414, 413, 412, 412, 412, 416, 412, 412, 412, 417, 412, 412, 412, 418, 412, 412, 412, 412, 419, 419, 419, 416, 412, 412, 412, 420, 420, 420, 417, 412, 412, 412, 421, 421, 421, 418, 422, 56, 56, 56, 416, 424, 424, 424, 423, 56, 56, 56, 426, 425, 425, 425, 58, 56, 56, 56, 64, 427, 427, 427, 62, 56, 56, 56, 56, 57, 57, 57, 55, 428, 56, 56, 56, 412, 57, 429, 56, 56, 56, 418, 427, 429, 429, 429, 418, 56, 56, 66, 56, 66, 68, 67, 67, 67, 55, 56, 56, 56, 428, 73, 73, 73, 55, 430, 430, 430, 430, 418, 431, 433, 433, 433, 432, 432, 435, 435, 436, 437, 435, 438, 439, 434, 436, 440, 441, 442, 443, 440, 444, 444, 444, 444, 444, 77, 80, 444, 446, 446, 446, 448, 449, 450, 451, 452, 447, 445, 453, 454, 456, 455, 457, 455, 455, 458, 458, 458, 458, 98, 459, 97, 460, 461, 462, 462, 462, 462, 98, 99, 97, 110, 462, 463, 464, 465, 465, 465, 465, 91, 96, 90, 466, 465, 467, 462, 462, 462, 462, 468, 82, 458, 458, 458, 91, 92, 90, 458, 458, 458, 469, 107, 470, 471, 471, 471, 471, 108, 107, 472, 471, 471, 471, 471, 468, 82, 111, 473, 471, 471, 471, 471, 91, 92, 90, 460, 460, 460, 82, 474, 474, 474, 477, 476, 476, 476, 475, 474, 474, 474, 478, 474, 474, 474, 479, 474, 474, 474, 480, 474, 474, 474, 474, 481, 481, 481, 478, 474, 474, 474, 482, 482, 482, 479, 474, 474, 474, 483, 483, 483, 480, 484, 115, 115, 115, 478, 486, 486, 486, 485, 115, 115, 115, 488, 487, 487, 487, 117, 115, 115, 115, 123, 489, 489, 489, 121, 115, 115, 115, 115, 116, 116, 116, 114, 490, 115, 115, 115, 474, 116, 491, 115, 115, 115, 480, 489, 491, 491, 491, 480, 115, 115, 125, 115, 125, 127, 126, 126, 126, 114, 115, 115, 115, 490, 132, 132, 132, 114, 492, 492, 492, 492, 480, 493, 495, 495, 495, 494, 494, 497, 497, 499, 500, 497, 498, 501, 498, 496, 499, 498, 498, 502, 499, 498, 498, 502, 503, 503, 503, 504, 506, 506, 507, 508, 506, 509, 505, 507, 510, 510, 510, 512, 513, 510, 511, 515, 514, 517, 517, 516, 517, 517, 518, 519, 520, 137, 521, 521, 521, 521, 521, 135, 139, 521, 522, 522, 522, 522, 522, 140, 523, 523, 523, 523, 523, 142, 525, 525, 145, 528, 525, 527, 529, 530, 531, 532, 533, 534, 535, 535, 532, 536, 537, 538, 539, 541, 542, 543, 544, 526, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 535, 526, 527, 526, 540, 532, 526, 524, 564, 564, 564, 563, 563, 563, 563, 563, 524, 527, 527, 527, 565, 145, 527, 527, 565, 532, 532, 566, 567, 567, 567, 567, 568, 569, 569, 569, 569, 570, 571, 571, 573, 144, 144, 144, 571, 144, 571, 144, 574, 144, 571, 571, 572, 575, 575, 575, 575, 575, 572, 574, 575, 532, 566, 532, 566, 532, 566, 577, 576, 532, 578, 566, 532, 566, 579, 532, 532, 571, 532, 566, 532, 566, 564, 564, 564, 563, 563, 563, 563, 563, 540, 564, 564, 564, 581, 580, 580, 580, 580, 580, 540, 564, 564, 564, 582, 580, 580, 580, 580, 580, 540, 564, 564, 564, 583, 580, 580, 580, 580, 580, 540, 564, 564, 564, 584, 580, 580, 580, 580, 580, 540, 564, 564, 564, 585, 580, 580, 580, 580, 580, 540, 564, 564, 564, 584, 580, 580, 580, 580, 580, 540, 579, 571, 145, 586, 571, 564, 564, 564, 588, 587, 587, 587, 587, 524, 564, 564, 564, 589, 590, 591, 587, 587, 587, 587, 587, 524, 564, 564, 564, 592, 587, 587, 587, 587, 587, 524, 564, 564, 564, 593, 587, 587, 587, 587, 587, 524, 564, 564, 564, 594, 587, 587, 587, 587, 587, 524, 564, 564, 564, 595, 587, 587, 587, 587, 587, 524, 564, 564, 564, 596, 587, 587, 587, 587, 587, 524, 564, 564, 564, 597, 587, 587, 587, 587, 587, 524, 564, 564, 564, 598, 587, 587, 587, 587, 587, 524, 564, 564, 564, 599, 587, 587, 587, 587, 524, 564, 564, 564, 600, 587, 587, 587, 587, 524, 564, 564, 564, 601, 587, 587, 587, 587, 587, 524, 564, 564, 564, 602, 587, 587, 587, 587, 587, 524, 564, 564, 564, 598, 587, 587, 587, 587, 587, 524, 564, 564, 564, 603, 587, 587, 587, 587, 587, 524, 564, 564, 564, 602, 587, 587, 587, 587, 587, 524, 564, 564, 564, 587, 604, 605, 587, 587, 587, 587, 524, 564, 564, 564, 587, 606, 587, 587, 587, 587, 524, 564, 564, 564, 587, 607, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 608, 609, 587, 587, 587, 587, 524, 564, 564, 564, 587, 610, 587, 587, 587, 587, 524, 564, 564, 564, 587, 611, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 612, 587, 587, 587, 587, 524, 564, 564, 564, 587, 613, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 614, 615, 587, 587, 587, 587, 524, 564, 564, 564, 587, 616, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 617, 587, 587, 587, 587, 524, 564, 564, 564, 587, 607, 587, 587, 587, 587, 524, 564, 564, 564, 587, 618, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 619, 587, 587, 587, 587, 524, 564, 564, 564, 620, 621, 620, 620, 620, 620, 524, 564, 564, 564, 587, 622, 587, 587, 587, 587, 524, 564, 564, 564, 587, 623, 587, 587, 587, 587, 524, 564, 564, 564, 587, 624, 587, 587, 587, 587, 524, 564, 564, 625, 587, 587, 587, 587, 587, 524, 564, 564, 564, 587, 626, 627, 587, 587, 587, 587, 524, 564, 564, 564, 587, 628, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 629, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 630, 587, 587, 587, 587, 524, 564, 564, 564, 587, 631, 587, 587, 587, 587, 524, 564, 564, 564, 587, 616, 587, 587, 587, 587, 524, 564, 564, 564, 587, 632, 555, 587, 587, 587, 587, 524, 564, 564, 564, 587, 614, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 633, 587, 587, 587, 587, 524, 564, 564, 564, 587, 634, 587, 587, 587, 587, 524, 564, 564, 564, 587, 635, 587, 587, 587, 587, 524, 564, 564, 564, 587, 616, 587, 587, 587, 587, 524, 564, 564, 564, 587, 636, 637, 638, 587, 587, 587, 587, 524, 564, 564, 564, 587, 638, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 639, 587, 587, 587, 587, 524, 564, 564, 564, 587, 640, 641, 642, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 643, 587, 587, 587, 587, 524, 564, 564, 564, 587, 616, 587, 587, 587, 587, 524, 564, 564, 564, 587, 644, 645, 587, 587, 587, 587, 524, 564, 564, 564, 587, 600, 587, 587, 587, 587, 524, 564, 564, 564, 587, 611, 587, 587, 587, 587, 524, 564, 564, 564, 587, 646, 647, 587, 587, 587, 587, 524, 564, 564, 564, 587, 629, 587, 587, 587, 587, 524, 564, 564, 564, 587, 648, 587, 587, 587, 587, 524, 564, 564, 564, 587, 555, 587, 587, 587, 587, 524, 564, 564, 564, 587, 649, 643, 587, 587, 587, 587, 524, 564, 564, 564, 587, 611, 587, 587, 587, 587, 524, 564, 564, 564, 587, 650, 587, 587, 587, 587, 524, 564, 564, 564, 587, 651, 652, 653, 587, 587, 587, 587, 524, 564, 564, 564, 587, 629, 587, 587, 587, 587, 524, 564, 564, 564, 587, 617, 587, 587, 587, 587, 524, 564, 564, 564, 587, 637, 587, 587, 587, 587, 524, 564, 564, 564, 587, 654, 587, 587, 587, 587, 524, 564, 564, 564, 587, 611, 635, 587, 587, 587, 587, 524, 564, 564, 564, 587, 655, 587, 587, 587, 587, 524, 564, 564, 564, 587, 656, 587, 587, 587, 587, 524, 564, 564, 564, 587, 605, 587, 587, 587, 587, 524, 532, 566, 658, 658, 660, 658, 660, 661, 662, 659, 659, 660, 659, 659, 659, 657, 148, 663, 663, 663, 663, 663, 147, 660, 660, 660, 664, 665, 665, 665, 665, 666, 667, 667, 667, 667, 668, 149, 669, 663, 671, 671, 151, 674, 671, 673, 675, 676, 677, 678, 679, 680, 680, 677, 681, 682, 683, 685, 686, 672, 677, 677, 687, 680, 672, 673, 672, 684, 672, 670, 689, 690, 691, 688, 688, 688, 688, 688, 670, 693, 692, 694, 696, 697, 698, 695, 700, 699, 701, 702, 703, 692, 673, 673, 673, 704, 151, 673, 673, 704, 677, 677, 705, 706, 706, 706, 706, 707, 708, 708, 708, 708, 709, 677, 705, 677, 705, 677, 705, 677, 710, 705, 677, 705, 712, 677, 677, 711, 677, 705, 677, 705, 713, 713, 713, 713, 713, 684, 712, 711, 151, 714, 711, 677, 705, 716, 716, 154, 718, 716, 717, 719, 172, 720, 721, 722, 162, 723, 164, 724, 725, 726, 727, 172, 177, 178, 172, 717, 172, 162, 162, 715, 154, 155, 153, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 162, 168, 169, 170, 171, 162, 172, 173, 174, 175, 176, 177, 178, 172, 153, 728, 154, 195, 194, 156, 171, 194, 729, 732, 733, 162, 162, 731, 734, 179, 734, 735, 162, 172, 162, 162, 179, 734, 735, 162, 162, 162, 179, 736, 734, 735, 162, 738, 162, 162, 737, 734, 735, 162, 162, 162, 179, 739, 730, 162, 730, 740, 740, 734, 735, 740, 162, 162, 162, 731, 742, 741, 745, 746, 744, 744, 743, 745, 747, 748, 749, 734, 735, 162, 162, 172, 162, 730, 728, 728, 182, 183, 728, 181, 184, 185, 181, 180, 750, 734, 735, 162, 172, 162, 162, 730, 162, 741, 172, 728, 172, 728, 196, 197, 728, 752, 752, 753, 752, 753, 754, 755, 756, 757, 753, 751, 753, 753, 753, 758, 759, 759, 759, 759, 760, 761, 761, 761, 761, 762, 212, 764, 763, 765, 763, 766, 768, 768, 770, 771, 768, 769, 772, 773, 774, 775, 776, 777, 769, 767, 769, 769, 769, 778, 770, 769, 769, 778, 779, 779, 779, 779, 780, 781, 781, 781, 781, 782, 214, 784, 783, 218, 783, 785, 783, 786, 783, 787, 783, 789, 789, 791, 792, 789, 790, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 813, 239, 790, 239, 808, 239, 239, 788, 319, 320, 321, 322, 225, 225, 225, 225, 225, 788, 834, 833, 835, 837, 838, 839, 836, 841, 840, 842, 843, 844, 833, 790, 790, 790, 845, 846, 845, 234, 847, 791, 790, 790, 845, 239, 239, 848, 849, 849, 849, 849, 850, 851, 851, 851, 851, 852, 854, 854, 854, 855, 855, 853, 856, 856, 856, 238, 238, 237, 858, 239, 857, 859, 861, 239, 860, 239, 225, 239, 862, 857, 862, 239, 857, 863, 848, 239, 848, 848, 848, 848, 864, 866, 867, 868, 241, 869, 867, 870, 871, 871, 241, 872, 873, 874, 875, 876, 877, 241, 241, 878, 871, 848, 848, 848, 865, 880, 881, 882, 879, 879, 879, 879, 879, 865, 884, 883, 885, 887, 888, 889, 886, 891, 892, 890, 893, 894, 895, 896, 883, 241, 241, 879, 879, 879, 879, 879, 879, 240, 243, 879, 241, 879, 241, 879, 241, 879, 241, 897, 879, 241, 879, 241, 879, 241, 879, 241, 879, 898, 899, 848, 900, 239, 848, 813, 239, 239, 848, 239, 858, 848, 902, 902, 904, 905, 902, 903, 907, 906, 903, 906, 906, 901, 904, 908, 909, 909, 909, 909, 910, 911, 911, 911, 911, 911, 910, 912, 913, 915, 914, 916, 914, 914, 917, 917, 917, 917, 281, 918, 280, 919, 920, 921, 921, 921, 921, 281, 282, 280, 293, 921, 922, 923, 924, 924, 924, 924, 274, 279, 273, 925, 924, 926, 921, 921, 921, 921, 927, 265, 917, 917, 917, 274, 275, 273, 917, 917, 917, 928, 290, 929, 930, 930, 930, 930, 291, 290, 931, 930, 930, 930, 930, 927, 265, 294, 932, 930, 930, 930, 930, 274, 275, 273, 919, 919, 919, 265, 933, 933, 933, 936, 935, 935, 935, 934, 933, 933, 933, 937, 933, 933, 933, 938, 933, 933, 933, 939, 933, 933, 933, 933, 940, 940, 940, 937, 933, 933, 933, 941, 941, 941, 938, 933, 933, 933, 942, 942, 942, 939, 943, 298, 298, 298, 937, 945, 945, 945, 944, 298, 298, 298, 947, 946, 946, 946, 300, 298, 298, 298, 306, 948, 948, 948, 304, 298, 298, 298, 298, 299, 299, 299, 297, 949, 298, 298, 298, 933, 299, 950, 298, 298, 298, 939, 948, 950, 950, 950, 939, 298, 298, 308, 298, 308, 310, 309, 309, 309, 297, 298, 298, 298, 949, 315, 315, 315, 297, 951, 951, 951, 951, 939, 952, 954, 954, 954, 953, 953, 319, 320, 321, 322, 225, 225, 225, 225, 225, 318, 319, 320, 321, 322, 955, 848, 848, 848, 848, 848, 318, 319, 320, 321, 322, 956, 848, 848, 848, 848, 848, 318, 957, 326, 958, 848, 319, 320, 321, 322, 960, 959, 959, 959, 959, 788, 319, 320, 321, 322, 961, 962, 963, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 964, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 965, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 966, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 967, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 968, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 969, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 970, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 971, 959, 959, 959, 959, 788, 319, 320, 321, 322, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 973, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 974, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 970, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 975, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 974, 959, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 976, 977, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 978, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 979, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 980, 981, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 982, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 983, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 984, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 985, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 986, 987, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 988, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 989, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 979, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 990, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 991, 992, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 993, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 990, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 994, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 995, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 988, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 996, 824, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 986, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 997, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 998, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 999, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1000, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 988, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1001, 1002, 1003, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1003, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1004, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1005, 1006, 1007, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1008, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1009, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1010, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1011, 1012, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 972, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 983, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1013, 1014, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 990, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1015, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 824, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1016, 1017, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 983, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 988, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1018, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1019, 1020, 1021, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 990, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1022, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1023, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 997, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1024, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 997, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1025, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 983, 1026, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1027, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 997, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1028, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 1029, 959, 959, 959, 959, 788, 319, 320, 321, 322, 959, 977, 959, 959, 959, 959, 788, 1030, 239, 858, 848, 1032, 1032, 1034, 1032, 1034, 1035, 1036, 1033, 1033, 1034, 1033, 1033, 1033, 1031, 329, 1037, 1037, 1037, 1037, 1037, 328, 1034, 1034, 1034, 1038, 1039, 1039, 1039, 1039, 1040, 1041, 1041, 1041, 1041, 1042, 331, 1043, 1037, 1045, 1045, 1048, 1049, 1045, 1047, 1050, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1072, 1073, 1074, 1075, 1076, 1054, 1077, 1051, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1054, 1046, 1046, 1047, 1046, 1051, 1054, 1063, 1071, 1044, 1097, 1098, 334, 334, 334, 334, 334, 1044, 1100, 1099, 1101, 1102, 1047, 1047, 1047, 1103, 1048, 1047, 1047, 1103, 1106, 1105, 1107, 1107, 1105, 1104, 1110, 1109, 1109, 1108, 1106, 1105, 1105, 1104, 1111, 1111, 1111, 1111, 1112, 1113, 1113, 1113, 1113, 1114, 1115, 1115, 1116, 333, 333, 333, 1115, 333, 1115, 333, 1117, 333, 1115, 1115, 338, 1118, 1118, 1118, 1118, 1118, 338, 1117, 1118, 1106, 1105, 1119, 1105, 1104, 1106, 1105, 1054, 1119, 1105, 1104, 1122, 1121, 1121, 1120, 1123, 1106, 1105, 1054, 1119, 1105, 1104, 1106, 1105, 1119, 1124, 1105, 1104, 1126, 1126, 1126, 1125, 1128, 337, 1127, 1059, 1129, 1132, 1133, 1132, 1130, 337, 1130, 1130, 1130, 1131, 1134, 1134, 335, 334, 1135, 1130, 335, 1130, 1130, 1130, 1131, 335, 1136, 337, 1136, 1139, 1141, 1142, 1143, 1144, 1145, 1146, 1141, 1142, 1143, 1144, 1145, 1137, 1140, 1137, 1137, 1137, 1138, 1150, 1147, 1149, 1147, 1147, 1147, 1148, 1147, 1147, 1147, 1147, 1148, 1154, 1151, 1153, 1151, 1151, 1151, 1152, 1156, 1147, 1155, 1147, 1147, 1147, 1148, 1150, 1147, 1155, 1147, 1147, 1147, 1148, 1160, 1157, 1159, 1157, 1157, 1157, 1158, 1162, 1147, 1161, 1147, 1147, 1147, 1148, 1150, 1147, 1161, 1147, 1147, 1147, 1148, 1166, 1163, 1165, 1163, 1163, 1163, 1164, 1171, 1167, 1169, 1167, 1170, 1167, 1170, 1167, 1168, 1174, 1147, 1172, 1147, 1173, 1147, 1173, 1147, 1148, 1150, 1147, 1172, 1147, 1173, 1147, 1173, 1147, 1148, 1147, 1147, 1175, 1147, 1147, 1147, 1148, 1176, 1147, 1175, 1147, 1147, 1147, 1148, 1179, 1181, 1182, 1181, 1177, 1180, 1177, 1177, 1177, 1178, 1147, 1147, 1183, 1147, 1147, 1147, 1148, 1184, 1185, 1186, 1185, 1147, 1183, 1147, 1147, 1147, 1148, 1187, 1129, 1106, 1105, 1054, 1188, 1105, 1104, 1106, 1105, 1107, 1105, 1104, 1189, 1107, 1107, 1129, 1106, 1105, 1107, 1105, 1104, 1106, 1105, 1107, 1054, 1105, 1104, 1190, 1115, 1115, 1115, 1115, 1115, 338, 1191, 334, 334, 334, 334, 334, 1071, 1192, 1191, 1194, 1193, 1193, 1193, 1193, 1193, 1071, 1191, 1195, 1193, 1193, 1193, 1193, 1193, 1071, 1191, 1196, 1193, 1193, 1193, 1193, 1193, 1071, 1191, 1197, 1193, 1193, 1193, 1193, 1193, 1071, 1134, 1134, 1191, 1199, 1193, 1193, 1198, 1193, 1193, 1193, 1071, 1201, 1202, 1130, 1198, 1130, 1130, 1130, 1200, 1191, 1136, 1136, 1198, 1136, 1136, 1136, 1071, 1191, 1197, 1193, 1193, 1193, 1193, 1193, 1071, 1203, 1115, 1115, 1205, 1206, 1115, 1204, 1205, 1207, 1097, 1098, 1209, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1210, 1211, 1212, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1213, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1214, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1215, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1216, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1217, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1218, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1219, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1220, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1221, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1222, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1223, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1224, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1225, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1226, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1227, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1223, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1228, 1229, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1230, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1231, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1232, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1233, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1234, 1235, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1236, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1237, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1233, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1238, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1239, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1240, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1241, 1242, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1243, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1233, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1244, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1245, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1246, 1208, 1208, 1208, 1208, 1044, 342, 341, 1097, 343, 1098, 1247, 1247, 341, 1247, 1247, 1247, 1247, 1044, 1097, 1098, 1208, 1248, 1249, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1250, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1251, 1252, 1251, 1251, 1251, 1251, 1044, 1097, 1098, 1208, 1253, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1254, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1255, 1208, 1208, 1208, 1208, 1044, 1097, 1256, 1208, 1208, 1208, 1208, 1208, 1044, 1097, 1134, 1134, 1098, 1208, 1258, 1259, 1208, 1257, 1208, 1208, 1208, 1044, 1261, 1262, 1263, 1130, 1257, 1130, 1130, 1130, 1260, 1097, 1098, 1136, 1136, 1257, 1136, 1136, 1136, 1044, 1097, 1098, 1208, 1264, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1233, 1265, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1233, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1226, 1266, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1267, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1243, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1268, 1087, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1269, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1270, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1226, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1233, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1271, 1233, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1272, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1273, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1274, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1243, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1275, 1276, 1277, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1278, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1240, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1226, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1279, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1280, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1281, 1282, 1283, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1226, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1284, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1285, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1271, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1286, 1287, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1226, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1288, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1240, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1289, 1290, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1291, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1226, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1292, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1293, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1279, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1294, 1295, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1237, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1270, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1296, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1297, 1298, 1299, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1300, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1232, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1301, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1302, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1271, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1303, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1271, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1304, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1237, 1305, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1306, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1271, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1307, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1308, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1309, 1208, 1208, 1208, 1208, 1044, 1097, 1098, 1208, 1279, 1208, 1208, 1208, 1208, 1044, 1310, 1106, 1105, 1119, 1054, 1105, 1104, 1311, 1313, 1313, 1314, 1313, 1312, 346, 346, 347, 346, 1315, 1315, 1315, 1315, 1315, 348, 1317, 1317, 1317, 1318, 1316, 1320, 1319, 1321, 1321, 1322, 1321, 351, 0 ] class << self attr_accessor :_lex_trans_targs private :_lex_trans_targs, :_lex_trans_targs= end self._lex_trans_targs = [ 205, 2, 3, 4, 5, 205, 205, 211, 205, 8, 9, 10, 11, 12, 205, 205, 13, 214, 218, 214, 15, 219, 17, 226, 227, 214, 230, 231, 238, 239, 232, 233, 234, 22, 235, 236, 237, 23, 228, 229, 20, 241, 243, 244, 245, 246, 247, 248, 242, 28, 31, 21, 30, 249, 34, 35, 263, 36, 261, 38, 46, 271, 262, 268, 265, 40, 39, 41, 270, 42, 43, 44, 45, 269, 272, 273, 275, 278, 275, 49, 279, 51, 286, 287, 275, 290, 291, 298, 299, 292, 293, 294, 56, 295, 296, 297, 57, 288, 289, 54, 301, 303, 304, 305, 306, 307, 308, 302, 62, 65, 55, 64, 309, 68, 69, 323, 70, 321, 72, 80, 331, 322, 328, 325, 74, 73, 75, 330, 76, 77, 78, 79, 329, 332, 333, 346, 345, 0, 83, 347, 348, 85, 349, 350, 350, 350, 462, 88, 462, 462, 468, 468, 495, 91, 495, 91, 92, 498, 500, 502, 503, 501, 495, 504, 505, 507, 508, 99, 100, 509, 511, 96, 501, 101, 102, 107, 114, 512, 513, 495, 93, 93, 495, 93, 92, 94, 93, 93, 495, 93, 92, 94, 497, 98, 95, 95, 95, 97, 501, 103, 104, 105, 106, 108, 109, 112, 110, 111, 113, 115, 116, 521, 521, 528, 528, 120, 121, 122, 528, 124, 127, 125, 126, 128, 130, 538, 538, 538, 133, 134, 135, 136, 137, 538, 538, 550, 538, 538, 556, 538, 578, 538, 141, 579, 585, 144, 147, 149, 151, 152, 153, 147, 148, 589, 148, 589, 150, 597, 598, 599, 155, 163, 170, 626, 184, 602, 603, 538, 606, 607, 614, 615, 608, 609, 610, 159, 611, 612, 613, 160, 604, 605, 157, 617, 619, 620, 621, 622, 623, 624, 618, 165, 168, 158, 167, 625, 171, 172, 639, 173, 637, 175, 183, 647, 638, 644, 641, 177, 176, 178, 646, 179, 180, 181, 182, 645, 648, 649, 185, 540, 131, 542, 547, 187, 188, 651, 538, 742, 191, 192, 742, 742, 748, 748, 748, 774, 748, 772, 761, 803, 748, 199, 199, 200, 748, 922, 201, 202, 922, 925, 204, 927, 205, 205, 206, 207, 208, 210, 212, 213, 205, 205, 209, 205, 209, 205, 1, 205, 6, 7, 214, 214, 215, 215, 216, 217, 220, 214, 214, 14, 16, 214, 214, 221, 222, 223, 18, 26, 33, 250, 47, 214, 214, 214, 224, 225, 214, 19, 214, 214, 214, 214, 214, 214, 24, 25, 240, 27, 214, 214, 29, 32, 214, 251, 255, 259, 252, 253, 254, 256, 257, 258, 214, 260, 37, 266, 267, 264, 214, 214, 214, 214, 214, 274, 275, 275, 275, 276, 277, 280, 275, 48, 50, 275, 275, 281, 282, 283, 52, 60, 67, 310, 81, 275, 275, 275, 284, 285, 275, 53, 275, 275, 275, 275, 275, 275, 58, 59, 300, 61, 275, 275, 63, 66, 275, 311, 315, 319, 312, 313, 314, 316, 317, 318, 275, 320, 71, 326, 327, 324, 275, 275, 275, 275, 275, 334, 335, 335, 336, 336, 337, 338, 335, 335, 335, 339, 339, 339, 340, 341, 339, 339, 339, 342, 339, 339, 343, 344, 343, 82, 84, 345, 345, 345, 351, 350, 350, 352, 353, 354, 355, 357, 350, 360, 361, 362, 363, 364, 366, 368, 369, 370, 374, 376, 377, 378, 394, 399, 406, 411, 418, 425, 428, 429, 433, 427, 437, 445, 449, 451, 456, 458, 461, 350, 350, 350, 350, 350, 356, 350, 356, 350, 358, 86, 359, 350, 350, 350, 365, 367, 350, 371, 372, 373, 369, 375, 87, 350, 379, 380, 389, 392, 381, 382, 383, 384, 385, 386, 387, 388, 351, 390, 391, 393, 395, 398, 396, 397, 400, 403, 401, 402, 404, 405, 407, 409, 408, 410, 412, 413, 350, 414, 415, 416, 417, 350, 419, 422, 420, 421, 423, 424, 426, 430, 431, 432, 434, 436, 435, 438, 439, 440, 442, 441, 443, 444, 446, 447, 448, 450, 452, 453, 454, 455, 457, 459, 460, 463, 462, 462, 464, 465, 467, 462, 462, 462, 466, 462, 466, 89, 469, 468, 468, 478, 479, 480, 481, 468, 483, 484, 485, 486, 488, 490, 491, 492, 493, 494, 468, 470, 472, 477, 468, 471, 468, 468, 473, 475, 476, 468, 474, 468, 468, 468, 468, 468, 468, 482, 468, 482, 487, 468, 489, 468, 90, 495, 495, 496, 496, 514, 500, 515, 516, 504, 517, 518, 519, 520, 495, 495, 495, 495, 495, 499, 495, 499, 495, 495, 501, 506, 495, 495, 495, 495, 495, 495, 510, 495, 495, 495, 495, 521, 521, 522, 523, 525, 526, 527, 521, 521, 524, 521, 524, 521, 117, 521, 521, 528, 528, 529, 528, 530, 531, 533, 534, 535, 536, 537, 528, 528, 532, 528, 532, 528, 118, 119, 123, 129, 539, 538, 548, 549, 551, 552, 553, 555, 557, 558, 559, 561, 562, 563, 565, 566, 588, 591, 592, 593, 651, 652, 653, 654, 655, 560, 656, 672, 677, 684, 689, 691, 697, 700, 701, 705, 699, 709, 718, 722, 725, 733, 737, 740, 741, 538, 541, 538, 538, 543, 545, 546, 538, 544, 538, 538, 538, 538, 132, 538, 538, 538, 554, 538, 554, 538, 538, 138, 538, 538, 139, 538, 538, 560, 538, 564, 538, 567, 577, 538, 140, 580, 581, 582, 538, 583, 142, 586, 143, 145, 587, 538, 568, 570, 576, 538, 569, 538, 538, 571, 574, 575, 538, 572, 573, 538, 538, 538, 538, 584, 146, 590, 538, 538, 538, 538, 538, 594, 595, 154, 538, 538, 596, 538, 538, 538, 538, 600, 601, 538, 156, 538, 538, 538, 538, 538, 538, 161, 162, 616, 164, 538, 538, 166, 169, 538, 627, 631, 635, 628, 629, 630, 632, 633, 634, 538, 636, 174, 642, 643, 640, 538, 538, 538, 538, 538, 650, 186, 189, 538, 190, 538, 657, 658, 667, 670, 659, 660, 661, 662, 663, 664, 665, 666, 539, 668, 669, 671, 673, 676, 674, 675, 678, 681, 679, 680, 682, 683, 685, 687, 686, 688, 690, 692, 694, 693, 695, 696, 698, 539, 702, 703, 704, 706, 708, 707, 710, 711, 712, 715, 713, 714, 539, 716, 717, 719, 720, 721, 723, 724, 726, 727, 728, 731, 729, 730, 732, 734, 735, 736, 738, 739, 538, 743, 742, 742, 744, 745, 747, 742, 742, 742, 746, 742, 746, 193, 749, 748, 748, 753, 748, 754, 755, 748, 758, 760, 763, 764, 765, 766, 767, 748, 768, 770, 777, 792, 795, 748, 796, 798, 800, 748, 801, 802, 804, 808, 812, 813, 748, 815, 833, 838, 845, 852, 859, 868, 873, 874, 878, 872, 883, 893, 899, 902, 911, 915, 919, 920, 921, 750, 752, 748, 751, 748, 748, 748, 748, 756, 756, 757, 748, 756, 756, 748, 759, 748, 759, 748, 194, 762, 748, 748, 748, 756, 756, 748, 769, 748, 769, 748, 771, 748, 748, 748, 773, 776, 195, 775, 748, 748, 748, 196, 778, 780, 783, 773, 786, 787, 790, 748, 748, 778, 779, 748, 748, 781, 779, 781, 782, 748, 748, 784, 779, 784, 785, 748, 748, 784, 779, 748, 748, 788, 788, 779, 788, 788, 789, 791, 790, 748, 748, 196, 792, 773, 793, 794, 196, 773, 793, 748, 797, 799, 197, 198, 748, 748, 805, 806, 807, 802, 809, 811, 802, 198, 810, 748, 748, 748, 814, 748, 748, 816, 817, 826, 831, 818, 819, 820, 821, 822, 823, 824, 825, 749, 827, 828, 829, 830, 749, 832, 834, 837, 835, 836, 749, 749, 839, 842, 840, 841, 843, 844, 749, 846, 848, 847, 849, 850, 851, 748, 853, 749, 854, 748, 855, 856, 857, 858, 752, 860, 862, 865, 749, 750, 752, 861, 863, 864, 866, 867, 869, 870, 871, 749, 875, 876, 877, 879, 881, 882, 880, 749, 884, 885, 886, 889, 887, 888, 890, 891, 892, 894, 896, 895, 897, 898, 900, 901, 903, 904, 906, 909, 905, 907, 908, 910, 912, 913, 914, 916, 917, 918, 748, 748, 922, 923, 924, 922, 925, 925, 926, 925, 203, 925, 925 ] class << self attr_accessor :_lex_trans_actions private :_lex_trans_actions, :_lex_trans_actions= end self._lex_trans_actions = [ 379, 0, 0, 0, 0, 365, 408, 0, 845, 0, 0, 0, 0, 0, 367, 411, 0, 53, 0, 39, 0, 0, 0, 0, 35, 51, 0, 717, 35, 0, 35, 0, 0, 0, 0, 717, 35, 0, 0, 0, 0, 35, 0, 717, 35, 0, 35, 35, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 69, 0, 57, 0, 0, 0, 0, 35, 67, 0, 717, 35, 0, 35, 0, 0, 0, 0, 717, 35, 0, 0, 0, 0, 35, 0, 717, 35, 0, 35, 35, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 129, 103, 801, 143, 0, 133, 805, 161, 809, 191, 0, 813, 5, 0, 0, 1029, 0, 11, 1029, 169, 1029, 0, 0, 0, 0, 0, 0, 0, 0, 738, 0, 0, 0, 0, 0, 0, 193, 7, 537, 1090, 925, 537, 537, 0, 9, 1075, 540, 9, 9, 1096, 519, 0, 5, 381, 5, 732, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 817, 217, 821, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 277, 241, 273, 0, 0, 0, 0, 0, 243, 402, 0, 275, 225, 0, 245, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 672, 0, 1, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 35, 271, 0, 717, 35, 0, 35, 0, 0, 0, 0, 717, 35, 0, 0, 0, 0, 35, 0, 717, 35, 0, 35, 35, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 753, 829, 289, 0, 0, 279, 833, 343, 295, 345, 0, 341, 0, 0, 0, 339, 0, 1, 0, 291, 353, 0, 0, 347, 363, 0, 0, 369, 371, 0, 5, 0, 35, 35, 35, 373, 961, 7, 567, 0, 377, 0, 375, 5, 0, 43, 41, 0, 1, 0, 35, 35, 47, 49, 0, 0, 37, 45, 3, 3, 3, 3, 3, 3, 3, 3, 423, 504, 450, 0, 0, 432, 0, 901, 441, 853, 1060, 889, 1045, 1, 1, 35, 0, 877, 865, 1, 0, 486, 0, 0, 35, 0, 0, 0, 0, 0, 0, 468, 0, 0, 0, 0, 35, 495, 913, 414, 477, 459, 0, 61, 59, 384, 0, 35, 35, 65, 0, 0, 55, 63, 3, 3, 3, 3, 3, 3, 3, 3, 426, 507, 453, 0, 0, 435, 0, 905, 444, 857, 1065, 893, 1050, 1, 1, 35, 0, 881, 869, 1, 0, 489, 0, 0, 35, 0, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 35, 498, 917, 417, 480, 462, 0, 73, 71, 0, 1, 0, 0, 75, 77, 513, 81, 79, 390, 0, 0, 85, 516, 849, 3, 83, 387, 87, 0, 89, 0, 0, 93, 97, 95, 729, 111, 109, 0, 5, 0, 0, 35, 105, 0, 0, 0, 0, 0, 0, 0, 726, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 101, 125, 121, 929, 7, 543, 0, 127, 0, 0, 0, 119, 123, 107, 0, 0, 115, 0, 0, 0, 723, 0, 5, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 723, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 137, 135, 0, 0, 35, 141, 139, 933, 7, 546, 0, 5, 0, 149, 147, 0, 5, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 153, 0, 0, 0, 570, 0, 585, 597, 0, 0, 0, 606, 0, 633, 624, 615, 157, 155, 937, 7, 549, 0, 0, 159, 0, 151, 5, 171, 173, 741, 1025, 741, 738, 0, 0, 738, 0, 0, 0, 741, 189, 187, 185, 163, 798, 732, 396, 738, 660, 179, 735, 0, 177, 181, 165, 175, 167, 393, 0, 183, 648, 522, 663, 197, 199, 0, 0, 35, 0, 0, 201, 941, 7, 552, 0, 203, 5, 195, 525, 209, 211, 0, 825, 5, 0, 35, 0, 35, 35, 35, 213, 945, 7, 555, 0, 215, 5, 0, 0, 0, 756, 247, 0, 1021, 5, 0, 0, 35, 744, 0, 0, 0, 0, 0, 0, 35, 35, 0, 759, 35, 759, 759, 759, 0, 35, 759, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 0, 759, 576, 0, 591, 603, 0, 0, 0, 612, 0, 639, 630, 621, 265, 0, 267, 269, 949, 7, 558, 0, 223, 227, 0, 251, 261, 0, 666, 249, 744, 219, 0, 221, 0, 0, 229, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 253, 0, 0, 0, 573, 0, 588, 600, 0, 0, 0, 609, 0, 0, 636, 642, 627, 618, 0, 0, 0, 675, 233, 237, 235, 399, 0, 0, 0, 257, 255, 0, 259, 429, 510, 456, 0, 0, 438, 0, 909, 447, 861, 1070, 897, 1055, 1, 1, 35, 0, 885, 873, 1, 0, 492, 0, 0, 35, 0, 0, 0, 0, 0, 0, 474, 0, 0, 0, 0, 35, 501, 921, 420, 483, 465, 0, 0, 0, 651, 5, 263, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 753, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 750, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 747, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, 528, 35, 283, 281, 0, 0, 35, 287, 285, 953, 7, 561, 0, 5, 792, 311, 309, 0, 841, 5, 0, 293, 0, 35, 0, 0, 0, 0, 0, 303, 0, 0, 35, 35, 0, 305, 0, 0, 0, 301, 35, 789, 789, 789, 0, 0, 299, 0, 0, 0, 0, 0, 792, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 795, 579, 0, 594, 582, 333, 714, 29, 708, 0, 329, 0, 1, 957, 7, 564, 0, 337, 0, 0, 323, 711, 969, 657, 965, 669, 29, 313, 0, 325, 0, 331, 705, 702, 1037, 27, 0, 27, 319, 1017, 1013, 693, 23, 693, 693, 1085, 693, 693, 693, 699, 696, 0, 25, 1001, 997, 21, 687, 0, 25, 985, 981, 17, 681, 0, 25, 993, 989, 19, 684, 977, 973, 15, 678, 678, 0, 25, 25, 0, 25, 1009, 1005, 690, 720, 1080, 690, 35, 25, 1033, 25, 297, 0, 0, 0, 0, 645, 321, 789, 789, 789, 783, 786, 789, 1037, 27, 1037, 654, 307, 837, 5, 335, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 780, 0, 0, 0, 0, 783, 0, 0, 0, 0, 0, 765, 771, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 35, 317, 0, 762, 0, 315, 0, 0, 0, 0, 777, 0, 0, 0, 1037, 27, 1041, 27, 0, 0, 0, 0, 0, 0, 0, 768, 0, 0, 0, 0, 0, 0, 0, 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 531, 534, 349, 35, 0, 351, 355, 357, 35, 361, 0, 359, 405 ] class << self attr_accessor :_lex_to_state_actions private :_lex_to_state_actions, :_lex_to_state_actions= end self._lex_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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 31, 0, 0, 0, 31, 0, 31, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 31, 0, 0 ] class << self attr_accessor :_lex_from_state_actions private :_lex_from_state_actions, :_lex_from_state_actions= end self._lex_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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 33, 0, 33, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 33, 0, 0 ] class << self attr_accessor :_lex_eof_trans private :_lex_eof_trans, :_lex_eof_trans= end self._lex_eof_trans = [ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 18, 18, 18, 18, 26, 26, 26, 26, 26, 26, 26, 18, 26, 26, 26, 26, 26, 26, 18, 18, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 18, 77, 77, 77, 77, 77, 85, 85, 85, 85, 85, 85, 85, 77, 85, 85, 85, 85, 85, 85, 77, 77, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 77, 0, 0, 0, 0, 144, 144, 147, 147, 151, 153, 180, 180, 180, 180, 180, 180, 180, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 212, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 226, 228, 228, 228, 228, 228, 228, 237, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 268, 268, 268, 268, 268, 268, 268, 237, 268, 268, 268, 268, 268, 268, 237, 237, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 237, 226, 237, 237, 237, 237, 237, 328, 328, 328, 333, 335, 337, 333, 335, 341, 341, 346, 346, 350, 350, 0, 361, 361, 362, 364, 366, 368, 366, 366, 0, 378, 378, 379, 383, 383, 379, 392, 393, 394, 394, 394, 397, 397, 399, 400, 401, 401, 401, 402, 403, 404, 404, 404, 401, 401, 397, 397, 409, 410, 410, 410, 410, 410, 410, 399, 413, 413, 413, 413, 413, 413, 413, 413, 423, 413, 413, 413, 413, 429, 413, 430, 413, 430, 413, 429, 431, 431, 432, 433, 433, 0, 441, 441, 445, 445, 441, 454, 455, 456, 456, 456, 459, 459, 461, 462, 463, 463, 463, 464, 465, 466, 466, 466, 463, 463, 459, 459, 471, 472, 472, 472, 472, 472, 472, 461, 475, 475, 475, 475, 475, 475, 475, 475, 485, 475, 475, 475, 475, 491, 475, 492, 475, 492, 475, 491, 493, 493, 494, 495, 495, 0, 503, 503, 504, 0, 511, 511, 515, 0, 519, 0, 522, 522, 523, 524, 0, 564, 566, 566, 567, 568, 570, 572, 576, 576, 567, 567, 567, 577, 567, 567, 572, 567, 567, 564, 581, 581, 581, 581, 581, 581, 572, 572, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 621, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, 567, 0, 664, 665, 666, 668, 664, 0, 689, 693, 695, 696, 700, 702, 703, 704, 693, 705, 705, 706, 707, 709, 706, 706, 706, 706, 706, 712, 706, 706, 714, 712, 712, 706, 0, 729, 730, 731, 180, 180, 180, 737, 738, 180, 731, 731, 741, 742, 744, 748, 749, 750, 731, 729, 751, 731, 742, 729, 729, 729, 0, 759, 760, 762, 764, 764, 767, 0, 779, 779, 780, 782, 784, 784, 784, 784, 784, 0, 226, 834, 836, 837, 841, 843, 844, 845, 834, 846, 846, 848, 846, 849, 850, 852, 849, 857, 858, 860, 861, 226, 858, 858, 849, 849, 849, 849, 880, 884, 886, 887, 891, 894, 895, 896, 897, 884, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 880, 849, 901, 849, 849, 849, 849, 909, 910, 912, 913, 914, 915, 915, 915, 918, 918, 920, 921, 922, 922, 922, 923, 924, 925, 925, 925, 922, 922, 918, 918, 930, 931, 931, 931, 931, 931, 931, 920, 934, 934, 934, 934, 934, 934, 934, 934, 944, 934, 934, 934, 934, 950, 934, 951, 934, 951, 934, 950, 952, 952, 953, 954, 954, 226, 849, 849, 958, 849, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 960, 1031, 849, 0, 1038, 1039, 1040, 1042, 1038, 0, 335, 1100, 1102, 1103, 1104, 1104, 1105, 1109, 1105, 1112, 1114, 1116, 1119, 1119, 1105, 1105, 1121, 1124, 1105, 1105, 1126, 1128, 1130, 1131, 335, 1131, 1137, 1137, 1138, 1148, 1148, 1152, 1148, 1148, 1158, 1148, 1148, 1164, 1168, 1148, 1148, 1148, 1148, 1178, 1148, 1148, 1130, 1105, 1105, 1130, 1105, 1105, 1116, 335, 1193, 1194, 1194, 1194, 1194, 1194, 1131, 1137, 1194, 1204, 1116, 1208, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1248, 1209, 1209, 1252, 1209, 1209, 1209, 1209, 1209, 1131, 1137, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1209, 1311, 1105, 1312, 0, 1316, 1316, 0, 1320, 1322 ] class << self attr_accessor :lex_start end self.lex_start = 205; class << self attr_accessor :lex_error end self.lex_error = 0; class << self attr_accessor :lex_en_interp_words end self.lex_en_interp_words = 214; class << self attr_accessor :lex_en_interp_string end self.lex_en_interp_string = 275; class << self attr_accessor :lex_en_plain_words end self.lex_en_plain_words = 335; class << self attr_accessor :lex_en_plain_string end self.lex_en_plain_string = 339; class << self attr_accessor :lex_en_regexp_modifiers end self.lex_en_regexp_modifiers = 343; class << self attr_accessor :lex_en_expr_variable end self.lex_en_expr_variable = 345; class << self attr_accessor :lex_en_expr_fname end self.lex_en_expr_fname = 350; class << self attr_accessor :lex_en_expr_endfn end self.lex_en_expr_endfn = 462; class << self attr_accessor :lex_en_expr_dot end self.lex_en_expr_dot = 468; class << self attr_accessor :lex_en_expr_arg end self.lex_en_expr_arg = 495; class << self attr_accessor :lex_en_expr_endarg end self.lex_en_expr_endarg = 521; class << self attr_accessor :lex_en_expr_mid end self.lex_en_expr_mid = 528; class << self attr_accessor :lex_en_expr_beg end self.lex_en_expr_beg = 538; class << self attr_accessor :lex_en_expr_value end self.lex_en_expr_value = 742; class << self attr_accessor :lex_en_expr_end end self.lex_en_expr_end = 748; class << self attr_accessor :lex_en_leading_dot end self.lex_en_leading_dot = 922; class << self attr_accessor :lex_en_line_comment end self.lex_en_line_comment = 925; class << self attr_accessor :lex_en_line_begin end self.lex_en_line_begin = 205; # line 82 "lib/parser/lexer.rl" # % attr_reader :source_buffer attr_accessor :diagnostics attr_accessor :static_env attr_accessor :cond, :cmdarg attr_accessor :tokens, :comments def initialize(version) @version = version @static_env = nil @tokens = nil @comments = nil reset end def reset(reset_state=true) # Ragel state: if reset_state # Unit tests set state prior to resetting lexer. @cs = self.class.lex_en_line_begin @cond = StackState.new('cond') @cmdarg = StackState.new('cmdarg') end @p = 0 # stream position (saved manually in #advance) @ts = nil # token start @te = nil # token end @act = 0 # next action @stack = [] # state stack @top = 0 # state stack top pointer # Lexer state: @token_queue = [] @literal_stack = [] @eq_begin_s = nil # location of last encountered =begin @sharp_s = nil # location of last encountered # @newline_s = nil # location of last encountered newline @num_base = nil # last numeric base @num_digits_s = nil # starting position of numeric digits @escape_s = nil # starting position of current sequence @escape = nil # last escaped sequence, as string # See below the section on parsing heredocs. @heredoc_e = nil @herebody_s = nil # Ruby 1.9 ->() lambdas emit a distinct token if do/{ is # encountered after a matching closing parenthesis. @paren_nest = 0 @lambda_stack = [] end def source_buffer=(source_buffer) @source_buffer = source_buffer if @source_buffer # Heredoc processing coupled with weird newline quirks # require three '\0' (EOF) chars to be appended; after # `p = @heredoc_s`, if `p` points at EOF, the FSM could # not bail out early enough and will crash. # # Patches accepted. # @source = @source_buffer.source + "\0\0\0" else @source = nil end end LEX_STATES = { :line_begin => lex_en_line_begin, :expr_dot => lex_en_expr_dot, :expr_fname => lex_en_expr_fname, :expr_value => lex_en_expr_value, :expr_beg => lex_en_expr_beg, :expr_mid => lex_en_expr_mid, :expr_arg => lex_en_expr_arg, :expr_end => lex_en_expr_end, :expr_endarg => lex_en_expr_endarg, :expr_endfn => lex_en_expr_endfn, } def state LEX_STATES.invert.fetch(@cs, @cs) end def state=(state) @cs = LEX_STATES.fetch(state) end # Return next token: [type, value]. def advance if @token_queue.any? return @token_queue.shift end # Ugly, but dependent on Ragel output. Consider refactoring it somehow. _lex_trans_keys = self.class.send :_lex_trans_keys _lex_actions = self.class.send :_lex_actions _lex_key_offsets = self.class.send :_lex_key_offsets _lex_index_offsets = self.class.send :_lex_index_offsets _lex_single_lengths = self.class.send :_lex_single_lengths _lex_range_lengths = self.class.send :_lex_range_lengths _lex_indicies = self.class.send :_lex_indicies _lex_trans_targs = self.class.send :_lex_trans_targs _lex_trans_actions = self.class.send :_lex_trans_actions _lex_to_state_actions = self.class.send :_lex_to_state_actions _lex_from_state_actions = self.class.send :_lex_from_state_actions p, pe, eof = @p, @source.length + 1, nil # line 3296 "lib/parser/lexer.rb" begin _klen, _trans, _keys, _acts, _nacts = nil _goto_level = 0 _resume = 10 _eof_trans = 15 _again = 20 _test_eof = 30 _out = 40 while true _trigger_goto = false if _goto_level <= 0 if p == pe _goto_level = _test_eof next end if @cs == 0 _goto_level = _out next end end if _goto_level <= _resume _acts = _lex_from_state_actions[ @cs] _nacts = _lex_actions[_acts] _acts += 1 while _nacts > 0 _nacts -= 1 _acts += 1 case _lex_actions[_acts - 1] when 47 then # line 1 "NONE" begin @ts = p end # line 3330 "lib/parser/lexer.rb" end # from state action switch end if _trigger_goto next end _keys = _lex_key_offsets[ @cs] _trans = _lex_index_offsets[ @cs] _klen = _lex_single_lengths[ @cs] _break_match = false begin if _klen > 0 _lower = _keys _upper = _keys + _klen - 1 loop do break if _upper < _lower _mid = _lower + ( (_upper - _lower) >> 1 ) if ( @source[p].ord) < _lex_trans_keys[_mid] _upper = _mid - 1 elsif ( @source[p].ord) > _lex_trans_keys[_mid] _lower = _mid + 1 else _trans += (_mid - _keys) _break_match = true break end end # loop break if _break_match _keys += _klen _trans += _klen end _klen = _lex_range_lengths[ @cs] if _klen > 0 _lower = _keys _upper = _keys + (_klen << 1) - 2 loop do break if _upper < _lower _mid = _lower + (((_upper-_lower) >> 1) & ~1) if ( @source[p].ord) < _lex_trans_keys[_mid] _upper = _mid - 2 elsif ( @source[p].ord) > _lex_trans_keys[_mid+1] _lower = _mid + 2 else _trans += ((_mid - _keys) >> 1) _break_match = true break end end # loop break if _break_match _trans += _klen end end while false _trans = _lex_indicies[_trans] end if _goto_level <= _eof_trans @cs = _lex_trans_targs[_trans] if _lex_trans_actions[_trans] != 0 _acts = _lex_trans_actions[_trans] _nacts = _lex_actions[_acts] _acts += 1 while _nacts > 0 _nacts -= 1 _acts += 1 case _lex_actions[_acts - 1] when 0 then # line 372 "lib/parser/lexer.rl" begin # Record position of a newline for precise line and column reporting. # # This action is embedded directly into c_nl, as it is idempotent and # there are no cases when we need to skip it. @newline_s = p end when 1 then # line 500 "lib/parser/lexer.rl" begin @escape = "" codepoints = tok(@escape_s + 2, p - 1) codepoint_s = @escape_s + 2 codepoints.split(/[ \t]/).each do |codepoint_str| codepoint = codepoint_str.to_i(16) if codepoint >= 0x110000 @escape = lambda do diagnostic :error, Parser::ERRORS[:unicode_point_too_large], range(codepoint_s, codepoint_s + codepoint_str.length) end break end @escape += codepoint.chr(Encoding::UTF_8) codepoint_s += codepoint_str.length + 1 end end when 2 then # line 523 "lib/parser/lexer.rl" begin @escape = { 'a' => "\a", 'b' => "\b", 'e' => "\e", 'f' => "\f", 'n' => "\n", 'r' => "\r", 's' => "\s", 't' => "\t", 'v' => "\v", '\\' => "\\" }.fetch(@source[p - 1].chr, @source[p - 1].chr) end when 3 then # line 531 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_escape] end end when 4 then # line 537 "lib/parser/lexer.rl" begin @escape = (@escape[0].ord & 0x9f).chr end when 5 then # line 541 "lib/parser/lexer.rl" begin @escape = (@escape[0].ord | 0x80).chr end when 6 then # line 547 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end when 7 then # line 552 "lib/parser/lexer.rl" begin @escape = "\x7f" end when 8 then # line 553 "lib/parser/lexer.rl" begin @escape = @source[p - 1].chr end when 9 then # line 559 "lib/parser/lexer.rl" begin @escape = tok(@escape_s, p).to_i(8).chr end when 10 then # line 563 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr end when 11 then # line 566 "lib/parser/lexer.rl" begin @escape = tok(@escape_s + 1, p).to_i(16).chr(Encoding::UTF_8) end when 12 then # line 571 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_hex_escape], range(@escape_s - 1, p + 2) end end when 13 then # line 586 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :error, Parser::ERRORS[:invalid_unicode_escape], range(@escape_s - 1, p) end end when 14 then # line 600 "lib/parser/lexer.rl" begin @escape = lambda do diagnostic :fatal, Parser::ERRORS[:unterminated_unicode], range(p - 1, p) end end when 15 then # line 629 "lib/parser/lexer.rl" begin diagnostic :fatal, Parser::ERRORS[:escape_eof], range(p - 1, p) end when 16 then # line 636 "lib/parser/lexer.rl" begin @escape_s = p @escape = nil end when 17 then # line 676 "lib/parser/lexer.rl" begin # After every heredoc was parsed, @herebody_s contains the # position of next token after all heredocs. if @herebody_s p = @herebody_s - 1 @herebody_s = nil end end when 18 then # line 810 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) if literal literal.start_interp_brace end end when 19 then # line 818 "lib/parser/lexer.rl" begin if literal if literal.end_interp_brace_and_try_closing if version?(18, 19) emit(:tRCURLY, '}') else emit(:tSTRING_DEND, '}') end if literal.saved_herebody_s @herebody_s = literal.saved_herebody_s end p = p - 1; @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 20 then # line 921 "lib/parser/lexer.rl" begin @sharp_s = p - 1 end when 21 then # line 921 "lib/parser/lexer.rl" begin emit_comment(@sharp_s, p) end when 22 then # line 952 "lib/parser/lexer.rl" begin tm = p end when 23 then # line 953 "lib/parser/lexer.rl" begin tm = p - 2 end when 24 then # line 958 "lib/parser/lexer.rl" begin tm = p end when 25 then # line 959 "lib/parser/lexer.rl" begin tm = p - 2 end when 26 then # line 960 "lib/parser/lexer.rl" begin tm = p - 2 end when 27 then # line 961 "lib/parser/lexer.rl" begin tm = p - 2 end when 28 then # line 962 "lib/parser/lexer.rl" begin tm = p - 3 end when 29 then # line 967 "lib/parser/lexer.rl" begin tm = p - 2 end when 30 then # line 972 "lib/parser/lexer.rl" begin tm = p - 2 end when 31 then # line 978 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) end when 32 then # line 985 "lib/parser/lexer.rl" begin @cond.push(false); @cmdarg.push(false) @paren_nest += 1 end when 33 then # line 991 "lib/parser/lexer.rl" begin @paren_nest -= 1 end when 34 then # line 1203 "lib/parser/lexer.rl" begin tm = p end when 35 then # line 1368 "lib/parser/lexer.rl" begin @heredoc_e = p end when 36 then # line 1369 "lib/parser/lexer.rl" begin new_herebody_s = p end when 37 then # line 1667 "lib/parser/lexer.rl" begin @num_base = 16; @num_digits_s = p end when 38 then # line 1669 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = p end when 39 then # line 1671 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = p end when 40 then # line 1673 "lib/parser/lexer.rl" begin @num_base = 2; @num_digits_s = p end when 41 then # line 1676 "lib/parser/lexer.rl" begin @num_base = 10; @num_digits_s = @ts end when 42 then # line 1678 "lib/parser/lexer.rl" begin @num_base = 8; @num_digits_s = @ts end when 43 then # line 1680 "lib/parser/lexer.rl" begin tm = p end when 44 then # line 1716 "lib/parser/lexer.rl" begin tm = p end when 45 then # line 1789 "lib/parser/lexer.rl" begin tm = p end when 48 then # line 1 "NONE" begin @te = p+1 end when 49 then # line 838 "lib/parser/lexer.rl" begin @te = p+1 begin literal.flush_string literal.extend_content emit(:tSTRING_DBEG, '#{') literal.saved_herebody_s = @herebody_s @herebody_s = nil literal.start_interp_brace begin @stack[ @top] = @cs @top+= 1 @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 50 then # line 786 "lib/parser/lexer.rl" begin @te = p+1 begin literal.flush_string literal.extend_content emit(:tSTRING_DVAR, nil, @ts, @ts + 1) p = @ts begin @stack[ @top] = @cs @top+= 1 @cs = 345 _trigger_goto = true _goto_level = _again break end end end when 51 then # line 741 "lib/parser/lexer.rl" begin @te = p+1 begin is_eof = eof_char? @source[p] if literal.heredoc? # Try ending the heredoc with the complete most recently # scanned line. @herebody_s always refers to the start of such line. if literal.nest_and_try_closing(tok(@herebody_s, @te - 1), @herebody_s, @te - 1) # Adjust @herebody_s to point to the next line. @herebody_s = @te # Continue regular lexing after the heredoc reference (< unknown_options.join } diagnostic :error, message end emit(:tREGEXP_OPT) @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 81 then # line 1000 "lib/parser/lexer.rl" begin @te = p+1 begin if tok =~ /^\$([1-9][0-9]*)$/ emit(:tNTH_REF, tok(@ts + 1).to_i) elsif tok =~ /^\$([&`'+])$/ emit(:tBACK_REF) else emit(:tGVAR) end @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 82 then # line 1000 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^\$([1-9][0-9]*)$/ emit(:tNTH_REF, tok(@ts + 1).to_i) elsif tok =~ /^\$([&`'+])$/ emit(:tBACK_REF) else emit(:tGVAR) end @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 83 then # line 1013 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@@[0-9]/ message = Parser::ERRORS[:cvar_name] % { :name => tok } diagnostic :error, message end emit(:tCVAR) @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 84 then # line 1024 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if tok =~ /^@[0-9]/ message = Parser::ERRORS[:ivar_name] % { :name => tok } diagnostic :error, message end emit(:tIVAR) @cs = (stack_pop); begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 85 then # line 1046 "lib/parser/lexer.rl" begin @act = 25; end when 86 then # line 1050 "lib/parser/lexer.rl" begin @act = 26; end when 87 then # line 1054 "lib/parser/lexer.rl" begin @act = 27; end when 88 then # line 1046 "lib/parser/lexer.rl" begin @te = p+1 begin emit(KEYWORDS[tok]); @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 89 then # line 1054 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tIDENTIFIER) @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 90 then # line 1058 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @stack[ @top] = @cs @top+= 1 @cs = 345 _trigger_goto = true _goto_level = _again break end end end when 91 then # line 1067 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 92 then # line 1071 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 93 then # line 1076 "lib/parser/lexer.rl" begin @te = p+1 end when 94 then # line 1079 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 95 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 96 then # line 1046 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(KEYWORDS[tok]); @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 97 then # line 1050 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 98 then # line 1054 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 99 then # line 1058 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @stack[ @top] = @cs @top+= 1 @cs = 345 _trigger_goto = true _goto_level = _again break end end end when 100 then # line 1067 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 101 then # line 1074 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 102 then # line 1076 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 103 then # line 1079 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 104 then # line 1079 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 105 then # line 1 "NONE" begin case @act when 25 then begin begin p = (( @te))-1; end emit(KEYWORDS[tok]); @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 26 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 27 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 462; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 106 then # line 1091 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tLABEL, tok(@ts, @te - 1)) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 107 then # line 1094 "lib/parser/lexer.rl" begin @te = p+1 end when 108 then # line 1097 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 109 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 110 then # line 1094 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 111 then # line 1097 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 112 then # line 1097 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 113 then # line 1123 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 114 then # line 1126 "lib/parser/lexer.rl" begin @te = p+1 end when 115 then # line 1129 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 116 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 117 then # line 1108 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 118 then # line 1112 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 119 then # line 1116 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) @cs = 495; p = tm - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 120 then # line 1123 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 121 then # line 1126 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 122 then # line 1129 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 123 then # line 1129 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 124 then # line 1189 "lib/parser/lexer.rl" begin @act = 51; end when 125 then # line 1204 "lib/parser/lexer.rl" begin @act = 53; end when 126 then # line 1239 "lib/parser/lexer.rl" begin @act = 57; end when 127 then # line 1245 "lib/parser/lexer.rl" begin @act = 58; end when 128 then # line 1248 "lib/parser/lexer.rl" begin @act = 59; end when 129 then # line 1189 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 130 then # line 1216 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 131 then # line 1230 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 132 then # line 1239 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 133 then # line 1245 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 134 then # line 1248 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 135 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 136 then # line 1145 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN_ARG, '(', @te - 1, @te) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 137 then # line 1151 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLPAREN2) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 138 then # line 1157 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACK, '[', @te - 1, @te) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 139 then # line 1163 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end else emit(:tLCURLY, '{', @te - 1, @te) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 140 then # line 1180 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 141 then # line 1194 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :warning, Parser::ERRORS[:ambiguous_literal], range(@te - 1, @te) p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 142 then # line 1204 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin message = Parser::ERRORS[:ambiguous_prefix] % { :prefix => tok(tm, @te) } diagnostic :warning, message, range(tm, @te) p = tm - 1 begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 143 then # line 1221 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 144 then # line 1230 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 145 then # line 1239 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 146 then # line 1245 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 147 then # line 1248 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 148 then # line 1248 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 149 then # line 1 "NONE" begin case @act when 51 then begin begin p = (( @te))-1; end p = p - 1; p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end when 53 then begin begin p = (( @te))-1; end message = Parser::ERRORS[:ambiguous_prefix] % { :prefix => tok(tm, @te) } diagnostic :warning, message, range(tm, @te) p = tm - 1 begin @cs = 538 _trigger_goto = true _goto_level = _again break end end when 57 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end when 58 then begin begin p = (( @te))-1; end p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end when 59 then begin begin p = (( @te))-1; end p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end end when 150 then # line 1274 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kDO_BLOCK) @cs = 742; end end when 151 then # line 1277 "lib/parser/lexer.rl" begin @te = p+1 end when 152 then # line 1280 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 153 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 154 then # line 1270 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tLBRACE_ARG) @cs = 742; end end when 155 then # line 1277 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 156 then # line 1280 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 157 then # line 1280 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 158 then # line 1292 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(KEYWORDS) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 159 then # line 1295 "lib/parser/lexer.rl" begin @te = p+1 end when 160 then # line 1297 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 161 then # line 1300 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 162 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 163 then # line 1295 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 164 then # line 1300 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 165 then # line 1300 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 166 then # line 1473 "lib/parser/lexer.rl" begin @act = 86; end when 167 then # line 1479 "lib/parser/lexer.rl" begin @act = 87; end when 168 then # line 1484 "lib/parser/lexer.rl" begin @act = 88; end when 169 then # line 1513 "lib/parser/lexer.rl" begin @act = 90; end when 170 then # line 1519 "lib/parser/lexer.rl" begin @act = 91; end when 171 then # line 1550 "lib/parser/lexer.rl" begin @act = 94; end when 172 then # line 1317 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if tok.start_with? '-' emit(:tUMINUS_NUM, '-', @ts, @ts + 1) @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 173 then # line 1337 "lib/parser/lexer.rl" begin @te = p+1 begin type = delimiter = tok[0].chr p = p - 1; begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 174 then # line 1344 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok[0].chr, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 175 then # line 1351 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok[0..-2], tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 176 then # line 1357 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, Parser::ERRORS[:string_eof], range(@ts, @ts + 1) end end when 177 then # line 1392 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 178 then # line 1406 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 179 then # line 1418 "lib/parser/lexer.rl" begin @te = p+1 begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tSTRING, value) end @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 180 then # line 1434 "lib/parser/lexer.rl" begin @te = p+1 begin escape = { " " => '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[tok[@ts + 1]] message = Parser::ERRORS[:invalid_escape_use] % { :escape => escape } diagnostic :warning, message, range(@ts, @ts + 1) p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 181 then # line 1446 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, Parser::ERRORS[:incomplete_escape], range(@ts, @ts + 1) end end when 182 then # line 1473 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 183 then # line 1492 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; if version?(18) emit(:tIDENTIFIER, tok(@ts, @te - 2), @ts, @te - 2) p = p - 1; # continue as a symbol else emit(:tLABEL, tok(@ts, @te - 2), @ts, @te - 1) end begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 184 then # line 1534 "lib/parser/lexer.rl" begin @te = p+1 end when 185 then # line 1537 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 205 _trigger_goto = true _goto_level = _again break end end end when 186 then # line 1550 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 187 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 188 then # line 1327 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSTAR) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 189 then # line 1351 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin type, delimiter = tok[0..-2], tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 190 then # line 1370 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin tok(@ts, @heredoc_e) =~ /^<<(-?)(["'`]?)(.*)\2$/ indent = !$1.empty? type = $2.empty? ? '"' : $2 delimiter = $3 @cs = (push_literal(type, delimiter, @ts, @heredoc_e, indent)); if @herebody_s.nil? @herebody_s = new_herebody_s end p = @herebody_s - 1 end end when 191 then # line 1398 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1, tm), @ts, tm) p = tm - 1 @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 192 then # line 1406 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tSYMBOL, tok(@ts + 1), @ts) @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 193 then # line 1418 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tSTRING, value) end @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 194 then # line 1434 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin escape = { " " => '\s', "\r" => '\r', "\n" => '\n', "\t" => '\t', "\v" => '\v', "\f" => '\f' }[tok[@ts + 1]] message = Parser::ERRORS[:invalid_escape_use] % { :escape => escape } diagnostic :warning, message, range(@ts, @ts + 1) p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 195 then # line 1453 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 196 then # line 1468 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 197 then # line 1473 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 198 then # line 1513 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 199 then # line 1519 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) if !version?(18) && !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end else @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 200 then # line 1534 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 201 then # line 1537 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1 begin @cs = 205 _trigger_goto = true _goto_level = _again break end end end when 202 then # line 1550 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 203 then # line 1418 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin # Show an error if memorized. @escape.call if @escape.respond_to? :call value = @escape || tok(@ts + 1) if version?(18) emit(:tINTEGER, value[0].ord) else emit(:tSTRING, value) end @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 204 then # line 1534 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 205 then # line 1550 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = @ts - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 206 then # line 1 "NONE" begin case @act when 86 then begin begin p = (( @te))-1; end emit_table(PUNCTUATION_BEGIN) begin p += 1 _trigger_goto = true _goto_level = _out break end end when 87 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 528; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 88 then begin begin p = (( @te))-1; end emit_table(KEYWORDS_BEGIN) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 90 then begin begin p = (( @te))-1; end p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end when 91 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) if !version?(18) && !@static_env.nil? && @static_env.declared?(tok) @cs = 748; begin p += 1 _trigger_goto = true _goto_level = _out break end else @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 94 then begin begin p = (( @te))-1; end p = @ts - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end end when 207 then # line 1560 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1 begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 208 then # line 1563 "lib/parser/lexer.rl" begin @te = p+1 end when 209 then # line 1566 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 210 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 211 then # line 1563 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 212 then # line 1566 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 213 then # line 1566 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 538 _trigger_goto = true _goto_level = _again break end end end when 214 then # line 1585 "lib/parser/lexer.rl" begin @act = 101; end when 215 then # line 1616 "lib/parser/lexer.rl" begin @act = 102; end when 216 then # line 1626 "lib/parser/lexer.rl" begin @act = 104; end when 217 then # line 1631 "lib/parser/lexer.rl" begin @act = 105; end when 218 then # line 1635 "lib/parser/lexer.rl" begin @act = 106; end when 219 then # line 1639 "lib/parser/lexer.rl" begin @act = 107; end when 220 then # line 1650 "lib/parser/lexer.rl" begin @act = 108; end when 221 then # line 1660 "lib/parser/lexer.rl" begin @act = 109; end when 222 then # line 1681 "lib/parser/lexer.rl" begin @act = 110; end when 223 then # line 1717 "lib/parser/lexer.rl" begin @act = 111; end when 224 then # line 1755 "lib/parser/lexer.rl" begin @act = 113; end when 225 then # line 1774 "lib/parser/lexer.rl" begin @act = 117; end when 226 then # line 1778 "lib/parser/lexer.rl" begin @act = 118; end when 227 then # line 1620 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:kCLASS, 'class', @ts, @ts + 5) emit(:tLSHFT, '<<', @te - 2, @te) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 228 then # line 1681 "lib/parser/lexer.rl" begin @te = p+1 begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 229 then # line 1717 "lib/parser/lexer.rl" begin @te = p+1 begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@ts, tm) if digits.start_with? '.' diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] elsif digits =~ /^[eE]/ # The rule above allows to specify floats as just `e10', which is # certainly not a float. Send a patch if you can do this better. emit(:tIDENTIFIER, digits, @ts, tm) begin p += 1 _trigger_goto = true _goto_level = _out break end end emit(:tFLOAT, digits.to_f, @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 230 then # line 1745 "lib/parser/lexer.rl" begin @te = p+1 begin type, delimiter = tok, tok[-1].chr begin @cs = (push_literal(type, delimiter, @ts)) _trigger_goto = true _goto_level = _again break end end end when 231 then # line 1763 "lib/parser/lexer.rl" begin @te = p+1 begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 345 _trigger_goto = true _goto_level = _again break end end end when 232 then # line 1770 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 468; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 233 then # line 1794 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 234 then # line 1799 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tOP_ASGN, tok(@ts, @te - 1)) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 235 then # line 1803 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 236 then # line 1811 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 237 then # line 1818 "lib/parser/lexer.rl" begin @te = p+1 end when 238 then # line 1820 "lib/parser/lexer.rl" begin @te = p+1 begin begin @cs = 922 _trigger_goto = true _goto_level = _again break end end end when 239 then # line 1823 "lib/parser/lexer.rl" begin @te = p+1 begin emit_table(PUNCTUATION) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 240 then # line 1826 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :error, Parser::ERRORS[:bare_backslash], range(@ts, @ts + 1) p = p - 1; end end when 241 then # line 1833 "lib/parser/lexer.rl" begin @te = p+1 begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect[1..-2] } diagnostic :fatal, message end end when 242 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 243 then # line 1577 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION, @ts, @ts + 2) @lambda_stack.push @paren_nest begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 244 then # line 1585 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit_table(PUNCTUATION) else # 'do' if @cond.active? emit(:kDO_COND) elsif @cmdarg.active? emit(:kDO_BLOCK) else emit(:kDO) end end end @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 245 then # line 1616 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 350; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 246 then # line 1631 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(KEYWORDS) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 247 then # line 1681 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 248 then # line 1717 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@ts, tm) if digits.start_with? '.' diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] elsif digits =~ /^[eE]/ # The rule above allows to specify floats as just `e10', which is # certainly not a float. Send a patch if you can do this better. emit(:tIDENTIFIER, digits, @ts, tm) begin p += 1 _trigger_goto = true _goto_level = _out break end end emit(:tFLOAT, digits.to_f, @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 249 then # line 1755 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 250 then # line 1759 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tCONSTANT, tok(@ts, tm), @ts, tm) p = tm - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 251 then # line 1763 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = @ts - 1; begin @stack[ @top] = @cs @top+= 1 @cs = 345 _trigger_goto = true _goto_level = _again break end end end when 252 then # line 1770 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 468; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 253 then # line 1774 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tIDENTIFIER) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 254 then # line 1778 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 255 then # line 1790 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION, @ts, tm) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 256 then # line 1794 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cond.lexpop; @cmdarg.lexpop begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 257 then # line 1807 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 258 then # line 1811 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_table(PUNCTUATION) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 259 then # line 1818 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 260 then # line 1826 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin diagnostic :error, Parser::ERRORS[:bare_backslash], range(@ts, @ts + 1) p = p - 1; end end when 261 then # line 1833 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect[1..-2] } diagnostic :fatal, message end end when 262 then # line 1631 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit_table(KEYWORDS) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 263 then # line 1681 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 264 then # line 1833 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin message = Parser::ERRORS[:unexpected] % { :character => tok.inspect[1..-2] } diagnostic :fatal, message end end when 265 then # line 1 "NONE" begin case @act when 101 then begin begin p = (( @te))-1; end if @lambda_stack.last == @paren_nest @lambda_stack.pop if tok == '{' emit(:tLAMBEG) else # 'do' emit(:kDO_LAMBDA) end else if tok == '{' emit_table(PUNCTUATION) else # 'do' if @cond.active? emit(:kDO_COND) elsif @cmdarg.active? emit(:kDO_BLOCK) else emit(:kDO) end end end @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 102 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 350; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 104 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 105 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 742; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 106 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) @cs = 528; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 107 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) if version?(18) && tok == 'not' @cs = 538; begin p += 1 _trigger_goto = true _goto_level = _out break end else @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 108 then begin begin p = (( @te))-1; end if version?(18) emit(:tIDENTIFIER) else emit_table(KEYWORDS) end begin p += 1 _trigger_goto = true _goto_level = _out break end end when 109 then begin begin p = (( @te))-1; end emit_table(KEYWORDS) begin p += 1 _trigger_goto = true _goto_level = _out break end end when 110 then begin begin p = (( @te))-1; end unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@num_digits_s, tm) if digits.end_with? '_' diagnostic :error, Parser::ERRORS[:trailing_underscore], range(tm - 1, tm) elsif digits.empty? && @num_base == 8 && version?(18) # 1.8 did not raise an error on 0o. digits = "0" elsif digits.empty? diagnostic :error, Parser::ERRORS[:empty_numeric] elsif @num_base == 8 && (invalid_idx = digits.index(/[89]/)) invalid_s = @num_digits_s + invalid_idx diagnostic :error, Parser::ERRORS[:invalid_octal], range(invalid_s, invalid_s + 1) end emit(:tINTEGER, digits.to_i(@num_base), @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end when 111 then begin begin p = (( @te))-1; end unless (char = tok(tm, @te)).empty? diagnostic :fatal, Parser::ERRORS[:unexpected] % { :character => char }, range(tm, tm + 1) end digits = tok(@ts, tm) if digits.start_with? '.' diagnostic :error, Parser::ERRORS[:no_dot_digit_literal] elsif digits =~ /^[eE]/ # The rule above allows to specify floats as just `e10', which is # certainly not a float. Send a patch if you can do this better. emit(:tIDENTIFIER, digits, @ts, tm) begin p += 1 _trigger_goto = true _goto_level = _out break end end emit(:tFLOAT, digits.to_f, @ts, tm) p = tm - 1 begin p += 1 _trigger_goto = true _goto_level = _out break end end when 113 then begin begin p = (( @te))-1; end emit(:tCONSTANT) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 117 then begin begin p = (( @te))-1; end emit(:tIDENTIFIER) @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end when 118 then begin begin p = (( @te))-1; end emit(:tFID, tok(@ts, tm), @ts, tm) p = tm - 1 @cs = 495; begin p += 1 _trigger_goto = true _goto_level = _out break end end end end when 266 then # line 1846 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; p = p - 1; begin @cs = 748 _trigger_goto = true _goto_level = _again break end end end when 267 then # line 1850 "lib/parser/lexer.rl" begin @te = p+1 begin emit(:tNL, nil, @newline_s, @newline_s + 1) @cs = 205; p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 268 then # line 1850 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit(:tNL, nil, @newline_s, @newline_s + 1) @cs = 205; p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 269 then # line 1850 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin emit(:tNL, nil, @newline_s, @newline_s + 1) @cs = 205; p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 270 then # line 1860 "lib/parser/lexer.rl" begin @te = p+1 begin emit_comment(@eq_begin_s, @te) begin @cs = 205 _trigger_goto = true _goto_level = _again break end end end when 271 then # line 1865 "lib/parser/lexer.rl" begin @te = p+1 end when 272 then # line 1868 "lib/parser/lexer.rl" begin @te = p+1 begin diagnostic :fatal, Parser::ERRORS[:embedded_document], range(@eq_begin_s, @eq_begin_s + '=begin'.length) end end when 273 then # line 1860 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin emit_comment(@eq_begin_s, @te) begin @cs = 205 _trigger_goto = true _goto_level = _again break end end end when 274 then # line 1865 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 275 then # line 1865 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end end when 276 then # line 1875 "lib/parser/lexer.rl" begin @te = p+1 end when 277 then # line 1878 "lib/parser/lexer.rl" begin @te = p+1 begin @eq_begin_s = @ts begin @cs = 925 _trigger_goto = true _goto_level = _again break end end end when 278 then # line 1882 "lib/parser/lexer.rl" begin @te = p+1 begin p = pe - 1 end end when 279 then # line 1885 "lib/parser/lexer.rl" begin @te = p+1 begin p = p - 1; begin @cs = 742 _trigger_goto = true _goto_level = _again break end end end when 280 then # line 394 "lib/parser/lexer.rl" begin @te = p+1 begin # Sit at EOF indefinitely. #advance would return $eof each time. # This allows to feed the lexer more data if needed; this is only used # in tests. # # Note that this action is not embedded into e_eof like e_nl and e_bs # below. This is due to the fact that scanner state at EOF is observed # by tests, and encapsulating it in a rule would break the introspection. p = p - 1; begin p += 1 _trigger_goto = true _goto_level = _out break end end end when 281 then # line 1875 "lib/parser/lexer.rl" begin @te = p p = p - 1; end when 282 then # line 1878 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin @eq_begin_s = @ts begin @cs = 925 _trigger_goto = true _goto_level = _again break end end end when 283 then # line 1885 "lib/parser/lexer.rl" begin @te = p p = p - 1; begin p = p - 1; begin @cs = 742 _trigger_goto = true _goto_level = _again break end end end when 284 then # line 1885 "lib/parser/lexer.rl" begin begin p = (( @te))-1; end begin p = p - 1; begin @cs = 742 _trigger_goto = true _goto_level = _again break end end end # line 7566 "lib/parser/lexer.rb" end # action switch end end if _trigger_goto next end end if _goto_level <= _again _acts = _lex_to_state_actions[ @cs] _nacts = _lex_actions[_acts] _acts += 1 while _nacts > 0 _nacts -= 1 _acts += 1 case _lex_actions[_acts - 1] when 46 then # line 1 "NONE" begin @ts = nil; end # line 7586 "lib/parser/lexer.rb" end # to state action switch end if _trigger_goto next end if @cs == 0 _goto_level = _out next end p += 1 if p != pe _goto_level = _resume next end end if _goto_level <= _test_eof if p == eof if _lex_eof_trans[ @cs] > 0 _trans = _lex_eof_trans[ @cs] - 1; _goto_level = _eof_trans next; end end end if _goto_level <= _out break end end end # line 206 "lib/parser/lexer.rl" # % @p = p if @token_queue.any? @token_queue.shift elsif @cs == self.class.lex_error [ false, [ '$error', range(p - 1, p) ] ] else [ false, [ '$eof', range(p - 1, p) ] ] end end protected def eof_char?(char) [0x04, 0x1a, 0x00].include? char.ord end def version?(*versions) versions.include?(@version) end def stack_pop @top -= 1 @stack[@top] end def tok(s = @ts, e = @te) @source[s...e] end def range(s = @ts, e = @te) Parser::Source::Range.new(@source_buffer, s, e) end def emit(type, value = tok, s = @ts, e = @te) token = [ type, [ value, range(s, e) ] ] @token_queue.push(token) @tokens.push(token) if @tokens token end def emit_table(table, s = @ts, e = @te) value = tok(s, e) emit(table[value], value, s, e) end def emit_comment(s = @ts, e = @te) if @comments @comments.push(Parser::Source::Comment.new(range(s, e))) end if @tokens @tokens.push([ :tCOMMENT, [ tok(s, e), range(s, e) ] ]) end nil end def diagnostic(type, message, location=range, highlights=[]) @diagnostics.process( Parser::Diagnostic.new(type, message, location, highlights)) end # # === LITERAL STACK === # def push_literal(*args) new_literal = Literal.new(self, *args) @literal_stack.push(new_literal) if new_literal.words? if new_literal.interpolate? self.class.lex_en_interp_words else self.class.lex_en_plain_words end else if new_literal.interpolate? self.class.lex_en_interp_string else self.class.lex_en_plain_string end end end def literal @literal_stack.last end def pop_literal old_literal = @literal_stack.pop if old_literal.type == :tREGEXP_BEG # Fetch modifiers. self.class.lex_en_regexp_modifiers else self.class.lex_en_expr_end end end # Mapping of strings to parser tokens. PUNCTUATION = { '=' => :tEQL, '&' => :tAMPER2, '|' => :tPIPE, '!' => :tBANG, '^' => :tCARET, '+' => :tPLUS, '-' => :tMINUS, '*' => :tSTAR2, '/' => :tDIVIDE, '%' => :tPERCENT, '~' => :tTILDE, ',' => :tCOMMA, ';' => :tSEMI, '.' => :tDOT, '..' => :tDOT2, '...' => :tDOT3, '[' => :tLBRACK2, ']' => :tRBRACK, '(' => :tLPAREN2, ')' => :tRPAREN, '?' => :tEH, ':' => :tCOLON, '&&' => :tANDOP, '||' => :tOROP, '-@' => :tUMINUS, '+@' => :tUPLUS, '~@' => :tTILDE, '**' => :tPOW, '->' => :tLAMBDA, '=~' => :tMATCH, '!~' => :tNMATCH, '==' => :tEQ, '!=' => :tNEQ, '>' => :tGT, '>>' => :tRSHFT, '>=' => :tGEQ, '<' => :tLT, '<<' => :tLSHFT, '<=' => :tLEQ, '=>' => :tASSOC, '::' => :tCOLON2, '===' => :tEQQ, '<=>' => :tCMP, '[]' => :tAREF, '[]=' => :tASET, '{' => :tLCURLY, '}' => :tRCURLY, '`' => :tBACK_REF2, } PUNCTUATION_BEGIN = { '&' => :tAMPER, '*' => :tSTAR, '**' => :tDSTAR, '+' => :tUPLUS, '-' => :tUMINUS, '::' => :tCOLON3, '(' => :tLPAREN, '{' => :tLBRACE, '[' => :tLBRACK, } KEYWORDS = { 'if' => :kIF_MOD, 'unless' => :kUNLESS_MOD, 'while' => :kWHILE_MOD, 'until' => :kUNTIL_MOD, 'rescue' => :kRESCUE_MOD, 'defined?' => :kDEFINED, 'BEGIN' => :klBEGIN, 'END' => :klEND, } %w(class module def undef begin end then elsif else ensure case when for break next redo retry in do return yield super self nil true false and or not alias __FILE__ __LINE__ __ENCODING__).each do |keyword| KEYWORDS[keyword] = :"k#{keyword.upcase}" end KEYWORDS_BEGIN = { 'if' => :kIF, 'unless' => :kUNLESS, 'while' => :kWHILE, 'until' => :kUNTIL, 'rescue' => :kRESCUE } # line 1890 "lib/parser/lexer.rl" # % end