All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gherkin.lexer.i18n.RU Maven / Gradle / Ivy

There is a newer version: 2.12.2
Show newest version

// line 1 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
package gherkin.lexer.i18n;

import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.ArrayList;
import java.util.regex.Pattern;
import gherkin.lexer.Lexer;
import gherkin.lexer.Listener;
import gherkin.lexer.LexingError;

public class RU implements Lexer {
  
// line 150 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"


  private final Listener listener;

  public RU(Listener listener) {
    this.listener = listener;
  }

  
// line 26 "java/src/main/java/gherkin/lexer/i18n/RU.java"
private static byte[] init__lexer_actions_0()
{
	return new byte [] {
	    0,    1,    0,    1,    1,    1,    2,    1,    3,    1,    4,    1,
	    5,    1,    6,    1,    7,    1,    8,    1,    9,    1,   10,    1,
	   11,    1,   12,    1,   13,    1,   16,    1,   17,    1,   18,    1,
	   19,    1,   20,    1,   21,    1,   22,    1,   23,    2,    2,   18,
	    2,    3,    4,    2,   13,    0,    2,   14,   15,    2,   17,    0,
	    2,   17,    1,    2,   17,   16,    2,   17,   19,    2,   18,    6,
	    2,   18,    7,    2,   18,    8,    2,   18,    9,    2,   18,   10,
	    2,   18,   16,    2,   20,   21,    2,   22,    0,    2,   22,    1,
	    2,   22,   16,    2,   22,   19,    3,    4,   14,   15,    3,    5,
	   14,   15,    3,   11,   14,   15,    3,   12,   14,   15,    3,   13,
	   14,   15,    3,   14,   15,   18,    3,   17,    0,   11,    3,   17,
	   14,   15,    4,    2,   14,   15,   18,    4,    3,    4,   14,   15,
	    4,   17,    0,   14,   15,    5,   17,    0,   11,   14,   15
	};
}

private static final byte _lexer_actions[] = init__lexer_actions_0();


private static short[] init__lexer_key_offsets_0()
{
	return new short [] {
	    0,    0,   12,   22,   23,   25,   27,   38,   39,   40,   42,   44,
	   49,   54,   59,   64,   68,   72,   74,   75,   76,   77,   78,   79,
	   80,   81,   82,   83,   84,   85,   86,   87,   88,   89,   94,  101,
	  106,  110,  116,  119,  121,  127,  138,  139,  141,  142,  143,  144,
	  145,  146,  147,  148,  149,  150,  151,  152,  153,  154,  155,  156,
	  157,  158,  159,  160,  161,  162,  163,  165,  166,  167,  169,  170,
	  171,  172,  173,  174,  175,  176,  177,  178,  179,  180,  181,  182,
	  183,  184,  185,  186,  195,  206,  208,  219,  221,  224,  226,  228,
	  230,  232,  234,  236,  238,  240,  242,  244,  246,  248,  250,  252,
	  254,  256,  258,  260,  262,  264,  266,  268,  271,  273,  275,  277,
	  279,  281,  283,  285,  287,  289,  291,  293,  295,  297,  299,  301,
	  303,  305,  307,  309,  311,  313,  315,  317,  319,  321,  323,  325,
	  327,  330,  332,  334,  336,  338,  340,  342,  344,  346,  348,  350,
	  352,  354,  356,  358,  361,  363,  365,  367,  369,  371,  373,  375,
	  377,  379,  381,  383,  385,  387,  389,  391,  393,  395,  397,  399,
	  401,  403,  405,  407,  409,  411,  413,  415,  417,  419,  421,  423,
	  425,  427,  429,  431,  433,  435,  437,  439,  441,  443,  445,  447,
	  449,  451,  454,  456,  458,  460,  462,  464,  466,  468,  470,  472,
	  474,  477,  479,  481,  483,  485,  487,  489,  491,  493,  495,  497,
	  499,  501,  503,  505,  507,  509,  511,  513,  515,  517,  519,  520,
	  521,  522,  523,  524,  525,  526,  527,  528,  529,  530,  531,  532,
	  533,  535,  536,  538,  539,  540,  541,  542,  543,  544,  545,  546,
	  547,  548,  549,  550,  551,  552,  553,  554,  555,  556,  557,  558,
	  559,  560,  561,  562,  563,  564,  565,  572,  575,  577,  579,  581,
	  583,  585,  587,  589,  591,  593,  595,  597,  599,  601,  603,  605,
	  607,  609,  611,  613,  615,  617,  619,  621,  623,  625,  628,  630,
	  632,  634,  636,  638,  640,  642,  644,  645,  646,  647,  648,  649,
	  650,  652,  653,  654,  655,  656,  657,  658,  659,  660,  661,  662,
	  663,  664,  665,  666,  667,  668,  676,  681,  683,  685,  687,  689,
	  691,  693,  695,  697,  699,  701,  703,  705,  707,  709,  711,  713,
	  715,  717,  720,  722,  724,  726,  728,  730,  732,  734,  736,  738,
	  740,  742,  744,  746,  748,  750,  752,  754,  756,  758,  760,  762,
	  764,  766,  768,  771,  773,  775,  777,  779,  781,  783,  785,  787,
	  789,  791,  793,  795,  797,  800,  802,  804,  806,  808,  810,  812,
	  814,  816,  818,  820,  822,  824,  826,  828,  830,  832,  834,  836,
	  838,  840,  842,  844,  846,  848,  850,  852,  854,  856,  858,  860,
	  862,  864,  866,  868,  870,  872,  874,  876,  878,  880,  882,  884,
	  886,  888,  890,  892,  894,  897,  899,  901,  903,  905,  907,  909,
	  911,  913,  915,  917,  919,  921,  923,  925,  927,  929,  931,  933,
	  935,  937,  939,  941,  942,  943,  944,  945,  946,  947,  948,  949,
	  950,  951,  952,  953,  954,  955,  956,  957,  958,  959,  960,  961,
	  962,  963,  964,  965,  966,  967,  968,  969,  970,  971,  972,  973,
	  974,  975,  984,  995,  997,  999, 1002, 1004, 1006, 1008, 1010, 1012,
	 1014, 1016, 1018, 1020, 1022, 1024, 1026, 1028, 1030, 1032, 1034, 1036,
	 1038, 1040, 1042, 1044, 1046, 1049, 1051, 1053, 1055, 1057, 1059, 1061,
	 1063, 1065, 1067, 1069, 1071, 1073, 1075, 1077, 1079, 1081, 1083, 1085,
	 1087, 1089, 1091, 1093, 1095, 1097, 1099, 1101, 1103, 1105, 1108, 1110,
	 1112, 1114, 1116, 1118, 1120, 1122, 1124, 1126, 1128, 1130, 1132, 1134,
	 1136, 1138, 1140, 1142, 1144, 1146, 1148, 1150, 1152, 1154, 1156, 1158,
	 1160, 1162, 1164, 1166, 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183,
	 1185, 1187, 1189, 1192, 1194, 1196, 1198, 1200, 1202, 1204, 1206, 1208,
	 1210, 1212, 1214, 1216, 1218, 1220, 1222, 1224, 1226, 1228, 1230, 1232,
	 1234, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
	 1247, 1248, 1249, 1250, 1251, 1260, 1271, 1273, 1275, 1278, 1280, 1282,
	 1284, 1286, 1288, 1290, 1292, 1294, 1296, 1298, 1300, 1302, 1304, 1306,
	 1308, 1310, 1312, 1314, 1316, 1318, 1320, 1322, 1325, 1327, 1329, 1332,
	 1334, 1336, 1338, 1340, 1342, 1344, 1346, 1348, 1350, 1352, 1354, 1356,
	 1358, 1360, 1362, 1364, 1366, 1368, 1370, 1372, 1374, 1376, 1378, 1380,
	 1382, 1384, 1386, 1388, 1390, 1393, 1395, 1397, 1399, 1401, 1403, 1405,
	 1407, 1409, 1411, 1413, 1415, 1417, 1419, 1421, 1423, 1425, 1427, 1429,
	 1431, 1433, 1435, 1437, 1439, 1441, 1444, 1446, 1448, 1450, 1452, 1454,
	 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470, 1473, 1475, 1477, 1479,
	 1481, 1483, 1485, 1487, 1489, 1491, 1493, 1495, 1497, 1499, 1501, 1503,
	 1505, 1507, 1509, 1511, 1513, 1515, 1517, 1519, 1521, 1523, 1525, 1527,
	 1529, 1531, 1533, 1535, 1537, 1539, 1541, 1543, 1545, 1547, 1549, 1551,
	 1554, 1556, 1558, 1560, 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576,
	 1579, 1581, 1583, 1585, 1587, 1589, 1591, 1593, 1595, 1597, 1599, 1601,
	 1603, 1605, 1607, 1609, 1611, 1613, 1615, 1617, 1619, 1621, 1622, 1623,
	 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636,
	 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648
	};
}

private static final short _lexer_key_offsets[] = init__lexer_key_offsets_0();


private static byte[] init__lexer_trans_keys_0()
{
	return new byte [] {
	  -48,  -17,   10,   32,   34,   35,   37,   42,   64,  124,    9,   13,
	 -112, -108, -107, -104, -102,  -99,  -97,  -95,  -94,  -92,   32,   10,
	   13,   10,   13,  -48,   10,   32,   34,   35,   37,   42,   64,  124,
	    9,   13,   34,   34,   10,   13,   10,   13,   10,   32,   34,    9,
	   13,   10,   32,   34,    9,   13,   10,   32,   34,    9,   13,   10,
	   32,   34,    9,   13,   10,   32,    9,   13,   10,   32,    9,   13,
	   10,   13,   10,   95,   70,   69,   65,   84,   85,   82,   69,   95,
	   69,   78,   68,   95,   37,   13,   32,   64,    9,   10,    9,   10,
	   13,   32,   64,   11,   12,   10,   32,   64,    9,   13,   32,  124,
	    9,   13,   10,   32,   92,  124,    9,   13,   10,   92,  124,   10,
	   92,   10,   32,   92,  124,    9,   13,  -48,   10,   32,   34,   35,
	   37,   42,   64,  124,    9,   13,  -48,  -80,  -66,  -48,  -67,  -48,
	  -66,  -48,  -65,  -47, -125,  -47, -127,  -47, -126,  -48,  -72,  -48,
	  -68,  -47, -127,  -48,  -69,  -48,  -72,  -48,   32,  -66,  -48,  -77,
	  -67,  -48,  -76,  -48,  -80,  -47, -126,  -48,  -75,  -48,  -70,  -47,
	 -127,  -47, -126,   58,   10,   10,  -48,   10,   32,   35,   37,   42,
	   64,    9,   13, -112, -108, -107, -104, -102,  -99,  -97,  -95,  -94,
	  -92,   10,   10,   32,  -48,   10,   32,   34,   35,   37,   42,   64,
	  124,    9,   13,  -48,   10,  -80,  -66,   10,  -48,   10,  -67,   10,
	  -48,   10,  -66,   10,  -48,   10,  -65,   10,  -47,   10, -125,   10,
	  -47,   10, -127,   10,  -47,   10, -126,   10,  -48,   10,  -72,   10,
	  -48,   10,  -68,   10,  -47,   10, -127,   10,  -48,   10,  -69,   10,
	  -48,   10,  -72,   10,  -48,   10,   32,  -66,   10,  -48,   10,  -77,
	   10,  -48,   10,  -76,   10,  -48,   10,  -80,   10,  -47,   10, -126,
	   10,  -48,   10,  -66,   10,  -48,   10,  -68,   10,  -47,   10, -125,
	   10,   10,   32,  -48,   10,  -74,   10,  -48,   10,  -75,   10,  -47,
	   10, -125,   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -47,
	   10, -116,   10,  -48,  -47,   10,  -78,   10,  -48,   10,  -66,   10,
	  -48,   10,  -71,   10,  -47,   10, -127,   10,  -47,   10, -126,   10,
	  -48,   10,  -78,   10,  -48,   10,  -66,   10,   10,   58, -126, -122,
	   10,  -47,   10, -128,   10,  -47,   10, -125,   10,  -48,   10,  -70,
	   10,  -47,   10, -126,   10,  -47,   10, -125,   10,  -47,   10, -128,
	   10,  -48,   10,  -80,   10,   10,   32,  -47,   10, -127,   10,  -47,
	   10, -122,   10,  -48,   10,  -75,   10,  -48,   10,  -67,   10,  -48,
	   10,  -80,   10,  -47,   10, -128,   10,  -48,   10,  -72,   10,  -47,
	   10, -113,   10,  -48,   10,  -75,   10,  -48,   10,  -67,   10,  -48,
	   10,  -80,   10,  -47,   10, -128,   10,  -48,   10,  -72,   10,  -48,
	   10,  -71,   10,  -48,   10,  -66,   10,  -48,   10,   32,  -47,   10,
	 -125,   10,  -48,   10,  -67,   10,  -48,   10,  -70,   10,  -47,   10,
	 -122,   10,  -48,   10,  -72,   10,  -48,  -47,   10,  -66,   10,  -48,
	   10,  -67,   10,  -48,   10,  -80,   10,  -48,   10,  -69,   10,   10,
	   95,   10,   70,   10,   69,   10,   65,   10,   84,   10,   85,   10,
	   82,   10,   69,   10,   95,   10,   69,   10,   78,   10,   68,   10,
	   95,   10,   37,  -47, -126,  -48,  -66,  -48,  -68,  -47, -125,   32,
	  -48,  -74,  -48,  -75,  -47, -128, -125,  -48,  -75,  -72,  -48,  -76,
	  -47, -117,  -47, -127,  -47, -126,  -48,  -66,  -47, -128,  -48,  -72,
	  -47, -113,  -48,  -68,  -48,  -75,  -47, -128,  -47, -117,   58,   10,
	   10,  -48,   10,   32,   35,  124,    9,   13,  -95,  -92,   10,  -48,
	   10,  -78,   10,  -48,   10,  -66,   10,  -48,   10,  -71,   10,  -47,
	   10, -127,   10,  -47,   10, -126,   10,  -48,   10,  -78,   10,  -48,
	   10,  -66,   10,   10,   58,  -47,   10, -125,   10,  -48,   10,  -67,
	   10,  -48,   10,  -70,   10,  -47,   10, -122,   10,  -48,   10,  -72,
	   10,  -48,  -47,   10,  -66,   10,  -48,   10,  -67,   10,  -48,   10,
	  -80,   10,  -48,   10,  -69,   10, -113,   10,  -47, -127,  -47, -126,
	  -47, -116,  -48,  -47,  -78,  -48,  -66,  -48,  -71,  -47, -127,  -47,
	 -126,  -48,  -78,  -48,  -66,   58,   10,   10,  -48,   10,   32,   35,
	   37,   64,    9,   13, -102,  -97,  -95,  -92,   10,  -48,   10,  -66,
	   10,  -48,   10,  -67,   10,  -47,   10, -126,   10,  -48,   10,  -75,
	   10,  -48,   10,  -70,   10,  -47,   10, -127,   10,  -47,   10, -126,
	   10,   10,   58,  -47,   10, -128,   10,  -48,   10,  -75,  -72,   10,
	  -48,   10,  -76,   10,  -47,   10, -117,   10,  -47,   10, -127,   10,
	  -47,   10, -126,   10,  -48,   10,  -66,   10,  -47,   10, -128,   10,
	  -48,   10,  -72,   10,  -47,   10, -113,   10,  -48,   10,  -68,   10,
	  -48,   10,  -75,   10,  -47,   10, -128,   10,  -47,   10, -117,   10,
	  -48,  -47,   10,  -78,   10,  -48,   10,  -66,   10,  -48,   10,  -71,
	   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -48,   10,  -78,
	   10,  -48,   10,  -66,   10, -126, -122,   10,  -47,   10, -128,   10,
	  -47,   10, -125,   10,  -48,   10,  -70,   10,  -47,   10, -126,   10,
	  -47,   10, -125,   10,  -47,   10, -128,   10,  -48,   10,  -80,   10,
	   10,   32,  -47,   10, -127,   10,  -47,   10, -122,   10,  -48,   10,
	  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -48,   10,
	  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -47,   10,
	 -128,   10,  -48,   10,  -72,   10,  -48,   10,  -71,   10,  -47,   10,
	 -125,   10,  -48,   10,  -67,   10,  -48,   10,  -70,   10,  -47,   10,
	 -122,   10,  -48,   10,  -72,   10,  -48,  -47,   10,  -66,   10,  -48,
	   10,  -67,   10,  -48,   10,  -80,   10,  -48,   10,  -69,   10,   10,
	   95,   10,   70,   10,   69,   10,   65,   10,   84,   10,   85,   10,
	   82,   10,   69,   10,   95,   10,   69,   10,   78,   10,   68,   10,
	   95,   10,   37, -126, -122,  -47, -128,  -47, -125,  -48,  -70,  -47,
	 -126,  -47, -125,  -47, -128,  -48,  -80,   32,  -47, -127,  -47, -122,
	  -48,  -75,  -48,  -67,  -48,  -80,  -47, -128,  -48,  -72,  -47, -113,
	   58,   10,   10,  -48,   10,   32,   35,   37,   42,   64,    9,   13,
	 -112, -108, -107, -104, -102,  -99,  -97,  -95,  -94,  -92,   10,   10,
	   32,  -48,   10,  -80,  -66,   10,  -48,   10,  -67,   10,  -48,   10,
	  -66,   10,  -48,   10,  -65,   10,  -47,   10, -125,   10,  -47,   10,
	 -127,   10,  -47,   10, -126,   10,  -48,   10,  -72,   10,  -48,   10,
	  -68,   10,  -47,   10, -127,   10,  -48,   10,  -69,   10,  -48,   10,
	  -72,   10,  -48,   10,   32,  -66,   10,  -48,   10,  -77,   10,  -48,
	   10,  -76,   10,  -48,   10,  -80,   10,  -47,   10, -126,   10,  -48,
	   10,  -66,   10,  -48,   10,  -68,   10,  -47,   10, -125,   10,   10,
	   32,  -48,   10,  -74,   10,  -48,   10,  -75,   10,  -47,   10, -125,
	   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -47,   10, -116,
	   10,  -48,  -47,   10,  -78,   10,  -48,   10,  -66,   10,  -48,   10,
	  -71,   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -48,   10,
	  -78,   10,  -48,   10,  -66,   10,   10,   58, -122,   10,  -48,   10,
	  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -47,   10,
	 -128,   10,  -48,   10,  -72,   10,  -48,   10,  -71,   10,  -48,   10,
	  -66,   10,  -48,   10,   32,  -47,   10, -125,   10,  -48,   10,  -67,
	   10,  -48,   10,  -70,   10,  -47,   10, -122,   10,  -48,   10,  -72,
	   10,  -48,  -47,   10,  -66,   10,  -48,   10,  -67,   10,  -48,   10,
	  -80,   10,  -48,   10,  -69,   10, -113,   10,   10,   95,   10,   70,
	   10,   69,   10,   65,   10,   84,   10,   85,   10,   82,   10,   69,
	   10,   95,   10,   69,   10,   78,   10,   68,   10,   95,   10,   37,
	  -48,  -75,  -48,  -67,  -48,  -80,  -47, -128,  -48,  -72,  -48,  -71,
	   58,   10,   10,  -48,   10,   32,   35,   37,   42,   64,    9,   13,
	 -112, -108, -107, -104, -102,  -99,  -97,  -95,  -94,  -92,   10,   10,
	   32,  -48,   10,  -80,  -66,   10,  -48,   10,  -67,   10,  -48,   10,
	  -66,   10,  -48,   10,  -65,   10,  -47,   10, -125,   10,  -47,   10,
	 -127,   10,  -47,   10, -126,   10,  -48,   10,  -72,   10,  -48,   10,
	  -68,   10,  -47,   10, -127,   10,  -48,   10,  -69,   10,  -48,   10,
	  -72,   10,  -48,   10,   32,  -66,   10,  -48,   10,  -77,  -67,   10,
	  -48,   10,  -76,   10,  -48,   10,  -80,   10,  -47,   10, -126,   10,
	  -48,   10,  -75,   10,  -48,   10,  -70,   10,  -47,   10, -127,   10,
	  -47,   10, -126,   10,   10,   58,  -47,   10, -126,   10,  -48,   10,
	  -66,   10,  -48,   10,  -68,   10,  -47,   10, -125,   10,   10,   32,
	  -48,   10,  -74,   10,  -48,   10,  -75,   10,  -47,   10, -128, -125,
	   10,  -48,   10,  -75,   10,  -48,   10,  -76,   10,  -47,   10, -117,
	   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -48,   10,  -66,
	   10,  -47,   10, -128,   10,  -48,   10,  -72,   10,  -47,   10, -113,
	   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -47,   10, -116,
	   10,  -48,  -47,   10,  -78,   10,  -48,   10,  -66,   10,  -48,   10,
	  -71,   10,  -47,   10, -127,   10,  -47,   10, -126,   10,  -48,   10,
	  -78,   10,  -48,   10,  -66,   10, -126, -122,   10,  -47,   10, -128,
	   10,  -47,   10, -125,   10,  -48,   10,  -70,   10,  -47,   10, -126,
	   10,  -47,   10, -125,   10,  -47,   10, -128,   10,  -48,   10,  -80,
	   10,   10,   32,  -47,   10, -127,   10,  -47,   10, -122,   10,  -48,
	   10,  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -48,
	   10,  -75,   10,  -48,   10,  -67,   10,  -48,   10,  -80,   10,  -47,
	   10, -128,   10,  -48,   10,  -72,   10,  -48,   10,  -71,   10,  -48,
	   10,  -66,   10,  -48,   10,   32,  -77,   10,  -47,   10, -125,   10,
	  -48,   10,  -67,   10,  -48,   10,  -70,   10,  -47,   10, -122,   10,
	  -48,   10,  -72,   10,  -48,  -47,   10,  -66,   10,  -48,   10,  -67,
	   10,  -48,   10,  -80,   10,  -48,   10,  -69,   10,   10,   95,   10,
	   70,   10,   69,   10,   65,   10,   84,   10,   85,   10,   82,   10,
	   69,   10,   95,   10,   69,   10,   78,   10,   68,   10,   95,   10,
	   37,  -48,  -66,  -48,   32,  -77,  -47, -125,  -48,  -67,  -48,  -70,
	  -47, -122,  -48,  -72,  -48,  -47,  -66,  -48,  -67,  -48,  -80,  -48,
	  -69, -113,  -69,  -65,    0
	};
}

private static final byte _lexer_trans_keys[] = init__lexer_trans_keys_0();


private static byte[] init__lexer_single_lengths_0()
{
	return new byte [] {
	    0,   10,   10,    1,    2,    2,    9,    1,    1,    2,    2,    3,
	    3,    3,    3,    2,    2,    2,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    3,    5,    3,
	    2,    4,    3,    2,    4,    9,    1,    2,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    2,    1,    1,    2,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    7,   11,    2,    9,    2,    3,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    2,    1,    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    5,    3,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,
	    2,    2,    2,    2,    2,    2,    1,    1,    1,    1,    1,    1,
	    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    6,    5,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    7,   11,    2,    2,    3,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
	    1,    1,    1,    1,    7,   11,    2,    2,    3,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    3,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    3,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    3,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
	    2,    2,    2,    2,    2,    2,    2,    2,    2,    1,    1,    2,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
	    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    0
	};
}

private static final byte _lexer_single_lengths[] = init__lexer_single_lengths_0();


private static byte[] init__lexer_range_lengths_0()
{
	return new byte [] {
	    0,    1,    0,    0,    0,    0,    1,    0,    0,    0,    0,    1,
	    1,    1,    1,    1,    1,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,    1,    1,
	    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,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    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,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0
	};
}

private static final byte _lexer_range_lengths[] = init__lexer_range_lengths_0();


private static short[] init__lexer_index_offsets_0()
{
	return new short [] {
	    0,    0,   12,   23,   25,   28,   31,   42,   44,   46,   49,   52,
	   57,   62,   67,   72,   76,   80,   83,   85,   87,   89,   91,   93,
	   95,   97,   99,  101,  103,  105,  107,  109,  111,  113,  118,  125,
	  130,  134,  140,  144,  147,  153,  164,  166,  169,  171,  173,  175,
	  177,  179,  181,  183,  185,  187,  189,  191,  193,  195,  197,  199,
	  201,  203,  205,  207,  209,  211,  213,  216,  218,  220,  223,  225,
	  227,  229,  231,  233,  235,  237,  239,  241,  243,  245,  247,  249,
	  251,  253,  255,  257,  266,  278,  281,  292,  295,  299,  302,  305,
	  308,  311,  314,  317,  320,  323,  326,  329,  332,  335,  338,  341,
	  344,  347,  350,  353,  356,  359,  362,  365,  369,  372,  375,  378,
	  381,  384,  387,  390,  393,  396,  399,  402,  405,  408,  411,  414,
	  417,  420,  423,  426,  429,  432,  435,  438,  441,  444,  447,  450,
	  453,  457,  460,  463,  466,  469,  472,  475,  478,  481,  484,  487,
	  490,  493,  496,  499,  503,  506,  509,  512,  515,  518,  521,  524,
	  527,  530,  533,  536,  539,  542,  545,  548,  551,  554,  557,  560,
	  563,  566,  569,  572,  575,  578,  581,  584,  587,  590,  593,  596,
	  599,  602,  605,  608,  611,  614,  617,  620,  623,  626,  629,  632,
	  635,  638,  642,  645,  648,  651,  654,  657,  660,  663,  666,  669,
	  672,  676,  679,  682,  685,  688,  691,  694,  697,  700,  703,  706,
	  709,  712,  715,  718,  721,  724,  727,  730,  733,  736,  739,  741,
	  743,  745,  747,  749,  751,  753,  755,  757,  759,  761,  763,  765,
	  767,  770,  772,  775,  777,  779,  781,  783,  785,  787,  789,  791,
	  793,  795,  797,  799,  801,  803,  805,  807,  809,  811,  813,  815,
	  817,  819,  821,  823,  825,  827,  829,  836,  840,  843,  846,  849,
	  852,  855,  858,  861,  864,  867,  870,  873,  876,  879,  882,  885,
	  888,  891,  894,  897,  900,  903,  906,  909,  912,  915,  919,  922,
	  925,  928,  931,  934,  937,  940,  943,  945,  947,  949,  951,  953,
	  955,  958,  960,  962,  964,  966,  968,  970,  972,  974,  976,  978,
	  980,  982,  984,  986,  988,  990,  998, 1004, 1007, 1010, 1013, 1016,
	 1019, 1022, 1025, 1028, 1031, 1034, 1037, 1040, 1043, 1046, 1049, 1052,
	 1055, 1058, 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083, 1086, 1089,
	 1092, 1095, 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119, 1122, 1125,
	 1128, 1131, 1134, 1138, 1141, 1144, 1147, 1150, 1153, 1156, 1159, 1162,
	 1165, 1168, 1171, 1174, 1177, 1181, 1184, 1187, 1190, 1193, 1196, 1199,
	 1202, 1205, 1208, 1211, 1214, 1217, 1220, 1223, 1226, 1229, 1232, 1235,
	 1238, 1241, 1244, 1247, 1250, 1253, 1256, 1259, 1262, 1265, 1268, 1271,
	 1274, 1277, 1280, 1283, 1286, 1289, 1292, 1295, 1298, 1301, 1304, 1307,
	 1310, 1313, 1316, 1319, 1322, 1326, 1329, 1332, 1335, 1338, 1341, 1344,
	 1347, 1350, 1353, 1356, 1359, 1362, 1365, 1368, 1371, 1374, 1377, 1380,
	 1383, 1386, 1389, 1392, 1394, 1396, 1398, 1400, 1402, 1404, 1406, 1408,
	 1410, 1412, 1414, 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, 1432,
	 1434, 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450, 1452, 1454, 1456,
	 1458, 1460, 1469, 1481, 1484, 1487, 1491, 1494, 1497, 1500, 1503, 1506,
	 1509, 1512, 1515, 1518, 1521, 1524, 1527, 1530, 1533, 1536, 1539, 1542,
	 1545, 1548, 1551, 1554, 1557, 1561, 1564, 1567, 1570, 1573, 1576, 1579,
	 1582, 1585, 1588, 1591, 1594, 1597, 1600, 1603, 1606, 1609, 1612, 1615,
	 1618, 1621, 1624, 1627, 1630, 1633, 1636, 1639, 1642, 1645, 1649, 1652,
	 1655, 1658, 1661, 1664, 1667, 1670, 1673, 1676, 1679, 1682, 1685, 1688,
	 1691, 1694, 1697, 1700, 1703, 1706, 1709, 1712, 1715, 1718, 1721, 1724,
	 1727, 1730, 1733, 1736, 1740, 1743, 1746, 1749, 1752, 1755, 1758, 1761,
	 1764, 1767, 1770, 1774, 1777, 1780, 1783, 1786, 1789, 1792, 1795, 1798,
	 1801, 1804, 1807, 1810, 1813, 1816, 1819, 1822, 1825, 1828, 1831, 1834,
	 1837, 1840, 1842, 1844, 1846, 1848, 1850, 1852, 1854, 1856, 1858, 1860,
	 1862, 1864, 1866, 1868, 1870, 1879, 1891, 1894, 1897, 1901, 1904, 1907,
	 1910, 1913, 1916, 1919, 1922, 1925, 1928, 1931, 1934, 1937, 1940, 1943,
	 1946, 1949, 1952, 1955, 1958, 1961, 1964, 1967, 1971, 1974, 1977, 1981,
	 1984, 1987, 1990, 1993, 1996, 1999, 2002, 2005, 2008, 2011, 2014, 2017,
	 2020, 2023, 2026, 2029, 2032, 2035, 2038, 2041, 2044, 2047, 2050, 2053,
	 2056, 2059, 2062, 2065, 2068, 2072, 2075, 2078, 2081, 2084, 2087, 2090,
	 2093, 2096, 2099, 2102, 2105, 2108, 2111, 2114, 2117, 2120, 2123, 2126,
	 2129, 2132, 2135, 2138, 2141, 2144, 2148, 2151, 2154, 2157, 2160, 2163,
	 2166, 2169, 2172, 2175, 2178, 2181, 2184, 2187, 2191, 2194, 2197, 2200,
	 2203, 2206, 2209, 2212, 2215, 2218, 2221, 2224, 2227, 2230, 2233, 2236,
	 2239, 2242, 2245, 2248, 2251, 2254, 2257, 2260, 2263, 2266, 2269, 2272,
	 2275, 2278, 2281, 2284, 2287, 2290, 2293, 2296, 2299, 2302, 2305, 2308,
	 2312, 2315, 2318, 2321, 2324, 2327, 2330, 2333, 2336, 2339, 2342, 2345,
	 2349, 2352, 2355, 2358, 2361, 2364, 2367, 2370, 2373, 2376, 2379, 2382,
	 2385, 2388, 2391, 2394, 2397, 2400, 2403, 2406, 2409, 2412, 2414, 2416,
	 2419, 2421, 2423, 2425, 2427, 2429, 2431, 2433, 2435, 2437, 2439, 2441,
	 2444, 2446, 2448, 2450, 2452, 2454, 2456, 2458, 2460, 2462, 2464
	};
}

private static final short _lexer_index_offsets[] = init__lexer_index_offsets_0();


private static short[] init__lexer_indicies_0()
{
	return new short [] {
	    1,    2,    4,    3,    5,    6,    7,    8,    9,   10,    3,    0,
	   11,   12,   13,   11,   14,   15,   16,   17,   18,   19,    0,   20,
	    0,   22,   23,   21,   25,   26,   24,    1,    4,    3,    5,    6,
	    7,    8,    9,   10,    3,    0,   27,    0,   28,    0,   30,   31,
	   29,   33,   34,   32,   37,   36,   38,   36,   35,   41,   40,   42,
	   40,   39,   41,   40,   43,   40,   39,   41,   40,   44,   40,   39,
	   46,   45,   45,    0,    4,   47,   47,    0,   49,   50,   48,    4,
	    0,   51,    0,   52,    0,   53,    0,   54,    0,   55,    0,   56,
	    0,   57,    0,   58,    0,   59,    0,   60,    0,   61,    0,   62,
	    0,   63,    0,   64,    0,    0,    0,    0,    0,   65,   66,   67,
	   66,   66,   69,   68,   65,    4,   70,    9,   70,    0,   71,   72,
	   71,    0,   75,   74,   76,   77,   74,   73,    0,   79,   80,   78,
	    0,   79,   78,   75,   81,   79,   80,   81,   78,   82,   75,   83,
	   84,   85,   86,   87,   88,   89,   83,    0,   90,    0,   91,   92,
	    0,   93,    0,   15,    0,   94,    0,   11,    0,   95,    0,   96,
	    0,   97,    0,   98,    0,   99,    0,  100,    0,  101,    0,  102,
	    0,  103,    0,  104,    0,  105,    0,   11,    0,  106,    0,  107,
	    0,  108,    0,  109,    0,  110,    0,   11,    0,  111,  112,    0,
	  113,    0,  114,    0,  115,  116,    0,  117,    0,  118,    0,  119,
	    0,   11,    0,  120,    0,  121,    0,  122,    0,  123,    0,  124,
	    0,  125,    0,  126,    0,  127,    0,  128,    0,  129,    0,  130,
	    0,  132,  131,  134,  133,  135,  134,  136,  137,  138,  139,  137,
	  136,  133,  140,  141,  142,  140,  143,  144,  145,  146,  147,  148,
	  134,  133,  134,  149,  133,  150,  152,  151,  153,  154,  155,  156,
	  157,  158,  151,    0,  159,  134,  133,  160,  161,  134,  133,  162,
	  134,  133,  144,  134,  133,  163,  134,  133,  140,  134,  133,  164,
	  134,  133,  165,  134,  133,  166,  134,  133,  167,  134,  133,  168,
	  134,  133,  169,  134,  133,  170,  134,  133,  171,  134,  133,  172,
	  134,  133,  173,  134,  133,  174,  134,  133,  140,  134,  133,  175,
	  134,  133,  176,  134,  133,  177,  134,  133,  178,  134,  133,  179,
	  134,  133,  140,  134,  133,  180,  134,  181,  133,  182,  134,  133,
	  183,  134,  133,  184,  134,  133,  185,  134,  133,  186,  134,  133,
	  187,  134,  133,  140,  134,  133,  188,  134,  133,  189,  134,  133,
	  190,  134,  133,  191,  134,  133,  192,  134,  133,  193,  134,  133,
	  194,  134,  133,  195,  134,  133,  134,  196,  133,  197,  134,  133,
	  198,  134,  133,  199,  134,  133,  140,  134,  133,  200,  134,  133,
	  201,  134,  133,  202,  134,  133,  203,  134,  133,  204,  134,  133,
	  205,  134,  133,  206,  134,  133,  140,  134,  133,  207,  208,  134,
	  133,  209,  134,  133,  210,  134,  133,  211,  134,  133,  212,  134,
	  133,  213,  134,  133,  214,  134,  133,  215,  134,  133,  216,  134,
	  133,  217,  134,  133,  218,  134,  133,  219,  134,  133,  220,  134,
	  133,  221,  134,  133,  134,  149,  133,  222,  223,  134,  133,  224,
	  134,  133,  225,  134,  133,  226,  134,  133,  227,  134,  133,  228,
	  134,  133,  229,  134,  133,  230,  134,  133,  231,  134,  133,  232,
	  134,  133,  233,  134,  133,  234,  134,  133,  235,  134,  133,  236,
	  134,  133,  237,  134,  133,  134,  238,  133,  239,  134,  133,  240,
	  134,  133,  241,  134,  133,  242,  134,  133,  243,  134,  133,  244,
	  134,  133,  245,  134,  133,  246,  134,  133,  247,  134,  133,  248,
	  134,  133,  249,  134,  133,  250,  134,  133,  251,  134,  133,  252,
	  134,  133,  253,  134,  133,  221,  134,  133,  254,  134,  133,  255,
	  134,  133,  256,  134,  133,  257,  134,  133,  258,  134,  133,  259,
	  134,  133,  260,  134,  133,  261,  134,  133,  262,  134,  133,  263,
	  134,  133,  264,  134,  133,  221,  134,  133,  265,  134,  133,  266,
	  134,  133,  183,  134,  149,  133,  267,  134,  133,  268,  134,  133,
	  269,  134,  133,  270,  134,  133,  271,  134,  133,  272,  134,  133,
	  273,  134,  133,  274,  134,  133,  275,  134,  133,  276,  134,  133,
	  277,  253,  134,  133,  278,  134,  133,  279,  134,  133,  280,  134,
	  133,  281,  134,  133,  282,  134,  133,  283,  134,  133,  221,  134,
	  133,  134,  284,  133,  134,  285,  133,  134,  286,  133,  134,  287,
	  133,  134,  288,  133,  134,  289,  133,  134,  290,  133,  134,  291,
	  133,  134,  292,  133,  134,  293,  133,  134,  294,  133,  134,  295,
	  133,  134,  296,  133,  134,  297,  133,  298,    0,  299,    0,  300,
	    0,  301,    0,  302,    0,  303,    0,  304,    0,  305,    0,  306,
	    0,  307,    0,  308,    0,  309,    0,   11,    0,  310,    0,  311,
	  312,    0,  313,    0,  314,  315,    0,  316,    0,  317,    0,  318,
	    0,  319,    0,  320,    0,  321,    0,  322,    0,  323,    0,  324,
	    0,  325,    0,  326,    0,  327,    0,  328,    0,  329,    0,  330,
	    0,  129,    0,  331,    0,  332,    0,  333,    0,  334,    0,  335,
	    0,  336,    0,  337,    0,  338,    0,  339,    0,  341,  340,  343,
	  342,  344,  343,  345,  346,  346,  345,  342,  347,  348,  343,  342,
	  349,  343,  342,  350,  343,  342,  351,  343,  342,  352,  343,  342,
	  353,  343,  342,  354,  343,  342,  355,  343,  342,  356,  343,  342,
	  357,  343,  342,  358,  343,  342,  359,  343,  342,  360,  343,  342,
	  361,  343,  342,  362,  343,  342,  343,  363,  342,  364,  343,  342,
	  365,  343,  342,  366,  343,  342,  367,  343,  342,  368,  343,  342,
	  369,  343,  342,  370,  343,  342,  371,  343,  342,  372,  343,  342,
	  373,  343,  342,  374,  375,  343,  342,  376,  343,  342,  377,  343,
	  342,  378,  343,  342,  379,  343,  342,  380,  343,  342,  381,  343,
	  342,  362,  343,  342,  362,  343,  342,  382,    0,  383,    0,  384,
	    0,  385,    0,  386,    0,   11,    0,  387,  388,    0,  389,    0,
	  390,    0,  391,    0,  392,    0,  393,    0,  394,    0,  395,    0,
	  396,    0,  397,    0,  398,    0,  399,    0,  400,    0,  401,    0,
	  402,    0,  404,  403,  406,  405,  407,  406,  408,  409,  410,  409,
	  408,  405,  411,  412,  413,  414,  406,  405,  415,  406,  405,  416,
	  406,  405,  417,  406,  405,  418,  406,  405,  419,  406,  405,  420,
	  406,  405,  421,  406,  405,  422,  406,  405,  423,  406,  405,  424,
	  406,  405,  425,  406,  405,  426,  406,  405,  427,  406,  405,  428,
	  406,  405,  406,  429,  405,  430,  406,  405,  431,  406,  405,  432,
	  406,  405,  433,  434,  406,  405,  435,  406,  405,  436,  406,  405,
	  437,  406,  405,  438,  406,  405,  439,  406,  405,  440,  406,  405,
	  441,  406,  405,  442,  406,  405,  443,  406,  405,  444,  406,  405,
	  445,  406,  405,  446,  406,  405,  447,  406,  405,  448,  406,  405,
	  449,  406,  405,  428,  406,  405,  450,  406,  405,  451,  406,  405,
	  452,  406,  405,  453,  406,  405,  454,  406,  405,  455,  406,  405,
	  456,  406,  405,  428,  406,  405,  457,  458,  406,  405,  459,  406,
	  405,  460,  406,  405,  461,  406,  405,  462,  406,  405,  463,  406,
	  405,  464,  406,  405,  465,  406,  405,  466,  406,  405,  467,  406,
	  405,  468,  406,  405,  469,  406,  405,  470,  406,  405,  428,  406,
	  405,  471,  472,  406,  405,  473,  406,  405,  474,  406,  405,  475,
	  406,  405,  476,  406,  405,  477,  406,  405,  478,  406,  405,  479,
	  406,  405,  480,  406,  405,  481,  406,  405,  482,  406,  405,  483,
	  406,  405,  484,  406,  405,  485,  406,  405,  486,  406,  405,  406,
	  487,  405,  488,  406,  405,  489,  406,  405,  490,  406,  405,  491,
	  406,  405,  492,  406,  405,  493,  406,  405,  494,  406,  405,  495,
	  406,  405,  496,  406,  405,  444,  406,  405,  497,  406,  405,  498,
	  406,  405,  499,  406,  405,  500,  406,  405,  501,  406,  405,  502,
	  406,  405,  503,  406,  405,  504,  406,  405,  505,  406,  405,  506,
	  406,  405,  507,  406,  405,  428,  406,  405,  508,  406,  405,  509,
	  406,  405,  510,  406,  405,  511,  406,  405,  512,  406,  405,  513,
	  406,  405,  514,  406,  405,  515,  406,  405,  516,  406,  405,  517,
	  406,  405,  518,  449,  406,  405,  519,  406,  405,  520,  406,  405,
	  521,  406,  405,  522,  406,  405,  523,  406,  405,  524,  406,  405,
	  428,  406,  405,  406,  525,  405,  406,  526,  405,  406,  527,  405,
	  406,  528,  405,  406,  529,  405,  406,  530,  405,  406,  531,  405,
	  406,  532,  405,  406,  533,  405,  406,  534,  405,  406,  535,  405,
	  406,  536,  405,  406,  537,  405,  406,  538,  405,  539,  540,    0,
	  541,    0,  542,    0,  543,    0,  544,    0,  545,    0,  546,    0,
	  547,    0,  548,    0,  549,    0,  550,    0,  551,    0,  552,    0,
	  553,    0,  554,    0,  555,    0,  556,    0,  557,    0,  558,    0,
	  559,    0,  560,    0,  561,    0,  562,    0,  563,    0,  564,    0,
	  565,    0,  566,    0,  567,    0,  568,    0,  569,    0,  570,    0,
	  571,    0,  572,    0,  574,  573,  576,  575,  577,  576,  578,  579,
	  580,  581,  579,  578,  575,  582,  583,  584,  582,  585,  586,  587,
	  588,  589,  590,  576,  575,  576,  591,  575,  592,  576,  575,  593,
	  594,  576,  575,  595,  576,  575,  586,  576,  575,  596,  576,  575,
	  582,  576,  575,  597,  576,  575,  598,  576,  575,  599,  576,  575,
	  600,  576,  575,  601,  576,  575,  602,  576,  575,  603,  576,  575,
	  604,  576,  575,  605,  576,  575,  606,  576,  575,  607,  576,  575,
	  582,  576,  575,  608,  576,  575,  609,  576,  575,  610,  576,  575,
	  611,  576,  575,  612,  576,  575,  582,  576,  575,  613,  576,  614,
	  575,  615,  576,  575,  616,  576,  575,  617,  576,  575,  618,  576,
	  575,  619,  576,  575,  620,  576,  575,  582,  576,  575,  621,  576,
	  575,  622,  576,  575,  623,  576,  575,  624,  576,  575,  625,  576,
	  575,  626,  576,  575,  627,  576,  575,  628,  576,  575,  576,  629,
	  575,  630,  576,  575,  631,  576,  575,  632,  576,  575,  582,  576,
	  575,  633,  576,  575,  634,  576,  575,  635,  576,  575,  636,  576,
	  575,  637,  576,  575,  638,  576,  575,  639,  576,  575,  582,  576,
	  575,  640,  641,  576,  575,  642,  576,  575,  643,  576,  575,  644,
	  576,  575,  645,  576,  575,  646,  576,  575,  647,  576,  575,  648,
	  576,  575,  649,  576,  575,  650,  576,  575,  651,  576,  575,  652,
	  576,  575,  653,  576,  575,  654,  576,  575,  576,  591,  575,  655,
	  576,  575,  656,  576,  575,  657,  576,  575,  658,  576,  575,  659,
	  576,  575,  660,  576,  575,  661,  576,  575,  662,  576,  575,  663,
	  576,  575,  664,  576,  575,  665,  576,  575,  666,  576,  575,  654,
	  576,  575,  667,  576,  575,  668,  576,  575,  616,  576,  591,  575,
	  669,  576,  575,  670,  576,  575,  671,  576,  575,  672,  576,  575,
	  673,  576,  575,  674,  576,  575,  675,  576,  575,  676,  576,  575,
	  677,  576,  575,  678,  576,  575,  679,  680,  576,  575,  681,  576,
	  575,  682,  576,  575,  683,  576,  575,  684,  576,  575,  685,  576,
	  575,  686,  576,  575,  654,  576,  575,  654,  576,  575,  576,  687,
	  575,  576,  688,  575,  576,  689,  575,  576,  690,  575,  576,  691,
	  575,  576,  692,  575,  576,  693,  575,  576,  694,  575,  576,  695,
	  575,  576,  696,  575,  576,  697,  575,  576,  698,  575,  576,  699,
	  575,  576,  700,  575,  701,    0,  702,    0,  703,    0,  704,    0,
	  705,    0,  706,    0,  707,    0,  708,    0,  709,    0,  710,    0,
	  711,    0,  712,    0,  713,    0,  715,  714,  717,  716,  718,  717,
	  719,  720,  721,  722,  720,  719,  716,  723,  724,  725,  723,  726,
	  727,  728,  729,  730,  731,  717,  716,  717,  732,  716,  733,  717,
	  716,  734,  735,  717,  716,  736,  717,  716,  727,  717,  716,  737,
	  717,  716,  723,  717,  716,  738,  717,  716,  739,  717,  716,  740,
	  717,  716,  741,  717,  716,  742,  717,  716,  743,  717,  716,  744,
	  717,  716,  745,  717,  716,  746,  717,  716,  747,  717,  716,  748,
	  717,  716,  723,  717,  716,  749,  717,  716,  750,  717,  716,  751,
	  717,  716,  752,  717,  716,  753,  717,  716,  723,  717,  716,  754,
	  717,  755,  716,  756,  717,  716,  757,  717,  716,  758,  759,  717,
	  716,  760,  717,  716,  761,  717,  716,  762,  717,  716,  723,  717,
	  716,  763,  717,  716,  764,  717,  716,  765,  717,  716,  766,  717,
	  716,  767,  717,  716,  768,  717,  716,  769,  717,  716,  770,  717,
	  716,  771,  717,  716,  772,  717,  716,  717,  732,  716,  773,  717,
	  716,  774,  717,  716,  775,  717,  716,  776,  717,  716,  777,  717,
	  716,  778,  717,  716,  779,  717,  716,  780,  717,  716,  717,  781,
	  716,  782,  717,  716,  783,  717,  716,  784,  717,  716,  723,  717,
	  716,  785,  717,  716,  786,  787,  717,  716,  788,  717,  716,  789,
	  717,  716,  790,  717,  716,  791,  717,  716,  792,  717,  716,  793,
	  717,  716,  794,  717,  716,  795,  717,  716,  796,  717,  716,  797,
	  717,  716,  798,  717,  716,  799,  717,  716,  800,  717,  716,  801,
	  717,  716,  802,  717,  716,  803,  717,  716,  804,  717,  716,  772,
	  717,  716,  805,  717,  716,  806,  717,  716,  807,  717,  716,  808,
	  717,  716,  809,  717,  716,  723,  717,  716,  810,  811,  717,  716,
	  812,  717,  716,  813,  717,  716,  814,  717,  716,  815,  717,  716,
	  816,  717,  716,  817,  717,  716,  818,  717,  716,  819,  717,  716,
	  820,  717,  716,  821,  717,  716,  822,  717,  716,  823,  717,  716,
	  772,  717,  716,  824,  825,  717,  716,  826,  717,  716,  827,  717,
	  716,  828,  717,  716,  829,  717,  716,  830,  717,  716,  831,  717,
	  716,  832,  717,  716,  833,  717,  716,  834,  717,  716,  835,  717,
	  716,  836,  717,  716,  837,  717,  716,  838,  717,  716,  839,  717,
	  716,  717,  840,  716,  841,  717,  716,  842,  717,  716,  843,  717,
	  716,  844,  717,  716,  845,  717,  716,  846,  717,  716,  847,  717,
	  716,  848,  717,  716,  849,  717,  716,  799,  717,  716,  850,  717,
	  716,  851,  717,  716,  852,  717,  716,  853,  717,  716,  854,  717,
	  716,  855,  717,  716,  856,  717,  716,  857,  717,  716,  858,  717,
	  716,  859,  717,  716,  860,  717,  716,  772,  717,  716,  861,  717,
	  716,  862,  717,  716,  863,  717,  732,  716,  758,  717,  716,  864,
	  717,  716,  865,  717,  716,  866,  717,  716,  867,  717,  716,  868,
	  717,  716,  869,  717,  716,  870,  717,  716,  871,  717,  716,  872,
	  717,  716,  873,  717,  716,  874,  804,  717,  716,  875,  717,  716,
	  876,  717,  716,  877,  717,  716,  878,  717,  716,  879,  717,  716,
	  880,  717,  716,  772,  717,  716,  717,  881,  716,  717,  882,  716,
	  717,  883,  716,  717,  884,  716,  717,  885,  716,  717,  886,  716,
	  717,  887,  716,  717,  888,  716,  717,  889,  716,  717,  890,  716,
	  717,  891,  716,  717,  892,  716,  717,  893,  716,  717,  894,  716,
	  895,    0,  896,    0,  897,   20,    0,  115,    0,  898,    0,  899,
	    0,  900,    0,  901,    0,  902,    0,  903,    0,  904,    0,  905,
	    0,  906,    0,  907,    0,  908,  909,    0,  910,    0,  911,    0,
	  912,    0,  913,    0,  914,    0,  915,    0,  401,    0,  401,    0,
	  916,    0,    3,    0,  917,    0
	};
}

private static final short _lexer_indicies[] = init__lexer_indicies_0();


private static short[] init__lexer_trans_targs_0()
{
	return new short [] {
	    0,    2,  836,    6,    6,    7,   17,   19,    3,   33,   36,    3,
	   42,   60,   66,   46,  251,  324,  813,  817,    4,    5,    6,   18,
	    5,    6,   18,    8,    9,   10,   11,   10,   10,   11,   10,   12,
	   12,   12,   13,   12,   12,   12,   13,   14,   15,   16,    6,   16,
	   17,    6,   18,   20,   21,   22,   23,   24,   25,   26,   27,   28,
	   29,   30,   31,   32,  838,   34,   35,    6,   34,   33,   35,   36,
	   37,   38,   40,   41,   39,   37,   38,   39,   37,   40,    2,   41,
	    7,   17,   19,    3,   33,   36,   43,   44,   48,   45,   47,   49,
	   50,   51,   52,   53,   54,   55,   56,   57,   58,   59,   61,   62,
	   63,   64,   65,   67,  238,   68,   69,   70,   74,   71,   72,   73,
	   75,   76,   77,   78,   79,   80,   81,   82,   83,   84,   85,   86,
	   87,   86,   87,   88,   87,    6,  224,   89,   89,   91,  109,  115,
	   95,  136,  144,  203,  206,   90,    2,    6,    6,    7,   17,   19,
	    3,   33,   36,   92,   93,   97,   94,   96,   98,   99,  100,  101,
	  102,  103,  104,  105,  106,  107,  108,  110,  111,  112,  113,  114,
	  116,  123,  117,  118,  119,  120,  121,  122,  124,  125,  126,  127,
	  128,  129,  130,  131,  132,  133,  134,  135,  137,  138,  139,  140,
	  141,  142,  143,  145,  159,  146,  147,  148,  149,  150,  151,  152,
	  153,  154,  155,  156,  157,  158,  160,  191,  161,  162,  163,  164,
	  165,  166,  167,  168,  169,  170,  171,  172,  173,  174,  175,  176,
	  177,  178,  179,  180,  181,  182,  183,  184,  185,  186,  187,  188,
	  189,  190,  192,  193,  194,  195,  196,  197,  198,  199,  200,  201,
	  202,  204,  205,  207,  208,  209,  210,  211,  212,  213,  214,  215,
	  216,  217,  218,  219,  220,  221,  222,  223,  225,  226,  227,  228,
	  229,  230,  231,  232,  233,  234,  235,  236,  237,    6,  239,  240,
	  241,  242,  243,  244,  245,  246,  247,  248,  249,  250,  252,  253,
	  318,  254,  255,  271,  256,  257,  258,  259,  260,  261,  262,  263,
	  264,  265,  266,  267,  268,  269,  270,  272,  273,  274,  275,  276,
	  277,  278,  279,  280,  281,  282,  281,  282,  283,  282,    6,  284,
	  299,  285,  286,  287,  288,  289,  290,  291,  292,  293,  294,  295,
	  296,  297,  298,   90,  300,  301,  302,  303,  304,  305,  306,  307,
	  308,  309,  310,  317,  311,  312,  313,  314,  315,  316,  319,  320,
	  321,  322,  323,  325,  470,  326,  327,  328,  329,  330,  331,  332,
	  333,  334,  335,  336,  337,  338,  339,  340,  341,  340,  341,  342,
	  341,    6,  456,  343,  358,  386,  438,  344,  345,  346,  347,  348,
	  349,  350,  351,  352,  353,  354,  355,  356,  357,   90,  359,  360,
	  361,  362,  378,  363,  364,  365,  366,  367,  368,  369,  370,  371,
	  372,  373,  374,  375,  376,  377,  379,  380,  381,  382,  383,  384,
	  385,  387,  400,  388,  389,  390,  391,  392,  393,  394,  395,  396,
	  397,  398,  399,  401,  426,  402,  403,  404,  405,  406,  407,  408,
	  409,  410,  411,  412,  413,  414,  415,  416,  417,  418,  419,  420,
	  421,  422,  423,  424,  425,  427,  428,  429,  430,  431,  432,  433,
	  434,  435,  436,  437,  439,  440,  441,  442,  443,  444,  445,  446,
	  447,  448,  449,  450,  451,  452,  453,  454,  455,  457,  458,  459,
	  460,  461,  462,  463,  464,  465,  466,  467,  468,  469,    6,  471,
	  625,  472,  473,  474,  475,  476,  477,  478,  479,  480,  481,  482,
	  483,  484,  485,  486,  487,  488,  489,  490,  491,  492,  493,  494,
	  495,  496,  497,  498,  499,  500,  501,  502,  503,  504,  505,  504,
	  505,  506,  505,    6,  611,  507,  507,  508,  526,  532,  512,  553,
	  561,  589,  592,   90,  509,  510,  514,  511,  513,  515,  516,  517,
	  518,  519,  520,  521,  522,  523,  524,  525,  527,  528,  529,  530,
	  531,  533,  540,  534,  535,  536,  537,  538,  539,  541,  542,  543,
	  544,  545,  546,  547,  548,  549,  550,  551,  552,  554,  555,  556,
	  557,  558,  559,  560,  562,  576,  563,  564,  565,  566,  567,  568,
	  569,  570,  571,  572,  573,  574,  575,  577,  578,  579,  580,  581,
	  582,  583,  584,  585,  586,  587,  588,  590,  591,  593,  594,  595,
	  596,  597,  598,  599,  600,  601,  602,  603,  610,  604,  605,  606,
	  607,  608,  609,  612,  613,  614,  615,  616,  617,  618,  619,  620,
	  621,  622,  623,  624,    6,  626,  627,  628,  629,  630,  631,  632,
	  633,  634,  635,  636,  637,  638,  639,  640,  639,  640,  641,  640,
	    6,  799,  642,  642,  643,  661,  667,  647,  699,  725,  777,  781,
	   90,  644,  645,  649,  646,  648,  650,  651,  652,  653,  654,  655,
	  656,  657,  658,  659,  660,  662,  663,  664,  665,  666,  668,  686,
	  669,  670,  671,  675,  672,  673,  674,  676,  677,  678,  679,  680,
	  681,  682,  683,  684,  685,  687,  688,  689,  690,  691,  692,  693,
	  694,  695,  696,  697,  698,  700,  701,  719,  702,  703,  704,  705,
	  706,  707,  708,  709,  710,  711,  712,  713,  714,  715,  716,  717,
	  718,  720,  721,  722,  723,  724,  726,  739,  727,  728,  729,  730,
	  731,  732,  733,  734,  735,  736,  737,  738,  740,  765,  741,  742,
	  743,  744,  745,  746,  747,  748,  749,  750,  751,  752,  753,  754,
	  755,  756,  757,  758,  759,  760,  761,  762,  763,  764,  766,  767,
	  768,  769,  770,  771,  772,  773,  774,  775,  776,  778,  779,  780,
	  782,  783,  784,  785,  786,  787,  788,  789,  790,  791,  792,  793,
	  794,  795,  796,  797,  798,  800,  801,  802,  803,  804,  805,  806,
	  807,  808,  809,  810,  811,  812,    6,  814,  815,  816,  818,  819,
	  820,  821,  822,  823,  824,  825,  826,  827,  828,  835,  829,  830,
	  831,  832,  833,  834,  837,    0
	};
}

private static final short _lexer_trans_targs[] = init__lexer_trans_targs_0();


private static short[] init__lexer_trans_actions_0()
{
	return new short [] {
	   43,   29,    0,    0,   54,    3,    1,    0,   29,    1,   35,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,  149,  126,
	    0,  110,   23,    0,    0,    7,  139,   48,    0,  102,    9,    5,
	   45,  134,   45,    0,   33,  122,   33,   33,    0,   11,  106,    0,
	    0,  114,   25,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   27,  118,   27,   51,    0,    0,
	    0,   37,   37,   54,   37,   87,    0,    0,   39,    0,   96,    0,
	   93,   90,   41,   96,   90,   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,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,
	  144,    0,   54,   84,    0,   72,   33,   84,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,   15,   63,   31,  130,   60,   57,   31,
	   63,   57,   66,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,   15,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,   57,  144,    0,   54,   84,    0,   81,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,   21,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,   57,  144,    0,   54,   84,
	    0,   69,   33,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,   13,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   13,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,   57,  144,    0,
	   54,   84,    0,   78,   33,   84,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,   19,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,   19,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   57,  144,    0,   54,   84,    0,
	   75,   33,   84,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	   17,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,   17,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
	    0,    0,    0,    0,    0,    0
	};
}

private static final short _lexer_trans_actions[] = init__lexer_trans_actions_0();


private static short[] init__lexer_eof_actions_0()
{
	return new short [] {
	    0,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
	   43,   43,   43,   43,   43,   43,   43,   43,   43,   43,   43
	};
}

private static final short _lexer_eof_actions[] = init__lexer_eof_actions_0();


static final int lexer_start = 1;
static final int lexer_first_final = 838;

static final int lexer_en_main = 1;


// line 159 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"

