// This code was generated by the Gardens Point Parser Generator
// Copyright (c) Wayne Kelly, QUT 2005-2008
// (see accompanying GPPGcopyright.rtf)
// GPPG version 1.3.1.136 (2008-11-11)
// Machine: LIRONPC
// DateTime: 01/07/2011 16:39:37
// UserName: liron
// Input file <C:\Projects\TEMP\SQLiteCompare\SQLiteParser\sqlite.y>
// options: conflicts no-lines gplex conflicts
using System;
using System.Collections.Generic;
using System.Text;
using gppg;
namespace SQLiteParser
{
public enum Tokens {
error=1,EOF=2,AS=3,NUMBER=4,LP=5,RP=6,
CREATE=7,UNIQUE=8,INDEX=9,IF=10,NOT=11,EXISTS=12,
ON=13,COLLATE=14,ASC=15,DESC=16,COMMA=17,ID=18,
DQUOTED=19,SQUOTED=20,BQUOTED=21,TQUOTED=22,TABLE=23,PRIMARY=24,
KEY=25,CONFLICT=26,AUTOINCR=27,CONSTRAINT=28,ROLLBACK=29,ABORT=30,
FAIL=31,IGNORE=32,REPLACE=33,LIKE_KW=34,ISNULL=35,NOTNULL=36,
NE=37,EQ=38,BETWEEN=39,MATCH=40,IS=41,GT=42,
LE=43,LT=44,GE=45,ESCAPE=46,BITAND=47,BITOR=48,
LSHIFT=49,RSHIFT=50,PLUS=51,MINUS=52,STAR=53,SLASH=54,
REM=55,CONCAT=56,BITNOT=57,IN=58,JOIN_KW=59,DOT=60,
DEFAULT=61,NULL=62,REFERENCES=63,DEFERRABLE=64,CASCADE=65,RESTRICT=66,
INITIALLY=67,DEFERRED=68,IMMEDIATE=69,FOREIGN=70,OR=71,REGISTER=72,
VARIABLE=73,CAST=74,CASE=75,RAISE=76,BEGIN=77,END=78,
WHEN=79,THEN=80,BLOB=81,CTIME_KW=82,TRIGGER=83,BEFORE=84,
AFTER=85,INSTEAD=86,OF=87,LIMIT=88,OFFSET=89,DELETE=90,
INSERT=91,UPDATE=92,FOR=93,EACH=94,ROW=95,SEMI=96,
ELSE=97,SET=98,VALUES=99,INTO=100,FROM=101,UNION=102,
ALL=103,EXCEPT=104,INTERSECT=105,SELECT=106,DISTINCT=107,JOIN=108,
INDEXED=109,BY=110,USING=111,ORDER=112,GROUP=113,HAVING=114,
CHECK=115,VIEW=116,WHERE=117,TEMP=118,AND=119,TEMPORARY=120,
UMINUS=121,UPLUS=122};
public struct ValueType
{
public SQLiteDdlStatement DdlStatement;
public SQLiteCreateTableStatement CreateTableStatement;
public SQLiteCreateViewStatement CreateViewStatement;
public SQLiteCreateTriggerStatement CreateTriggerStatement;
public SQLiteCreateIndexStatement CreateIndexStatement;
public List<SQLiteColumnStatement> ColumnsList;
public List<SQLiteTableConstraint> TableConstraintsList;
public SQLiteColumnStatement ColumnStatement;
public SQLiteColumnType ColumnType;
public SQLiteColumnConstraint ColumnConstraint;
public List<SQLiteColumnConstraint> ColumnConstraintsList;
public SQLiteTerm Term;
public SQLiteExpression Expression;
public SQLiteSortOrder SortOrder;
public List<SQLiteIndexedColumn> IndexedColumnsList;
public SQLiteReferenceAction ReferenceAction;
public SQLiteReferenceHandler ReferenceHandler;
public List<SQLiteReferenceHandler> ReferenceHandlersList;
public SQLiteDeferType DeferType;
public SQLiteDeferColumnConstraint DeferColumnConstraint;
public SQLiteTableConstraint TableConstraint;
public SQLiteResolveAction ResolveAction;
public SQLiteTimeFunction TimeFunction;
public SQLiteLikeOperator LikeOperator;
public SQLiteLike Like;
public List<SQLiteExpression> ExpressionsList;
public SQLiteDistinct Distinct;
public List<SQLiteSelectColumn> SelectColumnsList;
public SQLiteSelectStatement SelectStatement;
public SQLiteJoinOperator JoinOperator;
public SQLiteFromClause FromClause;
public SQLiteFromIndexed FromIndexed;
public SQLiteObjectName ObjectName;
public List<string> TextList;
public SQLiteFromInternalTable FromInternalTable;
public SQLiteSortItem SortItem;
public List<SQLiteSortItem> SortItemsList;
public SQLiteLimitClause LimitClause;
public SQLiteSingleSelectStatement SingleSelectStatement;
public SQLiteSelectOperator SelectOperator;
public List<SQLiteCaseItem> CaseItemsList;
public SQLiteTriggerTime TriggerTime;
public SQLiteTriggerEventClause TriggerEventClause;
public SQLiteStatement Statement;
public List<SQLiteStatement> StatementsList;
public List<SQLiteUpdateItem> UpdateItemsList;
public SQLiteInsertPrefix InsertPrefix;
public string Text;
public bool Bool;
public double Number;
public byte[] Blob;
}
// Abstract base class for GPLEX scanners
public abstract class ScanBase : IScanner<ValueType,LexLocation> {
private LexLocation __yylloc = new LexLocation();
public override LexLocation yylloc { get { return __yylloc; } set { __yylloc = value; } }
protected virtual bool yywrap() { return true; }
}
public class Parser: ShiftReduceParser<ValueType, LexLocation>
{
private Dictionary<int, string> aliasses = null;
protected override void Initialize()
{
this.errToken = (int)Tokens.error;
this.eofToken = (int)Tokens.EOF;
states=new State[616];
AddState(0,new State(new int[]{7,4},new int[]{-1,1,-22,3,-24,613,-23,614,-25,615}));
AddState(1,new State(new int[]{2,2}));
AddState(2,new State(-1));
AddState(3,new State(-2));
AddState(4,new State(new int[]{23,5,118,610,120,611,8,612,116,-293,83,-293,9,-284},new int[]{-26,521,-16,567,-4,577}));
AddState(5,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,6}));
AddState(6,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,7}));
AddState(7,new State(new int[]{60,405,5,-206},new int[]{-3,8}));
AddState(8,new State(new int[]{5,10},new int[]{-27,9}));
AddState(9,new State(-6));
AddState(10,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-28,11,-31,517,-7,466,-2,515}));
AddState(11,new State(new int[]{17,14,6,-184},new int[]{-29,12}));
AddState(12,new State(new int[]{6,13}));
AddState(13,new State(-10));
AddState(14,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60,28,19,24,61,8,129,115,134,70,428},new int[]{-31,15,-30,16,-7,466,-2,515,-46,516}));
AddState(15,new State(-11));
AddState(16,new State(new int[]{17,17,28,19,24,61,8,129,115,134,70,428,6,-185},new int[]{-46,465}));
AddState(17,new State(new int[]{28,19,24,61,8,129,115,134,70,428},new int[]{-46,18}));
AddState(18,new State(-186));
AddState(19,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,20}));
AddState(20,new State(-189));
AddState(21,new State(-58));
AddState(22,new State(-59));
AddState(23,new State(-60));
AddState(24,new State(-61));
AddState(25,new State(-62));
AddState(26,new State(-63));
AddState(27,new State(-64));
AddState(28,new State(-65));
AddState(29,new State(-66));
AddState(30,new State(-67));
AddState(31,new State(-68));
AddState(32,new State(-69));
AddState(33,new State(-70));
AddState(34,new State(-71));
AddState(35,new State(-72));
AddState(36,new State(-73));
AddState(37,new State(-74));
AddState(38,new State(-75));
AddState(39,new State(-76));
AddState(40,new State(-77));
AddState(41,new State(-78));
AddState(42,new State(-79));
AddState(43,new State(-80));
AddState(44,new State(-81));
AddState(45,new State(-82));
AddState(46,new State(-83));
AddState(47,new State(-84));
AddState(48,new State(-85));
AddState(49,new State(-86));
AddState(50,new State(-87));
AddState(51,new State(-88));
AddState(52,new State(-89));
AddState(53,new State(-90));
AddState(54,new State(-91));
AddState(55,new State(-92));
AddState(56,new State(-93));
AddState(57,new State(-94));
AddState(58,new State(-95));
AddState(59,new State(-96));
AddState(60,new State(-97));
AddState(61,new State(new int[]{25,62}));
AddState(62,new State(new int[]{5,63}));
AddState(63,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,64,-2,126}));
AddState(64,new State(new int[]{17,77,27,125,6,-167},new int[]{-13,65}));
AddState(65,new State(new int[]{6,66}));
AddState(66,new State(new int[]{13,68,17,-196,28,-196,24,-196,8,-196,115,-196,70,-196,6,-196},new int[]{-47,67}));
AddState(67,new State(-190));
AddState(68,new State(new int[]{26,69}));
AddState(69,new State(new int[]{29,72,30,73,31,74,32,75,33,76},new int[]{-50,70,-49,71}));
AddState(70,new State(-197));
AddState(71,new State(-200));
AddState(72,new State(-203));
AddState(73,new State(-204));
AddState(74,new State(-205));
AddState(75,new State(-201));
AddState(76,new State(-202));
AddState(77,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,78}));
AddState(78,new State(new int[]{14,83,15,-290,16,-290,17,-290,27,-290,6,-290},new int[]{-21,79}));
AddState(79,new State(new int[]{15,81,16,82,17,-371,27,-371,6,-371},new int[]{-37,80}));
AddState(80,new State(-288));
AddState(81,new State(-372));
AddState(82,new State(-373));
AddState(83,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-6,84}));
AddState(84,new State(-291));
AddState(85,new State(-18));
AddState(86,new State(-19));
AddState(87,new State(-20));
AddState(88,new State(-21));
AddState(89,new State(-22));
AddState(90,new State(-23));
AddState(91,new State(-24));
AddState(92,new State(-25));
AddState(93,new State(-26));
AddState(94,new State(-27));
AddState(95,new State(-28));
AddState(96,new State(-29));
AddState(97,new State(-30));
AddState(98,new State(-31));
AddState(99,new State(-32));
AddState(100,new State(-33));
AddState(101,new State(-34));
AddState(102,new State(-35));
AddState(103,new State(-36));
AddState(104,new State(-37));
AddState(105,new State(-38));
AddState(106,new State(-39));
AddState(107,new State(-40));
AddState(108,new State(-41));
AddState(109,new State(-42));
AddState(110,new State(-43));
AddState(111,new State(-44));
AddState(112,new State(-45));
AddState(113,new State(-46));
AddState(114,new State(-47));
AddState(115,new State(-48));
AddState(116,new State(-49));
AddState(117,new State(-50));
AddState(118,new State(-51));
AddState(119,new State(-52));
AddState(120,new State(-53));
AddState(121,new State(-54));
AddState(122,new State(-55));
AddState(123,new State(-56));
AddState(124,new State(-57));
AddState(125,new State(-168));
AddState(126,new State(new int[]{14,83,15,-290,16,-290,17,-290,27,-290,6,-290},new int[]{-21,127}));
AddState(127,new State(new int[]{15,81,16,82,17,-371,27,-371,6,-371},new int[]{-37,128}));
AddState(128,new State(-289));
AddState(129,new State(new int[]{5,130}));
AddState(130,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,131,-2,126}));
AddState(131,new State(new int[]{6,132,17,77}));
AddState(132,new State(new int[]{13,68,17,-196,28,-196,24,-196,8,-196,115,-196,70,-196,6,-196},new int[]{-47,133}));
AddState(133,new State(-191));
AddState(134,new State(new int[]{5,135}));
AddState(135,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,136,-90,221,-20,239,-2,311}));
AddState(136,new State(new int[]{6,137,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(137,new State(new int[]{13,68,17,-196,28,-196,24,-196,8,-196,115,-196,70,-196,6,-196},new int[]{-47,138}));
AddState(138,new State(-192));
AddState(139,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,140,-90,221,-20,239,-2,311}));
AddState(140,new State(new int[]{14,142,119,-280,71,-280,44,-280,42,-280,45,-280,43,-280,38,-280,37,-280,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-280,36,-280,41,-280,11,-280,46,426,34,-280,40,-280,39,-280,58,-280,6,-280,17,-280,89,-280,102,-280,104,-280,105,-280,96,-280,2,-280,114,-280,112,-280,88,-280,3,-280,79,-280,80,-280,97,-280,78,-280,15,-280,16,-280,113,-280,111,-280,108,-280,59,-280,117,-280,18,-280,25,-280,10,-280,26,-280,30,-280,31,-280,32,-280,33,-280,65,-280,66,-280,67,-280,68,-280,69,-280,74,-280,76,-280,77,-280,83,-280,84,-280,85,-280,86,-280,87,-280,93,-280,94,-280,95,-280,109,-280,82,-280,116,-280,118,-280,120,-280,19,-280,20,-280,21,-280,22,-280,101,-280},new int[]{-52,141,-51,139,-15,144,-14,196}));
AddState(141,new State(-216));
AddState(142,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-6,143}));
AddState(143,new State(-217));
AddState(144,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,145,-90,221,-20,239,-2,311}));
AddState(145,new State(new int[]{119,146,14,142,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(146,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,147,-90,221,-20,239,-2,311}));
AddState(147,new State(new int[]{14,142,119,-221,71,-221,44,152,42,154,45,156,43,158,38,-221,37,-221,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-221,36,-221,41,-221,11,-221,34,-221,40,-221,39,-221,58,-221,6,-221,46,-221,17,-221,89,-221,102,-221,104,-221,105,-221,96,-221,2,-221,114,-221,112,-221,88,-221,3,-221,79,-221,80,-221,97,-221,78,-221,15,-221,16,-221,113,-221,111,-221,108,-221,59,-221,117,-221,18,-221,25,-221,10,-221,26,-221,30,-221,31,-221,32,-221,33,-221,65,-221,66,-221,67,-221,68,-221,69,-221,74,-221,76,-221,77,-221,83,-221,84,-221,85,-221,86,-221,87,-221,93,-221,94,-221,95,-221,109,-221,82,-221,116,-221,118,-221,120,-221,19,-221,20,-221,21,-221,22,-221,101,-221},new int[]{-51,139,-15,144,-14,196}));
AddState(148,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,149,-90,221,-20,239,-2,311}));
AddState(149,new State(new int[]{14,142,119,-222,71,-222,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-222,46,-222,17,-222,89,-222,102,-222,104,-222,105,-222,96,-222,2,-222,114,-222,112,-222,88,-222,3,-222,79,-222,80,-222,97,-222,78,-222,15,-222,16,-222,113,-222,111,-222,108,-222,59,-222,117,-222,18,-222,25,-222,10,-222,26,-222,30,-222,31,-222,32,-222,33,-222,65,-222,66,-222,67,-222,68,-222,69,-222,74,-222,76,-222,77,-222,83,-222,84,-222,85,-222,86,-222,87,-222,93,-222,94,-222,95,-222,109,-222,82,-222,116,-222,118,-222,120,-222,19,-222,20,-222,21,-222,22,-222,101,-222},new int[]{-51,139,-15,144,-14,196}));
AddState(150,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,151,-90,221,-20,239,-2,311}));
AddState(151,new State(new int[]{14,142,119,148,71,-223,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-223,46,-223,17,-223,89,-223,102,-223,104,-223,105,-223,96,-223,2,-223,114,-223,112,-223,88,-223,3,-223,79,-223,80,-223,97,-223,78,-223,15,-223,16,-223,113,-223,111,-223,108,-223,59,-223,117,-223,18,-223,25,-223,10,-223,26,-223,30,-223,31,-223,32,-223,33,-223,65,-223,66,-223,67,-223,68,-223,69,-223,74,-223,76,-223,77,-223,83,-223,84,-223,85,-223,86,-223,87,-223,93,-223,94,-223,95,-223,109,-223,82,-223,116,-223,118,-223,120,-223,19,-223,20,-223,21,-223,22,-223,101,-223},new int[]{-51,139,-15,144,-14,196}));
AddState(152,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,153,-90,221,-20,239,-2,311}));
AddState(153,new State(new int[]{14,142,119,-224,71,-224,44,-224,42,-224,45,-224,43,-224,38,-224,37,-224,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-224,36,-224,41,-224,11,-224,34,-224,40,-224,39,-224,58,-224,6,-224,46,-224,17,-224,89,-224,102,-224,104,-224,105,-224,96,-224,2,-224,114,-224,112,-224,88,-224,3,-224,79,-224,80,-224,97,-224,78,-224,15,-224,16,-224,113,-224,111,-224,108,-224,59,-224,117,-224,18,-224,25,-224,10,-224,26,-224,30,-224,31,-224,32,-224,33,-224,65,-224,66,-224,67,-224,68,-224,69,-224,74,-224,76,-224,77,-224,83,-224,84,-224,85,-224,86,-224,87,-224,93,-224,94,-224,95,-224,109,-224,82,-224,116,-224,118,-224,120,-224,19,-224,20,-224,21,-224,22,-224,101,-224},new int[]{-51,139,-15,144,-14,196}));
AddState(154,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,155,-90,221,-20,239,-2,311}));
AddState(155,new State(new int[]{14,142,119,-225,71,-225,44,-225,42,-225,45,-225,43,-225,38,-225,37,-225,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-225,36,-225,41,-225,11,-225,34,-225,40,-225,39,-225,58,-225,6,-225,46,-225,17,-225,89,-225,102,-225,104,-225,105,-225,96,-225,2,-225,114,-225,112,-225,88,-225,3,-225,79,-225,80,-225,97,-225,78,-225,15,-225,16,-225,113,-225,111,-225,108,-225,59,-225,117,-225,18,-225,25,-225,10,-225,26,-225,30,-225,31,-225,32,-225,33,-225,65,-225,66,-225,67,-225,68,-225,69,-225,74,-225,76,-225,77,-225,83,-225,84,-225,85,-225,86,-225,87,-225,93,-225,94,-225,95,-225,109,-225,82,-225,116,-225,118,-225,120,-225,19,-225,20,-225,21,-225,22,-225,101,-225},new int[]{-51,139,-15,144,-14,196}));
AddState(156,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,157,-90,221,-20,239,-2,311}));
AddState(157,new State(new int[]{14,142,119,-226,71,-226,44,-226,42,-226,45,-226,43,-226,38,-226,37,-226,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-226,36,-226,41,-226,11,-226,34,-226,40,-226,39,-226,58,-226,6,-226,46,-226,17,-226,89,-226,102,-226,104,-226,105,-226,96,-226,2,-226,114,-226,112,-226,88,-226,3,-226,79,-226,80,-226,97,-226,78,-226,15,-226,16,-226,113,-226,111,-226,108,-226,59,-226,117,-226,18,-226,25,-226,10,-226,26,-226,30,-226,31,-226,32,-226,33,-226,65,-226,66,-226,67,-226,68,-226,69,-226,74,-226,76,-226,77,-226,83,-226,84,-226,85,-226,86,-226,87,-226,93,-226,94,-226,95,-226,109,-226,82,-226,116,-226,118,-226,120,-226,19,-226,20,-226,21,-226,22,-226,101,-226},new int[]{-51,139,-15,144,-14,196}));
AddState(158,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,159,-90,221,-20,239,-2,311}));
AddState(159,new State(new int[]{14,142,119,-227,71,-227,44,-227,42,-227,45,-227,43,-227,38,-227,37,-227,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-227,36,-227,41,-227,11,-227,34,-227,40,-227,39,-227,58,-227,6,-227,46,-227,17,-227,89,-227,102,-227,104,-227,105,-227,96,-227,2,-227,114,-227,112,-227,88,-227,3,-227,79,-227,80,-227,97,-227,78,-227,15,-227,16,-227,113,-227,111,-227,108,-227,59,-227,117,-227,18,-227,25,-227,10,-227,26,-227,30,-227,31,-227,32,-227,33,-227,65,-227,66,-227,67,-227,68,-227,69,-227,74,-227,76,-227,77,-227,83,-227,84,-227,85,-227,86,-227,87,-227,93,-227,94,-227,95,-227,109,-227,82,-227,116,-227,118,-227,120,-227,19,-227,20,-227,21,-227,22,-227,101,-227},new int[]{-51,139,-15,144,-14,196}));
AddState(160,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,161,-90,221,-20,239,-2,311}));
AddState(161,new State(new int[]{14,142,119,-228,71,-228,44,152,42,154,45,156,43,158,38,-228,37,-228,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-228,36,-228,41,-228,11,-228,34,-228,40,-228,39,-228,58,-228,6,-228,46,-228,17,-228,89,-228,102,-228,104,-228,105,-228,96,-228,2,-228,114,-228,112,-228,88,-228,3,-228,79,-228,80,-228,97,-228,78,-228,15,-228,16,-228,113,-228,111,-228,108,-228,59,-228,117,-228,18,-228,25,-228,10,-228,26,-228,30,-228,31,-228,32,-228,33,-228,65,-228,66,-228,67,-228,68,-228,69,-228,74,-228,76,-228,77,-228,83,-228,84,-228,85,-228,86,-228,87,-228,93,-228,94,-228,95,-228,109,-228,82,-228,116,-228,118,-228,120,-228,19,-228,20,-228,21,-228,22,-228,101,-228},new int[]{-51,139,-15,144,-14,196}));
AddState(162,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,163,-90,221,-20,239,-2,311}));
AddState(163,new State(new int[]{14,142,119,-229,71,-229,44,152,42,154,45,156,43,158,38,-229,37,-229,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-229,36,-229,41,-229,11,-229,34,-229,40,-229,39,-229,58,-229,6,-229,46,-229,17,-229,89,-229,102,-229,104,-229,105,-229,96,-229,2,-229,114,-229,112,-229,88,-229,3,-229,79,-229,80,-229,97,-229,78,-229,15,-229,16,-229,113,-229,111,-229,108,-229,59,-229,117,-229,18,-229,25,-229,10,-229,26,-229,30,-229,31,-229,32,-229,33,-229,65,-229,66,-229,67,-229,68,-229,69,-229,74,-229,76,-229,77,-229,83,-229,84,-229,85,-229,86,-229,87,-229,93,-229,94,-229,95,-229,109,-229,82,-229,116,-229,118,-229,120,-229,19,-229,20,-229,21,-229,22,-229,101,-229},new int[]{-51,139,-15,144,-14,196}));
AddState(164,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,165,-90,221,-20,239,-2,311}));
AddState(165,new State(new int[]{14,142,119,-230,71,-230,44,-230,42,-230,45,-230,43,-230,38,-230,37,-230,47,-230,48,-230,49,-230,50,-230,51,172,52,174,53,176,54,178,55,180,56,182,35,-230,36,-230,41,-230,11,-230,34,-230,40,-230,39,-230,58,-230,6,-230,46,-230,17,-230,89,-230,102,-230,104,-230,105,-230,96,-230,2,-230,114,-230,112,-230,88,-230,3,-230,79,-230,80,-230,97,-230,78,-230,15,-230,16,-230,113,-230,111,-230,108,-230,59,-230,117,-230,18,-230,25,-230,10,-230,26,-230,30,-230,31,-230,32,-230,33,-230,65,-230,66,-230,67,-230,68,-230,69,-230,74,-230,76,-230,77,-230,83,-230,84,-230,85,-230,86,-230,87,-230,93,-230,94,-230,95,-230,109,-230,82,-230,116,-230,118,-230,120,-230,19,-230,20,-230,21,-230,22,-230,101,-230},new int[]{-51,139,-15,144,-14,196}));
AddState(166,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,167,-90,221,-20,239,-2,311}));
AddState(167,new State(new int[]{14,142,119,-231,71,-231,44,-231,42,-231,45,-231,43,-231,38,-231,37,-231,47,-231,48,-231,49,-231,50,-231,51,172,52,174,53,176,54,178,55,180,56,182,35,-231,36,-231,41,-231,11,-231,34,-231,40,-231,39,-231,58,-231,6,-231,46,-231,17,-231,89,-231,102,-231,104,-231,105,-231,96,-231,2,-231,114,-231,112,-231,88,-231,3,-231,79,-231,80,-231,97,-231,78,-231,15,-231,16,-231,113,-231,111,-231,108,-231,59,-231,117,-231,18,-231,25,-231,10,-231,26,-231,30,-231,31,-231,32,-231,33,-231,65,-231,66,-231,67,-231,68,-231,69,-231,74,-231,76,-231,77,-231,83,-231,84,-231,85,-231,86,-231,87,-231,93,-231,94,-231,95,-231,109,-231,82,-231,116,-231,118,-231,120,-231,19,-231,20,-231,21,-231,22,-231,101,-231},new int[]{-51,139,-15,144,-14,196}));
AddState(168,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,169,-90,221,-20,239,-2,311}));
AddState(169,new State(new int[]{14,142,119,-232,71,-232,44,-232,42,-232,45,-232,43,-232,38,-232,37,-232,47,-232,48,-232,49,-232,50,-232,51,172,52,174,53,176,54,178,55,180,56,182,35,-232,36,-232,41,-232,11,-232,34,-232,40,-232,39,-232,58,-232,6,-232,46,-232,17,-232,89,-232,102,-232,104,-232,105,-232,96,-232,2,-232,114,-232,112,-232,88,-232,3,-232,79,-232,80,-232,97,-232,78,-232,15,-232,16,-232,113,-232,111,-232,108,-232,59,-232,117,-232,18,-232,25,-232,10,-232,26,-232,30,-232,31,-232,32,-232,33,-232,65,-232,66,-232,67,-232,68,-232,69,-232,74,-232,76,-232,77,-232,83,-232,84,-232,85,-232,86,-232,87,-232,93,-232,94,-232,95,-232,109,-232,82,-232,116,-232,118,-232,120,-232,19,-232,20,-232,21,-232,22,-232,101,-232},new int[]{-51,139,-15,144,-14,196}));
AddState(170,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,171,-90,221,-20,239,-2,311}));
AddState(171,new State(new int[]{14,142,119,-233,71,-233,44,-233,42,-233,45,-233,43,-233,38,-233,37,-233,47,-233,48,-233,49,-233,50,-233,51,172,52,174,53,176,54,178,55,180,56,182,35,-233,36,-233,41,-233,11,-233,34,-233,40,-233,39,-233,58,-233,6,-233,46,-233,17,-233,89,-233,102,-233,104,-233,105,-233,96,-233,2,-233,114,-233,112,-233,88,-233,3,-233,79,-233,80,-233,97,-233,78,-233,15,-233,16,-233,113,-233,111,-233,108,-233,59,-233,117,-233,18,-233,25,-233,10,-233,26,-233,30,-233,31,-233,32,-233,33,-233,65,-233,66,-233,67,-233,68,-233,69,-233,74,-233,76,-233,77,-233,83,-233,84,-233,85,-233,86,-233,87,-233,93,-233,94,-233,95,-233,109,-233,82,-233,116,-233,118,-233,120,-233,19,-233,20,-233,21,-233,22,-233,101,-233},new int[]{-51,139,-15,144,-14,196}));
AddState(172,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,173,-90,221,-20,239,-2,311}));
AddState(173,new State(new int[]{14,142,119,-234,71,-234,44,-234,42,-234,45,-234,43,-234,38,-234,37,-234,47,-234,48,-234,49,-234,50,-234,51,-234,52,-234,53,176,54,178,55,180,56,182,35,-234,36,-234,41,-234,11,-234,34,-234,40,-234,39,-234,58,-234,6,-234,46,-234,17,-234,89,-234,102,-234,104,-234,105,-234,96,-234,2,-234,114,-234,112,-234,88,-234,3,-234,79,-234,80,-234,97,-234,78,-234,15,-234,16,-234,113,-234,111,-234,108,-234,59,-234,117,-234,18,-234,25,-234,10,-234,26,-234,30,-234,31,-234,32,-234,33,-234,65,-234,66,-234,67,-234,68,-234,69,-234,74,-234,76,-234,77,-234,83,-234,84,-234,85,-234,86,-234,87,-234,93,-234,94,-234,95,-234,109,-234,82,-234,116,-234,118,-234,120,-234,19,-234,20,-234,21,-234,22,-234,101,-234},new int[]{-51,139,-15,144,-14,196}));
AddState(174,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,175,-90,221,-20,239,-2,311}));
AddState(175,new State(new int[]{14,142,119,-235,71,-235,44,-235,42,-235,45,-235,43,-235,38,-235,37,-235,47,-235,48,-235,49,-235,50,-235,51,-235,52,-235,53,176,54,178,55,180,56,182,35,-235,36,-235,41,-235,11,-235,34,-235,40,-235,39,-235,58,-235,6,-235,46,-235,17,-235,89,-235,102,-235,104,-235,105,-235,96,-235,2,-235,114,-235,112,-235,88,-235,3,-235,79,-235,80,-235,97,-235,78,-235,15,-235,16,-235,113,-235,111,-235,108,-235,59,-235,117,-235,18,-235,25,-235,10,-235,26,-235,30,-235,31,-235,32,-235,33,-235,65,-235,66,-235,67,-235,68,-235,69,-235,74,-235,76,-235,77,-235,83,-235,84,-235,85,-235,86,-235,87,-235,93,-235,94,-235,95,-235,109,-235,82,-235,116,-235,118,-235,120,-235,19,-235,20,-235,21,-235,22,-235,101,-235},new int[]{-51,139,-15,144,-14,196}));
AddState(176,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,177,-90,221,-20,239,-2,311}));
AddState(177,new State(new int[]{14,142,119,-236,71,-236,44,-236,42,-236,45,-236,43,-236,38,-236,37,-236,47,-236,48,-236,49,-236,50,-236,51,-236,52,-236,53,-236,54,-236,55,-236,56,182,35,-236,36,-236,41,-236,11,-236,34,-236,40,-236,39,-236,58,-236,6,-236,46,-236,17,-236,89,-236,102,-236,104,-236,105,-236,96,-236,2,-236,114,-236,112,-236,88,-236,3,-236,79,-236,80,-236,97,-236,78,-236,15,-236,16,-236,113,-236,111,-236,108,-236,59,-236,117,-236,18,-236,25,-236,10,-236,26,-236,30,-236,31,-236,32,-236,33,-236,65,-236,66,-236,67,-236,68,-236,69,-236,74,-236,76,-236,77,-236,83,-236,84,-236,85,-236,86,-236,87,-236,93,-236,94,-236,95,-236,109,-236,82,-236,116,-236,118,-236,120,-236,19,-236,20,-236,21,-236,22,-236,101,-236},new int[]{-51,139,-15,144,-14,196}));
AddState(178,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,179,-90,221,-20,239,-2,311}));
AddState(179,new State(new int[]{14,142,119,-237,71,-237,44,-237,42,-237,45,-237,43,-237,38,-237,37,-237,47,-237,48,-237,49,-237,50,-237,51,-237,52,-237,53,-237,54,-237,55,-237,56,182,35,-237,36,-237,41,-237,11,-237,34,-237,40,-237,39,-237,58,-237,6,-237,46,-237,17,-237,89,-237,102,-237,104,-237,105,-237,96,-237,2,-237,114,-237,112,-237,88,-237,3,-237,79,-237,80,-237,97,-237,78,-237,15,-237,16,-237,113,-237,111,-237,108,-237,59,-237,117,-237,18,-237,25,-237,10,-237,26,-237,30,-237,31,-237,32,-237,33,-237,65,-237,66,-237,67,-237,68,-237,69,-237,74,-237,76,-237,77,-237,83,-237,84,-237,85,-237,86,-237,87,-237,93,-237,94,-237,95,-237,109,-237,82,-237,116,-237,118,-237,120,-237,19,-237,20,-237,21,-237,22,-237,101,-237},new int[]{-51,139,-15,144,-14,196}));
AddState(180,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,181,-90,221,-20,239,-2,311}));
AddState(181,new State(new int[]{14,142,119,-238,71,-238,44,-238,42,-238,45,-238,43,-238,38,-238,37,-238,47,-238,48,-238,49,-238,50,-238,51,-238,52,-238,53,-238,54,-238,55,-238,56,182,35,-238,36,-238,41,-238,11,-238,34,-238,40,-238,39,-238,58,-238,6,-238,46,-238,17,-238,89,-238,102,-238,104,-238,105,-238,96,-238,2,-238,114,-238,112,-238,88,-238,3,-238,79,-238,80,-238,97,-238,78,-238,15,-238,16,-238,113,-238,111,-238,108,-238,59,-238,117,-238,18,-238,25,-238,10,-238,26,-238,30,-238,31,-238,32,-238,33,-238,65,-238,66,-238,67,-238,68,-238,69,-238,74,-238,76,-238,77,-238,83,-238,84,-238,85,-238,86,-238,87,-238,93,-238,94,-238,95,-238,109,-238,82,-238,116,-238,118,-238,120,-238,19,-238,20,-238,21,-238,22,-238,101,-238},new int[]{-51,139,-15,144,-14,196}));
AddState(182,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,183,-90,221,-20,239,-2,311}));
AddState(183,new State(new int[]{14,142,119,-239,71,-239,44,-239,42,-239,45,-239,43,-239,38,-239,37,-239,47,-239,48,-239,49,-239,50,-239,51,-239,52,-239,53,-239,54,-239,55,-239,56,-239,35,-239,36,-239,41,-239,11,-239,34,-239,40,-239,39,-239,58,-239,6,-239,46,-239,17,-239,89,-239,102,-239,104,-239,105,-239,96,-239,2,-239,114,-239,112,-239,88,-239,3,-239,79,-239,80,-239,97,-239,78,-239,15,-239,16,-239,113,-239,111,-239,108,-239,59,-239,117,-239,18,-239,25,-239,10,-239,26,-239,30,-239,31,-239,32,-239,33,-239,65,-239,66,-239,67,-239,68,-239,69,-239,74,-239,76,-239,77,-239,83,-239,84,-239,85,-239,86,-239,87,-239,93,-239,94,-239,95,-239,109,-239,82,-239,116,-239,118,-239,120,-239,19,-239,20,-239,21,-239,22,-239,101,-239},new int[]{-51,139,-15,144,-14,196}));
AddState(184,new State(-240));
AddState(185,new State(-241));
AddState(186,new State(new int[]{62,187,11,188}));
AddState(187,new State(-242));
AddState(188,new State(new int[]{62,189}));
AddState(189,new State(-244));
AddState(190,new State(new int[]{62,191,34,192,40,193,39,194,58,195}));
AddState(191,new State(-243));
AddState(192,new State(-277));
AddState(193,new State(-279));
AddState(194,new State(-283));
AddState(195,new State(-268));
AddState(196,new State(new int[]{5,197,18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,424}));
AddState(197,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,106,204,6,-259},new int[]{-53,198,-59,200,-54,245,-91,346,-90,221,-20,239,-2,311,-58,329}));
AddState(198,new State(new int[]{6,199}));
AddState(199,new State(-249));
AddState(200,new State(new int[]{6,201,102,234,104,236,105,237},new int[]{-78,202}));
AddState(201,new State(-251));
AddState(202,new State(new int[]{106,204},new int[]{-58,203}));
AddState(203,new State(-328));
AddState(204,new State(new int[]{107,349,103,350,53,-334,4,-334,81,-334,19,-334,20,-334,21,-334,22,-334,82,-334,5,-334,62,-334,18,-334,25,-334,10,-334,15,-334,16,-334,26,-334,30,-334,31,-334,32,-334,33,-334,34,-334,40,-334,59,-334,65,-334,66,-334,67,-334,68,-334,69,-334,74,-334,76,-334,77,-334,78,-334,83,-334,84,-334,85,-334,86,-334,87,-334,89,-334,93,-334,94,-334,95,-334,109,-334,116,-334,118,-334,120,-334,73,-334,11,-334,57,-334,52,-334,51,-334,12,-334,75,-334},new int[]{-55,205}));
AddState(205,new State(-337,new int[]{-56,206,-57,415}));
AddState(206,new State(new int[]{17,369,101,370,117,-345,113,-345,114,-345,112,-345,88,-345,6,-345,102,-345,104,-345,105,-345,96,-345,2,-345},new int[]{-63,207}));
AddState(207,new State(new int[]{117,367,113,-323,114,-323,112,-323,88,-323,6,-323,102,-323,104,-323,105,-323,96,-323,2,-323},new int[]{-71,208}));
AddState(208,new State(new int[]{113,364,114,-374,112,-374,88,-374,6,-374,102,-374,104,-374,105,-374,96,-374,2,-374},new int[]{-72,209}));
AddState(209,new State(new int[]{114,362,112,-376,88,-376,6,-376,102,-376,104,-376,105,-376,96,-376,2,-376},new int[]{-73,210}));
AddState(210,new State(new int[]{112,353,88,-366,6,-366,102,-366,104,-366,105,-366,96,-366,2,-366},new int[]{-76,211}));
AddState(211,new State(new int[]{88,213,6,-378,102,-378,104,-378,105,-378,96,-378,2,-378},new int[]{-77,212}));
AddState(212,new State(-333));
AddState(213,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,214,-90,221,-20,239,-2,311}));
AddState(214,new State(new int[]{89,215,17,351,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-379,102,-379,104,-379,105,-379,96,-379,2,-379},new int[]{-51,139,-15,144,-14,196}));
AddState(215,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,216,-90,221,-20,239,-2,311}));
AddState(216,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-380,102,-380,104,-380,105,-380,96,-380,2,-380},new int[]{-51,139,-15,144,-14,196}));
AddState(217,new State(-276));
AddState(218,new State(-278));
AddState(219,new State(-282));
AddState(220,new State(-267));
AddState(221,new State(-208));
AddState(222,new State(-269));
AddState(223,new State(-270));
AddState(224,new State(new int[]{6,-271,14,-271,119,-271,71,-271,44,-271,42,-271,45,-271,43,-271,38,-271,37,-271,47,-271,48,-271,49,-271,50,-271,51,-271,52,-271,53,-271,54,-271,55,-271,56,-271,35,-271,36,-271,41,-271,11,-271,34,-271,40,-271,39,-271,58,-271,46,-271,17,-271,89,-271,102,-271,104,-271,105,-271,96,-271,2,-271,114,-271,112,-271,88,-271,3,-271,79,-271,80,-271,97,-271,78,-271,15,-271,16,-271,113,-271,111,-271,108,-271,59,-271,117,-271,18,-271,25,-271,10,-271,26,-271,30,-271,31,-271,32,-271,33,-271,65,-271,66,-271,67,-271,68,-271,69,-271,74,-271,76,-271,77,-271,83,-271,84,-271,85,-271,86,-271,87,-271,93,-271,94,-271,95,-271,109,-271,82,-271,116,-271,118,-271,120,-271,19,-271,20,-271,21,-271,22,-271,101,-271,60,-94}));
AddState(225,new State(new int[]{6,-272,14,-272,119,-272,71,-272,44,-272,42,-272,45,-272,43,-272,38,-272,37,-272,47,-272,48,-272,49,-272,50,-272,51,-272,52,-272,53,-272,54,-272,55,-272,56,-272,35,-272,36,-272,41,-272,11,-272,34,-272,40,-272,39,-272,58,-272,46,-272,17,-272,89,-272,102,-272,104,-272,105,-272,96,-272,2,-272,114,-272,112,-272,88,-272,3,-272,79,-272,80,-272,97,-272,78,-272,15,-272,16,-272,113,-272,111,-272,108,-272,59,-272,117,-272,18,-272,25,-272,10,-272,26,-272,30,-272,31,-272,32,-272,33,-272,65,-272,66,-272,67,-272,68,-272,69,-272,74,-272,76,-272,77,-272,83,-272,84,-272,85,-272,86,-272,87,-272,93,-272,94,-272,95,-272,109,-272,82,-272,116,-272,118,-272,120,-272,19,-272,20,-272,21,-272,22,-272,101,-272,60,-95}));
AddState(226,new State(new int[]{6,-273,14,-273,119,-273,71,-273,44,-273,42,-273,45,-273,43,-273,38,-273,37,-273,47,-273,48,-273,49,-273,50,-273,51,-273,52,-273,53,-273,54,-273,55,-273,56,-273,35,-273,36,-273,41,-273,11,-273,34,-273,40,-273,39,-273,58,-273,46,-273,17,-273,89,-273,102,-273,104,-273,105,-273,96,-273,2,-273,114,-273,112,-273,88,-273,3,-273,79,-273,80,-273,97,-273,78,-273,15,-273,16,-273,113,-273,111,-273,108,-273,59,-273,117,-273,18,-273,25,-273,10,-273,26,-273,30,-273,31,-273,32,-273,33,-273,65,-273,66,-273,67,-273,68,-273,69,-273,74,-273,76,-273,77,-273,83,-273,84,-273,85,-273,86,-273,87,-273,93,-273,94,-273,95,-273,109,-273,82,-273,116,-273,118,-273,120,-273,19,-273,20,-273,21,-273,22,-273,101,-273,60,-96}));
AddState(227,new State(new int[]{6,-274,14,-274,119,-274,71,-274,44,-274,42,-274,45,-274,43,-274,38,-274,37,-274,47,-274,48,-274,49,-274,50,-274,51,-274,52,-274,53,-274,54,-274,55,-274,56,-274,35,-274,36,-274,41,-274,11,-274,34,-274,40,-274,39,-274,58,-274,46,-274,17,-274,89,-274,102,-274,104,-274,105,-274,96,-274,2,-274,114,-274,112,-274,88,-274,3,-274,79,-274,80,-274,97,-274,78,-274,15,-274,16,-274,113,-274,111,-274,108,-274,59,-274,117,-274,18,-274,25,-274,10,-274,26,-274,30,-274,31,-274,32,-274,33,-274,65,-274,66,-274,67,-274,68,-274,69,-274,74,-274,76,-274,77,-274,83,-274,84,-274,85,-274,86,-274,87,-274,93,-274,94,-274,95,-274,109,-274,82,-274,116,-274,118,-274,120,-274,19,-274,20,-274,21,-274,22,-274,101,-274,60,-97}));
AddState(228,new State(new int[]{6,-131,14,-131,119,-131,71,-131,44,-131,42,-131,45,-131,43,-131,38,-131,37,-131,47,-131,48,-131,49,-131,50,-131,51,-131,52,-131,53,-131,54,-131,55,-131,56,-131,35,-131,36,-131,41,-131,11,-131,34,-131,40,-131,39,-131,58,-131,46,-131,17,-131,89,-131,102,-131,104,-131,105,-131,96,-131,2,-131,114,-131,112,-131,88,-131,3,-131,79,-131,80,-131,97,-131,78,-131,15,-131,16,-131,113,-131,111,-131,108,-131,59,-131,117,-131,18,-131,25,-131,10,-131,26,-131,30,-131,31,-131,32,-131,33,-131,65,-131,66,-131,67,-131,68,-131,69,-131,74,-131,76,-131,77,-131,83,-131,84,-131,85,-131,86,-131,87,-131,93,-131,94,-131,95,-131,109,-131,82,-131,116,-131,118,-131,120,-131,19,-131,20,-131,21,-131,22,-131,101,-131,60,-90}));
AddState(229,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,106,204},new int[]{-91,230,-59,232,-90,221,-20,239,-2,311,-58,329}));
AddState(230,new State(new int[]{6,231,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(231,new State(-209));
AddState(232,new State(new int[]{6,233,102,234,104,236,105,237},new int[]{-78,202}));
AddState(233,new State(-250));
AddState(234,new State(new int[]{103,235,106,-329}));
AddState(235,new State(-330));
AddState(236,new State(-331));
AddState(237,new State(-332));
AddState(238,new State(-210));
AddState(239,new State(-211));
AddState(240,new State(new int[]{5,241,6,-99,14,-99,119,-99,71,-99,44,-99,42,-99,45,-99,43,-99,38,-99,37,-99,47,-99,48,-99,49,-99,50,-99,51,-99,52,-99,53,-99,54,-99,55,-99,56,-99,35,-99,36,-99,41,-99,11,-99,34,-99,40,-99,39,-99,58,-99,46,-99,17,-99,89,-99,102,-99,104,-99,105,-99,96,-99,2,-99,114,-99,112,-99,88,-99,3,-99,79,-99,80,-99,97,-99,78,-99,15,-99,16,-99,113,-99,111,-99,108,-99,59,-99,117,-99,18,-99,25,-99,10,-99,26,-99,30,-99,31,-99,32,-99,33,-99,65,-99,66,-99,67,-99,68,-99,69,-99,74,-99,76,-99,77,-99,83,-99,84,-99,85,-99,86,-99,87,-99,93,-99,94,-99,95,-99,109,-99,82,-99,116,-99,118,-99,120,-99,19,-99,20,-99,21,-99,22,-99,101,-99,60,-58}));
AddState(241,new State(new int[]{53,347,107,349,103,350,4,-334,81,-334,19,-334,20,-334,21,-334,22,-334,82,-334,5,-334,62,-334,18,-334,25,-334,10,-334,15,-334,16,-334,26,-334,30,-334,31,-334,32,-334,33,-334,34,-334,40,-334,59,-334,65,-334,66,-334,67,-334,68,-334,69,-334,74,-334,76,-334,77,-334,78,-334,83,-334,84,-334,85,-334,86,-334,87,-334,89,-334,93,-334,94,-334,95,-334,109,-334,116,-334,118,-334,120,-334,73,-334,11,-334,57,-334,52,-334,51,-334,12,-334,75,-334,6,-334},new int[]{-55,242}));
AddState(242,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,6,-259},new int[]{-53,243,-54,245,-91,346,-90,221,-20,239,-2,311}));
AddState(243,new State(new int[]{6,244}));
AddState(244,new State(-219));
AddState(245,new State(new int[]{17,246,6,-260}));
AddState(246,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,247,-90,221,-20,239,-2,311}));
AddState(247,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-261,6,-261,114,-261,112,-261,88,-261,102,-261,104,-261,105,-261,96,-261,2,-261},new int[]{-51,139,-15,144,-14,196}));
AddState(248,new State(new int[]{6,-100,14,-100,119,-100,71,-100,44,-100,42,-100,45,-100,43,-100,38,-100,37,-100,47,-100,48,-100,49,-100,50,-100,51,-100,52,-100,53,-100,54,-100,55,-100,56,-100,35,-100,36,-100,41,-100,11,-100,34,-100,40,-100,39,-100,58,-100,46,-100,17,-100,89,-100,102,-100,104,-100,105,-100,96,-100,2,-100,114,-100,112,-100,88,-100,3,-100,79,-100,80,-100,97,-100,78,-100,15,-100,16,-100,113,-100,111,-100,108,-100,59,-100,117,-100,18,-100,25,-100,10,-100,26,-100,30,-100,31,-100,32,-100,33,-100,65,-100,66,-100,67,-100,68,-100,69,-100,74,-100,76,-100,77,-100,83,-100,84,-100,85,-100,86,-100,87,-100,93,-100,94,-100,95,-100,109,-100,82,-100,116,-100,118,-100,120,-100,19,-100,20,-100,21,-100,22,-100,101,-100,60,-59}));
AddState(249,new State(new int[]{6,-101,14,-101,119,-101,71,-101,44,-101,42,-101,45,-101,43,-101,38,-101,37,-101,47,-101,48,-101,49,-101,50,-101,51,-101,52,-101,53,-101,54,-101,55,-101,56,-101,35,-101,36,-101,41,-101,11,-101,34,-101,40,-101,39,-101,58,-101,46,-101,17,-101,89,-101,102,-101,104,-101,105,-101,96,-101,2,-101,114,-101,112,-101,88,-101,3,-101,79,-101,80,-101,97,-101,78,-101,15,-101,16,-101,113,-101,111,-101,108,-101,59,-101,117,-101,18,-101,25,-101,10,-101,26,-101,30,-101,31,-101,32,-101,33,-101,65,-101,66,-101,67,-101,68,-101,69,-101,74,-101,76,-101,77,-101,83,-101,84,-101,85,-101,86,-101,87,-101,93,-101,94,-101,95,-101,109,-101,82,-101,116,-101,118,-101,120,-101,19,-101,20,-101,21,-101,22,-101,101,-101,60,-60}));
AddState(250,new State(new int[]{6,-102,14,-102,119,-102,71,-102,44,-102,42,-102,45,-102,43,-102,38,-102,37,-102,47,-102,48,-102,49,-102,50,-102,51,-102,52,-102,53,-102,54,-102,55,-102,56,-102,35,-102,36,-102,41,-102,11,-102,34,-102,40,-102,39,-102,58,-102,46,-102,17,-102,89,-102,102,-102,104,-102,105,-102,96,-102,2,-102,114,-102,112,-102,88,-102,3,-102,79,-102,80,-102,97,-102,78,-102,15,-102,16,-102,113,-102,111,-102,108,-102,59,-102,117,-102,18,-102,25,-102,10,-102,26,-102,30,-102,31,-102,32,-102,33,-102,65,-102,66,-102,67,-102,68,-102,69,-102,74,-102,76,-102,77,-102,83,-102,84,-102,85,-102,86,-102,87,-102,93,-102,94,-102,95,-102,109,-102,82,-102,116,-102,118,-102,120,-102,19,-102,20,-102,21,-102,22,-102,101,-102,60,-61}));
AddState(251,new State(new int[]{6,-103,14,-103,119,-103,71,-103,44,-103,42,-103,45,-103,43,-103,38,-103,37,-103,47,-103,48,-103,49,-103,50,-103,51,-103,52,-103,53,-103,54,-103,55,-103,56,-103,35,-103,36,-103,41,-103,11,-103,34,-103,40,-103,39,-103,58,-103,46,-103,17,-103,89,-103,102,-103,104,-103,105,-103,96,-103,2,-103,114,-103,112,-103,88,-103,3,-103,79,-103,80,-103,97,-103,78,-103,15,-103,16,-103,113,-103,111,-103,108,-103,59,-103,117,-103,18,-103,25,-103,10,-103,26,-103,30,-103,31,-103,32,-103,33,-103,65,-103,66,-103,67,-103,68,-103,69,-103,74,-103,76,-103,77,-103,83,-103,84,-103,85,-103,86,-103,87,-103,93,-103,94,-103,95,-103,109,-103,82,-103,116,-103,118,-103,120,-103,19,-103,20,-103,21,-103,22,-103,101,-103,60,-62}));
AddState(252,new State(new int[]{6,-104,14,-104,119,-104,71,-104,44,-104,42,-104,45,-104,43,-104,38,-104,37,-104,47,-104,48,-104,49,-104,50,-104,51,-104,52,-104,53,-104,54,-104,55,-104,56,-104,35,-104,36,-104,41,-104,11,-104,34,-104,40,-104,39,-104,58,-104,46,-104,17,-104,89,-104,102,-104,104,-104,105,-104,96,-104,2,-104,114,-104,112,-104,88,-104,3,-104,79,-104,80,-104,97,-104,78,-104,15,-104,16,-104,113,-104,111,-104,108,-104,59,-104,117,-104,18,-104,25,-104,10,-104,26,-104,30,-104,31,-104,32,-104,33,-104,65,-104,66,-104,67,-104,68,-104,69,-104,74,-104,76,-104,77,-104,83,-104,84,-104,85,-104,86,-104,87,-104,93,-104,94,-104,95,-104,109,-104,82,-104,116,-104,118,-104,120,-104,19,-104,20,-104,21,-104,22,-104,101,-104,60,-63}));
AddState(253,new State(new int[]{6,-105,14,-105,119,-105,71,-105,44,-105,42,-105,45,-105,43,-105,38,-105,37,-105,47,-105,48,-105,49,-105,50,-105,51,-105,52,-105,53,-105,54,-105,55,-105,56,-105,35,-105,36,-105,41,-105,11,-105,34,-105,40,-105,39,-105,58,-105,46,-105,17,-105,89,-105,102,-105,104,-105,105,-105,96,-105,2,-105,114,-105,112,-105,88,-105,3,-105,79,-105,80,-105,97,-105,78,-105,15,-105,16,-105,113,-105,111,-105,108,-105,59,-105,117,-105,18,-105,25,-105,10,-105,26,-105,30,-105,31,-105,32,-105,33,-105,65,-105,66,-105,67,-105,68,-105,69,-105,74,-105,76,-105,77,-105,83,-105,84,-105,85,-105,86,-105,87,-105,93,-105,94,-105,95,-105,109,-105,82,-105,116,-105,118,-105,120,-105,19,-105,20,-105,21,-105,22,-105,101,-105,60,-64}));
AddState(254,new State(new int[]{6,-106,14,-106,119,-106,71,-106,44,-106,42,-106,45,-106,43,-106,38,-106,37,-106,47,-106,48,-106,49,-106,50,-106,51,-106,52,-106,53,-106,54,-106,55,-106,56,-106,35,-106,36,-106,41,-106,11,-106,34,-106,40,-106,39,-106,58,-106,46,-106,17,-106,89,-106,102,-106,104,-106,105,-106,96,-106,2,-106,114,-106,112,-106,88,-106,3,-106,79,-106,80,-106,97,-106,78,-106,15,-106,16,-106,113,-106,111,-106,108,-106,59,-106,117,-106,18,-106,25,-106,10,-106,26,-106,30,-106,31,-106,32,-106,33,-106,65,-106,66,-106,67,-106,68,-106,69,-106,74,-106,76,-106,77,-106,83,-106,84,-106,85,-106,86,-106,87,-106,93,-106,94,-106,95,-106,109,-106,82,-106,116,-106,118,-106,120,-106,19,-106,20,-106,21,-106,22,-106,101,-106,60,-65}));
AddState(255,new State(new int[]{6,-107,14,-107,119,-107,71,-107,44,-107,42,-107,45,-107,43,-107,38,-107,37,-107,47,-107,48,-107,49,-107,50,-107,51,-107,52,-107,53,-107,54,-107,55,-107,56,-107,35,-107,36,-107,41,-107,11,-107,34,-107,40,-107,39,-107,58,-107,46,-107,17,-107,89,-107,102,-107,104,-107,105,-107,96,-107,2,-107,114,-107,112,-107,88,-107,3,-107,79,-107,80,-107,97,-107,78,-107,15,-107,16,-107,113,-107,111,-107,108,-107,59,-107,117,-107,18,-107,25,-107,10,-107,26,-107,30,-107,31,-107,32,-107,33,-107,65,-107,66,-107,67,-107,68,-107,69,-107,74,-107,76,-107,77,-107,83,-107,84,-107,85,-107,86,-107,87,-107,93,-107,94,-107,95,-107,109,-107,82,-107,116,-107,118,-107,120,-107,19,-107,20,-107,21,-107,22,-107,101,-107,60,-66}));
AddState(256,new State(new int[]{6,-108,14,-108,119,-108,71,-108,44,-108,42,-108,45,-108,43,-108,38,-108,37,-108,47,-108,48,-108,49,-108,50,-108,51,-108,52,-108,53,-108,54,-108,55,-108,56,-108,35,-108,36,-108,41,-108,11,-108,34,-108,40,-108,39,-108,58,-108,46,-108,17,-108,89,-108,102,-108,104,-108,105,-108,96,-108,2,-108,114,-108,112,-108,88,-108,3,-108,79,-108,80,-108,97,-108,78,-108,15,-108,16,-108,113,-108,111,-108,108,-108,59,-108,117,-108,18,-108,25,-108,10,-108,26,-108,30,-108,31,-108,32,-108,33,-108,65,-108,66,-108,67,-108,68,-108,69,-108,74,-108,76,-108,77,-108,83,-108,84,-108,85,-108,86,-108,87,-108,93,-108,94,-108,95,-108,109,-108,82,-108,116,-108,118,-108,120,-108,19,-108,20,-108,21,-108,22,-108,101,-108,60,-67}));
AddState(257,new State(new int[]{6,-109,14,-109,119,-109,71,-109,44,-109,42,-109,45,-109,43,-109,38,-109,37,-109,47,-109,48,-109,49,-109,50,-109,51,-109,52,-109,53,-109,54,-109,55,-109,56,-109,35,-109,36,-109,41,-109,11,-109,34,-109,40,-109,39,-109,58,-109,46,-109,17,-109,89,-109,102,-109,104,-109,105,-109,96,-109,2,-109,114,-109,112,-109,88,-109,3,-109,79,-109,80,-109,97,-109,78,-109,15,-109,16,-109,113,-109,111,-109,108,-109,59,-109,117,-109,18,-109,25,-109,10,-109,26,-109,30,-109,31,-109,32,-109,33,-109,65,-109,66,-109,67,-109,68,-109,69,-109,74,-109,76,-109,77,-109,83,-109,84,-109,85,-109,86,-109,87,-109,93,-109,94,-109,95,-109,109,-109,82,-109,116,-109,118,-109,120,-109,19,-109,20,-109,21,-109,22,-109,101,-109,60,-68}));
AddState(258,new State(new int[]{6,-110,14,-110,119,-110,71,-110,44,-110,42,-110,45,-110,43,-110,38,-110,37,-110,47,-110,48,-110,49,-110,50,-110,51,-110,52,-110,53,-110,54,-110,55,-110,56,-110,35,-110,36,-110,41,-110,11,-110,34,-110,40,-110,39,-110,58,-110,46,-110,17,-110,89,-110,102,-110,104,-110,105,-110,96,-110,2,-110,114,-110,112,-110,88,-110,3,-110,79,-110,80,-110,97,-110,78,-110,15,-110,16,-110,113,-110,111,-110,108,-110,59,-110,117,-110,18,-110,25,-110,10,-110,26,-110,30,-110,31,-110,32,-110,33,-110,65,-110,66,-110,67,-110,68,-110,69,-110,74,-110,76,-110,77,-110,83,-110,84,-110,85,-110,86,-110,87,-110,93,-110,94,-110,95,-110,109,-110,82,-110,116,-110,118,-110,120,-110,19,-110,20,-110,21,-110,22,-110,101,-110,60,-69}));
AddState(259,new State(new int[]{6,-111,14,-111,119,-111,71,-111,44,-111,42,-111,45,-111,43,-111,38,-111,37,-111,47,-111,48,-111,49,-111,50,-111,51,-111,52,-111,53,-111,54,-111,55,-111,56,-111,35,-111,36,-111,41,-111,11,-111,34,-111,40,-111,39,-111,58,-111,46,-111,17,-111,89,-111,102,-111,104,-111,105,-111,96,-111,2,-111,114,-111,112,-111,88,-111,3,-111,79,-111,80,-111,97,-111,78,-111,15,-111,16,-111,113,-111,111,-111,108,-111,59,-111,117,-111,18,-111,25,-111,10,-111,26,-111,30,-111,31,-111,32,-111,33,-111,65,-111,66,-111,67,-111,68,-111,69,-111,74,-111,76,-111,77,-111,83,-111,84,-111,85,-111,86,-111,87,-111,93,-111,94,-111,95,-111,109,-111,82,-111,116,-111,118,-111,120,-111,19,-111,20,-111,21,-111,22,-111,101,-111,60,-70}));
AddState(260,new State(new int[]{6,-112,14,-112,119,-112,71,-112,44,-112,42,-112,45,-112,43,-112,38,-112,37,-112,47,-112,48,-112,49,-112,50,-112,51,-112,52,-112,53,-112,54,-112,55,-112,56,-112,35,-112,36,-112,41,-112,11,-112,34,-112,40,-112,39,-112,58,-112,46,-112,17,-112,89,-112,102,-112,104,-112,105,-112,96,-112,2,-112,114,-112,112,-112,88,-112,3,-112,79,-112,80,-112,97,-112,78,-112,15,-112,16,-112,113,-112,111,-112,108,-112,59,-112,117,-112,18,-112,25,-112,10,-112,26,-112,30,-112,31,-112,32,-112,33,-112,65,-112,66,-112,67,-112,68,-112,69,-112,74,-112,76,-112,77,-112,83,-112,84,-112,85,-112,86,-112,87,-112,93,-112,94,-112,95,-112,109,-112,82,-112,116,-112,118,-112,120,-112,19,-112,20,-112,21,-112,22,-112,101,-112,60,-71}));
AddState(261,new State(new int[]{6,-113,14,-113,119,-113,71,-113,44,-113,42,-113,45,-113,43,-113,38,-113,37,-113,47,-113,48,-113,49,-113,50,-113,51,-113,52,-113,53,-113,54,-113,55,-113,56,-113,35,-113,36,-113,41,-113,11,-113,34,-113,40,-113,39,-113,58,-113,46,-113,17,-113,89,-113,102,-113,104,-113,105,-113,96,-113,2,-113,114,-113,112,-113,88,-113,3,-113,79,-113,80,-113,97,-113,78,-113,15,-113,16,-113,113,-113,111,-113,108,-113,59,-113,117,-113,18,-113,25,-113,10,-113,26,-113,30,-113,31,-113,32,-113,33,-113,65,-113,66,-113,67,-113,68,-113,69,-113,74,-113,76,-113,77,-113,83,-113,84,-113,85,-113,86,-113,87,-113,93,-113,94,-113,95,-113,109,-113,82,-113,116,-113,118,-113,120,-113,19,-113,20,-113,21,-113,22,-113,101,-113,60,-72}));
AddState(262,new State(new int[]{6,-114,14,-114,119,-114,71,-114,44,-114,42,-114,45,-114,43,-114,38,-114,37,-114,47,-114,48,-114,49,-114,50,-114,51,-114,52,-114,53,-114,54,-114,55,-114,56,-114,35,-114,36,-114,41,-114,11,-114,34,-114,40,-114,39,-114,58,-114,46,-114,17,-114,89,-114,102,-114,104,-114,105,-114,96,-114,2,-114,114,-114,112,-114,88,-114,3,-114,79,-114,80,-114,97,-114,78,-114,15,-114,16,-114,113,-114,111,-114,108,-114,59,-114,117,-114,18,-114,25,-114,10,-114,26,-114,30,-114,31,-114,32,-114,33,-114,65,-114,66,-114,67,-114,68,-114,69,-114,74,-114,76,-114,77,-114,83,-114,84,-114,85,-114,86,-114,87,-114,93,-114,94,-114,95,-114,109,-114,82,-114,116,-114,118,-114,120,-114,19,-114,20,-114,21,-114,22,-114,101,-114,60,-73}));
AddState(263,new State(new int[]{6,-115,14,-115,119,-115,71,-115,44,-115,42,-115,45,-115,43,-115,38,-115,37,-115,47,-115,48,-115,49,-115,50,-115,51,-115,52,-115,53,-115,54,-115,55,-115,56,-115,35,-115,36,-115,41,-115,11,-115,34,-115,40,-115,39,-115,58,-115,46,-115,17,-115,89,-115,102,-115,104,-115,105,-115,96,-115,2,-115,114,-115,112,-115,88,-115,3,-115,79,-115,80,-115,97,-115,78,-115,15,-115,16,-115,113,-115,111,-115,108,-115,59,-115,117,-115,18,-115,25,-115,10,-115,26,-115,30,-115,31,-115,32,-115,33,-115,65,-115,66,-115,67,-115,68,-115,69,-115,74,-115,76,-115,77,-115,83,-115,84,-115,85,-115,86,-115,87,-115,93,-115,94,-115,95,-115,109,-115,82,-115,116,-115,118,-115,120,-115,19,-115,20,-115,21,-115,22,-115,101,-115,60,-74}));
AddState(264,new State(new int[]{6,-116,14,-116,119,-116,71,-116,44,-116,42,-116,45,-116,43,-116,38,-116,37,-116,47,-116,48,-116,49,-116,50,-116,51,-116,52,-116,53,-116,54,-116,55,-116,56,-116,35,-116,36,-116,41,-116,11,-116,34,-116,40,-116,39,-116,58,-116,46,-116,17,-116,89,-116,102,-116,104,-116,105,-116,96,-116,2,-116,114,-116,112,-116,88,-116,3,-116,79,-116,80,-116,97,-116,78,-116,15,-116,16,-116,113,-116,111,-116,108,-116,59,-116,117,-116,18,-116,25,-116,10,-116,26,-116,30,-116,31,-116,32,-116,33,-116,65,-116,66,-116,67,-116,68,-116,69,-116,74,-116,76,-116,77,-116,83,-116,84,-116,85,-116,86,-116,87,-116,93,-116,94,-116,95,-116,109,-116,82,-116,116,-116,118,-116,120,-116,19,-116,20,-116,21,-116,22,-116,101,-116,60,-75}));
AddState(265,new State(new int[]{5,266,6,-117,14,-117,119,-117,71,-117,44,-117,42,-117,45,-117,43,-117,38,-117,37,-117,47,-117,48,-117,49,-117,50,-117,51,-117,52,-117,53,-117,54,-117,55,-117,56,-117,35,-117,36,-117,41,-117,11,-117,34,-117,40,-117,39,-117,58,-117,46,-117,17,-117,89,-117,102,-117,104,-117,105,-117,96,-117,2,-117,114,-117,112,-117,88,-117,3,-117,79,-117,80,-117,97,-117,78,-117,15,-117,16,-117,113,-117,111,-117,108,-117,59,-117,117,-117,18,-117,25,-117,10,-117,26,-117,30,-117,31,-117,32,-117,33,-117,65,-117,66,-117,67,-117,68,-117,69,-117,74,-117,76,-117,77,-117,83,-117,84,-117,85,-117,86,-117,87,-117,93,-117,94,-117,95,-117,109,-117,82,-117,116,-117,118,-117,120,-117,19,-117,20,-117,21,-117,22,-117,101,-117,60,-76}));
AddState(266,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,267,-90,221,-20,239,-2,311}));
AddState(267,new State(new int[]{3,268,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(268,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-32,269,-8,271,-6,287}));
AddState(269,new State(new int[]{6,270}));
AddState(270,new State(-218));
AddState(271,new State(new int[]{5,273,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,6,-137,28,-137,61,-137,62,-137,11,-137,24,-137,8,-137,115,-137,63,-137,64,-137,14,-137,17,-137},new int[]{-6,272}));
AddState(272,new State(-141));
AddState(273,new State(new int[]{51,283,52,285,4,-145},new int[]{-10,274,-12,279,-93,280,-11,284}));
AddState(274,new State(new int[]{6,275,17,276}));
AddState(275,new State(-138));
AddState(276,new State(new int[]{51,283,52,285,4,-145},new int[]{-10,277,-12,279,-93,280,-11,284}));
AddState(277,new State(new int[]{6,278}));
AddState(278,new State(-139));
AddState(279,new State(-142));
AddState(280,new State(new int[]{4,282},new int[]{-9,281}));
AddState(281,new State(-144));
AddState(282,new State(-148));
AddState(283,new State(-146));
AddState(284,new State(-143));
AddState(285,new State(new int[]{4,282},new int[]{-9,286}));
AddState(286,new State(-147));
AddState(287,new State(-140));
AddState(288,new State(new int[]{5,289,6,-118,14,-118,119,-118,71,-118,44,-118,42,-118,45,-118,43,-118,38,-118,37,-118,47,-118,48,-118,49,-118,50,-118,51,-118,52,-118,53,-118,54,-118,55,-118,56,-118,35,-118,36,-118,41,-118,11,-118,34,-118,40,-118,39,-118,58,-118,46,-118,17,-118,89,-118,102,-118,104,-118,105,-118,96,-118,2,-118,114,-118,112,-118,88,-118,3,-118,79,-118,80,-118,97,-118,78,-118,15,-118,16,-118,113,-118,111,-118,108,-118,59,-118,117,-118,18,-118,25,-118,10,-118,26,-118,30,-118,31,-118,32,-118,33,-118,65,-118,66,-118,67,-118,68,-118,69,-118,74,-118,76,-118,77,-118,83,-118,84,-118,85,-118,86,-118,87,-118,93,-118,94,-118,95,-118,109,-118,82,-118,116,-118,118,-118,120,-118,19,-118,20,-118,21,-118,22,-118,101,-118,60,-77}));
AddState(289,new State(new int[]{32,290,29,72,30,73,31,74},new int[]{-49,292}));
AddState(290,new State(new int[]{6,291}));
AddState(291,new State(-255));
AddState(292,new State(new int[]{17,293}));
AddState(293,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,294}));
AddState(294,new State(new int[]{6,295}));
AddState(295,new State(-256));
AddState(296,new State(new int[]{6,-119,14,-119,119,-119,71,-119,44,-119,42,-119,45,-119,43,-119,38,-119,37,-119,47,-119,48,-119,49,-119,50,-119,51,-119,52,-119,53,-119,54,-119,55,-119,56,-119,35,-119,36,-119,41,-119,11,-119,34,-119,40,-119,39,-119,58,-119,46,-119,17,-119,89,-119,102,-119,104,-119,105,-119,96,-119,2,-119,114,-119,112,-119,88,-119,3,-119,79,-119,80,-119,97,-119,78,-119,15,-119,16,-119,113,-119,111,-119,108,-119,59,-119,117,-119,18,-119,25,-119,10,-119,26,-119,30,-119,31,-119,32,-119,33,-119,65,-119,66,-119,67,-119,68,-119,69,-119,74,-119,76,-119,77,-119,83,-119,84,-119,85,-119,86,-119,87,-119,93,-119,94,-119,95,-119,109,-119,82,-119,116,-119,118,-119,120,-119,19,-119,20,-119,21,-119,22,-119,101,-119,60,-78}));
AddState(297,new State(new int[]{6,-120,14,-120,119,-120,71,-120,44,-120,42,-120,45,-120,43,-120,38,-120,37,-120,47,-120,48,-120,49,-120,50,-120,51,-120,52,-120,53,-120,54,-120,55,-120,56,-120,35,-120,36,-120,41,-120,11,-120,34,-120,40,-120,39,-120,58,-120,46,-120,17,-120,89,-120,102,-120,104,-120,105,-120,96,-120,2,-120,114,-120,112,-120,88,-120,3,-120,79,-120,80,-120,97,-120,78,-120,15,-120,16,-120,113,-120,111,-120,108,-120,59,-120,117,-120,18,-120,25,-120,10,-120,26,-120,30,-120,31,-120,32,-120,33,-120,65,-120,66,-120,67,-120,68,-120,69,-120,74,-120,76,-120,77,-120,83,-120,84,-120,85,-120,86,-120,87,-120,93,-120,94,-120,95,-120,109,-120,82,-120,116,-120,118,-120,120,-120,19,-120,20,-120,21,-120,22,-120,101,-120,60,-79}));
AddState(298,new State(new int[]{6,-121,14,-121,119,-121,71,-121,44,-121,42,-121,45,-121,43,-121,38,-121,37,-121,47,-121,48,-121,49,-121,50,-121,51,-121,52,-121,53,-121,54,-121,55,-121,56,-121,35,-121,36,-121,41,-121,11,-121,34,-121,40,-121,39,-121,58,-121,46,-121,17,-121,89,-121,102,-121,104,-121,105,-121,96,-121,2,-121,114,-121,112,-121,88,-121,3,-121,79,-121,80,-121,97,-121,78,-121,15,-121,16,-121,113,-121,111,-121,108,-121,59,-121,117,-121,18,-121,25,-121,10,-121,26,-121,30,-121,31,-121,32,-121,33,-121,65,-121,66,-121,67,-121,68,-121,69,-121,74,-121,76,-121,77,-121,83,-121,84,-121,85,-121,86,-121,87,-121,93,-121,94,-121,95,-121,109,-121,82,-121,116,-121,118,-121,120,-121,19,-121,20,-121,21,-121,22,-121,101,-121,60,-80}));
AddState(299,new State(new int[]{6,-122,14,-122,119,-122,71,-122,44,-122,42,-122,45,-122,43,-122,38,-122,37,-122,47,-122,48,-122,49,-122,50,-122,51,-122,52,-122,53,-122,54,-122,55,-122,56,-122,35,-122,36,-122,41,-122,11,-122,34,-122,40,-122,39,-122,58,-122,46,-122,17,-122,89,-122,102,-122,104,-122,105,-122,96,-122,2,-122,114,-122,112,-122,88,-122,3,-122,79,-122,80,-122,97,-122,78,-122,15,-122,16,-122,113,-122,111,-122,108,-122,59,-122,117,-122,18,-122,25,-122,10,-122,26,-122,30,-122,31,-122,32,-122,33,-122,65,-122,66,-122,67,-122,68,-122,69,-122,74,-122,76,-122,77,-122,83,-122,84,-122,85,-122,86,-122,87,-122,93,-122,94,-122,95,-122,109,-122,82,-122,116,-122,118,-122,120,-122,19,-122,20,-122,21,-122,22,-122,101,-122,60,-81}));
AddState(300,new State(new int[]{6,-123,14,-123,119,-123,71,-123,44,-123,42,-123,45,-123,43,-123,38,-123,37,-123,47,-123,48,-123,49,-123,50,-123,51,-123,52,-123,53,-123,54,-123,55,-123,56,-123,35,-123,36,-123,41,-123,11,-123,34,-123,40,-123,39,-123,58,-123,46,-123,17,-123,89,-123,102,-123,104,-123,105,-123,96,-123,2,-123,114,-123,112,-123,88,-123,3,-123,79,-123,80,-123,97,-123,78,-123,15,-123,16,-123,113,-123,111,-123,108,-123,59,-123,117,-123,18,-123,25,-123,10,-123,26,-123,30,-123,31,-123,32,-123,33,-123,65,-123,66,-123,67,-123,68,-123,69,-123,74,-123,76,-123,77,-123,83,-123,84,-123,85,-123,86,-123,87,-123,93,-123,94,-123,95,-123,109,-123,82,-123,116,-123,118,-123,120,-123,19,-123,20,-123,21,-123,22,-123,101,-123,60,-82}));
AddState(301,new State(new int[]{6,-124,14,-124,119,-124,71,-124,44,-124,42,-124,45,-124,43,-124,38,-124,37,-124,47,-124,48,-124,49,-124,50,-124,51,-124,52,-124,53,-124,54,-124,55,-124,56,-124,35,-124,36,-124,41,-124,11,-124,34,-124,40,-124,39,-124,58,-124,46,-124,17,-124,89,-124,102,-124,104,-124,105,-124,96,-124,2,-124,114,-124,112,-124,88,-124,3,-124,79,-124,80,-124,97,-124,78,-124,15,-124,16,-124,113,-124,111,-124,108,-124,59,-124,117,-124,18,-124,25,-124,10,-124,26,-124,30,-124,31,-124,32,-124,33,-124,65,-124,66,-124,67,-124,68,-124,69,-124,74,-124,76,-124,77,-124,83,-124,84,-124,85,-124,86,-124,87,-124,93,-124,94,-124,95,-124,109,-124,82,-124,116,-124,118,-124,120,-124,19,-124,20,-124,21,-124,22,-124,101,-124,60,-83}));
AddState(302,new State(new int[]{6,-125,14,-125,119,-125,71,-125,44,-125,42,-125,45,-125,43,-125,38,-125,37,-125,47,-125,48,-125,49,-125,50,-125,51,-125,52,-125,53,-125,54,-125,55,-125,56,-125,35,-125,36,-125,41,-125,11,-125,34,-125,40,-125,39,-125,58,-125,46,-125,17,-125,89,-125,102,-125,104,-125,105,-125,96,-125,2,-125,114,-125,112,-125,88,-125,3,-125,79,-125,80,-125,97,-125,78,-125,15,-125,16,-125,113,-125,111,-125,108,-125,59,-125,117,-125,18,-125,25,-125,10,-125,26,-125,30,-125,31,-125,32,-125,33,-125,65,-125,66,-125,67,-125,68,-125,69,-125,74,-125,76,-125,77,-125,83,-125,84,-125,85,-125,86,-125,87,-125,93,-125,94,-125,95,-125,109,-125,82,-125,116,-125,118,-125,120,-125,19,-125,20,-125,21,-125,22,-125,101,-125,60,-84}));
AddState(303,new State(new int[]{6,-126,14,-126,119,-126,71,-126,44,-126,42,-126,45,-126,43,-126,38,-126,37,-126,47,-126,48,-126,49,-126,50,-126,51,-126,52,-126,53,-126,54,-126,55,-126,56,-126,35,-126,36,-126,41,-126,11,-126,34,-126,40,-126,39,-126,58,-126,46,-126,17,-126,89,-126,102,-126,104,-126,105,-126,96,-126,2,-126,114,-126,112,-126,88,-126,3,-126,79,-126,80,-126,97,-126,78,-126,15,-126,16,-126,113,-126,111,-126,108,-126,59,-126,117,-126,18,-126,25,-126,10,-126,26,-126,30,-126,31,-126,32,-126,33,-126,65,-126,66,-126,67,-126,68,-126,69,-126,74,-126,76,-126,77,-126,83,-126,84,-126,85,-126,86,-126,87,-126,93,-126,94,-126,95,-126,109,-126,82,-126,116,-126,118,-126,120,-126,19,-126,20,-126,21,-126,22,-126,101,-126,60,-85}));
AddState(304,new State(new int[]{6,-127,14,-127,119,-127,71,-127,44,-127,42,-127,45,-127,43,-127,38,-127,37,-127,47,-127,48,-127,49,-127,50,-127,51,-127,52,-127,53,-127,54,-127,55,-127,56,-127,35,-127,36,-127,41,-127,11,-127,34,-127,40,-127,39,-127,58,-127,46,-127,17,-127,89,-127,102,-127,104,-127,105,-127,96,-127,2,-127,114,-127,112,-127,88,-127,3,-127,79,-127,80,-127,97,-127,78,-127,15,-127,16,-127,113,-127,111,-127,108,-127,59,-127,117,-127,18,-127,25,-127,10,-127,26,-127,30,-127,31,-127,32,-127,33,-127,65,-127,66,-127,67,-127,68,-127,69,-127,74,-127,76,-127,77,-127,83,-127,84,-127,85,-127,86,-127,87,-127,93,-127,94,-127,95,-127,109,-127,82,-127,116,-127,118,-127,120,-127,19,-127,20,-127,21,-127,22,-127,101,-127,60,-86}));
AddState(305,new State(new int[]{6,-128,14,-128,119,-128,71,-128,44,-128,42,-128,45,-128,43,-128,38,-128,37,-128,47,-128,48,-128,49,-128,50,-128,51,-128,52,-128,53,-128,54,-128,55,-128,56,-128,35,-128,36,-128,41,-128,11,-128,34,-128,40,-128,39,-128,58,-128,46,-128,17,-128,89,-128,102,-128,104,-128,105,-128,96,-128,2,-128,114,-128,112,-128,88,-128,3,-128,79,-128,80,-128,97,-128,78,-128,15,-128,16,-128,113,-128,111,-128,108,-128,59,-128,117,-128,18,-128,25,-128,10,-128,26,-128,30,-128,31,-128,32,-128,33,-128,65,-128,66,-128,67,-128,68,-128,69,-128,74,-128,76,-128,77,-128,83,-128,84,-128,85,-128,86,-128,87,-128,93,-128,94,-128,95,-128,109,-128,82,-128,116,-128,118,-128,120,-128,19,-128,20,-128,21,-128,22,-128,101,-128,60,-87}));
AddState(306,new State(new int[]{6,-129,14,-129,119,-129,71,-129,44,-129,42,-129,45,-129,43,-129,38,-129,37,-129,47,-129,48,-129,49,-129,50,-129,51,-129,52,-129,53,-129,54,-129,55,-129,56,-129,35,-129,36,-129,41,-129,11,-129,34,-129,40,-129,39,-129,58,-129,46,-129,17,-129,89,-129,102,-129,104,-129,105,-129,96,-129,2,-129,114,-129,112,-129,88,-129,3,-129,79,-129,80,-129,97,-129,78,-129,15,-129,16,-129,113,-129,111,-129,108,-129,59,-129,117,-129,18,-129,25,-129,10,-129,26,-129,30,-129,31,-129,32,-129,33,-129,65,-129,66,-129,67,-129,68,-129,69,-129,74,-129,76,-129,77,-129,83,-129,84,-129,85,-129,86,-129,87,-129,93,-129,94,-129,95,-129,109,-129,82,-129,116,-129,118,-129,120,-129,19,-129,20,-129,21,-129,22,-129,101,-129,60,-88}));
AddState(307,new State(new int[]{6,-130,14,-130,119,-130,71,-130,44,-130,42,-130,45,-130,43,-130,38,-130,37,-130,47,-130,48,-130,49,-130,50,-130,51,-130,52,-130,53,-130,54,-130,55,-130,56,-130,35,-130,36,-130,41,-130,11,-130,34,-130,40,-130,39,-130,58,-130,46,-130,17,-130,89,-130,102,-130,104,-130,105,-130,96,-130,2,-130,114,-130,112,-130,88,-130,3,-130,79,-130,80,-130,97,-130,78,-130,15,-130,16,-130,113,-130,111,-130,108,-130,59,-130,117,-130,18,-130,25,-130,10,-130,26,-130,30,-130,31,-130,32,-130,33,-130,65,-130,66,-130,67,-130,68,-130,69,-130,74,-130,76,-130,77,-130,83,-130,84,-130,85,-130,86,-130,87,-130,93,-130,94,-130,95,-130,109,-130,82,-130,116,-130,118,-130,120,-130,19,-130,20,-130,21,-130,22,-130,101,-130,60,-89}));
AddState(308,new State(new int[]{6,-132,14,-132,119,-132,71,-132,44,-132,42,-132,45,-132,43,-132,38,-132,37,-132,47,-132,48,-132,49,-132,50,-132,51,-132,52,-132,53,-132,54,-132,55,-132,56,-132,35,-132,36,-132,41,-132,11,-132,34,-132,40,-132,39,-132,58,-132,46,-132,17,-132,89,-132,102,-132,104,-132,105,-132,96,-132,2,-132,114,-132,112,-132,88,-132,3,-132,79,-132,80,-132,97,-132,78,-132,15,-132,16,-132,113,-132,111,-132,108,-132,59,-132,117,-132,18,-132,25,-132,10,-132,26,-132,30,-132,31,-132,32,-132,33,-132,65,-132,66,-132,67,-132,68,-132,69,-132,74,-132,76,-132,77,-132,83,-132,84,-132,85,-132,86,-132,87,-132,93,-132,94,-132,95,-132,109,-132,82,-132,116,-132,118,-132,120,-132,19,-132,20,-132,21,-132,22,-132,101,-132,60,-91}));
AddState(309,new State(new int[]{6,-133,14,-133,119,-133,71,-133,44,-133,42,-133,45,-133,43,-133,38,-133,37,-133,47,-133,48,-133,49,-133,50,-133,51,-133,52,-133,53,-133,54,-133,55,-133,56,-133,35,-133,36,-133,41,-133,11,-133,34,-133,40,-133,39,-133,58,-133,46,-133,17,-133,89,-133,102,-133,104,-133,105,-133,96,-133,2,-133,114,-133,112,-133,88,-133,3,-133,79,-133,80,-133,97,-133,78,-133,15,-133,16,-133,113,-133,111,-133,108,-133,59,-133,117,-133,18,-133,25,-133,10,-133,26,-133,30,-133,31,-133,32,-133,33,-133,65,-133,66,-133,67,-133,68,-133,69,-133,74,-133,76,-133,77,-133,83,-133,84,-133,85,-133,86,-133,87,-133,93,-133,94,-133,95,-133,109,-133,82,-133,116,-133,118,-133,120,-133,19,-133,20,-133,21,-133,22,-133,101,-133,60,-92}));
AddState(310,new State(new int[]{6,-134,14,-134,119,-134,71,-134,44,-134,42,-134,45,-134,43,-134,38,-134,37,-134,47,-134,48,-134,49,-134,50,-134,51,-134,52,-134,53,-134,54,-134,55,-134,56,-134,35,-134,36,-134,41,-134,11,-134,34,-134,40,-134,39,-134,58,-134,46,-134,17,-134,89,-134,102,-134,104,-134,105,-134,96,-134,2,-134,114,-134,112,-134,88,-134,3,-134,79,-134,80,-134,97,-134,78,-134,15,-134,16,-134,113,-134,111,-134,108,-134,59,-134,117,-134,18,-134,25,-134,10,-134,26,-134,30,-134,31,-134,32,-134,33,-134,65,-134,66,-134,67,-134,68,-134,69,-134,74,-134,76,-134,77,-134,83,-134,84,-134,85,-134,86,-134,87,-134,93,-134,94,-134,95,-134,109,-134,82,-134,116,-134,118,-134,120,-134,19,-134,20,-134,21,-134,22,-134,101,-134,60,-93}));
AddState(311,new State(new int[]{60,312}));
AddState(312,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,313}));
AddState(313,new State(new int[]{60,314,6,-213,14,-213,119,-213,71,-213,44,-213,42,-213,45,-213,43,-213,38,-213,37,-213,47,-213,48,-213,49,-213,50,-213,51,-213,52,-213,53,-213,54,-213,55,-213,56,-213,35,-213,36,-213,41,-213,11,-213,34,-213,40,-213,39,-213,58,-213,46,-213,17,-213,89,-213,102,-213,104,-213,105,-213,96,-213,2,-213,114,-213,112,-213,88,-213,3,-213,79,-213,80,-213,97,-213,78,-213,15,-213,16,-213,113,-213,111,-213,108,-213,59,-213,117,-213,18,-213,25,-213,10,-213,26,-213,30,-213,31,-213,32,-213,33,-213,65,-213,66,-213,67,-213,68,-213,69,-213,74,-213,76,-213,77,-213,83,-213,84,-213,85,-213,86,-213,87,-213,93,-213,94,-213,95,-213,109,-213,82,-213,116,-213,118,-213,120,-213,19,-213,20,-213,21,-213,22,-213,101,-213}));
AddState(314,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,315}));
AddState(315,new State(-214));
AddState(316,new State(-215));
AddState(317,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,318,-90,221,-20,239,-2,311}));
AddState(318,new State(new int[]{14,142,119,-245,71,-245,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-245,46,-245,17,-245,89,-245,102,-245,104,-245,105,-245,96,-245,2,-245,114,-245,112,-245,88,-245,3,-245,79,-245,80,-245,97,-245,78,-245,15,-245,16,-245,113,-245,111,-245,108,-245,59,-245,117,-245,18,-245,25,-245,10,-245,26,-245,30,-245,31,-245,32,-245,33,-245,65,-245,66,-245,67,-245,68,-245,69,-245,74,-245,76,-245,77,-245,83,-245,84,-245,85,-245,86,-245,87,-245,93,-245,94,-245,95,-245,109,-245,82,-245,116,-245,118,-245,120,-245,19,-245,20,-245,21,-245,22,-245,101,-245},new int[]{-51,139,-15,144,-14,196}));
AddState(319,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,320,-90,221,-20,239,-2,311}));
AddState(320,new State(-246,new int[]{-51,139,-15,144,-14,196}));
AddState(321,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,322,-90,221,-20,239,-2,311}));
AddState(322,new State(-247,new int[]{-51,139,-15,144,-14,196}));
AddState(323,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,324,-90,221,-20,239,-2,311}));
AddState(324,new State(-248,new int[]{-51,139,-15,144,-14,196}));
AddState(325,new State(new int[]{5,326}));
AddState(326,new State(new int[]{106,204},new int[]{-59,327,-58,329}));
AddState(327,new State(new int[]{6,328,102,234,104,236,105,237},new int[]{-78,202}));
AddState(328,new State(-253));
AddState(329,new State(-327));
AddState(330,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330,79,-265},new int[]{-79,331,-91,345,-90,221,-20,239,-2,311}));
AddState(331,new State(new int[]{79,341},new int[]{-80,332}));
AddState(332,new State(new int[]{79,335,97,339,78,-263},new int[]{-81,333}));
AddState(333,new State(new int[]{78,334}));
AddState(334,new State(-254));
AddState(335,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,336,-90,221,-20,239,-2,311}));
AddState(336,new State(new int[]{80,337,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(337,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,338,-90,221,-20,239,-2,311}));
AddState(338,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,79,-257,97,-257,78,-257},new int[]{-51,139,-15,144,-14,196}));
AddState(339,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,340,-90,221,-20,239,-2,311}));
AddState(340,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,78,-264},new int[]{-51,139,-15,144,-14,196}));
AddState(341,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,342,-90,221,-20,239,-2,311}));
AddState(342,new State(new int[]{80,343,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(343,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,344,-90,221,-20,239,-2,311}));
AddState(344,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,79,-258,97,-258,78,-258},new int[]{-51,139,-15,144,-14,196}));
AddState(345,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,79,-266},new int[]{-51,139,-15,144,-14,196}));
AddState(346,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-262,6,-262,114,-262,112,-262,88,-262,102,-262,104,-262,105,-262,96,-262,2,-262},new int[]{-51,139,-15,144,-14,196}));
AddState(347,new State(new int[]{6,348}));
AddState(348,new State(-220));
AddState(349,new State(-335));
AddState(350,new State(-336));
AddState(351,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,352,-90,221,-20,239,-2,311}));
AddState(352,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-381,102,-381,104,-381,105,-381,96,-381,2,-381},new int[]{-51,139,-15,144,-14,196}));
AddState(353,new State(new int[]{110,354}));
AddState(354,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-75,355,-74,360,-91,359,-90,221,-20,239,-2,311}));
AddState(355,new State(new int[]{17,356,88,-367,6,-367,102,-367,104,-367,105,-367,96,-367,2,-367}));
AddState(356,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-74,357,-91,359,-90,221,-20,239,-2,311}));
AddState(357,new State(new int[]{15,81,16,82,17,-371,88,-371,6,-371,102,-371,104,-371,105,-371,96,-371,2,-371},new int[]{-37,358}));
AddState(358,new State(-368));
AddState(359,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,15,-370,16,-370,17,-370,88,-370,6,-370,102,-370,104,-370,105,-370,96,-370,2,-370},new int[]{-51,139,-15,144,-14,196}));
AddState(360,new State(new int[]{15,81,16,82,17,-371,88,-371,6,-371,102,-371,104,-371,105,-371,96,-371,2,-371},new int[]{-37,361}));
AddState(361,new State(-369));
AddState(362,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,363,-90,221,-20,239,-2,311}));
AddState(363,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,112,-377,88,-377,6,-377,102,-377,104,-377,105,-377,96,-377,2,-377},new int[]{-51,139,-15,144,-14,196}));
AddState(364,new State(new int[]{110,365}));
AddState(365,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-54,366,-91,346,-90,221,-20,239,-2,311}));
AddState(366,new State(new int[]{17,246,114,-375,112,-375,88,-375,6,-375,102,-375,104,-375,105,-375,96,-375,2,-375}));
AddState(367,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,368,-90,221,-20,239,-2,311}));
AddState(368,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,113,-324,114,-324,112,-324,88,-324,6,-324,102,-324,104,-324,105,-324,96,-324,2,-324},new int[]{-51,139,-15,144,-14,196}));
AddState(369,new State(-338));
AddState(370,new State(-347,new int[]{-62,371,-61,381}));
AddState(371,new State(new int[]{17,373,108,374,59,375,117,-346,113,-346,114,-346,112,-346,88,-346,6,-346,102,-346,104,-346,105,-346,96,-346,2,-346},new int[]{-60,372}));
AddState(372,new State(-348));
AddState(373,new State(-354));
AddState(374,new State(-355));
AddState(375,new State(new int[]{108,376,59,377}));
AddState(376,new State(-356));
AddState(377,new State(new int[]{108,378,59,379}));
AddState(378,new State(-357));
AddState(379,new State(new int[]{108,380}));
AddState(380,new State(-358));
AddState(381,new State(new int[]{5,407,18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,382}));
AddState(382,new State(new int[]{60,405,3,-206,18,-206,25,-206,10,-206,15,-206,16,-206,26,-206,30,-206,31,-206,32,-206,33,-206,34,-206,40,-206,59,-206,65,-206,66,-206,67,-206,68,-206,69,-206,74,-206,76,-206,77,-206,78,-206,83,-206,84,-206,85,-206,86,-206,87,-206,89,-206,93,-206,94,-206,95,-206,109,-206,82,-206,116,-206,118,-206,120,-206,19,-206,20,-206,21,-206,22,-206,11,-206,13,-206,111,-206,17,-206,108,-206,117,-206,113,-206,114,-206,112,-206,88,-206,6,-206,102,-206,104,-206,105,-206,96,-206,2,-206},new int[]{-3,383}));
AddState(383,new State(new int[]{3,402,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,11,-342,13,-342,111,-342,17,-342,108,-342,117,-342,113,-342,114,-342,112,-342,88,-342,6,-342,102,-342,104,-342,105,-342,96,-342,2,-342},new int[]{-18,384,-6,404}));
AddState(384,new State(new int[]{109,397,11,400,13,-361,111,-361,17,-361,108,-361,59,-361,117,-361,113,-361,114,-361,112,-361,88,-361,6,-361,102,-361,104,-361,105,-361,96,-361,2,-361},new int[]{-64,385}));
AddState(385,new State(new int[]{13,395,111,-359,17,-359,108,-359,59,-359,117,-359,113,-359,114,-359,112,-359,88,-359,6,-359,102,-359,104,-359,105,-359,96,-359,2,-359},new int[]{-66,386}));
AddState(386,new State(new int[]{111,388,17,-364,108,-364,59,-364,117,-364,113,-364,114,-364,112,-364,88,-364,6,-364,102,-364,104,-364,105,-364,96,-364,2,-364},new int[]{-69,387}));
AddState(387,new State(-349));
AddState(388,new State(new int[]{5,389}));
AddState(389,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-67,390,-2,394}));
AddState(390,new State(new int[]{6,391,17,392}));
AddState(391,new State(-365));
AddState(392,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,393}));
AddState(393,new State(-306));
AddState(394,new State(-307));
AddState(395,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,396,-90,221,-20,239,-2,311}));
AddState(396,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,111,-360,17,-360,108,-360,59,-360,117,-360,113,-360,114,-360,112,-360,88,-360,6,-360,102,-360,104,-360,105,-360,96,-360,2,-360},new int[]{-51,139,-15,144,-14,196}));
AddState(397,new State(new int[]{110,398}));
AddState(398,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,399}));
AddState(399,new State(-362));
AddState(400,new State(new int[]{109,401}));
AddState(401,new State(-363));
AddState(402,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,403}));
AddState(403,new State(-343));
AddState(404,new State(-344));
AddState(405,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,406}));
AddState(406,new State(-207));
AddState(407,new State(new int[]{106,204,5,-347,18,-347,25,-347,10,-347,15,-347,16,-347,26,-347,30,-347,31,-347,32,-347,33,-347,34,-347,40,-347,59,-347,65,-347,66,-347,67,-347,68,-347,69,-347,74,-347,76,-347,77,-347,78,-347,83,-347,84,-347,85,-347,86,-347,87,-347,89,-347,93,-347,94,-347,95,-347,109,-347,82,-347,116,-347,118,-347,120,-347,19,-347,20,-347,21,-347,22,-347},new int[]{-70,408,-59,413,-58,329,-62,414,-61,381}));
AddState(408,new State(new int[]{6,409}));
AddState(409,new State(new int[]{3,402,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,13,-342,111,-342,17,-342,108,-342,117,-342,113,-342,114,-342,112,-342,88,-342,6,-342,102,-342,104,-342,105,-342,96,-342,2,-342},new int[]{-18,410,-6,404}));
AddState(410,new State(new int[]{13,395,111,-359,17,-359,108,-359,59,-359,117,-359,113,-359,114,-359,112,-359,88,-359,6,-359,102,-359,104,-359,105,-359,96,-359,2,-359},new int[]{-66,411}));
AddState(411,new State(new int[]{111,388,17,-364,108,-364,59,-364,117,-364,113,-364,114,-364,112,-364,88,-364,6,-364,102,-364,104,-364,105,-364,96,-364,2,-364},new int[]{-69,412}));
AddState(412,new State(-350));
AddState(413,new State(new int[]{102,234,104,236,105,237,6,-351},new int[]{-78,202}));
AddState(414,new State(new int[]{17,373,108,374,59,375,6,-352},new int[]{-60,372}));
AddState(415,new State(new int[]{53,420,4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,416,-2,421,-90,221,-20,239}));
AddState(416,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,3,402,18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,418,40,419,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,39,219,58,220,17,-342,101,-342,117,-342,113,-342,114,-342,112,-342,88,-342,6,-342,102,-342,104,-342,105,-342,96,-342,2,-342},new int[]{-18,417,-51,139,-15,144,-14,196,-6,404}));
AddState(417,new State(-339));
AddState(418,new State(new int[]{17,-28,101,-28,117,-28,113,-28,114,-28,112,-28,88,-28,6,-28,102,-28,104,-28,105,-28,96,-28,2,-28,4,-276,81,-276,19,-276,20,-276,21,-276,22,-276,82,-276,5,-276,62,-276,18,-276,25,-276,10,-276,15,-276,16,-276,26,-276,30,-276,31,-276,32,-276,33,-276,34,-276,40,-276,59,-276,65,-276,66,-276,67,-276,68,-276,69,-276,74,-276,76,-276,77,-276,78,-276,83,-276,84,-276,85,-276,86,-276,87,-276,89,-276,93,-276,94,-276,95,-276,109,-276,116,-276,118,-276,120,-276,73,-276,11,-276,57,-276,52,-276,51,-276,12,-276,75,-276}));
AddState(419,new State(new int[]{17,-29,101,-29,117,-29,113,-29,114,-29,112,-29,88,-29,6,-29,102,-29,104,-29,105,-29,96,-29,2,-29,4,-278,81,-278,19,-278,20,-278,21,-278,22,-278,82,-278,5,-278,62,-278,18,-278,25,-278,10,-278,15,-278,16,-278,26,-278,30,-278,31,-278,32,-278,33,-278,34,-278,40,-278,59,-278,65,-278,66,-278,67,-278,68,-278,69,-278,74,-278,76,-278,77,-278,78,-278,83,-278,84,-278,85,-278,86,-278,87,-278,89,-278,93,-278,94,-278,95,-278,109,-278,116,-278,118,-278,120,-278,73,-278,11,-278,57,-278,52,-278,51,-278,12,-278,75,-278}));
AddState(420,new State(-340));
AddState(421,new State(new int[]{60,422}));
AddState(422,new State(new int[]{53,423,18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,313}));
AddState(423,new State(-341));
AddState(424,new State(new int[]{60,405,6,-206,14,-206,119,-206,71,-206,44,-206,42,-206,45,-206,43,-206,38,-206,37,-206,47,-206,48,-206,49,-206,50,-206,51,-206,52,-206,53,-206,54,-206,55,-206,56,-206,35,-206,36,-206,41,-206,11,-206,34,-206,40,-206,39,-206,58,-206,46,-206,17,-206,89,-206,102,-206,104,-206,105,-206,96,-206,2,-206,114,-206,112,-206,88,-206,3,-206,79,-206,80,-206,97,-206,78,-206,15,-206,16,-206,113,-206,111,-206,108,-206,59,-206,117,-206,18,-206,25,-206,10,-206,26,-206,30,-206,31,-206,32,-206,33,-206,65,-206,66,-206,67,-206,68,-206,69,-206,74,-206,76,-206,77,-206,83,-206,84,-206,85,-206,86,-206,87,-206,93,-206,94,-206,95,-206,109,-206,82,-206,116,-206,118,-206,120,-206,19,-206,20,-206,21,-206,22,-206,101,-206},new int[]{-3,425}));
AddState(425,new State(-252));
AddState(426,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,427,-90,221,-20,239,-2,311}));
AddState(427,new State(new int[]{14,142,119,-281,71,-281,44,-281,42,-281,45,-281,43,-281,38,-281,37,-281,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,-281,36,-281,41,-281,11,-281,34,-281,40,-281,39,-281,58,-281,46,-281,6,-281,17,-281,89,-281,102,-281,104,-281,105,-281,96,-281,2,-281,114,-281,112,-281,88,-281,3,-281,79,-281,80,-281,97,-281,78,-281,15,-281,16,-281,113,-281,111,-281,108,-281,59,-281,117,-281,18,-281,25,-281,10,-281,26,-281,30,-281,31,-281,32,-281,33,-281,65,-281,66,-281,67,-281,68,-281,69,-281,74,-281,76,-281,77,-281,83,-281,84,-281,85,-281,86,-281,87,-281,93,-281,94,-281,95,-281,109,-281,82,-281,116,-281,118,-281,120,-281,19,-281,20,-281,21,-281,22,-281,101,-281},new int[]{-51,139,-15,144,-14,196}));
AddState(428,new State(new int[]{25,429}));
AddState(429,new State(new int[]{5,430}));
AddState(430,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,431,-2,126}));
AddState(431,new State(new int[]{6,432,17,77}));
AddState(432,new State(new int[]{63,433}));
AddState(433,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,434}));
AddState(434,new State(new int[]{5,462,11,-286,64,-286,40,-286,13,-286,17,-286,28,-286,24,-286,8,-286,115,-286,70,-286,6,-286},new int[]{-39,435}));
AddState(435,new State(-169,new int[]{-42,436}));
AddState(436,new State(new int[]{11,440,64,446,40,448,13,450,17,-194,28,-194,24,-194,8,-194,115,-194,70,-194,6,-194},new int[]{-45,437,-41,438,-44,439}));
AddState(437,new State(-193));
AddState(438,new State(-170));
AddState(439,new State(-195));
AddState(440,new State(new int[]{64,441}));
AddState(441,new State(new int[]{67,443,17,-181,28,-181,24,-181,8,-181,115,-181,70,-181,6,-181,61,-181,62,-181,11,-181,63,-181,64,-181,14,-181},new int[]{-43,442}));
AddState(442,new State(-179));
AddState(443,new State(new int[]{68,444,69,445}));
AddState(444,new State(-182));
AddState(445,new State(-183));
AddState(446,new State(new int[]{67,443,17,-181,28,-181,24,-181,8,-181,115,-181,70,-181,6,-181,61,-181,62,-181,11,-181,63,-181,64,-181,14,-181},new int[]{-43,447}));
AddState(447,new State(-180));
AddState(448,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,449}));
AddState(449,new State(-171));
AddState(450,new State(new int[]{90,451,92,458,91,460}));
AddState(451,new State(new int[]{98,453,65,456,66,457},new int[]{-40,452}));
AddState(452,new State(-172));
AddState(453,new State(new int[]{62,454,61,455}));
AddState(454,new State(-175));
AddState(455,new State(-176));
AddState(456,new State(-177));
AddState(457,new State(-178));
AddState(458,new State(new int[]{98,453,65,456,66,457},new int[]{-40,459}));
AddState(459,new State(-173));
AddState(460,new State(new int[]{98,453,65,456,66,457},new int[]{-40,461}));
AddState(461,new State(-174));
AddState(462,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,463,-2,126}));
AddState(463,new State(new int[]{6,464,17,77}));
AddState(464,new State(-287));
AddState(465,new State(-187));
AddState(466,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124,28,-135,61,-135,62,-135,11,-135,24,-135,8,-135,115,-135,63,-135,64,-135,14,-135,17,-135,6,-135},new int[]{-33,467,-32,514,-8,271,-6,287}));
AddState(467,new State(-149,new int[]{-36,468}));
AddState(468,new State(new int[]{28,470,61,473,62,490,11,492,24,495,8,500,115,502,63,506,64,446,14,511,17,-13,6,-13},new int[]{-34,469,-35,513,-44,510}));
AddState(469,new State(-150));
AddState(470,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,471}));
AddState(471,new State(new int[]{61,473,62,490,11,492,24,495,8,500,115,502,63,506,64,446,14,511},new int[]{-35,472,-44,510}));
AddState(472,new State(-151));
AddState(473,new State(new int[]{62,475,5,476,51,479,52,486,4,222,81,223,19,481,20,482,21,483,22,484,82,485,18,489},new int[]{-90,474,-19,488}));
AddState(474,new State(-153));
AddState(475,new State(-154));
AddState(476,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,477,-90,221,-20,239,-2,311}));
AddState(477,new State(new int[]{6,478,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(478,new State(-155));
AddState(479,new State(new int[]{4,222,81,223,19,481,20,482,21,483,22,484,82,485},new int[]{-90,480}));
AddState(480,new State(-156));
AddState(481,new State(-271));
AddState(482,new State(-272));
AddState(483,new State(-273));
AddState(484,new State(-274));
AddState(485,new State(-275));
AddState(486,new State(new int[]{4,222,81,223,19,481,20,482,21,483,22,484,82,485},new int[]{-90,487}));
AddState(487,new State(-157));
AddState(488,new State(-158));
AddState(489,new State(-15));
AddState(490,new State(new int[]{13,68,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,491}));
AddState(491,new State(-159));
AddState(492,new State(new int[]{62,493,64,441}));
AddState(493,new State(new int[]{13,68,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,494}));
AddState(494,new State(-160));
AddState(495,new State(new int[]{25,496}));
AddState(496,new State(new int[]{15,81,16,82,13,-371,27,-371,28,-371,61,-371,62,-371,11,-371,24,-371,8,-371,115,-371,63,-371,64,-371,14,-371,17,-371,6,-371},new int[]{-37,497}));
AddState(497,new State(new int[]{13,68,27,-196,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,498}));
AddState(498,new State(new int[]{27,125,28,-167,61,-167,62,-167,11,-167,24,-167,8,-167,115,-167,63,-167,64,-167,14,-167,17,-167,6,-167},new int[]{-13,499}));
AddState(499,new State(-161));
AddState(500,new State(new int[]{13,68,28,-196,61,-196,62,-196,11,-196,24,-196,8,-196,115,-196,63,-196,64,-196,14,-196,17,-196,6,-196},new int[]{-47,501}));
AddState(501,new State(-162));
AddState(502,new State(new int[]{5,503}));
AddState(503,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,504,-90,221,-20,239,-2,311}));
AddState(504,new State(new int[]{6,505,14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220},new int[]{-51,139,-15,144,-14,196}));
AddState(505,new State(-163));
AddState(506,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,507}));
AddState(507,new State(new int[]{5,462,40,-286,13,-286,28,-286,61,-286,62,-286,11,-286,24,-286,8,-286,115,-286,63,-286,64,-286,14,-286,17,-286,6,-286},new int[]{-39,508}));
AddState(508,new State(-169,new int[]{-42,509}));
AddState(509,new State(new int[]{40,448,13,450,28,-164,61,-164,62,-164,11,-164,24,-164,8,-164,115,-164,63,-164,64,-164,14,-164,17,-164,6,-164},new int[]{-41,438}));
AddState(510,new State(-165));
AddState(511,new State(new int[]{18,85,25,86,10,87,15,88,16,89,26,90,30,91,31,92,32,93,33,94,34,95,40,96,59,97,65,98,66,99,67,100,68,101,69,102,74,103,76,104,77,105,78,106,83,107,84,108,85,109,86,110,87,111,89,112,93,113,94,114,95,115,109,116,82,117,116,118,118,119,120,120,19,121,20,122,21,123,22,124},new int[]{-6,512}));
AddState(512,new State(-166));
AddState(513,new State(-152));
AddState(514,new State(-136));
AddState(515,new State(-14));
AddState(516,new State(-188));
AddState(517,new State(-12));
AddState(518,new State(new int[]{11,519}));
AddState(519,new State(new int[]{12,520}));
AddState(520,new State(-17));
AddState(521,new State(new int[]{77,522}));
AddState(522,new State(new int[]{92,527,91,557,33,559,90,560,106,204},new int[]{-86,523,-85,565,-88,542,-59,564,-58,329}));
AddState(523,new State(new int[]{78,524,92,527,91,557,33,559,90,560,106,204},new int[]{-85,525,-88,542,-59,564,-58,329}));
AddState(524,new State(-8));
AddState(525,new State(new int[]{96,526}));
AddState(526,new State(-312));
AddState(527,new State(new int[]{71,540,18,-198,25,-198,10,-198,15,-198,16,-198,26,-198,30,-198,31,-198,32,-198,33,-198,34,-198,40,-198,59,-198,65,-198,66,-198,67,-198,68,-198,69,-198,74,-198,76,-198,77,-198,78,-198,83,-198,84,-198,85,-198,86,-198,87,-198,89,-198,93,-198,94,-198,95,-198,109,-198,82,-198,116,-198,118,-198,120,-198,19,-198,20,-198,21,-198,22,-198},new int[]{-48,528}));
AddState(528,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,529}));
AddState(529,new State(new int[]{98,530}));
AddState(530,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-87,531,-2,537}));
AddState(531,new State(new int[]{17,533,117,367,96,-323},new int[]{-71,532}));
AddState(532,new State(-314));
AddState(533,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,534}));
AddState(534,new State(new int[]{38,535}));
AddState(535,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,536,-90,221,-20,239,-2,311}));
AddState(536,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-325,117,-325,96,-325},new int[]{-51,139,-15,144,-14,196}));
AddState(537,new State(new int[]{38,538}));
AddState(538,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,539,-90,221,-20,239,-2,311}));
AddState(539,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,17,-326,117,-326,96,-326},new int[]{-51,139,-15,144,-14,196}));
AddState(540,new State(new int[]{29,72,30,73,31,74,32,75,33,76},new int[]{-50,541,-49,71}));
AddState(541,new State(-199));
AddState(542,new State(new int[]{100,543}));
AddState(543,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,544}));
AddState(544,new State(new int[]{5,554,99,-304,106,-304},new int[]{-68,545}));
AddState(545,new State(new int[]{99,546,106,204},new int[]{-59,553,-58,329}));
AddState(546,new State(new int[]{5,547}));
AddState(547,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-89,548,-91,552,-90,221,-20,239,-2,311}));
AddState(548,new State(new int[]{6,549,17,550}));
AddState(549,new State(-315));
AddState(550,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,551,-90,221,-20,239,-2,311}));
AddState(551,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-319,17,-319},new int[]{-51,139,-15,144,-14,196}));
AddState(552,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,6,-320,17,-320},new int[]{-51,139,-15,144,-14,196}));
AddState(553,new State(new int[]{102,234,104,236,105,237,96,-316},new int[]{-78,202}));
AddState(554,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-67,555,-2,394}));
AddState(555,new State(new int[]{6,556,17,392}));
AddState(556,new State(-305));
AddState(557,new State(new int[]{71,540,100,-198},new int[]{-48,558}));
AddState(558,new State(-321));
AddState(559,new State(-322));
AddState(560,new State(new int[]{101,561}));
AddState(561,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,562}));
AddState(562,new State(new int[]{117,367,96,-323},new int[]{-71,563}));
AddState(563,new State(-317));
AddState(564,new State(new int[]{102,234,104,236,105,237,96,-318},new int[]{-78,202}));
AddState(565,new State(new int[]{96,566}));
AddState(566,new State(-313));
AddState(567,new State(new int[]{9,568}));
AddState(568,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,569}));
AddState(569,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,570}));
AddState(570,new State(new int[]{60,405,13,-206},new int[]{-3,571}));
AddState(571,new State(new int[]{13,572}));
AddState(572,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,573}));
AddState(573,new State(new int[]{5,574}));
AddState(574,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-38,575,-2,126}));
AddState(575,new State(new int[]{6,576,17,77}));
AddState(576,new State(-7));
AddState(577,new State(new int[]{116,578,83,584}));
AddState(578,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,579}));
AddState(579,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,580}));
AddState(580,new State(new int[]{60,405,3,-206},new int[]{-3,581}));
AddState(581,new State(new int[]{3,582}));
AddState(582,new State(new int[]{106,204},new int[]{-59,583,-58,329}));
AddState(583,new State(new int[]{102,234,104,236,105,237,2,-9},new int[]{-78,202}));
AddState(584,new State(new int[]{10,518,18,-16,25,-16,15,-16,16,-16,26,-16,30,-16,31,-16,32,-16,33,-16,34,-16,40,-16,59,-16,65,-16,66,-16,67,-16,68,-16,69,-16,74,-16,76,-16,77,-16,78,-16,83,-16,84,-16,85,-16,86,-16,87,-16,89,-16,93,-16,94,-16,95,-16,109,-16,82,-16,116,-16,118,-16,120,-16,19,-16,20,-16,21,-16,22,-16},new int[]{-5,585}));
AddState(585,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-2,586}));
AddState(586,new State(new int[]{60,405,84,-206,85,-206,86,-206,90,-206,91,-206,92,-206},new int[]{-3,587}));
AddState(587,new State(new int[]{84,606,85,607,86,608,90,-296,91,-296,92,-296},new int[]{-82,588}));
AddState(588,new State(new int[]{90,601,91,602,92,603},new int[]{-83,589}));
AddState(589,new State(new int[]{13,590}));
AddState(590,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-65,591,-2,599}));
AddState(591,new State(new int[]{93,596,79,-308,77,-308},new int[]{-17,592}));
AddState(592,new State(new int[]{79,594,77,-310},new int[]{-84,593}));
AddState(593,new State(-292));
AddState(594,new State(new int[]{4,222,81,223,19,224,20,225,21,226,22,227,82,228,5,229,62,238,18,240,25,248,10,249,15,250,16,251,26,252,30,253,31,254,32,255,33,256,34,257,40,258,59,259,65,260,66,261,67,262,68,263,69,264,74,265,76,288,77,296,78,297,83,298,84,299,85,300,86,301,87,302,89,303,93,304,94,305,95,306,109,307,116,308,118,309,120,310,73,316,11,317,57,319,52,321,51,323,12,325,75,330},new int[]{-91,595,-90,221,-20,239,-2,311}));
AddState(595,new State(new int[]{14,142,119,148,71,150,44,152,42,154,45,156,43,158,38,160,37,162,47,164,48,166,49,168,50,170,51,172,52,174,53,176,54,178,55,180,56,182,35,184,36,185,41,186,11,190,34,217,40,218,39,219,58,220,77,-311},new int[]{-51,139,-15,144,-14,196}));
AddState(596,new State(new int[]{94,597}));
AddState(597,new State(new int[]{95,598}));
AddState(598,new State(-309));
AddState(599,new State(new int[]{60,405,93,-206,79,-206,77,-206},new int[]{-3,600}));
AddState(600,new State(-353));
AddState(601,new State(-300));
AddState(602,new State(-301));
AddState(603,new State(new int[]{87,604,13,-302}));
AddState(604,new State(new int[]{18,21,25,22,10,23,15,24,16,25,26,26,30,27,31,28,32,29,33,30,34,31,40,32,59,33,65,34,66,35,67,36,68,37,69,38,74,39,76,40,77,41,78,42,83,43,84,44,85,45,86,46,87,47,89,48,93,49,94,50,95,51,109,52,82,53,116,54,118,55,120,56,19,57,20,58,21,59,22,60},new int[]{-67,605,-2,394}));
AddState(605,new State(new int[]{17,392,13,-303}));
AddState(606,new State(-297));
AddState(607,new State(-298));
AddState(608,new State(new int[]{87,609}));
AddState(609,new State(-299));
AddState(610,new State(-294));
AddState(611,new State(-295));
AddState(612,new State(-285));
AddState(613,new State(-3));
AddState(614,new State(-4));
AddState(615,new State(-5));
rules=new Rule[382];
rules[1]=new Rule(-92, new int[]{-1,2});
rules[2]=new Rule(-1, new int[]{-22});
rules[3]=new Rule(-1, new int[]{-24});
rules[4]=new Rule(-1, new int[]{-23});
rules[5]=new Rule(-1, new int[]{-25});
rules[6]=new Rule(-22, new int[]{7,23,-5,-2,-3,-27});
rules[7]=new Rule(-23, new int[]{7,-16,9,-5,-2,-3,13,-2,5,-38,6});
rules[8]=new Rule(-24, new int[]{7,-26,77,-86,78});
rules[9]=new Rule(-25, new int[]{7,-4,116,-5,-2,-3,3,-59});
rules[10]=new Rule(-27, new int[]{5,-28,-29,6});
rules[11]=new Rule(-28, new int[]{-28,17,-31});
rules[12]=new Rule(-28, new int[]{-31});
rules[13]=new Rule(-31, new int[]{-7,-33,-36});
rules[14]=new Rule(-7, new int[]{-2});
rules[15]=new Rule(-19, new int[]{18});
rules[16]=new Rule(-5, new int[]{});
rules[17]=new Rule(-5, new int[]{10,11,12});
rules[18]=new Rule(-6, new int[]{18});
rules[19]=new Rule(-6, new int[]{25});
rules[20]=new Rule(-6, new int[]{10});
rules[21]=new Rule(-6, new int[]{15});
rules[22]=new Rule(-6, new int[]{16});
rules[23]=new Rule(-6, new int[]{26});
rules[24]=new Rule(-6, new int[]{30});
rules[25]=new Rule(-6, new int[]{31});
rules[26]=new Rule(-6, new int[]{32});
rules[27]=new Rule(-6, new int[]{33});
rules[28]=new Rule(-6, new int[]{34});
rules[29]=new Rule(-6, new int[]{40});
rules[30]=new Rule(-6, new int[]{59});
rules[31]=new Rule(-6, new int[]{65});
rules[32]=new Rule(-6, new int[]{66});
rules[33]=new Rule(-6, new int[]{67});
rules[34]=new Rule(-6, new int[]{68});
rules[35]=new Rule(-6, new int[]{69});
rules[36]=new Rule(-6, new int[]{74});
rules[37]=new Rule(-6, new int[]{76});
rules[38]=new Rule(-6, new int[]{77});
rules[39]=new Rule(-6, new int[]{78});
rules[40]=new Rule(-6, new int[]{83});
rules[41]=new Rule(-6, new int[]{84});
rules[42]=new Rule(-6, new int[]{85});
rules[43]=new Rule(-6, new int[]{86});
rules[44]=new Rule(-6, new int[]{87});
rules[45]=new Rule(-6, new int[]{89});
rules[46]=new Rule(-6, new int[]{93});
rules[47]=new Rule(-6, new int[]{94});
rules[48]=new Rule(-6, new int[]{95});
rules[49]=new Rule(-6, new int[]{109});
rules[50]=new Rule(-6, new int[]{82});
rules[51]=new Rule(-6, new int[]{116});
rules[52]=new Rule(-6, new int[]{118});
rules[53]=new Rule(-6, new int[]{120});
rules[54]=new Rule(-6, new int[]{19});
rules[55]=new Rule(-6, new int[]{20});
rules[56]=new Rule(-6, new int[]{21});
rules[57]=new Rule(-6, new int[]{22});
rules[58]=new Rule(-2, new int[]{18});
rules[59]=new Rule(-2, new int[]{25});
rules[60]=new Rule(-2, new int[]{10});
rules[61]=new Rule(-2, new int[]{15});
rules[62]=new Rule(-2, new int[]{16});
rules[63]=new Rule(-2, new int[]{26});
rules[64]=new Rule(-2, new int[]{30});
rules[65]=new Rule(-2, new int[]{31});
rules[66]=new Rule(-2, new int[]{32});
rules[67]=new Rule(-2, new int[]{33});
rules[68]=new Rule(-2, new int[]{34});
rules[69]=new Rule(-2, new int[]{40});
rules[70]=new Rule(-2, new int[]{59});
rules[71]=new Rule(-2, new int[]{65});
rules[72]=new Rule(-2, new int[]{66});
rules[73]=new Rule(-2, new int[]{67});
rules[74]=new Rule(-2, new int[]{68});
rules[75]=new Rule(-2, new int[]{69});
rules[76]=new Rule(-2, new int[]{74});
rules[77]=new Rule(-2, new int[]{76});
rules[78]=new Rule(-2, new int[]{77});
rules[79]=new Rule(-2, new int[]{78});
rules[80]=new Rule(-2, new int[]{83});
rules[81]=new Rule(-2, new int[]{84});
rules[82]=new Rule(-2, new int[]{85});
rules[83]=new Rule(-2, new int[]{86});
rules[84]=new Rule(-2, new int[]{87});
rules[85]=new Rule(-2, new int[]{89});
rules[86]=new Rule(-2, new int[]{93});
rules[87]=new Rule(-2, new int[]{94});
rules[88]=new Rule(-2, new int[]{95});
rules[89]=new Rule(-2, new int[]{109});
rules[90]=new Rule(-2, new int[]{82});
rules[91]=new Rule(-2, new int[]{116});
rules[92]=new Rule(-2, new int[]{118});
rules[93]=new Rule(-2, new int[]{120});
rules[94]=new Rule(-2, new int[]{19});
rules[95]=new Rule(-2, new int[]{20});
rules[96]=new Rule(-2, new int[]{21});
rules[97]=new Rule(-2, new int[]{22});
rules[98]=new Rule(-2, new int[]{59});
rules[99]=new Rule(-20, new int[]{18});
rules[100]=new Rule(-20, new int[]{25});
rules[101]=new Rule(-20, new int[]{10});
rules[102]=new Rule(-20, new int[]{15});
rules[103]=new Rule(-20, new int[]{16});
rules[104]=new Rule(-20, new int[]{26});
rules[105]=new Rule(-20, new int[]{30});
rules[106]=new Rule(-20, new int[]{31});
rules[107]=new Rule(-20, new int[]{32});
rules[108]=new Rule(-20, new int[]{33});
rules[109]=new Rule(-20, new int[]{34});
rules[110]=new Rule(-20, new int[]{40});
rules[111]=new Rule(-20, new int[]{59});
rules[112]=new Rule(-20, new int[]{65});
rules[113]=new Rule(-20, new int[]{66});
rules[114]=new Rule(-20, new int[]{67});
rules[115]=new Rule(-20, new int[]{68});
rules[116]=new Rule(-20, new int[]{69});
rules[117]=new Rule(-20, new int[]{74});
rules[118]=new Rule(-20, new int[]{76});
rules[119]=new Rule(-20, new int[]{77});
rules[120]=new Rule(-20, new int[]{78});
rules[121]=new Rule(-20, new int[]{83});
rules[122]=new Rule(-20, new int[]{84});
rules[123]=new Rule(-20, new int[]{85});
rules[124]=new Rule(-20, new int[]{86});
rules[125]=new Rule(-20, new int[]{87});
rules[126]=new Rule(-20, new int[]{89});
rules[127]=new Rule(-20, new int[]{93});
rules[128]=new Rule(-20, new int[]{94});
rules[129]=new Rule(-20, new int[]{95});
rules[130]=new Rule(-20, new int[]{109});
rules[131]=new Rule(-20, new int[]{82});
rules[132]=new Rule(-20, new int[]{116});
rules[133]=new Rule(-20, new int[]{118});
rules[134]=new Rule(-20, new int[]{120});
rules[135]=new Rule(-33, new int[]{});
rules[136]=new Rule(-33, new int[]{-32});
rules[137]=new Rule(-32, new int[]{-8});
rules[138]=new Rule(-32, new int[]{-8,5,-10,6});
rules[139]=new Rule(-32, new int[]{-8,5,-10,17,-10,6});
rules[140]=new Rule(-8, new int[]{-6});
rules[141]=new Rule(-8, new int[]{-8,-6});
rules[142]=new Rule(-10, new int[]{-12});
rules[143]=new Rule(-10, new int[]{-11});
rules[144]=new Rule(-12, new int[]{-93,-9});
rules[145]=new Rule(-93, new int[]{});
rules[146]=new Rule(-93, new int[]{51});
rules[147]=new Rule(-11, new int[]{52,-9});
rules[148]=new Rule(-9, new int[]{4});
rules[149]=new Rule(-36, new int[]{});
rules[150]=new Rule(-36, new int[]{-36,-34});
rules[151]=new Rule(-34, new int[]{28,-2,-35});
rules[152]=new Rule(-34, new int[]{-35});
rules[153]=new Rule(-35, new int[]{61,-90});
rules[154]=new Rule(-35, new int[]{61,62});
rules[155]=new Rule(-35, new int[]{61,5,-91,6});
rules[156]=new Rule(-35, new int[]{61,51,-90});
rules[157]=new Rule(-35, new int[]{61,52,-90});
rules[158]=new Rule(-35, new int[]{61,-19});
rules[159]=new Rule(-35, new int[]{62,-47});
rules[160]=new Rule(-35, new int[]{11,62,-47});
rules[161]=new Rule(-35, new int[]{24,25,-37,-47,-13});
rules[162]=new Rule(-35, new int[]{8,-47});
rules[163]=new Rule(-35, new int[]{115,5,-91,6});
rules[164]=new Rule(-35, new int[]{63,-2,-39,-42});
rules[165]=new Rule(-35, new int[]{-44});
rules[166]=new Rule(-35, new int[]{14,-6});
rules[167]=new Rule(-13, new int[]{});
rules[168]=new Rule(-13, new int[]{27});
rules[169]=new Rule(-42, new int[]{});
rules[170]=new Rule(-42, new int[]{-42,-41});
rules[171]=new Rule(-41, new int[]{40,-2});
rules[172]=new Rule(-41, new int[]{13,90,-40});
rules[173]=new Rule(-41, new int[]{13,92,-40});
rules[174]=new Rule(-41, new int[]{13,91,-40});
rules[175]=new Rule(-40, new int[]{98,62});
rules[176]=new Rule(-40, new int[]{98,61});
rules[177]=new Rule(-40, new int[]{65});
rules[178]=new Rule(-40, new int[]{66});
rules[179]=new Rule(-44, new int[]{11,64,-43});
rules[180]=new Rule(-44, new int[]{64,-43});
rules[181]=new Rule(-43, new int[]{});
rules[182]=new Rule(-43, new int[]{67,68});
rules[183]=new Rule(-43, new int[]{67,69});
rules[184]=new Rule(-29, new int[]{});
rules[185]=new Rule(-29, new int[]{17,-30});
rules[186]=new Rule(-30, new int[]{-30,17,-46});
rules[187]=new Rule(-30, new int[]{-30,-46});
rules[188]=new Rule(-30, new int[]{-46});
rules[189]=new Rule(-46, new int[]{28,-2});
rules[190]=new Rule(-46, new int[]{24,25,5,-38,-13,6,-47});
rules[191]=new Rule(-46, new int[]{8,5,-38,6,-47});
rules[192]=new Rule(-46, new int[]{115,5,-91,6,-47});
rules[193]=new Rule(-46, new int[]{70,25,5,-38,6,63,-2,-39,-42,-45});
rules[194]=new Rule(-45, new int[]{});
rules[195]=new Rule(-45, new int[]{-44});
rules[196]=new Rule(-47, new int[]{});
rules[197]=new Rule(-47, new int[]{13,26,-50});
rules[198]=new Rule(-48, new int[]{});
rules[199]=new Rule(-48, new int[]{71,-50});
rules[200]=new Rule(-50, new int[]{-49});
rules[201]=new Rule(-50, new int[]{32});
rules[202]=new Rule(-50, new int[]{33});
rules[203]=new Rule(-49, new int[]{29});
rules[204]=new Rule(-49, new int[]{30});
rules[205]=new Rule(-49, new int[]{31});
rules[206]=new Rule(-3, new int[]{});
rules[207]=new Rule(-3, new int[]{60,-2});
rules[208]=new Rule(-91, new int[]{-90});
rules[209]=new Rule(-91, new int[]{5,-91,6});
rules[210]=new Rule(-91, new int[]{62});
rules[211]=new Rule(-91, new int[]{-20});
rules[212]=new Rule(-91, new int[]{59});
rules[213]=new Rule(-91, new int[]{-2,60,-2});
rules[214]=new Rule(-91, new int[]{-2,60,-2,60,-2});
rules[215]=new Rule(-91, new int[]{73});
rules[216]=new Rule(-91, new int[]{-91,-51,-91,-52});
rules[217]=new Rule(-91, new int[]{-91,14,-6});
rules[218]=new Rule(-91, new int[]{74,5,-91,3,-32,6});
rules[219]=new Rule(-91, new int[]{18,5,-55,-53,6});
rules[220]=new Rule(-91, new int[]{18,5,53,6});
rules[221]=new Rule(-91, new int[]{-91,-15,-91,119,-91});
rules[222]=new Rule(-91, new int[]{-91,119,-91});
rules[223]=new Rule(-91, new int[]{-91,71,-91});
rules[224]=new Rule(-91, new int[]{-91,44,-91});
rules[225]=new Rule(-91, new int[]{-91,42,-91});
rules[226]=new Rule(-91, new int[]{-91,45,-91});
rules[227]=new Rule(-91, new int[]{-91,43,-91});
rules[228]=new Rule(-91, new int[]{-91,38,-91});
rules[229]=new Rule(-91, new int[]{-91,37,-91});
rules[230]=new Rule(-91, new int[]{-91,47,-91});
rules[231]=new Rule(-91, new int[]{-91,48,-91});
rules[232]=new Rule(-91, new int[]{-91,49,-91});
rules[233]=new Rule(-91, new int[]{-91,50,-91});
rules[234]=new Rule(-91, new int[]{-91,51,-91});
rules[235]=new Rule(-91, new int[]{-91,52,-91});
rules[236]=new Rule(-91, new int[]{-91,53,-91});
rules[237]=new Rule(-91, new int[]{-91,54,-91});
rules[238]=new Rule(-91, new int[]{-91,55,-91});
rules[239]=new Rule(-91, new int[]{-91,56,-91});
rules[240]=new Rule(-91, new int[]{-91,35});
rules[241]=new Rule(-91, new int[]{-91,36});
rules[242]=new Rule(-91, new int[]{-91,41,62});
rules[243]=new Rule(-91, new int[]{-91,11,62});
rules[244]=new Rule(-91, new int[]{-91,41,11,62});
rules[245]=new Rule(-91, new int[]{11,-91});
rules[246]=new Rule(-91, new int[]{57,-91});
rules[247]=new Rule(-91, new int[]{52,-91});
rules[248]=new Rule(-91, new int[]{51,-91});
rules[249]=new Rule(-91, new int[]{-91,-14,5,-53,6});
rules[250]=new Rule(-91, new int[]{5,-59,6});
rules[251]=new Rule(-91, new int[]{-91,-14,5,-59,6});
rules[252]=new Rule(-91, new int[]{-91,-14,-2,-3});
rules[253]=new Rule(-91, new int[]{12,5,-59,6});
rules[254]=new Rule(-91, new int[]{75,-79,-80,-81,78});
rules[255]=new Rule(-91, new int[]{76,5,32,6});
rules[256]=new Rule(-91, new int[]{76,5,-49,17,-2,6});
rules[257]=new Rule(-80, new int[]{-80,79,-91,80,-91});
rules[258]=new Rule(-80, new int[]{79,-91,80,-91});
rules[259]=new Rule(-53, new int[]{});
rules[260]=new Rule(-53, new int[]{-54});
rules[261]=new Rule(-54, new int[]{-54,17,-91});
rules[262]=new Rule(-54, new int[]{-91});
rules[263]=new Rule(-81, new int[]{});
rules[264]=new Rule(-81, new int[]{97,-91});
rules[265]=new Rule(-79, new int[]{});
rules[266]=new Rule(-79, new int[]{-91});
rules[267]=new Rule(-14, new int[]{58});
rules[268]=new Rule(-14, new int[]{11,58});
rules[269]=new Rule(-90, new int[]{4});
rules[270]=new Rule(-90, new int[]{81});
rules[271]=new Rule(-90, new int[]{19});
rules[272]=new Rule(-90, new int[]{20});
rules[273]=new Rule(-90, new int[]{21});
rules[274]=new Rule(-90, new int[]{22});
rules[275]=new Rule(-90, new int[]{82});
rules[276]=new Rule(-51, new int[]{34});
rules[277]=new Rule(-51, new int[]{11,34});
rules[278]=new Rule(-51, new int[]{40});
rules[279]=new Rule(-51, new int[]{11,40});
rules[280]=new Rule(-52, new int[]{});
rules[281]=new Rule(-52, new int[]{46,-91});
rules[282]=new Rule(-15, new int[]{39});
rules[283]=new Rule(-15, new int[]{11,39});
rules[284]=new Rule(-16, new int[]{});
rules[285]=new Rule(-16, new int[]{8});
rules[286]=new Rule(-39, new int[]{});
rules[287]=new Rule(-39, new int[]{5,-38,6});
rules[288]=new Rule(-38, new int[]{-38,17,-2,-21,-37});
rules[289]=new Rule(-38, new int[]{-2,-21,-37});
rules[290]=new Rule(-21, new int[]{});
rules[291]=new Rule(-21, new int[]{14,-6});
rules[292]=new Rule(-26, new int[]{-4,83,-5,-2,-3,-82,-83,13,-65,-17,-84});
rules[293]=new Rule(-4, new int[]{});
rules[294]=new Rule(-4, new int[]{118});
rules[295]=new Rule(-4, new int[]{120});
rules[296]=new Rule(-82, new int[]{});
rules[297]=new Rule(-82, new int[]{84});
rules[298]=new Rule(-82, new int[]{85});
rules[299]=new Rule(-82, new int[]{86,87});
rules[300]=new Rule(-83, new int[]{90});
rules[301]=new Rule(-83, new int[]{91});
rules[302]=new Rule(-83, new int[]{92});
rules[303]=new Rule(-83, new int[]{92,87,-67});
rules[304]=new Rule(-68, new int[]{});
rules[305]=new Rule(-68, new int[]{5,-67,6});
rules[306]=new Rule(-67, new int[]{-67,17,-2});
rules[307]=new Rule(-67, new int[]{-2});
rules[308]=new Rule(-17, new int[]{});
rules[309]=new Rule(-17, new int[]{93,94,95});
rules[310]=new Rule(-84, new int[]{});
rules[311]=new Rule(-84, new int[]{79,-91});
rules[312]=new Rule(-86, new int[]{-86,-85,96});
rules[313]=new Rule(-86, new int[]{-85,96});
rules[314]=new Rule(-85, new int[]{92,-48,-2,98,-87,-71});
rules[315]=new Rule(-85, new int[]{-88,100,-2,-68,99,5,-89,6});
rules[316]=new Rule(-85, new int[]{-88,100,-2,-68,-59});
rules[317]=new Rule(-85, new int[]{90,101,-2,-71});
rules[318]=new Rule(-85, new int[]{-59});
rules[319]=new Rule(-89, new int[]{-89,17,-91});
rules[320]=new Rule(-89, new int[]{-91});
rules[321]=new Rule(-88, new int[]{91,-48});
rules[322]=new Rule(-88, new int[]{33});
rules[323]=new Rule(-71, new int[]{});
rules[324]=new Rule(-71, new int[]{117,-91});
rules[325]=new Rule(-87, new int[]{-87,17,-2,38,-91});
rules[326]=new Rule(-87, new int[]{-2,38,-91});
rules[327]=new Rule(-59, new int[]{-58});
rules[328]=new Rule(-59, new int[]{-59,-78,-58});
rules[329]=new Rule(-78, new int[]{102});
rules[330]=new Rule(-78, new int[]{102,103});
rules[331]=new Rule(-78, new int[]{104});
rules[332]=new Rule(-78, new int[]{105});
rules[333]=new Rule(-58, new int[]{106,-55,-56,-63,-71,-72,-73,-76,-77});
rules[334]=new Rule(-55, new int[]{});
rules[335]=new Rule(-55, new int[]{107});
rules[336]=new Rule(-55, new int[]{103});
rules[337]=new Rule(-57, new int[]{});
rules[338]=new Rule(-57, new int[]{-56,17});
rules[339]=new Rule(-56, new int[]{-57,-91,-18});
rules[340]=new Rule(-56, new int[]{-57,53});
rules[341]=new Rule(-56, new int[]{-57,-2,60,53});
rules[342]=new Rule(-18, new int[]{});
rules[343]=new Rule(-18, new int[]{3,-2});
rules[344]=new Rule(-18, new int[]{-6});
rules[345]=new Rule(-63, new int[]{});
rules[346]=new Rule(-63, new int[]{101,-62});
rules[347]=new Rule(-61, new int[]{});
rules[348]=new Rule(-61, new int[]{-62,-60});
rules[349]=new Rule(-62, new int[]{-61,-2,-3,-18,-64,-66,-69});
rules[350]=new Rule(-62, new int[]{-61,5,-70,6,-18,-66,-69});
rules[351]=new Rule(-70, new int[]{-59});
rules[352]=new Rule(-70, new int[]{-62});
rules[353]=new Rule(-65, new int[]{-2,-3});
rules[354]=new Rule(-60, new int[]{17});
rules[355]=new Rule(-60, new int[]{108});
rules[356]=new Rule(-60, new int[]{59,108});
rules[357]=new Rule(-60, new int[]{59,59,108});
rules[358]=new Rule(-60, new int[]{59,59,59,108});
rules[359]=new Rule(-66, new int[]{});
rules[360]=new Rule(-66, new int[]{13,-91});
rules[361]=new Rule(-64, new int[]{});
rules[362]=new Rule(-64, new int[]{109,110,-2});
rules[363]=new Rule(-64, new int[]{11,109});
rules[364]=new Rule(-69, new int[]{});
rules[365]=new Rule(-69, new int[]{111,5,-67,6});
rules[366]=new Rule(-76, new int[]{});
rules[367]=new Rule(-76, new int[]{112,110,-75});
rules[368]=new Rule(-75, new int[]{-75,17,-74,-37});
rules[369]=new Rule(-75, new int[]{-74,-37});
rules[370]=new Rule(-74, new int[]{-91});
rules[371]=new Rule(-37, new int[]{});
rules[372]=new Rule(-37, new int[]{15});
rules[373]=new Rule(-37, new int[]{16});
rules[374]=new Rule(-72, new int[]{});
rules[375]=new Rule(-72, new int[]{113,110,-54});
rules[376]=new Rule(-73, new int[]{});
rules[377]=new Rule(-73, new int[]{114,-91});
rules[378]=new Rule(-77, new int[]{});
rules[379]=new Rule(-77, new int[]{88,-91});
rules[380]=new Rule(-77, new int[]{88,-91,89,-91});
rules[381]=new Rule(-77, new int[]{88,-91,17,-91});
nonTerminals = new string[] {"", "main", "nm", "dbnm", "temp", "ifnotexists",
"ids", "columnid", "typename", "number", "signed", "minus_num", "plus_num",
"autoinc", "in_op", "between_op", "uniqueflag", "foreach_clause", "as",
"id", "exid", "collate", "create_table", "create_index", "create_trigger",
"create_view", "trigger_decl", "create_table_args", "columnlist", "conslist_opt",
"conslist", "column", "typetoken", "type", "carg", "ccons", "carglist",
"sortorder", "idxlist", "idxlist_opt", "refact", "refarg", "refargs", "init_deferred_pred_opt",
"defer_subclause", "defer_subclause_opt", "tcons", "onconf", "orconf",
"raisetype", "resolvetype", "likeop", "escape", "exprlist", "nexprlist",
"distinct", "selcollist", "sclp", "oneselect", "select", "joinop", "stl_prefix",
"seltablist", "from", "indexed_opt", "fullname", "on_opt", "inscollist",
"inscollist_opt", "using_opt", "seltablist_paren", "where_opt", "groupby_opt",
"having_opt", "sortitem", "sortlist", "orderby_opt", "limit_opt", "multiselect_op",
"case_operand", "case_exprlist", "case_else", "trigger_time", "trigger_event",
"when_clause", "trigger_cmd", "trigger_cmd_list", "setlist", "insert_cmd",
"itemlist", "term", "expr", "$accept", "plus_opt", };
}
protected override void DoAction(int action)
{
switch (action)
{
case 2: // main -> create_table
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateTableStatement; SQLiteDdlMain.CreateTable = value_stack.array[value_stack.top-1].CreateTableStatement; }
break;
case 3: // main -> create_trigger
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateTriggerStatement; SQLiteDdlMain.CreateTrigger = value_stack.array[value_stack.top-1].CreateTriggerStatement; }
break;
case 4: // main -> create_index
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateIndexStatement; SQLiteDdlMain.CreateIndex = value_stack.array[value_stack.top-1].CreateIndexStatement; }
break;
case 5: // main -> create_view
{ yyval.DdlStatement = value_stack.array[value_stack.top-1].CreateViewStatement; SQLiteDdlMain.CreateView = value_stack.array[value_stack.top-1].CreateViewStatement; }
break;
case 6: // create_table -> CREATE, TABLE, ifnotexists, nm, dbnm, create_table_args
{
yyval.CreateTableStatement = value_stack.array[value_stack.top-1].CreateTableStatement;
yyval.CreateTableStatement.IfNotExists = value_stack.array[value_stack.top-4].Bool;
yyval.CreateTableStatement.ObjectName = new SQLiteObjectName(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Text);
}
break;
case 7: // create_index -> CREATE, uniqueflag, INDEX, ifnotexists, nm, dbnm, ON, nm, LP,
// idxlist, RP
{
SQLiteObjectName idxName = new SQLiteObjectName(value_stack.array[value_stack.top-7].Text, value_stack.array[value_stack.top-6].Text);
yyval.CreateIndexStatement = new SQLiteCreateIndexStatement(value_stack.array[value_stack.top-10].Bool, idxName, value_stack.array[value_stack.top-8].Bool, value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-2].IndexedColumnsList);
}
break;
case 8: // create_trigger -> CREATE, trigger_decl, BEGIN, trigger_cmd_list, END
{ yyval.CreateTriggerStatement = value_stack.array[value_stack.top-4].CreateTriggerStatement; yyval.CreateTriggerStatement.StatementsList = value_stack.array[value_stack.top-2].StatementsList;}
break;
case 9: // create_view -> CREATE, temp, VIEW, ifnotexists, nm, dbnm, AS, select
{
SQLiteObjectName viewName = new SQLiteObjectName(value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-3].Text);
yyval.CreateViewStatement = new SQLiteCreateViewStatement(value_stack.array[value_stack.top-7].Bool, value_stack.array[value_stack.top-5].Bool, viewName, value_stack.array[value_stack.top-1].SelectStatement);
}
break;
case 10: // create_table_args -> LP, columnlist, conslist_opt, RP
{ yyval.CreateTableStatement = new SQLiteCreateTableStatement(value_stack.array[value_stack.top-3].ColumnsList, value_stack.array[value_stack.top-2].TableConstraintsList); }
break;
case 11: // columnlist -> columnlist, COMMA, column
{ value_stack.array[value_stack.top-3].ColumnsList.Add(value_stack.array[value_stack.top-1].ColumnStatement); yyval.ColumnsList = value_stack.array[value_stack.top-3].ColumnsList; }
break;
case 12: // columnlist -> column
{ yyval.ColumnsList = new List<SQLiteColumnStatement>(); yyval.ColumnsList.Add(value_stack.array[value_stack.top-1].ColumnStatement); }
break;
case 13: // column -> columnid, type, carglist
{ yyval.ColumnStatement = new SQLiteColumnStatement(value_stack.array[value_stack.top-3].ObjectName, value_stack.array[value_stack.top-2].ColumnType, value_stack.array[value_stack.top-1].ColumnConstraintsList); }
break;
case 14: // columnid -> nm
{ yyval.ObjectName = new SQLiteObjectName(value_stack.array[value_stack.top-1].Text); }
break;
case 16: // ifnotexists -> /* empty */
{ yyval.Bool = false; }
break;
case 17: // ifnotexists -> IF, NOT, EXISTS
{ yyval.Bool = true; }
break;
case 98: // nm -> JOIN_KW
{ yyval.Text = Enum.GetName(typeof(SQLiteJoinOperator), value_stack.array[value_stack.top-1].JoinOperator); }
break;
case 135: // type -> /* empty */
{ yyval.ColumnType = new SQLiteColumnType(string.Empty, -1, -1); }
break;
case 137: // typetoken -> typename
{ yyval.ColumnType = new SQLiteColumnType(value_stack.array[value_stack.top-1].Text, -1, -1); }
break;
case 138: // typetoken -> typename, LP, signed, RP
{ yyval.ColumnType = new SQLiteColumnType(value_stack.array[value_stack.top-4].Text, (int)value_stack.array[value_stack.top-2].Number, -1); }
break;
case 139: // typetoken -> typename, LP, signed, COMMA, signed, RP
{ yyval.ColumnType = new SQLiteColumnType(value_stack.array[value_stack.top-6].Text, (int)value_stack.array[value_stack.top-4].Number, (int)value_stack.array[value_stack.top-2].Number); }
break;
case 141: // typename -> typename, ids
{ yyval.Text = value_stack.array[value_stack.top-2].Text +" "+ value_stack.array[value_stack.top-1].Text; }
break;
case 144: // plus_num -> plus_opt, number
{ yyval.Number = value_stack.array[value_stack.top-1].Number; }
break;
case 147: // minus_num -> MINUS, number
{ yyval.Number = -value_stack.array[value_stack.top-1].Number; }
break;
case 150: // carglist -> carglist, carg
{
if (value_stack.array[value_stack.top-2].ColumnConstraintsList == null)
yyval.ColumnConstraintsList = new List<SQLiteColumnConstraint>();
else
yyval.ColumnConstraintsList = value_stack.array[value_stack.top-2].ColumnConstraintsList;
yyval.ColumnConstraintsList.Add(value_stack.array[value_stack.top-1].ColumnConstraint);
}
break;
case 151: // carg -> CONSTRAINT, nm, ccons
{ value_stack.array[value_stack.top-1].ColumnConstraint.ConstraintName = value_stack.array[value_stack.top-2].Text; yyval.ColumnConstraint = value_stack.array[value_stack.top-1].ColumnConstraint; }
break;
case 153: // ccons -> DEFAULT, term
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, false, value_stack.array[value_stack.top-1].Term); }
break;
case 154: // ccons -> DEFAULT, NULL
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, new SQLiteNullExpression(), false); }
break;
case 155: // ccons -> DEFAULT, LP, expr, RP
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, value_stack.array[value_stack.top-2].Expression); }
break;
case 156: // ccons -> DEFAULT, PLUS, term
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, false, value_stack.array[value_stack.top-1].Term); }
break;
case 157: // ccons -> DEFAULT, MINUS, term
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, true, value_stack.array[value_stack.top-1].Term); }
break;
case 158: // ccons -> DEFAULT, id
{ yyval.ColumnConstraint = new SQLiteDefaultColumnConstraint(null, value_stack.array[value_stack.top-1].Text); }
break;
case 159: // ccons -> NULL, onconf
{ yyval.ColumnConstraint = new SQLiteNullColumnConstraint(null, true, value_stack.array[value_stack.top-1].ResolveAction); }
break;
case 160: // ccons -> NOT, NULL, onconf
{ yyval.ColumnConstraint = new SQLiteNullColumnConstraint(null, false, value_stack.array[value_stack.top-1].ResolveAction); }
break;
case 161: // ccons -> PRIMARY, KEY, sortorder, onconf, autoinc
{ yyval.ColumnConstraint = new SQLitePrimaryKeyColumnConstraint(null, value_stack.array[value_stack.top-3].SortOrder, value_stack.array[value_stack.top-2].ResolveAction, value_stack.array[value_stack.top-1].Bool); }
break;
case 162: // ccons -> UNIQUE, onconf
{ yyval.ColumnConstraint = new SQLiteUniqueColumnConstraint(null, value_stack.array[value_stack.top-1].ResolveAction); }
break;
case 163: // ccons -> CHECK, LP, expr, RP
{ yyval.ColumnConstraint = new SQLiteCheckColumnConstraint(null, value_stack.array[value_stack.top-2].Expression); }
break;
case 164: // ccons -> REFERENCES, nm, idxlist_opt, refargs
{ yyval.ColumnConstraint = new SQLiteReferencesColumnConstraint(null, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].IndexedColumnsList, value_stack.array[value_stack.top-1].ReferenceHandlersList); }
break;
case 165: // ccons -> defer_subclause
{ yyval.ColumnConstraint = value_stack.array[value_stack.top-1].DeferColumnConstraint; }
break;
case 166: // ccons -> COLLATE, ids
{ yyval.ColumnConstraint = new SQLiteCollateColumnConstraint(null, value_stack.array[value_stack.top-1].Text); }
break;
case 167: // autoinc -> /* empty */
{ yyval.Bool = false; }
break;
case 168: // autoinc -> AUTOINCR
{ yyval.Bool = true; }
break;
case 170: // refargs -> refargs, refarg
{
if (value_stack.array[value_stack.top-2].ReferenceHandlersList == null)
yyval.ReferenceHandlersList = new List<SQLiteReferenceHandler>();
else
yyval.ReferenceHandlersList = value_stack.array[value_stack.top-2].ReferenceHandlersList;
yyval.ReferenceHandlersList.Add(value_stack.array[value_stack.top-1].ReferenceHandler);
}
break;
case 171: // refarg -> MATCH, nm
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(value_stack.array[value_stack.top-1].Text); }
break;
case 172: // refarg -> ON, DELETE, refact
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(SQLiteReferenceTrigger.OnDelete, value_stack.array[value_stack.top-1].ReferenceAction); }
break;
case 173: // refarg -> ON, UPDATE, refact
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(SQLiteReferenceTrigger.OnUpdate, value_stack.array[value_stack.top-1].ReferenceAction); }
break;
case 174: // refarg -> ON, INSERT, refact
{ yyval.ReferenceHandler = new SQLiteReferenceHandler(SQLiteReferenceTrigger.OnInsert, value_stack.array[value_stack.top-1].ReferenceAction); }
break;
case 175: // refact -> SET, NULL
{ yyval.ReferenceAction = SQLiteReferenceAction.SetNull; }
break;
case 176: // refact -> SET, DEFAULT
{ yyval.ReferenceAction = SQLiteReferenceAction.SetDefault; }
break;
case 177: // refact -> CASCADE
{ yyval.ReferenceAction = SQLiteReferenceAction.Cascade; }
break;
case 178: // refact -> RESTRICT
{ yyval.ReferenceAction = SQLiteReferenceAction.Restrict; }
break;
case 179: // defer_subclause -> NOT, DEFERRABLE, init_deferred_pred_opt
{
yyval.DeferColumnConstraint = new SQLiteDeferColumnConstraint(null, false, value_stack.array[value_stack.top-1].DeferType);
}
break;
case 180: // defer_subclause -> DEFERRABLE, init_deferred_pred_opt
{
yyval.DeferColumnConstraint = new SQLiteDeferColumnConstraint(null, true, value_stack.array[value_stack.top-1].DeferType);
}
break;
case 181: // init_deferred_pred_opt -> /* empty */
{ yyval.DeferType = SQLiteDeferType.None; }
break;
case 182: // init_deferred_pred_opt -> INITIALLY, DEFERRED
{ yyval.DeferType = SQLiteDeferType.InitiallyDeferred; }
break;
case 183: // init_deferred_pred_opt -> INITIALLY, IMMEDIATE
{ yyval.DeferType = SQLiteDeferType.InitiallyImmediate; }
break;
case 185: // conslist_opt -> COMMA, conslist
{ yyval.TableConstraintsList = value_stack.array[value_stack.top-1].TableConstraintsList; }
break;
case 186: // conslist -> conslist, COMMA, tcons
{
if (value_stack.array[value_stack.top-3].TableConstraintsList == null)
yyval.TableConstraintsList = new List<SQLiteTableConstraint>();
else
yyval.TableConstraintsList = value_stack.array[value_stack.top-3].TableConstraintsList;
yyval.TableConstraintsList.Add(value_stack.array[value_stack.top-1].TableConstraint);
}
break;
case 187: // conslist -> conslist, tcons
{
if (value_stack.array[value_stack.top-2].TableConstraintsList == null)
yyval.TableConstraintsList = new List<SQLiteTableConstraint>();
else
yyval.TableConstraintsList = value_stack.array[value_stack.top-2].TableConstraintsList;
yyval.TableConstraintsList.Add(value_stack.array[value_stack.top-1].TableConstraint);
}
break;
case 188: // conslist -> tcons
{
yyval.TableConstraintsList = new List<SQLiteTableConstraint>();
yyval.TableConstraintsList.Add(value_stack.array[value_stack.top-1].TableConstraint);
}
break;
case 189: // tcons -> CONSTRAINT, nm
{ yyval.TableConstraint = new SQLiteTableConstraint(value_stack.array[value_stack.top-1].Text); }
break;
case 190: // tcons -> PRIMARY, KEY, LP, idxlist, autoinc, RP, onconf
{ yyval.TableConstraint = new SQLitePrimaryKeyTableConstraint(null, value_stack.array[value_stack.top-4].IndexedColumnsList, value_stack.array[value_stack.top-3].Bool, value_stack.array[value_stack.top-1].ResolveAction); }
break;
case 191: // tcons -> UNIQUE, LP, idxlist, RP, onconf
{ yyval.TableConstraint = new SQLiteUniqueTableConstraint(null, value_stack.array[value_stack.top-3].IndexedColumnsList, value_stack.array[value_stack.top-1].ResolveAction); }
break;
case 192: // tcons -> CHECK, LP, expr, RP, onconf
{ yyval.TableConstraint = new SQLiteCheckTableConstraint(null, value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].ResolveAction); }
break;
case 193: // tcons -> FOREIGN, KEY, LP, idxlist, RP, REFERENCES, nm, idxlist_opt, refargs,
// defer_subclause_opt
{
yyval.TableConstraint = new SQLiteForeignKeyTableConstraint(null, value_stack.array[value_stack.top-7].IndexedColumnsList, value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-3].IndexedColumnsList, value_stack.array[value_stack.top-2].ReferenceHandlersList, value_stack.array[value_stack.top-1].DeferColumnConstraint);
}
break;
case 196: // onconf -> /* empty */
{ yyval.ResolveAction = SQLiteResolveAction.None; }
break;
case 197: // onconf -> ON, CONFLICT, resolvetype
{ yyval.ResolveAction = value_stack.array[value_stack.top-1].ResolveAction; }
break;
case 201: // resolvetype -> IGNORE
{ yyval.ResolveAction = SQLiteResolveAction.Ignore; }
break;
case 202: // resolvetype -> REPLACE
{ yyval.ResolveAction = SQLiteResolveAction.Replace; }
break;
case 203: // raisetype -> ROLLBACK
{ yyval.ResolveAction = SQLiteResolveAction.Rollback; }
break;
case 204: // raisetype -> ABORT
{ yyval.ResolveAction = SQLiteResolveAction.Abort; }
break;
case 205: // raisetype -> FAIL
{ yyval.ResolveAction = SQLiteResolveAction.Fail; }
break;
case 207: // dbnm -> DOT, nm
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
break;
case 208: // expr -> term
{ yyval.Expression = new SQLiteTermExpression(value_stack.array[value_stack.top-1].Term); }
break;
case 209: // expr -> LP, expr, RP
{ yyval.Expression = value_stack.array[value_stack.top-2].Expression; }
break;
case 210: // expr -> NULL
{ yyval.Expression = new SQLiteNullExpression(); }
break;
case 211: // expr -> exid
{ yyval.Expression = new SQLiteIdExpression(value_stack.array[value_stack.top-1].Text); }
break;
case 212: // expr -> JOIN_KW
{ yyval.Expression = new SQLiteIdExpression(Enum.GetName(typeof(SQLiteJoinOperator), value_stack.array[value_stack.top-1].JoinOperator).ToUpper()); }
break;
case 213: // expr -> nm, DOT, nm
{ yyval.Expression = new SQLiteNameExpression(new SQLiteObjectName(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Text)); }
break;
case 214: // expr -> nm, DOT, nm, DOT, nm
{ yyval.Expression = new SQLiteNameExpression(new SQLiteObjectName(value_stack.array[value_stack.top-5].Text, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Text)); }
break;
case 215: // expr -> VARIABLE
{ yyval.Expression = new SQLiteVariableExpression(value_stack.array[value_stack.top-1].Text); }
break;
case 216: // expr -> expr, likeop, expr, escape
{ yyval.Expression = new SQLiteLikeExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-3].LikeOperator, value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].Expression); }
break;
case 217: // expr -> expr, COLLATE, ids
{ yyval.Expression = new SQLiteCollateExpression(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Text); }
break;
case 218: // expr -> CAST, LP, expr, AS, typetoken, RP
{ yyval.Expression = new SQLiteCastExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-2].ColumnType); }
break;
case 219: // expr -> ID, LP, distinct, exprlist, RP
{ yyval.Expression = new SQLiteFunctionExpression(value_stack.array[value_stack.top-5].Text, value_stack.array[value_stack.top-3].Distinct, value_stack.array[value_stack.top-2].ExpressionsList); }
break;
case 220: // expr -> ID, LP, STAR, RP
{ yyval.Expression = new SQLiteFunctionExpression(value_stack.array[value_stack.top-4].Text); }
break;
case 221: // expr -> expr, between_op, expr, AND, expr
{ yyval.Expression = new SQLiteBetweenExpression(value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].Bool, value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression); }
break;
case 222: // expr -> expr, AND, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.And, value_stack.array[value_stack.top-1].Expression); }
break;
case 223: // expr -> expr, OR, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Or, value_stack.array[value_stack.top-1].Expression); }
break;
case 224: // expr -> expr, LT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Lt, value_stack.array[value_stack.top-1].Expression); }
break;
case 225: // expr -> expr, GT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Gt, value_stack.array[value_stack.top-1].Expression); }
break;
case 226: // expr -> expr, GE, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Ge, value_stack.array[value_stack.top-1].Expression); }
break;
case 227: // expr -> expr, LE, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Le, value_stack.array[value_stack.top-1].Expression); }
break;
case 228: // expr -> expr, EQ, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Eq, value_stack.array[value_stack.top-1].Expression); }
break;
case 229: // expr -> expr, NE, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Ne, value_stack.array[value_stack.top-1].Expression); }
break;
case 230: // expr -> expr, BITAND, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.BitAnd, value_stack.array[value_stack.top-1].Expression); }
break;
case 231: // expr -> expr, BITOR, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.BitOr, value_stack.array[value_stack.top-1].Expression); }
break;
case 232: // expr -> expr, LSHIFT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Lshift, value_stack.array[value_stack.top-1].Expression); }
break;
case 233: // expr -> expr, RSHIFT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Rshift, value_stack.array[value_stack.top-1].Expression); }
break;
case 234: // expr -> expr, PLUS, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Plus, value_stack.array[value_stack.top-1].Expression); }
break;
case 235: // expr -> expr, MINUS, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Minus, value_stack.array[value_stack.top-1].Expression); }
break;
case 236: // expr -> expr, STAR, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Star, value_stack.array[value_stack.top-1].Expression); }
break;
case 237: // expr -> expr, SLASH, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Slash, value_stack.array[value_stack.top-1].Expression); }
break;
case 238: // expr -> expr, REM, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Rem, value_stack.array[value_stack.top-1].Expression); }
break;
case 239: // expr -> expr, CONCAT, expr
{ yyval.Expression = new SQLiteBinaryExpression(value_stack.array[value_stack.top-3].Expression, SQLiteOperator.Concat, value_stack.array[value_stack.top-1].Expression); }
break;
case 240: // expr -> expr, ISNULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.IsNull, value_stack.array[value_stack.top-2].Expression); }
break;
case 241: // expr -> expr, NOTNULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.NotNull, value_stack.array[value_stack.top-2].Expression); }
break;
case 242: // expr -> expr, IS, NULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Is_Null, value_stack.array[value_stack.top-3].Expression); }
break;
case 243: // expr -> expr, NOT, NULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Not_Null, value_stack.array[value_stack.top-3].Expression); }
break;
case 244: // expr -> expr, IS, NOT, NULL
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Is_Not_Null, value_stack.array[value_stack.top-4].Expression); }
break;
case 245: // expr -> NOT, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Not, value_stack.array[value_stack.top-1].Expression); }
break;
case 246: // expr -> BITNOT, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.BitNot, value_stack.array[value_stack.top-1].Expression); }
break;
case 247: // expr -> MINUS, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Minus, value_stack.array[value_stack.top-1].Expression); }
break;
case 248: // expr -> PLUS, expr
{ yyval.Expression = new SQLiteUnaryExpression(SQLiteOperator.Plus, value_stack.array[value_stack.top-1].Expression); }
break;
case 249: // expr -> expr, in_op, LP, exprlist, RP
{ yyval.Expression = new SQLiteInExpression(value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].Bool, value_stack.array[value_stack.top-2].ExpressionsList); }
break;
case 250: // expr -> LP, select, RP
{ yyval.Expression = new SQLiteSelectExpression(value_stack.array[value_stack.top-2].SelectStatement); }
break;
case 251: // expr -> expr, in_op, LP, select, RP
{ yyval.Expression = new SQLiteInExpression(value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].Bool, value_stack.array[value_stack.top-2].SelectStatement); }
break;
case 252: // expr -> expr, in_op, nm, dbnm
{ yyval.Expression = new SQLiteInExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-3].Bool, new SQLiteObjectName(value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].Text)); }
break;
case 253: // expr -> EXISTS, LP, select, RP
{ yyval.Expression = new SQLiteExistsExpression(value_stack.array[value_stack.top-2].SelectStatement); }
break;
case 254: // expr -> CASE, case_operand, case_exprlist, case_else, END
{ yyval.Expression = new SQLiteCaseExpression(value_stack.array[value_stack.top-4].Expression, value_stack.array[value_stack.top-3].CaseItemsList, value_stack.array[value_stack.top-2].Expression); }
break;
case 255: // expr -> RAISE, LP, IGNORE, RP
{ yyval.Expression = new SQLiteRaiseExpression(); }
break;
case 256: // expr -> RAISE, LP, raisetype, COMMA, nm, RP
{ yyval.Expression = new SQLiteRaiseExpression(value_stack.array[value_stack.top-4].ResolveAction, value_stack.array[value_stack.top-2].Text); }
break;
case 257: // case_exprlist -> case_exprlist, WHEN, expr, THEN, expr
{ yyval.CaseItemsList = value_stack.array[value_stack.top-5].CaseItemsList; yyval.CaseItemsList.Add(new SQLiteCaseItem(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression)); }
break;
case 258: // case_exprlist -> WHEN, expr, THEN, expr
{ yyval.CaseItemsList = new List<SQLiteCaseItem>(); yyval.CaseItemsList.Add(new SQLiteCaseItem(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression)); }
break;
case 261: // nexprlist -> nexprlist, COMMA, expr
{
if (value_stack.array[value_stack.top-3].ExpressionsList == null)
yyval.ExpressionsList = new List<SQLiteExpression>();
else
yyval.ExpressionsList = value_stack.array[value_stack.top-3].ExpressionsList;
yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression);
}
break;
case 262: // nexprlist -> expr
{
yyval.ExpressionsList = new List<SQLiteExpression>();
yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression);
}
break;
case 263: // case_else -> /* empty */
{ yyval.Expression = null; }
break;
case 264: // case_else -> ELSE, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
break;
case 265: // case_operand -> /* empty */
{ yyval.Expression = null; }
break;
case 266: // case_operand -> expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
break;
case 267: // in_op -> IN
{ yyval.Bool = true; }
break;
case 268: // in_op -> NOT, IN
{ yyval.Bool = false; }
break;
case 269: // term -> NUMBER
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Number); }
break;
case 270: // term -> BLOB
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Blob); }
break;
case 271: // term -> DQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
break;
case 272: // term -> SQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
break;
case 273: // term -> BQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
break;
case 274: // term -> TQUOTED
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].Text); }
break;
case 275: // term -> CTIME_KW
{ yyval.Term = new SQLiteTerm(value_stack.array[value_stack.top-1].TimeFunction); }
break;
case 276: // likeop -> LIKE_KW
{ yyval.LikeOperator = new SQLiteLikeOperator(value_stack.array[value_stack.top-1].Like, false); }
break;
case 277: // likeop -> NOT, LIKE_KW
{ yyval.LikeOperator = new SQLiteLikeOperator(value_stack.array[value_stack.top-1].Like, true); }
break;
case 278: // likeop -> MATCH
{ yyval.LikeOperator = new SQLiteLikeOperator(SQLiteLike.Match, false); }
break;
case 279: // likeop -> NOT, MATCH
{ yyval.LikeOperator = new SQLiteLikeOperator(SQLiteLike.Match, true); }
break;
case 282: // between_op -> BETWEEN
{ yyval.Bool = true; }
break;
case 283: // between_op -> NOT, BETWEEN
{ yyval.Bool = false; }
break;
case 284: // uniqueflag -> /* empty */
{ yyval.Bool = false; }
break;
case 285: // uniqueflag -> UNIQUE
{ yyval.Bool = true; }
break;
case 287: // idxlist_opt -> LP, idxlist, RP
{ yyval.IndexedColumnsList = value_stack.array[value_stack.top-2].IndexedColumnsList; }
break;
case 288: // idxlist -> idxlist, COMMA, nm, collate, sortorder
{
if (value_stack.array[value_stack.top-5].IndexedColumnsList == null)
yyval.IndexedColumnsList = new List<SQLiteIndexedColumn>();
else
yyval.IndexedColumnsList = value_stack.array[value_stack.top-5].IndexedColumnsList;
yyval.IndexedColumnsList.Add(new SQLiteIndexedColumn(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].SortOrder));
}
break;
case 289: // idxlist -> nm, collate, sortorder
{ yyval.IndexedColumnsList = new List<SQLiteIndexedColumn>(); yyval.IndexedColumnsList.Add(new SQLiteIndexedColumn(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].SortOrder)); }
break;
case 291: // collate -> COLLATE, ids
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
break;
case 292: // trigger_decl -> temp, TRIGGER, ifnotexists, nm, dbnm, trigger_time,
// trigger_event, ON, fullname, foreach_clause, when_clause
{
yyval.CreateTriggerStatement = new SQLiteCreateTriggerStatement(value_stack.array[value_stack.top-11].Bool, value_stack.array[value_stack.top-9].Bool, new SQLiteObjectName(value_stack.array[value_stack.top-8].Text, value_stack.array[value_stack.top-7].Text), value_stack.array[value_stack.top-6].TriggerTime, value_stack.array[value_stack.top-5].TriggerEventClause, value_stack.array[value_stack.top-3].ObjectName, value_stack.array[value_stack.top-2].Bool, value_stack.array[value_stack.top-1].Expression);
}
break;
case 293: // temp -> /* empty */
{ yyval.Bool = false; }
break;
case 294: // temp -> TEMP
{ yyval.Bool = true; }
break;
case 295: // temp -> TEMPORARY
{ yyval.Bool = true; }
break;
case 296: // trigger_time -> /* empty */
{ yyval.TriggerTime = SQLiteTriggerTime.None; }
break;
case 297: // trigger_time -> BEFORE
{ yyval.TriggerTime = SQLiteTriggerTime.Before; }
break;
case 298: // trigger_time -> AFTER
{ yyval.TriggerTime = SQLiteTriggerTime.After; }
break;
case 299: // trigger_time -> INSTEAD, OF
{ yyval.TriggerTime = SQLiteTriggerTime.InsteadOf; }
break;
case 300: // trigger_event -> DELETE
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(SQLiteTriggerEvent.Delete); }
break;
case 301: // trigger_event -> INSERT
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(SQLiteTriggerEvent.Insert); }
break;
case 302: // trigger_event -> UPDATE
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(SQLiteTriggerEvent.Update); }
break;
case 303: // trigger_event -> UPDATE, OF, inscollist
{ yyval.TriggerEventClause = new SQLiteTriggerEventClause(value_stack.array[value_stack.top-1].TextList); }
break;
case 304: // inscollist_opt -> /* empty */
{ yyval.TextList = null; }
break;
case 305: // inscollist_opt -> LP, inscollist, RP
{ yyval.TextList = value_stack.array[value_stack.top-2].TextList; }
break;
case 306: // inscollist -> inscollist, COMMA, nm
{ yyval.TextList = value_stack.array[value_stack.top-3].TextList; yyval.TextList.Add(value_stack.array[value_stack.top-1].Text); }
break;
case 307: // inscollist -> nm
{ yyval.TextList = new List<string>(); yyval.TextList.Add(value_stack.array[value_stack.top-1].Text); }
break;
case 308: // foreach_clause -> /* empty */
{ yyval.Bool = false; }
break;
case 309: // foreach_clause -> FOR, EACH, ROW
{ yyval.Bool = true; }
break;
case 312: // trigger_cmd_list -> trigger_cmd_list, trigger_cmd, SEMI
{yyval.StatementsList = value_stack.array[value_stack.top-3].StatementsList; yyval.StatementsList.Add(value_stack.array[value_stack.top-2].Statement); }
break;
case 313: // trigger_cmd_list -> trigger_cmd, SEMI
{ yyval.StatementsList = new List<SQLiteStatement>(); yyval.StatementsList.Add(value_stack.array[value_stack.top-2].Statement); }
break;
case 314: // trigger_cmd -> UPDATE, orconf, nm, SET, setlist, where_opt
{ yyval.Statement = new SQLiteUpdateStatement(value_stack.array[value_stack.top-5].ResolveAction, value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-2].UpdateItemsList, value_stack.array[value_stack.top-1].Expression); }
break;
case 315: // trigger_cmd -> insert_cmd, INTO, nm, inscollist_opt, VALUES, LP, itemlist, RP
{ yyval.Statement = new SQLiteInsertStatement(value_stack.array[value_stack.top-8].InsertPrefix, value_stack.array[value_stack.top-6].Text, value_stack.array[value_stack.top-5].TextList, value_stack.array[value_stack.top-2].ExpressionsList); }
break;
case 316: // trigger_cmd -> insert_cmd, INTO, nm, inscollist_opt, select
{ yyval.Statement = new SQLiteInsertStatement(value_stack.array[value_stack.top-5].InsertPrefix, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].TextList, value_stack.array[value_stack.top-1].SelectStatement); }
break;
case 317: // trigger_cmd -> DELETE, FROM, nm, where_opt
{ yyval.Statement = new SQLiteDeleteStatement(value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].Expression); }
break;
case 318: // trigger_cmd -> select
{ yyval.Statement = value_stack.array[value_stack.top-1].SelectStatement; }
break;
case 319: // itemlist -> itemlist, COMMA, expr
{ yyval.ExpressionsList = value_stack.array[value_stack.top-3].ExpressionsList; yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression); }
break;
case 320: // itemlist -> expr
{ yyval.ExpressionsList = new List<SQLiteExpression>(); yyval.ExpressionsList.Add(value_stack.array[value_stack.top-1].Expression); }
break;
case 321: // insert_cmd -> INSERT, orconf
{ yyval.InsertPrefix = new SQLiteInsertPrefix(value_stack.array[value_stack.top-1].ResolveAction); }
break;
case 322: // insert_cmd -> REPLACE
{ yyval.InsertPrefix = new SQLiteInsertPrefix(); }
break;
case 323: // where_opt -> /* empty */
{ yyval.Expression = null; }
break;
case 324: // where_opt -> WHERE, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
break;
case 325: // setlist -> setlist, COMMA, nm, EQ, expr
{ yyval.UpdateItemsList = value_stack.array[value_stack.top-5].UpdateItemsList; yyval.UpdateItemsList.Add(new SQLiteUpdateItem(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Expression)); }
break;
case 326: // setlist -> nm, EQ, expr
{ yyval.UpdateItemsList = new List<SQLiteUpdateItem>(); yyval.UpdateItemsList.Add(new SQLiteUpdateItem(value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-1].Expression)); }
break;
case 327: // select -> oneselect
{ yyval.SelectStatement = value_stack.array[value_stack.top-1].SingleSelectStatement; }
break;
case 328: // select -> select, multiselect_op, oneselect
{ yyval.SelectStatement = new SQLiteMultiSelectStatement(value_stack.array[value_stack.top-3].SelectStatement, value_stack.array[value_stack.top-2].SelectOperator, value_stack.array[value_stack.top-1].SingleSelectStatement); }
break;
case 329: // multiselect_op -> UNION
{ yyval.SelectOperator = SQLiteSelectOperator.Union; }
break;
case 330: // multiselect_op -> UNION, ALL
{ yyval.SelectOperator = SQLiteSelectOperator.UnionAll; }
break;
case 331: // multiselect_op -> EXCEPT
{ yyval.SelectOperator = SQLiteSelectOperator.Except; }
break;
case 332: // multiselect_op -> INTERSECT
{ yyval.SelectOperator = SQLiteSelectOperator.Intersect; }
break;
case 333: // oneselect -> SELECT, distinct, selcollist, from, where_opt, groupby_opt,
// having_opt, orderby_opt, limit_opt
{
yyval.SingleSelectStatement = new SQLiteSingleSelectStatement(value_stack.array[value_stack.top-8].Distinct, value_stack.array[value_stack.top-7].SelectColumnsList, value_stack.array[value_stack.top-6].FromClause, value_stack.array[value_stack.top-5].Expression, value_stack.array[value_stack.top-4].ExpressionsList, value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-2].SortItemsList, value_stack.array[value_stack.top-1].LimitClause);
}
break;
case 334: // distinct -> /* empty */
{ yyval.Distinct = SQLiteDistinct.None; }
break;
case 335: // distinct -> DISTINCT
{ yyval.Distinct = SQLiteDistinct.Distinct; }
break;
case 336: // distinct -> ALL
{ yyval.Distinct = SQLiteDistinct.All; }
break;
case 338: // sclp -> selcollist, COMMA
{ yyval.SelectColumnsList = value_stack.array[value_stack.top-2].SelectColumnsList; }
break;
case 339: // selcollist -> sclp, expr, as
{
if (value_stack.array[value_stack.top-3].SelectColumnsList != null)
yyval.SelectColumnsList = value_stack.array[value_stack.top-3].SelectColumnsList;
else
yyval.SelectColumnsList = new List<SQLiteSelectColumn>();
yyval.SelectColumnsList.Add(new SQLiteSelectColumn(value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].Text));
}
break;
case 340: // selcollist -> sclp, STAR
{
if (value_stack.array[value_stack.top-2].SelectColumnsList != null)
yyval.SelectColumnsList = value_stack.array[value_stack.top-2].SelectColumnsList;
else
yyval.SelectColumnsList = new List<SQLiteSelectColumn>();
yyval.SelectColumnsList.Add(new SQLiteSelectColumn());
}
break;
case 341: // selcollist -> sclp, nm, DOT, STAR
{
if (value_stack.array[value_stack.top-4].SelectColumnsList != null)
yyval.SelectColumnsList = value_stack.array[value_stack.top-4].SelectColumnsList;
else
yyval.SelectColumnsList = new List<SQLiteSelectColumn>();
yyval.SelectColumnsList.Add(new SQLiteSelectColumn(new SQLiteObjectName(value_stack.array[value_stack.top-3].Text)));
}
break;
case 343: // as -> AS, nm
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
break;
case 344: // as -> ids
{ yyval.Text = value_stack.array[value_stack.top-1].Text; }
break;
case 346: // from -> FROM, seltablist
{ yyval.FromClause = value_stack.array[value_stack.top-1].FromClause; }
break;
case 348: // stl_prefix -> seltablist, joinop
{ yyval.FromClause = value_stack.array[value_stack.top-2].FromClause.AddJoin(value_stack.array[value_stack.top-1].JoinOperator); }
break;
case 349: // seltablist -> stl_prefix, nm, dbnm, as, indexed_opt, on_opt, using_opt
{
if (value_stack.array[value_stack.top-7].FromClause == null)
yyval.FromClause = new SQLiteFromClause();
else
yyval.FromClause = value_stack.array[value_stack.top-7].FromClause;
yyval.FromClause.AddTable(new SQLiteObjectName(value_stack.array[value_stack.top-6].Text, value_stack.array[value_stack.top-5].Text), value_stack.array[value_stack.top-4].Text, value_stack.array[value_stack.top-3].FromIndexed, value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].TextList);
}
break;
case 350: // seltablist -> stl_prefix, LP, seltablist_paren, RP, as, on_opt, using_opt
{
if (value_stack.array[value_stack.top-7].FromClause == null)
yyval.FromClause = new SQLiteFromClause();
else
yyval.FromClause = value_stack.array[value_stack.top-7].FromClause;
yyval.FromClause.AddInternalTable(value_stack.array[value_stack.top-5].FromInternalTable, value_stack.array[value_stack.top-3].Text, value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].TextList);
}
break;
case 351: // seltablist_paren -> select
{ yyval.FromInternalTable = new SQLiteFromInternalTable(value_stack.array[value_stack.top-1].SelectStatement); }
break;
case 352: // seltablist_paren -> seltablist
{ yyval.FromInternalTable = new SQLiteFromInternalTable(value_stack.array[value_stack.top-1].FromClause); }
break;
case 353: // fullname -> nm, dbnm
{ yyval.ObjectName = new SQLiteObjectName(value_stack.array[value_stack.top-2].Text, value_stack.array[value_stack.top-1].Text); }
break;
case 354: // joinop -> COMMA
{ yyval.JoinOperator = SQLiteJoinOperator.Comma; }
break;
case 355: // joinop -> JOIN
{ yyval.JoinOperator = SQLiteJoinOperator.Join; }
break;
case 356: // joinop -> JOIN_KW, JOIN
{ yyval.JoinOperator = value_stack.array[value_stack.top-2].JoinOperator | SQLiteJoinOperator.Join; }
break;
case 357: // joinop -> JOIN_KW, JOIN_KW, JOIN
{ yyval.JoinOperator = value_stack.array[value_stack.top-3].JoinOperator | value_stack.array[value_stack.top-2].JoinOperator | SQLiteJoinOperator.Join; }
break;
case 358: // joinop -> JOIN_KW, JOIN_KW, JOIN_KW, JOIN
{ yyval.JoinOperator = value_stack.array[value_stack.top-4].JoinOperator | value_stack.array[value_stack.top-3].JoinOperator | value_stack.array[value_stack.top-2].JoinOperator | SQLiteJoinOperator.Join; }
break;
case 359: // on_opt -> /* empty */
{ yyval.Expression = null; }
break;
case 360: // on_opt -> ON, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
break;
case 361: // indexed_opt -> /* empty */
{ yyval.FromIndexed = null; }
break;
case 362: // indexed_opt -> INDEXED, BY, nm
{ yyval.FromIndexed = new SQLiteFromIndexed(value_stack.array[value_stack.top-1].Text); }
break;
case 363: // indexed_opt -> NOT, INDEXED
{ yyval.FromIndexed = new SQLiteFromIndexed(); }
break;
case 364: // using_opt -> /* empty */
{ yyval.TextList = null; }
break;
case 365: // using_opt -> USING, LP, inscollist, RP
{ yyval.TextList = value_stack.array[value_stack.top-2].TextList; }
break;
case 366: // orderby_opt -> /* empty */
{ yyval.SortItemsList = null; }
break;
case 367: // orderby_opt -> ORDER, BY, sortlist
{ yyval.SortItemsList = value_stack.array[value_stack.top-1].SortItemsList; }
break;
case 368: // sortlist -> sortlist, COMMA, sortitem, sortorder
{ yyval.SortItemsList = value_stack.array[value_stack.top-4].SortItemsList; yyval.SortItemsList.Add(new SQLiteSortItem(value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].SortOrder)); }
break;
case 369: // sortlist -> sortitem, sortorder
{ yyval.SortItemsList = new List<SQLiteSortItem>(); yyval.SortItemsList.Add(new SQLiteSortItem(value_stack.array[value_stack.top-2].Expression, value_stack.array[value_stack.top-1].SortOrder)); }
break;
case 370: // sortitem -> expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
break;
case 371: // sortorder -> /* empty */
{ yyval.SortOrder = SQLiteSortOrder.None; }
break;
case 372: // sortorder -> ASC
{ yyval.SortOrder = SQLiteSortOrder.Ascending; }
break;
case 373: // sortorder -> DESC
{ yyval.SortOrder = SQLiteSortOrder.Descending; }
break;
case 374: // groupby_opt -> /* empty */
{ yyval.ExpressionsList = null; }
break;
case 375: // groupby_opt -> GROUP, BY, nexprlist
{ yyval.ExpressionsList = value_stack.array[value_stack.top-1].ExpressionsList; }
break;
case 376: // having_opt -> /* empty */
{ yyval.Expression = null; }
break;
case 377: // having_opt -> HAVING, expr
{ yyval.Expression = value_stack.array[value_stack.top-1].Expression; }
break;
case 378: // limit_opt -> /* empty */
{ yyval.LimitClause = null; }
break;
case 379: // limit_opt -> LIMIT, expr
{ yyval.LimitClause = new SQLiteLimitClause(value_stack.array[value_stack.top-1].Expression); }
break;
case 380: // limit_opt -> LIMIT, expr, OFFSET, expr
{ yyval.LimitClause = new SQLiteLimitClause(value_stack.array[value_stack.top-3].Expression, value_stack.array[value_stack.top-1].Expression); }
break;
case 381: // limit_opt -> LIMIT, expr, COMMA, expr
{ yyval.LimitClause = new SQLiteLimitClause(value_stack.array[value_stack.top-1].Expression, value_stack.array[value_stack.top-3].Expression); }
break;
}
}
protected override string TerminalToString(int terminal)
{
if (aliasses != null && aliasses.ContainsKey(terminal))
return aliasses[terminal];
else if (((Tokens)terminal).ToString() != terminal.ToString())
return ((Tokens)terminal).ToString();
else
return CharToString((char)terminal);
}
}
}