  public void scan(String source)  {
    String input = source + "\n%_FEATURE_END_%";
    byte[] data = null;
    try {
      data = input.getBytes("UTF-8");
    } catch(UnsupportedEncodingException e) {
      throw new RuntimeException(e);
    }
    int cs, p = 0, pe = data.length;
    int eof = pe;

    int lineNumber = 1;
    int lastNewline = 0;

    int contentStart = -1;
    int currentLine = -1;
    int docstringContentTypeStart = -1;
    int docstringContentTypeEnd = -1;
    int startCol = -1;
    int nextKeywordStart = -1;
    int keywordStart = -1;
    String keyword = null;
    List currentRow = null;

    
// line 1011 "java/src/main/java/gherkin/lexer/i18n/RU.java"
	{
	cs = lexer_start;
	}

// line 185 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
    
// line 1018 "java/src/main/java/gherkin/lexer/i18n/RU.java"
	{
	int _klen;
	int _trans = 0;
	int _acts;
	int _nacts;
	int _keys;
	int _goto_targ = 0;

	_goto: while (true) {
	switch ( _goto_targ ) {
	case 0:
	if ( p == pe ) {
		_goto_targ = 4;
		continue _goto;
	}
	if ( cs == 0 ) {
		_goto_targ = 5;
		continue _goto;
	}
case 1:
	_match: do {
	_keys = _lexer_key_offsets[cs];
	_trans = _lexer_index_offsets[cs];
	_klen = _lexer_single_lengths[cs];
	if ( _klen > 0 ) {
		int _lower = _keys;
		int _mid;
		int _upper = _keys + _klen - 1;
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = _lower + ((_upper-_lower) >> 1);
			if ( data[p] < _lexer_trans_keys[_mid] )
				_upper = _mid - 1;
			else if ( data[p] > _lexer_trans_keys[_mid] )
				_lower = _mid + 1;
			else {
				_trans += (_mid - _keys);
				break _match;
			}
		}
		_keys += _klen;
		_trans += _klen;
	}

	_klen = _lexer_range_lengths[cs];
	if ( _klen > 0 ) {
		int _lower = _keys;
		int _mid;
		int _upper = _keys + (_klen<<1) - 2;
		while (true) {
			if ( _upper < _lower )
				break;

			_mid = _lower + (((_upper-_lower) >> 1) & ~1);
			if ( data[p] < _lexer_trans_keys[_mid] )
				_upper = _mid - 2;
			else if ( data[p] > _lexer_trans_keys[_mid+1] )
				_lower = _mid + 2;
			else {
				_trans += ((_mid - _keys)>>1);
				break _match;
			}
		}
		_trans += _klen;
	}
	} while (false);

	_trans = _lexer_indicies[_trans];
	cs = _lexer_trans_targs[_trans];

	if ( _lexer_trans_actions[_trans] != 0 ) {
		_acts = _lexer_trans_actions[_trans];
		_nacts = (int) _lexer_actions[_acts++];
		while ( _nacts-- > 0 )
	{
			switch ( _lexer_actions[_acts++] )
			{
	case 0:
// line 16 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      contentStart = p;
      currentLine = lineNumber;
      if(keyword != null) {
        startCol = p - lastNewline - (keyword.length() + 1);
      }
    }
	break;
	case 1:
// line 24 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      currentLine = lineNumber;
      startCol = p - lastNewline;
    }
	break;
	case 2:
// line 29 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      contentStart = p;
    }
	break;
	case 3:
// line 33 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      docstringContentTypeStart = p;
    }
	break;
	case 4:
// line 37 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      docstringContentTypeEnd = p;
    }
	break;
	case 5:
// line 41 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      String con = unindent(startCol, substring(data, contentStart, nextKeywordStart-1).replaceFirst("(\\r?\\n)?([\\t ])*\\Z", "").replaceAll("\\\\\"\\\\\"\\\\\"", "\"\"\""));
      String conType = substring(data, docstringContentTypeStart, docstringContentTypeEnd).trim();
      listener.docString(conType, con, currentLine);
    }
	break;
	case 6:
// line 47 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.feature(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 7:
// line 54 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.background(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 8:
// line 61 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.scenario(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 9:
// line 68 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.scenarioOutline(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 10:
// line 75 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      String[] nameDescription = nameAndUnindentedDescription(startCol, keywordContent(data, p, eof, nextKeywordStart, contentStart));
      listener.examples(keyword, nameDescription[0], nameDescription[1], currentLine);
      if(nextKeywordStart != -1) p = nextKeywordStart - 1;
      nextKeywordStart = -1;
    }
	break;
	case 11:
// line 82 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      listener.step(keyword, substring(data, contentStart, p).trim(), currentLine);
    }
	break;
	case 12:
// line 86 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      listener.comment(substring(data, contentStart, p).trim(), lineNumber);
      keywordStart = -1;
    }
	break;
	case 13:
// line 91 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      listener.tag(substring(data, contentStart, p).trim(), currentLine);
      keywordStart = -1;
    }
	break;
	case 14:
// line 96 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      lineNumber++;
    }
	break;
	case 15:
// line 100 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      lastNewline = p + 1;
    }
	break;
	case 16:
// line 104 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      if(keywordStart == -1) keywordStart = p;
    }
	break;
	case 17:
// line 108 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      keyword = substring(data, keywordStart, p).replaceFirst(":$","");
      keywordStart = -1;
    }
	break;
	case 18:
// line 113 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      nextKeywordStart = p;
    }
	break;
	case 19:
// line 117 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      p = p - 1;
      currentRow = new ArrayList();
      currentLine = lineNumber;
    }
	break;
	case 20:
// line 123 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      contentStart = p;
    }
	break;
	case 21:
// line 127 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      String con = substring(data, contentStart, p).trim();
      currentRow.add(con
        .replaceAll("\\\\\\|", "|")
        .replaceAll("\\\\n", "\n")
        .replaceAll("\\\\\\\\", "\\\\")
      );
    }
	break;
	case 22:
// line 136 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      listener.row(currentRow, currentLine);
    }
	break;
	case 23:
// line 140 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      if(cs < lexer_first_final) {
        String content = currentLineContent(data, lastNewline);
        throw new LexingError("Lexing error on line " + lineNumber + ": '" + content + "'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.");
      } else {
        listener.eof();
      }
    }
	break;
// line 1279 "java/src/main/java/gherkin/lexer/i18n/RU.java"
			}
		}
	}

case 2:
	if ( cs == 0 ) {
		_goto_targ = 5;
		continue _goto;
	}
	if ( ++p != pe ) {
		_goto_targ = 1;
		continue _goto;
	}
case 4:
	if ( p == eof )
	{
	int __acts = _lexer_eof_actions[cs];
	int __nacts = (int) _lexer_actions[__acts++];
	while ( __nacts-- > 0 ) {
		switch ( _lexer_actions[__acts++] ) {
	case 23:
// line 140 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
	{
      if(cs < lexer_first_final) {
        String content = currentLineContent(data, lastNewline);
        throw new LexingError("Lexing error on line " + lineNumber + ": '" + content + "'. See http://wiki.github.com/cucumber/gherkin/lexingerror for more information.");
      } else {
        listener.eof();
      }
    }
	break;
// line 1311 "java/src/main/java/gherkin/lexer/i18n/RU.java"
		}
	}
	}

case 5:
	}
	break; }
	}

// line 186 "/Users/ahellesoy/scm/gherkin/tasks/../ragel/i18n/ru.java.rl"
  }

  private String keywordContent(byte[] data, int p, int eof, int nextKeywordStart, int contentStart) {
    int endPoint = (nextKeywordStart == -1 || (p == eof)) ? p : nextKeywordStart;
    return substring(data, contentStart, endPoint);
  }

  private String[] nameAndUnindentedDescription(int startCol, String text) {
    String[] lines = text.split("\n");
    String name = lines.length > 0 ? lines[0].trim() : "";
    StringBuffer description = new StringBuffer();
    for(int i = 1; i < lines.length; i++) {
      description.append(lines[i]);
      description.append("\n");
    }
    return new String[]{name, unindent(startCol+2, description.toString()).replaceAll("\\s+$", "")};
  }

  private String unindent(int startCol, String text) {
    return Pattern.compile("^[\t ]{0," + startCol + "}", Pattern.MULTILINE).matcher(text).replaceAll("");
  }

  private String currentLineContent(byte[] data, int lastNewline) {
    return substring(data, lastNewline, data.length).trim();
  }

  private String substring(byte[] data, int start, int end) {
    try {
      return new String(data, start, end-start, "utf-8");
    } catch(java.io.UnsupportedEncodingException e) {
      throw new RuntimeException("Internal error", e);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy